Tutor LMS – eLearning and online course solution - Version 1.8.2

Version Description

  • February 15, 2021 =

New: Certificate link added to the course completion email notification New: Settings added to enable/disable course enrollment expiration feature Update: Zoom meeting input date format updated to dd/mm/yyyy to avoid internal errors Update: If enrollment expiration is set to 0, you will see 'lifetime' on the frontend course page Update: Security features enhanced in wpdb query & Quiz. Thanks Wordfence! Update: Option added to enter decimal value in withdrawal request Update: Code optimization in the frontend Earnings report Fix: 404 console error due to min.map asset files Fix: An active PHP session was detected issue Fix: Division by 0 warning in Gradebook Fix: Zoom meeting list pagination issue

Download this release

Release Info

Developer themeum
Plugin Icon wp plugin Tutor LMS – eLearning and online course solution
Version 1.8.2
Comparing to
See all releases

Code changes from version 1.8.1 to 1.8.2

assets/css/tutor-admin.css CHANGED
@@ -4898,5 +4898,3 @@ body.rtl .tutor-toast-parent {
4898
  right: auto;
4899
  left: 50px;
4900
  }
4901
-
4902
- /*# sourceMappingURL=tutor-admin.css.map */
4898
  right: auto;
4899
  left: 50px;
4900
  }
 
 
assets/css/tutor-admin.min.css CHANGED
@@ -8,5 +8,3 @@
8
  *
9
  * http://docs.jquery.com/UI/Datepicker#theming
10
  */.ui-datepicker{background-color:#fff;border:1px solid #eeeeee;display:none;margin-top:4px;padding:5px;width:180px}.ui-datepicker a,.ui-datepicker a:hover{text-decoration:none}.ui-datepicker a:hover,.ui-datepicker td:hover a{color:#2a6496;-webkit-transition:color 0.1s ease-in-out;transition:color 0.1s ease-in-out}.ui-datepicker .ui-datepicker-header{margin-bottom:4px;text-align:center}.ui-datepicker .ui-datepicker-title{font-weight:700}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{cursor:default;font-family:"tutor";-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;height:20px;line-height:1;margin-top:2px;width:30px}.ui-datepicker .ui-datepicker-prev{float:left;text-align:left}.ui-datepicker .ui-datepicker-next{float:right;text-align:right}.ui-datepicker .ui-datepicker-prev:before{content:"\e921"}.ui-datepicker .ui-datepicker-next:before{content:"\e903"}.ui-datepicker .ui-icon{display:none}.ui-datepicker .ui-datepicker-calendar{table-layout:fixed;width:100%}.ui-datepicker .ui-datepicker-calendar th,.ui-datepicker .ui-datepicker-calendar td{text-align:center;padding:0}.ui-datepicker .ui-datepicker-calendar td{border-radius:4px;-webkit-transition:background-color 0.1s ease-in-out, color 0.1s ease-in-out;transition:background-color 0.1s ease-in-out, color 0.1s ease-in-out}.ui-datepicker .ui-datepicker-calendar td:hover{background-color:#eee;cursor:pointer}.ui-datepicker .ui-datepicker-calendar td a{text-decoration:none}.ui-datepicker .ui-datepicker-current-day{background-color:#4289cc}.ui-datepicker .ui-datepicker-current-day a{color:#fff}.ui-datepicker .ui-datepicker-calendar .ui-datepicker-unselectable:hover{background-color:#fff;cursor:default}.ui-datepicker-calendar .ui-state-default{border:none;background:none}.ui-datepicker-calendar .ui-state-default.ui-state-highlight{background:#eeeeee;padding:3px;display:block}h2.tutor-page-heading{background-color:#ffffff;padding:30px !important;margin:0 !important;border-bottom:1px solid #ecedef}.tutor-report-left-menus{background-color:#fcfcfc;margin-bottom:50px}.tutor-report-left-menus ul{margin:0}.report-main-wrap h3{font-weight:300;font-size:20px}.tutor-report-left-menus ul li{display:inline-block;margin:0}.tutor-report-left-menus ul li a{text-decoration:none;line-height:60px;display:block;padding:0 15px;color:#393c40}.tutor-report-left-menus ul li a:focus{outline:none !important;border:0;-webkit-box-shadow:none;box-shadow:none}.tutor-report-left-menus ul li.active a{color:#1e55dd;border-bottom:3px solid #3057d5}.tutor-report-content{-webkit-box-flex:1;-ms-flex:1;flex:1}.report-top-sub-menu{margin:0;-webkit-box-flex:1;-ms-flex:1;flex:1}.report-top-sub-menu a{text-decoration:none;padding:10px 15px;border:1px solid #d7dadf;color:#aaaeb3;border-radius:3px;display:inline-block}.report-top-sub-menu a.active{background-color:#3057d5;color:#ffffff;border:1px solid #3057d5}.top-course-enrolled{margin-top:20px;margin-bottom:20px}.top-course-enrolled h1,.top-course-enrolled h2,.top-course-enrolled h3{margin:30px 0}.report-stats{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.report-stat-box{padding:0;margin-bottom:30px;width:25%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%}.report-stat-box-body{background-color:#ffffff;display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;margin-right:30px}.report-stat-box:nth-child(4n) .report-stat-box-body{margin-right:0}.report-stat-box .box-icon{font-size:50px;line-height:46px;padding:13px;color:#3057d5}.report-stat-box h4,.report-stat-box p{margin:5px 0}.report-stat-box .box-stats-text h3,.report-stat-box .box-stats-text p{margin:5px 0}.report-stat-box .box-stats-text{padding:12px 0}.report-stat-box .box-stats-text h3{font-size:20px;font-weight:300}.report-stat-box .box-stats-text p{color:#888b90}.box-padding{padding:30px}.box-padding h3{margin-top:0}.box-bg-green{background-color:#00d611;color:#ffffff}.box-bg-primary{background-color:#3057d5;color:#ffffff}.box-bg-light{background-color:#eeeeee;color:#555555}.box-bg-warning{background-color:#eea504;color:#ffffff}.box-bg-dark{background-color:#333333;color:#ffffff}.box-bg-danger{background-color:#ff000c;color:#ffffff}.box-bg-pink{background-color:#ff00da;color:#ffffff}.box-bg-violate{background-color:#9c25ea;color:#ffffff}.tutor-report-overview-section{display:-webkit-box;display:-ms-flexbox;display:flex;margin:20px 0}.overview-section-col6{width:50%}.overview-section-col6{margin-right:1%;margin-left:1%}.overview-section-col6:first-child{margin-left:0}.overview-section-col6:last-child{margin-right:0}.last-revews-wrap{width:100%}table.tutor-report-table{border:none;-webkit-box-shadow:none;box-shadow:none}.tutor-report-table th{background-color:#fcfcfc;border-top:1px solid #eaeaea;border-bottom:1px solid #eaeaea;padding:20px;color:#878a8f}.tutor-report-table td{border-bottom:1px solid #eaeaea;padding:20px}.tutor-report-table td img.avatar{float:left;margin-right:5px}.tutor-icon-star-full,.tutor-icon-star-line{color:#ffd700}.tutor-delete-link{color:#ff282a !important}.tutor-pagination{margin:50px 0}.tutor-pagination .page-numbers{display:inline-block;padding:5px 10px;margin:0 2px 0 0;border:1px solid #eee;line-height:1;text-decoration:none;font-weight:600}.tutor-pagination .page-numbers.current,.tutor-pagination a.page-numbers:hover{background:#f9f9f9}.report-date-range-form{display:-webkit-box;display:-ms-flexbox;display:flex}.date-range-input{position:relative;margin-right:10px}.date-range-input:last-child{margin-right:0}.date-range-input input{border:1px solid #d7dadf;-webkit-box-shadow:none;box-shadow:none;line-height:32px;margin:0;padding-right:30px}.date-range-input i.tutor-icon-calendar{position:absolute;right:10px;top:13px}.date-range-input button{background-color:#3057d5;color:#ffffff;border:none;line-height:39px;padding:0 15px}.tutor-date-range-filter-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;margin:30px 0}.report-download-csv-icon{float:right}.report-download-csv-icon a{text-decoration:none}.tutor-alert{border:1px solid #f8a201;background:#fffff2;position:relative;border-radius:3px;padding:20px 25px 20px 95px;color:#a86d00;margin-bottom:10px}.tutor-alert.tutor-alert-danger{border:1px solid #fe1a1a;background:#fff2f2;color:#a50000}.tutor-alert.tutor-alert-success{border:1px solid #69bc0d;background:#f6fff2;color:#3d7400}.tutor-alert.tutor-alert-info{border:1px solid #13aaf6;background:#eaf8ff;color:#0586c7}.tutor-alert::before{content:"\e95f";position:absolute;font-size:30px;font-family:"tutor" !important;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;width:70px;top:0;left:0;text-align:center;background:#f8a201;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#ffffff}.tutor-alert.tutor-alert-danger::before{content:"\e913";background:#fe1a1a}.tutor-alert.tutor-alert-success::before{content:"\e90f";background:#69bc0d}.tutor-alert.tutor-alert-info::before{content:"\e96c";background:#13aaf6}.tutor-alert-content p{margin:0}table.tutor-table{border-spacing:0;width:100%;border-collapse:collapse;border:1px solid #dcdfe5}table.tutor-table td,table.tutor-table th{padding:1em 1.41575em;text-align:left;vertical-align:top;border-bottom:1px solid #dcdfe5}table.tutor-table td p:last-child,table.tutor-table th p:last-child{margin-bottom:0}table.tutor-table th{font-weight:600}table.tutor-table thead th{padding:1.41575em;vertical-align:middle}table.tutor-table tbody h2{font-size:1em;letter-spacing:normal;font-weight:normal}table.tutor-table tbody h2 a{font-weight:normal}table.tutor-table th{background-color:#fafbfc}table.tutor-table tbody td{background-color:#ffffff}table.tutor-table tbody tr:nth-child(2n) td{background-color:#fafbfc}table.tutor-table a{text-decoration:none}table.tutor-table p{margin:0}.tutor-nav-tab-wrapper{margin-bottom:10px}.nav-tab-item{float:left;border:1px solid #ccc;border-bottom:none;margin-left:0.5em;padding:10px 14px;font-size:14px;line-height:1.33;font-weight:600;background:#e5e5e5;color:#555;text-decoration:none;white-space:nowrap}.nav-tab-item:first-child{margin-left:0}.nav-tab-item:focus,.nav-tab-item:hover{background-color:#fff;color:#444}.nav-tab-item-active,.nav-tab-item:focus:active{-webkit-box-shadow:none;box-shadow:none}.nav-tab-item-active{margin-bottom:-1px;color:#444}.nav-tab-item-active,.nav-tab-item-active:focus,.nav-tab-item-active:focus:active,.nav-tab-item-active:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.tutor-quiz-feedback-mode{position:relative}.tutor-quiz-feedback-mode:not(:last-child){margin-right:16px}.tutor-quiz-feedback-mode-option{border-radius:3px;border:solid 1px #dedede;padding:15px 15px 15px 40px;-webkit-transition:0.2s ease;transition:0.2s ease;max-width:210px}.tutor-quiz-feedback-option-option-title{margin-bottom:10px !important}.tutor-quiz-feedback-option-subtitle{margin:0 !important;font-size:12px;line-height:1.67;color:#505469}.tutor-quiz-feedback-option-subtitle a{font-weight:500;color:inherit;text-decoration:underline !important}.tutor-quiz-feedback-mode input[type="radio"]{display:none}.tutor-quiz-feedback-mode .radio-icon{position:absolute;top:16px;left:16px;z-index:1;margin:0;width:16px;height:16px;border-radius:50%;-webkit-box-shadow:inset 0 0 0 2px #dcdce1;box-shadow:inset 0 0 0 2px #dcdce1;-webkit-transition:0.2s ease;transition:0.2s ease}.tutor-quiz-feedback-mode input[type="radio"]:checked+.radio-icon{-webkit-box-shadow:inset 0 0 0 5px #3e64de;box-shadow:inset 0 0 0 5px #3e64de;background:#fff}.tutor-quiz-feedback-mode input[type="radio"]:checked ~ .tutor-quiz-feedback-mode-option{background:#fff}#tutor-course-topics h2,#tutor-instructors h2{display:block}#tutor-course-topics .tutor-course-builder-header.has-postbox-header{top:-56px;right:96px}#settings-tab-general .tutor-option-field-row input[type="number"]{width:185px}.instructor-layout-templates-fields{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.instructor-layout-template{max-width:150px;padding:5px;margin:3px}.instructor-layout-template img{max-width:100%;height:auto;display:block;border:6px solid transparent;-webkit-transition:border-color 400ms;transition:border-color 400ms}.instructor-layout-template.selected-template img,.instructor-layout-template:hover img{border:6px solid #3057d6}.tutor-announcement-content-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-announcement-buttons :nth-child(1){margin-right:20px}.tutor-announcements-header{display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-announcement-date,.tutor-announcement-content>span{font-weight:bold !important}.tutor-announcement-date{width:100px !important}.tutor-announcements-modal-wrap .tutor-modal-content{max-width:660px !important}.tutor-announcements-modal-wrap button{padding:10px 20px !important}.tutor-announcements-update-form .tutor-option-field-row,.tutor-announcements-form .tutor-option-field-row{padding:10px 18px 10px 18px}.tutor-announcements-update-form .tutor-option-field-row input[type=text],.tutor-announcements-update-form textarea,.tutor-announcements-form .tutor-option-field-row input[type=text],.tutor-announcements-form textarea{width:100%;margin-top:8px}.tutor-announcements-form select,.tutor-announcements-update-form select{width:100%;max-width:100% !important;padding:7px 12px;margin-top:8px}.tutor-announcements-update-form .tutor-option-field-row,.tutor-announcements-form .tutor-option-field-row{border:none !important}.tutor-announcements-form .modal-footer button,.tutor-announcements-update-form .modal-footer button{cursor:pointer !important}.tutor-announcements-form .modal-footer,.tutor-announcements-update-form .modal-footer{background-color:#fff !important}.tutor-announcement-close-btn{text-decoration:none;color:#525252}.tutor-announcement-table td{vertical-align:middle !important}.tutor-announcement-content{line-height:10px}.tutor-accouncement-update-modal .modal-header,.tutor-announcement-create-modal .modal-header{padding-right:15px !important}.tutor-accouncement-update-modal .tutor-modal-content,.tutor-announcement-create-modal .tutor-modal-content{border-radius:20px !important}.tutor-admin-search-box-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:45px}.tutor-admin-search-box-container>div:nth-child(1){margin-right:40px;position:relative}.tutor-admin-search-box-container>div:nth-child(1){-webkit-box-flex:2;-ms-flex:2;flex:2}.tutor-admin-search-box-container>div:nth-child(2),.tutor-admin-search-box-container>div:nth-child(3),.tutor-admin-search-box-container>div:nth-child(4){-webkit-box-flex:1.5;-ms-flex:1.5;flex:1.5}.tutor-admin-search-box-container>div:not(:last-child){margin-right:40px}.tutor-admin-search-box-container .tutor-report-search-btn{position:absolute;width:40px;height:40px;bottom:0;right:0;border:0;background:transparent;color:#3e64de;font-size:20px;cursor:pointer;outline:none}.tutor-admin-search-box-container>div:nth-child(1) input{padding-right:45px}.tutor-admin-search-box-container input[type="text"],.tutor-admin-search-box-container select{width:100%;height:40px;border-radius:3px;border:solid 1px #dcdce1;background-color:#ffffff;padding:0 14px;-webkit-transition:0.2s;transition:0.2s}.tutor-admin-search-box-container .date-range-input i.tutor-icon-calendar{position:absolute;width:42px;height:40px;right:0;top:0;color:#3e64de;font-size:18px;text-align:center;line-height:40px}.tutor-admin-search-box-container .menu-label{font-size:14px;font-weight:400;color:#737787;margin-bottom:7px}.tutor-admin-search-box-container>div:nth-child(4) input::-webkit-input-placeholder{color:#3f435b;font-size:15px}.tutor-admin-search-box-container>div:nth-child(1) input::-webkit-input-placeholder{font-size:16px;font-weight:400;color:#737787}.tutor-admin-search-box-container input[type="text"]:hover,.tutor-admin-search-box-container input[type="text"]:focus,.tutor-admin-search-box-container select:hover,.tutor-admin-search-box-container select:focus,.tutor-date-range-wrap .date-range-input input:hover,.tutor-date-range-wrap .date-range-input input:focus{border-color:var(--tutor-primary-color) !important;-webkit-box-shadow:none !important;box-shadow:none !important;outline:none !important}@media (max-width: 767px){.tutor-admin-search-box-container{display:grid;grid-template-columns:repeat(auto-fit, minmax(250px, 1fr));grid-gap:15px}.tutor-admin-search-box-container>div{margin-right:0 !important}}.tutor-list-wrap{border-radius:3px;background-color:#ffffff;margin-top:40px}.tutor-list-wrap .tutor-list-header,.tutor-list-wrap .tutor-list-footer{padding:30px}.tutor-list-wrap .heading{font-size:20px;line-height:1.5;color:#3f435b}.tutor-list-wrap .tutor-list-table{width:100%;text-align:left;border-collapse:collapse}.tutor-list-wrap .tutor-list-table .table-toggle{display:none}.tutor-list-wrap .tutor-list-table .table-toggle.open{display:table-row}[class^="tutor-report-"] .tutor-list-table tbody td.detail{vertical-align:top}.tutor-list-wrap .tutor-list-table thead,.tutor-list-wrap .tutor-list-table tr:first-child th{background-color:#f7f7f9;border-top:1px solid #eaeaea;border-bottom:1px solid #eaeaea}.tutor-list-wrap .tutor-list-table th{font-size:12px;font-weight:400;line-height:1.75;letter-spacing:0.7px;color:#737787;text-transform:uppercase}.tutor-list-wrap .tutor-list-table td,.tutor-list-wrap .tutor-list-table td p{font-size:14px;font-weight:300;line-height:1.75;color:#3f435b}.report-course-list-wrap .tutor-list-table th i{margin-left:3px}.tutor-list-wrap .tutor-list-table tr th,.tutor-list-wrap .tutor-list-table tr td{padding:15px 20px}.tutor-list-wrap .tutor-list-header,.tutor-list-wrap .tutor-list-table th:last-child,.tutor-list-wrap .tutor-list-table td:last-child,.tutor-report-course-list .tutor-list-footer{padding-right:36px}.tutor-list-wrap .tutor-list-header,.tutor-list-wrap .tutor-list-table th:first-child,.tutor-list-wrap .tutor-list-table td:first-child{padding-left:30px}.tutor-list-wrap .tutor-list-table tbody td{padding:25px 20px;vertical-align:top}.tutor-list-wrap .tutor-list-table tbody tr:not(:last-child){border-bottom:1px solid #dcdce1}.tutor-list-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-top:1px solid #dcdce1}.tutor-list-footer .tutor-report-count{font-size:14px;line-height:1.71;color:#737787}.tutor-list-footer .tutor-report-count strong{color:#3f435b}.tutor-list-footer .page-numbers.current{border-color:#3e64de;background:transparent}.tutor-list-footer .page-numbers{border-radius:4px;border:solid 1px #dcdce1;padding:11px 14px;font-size:14px;font-weight:400;color:#737787;background:#fff;outline:none;-webkit-transition:0.2s;transition:0.2s}.tutor-list-footer .page-numbers:hover,.tutor-list-footer .page-numbers:focus{border-color:#3e64de;background:#3e64de !important;color:#fff;-webkit-box-shadow:none;box-shadow:none}.tutor-list-footer .page-numbers.current:hover,.tutor-list-footer .page-numbers.current:focus{background:transparent !important;color:inherit}.tutor-list-footer .tutor-pagination{margin:0}.tutor-list-table td .details-button a,.tutor-list-table .link-icon{font-size:16px;color:#b9bac3;-webkit-transition:0.2s;transition:0.2s}.tutor-list-table td .details-button a:first-child{font-size:12px;font-weight:500;line-height:1.75;text-align:center;color:#737787;border-radius:3px;border:solid 1px #dcdce1;padding:5px 11px;margin-right:15px;text-decoration:none}.tutor-list-table td .details-button{text-align:right;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-list-table .course-link a{color:inherit;text-decoration:none}.tutor-list-table .tutor-icon-detail-link,.profile-table .tutor-icon-detail-link{font-size:14px}@media (max-width: 991px){.tutor-list-wrap{overflow-x:scroll}}.report-course-list-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.report-course-list-wrap .tutor-list-table td{font-size:16px}.report-course-list-wrap .tutor-list-table td:nth-child(2){font-size:14px;font-weight:400}.report-course-list-wrap .tutor-list-table td:last-child{text-align:right}.report-course-list-wrap .tutor-list-table th:nth-child(2),.report-course-list-wrap .tutor-list-table td:nth-child(2){width:40%}.report-course-list-wrap .tutor-list-table .total{color:#9698a5}.report-course-list-wrap .tutor-list-table [class$="-link"]{color:#b9bac3}.report-course-list-wrap .tutor-list-table a:hover{color:#3057d5}.report-course-list-wrap .tutor-list-table .course-link{font-size:12px;margin-left:5px}.tutor-list-table .course-percentage{width:90px;height:4px;border-radius:2px;background-color:#dcdce1;position:relative}.tutor-list-table .course-percentage::before{content:"";position:absolute;width:var(--percent);height:4px;border-radius:2px;background-color:#3e64de}.report-course-list-wrap>.tutor-list-table tbody td:not(.detail):nth-last-child(3){vertical-align:middle}.report-course-list-wrap .tutor-list-table .details-link{font-size:21px}.tutor-report-content a{-webkit-transition:0.2s ease;transition:0.2s ease}.tutor-report-content a:hover,.tutor-report-content a:focus,.report-student-profile .profile-table a:hover{color:#3057d5}@media (max-width: 991px){.report-course-list-wrap .tutor-list-table th:nth-child(n+7),.report-course-list-wrap .tutor-list-table td:nth-child(n+7){display:none}}.report-course-list-header .status span,.report-course-list-wrap .detail .status span{font-size:14px;font-weight:300;line-height:1;color:#737787;margin-left:25px;padding-left:14px;position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.report-course-list-header .status span::before,.report-course-list-wrap .detail .status span::before{content:"";position:absolute;width:8px;height:8px;background:#b9bac3;border-radius:50%;left:0}.report-course-list-wrap .detail .status span{margin-left:0;padding-left:16px}.report-course-list-wrap .detail .status span::before{width:6px;height:6px}.report-course-list-header .status .running::before,.report-course-list-wrap .detail .status .running::before{background-color:#3e64de}.report-course-list-header .status .complete::before,.report-course-list-wrap .detail .status .complete::before{background-color:#7bbc30}.report-course-list-wrap .detail .heading{font-size:16px;line-height:1.75;color:#3f435b;margin-bottom:10px}.report-course-list-wrap .detail{padding:unset !important;text-align:left !important;font-size:14px !important;font-weight:400 !important}.report-course-list-wrap .tutor-list-table td>table{width:100%}.report-course-list .course-list-details{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;grid-gap:20px;grid-template-columns:repeat(3, 1fr)}.tutor-list-wrap .tutor-list-table a:hover,.tutor-list-wrap .tutor-list-table a:focus{color:#3e64de}.tutor-list-wrap .no-data-found{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 0 30px 0}.tutor-toast-parent{position:fixed;right:25px;bottom:50px;right:50px;left:auto;max-height:400px;width:350px;overflow-x:hidden;overflow-y:auto;background:transparent;z-index:99999999}.tutor-toast-parent:empty{display:none}.tutor-toast-parent>div{background:white;padding:10px;margin:15px;border-radius:15px;-webkit-box-shadow:3px 3px 10px rgba(0,0,0,0.363);box-shadow:3px 3px 10px rgba(0,0,0,0.363);border:1px solid #E8E8E8;background:white;border:none;display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-ms-flex-line-pack:center;align-content:center;-o-align-content:center;-ms-align-content:center;-moz-align-content:center;-webkit-align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center}.tutor-toast-parent>div>div{padding:8px}.tutor-toast-parent>div>div:nth-child(1),.tutor-toast-parent>div>div:nth-child(3){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}.tutor-toast-parent>div>div:nth-child(2){-webkit-box-flex:1;flex:1;-o-flex:1;-ms-flex:1;-moz-flex:1;-webkit-flex:1}.tutor-toast-parent>div img{width:100%;height:auto}.tutor-toast-parent>div b{font-weight:600;display:block}.tutor-toast-parent>div span{color:#333}.tutor-toast-parent>div i{cursor:pointer;font-size:14px}body.rtl .tutor-toast-parent{right:auto;left:50px}
11
-
12
- /*# sourceMappingURL=tutor-admin.min.css.map */
8
  *
9
  * http://docs.jquery.com/UI/Datepicker#theming
10
  */.ui-datepicker{background-color:#fff;border:1px solid #eeeeee;display:none;margin-top:4px;padding:5px;width:180px}.ui-datepicker a,.ui-datepicker a:hover{text-decoration:none}.ui-datepicker a:hover,.ui-datepicker td:hover a{color:#2a6496;-webkit-transition:color 0.1s ease-in-out;transition:color 0.1s ease-in-out}.ui-datepicker .ui-datepicker-header{margin-bottom:4px;text-align:center}.ui-datepicker .ui-datepicker-title{font-weight:700}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{cursor:default;font-family:"tutor";-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;height:20px;line-height:1;margin-top:2px;width:30px}.ui-datepicker .ui-datepicker-prev{float:left;text-align:left}.ui-datepicker .ui-datepicker-next{float:right;text-align:right}.ui-datepicker .ui-datepicker-prev:before{content:"\e921"}.ui-datepicker .ui-datepicker-next:before{content:"\e903"}.ui-datepicker .ui-icon{display:none}.ui-datepicker .ui-datepicker-calendar{table-layout:fixed;width:100%}.ui-datepicker .ui-datepicker-calendar th,.ui-datepicker .ui-datepicker-calendar td{text-align:center;padding:0}.ui-datepicker .ui-datepicker-calendar td{border-radius:4px;-webkit-transition:background-color 0.1s ease-in-out, color 0.1s ease-in-out;transition:background-color 0.1s ease-in-out, color 0.1s ease-in-out}.ui-datepicker .ui-datepicker-calendar td:hover{background-color:#eee;cursor:pointer}.ui-datepicker .ui-datepicker-calendar td a{text-decoration:none}.ui-datepicker .ui-datepicker-current-day{background-color:#4289cc}.ui-datepicker .ui-datepicker-current-day a{color:#fff}.ui-datepicker .ui-datepicker-calendar .ui-datepicker-unselectable:hover{background-color:#fff;cursor:default}.ui-datepicker-calendar .ui-state-default{border:none;background:none}.ui-datepicker-calendar .ui-state-default.ui-state-highlight{background:#eeeeee;padding:3px;display:block}h2.tutor-page-heading{background-color:#ffffff;padding:30px !important;margin:0 !important;border-bottom:1px solid #ecedef}.tutor-report-left-menus{background-color:#fcfcfc;margin-bottom:50px}.tutor-report-left-menus ul{margin:0}.report-main-wrap h3{font-weight:300;font-size:20px}.tutor-report-left-menus ul li{display:inline-block;margin:0}.tutor-report-left-menus ul li a{text-decoration:none;line-height:60px;display:block;padding:0 15px;color:#393c40}.tutor-report-left-menus ul li a:focus{outline:none !important;border:0;-webkit-box-shadow:none;box-shadow:none}.tutor-report-left-menus ul li.active a{color:#1e55dd;border-bottom:3px solid #3057d5}.tutor-report-content{-webkit-box-flex:1;-ms-flex:1;flex:1}.report-top-sub-menu{margin:0;-webkit-box-flex:1;-ms-flex:1;flex:1}.report-top-sub-menu a{text-decoration:none;padding:10px 15px;border:1px solid #d7dadf;color:#aaaeb3;border-radius:3px;display:inline-block}.report-top-sub-menu a.active{background-color:#3057d5;color:#ffffff;border:1px solid #3057d5}.top-course-enrolled{margin-top:20px;margin-bottom:20px}.top-course-enrolled h1,.top-course-enrolled h2,.top-course-enrolled h3{margin:30px 0}.report-stats{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.report-stat-box{padding:0;margin-bottom:30px;width:25%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%}.report-stat-box-body{background-color:#ffffff;display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;margin-right:30px}.report-stat-box:nth-child(4n) .report-stat-box-body{margin-right:0}.report-stat-box .box-icon{font-size:50px;line-height:46px;padding:13px;color:#3057d5}.report-stat-box h4,.report-stat-box p{margin:5px 0}.report-stat-box .box-stats-text h3,.report-stat-box .box-stats-text p{margin:5px 0}.report-stat-box .box-stats-text{padding:12px 0}.report-stat-box .box-stats-text h3{font-size:20px;font-weight:300}.report-stat-box .box-stats-text p{color:#888b90}.box-padding{padding:30px}.box-padding h3{margin-top:0}.box-bg-green{background-color:#00d611;color:#ffffff}.box-bg-primary{background-color:#3057d5;color:#ffffff}.box-bg-light{background-color:#eeeeee;color:#555555}.box-bg-warning{background-color:#eea504;color:#ffffff}.box-bg-dark{background-color:#333333;color:#ffffff}.box-bg-danger{background-color:#ff000c;color:#ffffff}.box-bg-pink{background-color:#ff00da;color:#ffffff}.box-bg-violate{background-color:#9c25ea;color:#ffffff}.tutor-report-overview-section{display:-webkit-box;display:-ms-flexbox;display:flex;margin:20px 0}.overview-section-col6{width:50%}.overview-section-col6{margin-right:1%;margin-left:1%}.overview-section-col6:first-child{margin-left:0}.overview-section-col6:last-child{margin-right:0}.last-revews-wrap{width:100%}table.tutor-report-table{border:none;-webkit-box-shadow:none;box-shadow:none}.tutor-report-table th{background-color:#fcfcfc;border-top:1px solid #eaeaea;border-bottom:1px solid #eaeaea;padding:20px;color:#878a8f}.tutor-report-table td{border-bottom:1px solid #eaeaea;padding:20px}.tutor-report-table td img.avatar{float:left;margin-right:5px}.tutor-icon-star-full,.tutor-icon-star-line{color:#ffd700}.tutor-delete-link{color:#ff282a !important}.tutor-pagination{margin:50px 0}.tutor-pagination .page-numbers{display:inline-block;padding:5px 10px;margin:0 2px 0 0;border:1px solid #eee;line-height:1;text-decoration:none;font-weight:600}.tutor-pagination .page-numbers.current,.tutor-pagination a.page-numbers:hover{background:#f9f9f9}.report-date-range-form{display:-webkit-box;display:-ms-flexbox;display:flex}.date-range-input{position:relative;margin-right:10px}.date-range-input:last-child{margin-right:0}.date-range-input input{border:1px solid #d7dadf;-webkit-box-shadow:none;box-shadow:none;line-height:32px;margin:0;padding-right:30px}.date-range-input i.tutor-icon-calendar{position:absolute;right:10px;top:13px}.date-range-input button{background-color:#3057d5;color:#ffffff;border:none;line-height:39px;padding:0 15px}.tutor-date-range-filter-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;margin:30px 0}.report-download-csv-icon{float:right}.report-download-csv-icon a{text-decoration:none}.tutor-alert{border:1px solid #f8a201;background:#fffff2;position:relative;border-radius:3px;padding:20px 25px 20px 95px;color:#a86d00;margin-bottom:10px}.tutor-alert.tutor-alert-danger{border:1px solid #fe1a1a;background:#fff2f2;color:#a50000}.tutor-alert.tutor-alert-success{border:1px solid #69bc0d;background:#f6fff2;color:#3d7400}.tutor-alert.tutor-alert-info{border:1px solid #13aaf6;background:#eaf8ff;color:#0586c7}.tutor-alert::before{content:"\e95f";position:absolute;font-size:30px;font-family:"tutor" !important;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;width:70px;top:0;left:0;text-align:center;background:#f8a201;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#ffffff}.tutor-alert.tutor-alert-danger::before{content:"\e913";background:#fe1a1a}.tutor-alert.tutor-alert-success::before{content:"\e90f";background:#69bc0d}.tutor-alert.tutor-alert-info::before{content:"\e96c";background:#13aaf6}.tutor-alert-content p{margin:0}table.tutor-table{border-spacing:0;width:100%;border-collapse:collapse;border:1px solid #dcdfe5}table.tutor-table td,table.tutor-table th{padding:1em 1.41575em;text-align:left;vertical-align:top;border-bottom:1px solid #dcdfe5}table.tutor-table td p:last-child,table.tutor-table th p:last-child{margin-bottom:0}table.tutor-table th{font-weight:600}table.tutor-table thead th{padding:1.41575em;vertical-align:middle}table.tutor-table tbody h2{font-size:1em;letter-spacing:normal;font-weight:normal}table.tutor-table tbody h2 a{font-weight:normal}table.tutor-table th{background-color:#fafbfc}table.tutor-table tbody td{background-color:#ffffff}table.tutor-table tbody tr:nth-child(2n) td{background-color:#fafbfc}table.tutor-table a{text-decoration:none}table.tutor-table p{margin:0}.tutor-nav-tab-wrapper{margin-bottom:10px}.nav-tab-item{float:left;border:1px solid #ccc;border-bottom:none;margin-left:0.5em;padding:10px 14px;font-size:14px;line-height:1.33;font-weight:600;background:#e5e5e5;color:#555;text-decoration:none;white-space:nowrap}.nav-tab-item:first-child{margin-left:0}.nav-tab-item:focus,.nav-tab-item:hover{background-color:#fff;color:#444}.nav-tab-item-active,.nav-tab-item:focus:active{-webkit-box-shadow:none;box-shadow:none}.nav-tab-item-active{margin-bottom:-1px;color:#444}.nav-tab-item-active,.nav-tab-item-active:focus,.nav-tab-item-active:focus:active,.nav-tab-item-active:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.tutor-quiz-feedback-mode{position:relative}.tutor-quiz-feedback-mode:not(:last-child){margin-right:16px}.tutor-quiz-feedback-mode-option{border-radius:3px;border:solid 1px #dedede;padding:15px 15px 15px 40px;-webkit-transition:0.2s ease;transition:0.2s ease;max-width:210px}.tutor-quiz-feedback-option-option-title{margin-bottom:10px !important}.tutor-quiz-feedback-option-subtitle{margin:0 !important;font-size:12px;line-height:1.67;color:#505469}.tutor-quiz-feedback-option-subtitle a{font-weight:500;color:inherit;text-decoration:underline !important}.tutor-quiz-feedback-mode input[type="radio"]{display:none}.tutor-quiz-feedback-mode .radio-icon{position:absolute;top:16px;left:16px;z-index:1;margin:0;width:16px;height:16px;border-radius:50%;-webkit-box-shadow:inset 0 0 0 2px #dcdce1;box-shadow:inset 0 0 0 2px #dcdce1;-webkit-transition:0.2s ease;transition:0.2s ease}.tutor-quiz-feedback-mode input[type="radio"]:checked+.radio-icon{-webkit-box-shadow:inset 0 0 0 5px #3e64de;box-shadow:inset 0 0 0 5px #3e64de;background:#fff}.tutor-quiz-feedback-mode input[type="radio"]:checked ~ .tutor-quiz-feedback-mode-option{background:#fff}#tutor-course-topics h2,#tutor-instructors h2{display:block}#tutor-course-topics .tutor-course-builder-header.has-postbox-header{top:-56px;right:96px}#settings-tab-general .tutor-option-field-row input[type="number"]{width:185px}.instructor-layout-templates-fields{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.instructor-layout-template{max-width:150px;padding:5px;margin:3px}.instructor-layout-template img{max-width:100%;height:auto;display:block;border:6px solid transparent;-webkit-transition:border-color 400ms;transition:border-color 400ms}.instructor-layout-template.selected-template img,.instructor-layout-template:hover img{border:6px solid #3057d6}.tutor-announcement-content-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-announcement-buttons :nth-child(1){margin-right:20px}.tutor-announcements-header{display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-announcement-date,.tutor-announcement-content>span{font-weight:bold !important}.tutor-announcement-date{width:100px !important}.tutor-announcements-modal-wrap .tutor-modal-content{max-width:660px !important}.tutor-announcements-modal-wrap button{padding:10px 20px !important}.tutor-announcements-update-form .tutor-option-field-row,.tutor-announcements-form .tutor-option-field-row{padding:10px 18px 10px 18px}.tutor-announcements-update-form .tutor-option-field-row input[type=text],.tutor-announcements-update-form textarea,.tutor-announcements-form .tutor-option-field-row input[type=text],.tutor-announcements-form textarea{width:100%;margin-top:8px}.tutor-announcements-form select,.tutor-announcements-update-form select{width:100%;max-width:100% !important;padding:7px 12px;margin-top:8px}.tutor-announcements-update-form .tutor-option-field-row,.tutor-announcements-form .tutor-option-field-row{border:none !important}.tutor-announcements-form .modal-footer button,.tutor-announcements-update-form .modal-footer button{cursor:pointer !important}.tutor-announcements-form .modal-footer,.tutor-announcements-update-form .modal-footer{background-color:#fff !important}.tutor-announcement-close-btn{text-decoration:none;color:#525252}.tutor-announcement-table td{vertical-align:middle !important}.tutor-announcement-content{line-height:10px}.tutor-accouncement-update-modal .modal-header,.tutor-announcement-create-modal .modal-header{padding-right:15px !important}.tutor-accouncement-update-modal .tutor-modal-content,.tutor-announcement-create-modal .tutor-modal-content{border-radius:20px !important}.tutor-admin-search-box-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:45px}.tutor-admin-search-box-container>div:nth-child(1){margin-right:40px;position:relative}.tutor-admin-search-box-container>div:nth-child(1){-webkit-box-flex:2;-ms-flex:2;flex:2}.tutor-admin-search-box-container>div:nth-child(2),.tutor-admin-search-box-container>div:nth-child(3),.tutor-admin-search-box-container>div:nth-child(4){-webkit-box-flex:1.5;-ms-flex:1.5;flex:1.5}.tutor-admin-search-box-container>div:not(:last-child){margin-right:40px}.tutor-admin-search-box-container .tutor-report-search-btn{position:absolute;width:40px;height:40px;bottom:0;right:0;border:0;background:transparent;color:#3e64de;font-size:20px;cursor:pointer;outline:none}.tutor-admin-search-box-container>div:nth-child(1) input{padding-right:45px}.tutor-admin-search-box-container input[type="text"],.tutor-admin-search-box-container select{width:100%;height:40px;border-radius:3px;border:solid 1px #dcdce1;background-color:#ffffff;padding:0 14px;-webkit-transition:0.2s;transition:0.2s}.tutor-admin-search-box-container .date-range-input i.tutor-icon-calendar{position:absolute;width:42px;height:40px;right:0;top:0;color:#3e64de;font-size:18px;text-align:center;line-height:40px}.tutor-admin-search-box-container .menu-label{font-size:14px;font-weight:400;color:#737787;margin-bottom:7px}.tutor-admin-search-box-container>div:nth-child(4) input::-webkit-input-placeholder{color:#3f435b;font-size:15px}.tutor-admin-search-box-container>div:nth-child(1) input::-webkit-input-placeholder{font-size:16px;font-weight:400;color:#737787}.tutor-admin-search-box-container input[type="text"]:hover,.tutor-admin-search-box-container input[type="text"]:focus,.tutor-admin-search-box-container select:hover,.tutor-admin-search-box-container select:focus,.tutor-date-range-wrap .date-range-input input:hover,.tutor-date-range-wrap .date-range-input input:focus{border-color:var(--tutor-primary-color) !important;-webkit-box-shadow:none !important;box-shadow:none !important;outline:none !important}@media (max-width: 767px){.tutor-admin-search-box-container{display:grid;grid-template-columns:repeat(auto-fit, minmax(250px, 1fr));grid-gap:15px}.tutor-admin-search-box-container>div{margin-right:0 !important}}.tutor-list-wrap{border-radius:3px;background-color:#ffffff;margin-top:40px}.tutor-list-wrap .tutor-list-header,.tutor-list-wrap .tutor-list-footer{padding:30px}.tutor-list-wrap .heading{font-size:20px;line-height:1.5;color:#3f435b}.tutor-list-wrap .tutor-list-table{width:100%;text-align:left;border-collapse:collapse}.tutor-list-wrap .tutor-list-table .table-toggle{display:none}.tutor-list-wrap .tutor-list-table .table-toggle.open{display:table-row}[class^="tutor-report-"] .tutor-list-table tbody td.detail{vertical-align:top}.tutor-list-wrap .tutor-list-table thead,.tutor-list-wrap .tutor-list-table tr:first-child th{background-color:#f7f7f9;border-top:1px solid #eaeaea;border-bottom:1px solid #eaeaea}.tutor-list-wrap .tutor-list-table th{font-size:12px;font-weight:400;line-height:1.75;letter-spacing:0.7px;color:#737787;text-transform:uppercase}.tutor-list-wrap .tutor-list-table td,.tutor-list-wrap .tutor-list-table td p{font-size:14px;font-weight:300;line-height:1.75;color:#3f435b}.report-course-list-wrap .tutor-list-table th i{margin-left:3px}.tutor-list-wrap .tutor-list-table tr th,.tutor-list-wrap .tutor-list-table tr td{padding:15px 20px}.tutor-list-wrap .tutor-list-header,.tutor-list-wrap .tutor-list-table th:last-child,.tutor-list-wrap .tutor-list-table td:last-child,.tutor-report-course-list .tutor-list-footer{padding-right:36px}.tutor-list-wrap .tutor-list-header,.tutor-list-wrap .tutor-list-table th:first-child,.tutor-list-wrap .tutor-list-table td:first-child{padding-left:30px}.tutor-list-wrap .tutor-list-table tbody td{padding:25px 20px;vertical-align:top}.tutor-list-wrap .tutor-list-table tbody tr:not(:last-child){border-bottom:1px solid #dcdce1}.tutor-list-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-top:1px solid #dcdce1}.tutor-list-footer .tutor-report-count{font-size:14px;line-height:1.71;color:#737787}.tutor-list-footer .tutor-report-count strong{color:#3f435b}.tutor-list-footer .page-numbers.current{border-color:#3e64de;background:transparent}.tutor-list-footer .page-numbers{border-radius:4px;border:solid 1px #dcdce1;padding:11px 14px;font-size:14px;font-weight:400;color:#737787;background:#fff;outline:none;-webkit-transition:0.2s;transition:0.2s}.tutor-list-footer .page-numbers:hover,.tutor-list-footer .page-numbers:focus{border-color:#3e64de;background:#3e64de !important;color:#fff;-webkit-box-shadow:none;box-shadow:none}.tutor-list-footer .page-numbers.current:hover,.tutor-list-footer .page-numbers.current:focus{background:transparent !important;color:inherit}.tutor-list-footer .tutor-pagination{margin:0}.tutor-list-table td .details-button a,.tutor-list-table .link-icon{font-size:16px;color:#b9bac3;-webkit-transition:0.2s;transition:0.2s}.tutor-list-table td .details-button a:first-child{font-size:12px;font-weight:500;line-height:1.75;text-align:center;color:#737787;border-radius:3px;border:solid 1px #dcdce1;padding:5px 11px;margin-right:15px;text-decoration:none}.tutor-list-table td .details-button{text-align:right;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-list-table .course-link a{color:inherit;text-decoration:none}.tutor-list-table .tutor-icon-detail-link,.profile-table .tutor-icon-detail-link{font-size:14px}@media (max-width: 991px){.tutor-list-wrap{overflow-x:scroll}}.report-course-list-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.report-course-list-wrap .tutor-list-table td{font-size:16px}.report-course-list-wrap .tutor-list-table td:nth-child(2){font-size:14px;font-weight:400}.report-course-list-wrap .tutor-list-table td:last-child{text-align:right}.report-course-list-wrap .tutor-list-table th:nth-child(2),.report-course-list-wrap .tutor-list-table td:nth-child(2){width:40%}.report-course-list-wrap .tutor-list-table .total{color:#9698a5}.report-course-list-wrap .tutor-list-table [class$="-link"]{color:#b9bac3}.report-course-list-wrap .tutor-list-table a:hover{color:#3057d5}.report-course-list-wrap .tutor-list-table .course-link{font-size:12px;margin-left:5px}.tutor-list-table .course-percentage{width:90px;height:4px;border-radius:2px;background-color:#dcdce1;position:relative}.tutor-list-table .course-percentage::before{content:"";position:absolute;width:var(--percent);height:4px;border-radius:2px;background-color:#3e64de}.report-course-list-wrap>.tutor-list-table tbody td:not(.detail):nth-last-child(3){vertical-align:middle}.report-course-list-wrap .tutor-list-table .details-link{font-size:21px}.tutor-report-content a{-webkit-transition:0.2s ease;transition:0.2s ease}.tutor-report-content a:hover,.tutor-report-content a:focus,.report-student-profile .profile-table a:hover{color:#3057d5}@media (max-width: 991px){.report-course-list-wrap .tutor-list-table th:nth-child(n+7),.report-course-list-wrap .tutor-list-table td:nth-child(n+7){display:none}}.report-course-list-header .status span,.report-course-list-wrap .detail .status span{font-size:14px;font-weight:300;line-height:1;color:#737787;margin-left:25px;padding-left:14px;position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.report-course-list-header .status span::before,.report-course-list-wrap .detail .status span::before{content:"";position:absolute;width:8px;height:8px;background:#b9bac3;border-radius:50%;left:0}.report-course-list-wrap .detail .status span{margin-left:0;padding-left:16px}.report-course-list-wrap .detail .status span::before{width:6px;height:6px}.report-course-list-header .status .running::before,.report-course-list-wrap .detail .status .running::before{background-color:#3e64de}.report-course-list-header .status .complete::before,.report-course-list-wrap .detail .status .complete::before{background-color:#7bbc30}.report-course-list-wrap .detail .heading{font-size:16px;line-height:1.75;color:#3f435b;margin-bottom:10px}.report-course-list-wrap .detail{padding:unset !important;text-align:left !important;font-size:14px !important;font-weight:400 !important}.report-course-list-wrap .tutor-list-table td>table{width:100%}.report-course-list .course-list-details{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;grid-gap:20px;grid-template-columns:repeat(3, 1fr)}.tutor-list-wrap .tutor-list-table a:hover,.tutor-list-wrap .tutor-list-table a:focus{color:#3e64de}.tutor-list-wrap .no-data-found{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 0 30px 0}.tutor-toast-parent{position:fixed;right:25px;bottom:50px;right:50px;left:auto;max-height:400px;width:350px;overflow-x:hidden;overflow-y:auto;background:transparent;z-index:99999999}.tutor-toast-parent:empty{display:none}.tutor-toast-parent>div{background:white;padding:10px;margin:15px;border-radius:15px;-webkit-box-shadow:3px 3px 10px rgba(0,0,0,0.363);box-shadow:3px 3px 10px rgba(0,0,0,0.363);border:1px solid #E8E8E8;background:white;border:none;display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-ms-flex-line-pack:center;align-content:center;-o-align-content:center;-ms-align-content:center;-moz-align-content:center;-webkit-align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center}.tutor-toast-parent>div>div{padding:8px}.tutor-toast-parent>div>div:nth-child(1),.tutor-toast-parent>div>div:nth-child(3){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}.tutor-toast-parent>div>div:nth-child(2){-webkit-box-flex:1;flex:1;-o-flex:1;-ms-flex:1;-moz-flex:1;-webkit-flex:1}.tutor-toast-parent>div img{width:100%;height:auto}.tutor-toast-parent>div b{font-weight:600;display:block}.tutor-toast-parent>div span{color:#333}.tutor-toast-parent>div i{cursor:pointer;font-size:14px}body.rtl .tutor-toast-parent{right:auto;left:50px}
 
 
assets/css/tutor-front.css CHANGED
@@ -11455,5 +11455,3 @@ body.rtl .tutor-toast-parent {
11455
  right: auto;
11456
  left: 50px;
11457
  }
11458
-
11459
- /*# sourceMappingURL=tutor-front.css.map */
11455
  right: auto;
11456
  left: 50px;
11457
  }
 
 
assets/css/tutor-front.min.css CHANGED
@@ -1,3 +1 @@
1
  :root{--tutor-primary-color: #1B52D8;--tutor-primary-hover-color: #1b52a9;--tutor-text-color: #4B5981;--tutor-light-color: #B1B8C9;--tutor-primary-button-color: #3E64DE;--tutor-danger-button-color: #F44337;--tutor-success-button-color: #4BD863;--tutor-warning-button-color: #ED9700;--tutor-text-size: 16px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tutor-wrap{color:var(--tutor-text-color)}.tutor-wrap img{max-width:100%;height:auto}.tutor-custom-list-style{list-style:none;margin:0;padding:0}.tutor-custom-list-style li{position:relative;margin-bottom:5px;line-height:30px;padding-left:25px}.tutor-custom-list-style li:before{content:'\e90f';position:absolute;left:0;font-family:'tutor';color:var(--tutor-primary-color)}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:15px;height:15px;top:-6.5px;cursor:pointer}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.tutor-styled-radio>span{position:relative;padding-left:30px;cursor:pointer}.tutor-styled-radio>span::before{content:'';height:18px;width:18px;background:#F1F3F7;border:1px solid #DCDFE5;border-radius:50%;position:absolute;top:50%;margin-top:-9px;left:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:200ms;transition:200ms}.tutor-styled-radio>input{display:none !important}.tutor-styled-radio>input:checked+span::before{border:5px solid var(--tutor-primary-color)}.tutor-container{padding-left:15px;padding-right:15px;max-width:1140px;margin-right:auto;margin-left:auto;width:100%}.tutor-container.tutor-fluid{max-width:100%}.tutor-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.tutor-col-auto,.tutor-col,.tutor-col-3,.tutor-col-4,.tutor-col-5,.tutor-col-6,.tutor-col-7,.tutor-col-8,.tutor-col-9,.tutor-col-12{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.tutor-col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.tutor-col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.tutor-col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.tutor-col-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.tutor-col-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.tutor-col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.tutor-col-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.tutor-col-8{-webkit-box-flex:0;-ms-flex:0 0 66.666666%;flex:0 0 66.666666%;max-width:66.666666%}.tutor-col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.tutor-col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.tutor-align-items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media (max-width: 991px){.tutor-col-auto,.tutor-col,.tutor-col-3,.tutor-col-4,.tutor-col-6,.tutor-col-8,.tutor-col-9{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.tutor-col-md-100{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}@media (max-width: 767px){.tutor-col-auto,.tutor-col,.tutor-col-3,.tutor-col-4,.tutor-col-6,.tutor-col-8,.tutor-col-9{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}.tutor-segment-title,.tutor-single-course-segment .tutor-segment-title{font-size:18px;line-height:23px;font-weight:500;margin-bottom:13px;color:#000}.tutor-single-course-segment{margin-bottom:45px}.tutor-full-width-course-top h4,.tutor-full-width-course-top h5,.tutor-full-width-course-top h6{color:#000;font-weight:500}.tutor-full-width-course-top h6{font-size:14px}.tutor-leadinfo-top-meta{font-size:14px;margin-bottom:10px}.tutor-leadinfo-top-meta span{display:inline-block;margin-right:10px}.tutor-leadinfo-top-meta span i::before{margin-left:0}.tutor-leadinfo-top-meta i{margin-right:4px}.tutor-single-course-rating{color:#F8C51C;font-size:16px}.tutor-single-course-rating .tutor-single-rating-count{color:var(--tutor-text-color);font-weight:500}.tutor-single-course-rating .tutor-single-rating-count i{color:var(--tutor-light-color);font-style:normal;display:inline-block;margin-left:4px}.tutor-course-header-h1{font-size:36px;line-height:46px;color:var(--tutor-text-color);font-weight:500;margin:0 0 29px;padding:0}@media (max-width: 767px){.tutor-course-header-h1{font-size:26px;line-height:36px}}.tutor-course-summery{margin-bottom:40px}.tutor-single-course-meta{color:var(--tutor-text-color)}.tutor-single-course-meta ul{list-style:none;margin:0;padding:10px 0;overflow:hidden;line-height:21px}.tutor-single-course-meta.tutor-meta-top ul{padding-top:0;padding-bottom:15px}.tutor-single-course-meta ul li{float:left;vertical-align:top;margin-right:40px;margin-top:5px;margin-bottom:5px;min-width:95px}@media (max-width: 575px){.tutor-single-course-meta ul li{margin-right:10px}}.tutor-single-course-meta ul li:last-child{margin-right:0}.tutor-single-course-meta .tutor-single-course-avatar img{height:21px;width:21px;display:block;border-radius:50%;margin-right:3px}.tutor-single-course-meta ul li .tutor-single-course-avatar span{height:21px;width:21px;font-size:9px;text-align:center;line-height:21px;border-radius:50%;display:block;color:#ffffff}.tutor-single-course-meta ul li>div{display:inline-block;vertical-align:top}.tutor-single-course-meta ul li strong{margin:0;display:inline-block;line-height:21px;font-weight:400;color:var(--tutor-light-color);font-size:var(--tutor-text-size)}.tutor-single-course-meta ul li a{color:var(--tutor-text-color);font-weight:500;-webkit-transition:300ms;transition:300ms}.tutor-single-course-meta ul li a:hover{color:var(--tutor-primary-color)}.tutor-single-course-meta.tutor-meta-top ul li,.tutor-single-course-meta.tutor-meta-top ul li a{font-weight:700}.tutor-single-course-meta ul li{font-weight:500;color:var(--tutor-text-color)}.tutor-single-course-meta ul li span{color:var(--tutor-light-color);font-weight:400}.tutor-single-course-meta.tutor-lead-meta{margin-bottom:33px;border-top:1px solid #DCDFE5;border-bottom:1px solid #DCDFE5}@media (max-width: 991px){.tutor-single-course-meta.tutor-lead-meta{border-bottom:none}.tutor-single-course-meta.tutor-lead-meta ul{padding-bottom:0}.tutor-single-course-meta.tutor-lead-meta ul li{margin:5px;padding:5px 15px;border:1px solid #ddd;border-radius:4px}}.tutor-single-course-meta.tutor-lead-meta ul{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media (max-width: 991px){.tutor-single-course-meta.tutor-lead-meta ul{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}}.tutor-single-course-meta.tutor-lead-meta ul li span{display:block;margin-bottom:5px;color:var(--tutor-light-color)}.tutor-single-course-meta.tutor-lead-meta ul li a{color:var(--tutor-text-color);-webkit-transition:300ms;transition:300ms}.tutor-single-course-meta.tutor-lead-meta ul li a:hover{color:var(--tutor-primary-color)}.tutor-single-course-meta.tutor-lead-meta ul li a:not(:last-child):after{content:',';margin-right:4px}@media (max-width: 575px){.tutor-single-course-meta.tutor-lead-meta ul{display:block}.tutor-single-course-meta.tutor-lead-meta ul li{display:block;border:none;margin:0;width:100%;padding:0 0 10px}.tutor-single-course-meta.tutor-lead-meta ul li span{display:inline-block;color:var(--tutor-text-color);font-weight:700}.tutor-single-course-meta.tutor-lead-meta ul li span::after{content:':';color:var(--tutor-text-color)}}.tutor-course-benefits-content ul{list-style:none;display:block;overflow:hidden;-webkit-column-count:2;-moz-column-count:2;column-count:2;-webkit-column-gap:30px;-moz-column-gap:30px;column-gap:30px;margin:0}.tutor-course-topics-header{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.tutor-course-topics-header .tutor-course-topics-header-right span:not(:first-child){margin-left:45px}.tutor-course-topics-contents h4{font-size:var(--tutor-text-size);font-weight:500;margin-bottom:0;color:var(--tutor-text-color)}.tutor-course-topics-contents .tutor-course-title{cursor:pointer}.tutor-course-topics-contents .tutor-course-title h4{color:var(--tutor-primary-color);font-size:16px;line-height:25px;overflow:hidden;margin-top:0}.tutor-course-topic.tutor-active .tutor-course-title h4>i:before{content:"\e910"}.tutor-course-topics-contents .tutor-course-title h4 i{font-size:15px;line-height:25px;float:left;margin-right:10px}.tutor-course-topics-contents .tutor-course-topic{border:1px solid #DCE4E6;margin-bottom:20px;border-radius:5px;overflow:hidden}.tutor-course-title,.tutor-course-lesson{padding:14px 20px}.tutor-course-lesson{border-top:1px solid #DCE4E6}.tutor-course-lesson h5{line-height:22px;font-size:var(--tutor-text-size);margin-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;color:inherit;margin-top:0}.tutor-course-lesson h5 a{color:var(--tutor-primary-color);-webkit-transition:300ms;transition:300ms}.tutor-course-lesson h5 a:hover{color:var(--tutor-primary-hover-color)}.tutor-course-lesson h5 i{line-height:22px;vertical-align:text-top;margin-right:10px;color:var(--tutor-light-color);display:block}.tutor-course-lesson h5 .lesson-preview-icon i{margin-right:0;margin-left:10px}.tutor-course-lesson h5 .tutor-lesson-duration{margin-left:auto;padding-left:5px;-ms-flex-item-align:start;align-self:flex-start}.tutor-course-lesson .lesson-preview-title{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}table.course-single-gradebooks .datetime{margin:0;font-size:80%}.tutor-course-lessons .tutor-course-lesson h5 i.tutor-lesson-thumbnail-icon{height:50px;width:70px;border-radius:3px;text-align:center;line-height:50px;color:#fff;margin-right:10px;position:relative;z-index:1;overflow:hidden;font-size:20px;background-position:center center !important;background-size:cover !important}.tutor-course-lessons .tutor-course-lesson h5 i.tutor-lesson-thumbnail-icon:after{position:absolute;content:'';left:0;top:0;height:100%;width:100%;background:rgba(0,0,0,0.5);z-index:-1}.tutor-single-lesson-button-group,.tutor-topics-lesson-list .tutor-topics-in-single-lesson{border-radius:4px;margin-bottom:30px;border:1px solid #e8eff1}.tutor-single-lesson-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.tutor-lesson-sidebar{-webkit-box-flex:0;-ms-flex:0 0 400px;flex:0 0 400px}@media (max-width: 991px){.tutor-lesson-sidebar{position:absolute;left:0;top:70px;width:400px;max-width:95%;height:calc(100% - 70px);z-index:9;background:#fff;overflow-y:auto;display:none}}.tutor-spotlight-mode .tutor-lesson-sidebar{position:fixed;left:0;width:400px;height:100vh;overflow-y:scroll;background:#f4f8fa}.tutor-spotlight-mode #tutor-single-entry-content{padding-left:400px;min-height:calc(100vh - 46px)}.tutor-spotlight-mode #tutor-single-entry-content.sidebar-hidden{padding-left:0}@media (max-width: 991px){.tutor-spotlight-mode .tutor-lesson-sidebar{position:absolute;width:350px;height:auto}.tutor-spotlight-mode #tutor-single-entry-content{padding-left:0}}.admin-bar .tutor-spotlight-mode .tutor-lesson-sidebar{height:calc(100vh - 32px)}.tutor-single-entry-content{-webkit-box-flex:999;-ms-flex-positive:999;flex-grow:999}.tutor-single-lesson-button-group .tutor-single-lesson-button a,.tutor-topics-in-single-lesson .tutor-single-lesson-items a{padding:14px 100px 14px 17px;display:-webkit-box;display:-ms-flexbox;display:flex;color:var(--tutor-text-color);position:relative;border-top:1px solid #e8eff1}.tutor-single-lesson-button-group .tutor-single-lesson-button:first-child a{border-top:none}.tutor-lessons-under-topic .tutor-single-lesson-items.active a{background:rgba(233,235,238,0.35)}.tutor-topics-in-single-lesson{margin-bottom:5px;background-color:#ffffff;padding:0}.tutor-topics-in-single-lesson .tutor-single-lesson-items a span{margin:0;display:inline;color:var(--tutor-text-color)}.tutor-topics-in-single-lesson .tutor-topics-title{position:relative}.tutor-topics-in-single-lesson .tutor-topics-title button{position:absolute;right:15px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);padding:0 5px;font-size:16px;background:transparent;border:none;color:var(--tutor-text-color)}.tutor-topics-in-single-lesson.tutor-topic-active .tutor-topics-title button i::before{content:"\e910"}.tutor-topics-in-single-lesson .tutor-topics-title h3{margin:0;padding:10px 37px 10px 17px;font-size:16px;color:var(--tutor-primary-color);font-weight:500}.tutor-topics-in-single-lesson .tutor-topics-title h3{cursor:pointer;line-height:30px}span.toogle-informaiton-icon{background:#ccc;color:#fff;height:15px;width:15px;text-align:center;display:inline-block;line-height:15px;font-size:15px;border-radius:50%;margin-left:10px}.tutor-topics-in-single-lesson .tutor-topics-title h3 i{font-size:10px;margin-left:6px}.tutor-topics-in-single-lesson .tutor-topics-tutor-loop-rating-wraptitle h3 i{font-size:10px;vertical-align:middle;display:inline-block;padding:5px;color:#c7c7c7;-webkit-transition:300ms;transition:300ms;cursor:pointer}.tutor-topics-in-single-lesson .tutor-topics-title h3 i:hover{color:var(--tutor-primary-color)}.tutor-single-lesson-button-group .tutor-single-lesson-button a>i:first-child,.tutor-topics-in-single-lesson .tutor-single-lesson-items a>i:first-child{color:#c7c7c7;line-height:22px;display:inline-block;vertical-align:middle;margin-right:10px}.tutor-topics-in-single-lesson .tutor-single-lesson-items a>i.tutor-icon-doubt{color:var(--tutor-primary-color)}.tutor-topics-in-single-lesson .tutor-topics-summery{padding:14px;border-top:1px solid #dce4e6;display:none}.tutor-lessons-under-topic .tutor-lesson-right-icons{position:absolute;right:15px;top:14px}.tutor-lessons-under-topic .tutor-lesson-right-icons .tutor-lesson-complete{height:16px;width:16px;border:1px solid #e8eff1;border-radius:50%;font-size:9px;display:inline-block;line-height:16px;text-align:center;margin:0;vertical-align:middle;margin-left:8px}.tutor-lessons-under-topic .tutor-single-lesson-items.active .tutor-lesson-right-icons .tutor-lesson-complete{border-color:#b7d6b7}.tutor-lessons-under-topic .tutor-single-lesson-items.active .tutor-lesson-right-icons .tutor-lesson-complete.tutor-done,.tutor-lessons-under-topic .tutor-lesson-right-icons .tutor-lesson-complete.tutor-done{background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color);color:#fff}.tutor-lessons-under-topic .tutor-lesson-right-icons i{font-style:normal}.tutor-single-page-top-bar{background-color:var(--tutor-primary-color);height:70px;margin-bottom:50px;color:#ffffff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding-right:15px}.tutor-single-page-top-bar .tutor-single-lesson-segment form,.tutor-single-page-top-bar .tutor-single-lesson-segment{margin-bottom:0}.tutor-single-page-top-bar a{color:#ffffff;vertical-align:middle;display:inline-block;overflow:hidden}.tutor-single-page-top-bar a i{float:left}@media (max-width: 546px){.tutor-single-page-top-bar a{font-size:14px}}.tutor-topbar-home-btn i{margin-right:7px}.tutor-topbar-home-btn{margin-left:20px}@media screen and (max-width: 546px){.tutor-topbar-home-btn{margin-left:10px}}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button{background:transparent;color:#fff;padding-bottom:13px;cursor:pointer;border:1px solid #fff}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button i{font-size:14px}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button i::before{display:block;padding-top:2px}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button:hover{color:#fff;background:var(--tutor-primary-hover-color);border-color:var(--tutor-primary-hover-color)}.tutor-single-page-top-bar a:hover{color:#ffffff}.tutor-single-page-top-bar .tutor-topbar-content-title-wrap{text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-box-flex:999999;-ms-flex-positive:999999;flex-grow:999999}.tutor-single-page-top-bar .tutor-hide-sidebar-bar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.tutor-single-page-top-bar .tutor-topbar-mark-to-done{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}@media (max-width: 767px){.tutor-single-page-top-bar .tutor-topbar-content-title-wrap{display:none}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button{padding:9px 14px}}@media (max-width: 767px){.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button{padding:7px 12px;font-size:14px}}.tutor-single-page-top-bar .tutor-topbar-content-title-wrap i{vertical-align:middle;line-height:1;margin-right:3px}.tutor-lesson-content-area,.tutor-quiz-single-wrap{margin:0 100px 80px}@media (max-width: 1366px){.tutor-lesson-content-area,.tutor-quiz-single-wrap{margin:0 60px 80px}}@media (max-width: 991px){.tutor-lesson-content-area,.tutor-quiz-single-wrap{margin:0 40px}}.tutor-lesson-sidebar-hide-bar{background-color:var(--tutor-primary-hover-color);color:#ffffff;padding:0 12px;display:inline-block;line-height:70px}@media only screen and (max-width: 546px){.tutor-lesson-sidebar-hide-bar{padding:0 10px}}.tutor-single-page-top-bar a.tutor-lesson-sidebar-hide-bar i{font-size:20px;display:block;padding:25px 0}@media only screen and (max-width: 546px){.tutor-single-page-top-bar a.tutor-lesson-sidebar-hide-bar i{font-size:19px}}.sidebar-hidden a.tutor-lesson-sidebar-hide-bar .tutor-icon-angle-left:before{content:"\e903"}.tutor-sidebar-tabs-wrap{border-top:1px solid #e0e9ec}.tutor-tabs-btn-group{height:70px;display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-tabs-btn-group a{background-color:#f1f6f8;color:var(--tutor-text-color);display:block;line-height:70px;width:100%;text-align:center;border:1px solid #e0e9ec;border-top:none}.tutor-tabs-btn-group a span,.tutor-tabs-btn-group a i{font-size:24px;display:inline-block;vertical-align:top;line-height:70px}.tutor-tabs-btn-group a i{color:var(--tutor-primary-color)}.tutor-tabs-btn-group a span{font-size:15px;padding-left:3px}.tutor-tabs-btn-group a.active{background-color:#ffffff;border:none}.tutor-tabs-btn-group a:focus{outline:none}.tutor-single-lesson-segment{margin-bottom:35px}.tutor-single-lesson-wrap{background:#f4f8fa}.tutor-lesson-video-wrap .plyr--video{border-radius:4px}#tutor-lesson-sidebar-qa-tab-content{background-color:#ffffff;padding:20px}#tutor-lesson-sidebar-qa-tab-content .tutor-add-question-wrap{border-top:1px solid #e8eff1;padding-top:25px}#tutor-lesson-sidebar-qa-tab-content .tutor-add-question-wrap h3{color:var(--tutor-primary-color)}#tutor-lesson-sidebar-qa-tab-content .tutor-add-question-wrap button.tutor_ask_question_btn{display:block;width:100%;background-color:var(--tutor-primary-color);border-color:var(--tutor-primary-color)}#tutor-lesson-sidebar-qa-tab-content .tutor_question_answer_wrap .tutor_original_question{margin-bottom:20px;margin-top:20px}.tutor-lesson-sidebar-emptyqa-wrap{text-align:center;padding:50px 20px;color:var(--tutor-text-color)}.tutor-lesson-sidebar-emptyqa-wrap h3{margin:0;padding:0 0 25px}.tutor-lesson-sidebar-emptyqa-wrap i{font-size:150px;color:#e8eff1;line-height:0.8}.tutor-attachments-wrap{margin:-3px -3px 15px -3px}.tutor-attachments-wrap .tutor-lesson-attachment{display:inline-block;border:1px solid #e8eff1;border-radius:4px;padding:10px 16px 10px 12px;overflow:hidden;background:#f4f7f8;margin:3px;-webkit-transition:300ms;transition:300ms}.tutor-attachments-wrap .tutor-lesson-attachment:hover{-webkit-box-shadow:0 2px 4px rgba(0,0,0,0.15);box-shadow:0 2px 4px rgba(0,0,0,0.15)}.tutor-attachments-wrap .tutor-attachment-icon{font-size:30px;float:left;color:var(--tutor-text-color)}.tutor-attachments-wrap .tutor-attachment-icon i{display:block}.tutor-attachment-info{padding-left:10px;float:left}.tutor-attachment-info span{display:block;font-size:14px;line-height:16px;color:var(--tutor-text-color)}.tutor-attachment-info span+span{font-size:11px;color:var(--tutor-light-color)}.tutor-progress-bar-wrap{width:100%;margin:0 0 30px;display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-progress-bar{height:8px;color:#000000;line-height:25px;position:relative;background:#f1f1f1;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%;border-radius:30px;margin-top:7.5px}.tutor-progress-bar .tutor-progress-filled{background-color:var(--tutor-primary-color);height:8px;border-radius:30px;width:var(--tutor-progress-left)}.tutor-dashboard-content-inner .tutor-progress-bar{margin-top:9.5px;height:5px}.tutor-dashboard-content-inner .tutor-progress-bar .tutor-progress-filled{height:5px}.tutor-progress-bar .tutor-progress-filled:after{content:"";position:absolute;height:15px;width:15px;border:7.5px solid var(--tutor-primary-color);border-radius:50%;background:#fff;left:var(--tutor-progress-left);-webkit-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%);top:50%;-webkit-box-sizing:border-box;box-sizing:border-box}.tutor-progress-percent{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none;padding-left:20px}.tutor-course-purchase-box{margin-bottom:0}.tutor-price-preview-box .tutor-course-purchase-box button{display:block;width:100%;background:var(--tutor-primary-color);border-radius:3px;text-transform:uppercase;font-weight:500;cursor:pointer}.tutor-price-preview-box .tutor-course-purchase-box button i{margin-right:8px}.tutor-price-preview-box .tutor-course-enrolled-wrap,.tutor-price-preview-box .tutor-course-login-wrap,.tutor-price-preview-box .tutor-course-login-wrap form,.tutor-course-purchase-box form{margin-bottom:0}.tutor-price-preview-box .tutor-course-material-includes-wrap{margin-bottom:25px}.tutor-alert-warning.tutor-instructor-alert{padding:25px 25px 15px}.tutor-lead-info-btn-group{display:block;overflow:hidden;margin:0 -20px 25px;border-bottom:1px solid rgba(220,223,229,0.4);padding:0 20px 30px}.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap{display:block;margin-top:15px}.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap form{margin:0}.tutor-lead-info-btn-group a.tutor-button,.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap button{display:block;padding:18px 20px;border:none;text-align:center;border-radius:4px;text-transform:uppercase;line-height:1;-webkit-transition:300ms;transition:300ms;font-weight:700}.tutor-lead-info-btn-group a.tutor-button,.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap{width:100%;text-align:center;display:block}@media (max-width: 991px){.tutor-lead-info-btn-group a.tutor-button,.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap{width:auto}}.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap button{display:block;width:100%;background:#e8eff1;color:var(--tutor-light-color)}.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap button:hover{background:var(--tutor-primary-color);color:#ffffff}.tutor-single-add-to-cart-box .tutor-enroll-form{margin:0}.tutor-single-add-to-cart-box .tutor-enroll-form .tutor-course-enroll-wrap{padding:0}.tutor-single-add-to-cart-box .tutor-enroll-form .tutor-course-enroll-wrap button{display:block;width:100%;text-align:center}.tutor-single-add-to-cart-box.cart-required-login{position:relative}.tutor-single-add-to-cart-box.cart-required-login:before{position:absolute;content:"";top:0;bottom:0;left:0;right:0;z-index:99;cursor:pointer}.tutor-course-enrolled-review-wrap .write-course-review-link-btn{color:#fff;background-color:var(--tutor-primary-color);border-color:var(--tutor-primary-color);display:inline-block;padding:15px 30px;border-radius:4px;text-transform:capitalize;line-height:1;-webkit-transition:300ms;transition:300ms}.tutor-course-enrolled-review-wrap .write-course-review-link-btn:hover{background-color:var(--tutor-primary-hover-color);border-color:var(--tutor-primary-hover-color)}.tutor-course-enrolled-review-wrap .tutor-form-group{margin-bottom:10px}.tutor-course-enrolled-review-wrap .tutor-form-group textarea{height:120px;background:#f7f7f7;border:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;border-radius:4px;line-height:1.5;text-indent:0;padding:15px}.tutor-write-review-form{margin-top:30px}.tutor-form-row{display:-webkit-box;display:-ms-flexbox;display:flex;margin-left:-15px;margin-right:-15px}.tutor-form-col-4,.tutor-form-col-6,.tutor-form-col-12{padding-left:15px;padding-right:15px}.tutor-form-col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.tutor-form-col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.tutor-form-col-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333%;flex:0 0 33.3333%;max-width:33.3333%}@media (max-width: 768px){.tutor-form-row{-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-form-col-4,.tutor-form-col-6,.tutor-form-col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}ul.tutor-required-fields{list-style:none;padding:10px;margin:0}.tutor-star-rating-group{color:#f4c150;display:inline-block;text-align:left}.tutor-star-rating-group i{margin-right:4px}@media (max-width: 546px){.tutor-write-review-box .tutor-star-rating-group{font-size:26px;display:block;text-align:center}}.tutor-write-review-box .tutor-star-rating-group i{margin-right:4px;cursor:pointer}.tutor-queston-and-answer-wrap{margin:20px 0}.tutor-question-top{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:20px;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.tutor-ask-question-btn{text-align:right}.tutor-question-search-form{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%}.tutor-question-search-form form{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-question-search-form input[type="text"]{max-width:60%}.tutor-add-question-wrap{margin:20px 0}.tutor-add-question-wrap .tutor-form-group{margin-bottom:10px}.tutor_question_cancel{margin-right:5px}.updating-icon:before{font-family:"tutor";margin-right:5px;content:"\e91d";-webkit-animation:spin 1s steps(8) infinite;animation:spin 1s steps(8) infinite;display:inline-block}.loading-lesson .tutor-lesson-video-wrap:before{font-family:"tutor";content:"\e91d";-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block;z-index:9;position:absolute;left:50%;top:50%;font-size:50px;margin-left:-25px;margin-top:-12px}.loading-lesson .tutor-lesson-video-wrap:after{position:absolute;content:"";top:0;left:0;background:rgba(255,255,255,0.8);width:100%;height:100%}.tutor-lesson-video-wrap{position:relative}.tutor_question_area{padding:25px 20px;background:#f4f7f8;border-radius:4px}.tutor_question_area p:last-child{margin-bottom:0}.tutor_add_answer_row{text-align:right;margin-top:20px}.tutor_add_answer_row .tutor-form-group:last-child{margin-top:20px}.tutor_admin_answers_list_wrap+.tutor_add_answer_row,.tutor_admin_answers_list_wrap{margin-left:100px}@media (max-width: 991px){.tutor_admin_answers_list_wrap+.tutor_add_answer_row,.tutor_admin_answers_list_wrap{margin-left:30px}}.tutor_original_question{margin-bottom:30px}.tutor_admin_answers_list_wrap .tutor_individual_answer{margin-bottom:40px}.tutor_admin_answers_list_wrap .tutor_question_area{background:#edf9f1}.question-top-meta .tutor-question-avater a{display:inline-block}.question-top-meta .tutor-question-avater a span{height:50px;width:50px;border-radius:50%;display:block;line-height:50px;text-align:center;font-size:17px}.question-top-meta .tutor-question-avater a img{width:50px;height:50px;border-radius:50%}.question-top-meta{overflow:hidden;margin-bottom:20px}.question-top-meta .tutor-question-avater{float:left}.question-top-meta .review-meta{float:left;margin-bottom:0;margin-left:10px}.question-top-meta .review-meta a{display:block;font-size:18px;color:var(--tutor-text-color);line-height:20px}.question-top-meta .review-meta span{color:var(--tutor-light-color);vertical-align:text-top;display:block}.tutor_wp_editor_wrap .tutor-form-group a.tutor-button{margin-right:6px}.tutor-no-announcements{text-align:center}.tutor-announcement-meta{margin-bottom:10px;font-size:13px}.tutor-announcement{border:1px solid #eee;padding:20px;margin-top:30px;border-radius:4px}.announcement-delete-btn{float:right}.announcement-delete-btn a{color:var(--tutor-light-color);-webkit-transition:300ms;transition:300ms}.announcement-delete-btn a:hover{color:red}.tutor-announcement-title-wrap h3{color:var(--tutor-text-color);font-weight:500;margin-bottom:10px}.tutor-quiz-header span{background:#f88f1c;color:#ffffff;display:inline-block;padding:4px 10px;border-radius:4px;line-height:1;text-transform:uppercase;font-size:10px}.tutor-quiz-header h2{color:var(--tutor-text-color);font-size:36px;line-height:46px;font-weight:500;margin-bottom:15px}.tutor-quiz-header h5{color:var(--tutor-light-color)}.tutor-quiz-header h5 a{color:var(--tutor-text-color);font-weight:500}.tutor-quiz-header .tutor-quiz-meta{list-style:none;margin:20px 0 40px;padding:15px 0;border-top:1px solid #dcdfe5;border-bottom:1px solid #dcdfe5;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-quiz-header .tutor-quiz-meta li{display:inline-block;color:var(--tutor-text-color)}.tutor-quiz-header .tutor-quiz-meta li strong{display:block;color:var(--tutor-light-color);font-weight:400}@media (max-width: 767px){.tutor-quiz-header .tutor-quiz-meta{display:block;border:none;padding:0}.tutor-quiz-header .tutor-quiz-meta li{display:block;color:var(--tutor-text-color);margin:5px;border:none;padding:0;border-radius:0}.tutor-quiz-header .tutor-quiz-meta li strong{display:inline-block;margin-right:5px}}@media (max-width: 1199.98px){.tutor-quiz-attempt-history{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}}.tutor-quiz-attempt-history-title{font-size:18px;color:var(--tutor-light-color);line-height:23px;font-weight:500;margin-bottom:15px;margin-top:70px}.tutor-quiz-attempt-history table{border-collapse:collapse;border-radius:4px;margin-bottom:0}.tutor-quiz-attempt-history th{font-weight:400}.tutor-quiz-attempt-history table,.tutor-quiz-attempt-history th,.tutor-quiz-attempt-history td{border:1px solid #e8eff1;padding:10px !important}.tutor-quiz-attempt-history table span.result-fail,.tutor-quiz-attempt-history table span.result-pass{display:inline-block;color:#fff;border-radius:2px;width:47px;height:26px;line-height:26px;text-align:center}.tutor-quiz-attempt-history table span.result-fail{background:#df3247}.tutor-quiz-attempt-history table span.result-pass{background:var(--tutor-success-button-color)}.tutor-quiz-attempt-history table span.result-review-required{background:#f5b30d;padding:3px 5px;color:#fff;border-radius:2px;text-align:center;font-size:90%}.quiz-head-meta-info{color:var(--tutor-light-color);margin-bottom:40px}.quiz-head-meta-info span{color:var(--tutor-text-color)}#tutor-quiz-attempt-questions-wrap{margin-bottom:50px}.tutor-quiz-single-wrap .question-text{color:var(--tutor-text-color);font-size:20px;font-weight:600}.tutor-quiz-single-wrap .question-description{color:var(--tutor-text-color)}.quiz-attempt-single-question{margin-bottom:80px}.fill-in-the-blank-field .fill-in-the-blank-text-input{display:inline;border-top:none;border-left:none;border-right:none;border-bottom:1px dashed;background-color:transparent;padding:0px;border-radius:0;-webkit-box-shadow:none;box-shadow:none;margin:0 10px}.fill-in-the-blank-field .fill-in-the-blank-text-input:focus{background:none;outline:none}.tutor-quiz-answers-wrap{margin-bottom:50px}.tutor-quiz-answers-wrap textarea{background:transparent;border:1px solid #d4dadb;height:175px;border-radius:5px;-webkit-box-shadow:none;box-shadow:none;min-width:100%;margin-bottom:5px}.tutor-quiz-answers-wrap textarea:focus{background:transparent;outline:none !important}.tutor-quiz-answers-wrap p{margin:0;line-height:26px}.quiz-answer-input-body .quiz-answer-image-wrap{margin-top:10px;margin-bottom:10px;max-width:200px}.quiz-answer-image-wrap img{max-width:100%;height:auto}.tutor-quiz-answers-wrap label{display:block;margin-bottom:15px;cursor:pointer}.tutor-quiz-answers-wrap label.answer-view-image,.tutor-quiz-answers-wrap label.answer-view-text_image{text-align:center;margin:0 10px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;max-width:25%}.quiz-answer-input-bottom{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;line-height:20px}.quiz-answer-input-bottom.wrong-answer{color:#e27c89}.quiz-answer-input-bottom.wrong-answer .quiz-answer-input-field{border:1px solid #e27c89;padding:5px 10px}.quiz-answer-input-bottom.right-answer{color:#86b324}.quiz-answer-input-bottom.right-answer .quiz-answer-input-field{border:1px solid #bbd58c;padding:5px 10px}.wrong-right-text{padding:5px 10px}.tutor-quiz-answers-wrap label input{display:none}.tutor-quiz-answers-wrap label input+span{width:20px;height:20px;border:1px solid #dedede;display:inline-block;border-radius:2px;position:relative;margin-right:5px}.tutor-quiz-answers-wrap label input:checked+span{background:var(--tutor-primary-color);border-color:var(--tutor-primary-color)}.tutor-quiz-answers-wrap label input:checked+span:after{content:"\e90f";position:absolute;font-family:"tutor";color:#fff;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);font-size:11px;line-height:1}.tutor-quiz-answers-wrap label input[type="radio"]+span{content:"";border-radius:50%;margin-right:4px;vertical-align:top;font-size:1em}.tutor-quiz-answers-wrap label input[type="radio"]+span:after{content:"";height:8px;width:8px;background:#fff;border-radius:50%;left:50%}.question-type-ordering-item{border:1px solid #d4dadb;padding:10px;margin-bottom:10px;width:250px;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex}.question-type-ordering-item.ui-sortable-placeholder{background-color:transparent}.question-type-ordering-item .answer-title{-webkit-box-flex:1;-ms-flex:1;flex:1}.question-type-ordering-item .answer-sorting-bar{cursor:pointer}.quiz-answer-item-matching{padding:10px;display:-webkit-box;display:-ms-flexbox;display:flex;width:25%}.answer-type-matching .quiz-answer-matching-items-wrap .quiz-answer-item-matching{display:inline-block;max-width:none;width:25%;padding:0 10px;vertical-align:top}@media (max-width: 767px){.answer-type-matching .quiz-answer-matching-items-wrap .quiz-answer-item-matching{width:50%}}@media (max-width: 575px){.answer-type-matching .quiz-answer-matching-items-wrap .quiz-answer-item-matching{width:100%}}.answer-type-matching .quiz-answer-matching-items-wrap{margin:0 -10px}.quiz-answer-matching-droppable{height:48px;min-width:200px;border:1px dashed #d4dadb}.quiz-draggable-answer-item{padding:10px 20px;border:1px solid #d4dadb;margin-right:10px;margin-bottom:10px;background-color:#fff;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.quiz-draggable-answer-item .draggable-answer-title{-webkit-box-flex:1;-ms-flex:1;flex:1}.quiz-draggable-rand-answers{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:80px}.drop-hover{display:none}.quiz-answer-matching-droppable .drop-hover{background-color:#eeeeee;height:100%;width:100%;display:inline-block;float:left}.quiz-answer-matching-droppable .quiz-draggable-answer-item{width:100%;max-width:100%}.quiz-draggable-answer-item .draggable-answer-icon{margin-left:15px}.answer-type-image_matching .quiz-answer-item-matching{display:block}.answer-type-image_matching .quiz-answer-matching-items-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-10px;margin-right:-10px}.answer-type-image_matching .quiz-answer-matching-droppable{width:100%;min-width:100%}.answer-type-image_matching img{width:100%;height:auto}.tutor-quiz-questions-pagination ul{margin:0;padding:0;list-style:none}.tutor-quiz-questions-pagination ul li{display:inline-block}.tutor-quiz-questions-pagination ul li a{background-color:var(--tutor-primary-color);padding:7px 13px;display:block;border-radius:50%;margin-right:10px;color:#ffffff}.tutor-quiz-questions-pagination ul li a:hover,.tutor-quiz-questions-pagination ul li a.active{background-color:var(--tutor-primary-color)}.quiz-image-answering-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin-left:-10px;margin-right:-10px}.quiz-image-answering-wrap img{max-width:100%;height:auto}.quiz-image-answering-answer{margin-right:10px;margin-left:10px;width:15%}.quiz-image-answering-image-wrap{margin-bottom:20px}.tutor-quiz-answers-wrap .quiz-image-answering-input-field-wrap input{width:100%;display:block;border:1px solid #d4dadb;-webkit-box-shadow:none;box-shadow:none;background:transparent;border-radius:2px;height:42px}.tutor-quiz-answers-wrap .quiz-image-answering-input-field-wrap input:focus{background:transparent;outline-offset:0 !important}.tutor-next-previous-pagination-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-next-previous-pagination-wrap a{color:var(--tutor-primary-color)}.tutor-course-filter-wrapper{overflow:auto;max-width:1140px !important;margin:0 auto !important}.tutor-course-filter-wrapper>div{padding:12px}.tutor-course-filter-wrapper>div:first-child{width:250px;float:left}.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field{border:1px solid #BABABA;border-radius:6px;overflow:hidden;padding:0 6px;height:auto}.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field input,.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field input:focus,.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field input:active{border:none;outline:0;padding:0;display:inline-block;width:calc(100% - 24px);font-weight:normal;font-size:16px;color:#7A7A7A;height:35px}.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field i{font-size:17px;cursor:pointer;color:#3E64DE}.tutor-course-filter-wrapper>div:first-child h4{font-weight:normal;font-size:20px;color:#161616;margin:16px 0px 12px}.tutor-course-filter-wrapper>div:first-child label{display:block;cursor:pointer;font-weight:normal;font-size:16px;color:#353535}.tutor-course-filter-wrapper>div:last-child{width:calc(100% - 250px);float:right}.tutor-course-filter-wrapper>div:last-child select[name=tutor_course_filter]{border:1px solid #7A7A7A;color:#7A7A7A;padding:3px 4px;font-size:16px;border-radius:6px;cursor:pointer}.tutor-course-filter-wrapper>div .tutor-course-filter-loop-container{display:none}.tutor-course-filter-wrapper .tutor-clear-all-filter{margin-top:28px;display:none}.tutor-course-filter-wrapper .tutor-clear-all-filter>a{height:21px;background:#E8E8E8;border-radius:22px;line-height:21px;text-align:center;font-size:13px;font-weight:500;margin-top:20px;color:#7a7a7a;padding:5px 10px}.tutor-course-filter-wrapper .tutor-clear-all-filter a>i{font-size:10px}@media (max-width: 767px){.tutor-course-filter-wrapper>div{width:100% !important;float:none !important}.tutor-course-filter-wrapper .tutor-course-filter-container>div{overflow:auto}.tutor-course-filter-wrapper .tutor-course-filter-container>div>div{width:50%;float:left}.tutor-course-filter-wrapper .tutor-course-filter-container>div>div:first-child{width:100%}}div[class*="tutor-course-col"]{padding-left:15px;padding-right:15px;margin-bottom:30px}.tutor-course-loop{background:#fff;color:#29303b;overflow:hidden;position:relative;vertical-align:top;border-radius:4px;-webkit-transition:300ms;transition:300ms;border:1px solid rgba(0,0,0,0.05);height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-course-loop a,.tutor-widget-course a{text-decoration:none !important}.tutor-course-header{position:relative}.tutor-course-loop-header-meta{position:absolute;left:0;top:13px;width:100%;padding-left:13px;padding-right:13px;overflow:hidden}.tutor-course-loop-header-meta .tutor-course-wishlist{float:right;background:#fff;font-size:19px;padding:5px 5px;border-radius:3px;-webkit-transition:300ms;transition:300ms}.tutor-course-loop-header-meta .tutor-course-wishlist a{display:block;color:var(--tutor-primary-color);-webkit-transition:300ms;transition:300ms}.tutor-course-loop-header-meta .tutor-course-wishlist:hover{background:var(--tutor-primary-color)}.tutor-course-loop-header-meta .tutor-course-wishlist:hover a{color:#fff}.tutor-course-loop-header-meta .tutor-course-wishlist a:focus{outline:none}.tutor-course-loop-header-meta .tutor-course-wishlist a.has-wish-listed:before{content:"\e908"}.tutor-course-loop-header-meta .tutor-course-wishlist a.updating-icon:before{content:"\e91d";margin-right:0}.tutor-course-loop-level{display:inline-block;background:#9013fe;padding:0 7px;color:#fff;font-size:12px;line-height:20px;border-radius:2px;-webkit-box-shadow:0 0 1px rgba(0,0,0,0.1);box-shadow:0 0 1px rgba(0,0,0,0.1)}.tutor-course-loop:hover{-webkit-box-shadow:0 4px 23px rgba(0,0,0,0.1);box-shadow:0 4px 23px rgba(0,0,0,0.1)}.tutor-course-loop p{margin:0}.tutor-course-loop .tutor-course-header a,.tutor-course-loop .tutor-course-header a img{display:block;border-top-left-radius:4px;border-top-right-radius:4px}.tutor-loop-course-container{padding:25px 19px}.tutor-loop-rating-wrap{color:#f8c51c;margin-bottom:2px;font-size:16px}.tutor-rating-count{color:var(--tutor-text-color)}.tutor-rating-count i{font-style:normal;display:inline-block;margin-left:5px}.tutor-loop-rating-wrap i:before{margin-right:4px;margin-left:0}.tutor-course-loop-title h2{font-size:20px;line-height:28px;font-weight:600;margin-bottom:17px}.tutor-course-loop-title h2 a{color:var(--tutor-text-color)}.tutor-course-loop-title h2 a:hover{color:var(--tutor-primary-color)}.tutor-course-loop-meta{margin-bottom:15px;color:var(--tutor-text-color);font-size:var(--tutor-text-size)}.tutor-course-loop-meta>div{display:inline-block}.tutor-course-loop-meta>div i{font-size:16px;margin-right:4px}.tutor-course-loop-meta>div i,.tutor-course-loop-meta>div span{vertical-align:middle}.tutor-course-loop-meta>div+div{margin-left:10px}.tutor-loop-course-footer{padding:15px;border-top:1px solid rgba(0,0,0,0.05);color:#838791;font-size:12px;line-height:25px;border-bottom-left-radius:4px;border-bottom-right-radius:4px;font-weight:400}.tutor-loop-course-footer:after{content:"";display:table;clear:both}.tutor-loop-course-footer span.woocommerce-Price-currencySymbol{vertical-align:top}.tutor-course-loop-price{color:var(--tutor-text-color);font-size:16px}.tutor-course-loop-price .price del{font-weight:400}.tutor-course-loop-price .price del span{text-decoration:line-through;color:var(--tutor-light-color)}.tutor-course-loop-price .price del>span{margin-right:6px}.tutor-course-loop-price .price del+ins{background:transparent;margin-left:0;text-decoration:none}.tutor-course-loop-price>.price{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;font-weight:600;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-course-loop-price>.price .subscription-details{font-size:15px;margin-left:4px;font-weight:400}.tutor-course-loop-price>.price .subscription-details+.tutor-loop-cart-btn-wrap{margin-left:0;margin-top:4px}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap a{color:var(--tutor-text-color);position:relative;line-height:20px;vertical-align:top;display:block;font-weight:400;background:transparent;padding:0}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap a:hover{color:var(--tutor-primary-color)}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap{margin-left:auto}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap a.added{display:none}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap a::before{content:"\e915";font-family:"tutor" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:20px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-right:5px;vertical-align:top;color:var(--tutor-primary-color)}@-webkit-keyframes mymove{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes mymove{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.tutor-course-loop:hover .tutor-loop-course-footer .tutor-loop-cart-btn-wrap{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-course-col-4{width:25%}.tutor-course-col-3{width:33.33%}.tutor-course-col-2{width:50%}.tutor-course-col-1{width:100%}.tutor-course-col-1 .tutor-course-loop{width:100%}.tutor-course-col-5{width:20%}.tutor-course-col-6{width:16.66%}@media (max-width: 991px){.tutor-course-col-6,.tutor-course-col-5,.tutor-course-col-4,.tutor-course-col-3,.tutor-course-col-2{width:50%}}@media (max-width: 575px){.tutor-course-col-6,.tutor-course-col-5,.tutor-course-col-4,.tutor-course-col-3,.tutor-course-col-2{width:100%}}.tutor-course-filter-wrap{margin-bottom:50px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-course-filter-form{display:inline-block;margin:0}.tutor-courses{clear:both;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-15px;margin-right:-15px;padding:0}.tutor-loop-course-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;height:100%}.clearfix:before,.clearfix:after{display:block;clear:both;content:""}.tutor-loop-author,.tutor-meta{color:#bac0cf}.tutor-text-mute{color:#bac0cf;font-weight:400}.tutor-loop-author{overflow:hidden;font-size:var(--tutor-text-size)}.tutor-loop-author .tutor-single-course-avatar img{width:25px;height:25px;display:block;border-radius:50%;margin-right:6px}.tutor-loop-author .tutor-single-course-avatar .tutor-text-avatar{height:25px;width:25px;display:inline-block;border-radius:50%;text-align:center;line-height:25px;font-size:11px;margin-right:6px}.tutor-loop-author>div{display:inline-block;float:left}.tutor-loop-author>div a{color:var(--tutor-text-color);font-weight:500;-webkit-transition:300ms;transition:300ms}.tutor-loop-author>div a:hover{color:var(--tutor-primary-color)}.tutor-loop-author>div span{display:inline-block;margin:0 2px 0 2px;color:var(--tutor-light-color);line-height:25px;font-weight:400}.tutor-course-lising-category a:not(:last-child):after{content:", ";margin-right:5px}.tutor-course-enrolled-wrap{margin:0 -20px -20px !important;padding:12px 20px;overflow:hidden;border-top:1px solid #dcdfe5;font-size:14px}.tutor-course-enrolled-wrap p{font-weight:600;margin:0}.tutor-course-enrolled-wrap p i{padding-right:9px;float:left;font-size:20px;line-height:20px}.tutor-course-enrolled-wrap p i,.tutor-course-enrolled-wrap p span{color:var(--tutor-success-button-color)}.tutor-notice-warning{background-color:#fcf8e3;border-color:#faebcc;padding:20px;margin-bottom:10px}.tutor-info-msg,.tutor-success-msg,.tutor-warning-msg,.tutor-error-msg{margin:10px 0;padding:10px;border-radius:3px 3px 3px 3px}.tutor-info-msg{color:var(--tutor-primary-color);background-color:#bef}.tutor-success-msg{color:var(--tutor-success-button-color);background-color:#dff2bf}.tutor-warning-msg{color:#9f6000;background-color:#feefb3}.tutor-error-msg{color:#d8000c;background-color:#fbdcdc;border:1px solid #d8000c}.cart-required-login,.cart-required-login a,.cart-required-login form{cursor:pointer}.single_add_to_cart_button,a.tutor-button,.tutor-button,a.tutor-btn,.tutor-btn{color:#fff;border:1px solid var(--tutor-primary-button-color);background-color:var(--tutor-primary-button-color);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 20px;border-radius:4px;text-transform:capitalize;line-height:20px;font-size:14px;font-weight:600;cursor:pointer;-webkit-transition:300ms;transition:300ms;overflow:hidden;vertical-align:top}.single_add_to_cart_button i,a.tutor-button i,.tutor-button i,a.tutor-btn i,.tutor-btn i{line-height:19px;margin-right:7px;font-size:16px}.single_add_to_cart_button.btn-sm,a.tutor-button.btn-sm,.tutor-button.btn-sm,a.tutor-btn.btn-sm,.tutor-btn.btn-sm{padding:9px 14px;line-height:19px}a.tutor-button.bordered-button,.tutor-button.bordered-button,a.tutor-btn.bordered-btn,.tutor-btn.bordered-btn{color:var(--tutor-primary-button-color);border:1px solid var(--tutor-primary-button-color);background-color:transparent !important}a.tutor-button.default-btn,.tutor-button.default-btn,a.tutor-btn.default-btn,.tutor-btn.default-btn{color:#393c40;border:1px solid #b8babe;background:var(--tutor-primary-button-color)}a.tutor-button.default-btn i,.tutor-button.default-btn i,a.tutor-btn.default-btn i,.tutor-btn.default-btn i{color:#fff}a.tutor-button.default-btn:hover,.tutor-button.default-btn:hover,a.tutor-btn.default-btn:hover,.tutor-btn.default-btn:hover{background-color:var(--tutor-primary-button-color);border-color:var(--tutor-primary-color);color:#fff}a.tutor-button.default-btn:hover i,.tutor-button.default-btn:hover i,a.tutor-btn.default-btn:hover i,.tutor-btn.default-btn:hover i{color:#fff}a.tutor-button:hover,.tutor-button:hover,a.tutor-btn:hover,.tutor-btn:hover{background-color:var(--tutor-primary-button-color);border-color:var(--tutor-primary-button-color);color:#fff;-webkit-filter:brightness(0.9);filter:brightness(0.9)}a.tutor-button.bordered-button:hover,.tutor-button.bordered-button:hover,a.tutor-btn.bordered-btn:hover,.tutor-btn.bordered-btn:hover{border:1px solid var(--tutor-primary-button-color);background-color:var(--tutor-primary-button-color) !important;color:#fff !important}a.tutor-button.button-light,.tutor-button.button-light{color:#b1b8c9;background-color:#dae4e6;border:1px solid #dae4e6}a.tutor-button.button-light:hover,.tutor-button.button-light:hover{color:#939bae;background-color:#e8eff1;border:1px solid #e8eff1}.tutor-button.tutor-danger{background-color:var(--tutor-danger-button-color);border-color:#e53935}.tutor-button.tutor-danger:hover{background-color:var(--tutor-danger-button-color);border-color:var(--tutor-danger-button-color);-webkit-filter:brightness(0.9);filter:brightness(0.9)}.tutor-button.tutor-success{background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color)}.tutor-button.tutor-success:hover{background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color);-webkit-filter:brightness(0.9);filter:brightness(0.9)}.tutor-button.tutor-warning{background:var(--tutor-warning-button-color);border-color:var(--tutor-warning-button-color)}.tutor-button.tutor-warning:hover{background:var(--tutor-warning-button-color);border-color:var(--tutor-warning-button-color);-webkit-filter:brightness(0.9);filter:brightness(0.9)}.course-enrolled-nav-wrap{border-bottom:1px solid #dedfe0;margin-bottom:45px}.tutor-button:disabled,.tutor-button[disabled],.tutor-button:disabled:hover,.tutor-button[disabled]:hover{display:block;border:0px;background-color:#DCDCE1;color:#737787;cursor:default}.tutor-button span{font-size:12px;display:block}.tutor-button-block{width:100%;text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.tutor-wrap{width:100%}.tutor-wrap nav.course-enrolled-nav ul{list-style:none;margin:0 0 -1px;padding:0}.tutor-wrap nav.course-enrolled-nav ul li{display:inline-block}.tutor-wrap nav.course-enrolled-nav ul li a{display:block;font-size:16px;padding:5px 0 20px;margin-right:20px;color:var(--tutor-light-color);border-bottom:2px solid transparent}.tutor-wrap nav.course-enrolled-nav ul li:not(:first-child) a{margin-left:20px}.tutor-wrap nav.course-enrolled-nav ul li.active a{border-bottom:2px solid var(--tutor-primary-color);color:var(--tutor-text-color)}@media (max-width: 575px){.tutor-wrap nav.course-enrolled-nav ul li{display:inline-block}.tutor-wrap nav.course-enrolled-nav ul li:not(:first-child) a,.tutor-wrap nav.course-enrolled-nav ul li a{padding:8px;margin:0}.tutor-wrap nav.course-enrolled-nav ul li.active a{border:none;color:var(--tutor-primary-color)}}.tutor-updating-message i{display:none}.tutor-profile-photo-upload-wrap{width:200px;height:auto;margin-bottom:70px;position:relative}.tutor-profile-photo-upload-wrap img{width:100%;height:auto;display:block}a.tutor-profile-photo-upload-btn,button.tutor-profile-photo-upload-btn{position:absolute;top:100%;background-color:var(--tutor-primary-color);color:#fff;display:block;width:100%;text-align:CENTER;padding:9px 0}a.tutor-profile-photo-upload-btn:hover,button.tutor-profile-photo-upload-btn:hover{background-color:var(--tutor-primary-hover-color);color:#fff}.tutor-profile-photo-delete-btn{position:absolute;color:#ff000c;right:10px;top:10px}.single-instructor-wrap{border:1px solid #e8eff1;margin-bottom:30px;border-radius:4px}.single-instructor-wrap .single-instructor-top{padding:20px;border-bottom:1px solid #e8eff1;display:-webkit-box;display:-ms-flexbox;display:flex}@media (max-width: 767px){.single-instructor-wrap .single-instructor-top{-ms-flex-wrap:wrap;flex-wrap:wrap}}.single-instructor-wrap .single-instructor-top h3,.single-instructor-wrap .single-instructor-top h4{margin:0;padding:0}.single-instructor-wrap .tutor-instructor-left{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding-right:30px}@media (max-width: 767px){.single-instructor-wrap .tutor-instructor-left{width:100%;margin-bottom:15px}}.single-instructor-wrap .instructor-avatar{float:left}.single-instructor-wrap .instructor-avatar img{max-width:50px;height:auto;border-radius:50%}.single-instructor-wrap .instructor-name{float:left;padding-left:20px;max-width:180px}.single-instructor-wrap .instructor-name h3{font-size:16px;color:var(--tutor-text-color);font-weight:600}.single-instructor-wrap .instructor-name h3 a{font-weight:500;color:var(--tutor-text-color)}.single-instructor-wrap .instructor-name h4{font-weight:500;color:var(--tutor-light-color)}.single-instructor-wrap .single-instructor-bottom{padding:15px 20px;text-align:right;overflow:hidden}@media (max-width: 767px){.single-instructor-wrap .single-instructor-bottom{text-align:left}}.single-instructor-wrap .single-instructor-bottom p{margin:0}.single-instructor-wrap .single-instructor-bottom .ratings{float:left}.single-instructor-wrap .single-instructor-bottom .ratings i{margin-right:4px}.single-instructor-wrap .single-instructor-bottom .courses,.single-instructor-wrap .single-instructor-bottom .students{display:inline-block;margin-left:20px}.single-instructor-wrap .single-instructor-bottom .courses i,.single-instructor-wrap .single-instructor-bottom .students i{font-size:18px;display:inline-block;margin-right:2px;vertical-align:middle}.single-instructor-wrap .single-instructor-bottom .ratings .rating-total-meta{color:#bac0cf}.single-instructor-wrap .single-instructor-bottom .ratings .rating-generated{color:#f8c51c}.tutor-dashboard-pagination-results-stats{margin:10px 0 30px}.statement-address{margin:10px 0;color:#555}.statement-order-completed{background:var(--tutor-success-button-color);color:#fff;padding:2px 5px;border:none}.tutor-login-wrap{max-width:520px;margin:0 auto;padding:40px 55px;-webkit-box-shadow:0 0 15px rgba(0,0,0,0.1);box-shadow:0 0 15px rgba(0,0,0,0.1);border-radius:5px}.tutor-login-wrap form{margin:0}.tutor-login-wrap .tutor-login-title{margin-bottom:25px;padding:0 40px;text-align:center}.tutor-login-form-wrap{max-width:450px;margin:auto}.tutor-login-form-wrap p{margin-bottom:0}.tutor-login-form-wrap label{display:block !important;margin-bottom:4px}.tutor-login-form-wrap .tutor-alert{margin-bottom:20px}.tutor-login-form-wrap input[type="password"],.tutor-login-form-wrap input[type="text"]{width:100%;display:block;border:1px solid #e8eff1;-webkit-box-shadow:none;box-shadow:none;margin-bottom:20px;border-radius:4px;background:#eceef4;line-height:48px;padding:0;text-indent:15px}.tutor-login-form-wrap input[type="password"]:focus,.tutor-login-form-wrap input[type="text"]:focus{background:#ffffff;border-color:var(--tutor-primary-color)}.tutor-login-form-wrap input::-webkit-input-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-form-wrap input::-moz-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-form-wrap input:-ms-input-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-form-wrap input:-moz-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-rememeber-wrap{overflow:hidden;text-align:right;margin-bottom:30px}.tutor-login-rememeber-wrap p{display:inline-block;float:left}.tutor-login-rememeber-wrap p,.tutor-login-rememeber-wrap label{margin:0}.tutor-form-register-wrap a,.tutor-login-rememeber-wrap a,.tutor-login-rememeber-wrap label{color:#606c8f;vertical-align:middle;opacity:0.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";-webkit-transition:300ms;transition:300ms}.tutor-form-register-wrap a:hover,.tutor-login-rememeber-wrap a:hover,.tutor-login-rememeber-wrap label:hover{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-form-wrap input[type="submit"]{color:#fff;background-color:var(--tutor-primary-button-color);border-color:var(--tutor-primary-button-color);padding:15px 30px;border-radius:4px;text-transform:uppercase;line-height:1;display:block;width:100%;-webkit-transition:300ms;transition:300ms}.tutor-login-form-wrap input[type="checkbox"]{margin-right:4px}.tutor-form-register-wrap{text-align:center;margin-top:15px}.tutor-course-login-wrap h4{font-size:42px;line-height:1.2;margin-bottom:20px;color:var(--tutor-text-color)}.tutor-cart-box-login-form{display:-webkit-box;display:-ms-flexbox;display:flex;position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.6);z-index:99;top:0;left:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.login-overlay-close{position:absolute;background:transparent;width:100%;height:100%;z-index:-1}.course-login-title{margin-bottom:50px}.tutor-cart-box-login-form .tutor-cart-box-login-form-inner{background:#fff;padding:50px 40px;position:relative;width:400px;font-size:16px;font-weight:400;max-height:90%;overflow:auto}.tutor-cart-box-login-form-inner button.tutor-popup-form-close{position:absolute;padding:0;margin:0;border:none;background-color:transparent;top:14px;right:20px;opacity:0.4;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";cursor:pointer;-webkit-transition:300ms;transition:300ms;color:var(--tutor-text-color)}.tutor-cart-box-login-form-inner button.tutor-popup-form-close:hover{color:red}.tutor-option-field-row label,.tutor-form-group label{display:block;margin-bottom:10px}.tutor-option-field textarea,.tutor-option-field select,.tutor-option-field input[type="text"],.tutor-option-field input[type="number"],.tutor-option-field input[type="pas.tutor-dashboard-content-innersword"],.tutor-form-group textarea,.tutor-form-group select,.tutor-form-group input[type="text"],.tutor-form-group input[type="number"],.tutor-form-group input[type="password"]{width:100%;display:block;border:1px solid #dcdfe5;-webkit-box-shadow:none;box-shadow:none;margin-bottom:20px;border-radius:4px;background:#ffffff;line-height:48px;padding:0;text-indent:15px;-webkit-transition:300ms;transition:300ms;font-size:16px}.tutor-form-group{position:relative}.tutor-form-group span.tutor-input-prepand{position:absolute;height:calc(100% - 2px);font-size:21px;line-height:50px;padding:0 12px;background:transparent;border-right:1px solid #dcdfe5;top:1px}.tutor-form-group span.tutor-input-prepand+input{padding-left:35px}.tutor-course-builder-form-elem{margin-bottom:20px}.tutor-option-field .select2-container,.tutor-form-group .select2-container{margin-bottom:20px;width:100% !important}.tutor-option-field .select2-container ul.select2-selection__rendered,.tutor-form-group .select2-container ul.select2-selection__rendered{padding:4px 9px;display:block}.tutor-option-field .select2-container li.select2-selection__choice,.tutor-form-group .select2-container li.select2-selection__choice{background:#ebeef0;color:#606c8f;line-height:29px;border-radius:3px;padding:0 9px;margin:5px;border:none;font-weight:600}.tutor-option-field .select2-container .select2-search__field,.tutor-form-group .select2-container .select2-search__field{padding:8px 3px 8px 6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0}.tutor-option-field .select2-container .select2-search__field::-webkit-input-placeholder,.tutor-form-group .select2-container .select2-search__field::-webkit-input-placeholder{color:#abafb6}.tutor-option-field .select2-container .select2-search__field::-moz-placeholder,.tutor-form-group .select2-container .select2-search__field::-moz-placeholder{color:#abafb6}.tutor-option-field .select2-container .select2-search__field:-ms-input-placeholder,.tutor-form-group .select2-container .select2-search__field:-ms-input-placeholder{color:#abafb6}.tutor-option-field .select2-container .select2-search__field:-moz-placeholder,.tutor-form-group .select2-container .select2-search__field:-moz-placeholder{color:#abafb6}.tutor-option-field .select2-container .select2-selection--single,.tutor-option-field .select2-container .select2-selection--multiple,.tutor-form-group .select2-container .select2-selection--single,.tutor-form-group .select2-container .select2-selection--multiple{border-color:#dcdfe5}.tutor-option-field .select2-container.select2-container--focus .select2-selection--single,.tutor-option-field .select2-container.select2-container--focus .select2-selection--multiple,.tutor-form-group .select2-container.select2-container--focus .select2-selection--single,.tutor-form-group .select2-container.select2-container--focus .select2-selection--multiple{border-color:var(--tutor-primary-color)}.tutor-option-field textarea,.tutor-form-group textarea{line-height:26px;text-indent:0;padding:15px;height:180px}.tutor-option-field textarea:focus,.tutor-form-group textarea:focus,.tutor-option-field input:focus,.tutor-form-group input:focus{outline:none}.tutor-dashboard-course-builder-wrap .tutor-option-field textarea,.tutor-dashboard-course-builder-wrap .tutor-form-group textarea{height:100px}.tutor-option-field textarea:focus,.tutor-option-field input:not([type="submit"]):focus,.tutor-form-group textarea:focus,.tutor-form-group input:not([type="submit"]):focus{background:#ffffff;border-color:var(--tutor-primary-color)}.tutor-option-field textarea::-webkit-input-placeholder,.tutor-option-field input::-webkit-input-placeholder,.tutor-form-group textarea::-webkit-input-placeholder,.tutor-form-group input::-webkit-input-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-option-field textarea::-moz-placeholder,.tutor-option-field input::-moz-placeholder,.tutor-form-group textarea::-moz-placeholder,.tutor-form-group input::-moz-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-option-field textarea:-ms-input-placeholder,.tutor-option-field input:-ms-input-placeholder,.tutor-form-group textarea:-ms-input-placeholder,.tutor-form-group input:-ms-input-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-option-field textarea:-moz-placeholder,.tutor-option-field input:-moz-placeholder,.tutor-form-group textarea:-moz-placeholder,.tutor-form-group input:-moz-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-option-field select,.tutor-form-group select{padding:2px 5px;height:50px}.tutor-form-group.tutor-reg-form-btn-wrap{text-align:right}.tutor-option-field p.desc{margin:-10px 0 20px;font-size:13px;font-style:italic;opacity:0.7}.tutor-option-field:last-child .tutor-option-field p.desc{margin-bottom:0}.tutor-option-gorup-fields-wrap .tutor-lesson-video-runtime{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-option-gorup-fields-wrap .tutor-lesson-video-runtime .tutor-option-group-field{padding-right:30px}.select2-container--default .select2-selection--single .select2-selection__rendered{line-height:46px}.select2-container--default .select2-selection--single .select2-selection__arrow{height:46px}.select2-container .select2-selection--single .select2-selection__rendered{padding-left:13px;font-size:16px}.select2-container .select2-selection--single{height:48px}.select2-container .select2-selection--multiple{min-height:50px}.tutor-price-preview-box{border:1px solid #dcdfe5;padding:20px;margin-bottom:30px;border-radius:4px;overflow:hidden}.tutor-price-box-thumbnail{margin:-20px -20px 20px}.tutor-price-box-thumbnail .tutor-single-lesson-segment{margin-bottom:0}.tutor-price-box-description h6{font-size:23px;margin:15px 0 5px}.tutor-price-box-description ul{list-style:none}.tutor-course-purchase-box a{display:block;text-align:center;margin-top:6px}.tutor-price-preview-box .price{font-size:35px;font-weight:500;margin:0 0 20px;overflow:hidden;line-height:1}.tutor-price-preview-box .price .subscription-details{font-size:var(--tutor-text-size);display:block;margin-top:12px;line-height:1.2em}.tutor-price-preview-box .price>.price{margin-bottom:0}.tutor-price-preview-box .price del+ins{margin-left:0;float:left}.tutor-course-reviews-wrap{border:1px solid #e8eff1;border-radius:4px}.tutor-course-avg-rating-total{color:var(--tutor-light-color)}.tutor-course-avg-rating-total span{color:var(--tutor-text-color)}.tutor-review-individual-item{border-top:1px solid #e8eff1;padding:30px;overflow:hidden}.tutor-review-individual-item p{margin:0;padding:0}.course-avg-rating-wrap{padding:20px 20px 20px 40px}.tutor-review-individual-item .review-left{width:200px;float:left;overflow:hidden}.tutor-review-individual-item .review-content{padding-left:200px}@media (max-width: 991px){.tutor-review-individual-item .review-left{width:100%;float:none;margin-bottom:25px}.tutor-review-individual-item .review-content{padding-left:0}}@media (max-width: 991px){.tutor-single-course-sidebar{margin-top:30px}}.tutor-review-individual-item .review-avatar{width:50px;float:left}.tutor-review-individual-item .review-avatar img{border-radius:50%;margin:0;border:none;max-width:100%;height:auto}.tutor-review-individual-item .tutor-review-user-info{float:left;padding-left:20px}.tutor-review-individual-item .tutor-review-user-info p{margin-bottom:0}.tutor-review-individual-item .tutor-review-user-info a{color:var(--tutor-text-color)}.review-avatar .tutor-text-avatar,.tutor-dashboard-avater .tutor-text-avatar,.instructor-avatar .tutor-text-avatar{border-radius:50%;width:50px;height:50px;text-align:center;display:block;line-height:50px;color:#ffffff;text-shadow:0 1px 2px rgba(0,0,0,0.4)}.course-avg-rating-wrap .course-avg-rating{font-size:76px;line-height:1;font-weight:400}.course-avg-rating-wrap p{margin:0}.tutor-review-individual-item .tutor-review-name{font-size:16px;font-weight:600}.tutor-review-individual-item .review-meta{color:var(--tutor-light-color)}.individual-review-rating-wrap{color:#f8c51c}.individual-review-rating-wrap i,.course-avg-rating-html i{margin-right:4px;color:#f8c51c}.course-rating-meter{display:-webkit-box;display:-ms-flexbox;display:flex}.course-rating-meter i.tutor-icon-star-full{color:#f8c51c}.rating-meter-bar-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1}.rating-meter-col{margin:0 3px}.course-rating-meter{margin-bottom:8px}.rating-meter-bar{height:5px;width:100%;background:#e8eff1;margin-top:11px;border-radius:15px;overflow:hidden}.rating-meter-fill-bar{background:#f8c51c;height:5px}.rating-meter-col.rating-text-col{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.tutor-pagination,.tutor-pagination-wrap{text-align:center;margin:20px 0}.tutor-pagination a,.tutor-pagination span,.tutor-pagination-wrap a,.tutor-pagination-wrap span{padding:3px;display:inline-block}.tutor-pagination-wrap a:hover,.tutor-pagination a:hover{color:var(--tutor-primary-color)}.tutor-course-tags{margin:-5px}.tutor-course-tags a{padding:6px 15px;background:#e8eff1;display:inline-block;margin:5px;color:var(--tutor-text-color);border-radius:2px;-webkit-transition:300ms;transition:300ms}.tutor-course-tags a:hover{color:#000}.certificate-download-btn{margin-top:20px;display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;text-align:center;text-transform:uppercase !important;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}#tutor-single-entry-content .tutor-course-prerequisites{padding:60px}.prerequisites-course-lists{padding:0;list-style:none;margin:0}.prerequisites-course-lists li a{padding:13px 15px;border:1px solid #dcdfe5;margin-bottom:20px;border-radius:4px;font-weight:500;color:var(--tutor-primary-color);font-size:16px}.prerequisites-course-lists li:first-child{padding:13px 40px 13px 60px;border:1px solid #f7e5b9;margin-bottom:20px;border-radius:4px;font-weight:500;background:#fffff5;color:#b39f70;position:relative}.prerequisites-course-lists li:first-child>span{position:absolute;left:20px;top:13px}.prerequisites-course-lists li .prerequisites-course-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.prerequisites-course-feature-image img{width:70px;border-radius:2px;height:auto;margin:0 !important;-webkit-box-shadow:0 0 1px rgba(0,0,0,0.08);box-shadow:0 0 1px rgba(0,0,0,0.08)}.prerequisites-course-lists li .prerequisites-course-title{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-left:15px;-webkit-transition:300ms;transition:300ms}.prerequisites-course-lists li a:hover .prerequisites-course-title{color:var(--tutor-primary-color)}.prerequisites-course-checkmark{line-height:24px;height:24px;text-transform:uppercase;font-size:12px;font-weight:700;min-width:107px}.prerequisites-course-checkmark i{height:24px;width:24px;background:#dbdddd;color:#dbdddd;display:inline-block;text-align:center;border-radius:2px;margin-right:3px}.prerequisites-course-checkmark.is-complete i{background:var(--tutor-success-button-color);color:#fff}.tutor-single-course-meta ul li.tutor-social-share{float:right;margin-right:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media (max-width: 575px){.tutor-single-course-meta ul li.tutor-social-share{display:none}}.tutor-single-course-meta ul li.tutor-social-share button{margin:0;border:none;background:transparent;color:var(--tutor-light-color);-webkit-transition:300ms;transition:300ms;padding:0 4px;cursor:pointer}.tutor-single-course-meta ul li.tutor-social-share button:hover{color:var(--tutor-primary-color)}.rtl .tutor-single-course-meta ul li.tutor-social-share{float:left}.rtl .tutor-single-course-meta ul li,.rtl .tutor-loop-author>div{float:right}.rtl .tutor-single-course-meta ul li{margin-right:0;margin-left:40px}.rtl .tutor-wrap nav.course-enrolled-nav ul li a{margin-right:0;margin-left:20px}.rtl .tutor-progress-bar .tutor-progress-filled:after{left:auto;right:var(--tutor-progress-left);-webkit-transform:translateY(-50%) translateX(50%);transform:translateY(-50%) translateX(50%)}.rtl .tutor-progress-percent{padding-left:0;padding-right:20px}.rtl .tutor-course-lesson h5 i{margin-right:0;margin-left:10px}.rtl .tutor-course-lesson h5 .lesson-preview-icon i{margin-right:10px;margin-left:0}.rtl .tutor-course-lesson h5 .tutor-lesson-duration{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:left}.rtl .tutor-custom-list-style li{padding-right:25px;padding-left:0px}.rtl .tutor-custom-list-style li:before{left:auto;right:0}.rtl .single-instructor-wrap .instructor-name,.rtl .single-instructor-wrap .instructor-avatar{float:right}.rtl .single-instructor-wrap .instructor-name{padding-left:0;padding-right:20px}.rtl .single-instructor-wrap .instructor-bio{padding-left:0;padding-right:260px}.rtl .tutor-single-page-top-bar .tutor-topbar-back-to-curse-wrap{margin-left:30px;margin-right:0}.rtl .tutor-single-lesson-button-group .tutor-single-lesson-button a,.rtl .tutor-topics-in-single-lesson .tutor-single-lesson-items a{padding:14px 17px 14px 100px}.rtl .tutor-lessons-under-topic .tutor-lesson-right-icons{right:auto;left:15px}.rtl .tutor-lessons-under-topic .tutor-lesson-right-icons .tutor-lesson-complete{margin-left:0;margin-right:8px}.rtl .tutor-single-lesson-button-group .tutor-single-lesson-button a>i:first-child,.rtl .tutor-topics-in-single-lesson .tutor-single-lesson-items a>i:first-child{margin-right:0;margin-left:10px}.rtl .tutor-topbar-home-btn{margin-left:0;margin-right:20px}@media screen and (max-width: 546px){.rtl .tutor-topbar-home-btn{margin-right:10px}}.rtl .tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button{margin-left:15px;margin-right:0}.tutor-frontend-modal{position:fixed;width:100%;height:100%;left:0;top:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:999999}.tutor-frontend-modal .tutor-frontend-modal-overlay{background:rgba(0,0,0,0.7);height:100%;width:100%;position:fixed;left:0;top:0;z-index:-1;cursor:url("data:image/svg+xml,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.852 12.004L.23 22.7a.764.764 0 0 0 0 1.076.75.75 0 0 0 1.068 0L12 13l10.703 10.778a.75.75 0 0 0 1.069 0 .764.764 0 0 0 0-1.076L13.148 12.004l10.63-10.706a.764.764 0 0 0 0-1.075.752.752 0 0 0-1.067 0L12 11.008 1.289.223a.752.752 0 0 0-1.068 0 .764.764 0 0 0 0 1.076l10.631 10.705z' fill='%23F0576A' fill-rule='evenodd'/%3E%3C/svg%3E"),auto}.tutor-frontend-modal .tutor-frontend-modal-content{position:relative;background:#fff;padding:60px;width:90%;max-width:750px;max-height:90%;overflow-y:auto}@media (max-width: 768px){.tutor-frontend-modal .tutor-frontend-modal-content{padding:40px}}@media (max-width: 540px){.tutor-frontend-modal .tutor-frontend-modal-content{padding:20px}}button.tm-close.tutor-icon-line-cross{position:absolute;right:23px;top:23px;background:transparent;padding:0;font-size:24px;border:none;color:var(--tutor-light-color)}button.tm-close.tutor-icon-line-cross:hover{color:red}.label-order-status{padding:3px 5px;border-radius:3px}.label-status-completed{background-color:#4bd863;color:#ffffff}.label-status-cancelled{background-color:#fd6a03;color:#ffffff}.label-status-on-hold{background-color:#db5382;color:#ffffff}.tutor-lesson-content-area h2{margin-bottom:25px;margin-top:20px;font-weight:500}.assignment-result-wrap{text-align:center;padding:10px 0}.submitted-assignment-grade-pass{color:var(--tutor-success-button-color)}.submitted-assignment-grade-failed{color:red}.received-marks{color:var(--tutor-primary-color)}.tutor-dashboard-course-builder-wrap .tutor-form-row{margin-top:20px;margin-bottom:20px}.video_source_wrap_html5{width:100px;text-align:center}.video-poster-img img{max-width:200px;height:auto}.tutor-assignment-information{font-size:16px}.tutor-assignment-information ul{padding:0;margin:0 0 22px;list-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-assignment-information ul li strong{font-weight:700}.tutor-assignment-attachment-upload-wrap .tutor-form-group{display:inline-block}.tutor-assignment-attachment-upload-wrap .tutor-form-group label+input{display:none}.tutor-assignment-attachment-upload-wrap .tutor-form-group label{padding:15px 17px;border:1px solid #dcdfe5;overflow:hidden;margin-right:15px;border-radius:4px;cursor:pointer}.tutor-assignment-attachment-upload-wrap .tutor-form-group label i{font-size:30px;line-height:30px;float:left;margin-right:12px}.tutor-assignment-attachment-upload-wrap .tutor-form-group label span{line-height:30px}.tutor-assignment-attachment-upload-wrap{margin-bottom:40px}#tutor-course-topics a{text-decoration:none}#tutor-course-topics .tutor-topics-wrap{border-bottom:1px solid #f6f8fa;padding-bottom:0;margin:0}.tutor-untopics-lessons .course-content-item,.course-contents .course-content-item{padding:10px 12px 10px 25px;border-bottom:1px solid #d9d9d9;background-color:#ebeef0}.tutor-untopics-lessons .course-content-item .tutor-lesson-top,.course-contents .course-content-item .tutor-lesson-top{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-untopics-lessons .course-content-item .tutor-lesson-top a:last-child,.course-contents .course-content-item .tutor-lesson-top a:last-child{margin-left:auto}.tutor-untopics-lessons .course-content-item .tutor-lesson-top a.open-tutor-lesson-modal,.course-contents .course-content-item .tutor-lesson-top a.open-tutor-lesson-modal{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-untopics-lessons .course-content-item .tutor-lesson-top a,.course-contents .course-content-item .tutor-lesson-top a{color:#393c40;font-weight:400;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-untopics-lessons .course-content-item .tutor-lesson-top i,.course-contents .course-content-item .tutor-lesson-top i{padding-right:7px;color:#393c40}.tutor-untopics-lessons .course-content-item .tutor-lesson-top .tutor-updating-message i,.course-contents .course-content-item .tutor-lesson-top .tutor-updating-message i{display:none}.tutor-untopics-lessons .course-content-item .tutor-lesson-top i.tutor-icon-garbage:hover,.course-contents .course-content-item .tutor-lesson-top i.tutor-icon-garbage:hover{color:red}.tutor-lessons.ui-sortable{min-height:20px}#tutor-course-topics .drop-lessons p{margin:0}#tutor-course-topics .course-content-item:hover{background-color:#ebeef0}#tutor-course-topics .tutor-lessons{padding-left:0}#tutor-course-topics .tutor-lesson-top,#tutor-course-topics .tutor-lesson-top i{font-size:15px}#tutor-course-topics .tutor-lesson-top .open-tutor-quiz-modal i{display:inline-block;vertical-align:middle;margin-right:5px}#tutor-course-topics .tutor-lesson-top{display:-webkit-box;display:-ms-flexbox;display:flex}#tutor-course-topics .tutor-lesson-top .open-tutor-lesson-modal,.tutor-quiz .open-tutor-quiz-modal,.course-content-item .open-tutor-assignment-modal{-webkit-box-flex:1;-ms-flex:1;flex:1}#tutor-course-topics .tutor-lesson-top i.tutor-icon-move{margin-right:10px;cursor:ns-resize}.rtl #tutor-course-topics .tutor-lesson-top i.tutor-icon-move{margin-right:0;margin-left:10px}#tutor-course-topics .tutor-lesson-top i.tutor-icon-pencil{margin:0 10px}#tutor-course-topics .tutor-lesson-top a{color:#393c40}#tutor-course-topics .tutor-lesson-top a.tutor-updating-message i{display:none}.course-move-handle{cursor:row-resize}.new-topic-btn-wrap{padding:20px}p.course-empty-content{padding-left:20px;padding-right:20px}.tutor_btn_lg{line-height:45px;background-color:var(--tutor-primary-color);color:#ffffff;padding:0 20px;display:inline-block;border-radius:2px;font-weight:300;border:none;-webkit-box-shadow:none;box-shadow:none;cursor:pointer}.tutor_btn_lg:focus{-webkit-box-shadow:none;box-shadow:none;border:none;outline:none}.tutor_btn_lg:focus,.tutor_btn_lg:hover{background-color:var(--tutor-primary-color);color:#ffffff}.ui-sortable-placeholder{visibility:visible;background-color:#dddd}.tutor-untopics-lessons{border:1px solid #eee;padding:20px;margin:0 -1px -1px;background-color:#fbfbfb}.tutor-untopics-lessons h3{font-weight:300}.tutor-untopics-lessons .tutor-lessons{padding-left:0 !important}.create-new-lesson-wrap{text-align:center}.tutor-metabox-add-topics .tutor-option-field-row:last-child,.tutor-topics-edit-form .tutor-option-field-row:last-child{border-bottom:none}.tutor-metabox-add-topics .tutor-option-field-row textarea{height:120px}.topic-edit-icon{cursor:pointer}.tutor-topic-title{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:16px;font-weight:300;margin:0;line-height:45px;padding-left:15px}.rtl .tutor-topic-title{padding-left:0;padding-right:15px}.tutor-topic-title a{color:#393c40}.tutor-topic-title .topic-inner-title{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;cursor:pointer;max-width:calc(100% - 137px);font-weight:400;font-size:16px}.tutor-topic-title span{padding:0 5px}.tutor-topic-title span.expand-collapse-wrap{border-left:1px solid #e7e7e7}.tutor-topic-title span.expand-collapse-wrap a{display:block;padding:0 13px}.topic-delete-btn{float:right}.text-muted{color:#cccccc}.topic-delete-btn a{padding:0 10px}.topic-delete-btn a:hover{color:#ff0000}.topic-delete-btn .dashicons{width:12px;height:12px;font-size:12px}#tutor-course-topics{position:relative}#tutor-course-topics .inside{padding:0;margin:0}#tutor-course-topics a:focus{-webkit-box-shadow:none;box-shadow:none}#tutor-course-topics .toggle-indicator:before{margin-top:20px}.tutor-topics-wrap:nth-child(2n){background:#f6f8fa}#tutor-course-content-wrap{border:1px solid #ddd;margin-top:20px}#tutor-course-content-wrap .tutor-topics-edit-form,#tutor-course-content-wrap .tutor-metabox-add-topics{border-left:none;border-right:none;margin-top:0}#tutor-course-content-wrap .tutor-topics-wrap .tutor-topics-body{background:#ebeef0;padding:0px}.tutor-course-builder-button{line-height:35px;color:#393c40;display:inline-block;padding:0 20px;border-radius:4px;margin-right:10px;border:1px solid #d3d4d5;background-color:#f2f2f2;cursor:pointer;vertical-align:top;-webkit-transition:300ms;transition:300ms;font-weight:400}.tutor-course-builder-button i{line-height:35px;display:inline-block;vertical-align:top;margin-right:6px}.tutor-course-builder-button.tutor-updating-message i{display:none}.tutor-course-builder-button.tutor-btn-lg{line-height:40px}.tutor-add-quiz-button-wrap{padding:15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-add-quiz-button-wrap>*+*{margin-left:15px}.tutor-course-builder-button.active{color:#fff;background:var(--tutor-primary-color);border-color:var(--tutor-primary-color)}.tutor-course-builder-button:hover{-webkit-filter:brightness(0.9);filter:brightness(0.9)}.tutor-btn-lg i{color:var(--tutor-primary-color);vertical-align:top;margin-right:5px;font-size:16px;display:inline-block;line-height:40px}.tutor-course-builder-button.active i,.tutor-course-builder-button:hover i{color:#fff}.tutor-course-builder-button.tutor-success{background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color);color:#fff}.tutor-updating-message:before{display:inline-block;font-family:"tutor";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top;content:"\e91d";-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;margin-right:6px}.rtl .tutor-updating-message:before{margin-right:0;margin-left:6px}.lesson-modal-close-wrap a{background:#ffffff;width:50px;height:59px;display:inline-block;text-align:center;line-height:57px;color:#3a3d42;font-size:15px;position:absolute;right:0;top:0}.lesson-modal-close-wrap a:hover{color:red}.lesson-modal-form-wrap .lesson-modal-field-row{padding:10px 0}.lesson-modal-field.tutor-lesson-modal-title-wrap{width:95%}.lesson-modal-field-row input[type="text"]{background-color:#fff;border:1px solid #ddd;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;color:#333;display:inline-block;vertical-align:middle;padding:7px 12px;margin:0 10px 0 0;min-width:400px;min-height:35px}.tutor-lesson-modal-title-wrap input{width:100%}.lesson-modal-form-wrap .tutor-option-field-row{padding:10px 0}.lesson-modal-form-wrap .tutor-option-field-row:last-child{border-bottom:none}.tutor-lesson-modal-wrap .modal-footer{padding:10px 20px;background-color:#fff;width:100%;position:sticky;bottom:0;position:-webkit-sticky}.tutor-option-field .tutor-lesson-edit-feature-img{width:100px;position:relative}.tutor-option-field .tutor-lesson-edit-feature-img img{width:100%;height:auto}a.tutor-lesson-thumbnail-delete-btn{position:absolute;top:0;right:0;color:red;background:#fff;padding:3px 5px;border-radius:5px}.tutor-get-pro-text{color:#e02424}.updating-icon:before{font-family:"tutor";content:"\e91d";-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite;display:inline-block}.tutor-notice-warning{background-color:#fcf8e3;border-color:#faebcc;padding:20px;margin-bottom:10px}.tutor-modal-wrap{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";display:none;position:fixed;top:0;left:0;right:0;bottom:0;z-index:-1;background-color:rgba(0,0,0,0.5)}.tutor-modal-wrap.show{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";z-index:99999;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.tutor-modal-wrap.loading .tutor-modal-content:before{position:absolute;top:0;left:0;right:0;bottom:0;display:block;content:"";z-index:9;background:url("../images/spinner.gif") no-repeat center center}.tutor-modal-wrap .tutor-modal-content{max-height:90%;overflow-y:auto;overflow-x:hidden;background-color:#fff;max-width:730px;margin:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);position:relative;-webkit-transition:all 200ms ease-out;transition:all 200ms ease-out;width:90%}.admin-bar .tutor-modal-wrap .tutor-modal-content{max-height:calc(90% - 32px);margin-top:32px}.tutor-modal-wrap .modal-footer{padding:20px 0;border-top:1px solid #eee}.tutor-modal-wrap .modal-footer.has-padding{padding:20px 15px}.tutor-modal-wrap .modal-container{padding:20px 20px 0}.tutor-modal-wrap.tutor-instructors-modal-wrap .modal-container p{margin-top:0}.tutor-modal-wrap .modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;padding:15px 20px;border-bottom:1px solid #eeeff1}.tutor-modal-wrap .modal-title{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-modal-wrap .modal-header h1{padding:0;margin:0;font-size:23px;line-height:30px}.modal-container .modal-classic-btn-wrap{position:absolute;right:45px;top:14px}.modal-container .modal-classic-btn-wrap a{color:var(--tutor-primary-color)}.tutor-modal-wrap .modal-header h1::before,.tutor-modal-wrap .modal-header h1::after{display:none}.tutor-modal-wrap .search-bar{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-top:20px;padding-left:20px;padding-right:20px}.tutor-modal-wrap .search-bar input[type="text"]{width:100%;border:1px solid #eee;-webkit-box-shadow:none;box-shadow:none;padding:10px}.tutor-modal-wrap .modal-close-wrap a.modal-close-btn{width:50px;height:50px;background:#000;display:inline-block;text-align:center;line-height:47px;color:#fff;font-size:25px;position:absolute;right:0}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-title{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-close-wrap a.modal-close-btn{background:#ffffff;width:20px;height:20px;display:inline-block;text-align:center;line-height:28px;color:#3a3d42;font-size:22px;position:relative}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-header{padding:15px 20px;border-bottom:1px solid #eeeff1}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-header h1{padding:0}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-container{background-color:#f1f1f1;padding:0}#tutor-quiz-modal-tab-items-wrap{background-color:#fff;font-size:0;overflow:hidden}#tutor-quiz-builder-modal-tabs-container{padding:20px}#tutor-quiz-modal-tab-items-wrap .tutor-quiz-modal-tab-item{padding:15px 25px;display:inline-block;color:#393c40;border-left:1px solid #f1f1f1;overflow:hidden;line-height:17px;vertical-align:middle;font-size:14px !important}#tutor-quiz-modal-tab-items-wrap .tutor-quiz-modal-tab-item.active{background-color:#f1f1f1}#tutor-quiz-modal-tab-items-wrap .tutor-quiz-modal-tab-item i{float:left;font-size:17px;line-height:1;margin-right:5px}#tutor-quiz-modal-tab-items-wrap .tutor-quiz-modal-tab-item.active i{color:var(--tutor-primary-color)}.quiz-modal-tab-navigation-btn{padding:10px 20px;border-radius:3px}.quiz-modal-btn-next,.quiz-modal-btn-next:focus,.quiz-modal-btn-first-step,.quiz-modal-btn-first-step:focus,.quiz-modal-question-save-btn,.quiz-modal-question-save-btn:focus,.quiz-modal-settings-save-btn,.quiz-modal-settings-save-btn:focus{background-color:var(--tutor-primary-color);color:#ffffff}.quiz-modal-btn-next:hover,.quiz-modal-btn-first-step:hover,.quiz-modal-question-save-btn:hover,.quiz-modal-settings-save-btn:hover{color:#ffffff}.quiz-modal-btn-cancel,.quiz-modal-btn-back{color:#4b5981;border:1px solid #d4dadb}.tutor-quiz-builder-form-row .quiz-form-warning{color:#e88e06}.tutor-assignment-builder-modal-wrap .modal-container{padding:10px}.assignment-modal-form-wrap .tutor-option-field.tutor-assignment-modal-title-wrap{margin:0}.tutor-quiz-question-answers-form{background-color:#fff;padding:20px;-webkit-transition:all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);transition:all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);border:1px solid #dedede;border-radius:3px;margin-bottom:20px}.advanced-options-tab-item{float:right}.tutor-course-builder-wrap{border:1px dashed #dcdfe5}.tutor-quiz-builder-modal-tabs-notice{background:#d8d8d8;line-height:20px;padding:10px 30px;color:#a4a4a4}.tutor-quiz-builder-modal-tabs-notice a{color:#a4a4a4;text-decoration:underline}.tutor-quiz-builder-group{margin-bottom:25px}.tutor-quiz-builder-group>p.warning{color:red;font-size:12px}.tutor-quiz-builder-group>p.help{color:#a4a4a4;font-size:12px;margin-top:7px}.tutor-quiz-builder-group>h4{color:#393c40;font-weight:600;margin:0 0 15px}.tutor-quiz-builder-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-left:-10px;margin-right:-10px}.tutor-quiz-builder-col{padding-left:10px;padding-right:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-quiz-builder-col.auto-width{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.tutor-quiz-builder-group textarea,.tutor-quiz-builder-group input[type="text"],.tutor-quiz-builder-group input[type="email"],.tutor-quiz-builder-group input[type="number"],.tutor-quiz-builder-group input[type="password"]{line-height:40px;padding:5px 0;text-indent:15px;background:#fff;display:inline-block;border:1px solid #dedede;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;height:40px;margin:0;width:100%;color:#393c40}.tutor-quiz-builder-group textarea:focus,.tutor-quiz-builder-group input[type="text"]:focus,.tutor-quiz-builder-group input[type="email"]:focus,.tutor-quiz-builder-group input[type="number"]:focus,.tutor-quiz-builder-group input[type="password"]:focus{border-color:var(--tutor-primary-color)}.tutor-quiz-builder-group textarea{height:80px;resize:none;text-indent:0;padding:11px 15px;line-height:22px}.tutor-quiz-builder-group textarea[name="quiz_description"]{height:150px}.tutor-quiz-builder-group select{border:1px solid #ccc;-webkit-box-shadow:none;box-shadow:none;height:42px !important;padding:0 12px !important;margin:0}.tutor-quiz-builder-modal-control-btn-group{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:20px}.question_form_inner{padding:0 20px 20px;margin-top:0}.tutor-quiz-builder-modal-control-btn-group .quiz-builder-btn-group-left{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-quiz-builder-modal-control-btn-group .quiz-modal-tab-navigation-btn{display:inline-block}.tutor-quiz-builder-modal-control-btn-group .quiz-modal-tab-navigation-btn:not(:last-child){margin-right:6px}.modal-container .tutor-quiz-add-question-btn{border:1px solid #c6c9cf;padding:10px 15px;color:#393c40;display:inline-block;border-radius:3px}.modal-container .tutor-quiz-add-question-btn i{color:var(--tutor-primary-color);line-height:16px;margin-right:3px}.quiz-form-field-col{margin-right:20px}.quiz-form-field-col.result-fail{width:100%}.quiz-modal-switch-field{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:30px}.quiz-modal-switch-field label.btn-switch{margin-right:20px;position:relative;vertical-align:top}label.btn-switch input:checked+.btn-slider{background-color:var(--tutor-success-button-color)}.btn-switch+span{line-height:24px;display:inline-block;margin-left:8px;font-weight:700;vertical-align:top}.tutor-select{position:relative}.tutor-select .select-header{border:1px solid #dedede;margin:0;padding:10px;width:100%;-webkit-box-shadow:none;box-shadow:none;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.tutor-select .select-header .lead-option{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-select .select-header .select-dropdown{line-height:22px}.tutor-select .select-header .lead-option .question-type-pro{display:none}.tutor-select .tutor-select-options{border:1px solid #dedede;background-color:#fff;padding:22px 10px 8px;width:calc(100% - 22px);position:absolute;font-size:0;z-index:9;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-shadow:0px 2px 10px rgba(0,0,0,0.08);box-shadow:0px 2px 10px rgba(0,0,0,0.08);top:55px;border-radius:3px}.tutor-select .tutor-select-options .tutor-select-option{width:calc(33.3333% - 22px);display:inline-block;padding:9px;cursor:pointer;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 11px 15px;border:1px solid #e2e2e2;border-radius:3px;font-size:13px}.tutor-select .tutor-select-options .tutor-select-option:hover{border-color:var(--tutor-primary-color)}.question-type-pro{color:#fff;font-size:9px;right:11px;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}i.tutor-icon-block{padding:0;color:#fff;border-radius:3px;margin-right:2px;display:inline-block;width:22px;height:22px;text-align:center;line-height:22px}i.tutor-icon-block.tutor-icon-short-ans{background-color:#f37512}i.tutor-icon-block.tutor-icon-image-ans{background-color:#a322f9}i.tutor-icon-block.tutor-icon-yes-no{background-color:var(--tutor-primary-color)}i.tutor-icon-block.tutor-icon-multiple-choice{background-color:#9034a9}i.tutor-icon-block.tutor-icon-mark{background-color:#00b890}i.tutor-icon-block.tutor-icon-open-ended{background-color:#fe3129}i.tutor-icon-block.tutor-icon-fill-gaps{background-color:#ffbf00}i.tutor-icon-block.tutor-icon-answer-shorting{background-color:#f80089}i.tutor-icon-block.tutor-icon-assesment{background-color:#274055}i.tutor-icon-block.tutor-icon-matching{background-color:#8a4a1b}i.tutor-icon-block.tutor-icon-image-matching{background-color:#f37512}i.tutor-icon-block.tutor-icon-ordering{background-color:var(--tutor-primary-color)}i.tutor-icon-block.tutor-icon-plus-square-button,i.tutor-icon-block.tutor-icon-plus{background-color:var(--tutor-success-button-color)}.create-lesson-in-topic-btn i.tutor-icon-block.tutor-icon-plus{background-color:var(--tutor-primary-color)}a.back-to-quiz-questions-btn{font-size:16px;font-weight:300;color:#393c40;margin-bottom:10px;display:block}a.back-to-quiz-questions-btn.tutor-updating-message i{display:none}.modal-container .quiz-questions-form{padding:20px}#quiz-builder-tab-advanced-options .tutor-quiz-builder-form-cols-row .quiz-form-field-col:first-child{-webkit-box-flex:0;-ms-flex:0 0 150px;flex:0 0 150px}.question-form-header{margin-bottom:20px}.quiz-question-form-body{margin-bottom:25px}.quiz-builder-question-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:15px}.quiz-builder-question{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;background:#fff;padding:10px;border:1px solid #e2e2e2;border-radius:3px;max-width:calc(100% - 52px)}.quiz-builder-question .question-sorting{margin-right:10px;line-height:22px}.quiz-builder-question .question-sorting i{display:block;line-height:24px}.quiz-builder-question .question-edit-icon{line-height:22px}.quiz-builder-question .question-edit-icon .tutor-quiz-open-question-form.tutor-updating-message i{display:none}.quiz-builder-question .question-title{-webkit-box-flex:1;-ms-flex:1;flex:1;line-height:22px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;margin-right:10px}.quiz-builder-question .question-icon{-webkit-box-flex:0;-ms-flex:0 0 155px;flex:0 0 155px}.quiz-builder-qustion-trash a{display:block;padding:0 0 0 10px;font-size:20px;color:rgba(57,60,64,0.4);line-height:44px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider{border:1px solid #dedede;padding:20px 70px 20px 10px;background-color:#ffffff;position:relative;border-radius:4px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .ui-widget-content{background:var(--tutor-primary-color);border:none;height:4px;border-radius:4px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .ui-widget-header{background:#dedede;border-radius:4px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .ui-widget-content .ui-state-default{background:var(--tutor-primary-color);border:1px solid var(--tutor-primary-color);border-radius:50%;margin-top:-2px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .tutor-field-type-slider-value{font-size:16px;font-weight:600;background:var(--tutor-primary-color);position:absolute;right:5px;top:50%;margin:0;-webkit-transform:translateY(-50%);transform:translateY(-50%);line-height:34px;width:43px;text-align:center;border-radius:4px;color:#fff}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .tutor-field-type-slider-value:before{content:"";position:absolute;border:7px solid transparent;top:50%;border-right-color:var(--tutor-primary-color);right:100%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.tutor-quiz-answer-wrap{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-quiz-answer{background-color:#fff;-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px 15px;border:1px solid #dedede;display:-webkit-box;display:-ms-flexbox;display:flex;line-height:22px;border-radius:3px;margin-bottom:15px}.tutor-quiz-answer .tutor-quiz-answer-edit a{display:block;padding:0px 9px}.tutor-quiz-answer-trash-wrap a.answer-trash-btn{padding:0 10px;display:inline-block;line-height:44px}span.tutor-quiz-answer-title{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-quiz-answer-media .option-media-preview{margin-bottom:20px}.tutor-quiz-answer-media .option-media-preview img{max-width:80px;height:auto}.tutor-question-answer-image{margin-right:10px}.tutor-question-answer-image img{max-height:25px;width:auto}button#quiz-answer-save-btn,button#quiz-answer-edit-btn{background-color:var(--tutor-success-button-color);color:#fff;padding:10px 15px;border:none;cursor:pointer}button#quiz-answer-save-btn:hover,button#quiz-answer-edit-btn:hover{background-color:var(--tutor-success-button-color)}.tutor-media-upload-wrap{border:1px solid #dedede;display:-webkit-box;display:-ms-flexbox;display:flex;width:130px}.tutor-media-upload-wrap img{max-width:100%}.tutor-media-preview{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-media-upload-btn{display:block;padding:10px;font-size:50px;line-height:50px;text-align:center;color:#dedede}.tutor-media-upload-trash-wrap{border-left:1px solid #dedede}.tutor-media-upload-trash{color:#dedede;display:block;line-height:50px;padding:12px}.tutor-quiz-answers-form-footer.tutor-quiz-builder-form-row{margin-top:40px;margin-bottom:10px}.tutor-metabox-add-topics,.tutor-topics-edit-form{background-color:#f7f7f7;border:1px solid #dcdfe5;margin-top:25px;padding:20px}.tutor-course-builder-section{margin-bottom:60px}.tutor-course-builder-section-title h3{font-size:20px;font-weight:700;color:#1d1f37;position:relative;overflow:hidden;z-index:1;margin:0 0 25px;cursor:pointer}.tutor-course-builder-section-title h3::after{content:"";position:absolute;top:50%;left:0;width:100%;height:1px;background:var(--tutor-primary-color);z-index:-1}.tutor-course-builder-section-title h3 span,.tutor-course-builder-section-title h3 i{float:left;background-color:#fff;font-size:20px;line-height:20px}.tutor-course-builder-section-title h3 i{color:var(--tutor-primary-color);font-size:14px}.tutor-course-builder-section-title h3 span{padding:0 15px 0 9px}.tutor-frontend-builder-item-scope{margin-bottom:30px}.tutor-frontend-builder-item-scope:last-child{margin-bottom:0}.tutor-builder-item-heading{font-weight:500;line-height:21px;margin-bottom:10px;display:block}.builder-course-thumbnail-upload-wrap>div{font-size:var(--tutor-text-size);line-height:25px;margin-bottom:20px;font-weight:400}.builder-course-thumbnail-img-src{position:relative}.builder-course-thumbnail-img-src .tutor-course-thumbnail-delete-btn{font-size:10px;position:absolute;top:-4px;left:-4px;color:#e53935;-webkit-transition:300ms;transition:300ms;border-radius:50%;width:20px;height:20px;line-height:20px;background:#fff;text-align:center}.builder-course-thumbnail-img-src .tutor-course-thumbnail-delete-btn i{line-height:20px}.tutor-course-builder-header{text-align:right;font-size:12px}.tutor-course-builder-section .course-empty-content{margin:15px 0}.tutor-course-builder-section .tutor-course-builder-header a{color:#393c40}.tutor-course-builder-section .tutor-course-builder-header a:first-child{padding-right:7px}.tutor-course-builder-section .tutor-course-builder-header a:last-child{padding-left:7px}.tutor-course-builder-section .tutor-course-builder-header{margin-top:-15px}.tutor-course-builder-section .new-topic-btn-wrap{padding:0;margin-top:20px}.tutor-course-available-instructors{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-course-available-instructors .added-instructor-item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 15px);flex:0 0 calc(50% - 15px);max-width:calc(50% - 15px);border:1px solid #dcdfe5;padding:13px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:4px;position:relative;margin-bottom:30px}.tutor-course-available-instructors .added-instructor-item .instructor-control{position:absolute;right:14px;top:50%;font-size:12px;-webkit-transform:translateY(-50%);transform:translateY(-50%);opacity:0;-webkit-transition:300ms;transition:300ms}.tutor-course-available-instructors .added-instructor-item .instructor-control a{color:red}.tutor-course-available-instructors .added-instructor-item:hover .instructor-control{opacity:1}.tutor-course-available-instructors .added-instructor-item .instructor-icon{height:45px;width:45px;overflow:hidden;border-radius:50px;margin-right:15px}.tutor-course-available-instructors .added-instructor-item .instructor-icon img{width:100%}.tutor-course-available-instructors .added-instructor-item .instructor-name{position:relative}.tutor-course-available-instructors .added-instructor-item .instructor-name img{display:inline-block;margin-left:10px;width:18px}.tutor-course-available-instructors .added-instructor-item .instructor-name img:hover+i.instructor-name-tooltip{opacity:1}.tutor-course-available-instructors .added-instructor-item i.instructor-name-tooltip{-webkit-transition:300ms;transition:300ms;opacity:0;position:absolute;bottom:34px;right:9px;background:#2a344f;-webkit-transform:translateX(50%);transform:translateX(50%);color:#fff;font-size:12px;font-style:normal;padding:0 8px;border-radius:15px;line-height:20px;z-index:1}.tutor-course-available-instructors .added-instructor-item i.instructor-name-tooltip::before{content:"";position:absolute;border:5px solid #2a344f;bottom:-3px;left:50%;margin-left:-5px;-webkit-transform:rotate(45deg);transform:rotate(45deg);z-index:-1}.tutor-course-available-instructors .added-instructor-item:nth-child(2n){margin-left:30px}.tutor-addons-list .plugin-icon{height:120px}.btn-switch{display:inline-block;height:22px;position:relative;width:40px}.btn-switch input{display:none}.btn-slider{background-color:#ccc;bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0;-webkit-transition:0.4s;transition:0.4s}.btn-slider:before{background-color:#fff;bottom:3px;content:"";height:16px;left:4px;position:absolute;-webkit-transition:0.4s;transition:0.4s;width:16px}input:checked+.btn-slider{background-color:var(--tutor-primary-color)}input:checked+.btn-slider:before{-webkit-transform:translateX(16px);transform:translateX(16px)}.btn-slider.btn-round{border-radius:34px}.btn-slider.btn-round:before{border-radius:50%}.tutor-video-embeded-wrap{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%}.tutor-video-embeded-wrap iframe,.tutor-video-embeded-wrap object,.tutor-video-embeded-wrap embed{position:absolute;top:0;left:0;width:100%;height:100%}.select2-selection__rendered [class^="tutor-icon-"]{display:inline-block;vertical-align:top;margin-right:6px}.select2-results__options [class^="tutor-icon-"]{color:var(--tutor-primary-color);display:inline-block;vertical-align:top;margin-right:6px}.select2-results__option--highlighted [class^="tutor-icon-"]{color:#fff}.tutor-video-metabox-wrap{margin-bottom:50px}.video-metabox-source-input-wrap{padding:30px;background-color:#f4f7f8;border:1px solid #dcdfe5;border-radius:3px}.video-metabox-source-html5-upload{background-color:#fff;text-align:center;padding:40px 20px;border:1px solid #dcdfe5;border-radius:3px}.video-metabox-source-html5-upload p{margin-bottom:5px}.tutor-video-metabox-wrap p{margin:0;padding:0}.video-metabox-source-html5-upload .video-upload-icon i{font-size:50px;color:var(--tutor-primary-color)}.video_source_upload_wrap_html5{margin-top:10px}.video-metabox-source-html5-poster{padding-top:30px}.video_source_wrap_html5{width:100%}.builder-course-thumbnail-upload-wrap .button-transparent{float:right;background:transparent !important}.builder-course-thumbnail-upload-wrap .button-transparent:hover{background:var(--tutor-primary-color) !important}.html5-video-poster{height:100px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.html5-video-poster .tutor-builder-course-video-poster-text{text-align:left;padding-left:20px}.html5-video-poster .tutor-builder-course-video-poster-text h5{font-size:14px;font-weight:700;margin:0 0 6px;line-height:1}.html5-video-poster .tutor-builder-course-video-poster-text span{font-size:14px;font-weight:400}.html5-video-poster img{height:100%;width:auto}.no-memberhsip-msg-wrap p{margin:0}.content-drip-message-wrap.tutor-error-msg{margin:40px 50px}.content-drip-message-wrap{margin:120px}.content-drip-wrap-flex{display:-webkit-box;display:-ms-flexbox;display:flex}.content-drip-wrap-flex .content-drip-left{margin-right:50px}.content-drip-wrap-flex ul{margin:0;list-style-position:inside}.content-drip-wrap-flex ul li a{color:var(--tutor-primary-color)}.tutor-alert{border:1px solid #f8a201;background:#fffff2;position:relative;border-radius:3px;padding:20px 25px 20px 95px;color:#a86d00;margin-bottom:20px}.tutor-alert p{margin-bottom:10px}.tutor-alert p:last-child{margin:0}.tutor-alert.tutor-alert-info{border:1px solid #13aaf6;background:#eaf8ff;color:#0586c7}.tutor-alert.tutor-alert-info::before{content:"\e96c";background:#13aaf6}.tutor-alert.tutor-alert-danger{border:1px solid #fe1a1a;background:#fff2f2;color:#a50000}.tutor-alert.tutor-alert-success{border:1px solid #69bc0d;background:#f6fff2;color:#3d7400}.tutor-alert::before{content:"\e95f";position:absolute;font-size:30px;font-family:"tutor" !important;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;width:70px;top:0;left:0;text-align:center;background:#f8a201;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#ffffff}.tutor-alert.tutor-alert-danger::before{content:"\e913";background:#fe1a1a}.tutor-alert.tutor-alert-success::before{content:"\e90f";background:#69bc0d}.tutor-alert-content p{margin:0}.gradename-bg{text-align:center;color:#ffffff;height:32px;min-width:32px;font-size:16px;line-height:32px;padding:0 8px;display:inline-block;border-radius:20px;font-weight:bold;margin-right:7px}.gradename-outline{text-align:center;height:32px;min-width:32px;font-size:16px;line-height:26px;padding:0 8px;display:inline-block;border-radius:20px;border:2px solid;margin-right:7px}.generate-course-gradebook-btn-wrap{margin:10px 0}.gradebook-result-for-label{margin:0;padding:4px 7px;background-color:#e8eff1;display:inline-block;margin-bottom:10px}table.course-single-gradebooks{border-spacing:0;width:100%;border-collapse:collapse;border:1px solid #dcdfe5}table.course-single-gradebooks th{padding:1em 1.41575em;text-align:left;vertical-align:top;border-bottom:1px solid #dcdfe5}table.course-single-gradebooks th{font-weight:600}table.course-single-gradebooks thead th{background-color:rgba(220,223,229,0.14);padding:1.41575em;vertical-align:middle}table.course-single-gradebooks tbody td{border-bottom:1px solid #dcdfe5;background-color:#ffffff !important}table.course-single-gradebooks a{color:#4b5981}.text-label{margin:0;padding:4px 7px;background-color:#e8eff1;display:inline-block;border-radius:3px}.text-label.submitted-assignment-grade-pass{background-color:#86b223;color:#ffffff}.text-label.submitted-assignment-grade-failed{background-color:#d71830;color:#ffffff}.tutor-bp-message-recipient-header{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:20px}.tutor-bp-recipient-info-wrap{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-bp-message-recipient-avatar-wrap img{width:70px;height:70px;border-radius:50%}.tutor-bp-message-recipient-avatar-wrap{margin-right:35px}.tutor-bp-message-recipient-header .tutor-bp-thread-recipient-name h3{margin:10px 0 8px !important;font-size:22px;font-weight:600;line-height:28px}.tutor-bp-message-recipient-header .tutor-bp-thread-recipient-name h4{margin:0 0 20px !important;font-size:16px;line-height:1;font-weight:500}.tutor-bp-enrolled-courses-wrap{margin:0}.tutor-bp-enrolled-courses-wrap .tutor-bp-enrolled-total-course-notice{font-weight:400;color:#1c294b;margin:10px 0 8px !important}.tutor-bp-enrolled-courses-wrap ul{padding:0 0 0 17px;margin:0;color:#50616f}.tutor-bp-enrolled-courses-wrap ul li a{line-height:1.7;display:block;color:#54616d;padding-left:10px}.tutor-bp-enrolled-courses-wrap ul li a:hover{color:var(--tutor-primary-color);opacity:1;-webkit-transition:300ms;transition:300ms;text-decoration:underline !important}.oxy-tutor-element{width:100%}.tutor-dashboard-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-bottom:30px;border-bottom:1px solid #dcdfe5;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-dashboard-header .tutor-btn.bordered-btn{background-color:transparent;text-transform:uppercase;font-weight:400;border-radius:2px}.tutor-dashboard-header .tutor-btn.bordered-btn i{font-size:20px}.tutor-dashboard-header .tutor-star-rating-group{margin-right:3px}.tutor-dashboard-header-avatar img{display:block;width:150px;height:150px;border-radius:50%}.tutor-dashboard-header-info{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-left:24px;padding-top:15px;padding-bottom:15px}.tutor-dashboard-header-button{padding-top:15px}.tutor-dashboard-header-display-name h4{font-size:30px;margin-top:0px;margin-bottom:10px;line-height:34px}.tutor-dashboard-header-stats{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:25px}.tutor-dashboard-header-stats>div:not(:first-child){margin-left:30px}.tutor-dashboard-social-icons{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-dashboard-social-icons h4{margin:0 10px 0 0;font-size:var(--tutor-text-size);line-height:25px}.tutor-dashboard-social-icons a{display:inline-block;font-size:12px;padding:0 5px;line-height:25px;color:#393c40;-webkit-transition:300ms;transition:300ms}.tutor-dashboard-social-icons a:hover{color:var(--tutor-primary-color)}.tutor-profile-completion-warning{display:-webkit-box;display:-ms-flexbox;display:flex;padding:20px 0;border-bottom:1px solid #dcdfe5}.tutor-profile-completion-warning .profile-completion-warning-icon{margin-top:10px}.tutor-profile-completion-warning .profile-completion-warning-icon span{font-size:40px;color:#ed9700;padding:0 20px}.tutor-profile-completion-warning .profile-completion-warning-content{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-positive:1;flex-grow:1;-webkit-box-flex:1}.tutor-profile-completion-warning .profile-completion-warning-content h4{font-size:20px;line-height:30px;margin:0;padding:0;width:100%}.tutor-profile-completion-warning .profile-completion-warning-content p{margin-bottom:10px;font-size:14px;font-weight:300;color:#737787}.tutor-profile-completion-warning .profile-completion-warning-content p a{font-weight:400;color:#3e64de}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details{-ms-flex-positive:1;flex-grow:1;-webkit-box-flex:1}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul{margin:0;list-style:none}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul li{display:inline;position:relative;padding-left:16px;color:#737787}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul li:not(:last-child){margin-right:21px}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul li::before{content:"\2022";position:absolute;color:#f44337;font-weight:bold;display:inline-block;left:0}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul li span{color:#3f435b}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-status p span{font-weight:400}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-status .tutor-progress-bar-wrap .tutor-progress-bar{height:6px;border-radius:8.5px;background-color:#ededf0}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-status .tutor-progress-bar-wrap .tutor-progress-filled{height:6px;border-radius:3px;background-color:#ed9700}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-status .tutor-progress-bar-wrap .tutor-progress-filled::after{display:none}.tutor-dashboard-info-table-wrap{margin-bottom:30px}.tutor-dashboard-info-table-wrap table{margin-bottom:0;border-collapse:collapse;border:1px solid #dcdfe5;border-radius:4px;width:100%}.tutor-dashboard-info-table-wrap>h3{font-size:20px;font-weight:500;border:1px solid #dcdfe5;border-bottom:none;margin:0;padding:30px;border-radius:4px 4px 0 0}.tutor-dashboard-info-table-wrap>h3+table{border-radius:0 0 4px 4px}.tutor-dashboard-info-table thead{background:#fafbfc}.tutor-dashboard-info-table thead tr td{padding:15px}.tutor-dashboard-info-table tbody tr td{background:transparent !important;padding:20px 15px}.tutor-dashboard-info-table thead tr,.tutor-dashboard-info-table tbody tr{border:1px solid #dcdfe5}.tutor-dashboard-info-table thead tr td:first-child,.tutor-dashboard-info-table tbody tr td:first-child{padding-left:25px}.tutor-dashboard-info-table span.pending,.tutor-dashboard-info-table span.pass,.tutor-dashboard-info-table span.fail{color:#fff;font-size:14px;line-height:18px;padding:1px 6px;border-radius:2px}.tutor-dashboard-info-table span.pending{background-color:#f5a623}.tutor-dashboard-info-table span.fail{background-color:#d71830}.tutor-dashboard-info-table span.pass{background-color:var(--tutor-success-button-color)}.tutor-dashboard-single-review{border:1px solid #dcdfe5;border-radius:4px;margin-bottom:30px}.tutor-dashboard-review-heading{padding:10px 20px;border-bottom:1px solid #dcdfe5;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.individual-dashboard-review-body{padding:10px 20px}.tutor-dashboard-review-title{font-size:18px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:300}.tutor-dashboard-review-title a{font-weight:500;color:var(--tutor-primary-color)}.tutor-dashboard-review-title a:hover{color:var(--tutor-primary-hover-color)}.tutor-dashboard-review-links{white-space:nowrap;font-weight:400}.tutor-dashboard-review-links a{color:#8c94a8;margin-left:10px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px}.tutor-dashboard-review-links a i{line-height:inherit;font-size:14px;margin-right:5px}.individual-dashboard-review-body .review-meta{font-size:85%;margin:0;color:#8c94a8}.individual-star-rating-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-edit-review-modal-wrap .modal-close-wrap a.modal-close-btn{color:#222222;background:none;font-size:20px;top:8px}.tutor-modal-wrap form{margin-bottom:20px}.tutor-dashboard-info-cards{margin:0 -15px 15px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-dashboard-info-cards .tutor-dashboard-info-card{padding:15px;min-width:33.333%}.tutor-dashboard-info-cards .tutor-dashboard-info-card p{margin:0;padding:15px 25px;background:#282c36;color:#ffffff;border-radius:4px}.tutor-dashboard-info-cards .tutor-dashboard-info-card p span.tutor-dashboard-info-val{display:block;font-weight:700;font-size:30px;line-height:1.618}.tutor-dashboard-info-cards .tutor-dashboard-info-card p span span{display:inline-block}.tutor-dashboard-info-cards .tutor-dashboard-info-card p>*{vertical-align:middle}.tutor-dashboard-content{margin-bottom:60px}.tutor-dashboard-content>h2{margin-bottom:20px}.prev-btn{font-size:16px;line-height:1.88;color:#3f435b}.prev-btn span{font-size:18px;font-weight:800;color:#3e64de;margin-right:7px}.tutor-dashboard-content .tutor-quiz-attempt-history tr th,.tutor-dashboard-content .tutor-quiz-attempt-history tr td{vertical-align:middle;border:none}.tutor-dashboard-content .tutor-quiz-attempt-history tr td:first-child{padding:15px 13px !important}.tutor-dashboard-content .tutor-quiz-attempt-history table span.result-fail,.tutor-dashboard-content .tutor-quiz-attempt-history table span.result-pass{width:auto;height:auto;line-height:19px;padding:0 6.5px;margin-right:4px}.label-course-status{background-color:#cccccc;padding:3px 5px;color:#ffffff;font-size:12px;text-transform:capitalize}.label-course-publish{background-color:var(--tutor-success-button-color)}.tutor-dashboard-content .quiz-attempt-answers-wrap table th{font-size:14px;font-weight:400;line-height:1.5;letter-spacing:0.12px;color:#737787;padding:15px 10px}.tutor-dashboard-content .tutor-quiz-attempt-history table thead tr,.single-quiz-page.tutor-quiz-attempt-history table thead tr{background-color:#fafbfc}.tutor-dashboard-content .tutor-quiz-attempt-history table tr,.single-quiz-page.tutor-quiz-attempt-history table tr{border:0;background-color:#fff}.tutor-dashboard-content .tutor-quiz-attempt-history table tr:first-child,.single-quiz-page.tutor-quiz-attempt-history table tr:first-child{background-color:#fafbfc}.tutor-dashboard-content .tutor-quiz-attempt-history table th,.tutor-dashboard-content .tutor-quiz-attempt-history table td,.single-quiz-page.tutor-quiz-attempt-history table th,.single-quiz-page.tutor-quiz-attempt-history table td{border:1px solid #dcdfe5 !important;vertical-align:middle}.tutor-dashboard-content .tutor-quiz-attempt-history table th:first-child,.tutor-dashboard-content .tutor-quiz-attempt-history table td:first-child,.single-quiz-page.tutor-quiz-attempt-history table th:first-child,.single-quiz-page.tutor-quiz-attempt-history table td:first-child{width:62%}.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(2),.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(4),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(2),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(4),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(2),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(4),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(2),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(4){width:11%}.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(3),.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(5),.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(6),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(3),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(5),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(6),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(3),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(5),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(6),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(3),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(5),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(6){width:9%}.tutor-dashboard-content .tutor-quiz-attempt-history table th,.single-quiz-page.tutor-quiz-attempt-history table th{font-size:14px;font-weight:500;line-height:1.14;color:#8792b2}.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(n+3),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(n+3){text-align:center}.tutor-dashboard-content .tutor-quiz-attempt-history table td,.single-quiz-page.tutor-quiz-attempt-history table td{background-color:#fff;font-size:14px;font-weight:400;color:#4b5981}.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(n+3),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(n+3){font-weight:500;text-align:center;padding-left:3px !important;padding-right:3px !important}.tutor-dashboard-content .tutor-quiz-attempt-history table td:last-child,.single-quiz-page.tutor-quiz-attempt-history table td:last-child{padding-left:0px !important;padding-right:0px !important}.tutor-dashboard-content .tutor-quiz-attempt-history table td a,.single-quiz-page.tutor-quiz-attempt-history table td a{font-weight:500;color:#4b5981;text-decoration:underline;word-break:initial}.tutor-dashboard-content .tutor-quiz-attempt-history table td .course a,.single-quiz-page.tutor-quiz-attempt-history table td .course a{font-weight:600;line-height:1.29;color:#4b5981;text-decoration:none}.tutor-dashboard-content .tutor-quiz-attempt-history table td .course-meta,.single-quiz-page.tutor-quiz-attempt-history table td .course-meta{display:inline-block;margin-top:5px}.tutor-dashboard-content .tutor-quiz-attempt-history table td .course-meta span:nth-child(2),.single-quiz-page.tutor-quiz-attempt-history table td .course-meta span:nth-child(2){margin:0 17px}.tutor-dashboard-content .tutor-quiz-attempt-history table td .student,.single-quiz-page.tutor-quiz-attempt-history table td .student{font-weight:600;line-height:1.29;color:#4b5981}.tutor-dashboard-content .tutor-quiz-attempt-history table td .student-meta,.single-quiz-page.tutor-quiz-attempt-history table td .student-meta{display:inline-block;margin-top:5px}.single-quiz-page.tutor-quiz-attempt-history table{margin-bottom:30px}.tutor-dashboard-content .tutor-quiz-attempt-history table a{color:var(--tutor-primary-color);font-weight:700;line-height:24px}.tutor-dashboard-content .tutor-quiz-attempt-history table a:hover{color:var(--tutor-primary-hover-color)}.tutor-dashboard-content .tutor-quiz-attempt-history table a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-item-group{padding:25px;border:1px solid #dcdfe5;border-radius:4px;margin-bottom:30px}.tutor-dashboard-item-group>h4{font-size:20px;color:var(--tutor-primary-color);font-weight:500}.tutor-dashboard-item-group>h4:hover{color:var(--tutor-primary-hover-color)}.tutor-dashboard-assignment-submitted-table tr td{text-align:center}.tutor-dashboard-assignment-submitted-table tr td a{color:#8c94a8;-webkit-transition:300ms;transition:300ms}.tutor-dashboard-assignment-submitted-table tr td a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-assignment-submitted-table tr td,.tutor-dashboard-assignment-submitted-table tr th{border:1px solid #dcdfe5}.tutor-assignment-review-header{margin-bottom:30px}.tutor-assignment-review-header h3{margin-bottom:10px;line-height:28px}.tutor-assignment-evaluate-wraps h3,.tutor-assignment-review-header h3 a{font-size:22px;font-weight:700;color:var(--tutor-text-color);display:block}.tutor-assignment-review-header p{margin:0;color:var(--tutor-text-color);font-weight:700}.tutor-assignment-review-header p a{font-weight:400;color:var(--tutor-text-color)}.tutor-assignment-review-header a{-webkit-transition:300ms;transition:300ms}.tutor-assignment-review-header a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-assignment-review{background:rgba(220,223,229,0.14);border:1px solid #dcdfe5;padding:25px;font-weight:400;border-radius:4px;margin-bottom:40px}.tutor-dashboard-assignment-review h5,.tutor-dashboard-assignment-review h4{font-size:16px;line-height:23px;font-weight:700;color:var(--tutor-text-color)}.tutor-dashboard-assignment-review h5{margin-bottom:15px}.tutor-dashboard-assignment-files{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:-9px}.tutor-dashboard-assignment-files .uploaded-files{background-color:#fff;border:1px solid #dcdfe5;border-radius:4px;margin:9px;-webkit-transition:300ms;transition:300ms}.tutor-dashboard-assignment-files .uploaded-files:hover{-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.1);box-shadow:0 5px 10px rgba(0,0,0,0.1)}.tutor-dashboard-assignment-files .uploaded-files a i{margin-right:12px;color:#606c8f;float:left;font-size:28px;line-height:28px}.tutor-dashboard-assignment-files .uploaded-files a{color:var(--tutor-primary-color);display:block;overflow:hidden;line-height:28px;padding:15px 17px}.tutor-dashboard-assignment-files .uploaded-files a:hover{color:var(--tutor-primary-hover-color)}.tutor-assignment-evaluate-row{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-assignment-evaluate-row .tutor-option-field-label{-webkit-box-flex:0;-ms-flex:0 0 135px;flex:0 0 135px}.tutor-assignment-evaluate-row .tutor-option-field{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-assignment-evaluate-row .tutor-option-field-label label{display:block;padding-top:12px}.tutor-option-field-label label br{display:none}.tutor-option-field-label label p{margin:0;display:inline-block}.tutor-assignment-evaluate-row textarea,.tutor-assignment-evaluate-row .tutor-option-field input{border:1px solid #dcdfe5;height:50px;padding:0 15px;border-radius:4px;width:100px;background-color:#fff}.tutor-assignment-evaluate-row textarea{height:165px;width:100%}.tutor-assignment-evaluate-row{margin-bottom:60px}.tutor-assignment-evaluate-row p.desc{margin-bottom:0;margin-top:6px;font-style:italic}.tutor-dashboard-profile .tutor-dashboard-profile-item{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-dashboard-profile .tutor-dashboard-profile-item .heading{min-width:190px}@media (max-width: 480px){.tutor-dashboard-profile .tutor-dashboard-profile-item{-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-dashboard-profile .tutor-dashboard-profile-item .heading{min-width:100%;width:100%;font-weight:700;margin-bottom:6px}}.tutor-dashboard-profile .tutor-dashboard-profile-item .content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-dashboard-profile .tutor-dashboard-profile-item .content small{font-size:inherit;font-style:italic}.tutor-dashboard-profile .tutor-dashboard-profile-item .content small a{color:var(--tutor-primary-color)}.tutor-dashboard-profile .tutor-dashboard-profile-item .content small a:hover{color:var(--tutor-primary-hover-color)}.tutor-dashboard-avater img{width:70px;height:70px;display:block;border-radius:50%}.tutor-dashboard-student-info h4{font-size:18px;color:var(--tutor-light-color);margin-bottom:0}.tutor-dashboard-student-info h4 a{color:var(--tutor-text-color)}.tutor-dashboard-user-role{font-weight:400}.tutor-dashboard-inline-links{margin-bottom:30px}.tutor-dashboard-inline-links ul{margin:0;padding:0;border-bottom:1px solid #dfe1e5}.tutor-dashboard-inline-links ul li{display:inline-block}.tutor-dashboard-inline-links ul li a{display:block;padding:5px 10px;color:var(--tutor-primary-color);margin-bottom:-1px;line-height:40px}.tutor-dashboard-inline-links ul li a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-inline-links ul li a:hover,.tutor-dashboard-inline-links ul li.active a{color:var(--tutor-primary-color);border-bottom:1px solid var(--tutor-primary-color);padding-bottom:4px}.tutor-dashboard-student-meta ul li:first-child{margin-left:0}@media (max-width: 767px){.tutor-dashboard-student-meta ul{display:block;border:none;padding:0}.tutor-dashboard-student-meta ul li{display:inline-block;color:var(--tutor-text-color);margin:5px;border:1px solid #dddddd;padding:5px 10px;border-radius:4px}}.tutor-dashboard-student-meta ul li strong{display:block;color:var(--tutor-light-color);font-weight:400}.tutor-dashboard-permalinks{list-style:none;margin:0px 0 20px;padding:20px 0;border-right:1px solid #dcdfe5}.tutor-dashboard-permalinks li a:hover{background-color:#edf0f9}.tutor-dashboard-permalinks li.active a{background-color:var(--tutor-primary-color);color:#ffffff}.tutor-dashboard-permalinks li.active a:hover{background-color:var(--tutor-primary-hover-color)}@media (max-width: 991px){.tutor-dashboard-student .tutor-col-3,.tutor-dashboard-student .tutor-col-9{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.profile-completion-warning-details{margin-bottom:10px}}.tutor-dashboard-permalinks a{display:block;color:var(--tutor-text-color);padding:10px 20px;line-height:28px}.tutor-dashboard-permalinks a:before{content:"\e968";font-family:"tutor" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-right:15px;vertical-align:middle;color:var(--tutor-primary-color);opacity:0.6;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";font-size:17px}.tutor-dashboard-permalinks a:hover::before{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";color:var(--tutor-primary-hover-color)}.tutor-dashboard-permalinks li.active a:before{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";color:#fff}.tutor-dashboard-menu-bio a:before,.tutor-dashboard-menu-my-profile a:before{content:"\e963"}.tutor-dashboard-menu-enrolled-courses a:before{content:"\e969"}.tutor-dashboard-menu-courses_taken a:before,.tutor-dashboard-menu-my-courses a:before{content:"\e965"}.tutor-dashboard-menu-announcements a:before{content:"\e93f"}.tutor-dashboard-menu-wishlist a:before{content:"\e908"}.tutor-dashboard-menu-reviews a:before{content:"\e917"}.tutor-dashboard-menu-my-quiz-attempts a:before{content:"\e9ab"}.tutor-dashboard-menu-quiz-attempts a:before{content:"\e91f"}.tutor-dashboard-menu-question-answer a:before{content:"\e948"}.tutor-dashboard-menu-earning a:before{content:"\e96b"}.tutor-dashboard-menu-withdraw a:before{content:"\e960"}.tutor-dashboard-menu-settings a:before{content:"\e961"}.tutor-dashboard-menu-logout a:before{content:"\e962"}.tutor-dashboard-menu-purchase_history a:before{content:"\e964"}.tutor-dashboard-menu-assignments a:before{content:"\e98b"}.tutor-dashboard-content{padding-top:30px}.quiz-attempts-title,.tutor-quiz-attempt-history-title{font-size:22px;font-weight:600;line-height:1.27;color:#4b5981;margin-bottom:31px}.tutor-date-range-filter-wrap{margin:15px 0 20px;font-size:12px}.report-top-sub-menu{margin:0 10px 5px 0;display:inline-block;font-size:0}.report-top-sub-menu a{text-decoration:none;padding:5px 8px;border:1px solid #d7dadf;color:#aaaeb3;white-space:nowrap;display:inline-block;font-size:12px}.report-top-sub-menu a:not(:first-child){margin-left:-1px}.report-top-sub-menu a:hover{background:#edf0f9;color:#333}.report-top-sub-menu a.active{background-color:var(--tutor-primary-color);color:#ffffff;border:1px solid var(--tutor-primary-hover-color)}.tutor-dashboard-menu-divider{height:1px;margin:10px 0;overflow:hidden;background-color:#dcdfe5}.tutor-dashboard-menu-divider-header{color:#acacac;padding:10px 20px;cursor:default}.tutor-date-range-wrap{display:inline-block}.report-date-range-form{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:0;max-width:370px}.date-range-input{position:relative}.date-range-input input{border-radius:0 !important;margin:0 !important;border-right:none !important;font-size:14px}.date-range-input:last-child{margin-right:0}.date-range-input:last-child button{border-radius:0}.date-range-input input,.date-range-input input[type="text"]{border:1px solid #d7dadf;-webkit-box-shadow:none;box-shadow:none;line-height:29px;margin:0;padding-right:30px;padding-top:0;padding-bottom:0;width:100%}.date-range-input i.tutor-icon-calendar{position:absolute;right:10px;top:7px}.date-range-input button{background-color:var(--tutor-primary-color);color:#ffffff;border:none;line-height:30px;padding:0 15px}.date-range-input button:hover{background-color:var(--tutor-primary-hover-color)}.report-download-csv-icon{float:right}.report-download-csv-icon a{text-decoration:none}.tutor-dashboard-statement-table-wrap{overflow-x:auto}table.tutor-dashboard-statement-table p{margin:0;padding:0}table.tutor-dashboard-statement-table p.small-text{font-size:12px;color:#666666}.tutor-mycourse-thumbnail{-webkit-box-flex:0;-ms-flex:0 0 250px;flex:0 0 250px;background-size:cover;background-position:center}.tutor-mycourse-content{padding:20px;-webkit-box-flex:1;-ms-flex:1;flex:1}@media (max-width: 580px){.tutor-mycourse-thumbnail{height:200px}.tutor-mycourse-thumbnail,.tutor-mycourse-content{min-width:100%;width:100%}.profile-completion-warning-details li{display:block !important}}.tutor-mycourse-content h3{margin:0 0 9px}.tutor-mycourse-content h3 a:hover{color:var(--tutor-primary-color)}.tutor-mycourse-rating{color:#f8c51c;font-size:14px}.tutor-mycourse-rating i{margin-right:4px}.tutor-mycourse-view,.tutor-mycourse-edit,.tutor-mycourse-delete{color:var(--tutor-light-color);-webkit-transition:300ms;transition:300ms}.tutor-mycourse-view i,.tutor-mycourse-edit i,.tutor-mycourse-delete i{line-height:inherit;display:inline-block;vertical-align:top;color:var(--tutor-primary-color)}.tutor-mycourse-view:hover,.tutor-mycourse-edit:hover,.tutor-mycourse-delete:hover{color:var(--tutor-primary-color)}.tutor-dashboard-content-inner .tutor-mycourse-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:30px;border:1px solid #dcdfe5;border-radius:4px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;overflow:hidden;position:relative}@media (max-width: 580px){.tutor-dashboard-content-inner .tutor-mycourse-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}}.tutor-dashboard-content-inner .tutor-mycourse-wrap .tutor-course-status h4{display:none}.tutor-dashboard-content-inner .tutor-mycourse-wrap .tutor-mycourse-rating{margin-bottom:3px}.tutor-dashboard-content-inner .tutor-mycourse-wrap .tutor-mycourse-rating a{font-weight:400;margin-left:5px;color:#8c94a8}.tutor-dashboard-content-inner .tutor-mycourse-wrap .tutor-mycourse-rating a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-content-inner .tutor-mycourse-wrap p:last-child{margin-bottom:0}.tutor-mycourse-content .mycourse-footer{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-mycourse-content .mycourse-footer .tutor-mycourses-stats{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-dashboard-content-inner .tutor-mycourses-stats>*{margin-right:8px}.tutor-mycourse-status{margin-right:15px}.tutor-dashboard-content-inner h3 a{color:var(--tutor-text-color);font-size:22px;line-height:28px;font-weight:500;display:block}.tutor-dashboard-content-inner .tutor-course-metadata ul{display:block;list-style:none;margin:0 0 10px;padding:0}.tutor-dashboard-content-inner .tutor-progress-bar-wrap{margin-bottom:0}.tutor-dashboard-content-inner .tutor-course-metadata li{display:inline-block;color:var(--tutor-light-color);margin-left:20px}.tutor-dashboard-content-inner .tutor-course-metadata li:first-child{margin-left:0}.tutor-dashboard-content-inner .tutor-course-metadata li span{color:var(--tutor-text-color);margin-left:5px}.ui-datepicker{background-color:#fff;border:1px solid #eeeeee;display:none;margin-top:4px;padding:5px;width:180px}.ui-datepicker a,.ui-datepicker a:hover{text-decoration:none}.ui-datepicker a:hover,.ui-datepicker td:hover a{color:#2a6496;-webkit-transition:color 0.1s ease-in-out;transition:color 0.1s ease-in-out}.ui-datepicker .ui-datepicker-header{margin-bottom:4px;text-align:center}.ui-datepicker .ui-datepicker-title{font-weight:700}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{cursor:default;font-family:"tutor";-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;height:20px;line-height:1;margin-top:2px;width:30px}.ui-datepicker .ui-datepicker-prev{float:left;text-align:left}.ui-datepicker .ui-datepicker-next{float:right;text-align:right}.ui-datepicker .ui-datepicker-prev:before{content:"\e921"}.ui-datepicker .ui-datepicker-next:before{content:"\e903"}.ui-datepicker .ui-icon{display:none}.ui-datepicker .ui-datepicker-calendar{table-layout:fixed;width:100%}.ui-datepicker .ui-datepicker-calendar th,.ui-datepicker .ui-datepicker-calendar td{text-align:center;padding:0}.ui-datepicker .ui-datepicker-calendar td{border-radius:4px;-webkit-transition:background-color 0.1s ease-in-out, color 0.1s ease-in-out;transition:background-color 0.1s ease-in-out, color 0.1s ease-in-out}.ui-datepicker .ui-datepicker-calendar td:hover{background-color:#eee;cursor:pointer}.ui-datepicker .ui-datepicker-calendar td a{text-decoration:none}.ui-datepicker .ui-datepicker-current-day{background-color:#4289cc}.ui-datepicker .ui-datepicker-current-day a{color:#fff}.ui-datepicker .ui-datepicker-calendar .ui-datepicker-unselectable:hover{background-color:#fff;cursor:default}.ui-datepicker-calendar .ui-state-default{border:none;background:none}.ui-datepicker-calendar .ui-state-default.ui-state-highlight{background:#eeeeee;padding:3px;display:block}.tutor-table{width:100%}.tutor-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.tutor-course-delete-popup{text-align:center;font-size:16px;line-height:25px;font-weight:400;color:#8C94A8}.tutor-course-delete-popup img{width:110px;margin:0 auto}.tutor-course-delete-popup h3{font-weight:500;font-size:30px;margin:15px 0 25px}.tutor-modal-button-group{margin-top:55px}.tutor-modal-button-group button{line-height:30px;padding:10px 25px;color:#C7CCDA;border:2px solid #DDDFE7;border-radius:2px;background:#fff;min-width:220px;text-align:center;text-transform:uppercase;-webkit-transition:300ms;transition:300ms}.tutor-modal-button-group button+button{margin-left:20px}.tutor-modal-button-group button.tutor-danger{background:#F0576A;border-color:#F0576A;color:#ffffff}.tutor-modal-button-group button:hover{background:#fff;color:#333;border-color:#333}.tutor-modal-button-group button.tutor-danger:hover{background:#cd4a5a;border-color:#cd4a5a;color:#ffffff}@media (max-width: 768px){.tutor-modal-button-group button{padding:5px 20px;min-width:auto;margin-bottom:6px}.tutor-modal-button-group{margin-top:20px}}.withdraw-method-select-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0 -15px 40px}.withdraw-method-select-wrap .withdraw-method-select{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding:0 15px;margin-bottom:30px}.withdraw-method-select-wrap .withdraw-method-select label{display:block;padding:20px;margin:0;cursor:pointer;overflow:hidden;border:1px solid #DCDFE5;border-radius:4px;position:relative}.withdraw-method-select-wrap .withdraw-method-select input:checked+label{border-color:var(--tutor-success-button-color);-webkit-box-shadow:0 0 0 1px var(--tutor-success-button-color);box-shadow:0 0 0 1px var(--tutor-success-button-color)}.withdraw-method-select-wrap .withdraw-method-select label:after{content:'\e90f';position:absolute;right:-1px;top:-1px;border:1px solid #DCDFE5;height:22px;width:22px;text-align:center;line-height:22px;color:transparent}.withdraw-method-select-wrap .withdraw-method-select input:checked+label:after{color:#fff;background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color);font-family:'tutor' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;font-size:13px}.withdraw-method-select-wrap .withdraw-method-select p{margin:0}.withdraw-method-select-wrap .withdraw-method-select label>p{font-size:20px;font-weight:600;color:var(--tutor-primary-color)}.withdraw-method-select-wrap .withdraw-method-select label span{color:#B0B6C8;font-weight:400}.withdraw-method-form{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0 -15px}.withdraw-method-form>div{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;min-width:50%;padding:0 15px 20px}@media (max-width: 480px){.withdraw-method-form>div{width:100%}}.withdraw-method-form>div.withdraw-account-save-btn-wrap{width:100%}.withdraw-form-field-amount input[type='text'],.withdraw-method-forms-wrap .withdraw-method-form input:not([type="submit"]):not([type="radio"]):not([type="checkbox"]),.withdraw-method-forms-wrap .withdraw-method-form textarea{border:1px solid #DCDFE5;display:block;width:100%;background:transparent;-webkit-box-shadow:none;box-shadow:none;border-radius:4px}label[for="tutor_withdraw_amount"]{margin-bottom:7px;display:block}.withdraw-form-field-amount input[type='text']{margin-bottom:10px;height:45px}.withdraw-method-forms-wrap .withdraw-method-form input:not([type="submit"]):not([type="radio"]):not([type="checkbox"]):focus,.withdraw-method-forms-wrap .withdraw-method-form textarea:focus{border-color:var(--tutor-primary-color);outline:none}.withdraw-method-forms-wrap .withdraw-method-form textarea{min-height:80px}.withdraw-method-forms-wrap .withdraw-method-form label{color:#989EAF;margin-bottom:8px;display:block}.withdraw-method-forms-wrap .withdraw-method-form .withdraw-field-desc{font-size:12px;margin:5px 0 0;font-style:italic}.submitted-assignment-title a,.submitted-assignment-title h3{margin-bottom:20px}.submitted-assignments-sorting-wrap{margin-bottom:30px}.submitted-assignments-sorting-wrap .tutor-form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-preferred-size:35% !important;flex-basis:35% !important}.submitted-assignments-sorting-wrap .tutor-form-group label,.submitted-assignments-sorting-wrap .tutor-form-group select{margin-bottom:0}.submitted-assignments-sorting-wrap .tutor-form-group label{-ms-flex-preferred-size:35%;flex-basis:35%}.submitted-assignments-sorting-wrap .tutor-form-group select{height:40px}.tutor-dashboard-assignment-table .student-column{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-dashboard-assignment-table .student-column .student-avatar{width:34px;margin-right:10px}.tutor-dashboard-assignment-table .student-column .student-avatar img{border-radius:50%}.tutor-dashboard-assignment-table .student-column .student-avatar span{display:block;width:34px;height:34px;line-height:34px;border-radius:50%;font-size:12px;text-align:center}.tutor-dashboard-assignment-table .student-column .student-details h4,.tutor-dashboard-assignment-table .student-column .student-details p{line-height:1.3;margin-bottom:0}.tutor-dashboard-assignment-table span.review-required,.tutor-dashboard-assignment-table span.result-pass,.tutor-dashboard-assignment-table span.result-fail{background:#df3247;font-size:14px;font-weight:bold;color:#fff;padding:4px 11px;border-radius:2px}.tutor-dashboard-assignment-table span.result-pass{background:var(--tutor-success-button-color)}.tutor-dashboard-assignment-table span.review-required{background:#f5b30d}.tutor-assignment-review-header p span{font-weight:400;color:var(--tutor-text-color)}.tutor-assignment-submitted-page{border-bottom:none}.tutor-assignment-submitted-page .assignment-info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-assignment-submitted-page .assignment-info p{margin-right:15px}.tutor-assignment-submitted-page h3{margin:5px 0}.tutor-dashboard-assignment-submitted-content{margin-top:30px;margin-bottom:50px}.tutor-dashboard-assignment-review .tutor-assignment-evaluate-row{margin-bottom:30px}.tutor-dashboard-assignment-review .tutor-assignment-evaluate-row .input-mark{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-dashboard-assignment-review .tutor-assignment-evaluate-row .input-mark input{margin:0}.tutor-dashboard-assignment-review .tutor-assignment-evaluate-row .input-mark p{margin-top:0;margin-left:15px}.tutor-announcement-content-wrap{text-align:left !important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-announcement-content-wrap p{margin:0}.tutor-dashboard-announcement-sorting-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-column-gap:15px;-moz-column-gap:15px;column-gap:15px}.tutor-dashboard-announcement-sorting-wrap div:nth-child(1){-ms-flex-preferred-size:50%;flex-basis:50%}.tutor-dashboard-announcement-sorting-wrap div:nth-child(2){-ms-flex-preferred-size:20%;flex-basis:20%}.tutor-dashboard-announcement-sorting-wrap div:nth-child(3){-ms-flex-preferred-size:30%;flex-basis:30%}.tutor-dashboard-announcement-table{border-spacing:0;border-collapse:collapse;border:1px solid #ccd0d4}.tutor-dashboard-announcement-table thead th,.tutor-dashboard-announcement-table thead td{border-bottom:1px solid #ccd0d4}.tutor-dashboard-announcement-table tbody tr:last-child{border-bottom:1px solid #ccd0d4}.tutor-dashboard-announcement-table tbody td:first-child{padding-left:30px;line-height:24px}.tutor-dashboard-announcement-table tr{background-color:#F3F3F3}.tutor-dashboard-announcement-table tr:nth-child(odd){background-color:#fff}.tutor-dashboard-announcement-table th,.tutor-dashboard-announcement-table td{border:0;vertical-align:middle}.tutor-dashboard-announcement-table th h4,.tutor-dashboard-announcement-table td h4{font-size:16px;margin-bottom:0}.tutor-dashboard-announcement-table th p,.tutor-dashboard-announcement-table th a,.tutor-dashboard-announcement-table td p,.tutor-dashboard-announcement-table td a{font-size:13px;margin-bottom:0}.tutor-dashboard-announcement-table th:last-child,.tutor-dashboard-announcement-table td:last-child{padding-right:30px}.tutor-dashboard-announcement-table th{padding:15px 0;background-color:#f3f3f3}.tutor-dashboard-announcement-table td{padding:30px 0}.tutor-dashboard-announcement-table th:first-child{padding-left:40px}.tutor-dashboard-announcement-table th:last-child{padding-right:40px}.tutor-announcement-datepicker{position:relative}.tutor-announcement-datepicker input,.tutor-announcement-datepicker i{position:absolute}.tutor-announcement-datepicker i{top:50%;right:10px;color:#3e64de}.tutor-announcement-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-announcement-buttons li{list-style:none}.tutor-dropdown{position:relative;cursor:pointer;margin-left:20px}.tutor-dropdown .tutor-icon-action{padding:5px 10px;margin-right:-10px}.tutor-dropdown .tutor-icon-action:hover{background:#f3f3f3;border-radius:50%}.tutor-dropdown.show .tutor-dropdown-menu{display:block !important}.tutor-dropdown-menu:before{content:"";position:absolute;right:10px;background:linear-gradient(-45deg, transparent 50%, black 50%);height:10px;width:10px;-webkit-transform:rotate(45deg);transform:rotate(45deg);top:-4px}.tutor-dropdown-menu{min-width:140px;background:#353535;color:white;width:100%;position:absolute;top:40px;right:-13px;display:none;border-radius:5px;padding:0;margin:0}.tutor-dropdown-menu li{list-style:none !important;padding:5px 15px 5px 15px;cursor:pointer}.tutor-dropdown-menu li:first-child{border-top-left-radius:6px;border-top-right-radius:6px}.tutor-dropdown-menu li:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}.tutor-dropdown-menu li:hover{background-color:#6b6b6b}.tutor-dropdwown-menu li i{padding-right:4px}.tutor-announcements-update-form .tutor-option-field-row input[type="text"],.tutor-announcements-update-form textarea,.tutor-announcements-form .tutor-option-field-row input[type="text"],.tutor-announcements-form textarea{width:100%;margin-top:8px}.tutor-announcements-form select,.tutor-announcements-update-form select{width:100%;max-width:100% !important;padding:7px 12px;margin-top:8px}.tutor-announcements-update-form .tutor-option-field-row,.tutor-announcements-form .tutor-option-field-row{border:none !important}.tutor-announcement-modal-content{border-radius:20px}.tutor-announcement-modal-footer-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-announcement-cancel-btn{background:#e8e8e8 !important;border-radius:3px !important;color:#7a7a7a !important}.tutor-announcement-details-modal-content>a{cursor:pointer;padding:20px;float:right}.modal-container.tutor-announcement-details-container{padding:45px 70px !important}.balance-info .tutor-announcement-big-icon{margin-right:10px}.tutor-announcement-big-icon{font-size:32px;width:76px;height:76px;border-radius:100%;background:#e9edfb;text-align:center;color:#3e64de}.tutor-announcement-big-icon .tutor-icon-speaker{position:relative !important;top:30% !important}.tutor-announcement-detail-content{margin-top:35px}.tutor-announcement-detail-content h3{font-size:24px;font-weight:bold;color:#161616}.tutor-announcement-detail-content p{font-style:normal;font-weight:normal;font-size:16px;color:#7a7a7a;margin-top:15px;margin-bottom:10px}.tutor-detail-course-content-wrap{background-color:#f3f3f3}.tutor-detail-course-content{padding:30px 70px 70px}.tutor-detail-course-info-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:50px}.tutor-announce-detail-popup-button-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.announcement-detail-edit-delete-button>.tutor-announcement-delete{background:#e8e8e8 !important;color:#7a7a7a !important}.tutor-border-none{border:none !important}.announcement-detail-edit-delete-button>button{padding:10px 20px !important}.announcement-detail-edit-delete-button{display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px}.tutor-announcement-detail-course-info p,.tutor-announcement-detail-date-info p{font-size:16px;color:#161616;font-weight:700;max-width:95%}.tutor-announcements-modal-wrap .tutor-modal-content{max-width:660px !important}.tutor-announcements-modal-wrap .modal-footer{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-quiz-attempt-history td:last-child{text-align:center}.tutor-quiz-attempt-history td:last-child a{display:block;padding:10px}.attempt-review-title{font-size:18px;color:var(--tutor-text-size);font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:60px}.attempt-review-title i{margin-right:12px;color:var(--tutor-primary-color)}.tutor-quiz-attempt-info-row .attempt-view-bottom,.tutor-quiz-attempt-info-row .attempt-view-top{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-quiz-attempt-info-row .attempt-view-bottom .attempt-info-col,.tutor-quiz-attempt-info-row .attempt-view-top .attempt-info-col{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:30%}.tutor-quiz-attempt-info-row .attempt-view-bottom .attempt-info-col{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.tutor-quiz-attempt-info-row .attempt-info-content span.result-review-required,.tutor-quiz-attempt-info-row .attempt-info-content span.result-pass,.tutor-quiz-attempt-info-row .attempt-info-content span.result-fail{background:#df3247;font-size:14px;font-weight:400;color:#fff;padding:1px 4px;margin-right:13px;border-radius:2px}.tutor-quiz-attempt-info-row .attempt-info-content span.result-pass{background:var(--tutor-success-button-color)}.tutor-quiz-attempt-info-row .attempt-info-content span.result-review-required{background:#f5b30d}.tutor-quiz-attempt-info-row .attempt-info-content h4,.tutor-quiz-attempt-info-row .attempt-info-content h5{font-size:14px;line-height:25px;margin:0;color:#7a7f85;font-weight:400}.tutor-quiz-attempt-info-row .attempt-info-content h4 a,.tutor-quiz-attempt-info-row .attempt-info-content h4{font-weight:700;color:var(--tutor-text-color);margin-top:7px}.tutor-quiz-attempt-info-row .attempt-view-top{padding-bottom:30px;margin-bottom:30px;border-bottom:1px solid #dcdfe5}.tutor-quiz-attempt-info-row .attempt-view-bottom{margin-bottom:60px}.attempt-user-details{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.attempt-user-details .attempt-user-avatar{padding-right:20px}.attempt-user-details .attempt-user-avatar img{display:block;width:70px;height:70px;border-radius:50%}.attempt-user-details .attempt-info-content h4{font-size:18px}.attempt-review-notice-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:60px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.attempt-review-notice-wrap p{margin:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.attempt-review-notice-wrap p.attempt-review-notice i{font-size:16px;color:#f5c813;margin-right:9px}.attempt-review-notice-wrap p.attempt-review-at>span{color:var(--tutor-primary-color);margin-right:7px;font-size:16px}.attempt-review-notice-wrap p>strong{font-weight:400;margin-right:5px}.quiz-attempt-answers-wrap{background:#fff;margin:0 0 1.5em}.quiz-attempt-answers-wrap .attempt-answers-header{padding:30px 20px}.quiz-attempt-answers-wrap .attempt-answers-header h3{font-size:20px;line-height:1.5;color:#3f435b}.quiz-attempt-answers-wrap table{border-collapse:collapse;border:none}.quiz-attempt-answers-wrap table tr{background-color:#fff}.quiz-attempt-answers-wrap table tr:first-child{background-color:#f7f7f9;border-top:1px solid #eaeaea;border-bottom:1px solid #eaeaea !important}.quiz-attempt-answers-wrap table tr:not(:first-child){border-top:1px solid #dcdce1}.quiz-attempt-answers-wrap table tr:not(:last-child){border-bottom:1px solid #dcdce1}.quiz-attempt-answers-wrap table th{font-size:12px;text-transform:inherit}.quiz-attempt-answers-wrap table th,.quiz-attempt-answers-wrap table td{padding:17px 20px;vertical-align:middle;border:none;font-size:14px;line-height:1.71;letter-spacing:normal;color:#393c40}.quiz-attempt-answers-wrap table th p,.quiz-attempt-answers-wrap table td p{margin:0}.quiz-attempt-answers-wrap table th .tutor-icon-block,.quiz-attempt-answers-wrap table td .tutor-icon-block{font-size:14px;width:30px;height:30px;line-height:30px}.quiz-attempt-answers-wrap table .quiz-manual-review-action{border:1px solid #d4dadb;color:#d4dadb;height:30px;width:30px;border-radius:2px;font-size:13px;display:inline-block;text-align:center;line-height:30px;-webkit-transition:300ms;transition:300ms}.quiz-attempt-answers-wrap table .quiz-manual-review-action:first-child:hover{border:1px solid var(--tutor-success-button-color);color:var(--tutor-success-button-color)}.quiz-attempt-answers-wrap table .quiz-manual-review-action:last-child:hover{border:1px solid #df3247;color:#df3247}.quiz-attempt-answers-wrap table .quiz-manual-review-action:not(:last-child){margin-right:17px}.tutor-quiz-attempt-review-wrap .attempt-answers-header{background:#fff;padding:20px;margin-top:20px}.tutor-quiz-attempt-review-wrap .attempt-answers-header a{color:#3f435b}.tutor-quiz-attempt-review-wrap .attempt-answers-header>p{color:#737787;margin-top:10px;margin-bottom:0}.tutor-quiz-attempt-review-wrap .attempt-answers-header h3{font-size:20px;line-height:1.5;color:#3f435b}.tutor-quiz-attempt-review-wrap .instructor-feedback-content{padding:0px 20px 10px 20px}.tutor-quiz-attempt-review-wrap .instructor-feedback-content>p{margin-bottom:1em}.tutor-quiz-attempt-review-wrap table{border-collapse:collapse;border:none}.tutor-quiz-attempt-review-wrap table tr{background-color:#fff}.tutor-quiz-attempt-review-wrap table tr:first-child{background-color:#f7f7f9;border-top:1px solid #eaeaea;border-bottom:1px solid #eaeaea}.tutor-quiz-attempt-review-wrap table tr:first-child th,.tutor-quiz-attempt-review-wrap table tr:first-child td{padding-top:14px;padding-bottom:14px}.tutor-quiz-attempt-review-wrap table tr:not(:first-child){border-top:1px solid #dcdce1}.tutor-quiz-attempt-review-wrap table tr:not(:first-child) th,.tutor-quiz-attempt-review-wrap table tr:not(:first-child) td{padding-top:20px;padding-bottom:20px}.tutor-quiz-attempt-review-wrap table tr:not(:last-child){border-bottom:1px solid #dcdce1}.tutor-quiz-attempt-review-wrap table th,.tutor-quiz-attempt-review-wrap table td{border:none;vertical-align:top;font-size:14px;font-weight:400;line-height:1.71;padding:15px 6px}.tutor-quiz-attempt-review-wrap table th:first-child,.tutor-quiz-attempt-review-wrap table td:first-child{padding:12px}.tutor-quiz-attempt-review-wrap table th:last-child,.tutor-quiz-attempt-review-wrap table td:last-child{padding:12px 10px}.tutor-quiz-attempt-review-wrap .quiz-attempt-answers-wrap table th:nth-child(3),.tutor-quiz-attempt-review-wrap .quiz-attempt-answers-wrap table th:nth-child(4),.tutor-quiz-attempt-review-wrap .quiz-attempt-answers-wrap table td:nth-child(3),.tutor-quiz-attempt-review-wrap .quiz-attempt-answers-wrap table td:nth-child(4){width:28%}.tutor-quiz-attempt-review-wrap span.result-review-required,.tutor-quiz-attempt-review-wrap span.result-pass,.tutor-quiz-attempt-review-wrap span.result-fail{background:#df3247;font-size:14px;font-weight:bold;color:#fff;padding:4px 11px;border-radius:2px}.tutor-quiz-attempt-review-wrap span.result-pass{background:var(--tutor-success-button-color)}.tutor-quiz-attempt-review-wrap span.result-review-required{background:#f5b30d}.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip],.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]{position:relative;z-index:2;cursor:pointer}.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip]:before,.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip]:after,.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]:before,.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]:after{visibility:hidden;opacity:0;pointer-events:none;-webkit-transform:translateY(15px);transform:translateY(15px);-webkit-transition:0.15s ease;transition:0.15s ease}.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip]:before,.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]:before{content:attr(data-tooltip);position:absolute;bottom:40px;left:50%;margin-bottom:0px;margin-left:-60px;min-width:122px;text-align:center;padding:4px 7px;font-size:14px;line-height:1.2;font-weight:300;border-radius:12px;background-color:#3f435b;color:#fff;z-index:99999}.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip]:after,.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]:after{position:absolute;content:"";bottom:34px;left:50%;margin-left:-10px;border-top:8px solid #3f435b;border-right:10px solid transparent;border-left:10px solid transparent}.tutor-quiz-attempt-review-wrap .active[data-tooltip]:before,.tutor-quiz-attempt-review-wrap .active[data-tooltip]:after,.tutor-quiz-attempt-review-wrap .active[data-tooltip]:before,.tutor-quiz-attempt-review-wrap .active[data-tooltip]:after,.quiz-attempt-answers-wrap .active[data-tooltip]:before,.quiz-attempt-answers-wrap .active[data-tooltip]:after,.quiz-attempt-answers-wrap .active[data-tooltip]:before,.quiz-attempt-answers-wrap .active[data-tooltip]:after{visibility:visible;opacity:1;-webkit-transform:translateY(0px);transform:translateY(0px)}.tutor-status-blocked-context i,.tutor-status-approved-context i,.quiz-correct-answer-text i,.quiz-incorrect-answer-text i{font-size:14px;height:20px;width:20px;text-align:center;line-height:20px;background:#7bbc30;color:#fff;display:inline-block;border-radius:2px;margin-right:6px}.tutor-status-blocked-context i,.quiz-incorrect-answer-text i{background:#f44337;font-size:10px;font-weight:900}.answer-image-matched-wrap{display:block}.answer-image-matched-wrap .image-matching-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.answer-image-matched-wrap .image-matching-item:not(:last-child){margin-bottom:12px}.answer-image-matched-wrap .image-matching-item img{max-width:35px}.answer-image-matched-wrap .image-matching-item .dragged-caption{font-size:14px;margin-left:12px}.correct-answer-wrap .matching-type{display:-webkit-box;display:-ms-flexbox;display:flex}.correct-answer-wrap .text-image-type{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.correct-answer-wrap .text-image-type:not(:last-child){margin-bottom:12px}.correct-answer-wrap .text-image-type .image{margin-right:12px}.correct-answer-wrap .text-image-type img{max-width:35px}#tutor_profile_cover_photo_editor{height:344px;position:relative}#tutor_profile_cover_photo_editor #tutor_photo_meta_area{text-align:right;padding-left:190px;margin-top:16px}@media (max-width: 492px){#tutor_profile_cover_photo_editor #tutor_photo_meta_area{padding-left:120px}}#tutor_profile_cover_photo_editor #tutor_photo_meta_area>img,#tutor_profile_cover_photo_editor #tutor_photo_meta_area>span{display:inline-block;vertical-align:middle}#tutor_profile_cover_photo_editor #tutor_photo_meta_area>span{white-space:nowrap;font-style:normal;font-weight:normal;font-size:13px;line-height:18px;color:#7A7A7A}#tutor_profile_cover_photo_editor #tutor_photo_meta_area>span>span{color:black}#tutor_profile_cover_photo_editor #tutor_photo_meta_area>span.loader-area{display:none}#tutor_profile_cover_photo_editor #tutor_cover_area{height:245px;background-color:#E9EDFB;background-position:center center;background-size:cover;background-repeat:no-repeat;border-radius:6px;position:relative;overflow:hidden}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_overlay{height:70%;position:absolute;left:0;bottom:0;right:0;background-image:-webkit-gradient(linear, left top, left bottom, from(transparent), to(rgba(0,0,0,0.6)));background-image:linear-gradient(transparent, rgba(0,0,0,0.6))}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_uploader{background:#3E64DE;border-radius:3px;color:white;border:none;cursor:pointer;font-style:normal;font-weight:600;font-size:12px;color:#FFFFFF;position:absolute;padding:8px 20px;right:22px;bottom:22px}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_uploader:hover{background:#2f52c4}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_uploader>span{margin-left:6px}@media (max-width: 432px){#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_uploader>span{display:none}}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_deleter{position:absolute;color:white;background:rgba(0,0,0,0.247);text-align:center;width:36px;border-radius:50%;font-size:17px;line-height:40px;height:36px;right:22px;top:22px;cursor:pointer}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_deleter:hover{background:rgba(0,0,0,0.438)}#tutor_profile_cover_photo_editor #tutor_profile_area{width:142px;height:142px;left:35px;top:145px;border-radius:50%;border:5px solid white;position:absolute;overflow:hidden;background-color:#E9EDFB;background-position:center center;background-size:cover;background-repeat:no-repeat}@media (max-width: 688px){#tutor_profile_cover_photo_editor #tutor_profile_area{width:120px;height:120px;left:31px;top:168px}}#tutor_profile_cover_photo_editor #tutor_profile_area .tutor_overlay{position:absolute;right:0;left:0;bottom:0;background:rgba(0,0,0,0.253);padding:0;height:37px;cursor:pointer;color:white;display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}#tutor_profile_cover_photo_editor #tutor_profile_area .tutor_overlay:hover{background:rgba(0,0,0,0.411)}#tutor_profile_cover_photo_editor #tutor_pp_option{position:absolute;background:#353535;width:157px;top:294px;left:27px;border-radius:6px;color:white;z-index:99;display:none}@media (max-width: 688px){#tutor_profile_cover_photo_editor #tutor_pp_option{top:294px;left:10px}}#tutor_profile_cover_photo_editor #tutor_pp_option span{display:block;padding:5px 10px;cursor:pointer;overflow:hidden;font-style:normal;font-weight:normal;font-size:16px;line-height:26px;color:#FFFFFF}#tutor_profile_cover_photo_editor #tutor_pp_option span:first-of-type{border-top-left-radius:6px;border-top-right-radius:6px}#tutor_profile_cover_photo_editor #tutor_pp_option span:last-of-type{border-bottom-left-radius:6px;border-bottom-right-radius:6px}#tutor_profile_cover_photo_editor #tutor_pp_option span:hover{background:#6b6b6b}#tutor_profile_cover_photo_editor #tutor_pp_option .up-arrow{text-align:center;height:0}#tutor_profile_cover_photo_editor #tutor_pp_option .up-arrow i{display:inline-block;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;position:relative;top:-17px;border-bottom:5px solid #353535}#tutor_profile_cover_photo_editor #tutor_pp_option>*:not(:last-child){position:relative;z-index:1}#tutor_profile_cover_photo_editor #tutor_pp_option>div:last-child{position:fixed;left:0;right:0;top:0;bottom:0;background:transparent;z-index:0;z-index:0}#tutor_profile_cover_photo_editor.pop-up-opened #tutor_pp_option{display:block}#tutor_profile_cover_photo_editor #tutor_photo_dialogue_box{display:none}.tutor-user-public-profile .photo-area{overflow:hidden;height:414px;margin-top:30px}.tutor-user-public-profile .photo-area .cover-area{position:relative;border-radius:6px;overflow:hidden}.tutor-user-public-profile .photo-area .cover-area>div:first-child{height:375px;background-position:center center;background-repeat:no-repeat;background-size:cover}.tutor-user-public-profile .photo-area .cover-area>div:last-child{position:absolute;left:0;right:0;bottom:0;height:70%;background-image:-webkit-gradient(linear, left top, left bottom, from(transparent), to(rgba(0,0,0,0.6)));background-image:linear-gradient(transparent, rgba(0,0,0,0.6))}.tutor-user-public-profile .photo-area .pp-area{position:relative;top:-111px;padding-left:49px;display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center}.tutor-user-public-profile .photo-area .pp-area .profile-pic{background-position:center center;background-repeat:no-repeat;background-size:cover;display:inline-block;border:8px solid white}.tutor-user-public-profile .photo-area .pp-area .profile-name{padding-left:23px;padding-bottom:30px}.tutor-user-public-profile .photo-area .pp-area .profile-name h3{font-style:normal;font-weight:600;font-size:40px;line-height:48px;color:#FFFFFF;margin:0}.tutor-user-public-profile .photo-area .pp-area .profile-name>span{font-style:normal;font-weight:500;font-size:15px;color:#757575;margin-right:10px}.tutor-user-public-profile .photo-area .pp-area .profile-name>span>span{color:white}.tutor-user-public-profile .photo-area .pp-area .profile-rating-media{text-align:right;padding-right:30px;padding-bottom:20px;-webkit-box-flex:1;flex:1;-o-flex:1;-ms-flex:1;-moz-flex:1;-webkit-flex:1}.tutor-user-public-profile .photo-area .pp-area .profile-rating-media .tutor-rating-container{font-size:16px}.tutor-user-public-profile .photo-area .pp-area .profile-rating-media .tutor-rating-container .rating-digits{color:white}.tutor-user-public-profile .photo-area .pp-area .profile-rating-media .tutor-rating-container .rating-total-meta{color:#757575}.tutor-user-public-profile .photo-area .pp-area .tutor-social-container{margin-top:15px;text-align:right}.tutor-user-public-profile .photo-area .pp-area .tutor-social-container a{display:inline-block;margin-left:20px;color:whitesmoke;cursor:pointer;text-decoration:none;font-size:16px}.tutor-user-public-profile .photo-area .pp-area .tutor-social-container a:hover{color:white}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-pic{border-radius:50%;height:153px;width:153px}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area{overflow:initial}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area .profile-pic{border-radius:10px;height:200px;width:153px}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area .profile-name,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area .profile-rating-media{padding-bottom:75px}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .tutor-user-profile-sidebar{margin-top:79px}.tutor-user-public-profile.tutor-user-public-profile-no-cp .photo-area{height:auto}.tutor-user-public-profile.tutor-user-public-profile-no-cp .cover-area{display:none}.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area{top:0}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-pic{border-radius:50%;height:153px;width:153px}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name{padding-top:49px}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name h3{color:#161616 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name>span>span{color:black !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media{position:absolute;left:226px;top:15px}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media .rating-digits{color:#161616 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-rating-container{text-align:left}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container{text-align:left !important;margin-top:5px !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container a{margin-left:0 !important;margin-right:20px;color:#757575 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container a:hover{color:#161616 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media{width:calc(100% - 157px)}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container{position:absolute;right:36px;left:auto}@media (min-width: 768px){.tutor-user-public-profile .content-for-mobile{display:none}.tutor-user-public-profile .content-for-desktop{display:block}}@media (max-width: 767px){.tutor-user-public-profile .content-for-mobile{display:block;margin:22px 0 0 0;padding:0 !important}.tutor-user-public-profile .content-for-desktop{display:none}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .photo-area,.tutor-user-public-profile.tutor-user-public-profile-no-cp .photo-area,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area{height:auto}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .photo-area .cover-area>div:first-child,.tutor-user-public-profile.tutor-user-public-profile-no-cp .photo-area .cover-area>div:first-child,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area .cover-area>div:first-child{height:220px}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .pp-area,.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .pp-area{padding-left:0 !important;top:-82px !important;flex-wrap:wrap;-o-flex-wrap:wrap;-ms-flex-wrap:wrap;-moz-flex-wrap:wrap;-webkit-flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-name,.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-rating-media,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-name,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-rating-media{width:100% !important;text-align:center !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-name>span>span,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name>span>span,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-name>span>span{color:black !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-name>span:nth-of-type(2)>span,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name>span:nth-of-type(2)>span,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-name>span:nth-of-type(2)>span{color:#C4C4C4 !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-name h3,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name h3,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-name h3{color:#161616 !important;font-size:30px !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .rating-digits,.tutor-user-public-profile.tutor-user-public-profile-no-cp .rating-digits,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .rating-digits{color:#161616 !important}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .pp-area{top:-98px !important}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-pic{height:160px !important;width:153px !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media,.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container,.tutor-user-public-profile.tutor-user-public-profile-no-cp .ratings{position:static !important;top:0 !important;text-align:center !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name{padding:0 !important}.tutor-user-public-profile .tutor-social-container{margin:15px 0 0 0 !important}.tutor-user-public-profile .tutor-social-container a{color:#7A7A7A !important}.tutor-user-public-profile .profile-name{padding:0 !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .pp-area,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .pp-area{margin-top:-83px !important;position:relative !important;top:0 !important}.tutor-user-public-profile .tutor-user-profile-sidebar{margin-top:0 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area{-webkit-box-pack:left !important;-ms-flex-pack:left !important;justify-content:left !important;-o-justify-content:left !important;-ms-justify-content:left !important;-moz-justify-content:left !important;-webkit-justify-content:left !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area *{text-align:left !important}}.tutor-user-public-profile .tutor-user-profile-sidebar{padding:15px;width:223px;float:left}.tutor-user-public-profile .tutor-user-profile-content{width:calc(100% - 228px);float:left;margin-bottom:30px}.tutor-user-public-profile .tutor-user-profile-content>h3{font-style:normal;font-weight:normal;font-size:24px;line-height:34px;color:#161616;margin-top:20px}.tutor-user-public-profile .tutor-user-profile-content>h3:first-child{margin-top:0}@media (max-width: 800px){.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area{padding-left:0 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media{left:178px !important}.tutor-user-public-profile .tutor-user-profile-sidebar,.tutor-user-public-profile .tutor-user-profile-content{width:100%;float:none}}.tutor-dashboard-builder-header{padding:10px 0px;border-bottom:2px solid #DCDFE5;position:fixed;top:0px;background:#fff;width:100%;z-index:99}@media (max-width: 991px){.tutor-dashboard-builder-header{position:static}}.tutor-dashboard-builder-header .tutor-row{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media (max-width: 991px){.tutor-dashboard-builder-header .tutor-row .tutor-col-auto{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.tutor-dashboard-builder-header .tutor-row .tutor-col-auto:first-child{margin-bottom:15px}}.tutor-dashboard-builder-header .tutor-button{white-space:nowrap;margin-left:auto}@media (max-width: 991px){.tutor-dashboard-builder-header .tutor-button{padding:6px 10px}}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left .tutor-dashboard-builder-logo{padding:0 25px;position:relative}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left .tutor-dashboard-builder-logo img{max-height:32px}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button{margin:0;padding:0px 25px;line-height:30px;border:none;border-left:1px solid #DCDFE5;background:transparent;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;color:var(--tutor-text-color);-webkit-transition:300ms;transition:300ms;font-weight:500;white-space:nowrap}@media (max-width: 991px){.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button{border-left:none}}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button i{font-size:24px;line-height:30px;margin-right:9px}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button:hover{color:var(--tutor-primary-color);background:transparent}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button:hover i{color:var(--tutor-primary-color)}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-right{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-right a{color:var(--tutor-text-color);font-weight:500;line-height:36px;padding:0 25px;-webkit-transition:300ms;transition:300ms;white-space:nowrap}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-right a i{font-size:36px;line-height:36px;display:inline-block;vertical-align:top;padding-right:9px}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-right a:hover{color:var(--tutor-primary-color)}.tutor-frontend-course-builder-section{padding:113px 0 45px;background-color:#ffffff}@media (max-width: 991px){.tutor-frontend-course-builder-section{padding-top:60px}.tutor-frontend-course-builder-section .tutor-col-8,.tutor-frontend-course-builder-section .tutor-col-4{width:100%;max-width:100%;-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%}}.admin-bar .tutor-dashboard-builder-header{top:32px}@media (max-width: 783px){.admin-bar .tutor-dashboard-builder-header{top:46px}}.tutor-course-builder-upload-tips{position:fixed;max-width:370px}@media (max-width: 991px){.tutor-course-builder-upload-tips{position:static}}.tutor-course-builder-upload-tips .tutor-course-builder-tips-title{font-size:16px;color:#8C94A8;font-weight:700;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-course-builder-upload-tips .tutor-course-builder-tips-title i{font-size:24px;color:var(--tutor-primary-color);margin-right:11px}.tutor-course-builder-upload-tips ul{margin:0;padding:0 0 0 35px;list-style:none}.tutor-course-builder-upload-tips ul li{position:relative;margin-bottom:8px;line-height:24px}.tutor-course-builder-upload-tips ul li::after{content:'';position:absolute;height:8px;width:8px;border-radius:50%;background:#DCDFE5;left:-26px;top:9px}.tutor-course-level-meta{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-course-level-meta label{margin:0 40px 0 0;font-weight:600}.tutor-frontend-builder-course-price .tutor-form-group input{margin-bottom:0}.tutor-frontend-builder-course-price .tutor-styled-radio{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-course-builder-attachements{display:-webkit-box;display:-ms-flexbox;display:flex;margin-left:-30px;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-course-builder-attachements .tutor-added-attachment{-webkit-box-flex:0;-ms-flex:0 0 calc(25% - 30px);flex:0 0 calc(25% - 30px);max-width:calc(25% - 30px);border:1px solid #DCDFE5;padding:35px 20px 20px;position:relative;text-align:center;margin-left:30px;margin-bottom:30px;border-radius:4px;-webkit-transition:300ms;transition:300ms;min-width:120px}@media (max-width: 480px){.tutor-course-builder-attachements .tutor-added-attachment{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 30px);flex:0 0 calc(50% - 30px);max-width:calc(50% - 30px)}}.tutor-course-builder-attachements .tutor-added-attachment i{font-size:58px;line-height:58px;margin-bottom:25px;display:block}.tutor-course-builder-attachements .tutor-added-attachment .tutor-delete-attachment{position:absolute;height:22px;width:22px;border:1px solid #DCDFE5;text-align:center;line-height:22px;top:-1px;right:-1px;font-size:10px;border-top-right-radius:4px;color:transparent;-webkit-transition:300ms;transition:300ms}.tutor-course-builder-attachements .tutor-added-attachment:hover,.tutor-course-builder-attachements .tutor-added-attachment:hover .tutor-delete-attachment{border-color:#D71830;color:#D71830}.tutor-course-builder-attachements .tutor-added-attachment span{display:block}.tutor-course-builder-attachements .tutor-added-attachment span a{font-size:14px;display:block;line-height:20px;color:#606C8F}.tutor-course-builder-btn-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap}#tutor-metabox-course-settings-tabs{background-color:#fff;border:1px solid #e5e5e5;margin:1em 0}.inside #tutor-metabox-course-settings-tabs{border:0;margin:0}.settings-tabs-heading{padding:1em;border-bottom:1px solid #e5e5e5}.settings-tabs-heading h3{font-size:14px;margin:0;line-height:1.4}.course-settings-tabs-container{display:-webkit-box;display:-ms-flexbox;display:flex}.course-settings-tabs-container .settings-tabs-navs-wrap{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;background:#F5F5F5}.settings-tabs-navs-wrap .settings-tabs-navs{margin:0;list-style:none}.settings-tabs-navs-wrap .settings-tabs-navs li{margin:0}.settings-tabs-navs-wrap .settings-tabs-navs li a{display:block;padding-top:10px;padding-bottom:10px;padding-left:15px;padding-right:15px;color:#23282d;text-decoration:none;background:#F5F5F5;text-transform:capitalize;border-bottom:1px solid #e5e5e5;border-left:3px solid transparent}.settings-tabs-navs-wrap .settings-tabs-navs li:last-child a{border-bottom:none}.settings-tabs-navs-wrap .settings-tabs-navs li a:focus{-webkit-box-shadow:none;box-shadow:none}.settings-tabs-navs-wrap .settings-tabs-navs li.active a{background-color:#ffffff;border-bottom:1px solid #e5e5e5;color:var(--tutor-primary-color);border-left:3px solid var(--tutor-primary-color)}.course-settings-tabs-container .settings-tabs-container{padding:1em;-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-field-radio p{margin-top:0}.lesson-modal-form-wrap .lesson-content-drip-wrap{padding:10px;border:1px solid #e4e4e4}.lesson-modal-form-wrap .lesson-content-drip-wrap h3{margin:0 0 10px 0}.select2-dropdown.increasezindex{z-index:9999999999999}.tutor-topic-title i.tutor-icon-move{line-height:unset}.select2-selection__rendered [class^="tutor-icon-"]{vertical-align:middle}@media (min-width: 992px){.tutor-option-tooltip.tutor-option-field{position:relative}.tutor-option-tooltip.tutor-option-field p.desc{position:absolute;left:calc(100% + 16px);background:#2A344F;width:160px;padding:10px 13px;opacity:0;visibility:hidden;-webkit-transition:300ms;transition:300ms;z-index:98;top:10px;color:#fff;border-radius:12px;font-size:12px;font-style:normal}.tutor-option-tooltip.tutor-option-field p.desc::before{content:url("data:image/svg+xml,%3Csvg width='14' height='18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 8.139C5.339 5.482 8.671 2.903 9.998.403c1.99-3.75 5.481 21.94 1.567 16.037C8.955 12.505 5.1 9.738 0 8.139z' fill='%232A344F' fill-rule='evenodd'/%3E%3C/svg%3E");position:absolute;left:-10px;top:16px}.tutor-option-tooltip.tutor-option-field:hover p.desc{opacity:1;visibility:visible}.tutor-option-tooltip.tutor-option-field input:focus+p.desc,.tutor-option-tooltip.tutor-option-field textarea:focus+p.desc{opacity:1;visibility:visible}}.tutor-instructor-pending-content{text-align:center}.tutor-instructor-pending-content a{margin-top:26px}.tutor-instructor-pending-content img{margin-bottom:69px;border-radius:10px}.tutor-instructor-thankyou-text h2{line-height:48px;font-size:40px;font-style:normal;font-weight:500;letter-spacing:0px;color:#161616;margin-bottom:26px}.tutor-instructor-extra-text{font-size:20px;font-style:normal;font-weight:400;letter-spacing:0px;color:#525252;line-height:30px}.tutor-frontend-dashboard-withdrawal h4{margin-bottom:25px}.withdraw-history-table-title h4{margin-top:45px}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border:1px solid #DCDBDC;border-radius:6px;padding:25px 35px 25px 30px;margin-bottom:15px}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .balance-info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .balance-info img{margin-right:15px}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .balance-info small{font-size:16px}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .balance-info p{font-size:20px;line-height:26px;margin:0}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a,.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a:hover,.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a:focus,.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a:active{text-decoration:none;background:#3E64DE;border-radius:3px;display:inline-block;padding:8px 18px;font-weight:500;font-size:16px;color:white;cursor:pointer}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a:hover{background:#2548bb}.tutor-frontend-dashboard-withdrawal h4{font-weight:500;font-size:24px}.tutor-frontend-dashboard-withdrawal .withdrawal-preference{font-size:15px;color:#7A7A7A}.tutor-frontend-dashboard-withdrawal .inline-image-text>img{width:23px;display:inline-block !important}.tutor-frontend-dashboard-withdrawal .inline-image-text>*{vertical-align:middle}.tutor-frontend-dashboard-withdrawal .inline-image-text.is-inline-block>*{display:inline-block}.tutor-frontend-dashboard-withdrawal .inline-image-text a{text-decoration:underline;color:#444}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap{display:none}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div{width:100%;height:100%;padding:15px;overflow:hidden;position:fixed;left:0;right:0;top:0;bottom:0;z-index:9999999999;background:rgba(0,0,0,0.589);display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div{display:inline-block;max-height:100%;width:100%;max-width:690px;background:white;overflow:auto;border-radius:15px;position:relative;padding:0}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div{padding:50px 70px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child>.tutor-icon-line-cross{position:absolute;cursor:pointer;top:30px;right:30px;font-size:20px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child tr,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child td,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child table,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child tbody{border:none;margin:0;padding:0}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child h3{margin:7px 0px;font-weight:600;padding:0}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:last-child{border-top:1px solid #E8E8E8;background:#F3F3F3}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount{border:1px solid #BABABA;border-radius:6px;background:white;height:43px;overflow:hidden;margin-bottom:12px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount>span{display:block;text-align:center;width:40px;float:left;height:100%;background:#f3f3f3;border-right:1px solid #BABABA}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount>span>span{font-size:18px;font-weight:bold;display:inline-block;line-height:41px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount input,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount input:focus,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount input:active{border:none;outline:0;height:100%;width:calc(100% - 40px);display:inline-block;margin:0;padding:0;padding-left:7px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-button-container{margin:50px 0 0;overflow:auto}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-button-container>button:last-child{float:right}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response{position:fixed;left:50px;bottom:50px;border:1px solid #E8E8E8;background:white;border-radius:10px;margin:0}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response:empty{display:none}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response>*{background:white;border:none}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response img{width:34px;margin:5px 13px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response b{font-weight:600}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response span{color:#333}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap button.close-withdraw-form-btn{background:#F3F3F3;border:1px solid #DCDBDC;color:#7A7A7A}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap button.close-withdraw-form-btn:hover{background:#e6e6e6}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdrawal-pop-up-success img{display:inline-block !important}.tutor-frontend-dashboard-withdrawal table.withdrawals-history{border:1px solid #DCDBDC;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th{background:#F3F3F3}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th,.tutor-frontend-dashboard-withdrawal table.withdrawals-history td{padding:10px;border:none;font-weight:normal;font-size:13px;text-align:left;vertical-align:middle}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th,.tutor-frontend-dashboard-withdrawal table.withdrawals-history td{border-bottom:1px solid #DCDBDC;border-collapse:collapse}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th:first-child,.tutor-frontend-dashboard-withdrawal table.withdrawals-history td:first-child{padding:10px 0 15px 15px}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th:last-child,.tutor-frontend-dashboard-withdrawal table.withdrawals-history td:last-child{text-align:right;padding-right:15px;width:50px}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th:nth-child(4),.tutor-frontend-dashboard-withdrawal table.withdrawals-history td:nth-child(4){width:105px}.tutor-frontend-dashboard-withdrawal table.withdrawals-history .withdraw-method-name{line-height:20px;font-size:15px;display:block}.tutor-frontend-dashboard-withdrawal table.withdrawals-history small{font-size:13px}.tutor-frontend-dashboard-withdrawal .tutor-status-text-container .tool-tip-container{position:relative;display:inline-block;height:24px;cursor:pointer}.tutor-frontend-dashboard-withdrawal .tutor-status-text-container .tool-tip-container img{display:inline-block !important;width:16px}.tutor-frontend-dashboard-withdrawal .tutor-status-text{display:inline-block;font-weight:bold;font-size:13px;color:#FFFFFF;background:gray;border-radius:2px;padding:3px 9px}.tutor-frontend-dashboard-withdrawal .tutor-status-text.status-approved{background:#24A148}.tutor-frontend-dashboard-withdrawal .tutor-status-text.status-pending{background:#ED9700}.tutor-frontend-dashboard-withdrawal .tutor-status-text.status-rejected{background:#F44337}.tutor-tooltip-inside .tooltip{position:absolute;z-index:2;overflow:hidden;clip:rect(0, 0, 0, 0);-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0;padding:0;cursor:default;color:#fff;font-family:Helvetica, Arial, sans-serif;font-size:14px;font-size:1.4rem;line-height:normal;text-align:center;white-space:nowrap;border-width:0;border-style:solid;border-color:#6d6e71;border-top-color:#373739;background-color:#373739;opacity:0;-webkit-transition:opacity .3s ease-in .3s;transition:opacity .3s ease-in .3s;font-size:13px;color:#FFFFFF;height:auto;text-align:center;white-space:normal;font-size:12px;background:#353535;border-radius:10px;padding:7px}.tutor-tooltip-inside .tooltip.isVisible{overflow:visible;clip:auto;width:150px;height:auto;padding:10px 15px;border-width:1px;opacity:1}.tutor-tooltip-inside .tooltip,.tutor-tooltip-inside .tooltip.tip-bottom,.tutor-tooltip-inside .tooltip.tip-top{left:50%;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0)}.tutor-tooltip-inside .tooltip,.tutor-tooltip-inside .tooltip.tip-bottom,.tutor-tooltip-inside .tooltip.tip-bottom-left,.tutor-tooltip-inside .tooltip.tip-bottom-right{top:110%;top:calc(100% + 13px)}.tutor-tooltip-inside .tooltip.tip-top,.tutor-tooltip-inside .tooltip.tip-top-left,.tutor-tooltip-inside .tooltip.tip-top-right{top:auto;bottom:110%;bottom:calc(100% + 13px)}.tutor-tooltip-inside .tooltip.tip-bottom-left,.tutor-tooltip-inside .tooltip.tip-bottom-right,.tutor-tooltip-inside .tooltip.tip-top-left,.tutor-tooltip-inside .tooltip.tip-top-right{-webkit-transform:none;transform:none}.tutor-tooltip-inside .tooltip.tip-bottom-left,.tutor-tooltip-inside .tooltip.tip-top-left{right:50%;left:auto;margin-right:-25px}.tutor-tooltip-inside .tooltip.tip-bottom-right,.tutor-tooltip-inside .tooltip.tip-top-right{margin-left:-25px}.tutor-tooltip-inside .tooltip.tip-left,.tutor-tooltip-inside .tooltip.tip-right{top:50%;-webkit-transform:translate(0, -50%);transform:translate(0, -50%)}.tutor-tooltip-inside .tooltip.tip-left{right:110%;right:calc(100% + 13px);left:auto}.tutor-tooltip-inside .tooltip.tip-right{left:110%;left:calc(100% + 13px)}.tutor-tooltip-inside .tooltip:after{content:' ';display:block;position:absolute;width:0;height:0;border-width:10px;border-style:solid;pointer-events:none}.tutor-tooltip-inside .tooltip:after,.tutor-tooltip-inside .tooltip.tip-bottom:after,.tutor-tooltip-inside .tooltip.tip-top:after{left:50%;margin-left:-10px}.tutor-tooltip-inside .tooltip:after,.tutor-tooltip-inside .tooltip.tip-bottom:after,.tutor-tooltip-inside .tooltip.tip-bottom-left:after,.tutor-tooltip-inside .tooltip.tip-bottom-right:after{top:-20px;border-color:transparent transparent #373739 transparent}.tutor-tooltip-inside .tooltip.tip-top:after,.tutor-tooltip-inside .tooltip.tip-top-left:after,.tutor-tooltip-inside .tooltip.tip-top-right:after{top:auto;bottom:-20px;border-color:#373739 transparent transparent transparent}.tutor-tooltip-inside .tooltip.tip-bottom-left:after,.tutor-tooltip-inside .tooltip.tip-bottom-right:after,.tutor-tooltip-inside .tooltip.tip-top-left:after,.tutor-tooltip-inside .tooltip.tip-top-right:after{margin-left:0}.tutor-tooltip-inside .tooltip.tip-bottom-left:after,.tutor-tooltip-inside .tooltip.tip-top-left:after{right:15px;left:auto}.tutor-tooltip-inside .tooltip.tip-bottom-right:after,.tutor-tooltip-inside .tooltip.tip-top-right:after{left:15px}.tutor-tooltip-inside .tooltip.tip-left:after,.tutor-tooltip-inside .tooltip.tip-right:after{top:50%;margin-top:-10px;margin-left:auto}.tutor-tooltip-inside .tooltip.tip-left:after{right:-20px;left:auto;border-color:transparent transparent transparent #373739}.tutor-tooltip-inside .tooltip.tip-right:after{left:-20px;border-color:transparent #373739 transparent transparent}.tutor-instructor-list,.tutor-instructor-list:focus,.tutor-instructor-list:active{outline:none;cursor:pointer;text-decoration:none !important;background:#FFFFFF;border:1px solid #DCDBDC;border-radius:6px}.tutor-instructor-list .tutor-instructor-profile-photo,.tutor-instructor-list .tutor-instructor-cover-photo{background-size:cover;background-repeat:no-repeat;background-position:center center}.tutor-instructor-list .tutor-instructor-profile-photo{border-radius:50%;width:60px;height:60px}.tutor-instructor-list .tutor-instructor-name{font-style:normal;font-weight:500;font-size:24px;color:#161616;margin:0}.tutor-instructor-list .tutor-instructor-course-count{margin-bottom:10px}.tutor-instructor-list .tutor-instructor-course-count>span{font-style:normal;font-weight:500;font-size:15px;color:#161616}.tutor-instructor-list .tutor-instructor-course-count>span:last-child{color:#808080}.tutor-instructor-list .tutor-instructor-rating *{font-size:16px}.tutor-instructor-list .tutor-instructor-rating .rating-digits{color:#161616}.tutor-instructor-list .tutor-instructor-rating .rating-total-meta{color:#7A7A7A}.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-cover-photo{width:100%;height:153px}.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-profile-photo{border:4px solid white;margin:-31px 15px 0}.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-name,.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-course-count,.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-rating{padding:0 15px}.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-cover-photo{display:none}.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-profile-photo{border-radius:0%;width:100%;height:160px}.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-name,.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-course-count,.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-rating{padding:0 15px}.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-name{margin-top:15px}.tutor-instructor-list.tutor-instructor-list-pp-top-left{padding:15px}.tutor-instructor-list.tutor-instructor-list-pp-top-left .tutor-instructor-cover-photo{display:none}.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-cover-photo,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-cover-photo{display:none}.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-profile-photo,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-profile-photo{border-radius:0%;height:102px;width:102px;top:0px;position:absolute}.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-name,.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-course-count,.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-rating,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-name,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-course-count,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-rating{margin-left:118px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:calc(100% - 110px);display:inline-block;position:relative;top:6px}.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-rating,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-rating{top:7px;position:relative}.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-profile-photo{border-radius:50%;height:82px;width:82px;margin:10px}.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-name{top:11px}.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-course-count{top:46px}.tutor-toast-parent{position:fixed;right:25px;bottom:50px;right:50px;left:auto;max-height:400px;width:350px;overflow-x:hidden;overflow-y:auto;background:transparent;z-index:99999999}.tutor-toast-parent:empty{display:none}.tutor-toast-parent>div{background:white;padding:10px;margin:15px;border-radius:15px;-webkit-box-shadow:3px 3px 10px rgba(0,0,0,0.363);box-shadow:3px 3px 10px rgba(0,0,0,0.363);border:1px solid #E8E8E8;background:white;border:none;display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-ms-flex-line-pack:center;align-content:center;-o-align-content:center;-ms-align-content:center;-moz-align-content:center;-webkit-align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center}.tutor-toast-parent>div>div{padding:8px}.tutor-toast-parent>div>div:nth-child(1),.tutor-toast-parent>div>div:nth-child(3){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}.tutor-toast-parent>div>div:nth-child(2){-webkit-box-flex:1;flex:1;-o-flex:1;-ms-flex:1;-moz-flex:1;-webkit-flex:1}.tutor-toast-parent>div img{width:100%;height:auto}.tutor-toast-parent>div b{font-weight:600;display:block}.tutor-toast-parent>div span{color:#333}.tutor-toast-parent>div i{cursor:pointer;font-size:14px}body.rtl .tutor-toast-parent{right:auto;left:50px}
2
-
3
- /*# sourceMappingURL=tutor-front.min.css.map */
1
  :root{--tutor-primary-color: #1B52D8;--tutor-primary-hover-color: #1b52a9;--tutor-text-color: #4B5981;--tutor-light-color: #B1B8C9;--tutor-primary-button-color: #3E64DE;--tutor-danger-button-color: #F44337;--tutor-success-button-color: #4BD863;--tutor-warning-button-color: #ED9700;--tutor-text-size: 16px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tutor-wrap{color:var(--tutor-text-color)}.tutor-wrap img{max-width:100%;height:auto}.tutor-custom-list-style{list-style:none;margin:0;padding:0}.tutor-custom-list-style li{position:relative;margin-bottom:5px;line-height:30px;padding-left:25px}.tutor-custom-list-style li:before{content:'\e90f';position:absolute;left:0;font-family:'tutor';color:var(--tutor-primary-color)}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:15px;height:15px;top:-6.5px;cursor:pointer}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.tutor-styled-radio>span{position:relative;padding-left:30px;cursor:pointer}.tutor-styled-radio>span::before{content:'';height:18px;width:18px;background:#F1F3F7;border:1px solid #DCDFE5;border-radius:50%;position:absolute;top:50%;margin-top:-9px;left:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:200ms;transition:200ms}.tutor-styled-radio>input{display:none !important}.tutor-styled-radio>input:checked+span::before{border:5px solid var(--tutor-primary-color)}.tutor-container{padding-left:15px;padding-right:15px;max-width:1140px;margin-right:auto;margin-left:auto;width:100%}.tutor-container.tutor-fluid{max-width:100%}.tutor-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.tutor-col-auto,.tutor-col,.tutor-col-3,.tutor-col-4,.tutor-col-5,.tutor-col-6,.tutor-col-7,.tutor-col-8,.tutor-col-9,.tutor-col-12{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.tutor-col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.tutor-col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.tutor-col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.tutor-col-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.tutor-col-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.tutor-col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.tutor-col-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.tutor-col-8{-webkit-box-flex:0;-ms-flex:0 0 66.666666%;flex:0 0 66.666666%;max-width:66.666666%}.tutor-col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.tutor-col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.tutor-align-items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media (max-width: 991px){.tutor-col-auto,.tutor-col,.tutor-col-3,.tutor-col-4,.tutor-col-6,.tutor-col-8,.tutor-col-9{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.tutor-col-md-100{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}@media (max-width: 767px){.tutor-col-auto,.tutor-col,.tutor-col-3,.tutor-col-4,.tutor-col-6,.tutor-col-8,.tutor-col-9{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}.tutor-segment-title,.tutor-single-course-segment .tutor-segment-title{font-size:18px;line-height:23px;font-weight:500;margin-bottom:13px;color:#000}.tutor-single-course-segment{margin-bottom:45px}.tutor-full-width-course-top h4,.tutor-full-width-course-top h5,.tutor-full-width-course-top h6{color:#000;font-weight:500}.tutor-full-width-course-top h6{font-size:14px}.tutor-leadinfo-top-meta{font-size:14px;margin-bottom:10px}.tutor-leadinfo-top-meta span{display:inline-block;margin-right:10px}.tutor-leadinfo-top-meta span i::before{margin-left:0}.tutor-leadinfo-top-meta i{margin-right:4px}.tutor-single-course-rating{color:#F8C51C;font-size:16px}.tutor-single-course-rating .tutor-single-rating-count{color:var(--tutor-text-color);font-weight:500}.tutor-single-course-rating .tutor-single-rating-count i{color:var(--tutor-light-color);font-style:normal;display:inline-block;margin-left:4px}.tutor-course-header-h1{font-size:36px;line-height:46px;color:var(--tutor-text-color);font-weight:500;margin:0 0 29px;padding:0}@media (max-width: 767px){.tutor-course-header-h1{font-size:26px;line-height:36px}}.tutor-course-summery{margin-bottom:40px}.tutor-single-course-meta{color:var(--tutor-text-color)}.tutor-single-course-meta ul{list-style:none;margin:0;padding:10px 0;overflow:hidden;line-height:21px}.tutor-single-course-meta.tutor-meta-top ul{padding-top:0;padding-bottom:15px}.tutor-single-course-meta ul li{float:left;vertical-align:top;margin-right:40px;margin-top:5px;margin-bottom:5px;min-width:95px}@media (max-width: 575px){.tutor-single-course-meta ul li{margin-right:10px}}.tutor-single-course-meta ul li:last-child{margin-right:0}.tutor-single-course-meta .tutor-single-course-avatar img{height:21px;width:21px;display:block;border-radius:50%;margin-right:3px}.tutor-single-course-meta ul li .tutor-single-course-avatar span{height:21px;width:21px;font-size:9px;text-align:center;line-height:21px;border-radius:50%;display:block;color:#ffffff}.tutor-single-course-meta ul li>div{display:inline-block;vertical-align:top}.tutor-single-course-meta ul li strong{margin:0;display:inline-block;line-height:21px;font-weight:400;color:var(--tutor-light-color);font-size:var(--tutor-text-size)}.tutor-single-course-meta ul li a{color:var(--tutor-text-color);font-weight:500;-webkit-transition:300ms;transition:300ms}.tutor-single-course-meta ul li a:hover{color:var(--tutor-primary-color)}.tutor-single-course-meta.tutor-meta-top ul li,.tutor-single-course-meta.tutor-meta-top ul li a{font-weight:700}.tutor-single-course-meta ul li{font-weight:500;color:var(--tutor-text-color)}.tutor-single-course-meta ul li span{color:var(--tutor-light-color);font-weight:400}.tutor-single-course-meta.tutor-lead-meta{margin-bottom:33px;border-top:1px solid #DCDFE5;border-bottom:1px solid #DCDFE5}@media (max-width: 991px){.tutor-single-course-meta.tutor-lead-meta{border-bottom:none}.tutor-single-course-meta.tutor-lead-meta ul{padding-bottom:0}.tutor-single-course-meta.tutor-lead-meta ul li{margin:5px;padding:5px 15px;border:1px solid #ddd;border-radius:4px}}.tutor-single-course-meta.tutor-lead-meta ul{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media (max-width: 991px){.tutor-single-course-meta.tutor-lead-meta ul{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}}.tutor-single-course-meta.tutor-lead-meta ul li span{display:block;margin-bottom:5px;color:var(--tutor-light-color)}.tutor-single-course-meta.tutor-lead-meta ul li a{color:var(--tutor-text-color);-webkit-transition:300ms;transition:300ms}.tutor-single-course-meta.tutor-lead-meta ul li a:hover{color:var(--tutor-primary-color)}.tutor-single-course-meta.tutor-lead-meta ul li a:not(:last-child):after{content:',';margin-right:4px}@media (max-width: 575px){.tutor-single-course-meta.tutor-lead-meta ul{display:block}.tutor-single-course-meta.tutor-lead-meta ul li{display:block;border:none;margin:0;width:100%;padding:0 0 10px}.tutor-single-course-meta.tutor-lead-meta ul li span{display:inline-block;color:var(--tutor-text-color);font-weight:700}.tutor-single-course-meta.tutor-lead-meta ul li span::after{content:':';color:var(--tutor-text-color)}}.tutor-course-benefits-content ul{list-style:none;display:block;overflow:hidden;-webkit-column-count:2;-moz-column-count:2;column-count:2;-webkit-column-gap:30px;-moz-column-gap:30px;column-gap:30px;margin:0}.tutor-course-topics-header{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.tutor-course-topics-header .tutor-course-topics-header-right span:not(:first-child){margin-left:45px}.tutor-course-topics-contents h4{font-size:var(--tutor-text-size);font-weight:500;margin-bottom:0;color:var(--tutor-text-color)}.tutor-course-topics-contents .tutor-course-title{cursor:pointer}.tutor-course-topics-contents .tutor-course-title h4{color:var(--tutor-primary-color);font-size:16px;line-height:25px;overflow:hidden;margin-top:0}.tutor-course-topic.tutor-active .tutor-course-title h4>i:before{content:"\e910"}.tutor-course-topics-contents .tutor-course-title h4 i{font-size:15px;line-height:25px;float:left;margin-right:10px}.tutor-course-topics-contents .tutor-course-topic{border:1px solid #DCE4E6;margin-bottom:20px;border-radius:5px;overflow:hidden}.tutor-course-title,.tutor-course-lesson{padding:14px 20px}.tutor-course-lesson{border-top:1px solid #DCE4E6}.tutor-course-lesson h5{line-height:22px;font-size:var(--tutor-text-size);margin-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;color:inherit;margin-top:0}.tutor-course-lesson h5 a{color:var(--tutor-primary-color);-webkit-transition:300ms;transition:300ms}.tutor-course-lesson h5 a:hover{color:var(--tutor-primary-hover-color)}.tutor-course-lesson h5 i{line-height:22px;vertical-align:text-top;margin-right:10px;color:var(--tutor-light-color);display:block}.tutor-course-lesson h5 .lesson-preview-icon i{margin-right:0;margin-left:10px}.tutor-course-lesson h5 .tutor-lesson-duration{margin-left:auto;padding-left:5px;-ms-flex-item-align:start;align-self:flex-start}.tutor-course-lesson .lesson-preview-title{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}table.course-single-gradebooks .datetime{margin:0;font-size:80%}.tutor-course-lessons .tutor-course-lesson h5 i.tutor-lesson-thumbnail-icon{height:50px;width:70px;border-radius:3px;text-align:center;line-height:50px;color:#fff;margin-right:10px;position:relative;z-index:1;overflow:hidden;font-size:20px;background-position:center center !important;background-size:cover !important}.tutor-course-lessons .tutor-course-lesson h5 i.tutor-lesson-thumbnail-icon:after{position:absolute;content:'';left:0;top:0;height:100%;width:100%;background:rgba(0,0,0,0.5);z-index:-1}.tutor-single-lesson-button-group,.tutor-topics-lesson-list .tutor-topics-in-single-lesson{border-radius:4px;margin-bottom:30px;border:1px solid #e8eff1}.tutor-single-lesson-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.tutor-lesson-sidebar{-webkit-box-flex:0;-ms-flex:0 0 400px;flex:0 0 400px}@media (max-width: 991px){.tutor-lesson-sidebar{position:absolute;left:0;top:70px;width:400px;max-width:95%;height:calc(100% - 70px);z-index:9;background:#fff;overflow-y:auto;display:none}}.tutor-spotlight-mode .tutor-lesson-sidebar{position:fixed;left:0;width:400px;height:100vh;overflow-y:scroll;background:#f4f8fa}.tutor-spotlight-mode #tutor-single-entry-content{padding-left:400px;min-height:calc(100vh - 46px)}.tutor-spotlight-mode #tutor-single-entry-content.sidebar-hidden{padding-left:0}@media (max-width: 991px){.tutor-spotlight-mode .tutor-lesson-sidebar{position:absolute;width:350px;height:auto}.tutor-spotlight-mode #tutor-single-entry-content{padding-left:0}}.admin-bar .tutor-spotlight-mode .tutor-lesson-sidebar{height:calc(100vh - 32px)}.tutor-single-entry-content{-webkit-box-flex:999;-ms-flex-positive:999;flex-grow:999}.tutor-single-lesson-button-group .tutor-single-lesson-button a,.tutor-topics-in-single-lesson .tutor-single-lesson-items a{padding:14px 100px 14px 17px;display:-webkit-box;display:-ms-flexbox;display:flex;color:var(--tutor-text-color);position:relative;border-top:1px solid #e8eff1}.tutor-single-lesson-button-group .tutor-single-lesson-button:first-child a{border-top:none}.tutor-lessons-under-topic .tutor-single-lesson-items.active a{background:rgba(233,235,238,0.35)}.tutor-topics-in-single-lesson{margin-bottom:5px;background-color:#ffffff;padding:0}.tutor-topics-in-single-lesson .tutor-single-lesson-items a span{margin:0;display:inline;color:var(--tutor-text-color)}.tutor-topics-in-single-lesson .tutor-topics-title{position:relative}.tutor-topics-in-single-lesson .tutor-topics-title button{position:absolute;right:15px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);padding:0 5px;font-size:16px;background:transparent;border:none;color:var(--tutor-text-color)}.tutor-topics-in-single-lesson.tutor-topic-active .tutor-topics-title button i::before{content:"\e910"}.tutor-topics-in-single-lesson .tutor-topics-title h3{margin:0;padding:10px 37px 10px 17px;font-size:16px;color:var(--tutor-primary-color);font-weight:500}.tutor-topics-in-single-lesson .tutor-topics-title h3{cursor:pointer;line-height:30px}span.toogle-informaiton-icon{background:#ccc;color:#fff;height:15px;width:15px;text-align:center;display:inline-block;line-height:15px;font-size:15px;border-radius:50%;margin-left:10px}.tutor-topics-in-single-lesson .tutor-topics-title h3 i{font-size:10px;margin-left:6px}.tutor-topics-in-single-lesson .tutor-topics-tutor-loop-rating-wraptitle h3 i{font-size:10px;vertical-align:middle;display:inline-block;padding:5px;color:#c7c7c7;-webkit-transition:300ms;transition:300ms;cursor:pointer}.tutor-topics-in-single-lesson .tutor-topics-title h3 i:hover{color:var(--tutor-primary-color)}.tutor-single-lesson-button-group .tutor-single-lesson-button a>i:first-child,.tutor-topics-in-single-lesson .tutor-single-lesson-items a>i:first-child{color:#c7c7c7;line-height:22px;display:inline-block;vertical-align:middle;margin-right:10px}.tutor-topics-in-single-lesson .tutor-single-lesson-items a>i.tutor-icon-doubt{color:var(--tutor-primary-color)}.tutor-topics-in-single-lesson .tutor-topics-summery{padding:14px;border-top:1px solid #dce4e6;display:none}.tutor-lessons-under-topic .tutor-lesson-right-icons{position:absolute;right:15px;top:14px}.tutor-lessons-under-topic .tutor-lesson-right-icons .tutor-lesson-complete{height:16px;width:16px;border:1px solid #e8eff1;border-radius:50%;font-size:9px;display:inline-block;line-height:16px;text-align:center;margin:0;vertical-align:middle;margin-left:8px}.tutor-lessons-under-topic .tutor-single-lesson-items.active .tutor-lesson-right-icons .tutor-lesson-complete{border-color:#b7d6b7}.tutor-lessons-under-topic .tutor-single-lesson-items.active .tutor-lesson-right-icons .tutor-lesson-complete.tutor-done,.tutor-lessons-under-topic .tutor-lesson-right-icons .tutor-lesson-complete.tutor-done{background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color);color:#fff}.tutor-lessons-under-topic .tutor-lesson-right-icons i{font-style:normal}.tutor-single-page-top-bar{background-color:var(--tutor-primary-color);height:70px;margin-bottom:50px;color:#ffffff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding-right:15px}.tutor-single-page-top-bar .tutor-single-lesson-segment form,.tutor-single-page-top-bar .tutor-single-lesson-segment{margin-bottom:0}.tutor-single-page-top-bar a{color:#ffffff;vertical-align:middle;display:inline-block;overflow:hidden}.tutor-single-page-top-bar a i{float:left}@media (max-width: 546px){.tutor-single-page-top-bar a{font-size:14px}}.tutor-topbar-home-btn i{margin-right:7px}.tutor-topbar-home-btn{margin-left:20px}@media screen and (max-width: 546px){.tutor-topbar-home-btn{margin-left:10px}}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button{background:transparent;color:#fff;padding-bottom:13px;cursor:pointer;border:1px solid #fff}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button i{font-size:14px}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button i::before{display:block;padding-top:2px}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button:hover{color:#fff;background:var(--tutor-primary-hover-color);border-color:var(--tutor-primary-hover-color)}.tutor-single-page-top-bar a:hover{color:#ffffff}.tutor-single-page-top-bar .tutor-topbar-content-title-wrap{text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-box-flex:999999;-ms-flex-positive:999999;flex-grow:999999}.tutor-single-page-top-bar .tutor-hide-sidebar-bar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.tutor-single-page-top-bar .tutor-topbar-mark-to-done{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}@media (max-width: 767px){.tutor-single-page-top-bar .tutor-topbar-content-title-wrap{display:none}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button{padding:9px 14px}}@media (max-width: 767px){.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button{padding:7px 12px;font-size:14px}}.tutor-single-page-top-bar .tutor-topbar-content-title-wrap i{vertical-align:middle;line-height:1;margin-right:3px}.tutor-lesson-content-area,.tutor-quiz-single-wrap{margin:0 100px 80px}@media (max-width: 1366px){.tutor-lesson-content-area,.tutor-quiz-single-wrap{margin:0 60px 80px}}@media (max-width: 991px){.tutor-lesson-content-area,.tutor-quiz-single-wrap{margin:0 40px}}.tutor-lesson-sidebar-hide-bar{background-color:var(--tutor-primary-hover-color);color:#ffffff;padding:0 12px;display:inline-block;line-height:70px}@media only screen and (max-width: 546px){.tutor-lesson-sidebar-hide-bar{padding:0 10px}}.tutor-single-page-top-bar a.tutor-lesson-sidebar-hide-bar i{font-size:20px;display:block;padding:25px 0}@media only screen and (max-width: 546px){.tutor-single-page-top-bar a.tutor-lesson-sidebar-hide-bar i{font-size:19px}}.sidebar-hidden a.tutor-lesson-sidebar-hide-bar .tutor-icon-angle-left:before{content:"\e903"}.tutor-sidebar-tabs-wrap{border-top:1px solid #e0e9ec}.tutor-tabs-btn-group{height:70px;display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-tabs-btn-group a{background-color:#f1f6f8;color:var(--tutor-text-color);display:block;line-height:70px;width:100%;text-align:center;border:1px solid #e0e9ec;border-top:none}.tutor-tabs-btn-group a span,.tutor-tabs-btn-group a i{font-size:24px;display:inline-block;vertical-align:top;line-height:70px}.tutor-tabs-btn-group a i{color:var(--tutor-primary-color)}.tutor-tabs-btn-group a span{font-size:15px;padding-left:3px}.tutor-tabs-btn-group a.active{background-color:#ffffff;border:none}.tutor-tabs-btn-group a:focus{outline:none}.tutor-single-lesson-segment{margin-bottom:35px}.tutor-single-lesson-wrap{background:#f4f8fa}.tutor-lesson-video-wrap .plyr--video{border-radius:4px}#tutor-lesson-sidebar-qa-tab-content{background-color:#ffffff;padding:20px}#tutor-lesson-sidebar-qa-tab-content .tutor-add-question-wrap{border-top:1px solid #e8eff1;padding-top:25px}#tutor-lesson-sidebar-qa-tab-content .tutor-add-question-wrap h3{color:var(--tutor-primary-color)}#tutor-lesson-sidebar-qa-tab-content .tutor-add-question-wrap button.tutor_ask_question_btn{display:block;width:100%;background-color:var(--tutor-primary-color);border-color:var(--tutor-primary-color)}#tutor-lesson-sidebar-qa-tab-content .tutor_question_answer_wrap .tutor_original_question{margin-bottom:20px;margin-top:20px}.tutor-lesson-sidebar-emptyqa-wrap{text-align:center;padding:50px 20px;color:var(--tutor-text-color)}.tutor-lesson-sidebar-emptyqa-wrap h3{margin:0;padding:0 0 25px}.tutor-lesson-sidebar-emptyqa-wrap i{font-size:150px;color:#e8eff1;line-height:0.8}.tutor-attachments-wrap{margin:-3px -3px 15px -3px}.tutor-attachments-wrap .tutor-lesson-attachment{display:inline-block;border:1px solid #e8eff1;border-radius:4px;padding:10px 16px 10px 12px;overflow:hidden;background:#f4f7f8;margin:3px;-webkit-transition:300ms;transition:300ms}.tutor-attachments-wrap .tutor-lesson-attachment:hover{-webkit-box-shadow:0 2px 4px rgba(0,0,0,0.15);box-shadow:0 2px 4px rgba(0,0,0,0.15)}.tutor-attachments-wrap .tutor-attachment-icon{font-size:30px;float:left;color:var(--tutor-text-color)}.tutor-attachments-wrap .tutor-attachment-icon i{display:block}.tutor-attachment-info{padding-left:10px;float:left}.tutor-attachment-info span{display:block;font-size:14px;line-height:16px;color:var(--tutor-text-color)}.tutor-attachment-info span+span{font-size:11px;color:var(--tutor-light-color)}.tutor-progress-bar-wrap{width:100%;margin:0 0 30px;display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-progress-bar{height:8px;color:#000000;line-height:25px;position:relative;background:#f1f1f1;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%;border-radius:30px;margin-top:7.5px}.tutor-progress-bar .tutor-progress-filled{background-color:var(--tutor-primary-color);height:8px;border-radius:30px;width:var(--tutor-progress-left)}.tutor-dashboard-content-inner .tutor-progress-bar{margin-top:9.5px;height:5px}.tutor-dashboard-content-inner .tutor-progress-bar .tutor-progress-filled{height:5px}.tutor-progress-bar .tutor-progress-filled:after{content:"";position:absolute;height:15px;width:15px;border:7.5px solid var(--tutor-primary-color);border-radius:50%;background:#fff;left:var(--tutor-progress-left);-webkit-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%);top:50%;-webkit-box-sizing:border-box;box-sizing:border-box}.tutor-progress-percent{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none;padding-left:20px}.tutor-course-purchase-box{margin-bottom:0}.tutor-price-preview-box .tutor-course-purchase-box button{display:block;width:100%;background:var(--tutor-primary-color);border-radius:3px;text-transform:uppercase;font-weight:500;cursor:pointer}.tutor-price-preview-box .tutor-course-purchase-box button i{margin-right:8px}.tutor-price-preview-box .tutor-course-enrolled-wrap,.tutor-price-preview-box .tutor-course-login-wrap,.tutor-price-preview-box .tutor-course-login-wrap form,.tutor-course-purchase-box form{margin-bottom:0}.tutor-price-preview-box .tutor-course-material-includes-wrap{margin-bottom:25px}.tutor-alert-warning.tutor-instructor-alert{padding:25px 25px 15px}.tutor-lead-info-btn-group{display:block;overflow:hidden;margin:0 -20px 25px;border-bottom:1px solid rgba(220,223,229,0.4);padding:0 20px 30px}.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap{display:block;margin-top:15px}.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap form{margin:0}.tutor-lead-info-btn-group a.tutor-button,.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap button{display:block;padding:18px 20px;border:none;text-align:center;border-radius:4px;text-transform:uppercase;line-height:1;-webkit-transition:300ms;transition:300ms;font-weight:700}.tutor-lead-info-btn-group a.tutor-button,.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap{width:100%;text-align:center;display:block}@media (max-width: 991px){.tutor-lead-info-btn-group a.tutor-button,.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap{width:auto}}.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap button{display:block;width:100%;background:#e8eff1;color:var(--tutor-light-color)}.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap button:hover{background:var(--tutor-primary-color);color:#ffffff}.tutor-single-add-to-cart-box .tutor-enroll-form{margin:0}.tutor-single-add-to-cart-box .tutor-enroll-form .tutor-course-enroll-wrap{padding:0}.tutor-single-add-to-cart-box .tutor-enroll-form .tutor-course-enroll-wrap button{display:block;width:100%;text-align:center}.tutor-single-add-to-cart-box.cart-required-login{position:relative}.tutor-single-add-to-cart-box.cart-required-login:before{position:absolute;content:"";top:0;bottom:0;left:0;right:0;z-index:99;cursor:pointer}.tutor-course-enrolled-review-wrap .write-course-review-link-btn{color:#fff;background-color:var(--tutor-primary-color);border-color:var(--tutor-primary-color);display:inline-block;padding:15px 30px;border-radius:4px;text-transform:capitalize;line-height:1;-webkit-transition:300ms;transition:300ms}.tutor-course-enrolled-review-wrap .write-course-review-link-btn:hover{background-color:var(--tutor-primary-hover-color);border-color:var(--tutor-primary-hover-color)}.tutor-course-enrolled-review-wrap .tutor-form-group{margin-bottom:10px}.tutor-course-enrolled-review-wrap .tutor-form-group textarea{height:120px;background:#f7f7f7;border:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;border-radius:4px;line-height:1.5;text-indent:0;padding:15px}.tutor-write-review-form{margin-top:30px}.tutor-form-row{display:-webkit-box;display:-ms-flexbox;display:flex;margin-left:-15px;margin-right:-15px}.tutor-form-col-4,.tutor-form-col-6,.tutor-form-col-12{padding-left:15px;padding-right:15px}.tutor-form-col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.tutor-form-col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.tutor-form-col-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333%;flex:0 0 33.3333%;max-width:33.3333%}@media (max-width: 768px){.tutor-form-row{-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-form-col-4,.tutor-form-col-6,.tutor-form-col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}ul.tutor-required-fields{list-style:none;padding:10px;margin:0}.tutor-star-rating-group{color:#f4c150;display:inline-block;text-align:left}.tutor-star-rating-group i{margin-right:4px}@media (max-width: 546px){.tutor-write-review-box .tutor-star-rating-group{font-size:26px;display:block;text-align:center}}.tutor-write-review-box .tutor-star-rating-group i{margin-right:4px;cursor:pointer}.tutor-queston-and-answer-wrap{margin:20px 0}.tutor-question-top{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:20px;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.tutor-ask-question-btn{text-align:right}.tutor-question-search-form{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%}.tutor-question-search-form form{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-question-search-form input[type="text"]{max-width:60%}.tutor-add-question-wrap{margin:20px 0}.tutor-add-question-wrap .tutor-form-group{margin-bottom:10px}.tutor_question_cancel{margin-right:5px}.updating-icon:before{font-family:"tutor";margin-right:5px;content:"\e91d";-webkit-animation:spin 1s steps(8) infinite;animation:spin 1s steps(8) infinite;display:inline-block}.loading-lesson .tutor-lesson-video-wrap:before{font-family:"tutor";content:"\e91d";-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block;z-index:9;position:absolute;left:50%;top:50%;font-size:50px;margin-left:-25px;margin-top:-12px}.loading-lesson .tutor-lesson-video-wrap:after{position:absolute;content:"";top:0;left:0;background:rgba(255,255,255,0.8);width:100%;height:100%}.tutor-lesson-video-wrap{position:relative}.tutor_question_area{padding:25px 20px;background:#f4f7f8;border-radius:4px}.tutor_question_area p:last-child{margin-bottom:0}.tutor_add_answer_row{text-align:right;margin-top:20px}.tutor_add_answer_row .tutor-form-group:last-child{margin-top:20px}.tutor_admin_answers_list_wrap+.tutor_add_answer_row,.tutor_admin_answers_list_wrap{margin-left:100px}@media (max-width: 991px){.tutor_admin_answers_list_wrap+.tutor_add_answer_row,.tutor_admin_answers_list_wrap{margin-left:30px}}.tutor_original_question{margin-bottom:30px}.tutor_admin_answers_list_wrap .tutor_individual_answer{margin-bottom:40px}.tutor_admin_answers_list_wrap .tutor_question_area{background:#edf9f1}.question-top-meta .tutor-question-avater a{display:inline-block}.question-top-meta .tutor-question-avater a span{height:50px;width:50px;border-radius:50%;display:block;line-height:50px;text-align:center;font-size:17px}.question-top-meta .tutor-question-avater a img{width:50px;height:50px;border-radius:50%}.question-top-meta{overflow:hidden;margin-bottom:20px}.question-top-meta .tutor-question-avater{float:left}.question-top-meta .review-meta{float:left;margin-bottom:0;margin-left:10px}.question-top-meta .review-meta a{display:block;font-size:18px;color:var(--tutor-text-color);line-height:20px}.question-top-meta .review-meta span{color:var(--tutor-light-color);vertical-align:text-top;display:block}.tutor_wp_editor_wrap .tutor-form-group a.tutor-button{margin-right:6px}.tutor-no-announcements{text-align:center}.tutor-announcement-meta{margin-bottom:10px;font-size:13px}.tutor-announcement{border:1px solid #eee;padding:20px;margin-top:30px;border-radius:4px}.announcement-delete-btn{float:right}.announcement-delete-btn a{color:var(--tutor-light-color);-webkit-transition:300ms;transition:300ms}.announcement-delete-btn a:hover{color:red}.tutor-announcement-title-wrap h3{color:var(--tutor-text-color);font-weight:500;margin-bottom:10px}.tutor-quiz-header span{background:#f88f1c;color:#ffffff;display:inline-block;padding:4px 10px;border-radius:4px;line-height:1;text-transform:uppercase;font-size:10px}.tutor-quiz-header h2{color:var(--tutor-text-color);font-size:36px;line-height:46px;font-weight:500;margin-bottom:15px}.tutor-quiz-header h5{color:var(--tutor-light-color)}.tutor-quiz-header h5 a{color:var(--tutor-text-color);font-weight:500}.tutor-quiz-header .tutor-quiz-meta{list-style:none;margin:20px 0 40px;padding:15px 0;border-top:1px solid #dcdfe5;border-bottom:1px solid #dcdfe5;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-quiz-header .tutor-quiz-meta li{display:inline-block;color:var(--tutor-text-color)}.tutor-quiz-header .tutor-quiz-meta li strong{display:block;color:var(--tutor-light-color);font-weight:400}@media (max-width: 767px){.tutor-quiz-header .tutor-quiz-meta{display:block;border:none;padding:0}.tutor-quiz-header .tutor-quiz-meta li{display:block;color:var(--tutor-text-color);margin:5px;border:none;padding:0;border-radius:0}.tutor-quiz-header .tutor-quiz-meta li strong{display:inline-block;margin-right:5px}}@media (max-width: 1199.98px){.tutor-quiz-attempt-history{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}}.tutor-quiz-attempt-history-title{font-size:18px;color:var(--tutor-light-color);line-height:23px;font-weight:500;margin-bottom:15px;margin-top:70px}.tutor-quiz-attempt-history table{border-collapse:collapse;border-radius:4px;margin-bottom:0}.tutor-quiz-attempt-history th{font-weight:400}.tutor-quiz-attempt-history table,.tutor-quiz-attempt-history th,.tutor-quiz-attempt-history td{border:1px solid #e8eff1;padding:10px !important}.tutor-quiz-attempt-history table span.result-fail,.tutor-quiz-attempt-history table span.result-pass{display:inline-block;color:#fff;border-radius:2px;width:47px;height:26px;line-height:26px;text-align:center}.tutor-quiz-attempt-history table span.result-fail{background:#df3247}.tutor-quiz-attempt-history table span.result-pass{background:var(--tutor-success-button-color)}.tutor-quiz-attempt-history table span.result-review-required{background:#f5b30d;padding:3px 5px;color:#fff;border-radius:2px;text-align:center;font-size:90%}.quiz-head-meta-info{color:var(--tutor-light-color);margin-bottom:40px}.quiz-head-meta-info span{color:var(--tutor-text-color)}#tutor-quiz-attempt-questions-wrap{margin-bottom:50px}.tutor-quiz-single-wrap .question-text{color:var(--tutor-text-color);font-size:20px;font-weight:600}.tutor-quiz-single-wrap .question-description{color:var(--tutor-text-color)}.quiz-attempt-single-question{margin-bottom:80px}.fill-in-the-blank-field .fill-in-the-blank-text-input{display:inline;border-top:none;border-left:none;border-right:none;border-bottom:1px dashed;background-color:transparent;padding:0px;border-radius:0;-webkit-box-shadow:none;box-shadow:none;margin:0 10px}.fill-in-the-blank-field .fill-in-the-blank-text-input:focus{background:none;outline:none}.tutor-quiz-answers-wrap{margin-bottom:50px}.tutor-quiz-answers-wrap textarea{background:transparent;border:1px solid #d4dadb;height:175px;border-radius:5px;-webkit-box-shadow:none;box-shadow:none;min-width:100%;margin-bottom:5px}.tutor-quiz-answers-wrap textarea:focus{background:transparent;outline:none !important}.tutor-quiz-answers-wrap p{margin:0;line-height:26px}.quiz-answer-input-body .quiz-answer-image-wrap{margin-top:10px;margin-bottom:10px;max-width:200px}.quiz-answer-image-wrap img{max-width:100%;height:auto}.tutor-quiz-answers-wrap label{display:block;margin-bottom:15px;cursor:pointer}.tutor-quiz-answers-wrap label.answer-view-image,.tutor-quiz-answers-wrap label.answer-view-text_image{text-align:center;margin:0 10px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;max-width:25%}.quiz-answer-input-bottom{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;line-height:20px}.quiz-answer-input-bottom.wrong-answer{color:#e27c89}.quiz-answer-input-bottom.wrong-answer .quiz-answer-input-field{border:1px solid #e27c89;padding:5px 10px}.quiz-answer-input-bottom.right-answer{color:#86b324}.quiz-answer-input-bottom.right-answer .quiz-answer-input-field{border:1px solid #bbd58c;padding:5px 10px}.wrong-right-text{padding:5px 10px}.tutor-quiz-answers-wrap label input{display:none}.tutor-quiz-answers-wrap label input+span{width:20px;height:20px;border:1px solid #dedede;display:inline-block;border-radius:2px;position:relative;margin-right:5px}.tutor-quiz-answers-wrap label input:checked+span{background:var(--tutor-primary-color);border-color:var(--tutor-primary-color)}.tutor-quiz-answers-wrap label input:checked+span:after{content:"\e90f";position:absolute;font-family:"tutor";color:#fff;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);font-size:11px;line-height:1}.tutor-quiz-answers-wrap label input[type="radio"]+span{content:"";border-radius:50%;margin-right:4px;vertical-align:top;font-size:1em}.tutor-quiz-answers-wrap label input[type="radio"]+span:after{content:"";height:8px;width:8px;background:#fff;border-radius:50%;left:50%}.question-type-ordering-item{border:1px solid #d4dadb;padding:10px;margin-bottom:10px;width:250px;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex}.question-type-ordering-item.ui-sortable-placeholder{background-color:transparent}.question-type-ordering-item .answer-title{-webkit-box-flex:1;-ms-flex:1;flex:1}.question-type-ordering-item .answer-sorting-bar{cursor:pointer}.quiz-answer-item-matching{padding:10px;display:-webkit-box;display:-ms-flexbox;display:flex;width:25%}.answer-type-matching .quiz-answer-matching-items-wrap .quiz-answer-item-matching{display:inline-block;max-width:none;width:25%;padding:0 10px;vertical-align:top}@media (max-width: 767px){.answer-type-matching .quiz-answer-matching-items-wrap .quiz-answer-item-matching{width:50%}}@media (max-width: 575px){.answer-type-matching .quiz-answer-matching-items-wrap .quiz-answer-item-matching{width:100%}}.answer-type-matching .quiz-answer-matching-items-wrap{margin:0 -10px}.quiz-answer-matching-droppable{height:48px;min-width:200px;border:1px dashed #d4dadb}.quiz-draggable-answer-item{padding:10px 20px;border:1px solid #d4dadb;margin-right:10px;margin-bottom:10px;background-color:#fff;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.quiz-draggable-answer-item .draggable-answer-title{-webkit-box-flex:1;-ms-flex:1;flex:1}.quiz-draggable-rand-answers{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:80px}.drop-hover{display:none}.quiz-answer-matching-droppable .drop-hover{background-color:#eeeeee;height:100%;width:100%;display:inline-block;float:left}.quiz-answer-matching-droppable .quiz-draggable-answer-item{width:100%;max-width:100%}.quiz-draggable-answer-item .draggable-answer-icon{margin-left:15px}.answer-type-image_matching .quiz-answer-item-matching{display:block}.answer-type-image_matching .quiz-answer-matching-items-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-10px;margin-right:-10px}.answer-type-image_matching .quiz-answer-matching-droppable{width:100%;min-width:100%}.answer-type-image_matching img{width:100%;height:auto}.tutor-quiz-questions-pagination ul{margin:0;padding:0;list-style:none}.tutor-quiz-questions-pagination ul li{display:inline-block}.tutor-quiz-questions-pagination ul li a{background-color:var(--tutor-primary-color);padding:7px 13px;display:block;border-radius:50%;margin-right:10px;color:#ffffff}.tutor-quiz-questions-pagination ul li a:hover,.tutor-quiz-questions-pagination ul li a.active{background-color:var(--tutor-primary-color)}.quiz-image-answering-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin-left:-10px;margin-right:-10px}.quiz-image-answering-wrap img{max-width:100%;height:auto}.quiz-image-answering-answer{margin-right:10px;margin-left:10px;width:15%}.quiz-image-answering-image-wrap{margin-bottom:20px}.tutor-quiz-answers-wrap .quiz-image-answering-input-field-wrap input{width:100%;display:block;border:1px solid #d4dadb;-webkit-box-shadow:none;box-shadow:none;background:transparent;border-radius:2px;height:42px}.tutor-quiz-answers-wrap .quiz-image-answering-input-field-wrap input:focus{background:transparent;outline-offset:0 !important}.tutor-next-previous-pagination-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-next-previous-pagination-wrap a{color:var(--tutor-primary-color)}.tutor-course-filter-wrapper{overflow:auto;max-width:1140px !important;margin:0 auto !important}.tutor-course-filter-wrapper>div{padding:12px}.tutor-course-filter-wrapper>div:first-child{width:250px;float:left}.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field{border:1px solid #BABABA;border-radius:6px;overflow:hidden;padding:0 6px;height:auto}.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field input,.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field input:focus,.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field input:active{border:none;outline:0;padding:0;display:inline-block;width:calc(100% - 24px);font-weight:normal;font-size:16px;color:#7A7A7A;height:35px}.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field i{font-size:17px;cursor:pointer;color:#3E64DE}.tutor-course-filter-wrapper>div:first-child h4{font-weight:normal;font-size:20px;color:#161616;margin:16px 0px 12px}.tutor-course-filter-wrapper>div:first-child label{display:block;cursor:pointer;font-weight:normal;font-size:16px;color:#353535}.tutor-course-filter-wrapper>div:last-child{width:calc(100% - 250px);float:right}.tutor-course-filter-wrapper>div:last-child select[name=tutor_course_filter]{border:1px solid #7A7A7A;color:#7A7A7A;padding:3px 4px;font-size:16px;border-radius:6px;cursor:pointer}.tutor-course-filter-wrapper>div .tutor-course-filter-loop-container{display:none}.tutor-course-filter-wrapper .tutor-clear-all-filter{margin-top:28px;display:none}.tutor-course-filter-wrapper .tutor-clear-all-filter>a{height:21px;background:#E8E8E8;border-radius:22px;line-height:21px;text-align:center;font-size:13px;font-weight:500;margin-top:20px;color:#7a7a7a;padding:5px 10px}.tutor-course-filter-wrapper .tutor-clear-all-filter a>i{font-size:10px}@media (max-width: 767px){.tutor-course-filter-wrapper>div{width:100% !important;float:none !important}.tutor-course-filter-wrapper .tutor-course-filter-container>div{overflow:auto}.tutor-course-filter-wrapper .tutor-course-filter-container>div>div{width:50%;float:left}.tutor-course-filter-wrapper .tutor-course-filter-container>div>div:first-child{width:100%}}div[class*="tutor-course-col"]{padding-left:15px;padding-right:15px;margin-bottom:30px}.tutor-course-loop{background:#fff;color:#29303b;overflow:hidden;position:relative;vertical-align:top;border-radius:4px;-webkit-transition:300ms;transition:300ms;border:1px solid rgba(0,0,0,0.05);height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-course-loop a,.tutor-widget-course a{text-decoration:none !important}.tutor-course-header{position:relative}.tutor-course-loop-header-meta{position:absolute;left:0;top:13px;width:100%;padding-left:13px;padding-right:13px;overflow:hidden}.tutor-course-loop-header-meta .tutor-course-wishlist{float:right;background:#fff;font-size:19px;padding:5px 5px;border-radius:3px;-webkit-transition:300ms;transition:300ms}.tutor-course-loop-header-meta .tutor-course-wishlist a{display:block;color:var(--tutor-primary-color);-webkit-transition:300ms;transition:300ms}.tutor-course-loop-header-meta .tutor-course-wishlist:hover{background:var(--tutor-primary-color)}.tutor-course-loop-header-meta .tutor-course-wishlist:hover a{color:#fff}.tutor-course-loop-header-meta .tutor-course-wishlist a:focus{outline:none}.tutor-course-loop-header-meta .tutor-course-wishlist a.has-wish-listed:before{content:"\e908"}.tutor-course-loop-header-meta .tutor-course-wishlist a.updating-icon:before{content:"\e91d";margin-right:0}.tutor-course-loop-level{display:inline-block;background:#9013fe;padding:0 7px;color:#fff;font-size:12px;line-height:20px;border-radius:2px;-webkit-box-shadow:0 0 1px rgba(0,0,0,0.1);box-shadow:0 0 1px rgba(0,0,0,0.1)}.tutor-course-loop:hover{-webkit-box-shadow:0 4px 23px rgba(0,0,0,0.1);box-shadow:0 4px 23px rgba(0,0,0,0.1)}.tutor-course-loop p{margin:0}.tutor-course-loop .tutor-course-header a,.tutor-course-loop .tutor-course-header a img{display:block;border-top-left-radius:4px;border-top-right-radius:4px}.tutor-loop-course-container{padding:25px 19px}.tutor-loop-rating-wrap{color:#f8c51c;margin-bottom:2px;font-size:16px}.tutor-rating-count{color:var(--tutor-text-color)}.tutor-rating-count i{font-style:normal;display:inline-block;margin-left:5px}.tutor-loop-rating-wrap i:before{margin-right:4px;margin-left:0}.tutor-course-loop-title h2{font-size:20px;line-height:28px;font-weight:600;margin-bottom:17px}.tutor-course-loop-title h2 a{color:var(--tutor-text-color)}.tutor-course-loop-title h2 a:hover{color:var(--tutor-primary-color)}.tutor-course-loop-meta{margin-bottom:15px;color:var(--tutor-text-color);font-size:var(--tutor-text-size)}.tutor-course-loop-meta>div{display:inline-block}.tutor-course-loop-meta>div i{font-size:16px;margin-right:4px}.tutor-course-loop-meta>div i,.tutor-course-loop-meta>div span{vertical-align:middle}.tutor-course-loop-meta>div+div{margin-left:10px}.tutor-loop-course-footer{padding:15px;border-top:1px solid rgba(0,0,0,0.05);color:#838791;font-size:12px;line-height:25px;border-bottom-left-radius:4px;border-bottom-right-radius:4px;font-weight:400}.tutor-loop-course-footer:after{content:"";display:table;clear:both}.tutor-loop-course-footer span.woocommerce-Price-currencySymbol{vertical-align:top}.tutor-course-loop-price{color:var(--tutor-text-color);font-size:16px}.tutor-course-loop-price .price del{font-weight:400}.tutor-course-loop-price .price del span{text-decoration:line-through;color:var(--tutor-light-color)}.tutor-course-loop-price .price del>span{margin-right:6px}.tutor-course-loop-price .price del+ins{background:transparent;margin-left:0;text-decoration:none}.tutor-course-loop-price>.price{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;font-weight:600;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-course-loop-price>.price .subscription-details{font-size:15px;margin-left:4px;font-weight:400}.tutor-course-loop-price>.price .subscription-details+.tutor-loop-cart-btn-wrap{margin-left:0;margin-top:4px}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap a{color:var(--tutor-text-color);position:relative;line-height:20px;vertical-align:top;display:block;font-weight:400;background:transparent;padding:0}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap a:hover{color:var(--tutor-primary-color)}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap{margin-left:auto}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap a.added{display:none}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap a::before{content:"\e915";font-family:"tutor" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:20px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-right:5px;vertical-align:top;color:var(--tutor-primary-color)}@-webkit-keyframes mymove{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes mymove{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.tutor-course-loop:hover .tutor-loop-course-footer .tutor-loop-cart-btn-wrap{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-course-col-4{width:25%}.tutor-course-col-3{width:33.33%}.tutor-course-col-2{width:50%}.tutor-course-col-1{width:100%}.tutor-course-col-1 .tutor-course-loop{width:100%}.tutor-course-col-5{width:20%}.tutor-course-col-6{width:16.66%}@media (max-width: 991px){.tutor-course-col-6,.tutor-course-col-5,.tutor-course-col-4,.tutor-course-col-3,.tutor-course-col-2{width:50%}}@media (max-width: 575px){.tutor-course-col-6,.tutor-course-col-5,.tutor-course-col-4,.tutor-course-col-3,.tutor-course-col-2{width:100%}}.tutor-course-filter-wrap{margin-bottom:50px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-course-filter-form{display:inline-block;margin:0}.tutor-courses{clear:both;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-15px;margin-right:-15px;padding:0}.tutor-loop-course-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;height:100%}.clearfix:before,.clearfix:after{display:block;clear:both;content:""}.tutor-loop-author,.tutor-meta{color:#bac0cf}.tutor-text-mute{color:#bac0cf;font-weight:400}.tutor-loop-author{overflow:hidden;font-size:var(--tutor-text-size)}.tutor-loop-author .tutor-single-course-avatar img{width:25px;height:25px;display:block;border-radius:50%;margin-right:6px}.tutor-loop-author .tutor-single-course-avatar .tutor-text-avatar{height:25px;width:25px;display:inline-block;border-radius:50%;text-align:center;line-height:25px;font-size:11px;margin-right:6px}.tutor-loop-author>div{display:inline-block;float:left}.tutor-loop-author>div a{color:var(--tutor-text-color);font-weight:500;-webkit-transition:300ms;transition:300ms}.tutor-loop-author>div a:hover{color:var(--tutor-primary-color)}.tutor-loop-author>div span{display:inline-block;margin:0 2px 0 2px;color:var(--tutor-light-color);line-height:25px;font-weight:400}.tutor-course-lising-category a:not(:last-child):after{content:", ";margin-right:5px}.tutor-course-enrolled-wrap{margin:0 -20px -20px !important;padding:12px 20px;overflow:hidden;border-top:1px solid #dcdfe5;font-size:14px}.tutor-course-enrolled-wrap p{font-weight:600;margin:0}.tutor-course-enrolled-wrap p i{padding-right:9px;float:left;font-size:20px;line-height:20px}.tutor-course-enrolled-wrap p i,.tutor-course-enrolled-wrap p span{color:var(--tutor-success-button-color)}.tutor-notice-warning{background-color:#fcf8e3;border-color:#faebcc;padding:20px;margin-bottom:10px}.tutor-info-msg,.tutor-success-msg,.tutor-warning-msg,.tutor-error-msg{margin:10px 0;padding:10px;border-radius:3px 3px 3px 3px}.tutor-info-msg{color:var(--tutor-primary-color);background-color:#bef}.tutor-success-msg{color:var(--tutor-success-button-color);background-color:#dff2bf}.tutor-warning-msg{color:#9f6000;background-color:#feefb3}.tutor-error-msg{color:#d8000c;background-color:#fbdcdc;border:1px solid #d8000c}.cart-required-login,.cart-required-login a,.cart-required-login form{cursor:pointer}.single_add_to_cart_button,a.tutor-button,.tutor-button,a.tutor-btn,.tutor-btn{color:#fff;border:1px solid var(--tutor-primary-button-color);background-color:var(--tutor-primary-button-color);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 20px;border-radius:4px;text-transform:capitalize;line-height:20px;font-size:14px;font-weight:600;cursor:pointer;-webkit-transition:300ms;transition:300ms;overflow:hidden;vertical-align:top}.single_add_to_cart_button i,a.tutor-button i,.tutor-button i,a.tutor-btn i,.tutor-btn i{line-height:19px;margin-right:7px;font-size:16px}.single_add_to_cart_button.btn-sm,a.tutor-button.btn-sm,.tutor-button.btn-sm,a.tutor-btn.btn-sm,.tutor-btn.btn-sm{padding:9px 14px;line-height:19px}a.tutor-button.bordered-button,.tutor-button.bordered-button,a.tutor-btn.bordered-btn,.tutor-btn.bordered-btn{color:var(--tutor-primary-button-color);border:1px solid var(--tutor-primary-button-color);background-color:transparent !important}a.tutor-button.default-btn,.tutor-button.default-btn,a.tutor-btn.default-btn,.tutor-btn.default-btn{color:#393c40;border:1px solid #b8babe;background:var(--tutor-primary-button-color)}a.tutor-button.default-btn i,.tutor-button.default-btn i,a.tutor-btn.default-btn i,.tutor-btn.default-btn i{color:#fff}a.tutor-button.default-btn:hover,.tutor-button.default-btn:hover,a.tutor-btn.default-btn:hover,.tutor-btn.default-btn:hover{background-color:var(--tutor-primary-button-color);border-color:var(--tutor-primary-color);color:#fff}a.tutor-button.default-btn:hover i,.tutor-button.default-btn:hover i,a.tutor-btn.default-btn:hover i,.tutor-btn.default-btn:hover i{color:#fff}a.tutor-button:hover,.tutor-button:hover,a.tutor-btn:hover,.tutor-btn:hover{background-color:var(--tutor-primary-button-color);border-color:var(--tutor-primary-button-color);color:#fff;-webkit-filter:brightness(0.9);filter:brightness(0.9)}a.tutor-button.bordered-button:hover,.tutor-button.bordered-button:hover,a.tutor-btn.bordered-btn:hover,.tutor-btn.bordered-btn:hover{border:1px solid var(--tutor-primary-button-color);background-color:var(--tutor-primary-button-color) !important;color:#fff !important}a.tutor-button.button-light,.tutor-button.button-light{color:#b1b8c9;background-color:#dae4e6;border:1px solid #dae4e6}a.tutor-button.button-light:hover,.tutor-button.button-light:hover{color:#939bae;background-color:#e8eff1;border:1px solid #e8eff1}.tutor-button.tutor-danger{background-color:var(--tutor-danger-button-color);border-color:#e53935}.tutor-button.tutor-danger:hover{background-color:var(--tutor-danger-button-color);border-color:var(--tutor-danger-button-color);-webkit-filter:brightness(0.9);filter:brightness(0.9)}.tutor-button.tutor-success{background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color)}.tutor-button.tutor-success:hover{background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color);-webkit-filter:brightness(0.9);filter:brightness(0.9)}.tutor-button.tutor-warning{background:var(--tutor-warning-button-color);border-color:var(--tutor-warning-button-color)}.tutor-button.tutor-warning:hover{background:var(--tutor-warning-button-color);border-color:var(--tutor-warning-button-color);-webkit-filter:brightness(0.9);filter:brightness(0.9)}.course-enrolled-nav-wrap{border-bottom:1px solid #dedfe0;margin-bottom:45px}.tutor-button:disabled,.tutor-button[disabled],.tutor-button:disabled:hover,.tutor-button[disabled]:hover{display:block;border:0px;background-color:#DCDCE1;color:#737787;cursor:default}.tutor-button span{font-size:12px;display:block}.tutor-button-block{width:100%;text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.tutor-wrap{width:100%}.tutor-wrap nav.course-enrolled-nav ul{list-style:none;margin:0 0 -1px;padding:0}.tutor-wrap nav.course-enrolled-nav ul li{display:inline-block}.tutor-wrap nav.course-enrolled-nav ul li a{display:block;font-size:16px;padding:5px 0 20px;margin-right:20px;color:var(--tutor-light-color);border-bottom:2px solid transparent}.tutor-wrap nav.course-enrolled-nav ul li:not(:first-child) a{margin-left:20px}.tutor-wrap nav.course-enrolled-nav ul li.active a{border-bottom:2px solid var(--tutor-primary-color);color:var(--tutor-text-color)}@media (max-width: 575px){.tutor-wrap nav.course-enrolled-nav ul li{display:inline-block}.tutor-wrap nav.course-enrolled-nav ul li:not(:first-child) a,.tutor-wrap nav.course-enrolled-nav ul li a{padding:8px;margin:0}.tutor-wrap nav.course-enrolled-nav ul li.active a{border:none;color:var(--tutor-primary-color)}}.tutor-updating-message i{display:none}.tutor-profile-photo-upload-wrap{width:200px;height:auto;margin-bottom:70px;position:relative}.tutor-profile-photo-upload-wrap img{width:100%;height:auto;display:block}a.tutor-profile-photo-upload-btn,button.tutor-profile-photo-upload-btn{position:absolute;top:100%;background-color:var(--tutor-primary-color);color:#fff;display:block;width:100%;text-align:CENTER;padding:9px 0}a.tutor-profile-photo-upload-btn:hover,button.tutor-profile-photo-upload-btn:hover{background-color:var(--tutor-primary-hover-color);color:#fff}.tutor-profile-photo-delete-btn{position:absolute;color:#ff000c;right:10px;top:10px}.single-instructor-wrap{border:1px solid #e8eff1;margin-bottom:30px;border-radius:4px}.single-instructor-wrap .single-instructor-top{padding:20px;border-bottom:1px solid #e8eff1;display:-webkit-box;display:-ms-flexbox;display:flex}@media (max-width: 767px){.single-instructor-wrap .single-instructor-top{-ms-flex-wrap:wrap;flex-wrap:wrap}}.single-instructor-wrap .single-instructor-top h3,.single-instructor-wrap .single-instructor-top h4{margin:0;padding:0}.single-instructor-wrap .tutor-instructor-left{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding-right:30px}@media (max-width: 767px){.single-instructor-wrap .tutor-instructor-left{width:100%;margin-bottom:15px}}.single-instructor-wrap .instructor-avatar{float:left}.single-instructor-wrap .instructor-avatar img{max-width:50px;height:auto;border-radius:50%}.single-instructor-wrap .instructor-name{float:left;padding-left:20px;max-width:180px}.single-instructor-wrap .instructor-name h3{font-size:16px;color:var(--tutor-text-color);font-weight:600}.single-instructor-wrap .instructor-name h3 a{font-weight:500;color:var(--tutor-text-color)}.single-instructor-wrap .instructor-name h4{font-weight:500;color:var(--tutor-light-color)}.single-instructor-wrap .single-instructor-bottom{padding:15px 20px;text-align:right;overflow:hidden}@media (max-width: 767px){.single-instructor-wrap .single-instructor-bottom{text-align:left}}.single-instructor-wrap .single-instructor-bottom p{margin:0}.single-instructor-wrap .single-instructor-bottom .ratings{float:left}.single-instructor-wrap .single-instructor-bottom .ratings i{margin-right:4px}.single-instructor-wrap .single-instructor-bottom .courses,.single-instructor-wrap .single-instructor-bottom .students{display:inline-block;margin-left:20px}.single-instructor-wrap .single-instructor-bottom .courses i,.single-instructor-wrap .single-instructor-bottom .students i{font-size:18px;display:inline-block;margin-right:2px;vertical-align:middle}.single-instructor-wrap .single-instructor-bottom .ratings .rating-total-meta{color:#bac0cf}.single-instructor-wrap .single-instructor-bottom .ratings .rating-generated{color:#f8c51c}.tutor-dashboard-pagination-results-stats{margin:10px 0 30px}.statement-address{margin:10px 0;color:#555}.statement-order-completed{background:var(--tutor-success-button-color);color:#fff;padding:2px 5px;border:none}.tutor-login-wrap{max-width:520px;margin:0 auto;padding:40px 55px;-webkit-box-shadow:0 0 15px rgba(0,0,0,0.1);box-shadow:0 0 15px rgba(0,0,0,0.1);border-radius:5px}.tutor-login-wrap form{margin:0}.tutor-login-wrap .tutor-login-title{margin-bottom:25px;padding:0 40px;text-align:center}.tutor-login-form-wrap{max-width:450px;margin:auto}.tutor-login-form-wrap p{margin-bottom:0}.tutor-login-form-wrap label{display:block !important;margin-bottom:4px}.tutor-login-form-wrap .tutor-alert{margin-bottom:20px}.tutor-login-form-wrap input[type="password"],.tutor-login-form-wrap input[type="text"]{width:100%;display:block;border:1px solid #e8eff1;-webkit-box-shadow:none;box-shadow:none;margin-bottom:20px;border-radius:4px;background:#eceef4;line-height:48px;padding:0;text-indent:15px}.tutor-login-form-wrap input[type="password"]:focus,.tutor-login-form-wrap input[type="text"]:focus{background:#ffffff;border-color:var(--tutor-primary-color)}.tutor-login-form-wrap input::-webkit-input-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-form-wrap input::-moz-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-form-wrap input:-ms-input-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-form-wrap input:-moz-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-rememeber-wrap{overflow:hidden;text-align:right;margin-bottom:30px}.tutor-login-rememeber-wrap p{display:inline-block;float:left}.tutor-login-rememeber-wrap p,.tutor-login-rememeber-wrap label{margin:0}.tutor-form-register-wrap a,.tutor-login-rememeber-wrap a,.tutor-login-rememeber-wrap label{color:#606c8f;vertical-align:middle;opacity:0.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";-webkit-transition:300ms;transition:300ms}.tutor-form-register-wrap a:hover,.tutor-login-rememeber-wrap a:hover,.tutor-login-rememeber-wrap label:hover{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-form-wrap input[type="submit"]{color:#fff;background-color:var(--tutor-primary-button-color);border-color:var(--tutor-primary-button-color);padding:15px 30px;border-radius:4px;text-transform:uppercase;line-height:1;display:block;width:100%;-webkit-transition:300ms;transition:300ms}.tutor-login-form-wrap input[type="checkbox"]{margin-right:4px}.tutor-form-register-wrap{text-align:center;margin-top:15px}.tutor-course-login-wrap h4{font-size:42px;line-height:1.2;margin-bottom:20px;color:var(--tutor-text-color)}.tutor-cart-box-login-form{display:-webkit-box;display:-ms-flexbox;display:flex;position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.6);z-index:99;top:0;left:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.login-overlay-close{position:absolute;background:transparent;width:100%;height:100%;z-index:-1}.course-login-title{margin-bottom:50px}.tutor-cart-box-login-form .tutor-cart-box-login-form-inner{background:#fff;padding:50px 40px;position:relative;width:400px;font-size:16px;font-weight:400;max-height:90%;overflow:auto}.tutor-cart-box-login-form-inner button.tutor-popup-form-close{position:absolute;padding:0;margin:0;border:none;background-color:transparent;top:14px;right:20px;opacity:0.4;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";cursor:pointer;-webkit-transition:300ms;transition:300ms;color:var(--tutor-text-color)}.tutor-cart-box-login-form-inner button.tutor-popup-form-close:hover{color:red}.tutor-option-field-row label,.tutor-form-group label{display:block;margin-bottom:10px}.tutor-option-field textarea,.tutor-option-field select,.tutor-option-field input[type="text"],.tutor-option-field input[type="number"],.tutor-option-field input[type="pas.tutor-dashboard-content-innersword"],.tutor-form-group textarea,.tutor-form-group select,.tutor-form-group input[type="text"],.tutor-form-group input[type="number"],.tutor-form-group input[type="password"]{width:100%;display:block;border:1px solid #dcdfe5;-webkit-box-shadow:none;box-shadow:none;margin-bottom:20px;border-radius:4px;background:#ffffff;line-height:48px;padding:0;text-indent:15px;-webkit-transition:300ms;transition:300ms;font-size:16px}.tutor-form-group{position:relative}.tutor-form-group span.tutor-input-prepand{position:absolute;height:calc(100% - 2px);font-size:21px;line-height:50px;padding:0 12px;background:transparent;border-right:1px solid #dcdfe5;top:1px}.tutor-form-group span.tutor-input-prepand+input{padding-left:35px}.tutor-course-builder-form-elem{margin-bottom:20px}.tutor-option-field .select2-container,.tutor-form-group .select2-container{margin-bottom:20px;width:100% !important}.tutor-option-field .select2-container ul.select2-selection__rendered,.tutor-form-group .select2-container ul.select2-selection__rendered{padding:4px 9px;display:block}.tutor-option-field .select2-container li.select2-selection__choice,.tutor-form-group .select2-container li.select2-selection__choice{background:#ebeef0;color:#606c8f;line-height:29px;border-radius:3px;padding:0 9px;margin:5px;border:none;font-weight:600}.tutor-option-field .select2-container .select2-search__field,.tutor-form-group .select2-container .select2-search__field{padding:8px 3px 8px 6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0}.tutor-option-field .select2-container .select2-search__field::-webkit-input-placeholder,.tutor-form-group .select2-container .select2-search__field::-webkit-input-placeholder{color:#abafb6}.tutor-option-field .select2-container .select2-search__field::-moz-placeholder,.tutor-form-group .select2-container .select2-search__field::-moz-placeholder{color:#abafb6}.tutor-option-field .select2-container .select2-search__field:-ms-input-placeholder,.tutor-form-group .select2-container .select2-search__field:-ms-input-placeholder{color:#abafb6}.tutor-option-field .select2-container .select2-search__field:-moz-placeholder,.tutor-form-group .select2-container .select2-search__field:-moz-placeholder{color:#abafb6}.tutor-option-field .select2-container .select2-selection--single,.tutor-option-field .select2-container .select2-selection--multiple,.tutor-form-group .select2-container .select2-selection--single,.tutor-form-group .select2-container .select2-selection--multiple{border-color:#dcdfe5}.tutor-option-field .select2-container.select2-container--focus .select2-selection--single,.tutor-option-field .select2-container.select2-container--focus .select2-selection--multiple,.tutor-form-group .select2-container.select2-container--focus .select2-selection--single,.tutor-form-group .select2-container.select2-container--focus .select2-selection--multiple{border-color:var(--tutor-primary-color)}.tutor-option-field textarea,.tutor-form-group textarea{line-height:26px;text-indent:0;padding:15px;height:180px}.tutor-option-field textarea:focus,.tutor-form-group textarea:focus,.tutor-option-field input:focus,.tutor-form-group input:focus{outline:none}.tutor-dashboard-course-builder-wrap .tutor-option-field textarea,.tutor-dashboard-course-builder-wrap .tutor-form-group textarea{height:100px}.tutor-option-field textarea:focus,.tutor-option-field input:not([type="submit"]):focus,.tutor-form-group textarea:focus,.tutor-form-group input:not([type="submit"]):focus{background:#ffffff;border-color:var(--tutor-primary-color)}.tutor-option-field textarea::-webkit-input-placeholder,.tutor-option-field input::-webkit-input-placeholder,.tutor-form-group textarea::-webkit-input-placeholder,.tutor-form-group input::-webkit-input-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-option-field textarea::-moz-placeholder,.tutor-option-field input::-moz-placeholder,.tutor-form-group textarea::-moz-placeholder,.tutor-form-group input::-moz-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-option-field textarea:-ms-input-placeholder,.tutor-option-field input:-ms-input-placeholder,.tutor-form-group textarea:-ms-input-placeholder,.tutor-form-group input:-ms-input-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-option-field textarea:-moz-placeholder,.tutor-option-field input:-moz-placeholder,.tutor-form-group textarea:-moz-placeholder,.tutor-form-group input:-moz-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-option-field select,.tutor-form-group select{padding:2px 5px;height:50px}.tutor-form-group.tutor-reg-form-btn-wrap{text-align:right}.tutor-option-field p.desc{margin:-10px 0 20px;font-size:13px;font-style:italic;opacity:0.7}.tutor-option-field:last-child .tutor-option-field p.desc{margin-bottom:0}.tutor-option-gorup-fields-wrap .tutor-lesson-video-runtime{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-option-gorup-fields-wrap .tutor-lesson-video-runtime .tutor-option-group-field{padding-right:30px}.select2-container--default .select2-selection--single .select2-selection__rendered{line-height:46px}.select2-container--default .select2-selection--single .select2-selection__arrow{height:46px}.select2-container .select2-selection--single .select2-selection__rendered{padding-left:13px;font-size:16px}.select2-container .select2-selection--single{height:48px}.select2-container .select2-selection--multiple{min-height:50px}.tutor-price-preview-box{border:1px solid #dcdfe5;padding:20px;margin-bottom:30px;border-radius:4px;overflow:hidden}.tutor-price-box-thumbnail{margin:-20px -20px 20px}.tutor-price-box-thumbnail .tutor-single-lesson-segment{margin-bottom:0}.tutor-price-box-description h6{font-size:23px;margin:15px 0 5px}.tutor-price-box-description ul{list-style:none}.tutor-course-purchase-box a{display:block;text-align:center;margin-top:6px}.tutor-price-preview-box .price{font-size:35px;font-weight:500;margin:0 0 20px;overflow:hidden;line-height:1}.tutor-price-preview-box .price .subscription-details{font-size:var(--tutor-text-size);display:block;margin-top:12px;line-height:1.2em}.tutor-price-preview-box .price>.price{margin-bottom:0}.tutor-price-preview-box .price del+ins{margin-left:0;float:left}.tutor-course-reviews-wrap{border:1px solid #e8eff1;border-radius:4px}.tutor-course-avg-rating-total{color:var(--tutor-light-color)}.tutor-course-avg-rating-total span{color:var(--tutor-text-color)}.tutor-review-individual-item{border-top:1px solid #e8eff1;padding:30px;overflow:hidden}.tutor-review-individual-item p{margin:0;padding:0}.course-avg-rating-wrap{padding:20px 20px 20px 40px}.tutor-review-individual-item .review-left{width:200px;float:left;overflow:hidden}.tutor-review-individual-item .review-content{padding-left:200px}@media (max-width: 991px){.tutor-review-individual-item .review-left{width:100%;float:none;margin-bottom:25px}.tutor-review-individual-item .review-content{padding-left:0}}@media (max-width: 991px){.tutor-single-course-sidebar{margin-top:30px}}.tutor-review-individual-item .review-avatar{width:50px;float:left}.tutor-review-individual-item .review-avatar img{border-radius:50%;margin:0;border:none;max-width:100%;height:auto}.tutor-review-individual-item .tutor-review-user-info{float:left;padding-left:20px}.tutor-review-individual-item .tutor-review-user-info p{margin-bottom:0}.tutor-review-individual-item .tutor-review-user-info a{color:var(--tutor-text-color)}.review-avatar .tutor-text-avatar,.tutor-dashboard-avater .tutor-text-avatar,.instructor-avatar .tutor-text-avatar{border-radius:50%;width:50px;height:50px;text-align:center;display:block;line-height:50px;color:#ffffff;text-shadow:0 1px 2px rgba(0,0,0,0.4)}.course-avg-rating-wrap .course-avg-rating{font-size:76px;line-height:1;font-weight:400}.course-avg-rating-wrap p{margin:0}.tutor-review-individual-item .tutor-review-name{font-size:16px;font-weight:600}.tutor-review-individual-item .review-meta{color:var(--tutor-light-color)}.individual-review-rating-wrap{color:#f8c51c}.individual-review-rating-wrap i,.course-avg-rating-html i{margin-right:4px;color:#f8c51c}.course-rating-meter{display:-webkit-box;display:-ms-flexbox;display:flex}.course-rating-meter i.tutor-icon-star-full{color:#f8c51c}.rating-meter-bar-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1}.rating-meter-col{margin:0 3px}.course-rating-meter{margin-bottom:8px}.rating-meter-bar{height:5px;width:100%;background:#e8eff1;margin-top:11px;border-radius:15px;overflow:hidden}.rating-meter-fill-bar{background:#f8c51c;height:5px}.rating-meter-col.rating-text-col{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.tutor-pagination,.tutor-pagination-wrap{text-align:center;margin:20px 0}.tutor-pagination a,.tutor-pagination span,.tutor-pagination-wrap a,.tutor-pagination-wrap span{padding:3px;display:inline-block}.tutor-pagination-wrap a:hover,.tutor-pagination a:hover{color:var(--tutor-primary-color)}.tutor-course-tags{margin:-5px}.tutor-course-tags a{padding:6px 15px;background:#e8eff1;display:inline-block;margin:5px;color:var(--tutor-text-color);border-radius:2px;-webkit-transition:300ms;transition:300ms}.tutor-course-tags a:hover{color:#000}.certificate-download-btn{margin-top:20px;display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;text-align:center;text-transform:uppercase !important;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}#tutor-single-entry-content .tutor-course-prerequisites{padding:60px}.prerequisites-course-lists{padding:0;list-style:none;margin:0}.prerequisites-course-lists li a{padding:13px 15px;border:1px solid #dcdfe5;margin-bottom:20px;border-radius:4px;font-weight:500;color:var(--tutor-primary-color);font-size:16px}.prerequisites-course-lists li:first-child{padding:13px 40px 13px 60px;border:1px solid #f7e5b9;margin-bottom:20px;border-radius:4px;font-weight:500;background:#fffff5;color:#b39f70;position:relative}.prerequisites-course-lists li:first-child>span{position:absolute;left:20px;top:13px}.prerequisites-course-lists li .prerequisites-course-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.prerequisites-course-feature-image img{width:70px;border-radius:2px;height:auto;margin:0 !important;-webkit-box-shadow:0 0 1px rgba(0,0,0,0.08);box-shadow:0 0 1px rgba(0,0,0,0.08)}.prerequisites-course-lists li .prerequisites-course-title{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-left:15px;-webkit-transition:300ms;transition:300ms}.prerequisites-course-lists li a:hover .prerequisites-course-title{color:var(--tutor-primary-color)}.prerequisites-course-checkmark{line-height:24px;height:24px;text-transform:uppercase;font-size:12px;font-weight:700;min-width:107px}.prerequisites-course-checkmark i{height:24px;width:24px;background:#dbdddd;color:#dbdddd;display:inline-block;text-align:center;border-radius:2px;margin-right:3px}.prerequisites-course-checkmark.is-complete i{background:var(--tutor-success-button-color);color:#fff}.tutor-single-course-meta ul li.tutor-social-share{float:right;margin-right:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media (max-width: 575px){.tutor-single-course-meta ul li.tutor-social-share{display:none}}.tutor-single-course-meta ul li.tutor-social-share button{margin:0;border:none;background:transparent;color:var(--tutor-light-color);-webkit-transition:300ms;transition:300ms;padding:0 4px;cursor:pointer}.tutor-single-course-meta ul li.tutor-social-share button:hover{color:var(--tutor-primary-color)}.rtl .tutor-single-course-meta ul li.tutor-social-share{float:left}.rtl .tutor-single-course-meta ul li,.rtl .tutor-loop-author>div{float:right}.rtl .tutor-single-course-meta ul li{margin-right:0;margin-left:40px}.rtl .tutor-wrap nav.course-enrolled-nav ul li a{margin-right:0;margin-left:20px}.rtl .tutor-progress-bar .tutor-progress-filled:after{left:auto;right:var(--tutor-progress-left);-webkit-transform:translateY(-50%) translateX(50%);transform:translateY(-50%) translateX(50%)}.rtl .tutor-progress-percent{padding-left:0;padding-right:20px}.rtl .tutor-course-lesson h5 i{margin-right:0;margin-left:10px}.rtl .tutor-course-lesson h5 .lesson-preview-icon i{margin-right:10px;margin-left:0}.rtl .tutor-course-lesson h5 .tutor-lesson-duration{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:left}.rtl .tutor-custom-list-style li{padding-right:25px;padding-left:0px}.rtl .tutor-custom-list-style li:before{left:auto;right:0}.rtl .single-instructor-wrap .instructor-name,.rtl .single-instructor-wrap .instructor-avatar{float:right}.rtl .single-instructor-wrap .instructor-name{padding-left:0;padding-right:20px}.rtl .single-instructor-wrap .instructor-bio{padding-left:0;padding-right:260px}.rtl .tutor-single-page-top-bar .tutor-topbar-back-to-curse-wrap{margin-left:30px;margin-right:0}.rtl .tutor-single-lesson-button-group .tutor-single-lesson-button a,.rtl .tutor-topics-in-single-lesson .tutor-single-lesson-items a{padding:14px 17px 14px 100px}.rtl .tutor-lessons-under-topic .tutor-lesson-right-icons{right:auto;left:15px}.rtl .tutor-lessons-under-topic .tutor-lesson-right-icons .tutor-lesson-complete{margin-left:0;margin-right:8px}.rtl .tutor-single-lesson-button-group .tutor-single-lesson-button a>i:first-child,.rtl .tutor-topics-in-single-lesson .tutor-single-lesson-items a>i:first-child{margin-right:0;margin-left:10px}.rtl .tutor-topbar-home-btn{margin-left:0;margin-right:20px}@media screen and (max-width: 546px){.rtl .tutor-topbar-home-btn{margin-right:10px}}.rtl .tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button{margin-left:15px;margin-right:0}.tutor-frontend-modal{position:fixed;width:100%;height:100%;left:0;top:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:999999}.tutor-frontend-modal .tutor-frontend-modal-overlay{background:rgba(0,0,0,0.7);height:100%;width:100%;position:fixed;left:0;top:0;z-index:-1;cursor:url("data:image/svg+xml,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.852 12.004L.23 22.7a.764.764 0 0 0 0 1.076.75.75 0 0 0 1.068 0L12 13l10.703 10.778a.75.75 0 0 0 1.069 0 .764.764 0 0 0 0-1.076L13.148 12.004l10.63-10.706a.764.764 0 0 0 0-1.075.752.752 0 0 0-1.067 0L12 11.008 1.289.223a.752.752 0 0 0-1.068 0 .764.764 0 0 0 0 1.076l10.631 10.705z' fill='%23F0576A' fill-rule='evenodd'/%3E%3C/svg%3E"),auto}.tutor-frontend-modal .tutor-frontend-modal-content{position:relative;background:#fff;padding:60px;width:90%;max-width:750px;max-height:90%;overflow-y:auto}@media (max-width: 768px){.tutor-frontend-modal .tutor-frontend-modal-content{padding:40px}}@media (max-width: 540px){.tutor-frontend-modal .tutor-frontend-modal-content{padding:20px}}button.tm-close.tutor-icon-line-cross{position:absolute;right:23px;top:23px;background:transparent;padding:0;font-size:24px;border:none;color:var(--tutor-light-color)}button.tm-close.tutor-icon-line-cross:hover{color:red}.label-order-status{padding:3px 5px;border-radius:3px}.label-status-completed{background-color:#4bd863;color:#ffffff}.label-status-cancelled{background-color:#fd6a03;color:#ffffff}.label-status-on-hold{background-color:#db5382;color:#ffffff}.tutor-lesson-content-area h2{margin-bottom:25px;margin-top:20px;font-weight:500}.assignment-result-wrap{text-align:center;padding:10px 0}.submitted-assignment-grade-pass{color:var(--tutor-success-button-color)}.submitted-assignment-grade-failed{color:red}.received-marks{color:var(--tutor-primary-color)}.tutor-dashboard-course-builder-wrap .tutor-form-row{margin-top:20px;margin-bottom:20px}.video_source_wrap_html5{width:100px;text-align:center}.video-poster-img img{max-width:200px;height:auto}.tutor-assignment-information{font-size:16px}.tutor-assignment-information ul{padding:0;margin:0 0 22px;list-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-assignment-information ul li strong{font-weight:700}.tutor-assignment-attachment-upload-wrap .tutor-form-group{display:inline-block}.tutor-assignment-attachment-upload-wrap .tutor-form-group label+input{display:none}.tutor-assignment-attachment-upload-wrap .tutor-form-group label{padding:15px 17px;border:1px solid #dcdfe5;overflow:hidden;margin-right:15px;border-radius:4px;cursor:pointer}.tutor-assignment-attachment-upload-wrap .tutor-form-group label i{font-size:30px;line-height:30px;float:left;margin-right:12px}.tutor-assignment-attachment-upload-wrap .tutor-form-group label span{line-height:30px}.tutor-assignment-attachment-upload-wrap{margin-bottom:40px}#tutor-course-topics a{text-decoration:none}#tutor-course-topics .tutor-topics-wrap{border-bottom:1px solid #f6f8fa;padding-bottom:0;margin:0}.tutor-untopics-lessons .course-content-item,.course-contents .course-content-item{padding:10px 12px 10px 25px;border-bottom:1px solid #d9d9d9;background-color:#ebeef0}.tutor-untopics-lessons .course-content-item .tutor-lesson-top,.course-contents .course-content-item .tutor-lesson-top{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-untopics-lessons .course-content-item .tutor-lesson-top a:last-child,.course-contents .course-content-item .tutor-lesson-top a:last-child{margin-left:auto}.tutor-untopics-lessons .course-content-item .tutor-lesson-top a.open-tutor-lesson-modal,.course-contents .course-content-item .tutor-lesson-top a.open-tutor-lesson-modal{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-untopics-lessons .course-content-item .tutor-lesson-top a,.course-contents .course-content-item .tutor-lesson-top a{color:#393c40;font-weight:400;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-untopics-lessons .course-content-item .tutor-lesson-top i,.course-contents .course-content-item .tutor-lesson-top i{padding-right:7px;color:#393c40}.tutor-untopics-lessons .course-content-item .tutor-lesson-top .tutor-updating-message i,.course-contents .course-content-item .tutor-lesson-top .tutor-updating-message i{display:none}.tutor-untopics-lessons .course-content-item .tutor-lesson-top i.tutor-icon-garbage:hover,.course-contents .course-content-item .tutor-lesson-top i.tutor-icon-garbage:hover{color:red}.tutor-lessons.ui-sortable{min-height:20px}#tutor-course-topics .drop-lessons p{margin:0}#tutor-course-topics .course-content-item:hover{background-color:#ebeef0}#tutor-course-topics .tutor-lessons{padding-left:0}#tutor-course-topics .tutor-lesson-top,#tutor-course-topics .tutor-lesson-top i{font-size:15px}#tutor-course-topics .tutor-lesson-top .open-tutor-quiz-modal i{display:inline-block;vertical-align:middle;margin-right:5px}#tutor-course-topics .tutor-lesson-top{display:-webkit-box;display:-ms-flexbox;display:flex}#tutor-course-topics .tutor-lesson-top .open-tutor-lesson-modal,.tutor-quiz .open-tutor-quiz-modal,.course-content-item .open-tutor-assignment-modal{-webkit-box-flex:1;-ms-flex:1;flex:1}#tutor-course-topics .tutor-lesson-top i.tutor-icon-move{margin-right:10px;cursor:ns-resize}.rtl #tutor-course-topics .tutor-lesson-top i.tutor-icon-move{margin-right:0;margin-left:10px}#tutor-course-topics .tutor-lesson-top i.tutor-icon-pencil{margin:0 10px}#tutor-course-topics .tutor-lesson-top a{color:#393c40}#tutor-course-topics .tutor-lesson-top a.tutor-updating-message i{display:none}.course-move-handle{cursor:row-resize}.new-topic-btn-wrap{padding:20px}p.course-empty-content{padding-left:20px;padding-right:20px}.tutor_btn_lg{line-height:45px;background-color:var(--tutor-primary-color);color:#ffffff;padding:0 20px;display:inline-block;border-radius:2px;font-weight:300;border:none;-webkit-box-shadow:none;box-shadow:none;cursor:pointer}.tutor_btn_lg:focus{-webkit-box-shadow:none;box-shadow:none;border:none;outline:none}.tutor_btn_lg:focus,.tutor_btn_lg:hover{background-color:var(--tutor-primary-color);color:#ffffff}.ui-sortable-placeholder{visibility:visible;background-color:#dddd}.tutor-untopics-lessons{border:1px solid #eee;padding:20px;margin:0 -1px -1px;background-color:#fbfbfb}.tutor-untopics-lessons h3{font-weight:300}.tutor-untopics-lessons .tutor-lessons{padding-left:0 !important}.create-new-lesson-wrap{text-align:center}.tutor-metabox-add-topics .tutor-option-field-row:last-child,.tutor-topics-edit-form .tutor-option-field-row:last-child{border-bottom:none}.tutor-metabox-add-topics .tutor-option-field-row textarea{height:120px}.topic-edit-icon{cursor:pointer}.tutor-topic-title{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:16px;font-weight:300;margin:0;line-height:45px;padding-left:15px}.rtl .tutor-topic-title{padding-left:0;padding-right:15px}.tutor-topic-title a{color:#393c40}.tutor-topic-title .topic-inner-title{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;cursor:pointer;max-width:calc(100% - 137px);font-weight:400;font-size:16px}.tutor-topic-title span{padding:0 5px}.tutor-topic-title span.expand-collapse-wrap{border-left:1px solid #e7e7e7}.tutor-topic-title span.expand-collapse-wrap a{display:block;padding:0 13px}.topic-delete-btn{float:right}.text-muted{color:#cccccc}.topic-delete-btn a{padding:0 10px}.topic-delete-btn a:hover{color:#ff0000}.topic-delete-btn .dashicons{width:12px;height:12px;font-size:12px}#tutor-course-topics{position:relative}#tutor-course-topics .inside{padding:0;margin:0}#tutor-course-topics a:focus{-webkit-box-shadow:none;box-shadow:none}#tutor-course-topics .toggle-indicator:before{margin-top:20px}.tutor-topics-wrap:nth-child(2n){background:#f6f8fa}#tutor-course-content-wrap{border:1px solid #ddd;margin-top:20px}#tutor-course-content-wrap .tutor-topics-edit-form,#tutor-course-content-wrap .tutor-metabox-add-topics{border-left:none;border-right:none;margin-top:0}#tutor-course-content-wrap .tutor-topics-wrap .tutor-topics-body{background:#ebeef0;padding:0px}.tutor-course-builder-button{line-height:35px;color:#393c40;display:inline-block;padding:0 20px;border-radius:4px;margin-right:10px;border:1px solid #d3d4d5;background-color:#f2f2f2;cursor:pointer;vertical-align:top;-webkit-transition:300ms;transition:300ms;font-weight:400}.tutor-course-builder-button i{line-height:35px;display:inline-block;vertical-align:top;margin-right:6px}.tutor-course-builder-button.tutor-updating-message i{display:none}.tutor-course-builder-button.tutor-btn-lg{line-height:40px}.tutor-add-quiz-button-wrap{padding:15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-add-quiz-button-wrap>*+*{margin-left:15px}.tutor-course-builder-button.active{color:#fff;background:var(--tutor-primary-color);border-color:var(--tutor-primary-color)}.tutor-course-builder-button:hover{-webkit-filter:brightness(0.9);filter:brightness(0.9)}.tutor-btn-lg i{color:var(--tutor-primary-color);vertical-align:top;margin-right:5px;font-size:16px;display:inline-block;line-height:40px}.tutor-course-builder-button.active i,.tutor-course-builder-button:hover i{color:#fff}.tutor-course-builder-button.tutor-success{background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color);color:#fff}.tutor-updating-message:before{display:inline-block;font-family:"tutor";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top;content:"\e91d";-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;margin-right:6px}.rtl .tutor-updating-message:before{margin-right:0;margin-left:6px}.lesson-modal-close-wrap a{background:#ffffff;width:50px;height:59px;display:inline-block;text-align:center;line-height:57px;color:#3a3d42;font-size:15px;position:absolute;right:0;top:0}.lesson-modal-close-wrap a:hover{color:red}.lesson-modal-form-wrap .lesson-modal-field-row{padding:10px 0}.lesson-modal-field.tutor-lesson-modal-title-wrap{width:95%}.lesson-modal-field-row input[type="text"]{background-color:#fff;border:1px solid #ddd;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;color:#333;display:inline-block;vertical-align:middle;padding:7px 12px;margin:0 10px 0 0;min-width:400px;min-height:35px}.tutor-lesson-modal-title-wrap input{width:100%}.lesson-modal-form-wrap .tutor-option-field-row{padding:10px 0}.lesson-modal-form-wrap .tutor-option-field-row:last-child{border-bottom:none}.tutor-lesson-modal-wrap .modal-footer{padding:10px 20px;background-color:#fff;width:100%;position:sticky;bottom:0;position:-webkit-sticky}.tutor-option-field .tutor-lesson-edit-feature-img{width:100px;position:relative}.tutor-option-field .tutor-lesson-edit-feature-img img{width:100%;height:auto}a.tutor-lesson-thumbnail-delete-btn{position:absolute;top:0;right:0;color:red;background:#fff;padding:3px 5px;border-radius:5px}.tutor-get-pro-text{color:#e02424}.updating-icon:before{font-family:"tutor";content:"\e91d";-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite;display:inline-block}.tutor-notice-warning{background-color:#fcf8e3;border-color:#faebcc;padding:20px;margin-bottom:10px}.tutor-modal-wrap{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";display:none;position:fixed;top:0;left:0;right:0;bottom:0;z-index:-1;background-color:rgba(0,0,0,0.5)}.tutor-modal-wrap.show{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";z-index:99999;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.tutor-modal-wrap.loading .tutor-modal-content:before{position:absolute;top:0;left:0;right:0;bottom:0;display:block;content:"";z-index:9;background:url("../images/spinner.gif") no-repeat center center}.tutor-modal-wrap .tutor-modal-content{max-height:90%;overflow-y:auto;overflow-x:hidden;background-color:#fff;max-width:730px;margin:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);position:relative;-webkit-transition:all 200ms ease-out;transition:all 200ms ease-out;width:90%}.admin-bar .tutor-modal-wrap .tutor-modal-content{max-height:calc(90% - 32px);margin-top:32px}.tutor-modal-wrap .modal-footer{padding:20px 0;border-top:1px solid #eee}.tutor-modal-wrap .modal-footer.has-padding{padding:20px 15px}.tutor-modal-wrap .modal-container{padding:20px 20px 0}.tutor-modal-wrap.tutor-instructors-modal-wrap .modal-container p{margin-top:0}.tutor-modal-wrap .modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;padding:15px 20px;border-bottom:1px solid #eeeff1}.tutor-modal-wrap .modal-title{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-modal-wrap .modal-header h1{padding:0;margin:0;font-size:23px;line-height:30px}.modal-container .modal-classic-btn-wrap{position:absolute;right:45px;top:14px}.modal-container .modal-classic-btn-wrap a{color:var(--tutor-primary-color)}.tutor-modal-wrap .modal-header h1::before,.tutor-modal-wrap .modal-header h1::after{display:none}.tutor-modal-wrap .search-bar{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-top:20px;padding-left:20px;padding-right:20px}.tutor-modal-wrap .search-bar input[type="text"]{width:100%;border:1px solid #eee;-webkit-box-shadow:none;box-shadow:none;padding:10px}.tutor-modal-wrap .modal-close-wrap a.modal-close-btn{width:50px;height:50px;background:#000;display:inline-block;text-align:center;line-height:47px;color:#fff;font-size:25px;position:absolute;right:0}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-title{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-close-wrap a.modal-close-btn{background:#ffffff;width:20px;height:20px;display:inline-block;text-align:center;line-height:28px;color:#3a3d42;font-size:22px;position:relative}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-header{padding:15px 20px;border-bottom:1px solid #eeeff1}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-header h1{padding:0}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-container{background-color:#f1f1f1;padding:0}#tutor-quiz-modal-tab-items-wrap{background-color:#fff;font-size:0;overflow:hidden}#tutor-quiz-builder-modal-tabs-container{padding:20px}#tutor-quiz-modal-tab-items-wrap .tutor-quiz-modal-tab-item{padding:15px 25px;display:inline-block;color:#393c40;border-left:1px solid #f1f1f1;overflow:hidden;line-height:17px;vertical-align:middle;font-size:14px !important}#tutor-quiz-modal-tab-items-wrap .tutor-quiz-modal-tab-item.active{background-color:#f1f1f1}#tutor-quiz-modal-tab-items-wrap .tutor-quiz-modal-tab-item i{float:left;font-size:17px;line-height:1;margin-right:5px}#tutor-quiz-modal-tab-items-wrap .tutor-quiz-modal-tab-item.active i{color:var(--tutor-primary-color)}.quiz-modal-tab-navigation-btn{padding:10px 20px;border-radius:3px}.quiz-modal-btn-next,.quiz-modal-btn-next:focus,.quiz-modal-btn-first-step,.quiz-modal-btn-first-step:focus,.quiz-modal-question-save-btn,.quiz-modal-question-save-btn:focus,.quiz-modal-settings-save-btn,.quiz-modal-settings-save-btn:focus{background-color:var(--tutor-primary-color);color:#ffffff}.quiz-modal-btn-next:hover,.quiz-modal-btn-first-step:hover,.quiz-modal-question-save-btn:hover,.quiz-modal-settings-save-btn:hover{color:#ffffff}.quiz-modal-btn-cancel,.quiz-modal-btn-back{color:#4b5981;border:1px solid #d4dadb}.tutor-quiz-builder-form-row .quiz-form-warning{color:#e88e06}.tutor-assignment-builder-modal-wrap .modal-container{padding:10px}.assignment-modal-form-wrap .tutor-option-field.tutor-assignment-modal-title-wrap{margin:0}.tutor-quiz-question-answers-form{background-color:#fff;padding:20px;-webkit-transition:all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);transition:all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);border:1px solid #dedede;border-radius:3px;margin-bottom:20px}.advanced-options-tab-item{float:right}.tutor-course-builder-wrap{border:1px dashed #dcdfe5}.tutor-quiz-builder-modal-tabs-notice{background:#d8d8d8;line-height:20px;padding:10px 30px;color:#a4a4a4}.tutor-quiz-builder-modal-tabs-notice a{color:#a4a4a4;text-decoration:underline}.tutor-quiz-builder-group{margin-bottom:25px}.tutor-quiz-builder-group>p.warning{color:red;font-size:12px}.tutor-quiz-builder-group>p.help{color:#a4a4a4;font-size:12px;margin-top:7px}.tutor-quiz-builder-group>h4{color:#393c40;font-weight:600;margin:0 0 15px}.tutor-quiz-builder-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-left:-10px;margin-right:-10px}.tutor-quiz-builder-col{padding-left:10px;padding-right:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-quiz-builder-col.auto-width{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.tutor-quiz-builder-group textarea,.tutor-quiz-builder-group input[type="text"],.tutor-quiz-builder-group input[type="email"],.tutor-quiz-builder-group input[type="number"],.tutor-quiz-builder-group input[type="password"]{line-height:40px;padding:5px 0;text-indent:15px;background:#fff;display:inline-block;border:1px solid #dedede;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;height:40px;margin:0;width:100%;color:#393c40}.tutor-quiz-builder-group textarea:focus,.tutor-quiz-builder-group input[type="text"]:focus,.tutor-quiz-builder-group input[type="email"]:focus,.tutor-quiz-builder-group input[type="number"]:focus,.tutor-quiz-builder-group input[type="password"]:focus{border-color:var(--tutor-primary-color)}.tutor-quiz-builder-group textarea{height:80px;resize:none;text-indent:0;padding:11px 15px;line-height:22px}.tutor-quiz-builder-group textarea[name="quiz_description"]{height:150px}.tutor-quiz-builder-group select{border:1px solid #ccc;-webkit-box-shadow:none;box-shadow:none;height:42px !important;padding:0 12px !important;margin:0}.tutor-quiz-builder-modal-control-btn-group{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:20px}.question_form_inner{padding:0 20px 20px;margin-top:0}.tutor-quiz-builder-modal-control-btn-group .quiz-builder-btn-group-left{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-quiz-builder-modal-control-btn-group .quiz-modal-tab-navigation-btn{display:inline-block}.tutor-quiz-builder-modal-control-btn-group .quiz-modal-tab-navigation-btn:not(:last-child){margin-right:6px}.modal-container .tutor-quiz-add-question-btn{border:1px solid #c6c9cf;padding:10px 15px;color:#393c40;display:inline-block;border-radius:3px}.modal-container .tutor-quiz-add-question-btn i{color:var(--tutor-primary-color);line-height:16px;margin-right:3px}.quiz-form-field-col{margin-right:20px}.quiz-form-field-col.result-fail{width:100%}.quiz-modal-switch-field{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:30px}.quiz-modal-switch-field label.btn-switch{margin-right:20px;position:relative;vertical-align:top}label.btn-switch input:checked+.btn-slider{background-color:var(--tutor-success-button-color)}.btn-switch+span{line-height:24px;display:inline-block;margin-left:8px;font-weight:700;vertical-align:top}.tutor-select{position:relative}.tutor-select .select-header{border:1px solid #dedede;margin:0;padding:10px;width:100%;-webkit-box-shadow:none;box-shadow:none;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.tutor-select .select-header .lead-option{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-select .select-header .select-dropdown{line-height:22px}.tutor-select .select-header .lead-option .question-type-pro{display:none}.tutor-select .tutor-select-options{border:1px solid #dedede;background-color:#fff;padding:22px 10px 8px;width:calc(100% - 22px);position:absolute;font-size:0;z-index:9;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-shadow:0px 2px 10px rgba(0,0,0,0.08);box-shadow:0px 2px 10px rgba(0,0,0,0.08);top:55px;border-radius:3px}.tutor-select .tutor-select-options .tutor-select-option{width:calc(33.3333% - 22px);display:inline-block;padding:9px;cursor:pointer;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 11px 15px;border:1px solid #e2e2e2;border-radius:3px;font-size:13px}.tutor-select .tutor-select-options .tutor-select-option:hover{border-color:var(--tutor-primary-color)}.question-type-pro{color:#fff;font-size:9px;right:11px;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}i.tutor-icon-block{padding:0;color:#fff;border-radius:3px;margin-right:2px;display:inline-block;width:22px;height:22px;text-align:center;line-height:22px}i.tutor-icon-block.tutor-icon-short-ans{background-color:#f37512}i.tutor-icon-block.tutor-icon-image-ans{background-color:#a322f9}i.tutor-icon-block.tutor-icon-yes-no{background-color:var(--tutor-primary-color)}i.tutor-icon-block.tutor-icon-multiple-choice{background-color:#9034a9}i.tutor-icon-block.tutor-icon-mark{background-color:#00b890}i.tutor-icon-block.tutor-icon-open-ended{background-color:#fe3129}i.tutor-icon-block.tutor-icon-fill-gaps{background-color:#ffbf00}i.tutor-icon-block.tutor-icon-answer-shorting{background-color:#f80089}i.tutor-icon-block.tutor-icon-assesment{background-color:#274055}i.tutor-icon-block.tutor-icon-matching{background-color:#8a4a1b}i.tutor-icon-block.tutor-icon-image-matching{background-color:#f37512}i.tutor-icon-block.tutor-icon-ordering{background-color:var(--tutor-primary-color)}i.tutor-icon-block.tutor-icon-plus-square-button,i.tutor-icon-block.tutor-icon-plus{background-color:var(--tutor-success-button-color)}.create-lesson-in-topic-btn i.tutor-icon-block.tutor-icon-plus{background-color:var(--tutor-primary-color)}a.back-to-quiz-questions-btn{font-size:16px;font-weight:300;color:#393c40;margin-bottom:10px;display:block}a.back-to-quiz-questions-btn.tutor-updating-message i{display:none}.modal-container .quiz-questions-form{padding:20px}#quiz-builder-tab-advanced-options .tutor-quiz-builder-form-cols-row .quiz-form-field-col:first-child{-webkit-box-flex:0;-ms-flex:0 0 150px;flex:0 0 150px}.question-form-header{margin-bottom:20px}.quiz-question-form-body{margin-bottom:25px}.quiz-builder-question-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:15px}.quiz-builder-question{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;background:#fff;padding:10px;border:1px solid #e2e2e2;border-radius:3px;max-width:calc(100% - 52px)}.quiz-builder-question .question-sorting{margin-right:10px;line-height:22px}.quiz-builder-question .question-sorting i{display:block;line-height:24px}.quiz-builder-question .question-edit-icon{line-height:22px}.quiz-builder-question .question-edit-icon .tutor-quiz-open-question-form.tutor-updating-message i{display:none}.quiz-builder-question .question-title{-webkit-box-flex:1;-ms-flex:1;flex:1;line-height:22px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;margin-right:10px}.quiz-builder-question .question-icon{-webkit-box-flex:0;-ms-flex:0 0 155px;flex:0 0 155px}.quiz-builder-qustion-trash a{display:block;padding:0 0 0 10px;font-size:20px;color:rgba(57,60,64,0.4);line-height:44px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider{border:1px solid #dedede;padding:20px 70px 20px 10px;background-color:#ffffff;position:relative;border-radius:4px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .ui-widget-content{background:var(--tutor-primary-color);border:none;height:4px;border-radius:4px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .ui-widget-header{background:#dedede;border-radius:4px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .ui-widget-content .ui-state-default{background:var(--tutor-primary-color);border:1px solid var(--tutor-primary-color);border-radius:50%;margin-top:-2px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .tutor-field-type-slider-value{font-size:16px;font-weight:600;background:var(--tutor-primary-color);position:absolute;right:5px;top:50%;margin:0;-webkit-transform:translateY(-50%);transform:translateY(-50%);line-height:34px;width:43px;text-align:center;border-radius:4px;color:#fff}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .tutor-field-type-slider-value:before{content:"";position:absolute;border:7px solid transparent;top:50%;border-right-color:var(--tutor-primary-color);right:100%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.tutor-quiz-answer-wrap{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-quiz-answer{background-color:#fff;-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px 15px;border:1px solid #dedede;display:-webkit-box;display:-ms-flexbox;display:flex;line-height:22px;border-radius:3px;margin-bottom:15px}.tutor-quiz-answer .tutor-quiz-answer-edit a{display:block;padding:0px 9px}.tutor-quiz-answer-trash-wrap a.answer-trash-btn{padding:0 10px;display:inline-block;line-height:44px}span.tutor-quiz-answer-title{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-quiz-answer-media .option-media-preview{margin-bottom:20px}.tutor-quiz-answer-media .option-media-preview img{max-width:80px;height:auto}.tutor-question-answer-image{margin-right:10px}.tutor-question-answer-image img{max-height:25px;width:auto}button#quiz-answer-save-btn,button#quiz-answer-edit-btn{background-color:var(--tutor-success-button-color);color:#fff;padding:10px 15px;border:none;cursor:pointer}button#quiz-answer-save-btn:hover,button#quiz-answer-edit-btn:hover{background-color:var(--tutor-success-button-color)}.tutor-media-upload-wrap{border:1px solid #dedede;display:-webkit-box;display:-ms-flexbox;display:flex;width:130px}.tutor-media-upload-wrap img{max-width:100%}.tutor-media-preview{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-media-upload-btn{display:block;padding:10px;font-size:50px;line-height:50px;text-align:center;color:#dedede}.tutor-media-upload-trash-wrap{border-left:1px solid #dedede}.tutor-media-upload-trash{color:#dedede;display:block;line-height:50px;padding:12px}.tutor-quiz-answers-form-footer.tutor-quiz-builder-form-row{margin-top:40px;margin-bottom:10px}.tutor-metabox-add-topics,.tutor-topics-edit-form{background-color:#f7f7f7;border:1px solid #dcdfe5;margin-top:25px;padding:20px}.tutor-course-builder-section{margin-bottom:60px}.tutor-course-builder-section-title h3{font-size:20px;font-weight:700;color:#1d1f37;position:relative;overflow:hidden;z-index:1;margin:0 0 25px;cursor:pointer}.tutor-course-builder-section-title h3::after{content:"";position:absolute;top:50%;left:0;width:100%;height:1px;background:var(--tutor-primary-color);z-index:-1}.tutor-course-builder-section-title h3 span,.tutor-course-builder-section-title h3 i{float:left;background-color:#fff;font-size:20px;line-height:20px}.tutor-course-builder-section-title h3 i{color:var(--tutor-primary-color);font-size:14px}.tutor-course-builder-section-title h3 span{padding:0 15px 0 9px}.tutor-frontend-builder-item-scope{margin-bottom:30px}.tutor-frontend-builder-item-scope:last-child{margin-bottom:0}.tutor-builder-item-heading{font-weight:500;line-height:21px;margin-bottom:10px;display:block}.builder-course-thumbnail-upload-wrap>div{font-size:var(--tutor-text-size);line-height:25px;margin-bottom:20px;font-weight:400}.builder-course-thumbnail-img-src{position:relative}.builder-course-thumbnail-img-src .tutor-course-thumbnail-delete-btn{font-size:10px;position:absolute;top:-4px;left:-4px;color:#e53935;-webkit-transition:300ms;transition:300ms;border-radius:50%;width:20px;height:20px;line-height:20px;background:#fff;text-align:center}.builder-course-thumbnail-img-src .tutor-course-thumbnail-delete-btn i{line-height:20px}.tutor-course-builder-header{text-align:right;font-size:12px}.tutor-course-builder-section .course-empty-content{margin:15px 0}.tutor-course-builder-section .tutor-course-builder-header a{color:#393c40}.tutor-course-builder-section .tutor-course-builder-header a:first-child{padding-right:7px}.tutor-course-builder-section .tutor-course-builder-header a:last-child{padding-left:7px}.tutor-course-builder-section .tutor-course-builder-header{margin-top:-15px}.tutor-course-builder-section .new-topic-btn-wrap{padding:0;margin-top:20px}.tutor-course-available-instructors{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-course-available-instructors .added-instructor-item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 15px);flex:0 0 calc(50% - 15px);max-width:calc(50% - 15px);border:1px solid #dcdfe5;padding:13px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:4px;position:relative;margin-bottom:30px}.tutor-course-available-instructors .added-instructor-item .instructor-control{position:absolute;right:14px;top:50%;font-size:12px;-webkit-transform:translateY(-50%);transform:translateY(-50%);opacity:0;-webkit-transition:300ms;transition:300ms}.tutor-course-available-instructors .added-instructor-item .instructor-control a{color:red}.tutor-course-available-instructors .added-instructor-item:hover .instructor-control{opacity:1}.tutor-course-available-instructors .added-instructor-item .instructor-icon{height:45px;width:45px;overflow:hidden;border-radius:50px;margin-right:15px}.tutor-course-available-instructors .added-instructor-item .instructor-icon img{width:100%}.tutor-course-available-instructors .added-instructor-item .instructor-name{position:relative}.tutor-course-available-instructors .added-instructor-item .instructor-name img{display:inline-block;margin-left:10px;width:18px}.tutor-course-available-instructors .added-instructor-item .instructor-name img:hover+i.instructor-name-tooltip{opacity:1}.tutor-course-available-instructors .added-instructor-item i.instructor-name-tooltip{-webkit-transition:300ms;transition:300ms;opacity:0;position:absolute;bottom:34px;right:9px;background:#2a344f;-webkit-transform:translateX(50%);transform:translateX(50%);color:#fff;font-size:12px;font-style:normal;padding:0 8px;border-radius:15px;line-height:20px;z-index:1}.tutor-course-available-instructors .added-instructor-item i.instructor-name-tooltip::before{content:"";position:absolute;border:5px solid #2a344f;bottom:-3px;left:50%;margin-left:-5px;-webkit-transform:rotate(45deg);transform:rotate(45deg);z-index:-1}.tutor-course-available-instructors .added-instructor-item:nth-child(2n){margin-left:30px}.tutor-addons-list .plugin-icon{height:120px}.btn-switch{display:inline-block;height:22px;position:relative;width:40px}.btn-switch input{display:none}.btn-slider{background-color:#ccc;bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0;-webkit-transition:0.4s;transition:0.4s}.btn-slider:before{background-color:#fff;bottom:3px;content:"";height:16px;left:4px;position:absolute;-webkit-transition:0.4s;transition:0.4s;width:16px}input:checked+.btn-slider{background-color:var(--tutor-primary-color)}input:checked+.btn-slider:before{-webkit-transform:translateX(16px);transform:translateX(16px)}.btn-slider.btn-round{border-radius:34px}.btn-slider.btn-round:before{border-radius:50%}.tutor-video-embeded-wrap{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%}.tutor-video-embeded-wrap iframe,.tutor-video-embeded-wrap object,.tutor-video-embeded-wrap embed{position:absolute;top:0;left:0;width:100%;height:100%}.select2-selection__rendered [class^="tutor-icon-"]{display:inline-block;vertical-align:top;margin-right:6px}.select2-results__options [class^="tutor-icon-"]{color:var(--tutor-primary-color);display:inline-block;vertical-align:top;margin-right:6px}.select2-results__option--highlighted [class^="tutor-icon-"]{color:#fff}.tutor-video-metabox-wrap{margin-bottom:50px}.video-metabox-source-input-wrap{padding:30px;background-color:#f4f7f8;border:1px solid #dcdfe5;border-radius:3px}.video-metabox-source-html5-upload{background-color:#fff;text-align:center;padding:40px 20px;border:1px solid #dcdfe5;border-radius:3px}.video-metabox-source-html5-upload p{margin-bottom:5px}.tutor-video-metabox-wrap p{margin:0;padding:0}.video-metabox-source-html5-upload .video-upload-icon i{font-size:50px;color:var(--tutor-primary-color)}.video_source_upload_wrap_html5{margin-top:10px}.video-metabox-source-html5-poster{padding-top:30px}.video_source_wrap_html5{width:100%}.builder-course-thumbnail-upload-wrap .button-transparent{float:right;background:transparent !important}.builder-course-thumbnail-upload-wrap .button-transparent:hover{background:var(--tutor-primary-color) !important}.html5-video-poster{height:100px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.html5-video-poster .tutor-builder-course-video-poster-text{text-align:left;padding-left:20px}.html5-video-poster .tutor-builder-course-video-poster-text h5{font-size:14px;font-weight:700;margin:0 0 6px;line-height:1}.html5-video-poster .tutor-builder-course-video-poster-text span{font-size:14px;font-weight:400}.html5-video-poster img{height:100%;width:auto}.no-memberhsip-msg-wrap p{margin:0}.content-drip-message-wrap.tutor-error-msg{margin:40px 50px}.content-drip-message-wrap{margin:120px}.content-drip-wrap-flex{display:-webkit-box;display:-ms-flexbox;display:flex}.content-drip-wrap-flex .content-drip-left{margin-right:50px}.content-drip-wrap-flex ul{margin:0;list-style-position:inside}.content-drip-wrap-flex ul li a{color:var(--tutor-primary-color)}.tutor-alert{border:1px solid #f8a201;background:#fffff2;position:relative;border-radius:3px;padding:20px 25px 20px 95px;color:#a86d00;margin-bottom:20px}.tutor-alert p{margin-bottom:10px}.tutor-alert p:last-child{margin:0}.tutor-alert.tutor-alert-info{border:1px solid #13aaf6;background:#eaf8ff;color:#0586c7}.tutor-alert.tutor-alert-info::before{content:"\e96c";background:#13aaf6}.tutor-alert.tutor-alert-danger{border:1px solid #fe1a1a;background:#fff2f2;color:#a50000}.tutor-alert.tutor-alert-success{border:1px solid #69bc0d;background:#f6fff2;color:#3d7400}.tutor-alert::before{content:"\e95f";position:absolute;font-size:30px;font-family:"tutor" !important;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;width:70px;top:0;left:0;text-align:center;background:#f8a201;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#ffffff}.tutor-alert.tutor-alert-danger::before{content:"\e913";background:#fe1a1a}.tutor-alert.tutor-alert-success::before{content:"\e90f";background:#69bc0d}.tutor-alert-content p{margin:0}.gradename-bg{text-align:center;color:#ffffff;height:32px;min-width:32px;font-size:16px;line-height:32px;padding:0 8px;display:inline-block;border-radius:20px;font-weight:bold;margin-right:7px}.gradename-outline{text-align:center;height:32px;min-width:32px;font-size:16px;line-height:26px;padding:0 8px;display:inline-block;border-radius:20px;border:2px solid;margin-right:7px}.generate-course-gradebook-btn-wrap{margin:10px 0}.gradebook-result-for-label{margin:0;padding:4px 7px;background-color:#e8eff1;display:inline-block;margin-bottom:10px}table.course-single-gradebooks{border-spacing:0;width:100%;border-collapse:collapse;border:1px solid #dcdfe5}table.course-single-gradebooks th{padding:1em 1.41575em;text-align:left;vertical-align:top;border-bottom:1px solid #dcdfe5}table.course-single-gradebooks th{font-weight:600}table.course-single-gradebooks thead th{background-color:rgba(220,223,229,0.14);padding:1.41575em;vertical-align:middle}table.course-single-gradebooks tbody td{border-bottom:1px solid #dcdfe5;background-color:#ffffff !important}table.course-single-gradebooks a{color:#4b5981}.text-label{margin:0;padding:4px 7px;background-color:#e8eff1;display:inline-block;border-radius:3px}.text-label.submitted-assignment-grade-pass{background-color:#86b223;color:#ffffff}.text-label.submitted-assignment-grade-failed{background-color:#d71830;color:#ffffff}.tutor-bp-message-recipient-header{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:20px}.tutor-bp-recipient-info-wrap{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-bp-message-recipient-avatar-wrap img{width:70px;height:70px;border-radius:50%}.tutor-bp-message-recipient-avatar-wrap{margin-right:35px}.tutor-bp-message-recipient-header .tutor-bp-thread-recipient-name h3{margin:10px 0 8px !important;font-size:22px;font-weight:600;line-height:28px}.tutor-bp-message-recipient-header .tutor-bp-thread-recipient-name h4{margin:0 0 20px !important;font-size:16px;line-height:1;font-weight:500}.tutor-bp-enrolled-courses-wrap{margin:0}.tutor-bp-enrolled-courses-wrap .tutor-bp-enrolled-total-course-notice{font-weight:400;color:#1c294b;margin:10px 0 8px !important}.tutor-bp-enrolled-courses-wrap ul{padding:0 0 0 17px;margin:0;color:#50616f}.tutor-bp-enrolled-courses-wrap ul li a{line-height:1.7;display:block;color:#54616d;padding-left:10px}.tutor-bp-enrolled-courses-wrap ul li a:hover{color:var(--tutor-primary-color);opacity:1;-webkit-transition:300ms;transition:300ms;text-decoration:underline !important}.oxy-tutor-element{width:100%}.tutor-dashboard-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-bottom:30px;border-bottom:1px solid #dcdfe5;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-dashboard-header .tutor-btn.bordered-btn{background-color:transparent;text-transform:uppercase;font-weight:400;border-radius:2px}.tutor-dashboard-header .tutor-btn.bordered-btn i{font-size:20px}.tutor-dashboard-header .tutor-star-rating-group{margin-right:3px}.tutor-dashboard-header-avatar img{display:block;width:150px;height:150px;border-radius:50%}.tutor-dashboard-header-info{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-left:24px;padding-top:15px;padding-bottom:15px}.tutor-dashboard-header-button{padding-top:15px}.tutor-dashboard-header-display-name h4{font-size:30px;margin-top:0px;margin-bottom:10px;line-height:34px}.tutor-dashboard-header-stats{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:25px}.tutor-dashboard-header-stats>div:not(:first-child){margin-left:30px}.tutor-dashboard-social-icons{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-dashboard-social-icons h4{margin:0 10px 0 0;font-size:var(--tutor-text-size);line-height:25px}.tutor-dashboard-social-icons a{display:inline-block;font-size:12px;padding:0 5px;line-height:25px;color:#393c40;-webkit-transition:300ms;transition:300ms}.tutor-dashboard-social-icons a:hover{color:var(--tutor-primary-color)}.tutor-profile-completion-warning{display:-webkit-box;display:-ms-flexbox;display:flex;padding:20px 0;border-bottom:1px solid #dcdfe5}.tutor-profile-completion-warning .profile-completion-warning-icon{margin-top:10px}.tutor-profile-completion-warning .profile-completion-warning-icon span{font-size:40px;color:#ed9700;padding:0 20px}.tutor-profile-completion-warning .profile-completion-warning-content{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-positive:1;flex-grow:1;-webkit-box-flex:1}.tutor-profile-completion-warning .profile-completion-warning-content h4{font-size:20px;line-height:30px;margin:0;padding:0;width:100%}.tutor-profile-completion-warning .profile-completion-warning-content p{margin-bottom:10px;font-size:14px;font-weight:300;color:#737787}.tutor-profile-completion-warning .profile-completion-warning-content p a{font-weight:400;color:#3e64de}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details{-ms-flex-positive:1;flex-grow:1;-webkit-box-flex:1}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul{margin:0;list-style:none}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul li{display:inline;position:relative;padding-left:16px;color:#737787}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul li:not(:last-child){margin-right:21px}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul li::before{content:"\2022";position:absolute;color:#f44337;font-weight:bold;display:inline-block;left:0}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul li span{color:#3f435b}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-status p span{font-weight:400}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-status .tutor-progress-bar-wrap .tutor-progress-bar{height:6px;border-radius:8.5px;background-color:#ededf0}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-status .tutor-progress-bar-wrap .tutor-progress-filled{height:6px;border-radius:3px;background-color:#ed9700}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-status .tutor-progress-bar-wrap .tutor-progress-filled::after{display:none}.tutor-dashboard-info-table-wrap{margin-bottom:30px}.tutor-dashboard-info-table-wrap table{margin-bottom:0;border-collapse:collapse;border:1px solid #dcdfe5;border-radius:4px;width:100%}.tutor-dashboard-info-table-wrap>h3{font-size:20px;font-weight:500;border:1px solid #dcdfe5;border-bottom:none;margin:0;padding:30px;border-radius:4px 4px 0 0}.tutor-dashboard-info-table-wrap>h3+table{border-radius:0 0 4px 4px}.tutor-dashboard-info-table thead{background:#fafbfc}.tutor-dashboard-info-table thead tr td{padding:15px}.tutor-dashboard-info-table tbody tr td{background:transparent !important;padding:20px 15px}.tutor-dashboard-info-table thead tr,.tutor-dashboard-info-table tbody tr{border:1px solid #dcdfe5}.tutor-dashboard-info-table thead tr td:first-child,.tutor-dashboard-info-table tbody tr td:first-child{padding-left:25px}.tutor-dashboard-info-table span.pending,.tutor-dashboard-info-table span.pass,.tutor-dashboard-info-table span.fail{color:#fff;font-size:14px;line-height:18px;padding:1px 6px;border-radius:2px}.tutor-dashboard-info-table span.pending{background-color:#f5a623}.tutor-dashboard-info-table span.fail{background-color:#d71830}.tutor-dashboard-info-table span.pass{background-color:var(--tutor-success-button-color)}.tutor-dashboard-single-review{border:1px solid #dcdfe5;border-radius:4px;margin-bottom:30px}.tutor-dashboard-review-heading{padding:10px 20px;border-bottom:1px solid #dcdfe5;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.individual-dashboard-review-body{padding:10px 20px}.tutor-dashboard-review-title{font-size:18px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:300}.tutor-dashboard-review-title a{font-weight:500;color:var(--tutor-primary-color)}.tutor-dashboard-review-title a:hover{color:var(--tutor-primary-hover-color)}.tutor-dashboard-review-links{white-space:nowrap;font-weight:400}.tutor-dashboard-review-links a{color:#8c94a8;margin-left:10px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px}.tutor-dashboard-review-links a i{line-height:inherit;font-size:14px;margin-right:5px}.individual-dashboard-review-body .review-meta{font-size:85%;margin:0;color:#8c94a8}.individual-star-rating-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-edit-review-modal-wrap .modal-close-wrap a.modal-close-btn{color:#222222;background:none;font-size:20px;top:8px}.tutor-modal-wrap form{margin-bottom:20px}.tutor-dashboard-info-cards{margin:0 -15px 15px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-dashboard-info-cards .tutor-dashboard-info-card{padding:15px;min-width:33.333%}.tutor-dashboard-info-cards .tutor-dashboard-info-card p{margin:0;padding:15px 25px;background:#282c36;color:#ffffff;border-radius:4px}.tutor-dashboard-info-cards .tutor-dashboard-info-card p span.tutor-dashboard-info-val{display:block;font-weight:700;font-size:30px;line-height:1.618}.tutor-dashboard-info-cards .tutor-dashboard-info-card p span span{display:inline-block}.tutor-dashboard-info-cards .tutor-dashboard-info-card p>*{vertical-align:middle}.tutor-dashboard-content{margin-bottom:60px}.tutor-dashboard-content>h2{margin-bottom:20px}.prev-btn{font-size:16px;line-height:1.88;color:#3f435b}.prev-btn span{font-size:18px;font-weight:800;color:#3e64de;margin-right:7px}.tutor-dashboard-content .tutor-quiz-attempt-history tr th,.tutor-dashboard-content .tutor-quiz-attempt-history tr td{vertical-align:middle;border:none}.tutor-dashboard-content .tutor-quiz-attempt-history tr td:first-child{padding:15px 13px !important}.tutor-dashboard-content .tutor-quiz-attempt-history table span.result-fail,.tutor-dashboard-content .tutor-quiz-attempt-history table span.result-pass{width:auto;height:auto;line-height:19px;padding:0 6.5px;margin-right:4px}.label-course-status{background-color:#cccccc;padding:3px 5px;color:#ffffff;font-size:12px;text-transform:capitalize}.label-course-publish{background-color:var(--tutor-success-button-color)}.tutor-dashboard-content .quiz-attempt-answers-wrap table th{font-size:14px;font-weight:400;line-height:1.5;letter-spacing:0.12px;color:#737787;padding:15px 10px}.tutor-dashboard-content .tutor-quiz-attempt-history table thead tr,.single-quiz-page.tutor-quiz-attempt-history table thead tr{background-color:#fafbfc}.tutor-dashboard-content .tutor-quiz-attempt-history table tr,.single-quiz-page.tutor-quiz-attempt-history table tr{border:0;background-color:#fff}.tutor-dashboard-content .tutor-quiz-attempt-history table tr:first-child,.single-quiz-page.tutor-quiz-attempt-history table tr:first-child{background-color:#fafbfc}.tutor-dashboard-content .tutor-quiz-attempt-history table th,.tutor-dashboard-content .tutor-quiz-attempt-history table td,.single-quiz-page.tutor-quiz-attempt-history table th,.single-quiz-page.tutor-quiz-attempt-history table td{border:1px solid #dcdfe5 !important;vertical-align:middle}.tutor-dashboard-content .tutor-quiz-attempt-history table th:first-child,.tutor-dashboard-content .tutor-quiz-attempt-history table td:first-child,.single-quiz-page.tutor-quiz-attempt-history table th:first-child,.single-quiz-page.tutor-quiz-attempt-history table td:first-child{width:62%}.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(2),.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(4),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(2),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(4),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(2),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(4),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(2),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(4){width:11%}.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(3),.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(5),.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(6),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(3),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(5),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(6),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(3),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(5),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(6),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(3),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(5),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(6){width:9%}.tutor-dashboard-content .tutor-quiz-attempt-history table th,.single-quiz-page.tutor-quiz-attempt-history table th{font-size:14px;font-weight:500;line-height:1.14;color:#8792b2}.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(n+3),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(n+3){text-align:center}.tutor-dashboard-content .tutor-quiz-attempt-history table td,.single-quiz-page.tutor-quiz-attempt-history table td{background-color:#fff;font-size:14px;font-weight:400;color:#4b5981}.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(n+3),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(n+3){font-weight:500;text-align:center;padding-left:3px !important;padding-right:3px !important}.tutor-dashboard-content .tutor-quiz-attempt-history table td:last-child,.single-quiz-page.tutor-quiz-attempt-history table td:last-child{padding-left:0px !important;padding-right:0px !important}.tutor-dashboard-content .tutor-quiz-attempt-history table td a,.single-quiz-page.tutor-quiz-attempt-history table td a{font-weight:500;color:#4b5981;text-decoration:underline;word-break:initial}.tutor-dashboard-content .tutor-quiz-attempt-history table td .course a,.single-quiz-page.tutor-quiz-attempt-history table td .course a{font-weight:600;line-height:1.29;color:#4b5981;text-decoration:none}.tutor-dashboard-content .tutor-quiz-attempt-history table td .course-meta,.single-quiz-page.tutor-quiz-attempt-history table td .course-meta{display:inline-block;margin-top:5px}.tutor-dashboard-content .tutor-quiz-attempt-history table td .course-meta span:nth-child(2),.single-quiz-page.tutor-quiz-attempt-history table td .course-meta span:nth-child(2){margin:0 17px}.tutor-dashboard-content .tutor-quiz-attempt-history table td .student,.single-quiz-page.tutor-quiz-attempt-history table td .student{font-weight:600;line-height:1.29;color:#4b5981}.tutor-dashboard-content .tutor-quiz-attempt-history table td .student-meta,.single-quiz-page.tutor-quiz-attempt-history table td .student-meta{display:inline-block;margin-top:5px}.single-quiz-page.tutor-quiz-attempt-history table{margin-bottom:30px}.tutor-dashboard-content .tutor-quiz-attempt-history table a{color:var(--tutor-primary-color);font-weight:700;line-height:24px}.tutor-dashboard-content .tutor-quiz-attempt-history table a:hover{color:var(--tutor-primary-hover-color)}.tutor-dashboard-content .tutor-quiz-attempt-history table a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-item-group{padding:25px;border:1px solid #dcdfe5;border-radius:4px;margin-bottom:30px}.tutor-dashboard-item-group>h4{font-size:20px;color:var(--tutor-primary-color);font-weight:500}.tutor-dashboard-item-group>h4:hover{color:var(--tutor-primary-hover-color)}.tutor-dashboard-assignment-submitted-table tr td{text-align:center}.tutor-dashboard-assignment-submitted-table tr td a{color:#8c94a8;-webkit-transition:300ms;transition:300ms}.tutor-dashboard-assignment-submitted-table tr td a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-assignment-submitted-table tr td,.tutor-dashboard-assignment-submitted-table tr th{border:1px solid #dcdfe5}.tutor-assignment-review-header{margin-bottom:30px}.tutor-assignment-review-header h3{margin-bottom:10px;line-height:28px}.tutor-assignment-evaluate-wraps h3,.tutor-assignment-review-header h3 a{font-size:22px;font-weight:700;color:var(--tutor-text-color);display:block}.tutor-assignment-review-header p{margin:0;color:var(--tutor-text-color);font-weight:700}.tutor-assignment-review-header p a{font-weight:400;color:var(--tutor-text-color)}.tutor-assignment-review-header a{-webkit-transition:300ms;transition:300ms}.tutor-assignment-review-header a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-assignment-review{background:rgba(220,223,229,0.14);border:1px solid #dcdfe5;padding:25px;font-weight:400;border-radius:4px;margin-bottom:40px}.tutor-dashboard-assignment-review h5,.tutor-dashboard-assignment-review h4{font-size:16px;line-height:23px;font-weight:700;color:var(--tutor-text-color)}.tutor-dashboard-assignment-review h5{margin-bottom:15px}.tutor-dashboard-assignment-files{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:-9px}.tutor-dashboard-assignment-files .uploaded-files{background-color:#fff;border:1px solid #dcdfe5;border-radius:4px;margin:9px;-webkit-transition:300ms;transition:300ms}.tutor-dashboard-assignment-files .uploaded-files:hover{-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.1);box-shadow:0 5px 10px rgba(0,0,0,0.1)}.tutor-dashboard-assignment-files .uploaded-files a i{margin-right:12px;color:#606c8f;float:left;font-size:28px;line-height:28px}.tutor-dashboard-assignment-files .uploaded-files a{color:var(--tutor-primary-color);display:block;overflow:hidden;line-height:28px;padding:15px 17px}.tutor-dashboard-assignment-files .uploaded-files a:hover{color:var(--tutor-primary-hover-color)}.tutor-assignment-evaluate-row{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-assignment-evaluate-row .tutor-option-field-label{-webkit-box-flex:0;-ms-flex:0 0 135px;flex:0 0 135px}.tutor-assignment-evaluate-row .tutor-option-field{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-assignment-evaluate-row .tutor-option-field-label label{display:block;padding-top:12px}.tutor-option-field-label label br{display:none}.tutor-option-field-label label p{margin:0;display:inline-block}.tutor-assignment-evaluate-row textarea,.tutor-assignment-evaluate-row .tutor-option-field input{border:1px solid #dcdfe5;height:50px;padding:0 15px;border-radius:4px;width:100px;background-color:#fff}.tutor-assignment-evaluate-row textarea{height:165px;width:100%}.tutor-assignment-evaluate-row{margin-bottom:60px}.tutor-assignment-evaluate-row p.desc{margin-bottom:0;margin-top:6px;font-style:italic}.tutor-dashboard-profile .tutor-dashboard-profile-item{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-dashboard-profile .tutor-dashboard-profile-item .heading{min-width:190px}@media (max-width: 480px){.tutor-dashboard-profile .tutor-dashboard-profile-item{-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-dashboard-profile .tutor-dashboard-profile-item .heading{min-width:100%;width:100%;font-weight:700;margin-bottom:6px}}.tutor-dashboard-profile .tutor-dashboard-profile-item .content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-dashboard-profile .tutor-dashboard-profile-item .content small{font-size:inherit;font-style:italic}.tutor-dashboard-profile .tutor-dashboard-profile-item .content small a{color:var(--tutor-primary-color)}.tutor-dashboard-profile .tutor-dashboard-profile-item .content small a:hover{color:var(--tutor-primary-hover-color)}.tutor-dashboard-avater img{width:70px;height:70px;display:block;border-radius:50%}.tutor-dashboard-student-info h4{font-size:18px;color:var(--tutor-light-color);margin-bottom:0}.tutor-dashboard-student-info h4 a{color:var(--tutor-text-color)}.tutor-dashboard-user-role{font-weight:400}.tutor-dashboard-inline-links{margin-bottom:30px}.tutor-dashboard-inline-links ul{margin:0;padding:0;border-bottom:1px solid #dfe1e5}.tutor-dashboard-inline-links ul li{display:inline-block}.tutor-dashboard-inline-links ul li a{display:block;padding:5px 10px;color:var(--tutor-primary-color);margin-bottom:-1px;line-height:40px}.tutor-dashboard-inline-links ul li a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-inline-links ul li a:hover,.tutor-dashboard-inline-links ul li.active a{color:var(--tutor-primary-color);border-bottom:1px solid var(--tutor-primary-color);padding-bottom:4px}.tutor-dashboard-student-meta ul li:first-child{margin-left:0}@media (max-width: 767px){.tutor-dashboard-student-meta ul{display:block;border:none;padding:0}.tutor-dashboard-student-meta ul li{display:inline-block;color:var(--tutor-text-color);margin:5px;border:1px solid #dddddd;padding:5px 10px;border-radius:4px}}.tutor-dashboard-student-meta ul li strong{display:block;color:var(--tutor-light-color);font-weight:400}.tutor-dashboard-permalinks{list-style:none;margin:0px 0 20px;padding:20px 0;border-right:1px solid #dcdfe5}.tutor-dashboard-permalinks li a:hover{background-color:#edf0f9}.tutor-dashboard-permalinks li.active a{background-color:var(--tutor-primary-color);color:#ffffff}.tutor-dashboard-permalinks li.active a:hover{background-color:var(--tutor-primary-hover-color)}@media (max-width: 991px){.tutor-dashboard-student .tutor-col-3,.tutor-dashboard-student .tutor-col-9{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.profile-completion-warning-details{margin-bottom:10px}}.tutor-dashboard-permalinks a{display:block;color:var(--tutor-text-color);padding:10px 20px;line-height:28px}.tutor-dashboard-permalinks a:before{content:"\e968";font-family:"tutor" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-right:15px;vertical-align:middle;color:var(--tutor-primary-color);opacity:0.6;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";font-size:17px}.tutor-dashboard-permalinks a:hover::before{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";color:var(--tutor-primary-hover-color)}.tutor-dashboard-permalinks li.active a:before{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";color:#fff}.tutor-dashboard-menu-bio a:before,.tutor-dashboard-menu-my-profile a:before{content:"\e963"}.tutor-dashboard-menu-enrolled-courses a:before{content:"\e969"}.tutor-dashboard-menu-courses_taken a:before,.tutor-dashboard-menu-my-courses a:before{content:"\e965"}.tutor-dashboard-menu-announcements a:before{content:"\e93f"}.tutor-dashboard-menu-wishlist a:before{content:"\e908"}.tutor-dashboard-menu-reviews a:before{content:"\e917"}.tutor-dashboard-menu-my-quiz-attempts a:before{content:"\e9ab"}.tutor-dashboard-menu-quiz-attempts a:before{content:"\e91f"}.tutor-dashboard-menu-question-answer a:before{content:"\e948"}.tutor-dashboard-menu-earning a:before{content:"\e96b"}.tutor-dashboard-menu-withdraw a:before{content:"\e960"}.tutor-dashboard-menu-settings a:before{content:"\e961"}.tutor-dashboard-menu-logout a:before{content:"\e962"}.tutor-dashboard-menu-purchase_history a:before{content:"\e964"}.tutor-dashboard-menu-assignments a:before{content:"\e98b"}.tutor-dashboard-content{padding-top:30px}.quiz-attempts-title,.tutor-quiz-attempt-history-title{font-size:22px;font-weight:600;line-height:1.27;color:#4b5981;margin-bottom:31px}.tutor-date-range-filter-wrap{margin:15px 0 20px;font-size:12px}.report-top-sub-menu{margin:0 10px 5px 0;display:inline-block;font-size:0}.report-top-sub-menu a{text-decoration:none;padding:5px 8px;border:1px solid #d7dadf;color:#aaaeb3;white-space:nowrap;display:inline-block;font-size:12px}.report-top-sub-menu a:not(:first-child){margin-left:-1px}.report-top-sub-menu a:hover{background:#edf0f9;color:#333}.report-top-sub-menu a.active{background-color:var(--tutor-primary-color);color:#ffffff;border:1px solid var(--tutor-primary-hover-color)}.tutor-dashboard-menu-divider{height:1px;margin:10px 0;overflow:hidden;background-color:#dcdfe5}.tutor-dashboard-menu-divider-header{color:#acacac;padding:10px 20px;cursor:default}.tutor-date-range-wrap{display:inline-block}.report-date-range-form{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:0;max-width:370px}.date-range-input{position:relative}.date-range-input input{border-radius:0 !important;margin:0 !important;border-right:none !important;font-size:14px}.date-range-input:last-child{margin-right:0}.date-range-input:last-child button{border-radius:0}.date-range-input input,.date-range-input input[type="text"]{border:1px solid #d7dadf;-webkit-box-shadow:none;box-shadow:none;line-height:29px;margin:0;padding-right:30px;padding-top:0;padding-bottom:0;width:100%}.date-range-input i.tutor-icon-calendar{position:absolute;right:10px;top:7px}.date-range-input button{background-color:var(--tutor-primary-color);color:#ffffff;border:none;line-height:30px;padding:0 15px}.date-range-input button:hover{background-color:var(--tutor-primary-hover-color)}.report-download-csv-icon{float:right}.report-download-csv-icon a{text-decoration:none}.tutor-dashboard-statement-table-wrap{overflow-x:auto}table.tutor-dashboard-statement-table p{margin:0;padding:0}table.tutor-dashboard-statement-table p.small-text{font-size:12px;color:#666666}.tutor-mycourse-thumbnail{-webkit-box-flex:0;-ms-flex:0 0 250px;flex:0 0 250px;background-size:cover;background-position:center}.tutor-mycourse-content{padding:20px;-webkit-box-flex:1;-ms-flex:1;flex:1}@media (max-width: 580px){.tutor-mycourse-thumbnail{height:200px}.tutor-mycourse-thumbnail,.tutor-mycourse-content{min-width:100%;width:100%}.profile-completion-warning-details li{display:block !important}}.tutor-mycourse-content h3{margin:0 0 9px}.tutor-mycourse-content h3 a:hover{color:var(--tutor-primary-color)}.tutor-mycourse-rating{color:#f8c51c;font-size:14px}.tutor-mycourse-rating i{margin-right:4px}.tutor-mycourse-view,.tutor-mycourse-edit,.tutor-mycourse-delete{color:var(--tutor-light-color);-webkit-transition:300ms;transition:300ms}.tutor-mycourse-view i,.tutor-mycourse-edit i,.tutor-mycourse-delete i{line-height:inherit;display:inline-block;vertical-align:top;color:var(--tutor-primary-color)}.tutor-mycourse-view:hover,.tutor-mycourse-edit:hover,.tutor-mycourse-delete:hover{color:var(--tutor-primary-color)}.tutor-dashboard-content-inner .tutor-mycourse-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:30px;border:1px solid #dcdfe5;border-radius:4px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;overflow:hidden;position:relative}@media (max-width: 580px){.tutor-dashboard-content-inner .tutor-mycourse-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}}.tutor-dashboard-content-inner .tutor-mycourse-wrap .tutor-course-status h4{display:none}.tutor-dashboard-content-inner .tutor-mycourse-wrap .tutor-mycourse-rating{margin-bottom:3px}.tutor-dashboard-content-inner .tutor-mycourse-wrap .tutor-mycourse-rating a{font-weight:400;margin-left:5px;color:#8c94a8}.tutor-dashboard-content-inner .tutor-mycourse-wrap .tutor-mycourse-rating a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-content-inner .tutor-mycourse-wrap p:last-child{margin-bottom:0}.tutor-mycourse-content .mycourse-footer{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-mycourse-content .mycourse-footer .tutor-mycourses-stats{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-dashboard-content-inner .tutor-mycourses-stats>*{margin-right:8px}.tutor-mycourse-status{margin-right:15px}.tutor-dashboard-content-inner h3 a{color:var(--tutor-text-color);font-size:22px;line-height:28px;font-weight:500;display:block}.tutor-dashboard-content-inner .tutor-course-metadata ul{display:block;list-style:none;margin:0 0 10px;padding:0}.tutor-dashboard-content-inner .tutor-progress-bar-wrap{margin-bottom:0}.tutor-dashboard-content-inner .tutor-course-metadata li{display:inline-block;color:var(--tutor-light-color);margin-left:20px}.tutor-dashboard-content-inner .tutor-course-metadata li:first-child{margin-left:0}.tutor-dashboard-content-inner .tutor-course-metadata li span{color:var(--tutor-text-color);margin-left:5px}.ui-datepicker{background-color:#fff;border:1px solid #eeeeee;display:none;margin-top:4px;padding:5px;width:180px}.ui-datepicker a,.ui-datepicker a:hover{text-decoration:none}.ui-datepicker a:hover,.ui-datepicker td:hover a{color:#2a6496;-webkit-transition:color 0.1s ease-in-out;transition:color 0.1s ease-in-out}.ui-datepicker .ui-datepicker-header{margin-bottom:4px;text-align:center}.ui-datepicker .ui-datepicker-title{font-weight:700}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{cursor:default;font-family:"tutor";-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;height:20px;line-height:1;margin-top:2px;width:30px}.ui-datepicker .ui-datepicker-prev{float:left;text-align:left}.ui-datepicker .ui-datepicker-next{float:right;text-align:right}.ui-datepicker .ui-datepicker-prev:before{content:"\e921"}.ui-datepicker .ui-datepicker-next:before{content:"\e903"}.ui-datepicker .ui-icon{display:none}.ui-datepicker .ui-datepicker-calendar{table-layout:fixed;width:100%}.ui-datepicker .ui-datepicker-calendar th,.ui-datepicker .ui-datepicker-calendar td{text-align:center;padding:0}.ui-datepicker .ui-datepicker-calendar td{border-radius:4px;-webkit-transition:background-color 0.1s ease-in-out, color 0.1s ease-in-out;transition:background-color 0.1s ease-in-out, color 0.1s ease-in-out}.ui-datepicker .ui-datepicker-calendar td:hover{background-color:#eee;cursor:pointer}.ui-datepicker .ui-datepicker-calendar td a{text-decoration:none}.ui-datepicker .ui-datepicker-current-day{background-color:#4289cc}.ui-datepicker .ui-datepicker-current-day a{color:#fff}.ui-datepicker .ui-datepicker-calendar .ui-datepicker-unselectable:hover{background-color:#fff;cursor:default}.ui-datepicker-calendar .ui-state-default{border:none;background:none}.ui-datepicker-calendar .ui-state-default.ui-state-highlight{background:#eeeeee;padding:3px;display:block}.tutor-table{width:100%}.tutor-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.tutor-course-delete-popup{text-align:center;font-size:16px;line-height:25px;font-weight:400;color:#8C94A8}.tutor-course-delete-popup img{width:110px;margin:0 auto}.tutor-course-delete-popup h3{font-weight:500;font-size:30px;margin:15px 0 25px}.tutor-modal-button-group{margin-top:55px}.tutor-modal-button-group button{line-height:30px;padding:10px 25px;color:#C7CCDA;border:2px solid #DDDFE7;border-radius:2px;background:#fff;min-width:220px;text-align:center;text-transform:uppercase;-webkit-transition:300ms;transition:300ms}.tutor-modal-button-group button+button{margin-left:20px}.tutor-modal-button-group button.tutor-danger{background:#F0576A;border-color:#F0576A;color:#ffffff}.tutor-modal-button-group button:hover{background:#fff;color:#333;border-color:#333}.tutor-modal-button-group button.tutor-danger:hover{background:#cd4a5a;border-color:#cd4a5a;color:#ffffff}@media (max-width: 768px){.tutor-modal-button-group button{padding:5px 20px;min-width:auto;margin-bottom:6px}.tutor-modal-button-group{margin-top:20px}}.withdraw-method-select-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0 -15px 40px}.withdraw-method-select-wrap .withdraw-method-select{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding:0 15px;margin-bottom:30px}.withdraw-method-select-wrap .withdraw-method-select label{display:block;padding:20px;margin:0;cursor:pointer;overflow:hidden;border:1px solid #DCDFE5;border-radius:4px;position:relative}.withdraw-method-select-wrap .withdraw-method-select input:checked+label{border-color:var(--tutor-success-button-color);-webkit-box-shadow:0 0 0 1px var(--tutor-success-button-color);box-shadow:0 0 0 1px var(--tutor-success-button-color)}.withdraw-method-select-wrap .withdraw-method-select label:after{content:'\e90f';position:absolute;right:-1px;top:-1px;border:1px solid #DCDFE5;height:22px;width:22px;text-align:center;line-height:22px;color:transparent}.withdraw-method-select-wrap .withdraw-method-select input:checked+label:after{color:#fff;background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color);font-family:'tutor' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;font-size:13px}.withdraw-method-select-wrap .withdraw-method-select p{margin:0}.withdraw-method-select-wrap .withdraw-method-select label>p{font-size:20px;font-weight:600;color:var(--tutor-primary-color)}.withdraw-method-select-wrap .withdraw-method-select label span{color:#B0B6C8;font-weight:400}.withdraw-method-form{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0 -15px}.withdraw-method-form>div{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;min-width:50%;padding:0 15px 20px}@media (max-width: 480px){.withdraw-method-form>div{width:100%}}.withdraw-method-form>div.withdraw-account-save-btn-wrap{width:100%}.withdraw-form-field-amount input[type='text'],.withdraw-method-forms-wrap .withdraw-method-form input:not([type="submit"]):not([type="radio"]):not([type="checkbox"]),.withdraw-method-forms-wrap .withdraw-method-form textarea{border:1px solid #DCDFE5;display:block;width:100%;background:transparent;-webkit-box-shadow:none;box-shadow:none;border-radius:4px}label[for="tutor_withdraw_amount"]{margin-bottom:7px;display:block}.withdraw-form-field-amount input[type='text']{margin-bottom:10px;height:45px}.withdraw-method-forms-wrap .withdraw-method-form input:not([type="submit"]):not([type="radio"]):not([type="checkbox"]):focus,.withdraw-method-forms-wrap .withdraw-method-form textarea:focus{border-color:var(--tutor-primary-color);outline:none}.withdraw-method-forms-wrap .withdraw-method-form textarea{min-height:80px}.withdraw-method-forms-wrap .withdraw-method-form label{color:#989EAF;margin-bottom:8px;display:block}.withdraw-method-forms-wrap .withdraw-method-form .withdraw-field-desc{font-size:12px;margin:5px 0 0;font-style:italic}.submitted-assignment-title a,.submitted-assignment-title h3{margin-bottom:20px}.submitted-assignments-sorting-wrap{margin-bottom:30px}.submitted-assignments-sorting-wrap .tutor-form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-preferred-size:35% !important;flex-basis:35% !important}.submitted-assignments-sorting-wrap .tutor-form-group label,.submitted-assignments-sorting-wrap .tutor-form-group select{margin-bottom:0}.submitted-assignments-sorting-wrap .tutor-form-group label{-ms-flex-preferred-size:35%;flex-basis:35%}.submitted-assignments-sorting-wrap .tutor-form-group select{height:40px}.tutor-dashboard-assignment-table .student-column{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-dashboard-assignment-table .student-column .student-avatar{width:34px;margin-right:10px}.tutor-dashboard-assignment-table .student-column .student-avatar img{border-radius:50%}.tutor-dashboard-assignment-table .student-column .student-avatar span{display:block;width:34px;height:34px;line-height:34px;border-radius:50%;font-size:12px;text-align:center}.tutor-dashboard-assignment-table .student-column .student-details h4,.tutor-dashboard-assignment-table .student-column .student-details p{line-height:1.3;margin-bottom:0}.tutor-dashboard-assignment-table span.review-required,.tutor-dashboard-assignment-table span.result-pass,.tutor-dashboard-assignment-table span.result-fail{background:#df3247;font-size:14px;font-weight:bold;color:#fff;padding:4px 11px;border-radius:2px}.tutor-dashboard-assignment-table span.result-pass{background:var(--tutor-success-button-color)}.tutor-dashboard-assignment-table span.review-required{background:#f5b30d}.tutor-assignment-review-header p span{font-weight:400;color:var(--tutor-text-color)}.tutor-assignment-submitted-page{border-bottom:none}.tutor-assignment-submitted-page .assignment-info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-assignment-submitted-page .assignment-info p{margin-right:15px}.tutor-assignment-submitted-page h3{margin:5px 0}.tutor-dashboard-assignment-submitted-content{margin-top:30px;margin-bottom:50px}.tutor-dashboard-assignment-review .tutor-assignment-evaluate-row{margin-bottom:30px}.tutor-dashboard-assignment-review .tutor-assignment-evaluate-row .input-mark{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-dashboard-assignment-review .tutor-assignment-evaluate-row .input-mark input{margin:0}.tutor-dashboard-assignment-review .tutor-assignment-evaluate-row .input-mark p{margin-top:0;margin-left:15px}.tutor-announcement-content-wrap{text-align:left !important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-announcement-content-wrap p{margin:0}.tutor-dashboard-announcement-sorting-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-column-gap:15px;-moz-column-gap:15px;column-gap:15px}.tutor-dashboard-announcement-sorting-wrap div:nth-child(1){-ms-flex-preferred-size:50%;flex-basis:50%}.tutor-dashboard-announcement-sorting-wrap div:nth-child(2){-ms-flex-preferred-size:20%;flex-basis:20%}.tutor-dashboard-announcement-sorting-wrap div:nth-child(3){-ms-flex-preferred-size:30%;flex-basis:30%}.tutor-dashboard-announcement-table{border-spacing:0;border-collapse:collapse;border:1px solid #ccd0d4}.tutor-dashboard-announcement-table thead th,.tutor-dashboard-announcement-table thead td{border-bottom:1px solid #ccd0d4}.tutor-dashboard-announcement-table tbody tr:last-child{border-bottom:1px solid #ccd0d4}.tutor-dashboard-announcement-table tbody td:first-child{padding-left:30px;line-height:24px}.tutor-dashboard-announcement-table tr{background-color:#F3F3F3}.tutor-dashboard-announcement-table tr:nth-child(odd){background-color:#fff}.tutor-dashboard-announcement-table th,.tutor-dashboard-announcement-table td{border:0;vertical-align:middle}.tutor-dashboard-announcement-table th h4,.tutor-dashboard-announcement-table td h4{font-size:16px;margin-bottom:0}.tutor-dashboard-announcement-table th p,.tutor-dashboard-announcement-table th a,.tutor-dashboard-announcement-table td p,.tutor-dashboard-announcement-table td a{font-size:13px;margin-bottom:0}.tutor-dashboard-announcement-table th:last-child,.tutor-dashboard-announcement-table td:last-child{padding-right:30px}.tutor-dashboard-announcement-table th{padding:15px 0;background-color:#f3f3f3}.tutor-dashboard-announcement-table td{padding:30px 0}.tutor-dashboard-announcement-table th:first-child{padding-left:40px}.tutor-dashboard-announcement-table th:last-child{padding-right:40px}.tutor-announcement-datepicker{position:relative}.tutor-announcement-datepicker input,.tutor-announcement-datepicker i{position:absolute}.tutor-announcement-datepicker i{top:50%;right:10px;color:#3e64de}.tutor-announcement-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-announcement-buttons li{list-style:none}.tutor-dropdown{position:relative;cursor:pointer;margin-left:20px}.tutor-dropdown .tutor-icon-action{padding:5px 10px;margin-right:-10px}.tutor-dropdown .tutor-icon-action:hover{background:#f3f3f3;border-radius:50%}.tutor-dropdown.show .tutor-dropdown-menu{display:block !important}.tutor-dropdown-menu:before{content:"";position:absolute;right:10px;background:linear-gradient(-45deg, transparent 50%, black 50%);height:10px;width:10px;-webkit-transform:rotate(45deg);transform:rotate(45deg);top:-4px}.tutor-dropdown-menu{min-width:140px;background:#353535;color:white;width:100%;position:absolute;top:40px;right:-13px;display:none;border-radius:5px;padding:0;margin:0}.tutor-dropdown-menu li{list-style:none !important;padding:5px 15px 5px 15px;cursor:pointer}.tutor-dropdown-menu li:first-child{border-top-left-radius:6px;border-top-right-radius:6px}.tutor-dropdown-menu li:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}.tutor-dropdown-menu li:hover{background-color:#6b6b6b}.tutor-dropdwown-menu li i{padding-right:4px}.tutor-announcements-update-form .tutor-option-field-row input[type="text"],.tutor-announcements-update-form textarea,.tutor-announcements-form .tutor-option-field-row input[type="text"],.tutor-announcements-form textarea{width:100%;margin-top:8px}.tutor-announcements-form select,.tutor-announcements-update-form select{width:100%;max-width:100% !important;padding:7px 12px;margin-top:8px}.tutor-announcements-update-form .tutor-option-field-row,.tutor-announcements-form .tutor-option-field-row{border:none !important}.tutor-announcement-modal-content{border-radius:20px}.tutor-announcement-modal-footer-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-announcement-cancel-btn{background:#e8e8e8 !important;border-radius:3px !important;color:#7a7a7a !important}.tutor-announcement-details-modal-content>a{cursor:pointer;padding:20px;float:right}.modal-container.tutor-announcement-details-container{padding:45px 70px !important}.balance-info .tutor-announcement-big-icon{margin-right:10px}.tutor-announcement-big-icon{font-size:32px;width:76px;height:76px;border-radius:100%;background:#e9edfb;text-align:center;color:#3e64de}.tutor-announcement-big-icon .tutor-icon-speaker{position:relative !important;top:30% !important}.tutor-announcement-detail-content{margin-top:35px}.tutor-announcement-detail-content h3{font-size:24px;font-weight:bold;color:#161616}.tutor-announcement-detail-content p{font-style:normal;font-weight:normal;font-size:16px;color:#7a7a7a;margin-top:15px;margin-bottom:10px}.tutor-detail-course-content-wrap{background-color:#f3f3f3}.tutor-detail-course-content{padding:30px 70px 70px}.tutor-detail-course-info-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:50px}.tutor-announce-detail-popup-button-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.announcement-detail-edit-delete-button>.tutor-announcement-delete{background:#e8e8e8 !important;color:#7a7a7a !important}.tutor-border-none{border:none !important}.announcement-detail-edit-delete-button>button{padding:10px 20px !important}.announcement-detail-edit-delete-button{display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px}.tutor-announcement-detail-course-info p,.tutor-announcement-detail-date-info p{font-size:16px;color:#161616;font-weight:700;max-width:95%}.tutor-announcements-modal-wrap .tutor-modal-content{max-width:660px !important}.tutor-announcements-modal-wrap .modal-footer{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-quiz-attempt-history td:last-child{text-align:center}.tutor-quiz-attempt-history td:last-child a{display:block;padding:10px}.attempt-review-title{font-size:18px;color:var(--tutor-text-size);font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:60px}.attempt-review-title i{margin-right:12px;color:var(--tutor-primary-color)}.tutor-quiz-attempt-info-row .attempt-view-bottom,.tutor-quiz-attempt-info-row .attempt-view-top{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-quiz-attempt-info-row .attempt-view-bottom .attempt-info-col,.tutor-quiz-attempt-info-row .attempt-view-top .attempt-info-col{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:30%}.tutor-quiz-attempt-info-row .attempt-view-bottom .attempt-info-col{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.tutor-quiz-attempt-info-row .attempt-info-content span.result-review-required,.tutor-quiz-attempt-info-row .attempt-info-content span.result-pass,.tutor-quiz-attempt-info-row .attempt-info-content span.result-fail{background:#df3247;font-size:14px;font-weight:400;color:#fff;padding:1px 4px;margin-right:13px;border-radius:2px}.tutor-quiz-attempt-info-row .attempt-info-content span.result-pass{background:var(--tutor-success-button-color)}.tutor-quiz-attempt-info-row .attempt-info-content span.result-review-required{background:#f5b30d}.tutor-quiz-attempt-info-row .attempt-info-content h4,.tutor-quiz-attempt-info-row .attempt-info-content h5{font-size:14px;line-height:25px;margin:0;color:#7a7f85;font-weight:400}.tutor-quiz-attempt-info-row .attempt-info-content h4 a,.tutor-quiz-attempt-info-row .attempt-info-content h4{font-weight:700;color:var(--tutor-text-color);margin-top:7px}.tutor-quiz-attempt-info-row .attempt-view-top{padding-bottom:30px;margin-bottom:30px;border-bottom:1px solid #dcdfe5}.tutor-quiz-attempt-info-row .attempt-view-bottom{margin-bottom:60px}.attempt-user-details{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.attempt-user-details .attempt-user-avatar{padding-right:20px}.attempt-user-details .attempt-user-avatar img{display:block;width:70px;height:70px;border-radius:50%}.attempt-user-details .attempt-info-content h4{font-size:18px}.attempt-review-notice-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:60px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.attempt-review-notice-wrap p{margin:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.attempt-review-notice-wrap p.attempt-review-notice i{font-size:16px;color:#f5c813;margin-right:9px}.attempt-review-notice-wrap p.attempt-review-at>span{color:var(--tutor-primary-color);margin-right:7px;font-size:16px}.attempt-review-notice-wrap p>strong{font-weight:400;margin-right:5px}.quiz-attempt-answers-wrap{background:#fff;margin:0 0 1.5em}.quiz-attempt-answers-wrap .attempt-answers-header{padding:30px 20px}.quiz-attempt-answers-wrap .attempt-answers-header h3{font-size:20px;line-height:1.5;color:#3f435b}.quiz-attempt-answers-wrap table{border-collapse:collapse;border:none}.quiz-attempt-answers-wrap table tr{background-color:#fff}.quiz-attempt-answers-wrap table tr:first-child{background-color:#f7f7f9;border-top:1px solid #eaeaea;border-bottom:1px solid #eaeaea !important}.quiz-attempt-answers-wrap table tr:not(:first-child){border-top:1px solid #dcdce1}.quiz-attempt-answers-wrap table tr:not(:last-child){border-bottom:1px solid #dcdce1}.quiz-attempt-answers-wrap table th{font-size:12px;text-transform:inherit}.quiz-attempt-answers-wrap table th,.quiz-attempt-answers-wrap table td{padding:17px 20px;vertical-align:middle;border:none;font-size:14px;line-height:1.71;letter-spacing:normal;color:#393c40}.quiz-attempt-answers-wrap table th p,.quiz-attempt-answers-wrap table td p{margin:0}.quiz-attempt-answers-wrap table th .tutor-icon-block,.quiz-attempt-answers-wrap table td .tutor-icon-block{font-size:14px;width:30px;height:30px;line-height:30px}.quiz-attempt-answers-wrap table .quiz-manual-review-action{border:1px solid #d4dadb;color:#d4dadb;height:30px;width:30px;border-radius:2px;font-size:13px;display:inline-block;text-align:center;line-height:30px;-webkit-transition:300ms;transition:300ms}.quiz-attempt-answers-wrap table .quiz-manual-review-action:first-child:hover{border:1px solid var(--tutor-success-button-color);color:var(--tutor-success-button-color)}.quiz-attempt-answers-wrap table .quiz-manual-review-action:last-child:hover{border:1px solid #df3247;color:#df3247}.quiz-attempt-answers-wrap table .quiz-manual-review-action:not(:last-child){margin-right:17px}.tutor-quiz-attempt-review-wrap .attempt-answers-header{background:#fff;padding:20px;margin-top:20px}.tutor-quiz-attempt-review-wrap .attempt-answers-header a{color:#3f435b}.tutor-quiz-attempt-review-wrap .attempt-answers-header>p{color:#737787;margin-top:10px;margin-bottom:0}.tutor-quiz-attempt-review-wrap .attempt-answers-header h3{font-size:20px;line-height:1.5;color:#3f435b}.tutor-quiz-attempt-review-wrap .instructor-feedback-content{padding:0px 20px 10px 20px}.tutor-quiz-attempt-review-wrap .instructor-feedback-content>p{margin-bottom:1em}.tutor-quiz-attempt-review-wrap table{border-collapse:collapse;border:none}.tutor-quiz-attempt-review-wrap table tr{background-color:#fff}.tutor-quiz-attempt-review-wrap table tr:first-child{background-color:#f7f7f9;border-top:1px solid #eaeaea;border-bottom:1px solid #eaeaea}.tutor-quiz-attempt-review-wrap table tr:first-child th,.tutor-quiz-attempt-review-wrap table tr:first-child td{padding-top:14px;padding-bottom:14px}.tutor-quiz-attempt-review-wrap table tr:not(:first-child){border-top:1px solid #dcdce1}.tutor-quiz-attempt-review-wrap table tr:not(:first-child) th,.tutor-quiz-attempt-review-wrap table tr:not(:first-child) td{padding-top:20px;padding-bottom:20px}.tutor-quiz-attempt-review-wrap table tr:not(:last-child){border-bottom:1px solid #dcdce1}.tutor-quiz-attempt-review-wrap table th,.tutor-quiz-attempt-review-wrap table td{border:none;vertical-align:top;font-size:14px;font-weight:400;line-height:1.71;padding:15px 6px}.tutor-quiz-attempt-review-wrap table th:first-child,.tutor-quiz-attempt-review-wrap table td:first-child{padding:12px}.tutor-quiz-attempt-review-wrap table th:last-child,.tutor-quiz-attempt-review-wrap table td:last-child{padding:12px 10px}.tutor-quiz-attempt-review-wrap .quiz-attempt-answers-wrap table th:nth-child(3),.tutor-quiz-attempt-review-wrap .quiz-attempt-answers-wrap table th:nth-child(4),.tutor-quiz-attempt-review-wrap .quiz-attempt-answers-wrap table td:nth-child(3),.tutor-quiz-attempt-review-wrap .quiz-attempt-answers-wrap table td:nth-child(4){width:28%}.tutor-quiz-attempt-review-wrap span.result-review-required,.tutor-quiz-attempt-review-wrap span.result-pass,.tutor-quiz-attempt-review-wrap span.result-fail{background:#df3247;font-size:14px;font-weight:bold;color:#fff;padding:4px 11px;border-radius:2px}.tutor-quiz-attempt-review-wrap span.result-pass{background:var(--tutor-success-button-color)}.tutor-quiz-attempt-review-wrap span.result-review-required{background:#f5b30d}.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip],.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]{position:relative;z-index:2;cursor:pointer}.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip]:before,.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip]:after,.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]:before,.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]:after{visibility:hidden;opacity:0;pointer-events:none;-webkit-transform:translateY(15px);transform:translateY(15px);-webkit-transition:0.15s ease;transition:0.15s ease}.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip]:before,.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]:before{content:attr(data-tooltip);position:absolute;bottom:40px;left:50%;margin-bottom:0px;margin-left:-60px;min-width:122px;text-align:center;padding:4px 7px;font-size:14px;line-height:1.2;font-weight:300;border-radius:12px;background-color:#3f435b;color:#fff;z-index:99999}.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip]:after,.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]:after{position:absolute;content:"";bottom:34px;left:50%;margin-left:-10px;border-top:8px solid #3f435b;border-right:10px solid transparent;border-left:10px solid transparent}.tutor-quiz-attempt-review-wrap .active[data-tooltip]:before,.tutor-quiz-attempt-review-wrap .active[data-tooltip]:after,.tutor-quiz-attempt-review-wrap .active[data-tooltip]:before,.tutor-quiz-attempt-review-wrap .active[data-tooltip]:after,.quiz-attempt-answers-wrap .active[data-tooltip]:before,.quiz-attempt-answers-wrap .active[data-tooltip]:after,.quiz-attempt-answers-wrap .active[data-tooltip]:before,.quiz-attempt-answers-wrap .active[data-tooltip]:after{visibility:visible;opacity:1;-webkit-transform:translateY(0px);transform:translateY(0px)}.tutor-status-blocked-context i,.tutor-status-approved-context i,.quiz-correct-answer-text i,.quiz-incorrect-answer-text i{font-size:14px;height:20px;width:20px;text-align:center;line-height:20px;background:#7bbc30;color:#fff;display:inline-block;border-radius:2px;margin-right:6px}.tutor-status-blocked-context i,.quiz-incorrect-answer-text i{background:#f44337;font-size:10px;font-weight:900}.answer-image-matched-wrap{display:block}.answer-image-matched-wrap .image-matching-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.answer-image-matched-wrap .image-matching-item:not(:last-child){margin-bottom:12px}.answer-image-matched-wrap .image-matching-item img{max-width:35px}.answer-image-matched-wrap .image-matching-item .dragged-caption{font-size:14px;margin-left:12px}.correct-answer-wrap .matching-type{display:-webkit-box;display:-ms-flexbox;display:flex}.correct-answer-wrap .text-image-type{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.correct-answer-wrap .text-image-type:not(:last-child){margin-bottom:12px}.correct-answer-wrap .text-image-type .image{margin-right:12px}.correct-answer-wrap .text-image-type img{max-width:35px}#tutor_profile_cover_photo_editor{height:344px;position:relative}#tutor_profile_cover_photo_editor #tutor_photo_meta_area{text-align:right;padding-left:190px;margin-top:16px}@media (max-width: 492px){#tutor_profile_cover_photo_editor #tutor_photo_meta_area{padding-left:120px}}#tutor_profile_cover_photo_editor #tutor_photo_meta_area>img,#tutor_profile_cover_photo_editor #tutor_photo_meta_area>span{display:inline-block;vertical-align:middle}#tutor_profile_cover_photo_editor #tutor_photo_meta_area>span{white-space:nowrap;font-style:normal;font-weight:normal;font-size:13px;line-height:18px;color:#7A7A7A}#tutor_profile_cover_photo_editor #tutor_photo_meta_area>span>span{color:black}#tutor_profile_cover_photo_editor #tutor_photo_meta_area>span.loader-area{display:none}#tutor_profile_cover_photo_editor #tutor_cover_area{height:245px;background-color:#E9EDFB;background-position:center center;background-size:cover;background-repeat:no-repeat;border-radius:6px;position:relative;overflow:hidden}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_overlay{height:70%;position:absolute;left:0;bottom:0;right:0;background-image:-webkit-gradient(linear, left top, left bottom, from(transparent), to(rgba(0,0,0,0.6)));background-image:linear-gradient(transparent, rgba(0,0,0,0.6))}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_uploader{background:#3E64DE;border-radius:3px;color:white;border:none;cursor:pointer;font-style:normal;font-weight:600;font-size:12px;color:#FFFFFF;position:absolute;padding:8px 20px;right:22px;bottom:22px}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_uploader:hover{background:#2f52c4}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_uploader>span{margin-left:6px}@media (max-width: 432px){#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_uploader>span{display:none}}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_deleter{position:absolute;color:white;background:rgba(0,0,0,0.247);text-align:center;width:36px;border-radius:50%;font-size:17px;line-height:40px;height:36px;right:22px;top:22px;cursor:pointer}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_deleter:hover{background:rgba(0,0,0,0.438)}#tutor_profile_cover_photo_editor #tutor_profile_area{width:142px;height:142px;left:35px;top:145px;border-radius:50%;border:5px solid white;position:absolute;overflow:hidden;background-color:#E9EDFB;background-position:center center;background-size:cover;background-repeat:no-repeat}@media (max-width: 688px){#tutor_profile_cover_photo_editor #tutor_profile_area{width:120px;height:120px;left:31px;top:168px}}#tutor_profile_cover_photo_editor #tutor_profile_area .tutor_overlay{position:absolute;right:0;left:0;bottom:0;background:rgba(0,0,0,0.253);padding:0;height:37px;cursor:pointer;color:white;display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}#tutor_profile_cover_photo_editor #tutor_profile_area .tutor_overlay:hover{background:rgba(0,0,0,0.411)}#tutor_profile_cover_photo_editor #tutor_pp_option{position:absolute;background:#353535;width:157px;top:294px;left:27px;border-radius:6px;color:white;z-index:99;display:none}@media (max-width: 688px){#tutor_profile_cover_photo_editor #tutor_pp_option{top:294px;left:10px}}#tutor_profile_cover_photo_editor #tutor_pp_option span{display:block;padding:5px 10px;cursor:pointer;overflow:hidden;font-style:normal;font-weight:normal;font-size:16px;line-height:26px;color:#FFFFFF}#tutor_profile_cover_photo_editor #tutor_pp_option span:first-of-type{border-top-left-radius:6px;border-top-right-radius:6px}#tutor_profile_cover_photo_editor #tutor_pp_option span:last-of-type{border-bottom-left-radius:6px;border-bottom-right-radius:6px}#tutor_profile_cover_photo_editor #tutor_pp_option span:hover{background:#6b6b6b}#tutor_profile_cover_photo_editor #tutor_pp_option .up-arrow{text-align:center;height:0}#tutor_profile_cover_photo_editor #tutor_pp_option .up-arrow i{display:inline-block;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;position:relative;top:-17px;border-bottom:5px solid #353535}#tutor_profile_cover_photo_editor #tutor_pp_option>*:not(:last-child){position:relative;z-index:1}#tutor_profile_cover_photo_editor #tutor_pp_option>div:last-child{position:fixed;left:0;right:0;top:0;bottom:0;background:transparent;z-index:0;z-index:0}#tutor_profile_cover_photo_editor.pop-up-opened #tutor_pp_option{display:block}#tutor_profile_cover_photo_editor #tutor_photo_dialogue_box{display:none}.tutor-user-public-profile .photo-area{overflow:hidden;height:414px;margin-top:30px}.tutor-user-public-profile .photo-area .cover-area{position:relative;border-radius:6px;overflow:hidden}.tutor-user-public-profile .photo-area .cover-area>div:first-child{height:375px;background-position:center center;background-repeat:no-repeat;background-size:cover}.tutor-user-public-profile .photo-area .cover-area>div:last-child{position:absolute;left:0;right:0;bottom:0;height:70%;background-image:-webkit-gradient(linear, left top, left bottom, from(transparent), to(rgba(0,0,0,0.6)));background-image:linear-gradient(transparent, rgba(0,0,0,0.6))}.tutor-user-public-profile .photo-area .pp-area{position:relative;top:-111px;padding-left:49px;display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center}.tutor-user-public-profile .photo-area .pp-area .profile-pic{background-position:center center;background-repeat:no-repeat;background-size:cover;display:inline-block;border:8px solid white}.tutor-user-public-profile .photo-area .pp-area .profile-name{padding-left:23px;padding-bottom:30px}.tutor-user-public-profile .photo-area .pp-area .profile-name h3{font-style:normal;font-weight:600;font-size:40px;line-height:48px;color:#FFFFFF;margin:0}.tutor-user-public-profile .photo-area .pp-area .profile-name>span{font-style:normal;font-weight:500;font-size:15px;color:#757575;margin-right:10px}.tutor-user-public-profile .photo-area .pp-area .profile-name>span>span{color:white}.tutor-user-public-profile .photo-area .pp-area .profile-rating-media{text-align:right;padding-right:30px;padding-bottom:20px;-webkit-box-flex:1;flex:1;-o-flex:1;-ms-flex:1;-moz-flex:1;-webkit-flex:1}.tutor-user-public-profile .photo-area .pp-area .profile-rating-media .tutor-rating-container{font-size:16px}.tutor-user-public-profile .photo-area .pp-area .profile-rating-media .tutor-rating-container .rating-digits{color:white}.tutor-user-public-profile .photo-area .pp-area .profile-rating-media .tutor-rating-container .rating-total-meta{color:#757575}.tutor-user-public-profile .photo-area .pp-area .tutor-social-container{margin-top:15px;text-align:right}.tutor-user-public-profile .photo-area .pp-area .tutor-social-container a{display:inline-block;margin-left:20px;color:whitesmoke;cursor:pointer;text-decoration:none;font-size:16px}.tutor-user-public-profile .photo-area .pp-area .tutor-social-container a:hover{color:white}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-pic{border-radius:50%;height:153px;width:153px}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area{overflow:initial}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area .profile-pic{border-radius:10px;height:200px;width:153px}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area .profile-name,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area .profile-rating-media{padding-bottom:75px}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .tutor-user-profile-sidebar{margin-top:79px}.tutor-user-public-profile.tutor-user-public-profile-no-cp .photo-area{height:auto}.tutor-user-public-profile.tutor-user-public-profile-no-cp .cover-area{display:none}.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area{top:0}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-pic{border-radius:50%;height:153px;width:153px}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name{padding-top:49px}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name h3{color:#161616 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name>span>span{color:black !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media{position:absolute;left:226px;top:15px}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media .rating-digits{color:#161616 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-rating-container{text-align:left}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container{text-align:left !important;margin-top:5px !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container a{margin-left:0 !important;margin-right:20px;color:#757575 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container a:hover{color:#161616 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media{width:calc(100% - 157px)}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container{position:absolute;right:36px;left:auto}@media (min-width: 768px){.tutor-user-public-profile .content-for-mobile{display:none}.tutor-user-public-profile .content-for-desktop{display:block}}@media (max-width: 767px){.tutor-user-public-profile .content-for-mobile{display:block;margin:22px 0 0 0;padding:0 !important}.tutor-user-public-profile .content-for-desktop{display:none}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .photo-area,.tutor-user-public-profile.tutor-user-public-profile-no-cp .photo-area,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area{height:auto}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .photo-area .cover-area>div:first-child,.tutor-user-public-profile.tutor-user-public-profile-no-cp .photo-area .cover-area>div:first-child,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area .cover-area>div:first-child{height:220px}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .pp-area,.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .pp-area{padding-left:0 !important;top:-82px !important;flex-wrap:wrap;-o-flex-wrap:wrap;-ms-flex-wrap:wrap;-moz-flex-wrap:wrap;-webkit-flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-name,.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-rating-media,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-name,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-rating-media{width:100% !important;text-align:center !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-name>span>span,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name>span>span,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-name>span>span{color:black !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-name>span:nth-of-type(2)>span,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name>span:nth-of-type(2)>span,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-name>span:nth-of-type(2)>span{color:#C4C4C4 !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-name h3,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name h3,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-name h3{color:#161616 !important;font-size:30px !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .rating-digits,.tutor-user-public-profile.tutor-user-public-profile-no-cp .rating-digits,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .rating-digits{color:#161616 !important}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .pp-area{top:-98px !important}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-pic{height:160px !important;width:153px !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media,.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container,.tutor-user-public-profile.tutor-user-public-profile-no-cp .ratings{position:static !important;top:0 !important;text-align:center !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name{padding:0 !important}.tutor-user-public-profile .tutor-social-container{margin:15px 0 0 0 !important}.tutor-user-public-profile .tutor-social-container a{color:#7A7A7A !important}.tutor-user-public-profile .profile-name{padding:0 !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .pp-area,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .pp-area{margin-top:-83px !important;position:relative !important;top:0 !important}.tutor-user-public-profile .tutor-user-profile-sidebar{margin-top:0 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area{-webkit-box-pack:left !important;-ms-flex-pack:left !important;justify-content:left !important;-o-justify-content:left !important;-ms-justify-content:left !important;-moz-justify-content:left !important;-webkit-justify-content:left !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area *{text-align:left !important}}.tutor-user-public-profile .tutor-user-profile-sidebar{padding:15px;width:223px;float:left}.tutor-user-public-profile .tutor-user-profile-content{width:calc(100% - 228px);float:left;margin-bottom:30px}.tutor-user-public-profile .tutor-user-profile-content>h3{font-style:normal;font-weight:normal;font-size:24px;line-height:34px;color:#161616;margin-top:20px}.tutor-user-public-profile .tutor-user-profile-content>h3:first-child{margin-top:0}@media (max-width: 800px){.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area{padding-left:0 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media{left:178px !important}.tutor-user-public-profile .tutor-user-profile-sidebar,.tutor-user-public-profile .tutor-user-profile-content{width:100%;float:none}}.tutor-dashboard-builder-header{padding:10px 0px;border-bottom:2px solid #DCDFE5;position:fixed;top:0px;background:#fff;width:100%;z-index:99}@media (max-width: 991px){.tutor-dashboard-builder-header{position:static}}.tutor-dashboard-builder-header .tutor-row{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media (max-width: 991px){.tutor-dashboard-builder-header .tutor-row .tutor-col-auto{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.tutor-dashboard-builder-header .tutor-row .tutor-col-auto:first-child{margin-bottom:15px}}.tutor-dashboard-builder-header .tutor-button{white-space:nowrap;margin-left:auto}@media (max-width: 991px){.tutor-dashboard-builder-header .tutor-button{padding:6px 10px}}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left .tutor-dashboard-builder-logo{padding:0 25px;position:relative}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left .tutor-dashboard-builder-logo img{max-height:32px}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button{margin:0;padding:0px 25px;line-height:30px;border:none;border-left:1px solid #DCDFE5;background:transparent;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;color:var(--tutor-text-color);-webkit-transition:300ms;transition:300ms;font-weight:500;white-space:nowrap}@media (max-width: 991px){.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button{border-left:none}}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button i{font-size:24px;line-height:30px;margin-right:9px}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button:hover{color:var(--tutor-primary-color);background:transparent}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button:hover i{color:var(--tutor-primary-color)}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-right{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-right a{color:var(--tutor-text-color);font-weight:500;line-height:36px;padding:0 25px;-webkit-transition:300ms;transition:300ms;white-space:nowrap}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-right a i{font-size:36px;line-height:36px;display:inline-block;vertical-align:top;padding-right:9px}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-right a:hover{color:var(--tutor-primary-color)}.tutor-frontend-course-builder-section{padding:113px 0 45px;background-color:#ffffff}@media (max-width: 991px){.tutor-frontend-course-builder-section{padding-top:60px}.tutor-frontend-course-builder-section .tutor-col-8,.tutor-frontend-course-builder-section .tutor-col-4{width:100%;max-width:100%;-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%}}.admin-bar .tutor-dashboard-builder-header{top:32px}@media (max-width: 783px){.admin-bar .tutor-dashboard-builder-header{top:46px}}.tutor-course-builder-upload-tips{position:fixed;max-width:370px}@media (max-width: 991px){.tutor-course-builder-upload-tips{position:static}}.tutor-course-builder-upload-tips .tutor-course-builder-tips-title{font-size:16px;color:#8C94A8;font-weight:700;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-course-builder-upload-tips .tutor-course-builder-tips-title i{font-size:24px;color:var(--tutor-primary-color);margin-right:11px}.tutor-course-builder-upload-tips ul{margin:0;padding:0 0 0 35px;list-style:none}.tutor-course-builder-upload-tips ul li{position:relative;margin-bottom:8px;line-height:24px}.tutor-course-builder-upload-tips ul li::after{content:'';position:absolute;height:8px;width:8px;border-radius:50%;background:#DCDFE5;left:-26px;top:9px}.tutor-course-level-meta{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-course-level-meta label{margin:0 40px 0 0;font-weight:600}.tutor-frontend-builder-course-price .tutor-form-group input{margin-bottom:0}.tutor-frontend-builder-course-price .tutor-styled-radio{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-course-builder-attachements{display:-webkit-box;display:-ms-flexbox;display:flex;margin-left:-30px;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-course-builder-attachements .tutor-added-attachment{-webkit-box-flex:0;-ms-flex:0 0 calc(25% - 30px);flex:0 0 calc(25% - 30px);max-width:calc(25% - 30px);border:1px solid #DCDFE5;padding:35px 20px 20px;position:relative;text-align:center;margin-left:30px;margin-bottom:30px;border-radius:4px;-webkit-transition:300ms;transition:300ms;min-width:120px}@media (max-width: 480px){.tutor-course-builder-attachements .tutor-added-attachment{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 30px);flex:0 0 calc(50% - 30px);max-width:calc(50% - 30px)}}.tutor-course-builder-attachements .tutor-added-attachment i{font-size:58px;line-height:58px;margin-bottom:25px;display:block}.tutor-course-builder-attachements .tutor-added-attachment .tutor-delete-attachment{position:absolute;height:22px;width:22px;border:1px solid #DCDFE5;text-align:center;line-height:22px;top:-1px;right:-1px;font-size:10px;border-top-right-radius:4px;color:transparent;-webkit-transition:300ms;transition:300ms}.tutor-course-builder-attachements .tutor-added-attachment:hover,.tutor-course-builder-attachements .tutor-added-attachment:hover .tutor-delete-attachment{border-color:#D71830;color:#D71830}.tutor-course-builder-attachements .tutor-added-attachment span{display:block}.tutor-course-builder-attachements .tutor-added-attachment span a{font-size:14px;display:block;line-height:20px;color:#606C8F}.tutor-course-builder-btn-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap}#tutor-metabox-course-settings-tabs{background-color:#fff;border:1px solid #e5e5e5;margin:1em 0}.inside #tutor-metabox-course-settings-tabs{border:0;margin:0}.settings-tabs-heading{padding:1em;border-bottom:1px solid #e5e5e5}.settings-tabs-heading h3{font-size:14px;margin:0;line-height:1.4}.course-settings-tabs-container{display:-webkit-box;display:-ms-flexbox;display:flex}.course-settings-tabs-container .settings-tabs-navs-wrap{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;background:#F5F5F5}.settings-tabs-navs-wrap .settings-tabs-navs{margin:0;list-style:none}.settings-tabs-navs-wrap .settings-tabs-navs li{margin:0}.settings-tabs-navs-wrap .settings-tabs-navs li a{display:block;padding-top:10px;padding-bottom:10px;padding-left:15px;padding-right:15px;color:#23282d;text-decoration:none;background:#F5F5F5;text-transform:capitalize;border-bottom:1px solid #e5e5e5;border-left:3px solid transparent}.settings-tabs-navs-wrap .settings-tabs-navs li:last-child a{border-bottom:none}.settings-tabs-navs-wrap .settings-tabs-navs li a:focus{-webkit-box-shadow:none;box-shadow:none}.settings-tabs-navs-wrap .settings-tabs-navs li.active a{background-color:#ffffff;border-bottom:1px solid #e5e5e5;color:var(--tutor-primary-color);border-left:3px solid var(--tutor-primary-color)}.course-settings-tabs-container .settings-tabs-container{padding:1em;-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-field-radio p{margin-top:0}.lesson-modal-form-wrap .lesson-content-drip-wrap{padding:10px;border:1px solid #e4e4e4}.lesson-modal-form-wrap .lesson-content-drip-wrap h3{margin:0 0 10px 0}.select2-dropdown.increasezindex{z-index:9999999999999}.tutor-topic-title i.tutor-icon-move{line-height:unset}.select2-selection__rendered [class^="tutor-icon-"]{vertical-align:middle}@media (min-width: 992px){.tutor-option-tooltip.tutor-option-field{position:relative}.tutor-option-tooltip.tutor-option-field p.desc{position:absolute;left:calc(100% + 16px);background:#2A344F;width:160px;padding:10px 13px;opacity:0;visibility:hidden;-webkit-transition:300ms;transition:300ms;z-index:98;top:10px;color:#fff;border-radius:12px;font-size:12px;font-style:normal}.tutor-option-tooltip.tutor-option-field p.desc::before{content:url("data:image/svg+xml,%3Csvg width='14' height='18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 8.139C5.339 5.482 8.671 2.903 9.998.403c1.99-3.75 5.481 21.94 1.567 16.037C8.955 12.505 5.1 9.738 0 8.139z' fill='%232A344F' fill-rule='evenodd'/%3E%3C/svg%3E");position:absolute;left:-10px;top:16px}.tutor-option-tooltip.tutor-option-field:hover p.desc{opacity:1;visibility:visible}.tutor-option-tooltip.tutor-option-field input:focus+p.desc,.tutor-option-tooltip.tutor-option-field textarea:focus+p.desc{opacity:1;visibility:visible}}.tutor-instructor-pending-content{text-align:center}.tutor-instructor-pending-content a{margin-top:26px}.tutor-instructor-pending-content img{margin-bottom:69px;border-radius:10px}.tutor-instructor-thankyou-text h2{line-height:48px;font-size:40px;font-style:normal;font-weight:500;letter-spacing:0px;color:#161616;margin-bottom:26px}.tutor-instructor-extra-text{font-size:20px;font-style:normal;font-weight:400;letter-spacing:0px;color:#525252;line-height:30px}.tutor-frontend-dashboard-withdrawal h4{margin-bottom:25px}.withdraw-history-table-title h4{margin-top:45px}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border:1px solid #DCDBDC;border-radius:6px;padding:25px 35px 25px 30px;margin-bottom:15px}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .balance-info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .balance-info img{margin-right:15px}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .balance-info small{font-size:16px}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .balance-info p{font-size:20px;line-height:26px;margin:0}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a,.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a:hover,.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a:focus,.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a:active{text-decoration:none;background:#3E64DE;border-radius:3px;display:inline-block;padding:8px 18px;font-weight:500;font-size:16px;color:white;cursor:pointer}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a:hover{background:#2548bb}.tutor-frontend-dashboard-withdrawal h4{font-weight:500;font-size:24px}.tutor-frontend-dashboard-withdrawal .withdrawal-preference{font-size:15px;color:#7A7A7A}.tutor-frontend-dashboard-withdrawal .inline-image-text>img{width:23px;display:inline-block !important}.tutor-frontend-dashboard-withdrawal .inline-image-text>*{vertical-align:middle}.tutor-frontend-dashboard-withdrawal .inline-image-text.is-inline-block>*{display:inline-block}.tutor-frontend-dashboard-withdrawal .inline-image-text a{text-decoration:underline;color:#444}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap{display:none}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div{width:100%;height:100%;padding:15px;overflow:hidden;position:fixed;left:0;right:0;top:0;bottom:0;z-index:9999999999;background:rgba(0,0,0,0.589);display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div{display:inline-block;max-height:100%;width:100%;max-width:690px;background:white;overflow:auto;border-radius:15px;position:relative;padding:0}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div{padding:50px 70px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child>.tutor-icon-line-cross{position:absolute;cursor:pointer;top:30px;right:30px;font-size:20px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child tr,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child td,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child table,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child tbody{border:none;margin:0;padding:0}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child h3{margin:7px 0px;font-weight:600;padding:0}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:last-child{border-top:1px solid #E8E8E8;background:#F3F3F3}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount{border:1px solid #BABABA;border-radius:6px;background:white;height:43px;overflow:hidden;margin-bottom:12px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount>span{display:block;text-align:center;width:40px;float:left;height:100%;background:#f3f3f3;border-right:1px solid #BABABA}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount>span>span{font-size:18px;font-weight:bold;display:inline-block;line-height:41px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount input,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount input:focus,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount input:active{border:none;outline:0;height:100%;width:calc(100% - 40px);display:inline-block;margin:0;padding:0;padding-left:7px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-button-container{margin:50px 0 0;overflow:auto}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-button-container>button:last-child{float:right}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response{position:fixed;left:50px;bottom:50px;border:1px solid #E8E8E8;background:white;border-radius:10px;margin:0}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response:empty{display:none}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response>*{background:white;border:none}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response img{width:34px;margin:5px 13px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response b{font-weight:600}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response span{color:#333}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap button.close-withdraw-form-btn{background:#F3F3F3;border:1px solid #DCDBDC;color:#7A7A7A}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap button.close-withdraw-form-btn:hover{background:#e6e6e6}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdrawal-pop-up-success img{display:inline-block !important}.tutor-frontend-dashboard-withdrawal table.withdrawals-history{border:1px solid #DCDBDC;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th{background:#F3F3F3}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th,.tutor-frontend-dashboard-withdrawal table.withdrawals-history td{padding:10px;border:none;font-weight:normal;font-size:13px;text-align:left;vertical-align:middle}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th,.tutor-frontend-dashboard-withdrawal table.withdrawals-history td{border-bottom:1px solid #DCDBDC;border-collapse:collapse}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th:first-child,.tutor-frontend-dashboard-withdrawal table.withdrawals-history td:first-child{padding:10px 0 15px 15px}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th:last-child,.tutor-frontend-dashboard-withdrawal table.withdrawals-history td:last-child{text-align:right;padding-right:15px;width:50px}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th:nth-child(4),.tutor-frontend-dashboard-withdrawal table.withdrawals-history td:nth-child(4){width:105px}.tutor-frontend-dashboard-withdrawal table.withdrawals-history .withdraw-method-name{line-height:20px;font-size:15px;display:block}.tutor-frontend-dashboard-withdrawal table.withdrawals-history small{font-size:13px}.tutor-frontend-dashboard-withdrawal .tutor-status-text-container .tool-tip-container{position:relative;display:inline-block;height:24px;cursor:pointer}.tutor-frontend-dashboard-withdrawal .tutor-status-text-container .tool-tip-container img{display:inline-block !important;width:16px}.tutor-frontend-dashboard-withdrawal .tutor-status-text{display:inline-block;font-weight:bold;font-size:13px;color:#FFFFFF;background:gray;border-radius:2px;padding:3px 9px}.tutor-frontend-dashboard-withdrawal .tutor-status-text.status-approved{background:#24A148}.tutor-frontend-dashboard-withdrawal .tutor-status-text.status-pending{background:#ED9700}.tutor-frontend-dashboard-withdrawal .tutor-status-text.status-rejected{background:#F44337}.tutor-tooltip-inside .tooltip{position:absolute;z-index:2;overflow:hidden;clip:rect(0, 0, 0, 0);-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0;padding:0;cursor:default;color:#fff;font-family:Helvetica, Arial, sans-serif;font-size:14px;font-size:1.4rem;line-height:normal;text-align:center;white-space:nowrap;border-width:0;border-style:solid;border-color:#6d6e71;border-top-color:#373739;background-color:#373739;opacity:0;-webkit-transition:opacity .3s ease-in .3s;transition:opacity .3s ease-in .3s;font-size:13px;color:#FFFFFF;height:auto;text-align:center;white-space:normal;font-size:12px;background:#353535;border-radius:10px;padding:7px}.tutor-tooltip-inside .tooltip.isVisible{overflow:visible;clip:auto;width:150px;height:auto;padding:10px 15px;border-width:1px;opacity:1}.tutor-tooltip-inside .tooltip,.tutor-tooltip-inside .tooltip.tip-bottom,.tutor-tooltip-inside .tooltip.tip-top{left:50%;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0)}.tutor-tooltip-inside .tooltip,.tutor-tooltip-inside .tooltip.tip-bottom,.tutor-tooltip-inside .tooltip.tip-bottom-left,.tutor-tooltip-inside .tooltip.tip-bottom-right{top:110%;top:calc(100% + 13px)}.tutor-tooltip-inside .tooltip.tip-top,.tutor-tooltip-inside .tooltip.tip-top-left,.tutor-tooltip-inside .tooltip.tip-top-right{top:auto;bottom:110%;bottom:calc(100% + 13px)}.tutor-tooltip-inside .tooltip.tip-bottom-left,.tutor-tooltip-inside .tooltip.tip-bottom-right,.tutor-tooltip-inside .tooltip.tip-top-left,.tutor-tooltip-inside .tooltip.tip-top-right{-webkit-transform:none;transform:none}.tutor-tooltip-inside .tooltip.tip-bottom-left,.tutor-tooltip-inside .tooltip.tip-top-left{right:50%;left:auto;margin-right:-25px}.tutor-tooltip-inside .tooltip.tip-bottom-right,.tutor-tooltip-inside .tooltip.tip-top-right{margin-left:-25px}.tutor-tooltip-inside .tooltip.tip-left,.tutor-tooltip-inside .tooltip.tip-right{top:50%;-webkit-transform:translate(0, -50%);transform:translate(0, -50%)}.tutor-tooltip-inside .tooltip.tip-left{right:110%;right:calc(100% + 13px);left:auto}.tutor-tooltip-inside .tooltip.tip-right{left:110%;left:calc(100% + 13px)}.tutor-tooltip-inside .tooltip:after{content:' ';display:block;position:absolute;width:0;height:0;border-width:10px;border-style:solid;pointer-events:none}.tutor-tooltip-inside .tooltip:after,.tutor-tooltip-inside .tooltip.tip-bottom:after,.tutor-tooltip-inside .tooltip.tip-top:after{left:50%;margin-left:-10px}.tutor-tooltip-inside .tooltip:after,.tutor-tooltip-inside .tooltip.tip-bottom:after,.tutor-tooltip-inside .tooltip.tip-bottom-left:after,.tutor-tooltip-inside .tooltip.tip-bottom-right:after{top:-20px;border-color:transparent transparent #373739 transparent}.tutor-tooltip-inside .tooltip.tip-top:after,.tutor-tooltip-inside .tooltip.tip-top-left:after,.tutor-tooltip-inside .tooltip.tip-top-right:after{top:auto;bottom:-20px;border-color:#373739 transparent transparent transparent}.tutor-tooltip-inside .tooltip.tip-bottom-left:after,.tutor-tooltip-inside .tooltip.tip-bottom-right:after,.tutor-tooltip-inside .tooltip.tip-top-left:after,.tutor-tooltip-inside .tooltip.tip-top-right:after{margin-left:0}.tutor-tooltip-inside .tooltip.tip-bottom-left:after,.tutor-tooltip-inside .tooltip.tip-top-left:after{right:15px;left:auto}.tutor-tooltip-inside .tooltip.tip-bottom-right:after,.tutor-tooltip-inside .tooltip.tip-top-right:after{left:15px}.tutor-tooltip-inside .tooltip.tip-left:after,.tutor-tooltip-inside .tooltip.tip-right:after{top:50%;margin-top:-10px;margin-left:auto}.tutor-tooltip-inside .tooltip.tip-left:after{right:-20px;left:auto;border-color:transparent transparent transparent #373739}.tutor-tooltip-inside .tooltip.tip-right:after{left:-20px;border-color:transparent #373739 transparent transparent}.tutor-instructor-list,.tutor-instructor-list:focus,.tutor-instructor-list:active{outline:none;cursor:pointer;text-decoration:none !important;background:#FFFFFF;border:1px solid #DCDBDC;border-radius:6px}.tutor-instructor-list .tutor-instructor-profile-photo,.tutor-instructor-list .tutor-instructor-cover-photo{background-size:cover;background-repeat:no-repeat;background-position:center center}.tutor-instructor-list .tutor-instructor-profile-photo{border-radius:50%;width:60px;height:60px}.tutor-instructor-list .tutor-instructor-name{font-style:normal;font-weight:500;font-size:24px;color:#161616;margin:0}.tutor-instructor-list .tutor-instructor-course-count{margin-bottom:10px}.tutor-instructor-list .tutor-instructor-course-count>span{font-style:normal;font-weight:500;font-size:15px;color:#161616}.tutor-instructor-list .tutor-instructor-course-count>span:last-child{color:#808080}.tutor-instructor-list .tutor-instructor-rating *{font-size:16px}.tutor-instructor-list .tutor-instructor-rating .rating-digits{color:#161616}.tutor-instructor-list .tutor-instructor-rating .rating-total-meta{color:#7A7A7A}.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-cover-photo{width:100%;height:153px}.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-profile-photo{border:4px solid white;margin:-31px 15px 0}.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-name,.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-course-count,.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-rating{padding:0 15px}.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-cover-photo{display:none}.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-profile-photo{border-radius:0%;width:100%;height:160px}.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-name,.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-course-count,.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-rating{padding:0 15px}.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-name{margin-top:15px}.tutor-instructor-list.tutor-instructor-list-pp-top-left{padding:15px}.tutor-instructor-list.tutor-instructor-list-pp-top-left .tutor-instructor-cover-photo{display:none}.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-cover-photo,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-cover-photo{display:none}.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-profile-photo,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-profile-photo{border-radius:0%;height:102px;width:102px;top:0px;position:absolute}.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-name,.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-course-count,.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-rating,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-name,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-course-count,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-rating{margin-left:118px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:calc(100% - 110px);display:inline-block;position:relative;top:6px}.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-rating,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-rating{top:7px;position:relative}.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-profile-photo{border-radius:50%;height:82px;width:82px;margin:10px}.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-name{top:11px}.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-course-count{top:46px}.tutor-toast-parent{position:fixed;right:25px;bottom:50px;right:50px;left:auto;max-height:400px;width:350px;overflow-x:hidden;overflow-y:auto;background:transparent;z-index:99999999}.tutor-toast-parent:empty{display:none}.tutor-toast-parent>div{background:white;padding:10px;margin:15px;border-radius:15px;-webkit-box-shadow:3px 3px 10px rgba(0,0,0,0.363);box-shadow:3px 3px 10px rgba(0,0,0,0.363);border:1px solid #E8E8E8;background:white;border:none;display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-ms-flex-line-pack:center;align-content:center;-o-align-content:center;-ms-align-content:center;-moz-align-content:center;-webkit-align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center}.tutor-toast-parent>div>div{padding:8px}.tutor-toast-parent>div>div:nth-child(1),.tutor-toast-parent>div>div:nth-child(3){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}.tutor-toast-parent>div>div:nth-child(2){-webkit-box-flex:1;flex:1;-o-flex:1;-ms-flex:1;-moz-flex:1;-webkit-flex:1}.tutor-toast-parent>div img{width:100%;height:auto}.tutor-toast-parent>div b{font-weight:600;display:block}.tutor-toast-parent>div span{color:#333}.tutor-toast-parent>div i{cursor:pointer;font-size:14px}body.rtl .tutor-toast-parent{right:auto;left:50px}
 
 
assets/packages/plyr/plyr.polyfilled.min.js CHANGED
@@ -1,4 +1,3 @@
1
  "object"==typeof navigator&&function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Plyr",t):(e=e||self).Plyr=t()}(this,(function(){"use strict";!function(){if("undefined"!=typeof window)try{var e=new window.CustomEvent("test",{cancelable:!0});if(e.preventDefault(),!0!==e.defaultPrevented)throw new Error("Could not prevent default")}catch(e){var t=function(e,t){var n,i;return(t=t||{}).bubbles=!!t.bubbles,t.cancelable=!!t.cancelable,(n=document.createEvent("CustomEvent")).initCustomEvent(e,t.bubbles,t.cancelable,t.detail),i=n.preventDefault,n.preventDefault=function(){i.call(this);try{Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})}catch(e){this.defaultPrevented=!0}},n};t.prototype=window.Event.prototype,window.CustomEvent=t}}();var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e,t){return e(t={exports:{}},t.exports),t.exports}var n=function(e){return e&&e.Math==Math&&e},i=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||Function("return this")(),r=function(e){try{return!!e()}catch(e){return!0}},a=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),o={}.propertyIsEnumerable,s=Object.getOwnPropertyDescriptor,l={f:s&&!o.call({1:2},1)?function(e){var t=s(this,e);return!!t&&t.enumerable}:o},c=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},u={}.toString,h=function(e){return u.call(e).slice(8,-1)},f="".split,d=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==h(e)?f.call(e,""):Object(e)}:Object,p=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},m=function(e){return d(p(e))},g=function(e){return"object"==typeof e?null!==e:"function"==typeof e},v=function(e,t){if(!g(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!g(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!g(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!g(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")},y={}.hasOwnProperty,b=function(e,t){return y.call(e,t)},w=i.document,k=g(w)&&g(w.createElement),T=function(e){return k?w.createElement(e):{}},S=!a&&!r((function(){return 7!=Object.defineProperty(T("div"),"a",{get:function(){return 7}}).a})),E=Object.getOwnPropertyDescriptor,A={f:a?E:function(e,t){if(e=m(e),t=v(t,!0),S)try{return E(e,t)}catch(e){}if(b(e,t))return c(!l.f.call(e,t),e[t])}},P=function(e){if(!g(e))throw TypeError(String(e)+" is not an object");return e},x=Object.defineProperty,C={f:a?x:function(e,t,n){if(P(e),t=v(t,!0),P(n),S)try{return x(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},O=a?function(e,t,n){return C.f(e,t,c(1,n))}:function(e,t,n){return e[t]=n,e},I=function(e,t){try{O(i,e,t)}catch(n){i[e]=t}return t},L=i["__core-js_shared__"]||I("__core-js_shared__",{}),j=Function.toString;"function"!=typeof L.inspectSource&&(L.inspectSource=function(e){return j.call(e)});var N,R,M,_=L.inspectSource,U=i.WeakMap,D="function"==typeof U&&/native code/.test(_(U)),F=t((function(e){(e.exports=function(e,t){return L[e]||(L[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.6.5",mode:"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})})),q=0,H=Math.random(),B=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++q+H).toString(36)},V=F("keys"),z=function(e){return V[e]||(V[e]=B(e))},W={},K=i.WeakMap;if(D){var $=new K,Y=$.get,G=$.has,X=$.set;N=function(e,t){return X.call($,e,t),t},R=function(e){return Y.call($,e)||{}},M=function(e){return G.call($,e)}}else{var Q=z("state");W[Q]=!0,N=function(e,t){return O(e,Q,t),t},R=function(e){return b(e,Q)?e[Q]:{}},M=function(e){return b(e,Q)}}var J,Z={set:N,get:R,has:M,enforce:function(e){return M(e)?R(e):N(e,{})},getterFor:function(e){return function(t){var n;if(!g(t)||(n=R(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},ee=t((function(e){var t=Z.get,n=Z.enforce,r=String(String).split("String");(e.exports=function(e,t,a,o){var s=!!o&&!!o.unsafe,l=!!o&&!!o.enumerable,c=!!o&&!!o.noTargetGet;"function"==typeof a&&("string"!=typeof t||b(a,"name")||O(a,"name",t),n(a).source=r.join("string"==typeof t?t:"")),e!==i?(s?!c&&e[t]&&(l=!0):delete e[t],l?e[t]=a:O(e,t,a)):l?e[t]=a:I(t,a)})(Function.prototype,"toString",(function(){return"function"==typeof this&&t(this).source||_(this)}))})),te=i,ne=function(e){return"function"==typeof e?e:void 0},ie=function(e,t){return arguments.length<2?ne(te[e])||ne(i[e]):te[e]&&te[e][t]||i[e]&&i[e][t]},re=Math.ceil,ae=Math.floor,oe=function(e){return isNaN(e=+e)?0:(e>0?ae:re)(e)},se=Math.min,le=function(e){return e>0?se(oe(e),9007199254740991):0},ce=Math.max,ue=Math.min,he=function(e,t){var n=oe(e);return n<0?ce(n+t,0):ue(n,t)},fe=function(e){return function(t,n,i){var r,a=m(t),o=le(a.length),s=he(i,o);if(e&&n!=n){for(;o>s;)if((r=a[s++])!=r)return!0}else for(;o>s;s++)if((e||s in a)&&a[s]===n)return e||s||0;return!e&&-1}},de={includes:fe(!0),indexOf:fe(!1)},pe=de.indexOf,me=function(e,t){var n,i=m(e),r=0,a=[];for(n in i)!b(W,n)&&b(i,n)&&a.push(n);for(;t.length>r;)b(i,n=t[r++])&&(~pe(a,n)||a.push(n));return a},ge=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],ve=ge.concat("length","prototype"),ye={f:Object.getOwnPropertyNames||function(e){return me(e,ve)}},be={f:Object.getOwnPropertySymbols},we=ie("Reflect","ownKeys")||function(e){var t=ye.f(P(e)),n=be.f;return n?t.concat(n(e)):t},ke=function(e,t){for(var n=we(t),i=C.f,r=A.f,a=0;a<n.length;a++){var o=n[a];b(e,o)||i(e,o,r(t,o))}},Te=/#|\.prototype\./,Se=function(e,t){var n=Ae[Ee(e)];return n==xe||n!=Pe&&("function"==typeof t?r(t):!!t)},Ee=Se.normalize=function(e){return String(e).replace(Te,".").toLowerCase()},Ae=Se.data={},Pe=Se.NATIVE="N",xe=Se.POLYFILL="P",Ce=Se,Oe=A.f,Ie=function(e,t){var n,r,a,o,s,l=e.target,c=e.global,u=e.stat;if(n=c?i:u?i[l]||I(l,{}):(i[l]||{}).prototype)for(r in t){if(o=t[r],a=e.noTargetGet?(s=Oe(n,r))&&s.value:n[r],!Ce(c?r:l+(u?".":"#")+r,e.forced)&&void 0!==a){if(typeof o==typeof a)continue;ke(o,a)}(e.sham||a&&a.sham)&&O(o,"sham",!0),ee(n,r,o,e)}},Le=!!Object.getOwnPropertySymbols&&!r((function(){return!String(Symbol())})),je=Le&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,Ne=Array.isArray||function(e){return"Array"==h(e)},Re=function(e){return Object(p(e))},Me=Object.keys||function(e){return me(e,ge)},_e=a?Object.defineProperties:function(e,t){P(e);for(var n,i=Me(t),r=i.length,a=0;r>a;)C.f(e,n=i[a++],t[n]);return e},Ue=ie("document","documentElement"),De=z("IE_PROTO"),Fe=function(){},qe=function(e){return"<script>"+e+"<\/script>"},He=function(){try{J=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t;He=J?function(e){e.write(qe("")),e.close();var t=e.parentWindow.Object;return e=null,t}(J):((t=T("iframe")).style.display="none",Ue.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(qe("document.F=Object")),e.close(),e.F);for(var n=ge.length;n--;)delete He.prototype[ge[n]];return He()};W[De]=!0;var Be=Object.create||function(e,t){var n;return null!==e?(Fe.prototype=P(e),n=new Fe,Fe.prototype=null,n[De]=e):n=He(),void 0===t?n:_e(n,t)},Ve=ye.f,ze={}.toString,We="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],Ke={f:function(e){return We&&"[object Window]"==ze.call(e)?function(e){try{return Ve(e)}catch(e){return We.slice()}}(e):Ve(m(e))}},$e=F("wks"),Ye=i.Symbol,Ge=je?Ye:Ye&&Ye.withoutSetter||B,Xe=function(e){return b($e,e)||(Le&&b(Ye,e)?$e[e]=Ye[e]:$e[e]=Ge("Symbol."+e)),$e[e]},Qe={f:Xe},Je=C.f,Ze=function(e){var t=te.Symbol||(te.Symbol={});b(t,e)||Je(t,e,{value:Qe.f(e)})},et=C.f,tt=Xe("toStringTag"),nt=function(e,t,n){e&&!b(e=n?e:e.prototype,tt)&&et(e,tt,{configurable:!0,value:t})},it=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e},rt=function(e,t,n){if(it(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,r){return e.call(t,n,i,r)}}return function(){return e.apply(t,arguments)}},at=Xe("species"),ot=function(e,t){var n;return Ne(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!Ne(n.prototype)?g(n)&&null===(n=n[at])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)},st=[].push,lt=function(e){var t=1==e,n=2==e,i=3==e,r=4==e,a=6==e,o=5==e||a;return function(s,l,c,u){for(var h,f,p=Re(s),m=d(p),g=rt(l,c,3),v=le(m.length),y=0,b=u||ot,w=t?b(s,v):n?b(s,0):void 0;v>y;y++)if((o||y in m)&&(f=g(h=m[y],y,p),e))if(t)w[y]=f;else if(f)switch(e){case 3:return!0;case 5:return h;case 6:return y;case 2:st.call(w,h)}else if(r)return!1;return a?-1:i||r?r:w}},ct={forEach:lt(0),map:lt(1),filter:lt(2),some:lt(3),every:lt(4),find:lt(5),findIndex:lt(6)},ut=ct.forEach,ht=z("hidden"),ft=Xe("toPrimitive"),dt=Z.set,pt=Z.getterFor("Symbol"),mt=Object.prototype,gt=i.Symbol,vt=ie("JSON","stringify"),yt=A.f,bt=C.f,wt=Ke.f,kt=l.f,Tt=F("symbols"),St=F("op-symbols"),Et=F("string-to-symbol-registry"),At=F("symbol-to-string-registry"),Pt=F("wks"),xt=i.QObject,Ct=!xt||!xt.prototype||!xt.prototype.findChild,Ot=a&&r((function(){return 7!=Be(bt({},"a",{get:function(){return bt(this,"a",{value:7}).a}})).a}))?function(e,t,n){var i=yt(mt,t);i&&delete mt[t],bt(e,t,n),i&&e!==mt&&bt(mt,t,i)}:bt,It=function(e,t){var n=Tt[e]=Be(gt.prototype);return dt(n,{type:"Symbol",tag:e,description:t}),a||(n.description=t),n},Lt=je?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof gt},jt=function(e,t,n){e===mt&&jt(St,t,n),P(e);var i=v(t,!0);return P(n),b(Tt,i)?(n.enumerable?(b(e,ht)&&e[ht][i]&&(e[ht][i]=!1),n=Be(n,{enumerable:c(0,!1)})):(b(e,ht)||bt(e,ht,c(1,{})),e[ht][i]=!0),Ot(e,i,n)):bt(e,i,n)},Nt=function(e,t){P(e);var n=m(t),i=Me(n).concat(Ut(n));return ut(i,(function(t){a&&!Rt.call(n,t)||jt(e,t,n[t])})),e},Rt=function(e){var t=v(e,!0),n=kt.call(this,t);return!(this===mt&&b(Tt,t)&&!b(St,t))&&(!(n||!b(this,t)||!b(Tt,t)||b(this,ht)&&this[ht][t])||n)},Mt=function(e,t){var n=m(e),i=v(t,!0);if(n!==mt||!b(Tt,i)||b(St,i)){var r=yt(n,i);return!r||!b(Tt,i)||b(n,ht)&&n[ht][i]||(r.enumerable=!0),r}},_t=function(e){var t=wt(m(e)),n=[];return ut(t,(function(e){b(Tt,e)||b(W,e)||n.push(e)})),n},Ut=function(e){var t=e===mt,n=wt(t?St:m(e)),i=[];return ut(n,(function(e){!b(Tt,e)||t&&!b(mt,e)||i.push(Tt[e])})),i};if(Le||(ee((gt=function(){if(this instanceof gt)throw TypeError("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,t=B(e),n=function(e){this===mt&&n.call(St,e),b(this,ht)&&b(this[ht],t)&&(this[ht][t]=!1),Ot(this,t,c(1,e))};return a&&Ct&&Ot(mt,t,{configurable:!0,set:n}),It(t,e)}).prototype,"toString",(function(){return pt(this).tag})),ee(gt,"withoutSetter",(function(e){return It(B(e),e)})),l.f=Rt,C.f=jt,A.f=Mt,ye.f=Ke.f=_t,be.f=Ut,Qe.f=function(e){return It(Xe(e),e)},a&&(bt(gt.prototype,"description",{configurable:!0,get:function(){return pt(this).description}}),ee(mt,"propertyIsEnumerable",Rt,{unsafe:!0}))),Ie({global:!0,wrap:!0,forced:!Le,sham:!Le},{Symbol:gt}),ut(Me(Pt),(function(e){Ze(e)})),Ie({target:"Symbol",stat:!0,forced:!Le},{for:function(e){var t=String(e);if(b(Et,t))return Et[t];var n=gt(t);return Et[t]=n,At[n]=t,n},keyFor:function(e){if(!Lt(e))throw TypeError(e+" is not a symbol");if(b(At,e))return At[e]},useSetter:function(){Ct=!0},useSimple:function(){Ct=!1}}),Ie({target:"Object",stat:!0,forced:!Le,sham:!a},{create:function(e,t){return void 0===t?Be(e):Nt(Be(e),t)},defineProperty:jt,defineProperties:Nt,getOwnPropertyDescriptor:Mt}),Ie({target:"Object",stat:!0,forced:!Le},{getOwnPropertyNames:_t,getOwnPropertySymbols:Ut}),Ie({target:"Object",stat:!0,forced:r((function(){be.f(1)}))},{getOwnPropertySymbols:function(e){return be.f(Re(e))}}),vt){var Dt=!Le||r((function(){var e=gt();return"[null]"!=vt([e])||"{}"!=vt({a:e})||"{}"!=vt(Object(e))}));Ie({target:"JSON",stat:!0,forced:Dt},{stringify:function(e,t,n){for(var i,r=[e],a=1;arguments.length>a;)r.push(arguments[a++]);if(i=t,(g(t)||void 0!==e)&&!Lt(e))return Ne(t)||(t=function(e,t){if("function"==typeof i&&(t=i.call(this,e,t)),!Lt(t))return t}),r[1]=t,vt.apply(null,r)}})}gt.prototype[ft]||O(gt.prototype,ft,gt.prototype.valueOf),nt(gt,"Symbol"),W[ht]=!0;var Ft=C.f,qt=i.Symbol;if(a&&"function"==typeof qt&&(!("description"in qt.prototype)||void 0!==qt().description)){var Ht={},Bt=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),t=this instanceof Bt?new qt(e):void 0===e?qt():qt(e);return""===e&&(Ht[t]=!0),t};ke(Bt,qt);var Vt=Bt.prototype=qt.prototype;Vt.constructor=Bt;var zt=Vt.toString,Wt="Symbol(test)"==String(qt("test")),Kt=/^Symbol\((.*)\)[^)]+$/;Ft(Vt,"description",{configurable:!0,get:function(){var e=g(this)?this.valueOf():this,t=zt.call(e);if(b(Ht,e))return"";var n=Wt?t.slice(7,-1):t.replace(Kt,"$1");return""===n?void 0:n}}),Ie({global:!0,forced:!0},{Symbol:Bt})}Ze("iterator");var $t=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){throw 1},1)}))},Yt=Object.defineProperty,Gt={},Xt=function(e){throw e},Qt=function(e,t){if(b(Gt,e))return Gt[e];t||(t={});var n=[][e],i=!!b(t,"ACCESSORS")&&t.ACCESSORS,o=b(t,0)?t[0]:Xt,s=b(t,1)?t[1]:void 0;return Gt[e]=!!n&&!r((function(){if(i&&!a)return!0;var e={length:-1};i?Yt(e,1,{enumerable:!0,get:Xt}):e[1]=1,n.call(e,o,s)}))},Jt=ct.forEach,Zt=$t("forEach"),en=Qt("forEach"),tn=Zt&&en?[].forEach:function(e){return Jt(this,e,arguments.length>1?arguments[1]:void 0)};Ie({target:"Array",proto:!0,forced:[].forEach!=tn},{forEach:tn});var nn=de.indexOf,rn=[].indexOf,an=!!rn&&1/[1].indexOf(1,-0)<0,on=$t("indexOf"),sn=Qt("indexOf",{ACCESSORS:!0,1:0});Ie({target:"Array",proto:!0,forced:an||!on||!sn},{indexOf:function(e){return an?rn.apply(this,arguments)||0:nn(this,e,arguments.length>1?arguments[1]:void 0)}});var ln=Xe("unscopables"),cn=Array.prototype;null==cn[ln]&&C.f(cn,ln,{configurable:!0,value:Be(null)});var un,hn,fn,dn=function(e){cn[ln][e]=!0},pn={},mn=!r((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),gn=z("IE_PROTO"),vn=Object.prototype,yn=mn?Object.getPrototypeOf:function(e){return e=Re(e),b(e,gn)?e[gn]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?vn:null},bn=Xe("iterator"),wn=!1;[].keys&&("next"in(fn=[].keys())?(hn=yn(yn(fn)))!==Object.prototype&&(un=hn):wn=!0),null==un&&(un={}),b(un,bn)||O(un,bn,(function(){return this}));var kn={IteratorPrototype:un,BUGGY_SAFARI_ITERATORS:wn},Tn=kn.IteratorPrototype,Sn=function(){return this},En=function(e,t,n){var i=t+" Iterator";return e.prototype=Be(Tn,{next:c(1,n)}),nt(e,i,!1),pn[i]=Sn,e},An=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,i){return P(n),function(e){if(!g(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype")}(i),t?e.call(n,i):n.__proto__=i,n}}():void 0),Pn=kn.IteratorPrototype,xn=kn.BUGGY_SAFARI_ITERATORS,Cn=Xe("iterator"),On=function(){return this},In=function(e,t,n,i,r,a,o){En(n,t,i);var s,l,c,u=function(e){if(e===r&&m)return m;if(!xn&&e in d)return d[e];switch(e){case"keys":case"values":case"entries":return function(){return new n(this,e)}}return function(){return new n(this)}},h=t+" Iterator",f=!1,d=e.prototype,p=d[Cn]||d["@@iterator"]||r&&d[r],m=!xn&&p||u(r),g="Array"==t&&d.entries||p;if(g&&(s=yn(g.call(new e)),Pn!==Object.prototype&&s.next&&(yn(s)!==Pn&&(An?An(s,Pn):"function"!=typeof s[Cn]&&O(s,Cn,On)),nt(s,h,!0))),"values"==r&&p&&"values"!==p.name&&(f=!0,m=function(){return p.call(this)}),d[Cn]!==m&&O(d,Cn,m),pn[t]=m,r)if(l={values:u("values"),keys:a?m:u("keys"),entries:u("entries")},o)for(c in l)(xn||f||!(c in d))&&ee(d,c,l[c]);else Ie({target:t,proto:!0,forced:xn||f},l);return l},Ln=Z.set,jn=Z.getterFor("Array Iterator"),Nn=In(Array,"Array",(function(e,t){Ln(this,{type:"Array Iterator",target:m(e),index:0,kind:t})}),(function(){var e=jn(this),t=e.target,n=e.kind,i=e.index++;return!t||i>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:i,done:!1}:"values"==n?{value:t[i],done:!1}:{value:[i,t[i]],done:!1}}),"values");pn.Arguments=pn.Array,dn("keys"),dn("values"),dn("entries");var Rn=[].join,Mn=d!=Object,_n=$t("join",",");Ie({target:"Array",proto:!0,forced:Mn||!_n},{join:function(e){return Rn.call(m(this),void 0===e?",":e)}});var Un,Dn,Fn=function(e,t,n){var i=v(t);i in e?C.f(e,i,c(0,n)):e[i]=n},qn=ie("navigator","userAgent")||"",Hn=i.process,Bn=Hn&&Hn.versions,Vn=Bn&&Bn.v8;Vn?Dn=(Un=Vn.split("."))[0]+Un[1]:qn&&(!(Un=qn.match(/Edge\/(\d+)/))||Un[1]>=74)&&(Un=qn.match(/Chrome\/(\d+)/))&&(Dn=Un[1]);var zn=Dn&&+Dn,Wn=Xe("species"),Kn=function(e){return zn>=51||!r((function(){var t=[];return(t.constructor={})[Wn]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},$n=Kn("slice"),Yn=Qt("slice",{ACCESSORS:!0,0:0,1:2}),Gn=Xe("species"),Xn=[].slice,Qn=Math.max;Ie({target:"Array",proto:!0,forced:!$n||!Yn},{slice:function(e,t){var n,i,r,a=m(this),o=le(a.length),s=he(e,o),l=he(void 0===t?o:t,o);if(Ne(a)&&("function"!=typeof(n=a.constructor)||n!==Array&&!Ne(n.prototype)?g(n)&&null===(n=n[Gn])&&(n=void 0):n=void 0,n===Array||void 0===n))return Xn.call(a,s,l);for(i=new(void 0===n?Array:n)(Qn(l-s,0)),r=0;s<l;s++,r++)s in a&&Fn(i,r,a[s]);return i.length=r,i}});var Jn={};Jn[Xe("toStringTag")]="z";var Zn="[object z]"===String(Jn),ei=Xe("toStringTag"),ti="Arguments"==h(function(){return arguments}()),ni=Zn?h:function(e){var t,n,i;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),ei))?n:ti?h(t):"Object"==(i=h(t))&&"function"==typeof t.callee?"Arguments":i},ii=Zn?{}.toString:function(){return"[object "+ni(this)+"]"};Zn||ee(Object.prototype,"toString",ii,{unsafe:!0});var ri=function(){var e=P(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t};function ai(e,t){return RegExp(e,t)}var oi={UNSUPPORTED_Y:r((function(){var e=ai("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),BROKEN_CARET:r((function(){var e=ai("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))},si=RegExp.prototype.exec,li=String.prototype.replace,ci=si,ui=function(){var e=/a/,t=/b*/g;return si.call(e,"a"),si.call(t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),hi=oi.UNSUPPORTED_Y||oi.BROKEN_CARET,fi=void 0!==/()??/.exec("")[1];(ui||fi||hi)&&(ci=function(e){var t,n,i,r,a=this,o=hi&&a.sticky,s=ri.call(a),l=a.source,c=0,u=e;return o&&(-1===(s=s.replace("y","")).indexOf("g")&&(s+="g"),u=String(e).slice(a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==e[a.lastIndex-1])&&(l="(?: "+l+")",u=" "+u,c++),n=new RegExp("^(?:"+l+")",s)),fi&&(n=new RegExp("^"+l+"$(?!\\s)",s)),ui&&(t=a.lastIndex),i=si.call(o?n:a,u),o?i?(i.input=i.input.slice(c),i[0]=i[0].slice(c),i.index=a.lastIndex,a.lastIndex+=i[0].length):a.lastIndex=0:ui&&i&&(a.lastIndex=a.global?i.index+i[0].length:t),fi&&i&&i.length>1&&li.call(i[0],n,(function(){for(r=1;r<arguments.length-2;r++)void 0===arguments[r]&&(i[r]=void 0)})),i});var di=ci;Ie({target:"RegExp",proto:!0,forced:/./.exec!==di},{exec:di});var pi=RegExp.prototype,mi=pi.toString,gi=r((function(){return"/a/b"!=mi.call({source:"a",flags:"b"})})),vi="toString"!=mi.name;(gi||vi)&&ee(RegExp.prototype,"toString",(function(){var e=P(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(void 0===n&&e instanceof RegExp&&!("flags"in pi)?ri.call(e):n)}),{unsafe:!0});var yi=function(e){return function(t,n){var i,r,a=String(p(t)),o=oe(n),s=a.length;return o<0||o>=s?e?"":void 0:(i=a.charCodeAt(o))<55296||i>56319||o+1===s||(r=a.charCodeAt(o+1))<56320||r>57343?e?a.charAt(o):i:e?a.slice(o,o+2):r-56320+(i-55296<<10)+65536}},bi={codeAt:yi(!1),charAt:yi(!0)},wi=bi.charAt,ki=Z.set,Ti=Z.getterFor("String Iterator");In(String,"String",(function(e){ki(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=Ti(this),n=t.string,i=t.index;return i>=n.length?{value:void 0,done:!0}:(e=wi(n,i),t.index+=e.length,{value:e,done:!1})}));var Si=Xe("species"),Ei=!r((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")})),Ai="$0"==="a".replace(/./,"$0"),Pi=Xe("replace"),xi=!!/./[Pi]&&""===/./[Pi]("a","$0"),Ci=!r((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),Oi=function(e,t,n,i){var a=Xe(e),o=!r((function(){var t={};return t[a]=function(){return 7},7!=""[e](t)})),s=o&&!r((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[Si]=function(){return n},n.flags="",n[a]=/./[a]),n.exec=function(){return t=!0,null},n[a](""),!t}));if(!o||!s||"replace"===e&&(!Ei||!Ai||xi)||"split"===e&&!Ci){var l=/./[a],c=n(a,""[e],(function(e,t,n,i,r){return t.exec===di?o&&!r?{done:!0,value:l.call(t,n,i)}:{done:!0,value:e.call(n,t,i)}:{done:!1}}),{REPLACE_KEEPS_$0:Ai,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:xi}),u=c[0],h=c[1];ee(String.prototype,e,u),ee(RegExp.prototype,a,2==t?function(e,t){return h.call(e,this,t)}:function(e){return h.call(e,this)})}i&&O(RegExp.prototype[a],"sham",!0)},Ii=bi.charAt,Li=function(e,t,n){return t+(n?Ii(e,t).length:1)},ji=function(e,t){var n=e.exec;if("function"==typeof n){var i=n.call(e,t);if("object"!=typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==h(e))throw TypeError("RegExp#exec called on incompatible receiver");return di.call(e,t)},Ni=Math.max,Ri=Math.min,Mi=Math.floor,_i=/\$([$&'`]|\d\d?|<[^>]*>)/g,Ui=/\$([$&'`]|\d\d?)/g;Oi("replace",2,(function(e,t,n,i){var r=i.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,a=i.REPLACE_KEEPS_$0,o=r?"$":"$0";return[function(n,i){var r=p(this),a=null==n?void 0:n[e];return void 0!==a?a.call(n,r,i):t.call(String(r),n,i)},function(e,i){if(!r&&a||"string"==typeof i&&-1===i.indexOf(o)){var l=n(t,e,this,i);if(l.done)return l.value}var c=P(e),u=String(this),h="function"==typeof i;h||(i=String(i));var f=c.global;if(f){var d=c.unicode;c.lastIndex=0}for(var p=[];;){var m=ji(c,u);if(null===m)break;if(p.push(m),!f)break;""===String(m[0])&&(c.lastIndex=Li(u,le(c.lastIndex),d))}for(var g,v="",y=0,b=0;b<p.length;b++){m=p[b];for(var w=String(m[0]),k=Ni(Ri(oe(m.index),u.length),0),T=[],S=1;S<m.length;S++)T.push(void 0===(g=m[S])?g:String(g));var E=m.groups;if(h){var A=[w].concat(T,k,u);void 0!==E&&A.push(E);var x=String(i.apply(void 0,A))}else x=s(w,u,k,T,E,i);k>=y&&(v+=u.slice(y,k)+x,y=k+w.length)}return v+u.slice(y)}];function s(e,n,i,r,a,o){var s=i+e.length,l=r.length,c=Ui;return void 0!==a&&(a=Re(a),c=_i),t.call(o,c,(function(t,o){var c;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,i);case"'":return n.slice(s);case"<":c=a[o.slice(1,-1)];break;default:var u=+o;if(0===u)return t;if(u>l){var h=Mi(u/10);return 0===h?t:h<=l?void 0===r[h-1]?o.charAt(1):r[h-1]+o.charAt(1):t}c=r[u-1]}return void 0===c?"":c}))}}));var Di=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};Oi("search",1,(function(e,t,n){return[function(t){var n=p(this),i=null==t?void 0:t[e];return void 0!==i?i.call(t,n):new RegExp(t)[e](String(n))},function(e){var i=n(t,e,this);if(i.done)return i.value;var r=P(e),a=String(this),o=r.lastIndex;Di(o,0)||(r.lastIndex=0);var s=ji(r,a);return Di(r.lastIndex,o)||(r.lastIndex=o),null===s?-1:s.index}]}));var Fi=Xe("match"),qi=function(e){var t;return g(e)&&(void 0!==(t=e[Fi])?!!t:"RegExp"==h(e))},Hi=Xe("species"),Bi=function(e,t){var n,i=P(e).constructor;return void 0===i||null==(n=P(i)[Hi])?t:it(n)},Vi=[].push,zi=Math.min,Wi=!r((function(){return!RegExp(4294967295,"y")}));Oi("split",2,(function(e,t,n){var i;return i="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var i=String(p(this)),r=void 0===n?4294967295:n>>>0;if(0===r)return[];if(void 0===e)return[i];if(!qi(e))return t.call(i,e,r);for(var a,o,s,l=[],c=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),u=0,h=new RegExp(e.source,c+"g");(a=di.call(h,i))&&!((o=h.lastIndex)>u&&(l.push(i.slice(u,a.index)),a.length>1&&a.index<i.length&&Vi.apply(l,a.slice(1)),s=a[0].length,u=o,l.length>=r));)h.lastIndex===a.index&&h.lastIndex++;return u===i.length?!s&&h.test("")||l.push(""):l.push(i.slice(u)),l.length>r?l.slice(0,r):l}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var r=p(this),a=null==t?void 0:t[e];return void 0!==a?a.call(t,r,n):i.call(String(r),t,n)},function(e,r){var a=n(i,e,this,r,i!==t);if(a.done)return a.value;var o=P(e),s=String(this),l=Bi(o,RegExp),c=o.unicode,u=(o.ignoreCase?"i":"")+(o.multiline?"m":"")+(o.unicode?"u":"")+(Wi?"y":"g"),h=new l(Wi?o:"^(?:"+o.source+")",u),f=void 0===r?4294967295:r>>>0;if(0===f)return[];if(0===s.length)return null===ji(h,s)?[s]:[];for(var d=0,p=0,m=[];p<s.length;){h.lastIndex=Wi?p:0;var g,v=ji(h,Wi?s:s.slice(p));if(null===v||(g=zi(le(h.lastIndex+(Wi?0:p)),s.length))===d)p=Li(s,p,c);else{if(m.push(s.slice(d,p)),m.length===f)return m;for(var y=1;y<=v.length-1;y++)if(m.push(v[y]),m.length===f)return m;p=d=g}}return m.push(s.slice(d)),m}]}),!Wi);var Ki={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0};for(var $i in Ki){var Yi=i[$i],Gi=Yi&&Yi.prototype;if(Gi&&Gi.forEach!==tn)try{O(Gi,"forEach",tn)}catch(e){Gi.forEach=tn}}var Xi=Xe("iterator"),Qi=Xe("toStringTag"),Ji=Nn.values;for(var Zi in Ki){var er=i[Zi],tr=er&&er.prototype;if(tr){if(tr[Xi]!==Ji)try{O(tr,Xi,Ji)}catch(e){tr[Xi]=Ji}if(tr[Qi]||O(tr,Qi,Zi),Ki[Zi])for(var nr in Nn)if(tr[nr]!==Nn[nr])try{O(tr,nr,Nn[nr])}catch(e){tr[nr]=Nn[nr]}}}var ir=Xe("iterator"),rr=!r((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach((function(e,i){t.delete("b"),n+=i+e})),!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[ir]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})),ar=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e},or=Object.assign,sr=Object.defineProperty,lr=!or||r((function(){if(a&&1!==or({b:1},or(sr({},"a",{enumerable:!0,get:function(){sr(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol();return e[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=or({},e)[n]||"abcdefghijklmnopqrst"!=Me(or({},t)).join("")}))?function(e,t){for(var n=Re(e),i=arguments.length,r=1,o=be.f,s=l.f;i>r;)for(var c,u=d(arguments[r++]),h=o?Me(u).concat(o(u)):Me(u),f=h.length,p=0;f>p;)c=h[p++],a&&!s.call(u,c)||(n[c]=u[c]);return n}:or,cr=function(e,t,n,i){try{return i?t(P(n)[0],n[1]):t(n)}catch(t){var r=e.return;throw void 0!==r&&P(r.call(e)),t}},ur=Xe("iterator"),hr=Array.prototype,fr=function(e){return void 0!==e&&(pn.Array===e||hr[ur]===e)},dr=Xe("iterator"),pr=function(e){if(null!=e)return e[dr]||e["@@iterator"]||pn[ni(e)]},mr=function(e){var t,n,i,r,a,o,s=Re(e),l="function"==typeof this?this:Array,c=arguments.length,u=c>1?arguments[1]:void 0,h=void 0!==u,f=pr(s),d=0;if(h&&(u=rt(u,c>2?arguments[2]:void 0,2)),null==f||l==Array&&fr(f))for(n=new l(t=le(s.length));t>d;d++)o=h?u(s[d],d):s[d],Fn(n,d,o);else for(a=(r=f.call(s)).next,n=new l;!(i=a.call(r)).done;d++)o=h?cr(r,u,[i.value,d],!0):i.value,Fn(n,d,o);return n.length=d,n},gr=/[^\0-\u007E]/,vr=/[.\u3002\uFF0E\uFF61]/g,yr="Overflow: input needs wider integers to process",br=Math.floor,wr=String.fromCharCode,kr=function(e){return e+22+75*(e<26)},Tr=function(e,t,n){var i=0;for(e=n?br(e/700):e>>1,e+=br(e/t);e>455;i+=36)e=br(e/35);return br(i+36*e/(e+38))},Sr=function(e){var t,n,i=[],r=(e=function(e){for(var t=[],n=0,i=e.length;n<i;){var r=e.charCodeAt(n++);if(r>=55296&&r<=56319&&n<i){var a=e.charCodeAt(n++);56320==(64512&a)?t.push(((1023&r)<<10)+(1023&a)+65536):(t.push(r),n--)}else t.push(r)}return t}(e)).length,a=128,o=0,s=72;for(t=0;t<e.length;t++)(n=e[t])<128&&i.push(wr(n));var l=i.length,c=l;for(l&&i.push("-");c<r;){var u=2147483647;for(t=0;t<e.length;t++)(n=e[t])>=a&&n<u&&(u=n);var h=c+1;if(u-a>br((2147483647-o)/h))throw RangeError(yr);for(o+=(u-a)*h,a=u,t=0;t<e.length;t++){if((n=e[t])<a&&++o>2147483647)throw RangeError(yr);if(n==a){for(var f=o,d=36;;d+=36){var p=d<=s?1:d>=s+26?26:d-s;if(f<p)break;var m=f-p,g=36-p;i.push(wr(kr(p+m%g))),f=br(m/g)}i.push(wr(kr(f))),s=Tr(o,h,c==l),o=0,++c}}++o,++a}return i.join("")},Er=function(e,t,n){for(var i in t)ee(e,i,t[i],n);return e},Ar=function(e){var t=pr(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return P(t.call(e))},Pr=ie("fetch"),xr=ie("Headers"),Cr=Xe("iterator"),Or=Z.set,Ir=Z.getterFor("URLSearchParams"),Lr=Z.getterFor("URLSearchParamsIterator"),jr=/\+/g,Nr=Array(4),Rr=function(e){return Nr[e-1]||(Nr[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},Mr=function(e){try{return decodeURIComponent(e)}catch(t){return e}},_r=function(e){var t=e.replace(jr," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(Rr(n--),Mr);return t}},Ur=/[!'()~]|%20/g,Dr={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},Fr=function(e){return Dr[e]},qr=function(e){return encodeURIComponent(e).replace(Ur,Fr)},Hr=function(e,t){if(t)for(var n,i,r=t.split("&"),a=0;a<r.length;)(n=r[a++]).length&&(i=n.split("="),e.push({key:_r(i.shift()),value:_r(i.join("="))}))},Br=function(e){this.entries.length=0,Hr(this.entries,e)},Vr=function(e,t){if(e<t)throw TypeError("Not enough arguments")},zr=En((function(e,t){Or(this,{type:"URLSearchParamsIterator",iterator:Ar(Ir(e).entries),kind:t})}),"Iterator",(function(){var e=Lr(this),t=e.kind,n=e.iterator.next(),i=n.value;return n.done||(n.value="keys"===t?i.key:"values"===t?i.value:[i.key,i.value]),n})),Wr=function(){ar(this,Wr,"URLSearchParams");var e,t,n,i,r,a,o,s,l,c=arguments.length>0?arguments[0]:void 0,u=this,h=[];if(Or(u,{type:"URLSearchParams",entries:h,updateURL:function(){},updateSearchParams:Br}),void 0!==c)if(g(c))if("function"==typeof(e=pr(c)))for(n=(t=e.call(c)).next;!(i=n.call(t)).done;){if((o=(a=(r=Ar(P(i.value))).next).call(r)).done||(s=a.call(r)).done||!a.call(r).done)throw TypeError("Expected sequence with length 2");h.push({key:o.value+"",value:s.value+""})}else for(l in c)b(c,l)&&h.push({key:l,value:c[l]+""});else Hr(h,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},Kr=Wr.prototype;Er(Kr,{append:function(e,t){Vr(arguments.length,2);var n=Ir(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){Vr(arguments.length,1);for(var t=Ir(this),n=t.entries,i=e+"",r=0;r<n.length;)n[r].key===i?n.splice(r,1):r++;t.updateURL()},get:function(e){Vr(arguments.length,1);for(var t=Ir(this).entries,n=e+"",i=0;i<t.length;i++)if(t[i].key===n)return t[i].value;return null},getAll:function(e){Vr(arguments.length,1);for(var t=Ir(this).entries,n=e+"",i=[],r=0;r<t.length;r++)t[r].key===n&&i.push(t[r].value);return i},has:function(e){Vr(arguments.length,1);for(var t=Ir(this).entries,n=e+"",i=0;i<t.length;)if(t[i++].key===n)return!0;return!1},set:function(e,t){Vr(arguments.length,1);for(var n,i=Ir(this),r=i.entries,a=!1,o=e+"",s=t+"",l=0;l<r.length;l++)(n=r[l]).key===o&&(a?r.splice(l--,1):(a=!0,n.value=s));a||r.push({key:o,value:s}),i.updateURL()},sort:function(){var e,t,n,i=Ir(this),r=i.entries,a=r.slice();for(r.length=0,n=0;n<a.length;n++){for(e=a[n],t=0;t<n;t++)if(r[t].key>e.key){r.splice(t,0,e);break}t===n&&r.push(e)}i.updateURL()},forEach:function(e){for(var t,n=Ir(this).entries,i=rt(e,arguments.length>1?arguments[1]:void 0,3),r=0;r<n.length;)i((t=n[r++]).value,t.key,this)},keys:function(){return new zr(this,"keys")},values:function(){return new zr(this,"values")},entries:function(){return new zr(this,"entries")}},{enumerable:!0}),ee(Kr,Cr,Kr.entries),ee(Kr,"toString",(function(){for(var e,t=Ir(this).entries,n=[],i=0;i<t.length;)e=t[i++],n.push(qr(e.key)+"="+qr(e.value));return n.join("&")}),{enumerable:!0}),nt(Wr,"URLSearchParams"),Ie({global:!0,forced:!rr},{URLSearchParams:Wr}),rr||"function"!=typeof Pr||"function"!=typeof xr||Ie({global:!0,enumerable:!0,forced:!0},{fetch:function(e){var t,n,i,r=[e];return arguments.length>1&&(t=arguments[1],g(t)&&(n=t.body,"URLSearchParams"===ni(n)&&((i=t.headers?new xr(t.headers):new xr).has("content-type")||i.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=Be(t,{body:c(0,String(n)),headers:c(0,i)}))),r.push(t)),Pr.apply(this,r)}});var $r,Yr={URLSearchParams:Wr,getState:Ir},Gr=bi.codeAt,Xr=i.URL,Qr=Yr.URLSearchParams,Jr=Yr.getState,Zr=Z.set,ea=Z.getterFor("URL"),ta=Math.floor,na=Math.pow,ia=/[A-Za-z]/,ra=/[\d+-.A-Za-z]/,aa=/\d/,oa=/^(0x|0X)/,sa=/^[0-7]+$/,la=/^\d+$/,ca=/^[\dA-Fa-f]+$/,ua=/[\u0000\u0009\u000A\u000D #%/:?@[\\]]/,ha=/[\u0000\u0009\u000A\u000D #/:?@[\\]]/,fa=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,da=/[\u0009\u000A\u000D]/g,pa=function(e,t){var n,i,r;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return"Invalid host";if(!(n=ga(t.slice(1,-1))))return"Invalid host";e.host=n}else if(Ea(e)){if(t=function(e){var t,n,i=[],r=e.toLowerCase().replace(vr,".").split(".");for(t=0;t<r.length;t++)n=r[t],i.push(gr.test(n)?"xn--"+Sr(n):n);return i.join(".")}(t),ua.test(t))return"Invalid host";if(null===(n=ma(t)))return"Invalid host";e.host=n}else{if(ha.test(t))return"Invalid host";for(n="",i=mr(t),r=0;r<i.length;r++)n+=Ta(i[r],ya);e.host=n}},ma=function(e){var t,n,i,r,a,o,s,l=e.split(".");if(l.length&&""==l[l.length-1]&&l.pop(),(t=l.length)>4)return e;for(n=[],i=0;i<t;i++){if(""==(r=l[i]))return e;if(a=10,r.length>1&&"0"==r.charAt(0)&&(a=oa.test(r)?16:8,r=r.slice(8==a?1:2)),""===r)o=0;else{if(!(10==a?la:8==a?sa:ca).test(r))return e;o=parseInt(r,a)}n.push(o)}for(i=0;i<t;i++)if(o=n[i],i==t-1){if(o>=na(256,5-t))return null}else if(o>255)return null;for(s=n.pop(),i=0;i<n.length;i++)s+=n[i]*na(256,3-i);return s},ga=function(e){var t,n,i,r,a,o,s,l=[0,0,0,0,0,0,0,0],c=0,u=null,h=0,f=function(){return e.charAt(h)};if(":"==f()){if(":"!=e.charAt(1))return;h+=2,u=++c}for(;f();){if(8==c)return;if(":"!=f()){for(t=n=0;n<4&&ca.test(f());)t=16*t+parseInt(f(),16),h++,n++;if("."==f()){if(0==n)return;if(h-=n,c>6)return;for(i=0;f();){if(r=null,i>0){if(!("."==f()&&i<4))return;h++}if(!aa.test(f()))return;for(;aa.test(f());){if(a=parseInt(f(),10),null===r)r=a;else{if(0==r)return;r=10*r+a}if(r>255)return;h++}l[c]=256*l[c]+r,2!=++i&&4!=i||c++}if(4!=i)return;break}if(":"==f()){if(h++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;h++,u=++c}}if(null!==u)for(o=c-u,c=7;0!=c&&o>0;)s=l[c],l[c--]=l[u+o-1],l[u+--o]=s;else if(8!=c)return;return l},va=function(e){var t,n,i,r;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=ta(e/256);return t.join(".")}if("object"==typeof e){for(t="",i=function(e){for(var t=null,n=1,i=null,r=0,a=0;a<8;a++)0!==e[a]?(r>n&&(t=i,n=r),i=null,r=0):(null===i&&(i=a),++r);return r>n&&(t=i,n=r),t}(e),n=0;n<8;n++)r&&0===e[n]||(r&&(r=!1),i===n?(t+=n?":":"::",r=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},ya={},ba=lr({},ya,{" ":1,'"':1,"<":1,">":1,"`":1}),wa=lr({},ba,{"#":1,"?":1,"{":1,"}":1}),ka=lr({},wa,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Ta=function(e,t){var n=Gr(e,0);return n>32&&n<127&&!b(t,e)?e:encodeURIComponent(e)},Sa={ftp:21,file:null,http:80,https:443,ws:80,wss:443},Ea=function(e){return b(Sa,e.scheme)},Aa=function(e){return""!=e.username||""!=e.password},Pa=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},xa=function(e,t){var n;return 2==e.length&&ia.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},Ca=function(e){var t;return e.length>1&&xa(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},Oa=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&xa(t[0],!0)||t.pop()},Ia=function(e){return"."===e||"%2e"===e.toLowerCase()},La={},ja={},Na={},Ra={},Ma={},_a={},Ua={},Da={},Fa={},qa={},Ha={},Ba={},Va={},za={},Wa={},Ka={},$a={},Ya={},Ga={},Xa={},Qa={},Ja=function(e,t,n,i){var r,a,o,s,l,c=n||La,u=0,h="",f=!1,d=!1,p=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(fa,"")),t=t.replace(da,""),r=mr(t);u<=r.length;){switch(a=r[u],c){case La:if(!a||!ia.test(a)){if(n)return"Invalid scheme";c=Na;continue}h+=a.toLowerCase(),c=ja;break;case ja:if(a&&(ra.test(a)||"+"==a||"-"==a||"."==a))h+=a.toLowerCase();else{if(":"!=a){if(n)return"Invalid scheme";h="",c=Na,u=0;continue}if(n&&(Ea(e)!=b(Sa,h)||"file"==h&&(Aa(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=h,n)return void(Ea(e)&&Sa[e.scheme]==e.port&&(e.port=null));h="","file"==e.scheme?c=za:Ea(e)&&i&&i.scheme==e.scheme?c=Ra:Ea(e)?c=Da:"/"==r[u+1]?(c=Ma,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ga)}break;case Na:if(!i||i.cannotBeABaseURL&&"#"!=a)return"Invalid scheme";if(i.cannotBeABaseURL&&"#"==a){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=Qa;break}c="file"==i.scheme?za:_a;continue;case Ra:if("/"!=a||"/"!=r[u+1]){c=_a;continue}c=Fa,u++;break;case Ma:if("/"==a){c=qa;break}c=Ya;continue;case _a:if(e.scheme=i.scheme,a==$r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==a||"\\"==a&&Ea(e))c=Ua;else if("?"==a)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Xa;else{if("#"!=a){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=Ya;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=Qa}break;case Ua:if(!Ea(e)||"/"!=a&&"\\"!=a){if("/"!=a){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=Ya;continue}c=qa}else c=Fa;break;case Da:if(c=Fa,"/"!=a||"/"!=h.charAt(u+1))continue;u++;break;case Fa:if("/"!=a&&"\\"!=a){c=qa;continue}break;case qa:if("@"==a){f&&(h="%40"+h),f=!0,o=mr(h);for(var m=0;m<o.length;m++){var g=o[m];if(":"!=g||p){var v=Ta(g,ka);p?e.password+=v:e.username+=v}else p=!0}h=""}else if(a==$r||"/"==a||"?"==a||"#"==a||"\\"==a&&Ea(e)){if(f&&""==h)return"Invalid authority";u-=mr(h).length+1,h="",c=Ha}else h+=a;break;case Ha:case Ba:if(n&&"file"==e.scheme){c=Ka;continue}if(":"!=a||d){if(a==$r||"/"==a||"?"==a||"#"==a||"\\"==a&&Ea(e)){if(Ea(e)&&""==h)return"Invalid host";if(n&&""==h&&(Aa(e)||null!==e.port))return;if(s=pa(e,h))return s;if(h="",c=$a,n)return;continue}"["==a?d=!0:"]"==a&&(d=!1),h+=a}else{if(""==h)return"Invalid host";if(s=pa(e,h))return s;if(h="",c=Va,n==Ba)return}break;case Va:if(!aa.test(a)){if(a==$r||"/"==a||"?"==a||"#"==a||"\\"==a&&Ea(e)||n){if(""!=h){var y=parseInt(h,10);if(y>65535)return"Invalid port";e.port=Ea(e)&&y===Sa[e.scheme]?null:y,h=""}if(n)return;c=$a;continue}return"Invalid port"}h+=a;break;case za:if(e.scheme="file","/"==a||"\\"==a)c=Wa;else{if(!i||"file"!=i.scheme){c=Ya;continue}if(a==$r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==a)e.host=i.host,e.path=i.path.slice(),e.query="",c=Xa;else{if("#"!=a){Ca(r.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),Oa(e)),c=Ya;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=Qa}}break;case Wa:if("/"==a||"\\"==a){c=Ka;break}i&&"file"==i.scheme&&!Ca(r.slice(u).join(""))&&(xa(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=Ya;continue;case Ka:if(a==$r||"/"==a||"\\"==a||"?"==a||"#"==a){if(!n&&xa(h))c=Ya;else if(""==h){if(e.host="",n)return;c=$a}else{if(s=pa(e,h))return s;if("localhost"==e.host&&(e.host=""),n)return;h="",c=$a}continue}h+=a;break;case $a:if(Ea(e)){if(c=Ya,"/"!=a&&"\\"!=a)continue}else if(n||"?"!=a)if(n||"#"!=a){if(a!=$r&&(c=Ya,"/"!=a))continue}else e.fragment="",c=Qa;else e.query="",c=Xa;break;case Ya:if(a==$r||"/"==a||"\\"==a&&Ea(e)||!n&&("?"==a||"#"==a)){if(".."===(l=(l=h).toLowerCase())||"%2e."===l||".%2e"===l||"%2e%2e"===l?(Oa(e),"/"==a||"\\"==a&&Ea(e)||e.path.push("")):Ia(h)?"/"==a||"\\"==a&&Ea(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&xa(h)&&(e.host&&(e.host=""),h=h.charAt(0)+":"),e.path.push(h)),h="","file"==e.scheme&&(a==$r||"?"==a||"#"==a))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==a?(e.query="",c=Xa):"#"==a&&(e.fragment="",c=Qa)}else h+=Ta(a,wa);break;case Ga:"?"==a?(e.query="",c=Xa):"#"==a?(e.fragment="",c=Qa):a!=$r&&(e.path[0]+=Ta(a,ya));break;case Xa:n||"#"!=a?a!=$r&&("'"==a&&Ea(e)?e.query+="%27":e.query+="#"==a?"%23":Ta(a,ya)):(e.fragment="",c=Qa);break;case Qa:a!=$r&&(e.fragment+=Ta(a,ba))}u++}},Za=function(e){var t,n,i=ar(this,Za,"URL"),r=arguments.length>1?arguments[1]:void 0,o=String(e),s=Zr(i,{type:"URL"});if(void 0!==r)if(r instanceof Za)t=ea(r);else if(n=Ja(t={},String(r)))throw TypeError(n);if(n=Ja(s,o,null,t))throw TypeError(n);var l=s.searchParams=new Qr,c=Jr(l);c.updateSearchParams(s.query),c.updateURL=function(){s.query=String(l)||null},a||(i.href=to.call(i),i.origin=no.call(i),i.protocol=io.call(i),i.username=ro.call(i),i.password=ao.call(i),i.host=oo.call(i),i.hostname=so.call(i),i.port=lo.call(i),i.pathname=co.call(i),i.search=uo.call(i),i.searchParams=ho.call(i),i.hash=fo.call(i))},eo=Za.prototype,to=function(){var e=ea(this),t=e.scheme,n=e.username,i=e.password,r=e.host,a=e.port,o=e.path,s=e.query,l=e.fragment,c=t+":";return null!==r?(c+="//",Aa(e)&&(c+=n+(i?":"+i:"")+"@"),c+=va(r),null!==a&&(c+=":"+a)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?o[0]:o.length?"/"+o.join("/"):"",null!==s&&(c+="?"+s),null!==l&&(c+="#"+l),c},no=function(){var e=ea(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&Ea(e)?t+"://"+va(e.host)+(null!==n?":"+n:""):"null"},io=function(){return ea(this).scheme+":"},ro=function(){return ea(this).username},ao=function(){return ea(this).password},oo=function(){var e=ea(this),t=e.host,n=e.port;return null===t?"":null===n?va(t):va(t)+":"+n},so=function(){var e=ea(this).host;return null===e?"":va(e)},lo=function(){var e=ea(this).port;return null===e?"":String(e)},co=function(){var e=ea(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},uo=function(){var e=ea(this).query;return e?"?"+e:""},ho=function(){return ea(this).searchParams},fo=function(){var e=ea(this).fragment;return e?"#"+e:""},po=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(a&&_e(eo,{href:po(to,(function(e){var t=ea(this),n=String(e),i=Ja(t,n);if(i)throw TypeError(i);Jr(t.searchParams).updateSearchParams(t.query)})),origin:po(no),protocol:po(io,(function(e){var t=ea(this);Ja(t,String(e)+":",La)})),username:po(ro,(function(e){var t=ea(this),n=mr(String(e));if(!Pa(t)){t.username="";for(var i=0;i<n.length;i++)t.username+=Ta(n[i],ka)}})),password:po(ao,(function(e){var t=ea(this),n=mr(String(e));if(!Pa(t)){t.password="";for(var i=0;i<n.length;i++)t.password+=Ta(n[i],ka)}})),host:po(oo,(function(e){var t=ea(this);t.cannotBeABaseURL||Ja(t,String(e),Ha)})),hostname:po(so,(function(e){var t=ea(this);t.cannotBeABaseURL||Ja(t,String(e),Ba)})),port:po(lo,(function(e){var t=ea(this);Pa(t)||(""==(e=String(e))?t.port=null:Ja(t,e,Va))})),pathname:po(co,(function(e){var t=ea(this);t.cannotBeABaseURL||(t.path=[],Ja(t,e+"",$a))})),search:po(uo,(function(e){var t=ea(this);""==(e=String(e))?t.query=null:("?"==e.charAt(0)&&(e=e.slice(1)),t.query="",Ja(t,e,Xa)),Jr(t.searchParams).updateSearchParams(t.query)})),searchParams:po(ho),hash:po(fo,(function(e){var t=ea(this);""!=(e=String(e))?("#"==e.charAt(0)&&(e=e.slice(1)),t.fragment="",Ja(t,e,Qa)):t.fragment=null}))}),ee(eo,"toJSON",(function(){return to.call(this)}),{enumerable:!0}),ee(eo,"toString",(function(){return to.call(this)}),{enumerable:!0}),Xr){var mo=Xr.createObjectURL,go=Xr.revokeObjectURL;mo&&ee(Za,"createObjectURL",(function(e){return mo.apply(Xr,arguments)})),go&&ee(Za,"revokeObjectURL",(function(e){return go.apply(Xr,arguments)}))}function vo(e){return(vo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function yo(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function bo(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function wo(e,t,n){return t&&bo(e.prototype,t),n&&bo(e,n),e}function ko(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function To(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function So(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?To(Object(n),!0).forEach((function(t){ko(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):To(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Eo(e,t){if(null==e)return{};var n,i,r=function(e,t){if(null==e)return{};var n,i,r={},a=Object.keys(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Ao(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],i=!0,r=!1,a=void 0;try{for(var o,s=e[Symbol.iterator]();!(i=(o=s.next()).done)&&(n.push(o.value),!t||n.length!==t);i=!0);}catch(e){r=!0,a=e}finally{try{i||null==s.return||s.return()}finally{if(r)throw a}}return n}(e,t)||xo(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Po(e){return function(e){if(Array.isArray(e))return Co(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||xo(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function xo(e,t){if(e){if("string"==typeof e)return Co(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Co(e,t):void 0}}function Co(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}nt(Za,"URL"),Ie({global:!0,forced:!rr,sham:!a},{URL:Za}),function(e){var t=function(){try{return!!Symbol.iterator}catch(e){return!1}}(),n=function(e){var n={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return t&&(n[Symbol.iterator]=function(){return n}),n},i=function(e){return encodeURIComponent(e).replace(/%20/g,"+")},r=function(e){return decodeURIComponent(String(e).replace(/\+/g," "))};(function(){try{var t=e.URLSearchParams;return"a=1"===new t("?a=1").toString()&&"function"==typeof t.prototype.set}catch(e){return!1}})()||function(){var r=function e(t){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var n=vo(t);if("undefined"===n);else if("string"===n)""!==t&&this._fromString(t);else if(t instanceof e){var i=this;t.forEach((function(e,t){i.append(t,e)}))}else{if(null===t||"object"!==n)throw new TypeError("Unsupported input's type for URLSearchParams");if("[object Array]"===Object.prototype.toString.call(t))for(var r=0;r<t.length;r++){var a=t[r];if("[object Array]"!==Object.prototype.toString.call(a)&&2===a.length)throw new TypeError("Expected [string, any] as entry at index "+r+" of URLSearchParams's input");this.append(a[0],a[1])}else for(var o in t)t.hasOwnProperty(o)&&this.append(o,t[o])}},a=r.prototype;a.append=function(e,t){e in this._entries?this._entries[e].push(String(t)):this._entries[e]=[String(t)]},a.delete=function(e){delete this._entries[e]},a.get=function(e){return e in this._entries?this._entries[e][0]:null},a.getAll=function(e){return e in this._entries?this._entries[e].slice(0):[]},a.has=function(e){return e in this._entries},a.set=function(e,t){this._entries[e]=[String(t)]},a.forEach=function(e,t){var n;for(var i in this._entries)if(this._entries.hasOwnProperty(i)){n=this._entries[i];for(var r=0;r<n.length;r++)e.call(t,n[r],i,this)}},a.keys=function(){var e=[];return this.forEach((function(t,n){e.push(n)})),n(e)},a.values=function(){var e=[];return this.forEach((function(t){e.push(t)})),n(e)},a.entries=function(){var e=[];return this.forEach((function(t,n){e.push([n,t])})),n(e)},t&&(a[Symbol.iterator]=a.entries),a.toString=function(){var e=[];return this.forEach((function(t,n){e.push(i(n)+"="+i(t))})),e.join("&")},e.URLSearchParams=r}();var a=e.URLSearchParams.prototype;"function"!=typeof a.sort&&(a.sort=function(){var e=this,t=[];this.forEach((function(n,i){t.push([i,n]),e._entries||e.delete(i)})),t.sort((function(e,t){return e[0]<t[0]?-1:e[0]>t[0]?1:0})),e._entries&&(e._entries={});for(var n=0;n<t.length;n++)this.append(t[n][0],t[n][1])}),"function"!=typeof a._fromString&&Object.defineProperty(a,"_fromString",{enumerable:!1,configurable:!1,writable:!1,value:function(e){if(this._entries)this._entries={};else{var t=[];this.forEach((function(e,n){t.push(n)}));for(var n=0;n<t.length;n++)this.delete(t[n])}var i,a=(e=e.replace(/^\?/,"")).split("&");for(n=0;n<a.length;n++)i=a[n].split("="),this.append(r(i[0]),i.length>1?r(i[1]):"")}})}(void 0!==e?e:"undefined"!=typeof window?window:"undefined"!=typeof self?self:e),function(e){if(function(){try{var t=new e.URL("b","http://a");return t.pathname="c d","http://a/c%20d"===t.href&&t.searchParams}catch(e){return!1}}()||function(){var t=e.URL,n=function(t,n){"string"!=typeof t&&(t=String(t));var i,r=document;if(n&&(void 0===e.location||n!==e.location.href)){(i=(r=document.implementation.createHTMLDocument("")).createElement("base")).href=n,r.head.appendChild(i);try{if(0!==i.href.indexOf(n))throw new Error(i.href)}catch(e){throw new Error("URL unable to set base "+n+" due to "+e)}}var a=r.createElement("a");if(a.href=t,i&&(r.body.appendChild(a),a.href=a.href),":"===a.protocol||!/:/.test(a.href))throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:a});var o=new e.URLSearchParams(this.search),s=!0,l=!0,c=this;["append","delete","set"].forEach((function(e){var t=o[e];o[e]=function(){t.apply(o,arguments),s&&(l=!1,c.search=o.toString(),l=!0)}})),Object.defineProperty(this,"searchParams",{value:o,enumerable:!0});var u=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==u&&(u=this.search,l&&(s=!1,this.searchParams._fromString(this.search),s=!0))}})},i=n.prototype;["hash","host","hostname","port","protocol"].forEach((function(e){!function(e){Object.defineProperty(i,e,{get:function(){return this._anchorElement[e]},set:function(t){this._anchorElement[e]=t},enumerable:!0})}(e)})),Object.defineProperty(i,"search",{get:function(){return this._anchorElement.search},set:function(e){this._anchorElement.search=e,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(i,{toString:{get:function(){var e=this;return function(){return e.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(e){this._anchorElement.href=e,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(e){this._anchorElement.pathname=e},enumerable:!0},origin:{get:function(){var e={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],t=this._anchorElement.port!=e&&""!==this._anchorElement.port;return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(t?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(e){},enumerable:!0},username:{get:function(){return""},set:function(e){},enumerable:!0}}),n.createObjectURL=function(e){return t.createObjectURL.apply(t,arguments)},n.revokeObjectURL=function(e){return t.revokeObjectURL.apply(t,arguments)},e.URL=n}(),void 0!==e.location&&!("origin"in e.location)){var t=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:t,enumerable:!0})}catch(n){setInterval((function(){e.location.origin=t()}),100)}}}(void 0!==e?e:"undefined"!=typeof window?window:"undefined"!=typeof self?self:e);var Oo=Xe("isConcatSpreadable"),Io=zn>=51||!r((function(){var e=[];return e[Oo]=!1,e.concat()[0]!==e})),Lo=Kn("concat"),jo=function(e){if(!g(e))return!1;var t=e[Oo];return void 0!==t?!!t:Ne(e)};Ie({target:"Array",proto:!0,forced:!Io||!Lo},{concat:function(e){var t,n,i,r,a,o=Re(this),s=ot(o,0),l=0;for(t=-1,i=arguments.length;t<i;t++)if(a=-1===t?o:arguments[t],jo(a)){if(l+(r=le(a.length))>9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n<r;n++,l++)n in a&&Fn(s,l,a[n])}else{if(l>=9007199254740991)throw TypeError("Maximum allowed index exceeded");Fn(s,l++,a)}return s.length=l,s}});var No=ct.filter,Ro=Kn("filter"),Mo=Qt("filter");Ie({target:"Array",proto:!0,forced:!Ro||!Mo},{filter:function(e){return No(this,e,arguments.length>1?arguments[1]:void 0)}});var _o=ct.find,Uo=!0,Do=Qt("find");"find"in[]&&Array(1).find((function(){Uo=!1})),Ie({target:"Array",proto:!0,forced:Uo||!Do},{find:function(e){return _o(this,e,arguments.length>1?arguments[1]:void 0)}}),dn("find");var Fo=Xe("iterator"),qo=!1;try{var Ho=0,Bo={next:function(){return{done:!!Ho++}},return:function(){qo=!0}};Bo[Fo]=function(){return this},Array.from(Bo,(function(){throw 2}))}catch(e){}var Vo=function(e,t){if(!t&&!qo)return!1;var n=!1;try{var i={};i[Fo]=function(){return{next:function(){return{done:n=!0}}}},e(i)}catch(e){}return n},zo=!Vo((function(e){Array.from(e)}));Ie({target:"Array",stat:!0,forced:zo},{from:mr});var Wo=de.includes,Ko=Qt("indexOf",{ACCESSORS:!0,1:0});Ie({target:"Array",proto:!0,forced:!Ko},{includes:function(e){return Wo(this,e,arguments.length>1?arguments[1]:void 0)}}),dn("includes");var $o=ct.map,Yo=Kn("map"),Go=Qt("map");Ie({target:"Array",proto:!0,forced:!Yo||!Go},{map:function(e){return $o(this,e,arguments.length>1?arguments[1]:void 0)}});var Xo=function(e,t,n){var i,r;return An&&"function"==typeof(i=t.constructor)&&i!==n&&g(r=i.prototype)&&r!==n.prototype&&An(e,r),e},Qo="\t\n\v\f\r                 \u2028\u2029\ufeff",Jo="["+Qo+"]",Zo=RegExp("^"+Jo+Jo+"*"),es=RegExp(Jo+Jo+"*$"),ts=function(e){return function(t){var n=String(p(t));return 1&e&&(n=n.replace(Zo,"")),2&e&&(n=n.replace(es,"")),n}},ns={start:ts(1),end:ts(2),trim:ts(3)},is=ye.f,rs=A.f,as=C.f,os=ns.trim,ss=i.Number,ls=ss.prototype,cs="Number"==h(Be(ls)),us=function(e){var t,n,i,r,a,o,s,l,c=v(e,!1);if("string"==typeof c&&c.length>2)if(43===(t=(c=os(c)).charCodeAt(0))||45===t){if(88===(n=c.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(c.charCodeAt(1)){case 66:case 98:i=2,r=49;break;case 79:case 111:i=8,r=55;break;default:return+c}for(o=(a=c.slice(2)).length,s=0;s<o;s++)if((l=a.charCodeAt(s))<48||l>r)return NaN;return parseInt(a,i)}return+c};if(Ce("Number",!ss(" 0o1")||!ss("0b1")||ss("+0x1"))){for(var hs,fs=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof fs&&(cs?r((function(){ls.valueOf.call(n)})):"Number"!=h(n))?Xo(new ss(us(t)),n,fs):us(t)},ds=a?is(ss):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),ps=0;ds.length>ps;ps++)b(ss,hs=ds[ps])&&!b(fs,hs)&&as(fs,hs,rs(ss,hs));fs.prototype=ls,ls.constructor=fs,ee(i,"Number",fs)}var ms=r((function(){Me(1)}));Ie({target:"Object",stat:!0,forced:ms},{keys:function(e){return Me(Re(e))}});var gs=function(e){if(qi(e))throw TypeError("The method doesn't accept regular expressions");return e},vs=Xe("match"),ys=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[vs]=!1,"/./"[e](t)}catch(e){}}return!1};Ie({target:"String",proto:!0,forced:!ys("includes")},{includes:function(e){return!!~String(p(this)).indexOf(gs(e),arguments.length>1?arguments[1]:void 0)}});var bs=!r((function(){return Object.isExtensible(Object.preventExtensions({}))})),ws=t((function(e){var t=C.f,n=B("meta"),i=0,r=Object.isExtensible||function(){return!0},a=function(e){t(e,n,{value:{objectID:"O"+ ++i,weakData:{}}})},o=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!g(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!b(e,n)){if(!r(e))return"F";if(!t)return"E";a(e)}return e[n].objectID},getWeakData:function(e,t){if(!b(e,n)){if(!r(e))return!0;if(!t)return!1;a(e)}return e[n].weakData},onFreeze:function(e){return bs&&o.REQUIRED&&r(e)&&!b(e,n)&&a(e),e}};W[n]=!0})),ks=(ws.REQUIRED,ws.fastKey,ws.getWeakData,ws.onFreeze,t((function(e){var t=function(e,t){this.stopped=e,this.result=t};(e.exports=function(e,n,i,r,a){var o,s,l,c,u,h,f,d=rt(n,i,r?2:1);if(a)o=e;else{if("function"!=typeof(s=pr(e)))throw TypeError("Target is not iterable");if(fr(s)){for(l=0,c=le(e.length);c>l;l++)if((u=r?d(P(f=e[l])[0],f[1]):d(e[l]))&&u instanceof t)return u;return new t(!1)}o=s.call(e)}for(h=o.next;!(f=h.call(o)).done;)if("object"==typeof(u=cr(o,d,f.value,r))&&u&&u instanceof t)return u;return new t(!1)}).stop=function(e){return new t(!0,e)}}))),Ts=ws.getWeakData,Ss=Z.set,Es=Z.getterFor,As=ct.find,Ps=ct.findIndex,xs=0,Cs=function(e){return e.frozen||(e.frozen=new Os)},Os=function(){this.entries=[]},Is=function(e,t){return As(e.entries,(function(e){return e[0]===t}))};Os.prototype={get:function(e){var t=Is(this,e);if(t)return t[1]},has:function(e){return!!Is(this,e)},set:function(e,t){var n=Is(this,e);n?n[1]=t:this.entries.push([e,t])},delete:function(e){var t=Ps(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}};var Ls={getConstructor:function(e,t,n,i){var r=e((function(e,a){ar(e,r,t),Ss(e,{type:t,id:xs++,frozen:void 0}),null!=a&&ks(a,e[i],e,n)})),a=Es(t),o=function(e,t,n){var i=a(e),r=Ts(P(t),!0);return!0===r?Cs(i).set(t,n):r[i.id]=n,e};return Er(r.prototype,{delete:function(e){var t=a(this);if(!g(e))return!1;var n=Ts(e);return!0===n?Cs(t).delete(e):n&&b(n,t.id)&&delete n[t.id]},has:function(e){var t=a(this);if(!g(e))return!1;var n=Ts(e);return!0===n?Cs(t).has(e):n&&b(n,t.id)}}),Er(r.prototype,n?{get:function(e){var t=a(this);if(g(e)){var n=Ts(e);return!0===n?Cs(t).get(e):n?n[t.id]:void 0}},set:function(e,t){return o(this,e,t)}}:{add:function(e){return o(this,e,!0)}}),r}},js=(t((function(e){var t,n=Z.enforce,a=!i.ActiveXObject&&"ActiveXObject"in i,o=Object.isExtensible,s=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},l=e.exports=function(e,t,n){var a=-1!==e.indexOf("Map"),o=-1!==e.indexOf("Weak"),s=a?"set":"add",l=i[e],c=l&&l.prototype,u=l,h={},f=function(e){var t=c[e];ee(c,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(o&&!g(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return o&&!g(e)?void 0:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(o&&!g(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(Ce(e,"function"!=typeof l||!(o||c.forEach&&!r((function(){(new l).entries().next()})))))u=n.getConstructor(t,e,a,s),ws.REQUIRED=!0;else if(Ce(e,!0)){var d=new u,p=d[s](o?{}:-0,1)!=d,m=r((function(){d.has(1)})),v=Vo((function(e){new l(e)})),y=!o&&r((function(){for(var e=new l,t=5;t--;)e[s](t,t);return!e.has(-0)}));v||((u=t((function(t,n){ar(t,u,e);var i=Xo(new l,t,u);return null!=n&&ks(n,i[s],i,a),i}))).prototype=c,c.constructor=u),(m||y)&&(f("delete"),f("has"),a&&f("get")),(y||p)&&f(s),o&&c.clear&&delete c.clear}return h[e]=u,Ie({global:!0,forced:u!=l},h),nt(u,e),o||n.setStrong(u,e,a),u}("WeakMap",s,Ls);if(D&&a){t=Ls.getConstructor(s,"WeakMap",!0),ws.REQUIRED=!0;var c=l.prototype,u=c.delete,h=c.has,f=c.get,d=c.set;Er(c,{delete:function(e){if(g(e)&&!o(e)){var i=n(this);return i.frozen||(i.frozen=new t),u.call(this,e)||i.frozen.delete(e)}return u.call(this,e)},has:function(e){if(g(e)&&!o(e)){var i=n(this);return i.frozen||(i.frozen=new t),h.call(this,e)||i.frozen.has(e)}return h.call(this,e)},get:function(e){if(g(e)&&!o(e)){var i=n(this);return i.frozen||(i.frozen=new t),h.call(this,e)?f.call(this,e):i.frozen.get(e)}return f.call(this,e)},set:function(e,i){if(g(e)&&!o(e)){var r=n(this);r.frozen||(r.frozen=new t),h.call(this,e)?d.call(this,e,i):r.frozen.set(e,i)}else d.call(this,e,i);return this}})}})),ct.every),Ns=$t("every"),Rs=Qt("every");Ie({target:"Array",proto:!0,forced:!Ns||!Rs},{every:function(e){return js(this,e,arguments.length>1?arguments[1]:void 0)}}),Ie({target:"Object",stat:!0,forced:Object.assign!==lr},{assign:lr});var Ms=ns.trim;Ie({target:"String",proto:!0,forced:function(e){return r((function(){return!!Qo[e]()||"​…᠎"!="​…᠎"[e]()||Qo[e].name!==e}))}("trim")},{trim:function(){return Ms(this)}});var _s=ct.some,Us=$t("some"),Ds=Qt("some");Ie({target:"Array",proto:!0,forced:!Us||!Ds},{some:function(e){return _s(this,e,arguments.length>1?arguments[1]:void 0)}});var Fs="".repeat||function(e){var t=String(p(this)),n="",i=oe(e);if(i<0||i==1/0)throw RangeError("Wrong number of repetitions");for(;i>0;(i>>>=1)&&(t+=t))1&i&&(n+=t);return n},qs=1..toFixed,Hs=Math.floor,Bs=function(e,t,n){return 0===t?n:t%2==1?Bs(e,t-1,n*e):Bs(e*e,t/2,n)},Vs=qs&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!r((function(){qs.call({})}));Ie({target:"Number",proto:!0,forced:Vs},{toFixed:function(e){var t,n,i,r,a=function(e){if("number"!=typeof e&&"Number"!=h(e))throw TypeError("Incorrect invocation");return+e}(this),o=oe(e),s=[0,0,0,0,0,0],l="",c="0",u=function(e,t){for(var n=-1,i=t;++n<6;)i+=e*s[n],s[n]=i%1e7,i=Hs(i/1e7)},f=function(e){for(var t=6,n=0;--t>=0;)n+=s[t],s[t]=Hs(n/e),n=n%e*1e7},d=function(){for(var e=6,t="";--e>=0;)if(""!==t||0===e||0!==s[e]){var n=String(s[e]);t=""===t?n:t+Fs.call("0",7-n.length)+n}return t};if(o<0||o>20)throw RangeError("Incorrect fraction digits");if(a!=a)return"NaN";if(a<=-1e21||a>=1e21)return String(a);if(a<0&&(l="-",a=-a),a>1e-21)if(n=(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(a*Bs(2,69,1))-69)<0?a*Bs(2,-t,1):a/Bs(2,t,1),n*=4503599627370496,(t=52-t)>0){for(u(0,n),i=o;i>=7;)u(1e7,0),i-=7;for(u(Bs(10,i,1),0),i=t-1;i>=23;)f(1<<23),i-=23;f(1<<i),u(1,1),f(2),c=d()}else u(0,n),u(1<<-t,0),c=d()+Fs.call("0",o);return c=o>0?l+((r=c.length)<=o?"0."+Fs.call("0",o-r)+c:c.slice(0,r-o)+"."+c.slice(r-o)):l+c}});var zs=l.f,Ws=function(e){return function(t){for(var n,i=m(t),r=Me(i),o=r.length,s=0,l=[];o>s;)n=r[s++],a&&!zs.call(i,n)||l.push(e?[n,i[n]]:i[n]);return l}},Ks={entries:Ws(!0),values:Ws(!1)},$s=Ks.entries;Ie({target:"Object",stat:!0},{entries:function(e){return $s(e)}});var Ys=Ks.values;Ie({target:"Object",stat:!0},{values:function(e){return Ys(e)}}),Ie({target:"Number",stat:!0},{isNaN:function(e){return e!=e}});var Gs=A.f,Xs=r((function(){Gs(1)}));function Qs(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function Js(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Zs(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function el(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Zs(Object(n),!0).forEach((function(t){Js(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Zs(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ie({target:"Object",stat:!0,forced:!a||Xs,sham:!a},{getOwnPropertyDescriptor:function(e,t){return Gs(m(e),t)}}),Ie({target:"Object",stat:!0,sham:!a},{getOwnPropertyDescriptors:function(e){for(var t,n,i=m(e),r=A.f,a=we(i),o={},s=0;a.length>s;)void 0!==(n=r(i,t=a[s++]))&&Fn(o,t,n);return o}}),Oi("match",1,(function(e,t,n){return[function(t){var n=p(this),i=null==t?void 0:t[e];return void 0!==i?i.call(t,n):new RegExp(t)[e](String(n))},function(e){var i=n(t,e,this);if(i.done)return i.value;var r=P(e),a=String(this);if(!r.global)return ji(r,a);var o=r.unicode;r.lastIndex=0;for(var s,l=[],c=0;null!==(s=ji(r,a));){var u=String(s[0]);l[c]=u,""===u&&(r.lastIndex=Li(a,le(r.lastIndex),o)),c++}return 0===c?null:l}]}));var tl={addCSS:!0,thumbWidth:15,watch:!0};function nl(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}var il=function(e){return null!=e?e.constructor:null},rl=function(e,t){return!!(e&&t&&e instanceof t)},al=function(e){return null==e},ol=function(e){return il(e)===Object},sl=function(e){return il(e)===String},ll=function(e){return Array.isArray(e)},cl=function(e){return rl(e,NodeList)},ul=sl,hl=ll,fl=cl,dl=function(e){return rl(e,Element)},pl=function(e){return rl(e,Event)},ml=function(e){return al(e)||(sl(e)||ll(e)||cl(e))&&!e.length||ol(e)&&!Object.keys(e).length};function gl(e,t){if(1>t){var n=function(e){var t="".concat(e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}(t);return parseFloat(e.toFixed(n))}return Math.round(e/t)*t}var vl,yl,bl,wl=function(){function e(t,n){(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,e),dl(t)?this.element=t:ul(t)&&(this.element=document.querySelector(t)),dl(this.element)&&ml(this.element.rangeTouch)&&(this.config=el({},tl,{},n),this.init())}return function(e,t,n){t&&Qs(e.prototype,t),n&&Qs(e,n)}(e,[{key:"init",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect="none",this.element.style.webKitUserSelect="none",this.element.style.touchAction="manipulation"),this.listeners(!0),this.element.rangeTouch=this)}},{key:"destroy",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect="",this.element.style.webKitUserSelect="",this.element.style.touchAction=""),this.listeners(!1),this.element.rangeTouch=null)}},{key:"listeners",value:function(e){var t=this,n=e?"addEventListener":"removeEventListener";["touchstart","touchmove","touchend"].forEach((function(e){t.element[n](e,(function(e){return t.set(e)}),!1)}))}},{key:"get",value:function(t){if(!e.enabled||!pl(t))return null;var n,i=t.target,r=t.changedTouches[0],a=parseFloat(i.getAttribute("min"))||0,o=parseFloat(i.getAttribute("max"))||100,s=parseFloat(i.getAttribute("step"))||1,l=i.getBoundingClientRect(),c=100/l.width*(this.config.thumbWidth/2)/100;return 0>(n=100/l.width*(r.clientX-l.left))?n=0:100<n&&(n=100),50>n?n-=(100-2*n)*c:50<n&&(n+=2*(n-50)*c),a+gl(n/100*(o-a),s)}},{key:"set",value:function(t){e.enabled&&pl(t)&&!t.target.disabled&&(t.preventDefault(),t.target.value=this.get(t),function(e,t){if(e&&t){var n=new Event(t,{bubbles:!0});e.dispatchEvent(n)}}(t.target,"touchend"===t.type?"change":"input"))}}],[{key:"setup",value:function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=null;if(ml(t)||ul(t)?i=Array.from(document.querySelectorAll(ul(t)?t:'input[type="range"]')):dl(t)?i=[t]:fl(t)?i=Array.from(t):hl(t)&&(i=t.filter(dl)),ml(i))return null;var r=el({},tl,{},n);if(ul(t)&&r.watch){var a=new MutationObserver((function(n){Array.from(n).forEach((function(n){Array.from(n.addedNodes).forEach((function(n){dl(n)&&nl(n,t)&&new e(n,r)}))}))}));a.observe(document.body,{childList:!0,subtree:!0})}return i.map((function(t){return new e(t,n)}))}},{key:"enabled",get:function(){return"ontouchstart"in document.documentElement}}]),e}(),kl=i.Promise,Tl=Xe("species"),Sl=function(e){var t=ie(e),n=C.f;a&&t&&!t[Tl]&&n(t,Tl,{configurable:!0,get:function(){return this}})},El=/(iphone|ipod|ipad).*applewebkit/i.test(qn),Al=i.location,Pl=i.setImmediate,xl=i.clearImmediate,Cl=i.process,Ol=i.MessageChannel,Il=i.Dispatch,Ll=0,jl={},Nl=function(e){if(jl.hasOwnProperty(e)){var t=jl[e];delete jl[e],t()}},Rl=function(e){return function(){Nl(e)}},Ml=function(e){Nl(e.data)},_l=function(e){i.postMessage(e+"",Al.protocol+"//"+Al.host)};Pl&&xl||(Pl=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return jl[++Ll]=function(){("function"==typeof e?e:Function(e)).apply(void 0,t)},vl(Ll),Ll},xl=function(e){delete jl[e]},"process"==h(Cl)?vl=function(e){Cl.nextTick(Rl(e))}:Il&&Il.now?vl=function(e){Il.now(Rl(e))}:Ol&&!El?(bl=(yl=new Ol).port2,yl.port1.onmessage=Ml,vl=rt(bl.postMessage,bl,1)):!i.addEventListener||"function"!=typeof postMessage||i.importScripts||r(_l)||"file:"===Al.protocol?vl="onreadystatechange"in T("script")?function(e){Ue.appendChild(T("script")).onreadystatechange=function(){Ue.removeChild(this),Nl(e)}}:function(e){setTimeout(Rl(e),0)}:(vl=_l,i.addEventListener("message",Ml,!1)));var Ul,Dl,Fl,ql,Hl,Bl,Vl,zl,Wl={set:Pl,clear:xl},Kl=A.f,$l=Wl.set,Yl=i.MutationObserver||i.WebKitMutationObserver,Gl=i.process,Xl=i.Promise,Ql="process"==h(Gl),Jl=Kl(i,"queueMicrotask"),Zl=Jl&&Jl.value;Zl||(Ul=function(){var e,t;for(Ql&&(e=Gl.domain)&&e.exit();Dl;){t=Dl.fn,Dl=Dl.next;try{t()}catch(e){throw Dl?ql():Fl=void 0,e}}Fl=void 0,e&&e.enter()},Ql?ql=function(){Gl.nextTick(Ul)}:Yl&&!El?(Hl=!0,Bl=document.createTextNode(""),new Yl(Ul).observe(Bl,{characterData:!0}),ql=function(){Bl.data=Hl=!Hl}):Xl&&Xl.resolve?(Vl=Xl.resolve(void 0),zl=Vl.then,ql=function(){zl.call(Vl,Ul)}):ql=function(){$l.call(i,Ul)});var ec,tc,nc,ic,rc=Zl||function(e){var t={fn:e,next:void 0};Fl&&(Fl.next=t),Dl||(Dl=t,ql()),Fl=t},ac=function(e){var t,n;this.promise=new e((function(e,i){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=i})),this.resolve=it(t),this.reject=it(n)},oc={f:function(e){return new ac(e)}},sc=function(e,t){if(P(e),g(t)&&t.constructor===e)return t;var n=oc.f(e);return(0,n.resolve)(t),n.promise},lc=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},cc=Wl.set,uc=Xe("species"),hc="Promise",fc=Z.get,dc=Z.set,pc=Z.getterFor(hc),mc=kl,gc=i.TypeError,vc=i.document,yc=i.process,bc=ie("fetch"),wc=oc.f,kc=wc,Tc="process"==h(yc),Sc=!!(vc&&vc.createEvent&&i.dispatchEvent),Ec=Ce(hc,(function(){if(!(_(mc)!==String(mc))){if(66===zn)return!0;if(!Tc&&"function"!=typeof PromiseRejectionEvent)return!0}if(zn>=51&&/native code/.test(mc))return!1;var e=mc.resolve(1),t=function(e){e((function(){}),(function(){}))};return(e.constructor={})[uc]=t,!(e.then((function(){}))instanceof t)})),Ac=Ec||!Vo((function(e){mc.all(e).catch((function(){}))})),Pc=function(e){var t;return!(!g(e)||"function"!=typeof(t=e.then))&&t},xc=function(e,t,n){if(!t.notified){t.notified=!0;var i=t.reactions;rc((function(){for(var r=t.value,a=1==t.state,o=0;i.length>o;){var s,l,c,u=i[o++],h=a?u.ok:u.fail,f=u.resolve,d=u.reject,p=u.domain;try{h?(a||(2===t.rejection&&Lc(e,t),t.rejection=1),!0===h?s=r:(p&&p.enter(),s=h(r),p&&(p.exit(),c=!0)),s===u.promise?d(gc("Promise-chain cycle")):(l=Pc(s))?l.call(s,f,d):f(s)):d(r)}catch(e){p&&!c&&p.exit(),d(e)}}t.reactions=[],t.notified=!1,n&&!t.rejection&&Oc(e,t)}))}},Cc=function(e,t,n){var r,a;Sc?((r=vc.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),i.dispatchEvent(r)):r={promise:t,reason:n},(a=i["on"+e])?a(r):"unhandledrejection"===e&&function(e,t){var n=i.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}("Unhandled promise rejection",n)},Oc=function(e,t){cc.call(i,(function(){var n,i=t.value;if(Ic(t)&&(n=lc((function(){Tc?yc.emit("unhandledRejection",i,e):Cc("unhandledrejection",e,i)})),t.rejection=Tc||Ic(t)?2:1,n.error))throw n.value}))},Ic=function(e){return 1!==e.rejection&&!e.parent},Lc=function(e,t){cc.call(i,(function(){Tc?yc.emit("rejectionHandled",e):Cc("rejectionhandled",e,t.value)}))},jc=function(e,t,n,i){return function(r){e(t,n,r,i)}},Nc=function(e,t,n,i){t.done||(t.done=!0,i&&(t=i),t.value=n,t.state=2,xc(e,t,!0))},Rc=function(e,t,n,i){if(!t.done){t.done=!0,i&&(t=i);try{if(e===n)throw gc("Promise can't be resolved itself");var r=Pc(n);r?rc((function(){var i={done:!1};try{r.call(n,jc(Rc,e,i,t),jc(Nc,e,i,t))}catch(n){Nc(e,i,n,t)}})):(t.value=n,t.state=1,xc(e,t,!1))}catch(n){Nc(e,{done:!1},n,t)}}};Ec&&(mc=function(e){ar(this,mc,hc),it(e),ec.call(this);var t=fc(this);try{e(jc(Rc,this,t),jc(Nc,this,t))}catch(e){Nc(this,t,e)}},(ec=function(e){dc(this,{type:hc,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=Er(mc.prototype,{then:function(e,t){var n=pc(this),i=wc(Bi(this,mc));return i.ok="function"!=typeof e||e,i.fail="function"==typeof t&&t,i.domain=Tc?yc.domain:void 0,n.parent=!0,n.reactions.push(i),0!=n.state&&xc(this,n,!1),i.promise},catch:function(e){return this.then(void 0,e)}}),tc=function(){var e=new ec,t=fc(e);this.promise=e,this.resolve=jc(Rc,e,t),this.reject=jc(Nc,e,t)},oc.f=wc=function(e){return e===mc||e===nc?new tc(e):kc(e)},"function"==typeof kl&&(ic=kl.prototype.then,ee(kl.prototype,"then",(function(e,t){var n=this;return new mc((function(e,t){ic.call(n,e,t)})).then(e,t)}),{unsafe:!0}),"function"==typeof bc&&Ie({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return sc(mc,bc.apply(i,arguments))}}))),Ie({global:!0,wrap:!0,forced:Ec},{Promise:mc}),nt(mc,hc,!1),Sl(hc),nc=ie(hc),Ie({target:hc,stat:!0,forced:Ec},{reject:function(e){var t=wc(this);return t.reject.call(void 0,e),t.promise}}),Ie({target:hc,stat:!0,forced:Ec},{resolve:function(e){return sc(this,e)}}),Ie({target:hc,stat:!0,forced:Ac},{all:function(e){var t=this,n=wc(t),i=n.resolve,r=n.reject,a=lc((function(){var n=it(t.resolve),a=[],o=0,s=1;ks(e,(function(e){var l=o++,c=!1;a.push(void 0),s++,n.call(t,e).then((function(e){c||(c=!0,a[l]=e,--s||i(a))}),r)})),--s||i(a)}));return a.error&&r(a.value),n.promise},race:function(e){var t=this,n=wc(t),i=n.reject,r=lc((function(){var r=it(t.resolve);ks(e,(function(e){r.call(t,e).then(n.resolve,i)}))}));return r.error&&i(r.value),n.promise}});var Mc,_c=A.f,Uc="".startsWith,Dc=Math.min,Fc=ys("startsWith"),qc=!(Fc||(Mc=_c(String.prototype,"startsWith"),!Mc||Mc.writable));Ie({target:"String",proto:!0,forced:!qc&&!Fc},{startsWith:function(e){var t=String(p(this));gs(e);var n=le(Dc(arguments.length>1?arguments[1]:void 0,t.length)),i=String(e);return Uc?Uc.call(t,i,n):t.slice(n,n+i.length)===i}});var Hc,Bc,Vc,zc=function(e){return null!=e?e.constructor:null},Wc=function(e,t){return Boolean(e&&t&&e instanceof t)},Kc=function(e){return null==e},$c=function(e){return zc(e)===Object},Yc=function(e){return zc(e)===String},Gc=function(e){return zc(e)===Function},Xc=function(e){return Array.isArray(e)},Qc=function(e){return Wc(e,NodeList)},Jc=function(e){return Kc(e)||(Yc(e)||Xc(e)||Qc(e))&&!e.length||$c(e)&&!Object.keys(e).length},Zc=Kc,eu=$c,tu=function(e){return zc(e)===Number&&!Number.isNaN(e)},nu=Yc,iu=function(e){return zc(e)===Boolean},ru=Gc,au=Xc,ou=Qc,su=function(e){return Wc(e,Element)},lu=function(e){return Wc(e,Event)},cu=function(e){return Wc(e,KeyboardEvent)},uu=function(e){return Wc(e,TextTrack)||!Kc(e)&&Yc(e.kind)},hu=function(e){return Wc(e,Promise)&&Gc(e.then)},fu=function(e){if(Wc(e,window.URL))return!0;if(!Yc(e))return!1;var t=e;e.startsWith("http://")&&e.startsWith("https://")||(t="http://".concat(e));try{return!Jc(new URL(t).hostname)}catch(e){return!1}},du=Jc,pu=(Hc=document.createElement("span"),Bc={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},Vc=Object.keys(Bc).find((function(e){return void 0!==Hc.style[e]})),!!nu(Vc)&&Bc[Vc]);function mu(e,t){setTimeout((function(){try{e.hidden=!0,e.offsetHeight,e.hidden=!1}catch(e){}}),t)}var gu={isIE:
2
  /* @cc_on!@ */
3
  !!document.documentMode,isEdge:window.navigator.userAgent.includes("Edge"),isWebkit:"WebkitAppearance"in document.documentElement.style&&!/Edge/.test(navigator.userAgent),isIPhone:/(iPhone|iPod)/gi.test(navigator.platform),isIos:/(iPad|iPhone|iPod)/gi.test(navigator.platform)},vu=function(e){return function(t,n,i,r){it(n);var a=Re(t),o=d(a),s=le(a.length),l=e?s-1:0,c=e?-1:1;if(i<2)for(;;){if(l in o){r=o[l],l+=c;break}if(l+=c,e?l<0:s<=l)throw TypeError("Reduce of empty array with no initial value")}for(;e?l>=0:s>l;l+=c)l in o&&(r=n(r,o[l],l,a));return r}},yu={left:vu(!1),right:vu(!0)}.left,bu=$t("reduce"),wu=Qt("reduce",{1:0});function ku(e,t){return t.split(".").reduce((function(e,t){return e&&e[t]}),e)}function Tu(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];if(!n.length)return e;var r=n.shift();return eu(r)?(Object.keys(r).forEach((function(t){eu(r[t])?(Object.keys(e).includes(t)||Object.assign(e,ko({},t,{})),Tu(e[t],r[t])):Object.assign(e,ko({},t,r[t]))})),Tu.apply(void 0,[e].concat(n))):e}function Su(e,t){var n=e.length?e:[e];Array.from(n).reverse().forEach((function(e,n){var i=n>0?t.cloneNode(!0):t,r=e.parentNode,a=e.nextSibling;i.appendChild(e),a?r.insertBefore(i,a):r.appendChild(i)}))}function Eu(e,t){su(e)&&!du(t)&&Object.entries(t).filter((function(e){var t=Ao(e,2)[1];return!Zc(t)})).forEach((function(t){var n=Ao(t,2),i=n[0],r=n[1];return e.setAttribute(i,r)}))}function Au(e,t,n){var i=document.createElement(e);return eu(t)&&Eu(i,t),nu(n)&&(i.innerText=n),i}function Pu(e,t,n,i){su(t)&&t.appendChild(Au(e,n,i))}function xu(e){ou(e)||au(e)?Array.from(e).forEach(xu):su(e)&&su(e.parentNode)&&e.parentNode.removeChild(e)}function Cu(e){if(su(e))for(var t=e.childNodes.length;t>0;)e.removeChild(e.lastChild),t-=1}function Ou(e,t){return su(t)&&su(t.parentNode)&&su(e)?(t.parentNode.replaceChild(e,t),e):null}function Iu(e,t){if(!nu(e)||du(e))return{};var n={},i=Tu({},t);return e.split(",").forEach((function(e){var t=e.trim(),r=t.replace(".",""),a=t.replace(/[[\]]/g,"").split("="),o=Ao(a,1)[0],s=a.length>1?a[1].replace(/["']/g,""):"";switch(t.charAt(0)){case".":nu(i.class)?n.class="".concat(i.class," ").concat(r):n.class=r;break;case"#":n.id=t.replace("#","");break;case"[":n[o]=s}})),Tu(i,n)}function Lu(e,t){if(su(e)){var n=t;iu(n)||(n=!e.hidden),e.hidden=n}}function ju(e,t,n){if(ou(e))return Array.from(e).map((function(e){return ju(e,t,n)}));if(su(e)){var i="toggle";return void 0!==n&&(i=n?"add":"remove"),e.classList[i](t),e.classList.contains(t)}return!1}function Nu(e,t){return su(e)&&e.classList.contains(t)}function Ru(e,t){var n=Element.prototype;return(n.matches||n.webkitMatchesSelector||n.mozMatchesSelector||n.msMatchesSelector||function(){return Array.from(document.querySelectorAll(t)).includes(this)}).call(e,t)}function Mu(e){return this.elements.container.querySelectorAll(e)}function _u(e){return this.elements.container.querySelector(e)}function Uu(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];su(e)&&(e.focus({preventScroll:!0}),t&&ju(e,this.config.classNames.tabFocus))}Ie({target:"Array",proto:!0,forced:!bu||!wu},{reduce:function(e){return yu(this,e,arguments.length,arguments.length>1?arguments[1]:void 0)}});var Du,Fu={"audio/ogg":"vorbis","audio/wav":"1","video/webm":"vp8, vorbis","video/mp4":"avc1.42E01E, mp4a.40.2","video/ogg":"theora"},qu={audio:"canPlayType"in document.createElement("audio"),video:"canPlayType"in document.createElement("video"),check:function(e,t,n){var i=gu.isIPhone&&n&&qu.playsinline,r=qu[e]||"html5"!==t;return{api:r,ui:r&&qu.rangeInput&&("video"!==e||!gu.isIPhone||i)}},pip:!(gu.isIPhone||!ru(Au("video").webkitSetPresentationMode)&&(!document.pictureInPictureEnabled||Au("video").disablePictureInPicture)),airplay:ru(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:"playsInline"in document.createElement("video"),mime:function(e){if(du(e))return!1;var t=Ao(e.split("/"),1)[0],n=e;if(!this.isHTML5||t!==this.type)return!1;Object.keys(Fu).includes(n)&&(n+='; codecs="'.concat(Fu[e],'"'));try{return Boolean(n&&this.media.canPlayType(n).replace(/no/,""))}catch(e){return!1}},textTracks:"textTracks"in document.createElement("video"),rangeInput:(Du=document.createElement("input"),Du.type="range","range"===Du.type),touch:"ontouchstart"in document.documentElement,transitions:!1!==pu,reducedMotion:"matchMedia"in window&&window.matchMedia("(prefers-reduced-motion)").matches},Hu=function(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){return e=!0,null}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(e){}return e}();function Bu(e,t,n){var i=this,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=arguments.length>5&&void 0!==arguments[5]&&arguments[5];if(e&&"addEventListener"in e&&!du(t)&&ru(n)){var s=t.split(" "),l=o;Hu&&(l={passive:a,capture:o}),s.forEach((function(t){i&&i.eventListeners&&r&&i.eventListeners.push({element:e,type:t,callback:n,options:l}),e[r?"addEventListener":"removeEventListener"](t,n,l)}))}}function Vu(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];Bu.call(this,e,t,n,!0,i,r)}function zu(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];Bu.call(this,e,t,n,!1,i,r)}function Wu(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2?arguments[2]:void 0,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=function o(){zu(e,n,o,r,a);for(var s=arguments.length,l=new Array(s),c=0;c<s;c++)l[c]=arguments[c];i.apply(t,l)};Bu.call(this,e,n,o,!0,r,a)}function Ku(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(su(e)&&!du(t)){var r=new CustomEvent(t,{bubbles:n,detail:So(So({},i),{},{plyr:this})});e.dispatchEvent(r)}}function $u(){this&&this.eventListeners&&(this.eventListeners.forEach((function(e){var t=e.element,n=e.type,i=e.callback,r=e.options;t.removeEventListener(n,i,r)})),this.eventListeners=[])}function Yu(){var e=this;return new Promise((function(t){return e.ready?setTimeout(t,0):Vu.call(e,e.elements.container,"ready",t)})).then((function(){}))}function Gu(e){hu(e)&&e.then(null,(function(){}))}function Xu(e){return!!(au(e)||nu(e)&&e.includes(":"))&&(au(e)?e:e.split(":")).map(Number).every(tu)}function Qu(e){if(!au(e)||!e.every(tu))return null;var t=Ao(e,2),n=t[0],i=t[1],r=function e(t,n){return 0===n?t:e(n,t%n)}(n,i);return[n/r,i/r]}function Ju(e){var t=function(e){return Xu(e)?e.split(":").map(Number):null},n=t(e);if(null===n&&(n=t(this.config.ratio)),null===n&&!du(this.embed)&&au(this.embed.ratio)&&(n=this.embed.ratio),null===n&&this.isHTML5){var i=this.media;n=Qu([i.videoWidth,i.videoHeight])}return n}function Zu(e){if(!this.isVideo)return{};var t=this.elements.wrapper,n=Ju.call(this,e),i=Ao(au(n)?n:[0,0],2),r=100/i[0]*i[1];if(t.style.paddingBottom="".concat(r,"%"),this.isVimeo&&!this.config.vimeo.premium&&this.supported.ui){var a=100/this.media.offsetWidth*parseInt(window.getComputedStyle(this.media).paddingBottom,10),o=(a-r)/(a/50);this.media.style.transform="translateY(-".concat(o,"%)")}else this.isHTML5&&t.classList.toggle(this.config.classNames.videoFixedRatio,null!==n);return{padding:r,ratio:n}}var eh={getSources:function(){var e=this;return this.isHTML5?Array.from(this.media.querySelectorAll("source")).filter((function(t){var n=t.getAttribute("type");return!!du(n)||qu.mime.call(e,n)})):[]},getQualityOptions:function(){return this.config.quality.forced?this.config.quality.options:eh.getSources.call(this).map((function(e){return Number(e.getAttribute("size"))})).filter(Boolean)},setup:function(){if(this.isHTML5){var e=this;e.options.speed=e.config.speed.options,du(this.config.ratio)||Zu.call(e),Object.defineProperty(e.media,"quality",{get:function(){var t=eh.getSources.call(e).find((function(t){return t.getAttribute("src")===e.source}));return t&&Number(t.getAttribute("size"))},set:function(t){if(e.quality!==t){if(e.config.quality.forced&&ru(e.config.quality.onChange))e.config.quality.onChange(t);else{var n=eh.getSources.call(e).find((function(e){return Number(e.getAttribute("size"))===t}));if(!n)return;var i=e.media,r=i.currentTime,a=i.paused,o=i.preload,s=i.readyState,l=i.playbackRate;e.media.src=n.getAttribute("src"),("none"!==o||s)&&(e.once("loadedmetadata",(function(){e.speed=l,e.currentTime=r,a||Gu(e.play())})),e.media.load())}Ku.call(e,e.media,"qualitychange",!1,{quality:t})}}})}},cancelRequests:function(){this.isHTML5&&(xu(eh.getSources.call(this)),this.media.setAttribute("src",this.config.blankVideo),this.media.load(),this.debug.log("Cancelled network requests"))}};function th(e){return au(e)?e.filter((function(t,n){return e.indexOf(t)===n})):e}var nh=C.f,ih=ye.f,rh=Z.set,ah=Xe("match"),oh=i.RegExp,sh=oh.prototype,lh=/a/g,ch=/a/g,uh=new oh(lh)!==lh,hh=oi.UNSUPPORTED_Y;if(a&&Ce("RegExp",!uh||hh||r((function(){return ch[ah]=!1,oh(lh)!=lh||oh(ch)==ch||"/a/i"!=oh(lh,"i")})))){for(var fh=function(e,t){var n,i=this instanceof fh,r=qi(e),a=void 0===t;if(!i&&r&&e.constructor===fh&&a)return e;uh?r&&!a&&(e=e.source):e instanceof fh&&(a&&(t=ri.call(e)),e=e.source),hh&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var o=Xo(uh?new oh(e,t):oh(e,t),i?this:sh,fh);return hh&&n&&rh(o,{sticky:n}),o},dh=function(e){e in fh||nh(fh,e,{configurable:!0,get:function(){return oh[e]},set:function(t){oh[e]=t}})},ph=ih(oh),mh=0;ph.length>mh;)dh(ph[mh++]);sh.constructor=fh,fh.prototype=sh,ee(i,"RegExp",fh)}function gh(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return du(e)?e:e.toString().replace(/{(\d+)}/g,(function(e,t){return n[t].toString()}))}Sl("RegExp");var vh=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return e.replace(new RegExp(t.toString().replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1"),"g"),n.toString())},yh=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.toString().replace(/\w\S*/g,(function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()}))};function bh(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.toString();return t=vh(t,"-"," "),t=vh(t,"_"," "),t=yh(t),vh(t," ","")}function wh(e){var t=document.createElement("div");return t.appendChild(e),t.innerHTML}var kh={pip:"PIP",airplay:"AirPlay",html5:"HTML5",vimeo:"Vimeo",youtube:"YouTube"},Th=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(du(e)||du(t))return"";var n=ku(t.i18n,e);if(du(n))return Object.keys(kh).includes(e)?kh[e]:"";var i={"{seektime}":t.seekTime,"{title}":t.title};return Object.entries(i).forEach((function(e){var t=Ao(e,2),i=t[0],r=t[1];n=vh(n,i,r)})),n},Sh=function(){function e(t){yo(this,e),this.enabled=t.config.storage.enabled,this.key=t.config.storage.key}return wo(e,[{key:"get",value:function(t){if(!e.supported||!this.enabled)return null;var n=window.localStorage.getItem(this.key);if(du(n))return null;var i=JSON.parse(n);return nu(t)&&t.length?i[t]:i}},{key:"set",value:function(t){if(e.supported&&this.enabled&&eu(t)){var n=this.get();du(n)&&(n={}),Tu(n,t),window.localStorage.setItem(this.key,JSON.stringify(n))}}}],[{key:"supported",get:function(){try{if(!("localStorage"in window))return!1;return window.localStorage.setItem("___test","___test"),window.localStorage.removeItem("___test"),!0}catch(e){return!1}}}]),e}();function Eh(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"text";return new Promise((function(n,i){try{var r=new XMLHttpRequest;if(!("withCredentials"in r))return;r.addEventListener("load",(function(){if("text"===t)try{n(JSON.parse(r.responseText))}catch(e){n(r.responseText)}else n(r.response)})),r.addEventListener("error",(function(){throw new Error(r.status)})),r.open("GET",e,!0),r.responseType=t,r.send()}catch(e){i(e)}}))}function Ah(e,t){if(nu(e)){var n=nu(t),i=function(){return null!==document.getElementById(t)},r=function(e,t){e.innerHTML=t,n&&i()||document.body.insertAdjacentElement("afterbegin",e)};if(!n||!i()){var a=Sh.supported,o=document.createElement("div");if(o.setAttribute("hidden",""),n&&o.setAttribute("id",t),a){var s=window.localStorage.getItem("".concat("cache","-").concat(t));if(null!==s){var l=JSON.parse(s);r(o,l.content)}}Eh(e).then((function(e){du(e)||(a&&window.localStorage.setItem("".concat("cache","-").concat(t),JSON.stringify({content:e})),r(o,e))})).catch((function(){}))}}}var Ph=Math.ceil,xh=Math.floor;Ie({target:"Math",stat:!0},{trunc:function(e){return(e>0?xh:Ph)(e)}});var Ch=function(e){return Math.trunc(e/60/60%60,10)},Oh=function(e){return Math.trunc(e/60%60,10)},Ih=function(e){return Math.trunc(e%60,10)};function Lh(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!tu(e))return Lh(void 0,t,n);var i=function(e){return"0".concat(e).slice(-2)},r=Ch(e),a=Oh(e),o=Ih(e);return r=t||r>0?"".concat(r,":"):"","".concat(n&&e>0?"-":"").concat(r).concat(i(a),":").concat(i(o))}var jh={getIconUrl:function(){var e=new URL(this.config.iconUrl,window.location).host!==window.location.host||gu.isIE&&!window.svg4everybody;return{url:this.config.iconUrl,cors:e}},findElements:function(){try{return this.elements.controls=_u.call(this,this.config.selectors.controls.wrapper),this.elements.buttons={play:Mu.call(this,this.config.selectors.buttons.play),pause:_u.call(this,this.config.selectors.buttons.pause),restart:_u.call(this,this.config.selectors.buttons.restart),rewind:_u.call(this,this.config.selectors.buttons.rewind),fastForward:_u.call(this,this.config.selectors.buttons.fastForward),mute:_u.call(this,this.config.selectors.buttons.mute),pip:_u.call(this,this.config.selectors.buttons.pip),airplay:_u.call(this,this.config.selectors.buttons.airplay),settings:_u.call(this,this.config.selectors.buttons.settings),captions:_u.call(this,this.config.selectors.buttons.captions),fullscreen:_u.call(this,this.config.selectors.buttons.fullscreen)},this.elements.progress=_u.call(this,this.config.selectors.progress),this.elements.inputs={seek:_u.call(this,this.config.selectors.inputs.seek),volume:_u.call(this,this.config.selectors.inputs.volume)},this.elements.display={buffer:_u.call(this,this.config.selectors.display.buffer),currentTime:_u.call(this,this.config.selectors.display.currentTime),duration:_u.call(this,this.config.selectors.display.duration)},su(this.elements.progress)&&(this.elements.display.seekTooltip=this.elements.progress.querySelector(".".concat(this.config.classNames.tooltip))),!0}catch(e){return this.debug.warn("It looks like there is a problem with your custom controls HTML",e),this.toggleNativeControls(!0),!1}},createIcon:function(e,t){var n=jh.getIconUrl.call(this),i="".concat(n.cors?"":n.url,"#").concat(this.config.iconPrefix),r=document.createElementNS("http://www.w3.org/2000/svg","svg");Eu(r,Tu(t,{"aria-hidden":"true",focusable:"false"}));var a=document.createElementNS("http://www.w3.org/2000/svg","use"),o="".concat(i,"-").concat(e);return"href"in a&&a.setAttributeNS("http://www.w3.org/1999/xlink","href",o),a.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o),r.appendChild(a),r},createLabel:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Th(e,this.config),i=So(So({},t),{},{class:[t.class,this.config.classNames.hidden].filter(Boolean).join(" ")});return Au("span",i,n)},createBadge:function(e){if(du(e))return null;var t=Au("span",{class:this.config.classNames.menu.value});return t.appendChild(Au("span",{class:this.config.classNames.menu.badge},e)),t},createButton:function(e,t){var n=this,i=Tu({},t),r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.toString();return(t=bh(t)).charAt(0).toLowerCase()+t.slice(1)}(e),a={element:"button",toggle:!1,label:null,icon:null,labelPressed:null,iconPressed:null};switch(["element","icon","label"].forEach((function(e){Object.keys(i).includes(e)&&(a[e]=i[e],delete i[e])})),"button"!==a.element||Object.keys(i).includes("type")||(i.type="button"),Object.keys(i).includes("class")?i.class.split(" ").some((function(e){return e===n.config.classNames.control}))||Tu(i,{class:"".concat(i.class," ").concat(this.config.classNames.control)}):i.class=this.config.classNames.control,e){case"play":a.toggle=!0,a.label="play",a.labelPressed="pause",a.icon="play",a.iconPressed="pause";break;case"mute":a.toggle=!0,a.label="mute",a.labelPressed="unmute",a.icon="volume",a.iconPressed="muted";break;case"captions":a.toggle=!0,a.label="enableCaptions",a.labelPressed="disableCaptions",a.icon="captions-off",a.iconPressed="captions-on";break;case"fullscreen":a.toggle=!0,a.label="enterFullscreen",a.labelPressed="exitFullscreen",a.icon="enter-fullscreen",a.iconPressed="exit-fullscreen";break;case"play-large":i.class+=" ".concat(this.config.classNames.control,"--overlaid"),r="play",a.label="play",a.icon="play";break;default:du(a.label)&&(a.label=r),du(a.icon)&&(a.icon=e)}var o=Au(a.element);return a.toggle?(o.appendChild(jh.createIcon.call(this,a.iconPressed,{class:"icon--pressed"})),o.appendChild(jh.createIcon.call(this,a.icon,{class:"icon--not-pressed"})),o.appendChild(jh.createLabel.call(this,a.labelPressed,{class:"label--pressed"})),o.appendChild(jh.createLabel.call(this,a.label,{class:"label--not-pressed"}))):(o.appendChild(jh.createIcon.call(this,a.icon)),o.appendChild(jh.createLabel.call(this,a.label))),Tu(i,Iu(this.config.selectors.buttons[r],i)),Eu(o,i),"play"===r?(au(this.elements.buttons[r])||(this.elements.buttons[r]=[]),this.elements.buttons[r].push(o)):this.elements.buttons[r]=o,o},createRange:function(e,t){var n=Au("input",Tu(Iu(this.config.selectors.inputs[e]),{type:"range",min:0,max:100,step:.01,value:0,autocomplete:"off",role:"slider","aria-label":Th(e,this.config),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":0},t));return this.elements.inputs[e]=n,jh.updateRangeFill.call(this,n),wl.setup(n),n},createProgress:function(e,t){var n=Au("progress",Tu(Iu(this.config.selectors.display[e]),{min:0,max:100,value:0,role:"progressbar","aria-hidden":!0},t));if("volume"!==e){n.appendChild(Au("span",null,"0"));var i={played:"played",buffer:"buffered"}[e],r=i?Th(i,this.config):"";n.innerText="% ".concat(r.toLowerCase())}return this.elements.display[e]=n,n},createTime:function(e,t){var n=Iu(this.config.selectors.display[e],t),i=Au("div",Tu(n,{class:"".concat(n.class?n.class:""," ").concat(this.config.classNames.display.time," ").trim(),"aria-label":Th(e,this.config)}),"00:00");return this.elements.display[e]=i,i},bindMenuItemShortcuts:function(e,t){var n=this;Vu.call(this,e,"keydown keyup",(function(i){if([32,38,39,40].includes(i.which)&&(i.preventDefault(),i.stopPropagation(),"keydown"!==i.type)){var r,a=Ru(e,'[role="menuitemradio"]');if(!a&&[32,39].includes(i.which))jh.showMenuPanel.call(n,t,!0);else 32!==i.which&&(40===i.which||a&&39===i.which?(r=e.nextElementSibling,su(r)||(r=e.parentNode.firstElementChild)):(r=e.previousElementSibling,su(r)||(r=e.parentNode.lastElementChild)),Uu.call(n,r,!0))}}),!1),Vu.call(this,e,"keyup",(function(e){13===e.which&&jh.focusFirstMenuItem.call(n,null,!0)}))},createMenuItem:function(e){var t=this,n=e.value,i=e.list,r=e.type,a=e.title,o=e.badge,s=void 0===o?null:o,l=e.checked,c=void 0!==l&&l,u=Iu(this.config.selectors.inputs[r]),h=Au("button",Tu(u,{type:"button",role:"menuitemradio",class:"".concat(this.config.classNames.control," ").concat(u.class?u.class:"").trim(),"aria-checked":c,value:n})),f=Au("span");f.innerHTML=a,su(s)&&f.appendChild(s),h.appendChild(f),Object.defineProperty(h,"checked",{enumerable:!0,get:function(){return"true"===h.getAttribute("aria-checked")},set:function(e){e&&Array.from(h.parentNode.children).filter((function(e){return Ru(e,'[role="menuitemradio"]')})).forEach((function(e){return e.setAttribute("aria-checked","false")})),h.setAttribute("aria-checked",e?"true":"false")}}),this.listeners.bind(h,"click keyup",(function(e){if(!cu(e)||32===e.which){switch(e.preventDefault(),e.stopPropagation(),h.checked=!0,r){case"language":t.currentTrack=Number(n);break;case"quality":t.quality=n;break;case"speed":t.speed=parseFloat(n)}jh.showMenuPanel.call(t,"home",cu(e))}}),r,!1),jh.bindMenuItemShortcuts.call(this,h,r),i.appendChild(h)},formatTime:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!tu(e))return e;var n=Ch(this.duration)>0;return Lh(e,n,t)},updateTimeDisplay:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];su(e)&&tu(t)&&(e.innerText=jh.formatTime(t,n))},updateVolume:function(){this.supported.ui&&(su(this.elements.inputs.volume)&&jh.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),su(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;su(e)&&(e.value=t,jh.updateRangeFill.call(this,e))},updateProgress:function(e){var t=this;if(this.supported.ui&&lu(e)){var n=0;if(e)switch(e.type){case"timeupdate":case"seeking":case"seeked":n=function(e,t){return 0===e||0===t||Number.isNaN(e)||Number.isNaN(t)?0:(e/t*100).toFixed(2)}(this.currentTime,this.duration),"timeupdate"===e.type&&jh.setRange.call(this,this.elements.inputs.seek,n);break;case"playing":case"progress":!function(e,n){var i=tu(n)?n:0,r=su(e)?e:t.elements.display.buffer;if(su(r)){r.value=i;var a=r.getElementsByTagName("span")[0];su(a)&&(a.childNodes[0].nodeValue=i)}}(this.elements.display.buffer,100*this.buffered)}}},updateRangeFill:function(e){var t=lu(e)?e.target:e;if(su(t)&&"range"===t.getAttribute("type")){if(Ru(t,this.config.selectors.inputs.seek)){t.setAttribute("aria-valuenow",this.currentTime);var n=jh.formatTime(this.currentTime),i=jh.formatTime(this.duration),r=Th("seekLabel",this.config);t.setAttribute("aria-valuetext",r.replace("{currentTime}",n).replace("{duration}",i))}else if(Ru(t,this.config.selectors.inputs.volume)){var a=100*t.value;t.setAttribute("aria-valuenow",a),t.setAttribute("aria-valuetext","".concat(a.toFixed(1),"%"))}else t.setAttribute("aria-valuenow",t.value);gu.isWebkit&&t.style.setProperty("--value","".concat(t.value/t.max*100,"%"))}},updateSeekTooltip:function(e){var t=this;if(this.config.tooltips.seek&&su(this.elements.inputs.seek)&&su(this.elements.display.seekTooltip)&&0!==this.duration){var n="".concat(this.config.classNames.tooltip,"--visible"),i=function(e){return ju(t.elements.display.seekTooltip,n,e)};if(this.touch)i(!1);else{var r=0,a=this.elements.progress.getBoundingClientRect();if(lu(e))r=100/a.width*(e.pageX-a.left);else{if(!Nu(this.elements.display.seekTooltip,n))return;r=parseFloat(this.elements.display.seekTooltip.style.left,10)}r<0?r=0:r>100&&(r=100),jh.updateTimeDisplay.call(this,this.elements.display.seekTooltip,this.duration/100*r),this.elements.display.seekTooltip.style.left="".concat(r,"%"),lu(e)&&["mouseenter","mouseleave"].includes(e.type)&&i("mouseenter"===e.type)}}},timeUpdate:function(e){var t=!su(this.elements.display.duration)&&this.config.invertTime;jh.updateTimeDisplay.call(this,this.elements.display.currentTime,t?this.duration-this.currentTime:this.currentTime,t),e&&"timeupdate"===e.type&&this.media.seeking||jh.updateProgress.call(this,e)},durationUpdate:function(){if(this.supported.ui&&(this.config.invertTime||!this.currentTime)){if(this.duration>=Math.pow(2,32))return Lu(this.elements.display.currentTime,!0),void Lu(this.elements.progress,!0);su(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute("aria-valuemax",this.duration);var e=su(this.elements.display.duration);!e&&this.config.displayDuration&&this.paused&&jh.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),e&&jh.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),jh.updateSeekTooltip.call(this)}},toggleMenuButton:function(e,t){Lu(this.elements.settings.buttons[e],!t)},updateSetting:function(e,t,n){var i=this.elements.settings.panels[e],r=null,a=t;if("captions"===e)r=this.currentTrack;else{if(r=du(n)?this[e]:n,du(r)&&(r=this.config[e].default),!du(this.options[e])&&!this.options[e].includes(r))return void this.debug.warn("Unsupported value of '".concat(r,"' for ").concat(e));if(!this.config[e].options.includes(r))return void this.debug.warn("Disabled value of '".concat(r,"' for ").concat(e))}if(su(a)||(a=i&&i.querySelector('[role="menu"]')),su(a)){this.elements.settings.buttons[e].querySelector(".".concat(this.config.classNames.menu.value)).innerHTML=jh.getLabel.call(this,e,r);var o=a&&a.querySelector('[value="'.concat(r,'"]'));su(o)&&(o.checked=!0)}},getLabel:function(e,t){switch(e){case"speed":return 1===t?Th("normal",this.config):"".concat(t,"&times;");case"quality":if(tu(t)){var n=Th("qualityLabel.".concat(t),this.config);return n.length?n:"".concat(t,"p")}return yh(t);case"captions":return Mh.getLabel.call(this);default:return null}},setQualityMenu:function(e){var t=this;if(su(this.elements.settings.panels.quality)){var n=this.elements.settings.panels.quality.querySelector('[role="menu"]');au(e)&&(this.options.quality=th(e).filter((function(e){return t.config.quality.options.includes(e)})));var i=!du(this.options.quality)&&this.options.quality.length>1;if(jh.toggleMenuButton.call(this,"quality",i),Cu(n),jh.checkMenu.call(this),i){var r=function(e){var n=Th("qualityBadge.".concat(e),t.config);return n.length?jh.createBadge.call(t,n):null};this.options.quality.sort((function(e,n){var i=t.config.quality.options;return i.indexOf(e)>i.indexOf(n)?1:-1})).forEach((function(e){jh.createMenuItem.call(t,{value:e,list:n,type:"quality",title:jh.getLabel.call(t,"quality",e),badge:r(e)})})),jh.updateSetting.call(this,"quality",n)}}},setCaptionsMenu:function(){var e=this;if(su(this.elements.settings.panels.captions)){var t=this.elements.settings.panels.captions.querySelector('[role="menu"]'),n=Mh.getTracks.call(this),i=Boolean(n.length);if(jh.toggleMenuButton.call(this,"captions",i),Cu(t),jh.checkMenu.call(this),i){var r=n.map((function(n,i){return{value:i,checked:e.captions.toggled&&e.currentTrack===i,title:Mh.getLabel.call(e,n),badge:n.language&&jh.createBadge.call(e,n.language.toUpperCase()),list:t,type:"language"}}));r.unshift({value:-1,checked:!this.captions.toggled,title:Th("disabled",this.config),list:t,type:"language"}),r.forEach(jh.createMenuItem.bind(this)),jh.updateSetting.call(this,"captions",t)}}},setSpeedMenu:function(){var e=this;if(su(this.elements.settings.panels.speed)){var t=this.elements.settings.panels.speed.querySelector('[role="menu"]');this.options.speed=this.options.speed.filter((function(t){return t>=e.minimumSpeed&&t<=e.maximumSpeed}));var n=!du(this.options.speed)&&this.options.speed.length>1;jh.toggleMenuButton.call(this,"speed",n),Cu(t),jh.checkMenu.call(this),n&&(this.options.speed.forEach((function(n){jh.createMenuItem.call(e,{value:n,list:t,type:"speed",title:jh.getLabel.call(e,"speed",n)})})),jh.updateSetting.call(this,"speed",t))}},checkMenu:function(){var e=this.elements.settings.buttons,t=!du(e)&&Object.values(e).some((function(e){return!e.hidden}));Lu(this.elements.settings.menu,!t)},focusFirstMenuItem:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this.elements.settings.popup.hidden){var n=e;su(n)||(n=Object.values(this.elements.settings.panels).find((function(e){return!e.hidden})));var i=n.querySelector('[role^="menuitem"]');Uu.call(this,i,t)}},toggleMenu:function(e){var t=this.elements.settings.popup,n=this.elements.buttons.settings;if(su(t)&&su(n)){var i=t.hidden,r=i;if(iu(e))r=e;else if(cu(e)&&27===e.which)r=!1;else if(lu(e)){var a=ru(e.composedPath)?e.composedPath()[0]:e.target,o=t.contains(a);if(o||!o&&e.target!==n&&r)return}n.setAttribute("aria-expanded",r),Lu(t,!r),ju(this.elements.container,this.config.classNames.menu.open,r),r&&cu(e)?jh.focusFirstMenuItem.call(this,null,!0):r||i||Uu.call(this,n,cu(e))}},getMenuSize:function(e){var t=e.cloneNode(!0);t.style.position="absolute",t.style.opacity=0,t.removeAttribute("hidden"),e.parentNode.appendChild(t);var n=t.scrollWidth,i=t.scrollHeight;return xu(t),{width:n,height:i}},showMenuPanel:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.elements.container.querySelector("#plyr-settings-".concat(this.id,"-").concat(t));if(su(i)){var r=i.parentNode,a=Array.from(r.children).find((function(e){return!e.hidden}));if(qu.transitions&&!qu.reducedMotion){r.style.width="".concat(a.scrollWidth,"px"),r.style.height="".concat(a.scrollHeight,"px");var o=jh.getMenuSize.call(this,i),s=function t(n){n.target===r&&["width","height"].includes(n.propertyName)&&(r.style.width="",r.style.height="",zu.call(e,r,pu,t))};Vu.call(this,r,pu,s),r.style.width="".concat(o.width,"px"),r.style.height="".concat(o.height,"px")}Lu(a,!0),Lu(i,!1),jh.focusFirstMenuItem.call(this,i,n)}},setDownloadUrl:function(){var e=this.elements.buttons.download;su(e)&&e.setAttribute("href",this.download)},create:function(e){var t=this,n=jh.bindMenuItemShortcuts,i=jh.createButton,r=jh.createProgress,a=jh.createRange,o=jh.createTime,s=jh.setQualityMenu,l=jh.setSpeedMenu,c=jh.showMenuPanel;this.elements.controls=null,au(this.config.controls)&&this.config.controls.includes("play-large")&&this.elements.container.appendChild(i.call(this,"play-large"));var u=Au("div",Iu(this.config.selectors.controls.wrapper));this.elements.controls=u;var h={class:"plyr__controls__item"};return th(au(this.config.controls)?this.config.controls:[]).forEach((function(s){if("restart"===s&&u.appendChild(i.call(t,"restart",h)),"rewind"===s&&u.appendChild(i.call(t,"rewind",h)),"play"===s&&u.appendChild(i.call(t,"play",h)),"fast-forward"===s&&u.appendChild(i.call(t,"fast-forward",h)),"progress"===s){var l=Au("div",{class:"".concat(h.class," plyr__progress__container")}),f=Au("div",Iu(t.config.selectors.progress));if(f.appendChild(a.call(t,"seek",{id:"plyr-seek-".concat(e.id)})),f.appendChild(r.call(t,"buffer")),t.config.tooltips.seek){var d=Au("span",{class:t.config.classNames.tooltip},"00:00");f.appendChild(d),t.elements.display.seekTooltip=d}t.elements.progress=f,l.appendChild(t.elements.progress),u.appendChild(l)}if("current-time"===s&&u.appendChild(o.call(t,"currentTime",h)),"duration"===s&&u.appendChild(o.call(t,"duration",h)),"mute"===s||"volume"===s){var p=t.elements.volume;if(su(p)&&u.contains(p)||(p=Au("div",Tu({},h,{class:"".concat(h.class," plyr__volume").trim()})),t.elements.volume=p,u.appendChild(p)),"mute"===s&&p.appendChild(i.call(t,"mute")),"volume"===s&&!gu.isIos){var m={max:1,step:.05,value:t.config.volume};p.appendChild(a.call(t,"volume",Tu(m,{id:"plyr-volume-".concat(e.id)})))}}if("captions"===s&&u.appendChild(i.call(t,"captions",h)),"settings"===s&&!du(t.config.settings)){var g=Au("div",Tu({},h,{class:"".concat(h.class," plyr__menu").trim(),hidden:""}));g.appendChild(i.call(t,"settings",{"aria-haspopup":!0,"aria-controls":"plyr-settings-".concat(e.id),"aria-expanded":!1}));var v=Au("div",{class:"plyr__menu__container",id:"plyr-settings-".concat(e.id),hidden:""}),y=Au("div"),b=Au("div",{id:"plyr-settings-".concat(e.id,"-home")}),w=Au("div",{role:"menu"});b.appendChild(w),y.appendChild(b),t.elements.settings.panels.home=b,t.config.settings.forEach((function(i){var r=Au("button",Tu(Iu(t.config.selectors.buttons.settings),{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--forward"),role:"menuitem","aria-haspopup":!0,hidden:""}));n.call(t,r,i),Vu.call(t,r,"click",(function(){c.call(t,i,!1)}));var a=Au("span",null,Th(i,t.config)),o=Au("span",{class:t.config.classNames.menu.value});o.innerHTML=e[i],a.appendChild(o),r.appendChild(a),w.appendChild(r);var s=Au("div",{id:"plyr-settings-".concat(e.id,"-").concat(i),hidden:""}),l=Au("button",{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--back")});l.appendChild(Au("span",{"aria-hidden":!0},Th(i,t.config))),l.appendChild(Au("span",{class:t.config.classNames.hidden},Th("menuBack",t.config))),Vu.call(t,s,"keydown",(function(e){37===e.which&&(e.preventDefault(),e.stopPropagation(),c.call(t,"home",!0))}),!1),Vu.call(t,l,"click",(function(){c.call(t,"home",!1)})),s.appendChild(l),s.appendChild(Au("div",{role:"menu"})),y.appendChild(s),t.elements.settings.buttons[i]=r,t.elements.settings.panels[i]=s})),v.appendChild(y),g.appendChild(v),u.appendChild(g),t.elements.settings.popup=v,t.elements.settings.menu=g}if("pip"===s&&qu.pip&&u.appendChild(i.call(t,"pip",h)),"airplay"===s&&qu.airplay&&u.appendChild(i.call(t,"airplay",h)),"download"===s){var k=Tu({},h,{element:"a",href:t.download,target:"_blank"});t.isHTML5&&(k.download="");var T=t.config.urls.download;!fu(T)&&t.isEmbed&&Tu(k,{icon:"logo-".concat(t.provider),label:t.provider}),u.appendChild(i.call(t,"download",k))}"fullscreen"===s&&u.appendChild(i.call(t,"fullscreen",h))})),this.isHTML5&&s.call(this,eh.getQualityOptions.call(this)),l.call(this),u},inject:function(){var e=this;if(this.config.loadSprite){var t=jh.getIconUrl.call(this);t.cors&&Ah(t.url,"sprite-plyr")}this.id=Math.floor(1e4*Math.random());var n=null;this.elements.controls=null;var i={id:this.id,seektime:this.config.seekTime,title:this.config.title},r=!0;ru(this.config.controls)&&(this.config.controls=this.config.controls.call(this,i)),this.config.controls||(this.config.controls=[]),su(this.config.controls)||nu(this.config.controls)?n=this.config.controls:(n=jh.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality,captions:Mh.getLabel.call(this)}),r=!1);var a,o;if(r&&nu(this.config.controls)&&(a=n,Object.entries(i).forEach((function(e){var t=Ao(e,2),n=t[0],i=t[1];a=vh(a,"{".concat(n,"}"),i)})),n=a),nu(this.config.selectors.controls.container)&&(o=document.querySelector(this.config.selectors.controls.container)),su(o)||(o=this.elements.container),o[su(n)?"insertAdjacentElement":"insertAdjacentHTML"]("afterbegin",n),su(this.elements.controls)||jh.findElements.call(this),!du(this.elements.buttons)){var s=function(t){var n=e.config.classNames.controlPressed;Object.defineProperty(t,"pressed",{enumerable:!0,get:function(){return Nu(t,n)},set:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];ju(t,n,e)}})};Object.values(this.elements.buttons).filter(Boolean).forEach((function(e){au(e)||ou(e)?Array.from(e).filter(Boolean).forEach(s):s(e)}))}if(gu.isEdge&&mu(o),this.config.tooltips.controls){var l=this.config,c=l.classNames,u=l.selectors,h="".concat(u.controls.wrapper," ").concat(u.labels," .").concat(c.hidden),f=Mu.call(this,h);Array.from(f).forEach((function(t){ju(t,e.config.classNames.hidden,!1),ju(t,e.config.classNames.tooltip,!0)}))}}};function Nh(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=e;if(t){var i=document.createElement("a");i.href=n,n=i.href}try{return new URL(n)}catch(e){return null}}function Rh(e){var t=new URLSearchParams;return eu(e)&&Object.entries(e).forEach((function(e){var n=Ao(e,2),i=n[0],r=n[1];t.set(i,r)})),t}var Mh={setup:function(){if(this.supported.ui)if(!this.isVideo||this.isYouTube||this.isHTML5&&!qu.textTracks)au(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&jh.setCaptionsMenu.call(this);else{if(su(this.elements.captions)||(this.elements.captions=Au("div",Iu(this.config.selectors.captions)),function(e,t){su(e)&&su(t)&&t.parentNode.insertBefore(e,t.nextSibling)}(this.elements.captions,this.elements.wrapper)),gu.isIE&&window.URL){var e=this.media.querySelectorAll("track");Array.from(e).forEach((function(e){var t=e.getAttribute("src"),n=Nh(t);null!==n&&n.hostname!==window.location.href.hostname&&["http:","https:"].includes(n.protocol)&&Eh(t,"blob").then((function(t){e.setAttribute("src",window.URL.createObjectURL(t))})).catch((function(){xu(e)}))}))}var t=th((navigator.languages||[navigator.language||navigator.userLanguage||"en"]).map((function(e){return e.split("-")[0]}))),n=(this.storage.get("language")||this.config.captions.language||"auto").toLowerCase();if("auto"===n)n=Ao(t,1)[0];var i=this.storage.get("captions");if(iu(i)||(i=this.config.captions.active),Object.assign(this.captions,{toggled:!1,active:i,language:n,languages:t}),this.isHTML5){var r=this.config.captions.update?"addtrack removetrack":"removetrack";Vu.call(this,this.media.textTracks,r,Mh.update.bind(this))}setTimeout(Mh.update.bind(this),0)}},update:function(){var e=this,t=Mh.getTracks.call(this,!0),n=this.captions,i=n.active,r=n.language,a=n.meta,o=n.currentTrackNode,s=Boolean(t.find((function(e){return e.language===r})));this.isHTML5&&this.isVideo&&t.filter((function(e){return!a.get(e)})).forEach((function(t){e.debug.log("Track added",t),a.set(t,{default:"showing"===t.mode}),"showing"===t.mode&&(t.mode="hidden"),Vu.call(e,t,"cuechange",(function(){return Mh.updateCues.call(e)}))})),(s&&this.language!==r||!t.includes(o))&&(Mh.setLanguage.call(this,r),Mh.toggle.call(this,i&&s)),ju(this.elements.container,this.config.classNames.captions.enabled,!du(t)),au(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&jh.setCaptionsMenu.call(this)},toggle:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.supported.ui){var i=this.captions.toggled,r=this.config.classNames.captions.active,a=Zc(e)?!i:e;if(a!==i){if(n||(this.captions.active=a,this.storage.set({captions:a})),!this.language&&a&&!n){var o=Mh.getTracks.call(this),s=Mh.findTrack.call(this,[this.captions.language].concat(Po(this.captions.languages)),!0);return this.captions.language=s.language,void Mh.set.call(this,o.indexOf(s))}this.elements.buttons.captions&&(this.elements.buttons.captions.pressed=a),ju(this.elements.container,r,a),this.captions.toggled=a,jh.updateSetting.call(this,"captions"),Ku.call(this,this.media,a?"captionsenabled":"captionsdisabled")}setTimeout((function(){a&&t.captions.toggled&&(t.captions.currentTrackNode.mode="hidden")}))}},set:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=Mh.getTracks.call(this);if(-1!==e)if(tu(e))if(e in n){if(this.captions.currentTrack!==e){this.captions.currentTrack=e;var i=n[e],r=i||{},a=r.language;this.captions.currentTrackNode=i,jh.updateSetting.call(this,"captions"),t||(this.captions.language=a,this.storage.set({language:a})),this.isVimeo&&this.embed.enableTextTrack(a),Ku.call(this,this.media,"languagechange")}Mh.toggle.call(this,!0,t),this.isHTML5&&this.isVideo&&Mh.updateCues.call(this)}else this.debug.warn("Track not found",e);else this.debug.warn("Invalid caption argument",e);else Mh.toggle.call(this,!1,t)},setLanguage:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(nu(e)){var n=e.toLowerCase();this.captions.language=n;var i=Mh.getTracks.call(this),r=Mh.findTrack.call(this,[n]);Mh.set.call(this,i.indexOf(r),t)}else this.debug.warn("Invalid language argument",e)},getTracks:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=Array.from((this.media||{}).textTracks||[]);return n.filter((function(n){return!e.isHTML5||t||e.captions.meta.has(n)})).filter((function(e){return["captions","subtitles"].includes(e.kind)}))},findTrack:function(e){var t,n=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=Mh.getTracks.call(this),a=function(e){return Number((n.captions.meta.get(e)||{}).default)},o=Array.from(r).sort((function(e,t){return a(t)-a(e)}));return e.every((function(e){return!(t=o.find((function(t){return t.language===e})))})),t||(i?o[0]:void 0)},getCurrentTrack:function(){return Mh.getTracks.call(this)[this.currentTrack]},getLabel:function(e){var t=e;return!uu(t)&&qu.textTracks&&this.captions.toggled&&(t=Mh.getCurrentTrack.call(this)),uu(t)?du(t.label)?du(t.language)?Th("enabled",this.config):e.language.toUpperCase():t.label:Th("disabled",this.config)},updateCues:function(e){if(this.supported.ui)if(su(this.elements.captions))if(Zc(e)||Array.isArray(e)){var t=e;if(!t){var n=Mh.getCurrentTrack.call(this);t=Array.from((n||{}).activeCues||[]).map((function(e){return e.getCueAsHTML()})).map(wh)}var i=t.map((function(e){return e.trim()})).join("\n");if(i!==this.elements.captions.innerHTML){Cu(this.elements.captions);var r=Au("span",Iu(this.config.selectors.caption));r.innerHTML=i,this.elements.captions.appendChild(r),Ku.call(this,this.media,"cuechange")}}else this.debug.warn("updateCues: Invalid input",e);else this.debug.warn("No captions element to render to")}},_h={enabled:!0,title:"",debug:!1,autoplay:!1,autopause:!0,playsinline:!0,seekTime:10,volume:1,muted:!1,duration:null,displayDuration:!0,invertTime:!0,toggleInvert:!0,ratio:null,clickToPlay:!0,hideControls:!0,resetOnEnd:!1,disableContextMenu:!0,loadSprite:!0,iconPrefix:"plyr",iconUrl:"https://cdn.plyr.io/3.6.2/plyr.svg",blankVideo:"https://cdn.plyr.io/static/blank.mp4",quality:{default:576,options:[4320,2880,2160,1440,1080,720,576,480,360,240],forced:!1,onChange:null},loop:{active:!1},speed:{selected:1,options:[.5,.75,1,1.25,1.5,1.75,2,4]},keyboard:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},captions:{active:!1,language:"auto",update:!1},fullscreen:{enabled:!0,fallback:!0,iosNative:!1},storage:{enabled:!0,key:"plyr"},controls:["play-large","play","progress","current-time","mute","volume","captions","settings","pip","airplay","fullscreen"],settings:["captions","quality","speed"],i18n:{restart:"Restart",rewind:"Rewind {seektime}s",play:"Play",pause:"Pause",fastForward:"Forward {seektime}s",seek:"Seek",seekLabel:"{currentTime} of {duration}",played:"Played",buffered:"Buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",mute:"Mute",unmute:"Unmute",enableCaptions:"Enable captions",disableCaptions:"Disable captions",download:"Download",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",frameTitle:"Player for {title}",captions:"Captions",settings:"Settings",pip:"PIP",menuBack:"Go back to previous menu",speed:"Speed",normal:"Normal",quality:"Quality",loop:"Loop",start:"Start",end:"End",all:"All",reset:"Reset",disabled:"Disabled",enabled:"Enabled",advertisement:"Ad",qualityBadge:{2160:"4K",1440:"HD",1080:"HD",720:"HD",576:"SD",480:"SD"}},urls:{download:null,vimeo:{sdk:"https://player.vimeo.com/api/player.js",iframe:"https://player.vimeo.com/video/{0}?{1}",api:"https://vimeo.com/api/v2/video/{0}.json"},youtube:{sdk:"https://www.youtube.com/iframe_api",api:"https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}"},googleIMA:{sdk:"https://imasdk.googleapis.com/js/sdkloader/ima3.js"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,fastForward:null,mute:null,volume:null,captions:null,download:null,fullscreen:null,pip:null,airplay:null,speed:null,quality:null,loop:null,language:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","seeked","emptied","ratechange","cuechange","download","enterfullscreen","exitfullscreen","captionsenabled","captionsdisabled","languagechange","controlshidden","controlsshown","ready","statechange","qualitychange","adsloaded","adscontentpause","adscontentresume","adstarted","adsmidpoint","adscomplete","adsallcomplete","adsimpression","adsclick"],selectors:{editable:"input, textarea, select, [contenteditable]",container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',fastForward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',captions:'[data-plyr="captions"]',download:'[data-plyr="download"]',fullscreen:'[data-plyr="fullscreen"]',pip:'[data-plyr="pip"]',airplay:'[data-plyr="airplay"]',settings:'[data-plyr="settings"]',loop:'[data-plyr="loop"]'},inputs:{seek:'[data-plyr="seek"]',volume:'[data-plyr="volume"]',speed:'[data-plyr="speed"]',language:'[data-plyr="language"]',quality:'[data-plyr="quality"]'},display:{currentTime:".plyr__time--current",duration:".plyr__time--duration",buffer:".plyr__progress__buffer",loop:".plyr__progress__loop",volume:".plyr__volume--display"},progress:".plyr__progress",captions:".plyr__captions",caption:".plyr__caption"},classNames:{type:"plyr--{0}",provider:"plyr--{0}",video:"plyr__video-wrapper",embed:"plyr__video-embed",videoFixedRatio:"plyr__video-wrapper--fixed-ratio",embedContainer:"plyr__video-embed__container",poster:"plyr__poster",posterEnabled:"plyr__poster-enabled",ads:"plyr__ads",control:"plyr__control",controlPressed:"plyr__control--pressed",playing:"plyr--playing",paused:"plyr--paused",stopped:"plyr--stopped",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",cues:"plyr__cues",hidden:"plyr__sr-only",hideControls:"plyr--hide-controls",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",uiSupported:"plyr--full-ui",noTransition:"plyr--no-transition",display:{time:"plyr__time"},menu:{value:"plyr__menu__value",badge:"plyr__badge",open:"plyr--menu-open"},captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",fallback:"plyr--fullscreen-fallback"},pip:{supported:"plyr--pip-supported",active:"plyr--pip-active"},airplay:{supported:"plyr--airplay-supported",active:"plyr--airplay-active"},tabFocus:"plyr__tab-focus",previewThumbnails:{thumbContainer:"plyr__preview-thumb",thumbContainerShown:"plyr__preview-thumb--is-shown",imageContainer:"plyr__preview-thumb__image-container",timeContainer:"plyr__preview-thumb__time-container",scrubbingContainer:"plyr__preview-scrubbing",scrubbingContainerShown:"plyr__preview-scrubbing--is-shown"}},attributes:{embed:{provider:"data-plyr-provider",id:"data-plyr-embed-id"}},ads:{enabled:!1,publisherId:"",tagUrl:""},previewThumbnails:{enabled:!1,src:""},vimeo:{byline:!1,portrait:!1,title:!1,speed:!0,transparent:!1,premium:!1,referrerPolicy:null},youtube:{noCookie:!0,rel:0,showinfo:0,iv_load_policy:3,modestbranding:1}},Uh="picture-in-picture",Dh="inline",Fh={html5:"html5",youtube:"youtube",vimeo:"vimeo"},qh="audio",Hh="video";var Bh=function(){},Vh=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];yo(this,e),this.enabled=window.console&&t,this.enabled&&this.log("Debugging enabled")}return wo(e,[{key:"log",get:function(){return this.enabled?Function.prototype.bind.call(console.log,console):Bh}},{key:"warn",get:function(){return this.enabled?Function.prototype.bind.call(console.warn,console):Bh}},{key:"error",get:function(){return this.enabled?Function.prototype.bind.call(console.error,console):Bh}}]),e}(),zh=function(){function e(t){var n=this;yo(this,e),this.player=t,this.prefix=e.prefix,this.property=e.property,this.scrollPosition={x:0,y:0},this.forceFallback="force"===t.config.fullscreen.fallback,this.player.elements.fullscreen=t.config.fullscreen.container&&function(e,t){return(Element.prototype.closest||function(){var e=this;do{if(Ru.matches(e,t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null}).call(e,t)}(this.player.elements.container,t.config.fullscreen.container),Vu.call(this.player,document,"ms"===this.prefix?"MSFullscreenChange":"".concat(this.prefix,"fullscreenchange"),(function(){n.onChange()})),Vu.call(this.player,this.player.elements.container,"dblclick",(function(e){su(n.player.elements.controls)&&n.player.elements.controls.contains(e.target)||n.toggle()})),Vu.call(this,this.player.elements.container,"keydown",(function(e){return n.trapFocus(e)})),this.update()}return wo(e,[{key:"onChange",value:function(){if(this.enabled){var e=this.player.elements.buttons.fullscreen;su(e)&&(e.pressed=this.active),Ku.call(this.player,this.target,this.active?"enterfullscreen":"exitfullscreen",!0)}}},{key:"toggleFallback",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(e?this.scrollPosition={x:window.scrollX||0,y:window.scrollY||0}:window.scrollTo(this.scrollPosition.x,this.scrollPosition.y),document.body.style.overflow=e?"hidden":"",ju(this.target,this.player.config.classNames.fullscreen.fallback,e),gu.isIos){var t=document.head.querySelector('meta[name="viewport"]'),n="viewport-fit=cover";t||(t=document.createElement("meta")).setAttribute("name","viewport");var i=nu(t.content)&&t.content.includes(n);e?(this.cleanupViewport=!i,i||(t.content+=",".concat(n))):this.cleanupViewport&&(t.content=t.content.split(",").filter((function(e){return e.trim()!==n})).join(","))}this.onChange()}},{key:"trapFocus",value:function(e){if(!gu.isIos&&this.active&&"Tab"===e.key&&9===e.keyCode){var t=document.activeElement,n=Mu.call(this.player,"a[href], button:not(:disabled), input:not(:disabled), [tabindex]"),i=Ao(n,1)[0],r=n[n.length-1];t!==r||e.shiftKey?t===i&&e.shiftKey&&(r.focus(),e.preventDefault()):(i.focus(),e.preventDefault())}}},{key:"update",value:function(){var t;this.enabled?(t=this.forceFallback?"Fallback (forced)":e.native?"Native":"Fallback",this.player.debug.log("".concat(t," fullscreen enabled"))):this.player.debug.log("Fullscreen not supported and fallback disabled");ju(this.player.elements.container,this.player.config.classNames.fullscreen.enabled,this.enabled)}},{key:"enter",value:function(){this.enabled&&(gu.isIos&&this.player.config.fullscreen.iosNative?this.target.webkitEnterFullscreen():!e.native||this.forceFallback?this.toggleFallback(!0):this.prefix?du(this.prefix)||this.target["".concat(this.prefix,"Request").concat(this.property)]():this.target.requestFullscreen({navigationUI:"hide"}))}},{key:"exit",value:function(){if(this.enabled)if(gu.isIos&&this.player.config.fullscreen.iosNative)this.target.webkitExitFullscreen(),Gu(this.player.play());else if(!e.native||this.forceFallback)this.toggleFallback(!1);else if(this.prefix){if(!du(this.prefix)){var t="moz"===this.prefix?"Cancel":"Exit";document["".concat(this.prefix).concat(t).concat(this.property)]()}}else(document.cancelFullScreen||document.exitFullscreen).call(document)}},{key:"toggle",value:function(){this.active?this.exit():this.enter()}},{key:"usingNative",get:function(){return e.native&&!this.forceFallback}},{key:"enabled",get:function(){return(e.native||this.player.config.fullscreen.fallback)&&this.player.config.fullscreen.enabled&&this.player.supported.ui&&this.player.isVideo}},{key:"active",get:function(){if(!this.enabled)return!1;if(!e.native||this.forceFallback)return Nu(this.target,this.player.config.classNames.fullscreen.fallback);var t=this.prefix?document["".concat(this.prefix).concat(this.property,"Element")]:document.fullscreenElement;return t&&t.shadowRoot?t===this.target.getRootNode().host:t===this.target}},{key:"target",get:function(){return gu.isIos&&this.player.config.fullscreen.iosNative?this.player.media:this.player.elements.fullscreen||this.player.elements.container}}],[{key:"native",get:function(){return!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)}},{key:"prefix",get:function(){if(ru(document.exitFullscreen))return"";var e="";return["webkit","moz","ms"].some((function(t){return!(!ru(document["".concat(t,"ExitFullscreen")])&&!ru(document["".concat(t,"CancelFullScreen")]))&&(e=t,!0)})),e}},{key:"property",get:function(){return"moz"===this.prefix?"FullScreen":"Fullscreen"}}]),e}(),Wh=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1};function Kh(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Promise((function(n,i){var r=new Image,a=function(){delete r.onload,delete r.onerror,(r.naturalWidth>=t?n:i)(r)};Object.assign(r,{onload:a,onerror:a,src:e})}))}Ie({target:"Math",stat:!0},{sign:Wh});var $h={addStyleHook:function(){ju(this.elements.container,this.config.selectors.container.replace(".",""),!0),ju(this.elements.container,this.config.classNames.uiSupported,this.supported.ui)},toggleNativeControls:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];e&&this.isHTML5?this.media.setAttribute("controls",""):this.media.removeAttribute("controls")},build:function(){var e=this;if(this.listeners.media(),!this.supported.ui)return this.debug.warn("Basic support only for ".concat(this.provider," ").concat(this.type)),void $h.toggleNativeControls.call(this,!0);su(this.elements.controls)||(jh.inject.call(this),this.listeners.controls()),$h.toggleNativeControls.call(this),this.isHTML5&&Mh.setup.call(this),this.volume=null,this.muted=null,this.loop=null,this.quality=null,this.speed=null,jh.updateVolume.call(this),jh.timeUpdate.call(this),$h.checkPlaying.call(this),ju(this.elements.container,this.config.classNames.pip.supported,qu.pip&&this.isHTML5&&this.isVideo),ju(this.elements.container,this.config.classNames.airplay.supported,qu.airplay&&this.isHTML5),ju(this.elements.container,this.config.classNames.isIos,gu.isIos),ju(this.elements.container,this.config.classNames.isTouch,this.touch),this.ready=!0,setTimeout((function(){Ku.call(e,e.media,"ready")}),0),$h.setTitle.call(this),this.poster&&$h.setPoster.call(this,this.poster,!1).catch((function(){})),this.config.duration&&jh.durationUpdate.call(this)},setTitle:function(){var e=Th("play",this.config);if(nu(this.config.title)&&!du(this.config.title)&&(e+=", ".concat(this.config.title)),Array.from(this.elements.buttons.play||[]).forEach((function(t){t.setAttribute("aria-label",e)})),this.isEmbed){var t=_u.call(this,"iframe");if(!su(t))return;var n=du(this.config.title)?"video":this.config.title,i=Th("frameTitle",this.config);t.setAttribute("title",i.replace("{title}",n))}},togglePoster:function(e){ju(this.elements.container,this.config.classNames.posterEnabled,e)},setPoster:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return n&&this.poster?Promise.reject(new Error("Poster already set")):(this.media.setAttribute("data-poster",e),Yu.call(this).then((function(){return Kh(e)})).catch((function(n){throw e===t.poster&&$h.togglePoster.call(t,!1),n})).then((function(){if(e!==t.poster)throw new Error("setPoster cancelled by later call to setPoster")})).then((function(){return Object.assign(t.elements.poster.style,{backgroundImage:"url('".concat(e,"')"),backgroundSize:""}),$h.togglePoster.call(t,!0),e})))},checkPlaying:function(e){var t=this;ju(this.elements.container,this.config.classNames.playing,this.playing),ju(this.elements.container,this.config.classNames.paused,this.paused),ju(this.elements.container,this.config.classNames.stopped,this.stopped),Array.from(this.elements.buttons.play||[]).forEach((function(e){Object.assign(e,{pressed:t.playing}),e.setAttribute("aria-label",Th(t.playing?"pause":"play",t.config))})),lu(e)&&"timeupdate"===e.type||$h.toggleControls.call(this)},checkLoading:function(e){var t=this;this.loading=["stalled","waiting"].includes(e.type),clearTimeout(this.timers.loading),this.timers.loading=setTimeout((function(){ju(t.elements.container,t.config.classNames.loading,t.loading),$h.toggleControls.call(t)}),this.loading?250:0)},toggleControls:function(e){var t=this.elements.controls;if(t&&this.config.hideControls){var n=this.touch&&this.lastSeekTime+2e3>Date.now();this.toggleControls(Boolean(e||this.loading||this.paused||t.pressed||t.hover||n))}},migrateStyles:function(){var e=this;Object.values(So({},this.media.style)).filter((function(e){return!du(e)&&e.startsWith("--plyr")})).forEach((function(t){e.elements.container.style.setProperty(t,e.media.style.getPropertyValue(t)),e.media.style.removeProperty(t)})),du(this.media.style)&&this.media.removeAttribute("style")}},Yh=function(){function e(t){yo(this,e),this.player=t,this.lastKey=null,this.focusTimer=null,this.lastKeyDown=null,this.handleKey=this.handleKey.bind(this),this.toggleMenu=this.toggleMenu.bind(this),this.setTabFocus=this.setTabFocus.bind(this),this.firstTouch=this.firstTouch.bind(this)}return wo(e,[{key:"handleKey",value:function(e){var t=this.player,n=t.elements,i=e.keyCode?e.keyCode:e.which,r="keydown"===e.type,a=r&&i===this.lastKey;if(!(e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)&&tu(i)){if(r){var o=document.activeElement;if(su(o)){var s=t.config.selectors.editable;if(o!==n.inputs.seek&&Ru(o,s))return;if(32===e.which&&Ru(o,'button, [role^="menuitem"]'))return}switch([32,37,38,39,40,48,49,50,51,52,53,54,56,57,67,70,73,75,76,77,79].includes(i)&&(e.preventDefault(),e.stopPropagation()),i){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:a||(t.currentTime=t.duration/10*(i-48));break;case 32:case 75:a||Gu(t.togglePlay());break;case 38:t.increaseVolume(.1);break;case 40:t.decreaseVolume(.1);break;case 77:a||(t.muted=!t.muted);break;case 39:t.forward();break;case 37:t.rewind();break;case 70:t.fullscreen.toggle();break;case 67:a||t.toggleCaptions();break;case 76:t.loop=!t.loop}27===i&&!t.fullscreen.usingNative&&t.fullscreen.active&&t.fullscreen.toggle(),this.lastKey=i}else this.lastKey=null}}},{key:"toggleMenu",value:function(e){jh.toggleMenu.call(this.player,e)}},{key:"firstTouch",value:function(){var e=this.player,t=e.elements;e.touch=!0,ju(t.container,e.config.classNames.isTouch,!0)}},{key:"setTabFocus",value:function(e){var t=this.player,n=t.elements;if(clearTimeout(this.focusTimer),"keydown"!==e.type||9===e.which){"keydown"===e.type&&(this.lastKeyDown=e.timeStamp);var i,r=e.timeStamp-this.lastKeyDown<=20;if("focus"!==e.type||r)i=t.config.classNames.tabFocus,ju(Mu.call(t,".".concat(i)),i,!1),"focusout"!==e.type&&(this.focusTimer=setTimeout((function(){var e=document.activeElement;n.container.contains(e)&&ju(document.activeElement,t.config.classNames.tabFocus,!0)}),10))}}},{key:"global",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.player;t.config.keyboard.global&&Bu.call(t,window,"keydown keyup",this.handleKey,e,!1),Bu.call(t,document.body,"click",this.toggleMenu,e),Wu.call(t,document.body,"touchstart",this.firstTouch),Bu.call(t,document.body,"keydown focus blur focusout",this.setTabFocus,e,!1,!0)}},{key:"container",value:function(){var e=this.player,t=e.config,n=e.elements,i=e.timers;!t.keyboard.global&&t.keyboard.focused&&Vu.call(e,n.container,"keydown keyup",this.handleKey,!1),Vu.call(e,n.container,"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen",(function(t){var r=n.controls;r&&"enterfullscreen"===t.type&&(r.pressed=!1,r.hover=!1);var a=0;["touchstart","touchmove","mousemove"].includes(t.type)&&($h.toggleControls.call(e,!0),a=e.touch?3e3:2e3),clearTimeout(i.controls),i.controls=setTimeout((function(){return $h.toggleControls.call(e,!1)}),a)}));var r=function(t){if(!t)return Zu.call(e);var i=n.container.getBoundingClientRect(),r=i.width,a=i.height;return Zu.call(e,"".concat(r,":").concat(a))},a=function(){clearTimeout(i.resized),i.resized=setTimeout(r,50)};Vu.call(e,n.container,"enterfullscreen exitfullscreen",(function(t){var i=e.fullscreen,o=i.target,s=i.usingNative;if(o===n.container&&(e.isEmbed||!du(e.config.ratio))){var l="enterfullscreen"===t.type,c=r(l);c.padding;!function(t,n,i){if(e.isVimeo&&!e.config.vimeo.premium){var r=e.elements.wrapper.firstChild,a=Ao(t,2)[1],o=Ao(Ju.call(e),2),s=o[0],l=o[1];r.style.maxWidth=i?"".concat(a/l*s,"px"):null,r.style.margin=i?"0 auto":null}}(c.ratio,0,l),s||(l?Vu.call(e,window,"resize",a):zu.call(e,window,"resize",a))}}))}},{key:"media",value:function(){var e=this,t=this.player,n=t.elements;if(Vu.call(t,t.media,"timeupdate seeking seeked",(function(e){return jh.timeUpdate.call(t,e)})),Vu.call(t,t.media,"durationchange loadeddata loadedmetadata",(function(e){return jh.durationUpdate.call(t,e)})),Vu.call(t,t.media,"ended",(function(){t.isHTML5&&t.isVideo&&t.config.resetOnEnd&&(t.restart(),t.pause())})),Vu.call(t,t.media,"progress playing seeking seeked",(function(e){return jh.updateProgress.call(t,e)})),Vu.call(t,t.media,"volumechange",(function(e){return jh.updateVolume.call(t,e)})),Vu.call(t,t.media,"playing play pause ended emptied timeupdate",(function(e){return $h.checkPlaying.call(t,e)})),Vu.call(t,t.media,"waiting canplay seeked playing",(function(e){return $h.checkLoading.call(t,e)})),t.supported.ui&&t.config.clickToPlay&&!t.isAudio){var i=_u.call(t,".".concat(t.config.classNames.video));if(!su(i))return;Vu.call(t,n.container,"click",(function(r){([n.container,i].includes(r.target)||i.contains(r.target))&&(t.touch&&t.config.hideControls||(t.ended?(e.proxy(r,t.restart,"restart"),e.proxy(r,(function(){Gu(t.play())}),"play")):e.proxy(r,(function(){Gu(t.togglePlay())}),"play")))}))}t.supported.ui&&t.config.disableContextMenu&&Vu.call(t,n.wrapper,"contextmenu",(function(e){e.preventDefault()}),!1),Vu.call(t,t.media,"volumechange",(function(){t.storage.set({volume:t.volume,muted:t.muted})})),Vu.call(t,t.media,"ratechange",(function(){jh.updateSetting.call(t,"speed"),t.storage.set({speed:t.speed})})),Vu.call(t,t.media,"qualitychange",(function(e){jh.updateSetting.call(t,"quality",null,e.detail.quality)})),Vu.call(t,t.media,"ready qualitychange",(function(){jh.setDownloadUrl.call(t)}));var r=t.config.events.concat(["keyup","keydown"]).join(" ");Vu.call(t,t.media,r,(function(e){var i=e.detail,r=void 0===i?{}:i;"error"===e.type&&(r=t.media.error),Ku.call(t,n.container,e.type,!0,r)}))}},{key:"proxy",value:function(e,t,n){var i=this.player,r=i.config.listeners[n],a=!0;ru(r)&&(a=r.call(i,e)),!1!==a&&ru(t)&&t.call(i,e)}},{key:"bind",value:function(e,t,n,i){var r=this,a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=this.player,s=o.config.listeners[i],l=ru(s);Vu.call(o,e,t,(function(e){return r.proxy(e,n,i)}),a&&!l)}},{key:"controls",value:function(){var e=this,t=this.player,n=t.elements,i=gu.isIE?"change":"input";if(n.buttons.play&&Array.from(n.buttons.play).forEach((function(n){e.bind(n,"click",(function(){Gu(t.togglePlay())}),"play")})),this.bind(n.buttons.restart,"click",t.restart,"restart"),this.bind(n.buttons.rewind,"click",t.rewind,"rewind"),this.bind(n.buttons.fastForward,"click",t.forward,"fastForward"),this.bind(n.buttons.mute,"click",(function(){t.muted=!t.muted}),"mute"),this.bind(n.buttons.captions,"click",(function(){return t.toggleCaptions()})),this.bind(n.buttons.download,"click",(function(){Ku.call(t,t.media,"download")}),"download"),this.bind(n.buttons.fullscreen,"click",(function(){t.fullscreen.toggle()}),"fullscreen"),this.bind(n.buttons.pip,"click",(function(){t.pip="toggle"}),"pip"),this.bind(n.buttons.airplay,"click",t.airplay,"airplay"),this.bind(n.buttons.settings,"click",(function(e){e.stopPropagation(),e.preventDefault(),jh.toggleMenu.call(t,e)}),null,!1),this.bind(n.buttons.settings,"keyup",(function(e){var n=e.which;[13,32].includes(n)&&(13!==n?(e.preventDefault(),e.stopPropagation(),jh.toggleMenu.call(t,e)):jh.focusFirstMenuItem.call(t,null,!0))}),null,!1),this.bind(n.settings.menu,"keydown",(function(e){27===e.which&&jh.toggleMenu.call(t,e)})),this.bind(n.inputs.seek,"mousedown mousemove",(function(e){var t=n.progress.getBoundingClientRect(),i=100/t.width*(e.pageX-t.left);e.currentTarget.setAttribute("seek-value",i)})),this.bind(n.inputs.seek,"mousedown mouseup keydown keyup touchstart touchend",(function(e){var n=e.currentTarget,i=e.keyCode?e.keyCode:e.which;if(!cu(e)||39===i||37===i){t.lastSeekTime=Date.now();var r=n.hasAttribute("play-on-seeked"),a=["mouseup","touchend","keyup"].includes(e.type);r&&a?(n.removeAttribute("play-on-seeked"),Gu(t.play())):!a&&t.playing&&(n.setAttribute("play-on-seeked",""),t.pause())}})),gu.isIos){var r=Mu.call(t,'input[type="range"]');Array.from(r).forEach((function(t){return e.bind(t,i,(function(e){return mu(e.target)}))}))}this.bind(n.inputs.seek,i,(function(e){var n=e.currentTarget,i=n.getAttribute("seek-value");du(i)&&(i=n.value),n.removeAttribute("seek-value"),t.currentTime=i/n.max*t.duration}),"seek"),this.bind(n.progress,"mouseenter mouseleave mousemove",(function(e){return jh.updateSeekTooltip.call(t,e)})),this.bind(n.progress,"mousemove touchmove",(function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startMove(e)})),this.bind(n.progress,"mouseleave touchend click",(function(){var e=t.previewThumbnails;e&&e.loaded&&e.endMove(!1,!0)})),this.bind(n.progress,"mousedown touchstart",(function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startScrubbing(e)})),this.bind(n.progress,"mouseup touchend",(function(e){var n=t.previewThumbnails;n&&n.loaded&&n.endScrubbing(e)})),gu.isWebkit&&Array.from(Mu.call(t,'input[type="range"]')).forEach((function(n){e.bind(n,"input",(function(e){return jh.updateRangeFill.call(t,e.target)}))})),t.config.toggleInvert&&!su(n.display.duration)&&this.bind(n.display.currentTime,"click",(function(){0!==t.currentTime&&(t.config.invertTime=!t.config.invertTime,jh.timeUpdate.call(t))})),this.bind(n.inputs.volume,i,(function(e){t.volume=e.target.value}),"volume"),this.bind(n.controls,"mouseenter mouseleave",(function(e){n.controls.hover=!t.touch&&"mouseenter"===e.type})),n.fullscreen&&Array.from(n.fullscreen.children).filter((function(e){return!e.contains(n.container)})).forEach((function(i){e.bind(i,"mouseenter mouseleave",(function(e){n.controls.hover=!t.touch&&"mouseenter"===e.type}))})),this.bind(n.controls,"mousedown mouseup touchstart touchend touchcancel",(function(e){n.controls.pressed=["mousedown","touchstart"].includes(e.type)})),this.bind(n.controls,"focusin",(function(){var i=t.config,r=t.timers;ju(n.controls,i.classNames.noTransition,!0),$h.toggleControls.call(t,!0),setTimeout((function(){ju(n.controls,i.classNames.noTransition,!1)}),0);var a=e.touch?3e3:4e3;clearTimeout(r.controls),r.controls=setTimeout((function(){return $h.toggleControls.call(t,!1)}),a)})),this.bind(n.inputs.volume,"wheel",(function(e){var n=e.webkitDirectionInvertedFromDevice,i=Ao([e.deltaX,-e.deltaY].map((function(e){return n?-e:e})),2),r=i[0],a=i[1],o=Math.sign(Math.abs(r)>Math.abs(a)?r:a);t.increaseVolume(o/50);var s=t.media.volume;(1===o&&s<1||-1===o&&s>0)&&e.preventDefault()}),"volume",!1)}}]),e}(),Gh=Kn("splice"),Xh=Qt("splice",{ACCESSORS:!0,0:0,1:2}),Qh=Math.max,Jh=Math.min;Ie({target:"Array",proto:!0,forced:!Gh||!Xh},{splice:function(e,t){var n,i,r,a,o,s,l=Re(this),c=le(l.length),u=he(e,c),h=arguments.length;if(0===h?n=i=0:1===h?(n=0,i=c-u):(n=h-2,i=Jh(Qh(oe(t),0),c-u)),c+n-i>9007199254740991)throw TypeError("Maximum allowed length exceeded");for(r=ot(l,i),a=0;a<i;a++)(o=u+a)in l&&Fn(r,a,l[o]);if(r.length=i,n<i){for(a=u;a<c-i;a++)s=a+n,(o=a+i)in l?l[s]=l[o]:delete l[s];for(a=c;a>c-i+n;a--)delete l[a-1]}else if(n>i)for(a=c-i;a>u;a--)s=a+n-1,(o=a+i-1)in l?l[s]=l[o]:delete l[s];for(a=0;a<n;a++)l[a+u]=arguments[a+2];return l.length=c-i+n,r}});var Zh=t((function(e,t){e.exports=function(){var e=function(){},t={},n={},i={};function r(e,t){if(e){var r=i[e];if(n[e]=t,r)for(;r.length;)r[0](e,t),r.splice(0,1)}}function a(t,n){t.call&&(t={success:t}),n.length?(t.error||e)(n):(t.success||e)(t)}function o(t,n,i,r){var a,s,l=document,c=i.async,u=(i.numRetries||0)+1,h=i.before||e,f=t.replace(/[\?|#].*$/,""),d=t.replace(/^(css|img)!/,"");r=r||0,/(^css!|\.css$)/.test(f)?((s=l.createElement("link")).rel="stylesheet",s.href=d,(a="hideFocus"in s)&&s.relList&&(a=0,s.rel="preload",s.as="style")):/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(f)?(s=l.createElement("img")).src=d:((s=l.createElement("script")).src=t,s.async=void 0===c||c),s.onload=s.onerror=s.onbeforeload=function(e){var l=e.type[0];if(a)try{s.sheet.cssText.length||(l="e")}catch(e){18!=e.code&&(l="e")}if("e"==l){if((r+=1)<u)return o(t,n,i,r)}else if("preload"==s.rel&&"style"==s.as)return s.rel="stylesheet";n(t,l,e.defaultPrevented)},!1!==h(t,s)&&l.head.appendChild(s)}function s(e,n,i){var s,l;if(n&&n.trim&&(s=n),l=(s?i:n)||{},s){if(s in t)throw"LoadJS";t[s]=!0}function c(t,n){!function(e,t,n){var i,r,a=(e=e.push?e:[e]).length,s=a,l=[];for(i=function(e,n,i){if("e"==n&&l.push(e),"b"==n){if(!i)return;l.push(e)}--a||t(l)},r=0;r<s;r++)o(e[r],i,n)}(e,(function(e){a(l,e),t&&a({success:t,error:n},e),r(s,e)}),l)}if(l.returnPromise)return new Promise(c);c()}return s.ready=function(e,t){return function(e,t){e=e.push?e:[e];var r,a,o,s=[],l=e.length,c=l;for(r=function(e,n){n.length&&s.push(e),--c||t(s)};l--;)a=e[l],(o=n[a])?r(a,o):(i[a]=i[a]||[]).push(r)}(e,(function(e){a(t,e)})),s},s.done=function(e){r(e,[])},s.reset=function(){t={},n={},i={}},s.isDefined=function(e){return e in t},s}()}));function ef(e){return new Promise((function(t,n){Zh(e,{success:t,error:n})}))}function tf(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,Ku.call(this,this.media,e?"play":"pause"))}var nf={setup:function(){var e=this;ju(e.elements.wrapper,e.config.classNames.embed,!0),e.options.speed=e.config.speed.options,Zu.call(e),eu(window.Vimeo)?nf.ready.call(e):ef(e.config.urls.vimeo.sdk).then((function(){nf.ready.call(e)})).catch((function(t){e.debug.warn("Vimeo SDK (player.js) failed to load",t)}))},ready:function(){var e=this,t=this,n=t.config.vimeo,i=n.premium,r=n.referrerPolicy,a=Eo(n,["premium","referrerPolicy"]);i&&Object.assign(a,{controls:!1,sidedock:!1});var o=Rh(So({loop:t.config.loop.active,autoplay:t.autoplay,muted:t.muted,gesture:"media",playsinline:!this.config.fullscreen.iosNative},a)),s=t.media.getAttribute("src");du(s)&&(s=t.media.getAttribute(t.config.attributes.embed.id));var l,c=du(l=s)?null:tu(Number(l))?l:l.match(/^.*(vimeo.com\/|video\/)(\d+).*/)?RegExp.$2:l,u=Au("iframe"),h=gh(t.config.urls.vimeo.iframe,c,o);u.setAttribute("src",h),u.setAttribute("allowfullscreen",""),u.setAttribute("allow","autoplay,fullscreen,picture-in-picture"),du(r)||u.setAttribute("referrerPolicy",r);var f=t.poster;if(i)u.setAttribute("data-poster",f),t.media=Ou(u,t.media);else{var d=Au("div",{class:t.config.classNames.embedContainer,"data-poster":f});d.appendChild(u),t.media=Ou(d,t.media)}Eh(gh(t.config.urls.vimeo.api,c),"json").then((function(e){if(!du(e)){var n=new URL(e[0].thumbnail_large);n.pathname="".concat(n.pathname.split("_")[0],".jpg"),$h.setPoster.call(t,n.href).catch((function(){}))}})),t.embed=new window.Vimeo.Player(u,{autopause:t.config.autopause,muted:t.muted}),t.media.paused=!0,t.media.currentTime=0,t.supported.ui&&t.embed.disableTextTrack(),t.media.play=function(){return tf.call(t,!0),t.embed.play()},t.media.pause=function(){return tf.call(t,!1),t.embed.pause()},t.media.stop=function(){t.pause(),t.currentTime=0};var p=t.media.currentTime;Object.defineProperty(t.media,"currentTime",{get:function(){return p},set:function(e){var n=t.embed,i=t.media,r=t.paused,a=t.volume,o=r&&!n.hasPlayed;i.seeking=!0,Ku.call(t,i,"seeking"),Promise.resolve(o&&n.setVolume(0)).then((function(){return n.setCurrentTime(e)})).then((function(){return o&&n.pause()})).then((function(){return o&&n.setVolume(a)})).catch((function(){}))}});var m=t.config.speed.selected;Object.defineProperty(t.media,"playbackRate",{get:function(){return m},set:function(e){t.embed.setPlaybackRate(e).then((function(){m=e,Ku.call(t,t.media,"ratechange")})).catch((function(){t.options.speed=[1]}))}});var g=t.config.volume;Object.defineProperty(t.media,"volume",{get:function(){return g},set:function(e){t.embed.setVolume(e).then((function(){g=e,Ku.call(t,t.media,"volumechange")}))}});var v=t.config.muted;Object.defineProperty(t.media,"muted",{get:function(){return v},set:function(e){var n=!!iu(e)&&e;t.embed.setVolume(n?0:t.config.volume).then((function(){v=n,Ku.call(t,t.media,"volumechange")}))}});var y,b=t.config.loop;Object.defineProperty(t.media,"loop",{get:function(){return b},set:function(e){var n=iu(e)?e:t.config.loop.active;t.embed.setLoop(n).then((function(){b=n}))}}),t.embed.getVideoUrl().then((function(e){y=e,jh.setDownloadUrl.call(t)})).catch((function(t){e.debug.warn(t)})),Object.defineProperty(t.media,"currentSrc",{get:function(){return y}}),Object.defineProperty(t.media,"ended",{get:function(){return t.currentTime===t.duration}}),Promise.all([t.embed.getVideoWidth(),t.embed.getVideoHeight()]).then((function(n){var i=Ao(n,2),r=i[0],a=i[1];t.embed.ratio=[r,a],Zu.call(e)})),t.embed.setAutopause(t.config.autopause).then((function(e){t.config.autopause=e})),t.embed.getVideoTitle().then((function(n){t.config.title=n,$h.setTitle.call(e)})),t.embed.getCurrentTime().then((function(e){p=e,Ku.call(t,t.media,"timeupdate")})),t.embed.getDuration().then((function(e){t.media.duration=e,Ku.call(t,t.media,"durationchange")})),t.embed.getTextTracks().then((function(e){t.media.textTracks=e,Mh.setup.call(t)})),t.embed.on("cuechange",(function(e){var n=e.cues,i=(void 0===n?[]:n).map((function(e){return function(e){var t=document.createDocumentFragment(),n=document.createElement("div");return t.appendChild(n),n.innerHTML=e,t.firstChild.innerText}(e.text)}));Mh.updateCues.call(t,i)})),t.embed.on("loaded",(function(){(t.embed.getPaused().then((function(e){tf.call(t,!e),e||Ku.call(t,t.media,"playing")})),su(t.embed.element)&&t.supported.ui)&&t.embed.element.setAttribute("tabindex",-1)})),t.embed.on("bufferstart",(function(){Ku.call(t,t.media,"waiting")})),t.embed.on("bufferend",(function(){Ku.call(t,t.media,"playing")})),t.embed.on("play",(function(){tf.call(t,!0),Ku.call(t,t.media,"playing")})),t.embed.on("pause",(function(){tf.call(t,!1)})),t.embed.on("timeupdate",(function(e){t.media.seeking=!1,p=e.seconds,Ku.call(t,t.media,"timeupdate")})),t.embed.on("progress",(function(e){t.media.buffered=e.percent,Ku.call(t,t.media,"progress"),1===parseInt(e.percent,10)&&Ku.call(t,t.media,"canplaythrough"),t.embed.getDuration().then((function(e){e!==t.media.duration&&(t.media.duration=e,Ku.call(t,t.media,"durationchange"))}))})),t.embed.on("seeked",(function(){t.media.seeking=!1,Ku.call(t,t.media,"seeked")})),t.embed.on("ended",(function(){t.media.paused=!0,Ku.call(t,t.media,"ended")})),t.embed.on("error",(function(e){t.media.error=e,Ku.call(t,t.media,"error")})),setTimeout((function(){return $h.build.call(t)}),0)}};function rf(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,Ku.call(this,this.media,e?"play":"pause"))}function af(e){return e.noCookie?"https://www.youtube-nocookie.com":"http:"===window.location.protocol?"http://www.youtube.com":void 0}var of={setup:function(){var e=this;if(ju(this.elements.wrapper,this.config.classNames.embed,!0),eu(window.YT)&&ru(window.YT.Player))of.ready.call(this);else{var t=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=function(){ru(t)&&t(),of.ready.call(e)},ef(this.config.urls.youtube.sdk).catch((function(t){e.debug.warn("YouTube API failed to load",t)}))}},getTitle:function(e){var t=this;Eh(gh(this.config.urls.youtube.api,e)).then((function(e){if(eu(e)){var n=e.title,i=e.height,r=e.width;t.config.title=n,$h.setTitle.call(t),t.embed.ratio=[r,i]}Zu.call(t)})).catch((function(){Zu.call(t)}))},ready:function(){var e=this,t=e.media&&e.media.getAttribute("id");if(du(t)||!t.startsWith("youtube-")){var n=e.media.getAttribute("src");du(n)&&(n=e.media.getAttribute(this.config.attributes.embed.id));var i,r,a=du(i=n)?null:i.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/)?RegExp.$2:i,o=(r=e.provider,"".concat(r,"-").concat(Math.floor(1e4*Math.random()))),s=Au("div",{id:o,"data-poster":e.poster});e.media=Ou(s,e.media);var l=function(e){return"https://i.ytimg.com/vi/".concat(a,"/").concat(e,"default.jpg")};Kh(l("maxres"),121).catch((function(){return Kh(l("sd"),121)})).catch((function(){return Kh(l("hq"))})).then((function(t){return $h.setPoster.call(e,t.src)})).then((function(t){t.includes("maxres")||(e.elements.poster.style.backgroundSize="cover")})).catch((function(){}));var c=e.config.youtube;e.embed=new window.YT.Player(o,{videoId:a,host:af(c),playerVars:Tu({},{autoplay:e.config.autoplay?1:0,hl:e.config.hl,controls:e.supported.ui?0:1,disablekb:1,playsinline:e.config.fullscreen.iosNative?0:1,cc_load_policy:e.captions.active?1:0,cc_lang_pref:e.config.captions.language,widget_referrer:window?window.location.href:null},c),events:{onError:function(t){if(!e.media.error){var n=t.data,i={2:"The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.",5:"The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.",100:"The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.",101:"The owner of the requested video does not allow it to be played in embedded players.",150:"The owner of the requested video does not allow it to be played in embedded players."}[n]||"An unknown error occured";e.media.error={code:n,message:i},Ku.call(e,e.media,"error")}},onPlaybackRateChange:function(t){var n=t.target;e.media.playbackRate=n.getPlaybackRate(),Ku.call(e,e.media,"ratechange")},onReady:function(t){if(!ru(e.media.play)){var n=t.target;of.getTitle.call(e,a),e.media.play=function(){rf.call(e,!0),n.playVideo()},e.media.pause=function(){rf.call(e,!1),n.pauseVideo()},e.media.stop=function(){n.stopVideo()},e.media.duration=n.getDuration(),e.media.paused=!0,e.media.currentTime=0,Object.defineProperty(e.media,"currentTime",{get:function(){return Number(n.getCurrentTime())},set:function(t){e.paused&&!e.embed.hasPlayed&&e.embed.mute(),e.media.seeking=!0,Ku.call(e,e.media,"seeking"),n.seekTo(t)}}),Object.defineProperty(e.media,"playbackRate",{get:function(){return n.getPlaybackRate()},set:function(e){n.setPlaybackRate(e)}});var i=e.config.volume;Object.defineProperty(e.media,"volume",{get:function(){return i},set:function(t){i=t,n.setVolume(100*i),Ku.call(e,e.media,"volumechange")}});var r=e.config.muted;Object.defineProperty(e.media,"muted",{get:function(){return r},set:function(t){var i=iu(t)?t:r;r=i,n[i?"mute":"unMute"](),Ku.call(e,e.media,"volumechange")}}),Object.defineProperty(e.media,"currentSrc",{get:function(){return n.getVideoUrl()}}),Object.defineProperty(e.media,"ended",{get:function(){return e.currentTime===e.duration}});var o=n.getAvailablePlaybackRates();e.options.speed=o.filter((function(t){return e.config.speed.options.includes(t)})),e.supported.ui&&e.media.setAttribute("tabindex",-1),Ku.call(e,e.media,"timeupdate"),Ku.call(e,e.media,"durationchange"),clearInterval(e.timers.buffering),e.timers.buffering=setInterval((function(){e.media.buffered=n.getVideoLoadedFraction(),(null===e.media.lastBuffered||e.media.lastBuffered<e.media.buffered)&&Ku.call(e,e.media,"progress"),e.media.lastBuffered=e.media.buffered,1===e.media.buffered&&(clearInterval(e.timers.buffering),Ku.call(e,e.media,"canplaythrough"))}),200),setTimeout((function(){return $h.build.call(e)}),50)}},onStateChange:function(t){var n=t.target;switch(clearInterval(e.timers.playing),e.media.seeking&&[1,2].includes(t.data)&&(e.media.seeking=!1,Ku.call(e,e.media,"seeked")),t.data){case-1:Ku.call(e,e.media,"timeupdate"),e.media.buffered=n.getVideoLoadedFraction(),Ku.call(e,e.media,"progress");break;case 0:rf.call(e,!1),e.media.loop?(n.stopVideo(),n.playVideo()):Ku.call(e,e.media,"ended");break;case 1:e.config.autoplay||!e.media.paused||e.embed.hasPlayed?(rf.call(e,!0),Ku.call(e,e.media,"playing"),e.timers.playing=setInterval((function(){Ku.call(e,e.media,"timeupdate")}),50),e.media.duration!==n.getDuration()&&(e.media.duration=n.getDuration(),Ku.call(e,e.media,"durationchange"))):e.media.pause();break;case 2:e.muted||e.embed.unMute(),rf.call(e,!1);break;case 3:Ku.call(e,e.media,"waiting")}Ku.call(e,e.elements.container,"statechange",!1,{code:t.data})}}})}}},sf={setup:function(){this.media?(ju(this.elements.container,this.config.classNames.type.replace("{0}",this.type),!0),ju(this.elements.container,this.config.classNames.provider.replace("{0}",this.provider),!0),this.isEmbed&&ju(this.elements.container,this.config.classNames.type.replace("{0}","video"),!0),this.isVideo&&(this.elements.wrapper=Au("div",{class:this.config.classNames.video}),Su(this.media,this.elements.wrapper),this.elements.poster=Au("div",{class:this.config.classNames.poster}),this.elements.wrapper.appendChild(this.elements.poster)),this.isHTML5?eh.setup.call(this):this.isYouTube?of.setup.call(this):this.isVimeo&&nf.setup.call(this)):this.debug.warn("No media element found!")}},lf=function(){function e(t){var n=this;yo(this,e),this.player=t,this.config=t.config.ads,this.playing=!1,this.initialized=!1,this.elements={container:null,displayContainer:null},this.manager=null,this.loader=null,this.cuePoints=null,this.events={},this.safetyTimer=null,this.countdownTimer=null,this.managerPromise=new Promise((function(e,t){n.on("loaded",e),n.on("error",t)})),this.load()}return wo(e,[{key:"load",value:function(){var e=this;this.enabled&&(eu(window.google)&&eu(window.google.ima)?this.ready():ef(this.player.config.urls.googleIMA.sdk).then((function(){e.ready()})).catch((function(){e.trigger("error",new Error("Google IMA SDK failed to load"))})))}},{key:"ready",value:function(){var e,t=this;this.enabled||((e=this).manager&&e.manager.destroy(),e.elements.displayContainer&&e.elements.displayContainer.destroy(),e.elements.container.remove()),this.startSafetyTimer(12e3,"ready()"),this.managerPromise.then((function(){t.clearSafetyTimer("onAdsManagerLoaded()")})),this.listeners(),this.setupIMA()}},{key:"setupIMA",value:function(){var e=this;this.elements.container=Au("div",{class:this.player.config.classNames.ads}),this.player.elements.container.appendChild(this.elements.container),google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED),google.ima.settings.setLocale(this.player.config.ads.language),google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline),this.elements.displayContainer=new google.ima.AdDisplayContainer(this.elements.container,this.player.media),this.loader=new google.ima.AdsLoader(this.elements.displayContainer),this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,(function(t){return e.onAdsManagerLoaded(t)}),!1),this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(function(t){return e.onAdError(t)}),!1),this.requestAds()}},{key:"requestAds",value:function(){var e=this.player.elements.container;try{var t=new google.ima.AdsRequest;t.adTagUrl=this.tagUrl,t.linearAdSlotWidth=e.offsetWidth,t.linearAdSlotHeight=e.offsetHeight,t.nonLinearAdSlotWidth=e.offsetWidth,t.nonLinearAdSlotHeight=e.offsetHeight,t.forceNonLinearFullSlot=!1,t.setAdWillPlayMuted(!this.player.muted),this.loader.requestAds(t)}catch(e){this.onAdError(e)}}},{key:"pollCountdown",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!t)return clearInterval(this.countdownTimer),void this.elements.container.removeAttribute("data-badge-text");var n=function(){var t=Lh(Math.max(e.manager.getRemainingTime(),0)),n="".concat(Th("advertisement",e.player.config)," - ").concat(t);e.elements.container.setAttribute("data-badge-text",n)};this.countdownTimer=setInterval(n,100)}},{key:"onAdsManagerLoaded",value:function(e){var t=this;if(this.enabled){var n=new google.ima.AdsRenderingSettings;n.restoreCustomPlaybackStateOnAdBreakComplete=!0,n.enablePreloading=!0,this.manager=e.getAdsManager(this.player,n),this.cuePoints=this.manager.getCuePoints(),this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(function(e){return t.onAdError(e)})),Object.keys(google.ima.AdEvent.Type).forEach((function(e){t.manager.addEventListener(google.ima.AdEvent.Type[e],(function(e){return t.onAdEvent(e)}))})),this.trigger("loaded")}}},{key:"addCuePoints",value:function(){var e=this;du(this.cuePoints)||this.cuePoints.forEach((function(t){if(0!==t&&-1!==t&&t<e.player.duration){var n=e.player.elements.progress;if(su(n)){var i=100/e.player.duration*t,r=Au("span",{class:e.player.config.classNames.cues});r.style.left="".concat(i.toString(),"%"),n.appendChild(r)}}}))}},{key:"onAdEvent",value:function(e){var t=this,n=this.player.elements.container,i=e.getAd(),r=e.getAdData();switch(function(e){Ku.call(t.player,t.player.media,"ads".concat(e.replace(/_/g,"").toLowerCase()))}(e.type),e.type){case google.ima.AdEvent.Type.LOADED:this.trigger("loaded"),this.pollCountdown(!0),i.isLinear()||(i.width=n.offsetWidth,i.height=n.offsetHeight);break;case google.ima.AdEvent.Type.STARTED:this.manager.setVolume(this.player.volume);break;case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:this.player.ended?this.loadAds():this.loader.contentComplete();break;case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:this.pauseContent();break;case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:this.pollCountdown(),this.resumeContent();break;case google.ima.AdEvent.Type.LOG:r.adError&&this.player.debug.warn("Non-fatal ad error: ".concat(r.adError.getMessage()))}}},{key:"onAdError",value:function(e){this.cancel(),this.player.debug.warn("Ads error",e)}},{key:"listeners",value:function(){var e,t=this,n=this.player.elements.container;this.player.on("canplay",(function(){t.addCuePoints()})),this.player.on("ended",(function(){t.loader.contentComplete()})),this.player.on("timeupdate",(function(){e=t.player.currentTime})),this.player.on("seeked",(function(){var n=t.player.currentTime;du(t.cuePoints)||t.cuePoints.forEach((function(i,r){e<i&&i<n&&(t.manager.discardAdBreak(),t.cuePoints.splice(r,1))}))})),window.addEventListener("resize",(function(){t.manager&&t.manager.resize(n.offsetWidth,n.offsetHeight,google.ima.ViewMode.NORMAL)}))}},{key:"play",value:function(){var e=this,t=this.player.elements.container;this.managerPromise||this.resumeContent(),this.managerPromise.then((function(){e.manager.setVolume(e.player.volume),e.elements.displayContainer.initialize();try{e.initialized||(e.manager.init(t.offsetWidth,t.offsetHeight,google.ima.ViewMode.NORMAL),e.manager.start()),e.initialized=!0}catch(t){e.onAdError(t)}})).catch((function(){}))}},{key:"resumeContent",value:function(){this.elements.container.style.zIndex="",this.playing=!1,Gu(this.player.media.play())}},{key:"pauseContent",value:function(){this.elements.container.style.zIndex=3,this.playing=!0,this.player.media.pause()}},{key:"cancel",value:function(){this.initialized&&this.resumeContent(),this.trigger("error"),this.loadAds()}},{key:"loadAds",value:function(){var e=this;this.managerPromise.then((function(){e.manager&&e.manager.destroy(),e.managerPromise=new Promise((function(t){e.on("loaded",t),e.player.debug.log(e.manager)})),e.initialized=!1,e.requestAds()})).catch((function(){}))}},{key:"trigger",value:function(e){for(var t=this,n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];var a=this.events[e];au(a)&&a.forEach((function(e){ru(e)&&e.apply(t,i)}))}},{key:"on",value:function(e,t){return au(this.events[e])||(this.events[e]=[]),this.events[e].push(t),this}},{key:"startSafetyTimer",value:function(e,t){var n=this;this.player.debug.log("Safety timer invoked from: ".concat(t)),this.safetyTimer=setTimeout((function(){n.cancel(),n.clearSafetyTimer("startSafetyTimer()")}),e)}},{key:"clearSafetyTimer",value:function(e){Zc(this.safetyTimer)||(this.player.debug.log("Safety timer cleared from: ".concat(e)),clearTimeout(this.safetyTimer),this.safetyTimer=null)}},{key:"enabled",get:function(){var e=this.config;return this.player.isHTML5&&this.player.isVideo&&e.enabled&&(!du(e.publisherId)||fu(e.tagUrl))}},{key:"tagUrl",get:function(){var e=this.config;if(fu(e.tagUrl))return e.tagUrl;var t={AV_PUBLISHERID:"58c25bb0073ef448b1087ad6",AV_CHANNELID:"5a0458dc28a06145e4519d21",AV_URL:window.location.hostname,cb:Date.now(),AV_WIDTH:640,AV_HEIGHT:480,AV_CDIM2:e.publisherId};return"".concat("https://go.aniview.com/api/adserver6/vast/","?").concat(Rh(t))}}]),e}(),cf=ct.findIndex,uf=!0,hf=Qt("findIndex");"findIndex"in[]&&Array(1).findIndex((function(){uf=!1})),Ie({target:"Array",proto:!0,forced:uf||!hf},{findIndex:function(e){return cf(this,e,arguments.length>1?arguments[1]:void 0)}}),dn("findIndex");var ff=Math.min,df=[].lastIndexOf,pf=!!df&&1/[1].lastIndexOf(1,-0)<0,mf=$t("lastIndexOf"),gf=Qt("indexOf",{ACCESSORS:!0,1:0}),vf=pf||!mf||!gf?function(e){if(pf)return df.apply(this,arguments)||0;var t=m(this),n=le(t.length),i=n-1;for(arguments.length>1&&(i=ff(i,oe(arguments[1]))),i<0&&(i=n+i);i>=0;i--)if(i in t&&t[i]===e)return i||0;return-1}:df;Ie({target:"Array",proto:!0,forced:vf!==[].lastIndexOf},{lastIndexOf:vf});var yf=function(e,t){var n={};return e>t.width/t.height?(n.width=t.width,n.height=1/e*t.width):(n.height=t.height,n.width=e*t.height),n},bf=function(){function e(t){yo(this,e),this.player=t,this.thumbnails=[],this.loaded=!1,this.lastMouseMoveTime=Date.now(),this.mouseDown=!1,this.loadedImages=[],this.elements={thumb:{},scrubbing:{}},this.load()}return wo(e,[{key:"load",value:function(){var e=this;this.player.elements.display.seekTooltip&&(this.player.elements.display.seekTooltip.hidden=this.enabled),this.enabled&&this.getThumbnails().then((function(){e.enabled&&(e.render(),e.determineContainerAutoSizing(),e.loaded=!0)}))}},{key:"getThumbnails",value:function(){var e=this;return new Promise((function(t){var n=e.player.config.previewThumbnails.src;if(du(n))throw new Error("Missing previewThumbnails.src config attribute");var i=function(){e.thumbnails.sort((function(e,t){return e.height-t.height})),e.player.debug.log("Preview thumbnails",e.thumbnails),t()};if(ru(n))n((function(t){e.thumbnails=t,i()}));else{var r=(nu(n)?[n]:n).map((function(t){return e.getThumbnail(t)}));Promise.all(r).then(i)}}))}},{key:"getThumbnail",value:function(e){var t=this;return new Promise((function(n){Eh(e).then((function(i){var r,a,o={frames:(r=i,a=[],r.split(/\r\n\r\n|\n\n|\r\r/).forEach((function(e){var t={};e.split(/\r\n|\n|\r/).forEach((function(e){if(tu(t.startTime)){if(!du(e.trim())&&du(t.text)){var n=e.trim().split("#xywh="),i=Ao(n,1);if(t.text=i[0],n[1]){var r=Ao(n[1].split(","),4);t.x=r[0],t.y=r[1],t.w=r[2],t.h=r[3]}}}else{var a=e.match(/([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})( ?--> ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/);a&&(t.startTime=60*Number(a[1]||0)*60+60*Number(a[2])+Number(a[3])+Number("0.".concat(a[4])),t.endTime=60*Number(a[6]||0)*60+60*Number(a[7])+Number(a[8])+Number("0.".concat(a[9])))}})),t.text&&a.push(t)})),a),height:null,urlPrefix:""};o.frames[0].text.startsWith("/")||o.frames[0].text.startsWith("http://")||o.frames[0].text.startsWith("https://")||(o.urlPrefix=e.substring(0,e.lastIndexOf("/")+1));var s=new Image;s.onload=function(){o.height=s.naturalHeight,o.width=s.naturalWidth,t.thumbnails.push(o),n()},s.src=o.urlPrefix+o.frames[0].text}))}))}},{key:"startMove",value:function(e){if(this.loaded&&lu(e)&&["touchmove","mousemove"].includes(e.type)&&this.player.media.duration){if("touchmove"===e.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{var t=this.player.elements.progress.getBoundingClientRect(),n=100/t.width*(e.pageX-t.left);this.seekTime=this.player.media.duration*(n/100),this.seekTime<0&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=e.pageX,this.elements.thumb.time.innerText=Lh(this.seekTime)}this.showImageAtCurrentTime()}}},{key:"endMove",value:function(){this.toggleThumbContainer(!1,!0)}},{key:"startScrubbing",value:function(e){(Zc(e.button)||!1===e.button||0===e.button)&&(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))}},{key:"endScrubbing",value:function(){var e=this;this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):Wu.call(this.player,this.player.media,"timeupdate",(function(){e.mouseDown||e.toggleScrubbingContainer(!1)}))}},{key:"listeners",value:function(){var e=this;this.player.on("play",(function(){e.toggleThumbContainer(!1,!0)})),this.player.on("seeked",(function(){e.toggleThumbContainer(!1)})),this.player.on("timeupdate",(function(){e.lastTime=e.player.media.currentTime}))}},{key:"render",value:function(){this.elements.thumb.container=Au("div",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=Au("div",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);var e=Au("div",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=Au("span",{},"00:00"),e.appendChild(this.elements.thumb.time),this.elements.thumb.container.appendChild(e),su(this.player.elements.progress)&&this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=Au("div",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)}},{key:"destroy",value:function(){this.elements.thumb.container&&this.elements.thumb.container.remove(),this.elements.scrubbing.container&&this.elements.scrubbing.container.remove()}},{key:"showImageAtCurrentTime",value:function(){var e=this;this.mouseDown?this.setScrubbingContainerSize():this.setThumbContainerSizeAndPos();var t=this.thumbnails[0].frames.findIndex((function(t){return e.seekTime>=t.startTime&&e.seekTime<=t.endTime})),n=t>=0,i=0;this.mouseDown||this.toggleThumbContainer(n),n&&(this.thumbnails.forEach((function(n,r){e.loadedImages.includes(n.frames[t].text)&&(i=r)})),t!==this.showingThumb&&(this.showingThumb=t,this.loadImage(i)))}},{key:"loadImage",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=this.showingThumb,i=this.thumbnails[t],r=i.urlPrefix,a=i.frames[n],o=i.frames[n].text,s=r+o;if(this.currentImageElement&&this.currentImageElement.dataset.filename===o)this.showImage(this.currentImageElement,a,t,n,o,!1),this.currentImageElement.dataset.index=n,this.removeOldImages(this.currentImageElement);else{this.loadingImage&&this.usingSprites&&(this.loadingImage.onload=null);var l=new Image;l.src=s,l.dataset.index=n,l.dataset.filename=o,this.showingThumbFilename=o,this.player.debug.log("Loading image: ".concat(s)),l.onload=function(){return e.showImage(l,a,t,n,o,!0)},this.loadingImage=l,this.removeOldImages(l)}}},{key:"showImage",value:function(e,t,n,i,r){var a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];this.player.debug.log("Showing thumb: ".concat(r,". num: ").concat(i,". qual: ").concat(n,". newimg: ").concat(a)),this.setImageSizeAndOffset(e,t),a&&(this.currentImageContainer.appendChild(e),this.currentImageElement=e,this.loadedImages.includes(r)||this.loadedImages.push(r)),this.preloadNearby(i,!0).then(this.preloadNearby(i,!1)).then(this.getHigherQuality(n,e,t,r))}},{key:"removeOldImages",value:function(e){var t=this;Array.from(this.currentImageContainer.children).forEach((function(n){if("img"===n.tagName.toLowerCase()){var i=t.usingSprites?500:1e3;if(n.dataset.index!==e.dataset.index&&!n.dataset.deleting){n.dataset.deleting=!0;var r=t.currentImageContainer;setTimeout((function(){r.removeChild(n),t.player.debug.log("Removing thumb: ".concat(n.dataset.filename))}),i)}}}))}},{key:"preloadNearby",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return new Promise((function(i){setTimeout((function(){var r=t.thumbnails[0].frames[e].text;if(t.showingThumbFilename===r){var a;a=n?t.thumbnails[0].frames.slice(e):t.thumbnails[0].frames.slice(0,e).reverse();var o=!1;a.forEach((function(e){var n=e.text;if(n!==r&&!t.loadedImages.includes(n)){o=!0,t.player.debug.log("Preloading thumb filename: ".concat(n));var a=t.thumbnails[0].urlPrefix+n,s=new Image;s.src=a,s.onload=function(){t.player.debug.log("Preloaded thumb filename: ".concat(n)),t.loadedImages.includes(n)||t.loadedImages.push(n),i()}}})),o||i()}}),300)}))}},{key:"getHigherQuality",value:function(e,t,n,i){var r=this;if(e<this.thumbnails.length-1){var a=t.naturalHeight;this.usingSprites&&(a=n.h),a<this.thumbContainerHeight&&setTimeout((function(){r.showingThumbFilename===i&&(r.player.debug.log("Showing higher quality thumb for: ".concat(i)),r.loadImage(e+1))}),300)}}},{key:"toggleThumbContainer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.player.config.classNames.previewThumbnails.thumbContainerShown;this.elements.thumb.container.classList.toggle(n,e),!e&&t&&(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"toggleScrubbingContainer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.player.config.classNames.previewThumbnails.scrubbingContainerShown;this.elements.scrubbing.container.classList.toggle(t,e),e||(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"determineContainerAutoSizing",value:function(){(this.elements.thumb.imageContainer.clientHeight>20||this.elements.thumb.imageContainer.clientWidth>20)&&(this.sizeSpecifiedInCSS=!0)}},{key:"setThumbContainerSizeAndPos",value:function(){if(this.sizeSpecifiedInCSS){if(this.elements.thumb.imageContainer.clientHeight>20&&this.elements.thumb.imageContainer.clientWidth<20){var e=Math.floor(this.elements.thumb.imageContainer.clientHeight*this.thumbAspectRatio);this.elements.thumb.imageContainer.style.width="".concat(e,"px")}else if(this.elements.thumb.imageContainer.clientHeight<20&&this.elements.thumb.imageContainer.clientWidth>20){var t=Math.floor(this.elements.thumb.imageContainer.clientWidth/this.thumbAspectRatio);this.elements.thumb.imageContainer.style.height="".concat(t,"px")}}else{var n=Math.floor(this.thumbContainerHeight*this.thumbAspectRatio);this.elements.thumb.imageContainer.style.height="".concat(this.thumbContainerHeight,"px"),this.elements.thumb.imageContainer.style.width="".concat(n,"px")}this.setThumbContainerPos()}},{key:"setThumbContainerPos",value:function(){var e=this.player.elements.progress.getBoundingClientRect(),t=this.player.elements.container.getBoundingClientRect(),n=this.elements.thumb.container,i=t.left-e.left+10,r=t.right-e.left-n.clientWidth-10,a=this.mousePosX-e.left-n.clientWidth/2;a<i&&(a=i),a>r&&(a=r),n.style.left="".concat(a,"px")}},{key:"setScrubbingContainerSize",value:function(){var e=yf(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight}),t=e.width,n=e.height;this.elements.scrubbing.container.style.width="".concat(t,"px"),this.elements.scrubbing.container.style.height="".concat(n,"px")}},{key:"setImageSizeAndOffset",value:function(e,t){if(this.usingSprites){var n=this.thumbContainerHeight/t.h;e.style.height="".concat(e.naturalHeight*n,"px"),e.style.width="".concat(e.naturalWidth*n,"px"),e.style.left="-".concat(t.x*n,"px"),e.style.top="-".concat(t.y*n,"px")}}},{key:"enabled",get:function(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}},{key:"currentImageContainer",get:function(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}},{key:"usingSprites",get:function(){return Object.keys(this.thumbnails[0].frames[0]).includes("w")}},{key:"thumbAspectRatio",get:function(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}},{key:"thumbContainerHeight",get:function(){return this.mouseDown?yf(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight}).height:this.sizeSpecifiedInCSS?this.elements.thumb.imageContainer.clientHeight:Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}},{key:"currentImageElement",get:function(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement},set:function(e){this.mouseDown?this.currentScrubbingImageElement=e:this.currentThumbnailImageElement=e}}]),e}(),wf={insertElements:function(e,t){var n=this;nu(t)?Pu(e,this.media,{src:t}):au(t)&&t.forEach((function(t){Pu(e,n.media,t)}))},change:function(e){var t=this;ku(e,"sources.length")?(eh.cancelRequests.call(this),this.destroy.call(this,(function(){t.options.quality=[],xu(t.media),t.media=null,su(t.elements.container)&&t.elements.container.removeAttribute("class");var n=e.sources,i=e.type,r=Ao(n,1)[0],a=r.provider,o=void 0===a?Fh.html5:a,s=r.src,l="html5"===o?i:"div",c="html5"===o?{}:{src:s};Object.assign(t,{provider:o,type:i,supported:qu.check(i,o,t.config.playsinline),media:Au(l,c)}),t.elements.container.appendChild(t.media),iu(e.autoplay)&&(t.config.autoplay=e.autoplay),t.isHTML5&&(t.config.crossorigin&&t.media.setAttribute("crossorigin",""),t.config.autoplay&&t.media.setAttribute("autoplay",""),du(e.poster)||(t.poster=e.poster),t.config.loop.active&&t.media.setAttribute("loop",""),t.config.muted&&t.media.setAttribute("muted",""),t.config.playsinline&&t.media.setAttribute("playsinline","")),$h.addStyleHook.call(t),t.isHTML5&&wf.insertElements.call(t,"source",n),t.config.title=e.title,sf.setup.call(t),t.isHTML5&&Object.keys(e).includes("tracks")&&wf.insertElements.call(t,"track",e.tracks),(t.isHTML5||t.isEmbed&&!t.supported.ui)&&$h.build.call(t),t.isHTML5&&t.media.load(),du(e.previewThumbnails)||(Object.assign(t.config.previewThumbnails,e.previewThumbnails),t.previewThumbnails&&t.previewThumbnails.loaded&&(t.previewThumbnails.destroy(),t.previewThumbnails=null),t.config.previewThumbnails.enabled&&(t.previewThumbnails=new bf(t))),t.fullscreen.update()}),!0)):this.debug.warn("Invalid source format")}};var kf,Tf=function(){function e(t,n){var i=this;if(yo(this,e),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=qu.touch,this.media=t,nu(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||ou(this.media)||au(this.media))&&(this.media=this.media[0]),this.config=Tu({},_h,e.defaults,n||{},function(){try{return JSON.parse(i.media.getAttribute("data-plyr-config"))}catch(e){return{}}}()),this.elements={container:null,fullscreen:null,captions:null,buttons:{},display:{},progress:{},inputs:{},settings:{popup:null,menu:null,panels:{},buttons:{}}},this.captions={active:null,currentTrack:-1,meta:new WeakMap},this.fullscreen={active:!1},this.options={speed:[],quality:[]},this.debug=new Vh(this.config.debug),this.debug.log("Config",this.config),this.debug.log("Support",qu),!Zc(this.media)&&su(this.media))if(this.media.plyr)this.debug.warn("Target already setup");else if(this.config.enabled)if(qu.check().api){var r=this.media.cloneNode(!0);r.autoplay=!1,this.elements.original=r;var a=this.media.tagName.toLowerCase(),o=null,s=null;switch(a){case"div":if(o=this.media.querySelector("iframe"),su(o)){if(s=Nh(o.getAttribute("src")),this.provider=function(e){return/^(https?:\/\/)?(www\.)?(youtube\.com|youtube-nocookie\.com|youtu\.?be)\/.+$/.test(e)?Fh.youtube:/^https?:\/\/player.vimeo.com\/video\/\d{0,9}(?=\b|\/)/.test(e)?Fh.vimeo:null}(s.toString()),this.elements.container=this.media,this.media=o,this.elements.container.className="",s.search.length){var l=["1","true"];l.includes(s.searchParams.get("autoplay"))&&(this.config.autoplay=!0),l.includes(s.searchParams.get("loop"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=l.includes(s.searchParams.get("playsinline")),this.config.youtube.hl=s.searchParams.get("hl")):this.config.playsinline=!0}}else this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider);if(du(this.provider)||!Object.keys(Fh).includes(this.provider))return void this.debug.error("Setup failed: Invalid provider");this.type=Hh;break;case"video":case"audio":this.type=a,this.provider=Fh.html5,this.media.hasAttribute("crossorigin")&&(this.config.crossorigin=!0),this.media.hasAttribute("autoplay")&&(this.config.autoplay=!0),(this.media.hasAttribute("playsinline")||this.media.hasAttribute("webkit-playsinline"))&&(this.config.playsinline=!0),this.media.hasAttribute("muted")&&(this.config.muted=!0),this.media.hasAttribute("loop")&&(this.config.loop.active=!0);break;default:return void this.debug.error("Setup failed: unsupported type")}this.supported=qu.check(this.type,this.provider,this.config.playsinline),this.supported.api?(this.eventListeners=[],this.listeners=new Yh(this),this.storage=new Sh(this),this.media.plyr=this,su(this.elements.container)||(this.elements.container=Au("div",{tabindex:0}),Su(this.media,this.elements.container)),$h.migrateStyles.call(this),$h.addStyleHook.call(this),sf.setup.call(this),this.config.debug&&Vu.call(this,this.elements.container,this.config.events.join(" "),(function(e){i.debug.log("event: ".concat(e.type))})),this.fullscreen=new zh(this),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&$h.build.call(this),this.listeners.container(),this.listeners.global(),this.config.ads.enabled&&(this.ads=new lf(this)),this.isHTML5&&this.config.autoplay&&setTimeout((function(){return Gu(i.play())}),10),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new bf(this))):this.debug.error("Setup failed: no support")}else this.debug.error("Setup failed: no support");else this.debug.error("Setup failed: disabled by config");else this.debug.error("Setup failed: no suitable element passed")}return wo(e,[{key:"play",value:function(){var e=this;return ru(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then((function(){return e.ads.play()})).catch((function(){return Gu(e.media.play())})),this.media.play()):null}},{key:"pause",value:function(){return this.playing&&ru(this.media.pause)?this.media.pause():null}},{key:"togglePlay",value:function(e){return(iu(e)?e:!this.playing)?this.play():this.pause()}},{key:"stop",value:function(){this.isHTML5?(this.pause(),this.restart()):ru(this.media.stop)&&this.media.stop()}},{key:"restart",value:function(){this.currentTime=0}},{key:"rewind",value:function(e){this.currentTime-=tu(e)?e:this.config.seekTime}},{key:"forward",value:function(e){this.currentTime+=tu(e)?e:this.config.seekTime}},{key:"increaseVolume",value:function(e){var t=this.media.muted?0:this.volume;this.volume=t+(tu(e)?e:0)}},{key:"decreaseVolume",value:function(e){this.increaseVolume(-e)}},{key:"toggleCaptions",value:function(e){Mh.toggle.call(this,e,!1)}},{key:"airplay",value:function(){qu.airplay&&this.media.webkitShowPlaybackTargetPicker()}},{key:"toggleControls",value:function(e){if(this.supported.ui&&!this.isAudio){var t=Nu(this.elements.container,this.config.classNames.hideControls),n=void 0===e?void 0:!e,i=ju(this.elements.container,this.config.classNames.hideControls,n);if(i&&au(this.config.controls)&&this.config.controls.includes("settings")&&!du(this.config.settings)&&jh.toggleMenu.call(this,!1),i!==t){var r=i?"controlshidden":"controlsshown";Ku.call(this,this.media,r)}return!i}return!1}},{key:"on",value:function(e,t){Vu.call(this,this.elements.container,e,t)}},{key:"once",value:function(e,t){Wu.call(this,this.elements.container,e,t)}},{key:"off",value:function(e,t){zu(this.elements.container,e,t)}},{key:"destroy",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.ready){var i=function(){document.body.style.overflow="",t.embed=null,n?(Object.keys(t.elements).length&&(xu(t.elements.buttons.play),xu(t.elements.captions),xu(t.elements.controls),xu(t.elements.wrapper),t.elements.buttons.play=null,t.elements.captions=null,t.elements.controls=null,t.elements.wrapper=null),ru(e)&&e()):($u.call(t),Ou(t.elements.original,t.elements.container),Ku.call(t,t.elements.original,"destroyed",!0),ru(e)&&e.call(t.elements.original),t.ready=!1,setTimeout((function(){t.elements=null,t.media=null}),200))};this.stop(),clearTimeout(this.timers.loading),clearTimeout(this.timers.controls),clearTimeout(this.timers.resized),this.isHTML5?($h.toggleNativeControls.call(this,!0),i()):this.isYouTube?(clearInterval(this.timers.buffering),clearInterval(this.timers.playing),null!==this.embed&&ru(this.embed.destroy)&&this.embed.destroy(),i()):this.isVimeo&&(null!==this.embed&&this.embed.unload().then(i),setTimeout(i,200))}}},{key:"supports",value:function(e){return qu.mime.call(this,e)}},{key:"isHTML5",get:function(){return this.provider===Fh.html5}},{key:"isEmbed",get:function(){return this.isYouTube||this.isVimeo}},{key:"isYouTube",get:function(){return this.provider===Fh.youtube}},{key:"isVimeo",get:function(){return this.provider===Fh.vimeo}},{key:"isVideo",get:function(){return this.type===Hh}},{key:"isAudio",get:function(){return this.type===qh}},{key:"playing",get:function(){return Boolean(this.ready&&!this.paused&&!this.ended)}},{key:"paused",get:function(){return Boolean(this.media.paused)}},{key:"stopped",get:function(){return Boolean(this.paused&&0===this.currentTime)}},{key:"ended",get:function(){return Boolean(this.media.ended)}},{key:"currentTime",set:function(e){if(this.duration){var t=tu(e)&&e>0;this.media.currentTime=t?Math.min(e,this.duration):0,this.debug.log("Seeking to ".concat(this.currentTime," seconds"))}},get:function(){return Number(this.media.currentTime)}},{key:"buffered",get:function(){var e=this.media.buffered;return tu(e)?e:e&&e.length&&this.duration>0?e.end(0)/this.duration:0}},{key:"seeking",get:function(){return Boolean(this.media.seeking)}},{key:"duration",get:function(){var e=parseFloat(this.config.duration),t=(this.media||{}).duration,n=tu(t)&&t!==1/0?t:0;return e||n}},{key:"volume",set:function(e){var t=e;nu(t)&&(t=Number(t)),tu(t)||(t=this.storage.get("volume")),tu(t)||(t=this.config.volume),t>1&&(t=1),t<0&&(t=0),this.config.volume=t,this.media.volume=t,!du(e)&&this.muted&&t>0&&(this.muted=!1)},get:function(){return Number(this.media.volume)}},{key:"muted",set:function(e){var t=e;iu(t)||(t=this.storage.get("muted")),iu(t)||(t=this.config.muted),this.config.muted=t,this.media.muted=t},get:function(){return Boolean(this.media.muted)}},{key:"hasAudio",get:function(){return!this.isHTML5||(!!this.isAudio||(Boolean(this.media.mozHasAudio)||Boolean(this.media.webkitAudioDecodedByteCount)||Boolean(this.media.audioTracks&&this.media.audioTracks.length)))}},{key:"speed",set:function(e){var t=this,n=null;tu(e)&&(n=e),tu(n)||(n=this.storage.get("speed")),tu(n)||(n=this.config.speed.selected);var i=this.minimumSpeed,r=this.maximumSpeed;n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:255;return Math.min(Math.max(e,t),n)}(n,i,r),this.config.speed.selected=n,setTimeout((function(){t.media.playbackRate=n}),0)},get:function(){return Number(this.media.playbackRate)}},{key:"minimumSpeed",get:function(){return this.isYouTube?Math.min.apply(Math,Po(this.options.speed)):this.isVimeo?.5:.0625}},{key:"maximumSpeed",get:function(){return this.isYouTube?Math.max.apply(Math,Po(this.options.speed)):this.isVimeo?2:16}},{key:"quality",set:function(e){var t=this.config.quality,n=this.options.quality;if(n.length){var i=[!du(e)&&Number(e),this.storage.get("quality"),t.selected,t.default].find(tu),r=!0;if(!n.includes(i)){var a=function(e,t){return au(e)&&e.length?e.reduce((function(e,n){return Math.abs(n-t)<Math.abs(e-t)?n:e})):null}(n,i);this.debug.warn("Unsupported quality option: ".concat(i,", using ").concat(a," instead")),i=a,r=!1}t.selected=i,this.media.quality=i,r&&this.storage.set({quality:i})}},get:function(){return this.media.quality}},{key:"loop",set:function(e){var t=iu(e)?e:this.config.loop.active;this.config.loop.active=t,this.media.loop=t},get:function(){return Boolean(this.media.loop)}},{key:"source",set:function(e){wf.change.call(this,e)},get:function(){return this.media.currentSrc}},{key:"download",get:function(){var e=this.config.urls.download;return fu(e)?e:this.source},set:function(e){fu(e)&&(this.config.urls.download=e,jh.setDownloadUrl.call(this))}},{key:"poster",set:function(e){this.isVideo?$h.setPoster.call(this,e,!1).catch((function(){})):this.debug.warn("Poster can only be set for video")},get:function(){return this.isVideo?this.media.getAttribute("poster")||this.media.getAttribute("data-poster"):null}},{key:"ratio",get:function(){if(!this.isVideo)return null;var e=Qu(Ju.call(this));return au(e)?e.join(":"):e},set:function(e){this.isVideo?nu(e)&&Xu(e)?(this.config.ratio=e,Zu.call(this)):this.debug.error("Invalid aspect ratio specified (".concat(e,")")):this.debug.warn("Aspect ratio can only be set for video")}},{key:"autoplay",set:function(e){var t=iu(e)?e:this.config.autoplay;this.config.autoplay=t},get:function(){return Boolean(this.config.autoplay)}},{key:"currentTrack",set:function(e){Mh.set.call(this,e,!1)},get:function(){var e=this.captions,t=e.toggled,n=e.currentTrack;return t?n:-1}},{key:"language",set:function(e){Mh.setLanguage.call(this,e,!1)},get:function(){return(Mh.getCurrentTrack.call(this)||{}).language}},{key:"pip",set:function(e){if(qu.pip){var t=iu(e)?e:!this.pip;ru(this.media.webkitSetPresentationMode)&&this.media.webkitSetPresentationMode(t?Uh:Dh),ru(this.media.requestPictureInPicture)&&(!this.pip&&t?this.media.requestPictureInPicture():this.pip&&!t&&document.exitPictureInPicture())}},get:function(){return qu.pip?du(this.media.webkitPresentationMode)?this.media===document.pictureInPictureElement:this.media.webkitPresentationMode===Uh:null}}],[{key:"supported",value:function(e,t,n){return qu.check(e,t,n)}},{key:"loadSprite",value:function(e,t){return Ah(e,t)}},{key:"setup",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=null;return nu(t)?i=Array.from(document.querySelectorAll(t)):ou(t)?i=Array.from(t):au(t)&&(i=t.filter(su)),du(i)?null:i.map((function(t){return new e(t,n)}))}}]),e}();return Tf.defaults=(kf=_h,JSON.parse(JSON.stringify(kf))),Tf}));
4
- //# sourceMappingURL=plyr.polyfilled.min.js.map
1
  "object"==typeof navigator&&function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Plyr",t):(e=e||self).Plyr=t()}(this,(function(){"use strict";!function(){if("undefined"!=typeof window)try{var e=new window.CustomEvent("test",{cancelable:!0});if(e.preventDefault(),!0!==e.defaultPrevented)throw new Error("Could not prevent default")}catch(e){var t=function(e,t){var n,i;return(t=t||{}).bubbles=!!t.bubbles,t.cancelable=!!t.cancelable,(n=document.createEvent("CustomEvent")).initCustomEvent(e,t.bubbles,t.cancelable,t.detail),i=n.preventDefault,n.preventDefault=function(){i.call(this);try{Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})}catch(e){this.defaultPrevented=!0}},n};t.prototype=window.Event.prototype,window.CustomEvent=t}}();var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e,t){return e(t={exports:{}},t.exports),t.exports}var n=function(e){return e&&e.Math==Math&&e},i=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||Function("return this")(),r=function(e){try{return!!e()}catch(e){return!0}},a=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),o={}.propertyIsEnumerable,s=Object.getOwnPropertyDescriptor,l={f:s&&!o.call({1:2},1)?function(e){var t=s(this,e);return!!t&&t.enumerable}:o},c=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},u={}.toString,h=function(e){return u.call(e).slice(8,-1)},f="".split,d=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==h(e)?f.call(e,""):Object(e)}:Object,p=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},m=function(e){return d(p(e))},g=function(e){return"object"==typeof e?null!==e:"function"==typeof e},v=function(e,t){if(!g(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!g(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!g(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!g(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")},y={}.hasOwnProperty,b=function(e,t){return y.call(e,t)},w=i.document,k=g(w)&&g(w.createElement),T=function(e){return k?w.createElement(e):{}},S=!a&&!r((function(){return 7!=Object.defineProperty(T("div"),"a",{get:function(){return 7}}).a})),E=Object.getOwnPropertyDescriptor,A={f:a?E:function(e,t){if(e=m(e),t=v(t,!0),S)try{return E(e,t)}catch(e){}if(b(e,t))return c(!l.f.call(e,t),e[t])}},P=function(e){if(!g(e))throw TypeError(String(e)+" is not an object");return e},x=Object.defineProperty,C={f:a?x:function(e,t,n){if(P(e),t=v(t,!0),P(n),S)try{return x(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},O=a?function(e,t,n){return C.f(e,t,c(1,n))}:function(e,t,n){return e[t]=n,e},I=function(e,t){try{O(i,e,t)}catch(n){i[e]=t}return t},L=i["__core-js_shared__"]||I("__core-js_shared__",{}),j=Function.toString;"function"!=typeof L.inspectSource&&(L.inspectSource=function(e){return j.call(e)});var N,R,M,_=L.inspectSource,U=i.WeakMap,D="function"==typeof U&&/native code/.test(_(U)),F=t((function(e){(e.exports=function(e,t){return L[e]||(L[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.6.5",mode:"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})})),q=0,H=Math.random(),B=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++q+H).toString(36)},V=F("keys"),z=function(e){return V[e]||(V[e]=B(e))},W={},K=i.WeakMap;if(D){var $=new K,Y=$.get,G=$.has,X=$.set;N=function(e,t){return X.call($,e,t),t},R=function(e){return Y.call($,e)||{}},M=function(e){return G.call($,e)}}else{var Q=z("state");W[Q]=!0,N=function(e,t){return O(e,Q,t),t},R=function(e){return b(e,Q)?e[Q]:{}},M=function(e){return b(e,Q)}}var J,Z={set:N,get:R,has:M,enforce:function(e){return M(e)?R(e):N(e,{})},getterFor:function(e){return function(t){var n;if(!g(t)||(n=R(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},ee=t((function(e){var t=Z.get,n=Z.enforce,r=String(String).split("String");(e.exports=function(e,t,a,o){var s=!!o&&!!o.unsafe,l=!!o&&!!o.enumerable,c=!!o&&!!o.noTargetGet;"function"==typeof a&&("string"!=typeof t||b(a,"name")||O(a,"name",t),n(a).source=r.join("string"==typeof t?t:"")),e!==i?(s?!c&&e[t]&&(l=!0):delete e[t],l?e[t]=a:O(e,t,a)):l?e[t]=a:I(t,a)})(Function.prototype,"toString",(function(){return"function"==typeof this&&t(this).source||_(this)}))})),te=i,ne=function(e){return"function"==typeof e?e:void 0},ie=function(e,t){return arguments.length<2?ne(te[e])||ne(i[e]):te[e]&&te[e][t]||i[e]&&i[e][t]},re=Math.ceil,ae=Math.floor,oe=function(e){return isNaN(e=+e)?0:(e>0?ae:re)(e)},se=Math.min,le=function(e){return e>0?se(oe(e),9007199254740991):0},ce=Math.max,ue=Math.min,he=function(e,t){var n=oe(e);return n<0?ce(n+t,0):ue(n,t)},fe=function(e){return function(t,n,i){var r,a=m(t),o=le(a.length),s=he(i,o);if(e&&n!=n){for(;o>s;)if((r=a[s++])!=r)return!0}else for(;o>s;s++)if((e||s in a)&&a[s]===n)return e||s||0;return!e&&-1}},de={includes:fe(!0),indexOf:fe(!1)},pe=de.indexOf,me=function(e,t){var n,i=m(e),r=0,a=[];for(n in i)!b(W,n)&&b(i,n)&&a.push(n);for(;t.length>r;)b(i,n=t[r++])&&(~pe(a,n)||a.push(n));return a},ge=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],ve=ge.concat("length","prototype"),ye={f:Object.getOwnPropertyNames||function(e){return me(e,ve)}},be={f:Object.getOwnPropertySymbols},we=ie("Reflect","ownKeys")||function(e){var t=ye.f(P(e)),n=be.f;return n?t.concat(n(e)):t},ke=function(e,t){for(var n=we(t),i=C.f,r=A.f,a=0;a<n.length;a++){var o=n[a];b(e,o)||i(e,o,r(t,o))}},Te=/#|\.prototype\./,Se=function(e,t){var n=Ae[Ee(e)];return n==xe||n!=Pe&&("function"==typeof t?r(t):!!t)},Ee=Se.normalize=function(e){return String(e).replace(Te,".").toLowerCase()},Ae=Se.data={},Pe=Se.NATIVE="N",xe=Se.POLYFILL="P",Ce=Se,Oe=A.f,Ie=function(e,t){var n,r,a,o,s,l=e.target,c=e.global,u=e.stat;if(n=c?i:u?i[l]||I(l,{}):(i[l]||{}).prototype)for(r in t){if(o=t[r],a=e.noTargetGet?(s=Oe(n,r))&&s.value:n[r],!Ce(c?r:l+(u?".":"#")+r,e.forced)&&void 0!==a){if(typeof o==typeof a)continue;ke(o,a)}(e.sham||a&&a.sham)&&O(o,"sham",!0),ee(n,r,o,e)}},Le=!!Object.getOwnPropertySymbols&&!r((function(){return!String(Symbol())})),je=Le&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,Ne=Array.isArray||function(e){return"Array"==h(e)},Re=function(e){return Object(p(e))},Me=Object.keys||function(e){return me(e,ge)},_e=a?Object.defineProperties:function(e,t){P(e);for(var n,i=Me(t),r=i.length,a=0;r>a;)C.f(e,n=i[a++],t[n]);return e},Ue=ie("document","documentElement"),De=z("IE_PROTO"),Fe=function(){},qe=function(e){return"<script>"+e+"<\/script>"},He=function(){try{J=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t;He=J?function(e){e.write(qe("")),e.close();var t=e.parentWindow.Object;return e=null,t}(J):((t=T("iframe")).style.display="none",Ue.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(qe("document.F=Object")),e.close(),e.F);for(var n=ge.length;n--;)delete He.prototype[ge[n]];return He()};W[De]=!0;var Be=Object.create||function(e,t){var n;return null!==e?(Fe.prototype=P(e),n=new Fe,Fe.prototype=null,n[De]=e):n=He(),void 0===t?n:_e(n,t)},Ve=ye.f,ze={}.toString,We="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],Ke={f:function(e){return We&&"[object Window]"==ze.call(e)?function(e){try{return Ve(e)}catch(e){return We.slice()}}(e):Ve(m(e))}},$e=F("wks"),Ye=i.Symbol,Ge=je?Ye:Ye&&Ye.withoutSetter||B,Xe=function(e){return b($e,e)||(Le&&b(Ye,e)?$e[e]=Ye[e]:$e[e]=Ge("Symbol."+e)),$e[e]},Qe={f:Xe},Je=C.f,Ze=function(e){var t=te.Symbol||(te.Symbol={});b(t,e)||Je(t,e,{value:Qe.f(e)})},et=C.f,tt=Xe("toStringTag"),nt=function(e,t,n){e&&!b(e=n?e:e.prototype,tt)&&et(e,tt,{configurable:!0,value:t})},it=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e},rt=function(e,t,n){if(it(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,r){return e.call(t,n,i,r)}}return function(){return e.apply(t,arguments)}},at=Xe("species"),ot=function(e,t){var n;return Ne(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!Ne(n.prototype)?g(n)&&null===(n=n[at])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)},st=[].push,lt=function(e){var t=1==e,n=2==e,i=3==e,r=4==e,a=6==e,o=5==e||a;return function(s,l,c,u){for(var h,f,p=Re(s),m=d(p),g=rt(l,c,3),v=le(m.length),y=0,b=u||ot,w=t?b(s,v):n?b(s,0):void 0;v>y;y++)if((o||y in m)&&(f=g(h=m[y],y,p),e))if(t)w[y]=f;else if(f)switch(e){case 3:return!0;case 5:return h;case 6:return y;case 2:st.call(w,h)}else if(r)return!1;return a?-1:i||r?r:w}},ct={forEach:lt(0),map:lt(1),filter:lt(2),some:lt(3),every:lt(4),find:lt(5),findIndex:lt(6)},ut=ct.forEach,ht=z("hidden"),ft=Xe("toPrimitive"),dt=Z.set,pt=Z.getterFor("Symbol"),mt=Object.prototype,gt=i.Symbol,vt=ie("JSON","stringify"),yt=A.f,bt=C.f,wt=Ke.f,kt=l.f,Tt=F("symbols"),St=F("op-symbols"),Et=F("string-to-symbol-registry"),At=F("symbol-to-string-registry"),Pt=F("wks"),xt=i.QObject,Ct=!xt||!xt.prototype||!xt.prototype.findChild,Ot=a&&r((function(){return 7!=Be(bt({},"a",{get:function(){return bt(this,"a",{value:7}).a}})).a}))?function(e,t,n){var i=yt(mt,t);i&&delete mt[t],bt(e,t,n),i&&e!==mt&&bt(mt,t,i)}:bt,It=function(e,t){var n=Tt[e]=Be(gt.prototype);return dt(n,{type:"Symbol",tag:e,description:t}),a||(n.description=t),n},Lt=je?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof gt},jt=function(e,t,n){e===mt&&jt(St,t,n),P(e);var i=v(t,!0);return P(n),b(Tt,i)?(n.enumerable?(b(e,ht)&&e[ht][i]&&(e[ht][i]=!1),n=Be(n,{enumerable:c(0,!1)})):(b(e,ht)||bt(e,ht,c(1,{})),e[ht][i]=!0),Ot(e,i,n)):bt(e,i,n)},Nt=function(e,t){P(e);var n=m(t),i=Me(n).concat(Ut(n));return ut(i,(function(t){a&&!Rt.call(n,t)||jt(e,t,n[t])})),e},Rt=function(e){var t=v(e,!0),n=kt.call(this,t);return!(this===mt&&b(Tt,t)&&!b(St,t))&&(!(n||!b(this,t)||!b(Tt,t)||b(this,ht)&&this[ht][t])||n)},Mt=function(e,t){var n=m(e),i=v(t,!0);if(n!==mt||!b(Tt,i)||b(St,i)){var r=yt(n,i);return!r||!b(Tt,i)||b(n,ht)&&n[ht][i]||(r.enumerable=!0),r}},_t=function(e){var t=wt(m(e)),n=[];return ut(t,(function(e){b(Tt,e)||b(W,e)||n.push(e)})),n},Ut=function(e){var t=e===mt,n=wt(t?St:m(e)),i=[];return ut(n,(function(e){!b(Tt,e)||t&&!b(mt,e)||i.push(Tt[e])})),i};if(Le||(ee((gt=function(){if(this instanceof gt)throw TypeError("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,t=B(e),n=function(e){this===mt&&n.call(St,e),b(this,ht)&&b(this[ht],t)&&(this[ht][t]=!1),Ot(this,t,c(1,e))};return a&&Ct&&Ot(mt,t,{configurable:!0,set:n}),It(t,e)}).prototype,"toString",(function(){return pt(this).tag})),ee(gt,"withoutSetter",(function(e){return It(B(e),e)})),l.f=Rt,C.f=jt,A.f=Mt,ye.f=Ke.f=_t,be.f=Ut,Qe.f=function(e){return It(Xe(e),e)},a&&(bt(gt.prototype,"description",{configurable:!0,get:function(){return pt(this).description}}),ee(mt,"propertyIsEnumerable",Rt,{unsafe:!0}))),Ie({global:!0,wrap:!0,forced:!Le,sham:!Le},{Symbol:gt}),ut(Me(Pt),(function(e){Ze(e)})),Ie({target:"Symbol",stat:!0,forced:!Le},{for:function(e){var t=String(e);if(b(Et,t))return Et[t];var n=gt(t);return Et[t]=n,At[n]=t,n},keyFor:function(e){if(!Lt(e))throw TypeError(e+" is not a symbol");if(b(At,e))return At[e]},useSetter:function(){Ct=!0},useSimple:function(){Ct=!1}}),Ie({target:"Object",stat:!0,forced:!Le,sham:!a},{create:function(e,t){return void 0===t?Be(e):Nt(Be(e),t)},defineProperty:jt,defineProperties:Nt,getOwnPropertyDescriptor:Mt}),Ie({target:"Object",stat:!0,forced:!Le},{getOwnPropertyNames:_t,getOwnPropertySymbols:Ut}),Ie({target:"Object",stat:!0,forced:r((function(){be.f(1)}))},{getOwnPropertySymbols:function(e){return be.f(Re(e))}}),vt){var Dt=!Le||r((function(){var e=gt();return"[null]"!=vt([e])||"{}"!=vt({a:e})||"{}"!=vt(Object(e))}));Ie({target:"JSON",stat:!0,forced:Dt},{stringify:function(e,t,n){for(var i,r=[e],a=1;arguments.length>a;)r.push(arguments[a++]);if(i=t,(g(t)||void 0!==e)&&!Lt(e))return Ne(t)||(t=function(e,t){if("function"==typeof i&&(t=i.call(this,e,t)),!Lt(t))return t}),r[1]=t,vt.apply(null,r)}})}gt.prototype[ft]||O(gt.prototype,ft,gt.prototype.valueOf),nt(gt,"Symbol"),W[ht]=!0;var Ft=C.f,qt=i.Symbol;if(a&&"function"==typeof qt&&(!("description"in qt.prototype)||void 0!==qt().description)){var Ht={},Bt=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),t=this instanceof Bt?new qt(e):void 0===e?qt():qt(e);return""===e&&(Ht[t]=!0),t};ke(Bt,qt);var Vt=Bt.prototype=qt.prototype;Vt.constructor=Bt;var zt=Vt.toString,Wt="Symbol(test)"==String(qt("test")),Kt=/^Symbol\((.*)\)[^)]+$/;Ft(Vt,"description",{configurable:!0,get:function(){var e=g(this)?this.valueOf():this,t=zt.call(e);if(b(Ht,e))return"";var n=Wt?t.slice(7,-1):t.replace(Kt,"$1");return""===n?void 0:n}}),Ie({global:!0,forced:!0},{Symbol:Bt})}Ze("iterator");var $t=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){throw 1},1)}))},Yt=Object.defineProperty,Gt={},Xt=function(e){throw e},Qt=function(e,t){if(b(Gt,e))return Gt[e];t||(t={});var n=[][e],i=!!b(t,"ACCESSORS")&&t.ACCESSORS,o=b(t,0)?t[0]:Xt,s=b(t,1)?t[1]:void 0;return Gt[e]=!!n&&!r((function(){if(i&&!a)return!0;var e={length:-1};i?Yt(e,1,{enumerable:!0,get:Xt}):e[1]=1,n.call(e,o,s)}))},Jt=ct.forEach,Zt=$t("forEach"),en=Qt("forEach"),tn=Zt&&en?[].forEach:function(e){return Jt(this,e,arguments.length>1?arguments[1]:void 0)};Ie({target:"Array",proto:!0,forced:[].forEach!=tn},{forEach:tn});var nn=de.indexOf,rn=[].indexOf,an=!!rn&&1/[1].indexOf(1,-0)<0,on=$t("indexOf"),sn=Qt("indexOf",{ACCESSORS:!0,1:0});Ie({target:"Array",proto:!0,forced:an||!on||!sn},{indexOf:function(e){return an?rn.apply(this,arguments)||0:nn(this,e,arguments.length>1?arguments[1]:void 0)}});var ln=Xe("unscopables"),cn=Array.prototype;null==cn[ln]&&C.f(cn,ln,{configurable:!0,value:Be(null)});var un,hn,fn,dn=function(e){cn[ln][e]=!0},pn={},mn=!r((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),gn=z("IE_PROTO"),vn=Object.prototype,yn=mn?Object.getPrototypeOf:function(e){return e=Re(e),b(e,gn)?e[gn]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?vn:null},bn=Xe("iterator"),wn=!1;[].keys&&("next"in(fn=[].keys())?(hn=yn(yn(fn)))!==Object.prototype&&(un=hn):wn=!0),null==un&&(un={}),b(un,bn)||O(un,bn,(function(){return this}));var kn={IteratorPrototype:un,BUGGY_SAFARI_ITERATORS:wn},Tn=kn.IteratorPrototype,Sn=function(){return this},En=function(e,t,n){var i=t+" Iterator";return e.prototype=Be(Tn,{next:c(1,n)}),nt(e,i,!1),pn[i]=Sn,e},An=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,i){return P(n),function(e){if(!g(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype")}(i),t?e.call(n,i):n.__proto__=i,n}}():void 0),Pn=kn.IteratorPrototype,xn=kn.BUGGY_SAFARI_ITERATORS,Cn=Xe("iterator"),On=function(){return this},In=function(e,t,n,i,r,a,o){En(n,t,i);var s,l,c,u=function(e){if(e===r&&m)return m;if(!xn&&e in d)return d[e];switch(e){case"keys":case"values":case"entries":return function(){return new n(this,e)}}return function(){return new n(this)}},h=t+" Iterator",f=!1,d=e.prototype,p=d[Cn]||d["@@iterator"]||r&&d[r],m=!xn&&p||u(r),g="Array"==t&&d.entries||p;if(g&&(s=yn(g.call(new e)),Pn!==Object.prototype&&s.next&&(yn(s)!==Pn&&(An?An(s,Pn):"function"!=typeof s[Cn]&&O(s,Cn,On)),nt(s,h,!0))),"values"==r&&p&&"values"!==p.name&&(f=!0,m=function(){return p.call(this)}),d[Cn]!==m&&O(d,Cn,m),pn[t]=m,r)if(l={values:u("values"),keys:a?m:u("keys"),entries:u("entries")},o)for(c in l)(xn||f||!(c in d))&&ee(d,c,l[c]);else Ie({target:t,proto:!0,forced:xn||f},l);return l},Ln=Z.set,jn=Z.getterFor("Array Iterator"),Nn=In(Array,"Array",(function(e,t){Ln(this,{type:"Array Iterator",target:m(e),index:0,kind:t})}),(function(){var e=jn(this),t=e.target,n=e.kind,i=e.index++;return!t||i>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:i,done:!1}:"values"==n?{value:t[i],done:!1}:{value:[i,t[i]],done:!1}}),"values");pn.Arguments=pn.Array,dn("keys"),dn("values"),dn("entries");var Rn=[].join,Mn=d!=Object,_n=$t("join",",");Ie({target:"Array",proto:!0,forced:Mn||!_n},{join:function(e){return Rn.call(m(this),void 0===e?",":e)}});var Un,Dn,Fn=function(e,t,n){var i=v(t);i in e?C.f(e,i,c(0,n)):e[i]=n},qn=ie("navigator","userAgent")||"",Hn=i.process,Bn=Hn&&Hn.versions,Vn=Bn&&Bn.v8;Vn?Dn=(Un=Vn.split("."))[0]+Un[1]:qn&&(!(Un=qn.match(/Edge\/(\d+)/))||Un[1]>=74)&&(Un=qn.match(/Chrome\/(\d+)/))&&(Dn=Un[1]);var zn=Dn&&+Dn,Wn=Xe("species"),Kn=function(e){return zn>=51||!r((function(){var t=[];return(t.constructor={})[Wn]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},$n=Kn("slice"),Yn=Qt("slice",{ACCESSORS:!0,0:0,1:2}),Gn=Xe("species"),Xn=[].slice,Qn=Math.max;Ie({target:"Array",proto:!0,forced:!$n||!Yn},{slice:function(e,t){var n,i,r,a=m(this),o=le(a.length),s=he(e,o),l=he(void 0===t?o:t,o);if(Ne(a)&&("function"!=typeof(n=a.constructor)||n!==Array&&!Ne(n.prototype)?g(n)&&null===(n=n[Gn])&&(n=void 0):n=void 0,n===Array||void 0===n))return Xn.call(a,s,l);for(i=new(void 0===n?Array:n)(Qn(l-s,0)),r=0;s<l;s++,r++)s in a&&Fn(i,r,a[s]);return i.length=r,i}});var Jn={};Jn[Xe("toStringTag")]="z";var Zn="[object z]"===String(Jn),ei=Xe("toStringTag"),ti="Arguments"==h(function(){return arguments}()),ni=Zn?h:function(e){var t,n,i;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),ei))?n:ti?h(t):"Object"==(i=h(t))&&"function"==typeof t.callee?"Arguments":i},ii=Zn?{}.toString:function(){return"[object "+ni(this)+"]"};Zn||ee(Object.prototype,"toString",ii,{unsafe:!0});var ri=function(){var e=P(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t};function ai(e,t){return RegExp(e,t)}var oi={UNSUPPORTED_Y:r((function(){var e=ai("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),BROKEN_CARET:r((function(){var e=ai("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))},si=RegExp.prototype.exec,li=String.prototype.replace,ci=si,ui=function(){var e=/a/,t=/b*/g;return si.call(e,"a"),si.call(t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),hi=oi.UNSUPPORTED_Y||oi.BROKEN_CARET,fi=void 0!==/()??/.exec("")[1];(ui||fi||hi)&&(ci=function(e){var t,n,i,r,a=this,o=hi&&a.sticky,s=ri.call(a),l=a.source,c=0,u=e;return o&&(-1===(s=s.replace("y","")).indexOf("g")&&(s+="g"),u=String(e).slice(a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==e[a.lastIndex-1])&&(l="(?: "+l+")",u=" "+u,c++),n=new RegExp("^(?:"+l+")",s)),fi&&(n=new RegExp("^"+l+"$(?!\\s)",s)),ui&&(t=a.lastIndex),i=si.call(o?n:a,u),o?i?(i.input=i.input.slice(c),i[0]=i[0].slice(c),i.index=a.lastIndex,a.lastIndex+=i[0].length):a.lastIndex=0:ui&&i&&(a.lastIndex=a.global?i.index+i[0].length:t),fi&&i&&i.length>1&&li.call(i[0],n,(function(){for(r=1;r<arguments.length-2;r++)void 0===arguments[r]&&(i[r]=void 0)})),i});var di=ci;Ie({target:"RegExp",proto:!0,forced:/./.exec!==di},{exec:di});var pi=RegExp.prototype,mi=pi.toString,gi=r((function(){return"/a/b"!=mi.call({source:"a",flags:"b"})})),vi="toString"!=mi.name;(gi||vi)&&ee(RegExp.prototype,"toString",(function(){var e=P(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(void 0===n&&e instanceof RegExp&&!("flags"in pi)?ri.call(e):n)}),{unsafe:!0});var yi=function(e){return function(t,n){var i,r,a=String(p(t)),o=oe(n),s=a.length;return o<0||o>=s?e?"":void 0:(i=a.charCodeAt(o))<55296||i>56319||o+1===s||(r=a.charCodeAt(o+1))<56320||r>57343?e?a.charAt(o):i:e?a.slice(o,o+2):r-56320+(i-55296<<10)+65536}},bi={codeAt:yi(!1),charAt:yi(!0)},wi=bi.charAt,ki=Z.set,Ti=Z.getterFor("String Iterator");In(String,"String",(function(e){ki(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=Ti(this),n=t.string,i=t.index;return i>=n.length?{value:void 0,done:!0}:(e=wi(n,i),t.index+=e.length,{value:e,done:!1})}));var Si=Xe("species"),Ei=!r((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")})),Ai="$0"==="a".replace(/./,"$0"),Pi=Xe("replace"),xi=!!/./[Pi]&&""===/./[Pi]("a","$0"),Ci=!r((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),Oi=function(e,t,n,i){var a=Xe(e),o=!r((function(){var t={};return t[a]=function(){return 7},7!=""[e](t)})),s=o&&!r((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[Si]=function(){return n},n.flags="",n[a]=/./[a]),n.exec=function(){return t=!0,null},n[a](""),!t}));if(!o||!s||"replace"===e&&(!Ei||!Ai||xi)||"split"===e&&!Ci){var l=/./[a],c=n(a,""[e],(function(e,t,n,i,r){return t.exec===di?o&&!r?{done:!0,value:l.call(t,n,i)}:{done:!0,value:e.call(n,t,i)}:{done:!1}}),{REPLACE_KEEPS_$0:Ai,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:xi}),u=c[0],h=c[1];ee(String.prototype,e,u),ee(RegExp.prototype,a,2==t?function(e,t){return h.call(e,this,t)}:function(e){return h.call(e,this)})}i&&O(RegExp.prototype[a],"sham",!0)},Ii=bi.charAt,Li=function(e,t,n){return t+(n?Ii(e,t).length:1)},ji=function(e,t){var n=e.exec;if("function"==typeof n){var i=n.call(e,t);if("object"!=typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==h(e))throw TypeError("RegExp#exec called on incompatible receiver");return di.call(e,t)},Ni=Math.max,Ri=Math.min,Mi=Math.floor,_i=/\$([$&'`]|\d\d?|<[^>]*>)/g,Ui=/\$([$&'`]|\d\d?)/g;Oi("replace",2,(function(e,t,n,i){var r=i.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,a=i.REPLACE_KEEPS_$0,o=r?"$":"$0";return[function(n,i){var r=p(this),a=null==n?void 0:n[e];return void 0!==a?a.call(n,r,i):t.call(String(r),n,i)},function(e,i){if(!r&&a||"string"==typeof i&&-1===i.indexOf(o)){var l=n(t,e,this,i);if(l.done)return l.value}var c=P(e),u=String(this),h="function"==typeof i;h||(i=String(i));var f=c.global;if(f){var d=c.unicode;c.lastIndex=0}for(var p=[];;){var m=ji(c,u);if(null===m)break;if(p.push(m),!f)break;""===String(m[0])&&(c.lastIndex=Li(u,le(c.lastIndex),d))}for(var g,v="",y=0,b=0;b<p.length;b++){m=p[b];for(var w=String(m[0]),k=Ni(Ri(oe(m.index),u.length),0),T=[],S=1;S<m.length;S++)T.push(void 0===(g=m[S])?g:String(g));var E=m.groups;if(h){var A=[w].concat(T,k,u);void 0!==E&&A.push(E);var x=String(i.apply(void 0,A))}else x=s(w,u,k,T,E,i);k>=y&&(v+=u.slice(y,k)+x,y=k+w.length)}return v+u.slice(y)}];function s(e,n,i,r,a,o){var s=i+e.length,l=r.length,c=Ui;return void 0!==a&&(a=Re(a),c=_i),t.call(o,c,(function(t,o){var c;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,i);case"'":return n.slice(s);case"<":c=a[o.slice(1,-1)];break;default:var u=+o;if(0===u)return t;if(u>l){var h=Mi(u/10);return 0===h?t:h<=l?void 0===r[h-1]?o.charAt(1):r[h-1]+o.charAt(1):t}c=r[u-1]}return void 0===c?"":c}))}}));var Di=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};Oi("search",1,(function(e,t,n){return[function(t){var n=p(this),i=null==t?void 0:t[e];return void 0!==i?i.call(t,n):new RegExp(t)[e](String(n))},function(e){var i=n(t,e,this);if(i.done)return i.value;var r=P(e),a=String(this),o=r.lastIndex;Di(o,0)||(r.lastIndex=0);var s=ji(r,a);return Di(r.lastIndex,o)||(r.lastIndex=o),null===s?-1:s.index}]}));var Fi=Xe("match"),qi=function(e){var t;return g(e)&&(void 0!==(t=e[Fi])?!!t:"RegExp"==h(e))},Hi=Xe("species"),Bi=function(e,t){var n,i=P(e).constructor;return void 0===i||null==(n=P(i)[Hi])?t:it(n)},Vi=[].push,zi=Math.min,Wi=!r((function(){return!RegExp(4294967295,"y")}));Oi("split",2,(function(e,t,n){var i;return i="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var i=String(p(this)),r=void 0===n?4294967295:n>>>0;if(0===r)return[];if(void 0===e)return[i];if(!qi(e))return t.call(i,e,r);for(var a,o,s,l=[],c=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),u=0,h=new RegExp(e.source,c+"g");(a=di.call(h,i))&&!((o=h.lastIndex)>u&&(l.push(i.slice(u,a.index)),a.length>1&&a.index<i.length&&Vi.apply(l,a.slice(1)),s=a[0].length,u=o,l.length>=r));)h.lastIndex===a.index&&h.lastIndex++;return u===i.length?!s&&h.test("")||l.push(""):l.push(i.slice(u)),l.length>r?l.slice(0,r):l}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var r=p(this),a=null==t?void 0:t[e];return void 0!==a?a.call(t,r,n):i.call(String(r),t,n)},function(e,r){var a=n(i,e,this,r,i!==t);if(a.done)return a.value;var o=P(e),s=String(this),l=Bi(o,RegExp),c=o.unicode,u=(o.ignoreCase?"i":"")+(o.multiline?"m":"")+(o.unicode?"u":"")+(Wi?"y":"g"),h=new l(Wi?o:"^(?:"+o.source+")",u),f=void 0===r?4294967295:r>>>0;if(0===f)return[];if(0===s.length)return null===ji(h,s)?[s]:[];for(var d=0,p=0,m=[];p<s.length;){h.lastIndex=Wi?p:0;var g,v=ji(h,Wi?s:s.slice(p));if(null===v||(g=zi(le(h.lastIndex+(Wi?0:p)),s.length))===d)p=Li(s,p,c);else{if(m.push(s.slice(d,p)),m.length===f)return m;for(var y=1;y<=v.length-1;y++)if(m.push(v[y]),m.length===f)return m;p=d=g}}return m.push(s.slice(d)),m}]}),!Wi);var Ki={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0};for(var $i in Ki){var Yi=i[$i],Gi=Yi&&Yi.prototype;if(Gi&&Gi.forEach!==tn)try{O(Gi,"forEach",tn)}catch(e){Gi.forEach=tn}}var Xi=Xe("iterator"),Qi=Xe("toStringTag"),Ji=Nn.values;for(var Zi in Ki){var er=i[Zi],tr=er&&er.prototype;if(tr){if(tr[Xi]!==Ji)try{O(tr,Xi,Ji)}catch(e){tr[Xi]=Ji}if(tr[Qi]||O(tr,Qi,Zi),Ki[Zi])for(var nr in Nn)if(tr[nr]!==Nn[nr])try{O(tr,nr,Nn[nr])}catch(e){tr[nr]=Nn[nr]}}}var ir=Xe("iterator"),rr=!r((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach((function(e,i){t.delete("b"),n+=i+e})),!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[ir]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})),ar=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e},or=Object.assign,sr=Object.defineProperty,lr=!or||r((function(){if(a&&1!==or({b:1},or(sr({},"a",{enumerable:!0,get:function(){sr(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol();return e[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=or({},e)[n]||"abcdefghijklmnopqrst"!=Me(or({},t)).join("")}))?function(e,t){for(var n=Re(e),i=arguments.length,r=1,o=be.f,s=l.f;i>r;)for(var c,u=d(arguments[r++]),h=o?Me(u).concat(o(u)):Me(u),f=h.length,p=0;f>p;)c=h[p++],a&&!s.call(u,c)||(n[c]=u[c]);return n}:or,cr=function(e,t,n,i){try{return i?t(P(n)[0],n[1]):t(n)}catch(t){var r=e.return;throw void 0!==r&&P(r.call(e)),t}},ur=Xe("iterator"),hr=Array.prototype,fr=function(e){return void 0!==e&&(pn.Array===e||hr[ur]===e)},dr=Xe("iterator"),pr=function(e){if(null!=e)return e[dr]||e["@@iterator"]||pn[ni(e)]},mr=function(e){var t,n,i,r,a,o,s=Re(e),l="function"==typeof this?this:Array,c=arguments.length,u=c>1?arguments[1]:void 0,h=void 0!==u,f=pr(s),d=0;if(h&&(u=rt(u,c>2?arguments[2]:void 0,2)),null==f||l==Array&&fr(f))for(n=new l(t=le(s.length));t>d;d++)o=h?u(s[d],d):s[d],Fn(n,d,o);else for(a=(r=f.call(s)).next,n=new l;!(i=a.call(r)).done;d++)o=h?cr(r,u,[i.value,d],!0):i.value,Fn(n,d,o);return n.length=d,n},gr=/[^\0-\u007E]/,vr=/[.\u3002\uFF0E\uFF61]/g,yr="Overflow: input needs wider integers to process",br=Math.floor,wr=String.fromCharCode,kr=function(e){return e+22+75*(e<26)},Tr=function(e,t,n){var i=0;for(e=n?br(e/700):e>>1,e+=br(e/t);e>455;i+=36)e=br(e/35);return br(i+36*e/(e+38))},Sr=function(e){var t,n,i=[],r=(e=function(e){for(var t=[],n=0,i=e.length;n<i;){var r=e.charCodeAt(n++);if(r>=55296&&r<=56319&&n<i){var a=e.charCodeAt(n++);56320==(64512&a)?t.push(((1023&r)<<10)+(1023&a)+65536):(t.push(r),n--)}else t.push(r)}return t}(e)).length,a=128,o=0,s=72;for(t=0;t<e.length;t++)(n=e[t])<128&&i.push(wr(n));var l=i.length,c=l;for(l&&i.push("-");c<r;){var u=2147483647;for(t=0;t<e.length;t++)(n=e[t])>=a&&n<u&&(u=n);var h=c+1;if(u-a>br((2147483647-o)/h))throw RangeError(yr);for(o+=(u-a)*h,a=u,t=0;t<e.length;t++){if((n=e[t])<a&&++o>2147483647)throw RangeError(yr);if(n==a){for(var f=o,d=36;;d+=36){var p=d<=s?1:d>=s+26?26:d-s;if(f<p)break;var m=f-p,g=36-p;i.push(wr(kr(p+m%g))),f=br(m/g)}i.push(wr(kr(f))),s=Tr(o,h,c==l),o=0,++c}}++o,++a}return i.join("")},Er=function(e,t,n){for(var i in t)ee(e,i,t[i],n);return e},Ar=function(e){var t=pr(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return P(t.call(e))},Pr=ie("fetch"),xr=ie("Headers"),Cr=Xe("iterator"),Or=Z.set,Ir=Z.getterFor("URLSearchParams"),Lr=Z.getterFor("URLSearchParamsIterator"),jr=/\+/g,Nr=Array(4),Rr=function(e){return Nr[e-1]||(Nr[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},Mr=function(e){try{return decodeURIComponent(e)}catch(t){return e}},_r=function(e){var t=e.replace(jr," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(Rr(n--),Mr);return t}},Ur=/[!'()~]|%20/g,Dr={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},Fr=function(e){return Dr[e]},qr=function(e){return encodeURIComponent(e).replace(Ur,Fr)},Hr=function(e,t){if(t)for(var n,i,r=t.split("&"),a=0;a<r.length;)(n=r[a++]).length&&(i=n.split("="),e.push({key:_r(i.shift()),value:_r(i.join("="))}))},Br=function(e){this.entries.length=0,Hr(this.entries,e)},Vr=function(e,t){if(e<t)throw TypeError("Not enough arguments")},zr=En((function(e,t){Or(this,{type:"URLSearchParamsIterator",iterator:Ar(Ir(e).entries),kind:t})}),"Iterator",(function(){var e=Lr(this),t=e.kind,n=e.iterator.next(),i=n.value;return n.done||(n.value="keys"===t?i.key:"values"===t?i.value:[i.key,i.value]),n})),Wr=function(){ar(this,Wr,"URLSearchParams");var e,t,n,i,r,a,o,s,l,c=arguments.length>0?arguments[0]:void 0,u=this,h=[];if(Or(u,{type:"URLSearchParams",entries:h,updateURL:function(){},updateSearchParams:Br}),void 0!==c)if(g(c))if("function"==typeof(e=pr(c)))for(n=(t=e.call(c)).next;!(i=n.call(t)).done;){if((o=(a=(r=Ar(P(i.value))).next).call(r)).done||(s=a.call(r)).done||!a.call(r).done)throw TypeError("Expected sequence with length 2");h.push({key:o.value+"",value:s.value+""})}else for(l in c)b(c,l)&&h.push({key:l,value:c[l]+""});else Hr(h,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},Kr=Wr.prototype;Er(Kr,{append:function(e,t){Vr(arguments.length,2);var n=Ir(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){Vr(arguments.length,1);for(var t=Ir(this),n=t.entries,i=e+"",r=0;r<n.length;)n[r].key===i?n.splice(r,1):r++;t.updateURL()},get:function(e){Vr(arguments.length,1);for(var t=Ir(this).entries,n=e+"",i=0;i<t.length;i++)if(t[i].key===n)return t[i].value;return null},getAll:function(e){Vr(arguments.length,1);for(var t=Ir(this).entries,n=e+"",i=[],r=0;r<t.length;r++)t[r].key===n&&i.push(t[r].value);return i},has:function(e){Vr(arguments.length,1);for(var t=Ir(this).entries,n=e+"",i=0;i<t.length;)if(t[i++].key===n)return!0;return!1},set:function(e,t){Vr(arguments.length,1);for(var n,i=Ir(this),r=i.entries,a=!1,o=e+"",s=t+"",l=0;l<r.length;l++)(n=r[l]).key===o&&(a?r.splice(l--,1):(a=!0,n.value=s));a||r.push({key:o,value:s}),i.updateURL()},sort:function(){var e,t,n,i=Ir(this),r=i.entries,a=r.slice();for(r.length=0,n=0;n<a.length;n++){for(e=a[n],t=0;t<n;t++)if(r[t].key>e.key){r.splice(t,0,e);break}t===n&&r.push(e)}i.updateURL()},forEach:function(e){for(var t,n=Ir(this).entries,i=rt(e,arguments.length>1?arguments[1]:void 0,3),r=0;r<n.length;)i((t=n[r++]).value,t.key,this)},keys:function(){return new zr(this,"keys")},values:function(){return new zr(this,"values")},entries:function(){return new zr(this,"entries")}},{enumerable:!0}),ee(Kr,Cr,Kr.entries),ee(Kr,"toString",(function(){for(var e,t=Ir(this).entries,n=[],i=0;i<t.length;)e=t[i++],n.push(qr(e.key)+"="+qr(e.value));return n.join("&")}),{enumerable:!0}),nt(Wr,"URLSearchParams"),Ie({global:!0,forced:!rr},{URLSearchParams:Wr}),rr||"function"!=typeof Pr||"function"!=typeof xr||Ie({global:!0,enumerable:!0,forced:!0},{fetch:function(e){var t,n,i,r=[e];return arguments.length>1&&(t=arguments[1],g(t)&&(n=t.body,"URLSearchParams"===ni(n)&&((i=t.headers?new xr(t.headers):new xr).has("content-type")||i.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=Be(t,{body:c(0,String(n)),headers:c(0,i)}))),r.push(t)),Pr.apply(this,r)}});var $r,Yr={URLSearchParams:Wr,getState:Ir},Gr=bi.codeAt,Xr=i.URL,Qr=Yr.URLSearchParams,Jr=Yr.getState,Zr=Z.set,ea=Z.getterFor("URL"),ta=Math.floor,na=Math.pow,ia=/[A-Za-z]/,ra=/[\d+-.A-Za-z]/,aa=/\d/,oa=/^(0x|0X)/,sa=/^[0-7]+$/,la=/^\d+$/,ca=/^[\dA-Fa-f]+$/,ua=/[\u0000\u0009\u000A\u000D #%/:?@[\\]]/,ha=/[\u0000\u0009\u000A\u000D #/:?@[\\]]/,fa=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,da=/[\u0009\u000A\u000D]/g,pa=function(e,t){var n,i,r;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return"Invalid host";if(!(n=ga(t.slice(1,-1))))return"Invalid host";e.host=n}else if(Ea(e)){if(t=function(e){var t,n,i=[],r=e.toLowerCase().replace(vr,".").split(".");for(t=0;t<r.length;t++)n=r[t],i.push(gr.test(n)?"xn--"+Sr(n):n);return i.join(".")}(t),ua.test(t))return"Invalid host";if(null===(n=ma(t)))return"Invalid host";e.host=n}else{if(ha.test(t))return"Invalid host";for(n="",i=mr(t),r=0;r<i.length;r++)n+=Ta(i[r],ya);e.host=n}},ma=function(e){var t,n,i,r,a,o,s,l=e.split(".");if(l.length&&""==l[l.length-1]&&l.pop(),(t=l.length)>4)return e;for(n=[],i=0;i<t;i++){if(""==(r=l[i]))return e;if(a=10,r.length>1&&"0"==r.charAt(0)&&(a=oa.test(r)?16:8,r=r.slice(8==a?1:2)),""===r)o=0;else{if(!(10==a?la:8==a?sa:ca).test(r))return e;o=parseInt(r,a)}n.push(o)}for(i=0;i<t;i++)if(o=n[i],i==t-1){if(o>=na(256,5-t))return null}else if(o>255)return null;for(s=n.pop(),i=0;i<n.length;i++)s+=n[i]*na(256,3-i);return s},ga=function(e){var t,n,i,r,a,o,s,l=[0,0,0,0,0,0,0,0],c=0,u=null,h=0,f=function(){return e.charAt(h)};if(":"==f()){if(":"!=e.charAt(1))return;h+=2,u=++c}for(;f();){if(8==c)return;if(":"!=f()){for(t=n=0;n<4&&ca.test(f());)t=16*t+parseInt(f(),16),h++,n++;if("."==f()){if(0==n)return;if(h-=n,c>6)return;for(i=0;f();){if(r=null,i>0){if(!("."==f()&&i<4))return;h++}if(!aa.test(f()))return;for(;aa.test(f());){if(a=parseInt(f(),10),null===r)r=a;else{if(0==r)return;r=10*r+a}if(r>255)return;h++}l[c]=256*l[c]+r,2!=++i&&4!=i||c++}if(4!=i)return;break}if(":"==f()){if(h++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;h++,u=++c}}if(null!==u)for(o=c-u,c=7;0!=c&&o>0;)s=l[c],l[c--]=l[u+o-1],l[u+--o]=s;else if(8!=c)return;return l},va=function(e){var t,n,i,r;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=ta(e/256);return t.join(".")}if("object"==typeof e){for(t="",i=function(e){for(var t=null,n=1,i=null,r=0,a=0;a<8;a++)0!==e[a]?(r>n&&(t=i,n=r),i=null,r=0):(null===i&&(i=a),++r);return r>n&&(t=i,n=r),t}(e),n=0;n<8;n++)r&&0===e[n]||(r&&(r=!1),i===n?(t+=n?":":"::",r=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},ya={},ba=lr({},ya,{" ":1,'"':1,"<":1,">":1,"`":1}),wa=lr({},ba,{"#":1,"?":1,"{":1,"}":1}),ka=lr({},wa,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Ta=function(e,t){var n=Gr(e,0);return n>32&&n<127&&!b(t,e)?e:encodeURIComponent(e)},Sa={ftp:21,file:null,http:80,https:443,ws:80,wss:443},Ea=function(e){return b(Sa,e.scheme)},Aa=function(e){return""!=e.username||""!=e.password},Pa=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},xa=function(e,t){var n;return 2==e.length&&ia.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},Ca=function(e){var t;return e.length>1&&xa(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},Oa=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&xa(t[0],!0)||t.pop()},Ia=function(e){return"."===e||"%2e"===e.toLowerCase()},La={},ja={},Na={},Ra={},Ma={},_a={},Ua={},Da={},Fa={},qa={},Ha={},Ba={},Va={},za={},Wa={},Ka={},$a={},Ya={},Ga={},Xa={},Qa={},Ja=function(e,t,n,i){var r,a,o,s,l,c=n||La,u=0,h="",f=!1,d=!1,p=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(fa,"")),t=t.replace(da,""),r=mr(t);u<=r.length;){switch(a=r[u],c){case La:if(!a||!ia.test(a)){if(n)return"Invalid scheme";c=Na;continue}h+=a.toLowerCase(),c=ja;break;case ja:if(a&&(ra.test(a)||"+"==a||"-"==a||"."==a))h+=a.toLowerCase();else{if(":"!=a){if(n)return"Invalid scheme";h="",c=Na,u=0;continue}if(n&&(Ea(e)!=b(Sa,h)||"file"==h&&(Aa(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=h,n)return void(Ea(e)&&Sa[e.scheme]==e.port&&(e.port=null));h="","file"==e.scheme?c=za:Ea(e)&&i&&i.scheme==e.scheme?c=Ra:Ea(e)?c=Da:"/"==r[u+1]?(c=Ma,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ga)}break;case Na:if(!i||i.cannotBeABaseURL&&"#"!=a)return"Invalid scheme";if(i.cannotBeABaseURL&&"#"==a){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=Qa;break}c="file"==i.scheme?za:_a;continue;case Ra:if("/"!=a||"/"!=r[u+1]){c=_a;continue}c=Fa,u++;break;case Ma:if("/"==a){c=qa;break}c=Ya;continue;case _a:if(e.scheme=i.scheme,a==$r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==a||"\\"==a&&Ea(e))c=Ua;else if("?"==a)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Xa;else{if("#"!=a){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=Ya;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=Qa}break;case Ua:if(!Ea(e)||"/"!=a&&"\\"!=a){if("/"!=a){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=Ya;continue}c=qa}else c=Fa;break;case Da:if(c=Fa,"/"!=a||"/"!=h.charAt(u+1))continue;u++;break;case Fa:if("/"!=a&&"\\"!=a){c=qa;continue}break;case qa:if("@"==a){f&&(h="%40"+h),f=!0,o=mr(h);for(var m=0;m<o.length;m++){var g=o[m];if(":"!=g||p){var v=Ta(g,ka);p?e.password+=v:e.username+=v}else p=!0}h=""}else if(a==$r||"/"==a||"?"==a||"#"==a||"\\"==a&&Ea(e)){if(f&&""==h)return"Invalid authority";u-=mr(h).length+1,h="",c=Ha}else h+=a;break;case Ha:case Ba:if(n&&"file"==e.scheme){c=Ka;continue}if(":"!=a||d){if(a==$r||"/"==a||"?"==a||"#"==a||"\\"==a&&Ea(e)){if(Ea(e)&&""==h)return"Invalid host";if(n&&""==h&&(Aa(e)||null!==e.port))return;if(s=pa(e,h))return s;if(h="",c=$a,n)return;continue}"["==a?d=!0:"]"==a&&(d=!1),h+=a}else{if(""==h)return"Invalid host";if(s=pa(e,h))return s;if(h="",c=Va,n==Ba)return}break;case Va:if(!aa.test(a)){if(a==$r||"/"==a||"?"==a||"#"==a||"\\"==a&&Ea(e)||n){if(""!=h){var y=parseInt(h,10);if(y>65535)return"Invalid port";e.port=Ea(e)&&y===Sa[e.scheme]?null:y,h=""}if(n)return;c=$a;continue}return"Invalid port"}h+=a;break;case za:if(e.scheme="file","/"==a||"\\"==a)c=Wa;else{if(!i||"file"!=i.scheme){c=Ya;continue}if(a==$r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==a)e.host=i.host,e.path=i.path.slice(),e.query="",c=Xa;else{if("#"!=a){Ca(r.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),Oa(e)),c=Ya;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=Qa}}break;case Wa:if("/"==a||"\\"==a){c=Ka;break}i&&"file"==i.scheme&&!Ca(r.slice(u).join(""))&&(xa(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=Ya;continue;case Ka:if(a==$r||"/"==a||"\\"==a||"?"==a||"#"==a){if(!n&&xa(h))c=Ya;else if(""==h){if(e.host="",n)return;c=$a}else{if(s=pa(e,h))return s;if("localhost"==e.host&&(e.host=""),n)return;h="",c=$a}continue}h+=a;break;case $a:if(Ea(e)){if(c=Ya,"/"!=a&&"\\"!=a)continue}else if(n||"?"!=a)if(n||"#"!=a){if(a!=$r&&(c=Ya,"/"!=a))continue}else e.fragment="",c=Qa;else e.query="",c=Xa;break;case Ya:if(a==$r||"/"==a||"\\"==a&&Ea(e)||!n&&("?"==a||"#"==a)){if(".."===(l=(l=h).toLowerCase())||"%2e."===l||".%2e"===l||"%2e%2e"===l?(Oa(e),"/"==a||"\\"==a&&Ea(e)||e.path.push("")):Ia(h)?"/"==a||"\\"==a&&Ea(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&xa(h)&&(e.host&&(e.host=""),h=h.charAt(0)+":"),e.path.push(h)),h="","file"==e.scheme&&(a==$r||"?"==a||"#"==a))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==a?(e.query="",c=Xa):"#"==a&&(e.fragment="",c=Qa)}else h+=Ta(a,wa);break;case Ga:"?"==a?(e.query="",c=Xa):"#"==a?(e.fragment="",c=Qa):a!=$r&&(e.path[0]+=Ta(a,ya));break;case Xa:n||"#"!=a?a!=$r&&("'"==a&&Ea(e)?e.query+="%27":e.query+="#"==a?"%23":Ta(a,ya)):(e.fragment="",c=Qa);break;case Qa:a!=$r&&(e.fragment+=Ta(a,ba))}u++}},Za=function(e){var t,n,i=ar(this,Za,"URL"),r=arguments.length>1?arguments[1]:void 0,o=String(e),s=Zr(i,{type:"URL"});if(void 0!==r)if(r instanceof Za)t=ea(r);else if(n=Ja(t={},String(r)))throw TypeError(n);if(n=Ja(s,o,null,t))throw TypeError(n);var l=s.searchParams=new Qr,c=Jr(l);c.updateSearchParams(s.query),c.updateURL=function(){s.query=String(l)||null},a||(i.href=to.call(i),i.origin=no.call(i),i.protocol=io.call(i),i.username=ro.call(i),i.password=ao.call(i),i.host=oo.call(i),i.hostname=so.call(i),i.port=lo.call(i),i.pathname=co.call(i),i.search=uo.call(i),i.searchParams=ho.call(i),i.hash=fo.call(i))},eo=Za.prototype,to=function(){var e=ea(this),t=e.scheme,n=e.username,i=e.password,r=e.host,a=e.port,o=e.path,s=e.query,l=e.fragment,c=t+":";return null!==r?(c+="//",Aa(e)&&(c+=n+(i?":"+i:"")+"@"),c+=va(r),null!==a&&(c+=":"+a)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?o[0]:o.length?"/"+o.join("/"):"",null!==s&&(c+="?"+s),null!==l&&(c+="#"+l),c},no=function(){var e=ea(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&Ea(e)?t+"://"+va(e.host)+(null!==n?":"+n:""):"null"},io=function(){return ea(this).scheme+":"},ro=function(){return ea(this).username},ao=function(){return ea(this).password},oo=function(){var e=ea(this),t=e.host,n=e.port;return null===t?"":null===n?va(t):va(t)+":"+n},so=function(){var e=ea(this).host;return null===e?"":va(e)},lo=function(){var e=ea(this).port;return null===e?"":String(e)},co=function(){var e=ea(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},uo=function(){var e=ea(this).query;return e?"?"+e:""},ho=function(){return ea(this).searchParams},fo=function(){var e=ea(this).fragment;return e?"#"+e:""},po=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(a&&_e(eo,{href:po(to,(function(e){var t=ea(this),n=String(e),i=Ja(t,n);if(i)throw TypeError(i);Jr(t.searchParams).updateSearchParams(t.query)})),origin:po(no),protocol:po(io,(function(e){var t=ea(this);Ja(t,String(e)+":",La)})),username:po(ro,(function(e){var t=ea(this),n=mr(String(e));if(!Pa(t)){t.username="";for(var i=0;i<n.length;i++)t.username+=Ta(n[i],ka)}})),password:po(ao,(function(e){var t=ea(this),n=mr(String(e));if(!Pa(t)){t.password="";for(var i=0;i<n.length;i++)t.password+=Ta(n[i],ka)}})),host:po(oo,(function(e){var t=ea(this);t.cannotBeABaseURL||Ja(t,String(e),Ha)})),hostname:po(so,(function(e){var t=ea(this);t.cannotBeABaseURL||Ja(t,String(e),Ba)})),port:po(lo,(function(e){var t=ea(this);Pa(t)||(""==(e=String(e))?t.port=null:Ja(t,e,Va))})),pathname:po(co,(function(e){var t=ea(this);t.cannotBeABaseURL||(t.path=[],Ja(t,e+"",$a))})),search:po(uo,(function(e){var t=ea(this);""==(e=String(e))?t.query=null:("?"==e.charAt(0)&&(e=e.slice(1)),t.query="",Ja(t,e,Xa)),Jr(t.searchParams).updateSearchParams(t.query)})),searchParams:po(ho),hash:po(fo,(function(e){var t=ea(this);""!=(e=String(e))?("#"==e.charAt(0)&&(e=e.slice(1)),t.fragment="",Ja(t,e,Qa)):t.fragment=null}))}),ee(eo,"toJSON",(function(){return to.call(this)}),{enumerable:!0}),ee(eo,"toString",(function(){return to.call(this)}),{enumerable:!0}),Xr){var mo=Xr.createObjectURL,go=Xr.revokeObjectURL;mo&&ee(Za,"createObjectURL",(function(e){return mo.apply(Xr,arguments)})),go&&ee(Za,"revokeObjectURL",(function(e){return go.apply(Xr,arguments)}))}function vo(e){return(vo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function yo(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function bo(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function wo(e,t,n){return t&&bo(e.prototype,t),n&&bo(e,n),e}function ko(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function To(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function So(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?To(Object(n),!0).forEach((function(t){ko(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):To(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Eo(e,t){if(null==e)return{};var n,i,r=function(e,t){if(null==e)return{};var n,i,r={},a=Object.keys(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Ao(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],i=!0,r=!1,a=void 0;try{for(var o,s=e[Symbol.iterator]();!(i=(o=s.next()).done)&&(n.push(o.value),!t||n.length!==t);i=!0);}catch(e){r=!0,a=e}finally{try{i||null==s.return||s.return()}finally{if(r)throw a}}return n}(e,t)||xo(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Po(e){return function(e){if(Array.isArray(e))return Co(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||xo(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function xo(e,t){if(e){if("string"==typeof e)return Co(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Co(e,t):void 0}}function Co(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}nt(Za,"URL"),Ie({global:!0,forced:!rr,sham:!a},{URL:Za}),function(e){var t=function(){try{return!!Symbol.iterator}catch(e){return!1}}(),n=function(e){var n={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return t&&(n[Symbol.iterator]=function(){return n}),n},i=function(e){return encodeURIComponent(e).replace(/%20/g,"+")},r=function(e){return decodeURIComponent(String(e).replace(/\+/g," "))};(function(){try{var t=e.URLSearchParams;return"a=1"===new t("?a=1").toString()&&"function"==typeof t.prototype.set}catch(e){return!1}})()||function(){var r=function e(t){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var n=vo(t);if("undefined"===n);else if("string"===n)""!==t&&this._fromString(t);else if(t instanceof e){var i=this;t.forEach((function(e,t){i.append(t,e)}))}else{if(null===t||"object"!==n)throw new TypeError("Unsupported input's type for URLSearchParams");if("[object Array]"===Object.prototype.toString.call(t))for(var r=0;r<t.length;r++){var a=t[r];if("[object Array]"!==Object.prototype.toString.call(a)&&2===a.length)throw new TypeError("Expected [string, any] as entry at index "+r+" of URLSearchParams's input");this.append(a[0],a[1])}else for(var o in t)t.hasOwnProperty(o)&&this.append(o,t[o])}},a=r.prototype;a.append=function(e,t){e in this._entries?this._entries[e].push(String(t)):this._entries[e]=[String(t)]},a.delete=function(e){delete this._entries[e]},a.get=function(e){return e in this._entries?this._entries[e][0]:null},a.getAll=function(e){return e in this._entries?this._entries[e].slice(0):[]},a.has=function(e){return e in this._entries},a.set=function(e,t){this._entries[e]=[String(t)]},a.forEach=function(e,t){var n;for(var i in this._entries)if(this._entries.hasOwnProperty(i)){n=this._entries[i];for(var r=0;r<n.length;r++)e.call(t,n[r],i,this)}},a.keys=function(){var e=[];return this.forEach((function(t,n){e.push(n)})),n(e)},a.values=function(){var e=[];return this.forEach((function(t){e.push(t)})),n(e)},a.entries=function(){var e=[];return this.forEach((function(t,n){e.push([n,t])})),n(e)},t&&(a[Symbol.iterator]=a.entries),a.toString=function(){var e=[];return this.forEach((function(t,n){e.push(i(n)+"="+i(t))})),e.join("&")},e.URLSearchParams=r}();var a=e.URLSearchParams.prototype;"function"!=typeof a.sort&&(a.sort=function(){var e=this,t=[];this.forEach((function(n,i){t.push([i,n]),e._entries||e.delete(i)})),t.sort((function(e,t){return e[0]<t[0]?-1:e[0]>t[0]?1:0})),e._entries&&(e._entries={});for(var n=0;n<t.length;n++)this.append(t[n][0],t[n][1])}),"function"!=typeof a._fromString&&Object.defineProperty(a,"_fromString",{enumerable:!1,configurable:!1,writable:!1,value:function(e){if(this._entries)this._entries={};else{var t=[];this.forEach((function(e,n){t.push(n)}));for(var n=0;n<t.length;n++)this.delete(t[n])}var i,a=(e=e.replace(/^\?/,"")).split("&");for(n=0;n<a.length;n++)i=a[n].split("="),this.append(r(i[0]),i.length>1?r(i[1]):"")}})}(void 0!==e?e:"undefined"!=typeof window?window:"undefined"!=typeof self?self:e),function(e){if(function(){try{var t=new e.URL("b","http://a");return t.pathname="c d","http://a/c%20d"===t.href&&t.searchParams}catch(e){return!1}}()||function(){var t=e.URL,n=function(t,n){"string"!=typeof t&&(t=String(t));var i,r=document;if(n&&(void 0===e.location||n!==e.location.href)){(i=(r=document.implementation.createHTMLDocument("")).createElement("base")).href=n,r.head.appendChild(i);try{if(0!==i.href.indexOf(n))throw new Error(i.href)}catch(e){throw new Error("URL unable to set base "+n+" due to "+e)}}var a=r.createElement("a");if(a.href=t,i&&(r.body.appendChild(a),a.href=a.href),":"===a.protocol||!/:/.test(a.href))throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:a});var o=new e.URLSearchParams(this.search),s=!0,l=!0,c=this;["append","delete","set"].forEach((function(e){var t=o[e];o[e]=function(){t.apply(o,arguments),s&&(l=!1,c.search=o.toString(),l=!0)}})),Object.defineProperty(this,"searchParams",{value:o,enumerable:!0});var u=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==u&&(u=this.search,l&&(s=!1,this.searchParams._fromString(this.search),s=!0))}})},i=n.prototype;["hash","host","hostname","port","protocol"].forEach((function(e){!function(e){Object.defineProperty(i,e,{get:function(){return this._anchorElement[e]},set:function(t){this._anchorElement[e]=t},enumerable:!0})}(e)})),Object.defineProperty(i,"search",{get:function(){return this._anchorElement.search},set:function(e){this._anchorElement.search=e,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(i,{toString:{get:function(){var e=this;return function(){return e.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(e){this._anchorElement.href=e,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(e){this._anchorElement.pathname=e},enumerable:!0},origin:{get:function(){var e={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],t=this._anchorElement.port!=e&&""!==this._anchorElement.port;return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(t?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(e){},enumerable:!0},username:{get:function(){return""},set:function(e){},enumerable:!0}}),n.createObjectURL=function(e){return t.createObjectURL.apply(t,arguments)},n.revokeObjectURL=function(e){return t.revokeObjectURL.apply(t,arguments)},e.URL=n}(),void 0!==e.location&&!("origin"in e.location)){var t=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:t,enumerable:!0})}catch(n){setInterval((function(){e.location.origin=t()}),100)}}}(void 0!==e?e:"undefined"!=typeof window?window:"undefined"!=typeof self?self:e);var Oo=Xe("isConcatSpreadable"),Io=zn>=51||!r((function(){var e=[];return e[Oo]=!1,e.concat()[0]!==e})),Lo=Kn("concat"),jo=function(e){if(!g(e))return!1;var t=e[Oo];return void 0!==t?!!t:Ne(e)};Ie({target:"Array",proto:!0,forced:!Io||!Lo},{concat:function(e){var t,n,i,r,a,o=Re(this),s=ot(o,0),l=0;for(t=-1,i=arguments.length;t<i;t++)if(a=-1===t?o:arguments[t],jo(a)){if(l+(r=le(a.length))>9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n<r;n++,l++)n in a&&Fn(s,l,a[n])}else{if(l>=9007199254740991)throw TypeError("Maximum allowed index exceeded");Fn(s,l++,a)}return s.length=l,s}});var No=ct.filter,Ro=Kn("filter"),Mo=Qt("filter");Ie({target:"Array",proto:!0,forced:!Ro||!Mo},{filter:function(e){return No(this,e,arguments.length>1?arguments[1]:void 0)}});var _o=ct.find,Uo=!0,Do=Qt("find");"find"in[]&&Array(1).find((function(){Uo=!1})),Ie({target:"Array",proto:!0,forced:Uo||!Do},{find:function(e){return _o(this,e,arguments.length>1?arguments[1]:void 0)}}),dn("find");var Fo=Xe("iterator"),qo=!1;try{var Ho=0,Bo={next:function(){return{done:!!Ho++}},return:function(){qo=!0}};Bo[Fo]=function(){return this},Array.from(Bo,(function(){throw 2}))}catch(e){}var Vo=function(e,t){if(!t&&!qo)return!1;var n=!1;try{var i={};i[Fo]=function(){return{next:function(){return{done:n=!0}}}},e(i)}catch(e){}return n},zo=!Vo((function(e){Array.from(e)}));Ie({target:"Array",stat:!0,forced:zo},{from:mr});var Wo=de.includes,Ko=Qt("indexOf",{ACCESSORS:!0,1:0});Ie({target:"Array",proto:!0,forced:!Ko},{includes:function(e){return Wo(this,e,arguments.length>1?arguments[1]:void 0)}}),dn("includes");var $o=ct.map,Yo=Kn("map"),Go=Qt("map");Ie({target:"Array",proto:!0,forced:!Yo||!Go},{map:function(e){return $o(this,e,arguments.length>1?arguments[1]:void 0)}});var Xo=function(e,t,n){var i,r;return An&&"function"==typeof(i=t.constructor)&&i!==n&&g(r=i.prototype)&&r!==n.prototype&&An(e,r),e},Qo="\t\n\v\f\r                 \u2028\u2029\ufeff",Jo="["+Qo+"]",Zo=RegExp("^"+Jo+Jo+"*"),es=RegExp(Jo+Jo+"*$"),ts=function(e){return function(t){var n=String(p(t));return 1&e&&(n=n.replace(Zo,"")),2&e&&(n=n.replace(es,"")),n}},ns={start:ts(1),end:ts(2),trim:ts(3)},is=ye.f,rs=A.f,as=C.f,os=ns.trim,ss=i.Number,ls=ss.prototype,cs="Number"==h(Be(ls)),us=function(e){var t,n,i,r,a,o,s,l,c=v(e,!1);if("string"==typeof c&&c.length>2)if(43===(t=(c=os(c)).charCodeAt(0))||45===t){if(88===(n=c.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(c.charCodeAt(1)){case 66:case 98:i=2,r=49;break;case 79:case 111:i=8,r=55;break;default:return+c}for(o=(a=c.slice(2)).length,s=0;s<o;s++)if((l=a.charCodeAt(s))<48||l>r)return NaN;return parseInt(a,i)}return+c};if(Ce("Number",!ss(" 0o1")||!ss("0b1")||ss("+0x1"))){for(var hs,fs=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof fs&&(cs?r((function(){ls.valueOf.call(n)})):"Number"!=h(n))?Xo(new ss(us(t)),n,fs):us(t)},ds=a?is(ss):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),ps=0;ds.length>ps;ps++)b(ss,hs=ds[ps])&&!b(fs,hs)&&as(fs,hs,rs(ss,hs));fs.prototype=ls,ls.constructor=fs,ee(i,"Number",fs)}var ms=r((function(){Me(1)}));Ie({target:"Object",stat:!0,forced:ms},{keys:function(e){return Me(Re(e))}});var gs=function(e){if(qi(e))throw TypeError("The method doesn't accept regular expressions");return e},vs=Xe("match"),ys=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[vs]=!1,"/./"[e](t)}catch(e){}}return!1};Ie({target:"String",proto:!0,forced:!ys("includes")},{includes:function(e){return!!~String(p(this)).indexOf(gs(e),arguments.length>1?arguments[1]:void 0)}});var bs=!r((function(){return Object.isExtensible(Object.preventExtensions({}))})),ws=t((function(e){var t=C.f,n=B("meta"),i=0,r=Object.isExtensible||function(){return!0},a=function(e){t(e,n,{value:{objectID:"O"+ ++i,weakData:{}}})},o=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!g(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!b(e,n)){if(!r(e))return"F";if(!t)return"E";a(e)}return e[n].objectID},getWeakData:function(e,t){if(!b(e,n)){if(!r(e))return!0;if(!t)return!1;a(e)}return e[n].weakData},onFreeze:function(e){return bs&&o.REQUIRED&&r(e)&&!b(e,n)&&a(e),e}};W[n]=!0})),ks=(ws.REQUIRED,ws.fastKey,ws.getWeakData,ws.onFreeze,t((function(e){var t=function(e,t){this.stopped=e,this.result=t};(e.exports=function(e,n,i,r,a){var o,s,l,c,u,h,f,d=rt(n,i,r?2:1);if(a)o=e;else{if("function"!=typeof(s=pr(e)))throw TypeError("Target is not iterable");if(fr(s)){for(l=0,c=le(e.length);c>l;l++)if((u=r?d(P(f=e[l])[0],f[1]):d(e[l]))&&u instanceof t)return u;return new t(!1)}o=s.call(e)}for(h=o.next;!(f=h.call(o)).done;)if("object"==typeof(u=cr(o,d,f.value,r))&&u&&u instanceof t)return u;return new t(!1)}).stop=function(e){return new t(!0,e)}}))),Ts=ws.getWeakData,Ss=Z.set,Es=Z.getterFor,As=ct.find,Ps=ct.findIndex,xs=0,Cs=function(e){return e.frozen||(e.frozen=new Os)},Os=function(){this.entries=[]},Is=function(e,t){return As(e.entries,(function(e){return e[0]===t}))};Os.prototype={get:function(e){var t=Is(this,e);if(t)return t[1]},has:function(e){return!!Is(this,e)},set:function(e,t){var n=Is(this,e);n?n[1]=t:this.entries.push([e,t])},delete:function(e){var t=Ps(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}};var Ls={getConstructor:function(e,t,n,i){var r=e((function(e,a){ar(e,r,t),Ss(e,{type:t,id:xs++,frozen:void 0}),null!=a&&ks(a,e[i],e,n)})),a=Es(t),o=function(e,t,n){var i=a(e),r=Ts(P(t),!0);return!0===r?Cs(i).set(t,n):r[i.id]=n,e};return Er(r.prototype,{delete:function(e){var t=a(this);if(!g(e))return!1;var n=Ts(e);return!0===n?Cs(t).delete(e):n&&b(n,t.id)&&delete n[t.id]},has:function(e){var t=a(this);if(!g(e))return!1;var n=Ts(e);return!0===n?Cs(t).has(e):n&&b(n,t.id)}}),Er(r.prototype,n?{get:function(e){var t=a(this);if(g(e)){var n=Ts(e);return!0===n?Cs(t).get(e):n?n[t.id]:void 0}},set:function(e,t){return o(this,e,t)}}:{add:function(e){return o(this,e,!0)}}),r}},js=(t((function(e){var t,n=Z.enforce,a=!i.ActiveXObject&&"ActiveXObject"in i,o=Object.isExtensible,s=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},l=e.exports=function(e,t,n){var a=-1!==e.indexOf("Map"),o=-1!==e.indexOf("Weak"),s=a?"set":"add",l=i[e],c=l&&l.prototype,u=l,h={},f=function(e){var t=c[e];ee(c,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(o&&!g(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return o&&!g(e)?void 0:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(o&&!g(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(Ce(e,"function"!=typeof l||!(o||c.forEach&&!r((function(){(new l).entries().next()})))))u=n.getConstructor(t,e,a,s),ws.REQUIRED=!0;else if(Ce(e,!0)){var d=new u,p=d[s](o?{}:-0,1)!=d,m=r((function(){d.has(1)})),v=Vo((function(e){new l(e)})),y=!o&&r((function(){for(var e=new l,t=5;t--;)e[s](t,t);return!e.has(-0)}));v||((u=t((function(t,n){ar(t,u,e);var i=Xo(new l,t,u);return null!=n&&ks(n,i[s],i,a),i}))).prototype=c,c.constructor=u),(m||y)&&(f("delete"),f("has"),a&&f("get")),(y||p)&&f(s),o&&c.clear&&delete c.clear}return h[e]=u,Ie({global:!0,forced:u!=l},h),nt(u,e),o||n.setStrong(u,e,a),u}("WeakMap",s,Ls);if(D&&a){t=Ls.getConstructor(s,"WeakMap",!0),ws.REQUIRED=!0;var c=l.prototype,u=c.delete,h=c.has,f=c.get,d=c.set;Er(c,{delete:function(e){if(g(e)&&!o(e)){var i=n(this);return i.frozen||(i.frozen=new t),u.call(this,e)||i.frozen.delete(e)}return u.call(this,e)},has:function(e){if(g(e)&&!o(e)){var i=n(this);return i.frozen||(i.frozen=new t),h.call(this,e)||i.frozen.has(e)}return h.call(this,e)},get:function(e){if(g(e)&&!o(e)){var i=n(this);return i.frozen||(i.frozen=new t),h.call(this,e)?f.call(this,e):i.frozen.get(e)}return f.call(this,e)},set:function(e,i){if(g(e)&&!o(e)){var r=n(this);r.frozen||(r.frozen=new t),h.call(this,e)?d.call(this,e,i):r.frozen.set(e,i)}else d.call(this,e,i);return this}})}})),ct.every),Ns=$t("every"),Rs=Qt("every");Ie({target:"Array",proto:!0,forced:!Ns||!Rs},{every:function(e){return js(this,e,arguments.length>1?arguments[1]:void 0)}}),Ie({target:"Object",stat:!0,forced:Object.assign!==lr},{assign:lr});var Ms=ns.trim;Ie({target:"String",proto:!0,forced:function(e){return r((function(){return!!Qo[e]()||"​…᠎"!="​…᠎"[e]()||Qo[e].name!==e}))}("trim")},{trim:function(){return Ms(this)}});var _s=ct.some,Us=$t("some"),Ds=Qt("some");Ie({target:"Array",proto:!0,forced:!Us||!Ds},{some:function(e){return _s(this,e,arguments.length>1?arguments[1]:void 0)}});var Fs="".repeat||function(e){var t=String(p(this)),n="",i=oe(e);if(i<0||i==1/0)throw RangeError("Wrong number of repetitions");for(;i>0;(i>>>=1)&&(t+=t))1&i&&(n+=t);return n},qs=1..toFixed,Hs=Math.floor,Bs=function(e,t,n){return 0===t?n:t%2==1?Bs(e,t-1,n*e):Bs(e*e,t/2,n)},Vs=qs&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!r((function(){qs.call({})}));Ie({target:"Number",proto:!0,forced:Vs},{toFixed:function(e){var t,n,i,r,a=function(e){if("number"!=typeof e&&"Number"!=h(e))throw TypeError("Incorrect invocation");return+e}(this),o=oe(e),s=[0,0,0,0,0,0],l="",c="0",u=function(e,t){for(var n=-1,i=t;++n<6;)i+=e*s[n],s[n]=i%1e7,i=Hs(i/1e7)},f=function(e){for(var t=6,n=0;--t>=0;)n+=s[t],s[t]=Hs(n/e),n=n%e*1e7},d=function(){for(var e=6,t="";--e>=0;)if(""!==t||0===e||0!==s[e]){var n=String(s[e]);t=""===t?n:t+Fs.call("0",7-n.length)+n}return t};if(o<0||o>20)throw RangeError("Incorrect fraction digits");if(a!=a)return"NaN";if(a<=-1e21||a>=1e21)return String(a);if(a<0&&(l="-",a=-a),a>1e-21)if(n=(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(a*Bs(2,69,1))-69)<0?a*Bs(2,-t,1):a/Bs(2,t,1),n*=4503599627370496,(t=52-t)>0){for(u(0,n),i=o;i>=7;)u(1e7,0),i-=7;for(u(Bs(10,i,1),0),i=t-1;i>=23;)f(1<<23),i-=23;f(1<<i),u(1,1),f(2),c=d()}else u(0,n),u(1<<-t,0),c=d()+Fs.call("0",o);return c=o>0?l+((r=c.length)<=o?"0."+Fs.call("0",o-r)+c:c.slice(0,r-o)+"."+c.slice(r-o)):l+c}});var zs=l.f,Ws=function(e){return function(t){for(var n,i=m(t),r=Me(i),o=r.length,s=0,l=[];o>s;)n=r[s++],a&&!zs.call(i,n)||l.push(e?[n,i[n]]:i[n]);return l}},Ks={entries:Ws(!0),values:Ws(!1)},$s=Ks.entries;Ie({target:"Object",stat:!0},{entries:function(e){return $s(e)}});var Ys=Ks.values;Ie({target:"Object",stat:!0},{values:function(e){return Ys(e)}}),Ie({target:"Number",stat:!0},{isNaN:function(e){return e!=e}});var Gs=A.f,Xs=r((function(){Gs(1)}));function Qs(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function Js(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Zs(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function el(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Zs(Object(n),!0).forEach((function(t){Js(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Zs(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ie({target:"Object",stat:!0,forced:!a||Xs,sham:!a},{getOwnPropertyDescriptor:function(e,t){return Gs(m(e),t)}}),Ie({target:"Object",stat:!0,sham:!a},{getOwnPropertyDescriptors:function(e){for(var t,n,i=m(e),r=A.f,a=we(i),o={},s=0;a.length>s;)void 0!==(n=r(i,t=a[s++]))&&Fn(o,t,n);return o}}),Oi("match",1,(function(e,t,n){return[function(t){var n=p(this),i=null==t?void 0:t[e];return void 0!==i?i.call(t,n):new RegExp(t)[e](String(n))},function(e){var i=n(t,e,this);if(i.done)return i.value;var r=P(e),a=String(this);if(!r.global)return ji(r,a);var o=r.unicode;r.lastIndex=0;for(var s,l=[],c=0;null!==(s=ji(r,a));){var u=String(s[0]);l[c]=u,""===u&&(r.lastIndex=Li(a,le(r.lastIndex),o)),c++}return 0===c?null:l}]}));var tl={addCSS:!0,thumbWidth:15,watch:!0};function nl(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}var il=function(e){return null!=e?e.constructor:null},rl=function(e,t){return!!(e&&t&&e instanceof t)},al=function(e){return null==e},ol=function(e){return il(e)===Object},sl=function(e){return il(e)===String},ll=function(e){return Array.isArray(e)},cl=function(e){return rl(e,NodeList)},ul=sl,hl=ll,fl=cl,dl=function(e){return rl(e,Element)},pl=function(e){return rl(e,Event)},ml=function(e){return al(e)||(sl(e)||ll(e)||cl(e))&&!e.length||ol(e)&&!Object.keys(e).length};function gl(e,t){if(1>t){var n=function(e){var t="".concat(e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}(t);return parseFloat(e.toFixed(n))}return Math.round(e/t)*t}var vl,yl,bl,wl=function(){function e(t,n){(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,e),dl(t)?this.element=t:ul(t)&&(this.element=document.querySelector(t)),dl(this.element)&&ml(this.element.rangeTouch)&&(this.config=el({},tl,{},n),this.init())}return function(e,t,n){t&&Qs(e.prototype,t),n&&Qs(e,n)}(e,[{key:"init",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect="none",this.element.style.webKitUserSelect="none",this.element.style.touchAction="manipulation"),this.listeners(!0),this.element.rangeTouch=this)}},{key:"destroy",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect="",this.element.style.webKitUserSelect="",this.element.style.touchAction=""),this.listeners(!1),this.element.rangeTouch=null)}},{key:"listeners",value:function(e){var t=this,n=e?"addEventListener":"removeEventListener";["touchstart","touchmove","touchend"].forEach((function(e){t.element[n](e,(function(e){return t.set(e)}),!1)}))}},{key:"get",value:function(t){if(!e.enabled||!pl(t))return null;var n,i=t.target,r=t.changedTouches[0],a=parseFloat(i.getAttribute("min"))||0,o=parseFloat(i.getAttribute("max"))||100,s=parseFloat(i.getAttribute("step"))||1,l=i.getBoundingClientRect(),c=100/l.width*(this.config.thumbWidth/2)/100;return 0>(n=100/l.width*(r.clientX-l.left))?n=0:100<n&&(n=100),50>n?n-=(100-2*n)*c:50<n&&(n+=2*(n-50)*c),a+gl(n/100*(o-a),s)}},{key:"set",value:function(t){e.enabled&&pl(t)&&!t.target.disabled&&(t.preventDefault(),t.target.value=this.get(t),function(e,t){if(e&&t){var n=new Event(t,{bubbles:!0});e.dispatchEvent(n)}}(t.target,"touchend"===t.type?"change":"input"))}}],[{key:"setup",value:function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=null;if(ml(t)||ul(t)?i=Array.from(document.querySelectorAll(ul(t)?t:'input[type="range"]')):dl(t)?i=[t]:fl(t)?i=Array.from(t):hl(t)&&(i=t.filter(dl)),ml(i))return null;var r=el({},tl,{},n);if(ul(t)&&r.watch){var a=new MutationObserver((function(n){Array.from(n).forEach((function(n){Array.from(n.addedNodes).forEach((function(n){dl(n)&&nl(n,t)&&new e(n,r)}))}))}));a.observe(document.body,{childList:!0,subtree:!0})}return i.map((function(t){return new e(t,n)}))}},{key:"enabled",get:function(){return"ontouchstart"in document.documentElement}}]),e}(),kl=i.Promise,Tl=Xe("species"),Sl=function(e){var t=ie(e),n=C.f;a&&t&&!t[Tl]&&n(t,Tl,{configurable:!0,get:function(){return this}})},El=/(iphone|ipod|ipad).*applewebkit/i.test(qn),Al=i.location,Pl=i.setImmediate,xl=i.clearImmediate,Cl=i.process,Ol=i.MessageChannel,Il=i.Dispatch,Ll=0,jl={},Nl=function(e){if(jl.hasOwnProperty(e)){var t=jl[e];delete jl[e],t()}},Rl=function(e){return function(){Nl(e)}},Ml=function(e){Nl(e.data)},_l=function(e){i.postMessage(e+"",Al.protocol+"//"+Al.host)};Pl&&xl||(Pl=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return jl[++Ll]=function(){("function"==typeof e?e:Function(e)).apply(void 0,t)},vl(Ll),Ll},xl=function(e){delete jl[e]},"process"==h(Cl)?vl=function(e){Cl.nextTick(Rl(e))}:Il&&Il.now?vl=function(e){Il.now(Rl(e))}:Ol&&!El?(bl=(yl=new Ol).port2,yl.port1.onmessage=Ml,vl=rt(bl.postMessage,bl,1)):!i.addEventListener||"function"!=typeof postMessage||i.importScripts||r(_l)||"file:"===Al.protocol?vl="onreadystatechange"in T("script")?function(e){Ue.appendChild(T("script")).onreadystatechange=function(){Ue.removeChild(this),Nl(e)}}:function(e){setTimeout(Rl(e),0)}:(vl=_l,i.addEventListener("message",Ml,!1)));var Ul,Dl,Fl,ql,Hl,Bl,Vl,zl,Wl={set:Pl,clear:xl},Kl=A.f,$l=Wl.set,Yl=i.MutationObserver||i.WebKitMutationObserver,Gl=i.process,Xl=i.Promise,Ql="process"==h(Gl),Jl=Kl(i,"queueMicrotask"),Zl=Jl&&Jl.value;Zl||(Ul=function(){var e,t;for(Ql&&(e=Gl.domain)&&e.exit();Dl;){t=Dl.fn,Dl=Dl.next;try{t()}catch(e){throw Dl?ql():Fl=void 0,e}}Fl=void 0,e&&e.enter()},Ql?ql=function(){Gl.nextTick(Ul)}:Yl&&!El?(Hl=!0,Bl=document.createTextNode(""),new Yl(Ul).observe(Bl,{characterData:!0}),ql=function(){Bl.data=Hl=!Hl}):Xl&&Xl.resolve?(Vl=Xl.resolve(void 0),zl=Vl.then,ql=function(){zl.call(Vl,Ul)}):ql=function(){$l.call(i,Ul)});var ec,tc,nc,ic,rc=Zl||function(e){var t={fn:e,next:void 0};Fl&&(Fl.next=t),Dl||(Dl=t,ql()),Fl=t},ac=function(e){var t,n;this.promise=new e((function(e,i){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=i})),this.resolve=it(t),this.reject=it(n)},oc={f:function(e){return new ac(e)}},sc=function(e,t){if(P(e),g(t)&&t.constructor===e)return t;var n=oc.f(e);return(0,n.resolve)(t),n.promise},lc=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},cc=Wl.set,uc=Xe("species"),hc="Promise",fc=Z.get,dc=Z.set,pc=Z.getterFor(hc),mc=kl,gc=i.TypeError,vc=i.document,yc=i.process,bc=ie("fetch"),wc=oc.f,kc=wc,Tc="process"==h(yc),Sc=!!(vc&&vc.createEvent&&i.dispatchEvent),Ec=Ce(hc,(function(){if(!(_(mc)!==String(mc))){if(66===zn)return!0;if(!Tc&&"function"!=typeof PromiseRejectionEvent)return!0}if(zn>=51&&/native code/.test(mc))return!1;var e=mc.resolve(1),t=function(e){e((function(){}),(function(){}))};return(e.constructor={})[uc]=t,!(e.then((function(){}))instanceof t)})),Ac=Ec||!Vo((function(e){mc.all(e).catch((function(){}))})),Pc=function(e){var t;return!(!g(e)||"function"!=typeof(t=e.then))&&t},xc=function(e,t,n){if(!t.notified){t.notified=!0;var i=t.reactions;rc((function(){for(var r=t.value,a=1==t.state,o=0;i.length>o;){var s,l,c,u=i[o++],h=a?u.ok:u.fail,f=u.resolve,d=u.reject,p=u.domain;try{h?(a||(2===t.rejection&&Lc(e,t),t.rejection=1),!0===h?s=r:(p&&p.enter(),s=h(r),p&&(p.exit(),c=!0)),s===u.promise?d(gc("Promise-chain cycle")):(l=Pc(s))?l.call(s,f,d):f(s)):d(r)}catch(e){p&&!c&&p.exit(),d(e)}}t.reactions=[],t.notified=!1,n&&!t.rejection&&Oc(e,t)}))}},Cc=function(e,t,n){var r,a;Sc?((r=vc.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),i.dispatchEvent(r)):r={promise:t,reason:n},(a=i["on"+e])?a(r):"unhandledrejection"===e&&function(e,t){var n=i.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}("Unhandled promise rejection",n)},Oc=function(e,t){cc.call(i,(function(){var n,i=t.value;if(Ic(t)&&(n=lc((function(){Tc?yc.emit("unhandledRejection",i,e):Cc("unhandledrejection",e,i)})),t.rejection=Tc||Ic(t)?2:1,n.error))throw n.value}))},Ic=function(e){return 1!==e.rejection&&!e.parent},Lc=function(e,t){cc.call(i,(function(){Tc?yc.emit("rejectionHandled",e):Cc("rejectionhandled",e,t.value)}))},jc=function(e,t,n,i){return function(r){e(t,n,r,i)}},Nc=function(e,t,n,i){t.done||(t.done=!0,i&&(t=i),t.value=n,t.state=2,xc(e,t,!0))},Rc=function(e,t,n,i){if(!t.done){t.done=!0,i&&(t=i);try{if(e===n)throw gc("Promise can't be resolved itself");var r=Pc(n);r?rc((function(){var i={done:!1};try{r.call(n,jc(Rc,e,i,t),jc(Nc,e,i,t))}catch(n){Nc(e,i,n,t)}})):(t.value=n,t.state=1,xc(e,t,!1))}catch(n){Nc(e,{done:!1},n,t)}}};Ec&&(mc=function(e){ar(this,mc,hc),it(e),ec.call(this);var t=fc(this);try{e(jc(Rc,this,t),jc(Nc,this,t))}catch(e){Nc(this,t,e)}},(ec=function(e){dc(this,{type:hc,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=Er(mc.prototype,{then:function(e,t){var n=pc(this),i=wc(Bi(this,mc));return i.ok="function"!=typeof e||e,i.fail="function"==typeof t&&t,i.domain=Tc?yc.domain:void 0,n.parent=!0,n.reactions.push(i),0!=n.state&&xc(this,n,!1),i.promise},catch:function(e){return this.then(void 0,e)}}),tc=function(){var e=new ec,t=fc(e);this.promise=e,this.resolve=jc(Rc,e,t),this.reject=jc(Nc,e,t)},oc.f=wc=function(e){return e===mc||e===nc?new tc(e):kc(e)},"function"==typeof kl&&(ic=kl.prototype.then,ee(kl.prototype,"then",(function(e,t){var n=this;return new mc((function(e,t){ic.call(n,e,t)})).then(e,t)}),{unsafe:!0}),"function"==typeof bc&&Ie({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return sc(mc,bc.apply(i,arguments))}}))),Ie({global:!0,wrap:!0,forced:Ec},{Promise:mc}),nt(mc,hc,!1),Sl(hc),nc=ie(hc),Ie({target:hc,stat:!0,forced:Ec},{reject:function(e){var t=wc(this);return t.reject.call(void 0,e),t.promise}}),Ie({target:hc,stat:!0,forced:Ec},{resolve:function(e){return sc(this,e)}}),Ie({target:hc,stat:!0,forced:Ac},{all:function(e){var t=this,n=wc(t),i=n.resolve,r=n.reject,a=lc((function(){var n=it(t.resolve),a=[],o=0,s=1;ks(e,(function(e){var l=o++,c=!1;a.push(void 0),s++,n.call(t,e).then((function(e){c||(c=!0,a[l]=e,--s||i(a))}),r)})),--s||i(a)}));return a.error&&r(a.value),n.promise},race:function(e){var t=this,n=wc(t),i=n.reject,r=lc((function(){var r=it(t.resolve);ks(e,(function(e){r.call(t,e).then(n.resolve,i)}))}));return r.error&&i(r.value),n.promise}});var Mc,_c=A.f,Uc="".startsWith,Dc=Math.min,Fc=ys("startsWith"),qc=!(Fc||(Mc=_c(String.prototype,"startsWith"),!Mc||Mc.writable));Ie({target:"String",proto:!0,forced:!qc&&!Fc},{startsWith:function(e){var t=String(p(this));gs(e);var n=le(Dc(arguments.length>1?arguments[1]:void 0,t.length)),i=String(e);return Uc?Uc.call(t,i,n):t.slice(n,n+i.length)===i}});var Hc,Bc,Vc,zc=function(e){return null!=e?e.constructor:null},Wc=function(e,t){return Boolean(e&&t&&e instanceof t)},Kc=function(e){return null==e},$c=function(e){return zc(e)===Object},Yc=function(e){return zc(e)===String},Gc=function(e){return zc(e)===Function},Xc=function(e){return Array.isArray(e)},Qc=function(e){return Wc(e,NodeList)},Jc=function(e){return Kc(e)||(Yc(e)||Xc(e)||Qc(e))&&!e.length||$c(e)&&!Object.keys(e).length},Zc=Kc,eu=$c,tu=function(e){return zc(e)===Number&&!Number.isNaN(e)},nu=Yc,iu=function(e){return zc(e)===Boolean},ru=Gc,au=Xc,ou=Qc,su=function(e){return Wc(e,Element)},lu=function(e){return Wc(e,Event)},cu=function(e){return Wc(e,KeyboardEvent)},uu=function(e){return Wc(e,TextTrack)||!Kc(e)&&Yc(e.kind)},hu=function(e){return Wc(e,Promise)&&Gc(e.then)},fu=function(e){if(Wc(e,window.URL))return!0;if(!Yc(e))return!1;var t=e;e.startsWith("http://")&&e.startsWith("https://")||(t="http://".concat(e));try{return!Jc(new URL(t).hostname)}catch(e){return!1}},du=Jc,pu=(Hc=document.createElement("span"),Bc={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},Vc=Object.keys(Bc).find((function(e){return void 0!==Hc.style[e]})),!!nu(Vc)&&Bc[Vc]);function mu(e,t){setTimeout((function(){try{e.hidden=!0,e.offsetHeight,e.hidden=!1}catch(e){}}),t)}var gu={isIE:
2
  /* @cc_on!@ */
3
  !!document.documentMode,isEdge:window.navigator.userAgent.includes("Edge"),isWebkit:"WebkitAppearance"in document.documentElement.style&&!/Edge/.test(navigator.userAgent),isIPhone:/(iPhone|iPod)/gi.test(navigator.platform),isIos:/(iPad|iPhone|iPod)/gi.test(navigator.platform)},vu=function(e){return function(t,n,i,r){it(n);var a=Re(t),o=d(a),s=le(a.length),l=e?s-1:0,c=e?-1:1;if(i<2)for(;;){if(l in o){r=o[l],l+=c;break}if(l+=c,e?l<0:s<=l)throw TypeError("Reduce of empty array with no initial value")}for(;e?l>=0:s>l;l+=c)l in o&&(r=n(r,o[l],l,a));return r}},yu={left:vu(!1),right:vu(!0)}.left,bu=$t("reduce"),wu=Qt("reduce",{1:0});function ku(e,t){return t.split(".").reduce((function(e,t){return e&&e[t]}),e)}function Tu(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];if(!n.length)return e;var r=n.shift();return eu(r)?(Object.keys(r).forEach((function(t){eu(r[t])?(Object.keys(e).includes(t)||Object.assign(e,ko({},t,{})),Tu(e[t],r[t])):Object.assign(e,ko({},t,r[t]))})),Tu.apply(void 0,[e].concat(n))):e}function Su(e,t){var n=e.length?e:[e];Array.from(n).reverse().forEach((function(e,n){var i=n>0?t.cloneNode(!0):t,r=e.parentNode,a=e.nextSibling;i.appendChild(e),a?r.insertBefore(i,a):r.appendChild(i)}))}function Eu(e,t){su(e)&&!du(t)&&Object.entries(t).filter((function(e){var t=Ao(e,2)[1];return!Zc(t)})).forEach((function(t){var n=Ao(t,2),i=n[0],r=n[1];return e.setAttribute(i,r)}))}function Au(e,t,n){var i=document.createElement(e);return eu(t)&&Eu(i,t),nu(n)&&(i.innerText=n),i}function Pu(e,t,n,i){su(t)&&t.appendChild(Au(e,n,i))}function xu(e){ou(e)||au(e)?Array.from(e).forEach(xu):su(e)&&su(e.parentNode)&&e.parentNode.removeChild(e)}function Cu(e){if(su(e))for(var t=e.childNodes.length;t>0;)e.removeChild(e.lastChild),t-=1}function Ou(e,t){return su(t)&&su(t.parentNode)&&su(e)?(t.parentNode.replaceChild(e,t),e):null}function Iu(e,t){if(!nu(e)||du(e))return{};var n={},i=Tu({},t);return e.split(",").forEach((function(e){var t=e.trim(),r=t.replace(".",""),a=t.replace(/[[\]]/g,"").split("="),o=Ao(a,1)[0],s=a.length>1?a[1].replace(/["']/g,""):"";switch(t.charAt(0)){case".":nu(i.class)?n.class="".concat(i.class," ").concat(r):n.class=r;break;case"#":n.id=t.replace("#","");break;case"[":n[o]=s}})),Tu(i,n)}function Lu(e,t){if(su(e)){var n=t;iu(n)||(n=!e.hidden),e.hidden=n}}function ju(e,t,n){if(ou(e))return Array.from(e).map((function(e){return ju(e,t,n)}));if(su(e)){var i="toggle";return void 0!==n&&(i=n?"add":"remove"),e.classList[i](t),e.classList.contains(t)}return!1}function Nu(e,t){return su(e)&&e.classList.contains(t)}function Ru(e,t){var n=Element.prototype;return(n.matches||n.webkitMatchesSelector||n.mozMatchesSelector||n.msMatchesSelector||function(){return Array.from(document.querySelectorAll(t)).includes(this)}).call(e,t)}function Mu(e){return this.elements.container.querySelectorAll(e)}function _u(e){return this.elements.container.querySelector(e)}function Uu(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];su(e)&&(e.focus({preventScroll:!0}),t&&ju(e,this.config.classNames.tabFocus))}Ie({target:"Array",proto:!0,forced:!bu||!wu},{reduce:function(e){return yu(this,e,arguments.length,arguments.length>1?arguments[1]:void 0)}});var Du,Fu={"audio/ogg":"vorbis","audio/wav":"1","video/webm":"vp8, vorbis","video/mp4":"avc1.42E01E, mp4a.40.2","video/ogg":"theora"},qu={audio:"canPlayType"in document.createElement("audio"),video:"canPlayType"in document.createElement("video"),check:function(e,t,n){var i=gu.isIPhone&&n&&qu.playsinline,r=qu[e]||"html5"!==t;return{api:r,ui:r&&qu.rangeInput&&("video"!==e||!gu.isIPhone||i)}},pip:!(gu.isIPhone||!ru(Au("video").webkitSetPresentationMode)&&(!document.pictureInPictureEnabled||Au("video").disablePictureInPicture)),airplay:ru(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:"playsInline"in document.createElement("video"),mime:function(e){if(du(e))return!1;var t=Ao(e.split("/"),1)[0],n=e;if(!this.isHTML5||t!==this.type)return!1;Object.keys(Fu).includes(n)&&(n+='; codecs="'.concat(Fu[e],'"'));try{return Boolean(n&&this.media.canPlayType(n).replace(/no/,""))}catch(e){return!1}},textTracks:"textTracks"in document.createElement("video"),rangeInput:(Du=document.createElement("input"),Du.type="range","range"===Du.type),touch:"ontouchstart"in document.documentElement,transitions:!1!==pu,reducedMotion:"matchMedia"in window&&window.matchMedia("(prefers-reduced-motion)").matches},Hu=function(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){return e=!0,null}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(e){}return e}();function Bu(e,t,n){var i=this,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=arguments.length>5&&void 0!==arguments[5]&&arguments[5];if(e&&"addEventListener"in e&&!du(t)&&ru(n)){var s=t.split(" "),l=o;Hu&&(l={passive:a,capture:o}),s.forEach((function(t){i&&i.eventListeners&&r&&i.eventListeners.push({element:e,type:t,callback:n,options:l}),e[r?"addEventListener":"removeEventListener"](t,n,l)}))}}function Vu(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];Bu.call(this,e,t,n,!0,i,r)}function zu(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];Bu.call(this,e,t,n,!1,i,r)}function Wu(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2?arguments[2]:void 0,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=function o(){zu(e,n,o,r,a);for(var s=arguments.length,l=new Array(s),c=0;c<s;c++)l[c]=arguments[c];i.apply(t,l)};Bu.call(this,e,n,o,!0,r,a)}function Ku(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(su(e)&&!du(t)){var r=new CustomEvent(t,{bubbles:n,detail:So(So({},i),{},{plyr:this})});e.dispatchEvent(r)}}function $u(){this&&this.eventListeners&&(this.eventListeners.forEach((function(e){var t=e.element,n=e.type,i=e.callback,r=e.options;t.removeEventListener(n,i,r)})),this.eventListeners=[])}function Yu(){var e=this;return new Promise((function(t){return e.ready?setTimeout(t,0):Vu.call(e,e.elements.container,"ready",t)})).then((function(){}))}function Gu(e){hu(e)&&e.then(null,(function(){}))}function Xu(e){return!!(au(e)||nu(e)&&e.includes(":"))&&(au(e)?e:e.split(":")).map(Number).every(tu)}function Qu(e){if(!au(e)||!e.every(tu))return null;var t=Ao(e,2),n=t[0],i=t[1],r=function e(t,n){return 0===n?t:e(n,t%n)}(n,i);return[n/r,i/r]}function Ju(e){var t=function(e){return Xu(e)?e.split(":").map(Number):null},n=t(e);if(null===n&&(n=t(this.config.ratio)),null===n&&!du(this.embed)&&au(this.embed.ratio)&&(n=this.embed.ratio),null===n&&this.isHTML5){var i=this.media;n=Qu([i.videoWidth,i.videoHeight])}return n}function Zu(e){if(!this.isVideo)return{};var t=this.elements.wrapper,n=Ju.call(this,e),i=Ao(au(n)?n:[0,0],2),r=100/i[0]*i[1];if(t.style.paddingBottom="".concat(r,"%"),this.isVimeo&&!this.config.vimeo.premium&&this.supported.ui){var a=100/this.media.offsetWidth*parseInt(window.getComputedStyle(this.media).paddingBottom,10),o=(a-r)/(a/50);this.media.style.transform="translateY(-".concat(o,"%)")}else this.isHTML5&&t.classList.toggle(this.config.classNames.videoFixedRatio,null!==n);return{padding:r,ratio:n}}var eh={getSources:function(){var e=this;return this.isHTML5?Array.from(this.media.querySelectorAll("source")).filter((function(t){var n=t.getAttribute("type");return!!du(n)||qu.mime.call(e,n)})):[]},getQualityOptions:function(){return this.config.quality.forced?this.config.quality.options:eh.getSources.call(this).map((function(e){return Number(e.getAttribute("size"))})).filter(Boolean)},setup:function(){if(this.isHTML5){var e=this;e.options.speed=e.config.speed.options,du(this.config.ratio)||Zu.call(e),Object.defineProperty(e.media,"quality",{get:function(){var t=eh.getSources.call(e).find((function(t){return t.getAttribute("src")===e.source}));return t&&Number(t.getAttribute("size"))},set:function(t){if(e.quality!==t){if(e.config.quality.forced&&ru(e.config.quality.onChange))e.config.quality.onChange(t);else{var n=eh.getSources.call(e).find((function(e){return Number(e.getAttribute("size"))===t}));if(!n)return;var i=e.media,r=i.currentTime,a=i.paused,o=i.preload,s=i.readyState,l=i.playbackRate;e.media.src=n.getAttribute("src"),("none"!==o||s)&&(e.once("loadedmetadata",(function(){e.speed=l,e.currentTime=r,a||Gu(e.play())})),e.media.load())}Ku.call(e,e.media,"qualitychange",!1,{quality:t})}}})}},cancelRequests:function(){this.isHTML5&&(xu(eh.getSources.call(this)),this.media.setAttribute("src",this.config.blankVideo),this.media.load(),this.debug.log("Cancelled network requests"))}};function th(e){return au(e)?e.filter((function(t,n){return e.indexOf(t)===n})):e}var nh=C.f,ih=ye.f,rh=Z.set,ah=Xe("match"),oh=i.RegExp,sh=oh.prototype,lh=/a/g,ch=/a/g,uh=new oh(lh)!==lh,hh=oi.UNSUPPORTED_Y;if(a&&Ce("RegExp",!uh||hh||r((function(){return ch[ah]=!1,oh(lh)!=lh||oh(ch)==ch||"/a/i"!=oh(lh,"i")})))){for(var fh=function(e,t){var n,i=this instanceof fh,r=qi(e),a=void 0===t;if(!i&&r&&e.constructor===fh&&a)return e;uh?r&&!a&&(e=e.source):e instanceof fh&&(a&&(t=ri.call(e)),e=e.source),hh&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var o=Xo(uh?new oh(e,t):oh(e,t),i?this:sh,fh);return hh&&n&&rh(o,{sticky:n}),o},dh=function(e){e in fh||nh(fh,e,{configurable:!0,get:function(){return oh[e]},set:function(t){oh[e]=t}})},ph=ih(oh),mh=0;ph.length>mh;)dh(ph[mh++]);sh.constructor=fh,fh.prototype=sh,ee(i,"RegExp",fh)}function gh(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return du(e)?e:e.toString().replace(/{(\d+)}/g,(function(e,t){return n[t].toString()}))}Sl("RegExp");var vh=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return e.replace(new RegExp(t.toString().replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1"),"g"),n.toString())},yh=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.toString().replace(/\w\S*/g,(function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()}))};function bh(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.toString();return t=vh(t,"-"," "),t=vh(t,"_"," "),t=yh(t),vh(t," ","")}function wh(e){var t=document.createElement("div");return t.appendChild(e),t.innerHTML}var kh={pip:"PIP",airplay:"AirPlay",html5:"HTML5",vimeo:"Vimeo",youtube:"YouTube"},Th=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(du(e)||du(t))return"";var n=ku(t.i18n,e);if(du(n))return Object.keys(kh).includes(e)?kh[e]:"";var i={"{seektime}":t.seekTime,"{title}":t.title};return Object.entries(i).forEach((function(e){var t=Ao(e,2),i=t[0],r=t[1];n=vh(n,i,r)})),n},Sh=function(){function e(t){yo(this,e),this.enabled=t.config.storage.enabled,this.key=t.config.storage.key}return wo(e,[{key:"get",value:function(t){if(!e.supported||!this.enabled)return null;var n=window.localStorage.getItem(this.key);if(du(n))return null;var i=JSON.parse(n);return nu(t)&&t.length?i[t]:i}},{key:"set",value:function(t){if(e.supported&&this.enabled&&eu(t)){var n=this.get();du(n)&&(n={}),Tu(n,t),window.localStorage.setItem(this.key,JSON.stringify(n))}}}],[{key:"supported",get:function(){try{if(!("localStorage"in window))return!1;return window.localStorage.setItem("___test","___test"),window.localStorage.removeItem("___test"),!0}catch(e){return!1}}}]),e}();function Eh(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"text";return new Promise((function(n,i){try{var r=new XMLHttpRequest;if(!("withCredentials"in r))return;r.addEventListener("load",(function(){if("text"===t)try{n(JSON.parse(r.responseText))}catch(e){n(r.responseText)}else n(r.response)})),r.addEventListener("error",(function(){throw new Error(r.status)})),r.open("GET",e,!0),r.responseType=t,r.send()}catch(e){i(e)}}))}function Ah(e,t){if(nu(e)){var n=nu(t),i=function(){return null!==document.getElementById(t)},r=function(e,t){e.innerHTML=t,n&&i()||document.body.insertAdjacentElement("afterbegin",e)};if(!n||!i()){var a=Sh.supported,o=document.createElement("div");if(o.setAttribute("hidden",""),n&&o.setAttribute("id",t),a){var s=window.localStorage.getItem("".concat("cache","-").concat(t));if(null!==s){var l=JSON.parse(s);r(o,l.content)}}Eh(e).then((function(e){du(e)||(a&&window.localStorage.setItem("".concat("cache","-").concat(t),JSON.stringify({content:e})),r(o,e))})).catch((function(){}))}}}var Ph=Math.ceil,xh=Math.floor;Ie({target:"Math",stat:!0},{trunc:function(e){return(e>0?xh:Ph)(e)}});var Ch=function(e){return Math.trunc(e/60/60%60,10)},Oh=function(e){return Math.trunc(e/60%60,10)},Ih=function(e){return Math.trunc(e%60,10)};function Lh(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!tu(e))return Lh(void 0,t,n);var i=function(e){return"0".concat(e).slice(-2)},r=Ch(e),a=Oh(e),o=Ih(e);return r=t||r>0?"".concat(r,":"):"","".concat(n&&e>0?"-":"").concat(r).concat(i(a),":").concat(i(o))}var jh={getIconUrl:function(){var e=new URL(this.config.iconUrl,window.location).host!==window.location.host||gu.isIE&&!window.svg4everybody;return{url:this.config.iconUrl,cors:e}},findElements:function(){try{return this.elements.controls=_u.call(this,this.config.selectors.controls.wrapper),this.elements.buttons={play:Mu.call(this,this.config.selectors.buttons.play),pause:_u.call(this,this.config.selectors.buttons.pause),restart:_u.call(this,this.config.selectors.buttons.restart),rewind:_u.call(this,this.config.selectors.buttons.rewind),fastForward:_u.call(this,this.config.selectors.buttons.fastForward),mute:_u.call(this,this.config.selectors.buttons.mute),pip:_u.call(this,this.config.selectors.buttons.pip),airplay:_u.call(this,this.config.selectors.buttons.airplay),settings:_u.call(this,this.config.selectors.buttons.settings),captions:_u.call(this,this.config.selectors.buttons.captions),fullscreen:_u.call(this,this.config.selectors.buttons.fullscreen)},this.elements.progress=_u.call(this,this.config.selectors.progress),this.elements.inputs={seek:_u.call(this,this.config.selectors.inputs.seek),volume:_u.call(this,this.config.selectors.inputs.volume)},this.elements.display={buffer:_u.call(this,this.config.selectors.display.buffer),currentTime:_u.call(this,this.config.selectors.display.currentTime),duration:_u.call(this,this.config.selectors.display.duration)},su(this.elements.progress)&&(this.elements.display.seekTooltip=this.elements.progress.querySelector(".".concat(this.config.classNames.tooltip))),!0}catch(e){return this.debug.warn("It looks like there is a problem with your custom controls HTML",e),this.toggleNativeControls(!0),!1}},createIcon:function(e,t){var n=jh.getIconUrl.call(this),i="".concat(n.cors?"":n.url,"#").concat(this.config.iconPrefix),r=document.createElementNS("http://www.w3.org/2000/svg","svg");Eu(r,Tu(t,{"aria-hidden":"true",focusable:"false"}));var a=document.createElementNS("http://www.w3.org/2000/svg","use"),o="".concat(i,"-").concat(e);return"href"in a&&a.setAttributeNS("http://www.w3.org/1999/xlink","href",o),a.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o),r.appendChild(a),r},createLabel:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Th(e,this.config),i=So(So({},t),{},{class:[t.class,this.config.classNames.hidden].filter(Boolean).join(" ")});return Au("span",i,n)},createBadge:function(e){if(du(e))return null;var t=Au("span",{class:this.config.classNames.menu.value});return t.appendChild(Au("span",{class:this.config.classNames.menu.badge},e)),t},createButton:function(e,t){var n=this,i=Tu({},t),r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.toString();return(t=bh(t)).charAt(0).toLowerCase()+t.slice(1)}(e),a={element:"button",toggle:!1,label:null,icon:null,labelPressed:null,iconPressed:null};switch(["element","icon","label"].forEach((function(e){Object.keys(i).includes(e)&&(a[e]=i[e],delete i[e])})),"button"!==a.element||Object.keys(i).includes("type")||(i.type="button"),Object.keys(i).includes("class")?i.class.split(" ").some((function(e){return e===n.config.classNames.control}))||Tu(i,{class:"".concat(i.class," ").concat(this.config.classNames.control)}):i.class=this.config.classNames.control,e){case"play":a.toggle=!0,a.label="play",a.labelPressed="pause",a.icon="play",a.iconPressed="pause";break;case"mute":a.toggle=!0,a.label="mute",a.labelPressed="unmute",a.icon="volume",a.iconPressed="muted";break;case"captions":a.toggle=!0,a.label="enableCaptions",a.labelPressed="disableCaptions",a.icon="captions-off",a.iconPressed="captions-on";break;case"fullscreen":a.toggle=!0,a.label="enterFullscreen",a.labelPressed="exitFullscreen",a.icon="enter-fullscreen",a.iconPressed="exit-fullscreen";break;case"play-large":i.class+=" ".concat(this.config.classNames.control,"--overlaid"),r="play",a.label="play",a.icon="play";break;default:du(a.label)&&(a.label=r),du(a.icon)&&(a.icon=e)}var o=Au(a.element);return a.toggle?(o.appendChild(jh.createIcon.call(this,a.iconPressed,{class:"icon--pressed"})),o.appendChild(jh.createIcon.call(this,a.icon,{class:"icon--not-pressed"})),o.appendChild(jh.createLabel.call(this,a.labelPressed,{class:"label--pressed"})),o.appendChild(jh.createLabel.call(this,a.label,{class:"label--not-pressed"}))):(o.appendChild(jh.createIcon.call(this,a.icon)),o.appendChild(jh.createLabel.call(this,a.label))),Tu(i,Iu(this.config.selectors.buttons[r],i)),Eu(o,i),"play"===r?(au(this.elements.buttons[r])||(this.elements.buttons[r]=[]),this.elements.buttons[r].push(o)):this.elements.buttons[r]=o,o},createRange:function(e,t){var n=Au("input",Tu(Iu(this.config.selectors.inputs[e]),{type:"range",min:0,max:100,step:.01,value:0,autocomplete:"off",role:"slider","aria-label":Th(e,this.config),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":0},t));return this.elements.inputs[e]=n,jh.updateRangeFill.call(this,n),wl.setup(n),n},createProgress:function(e,t){var n=Au("progress",Tu(Iu(this.config.selectors.display[e]),{min:0,max:100,value:0,role:"progressbar","aria-hidden":!0},t));if("volume"!==e){n.appendChild(Au("span",null,"0"));var i={played:"played",buffer:"buffered"}[e],r=i?Th(i,this.config):"";n.innerText="% ".concat(r.toLowerCase())}return this.elements.display[e]=n,n},createTime:function(e,t){var n=Iu(this.config.selectors.display[e],t),i=Au("div",Tu(n,{class:"".concat(n.class?n.class:""," ").concat(this.config.classNames.display.time," ").trim(),"aria-label":Th(e,this.config)}),"00:00");return this.elements.display[e]=i,i},bindMenuItemShortcuts:function(e,t){var n=this;Vu.call(this,e,"keydown keyup",(function(i){if([32,38,39,40].includes(i.which)&&(i.preventDefault(),i.stopPropagation(),"keydown"!==i.type)){var r,a=Ru(e,'[role="menuitemradio"]');if(!a&&[32,39].includes(i.which))jh.showMenuPanel.call(n,t,!0);else 32!==i.which&&(40===i.which||a&&39===i.which?(r=e.nextElementSibling,su(r)||(r=e.parentNode.firstElementChild)):(r=e.previousElementSibling,su(r)||(r=e.parentNode.lastElementChild)),Uu.call(n,r,!0))}}),!1),Vu.call(this,e,"keyup",(function(e){13===e.which&&jh.focusFirstMenuItem.call(n,null,!0)}))},createMenuItem:function(e){var t=this,n=e.value,i=e.list,r=e.type,a=e.title,o=e.badge,s=void 0===o?null:o,l=e.checked,c=void 0!==l&&l,u=Iu(this.config.selectors.inputs[r]),h=Au("button",Tu(u,{type:"button",role:"menuitemradio",class:"".concat(this.config.classNames.control," ").concat(u.class?u.class:"").trim(),"aria-checked":c,value:n})),f=Au("span");f.innerHTML=a,su(s)&&f.appendChild(s),h.appendChild(f),Object.defineProperty(h,"checked",{enumerable:!0,get:function(){return"true"===h.getAttribute("aria-checked")},set:function(e){e&&Array.from(h.parentNode.children).filter((function(e){return Ru(e,'[role="menuitemradio"]')})).forEach((function(e){return e.setAttribute("aria-checked","false")})),h.setAttribute("aria-checked",e?"true":"false")}}),this.listeners.bind(h,"click keyup",(function(e){if(!cu(e)||32===e.which){switch(e.preventDefault(),e.stopPropagation(),h.checked=!0,r){case"language":t.currentTrack=Number(n);break;case"quality":t.quality=n;break;case"speed":t.speed=parseFloat(n)}jh.showMenuPanel.call(t,"home",cu(e))}}),r,!1),jh.bindMenuItemShortcuts.call(this,h,r),i.appendChild(h)},formatTime:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!tu(e))return e;var n=Ch(this.duration)>0;return Lh(e,n,t)},updateTimeDisplay:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];su(e)&&tu(t)&&(e.innerText=jh.formatTime(t,n))},updateVolume:function(){this.supported.ui&&(su(this.elements.inputs.volume)&&jh.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),su(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;su(e)&&(e.value=t,jh.updateRangeFill.call(this,e))},updateProgress:function(e){var t=this;if(this.supported.ui&&lu(e)){var n=0;if(e)switch(e.type){case"timeupdate":case"seeking":case"seeked":n=function(e,t){return 0===e||0===t||Number.isNaN(e)||Number.isNaN(t)?0:(e/t*100).toFixed(2)}(this.currentTime,this.duration),"timeupdate"===e.type&&jh.setRange.call(this,this.elements.inputs.seek,n);break;case"playing":case"progress":!function(e,n){var i=tu(n)?n:0,r=su(e)?e:t.elements.display.buffer;if(su(r)){r.value=i;var a=r.getElementsByTagName("span")[0];su(a)&&(a.childNodes[0].nodeValue=i)}}(this.elements.display.buffer,100*this.buffered)}}},updateRangeFill:function(e){var t=lu(e)?e.target:e;if(su(t)&&"range"===t.getAttribute("type")){if(Ru(t,this.config.selectors.inputs.seek)){t.setAttribute("aria-valuenow",this.currentTime);var n=jh.formatTime(this.currentTime),i=jh.formatTime(this.duration),r=Th("seekLabel",this.config);t.setAttribute("aria-valuetext",r.replace("{currentTime}",n).replace("{duration}",i))}else if(Ru(t,this.config.selectors.inputs.volume)){var a=100*t.value;t.setAttribute("aria-valuenow",a),t.setAttribute("aria-valuetext","".concat(a.toFixed(1),"%"))}else t.setAttribute("aria-valuenow",t.value);gu.isWebkit&&t.style.setProperty("--value","".concat(t.value/t.max*100,"%"))}},updateSeekTooltip:function(e){var t=this;if(this.config.tooltips.seek&&su(this.elements.inputs.seek)&&su(this.elements.display.seekTooltip)&&0!==this.duration){var n="".concat(this.config.classNames.tooltip,"--visible"),i=function(e){return ju(t.elements.display.seekTooltip,n,e)};if(this.touch)i(!1);else{var r=0,a=this.elements.progress.getBoundingClientRect();if(lu(e))r=100/a.width*(e.pageX-a.left);else{if(!Nu(this.elements.display.seekTooltip,n))return;r=parseFloat(this.elements.display.seekTooltip.style.left,10)}r<0?r=0:r>100&&(r=100),jh.updateTimeDisplay.call(this,this.elements.display.seekTooltip,this.duration/100*r),this.elements.display.seekTooltip.style.left="".concat(r,"%"),lu(e)&&["mouseenter","mouseleave"].includes(e.type)&&i("mouseenter"===e.type)}}},timeUpdate:function(e){var t=!su(this.elements.display.duration)&&this.config.invertTime;jh.updateTimeDisplay.call(this,this.elements.display.currentTime,t?this.duration-this.currentTime:this.currentTime,t),e&&"timeupdate"===e.type&&this.media.seeking||jh.updateProgress.call(this,e)},durationUpdate:function(){if(this.supported.ui&&(this.config.invertTime||!this.currentTime)){if(this.duration>=Math.pow(2,32))return Lu(this.elements.display.currentTime,!0),void Lu(this.elements.progress,!0);su(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute("aria-valuemax",this.duration);var e=su(this.elements.display.duration);!e&&this.config.displayDuration&&this.paused&&jh.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),e&&jh.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),jh.updateSeekTooltip.call(this)}},toggleMenuButton:function(e,t){Lu(this.elements.settings.buttons[e],!t)},updateSetting:function(e,t,n){var i=this.elements.settings.panels[e],r=null,a=t;if("captions"===e)r=this.currentTrack;else{if(r=du(n)?this[e]:n,du(r)&&(r=this.config[e].default),!du(this.options[e])&&!this.options[e].includes(r))return void this.debug.warn("Unsupported value of '".concat(r,"' for ").concat(e));if(!this.config[e].options.includes(r))return void this.debug.warn("Disabled value of '".concat(r,"' for ").concat(e))}if(su(a)||(a=i&&i.querySelector('[role="menu"]')),su(a)){this.elements.settings.buttons[e].querySelector(".".concat(this.config.classNames.menu.value)).innerHTML=jh.getLabel.call(this,e,r);var o=a&&a.querySelector('[value="'.concat(r,'"]'));su(o)&&(o.checked=!0)}},getLabel:function(e,t){switch(e){case"speed":return 1===t?Th("normal",this.config):"".concat(t,"&times;");case"quality":if(tu(t)){var n=Th("qualityLabel.".concat(t),this.config);return n.length?n:"".concat(t,"p")}return yh(t);case"captions":return Mh.getLabel.call(this);default:return null}},setQualityMenu:function(e){var t=this;if(su(this.elements.settings.panels.quality)){var n=this.elements.settings.panels.quality.querySelector('[role="menu"]');au(e)&&(this.options.quality=th(e).filter((function(e){return t.config.quality.options.includes(e)})));var i=!du(this.options.quality)&&this.options.quality.length>1;if(jh.toggleMenuButton.call(this,"quality",i),Cu(n),jh.checkMenu.call(this),i){var r=function(e){var n=Th("qualityBadge.".concat(e),t.config);return n.length?jh.createBadge.call(t,n):null};this.options.quality.sort((function(e,n){var i=t.config.quality.options;return i.indexOf(e)>i.indexOf(n)?1:-1})).forEach((function(e){jh.createMenuItem.call(t,{value:e,list:n,type:"quality",title:jh.getLabel.call(t,"quality",e),badge:r(e)})})),jh.updateSetting.call(this,"quality",n)}}},setCaptionsMenu:function(){var e=this;if(su(this.elements.settings.panels.captions)){var t=this.elements.settings.panels.captions.querySelector('[role="menu"]'),n=Mh.getTracks.call(this),i=Boolean(n.length);if(jh.toggleMenuButton.call(this,"captions",i),Cu(t),jh.checkMenu.call(this),i){var r=n.map((function(n,i){return{value:i,checked:e.captions.toggled&&e.currentTrack===i,title:Mh.getLabel.call(e,n),badge:n.language&&jh.createBadge.call(e,n.language.toUpperCase()),list:t,type:"language"}}));r.unshift({value:-1,checked:!this.captions.toggled,title:Th("disabled",this.config),list:t,type:"language"}),r.forEach(jh.createMenuItem.bind(this)),jh.updateSetting.call(this,"captions",t)}}},setSpeedMenu:function(){var e=this;if(su(this.elements.settings.panels.speed)){var t=this.elements.settings.panels.speed.querySelector('[role="menu"]');this.options.speed=this.options.speed.filter((function(t){return t>=e.minimumSpeed&&t<=e.maximumSpeed}));var n=!du(this.options.speed)&&this.options.speed.length>1;jh.toggleMenuButton.call(this,"speed",n),Cu(t),jh.checkMenu.call(this),n&&(this.options.speed.forEach((function(n){jh.createMenuItem.call(e,{value:n,list:t,type:"speed",title:jh.getLabel.call(e,"speed",n)})})),jh.updateSetting.call(this,"speed",t))}},checkMenu:function(){var e=this.elements.settings.buttons,t=!du(e)&&Object.values(e).some((function(e){return!e.hidden}));Lu(this.elements.settings.menu,!t)},focusFirstMenuItem:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this.elements.settings.popup.hidden){var n=e;su(n)||(n=Object.values(this.elements.settings.panels).find((function(e){return!e.hidden})));var i=n.querySelector('[role^="menuitem"]');Uu.call(this,i,t)}},toggleMenu:function(e){var t=this.elements.settings.popup,n=this.elements.buttons.settings;if(su(t)&&su(n)){var i=t.hidden,r=i;if(iu(e))r=e;else if(cu(e)&&27===e.which)r=!1;else if(lu(e)){var a=ru(e.composedPath)?e.composedPath()[0]:e.target,o=t.contains(a);if(o||!o&&e.target!==n&&r)return}n.setAttribute("aria-expanded",r),Lu(t,!r),ju(this.elements.container,this.config.classNames.menu.open,r),r&&cu(e)?jh.focusFirstMenuItem.call(this,null,!0):r||i||Uu.call(this,n,cu(e))}},getMenuSize:function(e){var t=e.cloneNode(!0);t.style.position="absolute",t.style.opacity=0,t.removeAttribute("hidden"),e.parentNode.appendChild(t);var n=t.scrollWidth,i=t.scrollHeight;return xu(t),{width:n,height:i}},showMenuPanel:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.elements.container.querySelector("#plyr-settings-".concat(this.id,"-").concat(t));if(su(i)){var r=i.parentNode,a=Array.from(r.children).find((function(e){return!e.hidden}));if(qu.transitions&&!qu.reducedMotion){r.style.width="".concat(a.scrollWidth,"px"),r.style.height="".concat(a.scrollHeight,"px");var o=jh.getMenuSize.call(this,i),s=function t(n){n.target===r&&["width","height"].includes(n.propertyName)&&(r.style.width="",r.style.height="",zu.call(e,r,pu,t))};Vu.call(this,r,pu,s),r.style.width="".concat(o.width,"px"),r.style.height="".concat(o.height,"px")}Lu(a,!0),Lu(i,!1),jh.focusFirstMenuItem.call(this,i,n)}},setDownloadUrl:function(){var e=this.elements.buttons.download;su(e)&&e.setAttribute("href",this.download)},create:function(e){var t=this,n=jh.bindMenuItemShortcuts,i=jh.createButton,r=jh.createProgress,a=jh.createRange,o=jh.createTime,s=jh.setQualityMenu,l=jh.setSpeedMenu,c=jh.showMenuPanel;this.elements.controls=null,au(this.config.controls)&&this.config.controls.includes("play-large")&&this.elements.container.appendChild(i.call(this,"play-large"));var u=Au("div",Iu(this.config.selectors.controls.wrapper));this.elements.controls=u;var h={class:"plyr__controls__item"};return th(au(this.config.controls)?this.config.controls:[]).forEach((function(s){if("restart"===s&&u.appendChild(i.call(t,"restart",h)),"rewind"===s&&u.appendChild(i.call(t,"rewind",h)),"play"===s&&u.appendChild(i.call(t,"play",h)),"fast-forward"===s&&u.appendChild(i.call(t,"fast-forward",h)),"progress"===s){var l=Au("div",{class:"".concat(h.class," plyr__progress__container")}),f=Au("div",Iu(t.config.selectors.progress));if(f.appendChild(a.call(t,"seek",{id:"plyr-seek-".concat(e.id)})),f.appendChild(r.call(t,"buffer")),t.config.tooltips.seek){var d=Au("span",{class:t.config.classNames.tooltip},"00:00");f.appendChild(d),t.elements.display.seekTooltip=d}t.elements.progress=f,l.appendChild(t.elements.progress),u.appendChild(l)}if("current-time"===s&&u.appendChild(o.call(t,"currentTime",h)),"duration"===s&&u.appendChild(o.call(t,"duration",h)),"mute"===s||"volume"===s){var p=t.elements.volume;if(su(p)&&u.contains(p)||(p=Au("div",Tu({},h,{class:"".concat(h.class," plyr__volume").trim()})),t.elements.volume=p,u.appendChild(p)),"mute"===s&&p.appendChild(i.call(t,"mute")),"volume"===s&&!gu.isIos){var m={max:1,step:.05,value:t.config.volume};p.appendChild(a.call(t,"volume",Tu(m,{id:"plyr-volume-".concat(e.id)})))}}if("captions"===s&&u.appendChild(i.call(t,"captions",h)),"settings"===s&&!du(t.config.settings)){var g=Au("div",Tu({},h,{class:"".concat(h.class," plyr__menu").trim(),hidden:""}));g.appendChild(i.call(t,"settings",{"aria-haspopup":!0,"aria-controls":"plyr-settings-".concat(e.id),"aria-expanded":!1}));var v=Au("div",{class:"plyr__menu__container",id:"plyr-settings-".concat(e.id),hidden:""}),y=Au("div"),b=Au("div",{id:"plyr-settings-".concat(e.id,"-home")}),w=Au("div",{role:"menu"});b.appendChild(w),y.appendChild(b),t.elements.settings.panels.home=b,t.config.settings.forEach((function(i){var r=Au("button",Tu(Iu(t.config.selectors.buttons.settings),{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--forward"),role:"menuitem","aria-haspopup":!0,hidden:""}));n.call(t,r,i),Vu.call(t,r,"click",(function(){c.call(t,i,!1)}));var a=Au("span",null,Th(i,t.config)),o=Au("span",{class:t.config.classNames.menu.value});o.innerHTML=e[i],a.appendChild(o),r.appendChild(a),w.appendChild(r);var s=Au("div",{id:"plyr-settings-".concat(e.id,"-").concat(i),hidden:""}),l=Au("button",{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--back")});l.appendChild(Au("span",{"aria-hidden":!0},Th(i,t.config))),l.appendChild(Au("span",{class:t.config.classNames.hidden},Th("menuBack",t.config))),Vu.call(t,s,"keydown",(function(e){37===e.which&&(e.preventDefault(),e.stopPropagation(),c.call(t,"home",!0))}),!1),Vu.call(t,l,"click",(function(){c.call(t,"home",!1)})),s.appendChild(l),s.appendChild(Au("div",{role:"menu"})),y.appendChild(s),t.elements.settings.buttons[i]=r,t.elements.settings.panels[i]=s})),v.appendChild(y),g.appendChild(v),u.appendChild(g),t.elements.settings.popup=v,t.elements.settings.menu=g}if("pip"===s&&qu.pip&&u.appendChild(i.call(t,"pip",h)),"airplay"===s&&qu.airplay&&u.appendChild(i.call(t,"airplay",h)),"download"===s){var k=Tu({},h,{element:"a",href:t.download,target:"_blank"});t.isHTML5&&(k.download="");var T=t.config.urls.download;!fu(T)&&t.isEmbed&&Tu(k,{icon:"logo-".concat(t.provider),label:t.provider}),u.appendChild(i.call(t,"download",k))}"fullscreen"===s&&u.appendChild(i.call(t,"fullscreen",h))})),this.isHTML5&&s.call(this,eh.getQualityOptions.call(this)),l.call(this),u},inject:function(){var e=this;if(this.config.loadSprite){var t=jh.getIconUrl.call(this);t.cors&&Ah(t.url,"sprite-plyr")}this.id=Math.floor(1e4*Math.random());var n=null;this.elements.controls=null;var i={id:this.id,seektime:this.config.seekTime,title:this.config.title},r=!0;ru(this.config.controls)&&(this.config.controls=this.config.controls.call(this,i)),this.config.controls||(this.config.controls=[]),su(this.config.controls)||nu(this.config.controls)?n=this.config.controls:(n=jh.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality,captions:Mh.getLabel.call(this)}),r=!1);var a,o;if(r&&nu(this.config.controls)&&(a=n,Object.entries(i).forEach((function(e){var t=Ao(e,2),n=t[0],i=t[1];a=vh(a,"{".concat(n,"}"),i)})),n=a),nu(this.config.selectors.controls.container)&&(o=document.querySelector(this.config.selectors.controls.container)),su(o)||(o=this.elements.container),o[su(n)?"insertAdjacentElement":"insertAdjacentHTML"]("afterbegin",n),su(this.elements.controls)||jh.findElements.call(this),!du(this.elements.buttons)){var s=function(t){var n=e.config.classNames.controlPressed;Object.defineProperty(t,"pressed",{enumerable:!0,get:function(){return Nu(t,n)},set:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];ju(t,n,e)}})};Object.values(this.elements.buttons).filter(Boolean).forEach((function(e){au(e)||ou(e)?Array.from(e).filter(Boolean).forEach(s):s(e)}))}if(gu.isEdge&&mu(o),this.config.tooltips.controls){var l=this.config,c=l.classNames,u=l.selectors,h="".concat(u.controls.wrapper," ").concat(u.labels," .").concat(c.hidden),f=Mu.call(this,h);Array.from(f).forEach((function(t){ju(t,e.config.classNames.hidden,!1),ju(t,e.config.classNames.tooltip,!0)}))}}};function Nh(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=e;if(t){var i=document.createElement("a");i.href=n,n=i.href}try{return new URL(n)}catch(e){return null}}function Rh(e){var t=new URLSearchParams;return eu(e)&&Object.entries(e).forEach((function(e){var n=Ao(e,2),i=n[0],r=n[1];t.set(i,r)})),t}var Mh={setup:function(){if(this.supported.ui)if(!this.isVideo||this.isYouTube||this.isHTML5&&!qu.textTracks)au(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&jh.setCaptionsMenu.call(this);else{if(su(this.elements.captions)||(this.elements.captions=Au("div",Iu(this.config.selectors.captions)),function(e,t){su(e)&&su(t)&&t.parentNode.insertBefore(e,t.nextSibling)}(this.elements.captions,this.elements.wrapper)),gu.isIE&&window.URL){var e=this.media.querySelectorAll("track");Array.from(e).forEach((function(e){var t=e.getAttribute("src"),n=Nh(t);null!==n&&n.hostname!==window.location.href.hostname&&["http:","https:"].includes(n.protocol)&&Eh(t,"blob").then((function(t){e.setAttribute("src",window.URL.createObjectURL(t))})).catch((function(){xu(e)}))}))}var t=th((navigator.languages||[navigator.language||navigator.userLanguage||"en"]).map((function(e){return e.split("-")[0]}))),n=(this.storage.get("language")||this.config.captions.language||"auto").toLowerCase();if("auto"===n)n=Ao(t,1)[0];var i=this.storage.get("captions");if(iu(i)||(i=this.config.captions.active),Object.assign(this.captions,{toggled:!1,active:i,language:n,languages:t}),this.isHTML5){var r=this.config.captions.update?"addtrack removetrack":"removetrack";Vu.call(this,this.media.textTracks,r,Mh.update.bind(this))}setTimeout(Mh.update.bind(this),0)}},update:function(){var e=this,t=Mh.getTracks.call(this,!0),n=this.captions,i=n.active,r=n.language,a=n.meta,o=n.currentTrackNode,s=Boolean(t.find((function(e){return e.language===r})));this.isHTML5&&this.isVideo&&t.filter((function(e){return!a.get(e)})).forEach((function(t){e.debug.log("Track added",t),a.set(t,{default:"showing"===t.mode}),"showing"===t.mode&&(t.mode="hidden"),Vu.call(e,t,"cuechange",(function(){return Mh.updateCues.call(e)}))})),(s&&this.language!==r||!t.includes(o))&&(Mh.setLanguage.call(this,r),Mh.toggle.call(this,i&&s)),ju(this.elements.container,this.config.classNames.captions.enabled,!du(t)),au(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&jh.setCaptionsMenu.call(this)},toggle:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.supported.ui){var i=this.captions.toggled,r=this.config.classNames.captions.active,a=Zc(e)?!i:e;if(a!==i){if(n||(this.captions.active=a,this.storage.set({captions:a})),!this.language&&a&&!n){var o=Mh.getTracks.call(this),s=Mh.findTrack.call(this,[this.captions.language].concat(Po(this.captions.languages)),!0);return this.captions.language=s.language,void Mh.set.call(this,o.indexOf(s))}this.elements.buttons.captions&&(this.elements.buttons.captions.pressed=a),ju(this.elements.container,r,a),this.captions.toggled=a,jh.updateSetting.call(this,"captions"),Ku.call(this,this.media,a?"captionsenabled":"captionsdisabled")}setTimeout((function(){a&&t.captions.toggled&&(t.captions.currentTrackNode.mode="hidden")}))}},set:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=Mh.getTracks.call(this);if(-1!==e)if(tu(e))if(e in n){if(this.captions.currentTrack!==e){this.captions.currentTrack=e;var i=n[e],r=i||{},a=r.language;this.captions.currentTrackNode=i,jh.updateSetting.call(this,"captions"),t||(this.captions.language=a,this.storage.set({language:a})),this.isVimeo&&this.embed.enableTextTrack(a),Ku.call(this,this.media,"languagechange")}Mh.toggle.call(this,!0,t),this.isHTML5&&this.isVideo&&Mh.updateCues.call(this)}else this.debug.warn("Track not found",e);else this.debug.warn("Invalid caption argument",e);else Mh.toggle.call(this,!1,t)},setLanguage:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(nu(e)){var n=e.toLowerCase();this.captions.language=n;var i=Mh.getTracks.call(this),r=Mh.findTrack.call(this,[n]);Mh.set.call(this,i.indexOf(r),t)}else this.debug.warn("Invalid language argument",e)},getTracks:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=Array.from((this.media||{}).textTracks||[]);return n.filter((function(n){return!e.isHTML5||t||e.captions.meta.has(n)})).filter((function(e){return["captions","subtitles"].includes(e.kind)}))},findTrack:function(e){var t,n=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=Mh.getTracks.call(this),a=function(e){return Number((n.captions.meta.get(e)||{}).default)},o=Array.from(r).sort((function(e,t){return a(t)-a(e)}));return e.every((function(e){return!(t=o.find((function(t){return t.language===e})))})),t||(i?o[0]:void 0)},getCurrentTrack:function(){return Mh.getTracks.call(this)[this.currentTrack]},getLabel:function(e){var t=e;return!uu(t)&&qu.textTracks&&this.captions.toggled&&(t=Mh.getCurrentTrack.call(this)),uu(t)?du(t.label)?du(t.language)?Th("enabled",this.config):e.language.toUpperCase():t.label:Th("disabled",this.config)},updateCues:function(e){if(this.supported.ui)if(su(this.elements.captions))if(Zc(e)||Array.isArray(e)){var t=e;if(!t){var n=Mh.getCurrentTrack.call(this);t=Array.from((n||{}).activeCues||[]).map((function(e){return e.getCueAsHTML()})).map(wh)}var i=t.map((function(e){return e.trim()})).join("\n");if(i!==this.elements.captions.innerHTML){Cu(this.elements.captions);var r=Au("span",Iu(this.config.selectors.caption));r.innerHTML=i,this.elements.captions.appendChild(r),Ku.call(this,this.media,"cuechange")}}else this.debug.warn("updateCues: Invalid input",e);else this.debug.warn("No captions element to render to")}},_h={enabled:!0,title:"",debug:!1,autoplay:!1,autopause:!0,playsinline:!0,seekTime:10,volume:1,muted:!1,duration:null,displayDuration:!0,invertTime:!0,toggleInvert:!0,ratio:null,clickToPlay:!0,hideControls:!0,resetOnEnd:!1,disableContextMenu:!0,loadSprite:!0,iconPrefix:"plyr",iconUrl:"https://cdn.plyr.io/3.6.2/plyr.svg",blankVideo:"https://cdn.plyr.io/static/blank.mp4",quality:{default:576,options:[4320,2880,2160,1440,1080,720,576,480,360,240],forced:!1,onChange:null},loop:{active:!1},speed:{selected:1,options:[.5,.75,1,1.25,1.5,1.75,2,4]},keyboard:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},captions:{active:!1,language:"auto",update:!1},fullscreen:{enabled:!0,fallback:!0,iosNative:!1},storage:{enabled:!0,key:"plyr"},controls:["play-large","play","progress","current-time","mute","volume","captions","settings","pip","airplay","fullscreen"],settings:["captions","quality","speed"],i18n:{restart:"Restart",rewind:"Rewind {seektime}s",play:"Play",pause:"Pause",fastForward:"Forward {seektime}s",seek:"Seek",seekLabel:"{currentTime} of {duration}",played:"Played",buffered:"Buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",mute:"Mute",unmute:"Unmute",enableCaptions:"Enable captions",disableCaptions:"Disable captions",download:"Download",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",frameTitle:"Player for {title}",captions:"Captions",settings:"Settings",pip:"PIP",menuBack:"Go back to previous menu",speed:"Speed",normal:"Normal",quality:"Quality",loop:"Loop",start:"Start",end:"End",all:"All",reset:"Reset",disabled:"Disabled",enabled:"Enabled",advertisement:"Ad",qualityBadge:{2160:"4K",1440:"HD",1080:"HD",720:"HD",576:"SD",480:"SD"}},urls:{download:null,vimeo:{sdk:"https://player.vimeo.com/api/player.js",iframe:"https://player.vimeo.com/video/{0}?{1}",api:"https://vimeo.com/api/v2/video/{0}.json"},youtube:{sdk:"https://www.youtube.com/iframe_api",api:"https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}"},googleIMA:{sdk:"https://imasdk.googleapis.com/js/sdkloader/ima3.js"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,fastForward:null,mute:null,volume:null,captions:null,download:null,fullscreen:null,pip:null,airplay:null,speed:null,quality:null,loop:null,language:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","seeked","emptied","ratechange","cuechange","download","enterfullscreen","exitfullscreen","captionsenabled","captionsdisabled","languagechange","controlshidden","controlsshown","ready","statechange","qualitychange","adsloaded","adscontentpause","adscontentresume","adstarted","adsmidpoint","adscomplete","adsallcomplete","adsimpression","adsclick"],selectors:{editable:"input, textarea, select, [contenteditable]",container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',fastForward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',captions:'[data-plyr="captions"]',download:'[data-plyr="download"]',fullscreen:'[data-plyr="fullscreen"]',pip:'[data-plyr="pip"]',airplay:'[data-plyr="airplay"]',settings:'[data-plyr="settings"]',loop:'[data-plyr="loop"]'},inputs:{seek:'[data-plyr="seek"]',volume:'[data-plyr="volume"]',speed:'[data-plyr="speed"]',language:'[data-plyr="language"]',quality:'[data-plyr="quality"]'},display:{currentTime:".plyr__time--current",duration:".plyr__time--duration",buffer:".plyr__progress__buffer",loop:".plyr__progress__loop",volume:".plyr__volume--display"},progress:".plyr__progress",captions:".plyr__captions",caption:".plyr__caption"},classNames:{type:"plyr--{0}",provider:"plyr--{0}",video:"plyr__video-wrapper",embed:"plyr__video-embed",videoFixedRatio:"plyr__video-wrapper--fixed-ratio",embedContainer:"plyr__video-embed__container",poster:"plyr__poster",posterEnabled:"plyr__poster-enabled",ads:"plyr__ads",control:"plyr__control",controlPressed:"plyr__control--pressed",playing:"plyr--playing",paused:"plyr--paused",stopped:"plyr--stopped",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",cues:"plyr__cues",hidden:"plyr__sr-only",hideControls:"plyr--hide-controls",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",uiSupported:"plyr--full-ui",noTransition:"plyr--no-transition",display:{time:"plyr__time"},menu:{value:"plyr__menu__value",badge:"plyr__badge",open:"plyr--menu-open"},captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",fallback:"plyr--fullscreen-fallback"},pip:{supported:"plyr--pip-supported",active:"plyr--pip-active"},airplay:{supported:"plyr--airplay-supported",active:"plyr--airplay-active"},tabFocus:"plyr__tab-focus",previewThumbnails:{thumbContainer:"plyr__preview-thumb",thumbContainerShown:"plyr__preview-thumb--is-shown",imageContainer:"plyr__preview-thumb__image-container",timeContainer:"plyr__preview-thumb__time-container",scrubbingContainer:"plyr__preview-scrubbing",scrubbingContainerShown:"plyr__preview-scrubbing--is-shown"}},attributes:{embed:{provider:"data-plyr-provider",id:"data-plyr-embed-id"}},ads:{enabled:!1,publisherId:"",tagUrl:""},previewThumbnails:{enabled:!1,src:""},vimeo:{byline:!1,portrait:!1,title:!1,speed:!0,transparent:!1,premium:!1,referrerPolicy:null},youtube:{noCookie:!0,rel:0,showinfo:0,iv_load_policy:3,modestbranding:1}},Uh="picture-in-picture",Dh="inline",Fh={html5:"html5",youtube:"youtube",vimeo:"vimeo"},qh="audio",Hh="video";var Bh=function(){},Vh=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];yo(this,e),this.enabled=window.console&&t,this.enabled&&this.log("Debugging enabled")}return wo(e,[{key:"log",get:function(){return this.enabled?Function.prototype.bind.call(console.log,console):Bh}},{key:"warn",get:function(){return this.enabled?Function.prototype.bind.call(console.warn,console):Bh}},{key:"error",get:function(){return this.enabled?Function.prototype.bind.call(console.error,console):Bh}}]),e}(),zh=function(){function e(t){var n=this;yo(this,e),this.player=t,this.prefix=e.prefix,this.property=e.property,this.scrollPosition={x:0,y:0},this.forceFallback="force"===t.config.fullscreen.fallback,this.player.elements.fullscreen=t.config.fullscreen.container&&function(e,t){return(Element.prototype.closest||function(){var e=this;do{if(Ru.matches(e,t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null}).call(e,t)}(this.player.elements.container,t.config.fullscreen.container),Vu.call(this.player,document,"ms"===this.prefix?"MSFullscreenChange":"".concat(this.prefix,"fullscreenchange"),(function(){n.onChange()})),Vu.call(this.player,this.player.elements.container,"dblclick",(function(e){su(n.player.elements.controls)&&n.player.elements.controls.contains(e.target)||n.toggle()})),Vu.call(this,this.player.elements.container,"keydown",(function(e){return n.trapFocus(e)})),this.update()}return wo(e,[{key:"onChange",value:function(){if(this.enabled){var e=this.player.elements.buttons.fullscreen;su(e)&&(e.pressed=this.active),Ku.call(this.player,this.target,this.active?"enterfullscreen":"exitfullscreen",!0)}}},{key:"toggleFallback",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(e?this.scrollPosition={x:window.scrollX||0,y:window.scrollY||0}:window.scrollTo(this.scrollPosition.x,this.scrollPosition.y),document.body.style.overflow=e?"hidden":"",ju(this.target,this.player.config.classNames.fullscreen.fallback,e),gu.isIos){var t=document.head.querySelector('meta[name="viewport"]'),n="viewport-fit=cover";t||(t=document.createElement("meta")).setAttribute("name","viewport");var i=nu(t.content)&&t.content.includes(n);e?(this.cleanupViewport=!i,i||(t.content+=",".concat(n))):this.cleanupViewport&&(t.content=t.content.split(",").filter((function(e){return e.trim()!==n})).join(","))}this.onChange()}},{key:"trapFocus",value:function(e){if(!gu.isIos&&this.active&&"Tab"===e.key&&9===e.keyCode){var t=document.activeElement,n=Mu.call(this.player,"a[href], button:not(:disabled), input:not(:disabled), [tabindex]"),i=Ao(n,1)[0],r=n[n.length-1];t!==r||e.shiftKey?t===i&&e.shiftKey&&(r.focus(),e.preventDefault()):(i.focus(),e.preventDefault())}}},{key:"update",value:function(){var t;this.enabled?(t=this.forceFallback?"Fallback (forced)":e.native?"Native":"Fallback",this.player.debug.log("".concat(t," fullscreen enabled"))):this.player.debug.log("Fullscreen not supported and fallback disabled");ju(this.player.elements.container,this.player.config.classNames.fullscreen.enabled,this.enabled)}},{key:"enter",value:function(){this.enabled&&(gu.isIos&&this.player.config.fullscreen.iosNative?this.target.webkitEnterFullscreen():!e.native||this.forceFallback?this.toggleFallback(!0):this.prefix?du(this.prefix)||this.target["".concat(this.prefix,"Request").concat(this.property)]():this.target.requestFullscreen({navigationUI:"hide"}))}},{key:"exit",value:function(){if(this.enabled)if(gu.isIos&&this.player.config.fullscreen.iosNative)this.target.webkitExitFullscreen(),Gu(this.player.play());else if(!e.native||this.forceFallback)this.toggleFallback(!1);else if(this.prefix){if(!du(this.prefix)){var t="moz"===this.prefix?"Cancel":"Exit";document["".concat(this.prefix).concat(t).concat(this.property)]()}}else(document.cancelFullScreen||document.exitFullscreen).call(document)}},{key:"toggle",value:function(){this.active?this.exit():this.enter()}},{key:"usingNative",get:function(){return e.native&&!this.forceFallback}},{key:"enabled",get:function(){return(e.native||this.player.config.fullscreen.fallback)&&this.player.config.fullscreen.enabled&&this.player.supported.ui&&this.player.isVideo}},{key:"active",get:function(){if(!this.enabled)return!1;if(!e.native||this.forceFallback)return Nu(this.target,this.player.config.classNames.fullscreen.fallback);var t=this.prefix?document["".concat(this.prefix).concat(this.property,"Element")]:document.fullscreenElement;return t&&t.shadowRoot?t===this.target.getRootNode().host:t===this.target}},{key:"target",get:function(){return gu.isIos&&this.player.config.fullscreen.iosNative?this.player.media:this.player.elements.fullscreen||this.player.elements.container}}],[{key:"native",get:function(){return!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)}},{key:"prefix",get:function(){if(ru(document.exitFullscreen))return"";var e="";return["webkit","moz","ms"].some((function(t){return!(!ru(document["".concat(t,"ExitFullscreen")])&&!ru(document["".concat(t,"CancelFullScreen")]))&&(e=t,!0)})),e}},{key:"property",get:function(){return"moz"===this.prefix?"FullScreen":"Fullscreen"}}]),e}(),Wh=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1};function Kh(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Promise((function(n,i){var r=new Image,a=function(){delete r.onload,delete r.onerror,(r.naturalWidth>=t?n:i)(r)};Object.assign(r,{onload:a,onerror:a,src:e})}))}Ie({target:"Math",stat:!0},{sign:Wh});var $h={addStyleHook:function(){ju(this.elements.container,this.config.selectors.container.replace(".",""),!0),ju(this.elements.container,this.config.classNames.uiSupported,this.supported.ui)},toggleNativeControls:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];e&&this.isHTML5?this.media.setAttribute("controls",""):this.media.removeAttribute("controls")},build:function(){var e=this;if(this.listeners.media(),!this.supported.ui)return this.debug.warn("Basic support only for ".concat(this.provider," ").concat(this.type)),void $h.toggleNativeControls.call(this,!0);su(this.elements.controls)||(jh.inject.call(this),this.listeners.controls()),$h.toggleNativeControls.call(this),this.isHTML5&&Mh.setup.call(this),this.volume=null,this.muted=null,this.loop=null,this.quality=null,this.speed=null,jh.updateVolume.call(this),jh.timeUpdate.call(this),$h.checkPlaying.call(this),ju(this.elements.container,this.config.classNames.pip.supported,qu.pip&&this.isHTML5&&this.isVideo),ju(this.elements.container,this.config.classNames.airplay.supported,qu.airplay&&this.isHTML5),ju(this.elements.container,this.config.classNames.isIos,gu.isIos),ju(this.elements.container,this.config.classNames.isTouch,this.touch),this.ready=!0,setTimeout((function(){Ku.call(e,e.media,"ready")}),0),$h.setTitle.call(this),this.poster&&$h.setPoster.call(this,this.poster,!1).catch((function(){})),this.config.duration&&jh.durationUpdate.call(this)},setTitle:function(){var e=Th("play",this.config);if(nu(this.config.title)&&!du(this.config.title)&&(e+=", ".concat(this.config.title)),Array.from(this.elements.buttons.play||[]).forEach((function(t){t.setAttribute("aria-label",e)})),this.isEmbed){var t=_u.call(this,"iframe");if(!su(t))return;var n=du(this.config.title)?"video":this.config.title,i=Th("frameTitle",this.config);t.setAttribute("title",i.replace("{title}",n))}},togglePoster:function(e){ju(this.elements.container,this.config.classNames.posterEnabled,e)},setPoster:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return n&&this.poster?Promise.reject(new Error("Poster already set")):(this.media.setAttribute("data-poster",e),Yu.call(this).then((function(){return Kh(e)})).catch((function(n){throw e===t.poster&&$h.togglePoster.call(t,!1),n})).then((function(){if(e!==t.poster)throw new Error("setPoster cancelled by later call to setPoster")})).then((function(){return Object.assign(t.elements.poster.style,{backgroundImage:"url('".concat(e,"')"),backgroundSize:""}),$h.togglePoster.call(t,!0),e})))},checkPlaying:function(e){var t=this;ju(this.elements.container,this.config.classNames.playing,this.playing),ju(this.elements.container,this.config.classNames.paused,this.paused),ju(this.elements.container,this.config.classNames.stopped,this.stopped),Array.from(this.elements.buttons.play||[]).forEach((function(e){Object.assign(e,{pressed:t.playing}),e.setAttribute("aria-label",Th(t.playing?"pause":"play",t.config))})),lu(e)&&"timeupdate"===e.type||$h.toggleControls.call(this)},checkLoading:function(e){var t=this;this.loading=["stalled","waiting"].includes(e.type),clearTimeout(this.timers.loading),this.timers.loading=setTimeout((function(){ju(t.elements.container,t.config.classNames.loading,t.loading),$h.toggleControls.call(t)}),this.loading?250:0)},toggleControls:function(e){var t=this.elements.controls;if(t&&this.config.hideControls){var n=this.touch&&this.lastSeekTime+2e3>Date.now();this.toggleControls(Boolean(e||this.loading||this.paused||t.pressed||t.hover||n))}},migrateStyles:function(){var e=this;Object.values(So({},this.media.style)).filter((function(e){return!du(e)&&e.startsWith("--plyr")})).forEach((function(t){e.elements.container.style.setProperty(t,e.media.style.getPropertyValue(t)),e.media.style.removeProperty(t)})),du(this.media.style)&&this.media.removeAttribute("style")}},Yh=function(){function e(t){yo(this,e),this.player=t,this.lastKey=null,this.focusTimer=null,this.lastKeyDown=null,this.handleKey=this.handleKey.bind(this),this.toggleMenu=this.toggleMenu.bind(this),this.setTabFocus=this.setTabFocus.bind(this),this.firstTouch=this.firstTouch.bind(this)}return wo(e,[{key:"handleKey",value:function(e){var t=this.player,n=t.elements,i=e.keyCode?e.keyCode:e.which,r="keydown"===e.type,a=r&&i===this.lastKey;if(!(e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)&&tu(i)){if(r){var o=document.activeElement;if(su(o)){var s=t.config.selectors.editable;if(o!==n.inputs.seek&&Ru(o,s))return;if(32===e.which&&Ru(o,'button, [role^="menuitem"]'))return}switch([32,37,38,39,40,48,49,50,51,52,53,54,56,57,67,70,73,75,76,77,79].includes(i)&&(e.preventDefault(),e.stopPropagation()),i){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:a||(t.currentTime=t.duration/10*(i-48));break;case 32:case 75:a||Gu(t.togglePlay());break;case 38:t.increaseVolume(.1);break;case 40:t.decreaseVolume(.1);break;case 77:a||(t.muted=!t.muted);break;case 39:t.forward();break;case 37:t.rewind();break;case 70:t.fullscreen.toggle();break;case 67:a||t.toggleCaptions();break;case 76:t.loop=!t.loop}27===i&&!t.fullscreen.usingNative&&t.fullscreen.active&&t.fullscreen.toggle(),this.lastKey=i}else this.lastKey=null}}},{key:"toggleMenu",value:function(e){jh.toggleMenu.call(this.player,e)}},{key:"firstTouch",value:function(){var e=this.player,t=e.elements;e.touch=!0,ju(t.container,e.config.classNames.isTouch,!0)}},{key:"setTabFocus",value:function(e){var t=this.player,n=t.elements;if(clearTimeout(this.focusTimer),"keydown"!==e.type||9===e.which){"keydown"===e.type&&(this.lastKeyDown=e.timeStamp);var i,r=e.timeStamp-this.lastKeyDown<=20;if("focus"!==e.type||r)i=t.config.classNames.tabFocus,ju(Mu.call(t,".".concat(i)),i,!1),"focusout"!==e.type&&(this.focusTimer=setTimeout((function(){var e=document.activeElement;n.container.contains(e)&&ju(document.activeElement,t.config.classNames.tabFocus,!0)}),10))}}},{key:"global",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.player;t.config.keyboard.global&&Bu.call(t,window,"keydown keyup",this.handleKey,e,!1),Bu.call(t,document.body,"click",this.toggleMenu,e),Wu.call(t,document.body,"touchstart",this.firstTouch),Bu.call(t,document.body,"keydown focus blur focusout",this.setTabFocus,e,!1,!0)}},{key:"container",value:function(){var e=this.player,t=e.config,n=e.elements,i=e.timers;!t.keyboard.global&&t.keyboard.focused&&Vu.call(e,n.container,"keydown keyup",this.handleKey,!1),Vu.call(e,n.container,"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen",(function(t){var r=n.controls;r&&"enterfullscreen"===t.type&&(r.pressed=!1,r.hover=!1);var a=0;["touchstart","touchmove","mousemove"].includes(t.type)&&($h.toggleControls.call(e,!0),a=e.touch?3e3:2e3),clearTimeout(i.controls),i.controls=setTimeout((function(){return $h.toggleControls.call(e,!1)}),a)}));var r=function(t){if(!t)return Zu.call(e);var i=n.container.getBoundingClientRect(),r=i.width,a=i.height;return Zu.call(e,"".concat(r,":").concat(a))},a=function(){clearTimeout(i.resized),i.resized=setTimeout(r,50)};Vu.call(e,n.container,"enterfullscreen exitfullscreen",(function(t){var i=e.fullscreen,o=i.target,s=i.usingNative;if(o===n.container&&(e.isEmbed||!du(e.config.ratio))){var l="enterfullscreen"===t.type,c=r(l);c.padding;!function(t,n,i){if(e.isVimeo&&!e.config.vimeo.premium){var r=e.elements.wrapper.firstChild,a=Ao(t,2)[1],o=Ao(Ju.call(e),2),s=o[0],l=o[1];r.style.maxWidth=i?"".concat(a/l*s,"px"):null,r.style.margin=i?"0 auto":null}}(c.ratio,0,l),s||(l?Vu.call(e,window,"resize",a):zu.call(e,window,"resize",a))}}))}},{key:"media",value:function(){var e=this,t=this.player,n=t.elements;if(Vu.call(t,t.media,"timeupdate seeking seeked",(function(e){return jh.timeUpdate.call(t,e)})),Vu.call(t,t.media,"durationchange loadeddata loadedmetadata",(function(e){return jh.durationUpdate.call(t,e)})),Vu.call(t,t.media,"ended",(function(){t.isHTML5&&t.isVideo&&t.config.resetOnEnd&&(t.restart(),t.pause())})),Vu.call(t,t.media,"progress playing seeking seeked",(function(e){return jh.updateProgress.call(t,e)})),Vu.call(t,t.media,"volumechange",(function(e){return jh.updateVolume.call(t,e)})),Vu.call(t,t.media,"playing play pause ended emptied timeupdate",(function(e){return $h.checkPlaying.call(t,e)})),Vu.call(t,t.media,"waiting canplay seeked playing",(function(e){return $h.checkLoading.call(t,e)})),t.supported.ui&&t.config.clickToPlay&&!t.isAudio){var i=_u.call(t,".".concat(t.config.classNames.video));if(!su(i))return;Vu.call(t,n.container,"click",(function(r){([n.container,i].includes(r.target)||i.contains(r.target))&&(t.touch&&t.config.hideControls||(t.ended?(e.proxy(r,t.restart,"restart"),e.proxy(r,(function(){Gu(t.play())}),"play")):e.proxy(r,(function(){Gu(t.togglePlay())}),"play")))}))}t.supported.ui&&t.config.disableContextMenu&&Vu.call(t,n.wrapper,"contextmenu",(function(e){e.preventDefault()}),!1),Vu.call(t,t.media,"volumechange",(function(){t.storage.set({volume:t.volume,muted:t.muted})})),Vu.call(t,t.media,"ratechange",(function(){jh.updateSetting.call(t,"speed"),t.storage.set({speed:t.speed})})),Vu.call(t,t.media,"qualitychange",(function(e){jh.updateSetting.call(t,"quality",null,e.detail.quality)})),Vu.call(t,t.media,"ready qualitychange",(function(){jh.setDownloadUrl.call(t)}));var r=t.config.events.concat(["keyup","keydown"]).join(" ");Vu.call(t,t.media,r,(function(e){var i=e.detail,r=void 0===i?{}:i;"error"===e.type&&(r=t.media.error),Ku.call(t,n.container,e.type,!0,r)}))}},{key:"proxy",value:function(e,t,n){var i=this.player,r=i.config.listeners[n],a=!0;ru(r)&&(a=r.call(i,e)),!1!==a&&ru(t)&&t.call(i,e)}},{key:"bind",value:function(e,t,n,i){var r=this,a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=this.player,s=o.config.listeners[i],l=ru(s);Vu.call(o,e,t,(function(e){return r.proxy(e,n,i)}),a&&!l)}},{key:"controls",value:function(){var e=this,t=this.player,n=t.elements,i=gu.isIE?"change":"input";if(n.buttons.play&&Array.from(n.buttons.play).forEach((function(n){e.bind(n,"click",(function(){Gu(t.togglePlay())}),"play")})),this.bind(n.buttons.restart,"click",t.restart,"restart"),this.bind(n.buttons.rewind,"click",t.rewind,"rewind"),this.bind(n.buttons.fastForward,"click",t.forward,"fastForward"),this.bind(n.buttons.mute,"click",(function(){t.muted=!t.muted}),"mute"),this.bind(n.buttons.captions,"click",(function(){return t.toggleCaptions()})),this.bind(n.buttons.download,"click",(function(){Ku.call(t,t.media,"download")}),"download"),this.bind(n.buttons.fullscreen,"click",(function(){t.fullscreen.toggle()}),"fullscreen"),this.bind(n.buttons.pip,"click",(function(){t.pip="toggle"}),"pip"),this.bind(n.buttons.airplay,"click",t.airplay,"airplay"),this.bind(n.buttons.settings,"click",(function(e){e.stopPropagation(),e.preventDefault(),jh.toggleMenu.call(t,e)}),null,!1),this.bind(n.buttons.settings,"keyup",(function(e){var n=e.which;[13,32].includes(n)&&(13!==n?(e.preventDefault(),e.stopPropagation(),jh.toggleMenu.call(t,e)):jh.focusFirstMenuItem.call(t,null,!0))}),null,!1),this.bind(n.settings.menu,"keydown",(function(e){27===e.which&&jh.toggleMenu.call(t,e)})),this.bind(n.inputs.seek,"mousedown mousemove",(function(e){var t=n.progress.getBoundingClientRect(),i=100/t.width*(e.pageX-t.left);e.currentTarget.setAttribute("seek-value",i)})),this.bind(n.inputs.seek,"mousedown mouseup keydown keyup touchstart touchend",(function(e){var n=e.currentTarget,i=e.keyCode?e.keyCode:e.which;if(!cu(e)||39===i||37===i){t.lastSeekTime=Date.now();var r=n.hasAttribute("play-on-seeked"),a=["mouseup","touchend","keyup"].includes(e.type);r&&a?(n.removeAttribute("play-on-seeked"),Gu(t.play())):!a&&t.playing&&(n.setAttribute("play-on-seeked",""),t.pause())}})),gu.isIos){var r=Mu.call(t,'input[type="range"]');Array.from(r).forEach((function(t){return e.bind(t,i,(function(e){return mu(e.target)}))}))}this.bind(n.inputs.seek,i,(function(e){var n=e.currentTarget,i=n.getAttribute("seek-value");du(i)&&(i=n.value),n.removeAttribute("seek-value"),t.currentTime=i/n.max*t.duration}),"seek"),this.bind(n.progress,"mouseenter mouseleave mousemove",(function(e){return jh.updateSeekTooltip.call(t,e)})),this.bind(n.progress,"mousemove touchmove",(function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startMove(e)})),this.bind(n.progress,"mouseleave touchend click",(function(){var e=t.previewThumbnails;e&&e.loaded&&e.endMove(!1,!0)})),this.bind(n.progress,"mousedown touchstart",(function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startScrubbing(e)})),this.bind(n.progress,"mouseup touchend",(function(e){var n=t.previewThumbnails;n&&n.loaded&&n.endScrubbing(e)})),gu.isWebkit&&Array.from(Mu.call(t,'input[type="range"]')).forEach((function(n){e.bind(n,"input",(function(e){return jh.updateRangeFill.call(t,e.target)}))})),t.config.toggleInvert&&!su(n.display.duration)&&this.bind(n.display.currentTime,"click",(function(){0!==t.currentTime&&(t.config.invertTime=!t.config.invertTime,jh.timeUpdate.call(t))})),this.bind(n.inputs.volume,i,(function(e){t.volume=e.target.value}),"volume"),this.bind(n.controls,"mouseenter mouseleave",(function(e){n.controls.hover=!t.touch&&"mouseenter"===e.type})),n.fullscreen&&Array.from(n.fullscreen.children).filter((function(e){return!e.contains(n.container)})).forEach((function(i){e.bind(i,"mouseenter mouseleave",(function(e){n.controls.hover=!t.touch&&"mouseenter"===e.type}))})),this.bind(n.controls,"mousedown mouseup touchstart touchend touchcancel",(function(e){n.controls.pressed=["mousedown","touchstart"].includes(e.type)})),this.bind(n.controls,"focusin",(function(){var i=t.config,r=t.timers;ju(n.controls,i.classNames.noTransition,!0),$h.toggleControls.call(t,!0),setTimeout((function(){ju(n.controls,i.classNames.noTransition,!1)}),0);var a=e.touch?3e3:4e3;clearTimeout(r.controls),r.controls=setTimeout((function(){return $h.toggleControls.call(t,!1)}),a)})),this.bind(n.inputs.volume,"wheel",(function(e){var n=e.webkitDirectionInvertedFromDevice,i=Ao([e.deltaX,-e.deltaY].map((function(e){return n?-e:e})),2),r=i[0],a=i[1],o=Math.sign(Math.abs(r)>Math.abs(a)?r:a);t.increaseVolume(o/50);var s=t.media.volume;(1===o&&s<1||-1===o&&s>0)&&e.preventDefault()}),"volume",!1)}}]),e}(),Gh=Kn("splice"),Xh=Qt("splice",{ACCESSORS:!0,0:0,1:2}),Qh=Math.max,Jh=Math.min;Ie({target:"Array",proto:!0,forced:!Gh||!Xh},{splice:function(e,t){var n,i,r,a,o,s,l=Re(this),c=le(l.length),u=he(e,c),h=arguments.length;if(0===h?n=i=0:1===h?(n=0,i=c-u):(n=h-2,i=Jh(Qh(oe(t),0),c-u)),c+n-i>9007199254740991)throw TypeError("Maximum allowed length exceeded");for(r=ot(l,i),a=0;a<i;a++)(o=u+a)in l&&Fn(r,a,l[o]);if(r.length=i,n<i){for(a=u;a<c-i;a++)s=a+n,(o=a+i)in l?l[s]=l[o]:delete l[s];for(a=c;a>c-i+n;a--)delete l[a-1]}else if(n>i)for(a=c-i;a>u;a--)s=a+n-1,(o=a+i-1)in l?l[s]=l[o]:delete l[s];for(a=0;a<n;a++)l[a+u]=arguments[a+2];return l.length=c-i+n,r}});var Zh=t((function(e,t){e.exports=function(){var e=function(){},t={},n={},i={};function r(e,t){if(e){var r=i[e];if(n[e]=t,r)for(;r.length;)r[0](e,t),r.splice(0,1)}}function a(t,n){t.call&&(t={success:t}),n.length?(t.error||e)(n):(t.success||e)(t)}function o(t,n,i,r){var a,s,l=document,c=i.async,u=(i.numRetries||0)+1,h=i.before||e,f=t.replace(/[\?|#].*$/,""),d=t.replace(/^(css|img)!/,"");r=r||0,/(^css!|\.css$)/.test(f)?((s=l.createElement("link")).rel="stylesheet",s.href=d,(a="hideFocus"in s)&&s.relList&&(a=0,s.rel="preload",s.as="style")):/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(f)?(s=l.createElement("img")).src=d:((s=l.createElement("script")).src=t,s.async=void 0===c||c),s.onload=s.onerror=s.onbeforeload=function(e){var l=e.type[0];if(a)try{s.sheet.cssText.length||(l="e")}catch(e){18!=e.code&&(l="e")}if("e"==l){if((r+=1)<u)return o(t,n,i,r)}else if("preload"==s.rel&&"style"==s.as)return s.rel="stylesheet";n(t,l,e.defaultPrevented)},!1!==h(t,s)&&l.head.appendChild(s)}function s(e,n,i){var s,l;if(n&&n.trim&&(s=n),l=(s?i:n)||{},s){if(s in t)throw"LoadJS";t[s]=!0}function c(t,n){!function(e,t,n){var i,r,a=(e=e.push?e:[e]).length,s=a,l=[];for(i=function(e,n,i){if("e"==n&&l.push(e),"b"==n){if(!i)return;l.push(e)}--a||t(l)},r=0;r<s;r++)o(e[r],i,n)}(e,(function(e){a(l,e),t&&a({success:t,error:n},e),r(s,e)}),l)}if(l.returnPromise)return new Promise(c);c()}return s.ready=function(e,t){return function(e,t){e=e.push?e:[e];var r,a,o,s=[],l=e.length,c=l;for(r=function(e,n){n.length&&s.push(e),--c||t(s)};l--;)a=e[l],(o=n[a])?r(a,o):(i[a]=i[a]||[]).push(r)}(e,(function(e){a(t,e)})),s},s.done=function(e){r(e,[])},s.reset=function(){t={},n={},i={}},s.isDefined=function(e){return e in t},s}()}));function ef(e){return new Promise((function(t,n){Zh(e,{success:t,error:n})}))}function tf(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,Ku.call(this,this.media,e?"play":"pause"))}var nf={setup:function(){var e=this;ju(e.elements.wrapper,e.config.classNames.embed,!0),e.options.speed=e.config.speed.options,Zu.call(e),eu(window.Vimeo)?nf.ready.call(e):ef(e.config.urls.vimeo.sdk).then((function(){nf.ready.call(e)})).catch((function(t){e.debug.warn("Vimeo SDK (player.js) failed to load",t)}))},ready:function(){var e=this,t=this,n=t.config.vimeo,i=n.premium,r=n.referrerPolicy,a=Eo(n,["premium","referrerPolicy"]);i&&Object.assign(a,{controls:!1,sidedock:!1});var o=Rh(So({loop:t.config.loop.active,autoplay:t.autoplay,muted:t.muted,gesture:"media",playsinline:!this.config.fullscreen.iosNative},a)),s=t.media.getAttribute("src");du(s)&&(s=t.media.getAttribute(t.config.attributes.embed.id));var l,c=du(l=s)?null:tu(Number(l))?l:l.match(/^.*(vimeo.com\/|video\/)(\d+).*/)?RegExp.$2:l,u=Au("iframe"),h=gh(t.config.urls.vimeo.iframe,c,o);u.setAttribute("src",h),u.setAttribute("allowfullscreen",""),u.setAttribute("allow","autoplay,fullscreen,picture-in-picture"),du(r)||u.setAttribute("referrerPolicy",r);var f=t.poster;if(i)u.setAttribute("data-poster",f),t.media=Ou(u,t.media);else{var d=Au("div",{class:t.config.classNames.embedContainer,"data-poster":f});d.appendChild(u),t.media=Ou(d,t.media)}Eh(gh(t.config.urls.vimeo.api,c),"json").then((function(e){if(!du(e)){var n=new URL(e[0].thumbnail_large);n.pathname="".concat(n.pathname.split("_")[0],".jpg"),$h.setPoster.call(t,n.href).catch((function(){}))}})),t.embed=new window.Vimeo.Player(u,{autopause:t.config.autopause,muted:t.muted}),t.media.paused=!0,t.media.currentTime=0,t.supported.ui&&t.embed.disableTextTrack(),t.media.play=function(){return tf.call(t,!0),t.embed.play()},t.media.pause=function(){return tf.call(t,!1),t.embed.pause()},t.media.stop=function(){t.pause(),t.currentTime=0};var p=t.media.currentTime;Object.defineProperty(t.media,"currentTime",{get:function(){return p},set:function(e){var n=t.embed,i=t.media,r=t.paused,a=t.volume,o=r&&!n.hasPlayed;i.seeking=!0,Ku.call(t,i,"seeking"),Promise.resolve(o&&n.setVolume(0)).then((function(){return n.setCurrentTime(e)})).then((function(){return o&&n.pause()})).then((function(){return o&&n.setVolume(a)})).catch((function(){}))}});var m=t.config.speed.selected;Object.defineProperty(t.media,"playbackRate",{get:function(){return m},set:function(e){t.embed.setPlaybackRate(e).then((function(){m=e,Ku.call(t,t.media,"ratechange")})).catch((function(){t.options.speed=[1]}))}});var g=t.config.volume;Object.defineProperty(t.media,"volume",{get:function(){return g},set:function(e){t.embed.setVolume(e).then((function(){g=e,Ku.call(t,t.media,"volumechange")}))}});var v=t.config.muted;Object.defineProperty(t.media,"muted",{get:function(){return v},set:function(e){var n=!!iu(e)&&e;t.embed.setVolume(n?0:t.config.volume).then((function(){v=n,Ku.call(t,t.media,"volumechange")}))}});var y,b=t.config.loop;Object.defineProperty(t.media,"loop",{get:function(){return b},set:function(e){var n=iu(e)?e:t.config.loop.active;t.embed.setLoop(n).then((function(){b=n}))}}),t.embed.getVideoUrl().then((function(e){y=e,jh.setDownloadUrl.call(t)})).catch((function(t){e.debug.warn(t)})),Object.defineProperty(t.media,"currentSrc",{get:function(){return y}}),Object.defineProperty(t.media,"ended",{get:function(){return t.currentTime===t.duration}}),Promise.all([t.embed.getVideoWidth(),t.embed.getVideoHeight()]).then((function(n){var i=Ao(n,2),r=i[0],a=i[1];t.embed.ratio=[r,a],Zu.call(e)})),t.embed.setAutopause(t.config.autopause).then((function(e){t.config.autopause=e})),t.embed.getVideoTitle().then((function(n){t.config.title=n,$h.setTitle.call(e)})),t.embed.getCurrentTime().then((function(e){p=e,Ku.call(t,t.media,"timeupdate")})),t.embed.getDuration().then((function(e){t.media.duration=e,Ku.call(t,t.media,"durationchange")})),t.embed.getTextTracks().then((function(e){t.media.textTracks=e,Mh.setup.call(t)})),t.embed.on("cuechange",(function(e){var n=e.cues,i=(void 0===n?[]:n).map((function(e){return function(e){var t=document.createDocumentFragment(),n=document.createElement("div");return t.appendChild(n),n.innerHTML=e,t.firstChild.innerText}(e.text)}));Mh.updateCues.call(t,i)})),t.embed.on("loaded",(function(){(t.embed.getPaused().then((function(e){tf.call(t,!e),e||Ku.call(t,t.media,"playing")})),su(t.embed.element)&&t.supported.ui)&&t.embed.element.setAttribute("tabindex",-1)})),t.embed.on("bufferstart",(function(){Ku.call(t,t.media,"waiting")})),t.embed.on("bufferend",(function(){Ku.call(t,t.media,"playing")})),t.embed.on("play",(function(){tf.call(t,!0),Ku.call(t,t.media,"playing")})),t.embed.on("pause",(function(){tf.call(t,!1)})),t.embed.on("timeupdate",(function(e){t.media.seeking=!1,p=e.seconds,Ku.call(t,t.media,"timeupdate")})),t.embed.on("progress",(function(e){t.media.buffered=e.percent,Ku.call(t,t.media,"progress"),1===parseInt(e.percent,10)&&Ku.call(t,t.media,"canplaythrough"),t.embed.getDuration().then((function(e){e!==t.media.duration&&(t.media.duration=e,Ku.call(t,t.media,"durationchange"))}))})),t.embed.on("seeked",(function(){t.media.seeking=!1,Ku.call(t,t.media,"seeked")})),t.embed.on("ended",(function(){t.media.paused=!0,Ku.call(t,t.media,"ended")})),t.embed.on("error",(function(e){t.media.error=e,Ku.call(t,t.media,"error")})),setTimeout((function(){return $h.build.call(t)}),0)}};function rf(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,Ku.call(this,this.media,e?"play":"pause"))}function af(e){return e.noCookie?"https://www.youtube-nocookie.com":"http:"===window.location.protocol?"http://www.youtube.com":void 0}var of={setup:function(){var e=this;if(ju(this.elements.wrapper,this.config.classNames.embed,!0),eu(window.YT)&&ru(window.YT.Player))of.ready.call(this);else{var t=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=function(){ru(t)&&t(),of.ready.call(e)},ef(this.config.urls.youtube.sdk).catch((function(t){e.debug.warn("YouTube API failed to load",t)}))}},getTitle:function(e){var t=this;Eh(gh(this.config.urls.youtube.api,e)).then((function(e){if(eu(e)){var n=e.title,i=e.height,r=e.width;t.config.title=n,$h.setTitle.call(t),t.embed.ratio=[r,i]}Zu.call(t)})).catch((function(){Zu.call(t)}))},ready:function(){var e=this,t=e.media&&e.media.getAttribute("id");if(du(t)||!t.startsWith("youtube-")){var n=e.media.getAttribute("src");du(n)&&(n=e.media.getAttribute(this.config.attributes.embed.id));var i,r,a=du(i=n)?null:i.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/)?RegExp.$2:i,o=(r=e.provider,"".concat(r,"-").concat(Math.floor(1e4*Math.random()))),s=Au("div",{id:o,"data-poster":e.poster});e.media=Ou(s,e.media);var l=function(e){return"https://i.ytimg.com/vi/".concat(a,"/").concat(e,"default.jpg")};Kh(l("maxres"),121).catch((function(){return Kh(l("sd"),121)})).catch((function(){return Kh(l("hq"))})).then((function(t){return $h.setPoster.call(e,t.src)})).then((function(t){t.includes("maxres")||(e.elements.poster.style.backgroundSize="cover")})).catch((function(){}));var c=e.config.youtube;e.embed=new window.YT.Player(o,{videoId:a,host:af(c),playerVars:Tu({},{autoplay:e.config.autoplay?1:0,hl:e.config.hl,controls:e.supported.ui?0:1,disablekb:1,playsinline:e.config.fullscreen.iosNative?0:1,cc_load_policy:e.captions.active?1:0,cc_lang_pref:e.config.captions.language,widget_referrer:window?window.location.href:null},c),events:{onError:function(t){if(!e.media.error){var n=t.data,i={2:"The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.",5:"The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.",100:"The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.",101:"The owner of the requested video does not allow it to be played in embedded players.",150:"The owner of the requested video does not allow it to be played in embedded players."}[n]||"An unknown error occured";e.media.error={code:n,message:i},Ku.call(e,e.media,"error")}},onPlaybackRateChange:function(t){var n=t.target;e.media.playbackRate=n.getPlaybackRate(),Ku.call(e,e.media,"ratechange")},onReady:function(t){if(!ru(e.media.play)){var n=t.target;of.getTitle.call(e,a),e.media.play=function(){rf.call(e,!0),n.playVideo()},e.media.pause=function(){rf.call(e,!1),n.pauseVideo()},e.media.stop=function(){n.stopVideo()},e.media.duration=n.getDuration(),e.media.paused=!0,e.media.currentTime=0,Object.defineProperty(e.media,"currentTime",{get:function(){return Number(n.getCurrentTime())},set:function(t){e.paused&&!e.embed.hasPlayed&&e.embed.mute(),e.media.seeking=!0,Ku.call(e,e.media,"seeking"),n.seekTo(t)}}),Object.defineProperty(e.media,"playbackRate",{get:function(){return n.getPlaybackRate()},set:function(e){n.setPlaybackRate(e)}});var i=e.config.volume;Object.defineProperty(e.media,"volume",{get:function(){return i},set:function(t){i=t,n.setVolume(100*i),Ku.call(e,e.media,"volumechange")}});var r=e.config.muted;Object.defineProperty(e.media,"muted",{get:function(){return r},set:function(t){var i=iu(t)?t:r;r=i,n[i?"mute":"unMute"](),Ku.call(e,e.media,"volumechange")}}),Object.defineProperty(e.media,"currentSrc",{get:function(){return n.getVideoUrl()}}),Object.defineProperty(e.media,"ended",{get:function(){return e.currentTime===e.duration}});var o=n.getAvailablePlaybackRates();e.options.speed=o.filter((function(t){return e.config.speed.options.includes(t)})),e.supported.ui&&e.media.setAttribute("tabindex",-1),Ku.call(e,e.media,"timeupdate"),Ku.call(e,e.media,"durationchange"),clearInterval(e.timers.buffering),e.timers.buffering=setInterval((function(){e.media.buffered=n.getVideoLoadedFraction(),(null===e.media.lastBuffered||e.media.lastBuffered<e.media.buffered)&&Ku.call(e,e.media,"progress"),e.media.lastBuffered=e.media.buffered,1===e.media.buffered&&(clearInterval(e.timers.buffering),Ku.call(e,e.media,"canplaythrough"))}),200),setTimeout((function(){return $h.build.call(e)}),50)}},onStateChange:function(t){var n=t.target;switch(clearInterval(e.timers.playing),e.media.seeking&&[1,2].includes(t.data)&&(e.media.seeking=!1,Ku.call(e,e.media,"seeked")),t.data){case-1:Ku.call(e,e.media,"timeupdate"),e.media.buffered=n.getVideoLoadedFraction(),Ku.call(e,e.media,"progress");break;case 0:rf.call(e,!1),e.media.loop?(n.stopVideo(),n.playVideo()):Ku.call(e,e.media,"ended");break;case 1:e.config.autoplay||!e.media.paused||e.embed.hasPlayed?(rf.call(e,!0),Ku.call(e,e.media,"playing"),e.timers.playing=setInterval((function(){Ku.call(e,e.media,"timeupdate")}),50),e.media.duration!==n.getDuration()&&(e.media.duration=n.getDuration(),Ku.call(e,e.media,"durationchange"))):e.media.pause();break;case 2:e.muted||e.embed.unMute(),rf.call(e,!1);break;case 3:Ku.call(e,e.media,"waiting")}Ku.call(e,e.elements.container,"statechange",!1,{code:t.data})}}})}}},sf={setup:function(){this.media?(ju(this.elements.container,this.config.classNames.type.replace("{0}",this.type),!0),ju(this.elements.container,this.config.classNames.provider.replace("{0}",this.provider),!0),this.isEmbed&&ju(this.elements.container,this.config.classNames.type.replace("{0}","video"),!0),this.isVideo&&(this.elements.wrapper=Au("div",{class:this.config.classNames.video}),Su(this.media,this.elements.wrapper),this.elements.poster=Au("div",{class:this.config.classNames.poster}),this.elements.wrapper.appendChild(this.elements.poster)),this.isHTML5?eh.setup.call(this):this.isYouTube?of.setup.call(this):this.isVimeo&&nf.setup.call(this)):this.debug.warn("No media element found!")}},lf=function(){function e(t){var n=this;yo(this,e),this.player=t,this.config=t.config.ads,this.playing=!1,this.initialized=!1,this.elements={container:null,displayContainer:null},this.manager=null,this.loader=null,this.cuePoints=null,this.events={},this.safetyTimer=null,this.countdownTimer=null,this.managerPromise=new Promise((function(e,t){n.on("loaded",e),n.on("error",t)})),this.load()}return wo(e,[{key:"load",value:function(){var e=this;this.enabled&&(eu(window.google)&&eu(window.google.ima)?this.ready():ef(this.player.config.urls.googleIMA.sdk).then((function(){e.ready()})).catch((function(){e.trigger("error",new Error("Google IMA SDK failed to load"))})))}},{key:"ready",value:function(){var e,t=this;this.enabled||((e=this).manager&&e.manager.destroy(),e.elements.displayContainer&&e.elements.displayContainer.destroy(),e.elements.container.remove()),this.startSafetyTimer(12e3,"ready()"),this.managerPromise.then((function(){t.clearSafetyTimer("onAdsManagerLoaded()")})),this.listeners(),this.setupIMA()}},{key:"setupIMA",value:function(){var e=this;this.elements.container=Au("div",{class:this.player.config.classNames.ads}),this.player.elements.container.appendChild(this.elements.container),google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED),google.ima.settings.setLocale(this.player.config.ads.language),google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline),this.elements.displayContainer=new google.ima.AdDisplayContainer(this.elements.container,this.player.media),this.loader=new google.ima.AdsLoader(this.elements.displayContainer),this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,(function(t){return e.onAdsManagerLoaded(t)}),!1),this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(function(t){return e.onAdError(t)}),!1),this.requestAds()}},{key:"requestAds",value:function(){var e=this.player.elements.container;try{var t=new google.ima.AdsRequest;t.adTagUrl=this.tagUrl,t.linearAdSlotWidth=e.offsetWidth,t.linearAdSlotHeight=e.offsetHeight,t.nonLinearAdSlotWidth=e.offsetWidth,t.nonLinearAdSlotHeight=e.offsetHeight,t.forceNonLinearFullSlot=!1,t.setAdWillPlayMuted(!this.player.muted),this.loader.requestAds(t)}catch(e){this.onAdError(e)}}},{key:"pollCountdown",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!t)return clearInterval(this.countdownTimer),void this.elements.container.removeAttribute("data-badge-text");var n=function(){var t=Lh(Math.max(e.manager.getRemainingTime(),0)),n="".concat(Th("advertisement",e.player.config)," - ").concat(t);e.elements.container.setAttribute("data-badge-text",n)};this.countdownTimer=setInterval(n,100)}},{key:"onAdsManagerLoaded",value:function(e){var t=this;if(this.enabled){var n=new google.ima.AdsRenderingSettings;n.restoreCustomPlaybackStateOnAdBreakComplete=!0,n.enablePreloading=!0,this.manager=e.getAdsManager(this.player,n),this.cuePoints=this.manager.getCuePoints(),this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(function(e){return t.onAdError(e)})),Object.keys(google.ima.AdEvent.Type).forEach((function(e){t.manager.addEventListener(google.ima.AdEvent.Type[e],(function(e){return t.onAdEvent(e)}))})),this.trigger("loaded")}}},{key:"addCuePoints",value:function(){var e=this;du(this.cuePoints)||this.cuePoints.forEach((function(t){if(0!==t&&-1!==t&&t<e.player.duration){var n=e.player.elements.progress;if(su(n)){var i=100/e.player.duration*t,r=Au("span",{class:e.player.config.classNames.cues});r.style.left="".concat(i.toString(),"%"),n.appendChild(r)}}}))}},{key:"onAdEvent",value:function(e){var t=this,n=this.player.elements.container,i=e.getAd(),r=e.getAdData();switch(function(e){Ku.call(t.player,t.player.media,"ads".concat(e.replace(/_/g,"").toLowerCase()))}(e.type),e.type){case google.ima.AdEvent.Type.LOADED:this.trigger("loaded"),this.pollCountdown(!0),i.isLinear()||(i.width=n.offsetWidth,i.height=n.offsetHeight);break;case google.ima.AdEvent.Type.STARTED:this.manager.setVolume(this.player.volume);break;case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:this.player.ended?this.loadAds():this.loader.contentComplete();break;case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:this.pauseContent();break;case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:this.pollCountdown(),this.resumeContent();break;case google.ima.AdEvent.Type.LOG:r.adError&&this.player.debug.warn("Non-fatal ad error: ".concat(r.adError.getMessage()))}}},{key:"onAdError",value:function(e){this.cancel(),this.player.debug.warn("Ads error",e)}},{key:"listeners",value:function(){var e,t=this,n=this.player.elements.container;this.player.on("canplay",(function(){t.addCuePoints()})),this.player.on("ended",(function(){t.loader.contentComplete()})),this.player.on("timeupdate",(function(){e=t.player.currentTime})),this.player.on("seeked",(function(){var n=t.player.currentTime;du(t.cuePoints)||t.cuePoints.forEach((function(i,r){e<i&&i<n&&(t.manager.discardAdBreak(),t.cuePoints.splice(r,1))}))})),window.addEventListener("resize",(function(){t.manager&&t.manager.resize(n.offsetWidth,n.offsetHeight,google.ima.ViewMode.NORMAL)}))}},{key:"play",value:function(){var e=this,t=this.player.elements.container;this.managerPromise||this.resumeContent(),this.managerPromise.then((function(){e.manager.setVolume(e.player.volume),e.elements.displayContainer.initialize();try{e.initialized||(e.manager.init(t.offsetWidth,t.offsetHeight,google.ima.ViewMode.NORMAL),e.manager.start()),e.initialized=!0}catch(t){e.onAdError(t)}})).catch((function(){}))}},{key:"resumeContent",value:function(){this.elements.container.style.zIndex="",this.playing=!1,Gu(this.player.media.play())}},{key:"pauseContent",value:function(){this.elements.container.style.zIndex=3,this.playing=!0,this.player.media.pause()}},{key:"cancel",value:function(){this.initialized&&this.resumeContent(),this.trigger("error"),this.loadAds()}},{key:"loadAds",value:function(){var e=this;this.managerPromise.then((function(){e.manager&&e.manager.destroy(),e.managerPromise=new Promise((function(t){e.on("loaded",t),e.player.debug.log(e.manager)})),e.initialized=!1,e.requestAds()})).catch((function(){}))}},{key:"trigger",value:function(e){for(var t=this,n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];var a=this.events[e];au(a)&&a.forEach((function(e){ru(e)&&e.apply(t,i)}))}},{key:"on",value:function(e,t){return au(this.events[e])||(this.events[e]=[]),this.events[e].push(t),this}},{key:"startSafetyTimer",value:function(e,t){var n=this;this.player.debug.log("Safety timer invoked from: ".concat(t)),this.safetyTimer=setTimeout((function(){n.cancel(),n.clearSafetyTimer("startSafetyTimer()")}),e)}},{key:"clearSafetyTimer",value:function(e){Zc(this.safetyTimer)||(this.player.debug.log("Safety timer cleared from: ".concat(e)),clearTimeout(this.safetyTimer),this.safetyTimer=null)}},{key:"enabled",get:function(){var e=this.config;return this.player.isHTML5&&this.player.isVideo&&e.enabled&&(!du(e.publisherId)||fu(e.tagUrl))}},{key:"tagUrl",get:function(){var e=this.config;if(fu(e.tagUrl))return e.tagUrl;var t={AV_PUBLISHERID:"58c25bb0073ef448b1087ad6",AV_CHANNELID:"5a0458dc28a06145e4519d21",AV_URL:window.location.hostname,cb:Date.now(),AV_WIDTH:640,AV_HEIGHT:480,AV_CDIM2:e.publisherId};return"".concat("https://go.aniview.com/api/adserver6/vast/","?").concat(Rh(t))}}]),e}(),cf=ct.findIndex,uf=!0,hf=Qt("findIndex");"findIndex"in[]&&Array(1).findIndex((function(){uf=!1})),Ie({target:"Array",proto:!0,forced:uf||!hf},{findIndex:function(e){return cf(this,e,arguments.length>1?arguments[1]:void 0)}}),dn("findIndex");var ff=Math.min,df=[].lastIndexOf,pf=!!df&&1/[1].lastIndexOf(1,-0)<0,mf=$t("lastIndexOf"),gf=Qt("indexOf",{ACCESSORS:!0,1:0}),vf=pf||!mf||!gf?function(e){if(pf)return df.apply(this,arguments)||0;var t=m(this),n=le(t.length),i=n-1;for(arguments.length>1&&(i=ff(i,oe(arguments[1]))),i<0&&(i=n+i);i>=0;i--)if(i in t&&t[i]===e)return i||0;return-1}:df;Ie({target:"Array",proto:!0,forced:vf!==[].lastIndexOf},{lastIndexOf:vf});var yf=function(e,t){var n={};return e>t.width/t.height?(n.width=t.width,n.height=1/e*t.width):(n.height=t.height,n.width=e*t.height),n},bf=function(){function e(t){yo(this,e),this.player=t,this.thumbnails=[],this.loaded=!1,this.lastMouseMoveTime=Date.now(),this.mouseDown=!1,this.loadedImages=[],this.elements={thumb:{},scrubbing:{}},this.load()}return wo(e,[{key:"load",value:function(){var e=this;this.player.elements.display.seekTooltip&&(this.player.elements.display.seekTooltip.hidden=this.enabled),this.enabled&&this.getThumbnails().then((function(){e.enabled&&(e.render(),e.determineContainerAutoSizing(),e.loaded=!0)}))}},{key:"getThumbnails",value:function(){var e=this;return new Promise((function(t){var n=e.player.config.previewThumbnails.src;if(du(n))throw new Error("Missing previewThumbnails.src config attribute");var i=function(){e.thumbnails.sort((function(e,t){return e.height-t.height})),e.player.debug.log("Preview thumbnails",e.thumbnails),t()};if(ru(n))n((function(t){e.thumbnails=t,i()}));else{var r=(nu(n)?[n]:n).map((function(t){return e.getThumbnail(t)}));Promise.all(r).then(i)}}))}},{key:"getThumbnail",value:function(e){var t=this;return new Promise((function(n){Eh(e).then((function(i){var r,a,o={frames:(r=i,a=[],r.split(/\r\n\r\n|\n\n|\r\r/).forEach((function(e){var t={};e.split(/\r\n|\n|\r/).forEach((function(e){if(tu(t.startTime)){if(!du(e.trim())&&du(t.text)){var n=e.trim().split("#xywh="),i=Ao(n,1);if(t.text=i[0],n[1]){var r=Ao(n[1].split(","),4);t.x=r[0],t.y=r[1],t.w=r[2],t.h=r[3]}}}else{var a=e.match(/([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})( ?--> ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/);a&&(t.startTime=60*Number(a[1]||0)*60+60*Number(a[2])+Number(a[3])+Number("0.".concat(a[4])),t.endTime=60*Number(a[6]||0)*60+60*Number(a[7])+Number(a[8])+Number("0.".concat(a[9])))}})),t.text&&a.push(t)})),a),height:null,urlPrefix:""};o.frames[0].text.startsWith("/")||o.frames[0].text.startsWith("http://")||o.frames[0].text.startsWith("https://")||(o.urlPrefix=e.substring(0,e.lastIndexOf("/")+1));var s=new Image;s.onload=function(){o.height=s.naturalHeight,o.width=s.naturalWidth,t.thumbnails.push(o),n()},s.src=o.urlPrefix+o.frames[0].text}))}))}},{key:"startMove",value:function(e){if(this.loaded&&lu(e)&&["touchmove","mousemove"].includes(e.type)&&this.player.media.duration){if("touchmove"===e.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{var t=this.player.elements.progress.getBoundingClientRect(),n=100/t.width*(e.pageX-t.left);this.seekTime=this.player.media.duration*(n/100),this.seekTime<0&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=e.pageX,this.elements.thumb.time.innerText=Lh(this.seekTime)}this.showImageAtCurrentTime()}}},{key:"endMove",value:function(){this.toggleThumbContainer(!1,!0)}},{key:"startScrubbing",value:function(e){(Zc(e.button)||!1===e.button||0===e.button)&&(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))}},{key:"endScrubbing",value:function(){var e=this;this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):Wu.call(this.player,this.player.media,"timeupdate",(function(){e.mouseDown||e.toggleScrubbingContainer(!1)}))}},{key:"listeners",value:function(){var e=this;this.player.on("play",(function(){e.toggleThumbContainer(!1,!0)})),this.player.on("seeked",(function(){e.toggleThumbContainer(!1)})),this.player.on("timeupdate",(function(){e.lastTime=e.player.media.currentTime}))}},{key:"render",value:function(){this.elements.thumb.container=Au("div",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=Au("div",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);var e=Au("div",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=Au("span",{},"00:00"),e.appendChild(this.elements.thumb.time),this.elements.thumb.container.appendChild(e),su(this.player.elements.progress)&&this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=Au("div",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)}},{key:"destroy",value:function(){this.elements.thumb.container&&this.elements.thumb.container.remove(),this.elements.scrubbing.container&&this.elements.scrubbing.container.remove()}},{key:"showImageAtCurrentTime",value:function(){var e=this;this.mouseDown?this.setScrubbingContainerSize():this.setThumbContainerSizeAndPos();var t=this.thumbnails[0].frames.findIndex((function(t){return e.seekTime>=t.startTime&&e.seekTime<=t.endTime})),n=t>=0,i=0;this.mouseDown||this.toggleThumbContainer(n),n&&(this.thumbnails.forEach((function(n,r){e.loadedImages.includes(n.frames[t].text)&&(i=r)})),t!==this.showingThumb&&(this.showingThumb=t,this.loadImage(i)))}},{key:"loadImage",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=this.showingThumb,i=this.thumbnails[t],r=i.urlPrefix,a=i.frames[n],o=i.frames[n].text,s=r+o;if(this.currentImageElement&&this.currentImageElement.dataset.filename===o)this.showImage(this.currentImageElement,a,t,n,o,!1),this.currentImageElement.dataset.index=n,this.removeOldImages(this.currentImageElement);else{this.loadingImage&&this.usingSprites&&(this.loadingImage.onload=null);var l=new Image;l.src=s,l.dataset.index=n,l.dataset.filename=o,this.showingThumbFilename=o,this.player.debug.log("Loading image: ".concat(s)),l.onload=function(){return e.showImage(l,a,t,n,o,!0)},this.loadingImage=l,this.removeOldImages(l)}}},{key:"showImage",value:function(e,t,n,i,r){var a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];this.player.debug.log("Showing thumb: ".concat(r,". num: ").concat(i,". qual: ").concat(n,". newimg: ").concat(a)),this.setImageSizeAndOffset(e,t),a&&(this.currentImageContainer.appendChild(e),this.currentImageElement=e,this.loadedImages.includes(r)||this.loadedImages.push(r)),this.preloadNearby(i,!0).then(this.preloadNearby(i,!1)).then(this.getHigherQuality(n,e,t,r))}},{key:"removeOldImages",value:function(e){var t=this;Array.from(this.currentImageContainer.children).forEach((function(n){if("img"===n.tagName.toLowerCase()){var i=t.usingSprites?500:1e3;if(n.dataset.index!==e.dataset.index&&!n.dataset.deleting){n.dataset.deleting=!0;var r=t.currentImageContainer;setTimeout((function(){r.removeChild(n),t.player.debug.log("Removing thumb: ".concat(n.dataset.filename))}),i)}}}))}},{key:"preloadNearby",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return new Promise((function(i){setTimeout((function(){var r=t.thumbnails[0].frames[e].text;if(t.showingThumbFilename===r){var a;a=n?t.thumbnails[0].frames.slice(e):t.thumbnails[0].frames.slice(0,e).reverse();var o=!1;a.forEach((function(e){var n=e.text;if(n!==r&&!t.loadedImages.includes(n)){o=!0,t.player.debug.log("Preloading thumb filename: ".concat(n));var a=t.thumbnails[0].urlPrefix+n,s=new Image;s.src=a,s.onload=function(){t.player.debug.log("Preloaded thumb filename: ".concat(n)),t.loadedImages.includes(n)||t.loadedImages.push(n),i()}}})),o||i()}}),300)}))}},{key:"getHigherQuality",value:function(e,t,n,i){var r=this;if(e<this.thumbnails.length-1){var a=t.naturalHeight;this.usingSprites&&(a=n.h),a<this.thumbContainerHeight&&setTimeout((function(){r.showingThumbFilename===i&&(r.player.debug.log("Showing higher quality thumb for: ".concat(i)),r.loadImage(e+1))}),300)}}},{key:"toggleThumbContainer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.player.config.classNames.previewThumbnails.thumbContainerShown;this.elements.thumb.container.classList.toggle(n,e),!e&&t&&(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"toggleScrubbingContainer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.player.config.classNames.previewThumbnails.scrubbingContainerShown;this.elements.scrubbing.container.classList.toggle(t,e),e||(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"determineContainerAutoSizing",value:function(){(this.elements.thumb.imageContainer.clientHeight>20||this.elements.thumb.imageContainer.clientWidth>20)&&(this.sizeSpecifiedInCSS=!0)}},{key:"setThumbContainerSizeAndPos",value:function(){if(this.sizeSpecifiedInCSS){if(this.elements.thumb.imageContainer.clientHeight>20&&this.elements.thumb.imageContainer.clientWidth<20){var e=Math.floor(this.elements.thumb.imageContainer.clientHeight*this.thumbAspectRatio);this.elements.thumb.imageContainer.style.width="".concat(e,"px")}else if(this.elements.thumb.imageContainer.clientHeight<20&&this.elements.thumb.imageContainer.clientWidth>20){var t=Math.floor(this.elements.thumb.imageContainer.clientWidth/this.thumbAspectRatio);this.elements.thumb.imageContainer.style.height="".concat(t,"px")}}else{var n=Math.floor(this.thumbContainerHeight*this.thumbAspectRatio);this.elements.thumb.imageContainer.style.height="".concat(this.thumbContainerHeight,"px"),this.elements.thumb.imageContainer.style.width="".concat(n,"px")}this.setThumbContainerPos()}},{key:"setThumbContainerPos",value:function(){var e=this.player.elements.progress.getBoundingClientRect(),t=this.player.elements.container.getBoundingClientRect(),n=this.elements.thumb.container,i=t.left-e.left+10,r=t.right-e.left-n.clientWidth-10,a=this.mousePosX-e.left-n.clientWidth/2;a<i&&(a=i),a>r&&(a=r),n.style.left="".concat(a,"px")}},{key:"setScrubbingContainerSize",value:function(){var e=yf(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight}),t=e.width,n=e.height;this.elements.scrubbing.container.style.width="".concat(t,"px"),this.elements.scrubbing.container.style.height="".concat(n,"px")}},{key:"setImageSizeAndOffset",value:function(e,t){if(this.usingSprites){var n=this.thumbContainerHeight/t.h;e.style.height="".concat(e.naturalHeight*n,"px"),e.style.width="".concat(e.naturalWidth*n,"px"),e.style.left="-".concat(t.x*n,"px"),e.style.top="-".concat(t.y*n,"px")}}},{key:"enabled",get:function(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}},{key:"currentImageContainer",get:function(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}},{key:"usingSprites",get:function(){return Object.keys(this.thumbnails[0].frames[0]).includes("w")}},{key:"thumbAspectRatio",get:function(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}},{key:"thumbContainerHeight",get:function(){return this.mouseDown?yf(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight}).height:this.sizeSpecifiedInCSS?this.elements.thumb.imageContainer.clientHeight:Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}},{key:"currentImageElement",get:function(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement},set:function(e){this.mouseDown?this.currentScrubbingImageElement=e:this.currentThumbnailImageElement=e}}]),e}(),wf={insertElements:function(e,t){var n=this;nu(t)?Pu(e,this.media,{src:t}):au(t)&&t.forEach((function(t){Pu(e,n.media,t)}))},change:function(e){var t=this;ku(e,"sources.length")?(eh.cancelRequests.call(this),this.destroy.call(this,(function(){t.options.quality=[],xu(t.media),t.media=null,su(t.elements.container)&&t.elements.container.removeAttribute("class");var n=e.sources,i=e.type,r=Ao(n,1)[0],a=r.provider,o=void 0===a?Fh.html5:a,s=r.src,l="html5"===o?i:"div",c="html5"===o?{}:{src:s};Object.assign(t,{provider:o,type:i,supported:qu.check(i,o,t.config.playsinline),media:Au(l,c)}),t.elements.container.appendChild(t.media),iu(e.autoplay)&&(t.config.autoplay=e.autoplay),t.isHTML5&&(t.config.crossorigin&&t.media.setAttribute("crossorigin",""),t.config.autoplay&&t.media.setAttribute("autoplay",""),du(e.poster)||(t.poster=e.poster),t.config.loop.active&&t.media.setAttribute("loop",""),t.config.muted&&t.media.setAttribute("muted",""),t.config.playsinline&&t.media.setAttribute("playsinline","")),$h.addStyleHook.call(t),t.isHTML5&&wf.insertElements.call(t,"source",n),t.config.title=e.title,sf.setup.call(t),t.isHTML5&&Object.keys(e).includes("tracks")&&wf.insertElements.call(t,"track",e.tracks),(t.isHTML5||t.isEmbed&&!t.supported.ui)&&$h.build.call(t),t.isHTML5&&t.media.load(),du(e.previewThumbnails)||(Object.assign(t.config.previewThumbnails,e.previewThumbnails),t.previewThumbnails&&t.previewThumbnails.loaded&&(t.previewThumbnails.destroy(),t.previewThumbnails=null),t.config.previewThumbnails.enabled&&(t.previewThumbnails=new bf(t))),t.fullscreen.update()}),!0)):this.debug.warn("Invalid source format")}};var kf,Tf=function(){function e(t,n){var i=this;if(yo(this,e),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=qu.touch,this.media=t,nu(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||ou(this.media)||au(this.media))&&(this.media=this.media[0]),this.config=Tu({},_h,e.defaults,n||{},function(){try{return JSON.parse(i.media.getAttribute("data-plyr-config"))}catch(e){return{}}}()),this.elements={container:null,fullscreen:null,captions:null,buttons:{},display:{},progress:{},inputs:{},settings:{popup:null,menu:null,panels:{},buttons:{}}},this.captions={active:null,currentTrack:-1,meta:new WeakMap},this.fullscreen={active:!1},this.options={speed:[],quality:[]},this.debug=new Vh(this.config.debug),this.debug.log("Config",this.config),this.debug.log("Support",qu),!Zc(this.media)&&su(this.media))if(this.media.plyr)this.debug.warn("Target already setup");else if(this.config.enabled)if(qu.check().api){var r=this.media.cloneNode(!0);r.autoplay=!1,this.elements.original=r;var a=this.media.tagName.toLowerCase(),o=null,s=null;switch(a){case"div":if(o=this.media.querySelector("iframe"),su(o)){if(s=Nh(o.getAttribute("src")),this.provider=function(e){return/^(https?:\/\/)?(www\.)?(youtube\.com|youtube-nocookie\.com|youtu\.?be)\/.+$/.test(e)?Fh.youtube:/^https?:\/\/player.vimeo.com\/video\/\d{0,9}(?=\b|\/)/.test(e)?Fh.vimeo:null}(s.toString()),this.elements.container=this.media,this.media=o,this.elements.container.className="",s.search.length){var l=["1","true"];l.includes(s.searchParams.get("autoplay"))&&(this.config.autoplay=!0),l.includes(s.searchParams.get("loop"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=l.includes(s.searchParams.get("playsinline")),this.config.youtube.hl=s.searchParams.get("hl")):this.config.playsinline=!0}}else this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider);if(du(this.provider)||!Object.keys(Fh).includes(this.provider))return void this.debug.error("Setup failed: Invalid provider");this.type=Hh;break;case"video":case"audio":this.type=a,this.provider=Fh.html5,this.media.hasAttribute("crossorigin")&&(this.config.crossorigin=!0),this.media.hasAttribute("autoplay")&&(this.config.autoplay=!0),(this.media.hasAttribute("playsinline")||this.media.hasAttribute("webkit-playsinline"))&&(this.config.playsinline=!0),this.media.hasAttribute("muted")&&(this.config.muted=!0),this.media.hasAttribute("loop")&&(this.config.loop.active=!0);break;default:return void this.debug.error("Setup failed: unsupported type")}this.supported=qu.check(this.type,this.provider,this.config.playsinline),this.supported.api?(this.eventListeners=[],this.listeners=new Yh(this),this.storage=new Sh(this),this.media.plyr=this,su(this.elements.container)||(this.elements.container=Au("div",{tabindex:0}),Su(this.media,this.elements.container)),$h.migrateStyles.call(this),$h.addStyleHook.call(this),sf.setup.call(this),this.config.debug&&Vu.call(this,this.elements.container,this.config.events.join(" "),(function(e){i.debug.log("event: ".concat(e.type))})),this.fullscreen=new zh(this),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&$h.build.call(this),this.listeners.container(),this.listeners.global(),this.config.ads.enabled&&(this.ads=new lf(this)),this.isHTML5&&this.config.autoplay&&setTimeout((function(){return Gu(i.play())}),10),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new bf(this))):this.debug.error("Setup failed: no support")}else this.debug.error("Setup failed: no support");else this.debug.error("Setup failed: disabled by config");else this.debug.error("Setup failed: no suitable element passed")}return wo(e,[{key:"play",value:function(){var e=this;return ru(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then((function(){return e.ads.play()})).catch((function(){return Gu(e.media.play())})),this.media.play()):null}},{key:"pause",value:function(){return this.playing&&ru(this.media.pause)?this.media.pause():null}},{key:"togglePlay",value:function(e){return(iu(e)?e:!this.playing)?this.play():this.pause()}},{key:"stop",value:function(){this.isHTML5?(this.pause(),this.restart()):ru(this.media.stop)&&this.media.stop()}},{key:"restart",value:function(){this.currentTime=0}},{key:"rewind",value:function(e){this.currentTime-=tu(e)?e:this.config.seekTime}},{key:"forward",value:function(e){this.currentTime+=tu(e)?e:this.config.seekTime}},{key:"increaseVolume",value:function(e){var t=this.media.muted?0:this.volume;this.volume=t+(tu(e)?e:0)}},{key:"decreaseVolume",value:function(e){this.increaseVolume(-e)}},{key:"toggleCaptions",value:function(e){Mh.toggle.call(this,e,!1)}},{key:"airplay",value:function(){qu.airplay&&this.media.webkitShowPlaybackTargetPicker()}},{key:"toggleControls",value:function(e){if(this.supported.ui&&!this.isAudio){var t=Nu(this.elements.container,this.config.classNames.hideControls),n=void 0===e?void 0:!e,i=ju(this.elements.container,this.config.classNames.hideControls,n);if(i&&au(this.config.controls)&&this.config.controls.includes("settings")&&!du(this.config.settings)&&jh.toggleMenu.call(this,!1),i!==t){var r=i?"controlshidden":"controlsshown";Ku.call(this,this.media,r)}return!i}return!1}},{key:"on",value:function(e,t){Vu.call(this,this.elements.container,e,t)}},{key:"once",value:function(e,t){Wu.call(this,this.elements.container,e,t)}},{key:"off",value:function(e,t){zu(this.elements.container,e,t)}},{key:"destroy",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.ready){var i=function(){document.body.style.overflow="",t.embed=null,n?(Object.keys(t.elements).length&&(xu(t.elements.buttons.play),xu(t.elements.captions),xu(t.elements.controls),xu(t.elements.wrapper),t.elements.buttons.play=null,t.elements.captions=null,t.elements.controls=null,t.elements.wrapper=null),ru(e)&&e()):($u.call(t),Ou(t.elements.original,t.elements.container),Ku.call(t,t.elements.original,"destroyed",!0),ru(e)&&e.call(t.elements.original),t.ready=!1,setTimeout((function(){t.elements=null,t.media=null}),200))};this.stop(),clearTimeout(this.timers.loading),clearTimeout(this.timers.controls),clearTimeout(this.timers.resized),this.isHTML5?($h.toggleNativeControls.call(this,!0),i()):this.isYouTube?(clearInterval(this.timers.buffering),clearInterval(this.timers.playing),null!==this.embed&&ru(this.embed.destroy)&&this.embed.destroy(),i()):this.isVimeo&&(null!==this.embed&&this.embed.unload().then(i),setTimeout(i,200))}}},{key:"supports",value:function(e){return qu.mime.call(this,e)}},{key:"isHTML5",get:function(){return this.provider===Fh.html5}},{key:"isEmbed",get:function(){return this.isYouTube||this.isVimeo}},{key:"isYouTube",get:function(){return this.provider===Fh.youtube}},{key:"isVimeo",get:function(){return this.provider===Fh.vimeo}},{key:"isVideo",get:function(){return this.type===Hh}},{key:"isAudio",get:function(){return this.type===qh}},{key:"playing",get:function(){return Boolean(this.ready&&!this.paused&&!this.ended)}},{key:"paused",get:function(){return Boolean(this.media.paused)}},{key:"stopped",get:function(){return Boolean(this.paused&&0===this.currentTime)}},{key:"ended",get:function(){return Boolean(this.media.ended)}},{key:"currentTime",set:function(e){if(this.duration){var t=tu(e)&&e>0;this.media.currentTime=t?Math.min(e,this.duration):0,this.debug.log("Seeking to ".concat(this.currentTime," seconds"))}},get:function(){return Number(this.media.currentTime)}},{key:"buffered",get:function(){var e=this.media.buffered;return tu(e)?e:e&&e.length&&this.duration>0?e.end(0)/this.duration:0}},{key:"seeking",get:function(){return Boolean(this.media.seeking)}},{key:"duration",get:function(){var e=parseFloat(this.config.duration),t=(this.media||{}).duration,n=tu(t)&&t!==1/0?t:0;return e||n}},{key:"volume",set:function(e){var t=e;nu(t)&&(t=Number(t)),tu(t)||(t=this.storage.get("volume")),tu(t)||(t=this.config.volume),t>1&&(t=1),t<0&&(t=0),this.config.volume=t,this.media.volume=t,!du(e)&&this.muted&&t>0&&(this.muted=!1)},get:function(){return Number(this.media.volume)}},{key:"muted",set:function(e){var t=e;iu(t)||(t=this.storage.get("muted")),iu(t)||(t=this.config.muted),this.config.muted=t,this.media.muted=t},get:function(){return Boolean(this.media.muted)}},{key:"hasAudio",get:function(){return!this.isHTML5||(!!this.isAudio||(Boolean(this.media.mozHasAudio)||Boolean(this.media.webkitAudioDecodedByteCount)||Boolean(this.media.audioTracks&&this.media.audioTracks.length)))}},{key:"speed",set:function(e){var t=this,n=null;tu(e)&&(n=e),tu(n)||(n=this.storage.get("speed")),tu(n)||(n=this.config.speed.selected);var i=this.minimumSpeed,r=this.maximumSpeed;n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:255;return Math.min(Math.max(e,t),n)}(n,i,r),this.config.speed.selected=n,setTimeout((function(){t.media.playbackRate=n}),0)},get:function(){return Number(this.media.playbackRate)}},{key:"minimumSpeed",get:function(){return this.isYouTube?Math.min.apply(Math,Po(this.options.speed)):this.isVimeo?.5:.0625}},{key:"maximumSpeed",get:function(){return this.isYouTube?Math.max.apply(Math,Po(this.options.speed)):this.isVimeo?2:16}},{key:"quality",set:function(e){var t=this.config.quality,n=this.options.quality;if(n.length){var i=[!du(e)&&Number(e),this.storage.get("quality"),t.selected,t.default].find(tu),r=!0;if(!n.includes(i)){var a=function(e,t){return au(e)&&e.length?e.reduce((function(e,n){return Math.abs(n-t)<Math.abs(e-t)?n:e})):null}(n,i);this.debug.warn("Unsupported quality option: ".concat(i,", using ").concat(a," instead")),i=a,r=!1}t.selected=i,this.media.quality=i,r&&this.storage.set({quality:i})}},get:function(){return this.media.quality}},{key:"loop",set:function(e){var t=iu(e)?e:this.config.loop.active;this.config.loop.active=t,this.media.loop=t},get:function(){return Boolean(this.media.loop)}},{key:"source",set:function(e){wf.change.call(this,e)},get:function(){return this.media.currentSrc}},{key:"download",get:function(){var e=this.config.urls.download;return fu(e)?e:this.source},set:function(e){fu(e)&&(this.config.urls.download=e,jh.setDownloadUrl.call(this))}},{key:"poster",set:function(e){this.isVideo?$h.setPoster.call(this,e,!1).catch((function(){})):this.debug.warn("Poster can only be set for video")},get:function(){return this.isVideo?this.media.getAttribute("poster")||this.media.getAttribute("data-poster"):null}},{key:"ratio",get:function(){if(!this.isVideo)return null;var e=Qu(Ju.call(this));return au(e)?e.join(":"):e},set:function(e){this.isVideo?nu(e)&&Xu(e)?(this.config.ratio=e,Zu.call(this)):this.debug.error("Invalid aspect ratio specified (".concat(e,")")):this.debug.warn("Aspect ratio can only be set for video")}},{key:"autoplay",set:function(e){var t=iu(e)?e:this.config.autoplay;this.config.autoplay=t},get:function(){return Boolean(this.config.autoplay)}},{key:"currentTrack",set:function(e){Mh.set.call(this,e,!1)},get:function(){var e=this.captions,t=e.toggled,n=e.currentTrack;return t?n:-1}},{key:"language",set:function(e){Mh.setLanguage.call(this,e,!1)},get:function(){return(Mh.getCurrentTrack.call(this)||{}).language}},{key:"pip",set:function(e){if(qu.pip){var t=iu(e)?e:!this.pip;ru(this.media.webkitSetPresentationMode)&&this.media.webkitSetPresentationMode(t?Uh:Dh),ru(this.media.requestPictureInPicture)&&(!this.pip&&t?this.media.requestPictureInPicture():this.pip&&!t&&document.exitPictureInPicture())}},get:function(){return qu.pip?du(this.media.webkitPresentationMode)?this.media===document.pictureInPictureElement:this.media.webkitPresentationMode===Uh:null}}],[{key:"supported",value:function(e,t,n){return qu.check(e,t,n)}},{key:"loadSprite",value:function(e,t){return Ah(e,t)}},{key:"setup",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=null;return nu(t)?i=Array.from(document.querySelectorAll(t)):ou(t)?i=Array.from(t):au(t)&&(i=t.filter(su)),du(i)?null:i.map((function(t){return new e(t,n)}))}}]),e}();return Tf.defaults=(kf=_h,JSON.parse(JSON.stringify(kf))),Tf}));
 
classes/Admin.php CHANGED
@@ -345,7 +345,7 @@ class Admin{
345
  global $wpdb;
346
 
347
  $is_erase_data = tutor_utils()->get_option('delete_on_uninstall');
348
- /**D*/ //=> Deleting Data
349
 
350
  $plugin_file = tutor()->basename;
351
  if ($is_erase_data && current_user_can( 'deactivate_plugin', $plugin_file )) {
@@ -373,18 +373,18 @@ class Admin{
373
  //Delete categories
374
  $terms = wp_get_object_terms( $post_id, 'course-category' );
375
  foreach( $terms as $term ){
376
- /**D*/ wp_remove_object_terms( $post_id, array( $term->term_id ), 'course-category' );
377
  }
378
 
379
  //Delete tags if available
380
  $terms = wp_get_object_terms( $post_id, 'course-tag' );
381
  foreach( $terms as $term ){
382
- /**D*/ wp_remove_object_terms( $post_id, array( $term->term_id ), 'course-tag' );
383
  }
384
 
385
  //Delete All Meta
386
- /**D*/ $wpdb->delete($wpdb->postmeta, array('post_id' => $post_id) );
387
- /**D*/ $wpdb->delete($wpdb->posts, array('ID' => $post_id) );
388
  }
389
  }
390
 
@@ -394,24 +394,24 @@ class Admin{
394
  $tutor_comments = $wpdb->get_col("SELECT comment_ID from {$wpdb->comments} WHERE comment_agent = 'comment_agent' ;");
395
  $comments_ids_strings = "'".implode("','", $tutor_comments)."'";
396
  if (is_array($tutor_comments) && count($tutor_comments)){
397
- /**D*/ $wpdb->query("DELETE from {$wpdb->commentmeta} WHERE comment_ID in({$comments_ids_strings}) ");
398
  }
399
- /**D*/ $wpdb->delete($wpdb->comments, array('comment_agent' => 'comment_agent'));
400
 
401
  /**
402
  * Delete Options
403
  */
404
 
405
- /**D*/ delete_option('tutor_option');
406
- /**D*/ $wpdb->delete($wpdb->usermeta, array('meta_key' => '_is_tutor_student'));
407
- /**D*/ $wpdb->delete($wpdb->usermeta, array('meta_key' => '_tutor_instructor_approved'));
408
- /**D*/ $wpdb->delete($wpdb->usermeta, array('meta_key' => '_tutor_instructor_status'));
409
- /**D*/ $wpdb->delete($wpdb->usermeta, array('meta_key' => '_is_tutor_instructor'));
410
- /**D*/ $wpdb->query("DELETE FROM {$wpdb->usermeta} WHERE meta_key LIKE '%_tutor_completed_lesson_id_%' ");
411
 
412
  //Deleting Table
413
  $prefix = $wpdb->prefix;
414
- /**D*/ $wpdb->query("DROP TABLE IF EXISTS {$prefix}tutor_quiz_attempts, {$prefix}tutor_quiz_attempt_answers, {$prefix}tutor_quiz_questions, {$prefix}tutor_quiz_question_answers, {$prefix}tutor_earnings, {$prefix}tutor_withdraws ");
415
 
416
  deactivate_plugins($plugin_file);
417
  }
345
  global $wpdb;
346
 
347
  $is_erase_data = tutor_utils()->get_option('delete_on_uninstall');
348
+ //=> Deleting Data
349
 
350
  $plugin_file = tutor()->basename;
351
  if ($is_erase_data && current_user_can( 'deactivate_plugin', $plugin_file )) {
373
  //Delete categories
374
  $terms = wp_get_object_terms( $post_id, 'course-category' );
375
  foreach( $terms as $term ){
376
+ wp_remove_object_terms( $post_id, array( $term->term_id ), 'course-category' );
377
  }
378
 
379
  //Delete tags if available
380
  $terms = wp_get_object_terms( $post_id, 'course-tag' );
381
  foreach( $terms as $term ){
382
+ wp_remove_object_terms( $post_id, array( $term->term_id ), 'course-tag' );
383
  }
384
 
385
  //Delete All Meta
386
+ $wpdb->delete($wpdb->postmeta, array('post_id' => $post_id) );
387
+ $wpdb->delete($wpdb->posts, array('ID' => $post_id) );
388
  }
389
  }
390
 
394
  $tutor_comments = $wpdb->get_col("SELECT comment_ID from {$wpdb->comments} WHERE comment_agent = 'comment_agent' ;");
395
  $comments_ids_strings = "'".implode("','", $tutor_comments)."'";
396
  if (is_array($tutor_comments) && count($tutor_comments)){
397
+ $wpdb->query("DELETE from {$wpdb->commentmeta} WHERE comment_ID in({$comments_ids_strings}) ");
398
  }
399
+ $wpdb->delete($wpdb->comments, array('comment_agent' => 'comment_agent'));
400
 
401
  /**
402
  * Delete Options
403
  */
404
 
405
+ delete_option('tutor_option');
406
+ $wpdb->delete($wpdb->usermeta, array('meta_key' => '_is_tutor_student'));
407
+ $wpdb->delete($wpdb->usermeta, array('meta_key' => '_tutor_instructor_approved'));
408
+ $wpdb->delete($wpdb->usermeta, array('meta_key' => '_tutor_instructor_status'));
409
+ $wpdb->delete($wpdb->usermeta, array('meta_key' => '_is_tutor_instructor'));
410
+ $wpdb->query("DELETE FROM {$wpdb->usermeta} WHERE meta_key LIKE '%_tutor_completed_lesson_id_%' ");
411
 
412
  //Deleting Table
413
  $prefix = $wpdb->prefix;
414
+ $wpdb->query("DROP TABLE IF EXISTS {$prefix}tutor_quiz_attempts, {$prefix}tutor_quiz_attempt_answers, {$prefix}tutor_quiz_questions, {$prefix}tutor_quiz_question_answers, {$prefix}tutor_earnings, {$prefix}tutor_withdraws ");
415
 
416
  deactivate_plugins($plugin_file);
417
  }
classes/Course.php CHANGED
@@ -3,10 +3,7 @@ namespace TUTOR;
3
 
4
  if ( ! defined( 'ABSPATH' ) )
5
  exit;
6
- /**
7
- * @since 1.8.0
8
- */
9
- session_start();
10
  class Course extends Tutor_Base {
11
 
12
  private $additional_meta=array(
@@ -54,7 +51,6 @@ class Course extends Tutor_Base {
54
  */
55
  add_action('tutor/dashboard_course_builder_form_field_after', array($this, 'register_meta_box_in_frontend'));
56
 
57
-
58
  /**
59
  * Do Stuff for the course save from frontend
60
  */
@@ -90,7 +86,6 @@ class Course extends Tutor_Base {
90
  */
91
  add_filter('tutor_course_price', array($this, 'remove_price_if_enrolled'));
92
 
93
-
94
  /**
95
  * Remove course complete button if course completion is strict mode
96
  * @since v.1.6.1
@@ -109,11 +104,13 @@ class Course extends Tutor_Base {
109
  * @since v.1.6.6
110
  */
111
  add_action('deleted_post', array($this, 'delete_tutor_course_data'));
 
112
 
113
-
114
- add_action('tutor/dashboard_course_builder_form_field_after', array($this, 'tutor_course_setting_metabox_frontend'));
115
-
116
-
 
117
  }
118
 
119
  /**
@@ -357,7 +354,7 @@ class Course extends Tutor_Base {
357
  /**
358
  * @since 1.8.0
359
  */
360
- $_SESSION['tutor_course_updated'] = true;
361
  }
362
 
363
  /**
@@ -729,21 +726,6 @@ class Course extends Tutor_Base {
729
  $courses_post_type = tutor()->course_post_type;
730
  $post_type = tutils()->array_get('post_type', $postarr);
731
 
732
- /*
733
- $post_author = (int) tutor_utils()->avalue_dot('post_author', $data);
734
-
735
- if ( ! $post_author){
736
- $user_ID = (int) tutor_utils()->avalue_dot('user_ID', $postarr);
737
- if ($user_ID){
738
- $data['post_author'] = $user_ID;
739
- }else{
740
- $post_ID = (int) tutor_utils()->avalue_dot('ID', $postarr);
741
- $post_author = (int) $wpdb->get_var("SELECT post_author FROM {$wpdb->posts} WHERE ID = {$post_ID} ");
742
-
743
- $data['post_author'] = $post_author;
744
- }
745
- }*/
746
-
747
  if ($courses_post_type === $post_type){
748
  $post_ID = (int) tutor_utils()->avalue_dot('ID', $postarr);
749
  $post_author = (int) $wpdb->get_var($wpdb->prepare("SELECT post_author FROM {$wpdb->posts} WHERE ID = %d ", $post_ID));
@@ -1272,5 +1254,31 @@ class Course extends Tutor_Base {
1272
  <?php
1273
  }
1274
 
1275
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1276
  }
3
 
4
  if ( ! defined( 'ABSPATH' ) )
5
  exit;
6
+
 
 
 
7
  class Course extends Tutor_Base {
8
 
9
  private $additional_meta=array(
51
  */
52
  add_action('tutor/dashboard_course_builder_form_field_after', array($this, 'register_meta_box_in_frontend'));
53
 
 
54
  /**
55
  * Do Stuff for the course save from frontend
56
  */
86
  */
87
  add_filter('tutor_course_price', array($this, 'remove_price_if_enrolled'));
88
 
 
89
  /**
90
  * Remove course complete button if course completion is strict mode
91
  * @since v.1.6.1
104
  * @since v.1.6.6
105
  */
106
  add_action('deleted_post', array($this, 'delete_tutor_course_data'));
107
+ add_action('tutor/dashboard_course_builder_form_field_after', array($this, 'tutor_course_setting_metabox_frontend'));
108
 
109
+ /**
110
+ * Delete course data after deleted course
111
+ * @since v.1.8.2
112
+ */
113
+ add_action('before_delete_post', array($this, 'delete_associated_enrollment'));
114
  }
115
 
116
  /**
354
  /**
355
  * @since 1.8.0
356
  */
357
+ setcookie( "tutor_course_updated", true, time() + 5 );
358
  }
359
 
360
  /**
726
  $courses_post_type = tutor()->course_post_type;
727
  $post_type = tutils()->array_get('post_type', $postarr);
728
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
729
  if ($courses_post_type === $post_type){
730
  $post_ID = (int) tutor_utils()->avalue_dot('ID', $postarr);
731
  $post_author = (int) $wpdb->get_var($wpdb->prepare("SELECT post_author FROM {$wpdb->posts} WHERE ID = %d ", $post_ID));
1254
  <?php
1255
  }
1256
 
1257
+ /**
1258
+ * Delete associated enrollment
1259
+ * @since v.1.8.2
1260
+ */
1261
+ public function delete_associated_enrollment($post_id) {
1262
+ global $wpdb;
1263
+
1264
+ $enroll_id = $wpdb->get_var( $wpdb->prepare(
1265
+ "SELECT
1266
+ post_id
1267
+ FROM
1268
+ {$wpdb->postmeta}
1269
+ WHERE
1270
+ meta_key='_tutor_enrolled_by_order_id'
1271
+ AND meta_value = %d
1272
+ ",
1273
+ $post_id
1274
+ ) );
1275
+
1276
+ if(is_numeric($enroll_id) && $enroll_id>0) {
1277
+
1278
+ $course_id = get_post_field('post_parent', $enroll_id);
1279
+ $user_id = get_post_field('post_author', $enroll_id);
1280
+
1281
+ tutils()->cancel_course_enrol($course_id, $user_id);
1282
+ }
1283
+ }
1284
  }
classes/Delete_Enrollment_With_Order.php DELETED
@@ -1,26 +0,0 @@
1
- <?php
2
-
3
- namespace TUTOR;
4
-
5
- if ( ! defined( 'ABSPATH' ) )
6
- exit;
7
-
8
- class Delete_Enrollment_With_Order {
9
- function __construct(){
10
- add_action('before_delete_post', array($this, 'delete_associated_enrollment'));
11
- }
12
-
13
- public function delete_associated_enrollment($post_id){
14
- global $wpdb;
15
-
16
- $enroll_id = $wpdb->get_var($wpdb->prepare("SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key='_tutor_enrolled_by_order_id' AND meta_value = %d", $post_id));
17
-
18
- if(is_numeric($enroll_id) && $enroll_id>0){
19
-
20
- $course_id = get_post_field('post_parent', $enroll_id);
21
- $user_id = get_post_field('post_author', $enroll_id);
22
-
23
- tutils()->cancel_course_enrol($course_id, $user_id);
24
- }
25
- }
26
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
classes/Quiz.php CHANGED
@@ -17,15 +17,25 @@ if ( ! defined( 'ABSPATH' ) )
17
  class Quiz {
18
 
19
  private $allowed_attributes = array(
20
- 'src' => array(),
21
- 'style' => array(),
22
- 'class' => array(),
23
- 'id' => array(),
24
- 'href' => array(),
25
- 'alt' => array(),
26
- 'title' => array() );
 
 
 
 
 
 
 
 
 
 
27
 
28
- private $allowed_html = array( 'img', 'b', 'i', 'br', 'a' );
29
 
30
  public function __construct() {
31
 
@@ -276,16 +286,35 @@ class Quiz {
276
 
277
  if ( $question_type === 'true_false' || $question_type === 'single_choice' ) {
278
 
 
 
 
 
 
279
  $given_answer = $answers;
280
- $is_answer_was_correct = (bool) $wpdb->get_var( "SELECT is_correct FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE answer_id = {$answers} " );
281
 
282
  } elseif ( $question_type === 'multiple_choice' ) {
283
 
284
- $given_answer = (array) ( $answers );
285
- $get_original_answers = (array) $wpdb->get_col($wpdb->prepare(
286
- "SELECT answer_id
287
- FROM {$wpdb->prefix}tutor_quiz_question_answers
288
- WHERE belongs_question_id = %d AND belongs_question_type = %s AND is_correct = 1 ;", $question->question_id, $question_type));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
289
 
290
 
291
  if (count(array_diff($get_original_answers, $given_answer)) === 0 && count($get_original_answers) === count($given_answer)) {
@@ -298,7 +327,7 @@ class Quiz {
298
  $given_answer = (array) array_map( 'sanitize_text_field', $answers );
299
  $given_answer = maybe_serialize( $given_answer );
300
 
301
- $get_original_answer = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = {$question->question_id} AND belongs_question_type = '{$question_type}' ;" );
302
  $gap_answer = (array) explode( '|', $get_original_answer->answer_two_gap_match );
303
 
304
  $gap_answer = array_map( 'sanitize_text_field', $gap_answer );
17
  class Quiz {
18
 
19
  private $allowed_attributes = array(
20
+ 'src' => array(),
21
+ 'style' => array(),
22
+ 'class' => array(),
23
+ 'id' => array(),
24
+ 'href' => array(),
25
+ 'alt' => array(),
26
+ 'title' => array(),
27
+ 'type' => array(),
28
+ 'controls' => array(),
29
+ 'muted' => array(),
30
+ 'loop' => array(),
31
+ 'poster' => array(),
32
+ 'preload' => array(),
33
+ 'autoplay' => array(),
34
+ 'width' => array(),
35
+ 'height' => array()
36
+ );
37
 
38
+ private $allowed_html = array( 'img', 'b', 'i', 'br', 'a', 'audio', 'video', 'source' );
39
 
40
  public function __construct() {
41
 
286
 
287
  if ( $question_type === 'true_false' || $question_type === 'single_choice' ) {
288
 
289
+ if(!is_numeric($answers) || !$answers) {
290
+ wp_send_json_error();
291
+ exit;
292
+ }
293
+
294
  $given_answer = $answers;
295
+ $is_answer_was_correct = (bool) $wpdb->get_var( $wpdb->prepare( "SELECT is_correct FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE answer_id = %d ", $answers ) );
296
 
297
  } elseif ( $question_type === 'multiple_choice' ) {
298
 
299
+ $given_answer = (array) ( $answers );
300
+
301
+ $given_answer = array_filter( $given_answer, function($id) {
302
+ return is_numeric($id) && $id>0;
303
+ } );
304
+
305
+ $get_original_answers = (array) $wpdb->get_col($wpdb->prepare(
306
+ "SELECT
307
+ answer_id
308
+ FROM
309
+ {$wpdb->prefix}tutor_quiz_question_answers
310
+ WHERE
311
+ belongs_question_id = %d
312
+ AND belongs_question_type = %s
313
+ AND is_correct = 1 ;
314
+ ",
315
+ $question->question_id,
316
+ $question_type
317
+ ) );
318
 
319
 
320
  if (count(array_diff($get_original_answers, $given_answer)) === 0 && count($get_original_answers) === count($given_answer)) {
327
  $given_answer = (array) array_map( 'sanitize_text_field', $answers );
328
  $given_answer = maybe_serialize( $given_answer );
329
 
330
+ $get_original_answer = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d AND belongs_question_type = %s ;", $question->question_id, $question_type ) );
331
  $gap_answer = (array) explode( '|', $get_original_answer->answer_two_gap_match );
332
 
333
  $gap_answer = array_map( 'sanitize_text_field', $gap_answer );
classes/Students_List.php CHANGED
@@ -4,13 +4,13 @@ namespace TUTOR;
4
  if ( ! defined( 'ABSPATH' ) )
5
  exit;
6
 
7
- if (! class_exists('Tutor_List_Table')){
8
  include_once tutor()->path.'classes/Tutor_List_Table.php';
9
  }
10
 
11
  class Students_List extends \Tutor_List_Table {
12
 
13
- function __construct(){
14
  global $status, $page;
15
 
16
  //Set parent defaults
@@ -21,13 +21,13 @@ class Students_List extends \Tutor_List_Table {
21
  ) );
22
  }
23
 
24
- function column_default($item, $column_name){
25
- switch($column_name){
26
  case 'user_email':
27
  case 'display_name':
28
  return $item->$column_name;
29
  default:
30
- return print_r($item,true); //Show the whole array for troubleshooting purposes
31
  }
32
  }
33
 
@@ -36,34 +36,18 @@ class Students_List extends \Tutor_List_Table {
36
  *
37
  * Completed Course by User
38
  */
39
- function column_completed_course($item){
40
  $user_id = $item->ID;
41
 
42
- $courses = tutor_utils()->get_courses_by_user($user_id);
43
- if ($courses && is_array($courses->posts) && count($courses->posts)){
44
- foreach ($courses->posts as $course) {
45
- echo '<a href="'.get_the_permalink($course->ID).'" target="_blank">'.$course->post_title.'</a> ';
46
  }
47
  }
48
  }
49
 
50
- /*
51
- function column_display_name($item){
52
- //Build row actions
53
- $actions = array(
54
- 'edit' => sprintf('<a href="?page=%s&action=%s&student=%s">Edit</a>',$_REQUEST['page'],'edit',$item->ID),
55
- 'delete' => sprintf('<a href="?page=%s&action=%s&student=%s">Delete</a>',$_REQUEST['page'],'delete',$item->ID),
56
- );
57
-
58
- //Return the title contents
59
- return sprintf('%1$s <span style="color:silver">(id:%2$s)</span>%3$s',
60
- $item->display_name,
61
- $item->ID,
62
- $this->row_actions($actions)
63
- );
64
- }*/
65
-
66
- function column_cb($item){
67
  return sprintf(
68
  '<input type="checkbox" name="%1$s[]" value="%2$s" />',
69
  /*$1%s*/ $this->_args['singular'], //Let's simply repurpose the table's singular label ("student")
@@ -71,7 +55,7 @@ class Students_List extends \Tutor_List_Table {
71
  );
72
  }
73
 
74
- function get_columns(){
75
  $columns = array(
76
  'cb' => '<input type="checkbox" />', //Render a checkbox instead of text
77
  'display_name' => __('Name', 'tutor'),
@@ -97,7 +81,7 @@ class Students_List extends \Tutor_List_Table {
97
 
98
  function process_bulk_action() {
99
  //Detect when a bulk action is being triggered...
100
- if( 'delete'===$this->current_action() ) {
101
  wp_die('Items deleted (or they would be if we had items to delete)!');
102
  }
103
  }
@@ -106,21 +90,21 @@ class Students_List extends \Tutor_List_Table {
106
  $per_page = 20;
107
 
108
  $search_term = '';
109
- if (isset($_REQUEST['s'])){
110
- $search_term = sanitize_text_field($_REQUEST['s']);
111
  }
112
 
113
  $columns = $this->get_columns();
114
  $hidden = array();
115
  $sortable = $this->get_sortable_columns();
116
 
117
- $this->_column_headers = array($columns, $hidden, $sortable);
118
  //$this->process_bulk_action();
119
 
120
  $current_page = $this->get_pagenum();
121
 
122
- $total_items = tutor_utils()->get_total_students($search_term);
123
- $this->items = tutor_utils()->get_students(($current_page-1)*$per_page, $per_page, $search_term);;
124
 
125
  $this->set_pagination_args( array(
126
  'total_items' => $total_items, //WE have to calculate the total number of items
4
  if ( ! defined( 'ABSPATH' ) )
5
  exit;
6
 
7
+ if ( ! class_exists( 'Tutor_List_Table' ) ) {
8
  include_once tutor()->path.'classes/Tutor_List_Table.php';
9
  }
10
 
11
  class Students_List extends \Tutor_List_Table {
12
 
13
+ function __construct() {
14
  global $status, $page;
15
 
16
  //Set parent defaults
21
  ) );
22
  }
23
 
24
+ function column_default( $item, $column_name ) {
25
+ switch( $column_name ) {
26
  case 'user_email':
27
  case 'display_name':
28
  return $item->$column_name;
29
  default:
30
+ return print_r( $item, true ); //Show the whole array for troubleshooting purposes
31
  }
32
  }
33
 
36
  *
37
  * Completed Course by User
38
  */
39
+ function column_completed_course( $item ) {
40
  $user_id = $item->ID;
41
 
42
+ $courses = tutor_utils()->get_courses_by_user( $user_id );
43
+ if ( $courses && is_array( $courses->posts ) && count( $courses->posts ) ) {
44
+ foreach ( $courses->posts as $course ) {
45
+ echo '<a href="' . get_the_permalink( $course->ID ) . '" target="_blank">' . $course->post_title . '</a> ';
46
  }
47
  }
48
  }
49
 
50
+ function column_cb( $item ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  return sprintf(
52
  '<input type="checkbox" name="%1$s[]" value="%2$s" />',
53
  /*$1%s*/ $this->_args['singular'], //Let's simply repurpose the table's singular label ("student")
55
  );
56
  }
57
 
58
+ function get_columns() {
59
  $columns = array(
60
  'cb' => '<input type="checkbox" />', //Render a checkbox instead of text
61
  'display_name' => __('Name', 'tutor'),
81
 
82
  function process_bulk_action() {
83
  //Detect when a bulk action is being triggered...
84
+ if( 'delete' === $this->current_action() ) {
85
  wp_die('Items deleted (or they would be if we had items to delete)!');
86
  }
87
  }
90
  $per_page = 20;
91
 
92
  $search_term = '';
93
+ if ( isset( $_REQUEST['s'] ) ) {
94
+ $search_term = sanitize_text_field( $_REQUEST['s'] );
95
  }
96
 
97
  $columns = $this->get_columns();
98
  $hidden = array();
99
  $sortable = $this->get_sortable_columns();
100
 
101
+ $this->_column_headers = array( $columns, $hidden, $sortable );
102
  //$this->process_bulk_action();
103
 
104
  $current_page = $this->get_pagenum();
105
 
106
+ $total_items = tutor_utils()->get_total_students( $search_term );
107
+ $this->items = tutor_utils()->get_students( ($current_page-1) * $per_page, $per_page, $search_term );
108
 
109
  $this->set_pagination_args( array(
110
  'total_items' => $total_items, //WE have to calculate the total number of items
classes/Tutor.php CHANGED
@@ -142,7 +142,6 @@ final class Tutor{
142
  $this->setup = new Tutor_Setup();
143
  $this->private_course_access = new Private_Course_Access();
144
  $this->course_filter = new Course_Filter();
145
- $this->delete_enrollment = new Delete_Enrollment_With_Order();
146
 
147
  //Integrations
148
  $this->woocommerce = new WooCommerce();
142
  $this->setup = new Tutor_Setup();
143
  $this->private_course_access = new Private_Course_Access();
144
  $this->course_filter = new Course_Filter();
 
145
 
146
  //Integrations
147
  $this->woocommerce = new WooCommerce();
classes/Utils.php CHANGED
@@ -1,10 +1,16 @@
1
  <?php
 
 
 
 
 
 
 
2
  namespace TUTOR;
3
 
4
  if ( ! defined( 'ABSPATH' ) )
5
  exit;
6
 
7
-
8
  class Utils {
9
  /**
10
  * @param null $key
@@ -16,31 +22,31 @@ class Utils {
16
  *
17
  * @since v.1.0.0
18
  */
19
- public function get_option($key = null, $default = false){
20
  $option = (array) maybe_unserialize(get_option('tutor_option'));
21
 
22
- if (empty($option) || ! is_array($option)){
23
  return $default;
24
  }
25
- if ( ! $key){
26
  return $option;
27
  }
28
- if (array_key_exists($key, $option)){
29
- return apply_filters($key, $option[$key]);
30
  }
31
  //Access array value via dot notation, such as option->get('value.subvalue')
32
- if (strpos($key, '.')){
33
- $option_key_array = explode('.', $key);
34
 
35
  $new_option = $option;
36
- foreach ($option_key_array as $dotKey){
37
- if (isset($new_option[$dotKey])){
38
  $new_option = $new_option[$dotKey];
39
  }else{
40
  return $default;
41
  }
42
  }
43
- return apply_filters($key, $new_option);
44
  }
45
 
46
  return $default;
@@ -54,11 +60,10 @@ class Utils {
54
  *
55
  * @since v.1.0.0
56
  */
57
-
58
- public function update_option($key = null, $value = false){
59
- $option = (array) maybe_unserialize(get_option('tutor_option'));
60
  $option[$key] = $value;
61
- update_option('tutor_option', $option);
62
  }
63
 
64
  /**
@@ -73,20 +78,19 @@ class Utils {
73
  *
74
  * @update v.1.4.1 (Added default parameter)
75
  */
76
-
77
- public function avalue_dot($key = null, $array = array(), $default = false){
78
  $array = (array) $array;
79
- if ( ! $key || ! count($array) ){
80
  return $default;
81
  }
82
- $option_key_array = explode('.', $key);
83
 
84
  $value = $array;
85
 
86
- foreach ($option_key_array as $dotKey){
87
- if (isset($value[$dotKey])){
88
  $value = $value[$dotKey];
89
- }else{
90
  return $default;
91
  }
92
  }
@@ -107,8 +111,8 @@ class Utils {
107
  *
108
  * @since v.1.3.3
109
  */
110
- public function array_get($key = null, $array = array(), $default = false){
111
- return $this->avalue_dot($key, $array, $default);
112
  }
113
 
114
  /**
@@ -118,11 +122,11 @@ class Utils {
118
  *
119
  * @since v.1.0.0
120
  */
121
- public function get_pages(){
122
  $pages = array();
123
  $wp_pages = get_pages();
124
- if (is_array($wp_pages) && count($wp_pages)){
125
- foreach ($wp_pages as $page){
126
  $pages[$page->ID] = $page->post_title;
127
  }
128
  }
@@ -136,15 +140,15 @@ class Utils {
136
  *
137
  * @since v.1.0.0
138
  */
139
- public function course_archive_page_url(){
140
  $course_post_type = tutor()->course_post_type;
141
- $course_page_url = trailingslashit(home_url()).$course_post_type;
142
 
143
  $course_archive_page = $this->get_option('course_archive_page');
144
- if ($course_archive_page && $course_archive_page !== '-1'){
145
- $course_page_url = get_permalink($course_archive_page);
146
  }
147
- return trailingslashit($course_page_url);
148
  }
149
 
150
  /**
@@ -156,19 +160,25 @@ class Utils {
156
  *
157
  * @since v.1.0.0
158
  */
159
-
160
- public function profile_url($student_id = 0){
161
- $site_url = trailingslashit(home_url()).'profile/';
162
- $user_name = '';
163
-
164
- $student_id = $this->get_user_id($student_id);
165
- if ($student_id){
166
  global $wpdb;
167
- $user = $wpdb->get_row($wpdb->prepare("SELECT user_nicename from {$wpdb->users} WHERE ID = %d ", $student_id));
168
- if ($user){
 
 
 
 
 
 
 
169
  $user_name = $user->user_nicename;
170
  }
171
- }else{
 
172
  $user_name = 'user_name';
173
  }
174
 
@@ -184,10 +194,16 @@ class Utils {
184
  *
185
  * @since v.1.0.0
186
  */
187
- public function get_user_by_login($user_nicename = ''){
188
  global $wpdb;
189
- $user_nicename = sanitize_text_field($user_nicename);
190
- $user = $wpdb->get_row($wpdb->prepare("SELECT * from {$wpdb->users} WHERE user_nicename = %s", $user_nicename));
 
 
 
 
 
 
191
  return $user;
192
  }
193
 
@@ -199,9 +215,8 @@ class Utils {
199
  * @since v.1.0.0
200
  * @updated @1.5.9
201
  */
202
-
203
- public function has_wc(){
204
- return class_exists('WooCommerce');
205
  }
206
 
207
  /**
@@ -211,13 +226,11 @@ class Utils {
211
  *
212
  * @since v.1.0.0
213
  */
214
- public function has_edd(){
215
- $activated_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ));
216
- //$depends = array('easy-digital-downloads/easy-digital-downloads.php', 'tutor-edd/tutor-edd.php');
217
- $depends = array('easy-digital-downloads/easy-digital-downloads.php');
218
- $has = count(array_intersect($depends, $activated_plugins)) == count($depends);
219
-
220
- return $has;
221
  }
222
 
223
  /**
@@ -227,19 +240,20 @@ class Utils {
227
  *
228
  * @since v.1.3.6
229
  */
230
- public function has_pmpro(){
231
- $activated_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ));
232
- $depends = array('paid-memberships-pro/paid-memberships-pro.php');
233
- return count(array_intersect($depends, $activated_plugins)) == count($depends);
 
234
  }
235
 
236
  public function has_wcs(){
237
- $activated_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ));
238
- $depends = array('woocommerce-subscriptions/woocommerce-subscriptions.php');
239
- return count(array_intersect($depends, $activated_plugins)) == count($depends);
 
240
  }
241
 
242
-
243
  /**
244
  * @return bool
245
  *
@@ -248,9 +262,10 @@ class Utils {
248
  * @since v.1.4.8
249
  */
250
  public function has_bp(){
251
- $activated_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ));
252
- $depends = array('buddypress/bp-loader.php');
253
- return count(array_intersect($depends, $activated_plugins)) == count($depends);
 
254
  }
255
 
256
  /**
@@ -258,7 +273,7 @@ class Utils {
258
  *
259
  * @since v.1.0.0
260
  */
261
- public function languages(){
262
  $language_codes = array(
263
  'en' => 'English' ,
264
  'aa' => 'Afar' ,
@@ -397,10 +412,9 @@ class Utils {
397
  'zu' => 'Zulu' ,
398
  );
399
 
400
- return apply_filters('tutor/utils/languages', $language_codes);
401
  }
402
 
403
-
404
  /**
405
  * @param string $value
406
  *
@@ -408,9 +422,9 @@ class Utils {
408
  *
409
  * @since v.1.0.0
410
  */
411
- public function print_view($value = ''){
412
  echo '<pre>';
413
- print_r($value);
414
  echo '</pre>';
415
  }
416
 
@@ -423,25 +437,38 @@ class Utils {
423
  *
424
  * @since v.1.0.0
425
  */
426
-
427
- public function get_courses($excludes = array(), $post_status=array('publish')){
428
  global $wpdb;
429
 
430
-
431
- $excludes = (array) $excludes;
432
  $exclude_query = '';
433
- if (count($excludes)){
434
- $exclude_query = implode("','", $excludes);
 
435
  }
436
 
437
- $post_status = array_map(function($element){return "'".$element."'";}, $post_status);
438
- $post_status = implode(',', $post_status);
 
439
 
 
440
  $course_post_type = tutor()->course_post_type;
441
- $query = $wpdb->get_results("SELECT ID, post_author, post_title, post_name,post_status, menu_order
442
- from {$wpdb->posts} WHERE post_status IN ({$post_status})
443
- AND ID NOT IN('$exclude_query')
444
- AND post_type = '{$course_post_type}' ");
 
 
 
 
 
 
 
 
 
 
 
 
445
  return $query;
446
  }
447
 
@@ -454,17 +481,28 @@ class Utils {
454
  *
455
  * @since v.1.0.0
456
  */
457
- public function get_courses_for_instructors($instructor_id = 0){
458
  global $wpdb;
459
 
460
- $instructor_id = $this->get_user_id($instructor_id);
461
-
462
  $course_post_type = tutor()->course_post_type;
463
- $query = $wpdb->get_results($wpdb->prepare("SELECT ID, post_author, post_title, post_name,post_status, menu_order
464
- from {$wpdb->posts}
465
- WHERE post_author = %d
466
- AND post_status IN ('publish', 'pending')
467
- AND post_type = %s ", $instructor_id, $course_post_type));
 
 
 
 
 
 
 
 
 
 
 
 
468
  return $query;
469
  }
470
 
@@ -477,15 +515,26 @@ class Utils {
477
  *
478
  * @since v.1.0.0
479
  */
480
-
481
- public function get_course_count_by_instructor($instructor_id){
482
  global $wpdb;
483
 
484
  $course_post_type = tutor()->course_post_type;
485
- $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(ID) from {$wpdb->posts}
486
- INNER JOIN {$wpdb->usermeta} ON user_id = %d AND meta_key = '_tutor_instructor_course_id' AND meta_value = ID
487
- WHERE post_status = 'publish'
488
- AND post_type = %s ; ", $instructor_id, $course_post_type));
 
 
 
 
 
 
 
 
 
 
 
 
489
 
490
  return $count;
491
  }
@@ -499,32 +548,36 @@ class Utils {
499
  *
500
  * @since v.1.0.0
501
  */
502
- public function get_courses_by_instructor($instructor_id = 0, $post_status = array('publish')){
503
  global $wpdb;
504
 
505
- $instructor_id = $this->get_user_id($instructor_id);
506
  $course_post_type = tutor()->course_post_type;
507
 
508
- if ($post_status === 'any'){
509
  $where_post_status = "";
510
- }else{
511
- $post_status = (array) $post_status;
512
- $statuses = "'".implode("','", $post_status)."'";
513
  $where_post_status = "AND $wpdb->posts.post_status IN({$statuses}) ";
514
  }
515
 
516
- //AND $wpdb->posts.post_date < NOW()
517
- $querystr = "
518
- SELECT $wpdb->posts.*
519
- FROM $wpdb->posts
520
- INNER JOIN {$wpdb->usermeta} ON $wpdb->usermeta.user_id = {$instructor_id} AND $wpdb->usermeta.meta_key = '_tutor_instructor_course_id' AND $wpdb->usermeta.meta_value = $wpdb->posts.ID
521
-
522
- WHERE 1 = 1 {$where_post_status}
523
- AND $wpdb->posts.post_type = '{$course_post_type}'
524
-
525
- ORDER BY $wpdb->posts.post_date DESC";
 
 
 
 
 
526
 
527
- $pageposts = $wpdb->get_results($querystr, OBJECT);
528
  return $pageposts;
529
  }
530
 
@@ -535,7 +588,7 @@ class Utils {
535
  *
536
  * @since v.1.0.0
537
  */
538
- public function get_archive_page_course_count(){
539
  global $wp_query;
540
  return $wp_query->post_count;
541
  }
@@ -547,11 +600,21 @@ class Utils {
547
  *
548
  * @since v.1.0.0
549
  */
550
- public function get_course_count(){
551
  global $wpdb;
552
 
553
  $course_post_type = tutor()->course_post_type;
554
- $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(ID) from {$wpdb->posts} WHERE post_status = 'publish' AND post_type = %s; ", $course_post_type));
 
 
 
 
 
 
 
 
 
 
555
  return $count;
556
  }
557
 
@@ -562,11 +625,21 @@ class Utils {
562
  *
563
  * @since v.1.0.0
564
  */
565
- public function get_lesson_count(){
566
  global $wpdb;
567
 
568
  $lesson_post_type = tutor()->lesson_post_type;
569
- $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(ID) from {$wpdb->posts} WHERE post_status = 'publish' AND post_type = %s; ", $lesson_post_type));
 
 
 
 
 
 
 
 
 
 
570
  return $count;
571
  }
572
 
@@ -580,15 +653,15 @@ class Utils {
580
  *
581
  * @since v.1.0.0
582
  */
583
- public function get_lesson($course_id = 0, $limit = 10){
584
- $course_id = $this->get_post_id($course_id);
585
-
586
  $lesson_post_type = tutor()->lesson_post_type;
 
587
  $args = array(
588
- 'post_status' => 'publish',
589
- 'post_type' => $lesson_post_type,
590
- 'posts_per_page' => $limit,
591
- 'meta_query' => array(
592
  array(
593
  'key' => '_tutor_course_id_for_lesson',
594
  'value' => $course_id,
@@ -596,7 +669,8 @@ class Utils {
596
  ),
597
  ),
598
  );
599
- $query = new \WP_Query($args);
 
600
 
601
  return $query;
602
  }
@@ -610,19 +684,33 @@ class Utils {
610
  *
611
  * @since v.1.0.0
612
  */
613
- public function get_lesson_count_by_course($course_id = 0){
614
- $course_id = $this->get_post_id($course_id);
615
  global $wpdb;
616
 
 
617
  $lesson_post_type = tutor()->lesson_post_type;
618
 
619
- $course_id = $this->get_post_id($course_id);
620
- $topicIDS = $wpdb->get_col($wpdb->prepare("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'topics' AND post_parent = %d", $course_id));
 
 
 
 
 
 
 
621
 
622
  $lesson_count = 0;
623
- if ($this->count($topicIDS)){
624
- $inIDS = implode(",", $topicIDS);
625
- $lesson_count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(ID) FROM {$wpdb->posts} WHERE post_parent IN({$inIDS}) AND post_type = %s ", $lesson_post_type));
 
 
 
 
 
 
 
626
  }
627
 
628
  return (int) $lesson_count;
@@ -638,22 +726,38 @@ class Utils {
638
  *
639
  * @since v.1.0.0
640
  */
641
- public function get_completed_lesson_count_by_course($course_id = 0, $user_id = 0){
642
- $course_id = $this->get_post_id($course_id);
643
- $user_id = $this->get_user_id($user_id);
644
  global $wpdb;
645
 
646
- $completed_lesson_ids = $wpdb->get_col($wpdb->prepare("SELECT post_id from {$wpdb->postmeta} where meta_key = '_tutor_course_id_for_lesson' AND meta_value = %d ", $course_id));
 
 
 
 
 
 
 
 
 
 
 
647
 
648
  $count = 0;
649
- if (is_array($completed_lesson_ids) && count($completed_lesson_ids)){
650
  $completed_lesson_meta_ids = array();
651
- foreach ($completed_lesson_ids as $lesson_id){
652
- $completed_lesson_meta_ids[] = '_tutor_completed_lesson_id_'.$lesson_id;
653
  }
654
- $in_ids = implode("','", $completed_lesson_meta_ids);
655
 
656
- $count = (int) $wpdb->get_var($wpdb->prepare("SELECT count(umeta_id) from {$wpdb->usermeta} WHERE user_id = %d AND meta_key in('{$in_ids}') ", $user_id));
 
 
 
 
 
 
 
657
  }
658
 
659
  return $count;
@@ -668,36 +772,33 @@ class Utils {
668
  * @since v.1.0.0
669
  * @updated v.1.6.1
670
  */
671
- public function get_course_completed_percent($course_id = 0, $user_id = 0){
672
- $course_id = $this->get_post_id($course_id);
673
- $user_id = $this->get_user_id($user_id);
674
-
675
  $completed_lesson = $this->get_completed_lesson_count_by_course($course_id, $user_id);
676
- $course_contents = tutils()->get_course_contents_by_id($course_id);
677
-
678
- $totalContents = $this->count($course_contents);
679
- $totalContents = $totalContents ? $totalContents : 0;
680
-
681
- $completedCount = $completed_lesson;
682
-
683
- if (tutils()->count($course_contents)){
684
- foreach ($course_contents as $content){
685
- if ($content->post_type === 'tutor_quiz'){
686
- $attempt = $this->get_quiz_attempt($content->ID);
687
- if ($attempt){
688
  $completedCount++;
689
  }
690
- }elseif ($content->post_type === 'tutor_assignments'){
691
- $isSubmitted = $this->is_assignment_submitted($content->ID);
692
- if ($isSubmitted){
693
  $completedCount++;
694
  }
695
  }
696
  }
697
  }
698
 
699
- if ($totalContents > 0 && $completedCount > 0){
700
- return number_format(($completedCount * 100) / $totalContents);
701
  }
702
 
703
  return 0;
@@ -712,18 +813,19 @@ class Utils {
712
  *
713
  * @since v.1.0.0
714
  */
715
- public function get_topics($course_id = 0){
716
- $course_id = $this->get_post_id($course_id);
717
 
718
  $args = array(
719
- 'post_type' => 'topics',
720
- 'post_parent' => $course_id,
721
- 'orderby' => 'menu_order',
722
- 'order' => 'ASC',
723
- 'posts_per_page' => -1,
724
  );
725
 
726
- $query = new \WP_Query($args);
 
727
  return $query;
728
  }
729
 
@@ -736,10 +838,18 @@ class Utils {
736
  *
737
  * @since v.1.0.0
738
  */
739
- public function get_next_topic_order_id($course_ID){
740
  global $wpdb;
741
 
742
- $last_order = (int) $wpdb->get_var($wpdb->prepare("SELECT MAX(menu_order) FROM {$wpdb->posts} WHERE post_parent = %d AND post_type = 'topics';", $course_ID));
 
 
 
 
 
 
 
 
743
 
744
  return $last_order + 1;
745
  }
@@ -753,10 +863,17 @@ class Utils {
753
  *
754
  * @since v.1.0.0
755
  */
756
- public function get_next_course_content_order_id($topic_ID){
757
  global $wpdb;
758
 
759
- $last_order = (int) $wpdb->get_var($wpdb->prepare("SELECT MAX(menu_order) FROM {$wpdb->posts} WHERE post_parent = %d;", $topic_ID));
 
 
 
 
 
 
 
760
  return $last_order + 1;
761
  }
762
 
@@ -770,19 +887,19 @@ class Utils {
770
  *
771
  * @since v.1.0.0
772
  */
773
- public function get_lessons_by_topic($topics_id = 0, $limit = 10){
774
- $topics_id = $this->get_post_id($topics_id);
775
-
776
  $lesson_post_type = tutor()->lesson_post_type;
 
777
  $args = array(
778
- 'post_type' => $lesson_post_type,
779
- 'post_parent' => $topics_id,
780
- 'posts_per_page' => $limit,
781
- 'orderby' => 'menu_order',
782
- 'order' => 'ASC',
783
  );
784
 
785
- $query = new \WP_Query($args);
786
 
787
  return $query;
788
  }
@@ -797,19 +914,20 @@ class Utils {
797
  *
798
  * @since v.1.0.0
799
  */
800
- public function get_course_contents_by_topic($topics_id = 0, $limit = 10){
801
- $topics_id = $this->get_post_id($topics_id);
802
-
803
  $lesson_post_type = tutor()->lesson_post_type;
 
 
804
  $args = array(
805
- 'post_type' => apply_filters('tutor_course_contents_post_types', array($lesson_post_type, 'tutor_quiz')),
806
- 'post_parent' => $topics_id,
807
- 'posts_per_page' => $limit,
808
- 'orderby' => 'menu_order',
809
- 'order' => 'ASC',
810
  );
811
 
812
- $query = new \WP_Query($args);
813
 
814
  return $query;
815
  }
@@ -821,12 +939,12 @@ class Utils {
821
  *
822
  * @since v.1.0.0
823
  */
824
- public function checking_nonce($request_method = 'post') {
825
 
826
- $data = $request_method === 'post' ? $_POST : $_GET;
827
- $matched = !empty($data[tutor()->nonce]) && wp_verify_nonce($data[tutor()->nonce], tutor()->nonce_action);
828
 
829
- !$matched ? exit(__('Nonce not matched', 'tutor')) : 0;
830
  }
831
 
832
  /**
@@ -836,17 +954,18 @@ class Utils {
836
  *
837
  * @since v.1.0.0
838
  */
839
- public function is_course_purchasable($course_id = 0){
840
- $course_id = $this->get_post_id($course_id);
 
841
 
842
- $price_type = $this->price_type($course_id);
843
- if ($price_type === 'free'){
844
- $is_paid = apply_filters('is_course_paid', false, $course_id);
845
- if ( ! $is_paid){
846
  return false;
847
  }
848
  }
849
- return apply_filters('is_course_purchasable', false, $course_id);
 
850
  }
851
 
852
  /**
@@ -858,24 +977,22 @@ class Utils {
858
  *
859
  * @since v.1.0.0
860
  */
 
 
 
861
 
862
- public function get_course_price($course_id = 0){
863
- $course_id = $this->get_post_id($course_id);
864
-
865
- $price = null;
866
-
867
- if ($this->is_course_purchasable()) {
868
  $monetize_by = $this->get_option('monetize_by');
869
 
870
- if ($this->has_wc() && $monetize_by === 'wc'){
871
- $product_id = tutor_utils()->get_course_product_id($course_id);
872
  $product = wc_get_product( $product_id );
873
 
874
  if ( $product ) {
875
  $price = $product->get_price();
876
  }
877
- }else{
878
- $price = apply_filters('get_tutor_course_price', null, $course_id);
879
  }
880
  }
881
 
@@ -893,8 +1010,8 @@ class Utils {
893
  *
894
  * @since v.1.3.1
895
  */
896
- public function get_raw_course_price($course_id = 0){
897
- $course_id = $this->get_post_id($course_id);
898
 
899
  $prices = array(
900
  'regular_price' => 0,
@@ -903,9 +1020,8 @@ class Utils {
903
 
904
  $monetize_by = $this->get_option('monetize_by');
905
 
906
- //if ($this->is_course_purchasable($course_id)){
907
- $product_id = $this->get_course_product_id($course_id);
908
- if ($product_id) {
909
  if ( $monetize_by === 'wc' && $this->has_wc() ) {
910
  $prices['regular_price'] = get_post_meta( $product_id, '_regular_price', true );
911
  $prices['sale_price'] = get_post_meta( $product_id, '_sale_price', true );
@@ -914,7 +1030,6 @@ class Utils {
914
  $prices['sale_price'] = get_post_meta( $product_id, 'edd_price', true );
915
  }
916
  }
917
- //}
918
 
919
  return (object) $prices;
920
  }
@@ -928,11 +1043,9 @@ class Utils {
928
  *
929
  * @since v.1.3.5
930
  */
931
-
932
- public function price_type($course_id = 0){
933
- $course_id = $this->get_post_id($course_id);
934
-
935
- $price_type = get_post_meta($course_id, '_tutor_course_price_type', true);
936
  return $price_type;
937
  }
938
 
@@ -945,22 +1058,38 @@ class Utils {
945
  *
946
  * @since v.1.0.0
947
  */
 
 
 
948
 
949
- public function is_enrolled($course_id = 0, $user_id = 0){
950
- $course_id = $this->get_post_id($course_id);
951
- $user_id = $this->get_user_id($user_id);
952
-
953
- if (is_user_logged_in()) {
954
  global $wpdb;
955
 
956
- do_action('tutor_is_enrolled_before', $course_id, $user_id);
957
-
958
- $getEnrolledInfo = $wpdb->get_row( "select ID, post_author, post_date, post_date_gmt, post_title from {$wpdb->posts} WHERE post_type = 'tutor_enrolled' AND post_parent = {$course_id} AND post_author = {$user_id} AND post_status = 'completed'; " );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
959
 
960
  if ( $getEnrolledInfo ) {
961
- return apply_filters('tutor_is_enrolled', $getEnrolledInfo, $course_id, $user_id);
962
  }
963
  }
 
964
  return false;
965
  }
966
 
@@ -974,19 +1103,34 @@ class Utils {
974
  *
975
  * @since v.1.0.0
976
  */
977
- public function has_any_enrolled($course_id = 0, $user_id = 0){
978
- $course_id = $this->get_post_id($course_id);
979
- $user_id = $this->get_user_id($user_id);
980
 
981
- if (is_user_logged_in()) {
982
  global $wpdb;
983
 
984
- $getEnrolledInfo = $wpdb->get_row( "select ID, post_author, post_date,post_date_gmt,post_title from {$wpdb->posts} WHERE post_type = 'tutor_enrolled' AND post_parent = {$course_id} AND post_author = {$user_id}; " );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
985
 
986
  if ( $getEnrolledInfo ) {
987
  return $getEnrolledInfo;
988
  }
989
  }
 
990
  return false;
991
  }
992
 
@@ -999,18 +1143,25 @@ class Utils {
999
  *
1000
  * @since v.1.6.1
1001
  */
1002
-
1003
- public function get_course_by_enrol_id($enrol_id = 0){
1004
- if ( ! $enrol_id){
1005
  return false;
1006
  }
1007
 
1008
  global $wpdb;
1009
 
1010
- $course_id = (int) $wpdb->get_var($wpdb->prepare("select post_parent from {$wpdb->posts} WHERE post_type = 'tutor_enrolled' AND ID = %d", $enrol_id));
 
 
 
 
 
 
 
 
1011
 
1012
  if ( $course_id ) {
1013
- return get_post($course_id);
1014
  }
1015
 
1016
  return null;
@@ -1026,13 +1177,12 @@ class Utils {
1026
  *
1027
  * @since v.1.0.0
1028
  */
 
 
 
 
1029
 
1030
- public function is_course_enrolled_by_lesson($lesson_id = 0, $user_id = 0){
1031
- $lesson_id = $this->get_post_id($lesson_id);
1032
- $user_id = $this->get_user_id($user_id);
1033
- $course_id = $this->get_course_id_by_lesson($lesson_id);
1034
-
1035
- return $this->is_enrolled($course_id);
1036
  }
1037
 
1038
  /**
@@ -1047,15 +1197,14 @@ class Utils {
1047
  * @updated v.1.4.8
1048
  * Added Legacy Supports
1049
  */
 
 
 
1050
 
1051
- public function get_course_id_by_lesson($lesson_id = 0){
1052
- $lesson_id = $this->get_post_id($lesson_id);
1053
- $course_id = get_post_meta($lesson_id, '_tutor_course_id_for_lesson', true);
1054
-
1055
- if ( ! $course_id) {
1056
- $course_id = $this->get_course_id_by_content($lesson_id);
1057
  }
1058
- if ( ! $course_id){
1059
  $course_id = 0;
1060
  }
1061
 
@@ -1071,33 +1220,43 @@ class Utils {
1071
  *
1072
  * @since v.1.0.0
1073
  */
1074
- public function get_course_first_lesson($course_id = 0){
1075
- $course_id = $this->get_post_id($course_id);
1076
  global $wpdb;
1077
 
1078
- $user_id = get_current_user_id();
1079
-
1080
- $lessons = $wpdb->get_results($wpdb->prepare("SELECT items.ID FROM {$wpdb->posts} topic
1081
- INNER JOIN {$wpdb->posts} items ON topic.ID = items.post_parent
1082
- WHERE topic.post_parent = %d AND items.post_status = 'publish' order by topic.menu_order ASC, items.menu_order ASC;", $course_id));
 
 
 
 
 
 
 
 
 
 
 
1083
 
1084
  $first_lesson = false;
1085
 
1086
- if (tutils()->count($lessons)){
1087
- if (! empty($lessons[0])){
1088
  $first_lesson = $lessons[0];
1089
  }
1090
 
1091
- foreach ($lessons as $lesson){
1092
- $is_complete = get_user_meta($user_id, "_tutor_completed_lesson_id_{$lesson->ID}", true);
1093
- if ( ! $is_complete){
1094
  $first_lesson = $lesson;
1095
  break;
1096
  }
1097
  }
1098
 
1099
- if (! empty($first_lesson->ID)){
1100
- return get_permalink($first_lesson->ID);
1101
  }
1102
  }
1103
 
@@ -1110,12 +1269,13 @@ class Utils {
1110
  *
1111
  * @since v.1.0.0
1112
  */
1113
- public function course_sub_pages(){
1114
  $nav_items = array(
1115
- 'questions' => __('Q&A', 'tutor'),
1116
  'announcements' => __('Announcements', 'tutor'),
1117
  );
1118
- return apply_filters('tutor_course/single/enrolled/nav_items', $nav_items);
 
1119
  }
1120
 
1121
  /**
@@ -1125,11 +1285,11 @@ class Utils {
1125
  *
1126
  * @since v.1.0.0
1127
  */
1128
- public function get_video($post_id = 0){
1129
- $post_id = $this->get_post_id($post_id);
1130
- $attachments = get_post_meta($post_id, '_video', true);
1131
- if ($attachments) {
1132
- $attachments = maybe_unserialize($attachments);
1133
  }
1134
  return $attachments;
1135
  }
@@ -1142,11 +1302,11 @@ class Utils {
1142
  *
1143
  * Update the video Info
1144
  */
1145
- public function update_video($post_id = 0, $video_data = array()){
1146
- $post_id = $this->get_post_id($post_id);
1147
 
1148
- if (is_array($video_data) && count($video_data)){
1149
- update_post_meta($post_id, '_video', $video_data);
1150
  }
1151
  }
1152
 
@@ -1157,12 +1317,12 @@ class Utils {
1157
  *
1158
  * @since v.1.0.0
1159
  */
1160
- public function get_attachments($post_id = 0){
1161
- $post_id = $this->get_post_id($post_id);
 
1162
  $attachments_arr = array();
1163
- $attachments = maybe_unserialize(get_post_meta($post_id, '_tutor_attachments', true));
1164
 
1165
- $font_icons = apply_filters('tutor_file_types_icon', array(
1166
  'archive',
1167
  'audio',
1168
  'code',
@@ -1175,17 +1335,17 @@ class Utils {
1175
  'image',
1176
  ));
1177
 
1178
- if ( is_array($attachments) && count($attachments)) {
1179
  foreach ( $attachments as $attachment ) {
1180
  $url = wp_get_attachment_url( $attachment );
1181
  $file_type = wp_check_filetype( $url );
1182
  $ext = $file_type['ext'];
1183
- $title = get_the_title($attachment);
1184
 
1185
- $file_path = get_attached_file( $attachment );
1186
  $size_bytes = file_exists($file_path) ? filesize( $file_path ) : 0;
1187
  $size = size_format( $size_bytes, 2 );
1188
- $type = wp_ext2type( $ext );
1189
 
1190
  $icon = 'default';
1191
  if ( $type && in_array( $type, $font_icons ) ) {
@@ -1221,11 +1381,11 @@ class Utils {
1221
  *
1222
  * @since v.1.0.0
1223
  */
1224
- public function playtime_string($seconds) {
1225
- $sign = (($seconds < 0) ? '-' : '');
1226
- $seconds = round(abs($seconds));
1227
  $H = (int) floor( $seconds / 3600);
1228
- $M = (int) floor(($seconds - (3600 * $H) ) / 60);
1229
  $S = (int) round( $seconds - (3600 * $H) - (60 * $M) );
1230
  return $sign.($H ? $H.':' : '').($H ? str_pad($M, 2, '0', STR_PAD_LEFT) : intval($M)).':'.str_pad($S, 2, 0, STR_PAD_LEFT);
1231
  }
@@ -1239,28 +1399,28 @@ class Utils {
1239
  *
1240
  * @since v.1.0.0
1241
  */
1242
- public function playtime_array($seconds){
1243
  $run_time_format = array(
1244
- 'hours' => '00',
1245
  'minutes' => '00',
1246
  'seconds' => '00',
1247
  );
1248
 
1249
- if ($seconds <= 0 ){
1250
  return $run_time_format;
1251
  }
1252
 
1253
- $playTimeString = $this->playtime_string($seconds);
1254
- $timeInArray = explode(':', $playTimeString);
1255
 
1256
  $run_time_size = count($timeInArray);
1257
- if ($run_time_size === 3){
1258
- $run_time_format['hours'] = $timeInArray[0];
1259
- $run_time_format['minutes'] = $timeInArray[1];
1260
- $run_time_format['seconds'] = $timeInArray[2];
1261
- }elseif($run_time_size === 2){
1262
- $run_time_format['minutes'] = $timeInArray[0];
1263
- $run_time_format['seconds'] = $timeInArray[1];
1264
  }
1265
 
1266
  return $run_time_format;
@@ -1275,12 +1435,12 @@ class Utils {
1275
  *
1276
  * @since v.1.0.0
1277
  */
1278
- public function seconds_to_time_context($seconds) {
1279
- $sign = (($seconds < 0) ? '-' : '');
1280
- $seconds = round(abs($seconds));
1281
- $H = (int) floor( $seconds / 3600);
1282
- $M = (int) floor(($seconds - (3600 * $H) ) / 60);
1283
- $S = (int) round( $seconds - (3600 * $H) - (60 * $M) );
1284
 
1285
  return $sign.($H ? $H.'h ' : '').($H ? str_pad($M, 2, '0', STR_PAD_LEFT) : intval($M)).'m '.str_pad($S, 2, 0, STR_PAD_LEFT).'s';
1286
  }
@@ -1292,12 +1452,11 @@ class Utils {
1292
  *
1293
  * @since v.1.0.0
1294
  */
 
 
 
1295
 
1296
- public function get_video_info($lesson_id = 0){
1297
- $lesson_id = $this->get_post_id($lesson_id);
1298
- $video = $this->get_video($lesson_id);
1299
-
1300
- if ( ! $video){
1301
  return false;
1302
  }
1303
 
@@ -1305,15 +1464,15 @@ class Utils {
1305
  'playtime' => '00:00',
1306
  );
1307
 
1308
- $types = apply_filters('tutor_video_types', array("mp4"=>"video/mp4", "webm"=>"video/webm", "ogg"=>"video/ogg"));
1309
 
1310
  $videoSource = $this->avalue_dot('source', $video);
1311
 
1312
- if ($videoSource === 'html5'){
1313
- $sourceVideoID = $this->avalue_dot('source_video_id', $video);
1314
- $video_info = get_post_meta($sourceVideoID, '_wp_attachment_metadata', true);
1315
 
1316
- if ( $video_info && in_array($this->array_get('mime_type', $video_info), $types) ) {
1317
  $path = get_attached_file( $sourceVideoID );
1318
  $info['playtime'] = $video_info['length_formatted'];
1319
  $info['path'] = $path;
@@ -1323,26 +1482,25 @@ class Utils {
1323
  }
1324
  }
1325
 
1326
- if ($videoSource !== 'html5'){
1327
- $video = maybe_unserialize(get_post_meta($lesson_id, '_video', true));
1328
-
1329
- $runtimeHours = tutor_utils()->avalue_dot('runtime.hours', $video);
1330
- $runtimeMinutes = tutor_utils()->avalue_dot('runtime.minutes', $video);
1331
- $runtimeSeconds = tutor_utils()->avalue_dot('runtime.seconds', $video);
1332
 
1333
- $runtimeHours = $runtimeHours ? $runtimeHours : '00';
1334
  $runtimeMinutes = $runtimeMinutes ? $runtimeMinutes : '00';
1335
  $runtimeSeconds = $runtimeSeconds ? $runtimeSeconds : '00';
1336
 
1337
  $info['playtime'] = "$runtimeHours:$runtimeMinutes:$runtimeSeconds";
1338
  }
1339
 
1340
- $info = array_merge($info, $video);
1341
 
1342
  return (object) $info;
1343
  }
1344
 
1345
- public function get_optimized_duration($duration){
1346
  /* if(is_string($duration)){
1347
  strpos($duration, '00:')===0 ? $duration=substr($duration, 3) : 0; // Remove Empty hour
1348
  strpos($duration, '00:')===0 ? $duration=substr($duration, 3) : 0; // Remove empty minute
@@ -1360,14 +1518,16 @@ class Utils {
1360
  *
1361
  * @since v.1.0.0
1362
  */
1363
- public function is_html5_video($post_id = 0){
1364
- $post_id = $this->get_post_id($post_id);
 
1365
 
1366
- $video = $this->get_video($post_id);
1367
- if ( ! $video){
1368
  return false;
1369
  }
1370
- $videoSource = $this->avalue_dot('source', $video);
 
 
1371
  return $videoSource === 'html5';
1372
  }
1373
 
@@ -1383,23 +1543,22 @@ class Utils {
1383
  *
1384
  * @since v.1.0.0
1385
  */
1386
-
1387
- public function get_lesson_type_icon($lesson_id = 0, $html = false, $echo = false){
1388
- $post_id = $this->get_post_id($lesson_id);
1389
- $video = tutor_utils()->get_video_info($post_id);
1390
 
1391
  $play_time = false;
1392
- if ($video){
1393
  $play_time = $video->playtime;
1394
  }
1395
 
1396
  $tutor_lesson_type_icon = $play_time ? 'youtube' : 'document';
1397
 
1398
- if ($html) {
1399
  $tutor_lesson_type_icon = "<i class='tutor-icon-$tutor_lesson_type_icon'></i> ";
1400
  }
1401
 
1402
- if ($echo) {
1403
  echo $tutor_lesson_type_icon;
1404
  }
1405
 
@@ -1414,14 +1573,12 @@ class Utils {
1414
  *
1415
  * @since v.1.0.0
1416
  */
 
 
 
 
1417
 
1418
- public function is_completed_lesson($lesson_id = 0, $user_id = 0){
1419
- $lesson_id = $this->get_post_id($lesson_id);
1420
- $user_id = $this->get_user_id($user_id);
1421
-
1422
- $is_completed = get_user_meta($user_id, '_tutor_completed_lesson_id_'.$lesson_id, true);
1423
-
1424
- if ($is_completed){
1425
  return $is_completed;
1426
  }
1427
 
@@ -1440,32 +1597,38 @@ class Utils {
1440
  *
1441
  * @updated v.1.4.9
1442
  */
1443
-
1444
- public function is_completed_course($course_id = 0, $user_id = 0){
1445
- if ( ! is_user_logged_in()){
1446
- return apply_filters('is_completed_course', false, $course_id, $user_id);
1447
  }
1448
 
1449
  global $wpdb;
1450
  $course_id = $this->get_post_id($course_id);
1451
- $user_id = $this->get_user_id($user_id);
1452
 
1453
- $is_completed = $wpdb->get_row($wpdb->prepare("SELECT comment_ID,
1454
- comment_post_ID as course_id,
1455
- comment_author as completed_user_id,
1456
- comment_date as completion_date,
1457
- comment_content as completed_hash
1458
- from {$wpdb->comments}
1459
- WHERE comment_agent = 'TutorLMSPlugin'
1460
- AND comment_type = 'course_completed'
1461
- AND comment_post_ID = %d
1462
- AND user_id = %d ;", $course_id, $user_id));
 
 
 
 
 
 
 
1463
 
1464
- if ($is_completed){
1465
- return apply_filters('is_completed_course', $is_completed, $course_id, $user_id);
1466
  }
1467
 
1468
- return apply_filters('is_completed_course', false, $course_id, $user_id);
1469
  }
1470
 
1471
  /**
@@ -1477,16 +1640,16 @@ class Utils {
1477
  *
1478
  * @since v.1.0.0
1479
  */
1480
- public function sanitize_array($input = array()){
1481
  $array = array();
1482
 
1483
- if (is_array($input) && count($input)){
1484
- foreach ($input as $key => $value){
1485
- if (is_array($value)){
1486
- $array[$key] = $this->sanitize_array($value);
1487
- }else{
1488
- $key = sanitize_text_field($key);
1489
- $value = sanitize_text_field($value);
1490
  $array[$key] = $value;
1491
  }
1492
  }
@@ -1504,19 +1667,18 @@ class Utils {
1504
  *
1505
  * @since v.1.0.0
1506
  */
1507
-
1508
- public function has_video_in_single($post_id = 0){
1509
- if (is_single()) {
1510
- $post_id = $this->get_post_id($post_id);
1511
 
1512
  $video = $this->get_video( $post_id );
1513
- if ( $video && $this->array_get('source', $video) !== '-1') {
1514
 
1515
- $not_empty =!empty($video['source_video_id']) ||
1516
- !empty($video['source_external_url']) ||
1517
- !empty($video['source_youtube']) ||
1518
- !empty($video['source_vimeo']) ||
1519
- !empty($video['source_embedded']);
1520
 
1521
  return $not_empty ? $video : false;
1522
  }
@@ -1539,21 +1701,25 @@ class Utils {
1539
  *
1540
  * @since v.1.0.0
1541
  */
1542
- public function get_students($start = 0, $limit = 10, $search_term = ''){
1543
- $meta_key = '_is_tutor_student';
1544
-
1545
  global $wpdb;
1546
 
1547
- if ($search_term){
1548
- $search_term = " AND ( {$wpdb->users}.display_name LIKE '%{$search_term}%' OR {$wpdb->users}.user_email LIKE '%{$search_term}%' ) ";
1549
- }
1550
-
1551
- $students = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS {$wpdb->users}.* FROM {$wpdb->users}
1552
- INNER JOIN {$wpdb->usermeta}
1553
- ON ( {$wpdb->users}.ID = {$wpdb->usermeta}.user_id )
1554
- WHERE 1=1 AND ( {$wpdb->usermeta}.meta_key = '{$meta_key}' ) {$search_term}
1555
- ORDER BY {$wpdb->usermeta}.meta_value DESC
1556
- LIMIT {$start}, {$limit} ");
 
 
 
 
 
 
1557
 
1558
  return $students;
1559
  }
@@ -1568,16 +1734,23 @@ class Utils {
1568
  *
1569
  * @since v.1.0.0
1570
  */
1571
- public function get_total_students($search_term = ''){
1572
- $meta_key = '_is_tutor_student';
1573
-
1574
  global $wpdb;
1575
 
1576
- if ($search_term){
1577
- $search_term = " AND ( {$wpdb->users}.display_name LIKE '%{$search_term}%' OR {$wpdb->users}.user_email LIKE '%{$search_term}%' ) ";
1578
- }
1579
-
1580
- $count = $wpdb->get_var("SELECT COUNT({$wpdb->users}.ID) FROM {$wpdb->users} INNER JOIN {$wpdb->usermeta} ON ( {$wpdb->users}.ID = {$wpdb->usermeta}.user_id ) WHERE 1=1 AND ( {$wpdb->usermeta}.meta_key = '{$meta_key}' ) $search_term ");
 
 
 
 
 
 
 
 
 
1581
 
1582
  return (int) $count;
1583
  }
@@ -1591,16 +1764,22 @@ class Utils {
1591
  *
1592
  * @since v.1.0.0
1593
  */
1594
- public function get_completed_courses_ids_by_user($user_id = 0){
1595
  global $wpdb;
1596
 
1597
- $user_id = $this->get_user_id($user_id);
1598
 
1599
- $course_ids = (array) $wpdb->get_col($wpdb->prepare("SELECT comment_post_ID as course_id
1600
- from {$wpdb->comments}
1601
- WHERE comment_agent = 'TutorLMSPlugin'
1602
- AND comment_type = 'course_completed'
1603
- AND user_id = %d ", $user_id));
 
 
 
 
 
 
1604
 
1605
  return $course_ids;
1606
  }
@@ -1614,20 +1793,20 @@ class Utils {
1614
  *
1615
  * @since v.1.0.0
1616
  */
1617
- public function get_courses_by_user($user_id = 0){
1618
- $user_id = $this->get_user_id($user_id);
1619
- $course_ids = $this->get_completed_courses_ids_by_user($user_id);
1620
 
1621
- if (count($course_ids)){
1622
  $course_post_type = tutor()->course_post_type;
1623
  $course_args = array(
1624
- 'post_type' => $course_post_type,
1625
- 'post_status' => 'publish',
1626
- 'post__in' => $course_ids,
1627
  'posts_per_page' => -1
1628
  );
1629
 
1630
- return new \WP_Query($course_args);
1631
  }
1632
 
1633
  return false;
@@ -1642,24 +1821,22 @@ class Utils {
1642
  *
1643
  * @since v.1.0.0
1644
  */
 
 
 
 
 
1645
 
1646
- public function get_active_courses_by_user($user_id = 0){
1647
- $user_id = $this->get_user_id($user_id);
1648
-
1649
- $course_ids = $this->get_completed_courses_ids_by_user($user_id);
1650
- $enrolled_course_ids = $this->get_enrolled_courses_ids_by_user($user_id);
1651
- $active_courses = array_diff($enrolled_course_ids, $course_ids);
1652
-
1653
- if (count($active_courses)){
1654
  $course_post_type = tutor()->course_post_type;
1655
  $course_args = array(
1656
- 'post_type' => $course_post_type,
1657
- 'post_status' => 'publish',
1658
- 'post__in' => $active_courses,
1659
  'posts_per_page' => -1,
1660
  );
1661
 
1662
- return new \WP_Query($course_args);
1663
  }
1664
 
1665
  return false;
@@ -1674,11 +1851,20 @@ class Utils {
1674
  *
1675
  * @since v.1.0.0
1676
  */
1677
-
1678
- public function get_enrolled_courses_ids_by_user($user_id = 0){
1679
  global $wpdb;
1680
- $user_id = $this->get_user_id($user_id);
1681
- $course_ids = $wpdb->get_col($wpdb->prepare("SELECT post_parent from {$wpdb->posts} WHERE post_type = 'tutor_enrolled' AND post_author = %d AND post_status = 'completed'; ", $user_id));
 
 
 
 
 
 
 
 
 
 
1682
 
1683
  return $course_ids;
1684
  }
@@ -1690,14 +1876,22 @@ class Utils {
1690
  *
1691
  * Get the total enrolled users at course
1692
  */
1693
- public function count_enrolled_users_by_course($course_id = 0){
1694
  global $wpdb;
1695
- $course_id = $this->get_post_id($course_id);
 
1696
 
1697
  $course_ids = $wpdb->get_var($wpdb->prepare(
1698
  "SELECT COUNT(ID)
1699
- from {$wpdb->posts}
1700
- WHERE post_type = 'tutor_enrolled' AND post_parent = %d AND post_status = 'completed'; ", $course_id));
 
 
 
 
 
 
 
1701
 
1702
  return (int) $course_ids;
1703
  }
@@ -1709,26 +1903,26 @@ class Utils {
1709
  *
1710
  * Get the enrolled courses by user
1711
  */
1712
- public function get_enrolled_courses_by_user($user_id = 0, $post_status='publish'){
1713
  global $wpdb;
1714
 
1715
- $user_id = $this->get_user_id($user_id);
1716
- $course_ids = $this->get_enrolled_courses_ids_by_user($user_id);
1717
 
1718
- if (count($course_ids)){
1719
  $course_post_type = tutor()->course_post_type;
1720
  $course_args = array(
1721
- 'post_type' => $course_post_type,
1722
- 'post_status' => $post_status,
1723
- 'post__in' => $course_ids,
1724
  'posts_per_page' => -1
1725
  );
1726
- return new \WP_Query($course_args);
1727
  }
 
1728
  return false;
1729
  }
1730
 
1731
-
1732
  /**
1733
  * @param int $post_id
1734
  *
@@ -1736,14 +1930,14 @@ class Utils {
1736
  *
1737
  * Get the video streaming URL by post/lesson/course ID
1738
  */
1739
- public function get_video_stream_url($post_id = 0){
1740
- $post_id = $this->get_post_id($post_id);
1741
- $post = get_post($post_id);
1742
 
1743
- if ($post->post_type === tutor()->lesson_post_type ){
1744
- $video_url = trailingslashit(home_url()).'video-url/'.$post->post_name;
1745
- }else{
1746
- $video_info = tutor_utils()->get_video_info($post_id);
1747
  $video_url = $video_info->url;
1748
  }
1749
 
@@ -1760,12 +1954,12 @@ class Utils {
1760
  *
1761
  * @since v.1.0.0
1762
  */
1763
- public function get_lesson_reading_info_full($lesson_id = 0, $user_id = 0){
1764
- $lesson_id = $this->get_post_id($lesson_id);
1765
- $user_id = $this->get_user_id($user_id);
1766
 
1767
- $lesson_info = (array) maybe_unserialize(get_user_meta($user_id, '_lesson_reading_info', true));
1768
- return $this->avalue_dot($lesson_id, $lesson_info);
1769
  }
1770
 
1771
  /**
@@ -1777,10 +1971,10 @@ class Utils {
1777
  *
1778
  * @since v.1.0.0
1779
  */
1780
- public function get_post_id($post_id = 0){
1781
- if ( ! $post_id){
1782
  $post_id = get_the_ID();
1783
- if ( ! $post_id){
1784
  return false;
1785
  }
1786
  }
@@ -1797,10 +1991,10 @@ class Utils {
1797
  *
1798
  * @since v.1.0.0
1799
  */
1800
- public function get_user_id($user_id = 0){
1801
- if ( ! $user_id){
1802
  $user_id = get_current_user_id();
1803
- if ( ! $user_id){
1804
  return false;
1805
  }
1806
  }
@@ -1819,12 +2013,10 @@ class Utils {
1819
  *
1820
  * @since v.1.0.0
1821
  */
1822
-
1823
- public function get_lesson_reading_info($lesson_id = 0, $user_id = 0, $key = ''){
1824
- $lesson_id = $this->get_post_id($lesson_id);
1825
- $user_id = $this->get_user_id($user_id);
1826
-
1827
- $lesson_info = $this->get_lesson_reading_info_full($lesson_id, $user_id);
1828
 
1829
  return $this->avalue_dot($key, $lesson_info);
1830
  }
@@ -1840,14 +2032,14 @@ class Utils {
1840
  *
1841
  * @since v.1.0.0
1842
  */
1843
- public function update_lesson_reading_info($lesson_id = 0, $user_id = 0, $key = '', $value = ''){
1844
  $lesson_id = $this->get_post_id($lesson_id);
1845
- $user_id = $this->get_user_id($user_id);
1846
 
1847
- if ($key && $value){
1848
- $lesson_info = (array) maybe_unserialize(get_user_meta($user_id, '_lesson_reading_info', true));
1849
- $lesson_info[$lesson_id][$key] = $value;
1850
- update_user_meta($user_id, '_lesson_reading_info', $lesson_info);
1851
  }
1852
  }
1853
 
@@ -1860,13 +2052,14 @@ class Utils {
1860
  *
1861
  * @since v.1.0.0
1862
  */
1863
- public function get_youtube_video_id($url = ''){
1864
- if (!$url){
1865
  return false;
1866
  }
1867
- preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match);
1868
 
1869
- if (isset($match[1])) {
 
 
1870
  $youtube_id = $match[1];
1871
  return $youtube_id;
1872
  }
@@ -1883,9 +2076,9 @@ class Utils {
1883
  *
1884
  * @since v.1.0.0
1885
  */
1886
- public function get_vimeo_video_id($url = ''){
1887
- if (preg_match('%^https?:\/\/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|video\/|)(\d+)(?:$|\/|\?)(?:[?]?.*)$%im', $url, $match)) {
1888
- if (isset($match[3])){
1889
  return $match[3];
1890
  }
1891
  }
@@ -1899,13 +2092,13 @@ class Utils {
1899
  *
1900
  * @since v.1.0.0
1901
  */
1902
- public function mark_lesson_complete($post_id = 0, $user_id = 0){
1903
- $post_id = $this->get_post_id($post_id);
1904
- $user_id = $this->get_user_id($user_id);
1905
 
1906
- do_action('tutor_mark_lesson_complete_before', $post_id, $user_id);
1907
- update_user_meta($user_id, '_tutor_completed_lesson_id_'.$post_id, tutor_time());
1908
- do_action('tutor_mark_lesson_complete_after', $post_id, $user_id);
1909
  }
1910
 
1911
  /**
@@ -1926,26 +2119,25 @@ class Utils {
1926
  *
1927
  * @return bool
1928
  */
1929
-
1930
- public function do_enroll($course_id = 0, $order_id = 0, $user_id = 0){
1931
- if ( ! $course_id){
1932
  return false;
1933
  }
1934
 
1935
- do_action('tutor_before_enroll', $course_id);
1936
- $user_id = $this->get_user_id($user_id);
1937
- $title = __('Course Enrolled', 'tutor')." &ndash; ".date(get_option('date_format')) .' @ '.date(get_option('time_format') ) ;
1938
 
1939
  $enrolment_status = 'completed';
1940
 
1941
- if ($this->is_course_purchasable($course_id)) {
1942
  /**
1943
  * We need to verify this enrollment, we will change the status later after payment confirmation
1944
  */
1945
  $enrolment_status = 'pending';
1946
  }
1947
 
1948
- $enroll_data = apply_filters('tutor_enroll_data',
1949
  array(
1950
  'post_type' => 'tutor_enrolled',
1951
  'post_title' => $title,
@@ -1957,22 +2149,22 @@ class Utils {
1957
 
1958
  // Insert the post into the database
1959
  $isEnrolled = wp_insert_post( $enroll_data );
1960
- if ($isEnrolled) {
1961
 
1962
  // Run this hook for both of pending and completed enrollment
1963
- do_action('tutor_after_enroll', $course_id, $isEnrolled);
1964
 
1965
  // Run this hook for completed enrollment regardless of payment provider and free/paid mode
1966
- if($enroll_data['post_status'] == 'completed'){
1967
  do_action('tutor_after_enrolled', $course_id, $user_id, $isEnrolled);
1968
  }
1969
 
1970
  //Mark Current User as Students with user meta data
1971
  update_user_meta( $user_id, '_is_tutor_student', tutor_time() );
1972
 
1973
- if ($order_id) {
1974
  //Mark order for course and user
1975
- $product_id = $this->get_course_product_id($course_id);
1976
  update_post_meta( $isEnrolled, '_tutor_enrolled_by_order_id', $order_id );
1977
  update_post_meta( $isEnrolled, '_tutor_enrolled_by_product_id', $product_id );
1978
  update_post_meta( $order_id, '_is_tutor_order_for_course', tutor_time() );
@@ -1992,52 +2184,49 @@ class Utils {
1992
  *
1993
  * @since v.1.6.1
1994
  */
1995
-
1996
- public function course_enrol_status_change($enrol_id = false, $new_status = ''){
1997
- if ( ! $enrol_id){
1998
  return;
1999
  }
2000
 
2001
  global $wpdb;
2002
 
2003
- do_action('tutor/course/enrol_status_change/before',$enrol_id, $new_status );
2004
  $wpdb->update( $wpdb->posts, array( 'post_status' => $new_status ), array( 'ID' => $enrol_id ) );
2005
- do_action('tutor/course/enrol_status_change/after',$enrol_id, $new_status );
2006
  }
2007
 
2008
-
2009
  /**
2010
  * @param int $course_id
2011
  * @param int $user_id
2012
  * @param string $cancel_status
2013
  */
2014
- public function cancel_course_enrol($course_id = 0, $user_id = 0, $cancel_status = 'canceled'){
2015
- $course_id = $this->get_post_id($course_id);
2016
- $user_id = $this->get_user_id($user_id);
2017
-
2018
- $enrolled = $this->is_enrolled($course_id, $user_id);
2019
 
2020
- if ($enrolled){
2021
  global $wpdb;
2022
 
2023
- if ($cancel_status === 'delete'){
2024
- $wpdb->delete($wpdb->posts, array('post_type' => 'tutor_enrolled', 'post_author' => $user_id, 'post_parent' => $course_id));
2025
 
2026
  //Delete Related Meta Data
2027
- delete_post_meta($enrolled->ID, '_tutor_enrolled_by_product_id');
2028
- $order_id = get_post_meta($enrolled->ID, '_tutor_enrolled_by_order_id', true);
2029
- if ($order_id){
2030
- delete_post_meta($enrolled->ID, '_tutor_enrolled_by_order_id');
2031
- delete_post_meta($order_id, '_is_tutor_order_for_course');
2032
- delete_post_meta($order_id, '_tutor_order_for_course_id_'.$course_id);
2033
 
2034
- do_action('tutor_enrollment/after/delete', $enrolled->ID);
2035
  }
2036
- }else{
2037
- $wpdb->update($wpdb->posts, array('post_status' => $cancel_status), array('post_type' => 'tutor_enrolled', 'post_author' => $user_id, 'post_parent' => $course_id) );
2038
 
2039
- if ($cancel_status === 'cancel'){
2040
- do_action('tutor_enrollment/after/cancel', $enrolled->ID);
2041
  }
2042
  }
2043
  }
@@ -2050,19 +2239,19 @@ class Utils {
2050
  *
2051
  * @since v.1.0.0
2052
  */
2053
- public function complete_course_enroll($order_id){
2054
- if ( ! tutor_utils()->is_tutor_order($order_id)){
2055
  return;
2056
  }
2057
 
2058
  global $wpdb;
2059
 
2060
- $enrolled_ids_with_course = $this->get_course_enrolled_ids_by_order_id($order_id);
2061
- if ($enrolled_ids_with_course){
2062
- $enrolled_ids = wp_list_pluck($enrolled_ids_with_course, 'enrolled_id');
2063
 
2064
- if (is_array($enrolled_ids) && count($enrolled_ids)){
2065
- foreach ($enrolled_ids as $enrolled_id){
2066
  $wpdb->update( $wpdb->posts, array( 'post_status' => 'completed' ), array( 'ID' => $enrolled_id ) );
2067
  }
2068
  }
@@ -2076,18 +2265,28 @@ class Utils {
2076
  *
2077
  * @since v.1.0.0
2078
  */
2079
- public function get_course_enrolled_ids_by_order_id($order_id){
2080
  global $wpdb;
2081
- //Getting all of courses ids within this order
2082
-
2083
- $courses_ids = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->postmeta} WHERE post_id = %d AND meta_key LIKE '_tutor_order_for_course_id_%' ", $order_id));
2084
 
2085
- if (is_array($courses_ids) && count($courses_ids)){
 
 
 
 
 
 
 
 
 
 
2086
  $course_enrolled_by_order = array();
2087
- foreach ($courses_ids as $courses_id){
2088
- $course_id = str_replace('_tutor_order_for_course_id_', '',$courses_id->meta_key);
2089
- //array(order_id => array('course_id' => $course_id, 'enrolled_id' => enrolled_id))
2090
- $course_enrolled_by_order[] = array('course_id' => $course_id, 'enrolled_id' => $courses_id->meta_value, 'order_id' => $courses_id->post_id );
 
 
 
2091
  }
2092
  return $course_enrolled_by_order;
2093
  }
@@ -2105,9 +2304,18 @@ class Utils {
2105
  *
2106
  * WooCommerce specific utils
2107
  */
2108
- public function get_wc_products_db(){
2109
  global $wpdb;
2110
- $query = $wpdb->get_results("SELECT ID, post_title from {$wpdb->posts} WHERE post_status = 'publish' AND post_type = 'product' ");
 
 
 
 
 
 
 
 
 
2111
 
2112
  return $query;
2113
  }
@@ -2117,9 +2325,18 @@ class Utils {
2117
  *
2118
  * Get EDD Products
2119
  */
2120
- public function get_edd_products(){
2121
  global $wpdb;
2122
- $query = $wpdb->get_results("SELECT ID, post_title from {$wpdb->posts} WHERE post_status = 'publish' AND post_type = 'download' ");
 
 
 
 
 
 
 
 
 
2123
 
2124
  return $query;
2125
  }
@@ -2133,9 +2350,9 @@ class Utils {
2133
  *
2134
  * @since v.1.0.0
2135
  */
2136
- public function get_course_product_id($course_id = 0){
2137
- $course_id = $this->get_post_id($course_id);
2138
- $product_id = (int) get_post_meta($course_id, '_tutor_course_product_id', true);
2139
 
2140
  return $product_id;
2141
  }
@@ -2149,11 +2366,19 @@ class Utils {
2149
  *
2150
  * @since v.1.0.0
2151
  */
2152
-
2153
- public function product_belongs_with_course($product_id = 0){
2154
  global $wpdb;
2155
 
2156
- $query = $wpdb->get_row($wpdb->prepare("SELECT * from {$wpdb->postmeta} WHERE meta_key='_tutor_course_product_id' AND meta_value = %d limit 1 ", $product_id));
 
 
 
 
 
 
 
 
 
2157
 
2158
  return $query;
2159
  }
@@ -2163,8 +2388,7 @@ class Utils {
2163
  *
2164
  * @since v.1.0.0
2165
  */
2166
-
2167
- public function get_enrolled_statuses(){
2168
  return apply_filters(
2169
  'tutor_get_enrolled_statuses',
2170
  array (
@@ -2188,8 +2412,8 @@ class Utils {
2188
  *
2189
  * @since v.1.0.0
2190
  */
2191
- public function is_tutor_order($order_id){
2192
- return get_post_meta($order_id, '_is_tutor_order_for_course', true);
2193
  }
2194
 
2195
  /**
@@ -2197,8 +2421,8 @@ class Utils {
2197
  *
2198
  * @deprecated
2199
  */
2200
- public function tutor_student_dashboard_pages(){
2201
- _deprecated_function(__METHOD__, '1.1.2', 'tutor_dashboard_pages');
2202
  return $this->tutor_dashboard_pages();
2203
  }
2204
 
@@ -2209,54 +2433,53 @@ class Utils {
2209
  *
2210
  * @since v.1.0.0
2211
  */
2212
-
2213
- public function tutor_dashboard_pages(){
2214
- $nav_items = apply_filters('tutor_dashboard/nav_items', array(
2215
- 'index' => __('Dashboard', 'tutor'),
2216
- 'my-profile' => __('My Profile', 'tutor'),
2217
- 'enrolled-courses' => __('Enrolled Courses', 'tutor'),
2218
- 'wishlist' => __('Wishlist', 'tutor'),
2219
- 'reviews' => __('Reviews', 'tutor'),
2220
- 'my-quiz-attempts' => __('My Quiz Attempts', 'tutor'),
2221
- 'purchase_history' => __('Purchase History', 'tutor'),
2222
  ));
2223
 
2224
- $instructor_nav_items = apply_filters('tutor_dashboard/instructor_nav_items', array(
2225
- 'separator-1' => array('title' => __('Instructor', 'tutor'), 'auth_cap' => tutor()->instructor_role, 'type' => 'separator'),
2226
- 'create-course' => array('title' => __('Create Course', 'tutor'), 'show_ui' => false, 'auth_cap' => tutor()->instructor_role),
2227
- 'my-courses' => array('title' => __('My Courses', 'tutor'), 'auth_cap' => tutor()->instructor_role),
2228
- 'announcements' => array('title' => __('Announcements', 'tutor'), 'auth_cap' => tutor()->instructor_role),
2229
- 'earning' => array('title' => __('Earnings', 'tutor'), 'auth_cap' => tutor()->instructor_role),
2230
- 'withdraw' => array('title' => __('Withdrawals', 'tutor'), 'auth_cap' => tutor()->instructor_role),
2231
- 'quiz-attempts' => array('title' => __('Quiz Attempts', 'tutor'), 'auth_cap' => tutor()->instructor_role),
2232
- 'question-answer' => array('title' => __('Question & Answer', 'tutor'), 'auth_cap' => tutor()->instructor_role),
2233
  ));
2234
 
2235
- $disable = get_tutor_option('disable_course_review');
2236
- if ($disable && isset($nav_items['reviews'])){
2237
- unset($nav_items['reviews']);
2238
  }
2239
 
2240
- $nav_items = array_merge($nav_items, $instructor_nav_items);
2241
 
2242
- $new_navs = apply_filters('tutor_dashboard/bottom_nav_items', array(
2243
- 'separator-2' => array('title' => '', 'type' => 'separator'),
2244
- 'settings' => __('Settings', 'tutor'),
2245
- 'logout' => __('Logout', 'tutor'),
2246
  ));
2247
- $all_nav_items = array_merge($nav_items, $new_navs);
2248
 
2249
- return apply_filters('tutor_dashboard/nav_items_all', $all_nav_items);
2250
  }
2251
 
2252
- public function tutor_dashboard_permalinks(){
2253
  $dashboard_pages = $this->tutor_dashboard_pages();
2254
 
2255
- $dashboard_permalinks = apply_filters('tutor_dashboard/permalinks', array(
2256
- 'retrieve-password' => array('title' => __('Retrieve Password', 'tutor'), 'login_require' => false),
2257
  ));
2258
 
2259
- $dashboard_pages = array_merge($dashboard_pages, $dashboard_permalinks);
2260
 
2261
  return $dashboard_pages;
2262
  }
@@ -2265,21 +2488,21 @@ class Utils {
2265
  * @return mixed
2266
  *
2267
  * Tutor Dashboard UI nav, only for using in the nav, it's handling user permission based
2268
- * Dashboard nav items
2269
  *
2270
  * @since v.1.3.4
2271
  */
2272
- public function tutor_dashboard_nav_ui_items(){
2273
  $nav_items = $this->tutor_dashboard_pages();
2274
 
2275
- foreach ($nav_items as $key => $nav_item){
2276
- if (is_array($nav_item)){
2277
 
2278
- if ( isset($nav_item['show_ui']) && ! tutor_utils()->array_get('show_ui', $nav_item)){
2279
- unset($nav_items[$key]);
2280
  }
2281
- if ( isset($nav_item['auth_cap'] ) && ! current_user_can($nav_item['auth_cap']) ){
2282
- unset($nav_items[$key]);
2283
  }
2284
  }
2285
  }
@@ -2297,14 +2520,14 @@ class Utils {
2297
  *
2298
  * @since v.1.0.0
2299
  */
2300
- public function get_tutor_dashboard_page_permalink($page_key = '', $page_id = 0){
2301
- if ($page_key === 'index'){
2302
  $page_key = '';
2303
  }
2304
- if ( ! $page_id){
2305
- $page_id = (int) tutils()->get_option('tutor_dashboard_page_id');
2306
  }
2307
- return trailingslashit(get_permalink($page_id)).$page_key;
2308
  }
2309
 
2310
  /**
@@ -2317,14 +2540,15 @@ class Utils {
2317
  * @since v.1.0.0
2318
  * @updated v.1.4.2
2319
  */
2320
- public function input_old($input = '', $old_data = null){
2321
- if ( ! $old_data){
2322
  $old_data = $_REQUEST;
2323
  }
2324
- $value = $this->avalue_dot($input, $old_data);
2325
- if ($value){
2326
  return $value;
2327
  }
 
2328
  return '';
2329
  }
2330
 
@@ -2337,9 +2561,9 @@ class Utils {
2337
  *
2338
  * @since v.1.0.0
2339
  */
2340
- public function is_instructor($user_id = 0){
2341
- $user_id = $this->get_user_id($user_id);
2342
- return get_user_meta($user_id, '_is_tutor_instructor', true);
2343
  }
2344
 
2345
  /**
@@ -2352,19 +2576,19 @@ class Utils {
2352
  *
2353
  * @since v.1.0.0
2354
  */
2355
- public function instructor_status($user_id = 0, $status_name = true){
2356
- $user_id = $this->get_user_id($user_id);
2357
 
2358
- $instructor_status = apply_filters('tutor_instructor_statuses', array(
2359
- 'pending' => __('Pending', 'tutor'),
2360
- 'approved' => __('Approved', 'tutor'),
2361
- 'blocked' => __('Blocked', 'tutor'),
2362
  ));
2363
 
2364
- $status = get_user_meta($user_id, '_tutor_instructor_status', true);
2365
 
2366
- if (isset($instructor_status[$status])){
2367
- if ( ! $status_name){
2368
  return $status;
2369
  }
2370
  return $instructor_status[$status];
@@ -2381,17 +2605,23 @@ class Utils {
2381
  *
2382
  * @since v.1.0.0
2383
  */
2384
-
2385
- public function get_total_instructors($search_term = ''){
2386
- $meta_key = '_is_tutor_instructor';
2387
-
2388
  global $wpdb;
2389
 
2390
- if ($search_term){
2391
- $search_term = " AND ( {$wpdb->users}.display_name LIKE '%{$search_term}%' OR {$wpdb->users}.user_email LIKE '%{$search_term}%' ) ";
2392
- }
2393
-
2394
- $count = $wpdb->get_var("SELECT COUNT({$wpdb->users}.ID) FROM {$wpdb->users} INNER JOIN {$wpdb->usermeta} ON ( {$wpdb->users}.ID = {$wpdb->usermeta}.user_id ) WHERE 1=1 AND ( {$wpdb->usermeta}.meta_key = '{$meta_key}' ) $search_term ");
 
 
 
 
 
 
 
 
 
2395
 
2396
  return (int) $count;
2397
  }
@@ -2407,28 +2637,40 @@ class Utils {
2407
  *
2408
  * @since v.1.0.0
2409
  */
2410
- public function get_instructors($start = 0, $limit = 10, $search_term = '', $status=null){
2411
- $meta_key = '_is_tutor_instructor';
2412
  global $wpdb;
2413
 
2414
- if ($search_term){
2415
- $search_term = " AND ( {$wpdb->users}.display_name LIKE '%{$search_term}%' OR {$wpdb->users}.user_email LIKE '%{$search_term}%' ) ";
2416
- }
2417
 
2418
- if($status){
2419
- !is_array($status) ? $status=array($status) : 0;
2420
- $status = array_map(function($str){return "'{$str}'";}, $status);
2421
- $status = implode(',', $status);
2422
-
2423
- $search_term.=" AND inst_status.meta_key='_tutor_instructor_status' AND inst_status.meta_value IN ({$status})";
 
 
2424
  }
2425
 
2426
- $instructors = $wpdb->get_results("SELECT DISTINCT SQL_CALC_FOUND_ROWS {$wpdb->users}.* FROM {$wpdb->users}
2427
- INNER JOIN {$wpdb->usermeta} ON ( {$wpdb->users}.ID = {$wpdb->usermeta}.user_id )
2428
- INNER JOIN {$wpdb->usermeta} inst_status ON ( {$wpdb->users}.ID = inst_status.user_id )
2429
- WHERE 1=1 AND ( {$wpdb->usermeta}.meta_key = '{$meta_key}' ) {$search_term}
 
 
 
 
 
 
2430
  ORDER BY {$wpdb->usermeta}.meta_value DESC
2431
- LIMIT {$start}, {$limit} ");
 
 
 
 
 
 
 
2432
 
2433
  return $instructors;
2434
  }
@@ -2442,23 +2684,40 @@ class Utils {
2442
  *
2443
  * @since v.1.0.0
2444
  */
2445
- public function get_instructors_by_course($course_id = 0){
2446
  global $wpdb;
2447
- $course_id = $this->get_post_id($course_id);
2448
-
2449
- $instructors = $wpdb->get_results("SELECT ID, display_name,
2450
- get_course.meta_value as taught_course_id,
2451
- tutor_job_title.meta_value as tutor_profile_job_title,
2452
- tutor_bio.meta_value as tutor_profile_bio,
2453
- tutor_photo.meta_value as tutor_profile_photo
2454
- from {$wpdb->users}
2455
- INNER JOIN {$wpdb->usermeta} get_course ON ID = get_course.user_id AND get_course.meta_key = '_tutor_instructor_course_id' AND get_course.meta_value = {$course_id}
2456
- LEFT JOIN {$wpdb->usermeta} tutor_job_title ON ID = tutor_job_title.user_id AND tutor_job_title.meta_key = '_tutor_profile_job_title'
2457
- LEFT JOIN {$wpdb->usermeta} tutor_bio ON ID = tutor_bio.user_id AND tutor_bio.meta_key = '_tutor_profile_bio'
2458
- LEFT JOIN {$wpdb->usermeta} tutor_photo ON ID = tutor_photo.user_id AND tutor_photo.meta_key = '_tutor_profile_photo'
2459
- ");
2460
-
2461
- if (is_array($instructors) && count($instructors)){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2462
  return $instructors;
2463
  }
2464
 
@@ -2475,19 +2734,29 @@ class Utils {
2475
  *
2476
  * @since v.1.0.0
2477
  */
2478
-
2479
- public function get_total_students_by_instructor($instructor_id){
2480
  global $wpdb;
2481
 
2482
  $course_post_type = tutor()->course_post_type;
2483
- $count = $wpdb->get_var(
2484
- "SELECT COUNT(enrollment.ID) FROM {$wpdb->posts} enrollment
2485
- LEFT JOIN {$wpdb->posts} course ON enrollment.post_parent=course.ID
2486
- WHERE course.post_author={$instructor_id}
2487
- AND course.post_status='publish'
2488
- AND course.post_type='courses'
2489
- AND enrollment.post_type='tutor_enrolled'
2490
- AND enrollment.post_status='completed'");
 
 
 
 
 
 
 
 
 
 
 
2491
 
2492
  return (int) $count;
2493
  }
@@ -2501,23 +2770,24 @@ class Utils {
2501
  *
2502
  * @since v.1.0.0
2503
  */
2504
- public function get_rating_value($input = 0.00){
2505
 
2506
- if ( $input > 0){
2507
- $input = number_format($input, 2);
2508
  $int_value = (int) $input;
2509
  $fraction = $input - $int_value;
2510
 
2511
- if ($fraction == 0){
2512
  $fraction = 0.00;
2513
- }elseif($fraction > 0.5){
2514
  $fraction = 1;
2515
- }else{
2516
  $fraction = 0.5;
2517
  }
2518
 
2519
- return number_format( ($int_value + $fraction), 2);
2520
  }
 
2521
  return 0.00;
2522
  }
2523
 
@@ -2531,18 +2801,18 @@ class Utils {
2531
  *
2532
  * @since v.1.0.0
2533
  */
2534
- public function star_rating_generator($current_rating = 0.00, $echo = true){
2535
  $output = '<div class="tutor-star-rating-group">';
2536
 
2537
- for ($i = 1; $i <=5 ; $i++){
2538
  $intRating = (int) $current_rating;
2539
 
2540
- if ($intRating >= $i){
2541
  $output.= '<i class="tutor-icon-star-full" data-rating-value="'.$i.'"></i>';
2542
- } else{
2543
- if ( ($current_rating - $i) == -0.5){
2544
  $output.= '<i class="tutor-icon-star-half" data-rating-value="'.$i.'"></i>';
2545
- }else{
2546
  $output.= '<i class="tutor-icon-star-line" data-rating-value="'.$i.'"></i>';
2547
  }
2548
  }
@@ -2552,13 +2822,13 @@ class Utils {
2552
 
2553
  $output .= "</div>";
2554
 
2555
- if ($echo){
2556
  echo $output;
2557
  }
 
2558
  return $output;
2559
  }
2560
 
2561
-
2562
  /**
2563
  * @param $string
2564
  *
@@ -2568,12 +2838,12 @@ class Utils {
2568
  *
2569
  *
2570
  */
2571
- public function str_split ($string) {
2572
- $strlen = mb_strlen($string);
2573
- while ($strlen) {
2574
- $array[] = mb_substr($string,0,1,"UTF-8");
2575
- $string = mb_substr($string,1,$strlen,"UTF-8");
2576
- $strlen = mb_strlen($string);
2577
  }
2578
  return $array;
2579
  }
@@ -2587,26 +2857,26 @@ class Utils {
2587
  *
2588
  * @since v.1.0.0
2589
  */
2590
- public function get_tutor_avatar($user_id = null, $size = 'thumbnail'){
2591
  global $wpdb;
2592
 
2593
- if ( ! $user_id){
2594
  return '';
2595
  }
2596
 
2597
- $user = $this->get_tutor_user($user_id);
2598
- if ($user->tutor_profile_photo){
2599
- return '<img src="'.wp_get_attachment_image_url($user->tutor_profile_photo, $size).'" class="tutor-image-avatar" alt="" /> ';
2600
  }
2601
 
2602
  $name = $user->display_name;
2603
- $arr = explode(' ', trim($name));
2604
 
2605
- $first_char = !empty($arr[0]) ? $this->str_split($arr[0])[0] : '';
2606
- $second_char = !empty($arr[1]) ? $this->str_split($arr[1])[0] : '';
2607
- $initial_avatar = strtoupper($first_char.$second_char);
2608
 
2609
- $bg_color = '#'.substr(md5($initial_avatar), 0, 6);
2610
  $initial_avatar = "<span class='tutor-text-avatar' style='background-color: {$bg_color}; color: #fff8e5'>{$initial_avatar}</span>";
2611
 
2612
  return $initial_avatar;
@@ -2621,21 +2891,29 @@ class Utils {
2621
  *
2622
  * @since v.1.0.0
2623
  */
2624
-
2625
- public function get_tutor_user($user_id){
2626
  global $wpdb;
2627
 
2628
- $user = $wpdb->get_row($wpdb->prepare("SELECT ID, display_name,
2629
- tutor_job_title.meta_value as tutor_profile_job_title,
2630
- tutor_bio.meta_value as tutor_profile_bio,
2631
- tutor_photo.meta_value as tutor_profile_photo
2632
-
2633
- from {$wpdb->users}
2634
- LEFT JOIN {$wpdb->usermeta} tutor_job_title ON ID = tutor_job_title.user_id AND tutor_job_title.meta_key = '_tutor_profile_job_title'
2635
- LEFT JOIN {$wpdb->usermeta} tutor_bio ON ID = tutor_bio.user_id AND tutor_bio.meta_key = '_tutor_profile_bio'
2636
- LEFT JOIN {$wpdb->usermeta} tutor_photo ON ID = tutor_photo.user_id AND tutor_photo.meta_key = '_tutor_profile_photo'
2637
-
2638
- WHERE ID = %d ", $user_id));
 
 
 
 
 
 
 
 
 
2639
 
2640
  return $user;
2641
  }
@@ -2651,8 +2929,8 @@ class Utils {
2651
  *
2652
  * @since v.1.0.0
2653
  */
2654
- public function get_course_reviews($course_id = 0, $offset = 0, $limit = 150){
2655
- $course_id = $this->get_post_id($course_id);
2656
  global $wpdb;
2657
 
2658
  $reviews = $wpdb->get_results($wpdb->prepare("select {$wpdb->comments}.comment_ID,
@@ -2685,75 +2963,63 @@ class Utils {
2685
  *
2686
  * @since v.1.0.0
2687
  */
2688
- public function get_course_rating($course_id = 0){
2689
- $course_id = $this->get_post_id($course_id);
 
2690
 
2691
  $ratings = array(
2692
- 'rating_count' => 0,
2693
- 'rating_sum' => 0,
2694
- 'rating_avg' => 0.00,
2695
- 'count_by_value' => array(5 => 0, 4 => 0, 3 => 0, 2 => 0, 1 => 0)
2696
  );
2697
 
2698
- global $wpdb;
2699
-
2700
- $rating = $wpdb->get_row($wpdb->prepare("SELECT COUNT(meta_value) as rating_count, SUM(meta_value) as rating_sum
2701
- from {$wpdb->comments}
2702
- INNER JOIN {$wpdb->commentmeta}
2703
- ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
2704
- WHERE {$wpdb->comments}.comment_post_ID = %d
2705
- AND {$wpdb->comments}.comment_type = 'tutor_course_rating'
2706
- AND meta_key = 'tutor_rating' ;", $course_id));
2707
-
2708
- if ($rating->rating_count){
2709
- $avg_rating = number_format(($rating->rating_sum / $rating->rating_count), 2);
2710
-
2711
- /**
2712
- * Get individual Rating by integer
2713
- */
2714
- $five_stars_count = $wpdb->get_var("SELECT COUNT(meta_value) as rating_count
2715
- from {$wpdb->comments}
2716
- INNER JOIN {$wpdb->commentmeta} ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
2717
- WHERE {$wpdb->comments}.comment_post_ID = {$course_id}
2718
- AND {$wpdb->comments}.comment_type = 'tutor_course_rating'
2719
- AND meta_key = 'tutor_rating' AND meta_value = 5 ;"
2720
- );
2721
- $four_stars_count = $wpdb->get_var("SELECT COUNT(meta_value) as rating_count
2722
- from {$wpdb->comments}
2723
- INNER JOIN {$wpdb->commentmeta} ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
2724
- WHERE {$wpdb->comments}.comment_post_ID = {$course_id}
2725
- AND {$wpdb->comments}.comment_type = 'tutor_course_rating'
2726
- AND meta_key = 'tutor_rating' AND meta_value = 4 ;"
2727
- );
2728
- $three_stars_count = $wpdb->get_var("SELECT COUNT(meta_value) as rating_count
2729
- from {$wpdb->comments}
2730
- INNER JOIN {$wpdb->commentmeta} ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
2731
- WHERE {$wpdb->comments}.comment_post_ID = {$course_id}
2732
- AND {$wpdb->comments}.comment_type = 'tutor_course_rating'
2733
- AND meta_key = 'tutor_rating' AND meta_value = 3 ;"
2734
- );
2735
- $two_stars_count = $wpdb->get_var("SELECT COUNT(meta_value) as rating_count
2736
- from {$wpdb->comments}
2737
- INNER JOIN {$wpdb->commentmeta} ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
2738
- WHERE {$wpdb->comments}.comment_post_ID = {$course_id}
2739
- AND {$wpdb->comments}.comment_type = 'tutor_course_rating'
2740
- AND meta_key = 'tutor_rating' AND meta_value = 2 ;"
2741
- );
2742
- $one_stars_count = $wpdb->get_var("SELECT COUNT(meta_value) as rating_count
2743
- from {$wpdb->comments}
2744
- INNER JOIN {$wpdb->commentmeta} ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
2745
- WHERE {$wpdb->comments}.comment_post_ID = {$course_id}
2746
- AND {$wpdb->comments}.comment_type = 'tutor_course_rating'
2747
- AND meta_key = 'tutor_rating' AND meta_value = 1 ;"
2748
- );
2749
 
2750
  $ratings = array(
2751
- 'rating_count' => $rating->rating_count,
2752
- 'rating_sum' => $rating->rating_sum,
2753
- 'rating_avg' => $avg_rating,
2754
- 'count_by_value' => array(5 => $five_stars_count, 4 => $four_stars_count, 3 => $three_stars_count, 2 => $two_stars_count, 1 => $one_stars_count)
2755
  );
2756
-
2757
  }
2758
 
2759
  return (object) $ratings;
@@ -2770,27 +3036,38 @@ class Utils {
2770
  *
2771
  * @since v.1.0.0
2772
  */
2773
- public function get_reviews_by_user($user_id = 0, $offset = 0, $limit = 150){
2774
- $user_id = $this->get_user_id($user_id);
2775
  global $wpdb;
2776
 
2777
- $reviews = $wpdb->get_results($wpdb->prepare("select {$wpdb->comments}.comment_ID,
2778
- {$wpdb->comments}.comment_post_ID,
2779
- {$wpdb->comments}.comment_author,
2780
- {$wpdb->comments}.comment_author_email,
2781
- {$wpdb->comments}.comment_date,
2782
- {$wpdb->comments}.comment_content,
2783
- {$wpdb->comments}.user_id,
2784
- {$wpdb->commentmeta}.meta_value as rating,
2785
- {$wpdb->users}.display_name
 
2786
 
2787
- from {$wpdb->comments}
2788
- INNER JOIN {$wpdb->commentmeta}
2789
- ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
2790
- INNER JOIN {$wpdb->users}
2791
- ON {$wpdb->comments}.user_id = {$wpdb->users}.ID
2792
- WHERE {$wpdb->comments}.user_id = %d
2793
- AND comment_type = 'tutor_course_rating' AND meta_key = 'tutor_rating' ORDER BY comment_ID DESC LIMIT %d, %d ;", $user_id, $offset, $limit));
 
 
 
 
 
 
 
 
 
 
2794
 
2795
  return $reviews;
2796
  }
@@ -2806,9 +3083,8 @@ class Utils {
2806
  *
2807
  * @since v.1.4.0
2808
  */
2809
-
2810
- public function get_reviews_by_instructor($instructor_id = 0, $offset = 0, $limit = 150){
2811
- $instructor_id = $this->get_user_id($instructor_id);
2812
  global $wpdb;
2813
 
2814
  $results = array(
@@ -2816,39 +3092,55 @@ class Utils {
2816
  'results' => false,
2817
  );
2818
 
2819
- $cours_ids = (array) $this->get_assigned_courses_ids_by_instructors($instructor_id);
2820
 
2821
- if ($this->count($cours_ids)){
2822
  $implode_ids = implode( ',', $cours_ids );
2823
 
2824
  //Count
2825
- $results['count'] = $wpdb->get_var("SELECT COUNT({$wpdb->comments}.comment_ID)
2826
- from {$wpdb->comments}
2827
- INNER JOIN {$wpdb->commentmeta}
2828
- ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
2829
- INNER JOIN {$wpdb->users}
2830
- ON {$wpdb->comments}.user_id = {$wpdb->users}.ID
2831
- WHERE {$wpdb->comments}.comment_post_ID IN({$implode_ids})
2832
- AND comment_type = 'tutor_course_rating' AND meta_key = 'tutor_rating';" );
 
 
 
 
 
 
2833
 
2834
  //Results
2835
- $results['results'] = $wpdb->get_results("SELECT {$wpdb->comments}.comment_ID,
2836
- {$wpdb->comments}.comment_post_ID,
2837
- {$wpdb->comments}.comment_author,
2838
- {$wpdb->comments}.comment_author_email,
2839
- {$wpdb->comments}.comment_date,
2840
- {$wpdb->comments}.comment_content,
2841
- {$wpdb->comments}.user_id,
2842
- {$wpdb->commentmeta}.meta_value as rating,
2843
- {$wpdb->users}.display_name
 
2844
 
2845
- from {$wpdb->comments}
2846
- INNER JOIN {$wpdb->commentmeta}
2847
- ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
2848
- INNER JOIN {$wpdb->users}
2849
- ON {$wpdb->comments}.user_id = {$wpdb->users}.ID
2850
- WHERE {$wpdb->comments}.comment_post_ID IN({$implode_ids})
2851
- AND comment_type = 'tutor_course_rating' AND meta_key = 'tutor_rating' ORDER BY comment_ID DESC LIMIT {$offset},{$limit} ;" );
 
 
 
 
 
 
 
 
 
2852
  }
2853
 
2854
  return (object) $results;
@@ -2863,7 +3155,7 @@ class Utils {
2863
  *
2864
  * @since v.1.0.0
2865
  */
2866
- public function get_instructor_ratings($instructor_id){
2867
  global $wpdb;
2868
 
2869
  $ratings = array(
@@ -2872,14 +3164,24 @@ class Utils {
2872
  'rating_avg' => 0.00,
2873
  );
2874
 
2875
- $rating = $wpdb->get_row($wpdb->prepare("SELECT COUNT(rating.meta_value) as rating_count, SUM(rating.meta_value) as rating_sum
2876
- FROM {$wpdb->usermeta} courses
2877
- INNER JOIN {$wpdb->comments} reviews ON courses.meta_value = reviews.comment_post_ID AND reviews.comment_type = 'tutor_course_rating'
2878
- INNER JOIN {$wpdb->commentmeta} rating ON reviews.comment_ID = rating.comment_id AND rating.meta_key = 'tutor_rating'
2879
- WHERE courses.user_id = %d AND courses.meta_key = '_tutor_instructor_course_id'", $instructor_id));
2880
-
2881
- if ($rating->rating_count){
2882
- $avg_rating = number_format(($rating->rating_sum / $rating->rating_count), 2);
 
 
 
 
 
 
 
 
 
 
2883
 
2884
  $ratings = array(
2885
  'rating_count' => $rating->rating_count,
@@ -2901,32 +3203,41 @@ class Utils {
2901
  *
2902
  * @since v.1.0.0
2903
  */
2904
- public function get_course_rating_by_user($course_id = 0, $user_id = 0){
2905
- $course_id = $this->get_post_id($course_id);
2906
- $user_id = $this->get_user_id($user_id);
 
 
2907
 
2908
  $ratings = array(
2909
- 'rating' => 0,
2910
- 'review' => '',
2911
  );
2912
 
2913
- global $wpdb;
2914
-
2915
- $rating = $wpdb->get_row($wpdb->prepare(
2916
- "SELECT meta_value as rating, comment_content as review from {$wpdb->comments}
2917
- INNER JOIN {$wpdb->commentmeta}
2918
- ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
2919
- WHERE {$wpdb->comments}.comment_post_ID = %d AND user_id = %d
2920
- AND meta_key = 'tutor_rating' ;", $course_id, $user_id));
2921
-
2922
- if ($rating){
2923
- $rating_format = number_format($rating->rating, 2);
 
 
 
 
 
 
2924
 
2925
  $ratings = array(
2926
- 'rating' => $rating_format,
2927
- 'review' => $rating->review,
2928
  );
2929
  }
 
2930
  return (object) $ratings;
2931
  }
2932
 
@@ -2937,11 +3248,21 @@ class Utils {
2937
  *
2938
  * @since v.1.0.0
2939
  */
2940
- public function count_reviews_wrote_by_user($user_id = 0){
2941
  global $wpdb;
 
2942
  $user_id = $this->get_user_id($user_id);
2943
 
2944
- $count_reviews = $wpdb->get_var("SELECT COUNT(comment_ID) from {$wpdb->comments} WHERE user_id = {$user_id} AND comment_type = 'tutor_course_rating' ");
 
 
 
 
 
 
 
 
 
2945
  return $count_reviews;
2946
  }
2947
 
@@ -2954,7 +3275,6 @@ class Utils {
2954
  *
2955
  * @since v.1.0.0
2956
  */
2957
-
2958
  function let_to_num( $size ) {
2959
  $l = substr( $size, -1 );
2960
  $ret = substr( $size, 0, -1 );
@@ -3009,7 +3329,7 @@ class Utils {
3009
  );
3010
  }
3011
 
3012
- public function help_tip($tip = ''){
3013
  return '<span class="tutor-help-tip" data-tip="' . $tip . '"></span>';
3014
  }
3015
 
@@ -3025,39 +3345,40 @@ class Utils {
3025
  *
3026
  * @since v.1.0.0
3027
  */
3028
- public function get_top_question($course_id = 0, $user_id = 0, $offset = 0, $limit = 20, $is_author = false ){
3029
- $course_id = $this->get_post_id($course_id);
3030
- $user_id = $this->get_user_id($user_id);
3031
-
3032
  global $wpdb;
 
 
 
 
3033
  $author_sql = $is_author ? "" : "AND {$wpdb->comments}.user_id = {$user_id}";
3034
 
3035
- $questions = $wpdb->get_results(
3036
- "SELECT
3037
- {$wpdb -> comments}.comment_ID,
3038
- {$wpdb -> comments}.comment_post_ID,
3039
- {$wpdb -> comments}.comment_author,
3040
- {$wpdb -> comments}.comment_date,
3041
- {$wpdb -> comments}.comment_date_gmt,
3042
- {$wpdb -> comments}.comment_content,
3043
- {$wpdb -> comments}.user_id,
3044
- {$wpdb -> commentmeta}.meta_value as question_title,
3045
- {$wpdb -> users}.display_name
3046
- FROM
3047
- {$wpdb -> comments}
3048
- INNER JOIN {$wpdb -> commentmeta} ON {$wpdb -> comments}.comment_ID = {$wpdb -> commentmeta}.comment_id
3049
- INNER JOIN {$wpdb -> users} ON {$wpdb -> comments}.user_id = {$wpdb -> users}.ID
3050
- WHERE
3051
- {$wpdb -> comments}.comment_post_ID = {$course_id} {$author_sql}
3052
- AND {$wpdb -> comments}.comment_type = 'tutor_q_and_a'
3053
- AND meta_key = 'tutor_question_title'
3054
- ORDER BY
3055
- comment_ID DESC
3056
- LIMIT
3057
- {$offset},
3058
- {$limit};
3059
- "
3060
- );
3061
 
3062
  return $questions;
3063
  }
@@ -3071,24 +3392,42 @@ class Utils {
3071
  *
3072
  * @since v.1.0.0
3073
  */
3074
- public function get_total_qa_question($search_term = ''){
3075
  global $wpdb;
3076
 
3077
- if ($search_term){
3078
- $search_term = " AND {$wpdb->commentmeta}.meta_value LIKE '%{$search_term}%' ";
3079
- }
3080
-
3081
- $user_id = get_current_user_id();
3082
  $course_type = tutor()->course_post_type;
 
3083
 
3084
  $in_question_id_query = '';
3085
  /**
3086
  * Get only assinged courses questions if current user is a
3087
  */
3088
- if ( ! current_user_can('administrator') && current_user_can(tutor()->instructor_role)) {
3089
- $get_course_ids = $wpdb->get_col($wpdb->prepare("SELECT ID FROM {$wpdb->posts} WHERE post_author = %d AND post_type = %s AND post_status = 'publish' ", $user_id, $course_type));
3090
- $get_assigned_courses_ids = $wpdb->get_col($wpdb->prepare("SELECT meta_value from {$wpdb->usermeta} WHERE meta_key = '_tutor_instructor_course_id' AND user_id = %d ", $user_id));
3091
- $my_course_ids = array_unique( array_merge( $get_course_ids, $get_assigned_courses_ids ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3092
 
3093
  if ( $this->count( $my_course_ids ) ) {
3094
  $implode_ids = implode( ',', $my_course_ids );
@@ -3096,17 +3435,18 @@ class Utils {
3096
  }
3097
  }
3098
 
3099
- $count = $wpdb->get_var(
3100
- "SELECT
3101
- COUNT({$wpdb -> comments}.comment_ID)
3102
- FROM
3103
- {$wpdb -> comments}
3104
- INNER JOIN {$wpdb -> commentmeta} ON {$wpdb -> comments}.comment_ID = {$wpdb -> commentmeta}.comment_id
3105
- WHERE
3106
- comment_type = 'tutor_q_and_a'
3107
- AND comment_parent = 0 {$in_question_id_query} {$search_term};
3108
- "
3109
- );
 
3110
 
3111
  return (int) $count;
3112
  }
@@ -3123,24 +3463,42 @@ class Utils {
3123
  *
3124
  * @since v.1.0.0
3125
  */
3126
- public function get_qa_questions($start = 0, $limit = 10, $search_term = '') {
3127
  global $wpdb;
3128
 
3129
- if ($search_term){
3130
- $search_term = " AND {$wpdb->commentmeta}.meta_value LIKE '%{$search_term}%' ";
3131
- }
3132
-
3133
- $user_id = get_current_user_id();
3134
  $course_type = tutor()->course_post_type;
 
3135
 
3136
  $in_question_id_query = '';
3137
  /**
3138
  * Get only assinged courses questions if current user is a
3139
  */
3140
- if ( ! current_user_can('administrator') && current_user_can(tutor()->instructor_role)) {
3141
- $get_course_ids = $wpdb->get_col($wpdb->prepare("SELECT ID FROM {$wpdb->posts} WHERE post_author = %d AND post_type = %s AND post_status = 'publish' ", $user_id, $course_type));
3142
- $get_assigned_courses_ids = $wpdb->get_col($wpdb->prepare("SELECT meta_value from {$wpdb->usermeta} WHERE meta_key = '_tutor_instructor_course_id' AND user_id = %d ", $user_id));
3143
- $my_course_ids = array_unique( array_merge( $get_course_ids, $get_assigned_courses_ids ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3144
 
3145
  if ( $this->count( $my_course_ids ) ) {
3146
  $implode_ids = implode( ',', $my_course_ids );
@@ -3148,40 +3506,39 @@ class Utils {
3148
  }
3149
  }
3150
 
3151
- $query = $wpdb->get_results(
3152
- "SELECT
3153
- {$wpdb -> comments}.comment_ID,
3154
- {$wpdb -> comments}.comment_post_ID,
3155
- {$wpdb -> comments}.comment_author,
3156
- {$wpdb -> comments}.comment_date,
3157
- {$wpdb -> comments}.comment_content,
3158
- {$wpdb -> comments}.user_id,
3159
- {$wpdb -> commentmeta}.meta_value as question_title,
3160
- {$wpdb -> users}.display_name,
3161
- {$wpdb -> posts}.post_title,
3162
- (
3163
- SELECT
3164
- COUNT(answers_t.comment_ID)
3165
- FROM
3166
- {$wpdb -> comments} answers_t
3167
- WHERE
3168
- answers_t.comment_parent = {$wpdb -> comments}.comment_ID
3169
- ) as answer_count
3170
- FROM
3171
- {$wpdb -> comments}
3172
- INNER JOIN {$wpdb -> commentmeta} ON {$wpdb -> comments}.comment_ID = {$wpdb -> commentmeta}.comment_id
3173
- INNER JOIN {$wpdb -> posts} ON {$wpdb -> comments}.comment_post_ID = {$wpdb -> posts}.ID
3174
- INNER JOIN {$wpdb -> users} ON {$wpdb -> comments}.user_id = {$wpdb -> users}.ID
3175
- WHERE
3176
- {$wpdb -> comments}.comment_type = 'tutor_q_and_a'
3177
- AND {$wpdb -> comments}.comment_parent = 0 {$search_term} {$in_question_id_query}
3178
- ORDER BY
3179
- {$wpdb -> comments}.comment_ID DESC
3180
- LIMIT
3181
- {$start},
3182
- {$limit};
3183
- "
3184
- );
3185
 
3186
  return $query;
3187
  }
@@ -3195,30 +3552,32 @@ class Utils {
3195
  *
3196
  * @since v.1.0.0
3197
  */
3198
- public function get_qa_question($question_id){
3199
  global $wpdb;
3200
- $query = $wpdb->get_row(
3201
- "SELECT
3202
- {$wpdb -> comments}.comment_ID,
3203
- {$wpdb -> comments}.comment_post_ID,
3204
- {$wpdb -> comments}.comment_author,
3205
- {$wpdb -> comments}.comment_date,
3206
- {$wpdb -> comments}.comment_date_gmt,
3207
- {$wpdb -> comments}.comment_content,
3208
- {$wpdb -> comments}.user_id,
3209
- {$wpdb -> commentmeta}.meta_value as question_title,
3210
- {$wpdb -> users}.display_name,
3211
- {$wpdb -> posts}.post_title
3212
- FROM
3213
- {$wpdb -> comments}
3214
- INNER JOIN {$wpdb -> commentmeta} ON {$wpdb -> comments}.comment_ID = {$wpdb -> commentmeta}.comment_id
3215
- INNER JOIN {$wpdb -> posts} ON {$wpdb -> comments}.comment_post_ID = {$wpdb -> posts}.ID
3216
- INNER JOIN {$wpdb -> users} ON {$wpdb -> comments}.user_id = {$wpdb -> users}.ID
3217
- WHERE
3218
- comment_type = 'tutor_q_and_a'
3219
- AND {$wpdb -> comments}.comment_ID = {$question_id};
3220
- "
3221
- );
 
 
3222
 
3223
  return $query;
3224
  }
@@ -3230,29 +3589,28 @@ class Utils {
3230
  *
3231
  * Get question and asnwer by question
3232
  */
3233
- public function get_qa_answer_by_question($question_id){
3234
  global $wpdb;
3235
- $query = $wpdb->get_results(
3236
- "SELECT
3237
- {$wpdb -> comments}.comment_ID,
3238
- {$wpdb -> comments}.comment_post_ID,
3239
- {$wpdb -> comments}.comment_author,
3240
- {$wpdb -> comments}.comment_date,
3241
- {$wpdb -> comments}.comment_date_gmt,
3242
- {$wpdb -> comments}.comment_content,
3243
- {$wpdb -> comments}.comment_parent,
3244
- {$wpdb -> comments}.user_id,
3245
- {$wpdb -> users}.display_name
3246
- FROM
3247
- {$wpdb -> comments}
3248
- INNER JOIN {$wpdb -> users} ON {$wpdb -> comments}.user_id = {$wpdb -> users}.ID
3249
- WHERE
3250
- comment_type = 'tutor_q_and_a'
3251
- AND {$wpdb -> comments}.comment_parent = {$question_id}
3252
- ORDER BY
3253
- {$wpdb -> comments}.comment_ID ASC;
3254
- "
3255
- );
3256
 
3257
  return $query;
3258
  }
@@ -3266,25 +3624,29 @@ class Utils {
3266
  *
3267
  * Get question and asnwer by answer_id
3268
  */
3269
- public function get_qa_answer_by_answer_id($answer_id) {
3270
  global $wpdb;
3271
- $answer = $wpdb->get_row($wpdb->prepare(
3272
  "SELECT answer.comment_post_ID,
3273
  answer.comment_content,
3274
  users.display_name,
3275
  question.user_id AS question_by,
3276
  question.comment_content AS question,
3277
  question_meta.meta_value AS question_title
3278
- FROM {$wpdb -> comments} answer
3279
- INNER JOIN {$wpdb -> users} users
3280
  ON answer.user_id = users.id
3281
- INNER JOIN {$wpdb -> comments} question
3282
  ON answer.comment_parent = question.comment_ID
3283
- INNER JOIN {$wpdb -> commentmeta} question_meta
3284
  ON answer.comment_parent = question_meta.comment_id
3285
- AND question_meta.meta_key = 'tutor_question_title'
3286
  WHERE answer.comment_ID = %d
3287
- AND answer.comment_type = 'tutor_q_and_a';", $answer_id));
 
 
 
 
3288
 
3289
  if ( $answer ) {
3290
  return $answer;
@@ -3293,21 +3655,23 @@ class Utils {
3293
  return false;
3294
  }
3295
 
3296
- public function unanswered_question_count(){
3297
  global $wpdb;
3298
- $count = $wpdb->get_var(
3299
- "SELECT
3300
- COUNT({$wpdb -> comments}.comment_ID)
3301
- FROM
3302
- {$wpdb -> comments}
3303
- INNER JOIN {$wpdb -> posts} ON {$wpdb -> comments}.comment_post_ID = {$wpdb -> posts}.ID
3304
- INNER JOIN {$wpdb -> users} ON {$wpdb -> comments}.user_id = {$wpdb -> users}.ID
3305
- WHERE
3306
- {$wpdb -> comments}.comment_type = 'tutor_q_and_a'
3307
- AND {$wpdb -> comments}.comment_approved = 'waiting_for_answer'
3308
- AND {$wpdb -> comments}.comment_parent = 0;
3309
- "
3310
- );
 
 
3311
  return (int) $count;
3312
  }
3313
 
@@ -3320,27 +3684,26 @@ class Utils {
3320
  *
3321
  * @since v.1.0.0
3322
  */
3323
- public function get_announcements($course_id = 0){
3324
- $course_id = $this->get_post_id($course_id);
3325
  global $wpdb;
3326
- $query = $wpdb->get_results(
3327
- "SELECT
3328
- {$wpdb -> posts}.ID,
3329
- post_author,
3330
- post_date,
3331
- post_content,
3332
- post_title,
3333
- display_name
3334
- FROM
3335
- {$wpdb -> posts}
3336
- INNER JOIN {$wpdb -> users} ON post_author = {$wpdb -> users}.ID
3337
- WHERE
3338
- post_type = 'tutor_announcements'
3339
- AND post_parent = {$course_id}
3340
- ORDER BY
3341
- {$wpdb -> posts}.ID DESC;
3342
- "
3343
- );
3344
  return $query;
3345
  }
3346
 
@@ -3353,18 +3716,18 @@ class Utils {
3353
  *
3354
  * @since v.1.0.0
3355
  */
3356
-
3357
- public function announcement_content($content = ''){
3358
- $search = array('{user_display_name}');
3359
 
3360
  $user_display_name = 'User';
3361
- if (is_user_logged_in()){
3362
  $user = wp_get_current_user();
3363
  $user_display_name = $user->display_name;
3364
  }
3365
- $replace = array($user_display_name);
3366
 
3367
- return str_replace($search, $replace, $content);
 
 
3368
  }
3369
 
3370
  /**
@@ -3376,11 +3739,11 @@ class Utils {
3376
  *
3377
  * Get the quiz option from meta
3378
  */
3379
- public function get_quiz_option($post_id = 0, $option_key = '', $default = false){
3380
- $post_id = $this->get_post_id($post_id);
3381
- $get_option_meta = maybe_unserialize(get_post_meta($post_id, 'tutor_quiz_option', true));
3382
 
3383
- if ( ! $option_key && ! empty($get_option_meta)) {
3384
  return $get_option_meta;
3385
  }
3386
 
@@ -3388,10 +3751,10 @@ class Utils {
3388
  if ( $value > 0 || $value !== false ) {
3389
  return $value;
3390
  }
 
3391
  return $default;
3392
  }
3393
 
3394
-
3395
  /**
3396
  * @param int $quiz_id
3397
  *
@@ -3399,15 +3762,23 @@ class Utils {
3399
  *
3400
  * Get the questions by quiz ID
3401
  */
3402
- public function get_questions_by_quiz($quiz_id = 0){
3403
- $quiz_id = $this->get_post_id($quiz_id);
3404
  global $wpdb;
3405
 
3406
- $questions = $wpdb->get_results($wpdb->prepare("SELECT * from {$wpdb->prefix}tutor_quiz_questions WHERE quiz_id = %d ORDER BY question_order ASC ", $quiz_id));
 
 
 
 
 
 
 
3407
 
3408
- if (is_array($questions) && count($questions)){
3409
  return $questions;
3410
  }
 
3411
  return false;
3412
  }
3413
 
@@ -3418,11 +3789,19 @@ class Utils {
3418
  *
3419
  * Get Quiz question by question id
3420
  */
3421
- public function get_quiz_question_by_id($question_id = 0){
3422
  global $wpdb;
3423
 
3424
- if ($question_id){
3425
- $question = $wpdb->get_row($wpdb->prepare("SELECT * from {$wpdb->prefix}tutor_quiz_questions WHERE question_id = %d LIMIT 0,1 ;", $question_id));
 
 
 
 
 
 
 
 
3426
  return $question;
3427
  }
3428
 
@@ -3438,41 +3817,44 @@ class Utils {
3438
  *
3439
  * @since v.1.0.0
3440
  */
3441
-
3442
- public function get_question_types($type = null){
3443
  $types = array(
3444
- 'true_false' => array('name' => __('True/False', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="True/False"><i class="tutor-icon-block tutor-icon-yes-no"></i></span>', 'is_pro' => false),
3445
- 'single_choice' => array('name' => __('Single Choice', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Single Choice"><i class="tutor-icon-block tutor-icon-mark"></i></span>', 'is_pro' => false),
3446
- 'multiple_choice' => array('name' => __('Multiple Choice', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Multiple Choicee"><i class="tutor-icon-block tutor-icon-multiple-choice"></i></span>', 'is_pro' => false),
3447
- 'open_ended' => array('name' => __('Open Ended/Essay', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Open/Essay"><i class="tutor-icon-block tutor-icon-open-ended"></i></span>', 'is_pro' => false),
3448
- 'fill_in_the_blank' => array('name' => __('Fill In The Blanks', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Fill In The Blanks"><i class="tutor-icon-block tutor-icon-fill-gaps"></i></span>', 'is_pro' => false),
3449
- 'short_answer' => array('name' => __('Short Answer', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Short Answer"><i class="tutor-icon-block tutor-icon-short-ans"></i></span>', 'is_pro' => true),
3450
- 'matching' => array('name' => __('Matching', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Matching"><i class="tutor-icon-block tutor-icon-matching"></i></span>', 'is_pro' => true),
3451
- 'image_matching' => array('name' => __('Image Matching', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Image Matching"><i class="tutor-icon-block tutor-icon-image-matching"></i></span>', 'is_pro' => true),
3452
- 'image_answering' => array('name' => __('Image Answering', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Image Answering"><i class="tutor-icon-block tutor-icon-image-ans"></i></span>', 'is_pro' => true),
3453
- 'ordering' => array('name' => __('Ordering', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Ordering"><i class="tutor-icon-block tutor-icon-ordering"></i></span>', 'is_pro' => true),
3454
  );
3455
 
3456
- if (isset($types[$type])){
3457
- return $types[$type];
3458
  }
 
3459
  return $types;
3460
  }
3461
 
3462
- public function get_quiz_answer_options_by_question($question_id){
3463
  global $wpdb;
3464
 
3465
- $answer_options = $wpdb->get_results($wpdb->prepare("select
3466
- {$wpdb->comments}.comment_ID,
3467
- {$wpdb->comments}.comment_post_ID,
3468
- {$wpdb->comments}.comment_content
3469
-
3470
- FROM {$wpdb->comments}
3471
- WHERE {$wpdb->comments}.comment_post_ID = %d
3472
- AND {$wpdb->comments}.comment_type = 'quiz_answer_option'
3473
- ORDER BY {$wpdb->comments}.comment_karma ASC ;", $question_id));
3474
-
3475
- if (is_array($answer_options) && count($answer_options)){
 
 
 
3476
  return $answer_options;
3477
  }
3478
  return false;
@@ -3487,11 +3869,17 @@ class Utils {
3487
  *
3488
  * @since v.1.0.0
3489
  */
3490
-
3491
- public function quiz_next_question_order_id($quiz_id){
3492
  global $wpdb;
3493
 
3494
- $last_order = (int) $wpdb->get_var($wpdb->prepare("SELECT MAX(question_order) FROM {$wpdb->prefix}tutor_quiz_questions WHERE quiz_id = %d ;", $quiz_id));
 
 
 
 
 
 
 
3495
  return $last_order + 1;
3496
  }
3497
 
@@ -3503,17 +3891,22 @@ class Utils {
3503
  * new design quiz question
3504
  * @since v.1.0.0
3505
  */
3506
- public function quiz_next_question_id(){
3507
  global $wpdb;
3508
 
3509
- $last_order = (int) $wpdb->get_var("SELECT MAX(question_id) FROM {$wpdb->prefix}tutor_quiz_questions;");
3510
  return $last_order + 1;
3511
  }
3512
 
3513
- public function get_quiz_id_by_question($question_id){
3514
  global $wpdb;
3515
-
3516
- $quiz_id = $wpdb->get_var($wpdb->prepare("SELECT quiz_id FROM {$wpdb->tutor_quiz_questions} WHERE question_id = %d ;", $question_id));
 
 
 
 
 
3517
  return $quiz_id;
3518
  }
3519
 
@@ -3524,16 +3917,30 @@ class Utils {
3524
  *
3525
  * @since v.1.0.0
3526
  */
3527
- public function get_attached_quiz($post_id = 0){
3528
  global $wpdb;
3529
 
3530
- $post_id = $this->get_post_id($post_id);
3531
-
3532
- $questions = $wpdb->get_results($wpdb->prepare("SELECT ID, post_content, post_title, post_parent from {$wpdb->posts} WHERE post_type = 'tutor_quiz' AND post_status = 'publish' AND post_parent = %d", $post_id));
3533
-
3534
- if (is_array($questions) && count($questions)){
 
 
 
 
 
 
 
 
 
 
 
 
 
3535
  return $questions;
3536
  }
 
3537
  return false;
3538
  }
3539
 
@@ -3546,19 +3953,20 @@ class Utils {
3546
  *
3547
  * @since v.1.0.0
3548
  */
3549
-
3550
- public function get_course_by_quiz($quiz_id){
3551
  global $wpdb;
3552
 
3553
- $quiz_id = $this->get_post_id($quiz_id);
3554
- $post = get_post($quiz_id);
3555
 
3556
- if ($post) {
3557
  $course_post_type = tutor()->course_post_type;
3558
- $course = $wpdb->get_row( "select ID, post_author, post_name, post_type, post_parent from {$wpdb->posts} where ID = {$post->post_parent} " );
3559
- if ($course) {
 
 
3560
  if ( $course->post_type !== $course_post_type ) {
3561
- $course = $wpdb->get_row( "select ID, post_author, post_name, post_type, post_parent from {$wpdb->posts} where ID = {$course->post_parent} " );
3562
  }
3563
  return $course;
3564
  }
@@ -3574,12 +3982,18 @@ class Utils {
3574
  *
3575
  * @since v.1.0.0
3576
  */
3577
- public function total_questions_for_student_by_quiz($quiz_id){
3578
- $quiz_id = $this->get_post_id($quiz_id);
3579
  global $wpdb;
3580
 
3581
- $max_questions_count = (int) tutor_utils()->get_quiz_option(get_the_ID(), 'max_questions_for_answer');
3582
- $total_question = (int) $wpdb->get_var($wpdb->prepare("SELECT count(question_id) from {$wpdb->tutor_quiz_questions} where quiz_id = %d", $quiz_id));
 
 
 
 
 
 
3583
 
3584
  return min($max_questions_count, $total_question);
3585
  }
@@ -3593,14 +4007,23 @@ class Utils {
3593
  *
3594
  * @since v.1.0.0
3595
  */
3596
-
3597
- public function is_started_quiz($quiz_id = 0){
3598
  global $wpdb;
3599
 
3600
- $quiz_id = $this->get_post_id($quiz_id);
3601
  $user_id = get_current_user_id();
3602
 
3603
- $is_started = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}tutor_quiz_attempts WHERE user_id = %d AND quiz_id = %d AND attempt_status = 'attempt_started' ", $user_id, $quiz_id));
 
 
 
 
 
 
 
 
 
 
3604
 
3605
  return $is_started;
3606
  }
@@ -3616,15 +4039,21 @@ class Utils {
3616
  *
3617
  * @since v.1.0.0
3618
  */
3619
-
3620
- public function max_questions_for_take_quiz($quiz_id){
3621
- $quiz_id = $this->get_post_id($quiz_id);
3622
  global $wpdb;
3623
 
3624
- $max_questions = (int) $wpdb->get_var($wpdb->prepare("SELECT count(question_id) from {$wpdb->prefix}tutor_quiz_questions where quiz_id = %d ", $quiz_id));
3625
- $max_mentioned = (int) $this->get_quiz_option($quiz_id, 'max_questions_for_answer', 10);
 
 
 
 
 
3626
 
3627
- if ($max_mentioned < $max_questions ){
 
 
3628
  return $max_mentioned;
3629
  }
3630
 
@@ -3640,12 +4069,20 @@ class Utils {
3640
  *
3641
  * @since v.1.0.0
3642
  */
3643
- public function get_attempt($attempt_id = 0){
3644
  global $wpdb;
3645
- if ( ! $attempt_id){
3646
  return false;
3647
  }
3648
- $attempt = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}tutor_quiz_attempts WHERE attempt_id = %d ", $attempt_id));
 
 
 
 
 
 
 
 
3649
  return $attempt;
3650
  }
3651
 
@@ -3658,9 +4095,8 @@ class Utils {
3658
  *
3659
  * @since v.1.0.0
3660
  */
3661
-
3662
- public function quiz_attempt_info($attempt_info){
3663
- return maybe_unserialize($attempt_info);
3664
  }
3665
 
3666
  /**
@@ -3673,14 +4109,14 @@ class Utils {
3673
  *
3674
  * @since v.1.0.0
3675
  */
3676
- public function quiz_update_attempt_info($quiz_attempt_id, $attempt_info = array()){
3677
- $answers = tutor_utils()->avalue_dot('answers', $attempt_info);
3678
- $total_marks = array_sum(wp_list_pluck($answers, 'question_mark'));
3679
- $earned_marks = tutor_utils()->avalue_dot('marks_earned', $attempt_info);
3680
- $earned_mark_percent = $earned_marks > 0 ? ( number_format(($earned_marks * 100) / $total_marks)) : 0;
3681
- update_comment_meta($quiz_attempt_id, 'earned_mark_percent', $earned_mark_percent);
3682
 
3683
- return update_comment_meta($quiz_attempt_id,'quiz_attempt_info', $attempt_info);
3684
  }
3685
 
3686
  /**
@@ -3692,15 +4128,23 @@ class Utils {
3692
  *
3693
  * @since v.1.0.0
3694
  */
3695
-
3696
- public function get_random_question_by_quiz($quiz_id = 0){
3697
  global $wpdb;
3698
 
3699
- $quiz_id = $this->get_post_id($quiz_id);
3700
- $is_attempt = $this->is_started_quiz($quiz_id);
3701
 
3702
  $tempSql = " AND question_type = 'matching' ";
3703
- $questions = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->prefix}tutor_quiz_questions WHERE quiz_id = %d {$tempSql} ORDER BY RAND() LIMIT 0,1 ", $quiz_id));
 
 
 
 
 
 
 
 
 
3704
 
3705
  return $questions;
3706
  }
@@ -3712,35 +4156,43 @@ class Utils {
3712
  *
3713
  * Get random questions by quiz
3714
  */
3715
- public function get_random_questions_by_quiz($quiz_id = 0){
3716
  global $wpdb;
3717
 
3718
- $quiz_id = $this->get_post_id($quiz_id);
3719
- $attempt = $this->is_started_quiz($quiz_id);
3720
  $total_questions = (int) $attempt->total_questions;
3721
- if ( ! $attempt){
3722
  return false;
3723
  }
3724
 
3725
- $questions_order = tutor_utils()->get_quiz_option(get_the_ID(), 'questions_order', 'rand');
3726
 
3727
  $order_by = "";
3728
- if ($questions_order === 'rand'){
3729
  $order_by = "ORDER BY RAND()";
3730
- }elseif ($questions_order === 'asc'){
3731
  $order_by = "ORDER BY question_id ASC";
3732
- }elseif ($questions_order === 'desc'){
3733
  $order_by = "ORDER BY question_id DESC";
3734
- }elseif ($questions_order === 'sorting'){
3735
  $order_by = "ORDER BY question_order ASC";
3736
  }
3737
 
3738
  $limit = '';
3739
- if ($total_questions){
3740
  $limit = "LIMIT {$total_questions} ";
3741
  }
3742
 
3743
- $questions = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->prefix}tutor_quiz_questions WHERE quiz_id = %d {$order_by} {$limit} ", $quiz_id));
 
 
 
 
 
 
 
 
3744
 
3745
  return $questions;
3746
  }
@@ -3755,16 +4207,23 @@ class Utils {
3755
  *
3756
  * @since v.1.0.0
3757
  */
3758
- public function get_answers_by_quiz_question($question_id, $rand = false){
3759
  global $wpdb;
3760
 
3761
- $question = $wpdb->get_row($wpdb->prepare("SELECT * from {$wpdb->prefix}tutor_quiz_questions WHERE question_id = %d ;", $question_id));
3762
- if ( ! $question){
 
 
 
 
 
 
 
3763
  return false;
3764
  }
3765
 
3766
  $order = " answer_order ASC ";
3767
- if ($question->question_type === 'ordering'){
3768
  $order = " RAND() ";
3769
  }
3770
 
@@ -3772,7 +4231,17 @@ class Utils {
3772
  $order = " RAND() ";
3773
  }
3774
 
3775
- $answers = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d AND belongs_question_type = %s order by {$order}", $question_id, $question->question_type));
 
 
 
 
 
 
 
 
 
 
3776
  return $answers;
3777
  }
3778
 
@@ -3787,15 +4256,23 @@ class Utils {
3787
  * @since v.1.0.0
3788
  */
3789
 
3790
- public function quiz_attempts($quiz_id = 0, $user_id = 0){
3791
  global $wpdb;
3792
 
3793
- $quiz_id = $this->get_post_id($quiz_id);
3794
- $user_id = $this->get_user_id($user_id);
3795
 
3796
- $attempts = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->prefix}tutor_quiz_attempts WHERE quiz_id = %d AND user_id = %d ", $quiz_id, $user_id));
 
 
 
 
 
 
 
 
3797
 
3798
- if (is_array($attempts) && count($attempts)){
3799
  return $attempts;
3800
  }
3801
 
@@ -3812,15 +4289,25 @@ class Utils {
3812
  *
3813
  * @since v.1.4.1
3814
  */
3815
- public function quiz_ended_attempts($quiz_id = 0, $user_id = 0){
3816
  global $wpdb;
3817
 
3818
- $quiz_id = $this->get_post_id($quiz_id);
3819
- $user_id = $this->get_user_id($user_id);
3820
-
3821
- $attempts = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->prefix}tutor_quiz_attempts WHERE quiz_id = %d AND user_id = %d AND attempt_status != 'attempt_started' ", $quiz_id, $user_id));
3822
-
3823
- if (is_array($attempts) && count($attempts)){
 
 
 
 
 
 
 
 
 
 
3824
  return $attempts;
3825
  }
3826
 
@@ -3837,13 +4324,20 @@ class Utils {
3837
  *
3838
  * @since v.1.0.0
3839
  */
3840
- public function get_all_quiz_attempts_by_user($user_id = 0){
3841
  global $wpdb;
3842
 
3843
- $user_id = $this->get_user_id($user_id);
3844
- $attempts = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->prefix}tutor_quiz_attempts WHERE user_id = %d ORDER BY attempt_id DESC ", $user_id));
3845
-
3846
- if (is_array($attempts) && count($attempts)){
 
 
 
 
 
 
 
3847
  return $attempts;
3848
  }
3849
 
@@ -3859,21 +4353,27 @@ class Utils {
3859
  *
3860
  * @since v.1.0.0
3861
  */
3862
-
3863
- public function get_total_quiz_attempts($search_term = ''){
3864
  global $wpdb;
3865
 
3866
- if ($search_term){
3867
- $search_term = " AND ( user_email like '%{$search_term}%' OR display_name like '%{$search_term}%' OR post_title like '%{$search_term}%' ) ";
3868
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3869
 
3870
- $count = $wpdb->get_var("SELECT COUNT(attempt_id)
3871
- FROM {$wpdb->prefix}tutor_quiz_attempts quiz_attempts
3872
- INNER JOIN {$wpdb->posts} quiz
3873
- ON quiz_attempts.quiz_id = quiz.ID
3874
- INNER JOIN {$wpdb->users}
3875
- ON quiz_attempts.user_id = {$wpdb->users}.ID
3876
- WHERE 1=1 AND attempt_status != 'attempt_started' {$search_term} ");
3877
  return (int) $count;
3878
  }
3879
 
@@ -3889,66 +4389,95 @@ class Utils {
3889
  *
3890
  * @since v.1.0.0
3891
  */
3892
- public function get_quiz_attempts($start = 0, $limit = 10, $search_term = '') {
3893
  global $wpdb;
3894
 
3895
- if ($search_term){
3896
- $search_term = " AND ( user_email like '%{$search_term}%' OR display_name like '%{$search_term}%' OR post_title like '%{$search_term}%' ) ";
3897
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3898
 
3899
- $query = $wpdb->get_results("SELECT *
3900
- FROM {$wpdb->prefix}tutor_quiz_attempts quiz_attempts
3901
- INNER JOIN {$wpdb->posts} quiz
3902
- ON quiz_attempts.quiz_id = quiz.ID
3903
- INNER JOIN {$wpdb->users}
3904
- ON quiz_attempts.user_id = {$wpdb->users}.ID
3905
- WHERE 1=1 AND attempt_status != 'attempt_started' {$search_term}
3906
- ORDER BY quiz_attempts.attempt_id DESC
3907
- LIMIT {$start},{$limit}; ");
3908
  return $query;
3909
  }
3910
 
3911
- public function get_quiz_attempts_by_course_ids($start = 0, $limit = 10, $course_ids = array(), $search_term = '') {
3912
  global $wpdb;
3913
 
3914
- if ($search_term){
3915
- $search_term = " AND ( user_email like '%{$search_term}%' OR display_name like '%{$search_term}%' OR post_title like '%{$search_term}%' ) ";
3916
- }
3917
-
3918
- $course_ids_in = implode(',', $course_ids);
3919
- $sql = " AND quiz_attempts.course_id IN({$course_ids_in}) ";
3920
- $search_term = $sql.$search_term;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3921
 
3922
- $query = $wpdb->get_results($wpdb->prepare("SELECT *
3923
- FROM {$wpdb->prefix}tutor_quiz_attempts quiz_attempts
3924
- INNER JOIN {$wpdb->posts} quiz
3925
- ON quiz_attempts.quiz_id = quiz.ID
3926
- INNER JOIN {$wpdb->users}
3927
- ON quiz_attempts.user_id = {$wpdb->users}.ID
3928
- WHERE 1=1 AND attempt_status != 'attempt_started' {$search_term}
3929
- ORDER BY quiz_attempts.attempt_id DESC
3930
- LIMIT %d, %d; ", $start, $limit));
3931
  return $query;
3932
  }
3933
 
3934
- public function get_total_quiz_attempts_by_course_ids($course_ids = array(), $search_term = ''){
3935
  global $wpdb;
3936
-
3937
- if ($search_term){
3938
- $search_term = " AND ( user_email like '%{$search_term}%' OR display_name like '%{$search_term}%' OR post_title like '%{$search_term}%' ) ";
3939
- }
3940
-
3941
- $course_ids_in = implode(',', $course_ids);
3942
- $sql = " AND quiz_attempts.course_id IN({$course_ids_in}) ";
3943
- $search_term = $sql.$search_term;
3944
-
3945
- $count = $wpdb->get_var("SELECT COUNT(attempt_id)
3946
- FROM {$wpdb->prefix}tutor_quiz_attempts quiz_attempts
3947
- INNER JOIN {$wpdb->posts} quiz
3948
- ON quiz_attempts.quiz_id = quiz.ID
3949
- INNER JOIN {$wpdb->users}
3950
- ON quiz_attempts.user_id = {$wpdb->users}.ID
3951
- WHERE 1=1 AND attempt_status != 'attempt_started' {$search_term} ");
 
 
 
 
 
 
 
 
 
3952
  return (int) $count;
3953
  }
3954
 
@@ -3961,19 +4490,27 @@ class Utils {
3961
  *
3962
  * @since v.1.0.0
3963
  */
3964
- public function get_quiz_answers_by_attempt_id($attempt_id){
3965
  global $wpdb;
3966
 
3967
- $results = $wpdb->get_results($wpdb->prepare("SELECT answers.*, question.question_title, question.question_type
3968
- FROM {$wpdb->prefix}tutor_quiz_attempt_answers answers
3969
- LEFT JOIN {$wpdb->prefix}tutor_quiz_questions question ON answers.question_id = question.question_id
3970
- WHERE answers.quiz_attempt_id = %d ORDER BY attempt_answer_id ASC ;", $attempt_id));
 
 
 
 
 
 
 
 
3971
 
3972
  return $results;
3973
  }
3974
 
3975
  /**
3976
- * @param $answer_id
3977
  *
3978
  * @return array|null|object
3979
  *
@@ -3981,20 +4518,29 @@ class Utils {
3981
  *
3982
  * @since v.1.0.0
3983
  */
3984
- public function get_answer_by_id($answer_id){
3985
  global $wpdb;
3986
 
3987
- if (is_array($answer_id)){
3988
- $in_ids = implode(",", $answer_id);
3989
- $sql = "answer.answer_id IN({$in_ids})";
3990
- }else{
3991
- $sql = "answer.answer_id = {$answer_id}";
3992
- }
3993
 
3994
- $answer = $wpdb->get_results("SELECT answer.*, question.question_title, question.question_type
3995
- FROM {$wpdb->prefix}tutor_quiz_question_answers answer
3996
- LEFT JOIN {$wpdb->prefix}tutor_quiz_questions question ON answer.belongs_question_id = question.question_id
3997
- WHERE 1=1 AND {$sql} ");
 
 
 
 
 
 
 
 
 
 
3998
 
3999
  return $answer;
4000
  }
@@ -4008,24 +4554,28 @@ class Utils {
4008
  *
4009
  * @since v.1.0.0
4010
  */
4011
-
4012
- public function get_quiz_answers_by_ids($ids){
4013
  $ids = (array) $ids;
4014
 
4015
- if (!count($ids)){
4016
  return false;
4017
  }
4018
 
4019
  $in_ids = implode(",", $ids);
4020
 
4021
  global $wpdb;
4022
- $query = $wpdb->get_results("SELECT
4023
- comment_ID,
4024
- comment_content
4025
- FROM {$wpdb->comments}
4026
- WHERE comment_type = 'quiz_answer_option' AND comment_ID IN({$in_ids}) ");
4027
 
4028
- if (is_array($query) && count($query)){
 
 
 
 
 
 
 
 
 
 
4029
  return $query;
4030
  }
4031
 
@@ -4041,19 +4591,18 @@ class Utils {
4041
  *
4042
  * @since v.1.0.0
4043
  */
4044
-
4045
- public function course_levels($level = null){
4046
- $levels = apply_filters('tutor_course_level', array(
4047
- 'all_levels' => __('All Levels', 'tutor'),
4048
- 'beginner' => __('Beginner', 'tutor'),
4049
- 'intermediate' => __('Intermediate', 'tutor'),
4050
- 'expert' => __('Expert', 'tutor'),
4051
  ));
4052
 
4053
- if ($level){
4054
- if (isset($levels[$level])){
4055
- return $levels[$level];
4056
- }else{
4057
  return '';
4058
  }
4059
  }
@@ -4068,23 +4617,23 @@ class Utils {
4068
  *
4069
  * @since v.1.0.0
4070
  */
4071
- public function user_profile_permalinks(){
4072
  $permalinks = array(
4073
- 'courses_taken' => __('Courses Taken', 'tutor'),
4074
  );
4075
 
4076
- $show_enrolled_course = tutor_utils()->get_option('show_courses_completed_by_student');
4077
- $enable_show_reviews_wrote = tutor_utils()->get_option('students_own_review_show_at_profile');
4078
 
4079
- if ($show_enrolled_course){
4080
- $permalinks['enrolled_course'] = __('Enrolled Course', 'tutor');
4081
- }
4082
- if ($enable_show_reviews_wrote){
4083
- $permalinks['reviews_wrote'] = __('Reviews Written', 'tutor');
4084
  }
4085
 
 
 
 
4086
 
4087
- return apply_filters('tutor_public_profile/permalinks', $permalinks);
4088
  }
4089
 
4090
  /**
@@ -4094,14 +4643,16 @@ class Utils {
4094
  *
4095
  * @since v.1.0.0
4096
  */
4097
- public function student_register_url(){
4098
- $student_register_page = (int) $this->get_option('student_register_page');
4099
 
4100
- if ($student_register_page){
4101
- return get_the_permalink($student_register_page);
4102
  }
 
4103
  return false;
4104
  }
 
4105
  /**
4106
  * @return bool|false|string
4107
  *
@@ -4109,12 +4660,13 @@ class Utils {
4109
  *
4110
  * @since v.1.2.13
4111
  */
4112
- public function instructor_register_url(){
4113
- $instructor_register_page = (int) $this->get_option('instructor_register_page');
4114
 
4115
- if ($instructor_register_page){
4116
- return get_the_permalink($instructor_register_page);
4117
  }
 
4118
  return false;
4119
  }
4120
 
@@ -4123,10 +4675,10 @@ class Utils {
4123
  *
4124
  * Get frontend dashboard URL
4125
  */
4126
- public function tutor_dashboard_url($sub_url = ''){
4127
- $page_id = (int) tutor_utils()->get_option('tutor_dashboard_page_id');
4128
- $page_id = apply_filters('tutor_dashboard_page_id', $page_id);
4129
- return trailingslashit(get_the_permalink($page_id)).$sub_url;
4130
  }
4131
 
4132
  /**
@@ -4135,9 +4687,9 @@ class Utils {
4135
  * @return int
4136
  *
4137
  */
4138
- public function dashboard_page_id(){
4139
- $page_id = (int) tutor_utils()->get_option('tutor_dashboard_page_id');
4140
- $page_id = apply_filters('tutor_dashboard_page_id', $page_id);
4141
  return $page_id;
4142
  }
4143
 
@@ -4151,15 +4703,24 @@ class Utils {
4151
  *
4152
  * @since v.1.0.0
4153
  */
4154
- public function is_wishlisted($course_id = 0, $user_id = 0){
4155
- $course_id = $this->get_post_id($course_id);
4156
- $user_id = $this->get_user_id($user_id);
4157
- if ( ! $user_id){
4158
  return false;
4159
  }
4160
 
4161
  global $wpdb;
4162
- $if_added_to_list = (bool) $wpdb->get_row("SELECT * from {$wpdb->usermeta} WHERE user_id = {$user_id} AND meta_key = '_tutor_course_wishlist' AND meta_value = {$course_id} ;");
 
 
 
 
 
 
 
 
 
4163
 
4164
  return $if_added_to_list;
4165
  }
@@ -4173,19 +4734,29 @@ class Utils {
4173
  *
4174
  * @since v.1.0.0
4175
  */
4176
- public function get_wishlist($user_id = 0){
4177
- $user_id = $this->get_user_id($user_id);
 
 
4178
  $course_post_type = tutor()->course_post_type;
4179
 
4180
- global $wpdb;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4181
 
4182
- $query = "SELECT $wpdb->posts.*
4183
- FROM $wpdb->posts
4184
- LEFT JOIN $wpdb->usermeta ON ($wpdb->posts.ID = $wpdb->usermeta.meta_value)
4185
- WHERE post_type = '{$course_post_type}' AND post_status = 'publish' AND $wpdb->usermeta.meta_key = '_tutor_course_wishlist'
4186
- AND $wpdb->usermeta.user_id = {$user_id}
4187
- ORDER BY $wpdb->usermeta.umeta_id DESC ";
4188
- $pageposts = $wpdb->get_results($query, OBJECT);
4189
  return $pageposts;
4190
  }
4191
 
@@ -4198,19 +4769,26 @@ class Utils {
4198
  *
4199
  * @since v.1.0.0
4200
  */
4201
- public function most_popular_courses($limit = 10){
4202
  global $wpdb;
4203
 
4204
- $courses = $wpdb->get_results($wpdb->prepare("
4205
- SELECT COUNT(enrolled.ID) as total_enrolled,
4206
- enrolled.post_parent as course_id,
4207
- course.*
4208
- from {$wpdb->posts} enrolled
4209
- INNER JOIN {$wpdb->posts} course ON enrolled.post_parent = course.ID
4210
- WHERE enrolled.post_type = 'tutor_enrolled' AND enrolled.post_status = 'completed'
4211
-
4212
- GROUP BY course_id
4213
- ORDER BY total_enrolled DESC LIMIT 0, %d ;", $limit));
 
 
 
 
 
 
 
4214
 
4215
  return $courses;
4216
  }
@@ -4224,23 +4802,32 @@ class Utils {
4224
  *
4225
  * @since v.1.0.0
4226
  */
4227
- public function most_rated_courses($limit = 10){
4228
  global $wpdb;
4229
 
4230
- $result = $wpdb->get_results($wpdb->prepare("
4231
- SELECT COUNT(comment_ID) AS total_rating,
4232
- comment_ID,
4233
- comment_post_ID,
4234
- course.*
4235
- FROM {$wpdb->comments}
4236
- INNER JOIN {$wpdb->posts} course ON comment_post_ID = course.ID
4237
- WHERE {$wpdb->comments}.comment_type = 'tutor_course_rating' AND {$wpdb->comments}.comment_approved = 'approved'
4238
- GROUP BY comment_post_ID ORDER BY total_rating DESC LIMIT 0, %d
4239
- ;", $limit));
4240
-
4241
- if (is_array($result) && count($result)){
 
 
 
 
 
 
 
 
4242
  return $result;
4243
  }
 
4244
  return false;
4245
  }
4246
 
@@ -4253,15 +4840,15 @@ class Utils {
4253
  *
4254
  * @since v.1.0.0
4255
  */
4256
- public function get_addon_config($addon_field = null){
4257
- if ( ! $addon_field){
4258
  return false;
4259
  }
4260
 
4261
- $addonsConfig = maybe_unserialize(get_option('tutor_addons_config'));
4262
 
4263
- if (isset($addonsConfig[$addon_field])){
4264
- return $addonsConfig[$addon_field];
4265
  }
4266
 
4267
  return false;
@@ -4276,18 +4863,18 @@ class Utils {
4276
  */
4277
  function get_ip() {
4278
  $ipaddress = '';
4279
- if (getenv('HTTP_CLIENT_IP'))
4280
- $ipaddress = getenv('HTTP_CLIENT_IP');
4281
- else if(getenv('HTTP_X_FORWARDED_FOR'))
4282
- $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
4283
- else if(getenv('HTTP_X_FORWARDED'))
4284
- $ipaddress = getenv('HTTP_X_FORWARDED');
4285
- else if(getenv('HTTP_FORWARDED_FOR'))
4286
- $ipaddress = getenv('HTTP_FORWARDED_FOR');
4287
- else if(getenv('HTTP_FORWARDED'))
4288
- $ipaddress = getenv('HTTP_FORWARDED');
4289
- else if(getenv('REMOTE_ADDR'))
4290
- $ipaddress = getenv('REMOTE_ADDR');
4291
  else
4292
  $ipaddress = 'UNKNOWN';
4293
  return $ipaddress;
@@ -4300,16 +4887,15 @@ class Utils {
4300
  *
4301
  * @since v.1.0.4
4302
  */
4303
-
4304
- public function tutor_social_share_icons(){
4305
  $icons = array(
4306
- 'facebook' => array('share_class' => 's_facebook', 'icon_html' => '<i class="tutor-icon-facebook"></i>' ),
4307
- 'twitter' => array('share_class' => 's_twitter', 'icon_html' => '<i class="tutor-icon-twitter"></i>' ),
4308
- 'linkedin' => array('share_class' => 's_linkedin', 'icon_html' => '<i class="tutor-icon-linkedin"></i>' ),
4309
- 'tumblr' => array('share_class' => 's_tumblr', 'icon_html' => '<i class="tutor-icon-tumblr"></i>' ),
4310
  );
4311
 
4312
- return apply_filters('tutor_social_share_icons', $icons);
4313
  }
4314
 
4315
  /**
@@ -4319,37 +4905,36 @@ class Utils {
4319
  *
4320
  * @since v.1.3.7
4321
  */
4322
-
4323
- public function tutor_user_social_icons(){
4324
  $icons = array(
4325
  '_tutor_profile_website' => array(
4326
- 'label' => __('Website URL', 'tutor'),
4327
- 'placeholder' => 'https://example.com/',
4328
- 'icon_classes' => 'tutor-icon-earth'
4329
  ),
4330
  '_tutor_profile_github' => array(
4331
- 'label' => __('Github URL', 'tutor'),
4332
- 'placeholder' => 'https://github.com/username',
4333
- 'icon_classes' => 'tutor-icon-github-logo'
4334
  ),
4335
  '_tutor_profile_facebook' => array(
4336
- 'label' => __('Facebook URL', 'tutor'),
4337
- 'placeholder' => 'https://facebook.com/username',
4338
- 'icon_classes' => 'tutor-icon-facebook'
4339
  ),
4340
  '_tutor_profile_twitter' => array(
4341
- 'label' => __('Twitter URL', 'tutor'),
4342
- 'placeholder' => 'https://twitter.com/username',
4343
- 'icon_classes' => 'tutor-icon-twitter'
4344
  ),
4345
  '_tutor_profile_linkedin' => array(
4346
- 'label' => __('Linkedin URL', 'tutor'),
4347
- 'placeholder' => 'https://linkedin.com/username',
4348
- 'icon_classes' => 'tutor-icon-linkedin'
4349
  ),
4350
  );
4351
 
4352
- return apply_filters('tutor_user_social_icons', $icons);
4353
  }
4354
 
4355
  /**
@@ -4361,10 +4946,11 @@ class Utils {
4361
  *
4362
  * @since v.1.0.4
4363
  */
4364
- public function count($array = array()){
4365
- if (is_array($array) && count($array)){
4366
- return count($array);
4367
  }
 
4368
  return false;
4369
  }
4370
 
@@ -4375,7 +4961,7 @@ class Utils {
4375
  *
4376
  * @since v.1.1.2
4377
  */
4378
- public function tutor_get_screen_ids(){
4379
  $screen_ids = array(
4380
  "edit-course",
4381
  "course",
@@ -4392,10 +4978,9 @@ class Utils {
4392
  "tutor-lms_page_tutor_emails",
4393
  );
4394
 
4395
- return apply_filters('tutor_get_screen_ids', $screen_ids);
4396
  }
4397
 
4398
-
4399
  /**
4400
  * @return mixed
4401
  *
@@ -4403,7 +4988,7 @@ class Utils {
4403
  *
4404
  * @since v.1.1.2
4405
  */
4406
- public function get_earnings_completed_statuses(){
4407
  return apply_filters(
4408
  'tutor_get_earnings_completed_statuses',
4409
  array (
@@ -4424,48 +5009,55 @@ class Utils {
4424
  *
4425
  * @since v.1.1.2
4426
  */
4427
-
4428
- public function get_earning_sum($user_id = 0, $date_filter = array()){
4429
  global $wpdb;
4430
 
4431
- $user_id = $this->get_user_id($user_id);
4432
  $date_query = '';
4433
- if ($this->count($date_filter)){
4434
- extract($date_filter);
4435
 
4436
- if ( ! empty($dataFor)){
4437
- if ($dataFor === 'yearly'){
4438
- if (empty($year)){
4439
- $year = date('Y');
 
 
 
4440
  }
4441
  $date_query = "AND YEAR(created_at) = {$year} ";
4442
  }
4443
- }else{
4444
  $date_query = " AND (created_at BETWEEN '{$start_date}' AND '{$end_date}') ";
4445
  }
4446
  }
4447
 
4448
  $complete_status = tutor_utils()->get_earnings_completed_statuses();
4449
- $complete_status = "'".implode("','", $complete_status)."'";
4450
-
4451
- $earning_sum = $wpdb->get_row("SELECT SUM(course_price_total) as course_price_total,
4452
- SUM(course_price_grand_total) as course_price_grand_total,
4453
- SUM(instructor_amount) as instructor_amount,
4454
- (SELECT SUM(amount) FROM {$wpdb->prefix}tutor_withdraws WHERE user_id = {$user_id} AND status != 'rejected' ) as
4455
- withdraws_amount,
4456
- SUM(admin_amount) as admin_amount,
4457
- SUM(deduct_fees_amount) as deduct_fees_amount
4458
- FROM {$wpdb->prefix}tutor_earnings
4459
- WHERE user_id = {$user_id} AND order_status IN({$complete_status}) {$date_query} ");
 
 
 
 
 
 
 
 
 
4460
 
4461
  //TODO: need to check
4462
  // (SUM(instructor_amount) - (SELECT withdraws_amount) ) as balance,
4463
 
4464
-
4465
- if ( $earning_sum->course_price_total){
4466
  $earning_sum->balance = $earning_sum->instructor_amount - $earning_sum->withdraws_amount;
4467
- }else{
4468
-
4469
  $earning_sum = (object) array(
4470
  'course_price_total' => 0,
4471
  'course_price_grand_total' => 0,
@@ -4490,7 +5082,7 @@ class Utils {
4490
  *
4491
  * @since v.1.1.2
4492
  */
4493
- public function get_earning_statements($user_id = 0, $filter_data = array()){
4494
  global $wpdb;
4495
 
4496
  $user_sql = "";
@@ -4505,29 +5097,28 @@ class Utils {
4505
  /**
4506
  * Query by Date Filter
4507
  */
4508
- if ($this->count($filter_data)){
4509
- extract($filter_data);
4510
 
4511
- if ( ! empty($dataFor)){
4512
- if ($dataFor === 'yearly'){
4513
- if (empty($year)){
4514
- $year = date('Y');
4515
  }
4516
  $date_query = "AND YEAR(created_at) = {$year} ";
4517
  }
4518
- }else{
4519
  $date_query = " AND (created_at BETWEEN '{$start_date}' AND '{$end_date}') ";
4520
  }
4521
 
4522
  /**
4523
  * Query by order status related to this earning transaction
4524
  */
4525
- if ( ! empty($statuses)) {
4526
  if ( $this->count( $statuses ) ) {
4527
  $status = "'" . implode( "','", $statuses ) . "'";
4528
  $query_by_status = "AND order_status IN({$status})";
4529
  } elseif ( $statuses === 'completed' ) {
4530
-
4531
  $get_earnings_completed_statuses = $this->get_earnings_completed_statuses();
4532
  if ( $this->count( $get_earnings_completed_statuses ) ) {
4533
  $status = "'" . implode( "','", $get_earnings_completed_statuses ) . "'";
@@ -4536,28 +5127,35 @@ class Utils {
4536
  }
4537
  }
4538
 
4539
- if ( ! empty($per_page)){
4540
- $offset = (int) ! empty($offset) ? $offset : 0;
4541
-
4542
  $pagination_query = " LIMIT {$offset}, {$per_page} ";
4543
-
4544
  }
4545
-
4546
-
4547
  }
4548
 
4549
- $query = $wpdb->get_results("SELECT earning_tbl.*, course.post_title as course_title
4550
- FROM {$wpdb->prefix}tutor_earnings earning_tbl
4551
- LEFT JOIN {$wpdb->posts} course ON earning_tbl.course_id = course.ID
4552
- WHERE 1=1 {$user_sql} {$date_query} {$query_by_status} ORDER BY created_at DESC {$pagination_query} ");
4553
-
4554
-
4555
- $query_count = (int) $wpdb->get_var("SELECT COUNT(earning_tbl.earning_id)
4556
- FROM {$wpdb->prefix}tutor_earnings earning_tbl
4557
- WHERE 1=1 {$user_sql} {$date_query} {$query_by_status} ORDER BY created_at DESC ");
 
 
 
 
 
 
 
 
 
 
 
4558
 
4559
  return (object) array(
4560
- 'count' => $query_count,
4561
  'results' => $query,
4562
  );
4563
  }
@@ -4571,14 +5169,13 @@ class Utils {
4571
  *
4572
  * @since v.1.1.2
4573
  */
4574
-
4575
- public function tutor_price($price = 0){
4576
- if (function_exists('wc_price')){
4577
- return wc_price($price);
4578
- }elseif (function_exists('edd_currency_filter')){
4579
- return edd_currency_filter(edd_format_amount($price));
4580
  }else{
4581
- return number_format_i18n($price);
4582
  }
4583
  }
4584
 
@@ -4589,21 +5186,20 @@ class Utils {
4589
  *
4590
  * @since v.1.3.4
4591
  */
4592
-
4593
- public function currency_symbol(){
4594
- $enable_tutor_edd = tutor_utils()->get_option('enable_tutor_edd');
4595
- $monetize_by = $this->get_option('monetize_by');
4596
 
4597
  $symbol = '&#36;';
4598
- if ($enable_tutor_edd && function_exists('edd_currency_symbol')){
4599
  $symbol = edd_currency_symbol();
4600
  }
4601
 
4602
- if ($monetize_by === 'wc' && function_exists('get_woocommerce_currency_symbol') ){
4603
  $symbol = get_woocommerce_currency_symbol();
4604
  }
4605
 
4606
- return apply_filters('get_tutor_currency_symbol', $symbol);
4607
  }
4608
 
4609
  /**
@@ -4613,12 +5209,12 @@ class Utils {
4613
  *
4614
  * Get withdraw method for a specific
4615
  */
4616
- public function get_user_withdraw_method($user_id = 0){
4617
- $user_id = $this->get_user_id($user_id);
 
4618
 
4619
- $account = get_user_meta($user_id, '_tutor_withdraw_method_data', true);
4620
- if ($account){
4621
- return maybe_unserialize($account);
4622
  }
4623
 
4624
  return false;
@@ -4632,59 +5228,73 @@ class Utils {
4632
  *
4633
  * @return object
4634
  */
4635
- public function get_withdrawals_history($user_id = 0, $filter = array()){
4636
  global $wpdb;
4637
 
4638
  $filter = (array) $filter;
4639
  extract($filter);
4640
 
4641
  $query_by_status_sql = "";
4642
- $query_by_user_sql = "";
4643
  $query_by_pagination = "";
4644
 
4645
- if ( ! empty($status)){
4646
  $status = (array) $status;
4647
- $status = "'".implode("','", $status)."'";
4648
 
4649
  $query_by_status_sql = " AND status IN({$status}) ";
4650
  }
4651
 
4652
- if ( ! empty($per_page)){
4653
- if ( empty($start))
4654
  $start = 0;
4655
 
4656
  $query_by_pagination = " LIMIT {$start}, {$per_page} ";
4657
  }
4658
 
4659
- if ($user_id){
4660
  $query_by_user_sql = " AND user_id = {$user_id} ";
4661
  }
4662
 
4663
-
4664
- $count = (int) $wpdb->get_var("SELECT COUNT(withdraw_id) FROM {$wpdb->prefix}tutor_withdraws WHERE 1=1 {$query_by_user_sql} {$query_by_status_sql} ");
4665
-
4666
- $results = $wpdb->get_results("SELECT withdraw_tbl.*,
4667
- user_tbl.display_name as user_name,
4668
- user_tbl.user_email
4669
- FROM {$wpdb->prefix}tutor_withdraws withdraw_tbl
4670
- INNER JOIN {$wpdb->users} user_tbl ON withdraw_tbl.user_id = user_tbl.ID
4671
- WHERE 1=1
4672
- {$query_by_user_sql}
4673
- {$query_by_status_sql} ORDER BY
4674
- created_at DESC {$query_by_pagination} ");
 
 
 
 
 
 
 
 
 
 
 
 
 
4675
 
4676
  $withdraw_history = array(
4677
- 'count' => 0,
4678
  'results' => null,
4679
  );
4680
 
4681
- if ($count){
4682
  $withdraw_history['count'] = $count;
4683
  }
4684
 
4685
- if (tutor_utils()->count($results)){
4686
  $withdraw_history['results'] = $results;
4687
  }
 
4688
  return (object) $withdraw_history;
4689
 
4690
  }
@@ -4694,20 +5304,20 @@ class Utils {
4694
  *
4695
  * Add Instructor role to any user by user iD
4696
  */
4697
- public function add_instructor_role($instructor_id = 0){
4698
- if ( ! $instructor_id){
4699
  return;
4700
  }
4701
- do_action('tutor_before_approved_instructor', $instructor_id);
4702
 
4703
- update_user_meta($instructor_id, '_is_tutor_instructor', tutor_time());
4704
- update_user_meta($instructor_id, '_tutor_instructor_status', 'approved');
4705
- update_user_meta($instructor_id, '_tutor_instructor_approved', tutor_time());
4706
 
4707
- $instructor = new \WP_User($instructor_id);
4708
- $instructor->add_role(tutor()->instructor_role);
4709
 
4710
- do_action('tutor_after_approved_instructor', $instructor_id);
4711
  }
4712
 
4713
  /**
@@ -4715,18 +5325,18 @@ class Utils {
4715
  *
4716
  * Remove instructor role by instructor id
4717
  */
4718
- public function remove_instructor_role($instructor_id = 0){
4719
- if ( ! $instructor_id){
4720
  return;
4721
  }
4722
 
4723
- do_action('tutor_before_blocked_instructor', $instructor_id);
4724
- delete_user_meta($instructor_id, '_is_tutor_instructor');
4725
- update_user_meta($instructor_id, '_tutor_instructor_status', 'blocked');
4726
 
4727
- $instructor = new \WP_User($instructor_id);
4728
- $instructor->remove_role(tutor()->instructor_role);
4729
- do_action('tutor_after_blocked_instructor', $instructor_id);
4730
  }
4731
 
4732
  /**
@@ -4735,7 +5345,7 @@ class Utils {
4735
  *
4736
  * Set Flash Message to view in next action / route
4737
  */
4738
- public function set_flash_msg($msg = '', $name = 'success'){
4739
  global $wp_filesystem;
4740
  if ( ! $wp_filesystem ) {
4741
  require_once( ABSPATH . 'wp-admin/includes/file.php' );
@@ -4743,13 +5353,14 @@ class Utils {
4743
 
4744
  $filename = "tutor_flash_msg_{$name}.txt";
4745
  $upload_dir = wp_upload_dir();
4746
- $dir = trailingslashit($upload_dir['basedir']) . 'tutor/';
4747
 
4748
  WP_Filesystem( false, $upload_dir['basedir'], true );
4749
 
4750
- if( ! $wp_filesystem->is_dir( $dir ) ) {
4751
  $wp_filesystem->mkdir( $dir );
4752
  }
 
4753
  $wp_filesystem->put_contents( $dir . $filename, $msg );
4754
  }
4755
 
@@ -4760,23 +5371,23 @@ class Utils {
4760
  *
4761
  * Get Flash Message
4762
  */
4763
- public function get_flash_msg($name = null){
4764
- if ( ! $name){
4765
  return '';
4766
  }
4767
 
4768
  $upload_dir = wp_get_upload_dir();
4769
- $upload_dir = trailingslashit($upload_dir['basedir']);
4770
- $msg_name = 'tutor_flash_msg_'.$name;
4771
 
4772
  $msg = '';
4773
  $flash_msg_file_name = $upload_dir."tutor/{$msg_name}.txt";
4774
- if (file_exists($flash_msg_file_name)){
4775
- $msg = file_get_contents($flash_msg_file_name);
4776
- unlink($flash_msg_file_name);
4777
  }
4778
 
4779
- return apply_filters('tutor_get_flash_msg', $msg, $name);
4780
  }
4781
 
4782
  /**
@@ -4786,38 +5397,39 @@ class Utils {
4786
  *
4787
  * Get purchase history by customer id
4788
  */
4789
-
4790
- public function get_orders_by_user_id($user_id = 0){
4791
  global $wpdb;
4792
 
4793
- $user_id = $this->get_user_id();
4794
- $monetize_by = tutils()->get_option('monetize_by');
4795
 
4796
  $post_type = "";
4797
  $user_meta = "";
4798
- if ($monetize_by === 'wc') {
 
4799
  $post_type = "shop_order";
4800
  $user_meta = "_customer_user";
4801
- } else if ($monetize_by === 'edd') {
4802
  $post_type = "edd_payment";
4803
  $user_meta = "_edd_payment_user_id";
4804
  }
4805
 
4806
- $orders = $wpdb->get_results(
4807
- " SELECT
4808
- {$wpdb -> posts}.*
4809
- FROM
4810
- {$wpdb -> posts}
4811
- INNER JOIN {$wpdb -> postmeta} customer ON id = customer.post_id
4812
- AND customer.meta_key = '{$user_meta}'
4813
- INNER JOIN {$wpdb -> postmeta} tutor_order ON id = tutor_order.post_id
4814
- AND tutor_order.meta_key = '_is_tutor_order_for_course'
4815
- WHERE
4816
- post_type = '{$post_type}'
4817
- AND customer.meta_value = {$user_id}
4818
- ORDER BY
4819
- {$wpdb -> posts}.id DESC
4820
- ");
 
4821
 
4822
  return $orders;
4823
  }
@@ -4831,16 +5443,16 @@ class Utils {
4831
  *
4832
  * @since v.1.3.1
4833
  */
4834
- public function order_status_context($status = null){
4835
- $status = str_replace('wc-', '', $status);
4836
- $status_name = ucwords(str_replace('-', ' ', $status));
4837
 
4838
  return "<span class='label-order-status label-status-{$status}'>$status_name</span>";
4839
  }
4840
 
4841
- public function get_course_id_by_assignment($assignment_id = 0){
4842
- $assignment_id = $this->get_post_id($assignment_id);
4843
- return get_post_meta($assignment_id, '_tutor_course_id_for_assignments', true);
4844
  }
4845
 
4846
  /**
@@ -4854,18 +5466,20 @@ class Utils {
4854
  *
4855
  * @since v.1.3.3
4856
  */
4857
- public function get_assignment_option($assignment_id = 0, $option_key = '', $default = false){
4858
- $assignment_id = $this->get_post_id($assignment_id);
4859
- $get_option_meta = maybe_unserialize(get_post_meta($assignment_id, 'assignment_option', true));
4860
 
4861
- if ( ! $option_key && ! empty($get_option_meta)) {
4862
  return $get_option_meta;
4863
  }
4864
 
4865
  $value = $this->avalue_dot( $option_key, $get_option_meta );
 
4866
  if ( $value ) {
4867
  return $value;
4868
  }
 
4869
  return $default;
4870
  }
4871
 
@@ -4879,17 +5493,25 @@ class Utils {
4879
  *
4880
  * @since v.1.3.3
4881
  */
4882
- public function is_assignment_submitting($assignment_id = 0, $user_id = 0){
4883
  global $wpdb;
4884
 
4885
- $assignment_id = $this->get_post_id($assignment_id);
4886
- $user_id = $this->get_user_id($user_id);
4887
-
4888
- $is_running_submit = (int) $wpdb->get_var($wpdb->prepare("SELECT comment_ID FROM {$wpdb->comments}
4889
- WHERE comment_type = 'tutor_assignment'
4890
- AND comment_approved = 'submitting'
4891
- AND user_id = %d
4892
- AND comment_post_ID = %d", $user_id, $assignment_id));
 
 
 
 
 
 
 
 
4893
 
4894
  return $is_running_submit;
4895
  }
@@ -4904,39 +5526,77 @@ class Utils {
4904
  *
4905
  * @since v.1.3.3
4906
  */
4907
-
4908
- public function is_assignment_submitted($assignment_id = 0, $user_id = 0){
4909
  global $wpdb;
4910
 
4911
- $assignment_id = $this->get_post_id($assignment_id);
4912
- $user_id = $this->get_user_id($user_id);
4913
-
4914
- $has_submitted = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->comments} WHERE comment_type = 'tutor_assignment' AND comment_approved = 'submitted' AND user_id = %d AND comment_post_ID = %d ", $user_id, $assignment_id));
 
 
 
 
 
 
 
 
 
 
 
 
4915
 
4916
  return $has_submitted;
4917
  }
4918
 
4919
- public function get_assignment_submit_info($assignment_submitted_id = 0){
4920
  global $wpdb;
4921
 
4922
- $assignment_submitted_id = $this->get_post_id($assignment_submitted_id);
4923
- $submitted_info = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->comments} WHERE comment_ID = %d AND comment_type = 'tutor_assignment' AND comment_approved = 'submitted' ", $assignment_submitted_id));
 
 
 
 
 
 
 
 
 
 
 
4924
 
4925
  return $submitted_info;
4926
  }
4927
 
4928
- public function get_total_assignments(){
4929
  global $wpdb;
4930
 
4931
- $count = $wpdb->get_var("SELECT COUNT(comment_ID) FROM {$wpdb->comments} WHERE comment_type = 'tutor_assignment' AND comment_approved = 'submitted' ");
 
 
 
 
 
 
 
 
4932
 
4933
  return (int) $count;
4934
  }
4935
 
4936
- public function get_assignments(){
4937
  global $wpdb;
4938
 
4939
- $results = $wpdb->get_results("SELECT * FROM {$wpdb->comments} WHERE comment_type = 'tutor_assignment' AND comment_approved = 'submitted' ");
 
 
 
 
 
 
 
 
4940
 
4941
  return $results;
4942
  }
@@ -4950,18 +5610,21 @@ class Utils {
4950
  *
4951
  * @since v.1.3.3
4952
  */
4953
- public function get_assigned_courses_ids_by_instructors($user_id = 0){
4954
  global $wpdb;
4955
- $user_id = $this->get_user_id($user_id);
4956
-
4957
  $course_post_type = tutor()->course_post_type;
4958
- $get_assigned_courses_ids = $wpdb->get_col($wpdb->prepare("SELECT meta_value from {$wpdb->usermeta} WHERE meta_key = '_tutor_instructor_course_id' AND user_id = %d GROUP BY meta_value ; ", $user_id));
4959
 
4960
- /*
4961
- $author_ids = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} where post_type = '{$course_post_type}' AND post_author = {$user_id}");
4962
- $final_course_ids = array_merge($get_assigned_courses_ids, $author_ids);
4963
- $final_course_ids = array_unique($final_course_ids);
4964
- */
 
 
 
 
 
4965
 
4966
  return $get_assigned_courses_ids;
4967
  }
@@ -4975,18 +5638,17 @@ class Utils {
4975
  *
4976
  * @since v.1.3.4
4977
  */
4978
-
4979
- public function get_course_categories($parent = 0 ){
4980
- $args = apply_filters('tutor_get_course_categories_args', array(
4981
- 'taxonomy' => 'course-category',
4982
- 'hide_empty' => false,
4983
- 'parent' => $parent,
4984
  ));
4985
 
4986
- $terms = get_terms($args);
4987
 
4988
  $children = array();
4989
- foreach ( $terms as $term ){
4990
  $term->children = $this->get_course_categories( $term->term_id );
4991
  $children[ $term->term_id ] = $term;
4992
  }
@@ -5003,14 +5665,14 @@ class Utils {
5003
  *
5004
  * @since v.1.3.5
5005
  */
5006
- public function get_course_categories_term($parent_id = 0){
5007
- $args = apply_filters('tutor_get_course_categories_terms_args', array(
5008
- 'taxonomy' => 'course-category',
5009
- 'parent' => $parent_id,
5010
  'hide_empty' => false,
5011
  ));
5012
 
5013
- $terms = get_terms($args);
5014
 
5015
  return $terms;
5016
  }
@@ -5021,9 +5683,9 @@ class Utils {
5021
  * Get back url from the request
5022
  * @since v.1.3.4
5023
  */
5024
- public function referer(){
5025
- $url = $this->array_get('_wp_http_referer', $_REQUEST);
5026
- return apply_filters('tutor_referer_url', $url);
5027
  }
5028
 
5029
  /**
@@ -5035,28 +5697,29 @@ class Utils {
5035
  *
5036
  * @since v.1.3.4
5037
  */
5038
- public function course_edit_link($course_id = 0){
5039
- $course_id = $this->get_post_id($course_id);
5040
 
5041
  $url = admin_url("post.php?post={$course_id}&action=edit");
5042
- if (tutor()->has_pro){
5043
- $url = $this->tutor_dashboard_url("create-course/?course_ID=".$course_id);
5044
  }
5045
 
5046
  return $url;
5047
  }
5048
 
5049
- public function get_assignments_by_instructor($instructor_id = 0, $filter_data = array()){
5050
  global $wpdb;
5051
 
5052
- $instructor_id = $this->get_user_id($instructor_id);
5053
- $course_ids = tutor_utils()->get_assigned_courses_ids_by_instructors($instructor_id);
 
5054
 
5055
- $in_course_ids = implode("','", $course_ids);
5056
 
5057
  $pagination_query = $date_query = '';
5058
  $sort_query = 'ORDER BY ID DESC';
5059
- if ($this->count($filter_data)) {
5060
  extract( $filter_data );
5061
 
5062
  if ( ! empty( $course_id ) ) {
@@ -5074,37 +5737,35 @@ class Utils {
5074
  }
5075
  }
5076
 
5077
- $count = (int) $wpdb->get_var(
5078
- "SELECT
5079
- Count(ID)
5080
- FROM
5081
- {$wpdb -> postmeta} post_meta
5082
- INNER JOIN {$wpdb -> posts} assignment ON post_meta.post_id = assignment.id
5083
- AND post_meta.meta_key = '_tutor_course_id_for_assignments'
5084
- WHERE
5085
- post_type = 'tutor_assignments'
5086
- AND post_meta.meta_value IN('$in_course_ids')
5087
- {$date_query}
5088
- "
5089
- );
5090
-
5091
- $query = $wpdb->get_results(
5092
- "SELECT
5093
- *
5094
- FROM
5095
- {$wpdb -> postmeta} post_meta
5096
- INNER JOIN {$wpdb -> posts} assignment ON post_meta.post_id = assignment.id
5097
- AND post_meta.meta_key = '_tutor_course_id_for_assignments'
5098
- WHERE
5099
- post_type = 'tutor_assignments'
5100
- AND post_meta.meta_value IN('$in_course_ids')
5101
- {$date_query}
5102
- {$sort_query}
5103
- {$pagination_query}
5104
- "
5105
- );
5106
-
5107
- return (object) array('count' => $count, 'results' => $query);
5108
  }
5109
 
5110
  /**
@@ -5114,21 +5775,43 @@ class Utils {
5114
  *
5115
  * Get assignments by course id
5116
  */
5117
- public function get_assignments_by_course($course_id = 0){
5118
- if ( ! $course_id){
5119
  return false;
5120
  }
5121
  global $wpdb;
5122
 
5123
- $count = (int) $wpdb->get_var($wpdb->prepare("SELECT COUNT(ID) FROM {$wpdb->postmeta} post_meta
5124
- INNER JOIN {$wpdb->posts} assignment ON post_meta.post_id = assignment.ID AND post_meta.meta_key = '_tutor_course_id_for_assignments'
5125
- where post_type = 'tutor_assignments' AND post_meta.meta_value = %d ORDER BY ID DESC ", $course_id));
5126
-
5127
- $query = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->postmeta} post_meta
5128
- INNER JOIN {$wpdb->posts} assignment ON post_meta.post_id = assignment.ID AND post_meta.meta_key = '_tutor_course_id_for_assignments'
5129
- where post_type = 'tutor_assignments' AND post_meta.meta_value = %d ORDER BY ID DESC", $course_id));
5130
-
5131
- return (object) array('count' => $count, 'results' => $query);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5132
  }
5133
 
5134
  /**
@@ -5138,7 +5821,7 @@ class Utils {
5138
  *
5139
  * @since v.1.3.4
5140
  */
5141
- public function is_script_debug(){
5142
  return ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG );
5143
  }
5144
 
@@ -5147,16 +5830,15 @@ class Utils {
5147
  *
5148
  * @since v.1.4.0
5149
  */
 
 
 
5150
 
5151
- public function has_lesson_edit_access($lesson_id = 0, $instructor_id = 0){
5152
- $lesson_id = $this->get_post_id($lesson_id);
5153
- $instructor_id = $this->get_user_id($instructor_id);
5154
-
5155
- if (user_can($instructor_id, tutor()->instructor_role)){
5156
  $permitted_course_ids = tutils()->get_assigned_courses_ids_by_instructors();
5157
- $course_id = tutils()->get_course_id_by_lesson($lesson_id);
5158
 
5159
- if (in_array($course_id, $permitted_course_ids)){
5160
  return true;
5161
  }
5162
  }
@@ -5169,53 +5851,65 @@ class Utils {
5169
  * Get total Enrolments
5170
  * @since v.1.4.0
5171
  */
5172
-
5173
- public function get_total_enrolments($search_term = ''){
5174
  global $wpdb;
5175
 
5176
- $search_sql = '';
5177
- if ($search_term){
5178
- $search_sql = " AND ( enrol.ID = '{$search_term}' OR student.display_name LIKE '%{$search_term}%' OR student.user_email LIKE '%{$search_term}%' OR course.post_title LIKE '%{$search_term}%' ) ";
5179
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5180
 
5181
- $count = $wpdb->get_var("SELECT COUNT(enrol.ID)
5182
- FROM {$wpdb->posts} enrol
5183
- INNER JOIN {$wpdb->posts} course ON enrol.post_parent = course.ID
5184
- INNER JOIN {$wpdb->users} student ON enrol.post_author = student.ID
5185
- WHERE enrol.post_type = 'tutor_enrolled' {$search_sql} ");
5186
  return (int) $count;
5187
  }
5188
 
5189
- public function get_enrolments($start = 0, $limit = 10, $search_term = ''){
5190
  global $wpdb;
5191
 
5192
- $search_sql = '';
5193
- if ($search_term){
5194
- $search_sql = " AND ( enrol.ID = '{$search_term}' OR student.display_name LIKE '%{$search_term}%' OR student.user_email LIKE '%{$search_term}%' OR course.post_title LIKE '%{$search_term}%' ) ";
5195
- }
5196
 
5197
- $enrolments = $wpdb->get_results("SELECT
5198
- enrol.ID as enrol_id,
5199
- enrol.post_author as student_id,
5200
- enrol.post_date as enrol_date,
5201
- enrol.post_title as enrol_title,
5202
- enrol.post_status as status,
5203
- enrol.post_parent as course_id,
5204
-
5205
- course.post_title as course_title,
5206
-
5207
- student.user_nicename,
5208
- student.user_email,
5209
- student.display_name
5210
-
5211
- FROM {$wpdb->posts} enrol
5212
-
5213
- INNER JOIN {$wpdb->posts} course ON enrol.post_parent = course.ID
5214
- INNER JOIN {$wpdb->users} student ON enrol.post_author = student.ID
5215
-
5216
- WHERE enrol.post_type = 'tutor_enrolled' {$search_sql}
5217
  ORDER BY enrol_id DESC
5218
- LIMIT {$start}, {$limit} ");
 
 
 
 
 
 
 
 
 
5219
 
5220
  return $enrolments;
5221
  }
@@ -5227,21 +5921,18 @@ class Utils {
5227
  *
5228
  * @since v.1.4.0
5229
  */
 
 
5230
 
5231
- public function get_current_url($post_id = 0){
5232
- $page_id = $this->get_post_id($post_id);
5233
-
5234
- if ($page_id){
5235
- return get_the_permalink($page_id);
5236
- }else{
5237
  global $wp;
5238
  $current_url = home_url( $wp->request );
5239
-
5240
  return $current_url;
5241
  }
5242
  }
5243
 
5244
-
5245
  /**
5246
  * @param int $rating_id
5247
  *
@@ -5252,21 +5943,27 @@ class Utils {
5252
  * @since v.1.4.0
5253
  */
5254
 
5255
- public function get_rating_by_id($rating_id = 0){
 
 
5256
  $ratings = array(
5257
- 'rating' => 0,
5258
- 'review' => '',
5259
  );
5260
 
5261
- global $wpdb;
5262
-
5263
- $rating = $wpdb->get_row($wpdb->prepare("SELECT meta_value as rating, comment_content as review from {$wpdb->comments}
5264
- INNER JOIN {$wpdb->commentmeta}
5265
- ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
5266
- WHERE {$wpdb->comments}.comment_ID = %d ;", $rating_id));
 
 
 
 
5267
 
5268
- if ($rating){
5269
- $rating_format = number_format($rating->rating, 2);
5270
 
5271
  $ratings = array(
5272
  'rating' => $rating_format,
@@ -5285,12 +5982,12 @@ class Utils {
5285
  *
5286
  * Get course settings by course ID
5287
  */
5288
- public function get_course_settings($course_id = 0, $key = null, $default = false){
5289
- $course_id = $this->get_post_id($course_id);
5290
- $settings_meta = get_post_meta($course_id, '_tutor_course_settings', true);
5291
- $settings = (array) maybe_unserialize($settings_meta);
5292
 
5293
- return $this->array_get($key, $settings, $default);
5294
  }
5295
 
5296
  /**
@@ -5304,15 +6001,14 @@ class Utils {
5304
  *
5305
  * @since v.1.4.0
5306
  */
5307
- public function get_item_content_drip_settings($lesson_id = 0, $key = null, $default = false){
5308
- $lesson_id = $this->get_post_id($lesson_id);
5309
- $settings_meta = get_post_meta($lesson_id, '_content_drip_settings', true);
5310
- $settings = (array) maybe_unserialize($settings_meta);
5311
 
5312
- return $this->array_get($key, $settings, $default);
5313
  }
5314
 
5315
-
5316
  /**
5317
  * @param null $post
5318
  *
@@ -5320,19 +6016,18 @@ class Utils {
5320
  *
5321
  * Get previous ID
5322
  */
5323
- public function get_course_previous_content_id($post = null){
5324
- $current_item = get_post($post);
5325
- $course_id = $this->get_course_id_by_content($current_item);
5326
-
5327
- $topics = tutor_utils()->get_topics($course_id);
5328
 
5329
  $contents = array();
5330
- if ($topics->have_posts()) {
5331
  while ( $topics->have_posts() ) {
5332
  $topics->the_post();
5333
  $topic_id = get_the_ID();
5334
- $lessons = tutor_utils()->get_course_contents_by_topic($topic_id, -1);
5335
- if ($lessons->have_posts()) {
5336
  while ( $lessons->have_posts() ) {
5337
  $lessons->the_post();
5338
  global $post;
@@ -5343,11 +6038,11 @@ class Utils {
5343
  }
5344
  }
5345
 
5346
- if (tutils()->count($contents)){
5347
- foreach ($contents as $key => $content){
5348
- if ($current_item->ID == $content->ID){
5349
- if ( ! empty($contents[$key-1]->ID)){
5350
- return $contents[$key-1]->ID;
5351
  }
5352
  }
5353
  }
@@ -5363,10 +6058,19 @@ class Utils {
5363
  *
5364
  * Get Course iD by any course content
5365
  */
5366
- public function get_course_id_by_content($post = null){
5367
  global $wpdb;
5368
- $post = get_post($post);
5369
- $course_id = $wpdb->get_var($wpdb->prepare("SELECT post_parent FROM {$wpdb->posts} WHERE ID = %d AND post_type = 'topics'", $post->post_parent));
 
 
 
 
 
 
 
 
 
5370
 
5371
  return (int) $course_id;
5372
  }
@@ -5380,14 +6084,24 @@ class Utils {
5380
  *
5381
  * @since v.1.4.1
5382
  */
5383
- public function get_course_contents_by_id($course_id = 0){
5384
  global $wpdb;
5385
 
5386
- $course_id = $this->get_post_id($course_id);
5387
-
5388
- $contents = $wpdb->get_results($wpdb->prepare("SELECT items.* FROM {$wpdb->posts} topic
5389
- INNER JOIN {$wpdb->posts} items ON topic.ID = items.post_parent
5390
- WHERE topic.post_parent = %d AND items.post_status = 'publish' order by topic.menu_order ASC, items.menu_order ASC;", $course_id));
 
 
 
 
 
 
 
 
 
 
5391
 
5392
  return $contents;
5393
  }
@@ -5401,7 +6115,7 @@ class Utils {
5401
  *
5402
  * @since v.1.4.2
5403
  */
5404
- public function get_gradebooks(){
5405
  global $wpdb;
5406
  $results = $wpdb->get_results("SELECT * FROM {$wpdb->tutor_gradebooks} ORDER BY grade_point DESC ");
5407
  return $results;
@@ -5418,42 +6132,40 @@ class Utils {
5418
  *
5419
  * @since v.1.4.2
5420
  */
5421
- public function get_quiz_attempt($quiz_id = 0, $user_id = 0){
5422
  global $wpdb;
5423
 
5424
- $quiz_id = $this->get_post_id($quiz_id);
5425
- $user_id = $this->get_user_id($user_id);
5426
 
5427
  $attempt = false;
5428
 
5429
- $quiz_grade_method = get_tutor_option('quiz_grade_method', 'highest_grade');
5430
-
5431
- if ($quiz_grade_method === 'highest_grade'){
5432
 
5433
- $attempt = $wpdb->get_row("SELECT *
5434
- FROM {$wpdb->tutor_quiz_attempts} WHERE quiz_id = {$quiz_id} AND user_id = {$user_id} AND attempt_status != 'attempt_started'
5435
- ORDER BY earned_marks DESC LIMIT 1; ");
5436
 
5437
- }elseif ($quiz_grade_method === 'average_grade'){
5438
 
5439
- $attempt = $wpdb->get_row("SELECT {$wpdb->tutor_quiz_attempts}.*,
5440
- COUNT(attempt_id) as attempt_count,
5441
- AVG(total_marks) as total_marks,
5442
- AVG(earned_marks) as earned_marks
5443
- FROM {$wpdb->tutor_quiz_attempts} WHERE quiz_id = {$quiz_id} AND user_id = {$user_id} AND attempt_status != 'attempt_started' ");
5444
 
5445
- }elseif ($quiz_grade_method === 'first_attempt'){
 
 
 
 
 
 
 
 
5446
 
5447
- $attempt = $wpdb->get_row("SELECT *
5448
- FROM {$wpdb->tutor_quiz_attempts} WHERE quiz_id = {$quiz_id} AND user_id = {$user_id} AND attempt_status != 'attempt_started'
5449
- ORDER BY attempt_id ASC LIMIT 1; ");
5450
 
5451
- }elseif ($quiz_grade_method === 'last_attempt'){
5452
 
5453
- $attempt = $wpdb->get_row("SELECT *
5454
- FROM {$wpdb->tutor_quiz_attempts} WHERE quiz_id = {$quiz_id} AND user_id = {$user_id} AND attempt_status != 'attempt_started'
5455
- ORDER BY attempt_id DESC LIMIT 1; ");
5456
 
 
5457
  }
5458
 
5459
  return $attempt;
@@ -5469,19 +6181,19 @@ class Utils {
5469
  *
5470
  * @since v.1.4.2
5471
  */
5472
- public function course_progress_status_context($course_id = 0, $user_id = 0){
5473
- $course_id = $this->get_post_id($course_id);
5474
- $user_id = $this->get_user_id($user_id);
 
5475
 
5476
- $is_completed = tutils()->is_completed_course($course_id, $user_id);
5477
  $html = '';
5478
- if ($is_completed){
5479
  $html = '<span class="course-completion-status course-completed"><i class="tutor-icon-mark"></i> '.__('Completed', 'tutor').' </span>';
5480
- }else{
5481
- $is_in_progress = tutor_utils()->get_completed_lesson_count_by_course($course_id, $user_id);
5482
- if($is_in_progress){
5483
  $html = '<span class="course-completion-status course-inprogress"><i class="tutor-icon-refresh-button-1"></i> '.__('In Progress', 'tutor').' </span>';
5484
- }else{
5485
  $html = '<span class="course-completion-status course-not-taken"><i class="tutor-icon-spinner"></i> '.__('Not Taken', 'tutor').' </span>';
5486
  }
5487
  }
@@ -5515,23 +6227,23 @@ class Utils {
5515
  *
5516
  * @since v.1.4.3
5517
  */
5518
- public function tutor_pages(){
5519
- $pages = apply_filters('tutor_pages', array(
5520
- 'tutor_dashboard_page_id' => __('Dashboard Page', 'tutor'),
5521
- 'instructor_register_page' => __('Instructor Registration Page', 'tutor'),
5522
- 'student_register_page' => __('Student Registration Page', 'tutor'),
5523
  ));
5524
 
5525
  $new_pages = array();
5526
- foreach ($pages as $key => $page){
5527
- $page_id = (int) get_tutor_option($key);
5528
 
5529
  $wp_page_name = '';
5530
- $wp_page = get_post($page_id);
5531
- $page_exists = (bool) $wp_page;
5532
  $page_visible = false;
5533
 
5534
- if ($wp_page){
5535
  $wp_page_name = $wp_page->post_title;
5536
  $page_visible = $wp_page->post_status === 'publish';
5537
  }
@@ -5544,7 +6256,6 @@ class Utils {
5544
  'page_exists' => $page_exists,
5545
  'page_visible' => $page_visible,
5546
  );
5547
-
5548
  }
5549
 
5550
  return $new_pages;
@@ -5559,36 +6270,36 @@ class Utils {
5559
  *
5560
  * @since v.1.4.9
5561
  */
5562
- public function get_course_prev_next_contents_by_id($content_id = 0){
5563
 
5564
- $course_id = $this->get_course_id_by_content($content_id);
5565
  $course_contents = $this->get_course_contents_by_id($course_id);
5566
- $previous_id = 0;
5567
- $next_id = 0;
5568
- if ($this->count($course_contents)){
5569
- $ids = wp_list_pluck($course_contents, 'ID');
 
5570
 
5571
  $i=0;
5572
- foreach ($ids as $key => $id){
5573
  $previous_i = $key - 1;
5574
- $next_i = $key + 1;
5575
 
5576
- if ($id == $content_id){
5577
- if (isset($ids[$previous_i])){
5578
- $previous_id = $ids[$previous_i];
5579
  }
5580
- if (isset($ids[$next_i])){
5581
- $next_id = $ids[$next_i];
5582
  }
5583
  }
5584
  $i++;
5585
  }
5586
  }
5587
 
5588
- return (object) ['previous_id'=>$previous_id, 'next_id'=>$next_id];
5589
  }
5590
 
5591
-
5592
  /**
5593
  * Get a subset of the items from the given array.
5594
  *
@@ -5599,16 +6310,14 @@ class Utils {
5599
  *
5600
  * @since v.1.5.2
5601
  */
5602
-
5603
- public function array_only($array = array(), $keys = null){
5604
- if ( ! $this->count($array) || ! $keys){
5605
  return false;
5606
  }
5607
 
5608
- return array_intersect_key($array, array_flip((array) $keys));
5609
  }
5610
 
5611
-
5612
  /**
5613
  * @param int $instructor_id
5614
  * @param int $course_id
@@ -5619,22 +6328,26 @@ class Utils {
5619
  *
5620
  * @since v.1.6.4
5621
  */
5622
- public function is_instructor_of_this_course($instructor_id=0, $course_id=0) {
5623
  global $wpdb;
5624
 
5625
- $instructor_id = $this->get_user_id($instructor_id);
5626
- $course_id = $this->get_post_id($course_id);
5627
 
5628
- if (!$instructor_id || !$course_id) {
5629
  return false;
5630
  }
5631
 
5632
- $instructor = $wpdb->get_col($wpdb->prepare(
5633
  "SELECT umeta_id
5634
  FROM {$wpdb->usermeta}
5635
  WHERE user_id = %d
5636
  AND meta_key = '_tutor_instructor_course_id'
5637
- AND meta_value = %d", $instructor_id, $course_id));
 
 
 
 
5638
 
5639
  if (is_array($instructor) && count($instructor)) {
5640
  return $instructor;
@@ -5652,44 +6365,44 @@ class Utils {
5652
  *
5653
  * @since v.1.6.6
5654
  */
5655
- public function user_profile_completion($user_id=0) {
5656
- $user_id = $this->get_user_id($user_id);
5657
- $instructor = $this->is_instructor($user_id);
5658
 
5659
- $required_fields = apply_filters('tutor_profile_required_fields', array(
5660
- 'first_name' => __('First Name', 'tutor'),
5661
- 'last_name' => __('Last Name', 'tutor'),
5662
- '_tutor_profile_photo' => __('Profile Photo', 'tutor'),
5663
- '_tutor_withdraw_method_data' => __('Withdraw Method', 'tutor'),
5664
  ));
5665
 
5666
- if (!$instructor && array_key_exists("_tutor_withdraw_method_data", $required_fields)) {
5667
- unset($required_fields['_tutor_withdraw_method_data']);
5668
  }
5669
 
5670
  $empty_fields = array();
5671
- foreach ($required_fields as $key => $field) {
5672
- $value = get_user_meta($user_id, $key, true);
5673
- if (!$value) {
5674
- array_push($empty_fields, $field);
5675
  }
5676
  }
5677
 
5678
- $total_empty_fields = count($empty_fields);
5679
- $total_required_fields = count($required_fields);
5680
- $signup_point = apply_filters('tutor_profile_completion_signup_point', 50);
5681
 
5682
- if ($total_empty_fields == 0) {
5683
  $progress = 100;
5684
  } else {
5685
  $completed_field = $total_required_fields-$total_empty_fields;
5686
  $per_field_point = $signup_point / $total_required_fields;
5687
- $progress = $signup_point + ceil($per_field_point * $completed_field);
5688
  }
5689
 
5690
  $return = array(
5691
  'empty_fields' => $empty_fields,
5692
- 'progress' => $progress,
5693
  );
5694
 
5695
  return (object) $return;
@@ -5704,10 +6417,10 @@ class Utils {
5704
  *
5705
  * @since v1.6.9
5706
  */
5707
- public function get_enrolment_by_enrol_id($enrol_id = 0){
5708
  global $wpdb;
5709
 
5710
- $enrolment = $wpdb->get_row($wpdb->prepare(
5711
  "SELECT enrol.id AS enrol_id,
5712
  enrol.post_author AS student_id,
5713
  enrol.post_date AS enrol_date,
@@ -5742,21 +6455,25 @@ class Utils {
5742
  *
5743
  * Get students email by course id
5744
  */
5745
- public function get_student_emails_by_course_id($course_id = 0){
5746
  global $wpdb;
5747
- $course_id = $this->get_post_id($course_id);
5748
 
5749
- $student_emails = $wpdb->get_results($wpdb->prepare("
5750
- SELECT student.user_email
5751
  FROM {$wpdb->posts} enrol
5752
  INNER JOIN {$wpdb->users} student
5753
- ON enrol.post_author = student.id
5754
- WHERE enrol.post_type = 'tutor_enrolled'
5755
  AND enrol.post_parent = %d
5756
- AND enrol.post_status = 'completed';
5757
- ", $course_id));
 
 
 
 
5758
 
5759
- $email_array = array_column($student_emails,'user_email');
5760
 
5761
  return $email_array;
5762
  }
@@ -5765,12 +6482,19 @@ class Utils {
5765
  *requie post id & user id
5766
  *return single comment post
5767
  */
5768
- public function get_single_comment_user_post_id($post_id,$user_id){
5769
  global $wpdb;
5770
- $table = $wpdb->prefix."comments";
5771
- $query = $wpdb->get_row(
5772
- $wpdb->prepare("SELECT * FROM $table WHERE comment_post_ID = %d AND user_id = %d LIMIT 1", $post_id, $user_id)
5773
- );
 
 
 
 
 
 
 
5774
  return $query ? $query : false;
5775
  }
5776
 
@@ -5783,16 +6507,16 @@ class Utils {
5783
  *
5784
  * Check if course is in wc cart
5785
  */
5786
- public function is_course_added_to_cart($course_or_product_id = 0, $is_product_id=false){
5787
 
5788
- switch($this->get_option('monetize_by')){
5789
  case 'wc':
5790
  global $woocommerce;
5791
- $product_id = $is_product_id ? $course_or_product_id : $this->get_course_product_id($course_or_product_id);
5792
 
5793
- if($woocommerce->cart) {
5794
- foreach($woocommerce->cart->get_cart() as $key => $val ) {
5795
- if($product_id == $val['product_id']) {
5796
  return true;
5797
  }
5798
  }
@@ -5810,12 +6534,12 @@ class Utils {
5810
  *
5811
  * Get profile pic url
5812
  */
5813
- public function get_cover_photo_url($user_id){
5814
- $cover_photo_src = tutor()->url.'assets/images/cover-photo.jpg';
5815
- $cover_photo_id = get_user_meta($user_id, '_tutor_cover_photo', true);
5816
- if ($cover_photo_id){
5817
- $url = wp_get_attachment_image_url($cover_photo_id, 'full');
5818
- !empty($url) ? $cover_photo_src = $url : 0;
5819
  }
5820
 
5821
  return $cover_photo_src;
@@ -5828,71 +6552,99 @@ class Utils {
5828
  *
5829
  * Return the course ID by lession, quiz, answer etc.
5830
  */
5831
- public function get_course_id_by($content, $object_id) {
5832
-
5833
  global $wpdb;
5834
  $course_id = null;
5835
 
5836
- switch ($content) {
5837
-
5838
  case 'course' :
5839
  $course_id = $object_id;
5840
  break;
5841
 
5842
  case 'topic' :
5843
  case 'announcement' :
5844
- $course_id = $wpdb->get_var($wpdb->prepare(
5845
  "SELECT post_parent
5846
  FROM {$wpdb->posts}
5847
- WHERE ID=%d LIMIT 1", $object_id));
 
 
5848
  break;
5849
 
5850
  case 'lesson' :
5851
  case 'quiz' :
5852
  case 'assignment' :
5853
- $course_id = $wpdb->get_var($wpdb->prepare(
5854
- "SELECT post_parent FROM {$wpdb->posts}
5855
- WHERE ID=(SELECT post_parent FROM {$wpdb->posts} WHERE ID=%d)", $object_id));
 
 
 
 
5856
  break;
5857
 
5858
  case 'question' :
5859
- $course_id = $wpdb->get_var($wpdb->prepare(
5860
  "SELECT topic.post_parent
5861
- FROM {$wpdb->posts} topic
5862
- INNER JOIN {$wpdb->posts} quiz ON quiz.post_parent=topic.ID
5863
- INNER JOIN {$wpdb->prefix}tutor_quiz_questions question ON question.quiz_id=quiz.ID
5864
- WHERE question.question_id=%d", $object_id));
 
 
 
 
 
5865
  break;
5866
 
5867
  case 'quiz_answer' :
5868
- $course_id = $wpdb->get_var($wpdb->prepare(
5869
  "SELECT topic.post_parent
5870
- FROM {$wpdb->posts} topic
5871
- INNER JOIN {$wpdb->posts} quiz ON quiz.post_parent=topic.ID
5872
- INNER JOIN {$wpdb->prefix}tutor_quiz_questions question ON question.quiz_id=quiz.ID
5873
- INNER JOIN {$wpdb->prefix}tutor_quiz_question_answers answer ON answer.belongs_question_id=question.question_id
5874
- WHERE answer.answer_id=%d", $object_id));
 
 
 
 
 
 
5875
  break;
5876
 
5877
  case 'attempt' :
5878
- $course_id = $wpdb->get_var($wpdb->prepare(
5879
- "SELECT course_id FROM {$wpdb->prefix}tutor_quiz_attempts WHERE attempt_id=%d", $object_id));
 
 
 
 
 
5880
  break;
5881
 
5882
  case 'attempt_answer' :
5883
- $course_id = $wpdb->get_var($wpdb->prepare(
5884
- "SELECT course_id FROM {$wpdb->prefix}tutor_quiz_attempts
5885
- WHERE attempt_id=(SELECT quiz_attempt_id FROM {$wpdb->prefix}tutor_quiz_attempt_answers WHERE attempt_answer_id=%d)", $object_id));
 
 
 
 
5886
  break;
5887
  case 'review' :
5888
- $course_id = $wpdb->get_var($wpdb->prepare(
5889
- "SELECT comment_post_ID FROM {$wpdb->comments} WHERE comment_ID=%d", $object_id));
 
 
 
 
 
5890
  }
5891
 
5892
  return $course_id;
5893
  }
5894
 
5895
-
5896
  /**
5897
  * @return bool
5898
  *
@@ -5900,22 +6652,24 @@ class Utils {
5900
  *
5901
  * Check if user can create, edit, delete various tutor contents such as lesson, quiz, answer etc.
5902
  */
5903
- public function can_user_manage($content, $object_id, $user_id=0, $allow_current_admin=true) {
5904
 
5905
- if($allow_current_admin && current_user_can( 'administrator' )){
5906
  // Admin has access to everything
5907
  return true;
5908
  }
5909
 
5910
- $course_id = $this->get_course_id_by($content, $object_id);
5911
 
5912
- if($course_id) {
5913
 
5914
- $instructors = $this->get_instructors_by_course($course_id);
5915
- $instructor_ids = is_array($instructors) ? array_map(function($instructor){ return (int)$instructor->ID; }, $instructors) : array();
 
 
5916
 
5917
- $user_id = (int)$this->get_user_id($user_id);
5918
- $is_listed = in_array($user_id, $instructor_ids);
5919
 
5920
  return $is_listed;
5921
  }
@@ -5930,29 +6684,28 @@ class Utils {
5930
  *
5931
  * Check if user has access for content like lesson, quiz, assignment etc.
5932
  */
5933
- public function has_enrolled_content_access($content, $object_id=0, $user_id=0) {
5934
- $user_id = $this->get_user_id($user_id);
5935
- $object_id = $this->get_post_id($object_id);
5936
- $course_id = $this->get_course_id_by($content, $object_id);
5937
- $course_content_access = (bool) get_tutor_option('course_content_access_for_ia');
5938
 
5939
  do_action( 'tutor_before_enrolment_check', $course_id, $user_id );
5940
 
5941
- if ($this->is_enrolled($course_id, $user_id)) {
5942
  return true;
5943
  }
5944
- if ($course_content_access && (current_user_can('administrator') || current_user_can(tutor()->instructor_role))) {
5945
  return true;
5946
  }
5947
  //Check Lesson edit access to support page builders (eg: Oxygen)
5948
- if (current_user_can(tutor()->instructor_role) && tutils()->has_lesson_edit_access()) {
5949
  return true;
5950
  }
5951
 
5952
  return false;
5953
  }
5954
 
5955
-
5956
  /**
5957
  * @return date
5958
  *
@@ -5960,23 +6713,143 @@ class Utils {
5960
  *
5961
  * Return the assignment deadline date based on duration and assignment creation date
5962
  */
5963
-
5964
- public function get_assignment_deadline_date($assignment_id, $format=null, $fallback=null) {
5965
 
5966
- !$format ? $format='j F, Y, g:i a' : 0;
5967
 
5968
- $value = $this->get_assignment_option($assignment_id, 'time_duration.value');
5969
- $time = $this->get_assignment_option($assignment_id, 'time_duration.time');
5970
 
5971
- if(!$value) {
5972
  return $fallback;
5973
  }
5974
 
5975
  $publish_date = get_post_field( 'post_date', $assignment_id );
5976
 
5977
  $date = date_create( $publish_date );
5978
- date_add( $date, date_interval_create_from_date_string($value . ' ' . $time) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5979
 
5980
- return date_format($date, $format);
 
 
 
 
5981
  }
5982
  }
1
  <?php
2
+ /**
3
+ * Tutor Utils Helper functions
4
+ * @package TUTOR
5
+ *
6
+ * @since v.1.0.0
7
+ */
8
+
9
  namespace TUTOR;
10
 
11
  if ( ! defined( 'ABSPATH' ) )
12
  exit;
13
 
 
14
  class Utils {
15
  /**
16
  * @param null $key
22
  *
23
  * @since v.1.0.0
24
  */
25
+ public function get_option( $key = null, $default = false ) {
26
  $option = (array) maybe_unserialize(get_option('tutor_option'));
27
 
28
+ if ( empty( $option ) || ! is_array( $option ) ) {
29
  return $default;
30
  }
31
+ if ( ! $key ) {
32
  return $option;
33
  }
34
+ if ( array_key_exists( $key, $option ) ) {
35
+ return apply_filters( $key, $option[$key] );
36
  }
37
  //Access array value via dot notation, such as option->get('value.subvalue')
38
+ if ( strpos($key, '.') ) {
39
+ $option_key_array = explode( '.', $key );
40
 
41
  $new_option = $option;
42
+ foreach ( $option_key_array as $dotKey ) {
43
+ if ( isset( $new_option[$dotKey] ) ) {
44
  $new_option = $new_option[$dotKey];
45
  }else{
46
  return $default;
47
  }
48
  }
49
+ return apply_filters( $key, $new_option );
50
  }
51
 
52
  return $default;
60
  *
61
  * @since v.1.0.0
62
  */
63
+ public function update_option( $key = null, $value = false ) {
64
+ $option = (array) maybe_unserialize( get_option('tutor_option') );
 
65
  $option[$key] = $value;
66
+ update_option( 'tutor_option', $option );
67
  }
68
 
69
  /**
78
  *
79
  * @update v.1.4.1 (Added default parameter)
80
  */
81
+ public function avalue_dot( $key = null, $array = array(), $default = false ) {
 
82
  $array = (array) $array;
83
+ if ( ! $key || ! count($array) ) {
84
  return $default;
85
  }
86
+ $option_key_array = explode( '.', $key );
87
 
88
  $value = $array;
89
 
90
+ foreach ( $option_key_array as $dotKey ) {
91
+ if ( isset( $value[$dotKey] ) ) {
92
  $value = $value[$dotKey];
93
+ } else {
94
  return $default;
95
  }
96
  }
111
  *
112
  * @since v.1.3.3
113
  */
114
+ public function array_get( $key = null, $array = array(), $default = false ) {
115
+ return $this->avalue_dot( $key, $array, $default );
116
  }
117
 
118
  /**
122
  *
123
  * @since v.1.0.0
124
  */
125
+ public function get_pages() {
126
  $pages = array();
127
  $wp_pages = get_pages();
128
+ if ( is_array( $wp_pages ) && count( $wp_pages ) ) {
129
+ foreach ( $wp_pages as $page ) {
130
  $pages[$page->ID] = $page->post_title;
131
  }
132
  }
140
  *
141
  * @since v.1.0.0
142
  */
143
+ public function course_archive_page_url() {
144
  $course_post_type = tutor()->course_post_type;
145
+ $course_page_url = trailingslashit( home_url() ) . $course_post_type;
146
 
147
  $course_archive_page = $this->get_option('course_archive_page');
148
+ if ( $course_archive_page && $course_archive_page !== '-1' ) {
149
+ $course_page_url = get_permalink( $course_archive_page );
150
  }
151
+ return trailingslashit( $course_page_url );
152
  }
153
 
154
  /**
160
  *
161
  * @since v.1.0.0
162
  */
163
+ public function profile_url( $student_id = 0 ) {
164
+ $site_url = trailingslashit( home_url() ) . 'profile/';
165
+ $student_id = $this->get_user_id( $student_id );
166
+ $user_name = '';
167
+ if ( $student_id ) {
 
 
168
  global $wpdb;
169
+ $user = $wpdb->get_row( $wpdb->prepare(
170
+ "SELECT user_nicename
171
+ FROM {$wpdb->users}
172
+ WHERE ID = %d;
173
+ ",
174
+ $student_id
175
+ ) );
176
+
177
+ if ($user) {
178
  $user_name = $user->user_nicename;
179
  }
180
+
181
+ } else {
182
  $user_name = 'user_name';
183
  }
184
 
194
  *
195
  * @since v.1.0.0
196
  */
197
+ public function get_user_by_login( $user_nicename = '' ) {
198
  global $wpdb;
199
+ $user_nicename = sanitize_text_field( $user_nicename );
200
+ $user = $wpdb->get_row( $wpdb->prepare(
201
+ "SELECT *
202
+ FROM {$wpdb->users}
203
+ WHERE user_nicename = %s;
204
+ ",
205
+ $user_nicename
206
+ ) );
207
  return $user;
208
  }
209
 
215
  * @since v.1.0.0
216
  * @updated @1.5.9
217
  */
218
+ public function has_wc() {
219
+ return class_exists( 'WooCommerce' );
 
220
  }
221
 
222
  /**
226
  *
227
  * @since v.1.0.0
228
  */
229
+ public function has_edd() {
230
+ $activated_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ) );
231
+ $depends = array( 'easy-digital-downloads/easy-digital-downloads.php' );
232
+ $has_edd = count( array_intersect( $depends, $activated_plugins ) ) == count( $depends );
233
+ return $has_edd;
 
 
234
  }
235
 
236
  /**
240
  *
241
  * @since v.1.3.6
242
  */
243
+ public function has_pmpro() {
244
+ $activated_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ) );
245
+ $depends = array( 'paid-memberships-pro/paid-memberships-pro.php' );
246
+ $has_pmpro = count( array_intersect( $depends, $activated_plugins ) ) == count( $depends );
247
+ return $has_pmpro;
248
  }
249
 
250
  public function has_wcs(){
251
+ $activated_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ) );
252
+ $depends = array( 'woocommerce-subscriptions/woocommerce-subscriptions.php' );
253
+ $has_wcs = count( array_intersect( $depends, $activated_plugins ) ) == count( $depends );
254
+ return $has_wcs;
255
  }
256
 
 
257
  /**
258
  * @return bool
259
  *
262
  * @since v.1.4.8
263
  */
264
  public function has_bp(){
265
+ $activated_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ) );
266
+ $depends = array( 'buddypress/bp-loader.php' );
267
+ $has_bp = count( array_intersect( $depends, $activated_plugins ) ) == count( $depends );
268
+ return $has_bp;
269
  }
270
 
271
  /**
273
  *
274
  * @since v.1.0.0
275
  */
276
+ public function languages() {
277
  $language_codes = array(
278
  'en' => 'English' ,
279
  'aa' => 'Afar' ,
412
  'zu' => 'Zulu' ,
413
  );
414
 
415
+ return apply_filters( 'tutor/utils/languages', $language_codes );
416
  }
417
 
 
418
  /**
419
  * @param string $value
420
  *
422
  *
423
  * @since v.1.0.0
424
  */
425
+ public function print_view( $value = '' ) {
426
  echo '<pre>';
427
+ print_r( $value );
428
  echo '</pre>';
429
  }
430
 
437
  *
438
  * @since v.1.0.0
439
  */
440
+ public function get_courses( $excludes = array(), $post_status = array( 'publish' ) ) {
 
441
  global $wpdb;
442
 
443
+ $excludes = (array) $excludes;
 
444
  $exclude_query = '';
445
+
446
+ if ( count( $excludes ) ) {
447
+ $exclude_query = implode( "','", $excludes );
448
  }
449
 
450
+ $post_status = array_map( function($element) {
451
+ return "'" . $element . "'";
452
+ }, $post_status );
453
 
454
+ $post_status = implode( ',', $post_status );
455
  $course_post_type = tutor()->course_post_type;
456
+
457
+ $query = $wpdb->get_results( $wpdb->prepare(
458
+ "SELECT ID,
459
+ post_author,
460
+ post_title,
461
+ post_name,
462
+ post_status,
463
+ menu_order
464
+ FROM {$wpdb->posts}
465
+ WHERE post_status IN ({$post_status})
466
+ AND ID NOT IN('$exclude_query')
467
+ AND post_type = %s;
468
+ ",
469
+ $course_post_type
470
+ ) );
471
+
472
  return $query;
473
  }
474
 
481
  *
482
  * @since v.1.0.0
483
  */
484
+ public function get_courses_for_instructors( $instructor_id = 0 ) {
485
  global $wpdb;
486
 
487
+ $instructor_id = $this->get_user_id( $instructor_id );
 
488
  $course_post_type = tutor()->course_post_type;
489
+
490
+ $query = $wpdb->get_results( $wpdb->prepare(
491
+ "SELECT ID,
492
+ post_author,
493
+ post_title,
494
+ post_name,
495
+ post_status,
496
+ menu_order
497
+ FROM {$wpdb->posts}
498
+ WHERE post_author = %d
499
+ AND post_status IN ('publish', 'pending')
500
+ AND post_type = %s;
501
+ ",
502
+ $instructor_id,
503
+ $course_post_type
504
+ ) );
505
+
506
  return $query;
507
  }
508
 
515
  *
516
  * @since v.1.0.0
517
  */
518
+ public function get_course_count_by_instructor( $instructor_id ) {
 
519
  global $wpdb;
520
 
521
  $course_post_type = tutor()->course_post_type;
522
+
523
+ $count = $wpdb->get_var( $wpdb->prepare(
524
+ "SELECT COUNT(ID)
525
+ FROM {$wpdb->posts}
526
+ INNER JOIN {$wpdb->usermeta}
527
+ ON user_id = %d
528
+ AND meta_key = %s
529
+ AND meta_value = ID
530
+ WHERE post_status = %s
531
+ AND post_type = %s;
532
+ ",
533
+ $instructor_id,
534
+ '_tutor_instructor_course_id',
535
+ 'publish',
536
+ $course_post_type
537
+ ) );
538
 
539
  return $count;
540
  }
548
  *
549
  * @since v.1.0.0
550
  */
551
+ public function get_courses_by_instructor( $instructor_id = 0, $post_status = array( 'publish' ) ) {
552
  global $wpdb;
553
 
554
+ $instructor_id = $this->get_user_id($instructor_id);
555
  $course_post_type = tutor()->course_post_type;
556
 
557
+ if ( $post_status === 'any' ) {
558
  $where_post_status = "";
559
+ } else {
560
+ $post_status = (array) $post_status;
561
+ $statuses = "'" . implode( "','", $post_status ) . "'";
562
  $where_post_status = "AND $wpdb->posts.post_status IN({$statuses}) ";
563
  }
564
 
565
+ $pageposts = $wpdb->get_results( $wpdb->prepare(
566
+ "SELECT $wpdb->posts.*
567
+ FROM $wpdb->posts
568
+ INNER JOIN {$wpdb->usermeta}
569
+ ON $wpdb->usermeta.user_id = %d
570
+ AND $wpdb->usermeta.meta_key = %s
571
+ AND $wpdb->usermeta.meta_value = $wpdb->posts.ID
572
+ WHERE 1 = 1 {$where_post_status}
573
+ AND $wpdb->posts.post_type = %s
574
+ ORDER BY $wpdb->posts.post_date DESC;
575
+ ",
576
+ $instructor_id,
577
+ '_tutor_instructor_course_id',
578
+ $course_post_type
579
+ ), OBJECT);
580
 
 
581
  return $pageposts;
582
  }
583
 
588
  *
589
  * @since v.1.0.0
590
  */
591
+ public function get_archive_page_course_count() {
592
  global $wp_query;
593
  return $wp_query->post_count;
594
  }
600
  *
601
  * @since v.1.0.0
602
  */
603
+ public function get_course_count() {
604
  global $wpdb;
605
 
606
  $course_post_type = tutor()->course_post_type;
607
+
608
+ $count = $wpdb->get_var( $wpdb->prepare(
609
+ "SELECT COUNT(ID)
610
+ FROM {$wpdb->posts}
611
+ WHERE post_status = %s
612
+ AND post_type = %s;
613
+ ",
614
+ 'publish',
615
+ $course_post_type
616
+ ) );
617
+
618
  return $count;
619
  }
620
 
625
  *
626
  * @since v.1.0.0
627
  */
628
+ public function get_lesson_count() {
629
  global $wpdb;
630
 
631
  $lesson_post_type = tutor()->lesson_post_type;
632
+
633
+ $count = $wpdb->get_var( $wpdb->prepare(
634
+ "SELECT COUNT(ID)
635
+ FROM {$wpdb->posts}
636
+ WHERE post_status = %s
637
+ AND post_type = %s;
638
+ ",
639
+ 'publish',
640
+ $lesson_post_type
641
+ ) );
642
+
643
  return $count;
644
  }
645
 
653
  *
654
  * @since v.1.0.0
655
  */
656
+ public function get_lesson( $course_id = 0, $limit = 10 ) {
657
+ $course_id = $this->get_post_id( $course_id );
 
658
  $lesson_post_type = tutor()->lesson_post_type;
659
+
660
  $args = array(
661
+ 'post_status' => 'publish',
662
+ 'post_type' => $lesson_post_type,
663
+ 'posts_per_page' => $limit,
664
+ 'meta_query' => array(
665
  array(
666
  'key' => '_tutor_course_id_for_lesson',
667
  'value' => $course_id,
669
  ),
670
  ),
671
  );
672
+
673
+ $query = new \WP_Query( $args );
674
 
675
  return $query;
676
  }
684
  *
685
  * @since v.1.0.0
686
  */
687
+ public function get_lesson_count_by_course( $course_id = 0 ) {
 
688
  global $wpdb;
689
 
690
+ $course_id = $this->get_post_id($course_id);
691
  $lesson_post_type = tutor()->lesson_post_type;
692
 
693
+ $topicIDS = $wpdb->get_col( $wpdb->prepare(
694
+ "SELECT ID
695
+ FROM {$wpdb->posts}
696
+ WHERE post_type = %s
697
+ AND post_parent = %d;
698
+ ",
699
+ 'topics',
700
+ $course_id
701
+ ) );
702
 
703
  $lesson_count = 0;
704
+ if ( $this->count( $topicIDS ) ) {
705
+ $inIDS = implode( ",", $topicIDS );
706
+ $lesson_count = $wpdb->get_var( $wpdb->prepare(
707
+ "SELECT COUNT(ID)
708
+ FROM {$wpdb->posts}
709
+ WHERE post_parent IN({$inIDS})
710
+ AND post_type = %s;
711
+ ",
712
+ $lesson_post_type
713
+ ) );
714
  }
715
 
716
  return (int) $lesson_count;
726
  *
727
  * @since v.1.0.0
728
  */
729
+ public function get_completed_lesson_count_by_course( $course_id = 0, $user_id = 0 ) {
 
 
730
  global $wpdb;
731
 
732
+ $course_id = $this->get_post_id( $course_id );
733
+ $user_id = $this->get_user_id( $user_id );
734
+
735
+ $completed_lesson_ids = $wpdb->get_col( $wpdb->prepare(
736
+ "SELECT post_id
737
+ FROM {$wpdb->postmeta}
738
+ WHERE meta_key = %s
739
+ AND meta_value = %d;
740
+ ",
741
+ '_tutor_course_id_for_lesson',
742
+ $course_id
743
+ ) );
744
 
745
  $count = 0;
746
+ if ( is_array( $completed_lesson_ids ) && count( $completed_lesson_ids) ) {
747
  $completed_lesson_meta_ids = array();
748
+ foreach ( $completed_lesson_ids as $lesson_id ) {
749
+ $completed_lesson_meta_ids[] = '_tutor_completed_lesson_id_' . $lesson_id;
750
  }
751
+ $in_ids = implode( "','", $completed_lesson_meta_ids );
752
 
753
+ $count = (int) $wpdb->get_var( $wpdb->prepare(
754
+ "SELECT count(umeta_id)
755
+ FROM {$wpdb->usermeta}
756
+ WHERE user_id = %d
757
+ AND meta_key IN ('{$in_ids}')
758
+ ",
759
+ $user_id
760
+ ) );
761
  }
762
 
763
  return $count;
772
  * @since v.1.0.0
773
  * @updated v.1.6.1
774
  */
775
+ public function get_course_completed_percent( $course_id = 0, $user_id = 0 ) {
776
+ $course_id = $this->get_post_id($course_id);
777
+ $user_id = $this->get_user_id($user_id);
 
778
  $completed_lesson = $this->get_completed_lesson_count_by_course($course_id, $user_id);
779
+ $course_contents = tutils()->get_course_contents_by_id($course_id);
780
+ $totalContents = $this->count($course_contents);
781
+ $totalContents = $totalContents ? $totalContents : 0;
782
+ $completedCount = $completed_lesson;
783
+
784
+ if ( tutils()->count( $course_contents ) ) {
785
+ foreach ( $course_contents as $content ) {
786
+ if ( $content->post_type === 'tutor_quiz' ) {
787
+ $attempt = $this->get_quiz_attempt( $content->ID );
788
+ if ( $attempt) {
 
 
789
  $completedCount++;
790
  }
791
+ } elseif ( $content->post_type === 'tutor_assignments' ) {
792
+ $isSubmitted = $this->is_assignment_submitted( $content->ID );
793
+ if ( $isSubmitted ) {
794
  $completedCount++;
795
  }
796
  }
797
  }
798
  }
799
 
800
+ if ( $totalContents > 0 && $completedCount > 0 ) {
801
+ return number_format( ( $completedCount * 100 ) / $totalContents );
802
  }
803
 
804
  return 0;
813
  *
814
  * @since v.1.0.0
815
  */
816
+ public function get_topics( $course_id = 0 ) {
817
+ $course_id = $this->get_post_id( $course_id );
818
 
819
  $args = array(
820
+ 'post_type' => 'topics',
821
+ 'post_parent' => $course_id,
822
+ 'orderby' => 'menu_order',
823
+ 'order' => 'ASC',
824
+ 'posts_per_page' => -1,
825
  );
826
 
827
+ $query = new \WP_Query( $args );
828
+
829
  return $query;
830
  }
831
 
838
  *
839
  * @since v.1.0.0
840
  */
841
+ public function get_next_topic_order_id( $course_ID ) {
842
  global $wpdb;
843
 
844
+ $last_order = (int) $wpdb->get_var( $wpdb->prepare(
845
+ "SELECT MAX(menu_order)
846
+ FROM {$wpdb->posts}
847
+ WHERE post_parent = %d
848
+ AND post_type = %s;
849
+ ",
850
+ $course_ID,
851
+ 'topics'
852
+ ) );
853
 
854
  return $last_order + 1;
855
  }
863
  *
864
  * @since v.1.0.0
865
  */
866
+ public function get_next_course_content_order_id( $topic_ID ) {
867
  global $wpdb;
868
 
869
+ $last_order = (int) $wpdb->get_var( $wpdb->prepare(
870
+ "SELECT MAX(menu_order)
871
+ FROM {$wpdb->posts}
872
+ WHERE post_parent = %d;
873
+ ",
874
+ $topic_ID
875
+ ) );
876
+
877
  return $last_order + 1;
878
  }
879
 
887
  *
888
  * @since v.1.0.0
889
  */
890
+ public function get_lessons_by_topic( $topics_id = 0, $limit = 10 ) {
891
+ $topics_id = $this->get_post_id( $topics_id );
 
892
  $lesson_post_type = tutor()->lesson_post_type;
893
+
894
  $args = array(
895
+ 'post_type' => $lesson_post_type,
896
+ 'post_parent' => $topics_id,
897
+ 'posts_per_page' => $limit,
898
+ 'orderby' => 'menu_order',
899
+ 'order' => 'ASC',
900
  );
901
 
902
+ $query = new \WP_Query( $args );
903
 
904
  return $query;
905
  }
914
  *
915
  * @since v.1.0.0
916
  */
917
+ public function get_course_contents_by_topic( $topics_id = 0, $limit = 10 ) {
918
+ $topics_id = $this->get_post_id($topics_id);
 
919
  $lesson_post_type = tutor()->lesson_post_type;
920
+ $post_type = apply_filters( 'tutor_course_contents_post_types', array( $lesson_post_type, 'tutor_quiz' ) );
921
+
922
  $args = array(
923
+ 'post_type' => $post_type,
924
+ 'post_parent' => $topics_id,
925
+ 'posts_per_page' => $limit,
926
+ 'orderby' => 'menu_order',
927
+ 'order' => 'ASC',
928
  );
929
 
930
+ $query = new \WP_Query( $args );
931
 
932
  return $query;
933
  }
939
  *
940
  * @since v.1.0.0
941
  */
942
+ public function checking_nonce( $request_method = 'post' ) {
943
 
944
+ $data = $request_method === 'post' ? $_POST : $_GET;
945
+ $matched = ! empty( $data[tutor()->nonce] ) && wp_verify_nonce( $data[tutor()->nonce], tutor()->nonce_action );
946
 
947
+ ! $matched ? exit( __('Nonce not matched', 'tutor') ) : 0;
948
  }
949
 
950
  /**
954
  *
955
  * @since v.1.0.0
956
  */
957
+ public function is_course_purchasable( $course_id = 0 ) {
958
+ $course_id = $this->get_post_id( $course_id );
959
+ $price_type = $this->price_type( $course_id );
960
 
961
+ if ( $price_type === 'free' ) {
962
+ $is_paid = apply_filters( 'is_course_paid', false, $course_id );
963
+ if ( ! $is_paid ) {
 
964
  return false;
965
  }
966
  }
967
+
968
+ return apply_filters( 'is_course_purchasable', false, $course_id );
969
  }
970
 
971
  /**
977
  *
978
  * @since v.1.0.0
979
  */
980
+ public function get_course_price( $course_id = 0 ) {
981
+ $price = null;
982
+ $course_id = $this->get_post_id( $course_id );
983
 
984
+ if ( $this->is_course_purchasable() ) {
 
 
 
 
 
985
  $monetize_by = $this->get_option('monetize_by');
986
 
987
+ if ( $this->has_wc() && $monetize_by === 'wc' ) {
988
+ $product_id = tutor_utils()->get_course_product_id( $course_id );
989
  $product = wc_get_product( $product_id );
990
 
991
  if ( $product ) {
992
  $price = $product->get_price();
993
  }
994
+ } else {
995
+ $price = apply_filters( 'get_tutor_course_price', null, $course_id );
996
  }
997
  }
998
 
1010
  *
1011
  * @since v.1.3.1
1012
  */
1013
+ public function get_raw_course_price( $course_id = 0 ) {
1014
+ $course_id = $this->get_post_id( $course_id );
1015
 
1016
  $prices = array(
1017
  'regular_price' => 0,
1020
 
1021
  $monetize_by = $this->get_option('monetize_by');
1022
 
1023
+ $product_id = $this->get_course_product_id( $course_id );
1024
+ if ( $product_id ) {
 
1025
  if ( $monetize_by === 'wc' && $this->has_wc() ) {
1026
  $prices['regular_price'] = get_post_meta( $product_id, '_regular_price', true );
1027
  $prices['sale_price'] = get_post_meta( $product_id, '_sale_price', true );
1030
  $prices['sale_price'] = get_post_meta( $product_id, 'edd_price', true );
1031
  }
1032
  }
 
1033
 
1034
  return (object) $prices;
1035
  }
1043
  *
1044
  * @since v.1.3.5
1045
  */
1046
+ public function price_type( $course_id = 0 ) {
1047
+ $course_id = $this->get_post_id( $course_id );
1048
+ $price_type = get_post_meta( $course_id, '_tutor_course_price_type', true );
 
 
1049
  return $price_type;
1050
  }
1051
 
1058
  *
1059
  * @since v.1.0.0
1060
  */
1061
+ public function is_enrolled( $course_id = 0, $user_id = 0 ) {
1062
+ $course_id = $this->get_post_id( $course_id );
1063
+ $user_id = $this->get_user_id( $user_id );
1064
 
1065
+ if ( is_user_logged_in() ) {
 
 
 
 
1066
  global $wpdb;
1067
 
1068
+ do_action( 'tutor_is_enrolled_before', $course_id, $user_id );
1069
+
1070
+ $getEnrolledInfo = $wpdb->get_row( $wpdb->prepare(
1071
+ "SELECT ID,
1072
+ post_author,
1073
+ post_date,
1074
+ post_date_gmt,
1075
+ post_title
1076
+ FROM {$wpdb->posts}
1077
+ WHERE post_type = %s
1078
+ AND post_parent = %d
1079
+ AND post_author = %d
1080
+ AND post_status = %s;
1081
+ ",
1082
+ 'tutor_enrolled',
1083
+ $course_id,
1084
+ $user_id,
1085
+ 'completed'
1086
+ ) );
1087
 
1088
  if ( $getEnrolledInfo ) {
1089
+ return apply_filters( 'tutor_is_enrolled', $getEnrolledInfo, $course_id, $user_id );
1090
  }
1091
  }
1092
+
1093
  return false;
1094
  }
1095
 
1103
  *
1104
  * @since v.1.0.0
1105
  */
1106
+ public function has_any_enrolled( $course_id = 0, $user_id = 0 ) {
1107
+ $course_id = $this->get_post_id( $course_id );
1108
+ $user_id = $this->get_user_id( $user_id );
1109
 
1110
+ if ( is_user_logged_in() ) {
1111
  global $wpdb;
1112
 
1113
+ $getEnrolledInfo = $wpdb->get_row( $wpdb->prepare(
1114
+ "SELECT ID,
1115
+ post_author,
1116
+ post_date,
1117
+ post_date_gmt,
1118
+ post_title
1119
+ FROM {$wpdb->posts}
1120
+ WHERE post_type = %s
1121
+ AND post_parent = %d
1122
+ AND post_author = %d;
1123
+ ",
1124
+ 'tutor_enrolled',
1125
+ $course_id,
1126
+ $user_id
1127
+ ) );
1128
 
1129
  if ( $getEnrolledInfo ) {
1130
  return $getEnrolledInfo;
1131
  }
1132
  }
1133
+
1134
  return false;
1135
  }
1136
 
1143
  *
1144
  * @since v.1.6.1
1145
  */
1146
+ public function get_course_by_enrol_id( $enrol_id = 0 ) {
1147
+ if ( ! $enrol_id ) {
 
1148
  return false;
1149
  }
1150
 
1151
  global $wpdb;
1152
 
1153
+ $course_id = (int) $wpdb->get_var( $wpdb->prepare(
1154
+ "SELECT post_parent
1155
+ FROM {$wpdb->posts}
1156
+ WHERE post_type = %s
1157
+ AND ID = %d
1158
+ ",
1159
+ 'tutor_enrolled',
1160
+ $enrol_id
1161
+ ) );
1162
 
1163
  if ( $course_id ) {
1164
+ return get_post( $course_id );
1165
  }
1166
 
1167
  return null;
1177
  *
1178
  * @since v.1.0.0
1179
  */
1180
+ public function is_course_enrolled_by_lesson( $lesson_id = 0, $user_id = 0 ) {
1181
+ $lesson_id = $this->get_post_id( $lesson_id );
1182
+ $user_id = $this->get_user_id( $user_id );
1183
+ $course_id = $this->get_course_id_by_lesson( $lesson_id );
1184
 
1185
+ return $this->is_enrolled( $course_id );
 
 
 
 
 
1186
  }
1187
 
1188
  /**
1197
  * @updated v.1.4.8
1198
  * Added Legacy Supports
1199
  */
1200
+ public function get_course_id_by_lesson( $lesson_id = 0 ) {
1201
+ $lesson_id = $this->get_post_id( $lesson_id );
1202
+ $course_id = get_post_meta( $lesson_id, '_tutor_course_id_for_lesson', true );
1203
 
1204
+ if ( ! $course_id ) {
1205
+ $course_id = $this->get_course_id_by_content( $lesson_id );
 
 
 
 
1206
  }
1207
+ if ( ! $course_id ) {
1208
  $course_id = 0;
1209
  }
1210
 
1220
  *
1221
  * @since v.1.0.0
1222
  */
1223
+ public function get_course_first_lesson( $course_id = 0 ) {
 
1224
  global $wpdb;
1225
 
1226
+ $course_id = $this->get_post_id( $course_id );
1227
+ $user_id = get_current_user_id();
1228
+
1229
+ $lessons = $wpdb->get_results( $wpdb->prepare(
1230
+ "SELECT items.ID
1231
+ FROM {$wpdb->posts} topic
1232
+ INNER JOIN {$wpdb->posts} items
1233
+ ON topic.ID = items.post_parent
1234
+ WHERE topic.post_parent = %d
1235
+ AND items.post_status = %s
1236
+ ORDER BY topic.menu_order ASC,
1237
+ items.menu_order ASC;
1238
+ ",
1239
+ $course_id,
1240
+ 'publish'
1241
+ ) );
1242
 
1243
  $first_lesson = false;
1244
 
1245
+ if ( tutils()->count( $lessons ) ) {
1246
+ if ( ! empty( $lessons[0] ) ) {
1247
  $first_lesson = $lessons[0];
1248
  }
1249
 
1250
+ foreach ( $lessons as $lesson ) {
1251
+ $is_complete = get_user_meta( $user_id, "_tutor_completed_lesson_id_{$lesson->ID}", true );
1252
+ if ( ! $is_complete ) {
1253
  $first_lesson = $lesson;
1254
  break;
1255
  }
1256
  }
1257
 
1258
+ if ( ! empty($first_lesson->ID) ) {
1259
+ return get_permalink( $first_lesson->ID );
1260
  }
1261
  }
1262
 
1269
  *
1270
  * @since v.1.0.0
1271
  */
1272
+ public function course_sub_pages() {
1273
  $nav_items = array(
1274
+ 'questions' => __('Q&A', 'tutor'),
1275
  'announcements' => __('Announcements', 'tutor'),
1276
  );
1277
+
1278
+ return apply_filters( 'tutor_course/single/enrolled/nav_items', $nav_items );
1279
  }
1280
 
1281
  /**
1285
  *
1286
  * @since v.1.0.0
1287
  */
1288
+ public function get_video( $post_id = 0 ) {
1289
+ $post_id = $this->get_post_id( $post_id );
1290
+ $attachments = get_post_meta( $post_id, '_video', true );
1291
+ if ( $attachments ) {
1292
+ $attachments = maybe_unserialize( $attachments );
1293
  }
1294
  return $attachments;
1295
  }
1302
  *
1303
  * Update the video Info
1304
  */
1305
+ public function update_video( $post_id = 0, $video_data = array() ) {
1306
+ $post_id = $this->get_post_id( $post_id );
1307
 
1308
+ if ( is_array( $video_data ) && count( $video_data ) ) {
1309
+ update_post_meta( $post_id, '_video', $video_data );
1310
  }
1311
  }
1312
 
1317
  *
1318
  * @since v.1.0.0
1319
  */
1320
+ public function get_attachments( $post_id = 0 ) {
1321
+ $post_id = $this->get_post_id( $post_id );
1322
+ $attachments = maybe_unserialize( get_post_meta( $post_id, '_tutor_attachments', true ) );
1323
  $attachments_arr = array();
 
1324
 
1325
+ $font_icons = apply_filters( 'tutor_file_types_icon', array(
1326
  'archive',
1327
  'audio',
1328
  'code',
1335
  'image',
1336
  ));
1337
 
1338
+ if ( is_array( $attachments ) && count( $attachments ) ) {
1339
  foreach ( $attachments as $attachment ) {
1340
  $url = wp_get_attachment_url( $attachment );
1341
  $file_type = wp_check_filetype( $url );
1342
  $ext = $file_type['ext'];
1343
+ $title = get_the_title($attachment);
1344
 
1345
+ $file_path = get_attached_file( $attachment );
1346
  $size_bytes = file_exists($file_path) ? filesize( $file_path ) : 0;
1347
  $size = size_format( $size_bytes, 2 );
1348
+ $type = wp_ext2type( $ext );
1349
 
1350
  $icon = 'default';
1351
  if ( $type && in_array( $type, $font_icons ) ) {
1381
  *
1382
  * @since v.1.0.0
1383
  */
1384
+ public function playtime_string( $seconds ) {
1385
+ $sign = ( ( $seconds < 0 ) ? '-' : '' );
1386
+ $seconds = round( abs( $seconds ) );
1387
  $H = (int) floor( $seconds / 3600);
1388
+ $M = (int) floor( ($seconds - (3600 * $H) ) / 60 );
1389
  $S = (int) round( $seconds - (3600 * $H) - (60 * $M) );
1390
  return $sign.($H ? $H.':' : '').($H ? str_pad($M, 2, '0', STR_PAD_LEFT) : intval($M)).':'.str_pad($S, 2, 0, STR_PAD_LEFT);
1391
  }
1399
  *
1400
  * @since v.1.0.0
1401
  */
1402
+ public function playtime_array( $seconds ) {
1403
  $run_time_format = array(
1404
+ 'hours' => '00',
1405
  'minutes' => '00',
1406
  'seconds' => '00',
1407
  );
1408
 
1409
+ if ($seconds <= 0 ) {
1410
  return $run_time_format;
1411
  }
1412
 
1413
+ $playTimeString = $this->playtime_string( $seconds );
1414
+ $timeInArray = explode( ':', $playTimeString );
1415
 
1416
  $run_time_size = count($timeInArray);
1417
+ if ( $run_time_size === 3 ) {
1418
+ $run_time_format[ 'hours' ] = $timeInArray[0];
1419
+ $run_time_format[ 'minutes' ] = $timeInArray[1];
1420
+ $run_time_format[ 'seconds' ] = $timeInArray[2];
1421
+ } elseif ( $run_time_size === 2 ) {
1422
+ $run_time_format[ 'minutes' ] = $timeInArray[0];
1423
+ $run_time_format[ 'seconds' ] = $timeInArray[1];
1424
  }
1425
 
1426
  return $run_time_format;
1435
  *
1436
  * @since v.1.0.0
1437
  */
1438
+ public function seconds_to_time_context( $seconds ) {
1439
+ $sign = ( ($seconds < 0) ? '-' : '');
1440
+ $seconds = round( abs( $seconds ) );
1441
+ $H = (int) floor( $seconds / 3600);
1442
+ $M = (int) floor( ($seconds - (3600 * $H) ) / 60 );
1443
+ $S = (int) round( $seconds - (3600 * $H) - (60 * $M) );
1444
 
1445
  return $sign.($H ? $H.'h ' : '').($H ? str_pad($M, 2, '0', STR_PAD_LEFT) : intval($M)).'m '.str_pad($S, 2, 0, STR_PAD_LEFT).'s';
1446
  }
1452
  *
1453
  * @since v.1.0.0
1454
  */
1455
+ public function get_video_info( $lesson_id = 0 ) {
1456
+ $lesson_id = $this->get_post_id( $lesson_id );
1457
+ $video = $this->get_video( $lesson_id );
1458
 
1459
+ if ( ! $video ) {
 
 
 
 
1460
  return false;
1461
  }
1462
 
1464
  'playtime' => '00:00',
1465
  );
1466
 
1467
+ $types = apply_filters( 'tutor_video_types', array( "mp4" => "video/mp4", "webm" => "video/webm", "ogg" => "video/ogg" ) );
1468
 
1469
  $videoSource = $this->avalue_dot('source', $video);
1470
 
1471
+ if ( $videoSource === 'html5' ) {
1472
+ $sourceVideoID = $this->avalue_dot( 'source_video_id', $video );
1473
+ $video_info = get_post_meta( $sourceVideoID, '_wp_attachment_metadata', true );
1474
 
1475
+ if ( $video_info && in_array( $this->array_get('mime_type', $video_info), $types ) ) {
1476
  $path = get_attached_file( $sourceVideoID );
1477
  $info['playtime'] = $video_info['length_formatted'];
1478
  $info['path'] = $path;
1482
  }
1483
  }
1484
 
1485
+ if ( $videoSource !== 'html5' ) {
1486
+ $video = maybe_unserialize( get_post_meta( $lesson_id, '_video', true ) );
1487
+ $runtimeHours = tutor_utils()->avalue_dot( 'runtime.hours', $video );
1488
+ $runtimeMinutes = tutor_utils()->avalue_dot( 'runtime.minutes', $video );
1489
+ $runtimeSeconds = tutor_utils()->avalue_dot( 'runtime.seconds', $video );
 
1490
 
1491
+ $runtimeHours = $runtimeHours ? $runtimeHours : '00';
1492
  $runtimeMinutes = $runtimeMinutes ? $runtimeMinutes : '00';
1493
  $runtimeSeconds = $runtimeSeconds ? $runtimeSeconds : '00';
1494
 
1495
  $info['playtime'] = "$runtimeHours:$runtimeMinutes:$runtimeSeconds";
1496
  }
1497
 
1498
+ $info = array_merge( $info, $video );
1499
 
1500
  return (object) $info;
1501
  }
1502
 
1503
+ public function get_optimized_duration( $duration ) {
1504
  /* if(is_string($duration)){
1505
  strpos($duration, '00:')===0 ? $duration=substr($duration, 3) : 0; // Remove Empty hour
1506
  strpos($duration, '00:')===0 ? $duration=substr($duration, 3) : 0; // Remove empty minute
1518
  *
1519
  * @since v.1.0.0
1520
  */
1521
+ public function is_html5_video( $post_id = 0 ) {
1522
+ $post_id = $this->get_post_id( $post_id );
1523
+ $video = $this->get_video( $post_id );
1524
 
1525
+ if ( ! $video ) {
 
1526
  return false;
1527
  }
1528
+
1529
+ $videoSource = $this->avalue_dot( 'source', $video );
1530
+
1531
  return $videoSource === 'html5';
1532
  }
1533
 
1543
  *
1544
  * @since v.1.0.0
1545
  */
1546
+ public function get_lesson_type_icon( $lesson_id = 0, $html = false, $echo = false ) {
1547
+ $post_id = $this->get_post_id( $lesson_id );
1548
+ $video = tutor_utils()->get_video_info( $post_id );
 
1549
 
1550
  $play_time = false;
1551
+ if ( $video ) {
1552
  $play_time = $video->playtime;
1553
  }
1554
 
1555
  $tutor_lesson_type_icon = $play_time ? 'youtube' : 'document';
1556
 
1557
+ if ( $html ) {
1558
  $tutor_lesson_type_icon = "<i class='tutor-icon-$tutor_lesson_type_icon'></i> ";
1559
  }
1560
 
1561
+ if ( $echo ) {
1562
  echo $tutor_lesson_type_icon;
1563
  }
1564
 
1573
  *
1574
  * @since v.1.0.0
1575
  */
1576
+ public function is_completed_lesson( $lesson_id = 0, $user_id = 0 ) {
1577
+ $lesson_id = $this->get_post_id( $lesson_id );
1578
+ $user_id = $this->get_user_id( $user_id );
1579
+ $is_completed = get_user_meta( $user_id, '_tutor_completed_lesson_id_'.$lesson_id, true );
1580
 
1581
+ if ( $is_completed ) {
 
 
 
 
 
 
1582
  return $is_completed;
1583
  }
1584
 
1597
  *
1598
  * @updated v.1.4.9
1599
  */
1600
+ public function is_completed_course( $course_id = 0, $user_id = 0 ) {
1601
+ if ( ! is_user_logged_in() ) {
1602
+ return apply_filters( 'is_completed_course', false, $course_id, $user_id );
 
1603
  }
1604
 
1605
  global $wpdb;
1606
  $course_id = $this->get_post_id($course_id);
1607
+ $user_id = $this->get_user_id($user_id);
1608
 
1609
+ $is_completed = $wpdb->get_row( $wpdb->prepare(
1610
+ "SELECT comment_ID,
1611
+ comment_post_ID AS course_id,
1612
+ comment_author AS completed_user_id,
1613
+ comment_date AS completion_date,
1614
+ comment_content AS completed_hash
1615
+ FROM {$wpdb->comments}
1616
+ WHERE comment_agent = %s
1617
+ AND comment_type = %s
1618
+ AND comment_post_ID = %d
1619
+ AND user_id = %d;
1620
+ ",
1621
+ 'TutorLMSPlugin',
1622
+ 'course_completed',
1623
+ $course_id,
1624
+ $user_id
1625
+ ) );
1626
 
1627
+ if ( $is_completed ) {
1628
+ return apply_filters( 'is_completed_course', $is_completed, $course_id, $user_id );
1629
  }
1630
 
1631
+ return apply_filters( 'is_completed_course', false, $course_id, $user_id );
1632
  }
1633
 
1634
  /**
1640
  *
1641
  * @since v.1.0.0
1642
  */
1643
+ public function sanitize_array( $input = array() ) {
1644
  $array = array();
1645
 
1646
+ if ( is_array( $input ) && count( $input ) ) {
1647
+ foreach ( $input as $key => $value ) {
1648
+ if ( is_array( $value )) {
1649
+ $array[$key] = $this->sanitize_array( $value );
1650
+ } else {
1651
+ $key = sanitize_text_field( $key );
1652
+ $value = sanitize_text_field( $value );
1653
  $array[$key] = $value;
1654
  }
1655
  }
1667
  *
1668
  * @since v.1.0.0
1669
  */
1670
+ public function has_video_in_single( $post_id = 0 ) {
1671
+ if ( is_single() ) {
1672
+ $post_id = $this->get_post_id( $post_id );
 
1673
 
1674
  $video = $this->get_video( $post_id );
1675
+ if ( $video && $this->array_get( 'source', $video ) !== '-1' ) {
1676
 
1677
+ $not_empty =!empty( $video[ 'source_video_id' ] ) ||
1678
+ !empty( $video[ 'source_external_url' ] ) ||
1679
+ !empty( $video[ 'source_youtube' ] ) ||
1680
+ !empty( $video[ 'source_vimeo' ] ) ||
1681
+ !empty( $video[ 'source_embedded' ] );
1682
 
1683
  return $not_empty ? $video : false;
1684
  }
1701
  *
1702
  * @since v.1.0.0
1703
  */
1704
+ public function get_students( $start = 0, $limit = 10, $search_term = '' ) {
 
 
1705
  global $wpdb;
1706
 
1707
+ $search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
1708
+
1709
+ $students = $wpdb->get_results( $wpdb->prepare(
1710
+ "SELECT SQL_CALC_FOUND_ROWS {$wpdb->users}.*
1711
+ FROM {$wpdb->users}
1712
+ INNER JOIN {$wpdb->usermeta}
1713
+ ON ( {$wpdb->users}.ID = {$wpdb->usermeta}.user_id )
1714
+ WHERE {$wpdb->usermeta}.meta_key = %s
1715
+ AND ( {$wpdb->users}.display_name LIKE %s OR {$wpdb->users}.user_email LIKE %s )
1716
+ ORDER BY {$wpdb->usermeta}.meta_value DESC
1717
+ LIMIT {$start}, {$limit};
1718
+ ",
1719
+ '_is_tutor_student',
1720
+ $search_term,
1721
+ $search_term,
1722
+ ) );
1723
 
1724
  return $students;
1725
  }
1734
  *
1735
  * @since v.1.0.0
1736
  */
1737
+ public function get_total_students( $search_term = '' ) {
 
 
1738
  global $wpdb;
1739
 
1740
+ $search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
1741
+
1742
+ $count = $wpdb->get_var( $wpdb->prepare(
1743
+ "SELECT COUNT({$wpdb->users}.ID)
1744
+ FROM {$wpdb->users}
1745
+ INNER JOIN {$wpdb->usermeta}
1746
+ ON ( {$wpdb->users}.ID = {$wpdb->usermeta}.user_id )
1747
+ WHERE {$wpdb->usermeta}.meta_key = %s
1748
+ AND ( {$wpdb->users}.display_name LIKE %s OR {$wpdb->users}.user_email LIKE %s );
1749
+ ",
1750
+ '_is_tutor_student',
1751
+ $search_term,
1752
+ $search_term,
1753
+ ) );
1754
 
1755
  return (int) $count;
1756
  }
1764
  *
1765
  * @since v.1.0.0
1766
  */
1767
+ public function get_completed_courses_ids_by_user( $user_id = 0 ) {
1768
  global $wpdb;
1769
 
1770
+ $user_id = $this->get_user_id( $user_id );
1771
 
1772
+ $course_ids = (array) $wpdb->get_col( $wpdb->prepare(
1773
+ "SELECT comment_post_ID AS course_id
1774
+ FROM {$wpdb->comments}
1775
+ WHERE comment_agent = %s
1776
+ AND comment_type = %s
1777
+ AND user_id = %d
1778
+ ",
1779
+ 'TutorLMSPlugin',
1780
+ 'course_completed',
1781
+ $user_id
1782
+ ) );
1783
 
1784
  return $course_ids;
1785
  }
1793
  *
1794
  * @since v.1.0.0
1795
  */
1796
+ public function get_courses_by_user( $user_id = 0 ) {
1797
+ $user_id = $this->get_user_id( $user_id );
1798
+ $course_ids = $this->get_completed_courses_ids_by_user( $user_id );
1799
 
1800
+ if ( count($course_ids) ) {
1801
  $course_post_type = tutor()->course_post_type;
1802
  $course_args = array(
1803
+ 'post_type' => $course_post_type,
1804
+ 'post_status' => 'publish',
1805
+ 'post__in' => $course_ids,
1806
  'posts_per_page' => -1
1807
  );
1808
 
1809
+ return new \WP_Query( $course_args );
1810
  }
1811
 
1812
  return false;
1821
  *
1822
  * @since v.1.0.0
1823
  */
1824
+ public function get_active_courses_by_user( $user_id = 0 ) {
1825
+ $user_id = $this->get_user_id( $user_id );
1826
+ $course_ids = $this->get_completed_courses_ids_by_user( $user_id );
1827
+ $enrolled_course_ids = $this->get_enrolled_courses_ids_by_user( $user_id );
1828
+ $active_courses = array_diff( $enrolled_course_ids, $course_ids );
1829
 
1830
+ if ( count( $active_courses ) ) {
 
 
 
 
 
 
 
1831
  $course_post_type = tutor()->course_post_type;
1832
  $course_args = array(
1833
+ 'post_type' => $course_post_type,
1834
+ 'post_status' => 'publish',
1835
+ 'post__in' => $active_courses,
1836
  'posts_per_page' => -1,
1837
  );
1838
 
1839
+ return new \WP_Query( $course_args );
1840
  }
1841
 
1842
  return false;
1851
  *
1852
  * @since v.1.0.0
1853
  */
1854
+ public function get_enrolled_courses_ids_by_user( $user_id = 0 ) {
 
1855
  global $wpdb;
1856
+ $user_id = $this->get_user_id( $user_id );
1857
+ $course_ids = $wpdb->get_col( $wpdb->prepare(
1858
+ "SELECT post_parent
1859
+ FROM {$wpdb->posts}
1860
+ WHERE post_type = %s
1861
+ AND post_status = %s
1862
+ AND post_author = %d;
1863
+ ",
1864
+ 'tutor_enrolled',
1865
+ 'completed',
1866
+ $user_id
1867
+ ) );
1868
 
1869
  return $course_ids;
1870
  }
1876
  *
1877
  * Get the total enrolled users at course
1878
  */
1879
+ public function count_enrolled_users_by_course( $course_id = 0 ) {
1880
  global $wpdb;
1881
+
1882
+ $course_id = $this->get_post_id( $course_id );
1883
 
1884
  $course_ids = $wpdb->get_var($wpdb->prepare(
1885
  "SELECT COUNT(ID)
1886
+ FROM {$wpdb->posts}
1887
+ WHERE post_type = %s
1888
+ AND post_status = %s
1889
+ AND post_parent = %d;
1890
+ ",
1891
+ 'tutor_enrolled',
1892
+ 'completed',
1893
+ $course_id
1894
+ ) );
1895
 
1896
  return (int) $course_ids;
1897
  }
1903
  *
1904
  * Get the enrolled courses by user
1905
  */
1906
+ public function get_enrolled_courses_by_user( $user_id = 0, $post_status='publish' ) {
1907
  global $wpdb;
1908
 
1909
+ $user_id = $this->get_user_id( $user_id );
1910
+ $course_ids = $this->get_enrolled_courses_ids_by_user( $user_id );
1911
 
1912
+ if ( count( $course_ids ) ) {
1913
  $course_post_type = tutor()->course_post_type;
1914
  $course_args = array(
1915
+ 'post_type' => $course_post_type,
1916
+ 'post_status' => $post_status,
1917
+ 'post__in' => $course_ids,
1918
  'posts_per_page' => -1
1919
  );
1920
+ return new \WP_Query( $course_args );
1921
  }
1922
+
1923
  return false;
1924
  }
1925
 
 
1926
  /**
1927
  * @param int $post_id
1928
  *
1930
  *
1931
  * Get the video streaming URL by post/lesson/course ID
1932
  */
1933
+ public function get_video_stream_url( $post_id = 0 ) {
1934
+ $post_id = $this->get_post_id( $post_id );
1935
+ $post = get_post( $post_id );
1936
 
1937
+ if ( $post->post_type === tutor()->lesson_post_type ) {
1938
+ $video_url = trailingslashit( home_url() ) . 'video-url/' . $post->post_name;
1939
+ } else {
1940
+ $video_info = tutor_utils()->get_video_info( $post_id );
1941
  $video_url = $video_info->url;
1942
  }
1943
 
1954
  *
1955
  * @since v.1.0.0
1956
  */
1957
+ public function get_lesson_reading_info_full( $lesson_id = 0, $user_id = 0 ) {
1958
+ $lesson_id = $this->get_post_id( $lesson_id );
1959
+ $user_id = $this->get_user_id( $user_id );
1960
 
1961
+ $lesson_info = (array) maybe_unserialize( get_user_meta( $user_id, '_lesson_reading_info', true ) );
1962
+ return $this->avalue_dot( $lesson_id, $lesson_info );
1963
  }
1964
 
1965
  /**
1971
  *
1972
  * @since v.1.0.0
1973
  */
1974
+ public function get_post_id( $post_id = 0) {
1975
+ if ( ! $post_id ) {
1976
  $post_id = get_the_ID();
1977
+ if ( ! $post_id ) {
1978
  return false;
1979
  }
1980
  }
1991
  *
1992
  * @since v.1.0.0
1993
  */
1994
+ public function get_user_id( $user_id = 0 ) {
1995
+ if ( ! $user_id) {
1996
  $user_id = get_current_user_id();
1997
+ if ( ! $user_id ) {
1998
  return false;
1999
  }
2000
  }
2013
  *
2014
  * @since v.1.0.0
2015
  */
2016
+ public function get_lesson_reading_info( $lesson_id = 0, $user_id = 0, $key = '' ) {
2017
+ $lesson_id = $this->get_post_id( $lesson_id );
2018
+ $user_id = $this->get_user_id( $user_id );
2019
+ $lesson_info = $this->get_lesson_reading_info_full( $lesson_id, $user_id );
 
 
2020
 
2021
  return $this->avalue_dot($key, $lesson_info);
2022
  }
2032
  *
2033
  * @since v.1.0.0
2034
  */
2035
+ public function update_lesson_reading_info( $lesson_id = 0, $user_id = 0, $key = '', $value = '' ) {
2036
  $lesson_id = $this->get_post_id($lesson_id);
2037
+ $user_id = $this->get_user_id($user_id);
2038
 
2039
+ if ( $key && $value ) {
2040
+ $lesson_info = (array) maybe_unserialize( get_user_meta( $user_id, '_lesson_reading_info', true ) );
2041
+ $lesson_info[ $lesson_id ][ $key ] = $value;
2042
+ update_user_meta( $user_id, '_lesson_reading_info', $lesson_info );
2043
  }
2044
  }
2045
 
2052
  *
2053
  * @since v.1.0.0
2054
  */
2055
+ public function get_youtube_video_id( $url = '') {
2056
+ if ( ! $url ) {
2057
  return false;
2058
  }
 
2059
 
2060
+ preg_match( '%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match );
2061
+
2062
+ if ( isset( $match[1] ) ) {
2063
  $youtube_id = $match[1];
2064
  return $youtube_id;
2065
  }
2076
  *
2077
  * @since v.1.0.0
2078
  */
2079
+ public function get_vimeo_video_id( $url = '' ) {
2080
+ if ( preg_match('%^https?:\/\/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|video\/|)(\d+)(?:$|\/|\?)(?:[?]?.*)$%im', $url, $match ) ) {
2081
+ if ( isset( $match[3] ) ) {
2082
  return $match[3];
2083
  }
2084
  }
2092
  *
2093
  * @since v.1.0.0
2094
  */
2095
+ public function mark_lesson_complete( $post_id = 0, $user_id = 0 ) {
2096
+ $post_id = $this->get_post_id( $post_id );
2097
+ $user_id = $this->get_user_id( $user_id );
2098
 
2099
+ do_action( 'tutor_mark_lesson_complete_before', $post_id, $user_id );
2100
+ update_user_meta( $user_id, '_tutor_completed_lesson_id_'.$post_id, tutor_time() );
2101
+ do_action( 'tutor_mark_lesson_complete_after', $post_id, $user_id );
2102
  }
2103
 
2104
  /**
2119
  *
2120
  * @return bool
2121
  */
2122
+ public function do_enroll( $course_id = 0, $order_id = 0, $user_id = 0 ) {
2123
+ if ( ! $course_id ) {
 
2124
  return false;
2125
  }
2126
 
2127
+ do_action( 'tutor_before_enroll', $course_id );
2128
+ $user_id = $this->get_user_id( $user_id );
2129
+ $title = __( 'Course Enrolled', 'tutor')." &ndash; ".date( get_option('date_format') ) .' @ '.date(get_option('time_format') ) ;
2130
 
2131
  $enrolment_status = 'completed';
2132
 
2133
+ if ( $this->is_course_purchasable( $course_id ) ) {
2134
  /**
2135
  * We need to verify this enrollment, we will change the status later after payment confirmation
2136
  */
2137
  $enrolment_status = 'pending';
2138
  }
2139
 
2140
+ $enroll_data = apply_filters( 'tutor_enroll_data',
2141
  array(
2142
  'post_type' => 'tutor_enrolled',
2143
  'post_title' => $title,
2149
 
2150
  // Insert the post into the database
2151
  $isEnrolled = wp_insert_post( $enroll_data );
2152
+ if ( $isEnrolled ) {
2153
 
2154
  // Run this hook for both of pending and completed enrollment
2155
+ do_action( 'tutor_after_enroll', $course_id, $isEnrolled );
2156
 
2157
  // Run this hook for completed enrollment regardless of payment provider and free/paid mode
2158
+ if( $enroll_data['post_status'] == 'completed' ) {
2159
  do_action('tutor_after_enrolled', $course_id, $user_id, $isEnrolled);
2160
  }
2161
 
2162
  //Mark Current User as Students with user meta data
2163
  update_user_meta( $user_id, '_is_tutor_student', tutor_time() );
2164
 
2165
+ if ( $order_id ) {
2166
  //Mark order for course and user
2167
+ $product_id = $this->get_course_product_id( $course_id );
2168
  update_post_meta( $isEnrolled, '_tutor_enrolled_by_order_id', $order_id );
2169
  update_post_meta( $isEnrolled, '_tutor_enrolled_by_product_id', $product_id );
2170
  update_post_meta( $order_id, '_is_tutor_order_for_course', tutor_time() );
2184
  *
2185
  * @since v.1.6.1
2186
  */
2187
+ public function course_enrol_status_change( $enrol_id = false, $new_status = '' ) {
2188
+ if ( ! $enrol_id ) {
 
2189
  return;
2190
  }
2191
 
2192
  global $wpdb;
2193
 
2194
+ do_action( 'tutor/course/enrol_status_change/before',$enrol_id, $new_status );
2195
  $wpdb->update( $wpdb->posts, array( 'post_status' => $new_status ), array( 'ID' => $enrol_id ) );
2196
+ do_action( 'tutor/course/enrol_status_change/after',$enrol_id, $new_status );
2197
  }
2198
 
 
2199
  /**
2200
  * @param int $course_id
2201
  * @param int $user_id
2202
  * @param string $cancel_status
2203
  */
2204
+ public function cancel_course_enrol( $course_id = 0, $user_id = 0, $cancel_status = 'canceled' ) {
2205
+ $course_id = $this->get_post_id( $course_id );
2206
+ $user_id = $this->get_user_id( $user_id );
2207
+ $enrolled = $this->is_enrolled($course_id, $user_id);
 
2208
 
2209
+ if ( $enrolled ) {
2210
  global $wpdb;
2211
 
2212
+ if ( $cancel_status === 'delete') {
2213
+ $wpdb->delete( $wpdb->posts, array( 'post_type' => 'tutor_enrolled', 'post_author' => $user_id, 'post_parent' => $course_id ) );
2214
 
2215
  //Delete Related Meta Data
2216
+ delete_post_meta( $enrolled->ID, '_tutor_enrolled_by_product_id' );
2217
+ $order_id = get_post_meta( $enrolled->ID, '_tutor_enrolled_by_order_id', true );
2218
+ if ( $order_id ) {
2219
+ delete_post_meta( $enrolled->ID, '_tutor_enrolled_by_order_id' );
2220
+ delete_post_meta( $order_id, '_is_tutor_order_for_course' );
2221
+ delete_post_meta( $order_id, '_tutor_order_for_course_id_'.$course_id );
2222
 
2223
+ do_action( 'tutor_enrollment/after/delete', $enrolled->ID );
2224
  }
2225
+ } else {
2226
+ $wpdb->update( $wpdb->posts, array( 'post_status' => $cancel_status), array('post_type' => 'tutor_enrolled', 'post_author' => $user_id, 'post_parent' => $course_id ) );
2227
 
2228
+ if ( $cancel_status === 'cancel' ) {
2229
+ do_action( 'tutor_enrollment/after/cancel', $enrolled->ID );
2230
  }
2231
  }
2232
  }
2239
  *
2240
  * @since v.1.0.0
2241
  */
2242
+ public function complete_course_enroll( $order_id ) {
2243
+ if ( ! tutor_utils()->is_tutor_order( $order_id ) ) {
2244
  return;
2245
  }
2246
 
2247
  global $wpdb;
2248
 
2249
+ $enrolled_ids_with_course = $this->get_course_enrolled_ids_by_order_id( $order_id );
2250
+ if ( $enrolled_ids_with_course ) {
2251
+ $enrolled_ids = wp_list_pluck( $enrolled_ids_with_course, 'enrolled_id' );
2252
 
2253
+ if ( is_array( $enrolled_ids ) && count( $enrolled_ids ) ) {
2254
+ foreach ( $enrolled_ids as $enrolled_id ) {
2255
  $wpdb->update( $wpdb->posts, array( 'post_status' => 'completed' ), array( 'ID' => $enrolled_id ) );
2256
  }
2257
  }
2265
  *
2266
  * @since v.1.0.0
2267
  */
2268
+ public function get_course_enrolled_ids_by_order_id( $order_id ) {
2269
  global $wpdb;
 
 
 
2270
 
2271
+ //Getting all of courses ids within this order
2272
+ $courses_ids = $wpdb->get_results( $wpdb->prepare(
2273
+ "SELECT *
2274
+ FROM {$wpdb->postmeta}
2275
+ WHERE post_id = %d
2276
+ AND meta_key LIKE '_tutor_order_for_course_id_%'
2277
+ ",
2278
+ $order_id
2279
+ ) );
2280
+
2281
+ if ( is_array( $courses_ids ) && count( $courses_ids ) ) {
2282
  $course_enrolled_by_order = array();
2283
+ foreach ( $courses_ids as $courses_id ) {
2284
+ $course_id = str_replace( '_tutor_order_for_course_id_', '',$courses_id->meta_key );
2285
+ $course_enrolled_by_order[] = array(
2286
+ 'course_id' => $course_id,
2287
+ 'enrolled_id' => $courses_id->meta_value,
2288
+ 'order_id' => $courses_id->post_id
2289
+ );
2290
  }
2291
  return $course_enrolled_by_order;
2292
  }
2304
  *
2305
  * WooCommerce specific utils
2306
  */
2307
+ public function get_wc_products_db() {
2308
  global $wpdb;
2309
+ $query = $wpdb->get_results( $wpdb->prepare(
2310
+ "SELECT ID,
2311
+ post_title
2312
+ FROM {$wpdb->posts}
2313
+ WHERE post_status = %s
2314
+ AND post_type = %s;
2315
+ ",
2316
+ 'publish',
2317
+ 'product',
2318
+ ) );
2319
 
2320
  return $query;
2321
  }
2325
  *
2326
  * Get EDD Products
2327
  */
2328
+ public function get_edd_products() {
2329
  global $wpdb;
2330
+ $query = $wpdb->get_results( $wpdb->prepare(
2331
+ "SELECT ID,
2332
+ post_title
2333
+ FROM {$wpdb->posts}
2334
+ WHERE post_status = %s
2335
+ AND post_type = %s;
2336
+ ",
2337
+ 'publish',
2338
+ 'download',
2339
+ ) );
2340
 
2341
  return $query;
2342
  }
2350
  *
2351
  * @since v.1.0.0
2352
  */
2353
+ public function get_course_product_id( $course_id = 0 ) {
2354
+ $course_id = $this->get_post_id( $course_id );
2355
+ $product_id = (int) get_post_meta( $course_id, '_tutor_course_product_id', true );
2356
 
2357
  return $product_id;
2358
  }
2366
  *
2367
  * @since v.1.0.0
2368
  */
2369
+ public function product_belongs_with_course( $product_id = 0 ) {
 
2370
  global $wpdb;
2371
 
2372
+ $query = $wpdb->get_row( $wpdb->prepare(
2373
+ "SELECT *
2374
+ FROM {$wpdb->postmeta}
2375
+ WHERE meta_key = %s
2376
+ AND meta_value = %d
2377
+ limit 1
2378
+ ",
2379
+ '_tutor_course_product_id',
2380
+ $product_id
2381
+ ) );
2382
 
2383
  return $query;
2384
  }
2388
  *
2389
  * @since v.1.0.0
2390
  */
2391
+ public function get_enrolled_statuses() {
 
2392
  return apply_filters(
2393
  'tutor_get_enrolled_statuses',
2394
  array (
2412
  *
2413
  * @since v.1.0.0
2414
  */
2415
+ public function is_tutor_order( $order_id ) {
2416
+ return get_post_meta( $order_id, '_is_tutor_order_for_course', true );
2417
  }
2418
 
2419
  /**
2421
  *
2422
  * @deprecated
2423
  */
2424
+ public function tutor_student_dashboard_pages() {
2425
+ _deprecated_function( __METHOD__, '1.1.2', 'tutor_dashboard_pages' );
2426
  return $this->tutor_dashboard_pages();
2427
  }
2428
 
2433
  *
2434
  * @since v.1.0.0
2435
  */
2436
+ public function tutor_dashboard_pages() {
2437
+ $nav_items = apply_filters( 'tutor_dashboard/nav_items', array(
2438
+ 'index' => __( 'Dashboard', 'tutor' ),
2439
+ 'my-profile' => __( 'My Profile', 'tutor' ),
2440
+ 'enrolled-courses' => __( 'Enrolled Courses', 'tutor' ),
2441
+ 'wishlist' => __( 'Wishlist', 'tutor' ),
2442
+ 'reviews' => __( 'Reviews', 'tutor' ),
2443
+ 'my-quiz-attempts' => __( 'My Quiz Attempts', 'tutor' ),
2444
+ 'purchase_history' => __( 'Purchase History', 'tutor' ),
 
2445
  ));
2446
 
2447
+ $instructor_nav_items = apply_filters( 'tutor_dashboard/instructor_nav_items', array(
2448
+ 'separator-1' => array( 'title' => __( 'Instructor', 'tutor'), 'auth_cap' => tutor()->instructor_role, 'type' => 'separator' ),
2449
+ 'create-course' => array( 'title' => __( 'Create Course', 'tutor'), 'show_ui' => false, 'auth_cap' => tutor()->instructor_role ),
2450
+ 'my-courses' => array( 'title' => __( 'My Courses', 'tutor'), 'auth_cap' => tutor()->instructor_role ),
2451
+ 'announcements' => array( 'title' => __( 'Announcements', 'tutor'), 'auth_cap' => tutor()->instructor_role ),
2452
+ 'earning' => array( 'title' => __( 'Earnings', 'tutor'), 'auth_cap' => tutor()->instructor_role ),
2453
+ 'withdraw' => array( 'title' => __( 'Withdrawals', 'tutor'), 'auth_cap' => tutor()->instructor_role ),
2454
+ 'quiz-attempts' => array( 'title' => __( 'Quiz Attempts', 'tutor'), 'auth_cap' => tutor()->instructor_role ),
2455
+ 'question-answer' => array( 'title' => __( 'Question & Answer', 'tutor'), 'auth_cap' => tutor()->instructor_role ),
2456
  ));
2457
 
2458
+ $disable = get_tutor_option( 'disable_course_review' );
2459
+ if ( $disable && isset( $nav_items['reviews'] ) ) {
2460
+ unset( $nav_items['reviews'] );
2461
  }
2462
 
2463
+ $nav_items = array_merge( $nav_items, $instructor_nav_items );
2464
 
2465
+ $new_navs = apply_filters( 'tutor_dashboard/bottom_nav_items', array(
2466
+ 'separator-2' => array( 'title' => '', 'type' => 'separator' ),
2467
+ 'settings' => __( 'Settings', 'tutor' ),
2468
+ 'logout' => __( 'Logout', 'tutor' ),
2469
  ));
2470
+ $all_nav_items = array_merge( $nav_items, $new_navs );
2471
 
2472
+ return apply_filters( 'tutor_dashboard/nav_items_all', $all_nav_items );
2473
  }
2474
 
2475
+ public function tutor_dashboard_permalinks() {
2476
  $dashboard_pages = $this->tutor_dashboard_pages();
2477
 
2478
+ $dashboard_permalinks = apply_filters( 'tutor_dashboard/permalinks', array(
2479
+ 'retrieve-password' => array( 'title' => __( 'Retrieve Password', 'tutor' ), 'login_require' => false ),
2480
  ));
2481
 
2482
+ $dashboard_pages = array_merge( $dashboard_pages, $dashboard_permalinks );
2483
 
2484
  return $dashboard_pages;
2485
  }
2488
  * @return mixed
2489
  *
2490
  * Tutor Dashboard UI nav, only for using in the nav, it's handling user permission based
2491
+ * Dashboard nav items
2492
  *
2493
  * @since v.1.3.4
2494
  */
2495
+ public function tutor_dashboard_nav_ui_items() {
2496
  $nav_items = $this->tutor_dashboard_pages();
2497
 
2498
+ foreach ( $nav_items as $key => $nav_item ) {
2499
+ if ( is_array($nav_item) ) {
2500
 
2501
+ if ( isset( $nav_item['show_ui'] ) && ! tutor_utils()->array_get( 'show_ui', $nav_item ) ) {
2502
+ unset( $nav_items[ $key ] );
2503
  }
2504
+ if ( isset($nav_item['auth_cap'] ) && ! current_user_can( $nav_item['auth_cap'] ) ) {
2505
+ unset( $nav_items[ $key ] );
2506
  }
2507
  }
2508
  }
2520
  *
2521
  * @since v.1.0.0
2522
  */
2523
+ public function get_tutor_dashboard_page_permalink( $page_key = '', $page_id = 0 ) {
2524
+ if ( $page_key === 'index' ) {
2525
  $page_key = '';
2526
  }
2527
+ if ( ! $page_id ) {
2528
+ $page_id = (int) tutils()->get_option( 'tutor_dashboard_page_id' );
2529
  }
2530
+ return trailingslashit( get_permalink( $page_id ) ) . $page_key;
2531
  }
2532
 
2533
  /**
2540
  * @since v.1.0.0
2541
  * @updated v.1.4.2
2542
  */
2543
+ public function input_old( $input = '', $old_data = null ) {
2544
+ if ( ! $old_data ) {
2545
  $old_data = $_REQUEST;
2546
  }
2547
+ $value = $this->avalue_dot( $input, $old_data );
2548
+ if ( $value ) {
2549
  return $value;
2550
  }
2551
+
2552
  return '';
2553
  }
2554
 
2561
  *
2562
  * @since v.1.0.0
2563
  */
2564
+ public function is_instructor( $user_id = 0 ) {
2565
+ $user_id = $this->get_user_id( $user_id );
2566
+ return get_user_meta( $user_id, '_is_tutor_instructor', true );
2567
  }
2568
 
2569
  /**
2576
  *
2577
  * @since v.1.0.0
2578
  */
2579
+ public function instructor_status( $user_id = 0, $status_name = true ) {
2580
+ $user_id = $this->get_user_id( $user_id );
2581
 
2582
+ $instructor_status = apply_filters( 'tutor_instructor_statuses', array(
2583
+ 'pending' => __( 'Pending', 'tutor' ),
2584
+ 'approved' => __( 'Approved', 'tutor' ),
2585
+ 'blocked' => __( 'Blocked', 'tutor' ),
2586
  ));
2587
 
2588
+ $status = get_user_meta( $user_id, '_tutor_instructor_status', true );
2589
 
2590
+ if ( isset( $instructor_status[$status] ) ) {
2591
+ if ( ! $status_name ) {
2592
  return $status;
2593
  }
2594
  return $instructor_status[$status];
2605
  *
2606
  * @since v.1.0.0
2607
  */
2608
+ public function get_total_instructors( $search_term = '' ) {
 
 
 
2609
  global $wpdb;
2610
 
2611
+ $search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
2612
+
2613
+ $count = $wpdb->get_var( $wpdb->prepare(
2614
+ "SELECT COUNT({$wpdb->users}.ID)
2615
+ FROM {$wpdb->users}
2616
+ INNER JOIN {$wpdb->usermeta}
2617
+ ON ( {$wpdb->users}.ID = {$wpdb->usermeta}.user_id )
2618
+ WHERE {$wpdb->usermeta}.meta_key = %s
2619
+ AND ( {$wpdb->users}.display_name LIKE %s OR {$wpdb->users}.user_email LIKE %s );
2620
+ ",
2621
+ '_is_tutor_instructor',
2622
+ $search_term,
2623
+ $search_term
2624
+ ) );
2625
 
2626
  return (int) $count;
2627
  }
2637
  *
2638
  * @since v.1.0.0
2639
  */
2640
+ public function get_instructors( $start = 0, $limit = 10, $search_term = '', $status = null ) {
 
2641
  global $wpdb;
2642
 
2643
+ $search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
 
 
2644
 
2645
+ if ( $status ) {
2646
+ !is_array( $status ) ? $status = array( $status ) : 0;
2647
+
2648
+ $status = array_map( function($str) {
2649
+ return "'{$str}'";
2650
+ }, $status);
2651
+
2652
+ $status = " AND inst_status.meta_value IN (".implode( ',', $status ).")";
2653
  }
2654
 
2655
+ $instructors = $wpdb->get_results( $wpdb->prepare(
2656
+ "SELECT DISTINCT SQL_CALC_FOUND_ROWS {$wpdb->users}.*
2657
+ FROM {$wpdb->users}
2658
+ INNER JOIN {$wpdb->usermeta}
2659
+ ON ( {$wpdb->users}.ID = {$wpdb->usermeta}.user_id )
2660
+ INNER JOIN {$wpdb->usermeta} inst_status
2661
+ ON ( {$wpdb->users}.ID = inst_status.user_id )
2662
+ WHERE {$wpdb->usermeta}.meta_key = %s
2663
+ AND ( {$wpdb->users}.display_name LIKE %s OR {$wpdb->users}.user_email LIKE %s )
2664
+ {$status}
2665
  ORDER BY {$wpdb->usermeta}.meta_value DESC
2666
+ LIMIT %d, %d;
2667
+ ",
2668
+ '_is_tutor_instructor',
2669
+ $search_term,
2670
+ $search_term,
2671
+ $start,
2672
+ $limit
2673
+ ) );
2674
 
2675
  return $instructors;
2676
  }
2684
  *
2685
  * @since v.1.0.0
2686
  */
2687
+ public function get_instructors_by_course( $course_id = 0 ) {
2688
  global $wpdb;
2689
+ $course_id = $this->get_post_id( $course_id );
2690
+
2691
+ $instructors = $wpdb->get_results( $wpdb->prepare(
2692
+ "SELECT ID,
2693
+ display_name,
2694
+ get_course.meta_value AS taught_course_id,
2695
+ tutor_job_title.meta_value AS tutor_profile_job_title,
2696
+ tutor_bio.meta_value AS tutor_profile_bio,
2697
+ tutor_photo.meta_value AS tutor_profile_photo
2698
+ FROM {$wpdb->users}
2699
+ INNER JOIN {$wpdb->usermeta} get_course
2700
+ ON ID = get_course.user_id
2701
+ AND get_course.meta_key = %s
2702
+ AND get_course.meta_value = %d
2703
+ LEFT JOIN {$wpdb->usermeta} tutor_job_title
2704
+ ON ID = tutor_job_title.user_id
2705
+ AND tutor_job_title.meta_key = %s
2706
+ LEFT JOIN {$wpdb->usermeta} tutor_bio
2707
+ ON ID = tutor_bio.user_id
2708
+ AND tutor_bio.meta_key = %s
2709
+ LEFT JOIN {$wpdb->usermeta} tutor_photo
2710
+ ON ID = tutor_photo.user_id
2711
+ AND tutor_photo.meta_key = %s
2712
+ ",
2713
+ '_tutor_instructor_course_id',
2714
+ $course_id,
2715
+ '_tutor_profile_job_title',
2716
+ '_tutor_profile_bio',
2717
+ '_tutor_profile_photo',
2718
+ ) );
2719
+
2720
+ if ( is_array( $instructors ) && count( $instructors ) ) {
2721
  return $instructors;
2722
  }
2723
 
2734
  *
2735
  * @since v.1.0.0
2736
  */
2737
+ public function get_total_students_by_instructor( $instructor_id ) {
 
2738
  global $wpdb;
2739
 
2740
  $course_post_type = tutor()->course_post_type;
2741
+
2742
+ $count = $wpdb->get_var( $wpdb->prepare(
2743
+ "SELECT COUNT(enrollment.ID)
2744
+ FROM {$wpdb->posts} enrollment
2745
+ LEFT JOIN {$wpdb->posts} course
2746
+ ON enrollment.post_parent=course.ID
2747
+ WHERE course.post_author = %d
2748
+ AND course.post_type = %s
2749
+ AND course.post_status = %s
2750
+ AND enrollment.post_type = %s
2751
+ AND enrollment.post_status = %s;
2752
+ ",
2753
+ $instructor_id,
2754
+ $course_post_type,
2755
+ 'publish',
2756
+ 'tutor_enrolled',
2757
+ 'completed',
2758
+
2759
+ ) );
2760
 
2761
  return (int) $count;
2762
  }
2770
  *
2771
  * @since v.1.0.0
2772
  */
2773
+ public function get_rating_value( $input = 0.00 ) {
2774
 
2775
+ if ( $input > 0) {
2776
+ $input = number_format( $input, 2 );
2777
  $int_value = (int) $input;
2778
  $fraction = $input - $int_value;
2779
 
2780
+ if ( $fraction == 0 ) {
2781
  $fraction = 0.00;
2782
+ } elseif ( $fraction > 0.5 ) {
2783
  $fraction = 1;
2784
+ } else {
2785
  $fraction = 0.5;
2786
  }
2787
 
2788
+ return number_format( ( $int_value + $fraction ), 2 );
2789
  }
2790
+
2791
  return 0.00;
2792
  }
2793
 
2801
  *
2802
  * @since v.1.0.0
2803
  */
2804
+ public function star_rating_generator( $current_rating = 0.00, $echo = true ) {
2805
  $output = '<div class="tutor-star-rating-group">';
2806
 
2807
+ for ( $i = 1; $i <=5 ; $i++ ) {
2808
  $intRating = (int) $current_rating;
2809
 
2810
+ if ( $intRating >= $i ) {
2811
  $output.= '<i class="tutor-icon-star-full" data-rating-value="'.$i.'"></i>';
2812
+ } else {
2813
+ if ( ( $current_rating - $i) == -0.5 ) {
2814
  $output.= '<i class="tutor-icon-star-half" data-rating-value="'.$i.'"></i>';
2815
+ } else {
2816
  $output.= '<i class="tutor-icon-star-line" data-rating-value="'.$i.'"></i>';
2817
  }
2818
  }
2822
 
2823
  $output .= "</div>";
2824
 
2825
+ if ( $echo ) {
2826
  echo $output;
2827
  }
2828
+
2829
  return $output;
2830
  }
2831
 
 
2832
  /**
2833
  * @param $string
2834
  *
2838
  *
2839
  *
2840
  */
2841
+ public function str_split( $string ) {
2842
+ $strlen = mb_strlen( $string );
2843
+ while ( $strlen ) {
2844
+ $array[] = mb_substr( $string,0,1,"UTF-8" );
2845
+ $string = mb_substr( $string,1,$strlen,"UTF-8" );
2846
+ $strlen = mb_strlen( $string );
2847
  }
2848
  return $array;
2849
  }
2857
  *
2858
  * @since v.1.0.0
2859
  */
2860
+ public function get_tutor_avatar( $user_id = null, $size = 'thumbnail' ) {
2861
  global $wpdb;
2862
 
2863
+ if ( ! $user_id ) {
2864
  return '';
2865
  }
2866
 
2867
+ $user = $this->get_tutor_user( $user_id );
2868
+ if ( $user->tutor_profile_photo ) {
2869
+ return '<img src="'.wp_get_attachment_image_url( $user->tutor_profile_photo, $size ).'" class="tutor-image-avatar" alt="" /> ';
2870
  }
2871
 
2872
  $name = $user->display_name;
2873
+ $arr = explode( ' ', trim( $name ) );
2874
 
2875
+ $first_char = ! empty( $arr[0] ) ? $this->str_split( $arr[0] )[0] : '';
2876
+ $second_char = ! empty( $arr[1] ) ? $this->str_split( $arr[1] )[0] : '';
2877
+ $initial_avatar = strtoupper( $first_char.$second_char );
2878
 
2879
+ $bg_color = '#'.substr( md5( $initial_avatar ), 0, 6);
2880
  $initial_avatar = "<span class='tutor-text-avatar' style='background-color: {$bg_color}; color: #fff8e5'>{$initial_avatar}</span>";
2881
 
2882
  return $initial_avatar;
2891
  *
2892
  * @since v.1.0.0
2893
  */
2894
+ public function get_tutor_user( $user_id ) {
 
2895
  global $wpdb;
2896
 
2897
+ $user = $wpdb->get_row( $wpdb->prepare(
2898
+ "SELECT ID,
2899
+ display_name,
2900
+ tutor_job_title.meta_value AS tutor_profile_job_title,
2901
+ tutor_bio.meta_value AS tutor_profile_bio,
2902
+ tutor_photo.meta_value AS tutor_profile_photo
2903
+ FROM {$wpdb->users}
2904
+ LEFT JOIN {$wpdb->usermeta} tutor_job_title
2905
+ ON ID = tutor_job_title.user_id
2906
+ AND tutor_job_title.meta_key = '_tutor_profile_job_title'
2907
+ LEFT JOIN {$wpdb->usermeta} tutor_bio
2908
+ ON ID = tutor_bio.user_id
2909
+ AND tutor_bio.meta_key = '_tutor_profile_bio'
2910
+ LEFT JOIN {$wpdb->usermeta} tutor_photo
2911
+ ON ID = tutor_photo.user_id
2912
+ AND tutor_photo.meta_key = '_tutor_profile_photo'
2913
+ WHERE ID = %d
2914
+ ",
2915
+ $user_id
2916
+ ) );
2917
 
2918
  return $user;
2919
  }
2929
  *
2930
  * @since v.1.0.0
2931
  */
2932
+ public function get_course_reviews( $course_id = 0, $offset = 0, $limit = 150 ) {
2933
+ $course_id = $this->get_post_id( $course_id );
2934
  global $wpdb;
2935
 
2936
  $reviews = $wpdb->get_results($wpdb->prepare("select {$wpdb->comments}.comment_ID,
2963
  *
2964
  * @since v.1.0.0
2965
  */
2966
+ public function get_course_rating( $course_id = 0 ) {
2967
+ global $wpdb;
2968
+ $course_id = $this->get_post_id( $course_id );
2969
 
2970
  $ratings = array(
2971
+ 'rating_count' => 0,
2972
+ 'rating_sum' => 0,
2973
+ 'rating_avg' => 0.00,
2974
+ 'count_by_value' => array( 5 => 0, 4 => 0, 3 => 0, 2 => 0, 1 => 0 )
2975
  );
2976
 
2977
+ $rating = $wpdb->get_row( $wpdb->prepare(
2978
+ "SELECT COUNT(meta_value) AS rating_count,
2979
+ SUM(meta_value) AS rating_sum
2980
+ FROM {$wpdb->comments}
2981
+ INNER JOIN {$wpdb->commentmeta}
2982
+ ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
2983
+ WHERE {$wpdb->comments}.comment_post_ID = %d
2984
+ AND {$wpdb->comments}.comment_type = %s
2985
+ AND meta_key = %s;
2986
+ ",
2987
+ $course_id,
2988
+ 'tutor_course_rating',
2989
+ 'tutor_rating',
2990
+ ) );
2991
+
2992
+ if ( $rating->rating_count ) {
2993
+ $avg_rating = number_format( ( $rating->rating_sum / $rating->rating_count ), 2 );
2994
+
2995
+ $stars = $wpdb->get_results( $wpdb->prepare(
2996
+ "SELECT commentmeta.meta_value AS rating,
2997
+ COUNT(commentmeta.meta_value) as rating_count
2998
+ FROM {$wpdb->comments} comments
2999
+ INNER JOIN {$wpdb->commentmeta} commentmeta
3000
+ ON comments.comment_ID = commentmeta.comment_id
3001
+ WHERE comments.comment_post_ID = %d
3002
+ AND comments.comment_type = %s
3003
+ AND commentmeta.meta_key = %s
3004
+ GROUP BY commentmeta.meta_value;
3005
+ ",
3006
+ $course_id,
3007
+ 'tutor_course_rating',
3008
+ 'tutor_rating',
3009
+ ) );
3010
+
3011
+ $ratings = array( 5 => 0, 4 => 0, 3 => 0, 2 => 0, 1 => 0 );
3012
+ foreach ( $stars as $star ) {
3013
+ $index = (int) $star->rating;
3014
+ array_key_exists($index, $ratings) ? $ratings[ $index ] = $star->rating_count : 0;
3015
+ }
 
 
 
 
 
 
 
 
 
 
 
 
3016
 
3017
  $ratings = array(
3018
+ 'rating_count' => $rating->rating_count,
3019
+ 'rating_sum' => $rating->rating_sum,
3020
+ 'rating_avg' => $avg_rating,
3021
+ 'count_by_value' => $ratings
3022
  );
 
3023
  }
3024
 
3025
  return (object) $ratings;
3036
  *
3037
  * @since v.1.0.0
3038
  */
3039
+ public function get_reviews_by_user( $user_id = 0, $offset = 0, $limit = 150 ) {
3040
+ $user_id = $this->get_user_id( $user_id );
3041
  global $wpdb;
3042
 
3043
+ $reviews = $wpdb->get_results( $wpdb->prepare(
3044
+ "SELECT {$wpdb->comments}.comment_ID,
3045
+ {$wpdb->comments}.comment_post_ID,
3046
+ {$wpdb->comments}.comment_author,
3047
+ {$wpdb->comments}.comment_author_email,
3048
+ {$wpdb->comments}.comment_date,
3049
+ {$wpdb->comments}.comment_content,
3050
+ {$wpdb->comments}.user_id,
3051
+ {$wpdb->commentmeta}.meta_value as rating,
3052
+ {$wpdb->users}.display_name
3053
 
3054
+ FROM {$wpdb->comments}
3055
+ INNER JOIN {$wpdb->commentmeta}
3056
+ ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
3057
+ INNER JOIN {$wpdb->users}
3058
+ ON {$wpdb->comments}.user_id = {$wpdb->users}.ID
3059
+ WHERE {$wpdb->comments}.user_id = %d
3060
+ AND comment_type = %s
3061
+ AND meta_key = %s
3062
+ ORDER BY comment_ID DESC
3063
+ LIMIT %d, %d;
3064
+ ",
3065
+ $user_id,
3066
+ 'tutor_course_rating',
3067
+ 'tutor_rating',
3068
+ $offset,
3069
+ $limit
3070
+ ) );
3071
 
3072
  return $reviews;
3073
  }
3083
  *
3084
  * @since v.1.4.0
3085
  */
3086
+ public function get_reviews_by_instructor( $instructor_id = 0, $offset = 0, $limit = 150 ) {
3087
+ $instructor_id = $this->get_user_id( $instructor_id );
 
3088
  global $wpdb;
3089
 
3090
  $results = array(
3092
  'results' => false,
3093
  );
3094
 
3095
+ $cours_ids = (array) $this->get_assigned_courses_ids_by_instructors( $instructor_id );
3096
 
3097
+ if ( $this->count( $cours_ids ) ) {
3098
  $implode_ids = implode( ',', $cours_ids );
3099
 
3100
  //Count
3101
+ $results['count'] = $wpdb->get_var( $wpdb->prepare(
3102
+ "SELECT COUNT({$wpdb->comments}.comment_ID)
3103
+ FROM {$wpdb->comments}
3104
+ INNER JOIN {$wpdb->commentmeta}
3105
+ ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
3106
+ INNER JOIN {$wpdb->users}
3107
+ ON {$wpdb->comments}.user_id = {$wpdb->users}.ID
3108
+ WHERE {$wpdb->comments}.comment_post_ID IN({$implode_ids})
3109
+ AND comment_type = %s
3110
+ AND meta_key = %s;
3111
+ ",
3112
+ 'tutor_course_rating',
3113
+ 'tutor_rating'
3114
+ ) );
3115
 
3116
  //Results
3117
+ $results['results'] = $wpdb->get_results( $wpdb->prepare(
3118
+ "SELECT {$wpdb->comments}.comment_ID,
3119
+ {$wpdb->comments}.comment_post_ID,
3120
+ {$wpdb->comments}.comment_author,
3121
+ {$wpdb->comments}.comment_author_email,
3122
+ {$wpdb->comments}.comment_date,
3123
+ {$wpdb->comments}.comment_content,
3124
+ {$wpdb->comments}.user_id,
3125
+ {$wpdb->commentmeta}.meta_value AS rating,
3126
+ {$wpdb->users}.display_name
3127
 
3128
+ FROM {$wpdb->comments}
3129
+ INNER JOIN {$wpdb->commentmeta}
3130
+ ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
3131
+ INNER JOIN {$wpdb->users}
3132
+ ON {$wpdb->comments}.user_id = {$wpdb->users}.ID
3133
+ WHERE {$wpdb->comments}.comment_post_ID IN({$implode_ids})
3134
+ AND comment_type = %s
3135
+ AND meta_key = %s
3136
+ ORDER BY comment_ID DESC
3137
+ LIMIT %d, %d;
3138
+ ",
3139
+ 'tutor_course_rating',
3140
+ 'tutor_rating',
3141
+ $offset,
3142
+ $limit,
3143
+ ) );
3144
  }
3145
 
3146
  return (object) $results;
3155
  *
3156
  * @since v.1.0.0
3157
  */
3158
+ public function get_instructor_ratings( $instructor_id ) {
3159
  global $wpdb;
3160
 
3161
  $ratings = array(
3164
  'rating_avg' => 0.00,
3165
  );
3166
 
3167
+ $rating = $wpdb->get_row( $wpdb->prepare(
3168
+ "SELECT COUNT(rating.meta_value) as rating_count, SUM(rating.meta_value) as rating_sum
3169
+ FROM {$wpdb->usermeta} courses
3170
+ INNER JOIN {$wpdb->comments} reviews
3171
+ ON courses.meta_value = reviews.comment_post_ID
3172
+ AND reviews.comment_type = 'tutor_course_rating'
3173
+ INNER JOIN {$wpdb->commentmeta} rating
3174
+ ON reviews.comment_ID = rating.comment_id
3175
+ AND rating.meta_key = 'tutor_rating'
3176
+ WHERE courses.user_id = %d
3177
+ AND courses.meta_key = %s
3178
+ ",
3179
+ $instructor_id,
3180
+ '_tutor_instructor_course_id'
3181
+ ) );
3182
+
3183
+ if ( $rating->rating_count ) {
3184
+ $avg_rating = number_format( ( $rating->rating_sum / $rating->rating_count ), 2 );
3185
 
3186
  $ratings = array(
3187
  'rating_count' => $rating->rating_count,
3203
  *
3204
  * @since v.1.0.0
3205
  */
3206
+ public function get_course_rating_by_user( $course_id = 0, $user_id = 0 ) {
3207
+ global $wpdb;
3208
+
3209
+ $course_id = $this->get_post_id( $course_id );
3210
+ $user_id = $this->get_user_id( $user_id );
3211
 
3212
  $ratings = array(
3213
+ 'rating' => 0,
3214
+ 'review' => '',
3215
  );
3216
 
3217
+ $rating = $wpdb->get_row( $wpdb->prepare(
3218
+ "SELECT meta_value AS rating,
3219
+ comment_content AS review
3220
+ FROM {$wpdb->comments}
3221
+ INNER JOIN {$wpdb->commentmeta}
3222
+ ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
3223
+ WHERE {$wpdb->comments}.comment_post_ID = %d
3224
+ AND user_id = %d
3225
+ AND meta_key = %s;
3226
+ ",
3227
+ $course_id,
3228
+ $user_id,
3229
+ 'tutor_rating'
3230
+ ) );
3231
+
3232
+ if ( $rating ) {
3233
+ $rating_format = number_format( $rating->rating, 2 );
3234
 
3235
  $ratings = array(
3236
+ 'rating' => $rating_format,
3237
+ 'review' => $rating->review,
3238
  );
3239
  }
3240
+
3241
  return (object) $ratings;
3242
  }
3243
 
3248
  *
3249
  * @since v.1.0.0
3250
  */
3251
+ public function count_reviews_wrote_by_user( $user_id = 0 ) {
3252
  global $wpdb;
3253
+
3254
  $user_id = $this->get_user_id($user_id);
3255
 
3256
+ $count_reviews = $wpdb->get_var( $wpdb->prepare(
3257
+ "SELECT COUNT(comment_ID)
3258
+ FROM {$wpdb->comments}
3259
+ WHERE user_id = %d
3260
+ AND comment_type = %s
3261
+ ",
3262
+ $user_id,
3263
+ 'tutor_course_rating'
3264
+ ) );
3265
+
3266
  return $count_reviews;
3267
  }
3268
 
3275
  *
3276
  * @since v.1.0.0
3277
  */
 
3278
  function let_to_num( $size ) {
3279
  $l = substr( $size, -1 );
3280
  $ret = substr( $size, 0, -1 );
3329
  );
3330
  }
3331
 
3332
+ public function help_tip( $tip = '' ) {
3333
  return '<span class="tutor-help-tip" data-tip="' . $tip . '"></span>';
3334
  }
3335
 
3345
  *
3346
  * @since v.1.0.0
3347
  */
3348
+ public function get_top_question( $course_id = 0, $user_id = 0, $offset = 0, $limit = 20, $is_author = false ) {
 
 
 
3349
  global $wpdb;
3350
+
3351
+ $course_id = $this->get_post_id( $course_id );
3352
+ $user_id = $this->get_user_id( $user_id );
3353
+
3354
  $author_sql = $is_author ? "" : "AND {$wpdb->comments}.user_id = {$user_id}";
3355
 
3356
+ $questions = $wpdb->get_results( $wpdb->prepare(
3357
+ "SELECT {$wpdb->comments}.comment_ID,
3358
+ {$wpdb->comments}.comment_post_ID,
3359
+ {$wpdb->comments}.comment_author,
3360
+ {$wpdb->comments}.comment_date,
3361
+ {$wpdb->comments}.comment_date_gmt,
3362
+ {$wpdb->comments}.comment_content,
3363
+ {$wpdb->comments}.user_id,
3364
+ {$wpdb->commentmeta}.meta_value as question_title,
3365
+ {$wpdb->users}.display_name
3366
+ FROM {$wpdb->comments}
3367
+ INNER JOIN {$wpdb->commentmeta}
3368
+ ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
3369
+ INNER JOIN {$wpdb->users}
3370
+ ON {$wpdb->comments}.user_id = {$wpdb->users}.ID
3371
+ WHERE {$wpdb->comments}.comment_post_ID = {$course_id} {$author_sql}
3372
+ AND {$wpdb->comments}.comment_type = %s
3373
+ AND meta_key = %s
3374
+ ORDER BY comment_ID DESC
3375
+ LIMIT %d, %d;
3376
+ ",
3377
+ 'tutor_q_and_a',
3378
+ 'tutor_question_title',
3379
+ $offset,
3380
+ $limit,
3381
+ ) );
3382
 
3383
  return $questions;
3384
  }
3392
  *
3393
  * @since v.1.0.0
3394
  */
3395
+ public function get_total_qa_question( $search_term = '' ) {
3396
  global $wpdb;
3397
 
3398
+ $user_id = get_current_user_id();
 
 
 
 
3399
  $course_type = tutor()->course_post_type;
3400
+ $search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
3401
 
3402
  $in_question_id_query = '';
3403
  /**
3404
  * Get only assinged courses questions if current user is a
3405
  */
3406
+ if ( ! current_user_can( 'administrator' ) && current_user_can( tutor()->instructor_role ) ) {
3407
+
3408
+ $get_course_ids = $wpdb->get_col( $wpdb->prepare(
3409
+ "SELECT ID
3410
+ FROM {$wpdb->posts}
3411
+ WHERE post_author = %d
3412
+ AND post_type = %s
3413
+ AND post_status = %s
3414
+ ",
3415
+ $user_id,
3416
+ $course_type,
3417
+ 'publish'
3418
+ ) );
3419
+
3420
+ $get_assigned_courses_ids = $wpdb->get_col( $wpdb->prepare(
3421
+ "SELECT meta_value
3422
+ FROM {$wpdb->usermeta}
3423
+ WHERE meta_key = %s
3424
+ AND user_id = %d
3425
+ ",
3426
+ '_tutor_instructor_course_id',
3427
+ $user_id
3428
+ ) );
3429
+
3430
+ $my_course_ids = array_unique( array_merge( $get_course_ids, $get_assigned_courses_ids ) );
3431
 
3432
  if ( $this->count( $my_course_ids ) ) {
3433
  $implode_ids = implode( ',', $my_course_ids );
3435
  }
3436
  }
3437
 
3438
+ $count = $wpdb->get_var( $wpdb->prepare(
3439
+ "SELECT COUNT({$wpdb->comments}.comment_ID)
3440
+ FROM {$wpdb->comments}
3441
+ INNER JOIN {$wpdb->commentmeta}
3442
+ ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
3443
+ WHERE comment_type = %s
3444
+ AND comment_parent = 0 {$in_question_id_query}
3445
+ AND {$wpdb->commentmeta}.meta_value LIKE %s;
3446
+ ",
3447
+ 'tutor_q_and_a',
3448
+ $search_term
3449
+ ) );
3450
 
3451
  return (int) $count;
3452
  }
3463
  *
3464
  * @since v.1.0.0
3465
  */
3466
+ public function get_qa_questions( $start = 0, $limit = 10, $search_term = '' ) {
3467
  global $wpdb;
3468
 
3469
+ $user_id = get_current_user_id();
 
 
 
 
3470
  $course_type = tutor()->course_post_type;
3471
+ $search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
3472
 
3473
  $in_question_id_query = '';
3474
  /**
3475
  * Get only assinged courses questions if current user is a
3476
  */
3477
+ if ( ! current_user_can( 'administrator' ) && current_user_can( tutor()->instructor_role ) ) {
3478
+
3479
+ $get_course_ids = $wpdb->get_col( $wpdb->prepare(
3480
+ "SELECT ID
3481
+ FROM {$wpdb->posts}
3482
+ WHERE post_author = %d
3483
+ AND post_type = %s
3484
+ AND post_status = %s
3485
+ ",
3486
+ $user_id,
3487
+ $course_type,
3488
+ 'publish'
3489
+ ) );
3490
+
3491
+ $get_assigned_courses_ids = $wpdb->get_col( $wpdb->prepare(
3492
+ "SELECT meta_value
3493
+ FROM {$wpdb->usermeta}
3494
+ WHERE meta_key = %s
3495
+ AND user_id = %d
3496
+ ",
3497
+ '_tutor_instructor_course_id',
3498
+ $user_id
3499
+ ) );
3500
+
3501
+ $my_course_ids = array_unique( array_merge( $get_course_ids, $get_assigned_courses_ids ) );
3502
 
3503
  if ( $this->count( $my_course_ids ) ) {
3504
  $implode_ids = implode( ',', $my_course_ids );
3506
  }
3507
  }
3508
 
3509
+ $query = $wpdb->get_results( $wpdb->prepare(
3510
+ "SELECT {$wpdb->comments}.comment_ID,
3511
+ {$wpdb->comments}.comment_post_ID,
3512
+ {$wpdb->comments}.comment_author,
3513
+ {$wpdb->comments}.comment_date,
3514
+ {$wpdb->comments}.comment_content,
3515
+ {$wpdb->comments}.user_id,
3516
+ {$wpdb->commentmeta}.meta_value as question_title,
3517
+ {$wpdb->users}.display_name,
3518
+ {$wpdb->posts}.post_title,
3519
+ ( SELECT COUNT(answers_t.comment_ID)
3520
+ FROM {$wpdb->comments} answers_t
3521
+ WHERE answers_t.comment_parent = {$wpdb->comments}.comment_ID
3522
+ ) AS answer_count
3523
+ FROM {$wpdb->comments}
3524
+ INNER JOIN {$wpdb->commentmeta}
3525
+ ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
3526
+ INNER JOIN {$wpdb->posts}
3527
+ ON {$wpdb->comments}.comment_post_ID = {$wpdb->posts}.ID
3528
+ INNER JOIN {$wpdb->users}
3529
+ ON {$wpdb->comments}.user_id = {$wpdb->users}.ID
3530
+ WHERE {$wpdb->comments}.comment_type = %s
3531
+ AND {$wpdb->comments}.comment_parent = 0
3532
+ AND {$wpdb->commentmeta}.meta_value LIKE %s
3533
+ {$in_question_id_query}
3534
+ ORDER BY {$wpdb->comments}.comment_ID DESC
3535
+ LIMIT %d, %d;
3536
+ ",
3537
+ 'tutor_q_and_a',
3538
+ $search_term,
3539
+ $start,
3540
+ $limit,
3541
+ ) );
 
3542
 
3543
  return $query;
3544
  }
3552
  *
3553
  * @since v.1.0.0
3554
  */
3555
+ public function get_qa_question( $question_id ) {
3556
  global $wpdb;
3557
+ $query = $wpdb->get_row( $wpdb->prepare(
3558
+ "SELECT {$wpdb->comments}.comment_ID,
3559
+ {$wpdb->comments}.comment_post_ID,
3560
+ {$wpdb->comments}.comment_author,
3561
+ {$wpdb->comments}.comment_date,
3562
+ {$wpdb->comments}.comment_date_gmt,
3563
+ {$wpdb->comments}.comment_content,
3564
+ {$wpdb->comments}.user_id,
3565
+ {$wpdb->commentmeta}.meta_value as question_title,
3566
+ {$wpdb->users}.display_name,
3567
+ {$wpdb->posts}.post_title
3568
+ FROM {$wpdb->comments}
3569
+ INNER JOIN {$wpdb->commentmeta}
3570
+ ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
3571
+ INNER JOIN {$wpdb->posts}
3572
+ ON {$wpdb->comments}.comment_post_ID = {$wpdb->posts}.ID
3573
+ INNER JOIN {$wpdb->users}
3574
+ ON {$wpdb->comments}.user_id = {$wpdb->users}.ID
3575
+ WHERE comment_type = %s
3576
+ AND {$wpdb->comments}.comment_ID = %d;
3577
+ ",
3578
+ 'tutor_q_and_a',
3579
+ $question_id,
3580
+ ) );
3581
 
3582
  return $query;
3583
  }
3589
  *
3590
  * Get question and asnwer by question
3591
  */
3592
+ public function get_qa_answer_by_question( $question_id ) {
3593
  global $wpdb;
3594
+ $query = $wpdb->get_results( $wpdb->prepare(
3595
+ "SELECT {$wpdb->comments}.comment_ID,
3596
+ {$wpdb->comments}.comment_post_ID,
3597
+ {$wpdb->comments}.comment_author,
3598
+ {$wpdb->comments}.comment_date,
3599
+ {$wpdb->comments}.comment_date_gmt,
3600
+ {$wpdb->comments}.comment_content,
3601
+ {$wpdb->comments}.comment_parent,
3602
+ {$wpdb->comments}.user_id,
3603
+ {$wpdb->users}.display_name
3604
+ FROM {$wpdb->comments}
3605
+ INNER JOIN {$wpdb->users}
3606
+ ON {$wpdb->comments}.user_id = {$wpdb->users}.ID
3607
+ WHERE comment_type = %s
3608
+ AND {$wpdb->comments}.comment_parent = %d
3609
+ ORDER BY {$wpdb->comments}.comment_ID ASC;
3610
+ ",
3611
+ 'tutor_q_and_a',
3612
+ $question_id,
3613
+ ) );
 
3614
 
3615
  return $query;
3616
  }
3624
  *
3625
  * Get question and asnwer by answer_id
3626
  */
3627
+ public function get_qa_answer_by_answer_id( $answer_id ) {
3628
  global $wpdb;
3629
+ $answer = $wpdb->get_row( $wpdb->prepare(
3630
  "SELECT answer.comment_post_ID,
3631
  answer.comment_content,
3632
  users.display_name,
3633
  question.user_id AS question_by,
3634
  question.comment_content AS question,
3635
  question_meta.meta_value AS question_title
3636
+ FROM {$wpdb->comments} answer
3637
+ INNER JOIN {$wpdb->users} users
3638
  ON answer.user_id = users.id
3639
+ INNER JOIN {$wpdb->comments} question
3640
  ON answer.comment_parent = question.comment_ID
3641
+ INNER JOIN {$wpdb->commentmeta} question_meta
3642
  ON answer.comment_parent = question_meta.comment_id
3643
+ AND question_meta.meta_key = 'tutor_question_title'
3644
  WHERE answer.comment_ID = %d
3645
+ AND answer.comment_type = %s;
3646
+ ",
3647
+ $answer_id,
3648
+ 'tutor_q_and_a'
3649
+ ) );
3650
 
3651
  if ( $answer ) {
3652
  return $answer;
3655
  return false;
3656
  }
3657
 
3658
+ public function unanswered_question_count() {
3659
  global $wpdb;
3660
+ $count = $wpdb->get_var( $wpdb->prepare(
3661
+ "SELECT COUNT({$wpdb->comments}.comment_ID)
3662
+ FROM {$wpdb->comments}
3663
+ INNER JOIN {$wpdb->posts}
3664
+ ON {$wpdb->comments}.comment_post_ID = {$wpdb->posts}.ID
3665
+ INNER JOIN {$wpdb->users}
3666
+ ON {$wpdb->comments}.user_id = {$wpdb->users}.ID
3667
+ WHERE {$wpdb->comments}.comment_type = %s
3668
+ AND {$wpdb->comments}.comment_approved = %s
3669
+ AND {$wpdb->comments}.comment_parent = %d;
3670
+ ",
3671
+ 'tutor_q_and_a',
3672
+ 'waiting_for_answer',
3673
+ 0
3674
+ ) );
3675
  return (int) $count;
3676
  }
3677
 
3684
  *
3685
  * @since v.1.0.0
3686
  */
3687
+ public function get_announcements( $course_id = 0 ) {
3688
+ $course_id = $this->get_post_id( $course_id );
3689
  global $wpdb;
3690
+ $query = $wpdb->get_results( $wpdb->prepare(
3691
+ "SELECT {$wpdb->posts}.ID,
3692
+ post_author,
3693
+ post_date,
3694
+ post_content,
3695
+ post_title,
3696
+ display_name
3697
+ FROM {$wpdb->posts}
3698
+ INNER JOIN {$wpdb->users}
3699
+ ON post_author = {$wpdb->users}.ID
3700
+ WHERE post_type = %s
3701
+ AND post_parent = %d
3702
+ ORDER BY {$wpdb->posts}.ID DESC;
3703
+ ",
3704
+ 'tutor_announcements',
3705
+ $course_id
3706
+ ) );
 
3707
  return $query;
3708
  }
3709
 
3716
  *
3717
  * @since v.1.0.0
3718
  */
3719
+ public function announcement_content( $content = '' ) {
3720
+ $search = array( '{user_display_name}' );
 
3721
 
3722
  $user_display_name = 'User';
3723
+ if ( is_user_logged_in() ) {
3724
  $user = wp_get_current_user();
3725
  $user_display_name = $user->display_name;
3726
  }
 
3727
 
3728
+ $replace = array( $user_display_name );
3729
+
3730
+ return str_replace( $search, $replace, $content );
3731
  }
3732
 
3733
  /**
3739
  *
3740
  * Get the quiz option from meta
3741
  */
3742
+ public function get_quiz_option( $post_id = 0, $option_key = '', $default = false ) {
3743
+ $post_id = $this->get_post_id( $post_id );
3744
+ $get_option_meta = maybe_unserialize(get_post_meta( $post_id, 'tutor_quiz_option', true ) );
3745
 
3746
+ if ( ! $option_key && ! empty( $get_option_meta ) ) {
3747
  return $get_option_meta;
3748
  }
3749
 
3751
  if ( $value > 0 || $value !== false ) {
3752
  return $value;
3753
  }
3754
+
3755
  return $default;
3756
  }
3757
 
 
3758
  /**
3759
  * @param int $quiz_id
3760
  *
3762
  *
3763
  * Get the questions by quiz ID
3764
  */
3765
+ public function get_questions_by_quiz( $quiz_id = 0 ) {
3766
+ $quiz_id = $this->get_post_id( $quiz_id );
3767
  global $wpdb;
3768
 
3769
+ $questions = $wpdb->get_results( $wpdb->prepare(
3770
+ "SELECT *
3771
+ FROM {$wpdb->prefix}tutor_quiz_questions
3772
+ WHERE quiz_id = %d
3773
+ ORDER BY question_order ASC
3774
+ ",
3775
+ $quiz_id
3776
+ ) );
3777
 
3778
+ if ( is_array( $questions ) && count( $questions ) ) {
3779
  return $questions;
3780
  }
3781
+
3782
  return false;
3783
  }
3784
 
3789
  *
3790
  * Get Quiz question by question id
3791
  */
3792
+ public function get_quiz_question_by_id( $question_id = 0 ) {
3793
  global $wpdb;
3794
 
3795
+ if ( $question_id ) {
3796
+ $question = $wpdb->get_row( $wpdb->prepare(
3797
+ "SELECT *
3798
+ FROM {$wpdb->prefix}tutor_quiz_questions
3799
+ WHERE question_id = %d
3800
+ LIMIT 0, 1;
3801
+ ",
3802
+ $question_id
3803
+ ) );
3804
+
3805
  return $question;
3806
  }
3807
 
3817
  *
3818
  * @since v.1.0.0
3819
  */
3820
+ public function get_question_types( $type = null ) {
 
3821
  $types = array(
3822
+ 'true_false' => array( 'name' => __('True/False', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="True/False"><i class="tutor-icon-block tutor-icon-yes-no"></i></span>', 'is_pro' => false ),
3823
+ 'single_choice' => array( 'name' => __('Single Choice', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Single Choice"><i class="tutor-icon-block tutor-icon-mark"></i></span>', 'is_pro' => false ),
3824
+ 'multiple_choice' => array( 'name' => __('Multiple Choice', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Multiple Choicee"><i class="tutor-icon-block tutor-icon-multiple-choice"></i></span>', 'is_pro' => false ),
3825
+ 'open_ended' => array( 'name' => __('Open Ended/Essay', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Open/Essay"><i class="tutor-icon-block tutor-icon-open-ended"></i></span>', 'is_pro' => false ),
3826
+ 'fill_in_the_blank' => array( 'name' => __('Fill In The Blanks', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Fill In The Blanks"><i class="tutor-icon-block tutor-icon-fill-gaps"></i></span>', 'is_pro' => false ),
3827
+ 'short_answer' => array( 'name' => __('Short Answer', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Short Answer"><i class="tutor-icon-block tutor-icon-short-ans"></i></span>', 'is_pro' => true ),
3828
+ 'matching' => array( 'name' => __('Matching', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Matching"><i class="tutor-icon-block tutor-icon-matching"></i></span>', 'is_pro' => true ),
3829
+ 'image_matching' => array( 'name' => __('Image Matching', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Image Matching"><i class="tutor-icon-block tutor-icon-image-matching"></i></span>', 'is_pro' => true ),
3830
+ 'image_answering' => array( 'name' => __('Image Answering', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Image Answering"><i class="tutor-icon-block tutor-icon-image-ans"></i></span>', 'is_pro' => true ),
3831
+ 'ordering' => array( 'name' => __('Ordering', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Ordering"><i class="tutor-icon-block tutor-icon-ordering"></i></span>', 'is_pro' => true ),
3832
  );
3833
 
3834
+ if ( isset( $types[ $type ] ) ) {
3835
+ return $types[ $type ];
3836
  }
3837
+
3838
  return $types;
3839
  }
3840
 
3841
+ public function get_quiz_answer_options_by_question( $question_id ) {
3842
  global $wpdb;
3843
 
3844
+ $answer_options = $wpdb->get_results( $wpdb->prepare(
3845
+ "SELECT {$wpdb->comments}.comment_ID,
3846
+ {$wpdb->comments}.comment_post_ID,
3847
+ {$wpdb->comments}.comment_content
3848
+ FROM {$wpdb->comments}
3849
+ WHERE {$wpdb->comments}.comment_post_ID = %d
3850
+ AND {$wpdb->comments}.comment_type = %s
3851
+ ORDER BY {$wpdb->comments}.comment_karma ASC;
3852
+ ",
3853
+ $question_id,
3854
+ 'quiz_answer_option'
3855
+ ) );
3856
+
3857
+ if ( is_array( $answer_options ) && count( $answer_options ) ) {
3858
  return $answer_options;
3859
  }
3860
  return false;
3869
  *
3870
  * @since v.1.0.0
3871
  */
3872
+ public function quiz_next_question_order_id( $quiz_id ) {
 
3873
  global $wpdb;
3874
 
3875
+ $last_order = (int) $wpdb->get_var( $wpdb->prepare(
3876
+ "SELECT MAX(question_order)
3877
+ FROM {$wpdb->prefix}tutor_quiz_questions
3878
+ WHERE quiz_id = %d ;
3879
+ ",
3880
+ $quiz_id
3881
+ ) );
3882
+
3883
  return $last_order + 1;
3884
  }
3885
 
3891
  * new design quiz question
3892
  * @since v.1.0.0
3893
  */
3894
+ public function quiz_next_question_id() {
3895
  global $wpdb;
3896
 
3897
+ $last_order = (int) $wpdb->get_var( "SELECT MAX(question_id) FROM {$wpdb->prefix}tutor_quiz_questions;" );
3898
  return $last_order + 1;
3899
  }
3900
 
3901
+ public function get_quiz_id_by_question( $question_id ) {
3902
  global $wpdb;
3903
+ $quiz_id = $wpdb->get_var( $wpdb->prepare(
3904
+ "SELECT quiz_id
3905
+ FROM {$wpdb->tutor_quiz_questions}
3906
+ WHERE question_id = %d;
3907
+ ",
3908
+ $question_id
3909
+ ) );
3910
  return $quiz_id;
3911
  }
3912
 
3917
  *
3918
  * @since v.1.0.0
3919
  */
3920
+ public function get_attached_quiz( $post_id = 0 ) {
3921
  global $wpdb;
3922
 
3923
+ $post_id = $this->get_post_id( $post_id );
3924
+
3925
+ $questions = $wpdb->get_results( $wpdb->prepare(
3926
+ "SELECT ID,
3927
+ post_content,
3928
+ post_title,
3929
+ post_parent
3930
+ FROM {$wpdb->posts}
3931
+ WHERE post_type = %s
3932
+ AND post_status = %s
3933
+ AND post_parent = %d;
3934
+ ",
3935
+ 'tutor_quiz',
3936
+ 'publish',
3937
+ $post_id
3938
+ ) );
3939
+
3940
+ if ( is_array( $questions ) && count( $questions ) ) {
3941
  return $questions;
3942
  }
3943
+
3944
  return false;
3945
  }
3946
 
3953
  *
3954
  * @since v.1.0.0
3955
  */
3956
+ public function get_course_by_quiz( $quiz_id ) {
 
3957
  global $wpdb;
3958
 
3959
+ $quiz_id = $this->get_post_id( $quiz_id );
3960
+ $post = get_post( $quiz_id );
3961
 
3962
+ if ( $post ) {
3963
  $course_post_type = tutor()->course_post_type;
3964
+ $query_string = "SELECT ID, post_author, post_name, post_type, post_parent FROM {$wpdb->posts} where ID = %d";
3965
+ $course = $wpdb->get_row( $wpdb->prepare( $query_string, $post->post_parent ) );
3966
+
3967
+ if ( $course ) {
3968
  if ( $course->post_type !== $course_post_type ) {
3969
+ $course = $wpdb->get_row( $wpdb->prepare( $query_string, $course->post_parent ) );
3970
  }
3971
  return $course;
3972
  }
3982
  *
3983
  * @since v.1.0.0
3984
  */
3985
+ public function total_questions_for_student_by_quiz( $quiz_id ) {
3986
+ $quiz_id = $this->get_post_id( $quiz_id );
3987
  global $wpdb;
3988
 
3989
+ $max_questions_count = (int) tutor_utils()->get_quiz_option( get_the_ID(), 'max_questions_for_answer' );
3990
+ $total_question = (int) $wpdb->get_var( $wpdb->prepare(
3991
+ "SELECT count(question_id)
3992
+ FROM {$wpdb->tutor_quiz_questions}
3993
+ WHERE quiz_id = %d;
3994
+ ",
3995
+ $quiz_id
3996
+ ) );
3997
 
3998
  return min($max_questions_count, $total_question);
3999
  }
4007
  *
4008
  * @since v.1.0.0
4009
  */
4010
+ public function is_started_quiz( $quiz_id = 0 ) {
 
4011
  global $wpdb;
4012
 
4013
+ $quiz_id = $this->get_post_id( $quiz_id );
4014
  $user_id = get_current_user_id();
4015
 
4016
+ $is_started = $wpdb->get_row( $wpdb->prepare(
4017
+ "SELECT *
4018
+ FROM {$wpdb->prefix}tutor_quiz_attempts
4019
+ WHERE user_id = %d
4020
+ AND quiz_id = %d
4021
+ AND attempt_status = %s;
4022
+ ",
4023
+ $user_id,
4024
+ $quiz_id,
4025
+ 'attempt_started'
4026
+ ) );
4027
 
4028
  return $is_started;
4029
  }
4039
  *
4040
  * @since v.1.0.0
4041
  */
4042
+ public function max_questions_for_take_quiz( $quiz_id ) {
4043
+ $quiz_id = $this->get_post_id( $quiz_id );
 
4044
  global $wpdb;
4045
 
4046
+ $max_questions = (int) $wpdb->get_var( $wpdb->prepare(
4047
+ "SELECT count(question_id)
4048
+ FROM {$wpdb->prefix}tutor_quiz_questions
4049
+ WHERE quiz_id = %d;
4050
+ ",
4051
+ $quiz_id
4052
+ ) );
4053
 
4054
+ $max_mentioned = (int) $this->get_quiz_option( $quiz_id, 'max_questions_for_answer', 10 );
4055
+
4056
+ if ( $max_mentioned < $max_questions ) {
4057
  return $max_mentioned;
4058
  }
4059
 
4069
  *
4070
  * @since v.1.0.0
4071
  */
4072
+ public function get_attempt( $attempt_id = 0 ) {
4073
  global $wpdb;
4074
+ if ( ! $attempt_id ) {
4075
  return false;
4076
  }
4077
+
4078
+ $attempt = $wpdb->get_row( $wpdb->prepare(
4079
+ "SELECT *
4080
+ FROM {$wpdb->prefix}tutor_quiz_attempts
4081
+ WHERE attempt_id = %d;
4082
+ ",
4083
+ $attempt_id
4084
+ ) );
4085
+
4086
  return $attempt;
4087
  }
4088
 
4095
  *
4096
  * @since v.1.0.0
4097
  */
4098
+ public function quiz_attempt_info( $attempt_info ) {
4099
+ return maybe_unserialize( $attempt_info );
 
4100
  }
4101
 
4102
  /**
4109
  *
4110
  * @since v.1.0.0
4111
  */
4112
+ public function quiz_update_attempt_info( $quiz_attempt_id, $attempt_info = array() ) {
4113
+ $answers = tutor_utils()->avalue_dot( 'answers', $attempt_info );
4114
+ $total_marks = array_sum( wp_list_pluck( $answers, 'question_mark' ) );
4115
+ $earned_marks = tutor_utils()->avalue_dot( 'marks_earned', $attempt_info );
4116
+ $earned_mark_percent = $earned_marks > 0 ? ( number_format( ($earned_marks * 100) / $total_marks) ) : 0;
4117
+ update_comment_meta( $quiz_attempt_id, 'earned_mark_percent', $earned_mark_percent );
4118
 
4119
+ return update_comment_meta( $quiz_attempt_id,'quiz_attempt_info', $attempt_info );
4120
  }
4121
 
4122
  /**
4128
  *
4129
  * @since v.1.0.0
4130
  */
4131
+ public function get_random_question_by_quiz( $quiz_id = 0 ) {
 
4132
  global $wpdb;
4133
 
4134
+ $quiz_id = $this->get_post_id( $quiz_id );
4135
+ $is_attempt = $this->is_started_quiz( $quiz_id );
4136
 
4137
  $tempSql = " AND question_type = 'matching' ";
4138
+ $questions = $wpdb->get_results( $wpdb->prepare(
4139
+ "SELECT *
4140
+ FROM {$wpdb->prefix}tutor_quiz_questions
4141
+ WHERE quiz_id = %d
4142
+ {$tempSql}
4143
+ ORDER BY RAND()
4144
+ LIMIT 0, 1
4145
+ ",
4146
+ $quiz_id
4147
+ ) );
4148
 
4149
  return $questions;
4150
  }
4156
  *
4157
  * Get random questions by quiz
4158
  */
4159
+ public function get_random_questions_by_quiz( $quiz_id = 0 ) {
4160
  global $wpdb;
4161
 
4162
+ $quiz_id = $this->get_post_id( $quiz_id );
4163
+ $attempt = $this->is_started_quiz( $quiz_id );
4164
  $total_questions = (int) $attempt->total_questions;
4165
+ if ( ! $attempt ) {
4166
  return false;
4167
  }
4168
 
4169
+ $questions_order = tutor_utils()->get_quiz_option( get_the_ID(), 'questions_order', 'rand' );
4170
 
4171
  $order_by = "";
4172
+ if ( $questions_order === 'rand' ) {
4173
  $order_by = "ORDER BY RAND()";
4174
+ } elseif ( $questions_order === 'asc' ) {
4175
  $order_by = "ORDER BY question_id ASC";
4176
+ } elseif ( $questions_order === 'desc' ) {
4177
  $order_by = "ORDER BY question_id DESC";
4178
+ } elseif ( $questions_order === 'sorting' ) {
4179
  $order_by = "ORDER BY question_order ASC";
4180
  }
4181
 
4182
  $limit = '';
4183
+ if ( $total_questions ) {
4184
  $limit = "LIMIT {$total_questions} ";
4185
  }
4186
 
4187
+ $questions = $wpdb->get_results( $wpdb->prepare(
4188
+ "SELECT *
4189
+ FROM {$wpdb->prefix}tutor_quiz_questions
4190
+ WHERE quiz_id = %d
4191
+ {$order_by}
4192
+ {$limit}
4193
+ ",
4194
+ $quiz_id
4195
+ ) );
4196
 
4197
  return $questions;
4198
  }
4207
  *
4208
  * @since v.1.0.0
4209
  */
4210
+ public function get_answers_by_quiz_question( $question_id, $rand = false ) {
4211
  global $wpdb;
4212
 
4213
+ $question = $wpdb->get_row( $wpdb->prepare(
4214
+ "SELECT *
4215
+ FROM {$wpdb->prefix}tutor_quiz_questions
4216
+ WHERE question_id = %d;
4217
+ ",
4218
+ $question_id
4219
+ ) );
4220
+
4221
+ if ( ! $question ) {
4222
  return false;
4223
  }
4224
 
4225
  $order = " answer_order ASC ";
4226
+ if ( $question->question_type === 'ordering' ) {
4227
  $order = " RAND() ";
4228
  }
4229
 
4231
  $order = " RAND() ";
4232
  }
4233
 
4234
+ $answers = $wpdb->get_results( $wpdb->prepare(
4235
+ "SELECT *
4236
+ FROM {$wpdb->prefix}tutor_quiz_question_answers
4237
+ WHERE belongs_question_id = %d
4238
+ AND belongs_question_type = %s
4239
+ ORDER BY {$order}
4240
+ ",
4241
+ $question_id,
4242
+ $question->question_type
4243
+ ) );
4244
+
4245
  return $answers;
4246
  }
4247
 
4256
  * @since v.1.0.0
4257
  */
4258
 
4259
+ public function quiz_attempts( $quiz_id = 0, $user_id = 0 ) {
4260
  global $wpdb;
4261
 
4262
+ $quiz_id = $this->get_post_id( $quiz_id );
4263
+ $user_id = $this->get_user_id( $user_id );
4264
 
4265
+ $attempts = $wpdb->get_results( $wpdb->prepare(
4266
+ "SELECT *
4267
+ FROM {$wpdb->prefix}tutor_quiz_attempts
4268
+ WHERE quiz_id = %d
4269
+ AND user_id = %d;
4270
+ ",
4271
+ $quiz_id,
4272
+ $user_id
4273
+ ) );
4274
 
4275
+ if ( is_array( $attempts ) && count( $attempts ) ) {
4276
  return $attempts;
4277
  }
4278
 
4289
  *
4290
  * @since v.1.4.1
4291
  */
4292
+ public function quiz_ended_attempts( $quiz_id = 0, $user_id = 0 ) {
4293
  global $wpdb;
4294
 
4295
+ $quiz_id = $this->get_post_id( $quiz_id );
4296
+ $user_id = $this->get_user_id( $user_id );
4297
+
4298
+ $attempts = $wpdb->get_results( $wpdb->prepare(
4299
+ "SELECT *
4300
+ FROM {$wpdb->prefix}tutor_quiz_attempts
4301
+ WHERE quiz_id = %d
4302
+ AND user_id = %d
4303
+ AND attempt_status != %s
4304
+ ",
4305
+ $quiz_id,
4306
+ $user_id,
4307
+ 'attempt_started'
4308
+ ) );
4309
+
4310
+ if ( is_array( $attempts ) && count( $attempts ) ) {
4311
  return $attempts;
4312
  }
4313
 
4324
  *
4325
  * @since v.1.0.0
4326
  */
4327
+ public function get_all_quiz_attempts_by_user( $user_id = 0 ) {
4328
  global $wpdb;
4329
 
4330
+ $user_id = $this->get_user_id( $user_id );
4331
+ $attempts = $wpdb->get_results( $wpdb->prepare(
4332
+ "SELECT *
4333
+ FROM {$wpdb->prefix}tutor_quiz_attempts
4334
+ WHERE user_id = %d
4335
+ ORDER BY attempt_id DESC
4336
+ ",
4337
+ $user_id
4338
+ ) );
4339
+
4340
+ if ( is_array( $attempts ) && count( $attempts ) ) {
4341
  return $attempts;
4342
  }
4343
 
4353
  *
4354
  * @since v.1.0.0
4355
  */
4356
+ public function get_total_quiz_attempts( $search_term = '' ) {
 
4357
  global $wpdb;
4358
 
4359
+ $search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
4360
+
4361
+ $count = $wpdb->get_var( $wpdb->prepare(
4362
+ "SELECT COUNT(attempt_id)
4363
+ FROM {$wpdb->prefix}tutor_quiz_attempts quiz_attempts
4364
+ INNER JOIN {$wpdb->posts} quiz
4365
+ ON quiz_attempts.quiz_id = quiz.ID
4366
+ INNER JOIN {$wpdb->users}
4367
+ ON quiz_attempts.user_id = {$wpdb->users}.ID
4368
+ WHERE attempt_status != %s
4369
+ AND ( user_email LIKE %s OR display_name LIKE %s OR post_title LIKE %s )
4370
+ ",
4371
+ 'attempt_started',
4372
+ $search_term,
4373
+ $search_term,
4374
+ $search_term
4375
+ ) );
4376
 
 
 
 
 
 
 
 
4377
  return (int) $count;
4378
  }
4379
 
4389
  *
4390
  * @since v.1.0.0
4391
  */
4392
+ public function get_quiz_attempts( $start = 0, $limit = 10, $search_term = '' ) {
4393
  global $wpdb;
4394
 
4395
+ $search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
4396
+
4397
+ $query = $wpdb->get_results( $wpdb->prepare(
4398
+ "SELECT *
4399
+ FROM {$wpdb->prefix}tutor_quiz_attempts quiz_attempts
4400
+ INNER JOIN {$wpdb->posts} quiz
4401
+ ON quiz_attempts.quiz_id = quiz.ID
4402
+ INNER JOIN {$wpdb->users}
4403
+ ON quiz_attempts.user_id = {$wpdb->users}.ID
4404
+ WHERE attempt_status != %s
4405
+ AND ( user_email LIKE %s OR display_name LIKE %s OR post_title LIKE %s )
4406
+ ORDER BY quiz_attempts.attempt_id DESC
4407
+ LIMIT %d, %d;
4408
+ ",
4409
+ 'attempt_started',
4410
+ $search_term,
4411
+ $search_term,
4412
+ $search_term,
4413
+ $start,
4414
+ $limit,
4415
+ ) );
4416
 
 
 
 
 
 
 
 
 
 
4417
  return $query;
4418
  }
4419
 
4420
+ public function get_quiz_attempts_by_course_ids( $start = 0, $limit = 10, $course_ids = array(), $search_term = '' ) {
4421
  global $wpdb;
4422
 
4423
+ $course_ids = array_map( function( $id ) {
4424
+ return "'" . esc_sql( $id ) . "'";
4425
+ }, $course_ids );
4426
+
4427
+ $course_ids_in = implode( ', ', $course_ids );
4428
+ $search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
4429
+
4430
+ $query = $wpdb->get_results( $wpdb->prepare(
4431
+ "SELECT *
4432
+ FROM {$wpdb->prefix}tutor_quiz_attempts quiz_attempts
4433
+ INNER JOIN {$wpdb->posts} quiz
4434
+ ON quiz_attempts.quiz_id = quiz.ID
4435
+ INNER JOIN {$wpdb->users}
4436
+ ON quiz_attempts.user_id = {$wpdb->users}.ID
4437
+ WHERE quiz_attempts.course_id IN (" . $course_ids_in . ")
4438
+ AND attempt_status != %s
4439
+ AND ( user_email LIKE %s OR display_name LIKE %s OR post_title LIKE %s )
4440
+ ORDER BY quiz_attempts.attempt_id DESC
4441
+ LIMIT %d, %d;
4442
+ ",
4443
+ 'attempt_started',
4444
+ $search_term,
4445
+ $search_term,
4446
+ $search_term,
4447
+ $start,
4448
+ $limit
4449
+ ) );
4450
 
 
 
 
 
 
 
 
 
 
4451
  return $query;
4452
  }
4453
 
4454
+ public function get_total_quiz_attempts_by_course_ids( $course_ids = array(), $search_term = '' ) {
4455
  global $wpdb;
4456
+
4457
+ $course_ids = array_map( function( $id ) {
4458
+ return "'" . esc_sql( $id ) . "'";
4459
+ }, $course_ids );
4460
+
4461
+ $course_ids_in = implode( ', ', $course_ids );
4462
+ $search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
4463
+
4464
+ $count = $wpdb->get_var( $wpdb->prepare(
4465
+ "SELECT COUNT(attempt_id)
4466
+ FROM {$wpdb->prefix}tutor_quiz_attempts quiz_attempts
4467
+ INNER JOIN {$wpdb->posts} quiz
4468
+ ON quiz_attempts.quiz_id = quiz.ID
4469
+ INNER JOIN {$wpdb->users}
4470
+ ON quiz_attempts.user_id = {$wpdb->users}.ID
4471
+ WHERE quiz_attempts.course_id IN (" . $course_ids_in . ")
4472
+ AND attempt_status != %s
4473
+ AND ( user_email LIKE %s OR display_name LIKE %s OR post_title LIKE %s )
4474
+ ",
4475
+ 'attempt_started',
4476
+ $search_term,
4477
+ $search_term,
4478
+ $search_term
4479
+ ) );
4480
+
4481
  return (int) $count;
4482
  }
4483
 
4490
  *
4491
  * @since v.1.0.0
4492
  */
4493
+ public function get_quiz_answers_by_attempt_id( $attempt_id ) {
4494
  global $wpdb;
4495
 
4496
+ $results = $wpdb->get_results( $wpdb->prepare(
4497
+ "SELECT answers.*,
4498
+ question.question_title,
4499
+ question.question_type
4500
+ FROM {$wpdb->prefix}tutor_quiz_attempt_answers answers
4501
+ LEFT JOIN {$wpdb->prefix}tutor_quiz_questions question
4502
+ ON answers.question_id = question.question_id
4503
+ WHERE answers.quiz_attempt_id = %d
4504
+ ORDER BY attempt_answer_id ASC;
4505
+ ",
4506
+ $attempt_id
4507
+ ) );
4508
 
4509
  return $results;
4510
  }
4511
 
4512
  /**
4513
+ * @param $answer_id array|init
4514
  *
4515
  * @return array|null|object
4516
  *
4518
  *
4519
  * @since v.1.0.0
4520
  */
4521
+ public function get_answer_by_id( $answer_id ) {
4522
  global $wpdb;
4523
 
4524
+ ! is_array( $answer_id ) ? $answer_id = array( $answer_id ) : 0;
4525
+
4526
+ $answer_id = array_map( function( $id ) {
4527
+ return "'" . esc_sql( $id ) . "'";
4528
+ }, $answer_id );
 
4529
 
4530
+ $in_ids_string = implode( ', ', $answer_id );
4531
+
4532
+ $answer = $wpdb->get_results( $wpdb->prepare(
4533
+ "SELECT answer.*,
4534
+ question.question_title,
4535
+ question.question_type
4536
+ FROM {$wpdb->prefix}tutor_quiz_question_answers answer
4537
+ LEFT JOIN {$wpdb->prefix}tutor_quiz_questions question
4538
+ ON answer.belongs_question_id = question.question_id
4539
+ WHERE answer.answer_id IN (" . $in_ids_string . ")
4540
+ AND 1 = %d;
4541
+ ",
4542
+ 1
4543
+ ) );
4544
 
4545
  return $answer;
4546
  }
4554
  *
4555
  * @since v.1.0.0
4556
  */
4557
+ public function get_quiz_answers_by_ids( $ids ) {
 
4558
  $ids = (array) $ids;
4559
 
4560
+ if ( ! count( $ids ) ) {
4561
  return false;
4562
  }
4563
 
4564
  $in_ids = implode(",", $ids);
4565
 
4566
  global $wpdb;
 
 
 
 
 
4567
 
4568
+ $query = $wpdb->get_results( $wpdb->prepare(
4569
+ "SELECT comment_ID,
4570
+ comment_content
4571
+ FROM {$wpdb->comments}
4572
+ WHERE comment_type = %s
4573
+ AND comment_ID IN({$in_ids})
4574
+ ",
4575
+ 'quiz_answer_option'
4576
+ ) );
4577
+
4578
+ if ( is_array( $query ) && count( $query ) ) {
4579
  return $query;
4580
  }
4581
 
4591
  *
4592
  * @since v.1.0.0
4593
  */
4594
+ public function course_levels( $level = null ) {
4595
+ $levels = apply_filters( 'tutor_course_level', array(
4596
+ 'all_levels' => __( 'All Levels', 'tutor' ),
4597
+ 'beginner' => __( 'Beginner', 'tutor' ),
4598
+ 'intermediate' => __( 'Intermediate', 'tutor' ),
4599
+ 'expert' => __( 'Expert', 'tutor' ),
 
4600
  ));
4601
 
4602
+ if ( $level ) {
4603
+ if ( isset( $levels[ $level ] ) ) {
4604
+ return $levels[ $level ];
4605
+ } else {
4606
  return '';
4607
  }
4608
  }
4617
  *
4618
  * @since v.1.0.0
4619
  */
4620
+ public function user_profile_permalinks() {
4621
  $permalinks = array(
4622
+ 'courses_taken' => __( 'Courses Taken', 'tutor' ),
4623
  );
4624
 
4625
+ $show_enrolled_course = tutor_utils()->get_option( 'show_courses_completed_by_student' );
4626
+ $enable_show_reviews_wrote = tutor_utils()->get_option( 'students_own_review_show_at_profile' );
4627
 
4628
+ if ( $show_enrolled_course ) {
4629
+ $permalinks['enrolled_course'] = __( 'Enrolled Course', 'tutor' );
 
 
 
4630
  }
4631
 
4632
+ if ( $enable_show_reviews_wrote ) {
4633
+ $permalinks['reviews_wrote'] = __( 'Reviews Written', 'tutor' );
4634
+ }
4635
 
4636
+ return apply_filters( 'tutor_public_profile/permalinks', $permalinks );
4637
  }
4638
 
4639
  /**
4643
  *
4644
  * @since v.1.0.0
4645
  */
4646
+ public function student_register_url() {
4647
+ $student_register_page = (int) $this->get_option( 'student_register_page' );
4648
 
4649
+ if ( $student_register_page ) {
4650
+ return get_the_permalink( $student_register_page );
4651
  }
4652
+
4653
  return false;
4654
  }
4655
+
4656
  /**
4657
  * @return bool|false|string
4658
  *
4660
  *
4661
  * @since v.1.2.13
4662
  */
4663
+ public function instructor_register_url() {
4664
+ $instructor_register_page = (int) $this->get_option( 'instructor_register_page' );
4665
 
4666
+ if ( $instructor_register_page ) {
4667
+ return get_the_permalink( $instructor_register_page );
4668
  }
4669
+
4670
  return false;
4671
  }
4672
 
4675
  *
4676
  * Get frontend dashboard URL
4677
  */
4678
+ public function tutor_dashboard_url($sub_url = '') {
4679
+ $page_id = (int) tutor_utils()->get_option( 'tutor_dashboard_page_id' );
4680
+ $page_id = apply_filters( 'tutor_dashboard_page_id', $page_id );
4681
+ return trailingslashit( get_the_permalink( $page_id ) ) . $sub_url;
4682
  }
4683
 
4684
  /**
4687
  * @return int
4688
  *
4689
  */
4690
+ public function dashboard_page_id() {
4691
+ $page_id = (int) tutor_utils()->get_option( 'tutor_dashboard_page_id' );
4692
+ $page_id = apply_filters( 'tutor_dashboard_page_id', $page_id );
4693
  return $page_id;
4694
  }
4695
 
4703
  *
4704
  * @since v.1.0.0
4705
  */
4706
+ public function is_wishlisted( $course_id = 0, $user_id = 0 ) {
4707
+ $course_id = $this->get_post_id( $course_id );
4708
+ $user_id = $this->get_user_id( $user_id );
4709
+ if ( ! $user_id ) {
4710
  return false;
4711
  }
4712
 
4713
  global $wpdb;
4714
+ $if_added_to_list = (bool) $wpdb->get_row( $wpdb->prepare(
4715
+ "SELECT *
4716
+ FROM {$wpdb->usermeta}
4717
+ WHERE user_id = %d
4718
+ AND meta_key = '_tutor_course_wishlist'
4719
+ AND meta_value = %d;
4720
+ ",
4721
+ $user_id,
4722
+ $course_id
4723
+ ) );
4724
 
4725
  return $if_added_to_list;
4726
  }
4734
  *
4735
  * @since v.1.0.0
4736
  */
4737
+ public function get_wishlist( $user_id = 0 ) {
4738
+ global $wpdb;
4739
+
4740
+ $user_id = $this->get_user_id( $user_id );
4741
  $course_post_type = tutor()->course_post_type;
4742
 
4743
+ $pageposts = $wpdb->get_results( $wpdb->prepare(
4744
+ "SELECT $wpdb->posts.*
4745
+ FROM $wpdb->posts
4746
+ LEFT JOIN $wpdb->usermeta
4747
+ ON ($wpdb->posts.ID = $wpdb->usermeta.meta_value)
4748
+ WHERE post_type = %s
4749
+ AND post_status = %s
4750
+ AND $wpdb->usermeta.meta_key = %s
4751
+ AND $wpdb->usermeta.user_id = %d
4752
+ ORDER BY $wpdb->usermeta.umeta_id DESC;
4753
+ ",
4754
+ $course_post_type,
4755
+ 'publish',
4756
+ '_tutor_course_wishlist',
4757
+ $user_id
4758
+ ), OBJECT );
4759
 
 
 
 
 
 
 
 
4760
  return $pageposts;
4761
  }
4762
 
4769
  *
4770
  * @since v.1.0.0
4771
  */
4772
+ public function most_popular_courses( $limit = 10 ) {
4773
  global $wpdb;
4774
 
4775
+ $courses = $wpdb->get_results( $wpdb->prepare(
4776
+ "SELECT COUNT(enrolled.ID) AS total_enrolled,
4777
+ enrolled.post_parent as course_id,
4778
+ course.*
4779
+ FROM {$wpdb->posts} enrolled
4780
+ INNER JOIN {$wpdb->posts} course
4781
+ ON enrolled.post_parent = course.ID
4782
+ WHERE enrolled.post_type = %s
4783
+ AND enrolled.post_status = %s
4784
+ GROUP BY course_id
4785
+ ORDER BY total_enrolled DESC
4786
+ LIMIT 0, %d;
4787
+ ",
4788
+ 'tutor_enrolled',
4789
+ 'completed',
4790
+ $limit
4791
+ ) );
4792
 
4793
  return $courses;
4794
  }
4802
  *
4803
  * @since v.1.0.0
4804
  */
4805
+ public function most_rated_courses( $limit = 10 ) {
4806
  global $wpdb;
4807
 
4808
+ $result = $wpdb->get_results( $wpdb->prepare(
4809
+ "SELECT COUNT(comment_ID) AS total_rating,
4810
+ comment_ID,
4811
+ comment_post_ID,
4812
+ course.*
4813
+ FROM {$wpdb->comments}
4814
+ INNER JOIN {$wpdb->posts} course
4815
+ ON comment_post_ID = course.ID
4816
+ WHERE {$wpdb->comments}.comment_type = %s
4817
+ AND {$wpdb->comments}.comment_approved = %s
4818
+ GROUP BY comment_post_ID
4819
+ ORDER BY total_rating DESC
4820
+ LIMIT 0, %d
4821
+ ;",
4822
+ 'tutor_course_rating',
4823
+ 'approved',
4824
+ $limit
4825
+ ) );
4826
+
4827
+ if ( is_array( $result ) && count( $result ) ) {
4828
  return $result;
4829
  }
4830
+
4831
  return false;
4832
  }
4833
 
4840
  *
4841
  * @since v.1.0.0
4842
  */
4843
+ public function get_addon_config( $addon_field = null ) {
4844
+ if ( ! $addon_field ) {
4845
  return false;
4846
  }
4847
 
4848
+ $addonsConfig = maybe_unserialize( get_option( 'tutor_addons_config' ) );
4849
 
4850
+ if ( isset( $addonsConfig[ $addon_field ] ) ) {
4851
+ return $addonsConfig[ $addon_field ];
4852
  }
4853
 
4854
  return false;
4863
  */
4864
  function get_ip() {
4865
  $ipaddress = '';
4866
+ if ( getenv( 'HTTP_CLIENT_IP') )
4867
+ $ipaddress = getenv( 'HTTP_CLIENT_IP' );
4868
+ else if( getenv( 'HTTP_X_FORWARDED_FOR' ) )
4869
+ $ipaddress = getenv( 'HTTP_X_FORWARDED_FOR' );
4870
+ else if( getenv( 'HTTP_X_FORWARDED' ) )
4871
+ $ipaddress = getenv( 'HTTP_X_FORWARDED' );
4872
+ else if( getenv( 'HTTP_FORWARDED_FOR' ) )
4873
+ $ipaddress = getenv( 'HTTP_FORWARDED_FOR' );
4874
+ else if( getenv( 'HTTP_FORWARDED' ) )
4875
+ $ipaddress = getenv( 'HTTP_FORWARDED' );
4876
+ else if( getenv( 'REMOTE_ADDR' ) )
4877
+ $ipaddress = getenv( 'REMOTE_ADDR' );
4878
  else
4879
  $ipaddress = 'UNKNOWN';
4880
  return $ipaddress;
4887
  *
4888
  * @since v.1.0.4
4889
  */
4890
+ public function tutor_social_share_icons() {
 
4891
  $icons = array(
4892
+ 'facebook' => array( 'share_class' => 's_facebook', 'icon_html' => '<i class="tutor-icon-facebook"></i>' ),
4893
+ 'twitter' => array( 'share_class' => 's_twitter', 'icon_html' => '<i class="tutor-icon-twitter"></i>' ),
4894
+ 'linkedin' => array( 'share_class' => 's_linkedin', 'icon_html' => '<i class="tutor-icon-linkedin"></i>' ),
4895
+ 'tumblr' => array( 'share_class' => 's_tumblr', 'icon_html' => '<i class="tutor-icon-tumblr"></i>' ),
4896
  );
4897
 
4898
+ return apply_filters( 'tutor_social_share_icons', $icons );
4899
  }
4900
 
4901
  /**
4905
  *
4906
  * @since v.1.3.7
4907
  */
4908
+ public function tutor_user_social_icons() {
 
4909
  $icons = array(
4910
  '_tutor_profile_website' => array(
4911
+ 'label' => __('Website URL', 'tutor'),
4912
+ 'placeholder' => 'https://example.com/',
4913
+ 'icon_classes' => 'tutor-icon-earth'
4914
  ),
4915
  '_tutor_profile_github' => array(
4916
+ 'label' => __('Github URL', 'tutor'),
4917
+ 'placeholder' => 'https://github.com/username',
4918
+ 'icon_classes' => 'tutor-icon-github-logo'
4919
  ),
4920
  '_tutor_profile_facebook' => array(
4921
+ 'label' => __('Facebook URL', 'tutor'),
4922
+ 'placeholder' => 'https://facebook.com/username',
4923
+ 'icon_classes' => 'tutor-icon-facebook'
4924
  ),
4925
  '_tutor_profile_twitter' => array(
4926
+ 'label' => __('Twitter URL', 'tutor'),
4927
+ 'placeholder' => 'https://twitter.com/username',
4928
+ 'icon_classes' => 'tutor-icon-twitter'
4929
  ),
4930
  '_tutor_profile_linkedin' => array(
4931
+ 'label' => __('Linkedin URL', 'tutor'),
4932
+ 'placeholder' => 'https://linkedin.com/username',
4933
+ 'icon_classes' => 'tutor-icon-linkedin'
4934
  ),
4935
  );
4936
 
4937
+ return apply_filters( 'tutor_user_social_icons', $icons );
4938
  }
4939
 
4940
  /**
4946
  *
4947
  * @since v.1.0.4
4948
  */
4949
+ public function count( $array = array() ) {
4950
+ if ( is_array( $array ) && count( $array ) ) {
4951
+ return count( $array );
4952
  }
4953
+
4954
  return false;
4955
  }
4956
 
4961
  *
4962
  * @since v.1.1.2
4963
  */
4964
+ public function tutor_get_screen_ids() {
4965
  $screen_ids = array(
4966
  "edit-course",
4967
  "course",
4978
  "tutor-lms_page_tutor_emails",
4979
  );
4980
 
4981
+ return apply_filters( 'tutor_get_screen_ids', $screen_ids );
4982
  }
4983
 
 
4984
  /**
4985
  * @return mixed
4986
  *
4988
  *
4989
  * @since v.1.1.2
4990
  */
4991
+ public function get_earnings_completed_statuses() {
4992
  return apply_filters(
4993
  'tutor_get_earnings_completed_statuses',
4994
  array (
5009
  *
5010
  * @since v.1.1.2
5011
  */
5012
+ public function get_earning_sum( $user_id = 0, $date_filter = array() ) {
 
5013
  global $wpdb;
5014
 
5015
+ $user_id = $this->get_user_id( $user_id );
5016
  $date_query = '';
 
 
5017
 
5018
+ if ( $this->count( $date_filter ) ) {
5019
+ extract( $date_filter );
5020
+
5021
+ if ( ! empty( $dataFor ) ) {
5022
+ if ( $dataFor === 'yearly' ) {
5023
+ if ( empty( $year ) ) {
5024
+ $year = date( 'Y' );
5025
  }
5026
  $date_query = "AND YEAR(created_at) = {$year} ";
5027
  }
5028
+ } else {
5029
  $date_query = " AND (created_at BETWEEN '{$start_date}' AND '{$end_date}') ";
5030
  }
5031
  }
5032
 
5033
  $complete_status = tutor_utils()->get_earnings_completed_statuses();
5034
+ $complete_status = "'" . implode( "','", $complete_status ) . "'";
5035
+
5036
+ $earning_sum = $wpdb->get_row( $wpdb->prepare(
5037
+ "SELECT SUM(course_price_total) AS course_price_total,
5038
+ SUM(course_price_grand_total) AS course_price_grand_total,
5039
+ SUM(instructor_amount) AS instructor_amount,
5040
+ (SELECT SUM(amount)
5041
+ FROM {$wpdb->prefix}tutor_withdraws
5042
+ WHERE user_id = {$user_id}
5043
+ AND status != 'rejected'
5044
+ ) AS withdraws_amount,
5045
+ SUM(admin_amount) AS admin_amount,
5046
+ SUM(deduct_fees_amount) AS deduct_fees_amount
5047
+ FROM {$wpdb->prefix}tutor_earnings
5048
+ WHERE user_id = %d
5049
+ AND order_status IN({$complete_status})
5050
+ {$date_query}
5051
+ ",
5052
+ $user_id
5053
+ ) );
5054
 
5055
  //TODO: need to check
5056
  // (SUM(instructor_amount) - (SELECT withdraws_amount) ) as balance,
5057
 
5058
+ if ( $earning_sum->course_price_total ) {
 
5059
  $earning_sum->balance = $earning_sum->instructor_amount - $earning_sum->withdraws_amount;
5060
+ } else {
 
5061
  $earning_sum = (object) array(
5062
  'course_price_total' => 0,
5063
  'course_price_grand_total' => 0,
5082
  *
5083
  * @since v.1.1.2
5084
  */
5085
+ public function get_earning_statements( $user_id = 0, $filter_data = array() ) {
5086
  global $wpdb;
5087
 
5088
  $user_sql = "";
5097
  /**
5098
  * Query by Date Filter
5099
  */
5100
+ if ( $this->count( $filter_data ) ) {
5101
+ extract( $filter_data );
5102
 
5103
+ if ( ! empty( $dataFor ) ) {
5104
+ if ( $dataFor === 'yearly' ) {
5105
+ if ( empty( $year ) ) {
5106
+ $year = date( 'Y' );
5107
  }
5108
  $date_query = "AND YEAR(created_at) = {$year} ";
5109
  }
5110
+ } else {
5111
  $date_query = " AND (created_at BETWEEN '{$start_date}' AND '{$end_date}') ";
5112
  }
5113
 
5114
  /**
5115
  * Query by order status related to this earning transaction
5116
  */
5117
+ if ( ! empty( $statuses ) ) {
5118
  if ( $this->count( $statuses ) ) {
5119
  $status = "'" . implode( "','", $statuses ) . "'";
5120
  $query_by_status = "AND order_status IN({$status})";
5121
  } elseif ( $statuses === 'completed' ) {
 
5122
  $get_earnings_completed_statuses = $this->get_earnings_completed_statuses();
5123
  if ( $this->count( $get_earnings_completed_statuses ) ) {
5124
  $status = "'" . implode( "','", $get_earnings_completed_statuses ) . "'";
5127
  }
5128
  }
5129
 
5130
+ if ( ! empty( $per_page ) ) {
5131
+ $offset = (int) ! empty($offset) ? $offset : 0;
 
5132
  $pagination_query = " LIMIT {$offset}, {$per_page} ";
 
5133
  }
 
 
5134
  }
5135
 
5136
+ $query = $wpdb->get_results( $wpdb->prepare(
5137
+ "SELECT earning_tbl.*,
5138
+ course.post_title AS course_title
5139
+ FROM {$wpdb->prefix}tutor_earnings earning_tbl
5140
+ LEFT JOIN {$wpdb->posts} course
5141
+ ON earning_tbl.course_id = course.ID
5142
+ WHERE 1 = %d {$user_sql} {$date_query} {$query_by_status}
5143
+ ORDER BY created_at DESC {$pagination_query}
5144
+ ",
5145
+ 1
5146
+ ) );
5147
+
5148
+ $query_count = (int) $wpdb->get_var( $wpdb->prepare(
5149
+ "SELECT COUNT(earning_tbl.earning_id)
5150
+ FROM {$wpdb->prefix}tutor_earnings earning_tbl
5151
+ WHERE 1 = %d {$user_sql} {$date_query} {$query_by_status}
5152
+ ORDER BY created_at DESC
5153
+ ",
5154
+ 1
5155
+ ) );
5156
 
5157
  return (object) array(
5158
+ 'count' => $query_count,
5159
  'results' => $query,
5160
  );
5161
  }
5169
  *
5170
  * @since v.1.1.2
5171
  */
5172
+ public function tutor_price( $price = 0 ) {
5173
+ if ( function_exists( 'wc_price') ) {
5174
+ return wc_price( $price );
5175
+ } elseif ( function_exists( 'edd_currency_filter' ) ) {
5176
+ return edd_currency_filter( edd_format_amount( $price ) );
 
5177
  }else{
5178
+ return number_format_i18n( $price );
5179
  }
5180
  }
5181
 
5186
  *
5187
  * @since v.1.3.4
5188
  */
5189
+ public function currency_symbol() {
5190
+ $enable_tutor_edd = tutor_utils()->get_option( 'enable_tutor_edd' );
5191
+ $monetize_by = $this->get_option('monetize_by');
 
5192
 
5193
  $symbol = '&#36;';
5194
+ if ( $enable_tutor_edd && function_exists( 'edd_currency_symbol' ) ) {
5195
  $symbol = edd_currency_symbol();
5196
  }
5197
 
5198
+ if ( $monetize_by === 'wc' && function_exists( 'get_woocommerce_currency_symbol' ) ) {
5199
  $symbol = get_woocommerce_currency_symbol();
5200
  }
5201
 
5202
+ return apply_filters( 'get_tutor_currency_symbol', $symbol );
5203
  }
5204
 
5205
  /**
5209
  *
5210
  * Get withdraw method for a specific
5211
  */
5212
+ public function get_user_withdraw_method( $user_id = 0 ) {
5213
+ $user_id = $this->get_user_id( $user_id );
5214
+ $account = get_user_meta( $user_id, '_tutor_withdraw_method_data', true );
5215
 
5216
+ if ( $account ) {
5217
+ return maybe_unserialize( $account );
 
5218
  }
5219
 
5220
  return false;
5228
  *
5229
  * @return object
5230
  */
5231
+ public function get_withdrawals_history( $user_id = 0, $filter = array() ) {
5232
  global $wpdb;
5233
 
5234
  $filter = (array) $filter;
5235
  extract($filter);
5236
 
5237
  $query_by_status_sql = "";
5238
+ $query_by_user_sql = "";
5239
  $query_by_pagination = "";
5240
 
5241
+ if ( ! empty( $status ) ) {
5242
  $status = (array) $status;
5243
+ $status = "'" . implode( "','", $status ) . "'";
5244
 
5245
  $query_by_status_sql = " AND status IN({$status}) ";
5246
  }
5247
 
5248
+ if ( ! empty( $per_page ) ) {
5249
+ if ( empty( $start ) )
5250
  $start = 0;
5251
 
5252
  $query_by_pagination = " LIMIT {$start}, {$per_page} ";
5253
  }
5254
 
5255
+ if ( $user_id ) {
5256
  $query_by_user_sql = " AND user_id = {$user_id} ";
5257
  }
5258
 
5259
+ $count = (int) $wpdb->get_var( $wpdb->prepare(
5260
+ "SELECT COUNT(withdraw_id)
5261
+ FROM {$wpdb->prefix}tutor_withdraws
5262
+ WHERE 1 = %d
5263
+ {$query_by_user_sql}
5264
+ {$query_by_status_sql}
5265
+ ",
5266
+ 1
5267
+ ) );
5268
+
5269
+ $results = $wpdb->get_results( $wpdb->prepare(
5270
+ "SELECT withdraw_tbl.*,
5271
+ user_tbl.display_name AS user_name,
5272
+ user_tbl.user_email
5273
+ FROM {$wpdb->prefix}tutor_withdraws withdraw_tbl
5274
+ INNER JOIN {$wpdb->users} user_tbl
5275
+ ON withdraw_tbl.user_id = user_tbl.ID
5276
+ WHERE 1 = %d
5277
+ {$query_by_user_sql}
5278
+ {$query_by_status_sql}
5279
+ ORDER BY created_at DESC
5280
+ {$query_by_pagination}
5281
+ ",
5282
+ 1
5283
+ ) );
5284
 
5285
  $withdraw_history = array(
5286
+ 'count' => 0,
5287
  'results' => null,
5288
  );
5289
 
5290
+ if ( $count ) {
5291
  $withdraw_history['count'] = $count;
5292
  }
5293
 
5294
+ if ( tutor_utils()->count( $results ) ) {
5295
  $withdraw_history['results'] = $results;
5296
  }
5297
+
5298
  return (object) $withdraw_history;
5299
 
5300
  }
5304
  *
5305
  * Add Instructor role to any user by user iD
5306
  */
5307
+ public function add_instructor_role( $instructor_id = 0 ) {
5308
+ if ( ! $instructor_id ) {
5309
  return;
5310
  }
5311
+ do_action( 'tutor_before_approved_instructor', $instructor_id );
5312
 
5313
+ update_user_meta( $instructor_id, '_is_tutor_instructor', tutor_time() );
5314
+ update_user_meta( $instructor_id, '_tutor_instructor_status', 'approved' );
5315
+ update_user_meta( $instructor_id, '_tutor_instructor_approved', tutor_time() );
5316
 
5317
+ $instructor = new \WP_User( $instructor_id );
5318
+ $instructor->add_role( tutor()->instructor_role );
5319
 
5320
+ do_action( 'tutor_after_approved_instructor', $instructor_id );
5321
  }
5322
 
5323
  /**
5325
  *
5326
  * Remove instructor role by instructor id
5327
  */
5328
+ public function remove_instructor_role( $instructor_id = 0 ) {
5329
+ if ( ! $instructor_id ) {
5330
  return;
5331
  }
5332
 
5333
+ do_action( 'tutor_before_blocked_instructor', $instructor_id );
5334
+ delete_user_meta( $instructor_id, '_is_tutor_instructor' );
5335
+ update_user_meta( $instructor_id, '_tutor_instructor_status', 'blocked' );
5336
 
5337
+ $instructor = new \WP_User( $instructor_id );
5338
+ $instructor->remove_role( tutor()->instructor_role );
5339
+ do_action( 'tutor_after_blocked_instructor', $instructor_id );
5340
  }
5341
 
5342
  /**
5345
  *
5346
  * Set Flash Message to view in next action / route
5347
  */
5348
+ public function set_flash_msg( $msg = '', $name = 'success' ) {
5349
  global $wp_filesystem;
5350
  if ( ! $wp_filesystem ) {
5351
  require_once( ABSPATH . 'wp-admin/includes/file.php' );
5353
 
5354
  $filename = "tutor_flash_msg_{$name}.txt";
5355
  $upload_dir = wp_upload_dir();
5356
+ $dir = trailingslashit( $upload_dir['basedir'] ) . 'tutor/';
5357
 
5358
  WP_Filesystem( false, $upload_dir['basedir'], true );
5359
 
5360
+ if ( ! $wp_filesystem->is_dir( $dir ) ) {
5361
  $wp_filesystem->mkdir( $dir );
5362
  }
5363
+
5364
  $wp_filesystem->put_contents( $dir . $filename, $msg );
5365
  }
5366
 
5371
  *
5372
  * Get Flash Message
5373
  */
5374
+ public function get_flash_msg( $name = null ) {
5375
+ if ( ! $name ) {
5376
  return '';
5377
  }
5378
 
5379
  $upload_dir = wp_get_upload_dir();
5380
+ $upload_dir = trailingslashit( $upload_dir['basedir'] );
5381
+ $msg_name = 'tutor_flash_msg_'.$name;
5382
 
5383
  $msg = '';
5384
  $flash_msg_file_name = $upload_dir."tutor/{$msg_name}.txt";
5385
+ if ( file_exists( $flash_msg_file_name ) ) {
5386
+ $msg = file_get_contents( $flash_msg_file_name );
5387
+ unlink( $flash_msg_file_name );
5388
  }
5389
 
5390
+ return apply_filters( 'tutor_get_flash_msg', $msg, $name );
5391
  }
5392
 
5393
  /**
5397
  *
5398
  * Get purchase history by customer id
5399
  */
5400
+ public function get_orders_by_user_id( $user_id = 0 ) {
 
5401
  global $wpdb;
5402
 
5403
+ $user_id = $this->get_user_id();
5404
+ $monetize_by = tutils()->get_option( 'monetize_by' );
5405
 
5406
  $post_type = "";
5407
  $user_meta = "";
5408
+
5409
+ if ( $monetize_by === 'wc' ) {
5410
  $post_type = "shop_order";
5411
  $user_meta = "_customer_user";
5412
+ } else if ( $monetize_by === 'edd' ) {
5413
  $post_type = "edd_payment";
5414
  $user_meta = "_edd_payment_user_id";
5415
  }
5416
 
5417
+ $orders = $wpdb->get_results( $wpdb->prepare(
5418
+ "SELECT {$wpdb->posts}.*
5419
+ FROM {$wpdb->posts}
5420
+ INNER JOIN {$wpdb->postmeta} customer
5421
+ ON id = customer.post_id
5422
+ AND customer.meta_key = '{$user_meta}'
5423
+ INNER JOIN {$wpdb->postmeta} tutor_order
5424
+ ON id = tutor_order.post_id
5425
+ AND tutor_order.meta_key = '_is_tutor_order_for_course'
5426
+ WHERE post_type = %s
5427
+ AND customer.meta_value = %d
5428
+ ORDER BY {$wpdb->posts}.id DESC
5429
+ ",
5430
+ $post_type,
5431
+ $user_id,
5432
+ ) );
5433
 
5434
  return $orders;
5435
  }
5443
  *
5444
  * @since v.1.3.1
5445
  */
5446
+ public function order_status_context( $status = null ) {
5447
+ $status = str_replace( 'wc-', '', $status );
5448
+ $status_name = ucwords( str_replace( '-', ' ', $status ) );
5449
 
5450
  return "<span class='label-order-status label-status-{$status}'>$status_name</span>";
5451
  }
5452
 
5453
+ public function get_course_id_by_assignment( $assignment_id = 0 ) {
5454
+ $assignment_id = $this->get_post_id( $assignment_id );
5455
+ return get_post_meta( $assignment_id, '_tutor_course_id_for_assignments', true );
5456
  }
5457
 
5458
  /**
5466
  *
5467
  * @since v.1.3.3
5468
  */
5469
+ public function get_assignment_option( $assignment_id = 0, $option_key = '', $default = false ) {
5470
+ $assignment_id = $this->get_post_id( $assignment_id );
5471
+ $get_option_meta = maybe_unserialize( get_post_meta($assignment_id, 'assignment_option', true ) );
5472
 
5473
+ if ( ! $option_key && ! empty( $get_option_meta ) ) {
5474
  return $get_option_meta;
5475
  }
5476
 
5477
  $value = $this->avalue_dot( $option_key, $get_option_meta );
5478
+
5479
  if ( $value ) {
5480
  return $value;
5481
  }
5482
+
5483
  return $default;
5484
  }
5485
 
5493
  *
5494
  * @since v.1.3.3
5495
  */
5496
+ public function is_assignment_submitting( $assignment_id = 0, $user_id = 0 ) {
5497
  global $wpdb;
5498
 
5499
+ $assignment_id = $this->get_post_id( $assignment_id );
5500
+ $user_id = $this->get_user_id( $user_id );
5501
+
5502
+ $is_running_submit = (int) $wpdb->get_var( $wpdb->prepare(
5503
+ "SELECT comment_ID
5504
+ FROM {$wpdb->comments}
5505
+ WHERE comment_type = %s
5506
+ AND comment_approved = %s
5507
+ AND user_id = %d
5508
+ AND comment_post_ID = %d;
5509
+ ",
5510
+ 'tutor_assignment',
5511
+ 'submitting',
5512
+ $user_id,
5513
+ $assignment_id
5514
+ ) );
5515
 
5516
  return $is_running_submit;
5517
  }
5526
  *
5527
  * @since v.1.3.3
5528
  */
5529
+ public function is_assignment_submitted( $assignment_id = 0, $user_id = 0 ) {
 
5530
  global $wpdb;
5531
 
5532
+ $assignment_id = $this->get_post_id( $assignment_id );
5533
+ $user_id = $this->get_user_id( $user_id );
5534
+
5535
+ $has_submitted = $wpdb->get_row( $wpdb->prepare(
5536
+ "SELECT *
5537
+ FROM {$wpdb->comments}
5538
+ WHERE comment_type = %s
5539
+ AND comment_approved = %s
5540
+ AND user_id = %d
5541
+ AND comment_post_ID = %d;
5542
+ ",
5543
+ 'tutor_assignment',
5544
+ 'submitted',
5545
+ $user_id,
5546
+ $assignment_id
5547
+ ) );
5548
 
5549
  return $has_submitted;
5550
  }
5551
 
5552
+ public function get_assignment_submit_info( $assignment_submitted_id = 0 ) {
5553
  global $wpdb;
5554
 
5555
+ $assignment_submitted_id = $this->get_post_id( $assignment_submitted_id );
5556
+
5557
+ $submitted_info = $wpdb->get_row( $wpdb->prepare(
5558
+ "SELECT *
5559
+ FROM {$wpdb->comments}
5560
+ WHERE comment_ID = %d
5561
+ AND comment_type = %s
5562
+ AND comment_approved = %s;
5563
+ ",
5564
+ $assignment_submitted_id,
5565
+ 'tutor_assignment',
5566
+ 'submitted',
5567
+ ) );
5568
 
5569
  return $submitted_info;
5570
  }
5571
 
5572
+ public function get_total_assignments() {
5573
  global $wpdb;
5574
 
5575
+ $count = $wpdb->get_var( $wpdb->prepare(
5576
+ "SELECT COUNT(comment_ID)
5577
+ FROM {$wpdb->comments}
5578
+ WHERE comment_type = %s
5579
+ AND comment_approved = %s;
5580
+ ",
5581
+ 'tutor_assignment',
5582
+ 'submitted'
5583
+ ) );
5584
 
5585
  return (int) $count;
5586
  }
5587
 
5588
+ public function get_assignments() {
5589
  global $wpdb;
5590
 
5591
+ $results = $wpdb->get_results( $wpdb->prepare(
5592
+ "SELECT *
5593
+ FROM {$wpdb->comments}
5594
+ WHERE comment_type = %s
5595
+ AND comment_approved = %s;
5596
+ ",
5597
+ 'tutor_assignment',
5598
+ 'submitted',
5599
+ ) );
5600
 
5601
  return $results;
5602
  }
5610
  *
5611
  * @since v.1.3.3
5612
  */
5613
+ public function get_assigned_courses_ids_by_instructors( $user_id = 0 ) {
5614
  global $wpdb;
5615
+ $user_id = $this->get_user_id( $user_id );
 
5616
  $course_post_type = tutor()->course_post_type;
 
5617
 
5618
+ $get_assigned_courses_ids = $wpdb->get_col( $wpdb->prepare(
5619
+ "SELECT meta_value
5620
+ FROM {$wpdb->usermeta}
5621
+ WHERE meta_key = %s
5622
+ AND user_id = %d
5623
+ GROUP BY meta_value;
5624
+ ",
5625
+ '_tutor_instructor_course_id',
5626
+ $user_id
5627
+ ) );
5628
 
5629
  return $get_assigned_courses_ids;
5630
  }
5638
  *
5639
  * @since v.1.3.4
5640
  */
5641
+ public function get_course_categories( $parent = 0 ) {
5642
+ $args = apply_filters( 'tutor_get_course_categories_args', array(
5643
+ 'taxonomy' => 'course-category',
5644
+ 'hide_empty' => false,
5645
+ 'parent' => $parent,
 
5646
  ));
5647
 
5648
+ $terms = get_terms( $args );
5649
 
5650
  $children = array();
5651
+ foreach ( $terms as $term ) {
5652
  $term->children = $this->get_course_categories( $term->term_id );
5653
  $children[ $term->term_id ] = $term;
5654
  }
5665
  *
5666
  * @since v.1.3.5
5667
  */
5668
+ public function get_course_categories_term( $parent_id = 0 ) {
5669
+ $args = apply_filters( 'tutor_get_course_categories_terms_args', array(
5670
+ 'taxonomy' => 'course-category',
5671
+ 'parent' => $parent_id,
5672
  'hide_empty' => false,
5673
  ));
5674
 
5675
+ $terms = get_terms( $args );
5676
 
5677
  return $terms;
5678
  }
5683
  * Get back url from the request
5684
  * @since v.1.3.4
5685
  */
5686
+ public function referer() {
5687
+ $url = $this->array_get( '_wp_http_referer', $_REQUEST );
5688
+ return apply_filters( 'tutor_referer_url', $url );
5689
  }
5690
 
5691
  /**
5697
  *
5698
  * @since v.1.3.4
5699
  */
5700
+ public function course_edit_link( $course_id = 0 ) {
5701
+ $course_id = $this->get_post_id( $course_id );
5702
 
5703
  $url = admin_url("post.php?post={$course_id}&action=edit");
5704
+ if ( tutor()->has_pro ) {
5705
+ $url = $this->tutor_dashboard_url( "create-course/?course_ID=" . $course_id );
5706
  }
5707
 
5708
  return $url;
5709
  }
5710
 
5711
+ public function get_assignments_by_instructor( $instructor_id = 0, $filter_data = array() ) {
5712
  global $wpdb;
5713
 
5714
+ $instructor_id = $this->get_user_id( $instructor_id );
5715
+ $course_ids = tutor_utils()->get_assigned_courses_ids_by_instructors( $instructor_id );
5716
+ $assignment_post_type = 'tutor_assignments';
5717
 
5718
+ $in_course_ids = implode( "','", $course_ids );
5719
 
5720
  $pagination_query = $date_query = '';
5721
  $sort_query = 'ORDER BY ID DESC';
5722
+ if ( $this->count( $filter_data ) ) {
5723
  extract( $filter_data );
5724
 
5725
  if ( ! empty( $course_id ) ) {
5737
  }
5738
  }
5739
 
5740
+ $count = (int) $wpdb->get_var( $wpdb->prepare(
5741
+ "SELECT COUNT(ID)
5742
+ FROM {$wpdb->postmeta} post_meta
5743
+ INNER JOIN {$wpdb->posts} assignment
5744
+ ON post_meta.post_id = assignment.ID
5745
+ AND post_meta.meta_key = '_tutor_course_id_for_assignments'
5746
+ WHERE post_type = %s
5747
+ AND post_meta.meta_value IN('$in_course_ids')
5748
+ {$date_query}
5749
+ ",
5750
+ $assignment_post_type
5751
+ ) );
5752
+
5753
+ $query = $wpdb->get_results( $wpdb->prepare(
5754
+ "SELECT *
5755
+ FROM {$wpdb->postmeta} post_meta
5756
+ INNER JOIN {$wpdb->posts} assignment
5757
+ ON post_meta.post_id = assignment.ID
5758
+ AND post_meta.meta_key = '_tutor_course_id_for_assignments'
5759
+ WHERE post_type = %s
5760
+ AND post_meta.meta_value IN('$in_course_ids')
5761
+ {$date_query}
5762
+ {$sort_query}
5763
+ {$pagination_query}
5764
+ ",
5765
+ $assignment_post_type
5766
+ ) );
5767
+
5768
+ return (object) array( 'count' => $count, 'results' => $query );
 
 
5769
  }
5770
 
5771
  /**
5775
  *
5776
  * Get assignments by course id
5777
  */
5778
+ public function get_assignments_by_course( $course_id = 0 ) {
5779
+ if ( ! $course_id ) {
5780
  return false;
5781
  }
5782
  global $wpdb;
5783
 
5784
+ $assignment_post_type = 'tutor_assignments';
5785
+
5786
+ $count = (int) $wpdb->get_var( $wpdb->prepare(
5787
+ "SELECT COUNT(ID)
5788
+ FROM {$wpdb->postmeta} post_meta
5789
+ INNER JOIN {$wpdb->posts} assignment
5790
+ ON post_meta.post_id = assignment.ID
5791
+ AND post_meta.meta_key = '_tutor_course_id_for_assignments'
5792
+ WHERE post_type = %s
5793
+ AND post_meta.meta_value = %d
5794
+ ORDER BY ID DESC;
5795
+ ",
5796
+ $assignment_post_type,
5797
+ $course_id
5798
+ ) );
5799
+
5800
+ $query = $wpdb->get_results( $wpdb->prepare(
5801
+ "SELECT *
5802
+ FROM {$wpdb->postmeta} post_meta
5803
+ INNER JOIN {$wpdb->posts} assignment
5804
+ ON post_meta.post_id = assignment.ID
5805
+ AND post_meta.meta_key = '_tutor_course_id_for_assignments'
5806
+ WHERE post_type = %s
5807
+ AND post_meta.meta_value = %d
5808
+ ORDER BY ID DESC;
5809
+ ",
5810
+ $assignment_post_type,
5811
+ $course_id
5812
+ ) );
5813
+
5814
+ return (object) array( 'count' => $count, 'results' => $query );
5815
  }
5816
 
5817
  /**
5821
  *
5822
  * @since v.1.3.4
5823
  */
5824
+ public function is_script_debug() {
5825
  return ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG );
5826
  }
5827
 
5830
  *
5831
  * @since v.1.4.0
5832
  */
5833
+ public function has_lesson_edit_access( $lesson_id = 0, $instructor_id = 0 ) {
5834
+ $lesson_id = $this->get_post_id( $lesson_id );
5835
+ $instructor_id = $this->get_user_id( $instructor_id );
5836
 
5837
+ if ( user_can( $instructor_id, tutor()->instructor_role ) ) {
 
 
 
 
5838
  $permitted_course_ids = tutils()->get_assigned_courses_ids_by_instructors();
5839
+ $course_id = tutils()->get_course_id_by_lesson( $lesson_id );
5840
 
5841
+ if ( in_array( $course_id, $permitted_course_ids ) ) {
5842
  return true;
5843
  }
5844
  }
5851
  * Get total Enrolments
5852
  * @since v.1.4.0
5853
  */
5854
+ public function get_total_enrolments( $search_term = '' ) {
 
5855
  global $wpdb;
5856
 
5857
+ $search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
5858
+
5859
+ $count = $wpdb->get_var( $wpdb->prepare(
5860
+ "SELECT COUNT(enrol.ID)
5861
+ FROM {$wpdb->posts} enrol
5862
+ INNER JOIN {$wpdb->posts} course
5863
+ ON enrol.post_parent = course.ID
5864
+ INNER JOIN {$wpdb->users} student
5865
+ ON enrol.post_author = student.ID
5866
+ WHERE enrol.post_type = %s
5867
+ AND ( enrol.ID LIKE %s OR student.display_name LIKE %s OR student.user_email LIKE %s OR course.post_title LIKE %s );
5868
+ ",
5869
+ 'tutor_enrolled',
5870
+ $search_term,
5871
+ $search_term,
5872
+ $search_term,
5873
+ $search_term
5874
+ ) );
5875
 
 
 
 
 
 
5876
  return (int) $count;
5877
  }
5878
 
5879
+ public function get_enrolments( $start = 0, $limit = 10, $search_term = '' ) {
5880
  global $wpdb;
5881
 
5882
+ $search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
 
 
 
5883
 
5884
+ $enrolments = $wpdb->get_results( $wpdb->prepare(
5885
+ "SELECT enrol.ID AS enrol_id,
5886
+ enrol.post_author AS student_id,
5887
+ enrol.post_date AS enrol_date,
5888
+ enrol.post_title AS enrol_title,
5889
+ enrol.post_status AS status,
5890
+ enrol.post_parent AS course_id,
5891
+ course.post_title AS course_title,
5892
+ student.user_nicename,
5893
+ student.user_email,
5894
+ student.display_name
5895
+ FROM {$wpdb->posts} enrol
5896
+ INNER JOIN {$wpdb->posts} course
5897
+ ON enrol.post_parent = course.ID
5898
+ INNER JOIN {$wpdb->users} student
5899
+ ON enrol.post_author = student.ID
5900
+ WHERE enrol.post_type = %s
5901
+ AND ( enrol.ID LIKE %s OR student.display_name LIKE %s OR student.user_email LIKE %s OR course.post_title LIKE %s )
 
 
5902
  ORDER BY enrol_id DESC
5903
+ LIMIT %d, %d;
5904
+ ",
5905
+ 'tutor_enrolled',
5906
+ $search_term,
5907
+ $search_term,
5908
+ $search_term,
5909
+ $search_term,
5910
+ $start,
5911
+ $limit
5912
+ ) );
5913
 
5914
  return $enrolments;
5915
  }
5921
  *
5922
  * @since v.1.4.0
5923
  */
5924
+ public function get_current_url( $post_id = 0 ) {
5925
+ $page_id = $this->get_post_id( $post_id );
5926
 
5927
+ if ( $page_id ) {
5928
+ return get_the_permalink( $page_id );
5929
+ } else {
 
 
 
5930
  global $wp;
5931
  $current_url = home_url( $wp->request );
 
5932
  return $current_url;
5933
  }
5934
  }
5935
 
 
5936
  /**
5937
  * @param int $rating_id
5938
  *
5943
  * @since v.1.4.0
5944
  */
5945
 
5946
+ public function get_rating_by_id( $rating_id = 0 ) {
5947
+ global $wpdb;
5948
+
5949
  $ratings = array(
5950
+ 'rating' => 0,
5951
+ 'review' => '',
5952
  );
5953
 
5954
+ $rating = $wpdb->get_row( $wpdb->prepare(
5955
+ "SELECT meta_value AS rating,
5956
+ comment_content AS review
5957
+ FROM {$wpdb->comments}
5958
+ INNER JOIN {$wpdb->commentmeta}
5959
+ ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
5960
+ WHERE {$wpdb->comments}.comment_ID = %d;
5961
+ ",
5962
+ $rating_id
5963
+ ) );
5964
 
5965
+ if ( $rating ) {
5966
+ $rating_format = number_format( $rating->rating, 2 );
5967
 
5968
  $ratings = array(
5969
  'rating' => $rating_format,
5982
  *
5983
  * Get course settings by course ID
5984
  */
5985
+ public function get_course_settings( $course_id = 0, $key = null, $default = false ) {
5986
+ $course_id = $this->get_post_id( $course_id );
5987
+ $settings_meta = get_post_meta( $course_id, '_tutor_course_settings', true );
5988
+ $settings = (array) maybe_unserialize( $settings_meta );
5989
 
5990
+ return $this->array_get( $key, $settings, $default );
5991
  }
5992
 
5993
  /**
6001
  *
6002
  * @since v.1.4.0
6003
  */
6004
+ public function get_item_content_drip_settings( $lesson_id = 0, $key = null, $default = false ) {
6005
+ $lesson_id = $this->get_post_id( $lesson_id );
6006
+ $settings_meta = get_post_meta( $lesson_id, '_content_drip_settings', true );
6007
+ $settings = (array) maybe_unserialize( $settings_meta );
6008
 
6009
+ return $this->array_get( $key, $settings, $default );
6010
  }
6011
 
 
6012
  /**
6013
  * @param null $post
6014
  *
6016
  *
6017
  * Get previous ID
6018
  */
6019
+ public function get_course_previous_content_id( $post = null ) {
6020
+ $current_item = get_post( $post );
6021
+ $course_id = $this->get_course_id_by_content( $current_item );
6022
+ $topics = tutor_utils()->get_topics( $course_id );
 
6023
 
6024
  $contents = array();
6025
+ if ( $topics->have_posts() ) {
6026
  while ( $topics->have_posts() ) {
6027
  $topics->the_post();
6028
  $topic_id = get_the_ID();
6029
+ $lessons = tutor_utils()->get_course_contents_by_topic( $topic_id, -1 );
6030
+ if ( $lessons->have_posts() ) {
6031
  while ( $lessons->have_posts() ) {
6032
  $lessons->the_post();
6033
  global $post;
6038
  }
6039
  }
6040
 
6041
+ if ( tutils()->count( $contents) ) {
6042
+ foreach ( $contents as $key => $content ) {
6043
+ if ( $current_item->ID == $content->ID ) {
6044
+ if ( ! empty( $contents[ $key-1 ]->ID ) ) {
6045
+ return $contents[ $key-1 ]->ID;
6046
  }
6047
  }
6048
  }
6058
  *
6059
  * Get Course iD by any course content
6060
  */
6061
+ public function get_course_id_by_content( $post = null ) {
6062
  global $wpdb;
6063
+ $post = get_post( $post );
6064
+
6065
+ $course_id = $wpdb->get_var( $wpdb->prepare(
6066
+ "SELECT post_parent
6067
+ FROM {$wpdb->posts}
6068
+ WHERE ID = %d
6069
+ AND post_type = %s
6070
+ ",
6071
+ $post->post_parent,
6072
+ 'topics'
6073
+ ) );
6074
 
6075
  return (int) $course_id;
6076
  }
6084
  *
6085
  * @since v.1.4.1
6086
  */
6087
+ public function get_course_contents_by_id( $course_id = 0 ) {
6088
  global $wpdb;
6089
 
6090
+ $course_id = $this->get_post_id( $course_id );
6091
+
6092
+ $contents = $wpdb->get_results( $wpdb->prepare(
6093
+ "SELECT items.*
6094
+ FROM {$wpdb->posts} topic
6095
+ INNER JOIN {$wpdb->posts} items
6096
+ ON topic.ID = items.post_parent
6097
+ WHERE topic.post_parent = %d
6098
+ AND items.post_status = %s
6099
+ ORDER BY topic.menu_order ASC,
6100
+ items.menu_order ASC;
6101
+ ",
6102
+ $course_id,
6103
+ 'publish'
6104
+ ) );
6105
 
6106
  return $contents;
6107
  }
6115
  *
6116
  * @since v.1.4.2
6117
  */
6118
+ public function get_gradebooks() {
6119
  global $wpdb;
6120
  $results = $wpdb->get_results("SELECT * FROM {$wpdb->tutor_gradebooks} ORDER BY grade_point DESC ");
6121
  return $results;
6132
  *
6133
  * @since v.1.4.2
6134
  */
6135
+ public function get_quiz_attempt( $quiz_id = 0, $user_id = 0 ) {
6136
  global $wpdb;
6137
 
6138
+ $quiz_id = $this->get_post_id( $quiz_id );
6139
+ $user_id = $this->get_user_id( $user_id );
6140
 
6141
  $attempt = false;
6142
 
6143
+ $quiz_grade_method = get_tutor_option( 'quiz_grade_method', 'highest_grade' );
6144
+ $from_string = "FROM {$wpdb->tutor_quiz_attempts} WHERE quiz_id = %d AND user_id = %d AND attempt_status != 'attempt_started' ";
 
6145
 
6146
+ if ( $quiz_grade_method === 'highest_grade') {
 
 
6147
 
6148
+ $attempt = $wpdb->get_row( $wpdb->prepare( "SELECT * {$from_string} ORDER BY earned_marks DESC LIMIT 1; ", $quiz_id, $user_id ) );
6149
 
6150
+ } elseif ($quiz_grade_method === 'average_grade' ) {
 
 
 
 
6151
 
6152
+ $attempt = $wpdb->get_row( $wpdb->prepare(
6153
+ "SELECT {$wpdb->tutor_quiz_attempts}.*,
6154
+ COUNT(attempt_id) AS attempt_count,
6155
+ AVG(total_marks) AS total_marks,
6156
+ AVG(earned_marks) AS earned_marks {$from_string}
6157
+ ",
6158
+ $quiz_id,
6159
+ $user_id
6160
+ ) );
6161
 
6162
+ } elseif ( $quiz_grade_method === 'first_attempt' ) {
 
 
6163
 
6164
+ $attempt = $wpdb->get_row( $wpdb->prepare( "SELECT * {$from_string} ORDER BY attempt_id ASC LIMIT 1; ", $quiz_id, $user_id ) );
6165
 
6166
+ } elseif ( $quiz_grade_method === 'last_attempt' ) {
 
 
6167
 
6168
+ $attempt = $wpdb->get_row( $wpdb->prepare( "SELECT * {$from_string} ORDER BY attempt_id DESC LIMIT 1; ", $quiz_id, $user_id ) );
6169
  }
6170
 
6171
  return $attempt;
6181
  *
6182
  * @since v.1.4.2
6183
  */
6184
+ public function course_progress_status_context( $course_id = 0, $user_id = 0 ) {
6185
+ $course_id = $this->get_post_id( $course_id );
6186
+ $user_id = $this->get_user_id( $user_id );
6187
+ $is_completed = tutils()->is_completed_course( $course_id, $user_id );
6188
 
 
6189
  $html = '';
6190
+ if ( $is_completed ) {
6191
  $html = '<span class="course-completion-status course-completed"><i class="tutor-icon-mark"></i> '.__('Completed', 'tutor').' </span>';
6192
+ } else {
6193
+ $is_in_progress = tutor_utils()->get_completed_lesson_count_by_course( $course_id, $user_id );
6194
+ if ( $is_in_progress ) {
6195
  $html = '<span class="course-completion-status course-inprogress"><i class="tutor-icon-refresh-button-1"></i> '.__('In Progress', 'tutor').' </span>';
6196
+ } else {
6197
  $html = '<span class="course-completion-status course-not-taken"><i class="tutor-icon-spinner"></i> '.__('Not Taken', 'tutor').' </span>';
6198
  }
6199
  }
6227
  *
6228
  * @since v.1.4.3
6229
  */
6230
+ public function tutor_pages() {
6231
+ $pages = apply_filters( 'tutor_pages', array(
6232
+ 'tutor_dashboard_page_id' => __( 'Dashboard Page', 'tutor' ),
6233
+ 'instructor_register_page' => __( 'Instructor Registration Page', 'tutor' ),
6234
+ 'student_register_page' => __( 'Student Registration Page', 'tutor' ),
6235
  ));
6236
 
6237
  $new_pages = array();
6238
+ foreach ( $pages as $key => $page ) {
6239
+ $page_id = (int) get_tutor_option( $key );
6240
 
6241
  $wp_page_name = '';
6242
+ $wp_page = get_post( $page_id );
6243
+ $page_exists = (bool) $wp_page;
6244
  $page_visible = false;
6245
 
6246
+ if ( $wp_page ) {
6247
  $wp_page_name = $wp_page->post_title;
6248
  $page_visible = $wp_page->post_status === 'publish';
6249
  }
6256
  'page_exists' => $page_exists,
6257
  'page_visible' => $page_visible,
6258
  );
 
6259
  }
6260
 
6261
  return $new_pages;
6270
  *
6271
  * @since v.1.4.9
6272
  */
6273
+ public function get_course_prev_next_contents_by_id( $content_id = 0 ) {
6274
 
6275
+ $course_id = $this->get_course_id_by_content($content_id);
6276
  $course_contents = $this->get_course_contents_by_id($course_id);
6277
+ $previous_id = 0;
6278
+ $next_id = 0;
6279
+
6280
+ if ( $this->count( $course_contents ) ) {
6281
+ $ids = wp_list_pluck( $course_contents, 'ID' );
6282
 
6283
  $i=0;
6284
+ foreach ( $ids as $key => $id ) {
6285
  $previous_i = $key - 1;
6286
+ $next_i = $key + 1;
6287
 
6288
+ if ( $id == $content_id ) {
6289
+ if ( isset( $ids[ $previous_i ] ) ) {
6290
+ $previous_id = $ids[ $previous_i ];
6291
  }
6292
+ if ( isset( $ids[ $next_i ] ) ) {
6293
+ $next_id = $ids[ $next_i ];
6294
  }
6295
  }
6296
  $i++;
6297
  }
6298
  }
6299
 
6300
+ return (object) [ 'previous_id' => $previous_id, 'next_id' => $next_id ];
6301
  }
6302
 
 
6303
  /**
6304
  * Get a subset of the items from the given array.
6305
  *
6310
  *
6311
  * @since v.1.5.2
6312
  */
6313
+ public function array_only( $array = array(), $keys = null ) {
6314
+ if ( ! $this->count( $array ) || ! $keys ) {
 
6315
  return false;
6316
  }
6317
 
6318
+ return array_intersect_key( $array, array_flip( (array) $keys ) );
6319
  }
6320
 
 
6321
  /**
6322
  * @param int $instructor_id
6323
  * @param int $course_id
6328
  *
6329
  * @since v.1.6.4
6330
  */
6331
+ public function is_instructor_of_this_course( $instructor_id=0, $course_id=0 ) {
6332
  global $wpdb;
6333
 
6334
+ $instructor_id = $this->get_user_id( $instructor_id );
6335
+ $course_id = $this->get_post_id( $course_id );
6336
 
6337
+ if ( ! $instructor_id || ! $course_id ) {
6338
  return false;
6339
  }
6340
 
6341
+ $instructor = $wpdb->get_col( $wpdb->prepare(
6342
  "SELECT umeta_id
6343
  FROM {$wpdb->usermeta}
6344
  WHERE user_id = %d
6345
  AND meta_key = '_tutor_instructor_course_id'
6346
+ AND meta_value = %d
6347
+ ",
6348
+ $instructor_id,
6349
+ $course_id
6350
+ ) );
6351
 
6352
  if (is_array($instructor) && count($instructor)) {
6353
  return $instructor;
6365
  *
6366
  * @since v.1.6.6
6367
  */
6368
+ public function user_profile_completion( $user_id = 0 ) {
6369
+ $user_id = $this->get_user_id( $user_id );
6370
+ $instructor = $this->is_instructor( $user_id );
6371
 
6372
+ $required_fields = apply_filters( 'tutor_profile_required_fields', array(
6373
+ 'first_name' => __( 'First Name', 'tutor' ),
6374
+ 'last_name' => __( 'Last Name', 'tutor' ),
6375
+ '_tutor_profile_photo' => __( 'Profile Photo', 'tutor' ),
6376
+ '_tutor_withdraw_method_data' => __( 'Withdraw Method', 'tutor' ),
6377
  ));
6378
 
6379
+ if ( ! $instructor && array_key_exists( "_tutor_withdraw_method_data", $required_fields ) ) {
6380
+ unset( $required_fields[ '_tutor_withdraw_method_data' ] );
6381
  }
6382
 
6383
  $empty_fields = array();
6384
+ foreach ( $required_fields as $key => $field ) {
6385
+ $value = get_user_meta( $user_id, $key, true );
6386
+ if ( !$value ) {
6387
+ array_push( $empty_fields, $field );
6388
  }
6389
  }
6390
 
6391
+ $total_empty_fields = count( $empty_fields );
6392
+ $total_required_fields = count( $required_fields );
6393
+ $signup_point = apply_filters( 'tutor_profile_completion_signup_point', 50 );
6394
 
6395
+ if ( $total_empty_fields == 0 ) {
6396
  $progress = 100;
6397
  } else {
6398
  $completed_field = $total_required_fields-$total_empty_fields;
6399
  $per_field_point = $signup_point / $total_required_fields;
6400
+ $progress = $signup_point + ceil($per_field_point * $completed_field);
6401
  }
6402
 
6403
  $return = array(
6404
  'empty_fields' => $empty_fields,
6405
+ 'progress' => $progress,
6406
  );
6407
 
6408
  return (object) $return;
6417
  *
6418
  * @since v1.6.9
6419
  */
6420
+ public function get_enrolment_by_enrol_id( $enrol_id = 0 ) {
6421
  global $wpdb;
6422
 
6423
+ $enrolment = $wpdb->get_row( $wpdb->prepare(
6424
  "SELECT enrol.id AS enrol_id,
6425
  enrol.post_author AS student_id,
6426
  enrol.post_date AS enrol_date,
6455
  *
6456
  * Get students email by course id
6457
  */
6458
+ public function get_student_emails_by_course_id( $course_id = 0 ) {
6459
  global $wpdb;
6460
+ $course_id = $this->get_post_id( $course_id );
6461
 
6462
+ $student_emails = $wpdb->get_results( $wpdb->prepare(
6463
+ "SELECT student.user_email
6464
  FROM {$wpdb->posts} enrol
6465
  INNER JOIN {$wpdb->users} student
6466
+ ON enrol.post_author = student.id
6467
+ WHERE enrol.post_type = %s
6468
  AND enrol.post_parent = %d
6469
+ AND enrol.post_status = %s;
6470
+ ",
6471
+ 'tutor_enrolled',
6472
+ $course_id,
6473
+ 'completed'
6474
+ ) );
6475
 
6476
+ $email_array = array_column( $student_emails, 'user_email' );
6477
 
6478
  return $email_array;
6479
  }
6482
  *requie post id & user id
6483
  *return single comment post
6484
  */
6485
+ public function get_single_comment_user_post_id( $post_id,$user_id ) {
6486
  global $wpdb;
6487
+ $table = $wpdb->prefix . "comments";
6488
+ $query = $wpdb->get_row( $wpdb->prepare(
6489
+ "SELECT *
6490
+ FROM $table
6491
+ WHERE comment_post_ID = %d
6492
+ AND user_id = %d
6493
+ LIMIT 1
6494
+ ",
6495
+ $post_id,
6496
+ $user_id
6497
+ ) );
6498
  return $query ? $query : false;
6499
  }
6500
 
6507
  *
6508
  * Check if course is in wc cart
6509
  */
6510
+ public function is_course_added_to_cart( $course_or_product_id = 0, $is_product_id=false ) {
6511
 
6512
+ switch( $this->get_option( 'monetize_by' ) ) {
6513
  case 'wc':
6514
  global $woocommerce;
6515
+ $product_id = $is_product_id ? $course_or_product_id : $this->get_course_product_id( $course_or_product_id );
6516
 
6517
+ if ( $woocommerce->cart ) {
6518
+ foreach ( $woocommerce->cart->get_cart() as $key => $val ) {
6519
+ if ( $product_id == $val['product_id'] ) {
6520
  return true;
6521
  }
6522
  }
6534
  *
6535
  * Get profile pic url
6536
  */
6537
+ public function get_cover_photo_url( $user_id ) {
6538
+ $cover_photo_src = tutor()->url . 'assets/images/cover-photo.jpg';
6539
+ $cover_photo_id = get_user_meta( $user_id, '_tutor_cover_photo', true );
6540
+ if ( $cover_photo_id ) {
6541
+ $url = wp_get_attachment_image_url( $cover_photo_id, 'full' );
6542
+ ! empty( $url ) ? $cover_photo_src = $url : 0;
6543
  }
6544
 
6545
  return $cover_photo_src;
6552
  *
6553
  * Return the course ID by lession, quiz, answer etc.
6554
  */
6555
+ public function get_course_id_by( $content, $object_id ) {
 
6556
  global $wpdb;
6557
  $course_id = null;
6558
 
6559
+ switch ( $content ) {
 
6560
  case 'course' :
6561
  $course_id = $object_id;
6562
  break;
6563
 
6564
  case 'topic' :
6565
  case 'announcement' :
6566
+ $course_id = $wpdb->get_var( $wpdb->prepare(
6567
  "SELECT post_parent
6568
  FROM {$wpdb->posts}
6569
+ WHERE ID=%d
6570
+ LIMIT 1",
6571
+ $object_id ) );
6572
  break;
6573
 
6574
  case 'lesson' :
6575
  case 'quiz' :
6576
  case 'assignment' :
6577
+ $course_id = $wpdb->get_var( $wpdb->prepare(
6578
+ "SELECT post_parent
6579
+ FROM {$wpdb->posts}
6580
+ WHERE ID = (SELECT post_parent FROM {$wpdb->posts} WHERE ID = %d);
6581
+ ",
6582
+ $object_id
6583
+ ) );
6584
  break;
6585
 
6586
  case 'question' :
6587
+ $course_id = $wpdb->get_var( $wpdb->prepare(
6588
  "SELECT topic.post_parent
6589
+ FROM {$wpdb->posts} topic
6590
+ INNER JOIN {$wpdb->posts} quiz
6591
+ ON quiz.post_parent=topic.ID
6592
+ INNER JOIN {$wpdb->prefix}tutor_quiz_questions question
6593
+ ON question.quiz_id=quiz.ID
6594
+ WHERE question.question_id = %d;
6595
+ ",
6596
+ $object_id
6597
+ ) );
6598
  break;
6599
 
6600
  case 'quiz_answer' :
6601
+ $course_id = $wpdb->get_var( $wpdb->prepare(
6602
  "SELECT topic.post_parent
6603
+ FROM {$wpdb->posts} topic
6604
+ INNER JOIN {$wpdb->posts} quiz
6605
+ ON quiz.post_parent=topic.ID
6606
+ INNER JOIN {$wpdb->prefix}tutor_quiz_questions question
6607
+ ON question.quiz_id=quiz.ID
6608
+ INNER JOIN {$wpdb->prefix}tutor_quiz_question_answers answer
6609
+ ON answer.belongs_question_id=question.question_id
6610
+ WHERE answer.answer_id = %d;
6611
+ ",
6612
+ $object_id
6613
+ ) );
6614
  break;
6615
 
6616
  case 'attempt' :
6617
+ $course_id = $wpdb->get_var( $wpdb->prepare(
6618
+ "SELECT course_id
6619
+ FROM {$wpdb->prefix}tutor_quiz_attempts
6620
+ WHERE attempt_id=%d;
6621
+ ",
6622
+ $object_id
6623
+ ) );
6624
  break;
6625
 
6626
  case 'attempt_answer' :
6627
+ $course_id = $wpdb->get_var( $wpdb->prepare(
6628
+ "SELECT course_id
6629
+ FROM {$wpdb->prefix}tutor_quiz_attempts
6630
+ WHERE attempt_id = (SELECT quiz_attempt_id FROM {$wpdb->prefix}tutor_quiz_attempt_answers WHERE attempt_answer_id=%d)
6631
+ ",
6632
+ $object_id
6633
+ ) );
6634
  break;
6635
  case 'review' :
6636
+ $course_id = $wpdb->get_var( $wpdb->prepare(
6637
+ "SELECT comment_post_ID
6638
+ FROM {$wpdb->comments}
6639
+ WHERE comment_ID = %d;
6640
+ ",
6641
+ $object_id
6642
+ ) );
6643
  }
6644
 
6645
  return $course_id;
6646
  }
6647
 
 
6648
  /**
6649
  * @return bool
6650
  *
6652
  *
6653
  * Check if user can create, edit, delete various tutor contents such as lesson, quiz, answer etc.
6654
  */
6655
+ public function can_user_manage( $content, $object_id, $user_id=0, $allow_current_admin=true ) {
6656
 
6657
+ if( $allow_current_admin && current_user_can( 'administrator' ) ) {
6658
  // Admin has access to everything
6659
  return true;
6660
  }
6661
 
6662
+ $course_id = $this->get_course_id_by( $content, $object_id );
6663
 
6664
+ if( $course_id ) {
6665
 
6666
+ $instructors = $this->get_instructors_by_course( $course_id );
6667
+ $instructor_ids = is_array( $instructors ) ? array_map( function($instructor) {
6668
+ return (int)$instructor->ID;
6669
+ }, $instructors) : array();
6670
 
6671
+ $user_id = (int)$this->get_user_id( $user_id );
6672
+ $is_listed = in_array( $user_id, $instructor_ids );
6673
 
6674
  return $is_listed;
6675
  }
6684
  *
6685
  * Check if user has access for content like lesson, quiz, assignment etc.
6686
  */
6687
+ public function has_enrolled_content_access( $content, $object_id=0, $user_id=0 ) {
6688
+ $user_id = $this->get_user_id( $user_id );
6689
+ $object_id = $this->get_post_id( $object_id );
6690
+ $course_id = $this->get_course_id_by( $content, $object_id );
6691
+ $course_content_access = (bool) get_tutor_option( 'course_content_access_for_ia' );
6692
 
6693
  do_action( 'tutor_before_enrolment_check', $course_id, $user_id );
6694
 
6695
+ if ( $this->is_enrolled( $course_id, $user_id ) ) {
6696
  return true;
6697
  }
6698
+ if ( $course_content_access && ( current_user_can( 'administrator' ) || current_user_can( tutor()->instructor_role ) ) ) {
6699
  return true;
6700
  }
6701
  //Check Lesson edit access to support page builders (eg: Oxygen)
6702
+ if ( current_user_can(tutor()->instructor_role) && tutils()->has_lesson_edit_access() ) {
6703
  return true;
6704
  }
6705
 
6706
  return false;
6707
  }
6708
 
 
6709
  /**
6710
  * @return date
6711
  *
6713
  *
6714
  * Return the assignment deadline date based on duration and assignment creation date
6715
  */
6716
+ public function get_assignment_deadline_date( $assignment_id, $format=null, $fallback=null ) {
 
6717
 
6718
+ ! $format ? $format='j F, Y, g:i a' : 0;
6719
 
6720
+ $value = $this->get_assignment_option( $assignment_id, 'time_duration.value' );
6721
+ $time = $this->get_assignment_option( $assignment_id, 'time_duration.time' );
6722
 
6723
+ if ( !$value ) {
6724
  return $fallback;
6725
  }
6726
 
6727
  $publish_date = get_post_field( 'post_date', $assignment_id );
6728
 
6729
  $date = date_create( $publish_date );
6730
+ date_add( $date, date_interval_create_from_date_string( $value . ' ' . $time ) );
6731
+
6732
+ return date_format( $date, $format );
6733
+ }
6734
+
6735
+ /**
6736
+ * @return array
6737
+ *
6738
+ * @since v1.8.2
6739
+ *
6740
+ * Get earning chart data
6741
+ */
6742
+ public function get_earning_chart( $user_id, $start_date, $end_date ) {
6743
+ global $wpdb;
6744
+
6745
+ /**
6746
+ * Format Date Name
6747
+ */
6748
+ $begin = new \DateTime( $start_date );
6749
+ $end = new \DateTime( $end_date );
6750
+ $interval = \DateInterval::createFromDateString( '1 day' );
6751
+ $period = new \DatePeriod( $begin, $interval, $end );
6752
+
6753
+ $datesPeriod = array();
6754
+ foreach ( $period as $dt ) {
6755
+ $datesPeriod[ $dt->format( "Y-m-d" ) ] = 0;
6756
+ }
6757
+
6758
+ // Get statuses
6759
+ $complete_status = tutor_utils()->get_earnings_completed_statuses();
6760
+ $statuses = $complete_status;
6761
+ $complete_status = "'" . implode( "','", $complete_status) . "'";
6762
+
6763
+ $salesQuery = $wpdb->get_results( $wpdb->prepare(
6764
+ "SELECT SUM(instructor_amount) AS total_earning,
6765
+ DATE(created_at) AS date_format
6766
+ FROM {$wpdb->prefix}tutor_earnings
6767
+ WHERE user_id = %d
6768
+ AND order_status IN({$complete_status})
6769
+ AND (created_at BETWEEN %s AND %s)
6770
+ GROUP BY date_format
6771
+ ORDER BY created_at ASC;
6772
+ ",
6773
+ $user_id,
6774
+ $start_date,
6775
+ $end_date
6776
+ ) );
6777
+
6778
+ $total_earning = wp_list_pluck( $salesQuery, 'total_earning' );
6779
+ $queried_date = wp_list_pluck( $salesQuery, 'date_format' );
6780
+ $dateWiseSales = array_combine( $queried_date, $total_earning );
6781
+ $chartData = array_merge( $datesPeriod, $dateWiseSales );
6782
+
6783
+ foreach ( $chartData as $key => $salesCount ) {
6784
+ unset( $chartData[ $key ] );
6785
+ $formatDate = date('d M', strtotime($key));
6786
+ $chartData[ $formatDate ] = $salesCount;
6787
+ }
6788
+
6789
+ $statements = tutor_utils()->get_earning_statements( $user_id, compact('start_date', 'end_date', 'statuses' ) );
6790
+ $earning_sum = tutor_utils()->get_earning_sum( $user_id, compact( 'start_date', 'end_date' ) );
6791
+
6792
+ return array(
6793
+ 'chartData' => $chartData,
6794
+ 'statements' => $statements,
6795
+ 'statuses' => $statuses,
6796
+ 'begin' => $begin,
6797
+ 'end' => $end,
6798
+ 'earning_sum' => $earning_sum,
6799
+ 'datesPeriod' => $datesPeriod
6800
+ );
6801
+ }
6802
+
6803
+ /**
6804
+ * @return array
6805
+ *
6806
+ * @since v1.8.2
6807
+ *
6808
+ * Get earning chart data yearly
6809
+ */
6810
+ public function get_earning_chart_yearly( $user_id, $year ) {
6811
+ global $wpdb;
6812
+
6813
+ $complete_status = tutor_utils()->get_earnings_completed_statuses();
6814
+ $statuses = $complete_status;
6815
+ $complete_status = "'" . implode( "','", $complete_status) . "'";
6816
+
6817
+ $salesQuery = $wpdb->get_results( $wpdb->prepare(
6818
+ "SELECT SUM(instructor_amount) AS total_earning,
6819
+ MONTHNAME(created_at) AS month_name
6820
+ FROM {$wpdb->prefix}tutor_earnings
6821
+ WHERE user_id = %d
6822
+ AND order_status IN({$complete_status})
6823
+ AND YEAR(created_at) = %s
6824
+ GROUP BY MONTH (created_at)
6825
+ ORDER BY MONTH(created_at) ASC;
6826
+ ",
6827
+ $user_id,
6828
+ $year
6829
+ ) );
6830
+
6831
+ $total_earning = wp_list_pluck( $salesQuery, 'total_earning' );
6832
+ $months = wp_list_pluck( $salesQuery, 'month_name' );
6833
+ $monthWiseSales = array_combine( $months, $total_earning );
6834
+
6835
+ $dataFor = 'yearly';
6836
+
6837
+ /**
6838
+ * Format yearly
6839
+ */
6840
+ $emptyMonths = array();
6841
+ for ( $m=1; $m <= 12; $m++ ) {
6842
+ $emptyMonths[ date('F', mktime( 0, 0, 0, $m, 1, date( 'Y' ) ) ) ] = 0;
6843
+ }
6844
+
6845
+ $chartData = array_merge( $emptyMonths, $monthWiseSales );
6846
+ $statements = tutor_utils()->get_earning_statements( $user_id, compact('year', 'dataFor', 'statuses' ) );
6847
+ $earning_sum = tutor_utils()->get_earning_sum( $user_id, compact( 'year', 'dataFor' ) );
6848
 
6849
+ return [
6850
+ 'chartData' => $chartData,
6851
+ 'statements' => $statements,
6852
+ 'earning_sum' => $earning_sum
6853
+ ];
6854
  }
6855
  }
languages/tutor.pot CHANGED
@@ -13,7 +13,7 @@ msgstr ""
13
  "X-Poedit-SourceCharset: UTF-8\n"
14
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
 
16
- #: tutor.php:52, classes/Tutor.php:426
17
  msgid "Tutor Instructor"
18
  msgstr ""
19
 
@@ -117,15 +117,15 @@ msgstr ""
117
  msgid "Tags"
118
  msgstr ""
119
 
120
- #: classes/Admin.php:60, classes/Admin.php:60, classes/Course.php:436, classes/Options.php:557, classes/Quiz_Attempts_List.php:110, templates/student-public-profile.php:103, views/pages/students.php:8
121
  msgid "Students"
122
  msgstr ""
123
 
124
- #: classes/Admin.php:63, classes/Admin.php:63, classes/Course.php:130, classes/Course.php:209, classes/Options.php:518, views/pages/instructors.php:18
125
  msgid "Instructors"
126
  msgstr ""
127
 
128
- #: classes/Admin.php:66, classes/Admin.php:66, classes/Utils.php:1116, classes/Utils.php:2228, templates/dashboard/announcements.php:127, views/pages/announcements.php:104, views/pages/announcements.php:114
129
  msgid "Announcements"
130
  msgstr ""
131
 
@@ -133,7 +133,7 @@ msgstr ""
133
  msgid "Q & A"
134
  msgstr ""
135
 
136
- #: classes/Admin.php:70, classes/Admin.php:70, classes/Utils.php:2231, templates/dashboard/quiz-attempts.php:19, views/pages/quiz_attempts.php:19
137
  msgid "Quiz Attempts"
138
  msgstr ""
139
 
@@ -145,7 +145,7 @@ msgstr ""
145
  msgid "Add-ons"
146
  msgstr ""
147
 
148
- #: classes/Admin.php:80, classes/Admin.php:80, classes/Admin.php:442, classes/Utils.php:2244, templates/dashboard/settings.php:8, views/modal/add_quiz.php:21, views/modal/edit_quiz.php:31, templates/dashboard/notifications/profile-completion.php:14, templates/dashboard/settings/education.php:7, templates/dashboard/settings/skill.php:8
149
  msgid "Settings"
150
  msgstr ""
151
 
@@ -165,7 +165,7 @@ msgstr ""
165
  msgid "Tutor Pages"
166
  msgstr ""
167
 
168
- #: classes/Admin.php:139, classes/Instructors_List.php:116, templates/dashboard/dashboard.php:84, templates/dashboard/purchase_history.php:23, templates/dashboard/withdraw.php:174, views/pages/view_attempt.php:59, views/pages/tools/tutor_pages.php:13
169
  msgid "Status"
170
  msgstr ""
171
 
@@ -189,7 +189,7 @@ msgstr ""
189
  msgid "If you like %1$s please leave us a %2$s rating. A huge thanks in advance!"
190
  msgstr ""
191
 
192
- #: classes/Ajax.php:62, classes/Ajax.php:112, classes/Ajax.php:176, classes/Ajax.php:234, classes/Ajax.php:287, classes/Ajax.php:329, classes/Ajax.php:350, classes/Ajax.php:448, classes/Ajax.php:524, classes/Course.php:376, classes/Course.php:411, classes/Course.php:617, classes/Course.php:668, classes/Course.php:705, classes/Course.php:718, classes/Instructor.php:244, classes/Lesson.php:110, classes/Lesson.php:149, classes/Lesson.php:211, classes/Quiz.php:130, classes/Quiz.php:441, classes/Quiz.php:478, classes/Quiz.php:568, classes/Quiz.php:614, classes/Quiz.php:658, classes/Quiz.php:697, classes/Quiz.php:720, classes/Quiz.php:816, classes/Quiz.php:839, classes/Quiz.php:860, classes/Quiz.php:971, classes/Quiz.php:1016, classes/Quiz.php:1094, classes/Quiz.php:1154, classes/Quiz.php:1176, classes/Q_and_A.php:71, templates/dashboard/registration.php:11
193
  msgid "Access Denied"
194
  msgstr ""
195
 
@@ -273,67 +273,67 @@ msgstr ""
273
  msgid "Assignment answer can not be empty"
274
  msgstr ""
275
 
276
- #: classes/Course.php:126, classes/Course.php:208
277
  msgid "Course Builder"
278
  msgstr ""
279
 
280
- #: classes/Course.php:127, classes/Course.php:210
281
  msgid "Additional Data"
282
  msgstr ""
283
 
284
- #: classes/Course.php:128, classes/Course.php:207
285
  msgid "Video"
286
  msgstr ""
287
 
288
- #: classes/Course.php:137, classes/Course.php:1262, views/options/options_generator.php:2
289
  msgid "Tutor Settings"
290
  msgstr ""
291
 
292
- #: classes/Course.php:421
293
  msgid "Topic has been updated"
294
  msgstr ""
295
 
296
- #: classes/Course.php:435, classes/Options.php:423, classes/Post_types.php:172
297
  msgid "Lessons"
298
  msgstr ""
299
 
300
- #: classes/Course.php:437, templates/course-filter/filters.php:73, templates/dashboard/earning/statement.php:30
301
  msgid "Price"
302
  msgstr ""
303
 
304
- #: classes/Course.php:517
305
  msgid "Please Sign In first"
306
  msgstr ""
307
 
308
- #: classes/Course.php:565, classes/Lesson.php:303
309
  msgid "Please Sign-In"
310
  msgstr ""
311
 
312
- #: classes/Course.php:650
313
  msgid "<p>No instructor available or you have already added maximum instructors</p>"
314
  msgstr ""
315
 
316
- #: classes/Course.php:655
317
  msgid "To add unlimited multiple instructors in your course, get %sTutor LMS Pro%s"
318
  msgstr ""
319
 
320
- #: classes/Course.php:1097
321
  msgid "complete all lessons to mark this course as complete"
322
  msgstr ""
323
 
324
- #: classes/Course.php:1134
325
  msgid "You have to pass %s quizzes to complete this course."
326
  msgstr ""
327
 
328
- #: classes/Course.php:1241
329
  msgid "Make This Course Public"
330
  msgstr ""
331
 
332
- #: classes/Course.php:1243
333
  msgid "No enrollment required."
334
  msgstr ""
335
 
336
- #: classes/Course.php:1251
337
  msgid "Disable Q&A"
338
  msgstr ""
339
 
@@ -433,7 +433,7 @@ msgstr ""
433
  msgid "Check and place necessary information here."
434
  msgstr ""
435
 
436
- #: classes/Email.php:32, classes/Instructors_List.php:112, classes/Students_List.php:77
437
  msgid "Name"
438
  msgstr ""
439
 
@@ -577,7 +577,7 @@ msgstr ""
577
  msgid "Remove as Instructor"
578
  msgstr ""
579
 
580
- #: classes/Instructors_List.php:113, classes/Students_List.php:78, templates/dashboard/registration.php:73, templates/dashboard/registration.php:76, views/pages/add_new_instructor.php:69, views/pages/add_new_instructor.php:75, templates/dashboard/instructor/registration.php:67, templates/dashboard/instructor/registration.php:70
581
  msgid "E-Mail"
582
  msgstr ""
583
 
@@ -661,7 +661,7 @@ msgstr ""
661
  msgid "Price Type"
662
  msgstr ""
663
 
664
- #: classes/Options.php:102, classes/Utils.php:5520
665
  msgid "Dashboard Page"
666
  msgstr ""
667
 
@@ -1169,7 +1169,7 @@ msgstr ""
1169
  msgid "Allow multiple instructors to upload their courses."
1170
  msgstr ""
1171
 
1172
- #: classes/Options.php:533, classes/Utils.php:5521
1173
  msgid "Instructor Registration Page"
1174
  msgstr ""
1175
 
@@ -1197,7 +1197,7 @@ msgstr ""
1197
  msgid "Student Profile settings"
1198
  msgstr ""
1199
 
1200
- #: classes/Options.php:565, classes/Utils.php:5522
1201
  msgid "Student Registration Page"
1202
  msgstr ""
1203
 
@@ -1221,7 +1221,7 @@ msgstr ""
1221
  msgid "Completed courses will be shown on student profiles. <br/> For example, you can see this link-"
1222
  msgstr ""
1223
 
1224
- #: classes/Options.php:589, classes/Options.php:597, classes/Tutor_Setup.php:484, templates/dashboard/earning.php:162, templates/dashboard/earning/chart-body.php:17, templates/dashboard/earning/statement.php:14, templates/dashboard/earning/statements.php:135
1225
  msgid "Earning"
1226
  msgstr ""
1227
 
@@ -1770,7 +1770,7 @@ msgstr ""
1770
  msgid "Preview course"
1771
  msgstr ""
1772
 
1773
- #: classes/Question_Answers_List.php:70, classes/Quiz.php:729, templates/dashboard/question-answer.php:25, views/pages/view_attempt.php:192, templates/dashboard/my-quiz-attempts/attempts-details.php:210, templates/dashboard/quiz-attempts/quiz-reviews.php:227
1774
  msgid "Question"
1775
  msgstr ""
1776
 
@@ -1778,47 +1778,47 @@ msgstr ""
1778
  msgid "Student"
1779
  msgstr ""
1780
 
1781
- #: classes/Question_Answers_List.php:73, classes/Quiz.php:1042, templates/dashboard/question-answer.php:28, views/modal/question_form.php:150, views/pages/answer.php:11, templates/dashboard/question-answer/answers.php:13
1782
  msgid "Answer"
1783
  msgstr ""
1784
 
1785
- #: classes/Quiz.php:460
1786
  msgid "Quiz has been timeout already"
1787
  msgstr ""
1788
 
1789
- #: classes/Quiz.php:593, classes/Quiz.php:676, views/metabox/course-contents.php:98, views/metabox/course-contents.php:190
1790
  msgid "QUIZ"
1791
  msgstr ""
1792
 
1793
- #: classes/Quiz.php:799
1794
  msgid "Please make sure you have added more than one option and saved them"
1795
  msgstr ""
1796
 
1797
- #: classes/Quiz.php:795
1798
  msgid "Please select the correct answer"
1799
  msgstr ""
1800
 
1801
- #: classes/Quiz.php:908, views/modal/question_answer_form.php:21
1802
  msgid "True"
1803
  msgstr ""
1804
 
1805
- #: classes/Quiz.php:915, views/modal/question_answer_form.php:25
1806
  msgid "False"
1807
  msgstr ""
1808
 
1809
- #: classes/Quiz.php:1026
1810
  msgid "Answer options &amp; mark correct"
1811
  msgstr ""
1812
 
1813
- #: classes/Quiz.php:1029
1814
  msgid "Make sure you’re saving the answers in the right order. Students will have to match this order exactly."
1815
  msgstr ""
1816
 
1817
- #: classes/Quiz.php:1064, classes/Quiz.php:1058, views/modal/question_form.php:174, views/modal/question_form.php:167, views/pages/view_attempt.php:342, templates/dashboard/quiz-attempts/quiz-reviews.php:394
1818
  msgid "Mark as correct"
1819
  msgstr ""
1820
 
1821
- #: classes/Quiz.php:1202
1822
  msgid "Access Denied."
1823
  msgstr ""
1824
 
@@ -1870,7 +1870,7 @@ msgstr ""
1870
  msgid "Password set successfully"
1871
  msgstr ""
1872
 
1873
- #: classes/Students_List.php:79, templates/dashboard/enrolled-courses/completed-courses.php:9
1874
  msgid "Completed Course"
1875
  msgstr ""
1876
 
@@ -1902,15 +1902,15 @@ msgstr ""
1902
  msgid "Setup Wizard"
1903
  msgstr ""
1904
 
1905
- #: classes/Tutor.php:521, classes/Utils.php:2215, templates/dashboard/dashboard.php:9
1906
  msgid "Dashboard"
1907
  msgstr ""
1908
 
1909
- #: classes/Tutor.php:530
1910
  msgid "Student Registration"
1911
  msgstr ""
1912
 
1913
- #: classes/Tutor.php:539
1914
  msgid "Instructor Registration"
1915
  msgstr ""
1916
 
@@ -1974,7 +1974,7 @@ msgstr ""
1974
  msgid "ON"
1975
  msgstr ""
1976
 
1977
- #: classes/Tutor_Setup.php:268, classes/Tutor_Setup.php:557, classes/Utils.php:2225
1978
  msgid "Instructor"
1979
  msgstr ""
1980
 
@@ -2278,195 +2278,195 @@ msgstr ""
2278
  msgid "Tutor &rsaquo; Setup Wizard"
2279
  msgstr ""
2280
 
2281
- #: classes/Utils.php:829
2282
  msgid "Nonce not matched"
2283
  msgstr ""
2284
 
2285
- #: classes/Utils.php:1115
2286
  msgid "Q&A"
2287
  msgstr ""
2288
 
2289
- #: classes/Utils.php:1937, templates/student-public-profile.php:116
2290
  msgid "Course Enrolled"
2291
  msgstr ""
2292
 
2293
- #: classes/Utils.php:2216, templates/dashboard/my-profile.php:21
2294
  msgid "My Profile"
2295
  msgstr ""
2296
 
2297
- #: classes/Utils.php:2217, templates/dashboard/dashboard.php:30, templates/dashboard/enrolled-courses.php:9
2298
  msgid "Enrolled Courses"
2299
  msgstr ""
2300
 
2301
- #: classes/Utils.php:2218, templates/dashboard/wishlist.php:10
2302
  msgid "Wishlist"
2303
  msgstr ""
2304
 
2305
- #: classes/Utils.php:2219
2306
  msgid "Reviews"
2307
  msgstr ""
2308
 
2309
- #: classes/Utils.php:2220, templates/dashboard/my-quiz-attempts.php:19
2310
  msgid "My Quiz Attempts"
2311
  msgstr ""
2312
 
2313
- #: classes/Utils.php:2221, templates/dashboard/purchase_history.php:9
2314
  msgid "Purchase History"
2315
  msgstr ""
2316
 
2317
- #: classes/Utils.php:2226
2318
  msgid "Create Course"
2319
  msgstr ""
2320
 
2321
- #: classes/Utils.php:2227, templates/dashboard/my-courses.php:9
2322
  msgid "My Courses"
2323
  msgstr ""
2324
 
2325
- #: classes/Utils.php:2229, templates/dashboard/earning.php:74, templates/dashboard/earning.php:82
2326
  msgid "Earnings"
2327
  msgstr ""
2328
 
2329
- #: classes/Utils.php:2230
2330
  msgid "Withdrawals"
2331
  msgstr ""
2332
 
2333
- #: classes/Utils.php:2232, templates/dashboard/question-answer.php:10, views/pages/question_answer.php:18
2334
  msgid "Question & Answer"
2335
  msgstr ""
2336
 
2337
- #: classes/Utils.php:2245
2338
  msgid "Logout"
2339
  msgstr ""
2340
 
2341
- #: classes/Utils.php:2256
2342
  msgid "Retrieve Password"
2343
  msgstr ""
2344
 
2345
- #: classes/Utils.php:2359
2346
  msgid "Pending"
2347
  msgstr ""
2348
 
2349
- #: classes/Utils.php:2360
2350
  msgid "Approved"
2351
  msgstr ""
2352
 
2353
- #: classes/Utils.php:2361
2354
  msgid "Blocked"
2355
  msgstr ""
2356
 
2357
- #: classes/Utils.php:3444
2358
  msgid "True/False"
2359
  msgstr ""
2360
 
2361
- #: classes/Utils.php:3445
2362
  msgid "Single Choice"
2363
  msgstr ""
2364
 
2365
- #: classes/Utils.php:3446
2366
  msgid "Multiple Choice"
2367
  msgstr ""
2368
 
2369
- #: classes/Utils.php:3447
2370
  msgid "Open Ended/Essay"
2371
  msgstr ""
2372
 
2373
- #: classes/Utils.php:3448
2374
  msgid "Fill In The Blanks"
2375
  msgstr ""
2376
 
2377
- #: classes/Utils.php:3449
2378
  msgid "Short Answer"
2379
  msgstr ""
2380
 
2381
- #: classes/Utils.php:3450
2382
  msgid "Matching"
2383
  msgstr ""
2384
 
2385
- #: classes/Utils.php:3451
2386
  msgid "Image Matching"
2387
  msgstr ""
2388
 
2389
- #: classes/Utils.php:3452
2390
  msgid "Image Answering"
2391
  msgstr ""
2392
 
2393
- #: classes/Utils.php:3453
2394
  msgid "Ordering"
2395
  msgstr ""
2396
 
2397
- #: classes/Utils.php:4047
2398
  msgid "All Levels"
2399
  msgstr ""
2400
 
2401
- #: classes/Utils.php:4048, templates/course-filter/filters.php:4
2402
  msgid "Beginner"
2403
  msgstr ""
2404
 
2405
- #: classes/Utils.php:4049, templates/course-filter/filters.php:5
2406
  msgid "Intermediate"
2407
  msgstr ""
2408
 
2409
- #: classes/Utils.php:4050, templates/course-filter/filters.php:6
2410
  msgid "Expert"
2411
  msgstr ""
2412
 
2413
- #: classes/Utils.php:4073
2414
  msgid "Courses Taken"
2415
  msgstr ""
2416
 
2417
- #: classes/Utils.php:4080
2418
  msgid "Enrolled Course"
2419
  msgstr ""
2420
 
2421
- #: classes/Utils.php:4083
2422
  msgid "Reviews Written"
2423
  msgstr ""
2424
 
2425
- #: classes/Utils.php:4326
2426
  msgid "Website URL"
2427
  msgstr ""
2428
 
2429
- #: classes/Utils.php:4331
2430
  msgid "Github URL"
2431
  msgstr ""
2432
 
2433
- #: classes/Utils.php:4336
2434
  msgid "Facebook URL"
2435
  msgstr ""
2436
 
2437
- #: classes/Utils.php:4341
2438
  msgid "Twitter URL"
2439
  msgstr ""
2440
 
2441
- #: classes/Utils.php:4346
2442
  msgid "Linkedin URL"
2443
  msgstr ""
2444
 
2445
- #: classes/Utils.php:5485
2446
  msgid "Not Taken"
2447
  msgstr ""
2448
 
2449
- #: classes/Utils.php:5483
2450
  msgid "In Progress"
2451
  msgstr ""
2452
 
2453
- #: classes/Utils.php:5479
2454
  msgid "Completed"
2455
  msgstr ""
2456
 
2457
- #: classes/Utils.php:5660, templates/dashboard/my-profile.php:34, templates/dashboard/registration.php:40, templates/dashboard/registration.php:43, views/pages/add_new_instructor.php:29, views/pages/add_new_instructor.php:35, templates/dashboard/instructor/registration.php:32, templates/dashboard/instructor/registration.php:35, templates/dashboard/settings/profile.php:95, templates/dashboard/settings/profile.php:97
2458
  msgid "First Name"
2459
  msgstr ""
2460
 
2461
- #: classes/Utils.php:5661, templates/dashboard/my-profile.php:42, templates/dashboard/registration.php:50, templates/dashboard/registration.php:53, views/pages/add_new_instructor.php:43, views/pages/add_new_instructor.php:49, templates/dashboard/instructor/registration.php:42, templates/dashboard/instructor/registration.php:45, templates/dashboard/settings/profile.php:104, templates/dashboard/settings/profile.php:106
2462
  msgid "Last Name"
2463
  msgstr ""
2464
 
2465
- #: classes/Utils.php:5662
2466
  msgid "Profile Photo"
2467
  msgstr ""
2468
 
2469
- #: classes/Utils.php:5663
2470
  msgid "Withdraw Method"
2471
  msgstr ""
2472
 
@@ -2562,11 +2562,11 @@ msgstr ""
2562
  msgid "Requested By"
2563
  msgstr ""
2564
 
2565
- #: classes/Withdraw_Requests_List.php:103, templates/dashboard/purchase_history.php:22, templates/dashboard/withdraw.php:129, templates/dashboard/withdraw.php:173
2566
  msgid "Amount"
2567
  msgstr ""
2568
 
2569
- #: classes/Withdraw_Requests_List.php:104, templates/dashboard/withdraw.php:171
2570
  msgid "Withdrawal Method"
2571
  msgstr ""
2572
 
@@ -2785,7 +2785,7 @@ msgstr ""
2785
  msgid "Biography"
2786
  msgstr ""
2787
 
2788
- #: templates/course-filter/filters.php:9, templates/dashboard/create-course.php:156, templates/loop/course-continue.php:19, templates/loop/course-in-cart.php:20, templates/loop/course-price-edd.php:20, templates/loop/course-price-woocommerce.php:19, templates/loop/course-price.php:19, views/metabox/course-add-edd-product-metabox.php:59, views/metabox/course-add-product-metabox.php:66, templates/single/course/wc-price-html.php:23
2789
  msgid "Free"
2790
  msgstr ""
2791
 
@@ -2869,11 +2869,11 @@ msgstr ""
2869
  msgid "Preview"
2870
  msgstr ""
2871
 
2872
- #: templates/dashboard/create-course.php:50, templates/dashboard/create-course.php:211
2873
  msgid "Submit for Review"
2874
  msgstr ""
2875
 
2876
- #: templates/dashboard/create-course.php:46, templates/dashboard/create-course.php:209
2877
  msgid "Publish Course"
2878
  msgstr ""
2879
 
@@ -2881,83 +2881,83 @@ msgstr ""
2881
  msgid "Exit"
2882
  msgstr ""
2883
 
2884
- #: templates/dashboard/create-course.php:78
2885
  msgid "Your course has been submitted to the admin. It will be published once it has been reviewed by the admins."
2886
  msgstr ""
2887
 
2888
- #: templates/dashboard/create-course.php:88, templates/dashboard/my-quiz-attempts.php:27, templates/dashboard/quiz-attempts.php:31, templates/dashboard/earning/statements.php:134, templates/single/quiz/previous-attempts.php:16
2889
  msgid "Course Info"
2890
  msgstr ""
2891
 
2892
- #: templates/dashboard/create-course.php:94
2893
  msgid "Course Title"
2894
  msgstr ""
2895
 
2896
- #: templates/dashboard/create-course.php:96
2897
  msgid "ex. Learn photoshop CS6 from scratch"
2898
  msgstr ""
2899
 
2900
- #: templates/dashboard/create-course.php:102, views/modal/question_form.php:113, templates/single/assignment/content.php:134, templates/single/course/course-content.php:26
2901
  msgid "Description"
2902
  msgstr ""
2903
 
2904
- #: templates/dashboard/create-course.php:120
2905
  msgid "Choose a category"
2906
  msgstr ""
2907
 
2908
- #: templates/dashboard/create-course.php:140
2909
  msgid "Course Price"
2910
  msgstr ""
2911
 
2912
- #: templates/dashboard/create-course.php:149
2913
  msgid "Set course price"
2914
  msgstr ""
2915
 
2916
- #: templates/dashboard/create-course.php:166
2917
  msgid "Course Thumbnail"
2918
  msgstr ""
2919
 
2920
- #: templates/dashboard/create-course.php:189
2921
  msgid "Important Guideline: %1$s 700x430 pixels %2$s %3$s File Support: %1$s jpg, .jpeg,. gif, or .png %2$s no text on the image."
2922
  msgstr ""
2923
 
2924
- #: templates/dashboard/create-course.php:191, views/metabox/video-metabox.php:106, views/modal/question_answer_edit_form.php:214, views/modal/question_answer_edit_form.php:177, views/modal/question_answer_edit_form.php:124, views/modal/question_answer_edit_form.php:34, views/modal/question_answer_form.php:230, views/modal/question_answer_form.php:201, views/modal/question_answer_form.php:157, views/modal/question_answer_form.php:48
2925
  msgid "Upload Image"
2926
  msgstr ""
2927
 
2928
- #: templates/dashboard/create-course.php:207
2929
  msgid "Save course as draft"
2930
  msgstr ""
2931
 
2932
- #: templates/dashboard/create-course.php:221
2933
  msgid "Course Upload Tips"
2934
  msgstr ""
2935
 
2936
- #: templates/dashboard/create-course.php:223
2937
  msgid "Set the Course Price option or make it free."
2938
  msgstr ""
2939
 
2940
- #: templates/dashboard/create-course.php:224
2941
  msgid "Standard size for the course thumbnail is 700x430."
2942
  msgstr ""
2943
 
2944
- #: templates/dashboard/create-course.php:225
2945
  msgid "Video section controls the course overview video."
2946
  msgstr ""
2947
 
2948
- #: templates/dashboard/create-course.php:226
2949
  msgid "Course Builder is where you create & organize a course."
2950
  msgstr ""
2951
 
2952
- #: templates/dashboard/create-course.php:227
2953
  msgid "Add Topics in the Course Builder section to create lessons, quizzes, and assignments."
2954
  msgstr ""
2955
 
2956
- #: templates/dashboard/create-course.php:228
2957
  msgid "Prerequisites refers to the fundamental courses to complete before taking this particular course."
2958
  msgstr ""
2959
 
2960
- #: templates/dashboard/create-course.php:229
2961
  msgid "Information from the Additional Data section shows up on the course single page."
2962
  msgstr ""
2963
 
@@ -2993,55 +2993,55 @@ msgstr ""
2993
  msgid "Published"
2994
  msgstr ""
2995
 
2996
- #: templates/dashboard/earning.php:20, templates/dashboard/earning/report-date_range.php:27, templates/dashboard/earning/report-last_month.php:26, templates/dashboard/earning/report-last_week.php:31, templates/dashboard/earning/report-last_year.php:27, templates/dashboard/earning/report-this_month.php:27, templates/dashboard/earning/report-this_week.php:28, templates/dashboard/earning/report-this_year.php:28
2997
  msgid "No Earning info available"
2998
  msgstr ""
2999
 
3000
- #: templates/dashboard/earning.php:87
3001
  msgid "Reports"
3002
  msgstr ""
3003
 
3004
- #: templates/dashboard/earning.php:92, templates/dashboard/earning/report.php:36, templates/dashboard/earning/statements.php:32, templates/dashboard/earning/statements.php:116
3005
  msgid "Statements"
3006
  msgstr ""
3007
 
3008
- #: templates/dashboard/earning.php:101
3009
  msgid "My Balance"
3010
  msgstr ""
3011
 
3012
- #: templates/dashboard/earning.php:105
3013
  msgid "All Time"
3014
  msgstr ""
3015
 
3016
- #: templates/dashboard/earning.php:107
3017
  msgid "My Earnings"
3018
  msgstr ""
3019
 
3020
- #: templates/dashboard/earning.php:111, templates/dashboard/earning/report-date_range.php:83, templates/dashboard/earning/report-last_month.php:81, templates/dashboard/earning/report-last_week.php:87, templates/dashboard/earning/report-last_year.php:73, templates/dashboard/earning/report-this_month.php:83, templates/dashboard/earning/report-this_week.php:84, templates/dashboard/earning/report-this_year.php:75
3021
  msgid "Based on course price"
3022
  msgstr ""
3023
 
3024
- #: templates/dashboard/earning.php:113, templates/dashboard/earning/report-date_range.php:85, templates/dashboard/earning/report-last_month.php:83, templates/dashboard/earning/report-last_week.php:89, templates/dashboard/earning/report-last_year.php:75, templates/dashboard/earning/report-this_month.php:85, templates/dashboard/earning/report-this_week.php:86, templates/dashboard/earning/report-this_year.php:77
3025
  msgid "All time sales"
3026
  msgstr ""
3027
 
3028
- #: templates/dashboard/earning.php:117
3029
  msgid "All of withdraw type excluding rejected."
3030
  msgstr ""
3031
 
3032
- #: templates/dashboard/earning.php:119
3033
  msgid "All time withdrawals"
3034
  msgstr ""
3035
 
3036
- #: templates/dashboard/earning.php:125, templates/dashboard/earning/report-date_range.php:91, templates/dashboard/earning/report-last_month.php:89, templates/dashboard/earning/report-last_week.php:95, templates/dashboard/earning/report-last_year.php:81, templates/dashboard/earning/report-this_month.php:91, templates/dashboard/earning/report-this_week.php:92, templates/dashboard/earning/report-this_year.php:83
3037
  msgid "Deducted Commissions"
3038
  msgstr ""
3039
 
3040
- #: templates/dashboard/earning.php:133
3041
  msgid "Deducted Fees."
3042
  msgstr ""
3043
 
3044
- #: templates/dashboard/earning.php:141
3045
  msgid "Earnings Chart for this month"
3046
  msgstr ""
3047
 
@@ -3097,7 +3097,7 @@ msgstr ""
3097
  msgid "You are going to delete this course, it can't be undone"
3098
  msgstr ""
3099
 
3100
- #: templates/dashboard/my-courses.php:109, templates/dashboard/question-answer.php:72, templates/dashboard/withdraw.php:143, views/modal/add_quiz.php:55, views/modal/add_quiz.php:71, views/modal/add_quiz.php:88, views/modal/edit_quiz.php:67, views/modal/edit_quiz.php:129, views/modal/question_form.php:225, views/pages/announcements.php:256, views/pages/announcements.php:344, templates/dashboard/announcements/create.php:58, templates/dashboard/announcements/details.php:29, templates/dashboard/announcements/update.php:59, templates/single/lesson/sidebar_question_and_answer.php:115, templates/single/course/enrolled/question_and_answer.php:52, templates/single/course/enrolled/question_and_answer.php:136
3101
  msgid "Cancel"
3102
  msgstr ""
3103
 
@@ -3281,19 +3281,19 @@ msgstr ""
3281
  msgid "Selected Payment Method"
3282
  msgstr ""
3283
 
3284
- #: templates/dashboard/withdraw.php:144
3285
  msgid "Submit Request"
3286
  msgstr ""
3287
 
3288
- #: templates/dashboard/withdraw.php:162
3289
  msgid "Withdrawal History"
3290
  msgstr ""
3291
 
3292
- #: templates/dashboard/withdraw.php:252
3293
  msgid "No withdrawal yet"
3294
  msgstr ""
3295
 
3296
- #: templates/dashboard/withdraw.php:172
3297
  msgid "Requested On"
3298
  msgstr ""
3299
 
@@ -4167,19 +4167,19 @@ msgstr ""
4167
  msgid "Manual Review"
4168
  msgstr ""
4169
 
4170
- #: views/pages/view_attempt.php:331, views/pages/view_attempt.php:324, templates/dashboard/my-quiz-attempts/attempts-details.php:119, templates/dashboard/my-quiz-attempts/attempts-details.php:373, templates/dashboard/my-quiz-attempts/attempts-details.php:368, templates/dashboard/quiz-attempts/quiz-reviews.php:107, templates/dashboard/quiz-attempts/quiz-reviews.php:387, templates/dashboard/quiz-attempts/quiz-reviews.php:382
4171
  msgid "Incorrect"
4172
  msgstr ""
4173
 
4174
- #: views/pages/view_attempt.php:327, views/pages/view_attempt.php:311, templates/dashboard/my-quiz-attempts/attempts-details.php:118, templates/dashboard/my-quiz-attempts/attempts-details.php:364, templates/dashboard/quiz-attempts/quiz-reviews.php:106, templates/dashboard/quiz-attempts/quiz-reviews.php:378
4175
  msgid "Correct"
4176
  msgstr ""
4177
 
4178
- #: views/pages/view_attempt.php:320, templates/dashboard/my-quiz-attempts/attempts-details.php:370, templates/dashboard/quiz-attempts/quiz-reviews.php:384
4179
  msgid "Review Required"
4180
  msgstr ""
4181
 
4182
- #: views/pages/view_attempt.php:343, templates/dashboard/quiz-attempts/quiz-reviews.php:395
4183
  msgid "Mark as In correct"
4184
  msgstr ""
4185
 
@@ -4299,31 +4299,31 @@ msgstr ""
4299
  msgid "This Week"
4300
  msgstr ""
4301
 
4302
- #: templates/dashboard/earning/report-date_range.php:77, templates/dashboard/earning/report-last_month.php:75, templates/dashboard/earning/report-last_week.php:81, templates/dashboard/earning/report-last_year.php:67, templates/dashboard/earning/report-this_month.php:77, templates/dashboard/earning/report-this_week.php:78, templates/dashboard/earning/report-this_year.php:69
4303
  msgid "All time"
4304
  msgstr ""
4305
 
4306
- #: templates/dashboard/earning/report-date_range.php:79, templates/dashboard/earning/report-last_month.php:77, templates/dashboard/earning/report-last_week.php:83, templates/dashboard/earning/report-last_year.php:69, templates/dashboard/earning/report-this_month.php:79, templates/dashboard/earning/report-this_week.php:80, templates/dashboard/earning/report-this_year.php:71
4307
  msgid "My Earning"
4308
  msgstr ""
4309
 
4310
- #: templates/dashboard/earning/report-date_range.php:98, templates/dashboard/earning/report-date_range.php:100, templates/dashboard/earning/report-last_month.php:96, templates/dashboard/earning/report-last_month.php:98, templates/dashboard/earning/report-last_week.php:102, templates/dashboard/earning/report-last_week.php:104, templates/dashboard/earning/report-last_year.php:88, templates/dashboard/earning/report-last_year.php:90, templates/dashboard/earning/report-this_month.php:98, templates/dashboard/earning/report-this_month.php:100, templates/dashboard/earning/report-this_week.php:99, templates/dashboard/earning/report-this_week.php:101, templates/dashboard/earning/report-this_year.php:90, templates/dashboard/earning/report-this_year.php:92
4311
  msgid "Deducted Fees"
4312
  msgstr ""
4313
 
4314
- #: templates/dashboard/earning/report-date_range.php:109, templates/dashboard/earning/report-last_week.php:117, templates/dashboard/earning/report-this_week.php:109
4315
  msgid "Showing Result from %s to %s"
4316
  msgstr ""
4317
 
4318
- #: templates/dashboard/earning/report-date_range.php:116, templates/dashboard/earning/report-last_month.php:113, templates/dashboard/earning/report-last_week.php:124, templates/dashboard/earning/report-last_year.php:109, templates/dashboard/earning/report-this_month.php:118, templates/dashboard/earning/report-this_week.php:116, templates/dashboard/earning/report-this_year.php:111
4319
  msgid "Sales statements for this period"
4320
  msgstr ""
4321
 
4322
- #: templates/dashboard/earning/report-last_month.php:106, templates/dashboard/earning/report-this_month.php:111
4323
  msgid "Earning Data for the month of %s"
4324
  msgstr ""
4325
 
4326
- #: templates/dashboard/earning/report-last_year.php:102, templates/dashboard/earning/report-this_year.php:104
4327
  msgid "Earning Data for the year of %s"
4328
  msgstr ""
4329
 
@@ -4811,6 +4811,10 @@ msgstr ""
4811
  msgid "Please enroll This course first"
4812
  msgstr ""
4813
 
 
 
 
 
4814
  #: templates/single/lesson/sidebar_question_and_answer.php:132
4815
  msgid "No questions yet"
4816
  msgstr ""
13
  "X-Poedit-SourceCharset: UTF-8\n"
14
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
 
16
+ #: tutor.php:52, classes/Tutor.php:425
17
  msgid "Tutor Instructor"
18
  msgstr ""
19
 
117
  msgid "Tags"
118
  msgstr ""
119
 
120
+ #: classes/Admin.php:60, classes/Admin.php:60, classes/Course.php:433, classes/Options.php:557, classes/Quiz_Attempts_List.php:110, templates/student-public-profile.php:103, views/pages/students.php:8
121
  msgid "Students"
122
  msgstr ""
123
 
124
+ #: classes/Admin.php:63, classes/Admin.php:63, classes/Course.php:127, classes/Course.php:206, classes/Options.php:518, views/pages/instructors.php:18
125
  msgid "Instructors"
126
  msgstr ""
127
 
128
+ #: classes/Admin.php:66, classes/Admin.php:66, classes/Utils.php:1275, classes/Utils.php:2451, templates/dashboard/announcements.php:127, views/pages/announcements.php:104, views/pages/announcements.php:114
129
  msgid "Announcements"
130
  msgstr ""
131
 
133
  msgid "Q & A"
134
  msgstr ""
135
 
136
+ #: classes/Admin.php:70, classes/Admin.php:70, classes/Utils.php:2454, templates/dashboard/quiz-attempts.php:19, views/pages/quiz_attempts.php:19
137
  msgid "Quiz Attempts"
138
  msgstr ""
139
 
145
  msgid "Add-ons"
146
  msgstr ""
147
 
148
+ #: classes/Admin.php:80, classes/Admin.php:80, classes/Admin.php:442, classes/Utils.php:2467, templates/dashboard/settings.php:8, views/modal/add_quiz.php:21, views/modal/edit_quiz.php:31, templates/dashboard/notifications/profile-completion.php:14, templates/dashboard/settings/education.php:7, templates/dashboard/settings/skill.php:8
149
  msgid "Settings"
150
  msgstr ""
151
 
165
  msgid "Tutor Pages"
166
  msgstr ""
167
 
168
+ #: classes/Admin.php:139, classes/Instructors_List.php:116, templates/dashboard/dashboard.php:84, templates/dashboard/purchase_history.php:23, templates/dashboard/withdraw.php:182, views/pages/view_attempt.php:59, views/pages/tools/tutor_pages.php:13
169
  msgid "Status"
170
  msgstr ""
171
 
189
  msgid "If you like %1$s please leave us a %2$s rating. A huge thanks in advance!"
190
  msgstr ""
191
 
192
+ #: classes/Ajax.php:62, classes/Ajax.php:112, classes/Ajax.php:176, classes/Ajax.php:234, classes/Ajax.php:287, classes/Ajax.php:329, classes/Ajax.php:350, classes/Ajax.php:448, classes/Ajax.php:524, classes/Course.php:373, classes/Course.php:408, classes/Course.php:614, classes/Course.php:665, classes/Course.php:702, classes/Course.php:715, classes/Instructor.php:244, classes/Lesson.php:110, classes/Lesson.php:149, classes/Lesson.php:211, classes/Quiz.php:140, classes/Quiz.php:470, classes/Quiz.php:507, classes/Quiz.php:597, classes/Quiz.php:643, classes/Quiz.php:687, classes/Quiz.php:726, classes/Quiz.php:749, classes/Quiz.php:845, classes/Quiz.php:868, classes/Quiz.php:889, classes/Quiz.php:1000, classes/Quiz.php:1045, classes/Quiz.php:1123, classes/Quiz.php:1183, classes/Quiz.php:1205, classes/Q_and_A.php:71, templates/dashboard/registration.php:11
193
  msgid "Access Denied"
194
  msgstr ""
195
 
273
  msgid "Assignment answer can not be empty"
274
  msgstr ""
275
 
276
+ #: classes/Course.php:123, classes/Course.php:205
277
  msgid "Course Builder"
278
  msgstr ""
279
 
280
+ #: classes/Course.php:124, classes/Course.php:207
281
  msgid "Additional Data"
282
  msgstr ""
283
 
284
+ #: classes/Course.php:125, classes/Course.php:204
285
  msgid "Video"
286
  msgstr ""
287
 
288
+ #: classes/Course.php:134, classes/Course.php:1244, views/options/options_generator.php:2
289
  msgid "Tutor Settings"
290
  msgstr ""
291
 
292
+ #: classes/Course.php:418
293
  msgid "Topic has been updated"
294
  msgstr ""
295
 
296
+ #: classes/Course.php:432, classes/Options.php:423, classes/Post_types.php:172
297
  msgid "Lessons"
298
  msgstr ""
299
 
300
+ #: classes/Course.php:434, templates/course-filter/filters.php:73, templates/dashboard/earning/statement.php:30
301
  msgid "Price"
302
  msgstr ""
303
 
304
+ #: classes/Course.php:514
305
  msgid "Please Sign In first"
306
  msgstr ""
307
 
308
+ #: classes/Course.php:562, classes/Lesson.php:303
309
  msgid "Please Sign-In"
310
  msgstr ""
311
 
312
+ #: classes/Course.php:647
313
  msgid "<p>No instructor available or you have already added maximum instructors</p>"
314
  msgstr ""
315
 
316
+ #: classes/Course.php:652
317
  msgid "To add unlimited multiple instructors in your course, get %sTutor LMS Pro%s"
318
  msgstr ""
319
 
320
+ #: classes/Course.php:1079
321
  msgid "complete all lessons to mark this course as complete"
322
  msgstr ""
323
 
324
+ #: classes/Course.php:1116
325
  msgid "You have to pass %s quizzes to complete this course."
326
  msgstr ""
327
 
328
+ #: classes/Course.php:1223
329
  msgid "Make This Course Public"
330
  msgstr ""
331
 
332
+ #: classes/Course.php:1225
333
  msgid "No enrollment required."
334
  msgstr ""
335
 
336
+ #: classes/Course.php:1233
337
  msgid "Disable Q&A"
338
  msgstr ""
339
 
433
  msgid "Check and place necessary information here."
434
  msgstr ""
435
 
436
+ #: classes/Email.php:32, classes/Instructors_List.php:112, classes/Students_List.php:61
437
  msgid "Name"
438
  msgstr ""
439
 
577
  msgid "Remove as Instructor"
578
  msgstr ""
579
 
580
+ #: classes/Instructors_List.php:113, classes/Students_List.php:62, templates/dashboard/registration.php:73, templates/dashboard/registration.php:76, views/pages/add_new_instructor.php:69, views/pages/add_new_instructor.php:75, templates/dashboard/instructor/registration.php:67, templates/dashboard/instructor/registration.php:70
581
  msgid "E-Mail"
582
  msgstr ""
583
 
661
  msgid "Price Type"
662
  msgstr ""
663
 
664
+ #: classes/Options.php:102, classes/Utils.php:6232
665
  msgid "Dashboard Page"
666
  msgstr ""
667
 
1169
  msgid "Allow multiple instructors to upload their courses."
1170
  msgstr ""
1171
 
1172
+ #: classes/Options.php:533, classes/Utils.php:6233
1173
  msgid "Instructor Registration Page"
1174
  msgstr ""
1175
 
1197
  msgid "Student Profile settings"
1198
  msgstr ""
1199
 
1200
+ #: classes/Options.php:565, classes/Utils.php:6234
1201
  msgid "Student Registration Page"
1202
  msgstr ""
1203
 
1221
  msgid "Completed courses will be shown on student profiles. <br/> For example, you can see this link-"
1222
  msgstr ""
1223
 
1224
+ #: classes/Options.php:589, classes/Options.php:597, classes/Tutor_Setup.php:484, templates/dashboard/earning.php:123, templates/dashboard/earning/chart-body.php:17, templates/dashboard/earning/statement.php:14, templates/dashboard/earning/statements.php:135
1225
  msgid "Earning"
1226
  msgstr ""
1227
 
1770
  msgid "Preview course"
1771
  msgstr ""
1772
 
1773
+ #: classes/Question_Answers_List.php:70, classes/Quiz.php:758, templates/dashboard/question-answer.php:25, views/pages/view_attempt.php:192, templates/dashboard/my-quiz-attempts/attempts-details.php:210, templates/dashboard/quiz-attempts/quiz-reviews.php:227
1774
  msgid "Question"
1775
  msgstr ""
1776
 
1778
  msgid "Student"
1779
  msgstr ""
1780
 
1781
+ #: classes/Question_Answers_List.php:73, classes/Quiz.php:1071, templates/dashboard/question-answer.php:28, views/modal/question_form.php:150, views/pages/answer.php:11, templates/dashboard/question-answer/answers.php:13
1782
  msgid "Answer"
1783
  msgstr ""
1784
 
1785
+ #: classes/Quiz.php:489
1786
  msgid "Quiz has been timeout already"
1787
  msgstr ""
1788
 
1789
+ #: classes/Quiz.php:622, classes/Quiz.php:705, views/metabox/course-contents.php:98, views/metabox/course-contents.php:190
1790
  msgid "QUIZ"
1791
  msgstr ""
1792
 
1793
+ #: classes/Quiz.php:828
1794
  msgid "Please make sure you have added more than one option and saved them"
1795
  msgstr ""
1796
 
1797
+ #: classes/Quiz.php:824
1798
  msgid "Please select the correct answer"
1799
  msgstr ""
1800
 
1801
+ #: classes/Quiz.php:937, views/modal/question_answer_form.php:21
1802
  msgid "True"
1803
  msgstr ""
1804
 
1805
+ #: classes/Quiz.php:944, views/modal/question_answer_form.php:25
1806
  msgid "False"
1807
  msgstr ""
1808
 
1809
+ #: classes/Quiz.php:1055
1810
  msgid "Answer options &amp; mark correct"
1811
  msgstr ""
1812
 
1813
+ #: classes/Quiz.php:1058
1814
  msgid "Make sure you’re saving the answers in the right order. Students will have to match this order exactly."
1815
  msgstr ""
1816
 
1817
+ #: classes/Quiz.php:1093, classes/Quiz.php:1087, views/modal/question_form.php:174, views/modal/question_form.php:167, views/pages/view_attempt.php:342, templates/dashboard/quiz-attempts/quiz-reviews.php:400
1818
  msgid "Mark as correct"
1819
  msgstr ""
1820
 
1821
+ #: classes/Quiz.php:1231
1822
  msgid "Access Denied."
1823
  msgstr ""
1824
 
1870
  msgid "Password set successfully"
1871
  msgstr ""
1872
 
1873
+ #: classes/Students_List.php:63, templates/dashboard/enrolled-courses/completed-courses.php:9
1874
  msgid "Completed Course"
1875
  msgstr ""
1876
 
1902
  msgid "Setup Wizard"
1903
  msgstr ""
1904
 
1905
+ #: classes/Tutor.php:520, classes/Utils.php:2438, templates/dashboard/dashboard.php:9
1906
  msgid "Dashboard"
1907
  msgstr ""
1908
 
1909
+ #: classes/Tutor.php:529
1910
  msgid "Student Registration"
1911
  msgstr ""
1912
 
1913
+ #: classes/Tutor.php:538
1914
  msgid "Instructor Registration"
1915
  msgstr ""
1916
 
1974
  msgid "ON"
1975
  msgstr ""
1976
 
1977
+ #: classes/Tutor_Setup.php:268, classes/Tutor_Setup.php:557, classes/Utils.php:2448
1978
  msgid "Instructor"
1979
  msgstr ""
1980
 
2278
  msgid "Tutor &rsaquo; Setup Wizard"
2279
  msgstr ""
2280
 
2281
+ #: classes/Utils.php:947
2282
  msgid "Nonce not matched"
2283
  msgstr ""
2284
 
2285
+ #: classes/Utils.php:1274
2286
  msgid "Q&A"
2287
  msgstr ""
2288
 
2289
+ #: classes/Utils.php:2129, templates/student-public-profile.php:116
2290
  msgid "Course Enrolled"
2291
  msgstr ""
2292
 
2293
+ #: classes/Utils.php:2439, templates/dashboard/my-profile.php:21
2294
  msgid "My Profile"
2295
  msgstr ""
2296
 
2297
+ #: classes/Utils.php:2440, templates/dashboard/dashboard.php:30, templates/dashboard/enrolled-courses.php:9
2298
  msgid "Enrolled Courses"
2299
  msgstr ""
2300
 
2301
+ #: classes/Utils.php:2441, templates/dashboard/wishlist.php:10
2302
  msgid "Wishlist"
2303
  msgstr ""
2304
 
2305
+ #: classes/Utils.php:2442
2306
  msgid "Reviews"
2307
  msgstr ""
2308
 
2309
+ #: classes/Utils.php:2443, templates/dashboard/my-quiz-attempts.php:19
2310
  msgid "My Quiz Attempts"
2311
  msgstr ""
2312
 
2313
+ #: classes/Utils.php:2444, templates/dashboard/purchase_history.php:9
2314
  msgid "Purchase History"
2315
  msgstr ""
2316
 
2317
+ #: classes/Utils.php:2449
2318
  msgid "Create Course"
2319
  msgstr ""
2320
 
2321
+ #: classes/Utils.php:2450, templates/dashboard/my-courses.php:9
2322
  msgid "My Courses"
2323
  msgstr ""
2324
 
2325
+ #: classes/Utils.php:2452, templates/dashboard/earning.php:35, templates/dashboard/earning.php:43
2326
  msgid "Earnings"
2327
  msgstr ""
2328
 
2329
+ #: classes/Utils.php:2453
2330
  msgid "Withdrawals"
2331
  msgstr ""
2332
 
2333
+ #: classes/Utils.php:2455, templates/dashboard/question-answer.php:10, views/pages/question_answer.php:18
2334
  msgid "Question & Answer"
2335
  msgstr ""
2336
 
2337
+ #: classes/Utils.php:2468
2338
  msgid "Logout"
2339
  msgstr ""
2340
 
2341
+ #: classes/Utils.php:2479
2342
  msgid "Retrieve Password"
2343
  msgstr ""
2344
 
2345
+ #: classes/Utils.php:2583
2346
  msgid "Pending"
2347
  msgstr ""
2348
 
2349
+ #: classes/Utils.php:2584
2350
  msgid "Approved"
2351
  msgstr ""
2352
 
2353
+ #: classes/Utils.php:2585
2354
  msgid "Blocked"
2355
  msgstr ""
2356
 
2357
+ #: classes/Utils.php:3822
2358
  msgid "True/False"
2359
  msgstr ""
2360
 
2361
+ #: classes/Utils.php:3823
2362
  msgid "Single Choice"
2363
  msgstr ""
2364
 
2365
+ #: classes/Utils.php:3824
2366
  msgid "Multiple Choice"
2367
  msgstr ""
2368
 
2369
+ #: classes/Utils.php:3825
2370
  msgid "Open Ended/Essay"
2371
  msgstr ""
2372
 
2373
+ #: classes/Utils.php:3826
2374
  msgid "Fill In The Blanks"
2375
  msgstr ""
2376
 
2377
+ #: classes/Utils.php:3827
2378
  msgid "Short Answer"
2379
  msgstr ""
2380
 
2381
+ #: classes/Utils.php:3828
2382
  msgid "Matching"
2383
  msgstr ""
2384
 
2385
+ #: classes/Utils.php:3829
2386
  msgid "Image Matching"
2387
  msgstr ""
2388
 
2389
+ #: classes/Utils.php:3830
2390
  msgid "Image Answering"
2391
  msgstr ""
2392
 
2393
+ #: classes/Utils.php:3831
2394
  msgid "Ordering"
2395
  msgstr ""
2396
 
2397
+ #: classes/Utils.php:4596
2398
  msgid "All Levels"
2399
  msgstr ""
2400
 
2401
+ #: classes/Utils.php:4597, templates/course-filter/filters.php:4
2402
  msgid "Beginner"
2403
  msgstr ""
2404
 
2405
+ #: classes/Utils.php:4598, templates/course-filter/filters.php:5
2406
  msgid "Intermediate"
2407
  msgstr ""
2408
 
2409
+ #: classes/Utils.php:4599, templates/course-filter/filters.php:6
2410
  msgid "Expert"
2411
  msgstr ""
2412
 
2413
+ #: classes/Utils.php:4622
2414
  msgid "Courses Taken"
2415
  msgstr ""
2416
 
2417
+ #: classes/Utils.php:4629
2418
  msgid "Enrolled Course"
2419
  msgstr ""
2420
 
2421
+ #: classes/Utils.php:4633
2422
  msgid "Reviews Written"
2423
  msgstr ""
2424
 
2425
+ #: classes/Utils.php:4911
2426
  msgid "Website URL"
2427
  msgstr ""
2428
 
2429
+ #: classes/Utils.php:4916
2430
  msgid "Github URL"
2431
  msgstr ""
2432
 
2433
+ #: classes/Utils.php:4921
2434
  msgid "Facebook URL"
2435
  msgstr ""
2436
 
2437
+ #: classes/Utils.php:4926
2438
  msgid "Twitter URL"
2439
  msgstr ""
2440
 
2441
+ #: classes/Utils.php:4931
2442
  msgid "Linkedin URL"
2443
  msgstr ""
2444
 
2445
+ #: classes/Utils.php:6197
2446
  msgid "Not Taken"
2447
  msgstr ""
2448
 
2449
+ #: classes/Utils.php:6195
2450
  msgid "In Progress"
2451
  msgstr ""
2452
 
2453
+ #: classes/Utils.php:6191
2454
  msgid "Completed"
2455
  msgstr ""
2456
 
2457
+ #: classes/Utils.php:6373, templates/dashboard/my-profile.php:34, templates/dashboard/registration.php:40, templates/dashboard/registration.php:43, views/pages/add_new_instructor.php:29, views/pages/add_new_instructor.php:35, templates/dashboard/instructor/registration.php:32, templates/dashboard/instructor/registration.php:35, templates/dashboard/settings/profile.php:95, templates/dashboard/settings/profile.php:97
2458
  msgid "First Name"
2459
  msgstr ""
2460
 
2461
+ #: classes/Utils.php:6374, templates/dashboard/my-profile.php:42, templates/dashboard/registration.php:50, templates/dashboard/registration.php:53, views/pages/add_new_instructor.php:43, views/pages/add_new_instructor.php:49, templates/dashboard/instructor/registration.php:42, templates/dashboard/instructor/registration.php:45, templates/dashboard/settings/profile.php:104, templates/dashboard/settings/profile.php:106
2462
  msgid "Last Name"
2463
  msgstr ""
2464
 
2465
+ #: classes/Utils.php:6375
2466
  msgid "Profile Photo"
2467
  msgstr ""
2468
 
2469
+ #: classes/Utils.php:6376
2470
  msgid "Withdraw Method"
2471
  msgstr ""
2472
 
2562
  msgid "Requested By"
2563
  msgstr ""
2564
 
2565
+ #: classes/Withdraw_Requests_List.php:103, templates/dashboard/purchase_history.php:22, templates/dashboard/withdraw.php:137, templates/dashboard/withdraw.php:181
2566
  msgid "Amount"
2567
  msgstr ""
2568
 
2569
+ #: classes/Withdraw_Requests_List.php:104, templates/dashboard/withdraw.php:179
2570
  msgid "Withdrawal Method"
2571
  msgstr ""
2572
 
2785
  msgid "Biography"
2786
  msgstr ""
2787
 
2788
+ #: templates/course-filter/filters.php:9, templates/dashboard/create-course.php:154, templates/loop/course-continue.php:19, templates/loop/course-in-cart.php:20, templates/loop/course-price-edd.php:20, templates/loop/course-price-woocommerce.php:19, templates/loop/course-price.php:19, views/metabox/course-add-edd-product-metabox.php:59, views/metabox/course-add-product-metabox.php:66, templates/single/course/wc-price-html.php:23
2789
  msgid "Free"
2790
  msgstr ""
2791
 
2869
  msgid "Preview"
2870
  msgstr ""
2871
 
2872
+ #: templates/dashboard/create-course.php:50, templates/dashboard/create-course.php:209
2873
  msgid "Submit for Review"
2874
  msgstr ""
2875
 
2876
+ #: templates/dashboard/create-course.php:46, templates/dashboard/create-course.php:207
2877
  msgid "Publish Course"
2878
  msgstr ""
2879
 
2881
  msgid "Exit"
2882
  msgstr ""
2883
 
2884
+ #: templates/dashboard/create-course.php:77
2885
  msgid "Your course has been submitted to the admin. It will be published once it has been reviewed by the admins."
2886
  msgstr ""
2887
 
2888
+ #: templates/dashboard/create-course.php:86, templates/dashboard/my-quiz-attempts.php:27, templates/dashboard/quiz-attempts.php:31, templates/dashboard/earning/statements.php:134, templates/single/quiz/previous-attempts.php:16
2889
  msgid "Course Info"
2890
  msgstr ""
2891
 
2892
+ #: templates/dashboard/create-course.php:92
2893
  msgid "Course Title"
2894
  msgstr ""
2895
 
2896
+ #: templates/dashboard/create-course.php:94
2897
  msgid "ex. Learn photoshop CS6 from scratch"
2898
  msgstr ""
2899
 
2900
+ #: templates/dashboard/create-course.php:100, views/modal/question_form.php:113, templates/single/assignment/content.php:134, templates/single/course/course-content.php:26
2901
  msgid "Description"
2902
  msgstr ""
2903
 
2904
+ #: templates/dashboard/create-course.php:118
2905
  msgid "Choose a category"
2906
  msgstr ""
2907
 
2908
+ #: templates/dashboard/create-course.php:138
2909
  msgid "Course Price"
2910
  msgstr ""
2911
 
2912
+ #: templates/dashboard/create-course.php:147
2913
  msgid "Set course price"
2914
  msgstr ""
2915
 
2916
+ #: templates/dashboard/create-course.php:164
2917
  msgid "Course Thumbnail"
2918
  msgstr ""
2919
 
2920
+ #: templates/dashboard/create-course.php:187
2921
  msgid "Important Guideline: %1$s 700x430 pixels %2$s %3$s File Support: %1$s jpg, .jpeg,. gif, or .png %2$s no text on the image."
2922
  msgstr ""
2923
 
2924
+ #: templates/dashboard/create-course.php:189, views/metabox/video-metabox.php:106, views/modal/question_answer_edit_form.php:214, views/modal/question_answer_edit_form.php:177, views/modal/question_answer_edit_form.php:124, views/modal/question_answer_edit_form.php:34, views/modal/question_answer_form.php:230, views/modal/question_answer_form.php:201, views/modal/question_answer_form.php:157, views/modal/question_answer_form.php:48
2925
  msgid "Upload Image"
2926
  msgstr ""
2927
 
2928
+ #: templates/dashboard/create-course.php:205
2929
  msgid "Save course as draft"
2930
  msgstr ""
2931
 
2932
+ #: templates/dashboard/create-course.php:219
2933
  msgid "Course Upload Tips"
2934
  msgstr ""
2935
 
2936
+ #: templates/dashboard/create-course.php:221
2937
  msgid "Set the Course Price option or make it free."
2938
  msgstr ""
2939
 
2940
+ #: templates/dashboard/create-course.php:222
2941
  msgid "Standard size for the course thumbnail is 700x430."
2942
  msgstr ""
2943
 
2944
+ #: templates/dashboard/create-course.php:223
2945
  msgid "Video section controls the course overview video."
2946
  msgstr ""
2947
 
2948
+ #: templates/dashboard/create-course.php:224
2949
  msgid "Course Builder is where you create & organize a course."
2950
  msgstr ""
2951
 
2952
+ #: templates/dashboard/create-course.php:225
2953
  msgid "Add Topics in the Course Builder section to create lessons, quizzes, and assignments."
2954
  msgstr ""
2955
 
2956
+ #: templates/dashboard/create-course.php:226
2957
  msgid "Prerequisites refers to the fundamental courses to complete before taking this particular course."
2958
  msgstr ""
2959
 
2960
+ #: templates/dashboard/create-course.php:227
2961
  msgid "Information from the Additional Data section shows up on the course single page."
2962
  msgstr ""
2963
 
2993
  msgid "Published"
2994
  msgstr ""
2995
 
2996
+ #: templates/dashboard/earning.php:28, templates/dashboard/earning/report-date_range.php:29, templates/dashboard/earning/report-last_month.php:28, templates/dashboard/earning/report-last_week.php:32, templates/dashboard/earning/report-last_year.php:27, templates/dashboard/earning/report-this_month.php:29, templates/dashboard/earning/report-this_week.php:29, templates/dashboard/earning/report-this_year.php:27
2997
  msgid "No Earning info available"
2998
  msgstr ""
2999
 
3000
+ #: templates/dashboard/earning.php:48
3001
  msgid "Reports"
3002
  msgstr ""
3003
 
3004
+ #: templates/dashboard/earning.php:53, templates/dashboard/earning/report.php:36, templates/dashboard/earning/statements.php:32, templates/dashboard/earning/statements.php:116
3005
  msgid "Statements"
3006
  msgstr ""
3007
 
3008
+ #: templates/dashboard/earning.php:62
3009
  msgid "My Balance"
3010
  msgstr ""
3011
 
3012
+ #: templates/dashboard/earning.php:66
3013
  msgid "All Time"
3014
  msgstr ""
3015
 
3016
+ #: templates/dashboard/earning.php:68
3017
  msgid "My Earnings"
3018
  msgstr ""
3019
 
3020
+ #: templates/dashboard/earning.php:72, templates/dashboard/earning/report-date_range.php:41, templates/dashboard/earning/report-last_month.php:40, templates/dashboard/earning/report-last_week.php:44, templates/dashboard/earning/report-last_year.php:40, templates/dashboard/earning/report-this_month.php:42, templates/dashboard/earning/report-this_week.php:42, templates/dashboard/earning/report-this_year.php:38
3021
  msgid "Based on course price"
3022
  msgstr ""
3023
 
3024
+ #: templates/dashboard/earning.php:74, templates/dashboard/earning/report-date_range.php:43, templates/dashboard/earning/report-last_month.php:42, templates/dashboard/earning/report-last_week.php:46, templates/dashboard/earning/report-last_year.php:42, templates/dashboard/earning/report-this_month.php:44, templates/dashboard/earning/report-this_week.php:44, templates/dashboard/earning/report-this_year.php:40
3025
  msgid "All time sales"
3026
  msgstr ""
3027
 
3028
+ #: templates/dashboard/earning.php:78
3029
  msgid "All of withdraw type excluding rejected."
3030
  msgstr ""
3031
 
3032
+ #: templates/dashboard/earning.php:80
3033
  msgid "All time withdrawals"
3034
  msgstr ""
3035
 
3036
+ #: templates/dashboard/earning.php:86, templates/dashboard/earning/report-date_range.php:49, templates/dashboard/earning/report-last_month.php:48, templates/dashboard/earning/report-last_week.php:52, templates/dashboard/earning/report-last_year.php:48, templates/dashboard/earning/report-this_month.php:50, templates/dashboard/earning/report-this_week.php:50, templates/dashboard/earning/report-this_year.php:46
3037
  msgid "Deducted Commissions"
3038
  msgstr ""
3039
 
3040
+ #: templates/dashboard/earning.php:94
3041
  msgid "Deducted Fees."
3042
  msgstr ""
3043
 
3044
+ #: templates/dashboard/earning.php:102
3045
  msgid "Earnings Chart for this month"
3046
  msgstr ""
3047
 
3097
  msgid "You are going to delete this course, it can't be undone"
3098
  msgstr ""
3099
 
3100
+ #: templates/dashboard/my-courses.php:109, templates/dashboard/question-answer.php:72, templates/dashboard/withdraw.php:151, views/modal/add_quiz.php:55, views/modal/add_quiz.php:71, views/modal/add_quiz.php:88, views/modal/edit_quiz.php:67, views/modal/edit_quiz.php:129, views/modal/question_form.php:225, views/pages/announcements.php:256, views/pages/announcements.php:344, templates/dashboard/announcements/create.php:58, templates/dashboard/announcements/details.php:29, templates/dashboard/announcements/update.php:59, templates/single/lesson/sidebar_question_and_answer.php:115, templates/single/course/enrolled/question_and_answer.php:52, templates/single/course/enrolled/question_and_answer.php:136
3101
  msgid "Cancel"
3102
  msgstr ""
3103
 
3281
  msgid "Selected Payment Method"
3282
  msgstr ""
3283
 
3284
+ #: templates/dashboard/withdraw.php:152
3285
  msgid "Submit Request"
3286
  msgstr ""
3287
 
3288
+ #: templates/dashboard/withdraw.php:170
3289
  msgid "Withdrawal History"
3290
  msgstr ""
3291
 
3292
+ #: templates/dashboard/withdraw.php:260
3293
  msgid "No withdrawal yet"
3294
  msgstr ""
3295
 
3296
+ #: templates/dashboard/withdraw.php:180
3297
  msgid "Requested On"
3298
  msgstr ""
3299
 
4167
  msgid "Manual Review"
4168
  msgstr ""
4169
 
4170
+ #: views/pages/view_attempt.php:331, views/pages/view_attempt.php:324, templates/dashboard/my-quiz-attempts/attempts-details.php:119, templates/dashboard/my-quiz-attempts/attempts-details.php:379, templates/dashboard/my-quiz-attempts/attempts-details.php:374, templates/dashboard/quiz-attempts/quiz-reviews.php:107, templates/dashboard/quiz-attempts/quiz-reviews.php:393, templates/dashboard/quiz-attempts/quiz-reviews.php:388
4171
  msgid "Incorrect"
4172
  msgstr ""
4173
 
4174
+ #: views/pages/view_attempt.php:327, views/pages/view_attempt.php:311, templates/dashboard/my-quiz-attempts/attempts-details.php:118, templates/dashboard/my-quiz-attempts/attempts-details.php:370, templates/dashboard/quiz-attempts/quiz-reviews.php:106, templates/dashboard/quiz-attempts/quiz-reviews.php:384
4175
  msgid "Correct"
4176
  msgstr ""
4177
 
4178
+ #: views/pages/view_attempt.php:320, templates/dashboard/my-quiz-attempts/attempts-details.php:376, templates/dashboard/quiz-attempts/quiz-reviews.php:390
4179
  msgid "Review Required"
4180
  msgstr ""
4181
 
4182
+ #: views/pages/view_attempt.php:343, templates/dashboard/quiz-attempts/quiz-reviews.php:401
4183
  msgid "Mark as In correct"
4184
  msgstr ""
4185
 
4299
  msgid "This Week"
4300
  msgstr ""
4301
 
4302
+ #: templates/dashboard/earning/report-date_range.php:35, templates/dashboard/earning/report-last_month.php:34, templates/dashboard/earning/report-last_week.php:38, templates/dashboard/earning/report-last_year.php:34, templates/dashboard/earning/report-this_month.php:36, templates/dashboard/earning/report-this_week.php:36, templates/dashboard/earning/report-this_year.php:32
4303
  msgid "All time"
4304
  msgstr ""
4305
 
4306
+ #: templates/dashboard/earning/report-date_range.php:37, templates/dashboard/earning/report-last_month.php:36, templates/dashboard/earning/report-last_week.php:40, templates/dashboard/earning/report-last_year.php:36, templates/dashboard/earning/report-this_month.php:38, templates/dashboard/earning/report-this_week.php:38, templates/dashboard/earning/report-this_year.php:34
4307
  msgid "My Earning"
4308
  msgstr ""
4309
 
4310
+ #: templates/dashboard/earning/report-date_range.php:56, templates/dashboard/earning/report-date_range.php:58, templates/dashboard/earning/report-last_month.php:55, templates/dashboard/earning/report-last_month.php:57, templates/dashboard/earning/report-last_week.php:59, templates/dashboard/earning/report-last_week.php:61, templates/dashboard/earning/report-last_year.php:55, templates/dashboard/earning/report-last_year.php:57, templates/dashboard/earning/report-this_month.php:57, templates/dashboard/earning/report-this_month.php:59, templates/dashboard/earning/report-this_week.php:57, templates/dashboard/earning/report-this_week.php:59, templates/dashboard/earning/report-this_year.php:53, templates/dashboard/earning/report-this_year.php:55
4311
  msgid "Deducted Fees"
4312
  msgstr ""
4313
 
4314
+ #: templates/dashboard/earning/report-date_range.php:67, templates/dashboard/earning/report-last_week.php:74, templates/dashboard/earning/report-this_week.php:67
4315
  msgid "Showing Result from %s to %s"
4316
  msgstr ""
4317
 
4318
+ #: templates/dashboard/earning/report-date_range.php:74, templates/dashboard/earning/report-last_month.php:72, templates/dashboard/earning/report-last_week.php:81, templates/dashboard/earning/report-last_year.php:76, templates/dashboard/earning/report-this_month.php:77, templates/dashboard/earning/report-this_week.php:74, templates/dashboard/earning/report-this_year.php:74
4319
  msgid "Sales statements for this period"
4320
  msgstr ""
4321
 
4322
+ #: templates/dashboard/earning/report-last_month.php:65, templates/dashboard/earning/report-this_month.php:70
4323
  msgid "Earning Data for the month of %s"
4324
  msgstr ""
4325
 
4326
+ #: templates/dashboard/earning/report-last_year.php:69, templates/dashboard/earning/report-this_year.php:67
4327
  msgid "Earning Data for the year of %s"
4328
  msgstr ""
4329
 
4811
  msgid "Please enroll This course first"
4812
  msgstr ""
4813
 
4814
+ #: templates/single/lesson/required-enroll.php:30
4815
+ msgid "Course name : %s"
4816
+ msgstr ""
4817
+
4818
  #: templates/single/lesson/sidebar_question_and_answer.php:132
4819
  msgid "No questions yet"
4820
  msgstr ""
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: lms, course, elearning, education, learning management system
5
  Requires at least: 5.3
6
  Tested up to: 5.6
7
  Requires PHP: 7.0
8
- Stable tag: 1.8.1
9
  License: GPLv3
10
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
11
 
@@ -241,6 +241,20 @@ Tutor enables you to use any third party plugins without facing any compatibilit
241
 
242
  == Changelog ==
243
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
244
  = 1.8.1 - February 05, 2021 =
245
 
246
  New: Course enrolment expiration
5
  Requires at least: 5.3
6
  Tested up to: 5.6
7
  Requires PHP: 7.0
8
+ Stable tag: 1.8.2
9
  License: GPLv3
10
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
11
 
241
 
242
  == Changelog ==
243
 
244
+ = 1.8.2 - February 15, 2021 =
245
+
246
+ New: Certificate link added to the course completion email notification
247
+ New: Settings added to enable/disable course enrollment expiration feature
248
+ Update: Zoom meeting input date format updated to dd/mm/yyyy to avoid internal errors
249
+ Update: If enrollment expiration is set to 0, you will see 'lifetime' on the frontend course page
250
+ Update: Security features enhanced in wpdb query & Quiz. Thanks Wordfence!
251
+ Update: Option added to enter decimal value in withdrawal request
252
+ Update: Code optimization in the frontend Earnings report
253
+ Fix: 404 console error due to min.map asset files
254
+ Fix: An active PHP session was detected issue
255
+ Fix: Division by 0 warning in Gradebook
256
+ Fix: Zoom meeting list pagination issue
257
+
258
  = 1.8.1 - February 05, 2021 =
259
 
260
  New: Course enrolment expiration
templates/dashboard/create-course.php CHANGED
@@ -66,18 +66,16 @@ $can_publish_course = (bool) tutor_utils()->get_option('instructor_can_publish_c
66
  <input type="hidden" name="course_ID" id="course_ID" value="<?php echo get_the_ID(); ?>">
67
  <input type="hidden" name="post_ID" id="post_ID" value="<?php echo get_the_ID(); ?>">
68
 
69
-
70
  <div class="tutor-dashboard-course-builder-wrap">
71
  <!--since 1.8.0 alert message -->
72
  <?php
73
  $instructor_can_publish = tutils()->get_option('instructor_can_publish_course');
74
  ?>
75
  <?php if(current_user_can('tutor_instructor') && !current_user_can('administrator')):?>
76
- <?php if(isset($_SESSION['tutor_course_updated']) && !$instructor_can_publish):?>
77
  <div class="tutor-alert tutor-alert-info">
78
  <?php _e('Your course has been submitted to the admin. It will be published once it has been reviewed by the admins.','tutor');?>
79
  </div>
80
- <?php session_destroy();?>
81
  <?php endif;?>
82
  <?php endif;?>
83
  <!--alert message end -->
66
  <input type="hidden" name="course_ID" id="course_ID" value="<?php echo get_the_ID(); ?>">
67
  <input type="hidden" name="post_ID" id="post_ID" value="<?php echo get_the_ID(); ?>">
68
 
 
69
  <div class="tutor-dashboard-course-builder-wrap">
70
  <!--since 1.8.0 alert message -->
71
  <?php
72
  $instructor_can_publish = tutils()->get_option('instructor_can_publish_course');
73
  ?>
74
  <?php if(current_user_can('tutor_instructor') && !current_user_can('administrator')):?>
75
+ <?php if(isset($_COOKIE['tutor_course_updated']) && !$instructor_can_publish):?>
76
  <div class="tutor-alert tutor-alert-info">
77
  <?php _e('Your course has been submitted to the admin. It will be published once it has been reviewed by the admins.','tutor');?>
78
  </div>
 
79
  <?php endif;?>
80
  <?php endif;?>
81
  <!--alert message end -->
templates/dashboard/earning.php CHANGED
@@ -13,17 +13,7 @@
13
 
14
  global $wpdb;
15
 
16
- $instructor_id = get_current_user_id();
17
-
18
- $earning_sum = tutor_utils()->get_earning_sum();
19
- if ( ! $earning_sum){
20
- echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
21
- return;
22
- }
23
-
24
  $user_id = get_current_user_id();
25
- $complete_status = tutor_utils()->get_earnings_completed_statuses();
26
- $complete_status = "'".implode("','", $complete_status)."'";
27
 
28
  /**
29
  * Getting the last week
@@ -31,41 +21,12 @@ $complete_status = "'".implode("','", $complete_status)."'";
31
  $start_date = date("Y-m-01");
32
  $end_date = date("Y-m-t");
33
 
34
- /**
35
- * Format Date Name
36
- */
37
- $begin = new DateTime($start_date);
38
- $end = new DateTime($end_date.' + 1 day');
39
- $interval = DateInterval::createFromDateString('1 day');
40
- $period = new DatePeriod($begin, $interval, $end);
41
-
42
- $datesPeriod = array();
43
- foreach ($period as $dt) {
44
- $datesPeriod[$dt->format("Y-m-d")] = 0;
45
- }
46
-
47
- /**
48
- * Query This Month
49
- */
50
 
51
- $salesQuery = $wpdb->get_results( "
52
- SELECT SUM(instructor_amount) as total_earning,
53
- DATE(created_at) as date_format
54
- from {$wpdb->prefix}tutor_earnings
55
- WHERE user_id = {$user_id} AND order_status IN({$complete_status})
56
- AND (created_at BETWEEN '{$start_date}' AND '{$end_date}')
57
- GROUP BY date_format
58
- ORDER BY created_at ASC ;");
59
-
60
- $total_earning = wp_list_pluck($salesQuery, 'total_earning');
61
- $queried_date = wp_list_pluck($salesQuery, 'date_format');
62
- $dateWiseSales = array_combine($queried_date, $total_earning);
63
-
64
- $chartData = array_merge($datesPeriod, $dateWiseSales);
65
- foreach ($chartData as $key => $salesCount){
66
- unset($chartData[$key]);
67
- $formatDate = date('d M', strtotime($key));
68
- $chartData[$formatDate] = $salesCount;
69
  }
70
 
71
  ?>
13
 
14
  global $wpdb;
15
 
 
 
 
 
 
 
 
 
16
  $user_id = get_current_user_id();
 
 
17
 
18
  /**
19
  * Getting the last week
21
  $start_date = date("Y-m-01");
22
  $end_date = date("Y-m-t");
23
 
24
+ $stats = tutils()->get_earning_chart( $user_id, $start_date, $end_date );
25
+ extract($stats);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
 
27
+ if ( ! $earning_sum){
28
+ echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
29
+ return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  }
31
 
32
  ?>
templates/dashboard/earning/report-date_range.php CHANGED
@@ -22,55 +22,13 @@ $user_id = get_current_user_id();
22
  $start_date = sanitize_text_field(tutor_utils()->avalue_dot('date_range_from', $_GET)).' 00:00:00';
23
  $end_date = sanitize_text_field(tutor_utils()->avalue_dot('date_range_to', $_GET)).' 23:59:59';
24
 
25
- $earning_sum = tutor_utils()->get_earning_sum($user_id, compact('start_date', 'end_date'));
 
 
26
  if ( ! $earning_sum){
27
  echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
28
  return;
29
  }
30
-
31
- $complete_status = tutor_utils()->get_earnings_completed_statuses();
32
- $statuses = $complete_status;
33
- $complete_status = "'".implode("','", $complete_status)."'";
34
-
35
- /**
36
- * Format Date Name
37
- */
38
- $begin = new DateTime($start_date);
39
- $end = new DateTime($end_date);
40
- $interval = DateInterval::createFromDateString('1 day');
41
- $period = new DatePeriod($begin, $interval, $end);
42
-
43
- $datesPeriod = array();
44
- foreach ($period as $dt) {
45
- $datesPeriod[$dt->format("Y-m-d")] = 0;
46
- }
47
-
48
- /**
49
- * Query This Month
50
- */
51
-
52
- $salesQuery = $wpdb->get_results( "
53
- SELECT SUM(instructor_amount) as total_earning,
54
- DATE(created_at) as date_format
55
- from {$wpdb->prefix}tutor_earnings
56
- WHERE user_id = {$user_id} AND order_status IN({$complete_status})
57
- AND (created_at BETWEEN '{$start_date}' AND '{$end_date}')
58
- GROUP BY date_format
59
- ORDER BY created_at ASC ;");
60
-
61
- $total_earning = wp_list_pluck($salesQuery, 'total_earning');
62
- $queried_date = wp_list_pluck($salesQuery, 'date_format');
63
- $dateWiseSales = array_combine($queried_date, $total_earning);
64
-
65
- $chartData = array_merge($datesPeriod, $dateWiseSales);
66
- foreach ($chartData as $key => $salesCount){
67
- unset($chartData[$key]);
68
- $formatDate = date('d M', strtotime($key));
69
- $chartData[$formatDate] = $salesCount;
70
- }
71
-
72
- $statements = tutor_utils()->get_earning_statements($user_id, compact('start_date', 'end_date', 'statuses'));
73
-
74
  ?>
75
 
76
  <div class="tutor-dashboard-info-cards">
22
  $start_date = sanitize_text_field(tutor_utils()->avalue_dot('date_range_from', $_GET)).' 00:00:00';
23
  $end_date = sanitize_text_field(tutor_utils()->avalue_dot('date_range_to', $_GET)).' 23:59:59';
24
 
25
+ $stats = tutils()->get_earning_chart( $user_id, $start_date, $end_date );
26
+ extract($stats);
27
+
28
  if ( ! $earning_sum){
29
  echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
30
  return;
31
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  ?>
33
 
34
  <div class="tutor-dashboard-info-cards">
templates/dashboard/earning/report-last_month.php CHANGED
@@ -21,54 +21,13 @@ $user_id = get_current_user_id();
21
  $start_date = date('Y-m-01 00:00:00', strtotime('last day of last month'));
22
  $end_date = date("Y-m-t 23:59:59", strtotime($start_date));
23
 
24
- $earning_sum = tutor_utils()->get_earning_sum($user_id, compact('start_date', 'end_date'));
 
 
25
  if ( ! $earning_sum){
26
  echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
27
  return;
28
  }
29
-
30
- $complete_status = tutor_utils()->get_earnings_completed_statuses();
31
- $statuses = $complete_status;
32
- $complete_status = "'".implode("','", $complete_status)."'";
33
-
34
- /**
35
- * Format Date Name
36
- */
37
- $begin = new DateTime($start_date);
38
- $end = new DateTime($end_date);
39
- $interval = DateInterval::createFromDateString('1 day');
40
- $period = new DatePeriod($begin, $interval, $end);
41
-
42
- $datesPeriod = array();
43
- foreach ($period as $dt) {
44
- $datesPeriod[$dt->format("Y-m-d")] = 0;
45
- }
46
-
47
- /**
48
- * Query This Month
49
- */
50
-
51
- $salesQuery = $wpdb->get_results( "
52
- SELECT SUM(instructor_amount) as total_earning,
53
- DATE(created_at) as date_format
54
- from {$wpdb->prefix}tutor_earnings
55
- WHERE user_id = {$user_id} AND order_status IN({$complete_status})
56
- AND (created_at BETWEEN '{$start_date}' AND '{$end_date}')
57
- GROUP BY date_format
58
- ORDER BY created_at ASC ;");
59
-
60
- $total_earning = wp_list_pluck($salesQuery, 'total_earning');
61
- $queried_date = wp_list_pluck($salesQuery, 'date_format');
62
- $dateWiseSales = array_combine($queried_date, $total_earning);
63
-
64
- $chartData = array_merge($datesPeriod, $dateWiseSales);
65
- foreach ($chartData as $key => $salesCount){
66
- unset($chartData[$key]);
67
- $formatDate = date('d M', strtotime($key));
68
- $chartData[$formatDate] = $salesCount;
69
- }
70
- $statements = tutor_utils()->get_earning_statements($user_id, compact('start_date', 'end_date', 'statuses'));
71
-
72
  ?>
73
 
74
  <div class="tutor-dashboard-info-cards">
21
  $start_date = date('Y-m-01 00:00:00', strtotime('last day of last month'));
22
  $end_date = date("Y-m-t 23:59:59", strtotime($start_date));
23
 
24
+ $stats = tutils()->get_earning_chart( $user_id, $start_date, $end_date );
25
+ extract($stats);
26
+
27
  if ( ! $earning_sum){
28
  echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
29
  return;
30
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  ?>
32
 
33
  <div class="tutor-dashboard-info-cards">
templates/dashboard/earning/report-last_week.php CHANGED
@@ -25,56 +25,13 @@ $end_date = strtotime("next saturday",$start_date);
25
  $start_date = date("Y-m-d 00:00:00",$start_date);
26
  $end_date = date("Y-m-d 23:59:59",$end_date);
27
 
 
 
28
 
29
- $earning_sum = tutor_utils()->get_earning_sum($user_id, compact('start_date', 'end_date'));
30
  if ( ! $earning_sum){
31
  echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
32
  return;
33
  }
34
-
35
- $complete_status = tutor_utils()->get_earnings_completed_statuses();
36
- $statuses = $complete_status;
37
- $complete_status = "'".implode("','", $complete_status)."'";
38
-
39
- /**
40
- * Format Date Name
41
- */
42
- $begin = new DateTime($start_date);
43
- $end = new DateTime($end_date);
44
- $interval = DateInterval::createFromDateString('1 day');
45
- $period = new DatePeriod($begin, $interval, $end);
46
-
47
- $datesPeriod = array();
48
- foreach ($period as $dt) {
49
- $datesPeriod[$dt->format("Y-m-d")] = 0;
50
- }
51
-
52
- /**
53
- * Query This Month
54
- */
55
-
56
- $salesQuery = $wpdb->get_results( "
57
- SELECT SUM(instructor_amount) as total_earning,
58
- DATE(created_at) as date_format
59
- from {$wpdb->prefix}tutor_earnings
60
- WHERE user_id = {$user_id} AND order_status IN({$complete_status})
61
- AND (created_at BETWEEN '{$start_date}' AND '{$end_date}')
62
- GROUP BY date_format
63
- ORDER BY created_at ASC ;");
64
-
65
- $total_earning = wp_list_pluck($salesQuery, 'total_earning');
66
- $queried_date = wp_list_pluck($salesQuery, 'date_format');
67
- $dateWiseSales = array_combine($queried_date, $total_earning);
68
-
69
- $chartData = array_merge($datesPeriod, $dateWiseSales);
70
- foreach ($chartData as $key => $salesCount){
71
- unset($chartData[$key]);
72
- $formatDate = date('d M', strtotime($key));
73
- $chartData[$formatDate] = $salesCount;
74
- }
75
-
76
- $statements = tutor_utils()->get_earning_statements($user_id, compact('start_date', 'end_date', 'statuses'));
77
-
78
  ?>
79
 
80
  <div class="tutor-dashboard-info-cards">
25
  $start_date = date("Y-m-d 00:00:00",$start_date);
26
  $end_date = date("Y-m-d 23:59:59",$end_date);
27
 
28
+ $stats = tutils()->get_earning_chart( $user_id, $start_date, $end_date );
29
+ extract($stats);
30
 
 
31
  if ( ! $earning_sum){
32
  echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
33
  return;
34
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  ?>
36
 
37
  <div class="tutor-dashboard-info-cards">
templates/dashboard/earning/report-last_year.php CHANGED
@@ -19,48 +19,15 @@ $user_id = get_current_user_id();
19
  * Getting the Last Month
20
  */
21
  $year = date('Y', strtotime('-1 year'));
22
- $dataFor = 'yearly';
23
 
24
- $earning_sum = tutor_utils()->get_earning_sum($user_id, compact('year', 'dataFor'));
 
25
 
26
  if ( ! $earning_sum){
27
  echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
28
  return;
29
  }
30
 
31
- $complete_status = tutor_utils()->get_earnings_completed_statuses();
32
- $statuses = $complete_status;
33
- $complete_status = "'".implode("','", $complete_status)."'";
34
-
35
-
36
- /**
37
- * Query This Month
38
- */
39
-
40
- $salesQuery = $wpdb->get_results( "
41
- SELECT SUM(instructor_amount) as total_earning,
42
- MONTHNAME(created_at) as month_name
43
- from {$wpdb->prefix}tutor_earnings
44
- WHERE user_id = {$user_id} AND order_status IN({$complete_status})
45
- AND YEAR(created_at) = {$year}
46
- GROUP BY MONTH (created_at)
47
- ORDER BY MONTH(created_at) ASC ;");
48
-
49
- $total_earning = wp_list_pluck($salesQuery, 'total_earning');
50
- $months = wp_list_pluck($salesQuery, 'month_name');
51
- $monthWiseSales = array_combine($months, $total_earning);
52
-
53
- /**
54
- * Format yearly
55
- */
56
- $emptyMonths = array();
57
- for ($m=1; $m<=12; $m++) {
58
- $emptyMonths[date('F', mktime(0,0,0,$m, 1, date('Y')))] = 0;
59
- }
60
- $chartData = array_merge($emptyMonths, $monthWiseSales);
61
-
62
- $statements = tutor_utils()->get_earning_statements($user_id, compact('year', 'dataFor', 'statuses'));
63
-
64
  ?>
65
 
66
  <div class="tutor-dashboard-info-cards">
19
  * Getting the Last Month
20
  */
21
  $year = date('Y', strtotime('-1 year'));
 
22
 
23
+ $stats = tutils()->get_earning_chart_yearly( $user_id, $year );
24
+ extract($stats);
25
 
26
  if ( ! $earning_sum){
27
  echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
28
  return;
29
  }
30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  ?>
32
 
33
  <div class="tutor-dashboard-info-cards">
templates/dashboard/earning/report-this_month.php CHANGED
@@ -22,55 +22,14 @@ $start_date = date("Y-m-01 00:00:00");
22
  $end_date = date("Y-m-t 23:59:59");
23
 
24
 
25
- $earning_sum = tutor_utils()->get_earning_sum($user_id, compact('start_date', 'end_date'));
 
 
26
  if ( ! $earning_sum){
27
  echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
28
  return;
29
  }
30
 
31
- $complete_status = tutor_utils()->get_earnings_completed_statuses();
32
- $statuses = $complete_status;
33
- $complete_status = "'".implode("','", $complete_status)."'";
34
-
35
- /**
36
- * Format Date Name
37
- */
38
- $begin = new DateTime($start_date);
39
- $end = new DateTime($end_date);
40
- $interval = DateInterval::createFromDateString('1 day');
41
- $period = new DatePeriod($begin, $interval, $end);
42
-
43
- $datesPeriod = array();
44
- foreach ($period as $dt) {
45
- $datesPeriod[$dt->format("Y-m-d")] = 0;
46
- }
47
-
48
- /**
49
- * Query This Month
50
- */
51
-
52
- $salesQuery = $wpdb->get_results( "
53
- SELECT SUM(instructor_amount) as total_earning,
54
- DATE(created_at) as date_format
55
- from {$wpdb->prefix}tutor_earnings
56
- WHERE user_id = {$user_id} AND order_status IN({$complete_status})
57
- AND (created_at BETWEEN '{$start_date}' AND '{$end_date}')
58
- GROUP BY date_format
59
- ORDER BY created_at ASC ;");
60
-
61
- $total_earning = wp_list_pluck($salesQuery, 'total_earning');
62
- $queried_date = wp_list_pluck($salesQuery, 'date_format');
63
- $dateWiseSales = array_combine($queried_date, $total_earning);
64
-
65
- $chartData = array_merge($datesPeriod, $dateWiseSales);
66
- foreach ($chartData as $key => $salesCount){
67
- unset($chartData[$key]);
68
- $formatDate = date('d M', strtotime($key));
69
- $chartData[$formatDate] = $salesCount;
70
- }
71
-
72
- $statements = tutor_utils()->get_earning_statements($user_id, compact('start_date', 'end_date', 'statuses'));
73
-
74
  ?>
75
 
76
  <div class="tutor-dashboard-info-cards">
22
  $end_date = date("Y-m-t 23:59:59");
23
 
24
 
25
+ $stats = tutils()->get_earning_chart( $user_id, $start_date, $end_date );
26
+ extract($stats);
27
+
28
  if ( ! $earning_sum){
29
  echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
30
  return;
31
  }
32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  ?>
34
 
35
  <div class="tutor-dashboard-info-cards">
templates/dashboard/earning/report-this_week.php CHANGED
@@ -22,55 +22,13 @@ $user_id = get_current_user_id();
22
  $start_date = date("Y-m-d 00:00:00", strtotime("last sunday midnight"));
23
  $end_date = date("Y-m-d 23:59:59", strtotime("next saturday"));
24
 
 
 
25
 
26
- $earning_sum = tutor_utils()->get_earning_sum($user_id, compact('start_date', 'end_date'));
27
  if ( ! $earning_sum){
28
  echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
29
  return;
30
  }
31
-
32
- $complete_status = tutor_utils()->get_earnings_completed_statuses();
33
- $statuses = $complete_status;
34
- $complete_status = "'".implode("','", $complete_status)."'";
35
-
36
- /**
37
- * Format Date Name
38
- */
39
- $begin = new DateTime($start_date);
40
- $end = new DateTime($end_date);
41
- $interval = DateInterval::createFromDateString('1 day');
42
- $period = new DatePeriod($begin, $interval, $end);
43
-
44
- $datesPeriod = array();
45
- foreach ($period as $dt) {
46
- $datesPeriod[$dt->format("Y-m-d")] = 0;
47
- }
48
-
49
- /**
50
- * Query This Month
51
- */
52
-
53
- $salesQuery = $wpdb->get_results( "
54
- SELECT SUM(instructor_amount) as total_earning,
55
- DATE(created_at) as date_format
56
- from {$wpdb->prefix}tutor_earnings
57
- WHERE user_id = {$user_id} AND order_status IN({$complete_status})
58
- AND (created_at BETWEEN '{$start_date}' AND '{$end_date}')
59
- GROUP BY date_format
60
- ORDER BY created_at ASC ;");
61
-
62
- $total_earning = wp_list_pluck($salesQuery, 'total_earning');
63
- $queried_date = wp_list_pluck($salesQuery, 'date_format');
64
- $dateWiseSales = array_combine($queried_date, $total_earning);
65
-
66
- $chartData = array_merge($datesPeriod, $dateWiseSales);
67
- foreach ($chartData as $key => $salesCount){
68
- unset($chartData[$key]);
69
- $formatDate = date('d M', strtotime($key));
70
- $chartData[$formatDate] = $salesCount;
71
- }
72
-
73
- $statements = tutor_utils()->get_earning_statements($user_id, compact('start_date', 'end_date', 'statuses'));
74
  ?>
75
 
76
 
22
  $start_date = date("Y-m-d 00:00:00", strtotime("last sunday midnight"));
23
  $end_date = date("Y-m-d 23:59:59", strtotime("next saturday"));
24
 
25
+ $stats = tutils()->get_earning_chart( $user_id, $start_date, $end_date );
26
+ extract($stats);
27
 
 
28
  if ( ! $earning_sum){
29
  echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
30
  return;
31
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  ?>
33
 
34
 
templates/dashboard/earning/report-this_year.php CHANGED
@@ -19,52 +19,15 @@ $user_id = get_current_user_id();
19
  * Getting the Last Month
20
  */
21
  $year = date('Y');
22
- $dataFor = 'yearly';
23
-
24
- $earning_sum = tutor_utils()->get_earning_sum($user_id, compact('year', 'dataFor'));
25
 
 
 
26
 
27
  if ( ! $earning_sum){
28
  echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
29
  return;
30
  }
31
-
32
- $complete_status = tutor_utils()->get_earnings_completed_statuses();
33
- $statuses = $complete_status;
34
- $complete_status = "'".implode("','", $complete_status)."'";
35
-
36
-
37
- /**
38
- * Query This Month
39
- */
40
-
41
- $salesQuery = $wpdb->get_results( "
42
- SELECT SUM(instructor_amount) as total_earning,
43
- MONTHNAME(created_at) as month_name
44
- from {$wpdb->prefix}tutor_earnings
45
- WHERE user_id = {$user_id} AND order_status IN({$complete_status})
46
- AND YEAR(created_at) = {$year}
47
- GROUP BY MONTH (created_at)
48
- ORDER BY MONTH(created_at) ASC ;");
49
-
50
- $total_earning = wp_list_pluck($salesQuery, 'total_earning');
51
- $months = wp_list_pluck($salesQuery, 'month_name');
52
- $monthWiseSales = array_combine($months, $total_earning);
53
-
54
- /**
55
- * Format yearly
56
- */
57
- $emptyMonths = array();
58
- for ($m=1; $m<=12; $m++) {
59
- $emptyMonths[date('F', mktime(0,0,0,$m, 1, date('Y')))] = 0;
60
- }
61
- $chartData = array_merge($emptyMonths, $monthWiseSales);
62
-
63
- $statements = tutor_utils()->get_earning_statements($user_id, compact('year', 'dataFor', 'statuses'));
64
-
65
-
66
  ?>
67
-
68
  <div class="tutor-dashboard-info-cards">
69
  <div class="tutor-dashboard-info-card" title="<?php _e('All time', 'tutor'); ?>">
70
  <p>
19
  * Getting the Last Month
20
  */
21
  $year = date('Y');
 
 
 
22
 
23
+ $stats = tutils()->get_earning_chart_yearly( $user_id, $year );
24
+ extract($stats);
25
 
26
  if ( ! $earning_sum){
27
  echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
28
  return;
29
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  ?>
 
31
  <div class="tutor-dashboard-info-cards">
32
  <div class="tutor-dashboard-info-card" title="<?php _e('All time', 'tutor'); ?>">
33
  <p>
templates/dashboard/my-quiz-attempts/attempts-details.php CHANGED
@@ -330,27 +330,33 @@ $answers = tutor_utils()->get_quiz_answers_by_attempt_id($attempt_id);
330
  if (($answer->question_type != 'open_ended' && $answer->question_type != 'short_answer')) {
331
  global $wpdb;
332
  if ( $answer->question_type === 'true_false' ) {
333
- $correct_answer = $wpdb->get_var( "SELECT answer_title FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = {$answer->question_id} AND is_correct = 1" );
334
  echo $correct_answer;
 
335
  } elseif ( $answer->question_type === 'single_choice' ) {
336
- $correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = {$answer->question_id} AND is_correct = 1" );
337
  show_correct_answer($correct_answer);
 
338
  } elseif ( $answer->question_type === 'multiple_choice' ) {
339
- $correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = {$answer->question_id} AND is_correct = 1 ;" );
340
  show_correct_answer($correct_answer);
 
341
  } elseif ( $answer->question_type === 'fill_in_the_blank' ) {
342
- $correct_answer = $wpdb->get_var( "SELECT answer_two_gap_match FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = {$answer->question_id}" );
343
  if($correct_answer){
344
  echo implode(', ', explode('|', stripslashes($correct_answer)));
345
  }
 
346
  } elseif ( $answer->question_type === 'ordering' ) {
347
- $correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = {$answer->question_id} ORDER BY answer_order ASC;" );
348
  show_correct_answer($correct_answer);
 
349
  } elseif( $answer->question_type === 'matching' ){
350
- $correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_two_gap_match, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = {$answer->question_id} ORDER BY answer_order ASC;" );
351
  show_correct_answer($correct_answer);
 
352
  } elseif( $answer->question_type === 'image_matching' ) {
353
- $correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_two_gap_match FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = {$answer->question_id} ORDER BY answer_order ASC;" );
354
  show_correct_answer($correct_answer);
355
  }
356
  }
330
  if (($answer->question_type != 'open_ended' && $answer->question_type != 'short_answer')) {
331
  global $wpdb;
332
  if ( $answer->question_type === 'true_false' ) {
333
+ $correct_answer = $wpdb->get_var( $wpdb->prepare( "SELECT answer_title FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d AND is_correct = 1", $answer->question_id ) );
334
  echo $correct_answer;
335
+
336
  } elseif ( $answer->question_type === 'single_choice' ) {
337
+ $correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d AND is_correct = 1", $answer->question_id ) );
338
  show_correct_answer($correct_answer);
339
+
340
  } elseif ( $answer->question_type === 'multiple_choice' ) {
341
+ $correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d AND is_correct = 1 ;", $answer->question_id ) );
342
  show_correct_answer($correct_answer);
343
+
344
  } elseif ( $answer->question_type === 'fill_in_the_blank' ) {
345
+ $correct_answer = $wpdb->get_var( $wpdb->prepare( "SELECT answer_two_gap_match FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d", $answer->question_id ) );
346
  if($correct_answer){
347
  echo implode(', ', explode('|', stripslashes($correct_answer)));
348
  }
349
+
350
  } elseif ( $answer->question_type === 'ordering' ) {
351
+ $correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d ORDER BY answer_order ASC;", $answer->question_id ) );
352
  show_correct_answer($correct_answer);
353
+
354
  } elseif( $answer->question_type === 'matching' ){
355
+ $correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_two_gap_match, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d ORDER BY answer_order ASC;", $answer->question_id ) );
356
  show_correct_answer($correct_answer);
357
+
358
  } elseif( $answer->question_type === 'image_matching' ) {
359
+ $correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_two_gap_match FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d ORDER BY answer_order ASC;", $answer->question_id ) );
360
  show_correct_answer($correct_answer);
361
  }
362
  }
templates/dashboard/quiz-attempts/quiz-reviews.php CHANGED
@@ -345,27 +345,33 @@ $attempt_data = tutor_utils()->get_attempt($attempt_id);
345
  if (($answer->question_type != 'open_ended' && $answer->question_type != 'short_answer')) {
346
  global $wpdb;
347
  if ( $answer->question_type === 'true_false' ) {
348
- $correct_answer = $wpdb->get_var( "SELECT answer_title FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = {$answer->question_id} AND is_correct = 1" );
349
  echo $correct_answer;
 
350
  } elseif ( $answer->question_type === 'single_choice' ) {
351
- $correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = {$answer->question_id} AND is_correct = 1" );
352
  show_correct_answer($correct_answer);
 
353
  } elseif ( $answer->question_type === 'multiple_choice' ) {
354
- $correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = {$answer->question_id} AND is_correct = 1 ;" );
355
  show_correct_answer($correct_answer);
 
356
  } elseif ( $answer->question_type === 'fill_in_the_blank' ) {
357
- $correct_answer = $wpdb->get_var( "SELECT answer_two_gap_match FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = {$answer->question_id}" );
358
  if($correct_answer){
359
  echo implode(', ', explode('|', stripslashes($correct_answer)));
360
  }
 
361
  } elseif ( $answer->question_type === 'ordering' ) {
362
- $correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = {$answer->question_id} ORDER BY answer_order ASC;" );
363
  show_correct_answer($correct_answer);
 
364
  } elseif( $answer->question_type === 'matching' ){
365
- $correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_two_gap_match, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = {$answer->question_id} ORDER BY answer_order ASC;" );
366
  show_correct_answer($correct_answer);
 
367
  } elseif( $answer->question_type === 'image_matching' ) {
368
- $correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_two_gap_match FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = {$answer->question_id} ORDER BY answer_order ASC;" );
369
  show_correct_answer($correct_answer);
370
  }
371
  }
345
  if (($answer->question_type != 'open_ended' && $answer->question_type != 'short_answer')) {
346
  global $wpdb;
347
  if ( $answer->question_type === 'true_false' ) {
348
+ $correct_answer = $wpdb->get_var( $wpdb->prepare( "SELECT answer_title FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d AND is_correct = 1" , $answer->question_id ) );
349
  echo $correct_answer;
350
+
351
  } elseif ( $answer->question_type === 'single_choice' ) {
352
+ $correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d AND is_correct = 1", $answer->question_id ) );
353
  show_correct_answer($correct_answer);
354
+
355
  } elseif ( $answer->question_type === 'multiple_choice' ) {
356
+ $correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d AND is_correct = 1 ;", $answer->question_id ) );
357
  show_correct_answer($correct_answer);
358
+
359
  } elseif ( $answer->question_type === 'fill_in_the_blank' ) {
360
+ $correct_answer = $wpdb->get_var( $wpdb->prepare( "SELECT answer_two_gap_match FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d", $answer->question_id ) );
361
  if($correct_answer){
362
  echo implode(', ', explode('|', stripslashes($correct_answer)));
363
  }
364
+
365
  } elseif ( $answer->question_type === 'ordering' ) {
366
+ $correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d ORDER BY answer_order ASC;", $answer->question_id ) );
367
  show_correct_answer($correct_answer);
368
+
369
  } elseif( $answer->question_type === 'matching' ){
370
+ $correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_two_gap_match, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d ORDER BY answer_order ASC;", $answer->question_id ) );
371
  show_correct_answer($correct_answer);
372
+
373
  } elseif( $answer->question_type === 'image_matching' ) {
374
+ $correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_two_gap_match FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d ORDER BY answer_order ASC;", $answer->question_id ) );
375
  show_correct_answer($correct_answer);
376
  }
377
  }
templates/dashboard/withdraw.php CHANGED
@@ -121,6 +121,14 @@ else if(function_exists('edd_currency_symbol')){
121
  </table>
122
  </div>
123
  <div>
 
 
 
 
 
 
 
 
124
  <form id="tutor-earning-withdraw-form" action="" method="post">
125
  <?php wp_nonce_field(tutor()->nonce_action, tutor()->nonce); ?>
126
  <input type="hidden" value="tutor_make_an_withdraw" name="action" />
@@ -131,7 +139,7 @@ else if(function_exists('edd_currency_symbol')){
131
  <span>
132
  <span><?php echo $currency_symbol; ?></span>
133
  </span>
134
- <input type="number" min="1" name="tutor_withdraw_amount">
135
  </div>
136
  <div class="inline-image-text">
137
  <img src="<?php echo $image_base; ?>info-icon-question.svg" />
121
  </table>
122
  </div>
123
  <div>
124
+ <?php
125
+ /**
126
+ * @since 1.8.1
127
+ * set min value for withdraw input field as per settings
128
+ * field req step .01
129
+ */
130
+
131
+ ?>
132
  <form id="tutor-earning-withdraw-form" action="" method="post">
133
  <?php wp_nonce_field(tutor()->nonce_action, tutor()->nonce); ?>
134
  <input type="hidden" value="tutor_make_an_withdraw" name="action" />
139
  <span>
140
  <span><?php echo $currency_symbol; ?></span>
141
  </span>
142
+ <input type="number" min="<?php echo esc_attr($min_withdraw); ?>" name="tutor_withdraw_amount" step=".01" required>
143
  </div>
144
  <div class="inline-image-text">
145
  <img src="<?php echo $image_base; ?>info-icon-question.svg" />
templates/single/lesson/required-enroll.php CHANGED
@@ -27,7 +27,7 @@ get_header();
27
  ?>
28
 
29
  <h2><?php _e('Please enroll This course first', 'tutor'); ?></h2>
30
- <h3> <?php echo sprintf(__('Course name : %s'), 'tutor'), get_the_title($course_id); ?> </h3>
31
  <a href="<?php echo get_permalink($course_id); ?>" class="tutor-button"><?php _e('View Course', 'tutor'); ?></a>
32
  </div>
33
  </div>
27
  ?>
28
 
29
  <h2><?php _e('Please enroll This course first', 'tutor'); ?></h2>
30
+ <h3> <?php echo sprintf(__('Course name : %s', 'tutor'), get_the_title($course_id)); ?> </h3>
31
  <a href="<?php echo get_permalink($course_id); ?>" class="tutor-button"><?php _e('View Course', 'tutor'); ?></a>
32
  </div>
33
  </div>
tutor.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Tutor LMS
4
  Plugin URI: https://www.themeum.com/product/tutor-lms/
5
  Description: Tutor is a complete solution for creating a Learning Management System in WordPress way. It can help you to create small to large scale online education site very conveniently. Power features like report, certificate, course preview, private file sharing make Tutor a robust plugin for any educational institutes.
6
  Author: Themeum
7
- Version: 1.8.1
8
  Author URI: https://themeum.com
9
  Requires at least: 4.5
10
  Tested up to: 5.3
@@ -17,7 +17,7 @@ if ( ! defined( 'ABSPATH' ) )
17
  /**
18
  * Defined the tutor main file
19
  */
20
- define('TUTOR_VERSION', '1.8.1');
21
  define('TUTOR_FILE', __FILE__);
22
 
23
  /**
4
  Plugin URI: https://www.themeum.com/product/tutor-lms/
5
  Description: Tutor is a complete solution for creating a Learning Management System in WordPress way. It can help you to create small to large scale online education site very conveniently. Power features like report, certificate, course preview, private file sharing make Tutor a robust plugin for any educational institutes.
6
  Author: Themeum
7
+ Version: 1.8.2
8
  Author URI: https://themeum.com
9
  Requires at least: 4.5
10
  Tested up to: 5.3
17
  /**
18
  * Defined the tutor main file
19
  */
20
+ define('TUTOR_VERSION', '1.8.2');
21
  define('TUTOR_FILE', __FILE__);
22
 
23
  /**