Overview

URLhotcunt.club/
IP 178.208.88.131 (Russia)
ASN#210079 EuroByte LLC
UserAgentMozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Referer
Report completed2022-11-30 18:57:15 UTC
StatusLoading report..
IDS alerts0
Blocklist alert8
urlquery alerts No alerts detected
Tags None

Domain Summary (24)

Fully Qualifying Domain Name Rank First Seen Last Seen IP Comment
specialistinsensitive.com (5) 0 2022-11-26 01:43:00 UTC 2022-11-29 23:32:22 UTC 192.243.61.227 Unknown ranking
img-getpocket.cdn.mozilla.net (7) 1631 2018-06-21 23:36:00 UTC 2020-02-19 04:43:25 UTC 34.120.237.76
floatingfolly.com (1) 0 2021-06-12 20:41:30 UTC 2022-10-06 09:44:38 UTC 192.243.61.227 Unknown ranking
ocsp.sca1b.amazontrust.com (1) 1015 2017-03-03 15:20:51 UTC 2019-03-27 04:05:54 UTC 54.230.245.118
simplewebanalysis.com (1) 0 2022-02-25 04:06:25 UTC 2022-11-29 17:11:48 UTC 18.185.190.54 Unknown ranking
mc.yandex.ru (4) 2672 2012-05-21 09:38:30 UTC 2022-11-30 04:08:52 UTC 87.250.251.119
counter.yadro.ru (1) 7275 2014-09-09 18:41:17 UTC 2022-11-30 04:05:58 UTC 88.212.202.52
cdn.creative-bars1.com (5) 0 2022-11-15 16:46:22 UTC 2022-11-29 17:11:56 UTC 172.64.108.13 Unknown ranking
contile.services.mozilla.com (1) 1114 2021-05-27 18:32:35 UTC 2022-11-30 04:06:04 UTC 34.117.237.239
ocsp.pki.goog (9) 175 2018-07-01 06:43:07 UTC 2020-05-02 20:58:16 UTC 142.250.74.131
fonts.gstatic.com (5) 0 2014-09-09 00:40:21 UTC 2022-11-30 04:54:31 UTC 216.58.207.227 Domain (gstatic.com) ranked at: 540
e1.o.lencr.org (4) 6159 No data No data 23.36.76.226
ocsp2.globalsign.com (1) 1544 2012-05-23 18:10:04 UTC 2020-03-15 21:19:16 UTC 104.18.21.226
hotcunt.club (49) 421591 2018-05-23 00:27:19 UTC 2022-11-17 07:59:27 UTC 178.208.88.131
ocsp.digicert.com (2) 86 2012-05-21 07:02:23 UTC 2020-05-02 20:58:10 UTC 93.184.220.29
push.services.mozilla.com (1) 2140 2014-10-24 08:27:06 UTC 2020-05-03 10:09:39 UTC 34.223.160.237
top-fwz1.mail.ru (6) 8936 2012-05-21 18:08:52 UTC 2022-11-30 04:11:14 UTC 95.163.52.67
unseenreport.com (1) 0 2022-03-30 14:33:17 UTC 2022-11-29 21:22:15 UTC 192.243.59.12 Unknown ranking
friendshipmale.com (1) 0 2022-10-21 12:15:25 UTC 2022-11-29 22:10:51 UTC 172.64.108.35 Unknown ranking
r3.o.lencr.org (11) 344 No data No data 23.36.77.32
firefox.settings.services.mozilla.com (2) 867 2020-06-04 20:08:41 UTC 2022-11-30 04:06:17 UTC 34.102.187.140
content-signature-2.cdn.mozilla.net (1) 1152 No data No data 34.160.144.191
fonts.googleapis.com (3) 8877 2013-06-10 20:14:26 UTC 2022-11-30 05:55:22 UTC 142.250.74.106
ocsp.globalsign.com (3) 2075 2012-07-20 17:46:16 UTC 2020-05-02 20:58:10 UTC 104.18.21.226

Network Intrusion Detection Systemsinfo

Suricata /w Emerging Threats Pro
 No alerts detected

Blocklists

OpenPhish
 No alerts detected

PhishTank
 No alerts detected

Fortinet's Web Filter
Scan Date Severity Indicator Comment
2022-11-30 2 specialistinsensitive.com/ren.gif?sid=H4sIAAAAAAAC%2F1RSzYscxRuuTvZ3%2BXnwA (...) Malware

mnemonic secure dns
Scan Date Severity Indicator Comment
2022-11-30 2 friendshipmale.com Sinkholed

Quad9 DNS
Scan Date Severity Indicator Comment
2022-11-30 2 specialistinsensitive.com Sinkholed
2022-11-30 2 specialistinsensitive.com Sinkholed
2022-11-30 2 specialistinsensitive.com Sinkholed
2022-11-30 2 unseenreport.com Sinkholed
2022-11-30 2 specialistinsensitive.com Sinkholed
2022-11-30 2 specialistinsensitive.com Sinkholed


Files

No files detected

Recent reports on same IP/ASN/Domain/Screenshot

Last 1 reports on IP: 178.208.88.131
Date UQ / IDS / BL URL IP
2022-11-30 18:57:15 +0000 0 - 0 - 8 hotcunt.club/ 178.208.88.131


Last 5 reports on ASN: EuroByte LLC
Date UQ / IDS / BL URL IP
2023-02-05 05:30:19 +0000 0 - 2 - 16 sisun.site/click.php?key=1dxgro3vjq1pzr7jdddd (...) 46.254.21.11
2023-02-05 03:30:24 +0000 0 - 8 - 0 seo-worker.su/?r=117 46.30.40.102
2023-02-04 23:45:39 +0000 0 - 3 - 0 employmentcenter.ru/resume/?action=read&id=111120 46.254.20.109
2023-02-04 18:56:01 +0000 0 - 1 - 0 dlf1.appzona.org/ZonaSetup64[mqOnV].exe 46.254.16.62
2023-02-04 15:17:13 +0000 0 - 0 - 3 muziqa.ru/russkaya-narodnaya-muzyka/Blondie/C (...) 37.143.9.72


Last 1 reports on domain: hotcunt.club
Date UQ / IDS / BL URL IP
2022-11-30 18:57:15 +0000 0 - 0 - 8 hotcunt.club/ 178.208.88.131


Last 5 reports with similar screenshot
Date UQ / IDS / BL URL IP
2022-11-22 15:12:36 +0000 0 - 0 - 24 162.19.3.91/hemat 162.19.3.91
2022-11-20 14:51:37 +0000 0 - 0 - 21 rikyjoe.my.id/x.html 194.163.41.84
2022-11-20 09:50:46 +0000 0 - 0 - 9 162.19.3.91/hemat 162.19.3.91
2022-11-19 08:31:42 +0000 0 - 0 - 16 contestoweb.com/ 34.149.204.188
2022-12-02 18:36:05 +0000 0 - 0 - 21 enit.in/N8qn7zm 104.21.5.183

JavaScript

Executed Scripts (18)

Executed Evals (1)
#1 JavaScript::Eval (size: 321661) - SHA256: dbea44c4e8b0c5abacd90d941a0f3fafde0a039164346270191d8a9025c2503f
var pljssglobal = [];
var pljssglobalid;
if (window['PlayerjsAsync']) {
    setTimeout(PlayerjsAsync, 1)
};

function Playerjs(options) {
    var o = {
        play: false,
        playerid: 'holl979g5w2c',
        default_w: 640,
        default_h: 360,
        version: '9.98.10',
        compilation: ['HLS', '', ''],
        compilations: '',
        fullscreen: false,
        realfullscreen: false,
        nativecontrols: false,
        fullwheel: false,
        fullscreen_start: false,
        airplay: false,
        pipwebkit: false,
        ispipkit: false,
        u: '#1CjUkw3UJxu5Hz2igAGT6THlhXOlhXNTdTLpgz2iGwvTGZLdGw29dz3TGZGThXOlhXOlGWNUMyupJTHMiWNUewvULyu4GZGTeXHlEXNlhTOlGWNULAKQIyutfBNT6XqhGwu5azuQ0yu9fTHMGwuihyRPGWNUFTHMiWNUMTHM0YqhGzRtKBRQfxSUax2F0ARQIxRJfxjT6XrldTKFaxRt3yvpMz3t0zu92yu5LTHMiWNUMyupJxR93zGT6Xv0dTKYgzLpjz2iDBRJ0zRsGZLdGz3UIxvTGZHPdTK9fTHMiWNUFw3paz24GZGU0yvpdxqTdTLp5ARsGZGU0xvF0TGhGAR9kyvpaz24GZGU0z3lezRtKBNTdTKYdyuYcTHMhWNUMwu5ITHMhWNU0xvF0THMGTGhGBKQjTHMGBRJ0zRsGWNUMyupJTHMiWNUMyupJz25hzRQ5THMiWNUFzKJewvpaz24GZGUhz3YaBRJgzGTdTKULTHMiWNUGx2PGZHlfYNhGwKBhwupIyu5LTHMGYGl2TOwEYGTdTLpaBRiJTHMG0U3odYN30WWodYN90WHoeqU9WNUHz250AK9dv2iazKsGZLdGz3UIxvTGZHXdTK9fTHMiWNU0CvmJTHMGA2FFARsGWNUFw3paz24GZGUdyu5JTGhGyNT6XGhGAK91zKpazKAGZGTiTGhGBjT6XrlhWNUFTHMGXqTdTKQGxjT6THlfXjTdTKQdz2QITHMGXN40TGhGwu92xvTGZGTeXqTdTKYgzR9jTHMGxKwhXOlhTGhGw29dz3UGxjT6TKxKxKxKxGTdTKYgzR9jzR9FxNT6TKxKxKxKxGTdTKYgzR9jz3xJAGT6TKxKxKxKxGTdTKU1xKxJAGT6CjUgzGT6XNhGw29dz3TGZGUKxKxKxKwGWNUFTHMhWHt9WNUhz3YaBRJgzGT6TKUgBSpgzqTdTK1FAKBazGT6THlEXNl1XNlhTGhGyRQfxRiJTHMiWNUGx3mFxRpazKAGZGT1TOlEYqlhTGhGBRJhTHMiWNUMyupJTHMiWNUMyupJz25dyvxJTHMiWNUMwu5IzRtMyupJTHMhWNUMwu5IzRtkw2QdxqT6THPGWNU0z3m0yvlGZHPdTKiazKt0yvmewvULyu5Gz3p0z20GZHPhWNUMwu5IzRtFz3xJAGT6THPGWNUMwu5IzRtaw29fTHMGnSY2xjm3yup0yO0LXHmhCNAEyRtax2F0nqAjXSm4Ujm2yut3oK94nqAhTOlEXHlEXHlLTSxJALYaz249UkPfXqAECR1dzLX9U2F0BSl6Wj93B3AfBkXfz3ULWkThXOlgA3xLUjm4zuifAka4zRJfyk0LySp0AOMgW3B3Bj53Xj5gAKAgXrI5Zq94zRJfyjA#vR4ETNlEnRAEA3pjz2eJnqBfz25JUjmkBSUgy2seB2JIBRE9UkPLTRxazRh9U25gzKsLTRxazRheALtdxr0LxvxJzK9IxNA#vR4ETNlETNlETOiHyvUHzRsExKJdzN1gARQHyvp5nqAhWHXLTRxazRh9UjYRpIxRpIwLTRY4nqAiXNAEw3I9UkPhUjmjnqAiXNA#nN9HyvUHzRs#vR4ETNlETNlETOiHyvUHzRsExKJdzO0LT0xRpIxRpGAEw3E9UkPhUjmHCr0LXrlLTST9UkoLnHhgw2Jjw2iJnJifTNlETOhgxk5AzHhgA3xLnGlGWNUMwu5IzRtMyupJyu5aBNT6Xv0dTKYgzLpjz2iDARiFCqT6CjUgAKpJAGT6XGhGz24GZHPdTKJHz24GZGT8A3xLTSBaxSpMnqAjXNAEyRtax2F0nqAjXNA#nRAExKJdzN1jBuiJnqBfz256xvUgUjm0AKQfA2xgAK09U3pjwu5kzRQ0xqE1WNlkVqA#nSmgzSJdyu5JTSmgyu50Ak0LXN41ZrX3YqlhWHo4YOX4TOlfYrwjYqliXj41Xrs2XjliXq40XkA1TOAEXN41ZrX3YqlhWHo4YOX4UjmKyuidnqAHxKxKxKxKUj8#nN9LnHhgA3xLnGTdTKJHz24jTHMGnSY2xjm3yup0yO0LXHlLTRFJyuBMBO0LXHlLnHiLTRxazRheALtdxr0LzK9fCKtjzjAExKJdzO0LTklhXOlhXNAEBSUFzLYKz3UenqB0AKQfA2iFBRsMYqhEYNILnHijxuY0TSE9UklLTSI9UklLTSBaxSpMnqAkWHsLTRFJyuBMBO0LXrTLTRxazRh9UjYKxKxKxKwLWk48AKtHBNm4nqA2WHsLTSI9UklLTSBaxSpMnqAkWHsLTRFJyuBMBO0LXrTLTRxazRh9UjYKxKxKxKwLWk48W2A#nN9kBKA#TGhGyuYgzHXGZGT8A3xLTSBaxSpMnqAjXNAEyRtax2F0nqAjXNA#nRAEBSUFzLYKz3UenqB0AKQfA2iFBRsMXjhEXjILnHihwvpMTRo9U00iYN4hYrw5YkA3WOwfZOTjXHskZOIEokPkWHIhZrX0YkodXj4hXHIjXrXjXjliXN44XHlkXOA0WOlEYj4hXkPjYqhhTPXkWHP0YkI5YkE1WOlEXNhkWHP4Xrw5YrI0TOldYj4iXOw1Xrw3ZNmOXNhiXq4hXkPkXkA2TOXfXro3ZrI3ZOsdXrofXHPkXOXkYGl3WHlkXrT1WOP0WHTiXklkXkwEokEfZOPhXOl1WOP0WHTiXklkXkwEXrlfYOX0YOIiWOPkWHs0Yro1ZrPEXrPfYHAjZOTjZqhiXG40YOo2YkAkTPhiXq42YkT4XHT5WOPjWHo0YOw3YkXErOPhWHEhXkX2ZrAdXrPfXkw2YOA1ZqmOZq44XOT1XrE3YqhiXG4jYkT0XOX3TOEfYOEhYrX5XOsdXrTfZOTkXkP0Yjl3WHlkXrT1WOPjWHEjXkXiYOAEokXfZrl3XkE5XkEdXrTfZOTkXkP0YjliWHX3YqhiXN4jYHX4XrAiTOPfXkA1WOAfXrl2YrP2YkEEokPfXkA1WOXfZro5XHP2YOwEXj45XOAkZOIkZNhiWHX4ZrAiZOEkTOAfXOXiXHsdXq4kZOI3XrE4XjmOXrlfXOwhZOljYGhiWHX4ZrAiZOEkTOPjWHskYOl1YkodXj43ZrAhXOE5XGliXG42ZOl2XHIkWOwfZOTjXHsjYHXErOPiWHw4YksdYG44XHTjYrwiTPhiXj4kYOX3YqhiXN4iYkljXrsiTPhiYqh2WHEjXHT1YHPErOP0WHl1YHI3YkEdYG44XHTjYrwiTPhiYN4hYrw5YkA3WOwfZOTjXHskZOIEuGAExKJdzO0LT2xKxKxKxGA#nN9hwvpMnHhgxk48W3Y2xk4GWNUFw3paz24GZGUhzRQ5TGhGwuY0yu9fXGT6TLmFBvYJTGhGBSJhxqT6TLY2xjTdTLYHwuiJTHMGXq42TGhGA2YFzRtgBKtjTHMGWrPGWNUewvULyu4GZGThTOlEXjliXNTdTKULw29dz3UgBKtjTHMGXOmFxRtKTGhGwqT6THPGWNUFz3xJAGT6TG0iTGhGyuYgzLYjxvmdwvIGZHQ9WNUHz250AK9dv211BRsGZLdGz3UIxvTGZHAdTK9fTHMiWNUaw29fTHMGnSY2xjm3yup0yO0LXHlLTRFJyuBMBO0LXHlLnHiLTRxazRheALtdxr0LzK9fCKtjzjAExKJdzO0LT2xKxKxKxGAEBSUFzLYKz3UenqB0AKQfA2iFBRsMXqhEXqILnHihz2i5x29fTSmgyu50Ak0LXN4jYqliXG43YqlhWHT1TOsfXHsEYN43YkT5XrEjYjl1WHT1TOPiWHA2XkXkZOoEXN41ZOI3XrI5XksEXrPfYHl0YHsjTOP3WHohZrE4Zql0WHA2ZOw4ZOPkTOPjWHA1UjmKyuidnqAHxKxKxKxKUk48W3mgzSJLz24#nN9LnHhgA3xLnGTdTKJHz24jTHMGnSY2xjm3yup0yO0LXHlLTRFJyuBMBO0LXHlLnHiLTRxazRheALtdxr0LzK9fCKtjzjAExKJdzO0LT2xKxKxKxGAEBSUFzLYKz3UenqB0AKQfA2iFBRsMXqhEXqILnHihwvpMTRo9U00hWHT1WOPjWHA1TPhhWHT1WOsfXHsErOofYkAjZrP4XHAdYq4jYqmXXrPfYkwkXkX4YNhhWHs4ZrAiZrIkYqmXXrPfYHl0YHsjWOP3WHohZrE4ZqmXYN43YHE2ZOEiXjhiXG43YqmXXN4jYqhiXG43YqmyTP0iWHA1WOwfYksErOPfYksdXrPfXHsErOsfXHXiXkPiZOAdXrPfXHsErOPhWHPkXrP4YkEdXrofYrIhXrPiTPhiXN4jXkw2YHP2WOXfYOPhXHEhXOAErOsfXHT3XOEiYkXdYG43YqmXXq43Yqh2WHA1TQMLTRxazRh9UjYKxKxKxKwLnHhgARQ0yO48W2A#nN9kBKA#TGhGwuY0yu9fTHMGzvt0xqTdTKQHBRJgzHTGZGU1zK11BRsGWNU0CvmJTHMGA3xLTGhGAR9kyvpaz24GZGUHz250AK9dAj1jyuBMBNTdTK1FAKBazGT6THlEXNlkTOThTGhGA2YFzRsGZGThWHEGWNUFTHMGXqTdTKQgBKtjTHMGXqU9WNUHz250AK9dv3xgzStexqT6CjUgAKpJAGT6ZNhGz24GZHPdTLp5ARsGZGUkyRQhxqTdTKQHBRJgzGT6TLxgzStexqTdTKEGZHPjWNUjz3tfxRJfxjT6THlGWNUHBvY0z213yup0yNT6XqhGBjT6YrodTKPGZHPdTKQGxjT6THlfYNTdTKQgBKtjTHMGXNTdTKYgzR9jTHMGxKxKxKxKTGhGw29dz3UGxjT6TKxKxKxKxGTdTKYgzR9jz3xJAGT6TKxKxKxKxGTdTKFaxRsGZHldTKFaxRtgBvpeBvpJTHMiWNUjz3pFBRJgzGT6TGTdTKULARQIxRJfxjT6THPhTOPhTOPhTOPhTGhGwKAGZHldTKFFzKpdxqT6XNhGAR9kyvpaz24GZGUHz250AK9dAj1jyuBMBNTdTK1FAKBazGT6THlEXNlkTOlGWNUGx2YgzR9jTHMGXOlhXOlhTGhGwKBgTHMGXqTdTKULwqT6THlfYqTdTKFFzKpdxvYHwuiJTHMGXq41TGhGw3tkBR9exRtkyuBfTHMiWNUHBvY0z21IxvYax25kBKAGZGT8A3xLTSBaxSpMnqA5XSm4UjmMxuJLySo9UkTjASELTSxaxvBNz3E9Uj0jTN0iTOIhTOTjUjm2xvUkyu9fnqAiWHPLTSFezR5knqBMBSphZG8gB3B3WLAkWK9jxj8jXOlhW3Y2xjAECR1dzLX6CRiazKd9U2F0BSl6Wj93B3AfBkXfz3ULWkP5ZrIgCRiazKdLnJifTNlETOiLTSY0AK9cxr0LzK9fxqAEA3pjz2eJWvBaxSpMnqAiUjmKyuidnqBfz25JUjmKyuidWvU1zRs9U2t2xu5gxRoLTSY0AK9cxq1dyu5Jw2QhnqBkAvtFAKsLnJifTNlETNlETNl8ARQ0yNmInqBYXqh3WHPhYrojYkX2xq0iYqmXXqhjXNAEA3pjz2eJnqAHpIxRpIxRUjmkBSUgy2seB2JIBRE9UkPfYqA#nN9hwvpMnJifTNlETNlETNl8ARQ0yNmInqBYYGh3WHPhYrojYkX2xq0iYqmXYGhjXNAEA3pjz2eJnqAHpIxRpIxRUjmkBSUgy2seB2JIBRE9UkPfYqA#nN9hwvpMnJifTNlETNlETNl8ARQ0yNmInqBYXrPdYj4iXOs0XHAkYKseXrsErOPiWOThUjmkBSUgy2s9UjYRpIxRpIwLTSY0AK9cxq13yup0yO0LXq41Uk48W3mFBRE#vR4ETNlETNlETOihwvpMTRo9U00iYGh3WHPhYrojYkX2xq0iYqmXXrwdXHlLTSY0AK9cxr0LT0xRpIxRpGAEA3pjz2eJWvBaxSpMnqAiWHsLnHhgARQ0yO5AzGlETNlETNlEnSmFBREExO0LrrTiWOAfXrl1YOT3XkxJWrP1TPhjXqhjXNAEA3pjz2eJnqAHpIxRpIxRUjmkBSUgy2seB2JIBRE9UkPfYqA#nN9hwvpMnJifTNlETNlETNl8ARQ0yNmInqBYXHwdYj4iXOs0XHAkYKseXrsErOT2WOThUjmkBSUgy2s9UjYRpIxRpIwLTSY0AK9cxq13yup0yO0LXq41Uk48W3mFBRE#vR4ETNlETNlETOihwvpMTRo9U00kXqh3WHPhYrojYkX2xq0iYqmXXkPdXHlLTSY0AK9cxr0LT0xRpIxRpGAEA3pjz2eJWvBaxSpMnqAiWHsLnHhgARQ0yO5AzGlETNlETNlEnSmFBREExO0LrrX2WOAfXrl1YOT3XkxJWrP1TPhkYGhjXNAEA3pjz2eJnqAHpIxRpIxRUjmkBSUgy2seB2JIBRE9UkPfYqA#nN9hwvpMnJifTNlETNlETNl8ARQ0yNmInqBYYOPdYj4iXOs0XHAkYKseXrsErOoiWOThUjmkBSUgy2s9UjYRpIxRpIwLTSY0AK9cxq13yup0yO0LXq41Uk48W3mFBRE#vR4ETNlETNlETOihwvpMTRo9U000YGh3WHPhYrojYkX2xq0iYqmXYOwdXHlLTSY0AK9cxr0LT0xRpIxRpGAEA3pjz2eJWvBaxSpMnqAiWHsLnHhgARQ0yO5AzGlETNlETNlEvR4ETNlEnN9LnJifnN9kBKA#TL0dTKYgzLpjz2iDBRJexqT6CjUgAKpJAGT6YqhGz24GZHPdTKQHBRJgzGT6TLpazusGWNU0CvmJTHMGBRt4BNTdTLpJCSoGZGThZHlhTGhGxK9fBSYaCKsGZHPjWNUewvULyu4GZGThTOlEXjliYqTdTKYdyuYcTHMhWNUkxvmFAKQ0z3TGZGTgTGhGAR9kyvpaz24GZGUHz250AK9dAjTdTKPGZGTiTGhGxK9fBNT6TJUgwK90zjmOz25Ixu5kxuoGWNUdxvp0xvUkARQHyu5LTHMGXqU9WNUHz250AK9dv2p1AKQ0yu9fTHa7TK9jxRtjTHM2WNUgzGT6XqhGwuY0yu9fTHMGxStjwvpaz24GWNU0CvmJTHMGBRt4BNTdTLpJCSoGZGTeTOl6XOlGWNUKz250A2J6xqT6XrTdTK1FAKBazGT6THlEXNlkTOlGWNUHzRJHyjT6XNhGAR9kyvpaz24GZGUHz250AK9dAjTdTKPGZGThWHAGWNUKz250THMGsK9Gz3pgTPYgzKpJzLYJxNTdTKiJBSpJALYhwuYazKAGZGTiTL0dTKYgzLpjz2iDwLtKxKtjTHa7TK9jxRtjTHM5WNUgzGT6XqhGyuYgzGT6THihyLYIyvwEw2iFA3X9U2igwupJAGFjwu5IVqA#nN9hyLYIyvw#DSi8WKigwupJAGFjwu5IVqhEWKigwupJAGFjwu5IVraGxuxgAKsdTN5dz2QIxvTMAKQfxNI6wux0xvTECjmIyvYhzRQ5ZKUdz2YcZ2UgAKpJAG1jwupaBvX6TOshUrdEB2JIBRE6TOP1ASE7TRFJyuBMBOMEXrthCOdEWvBJwKeaBN1FzKJewvpaz24exKJdzN1ez2pJZGmGz3pMZjmFzKJewvpaz24exKJdzN1ez2pJZGmGz3pMZjleB2tGy2J0WuQfyu1FBRJgzHMEwu5azuQ0yu9fVSUFzKoaTOPfZSXEyu5Kyu5aBRsExuQkxq1azG1gBvo7TRQfyu1FBRJgzHMEwu5azuQ0yu9fVSUFzKoaTOPfZSXEyu5Kyu5aBRsExuQkxq1azG1gBvo7DqlfzR9FxRtjVSUFzKoaTSehz3YaBRJgzHMEAKtdwvpaBKs7TN13xuUcyvoewu5azuQ0yu9fWupJzRQ5ZGleXN4iYLX7TRQfyu1FBRJgzG1IxuiFCrMEWrlfXrxkZ30EWKigwupJAGFjwu5IVraGxuxgAKsdTN5dz2QIxvTMAKQfxNI6wux0xvTECjmHz250xu50ZGlLUkdEAR9kyvpaz246TRQGA29dBvpJZjm0z3l6XS0EWKigwupJAGFjwu5IVraGxuxgAKsECjmdxux0ZGleXkmhCOdEwu5azuQ0yu9fWupJzRQ5ZGleXN4kXLX7TS0EWKigwupJAGFjwu5IVraFxLpJAGm7TRiJxLo6TOXhASE7TS0EoReJCuxjwu1JAjmFzKJewvpaz24MAKQfxNIECjlhUqhEZOlJWNliXOlJTSdEwK94WvYMwupgBkMEXNleXrthCNlhTN0iWHYJzqlMw29dz3TaZjm9TOohUqm7TRUgCN1kyRQIz3A6TOlEWrP1ASEEXNlhTNFHz2igAGIEZjm9TS0GWNUFw3paz24GZGUGBuxKxvTGWNU0CvmJTHMGw3YkTGhGAR9kyvpaz24GZGUHxu50xvTGWNUkw2QdxqT6XqhGw2iaw2dGZHldTKFaxRsGZHPdTK5aw24GZGT0TL0dTKYgzLpjz2iDA2t0BRJfx3XGZLdGz3UIxvTGZHPhWNUgzGT6XqhGyuYgzGT6THikBKAEB2JIBRE9UkThUjmMxuJLySo9UkThUk48xjmKyuidWvU1zRs9U25gzLaJAK8LTSpjwu5kxK9jzr0LBSUFzLYdwvpJVOPdTOPaUk48ARQ0yNmInqBYZq45YrIjXrwkYGhhTPhiXq4hYkX0XksjWOTfYOTjZrEhYksErOPjWHl4YOT3ZNhjWHI3YHEkYHA1TPhiYN41YHs0XHwkWOPfZOw5XrT0YksErOP2WHlhXrX1YrXdXj4kYrA2YHw4ZqmXXrsfXrI3XHw0Yjh1WHE0XroiYkl5TPhiYq40Xrs0Yks2WOwfZOXhYHE0XksErOP3WHE3XkAhYHXdYj43ZOEkZrPiTPhiZNh5WHE0XHT5Zrs0TPhiYq41YrXkYrP0WOPhWHEhXOlhYHXErOP1WHl3XOE0YkAdXrPfZOX4YOl4ZqmXXrwfXOEiYHIhYqhiYN4kYOTjXOIkTPhiYN42Yrw2XOojWOP1WHEiXks0YkIErOPjWHP1XkP1YOXdXrofYkw5XHl0YqmXXrPfXOT3YOA2YGhiYq4jYOTjYOl4TPhiXN4hZOs1XrliWOP3WHwhYkw3TPh4WHl2XkEjYOs0WOP3WHAErOwfZrE0Xrl1YOAdXrsfXHE4YOl1ZNmXYq44XrT0YHIjWOP0WHA4XOAiYOEErOXfYOo2Xrs1YkodXrsfZOskYkAjXqmXXq45YHojYHEiXqhiYN40Xko1XkIkTPhjWHIjZrT3YrsiWOPiWHE4YOs3XkIErOTfXkw2XkPkYOsdXrlfZOTkXOT2ZqmXXNh5WHE5ZrI3YOEkTPhhWHljXkl0XOIhYHIdYj44XHXhYOs3ZNmXXG40YOw3YkP4Xqh2WHE0XHXiZOojTPhjWHI0XOAkYOX1WOsfZOoiYOP3XOIErOPfZOEkZrXjZrAdXj4kYrA2YHw4ZqmXXj4kXkPkXHl4YqhiWHE5XHT2ZrPkTPh1WHE2ZrE4YHw0WOTfZOI2XrohZOwErOwfZrAjYHo2YHTdXG40ZOl3YkI4TPh3WHIkYkskXOEdXN4hYOwhYOPjXrX2TPh5WHI1ZrTiYHX2WOlEuGmYZN44YOI5XkE3Xjh2TPX3WHT3YHlkXko1WOwEYGh3WHT3YHliXkT4TOwdZN44YOI5XkI3YNmOYGhiXN40XHX5ZOw3TOAfXHA2XOXkYOsdXrPfYjl4WHE0ZrIkZOAkWOPiWHAEokPhWHojXkI2YHwdXrPfYjliXq43WOPhWHojXkI4YHAEXrPfYjh4WHE0ZrIkZrA0TPXiXq43WOAfXHA2XOPkXHEEXrlfYOTkZrw2YGh2TOEfZOo5ZrX4YkXdYGmyUjmKyuidnqAHxKxKxKxKUj8#nN9LnHhgA3xLnGTdTKQHBRJgzGT6TLYJBSpazKBkTGhGAR9kyvpaz24GZGUHz250AK9dAj1jyuBMBNTdTK1FAKBazGT6THlEXNljTOThTGhGBSJhxqT6TLY2xjTdTKFIyuYgzGT6Xv0dTKYgzLpjz2iDARiFCuiaA3oGZLdGz3UIxvTGZHPiWNUgzGT6XqhGyuYgzGT6THikBKAEB2JIBRE9UkThUjmMxuJLySo9UkThUk48xjm0AKQfA2xgAK09U3pjwu5kzRQ0xqEjWNlkVqA#nSmFBREExO0LrrlfYkT0XOI5XrwdXq40YHA2Zrs0TPXhWHXjYOP5XOT0WOPfYOw3YHI1YNlhWOPfXrX5XrohYGlhWOlfYkXkZOo3YjmOXNhhWHXjZOs1YOEiTOlfXkT0XrIhXHodXNlhWHAjYOl5ZrP2WOlErOP1WHT3YrIhXOEdXNmOXrsfYHA1ZOl5ZNhhTOP2WOlfXkT4Yrs0ZOPEXrwdXN43XkX4YOA3TPXiYGhiWHPkZrP0XOwEXrsfYHA1ZOl5ZNhiWHo2Ykw5YroEXrsfXHA1ZrlhZNhiWHo2Ykw5YroErOlfYkT0XOI5XrwdXq40YHA2Zrs0TQMErrlfYkT0XOI5XrwdYN40YHA2Zrs0TPXhWHXjYOP5XOT0WOofYOw3YHI1YNlhWOofXrX5XrohYGlhWOXfYkXkZOo3YjmOXNhkWHXjZOs1YOEiTOlfXkT0XrIhXHodXjlhWHAjYOl5ZrP2WOXErOP1WHT3YrIhXOEdXjmOXrsfYHA1ZOl5ZNhkTOP2WOXfXkT4Yrs0ZOPEXrwdXj43XkX4YOA3TPXiYGh0WHPkZrP0XOwEXrsfYHA1ZOl5ZNh0WHo2Ykw5YroEXrsfXHA1ZrlhZNh0WHo2Ykw5YroErOlfYkT0XOI5XrwdYN40YHA2Zrs0TQMErrlfYkT0XOI5XrwdYj40YHA2Zrs0TPXhWHXjYOP5XOT0WOAfYOw3YHI1YNlhWOAfXrX5XrohYGlhWOwfYkXkZOo3YjmOXNh2WHXjZOs1YOEiTOlfXkT0XrIhXHodYGlhWHAjYOl5ZrP2WOwErOP1WHT3YrIhXOEdYGmOXrsfYHA1ZOl5ZNh2TOP2WOwfXkT4Yrs0ZOPEXrwdYG43XkX4YOA3TPXiYGh3WHPkZrP0XOwEXrsfYHA1ZOl5ZNh3WHo2Ykw5YroEXrsfXHA1ZrlhZNh3WHo2Ykw5YroErOlfYkT0XOI5XrwdYj40YHA2Zrs0TQMErrlfYkT0XOI5XrwdXrlfYOw3YHI1YNmOXN4kXHoiZrljYNhiXN40YHA2Zrs0TOldXrlfXrX5XrohYGlhWOIfYkXkZOo3YjmOXNh5WHXjZOs1YOEEXN4kXHoiZrljYNh5TOlfYkT0XOI5XrwdZqmXXrsfXHA1ZrlhZNh5TPXiYq42Yks4XOI4WOIEXrwdZq4kXHE1Yro4TOP2WOIfYkXkZOo3YjmOXrwdXrlfXrX5XrohYGliYq42Yks4XOI4WOPhWHo2Ykw5YroEXrsfXHA1ZrlhZNhiXN40YHA2Zrs0TPhhWHAjYOl5ZrP2WOPhWHo2Ykw5YroEuGmYXN43XHohZrIiYGhiXj40YHA2Zrs0TPXhWHXjYOP5XOT0WOPkWHo2Ykw5YroEXNhiXj4iXkIiYOl2TOldXrTfYkXkZOo3YjmOXNhiXG4kXHE1Yro4TOlfXkT0XrIhXHodXrTEXN43XHohZrIiYGhiXGmXXrsfXHA1ZrlhZNhiXGmOXrsfYHA1ZOl5ZNhiXGliYGhiXG4kXHE1Yro4TOP2WOPjWHAkXkE0YkAEokP2WOPkWHPkZrP0XOwEXrsfYHA1ZOl5ZNhiXj40YHA2Zrs0TOP1WHT3YrIhXOEdXrXfYOw3YHI1YNmXXN43XHohZrIiYGhiXj40YHA2Zrs0TQMLTRxazRh9UjYKxKxKxKwLWk48W2A#nN9kBKA#TGhGwuY0yu9fTHMGARiFCuiaA3oGWNUhz3YaBRJgzGT6TKiJxLoGWNUewvULyu4GZGThTOlEXNliXGTdTKULTHMiWNUkw2QdxqT6Xq41WNU0CvmJTHMGA3xLTGhGwu5azuQ0yu9fTHMGAR9kyvpaz24GWNUGx3mFxRpazKAGZGTkTOXEXjlkTGhGwKBFTHMhWHodTKULwu92xvTGZHlfZNhGBRJhTHMhWNUFTHMGXN43TGhGwu92xvTGZGTiTL0dTKYgzLpjz2iDxLtdzNT6CjUgAKpJAGT6XrTdTK9fTHMiWNUaw29fTHMGnSY2xjm3yup0yO0LXHlLTRFJyuBMBO0LXHlLnHiLTRxazRheALtdxr0LzK9fCKtjzjAEBSUFzLYKz3UenqB0AKQfA2iFBRsMXqhEXqILnHihwvpMTRo9U00iXN43ZOliYOT5WOlfYqmXXrwfYHl5ZrT4YGhhWHshYOE1YkP0XjmOXrwfZOX1YkE1YjhhWHshYOE1YkP0XjliYj4hYHw1WOlfYrIiXOAiYOT5TOP3WHTkYkAiYOXdXN43YHTjZOs3XroEokP3WHohZOIjZOwdXN45YOl3ZOs3XroEXrAfYOI1XrojZqhiWHP2YOTiYOT5TOP3WHo5YrP0XHIdXq4kZro5XHE1YjmXXrAfYqh3WHTiZrE1YkP0TPXiYj41WOAfYkl4TOP3WHl5ZOl3XrodZN4iXOA1TOP2WHwhZrIjZOwdZN4iXOA1TPXiYG4iXrEiYOT5WOEfXrl3YqliYq43XHPhYkP0WOAfYkl4TOP1WHAjXrl3XrodYj4jXrI4YrAiYNmXXrsfYkTiXOAiYNhkWHskZrX1YkP0TPhiXN41XHljZOs3WOEfYkX3YkP0XHIEokPhWHP3XrA4YrAdZq4hZOA0XHE1Yjl5WHwhZOX1YkP0WOIfXOE3YOT4YrAEZq4jYHTjZOs3Xqh4WHAkYkAiYOT5TPX4WHIiXHs3XrokWOEfXkI0XOAiYOXEZN45XrT1YkP0Xjh3WHEjZOTiYOT5TOIfXHwjXHE1YkPdYj40ZOo1YkP0XjmXXrofYOwhYHojZqhjWHT4XrX1YkP0TPhiXN43ZOliYOT5WOTfXHEiXks3XroEokPhWHT5XGhjWHT4XrX1YkP0TOIfZOI0ZrT4YrAdXq44ZOP4YrAiYNl5WHE5YOIjZOs3WOPfXkIhXOAiYOXEokIfZOI0ZrT4YrAdXN44ZrAhYkP0XHIEXrlfXHIjWOlfYqliXN43ZOliYOT5WOlfYqmyTP03WHTiZrE1YkP0WOP3WHsErOPfXkIhXOAiYOXdXrAfYOI1XrojZqmOXq4iYHojXrojZqhiYj40ZrsiYOT5TOlfZrXkYqhiYj40XOE5XHE2TOlfYkwjXHE1YkP0WOP3WHTkYkAiYOXEoklfYrIiXOAiYOT5WOP3WHl1ZrTiYOXEXN41XOo4YrAiYOXdXrwfZOX1YkE1YjlhWHshYOE1YkP0XjhiYG42XOshYkP0TPhhWHsdXrlfYkEhXrojZqmOXN41WOPhWHT5XGlhWHIhXrIjZOs3Xqh5WHE5XHsEXq4kZrlhYkP0Xjh5WHE5XHsEokPfZOEiZOs3XrodZq44ZrT1TOTfXHA4ZrT4YrAdXrlfXHIjTOTfXHA4ZrT4YrAdXrlfYkEhXrojZqmXXG4jYkE5XHE1YjhiYN40YHl2YOT5TPh3WHo3ZrAiYOT5WOIfXHwjXHE1YkPEokAfZOT4XHP0XHIdZN45XrT1YkP0Xjl4WHX5Xrw0XHE2WOEfZrPjYrAiYOXEZN43XkA3XrojZqh5WHT2XHT4YrAiTPX5WHl4YkojZOs3WOIfYHl1ZrT4YrAEZq4hZOA0XHE1YjhiXN4iYkP3ZOs3TOEfYkX3YkP0XHIdXrlfYrP1YOT4YGmXXj41XkIkYrAiYNhiYq43XrE2YOT5TPh3WHTiZrE1YkP0WOP1WHAiZOw0XHIEokAfYkl4WOP1WHAiZOw0XHIEZN4iXOshYkP0XjhiYG4iXrEiYOT5TOEfXrl1XOAiYOXdXrwfYHl5ZrT4YGmOZN4iXOshYkP0XjhiYj4iXOT5XHE2TOAfYkl4WOP3WHsEYj4jXrI4YrAiYNhiYj41TQMLTRxazRh9UjYKxKxKxKwLWk48W2A#nN9kBKA#TGhGyuYgzHTGZGT8A3xLTSBaxSpMnqAjXNAEyRtax2F0nqAjXNA#nRAExKJdzN1jBuiJnqBfz256xvUgUjmKyuidnqAHXOlhXOlhUjm0AKQfA2xgAK09U3pjwu5kzRQ0xqEiWNliVqA#nSmFBREExO0LrrP1WHAiZrE0XHEdZq4hXOP5YkX2YjmXZq44ZOA4XOPkZqh4WHI5YkPiYroEokIfYHwkXrP4YOPdZN45ZrAiXrs0TOIfYOXjXkwjZrTdZN45Xrl4ZOPiTOIfXHwiXrP4XOwdZN43XkI2XHAhYGmOZq4hZOI4YkXiZqh4WHs1ZrE3Xrl0TOIfXOlkYHokYrPdZN4kXkA2XOsiYGl5WHlhXkw0XksiWOEfXrl2ZOX3XjmXZN45ZrE3ZOs1WOTfXHEhYrs2XGmOZN45ZrE3ZOs1WOPfYkIjXjl5WHohXOA4YrE1WOPfXkIjYkl3XHoEZq44ZOA4XOPkZqhiWHX5XHAhYkT0TPXiXN4kZOl4ZOI0WOPfXkIjYkl3XHoEXrlfYkA4XOXiZNhiWHA5XHXEXrlfYkA4XOXiZNhjWHT4XOs1YHTErOPhWHA3ZOlkXrEdYq45YHP5Xrl4TPhiYq45YkI3YOw0WOlfYkwjXko2YHP2TPXiYG4kXHEkXOE2WOlfYOPjYrsiXrT4TOP2WHE5XrEkYkEdXN40XrT1YrPiXHEEXrAfXHX2Yks2YGhhWHA2XHX0YHwiYGmOXrAfYrE3Yko3ZNhiWHPhYHl2ZrT3TOP3WHs4YkA0YkEdXq42YkThYrA4TOP3WHTkYHA1YHwdXG4hXrs3ZOl0YqmXXrTfXOX4YHE1Yqh3WHTiZOI4ZOX0TPhiYq43XrI4YOT4WOAfXHP4ZrE4XkoEokP2WHThZOl3XHIdYj4jXrE5ZOEkYNliYG42XOsjXrsjWOAfYHP4YrEiXqliYG42XOsjXrsjWOEfXrPiYHI1YrAEokP2WHwhYrTiYrTdZN42XOo4XrlhYqliYG4jXOEhYkT5WOIfXOliZrAkYHAEXrsfYkP5ZOojZNh5WHlhXrI3Xkw3TQMErrTfXHEhXrs3XrAdZN45ZrEkXHI5YjmXZN4iXrTiZrE2Xqh5WHlhXkP4ZOT0TPX4WHXkZOl5YHl5WOIfXOlkXrE4XHoEZN41YHA2XkAhZNh5WHl4ZOThYkI4TOEfYkohXOI2YOsdZq4jYHl2Ykw1ZqmOZN45XrPkYOPkXqh5WHokZrTiZOlkTOEfZrI3YrAhZrIdZq42YHT2ZrE0ZNl4WHI5Yks3XOI5WOIfZOIjXHsiYkAErOIfXOljYOT5XOPdXrsfYkP5Yko3YNmOZq4hXOT0XHIhXqhiYG4jXOw3ZOIiTOEfYHlhYOT4YHsdXrwfYHl2XkEiZNl4WHPiXHP5ZOwiWOP2WHwhYHX4XrEEokAfYHP5XrPhYrwdXrwfYHl2XkEiZNl3WHTjXrI2ZOTiWOP2WHThYHA4ZrPEYj4jXHP5YHEjXqhiYq43XrI3YOA0TPh3WHTjXrI2ZOTiWOPjWHlkYkP3ZOXErOTfXOThXHskYHTdXrAfXHX2YkojYqmOXq42YkT5XOs4ZNhiYj41ZOA3YrT1TOPfXrl5XkA2YHAdXrAfYrE3YksjYqlhWHA2XkT0XkokYGhiYj4jXkw3YOT1TPXhWHoiXHT1XHP4ZNhiYG44ZrojXko0TOlfYOPjXHsjXrE4WOP2WHXjYklkXrXEXN43YHXjYOX0XkwdXrsfZrE0YrTkXGmXYq45YHT1XHIhXGhiXN43ZOliXOl3TPhjWHT4XOP1YkP3WOPhWHA4XOPhXOAEokPfYkIkXroiYHXdXrlfYkEhXrlhYjliWHX5YrI5ZrT5WOPhWHX4XOshZNliWHX5YrI5ZrT5WOIfZOE3XkIkYqmOXq4kZrs5ZrIjZqh5WHX5Yro5XkwEXq43ZrXiYOP2Xjh4WHI5ZOXjZrI3TOTfXHEhXrs3XrAdZN45ZrEkXHI5YjmyUjmKyuidnqAHxKxKxKxKUj8#nN9LnHhgA3xLnGTdTKQHBRJgzGT6TKx1zRikw3UJxu4GWNUFw3paz24jTHMGzK9jzuQdA2YjxutfTGhGBSJhxqT6TLY2xjTdTLmgA2J0yu9fTHMGw29fBSUgzSXeAKJLySoGWNUewvULyu4GZGThTOsEXjljXNTdTKPGZGTiTGhGA2YFzRsGZGThWHIGWNUFz3xJAGT6TG0iTL0dTKYgzLpjz2iDA3pFALoGZLdGz3UIxvTGZHPkWNUhz3YaBRJgzGT6TKYJzLpJAGTdTLYHwuiJTHMGYqTdTK9fTHMiWNUaw29fTHMGnSY2xjm3yup0yO0LXHlLTRFJyuBMBO0LXHlLnHiLTRxazRheALtdxr0LzK9fCKtjzjAEBSUFzLYKz3UenqB0AKQfA2iFBRsMYqhEXjILnHihz2i5zRJfxqmhz2JfBSX9UklfYrIkYksEXN40ZOokZNlhWHs2XHsEXrXfYrP1YHXEXrPfYOX3Yql3TOlfYrIkYksEXN40ZOokZNAExKJdzO0LT2xKxKxKxGAgnHhgxk48W3Y2xk4GWNUaw29fXjT6THikBKAEB2JIBRE9UkThUjmMxuJLySo9UkThUk48xjm0AKQfA2xgAK09U3pjwu5kzRQ0xqEhWNlhVqA#nSmFBREExO0LrrIfZrs0XrlhYHsdXq4hXrw5YOIiYqmOXrofZOE2YrAiYjhiWHliYHI0ZrP1TOP4WHE5ZrXkZrAdYq4hYHP4ZOs3YqliZN44ZrIkXkI3WOPhWHlkXkE5ZOXEokP4WHE5ZrXkZrAdXrsfXOl1ZrPhZqliYN44ZOw1YkP3WOP5WHl1XOE0YksEZq45YroiXOl2YqhiZq4hYrl4YOA1TPX1WHljXrwjZrs0WOP5WHl1XOE0YksEXq4hXOE4YHP1YqhiYq4hXOs5Xrl5TOPfXOl4ZOwiYrsdXrlfXOXkZOI4XjmOXq4hXOE4YHP1Yqh1WHl2XrE4YrA1TOsfXOTiYHT5YrodXq4hXrw5YOIiYql5WHI1YOPhXOw1WOPfXOP2Zro5XrsErOIfZrs0XrlhYHsdXq4hXrw5YOIiYqmyTP05WHIjXOo3XrIdXNmOYN40YOThYrw2YNhhTOldYN40YkAkXkXkXjlhWOPhTPXhWOP1WHsjXHw2YHAEYN40YOThYrw2YNhjXNl5WHIjXOo3XrIdXHlEokP1WHX5ZOE4YkTdXHlEXrIfZOohZrokZNhiYq41XHT2YHw3TOP5WHE0XOI0XkEdXrlEokP5WHE0XOI0XkEdYN40YkAkXkXkXjliYq4kZrE4ZOAjWOlEZq45XHl0YkP5WOlEuGmYXrsfYkX4YOw1ZNhiYN4jXkAiXHlkTPXiYq43Xrw5Yro4WOPkWHI2XrEjXrXEXrsfYOA3Xks0YGhiXj43Yrw1ZrEkTOP1WHThYOw2XOsdXrXfYkA3Zrs0ZqmXXrofYrliXOEkXqhiXj44Xko2ZOXiTPXiYG41XOA5WOPiWHX5YHAhXrAEXrwfXHI5XOA3Xjh3WHA2YrojYOl3TOPkWHI2XkI2ZOodYq41ZrPhYHTkXqmOXrPfYrsiXOE4ZNhkWHX0XkI1YOE1TOAfYkA0YkX4YHodXj40Zrs0YrT3Yql1WHs0YrE2XrX2WOsfZrT5XOI2XrsEokXfXkP3YHo1ZrAdZN4kYHThYkTjTOXfYOw3ZOIjYOIdXrTfXrw5ZOA0Zql1WHE4XrPhXklkWOP0WHoiYHI4XHXEokwfZOE1ZOX1XHwdXrsfXksjXkXiYGl4WHP5XOAjZrs2WOP1WHIiYOT3YrXEZq41Yro4YHP5YjhiYq45ZrIhXkoiTPX5WHEjZOs0ZOI0WOP2WHliYHl1XHsEXrlfXOwkZOo2ZqhiYq44XOwiYrA5TOPhWHl4XOAjYOEdXrsfYrXhXrIiYqmOXrlfXOI3ZrXkYjhiYq4jYro1YrE3TOIfZOE5YkAjYkodXrsfXOP2XHI5Zql5WHwiYrA1YOEjWOP0WHI5ZrI0ZOIEokEfYOA5YHX5YHIdXrofZrT5YrX5Xql3WHX5XHP3XHw0WOP0WHo2XrX2XkIEYG41Yro4Zrs3YjhiXj42ZOP1Xrw4TPX0WHs0Xko0YrAkWOPiWHEhZOEiYGl0WHoiZOw4Xrs2WOEfYHX2XOX2YNl2WHT3YrIiXkEiWOwfYHl4Xrw3XOIEokEfXrXjZOP1Xqh0WHs4XOT5YkA2TOPiWHT3ZrX4YksdYN40YrX4XHAhYGliXj4jZrl1XOw2WOwfXkT2ZOwiYrXEokP1WHTiYOT1YkAdZN4iXrEiYOl1XjliYq40XOAiZrs0WOPiWHl5Ykl0XHIEXrXfYkI1XrE5XjhiXj4iXHAjYOEiTPhiXj43Zro4YrE0WOPjWHo2YrE2XjmOXrXfYkI0ZOs4YNhiXG4iZOI4Zrw2TOPkWHs3XHo2YkPdXrPfZrw1XkP5XjliXj4jZrE3ZOliWOPiWHI2Yrw1XjmOXrXfXOT0XrlhXjhiXq45YHs2YrXEXrTfZOljXOodXrTfXrIhXHXhXjliXG44XOTkYkl5WOPjWHo2YHP5YHAErOPjWHEhXHX3XOIdXrofYOXkYHw3XqmOXrTfZOljXOodXrofYrAkXrsiZqliXG44YHl2XrwjWOP0WHAhYHT5YHsEXrTfZrwiZOEkZNhiYN44XOPhYHwiTPXiXj4hYHX0ZOTjWOP0WHE5YrEkYrEEXrXfXHlhXrwhXqhiYN45YOX1YrokTOPkWHXkZOP2XrIdXrofZrXjYrojXjmXXrsfXHEjYkwjXGhiYN43YkwkYkT3TPXiYq41Yrw0YOIiWOP0WHA1YOliYrPEXrsfYkwhYHX4ZNhiYN41XrT3YrXEXrsfYkX4YOw1ZNhiYN4jXkAiXHlkTQMLTRxazRh9UjYKxKxKxKwLnHhgARQ0yO48W2A#nN9kBKA#TGhGwuY0yu9fTHMGARiFCqTdTLp5ARsGZGUkBKAGWNUGxjT6XNhGwKBHz2igAGT6THlhXOlhXNTdTKULzjT6XqhGwKBhwupIyu5LTHMGWrPEWrPEWrPEWrPGWNUaw29fzuQjx2JfTHMGXNlhTOlEXNTdTKULwqT6THPGWNUGx2QgBKtjTHMGWrPGWNUkw2Qdxu92xvTGZHTfXqhGyRJIxqT6XqhGyRJIxu9fARiFCqT6XqhGyRJIxu9fCu91BStGxqT6XqhGwqT6THlfYGTdTKQgBKtjTHMGXqTdTKFaxRt1zLpazRtfxRtITHMhWNUFzKJewvpaz24GZGUkw2QdxqTdTKFaxRtFxLpJALY0wvU0THMhWNUaw29fA3UJARiFCqT6Xv0dTKYgzLpjz2iDzRJ2xqT6CjUgAKpJAGT6YNhGz24GZHPdTLpJCSoGZGUdyvxJTGhGzRt0BRtjA3mFw2JfxjT6XGhGwuY0yu9fTHMGzRJ2xqTdTLp5ARsGZGU0xvF0TGhGyRQfxNT6XNhGw2iaw2dGZHldTKxgzLpkyvaJTHMiXNhGzuQjx2JfTHMGXNlhTOlEXNTdTKPGZHlfYqhGyRJIxqT6XqhGyRJIxu9fBK9ITHMiDqhGw29fBSUgzQ9kBR9hTHa7TK9jxRtjTHMiYNhGz24GZHldTKJHz24GZGT8A3xLTSBaxSpMnqAjXNAEyRtax2F0nqAjXNA#nRAEBSUFzLYKz3UenqB0AKQfA2iFBRsMYNhEYNILnHijxuY0TSE9UklLTSI9UklLTSBaxSpMnqAiXGAEyRtax2F0nqAiXGAExKJdzO0LT2xKxKxKxGAgnHhgxk48W3Y2xk4GWNUFw3paz24GZGUkBR9hTGhGBSJhxqT6TLY2xjTdTKULTHMhDqhGw29fBSUgzQ9hAKt2THa7TK9jxRtjTHMiYqhGz24GZHldTKJHz24GZGT8A3xLTSBaxSpMnqAjXNAEyRtax2F0nqAjXNA#nRAEBSUFzLYKz3UenqB0AKQfA2iFBRsMYq41WNl1VqA#nSmFBREExO0LrrEfZrI5ZrIdXrlfYOX3YOIErOEfZrI5ZrIdXrlfYOX3YqmXXGh1WHTiZOA1TPh4WHI5ZrI5WOlErOEfZrI5ZrIdXrlfYOX3YOIEuGmYXNhhTPhjWOlErOTdXrlfXHo5ZOXErOldXrlfXHo5ZOXErOldXNmyUjmKyuidnqAHxKxKxKxKUj8#nN9LnHhgA3xLnGTdTKQHBRJgzGT6TLmjxvwGWNU0CvmJTHMGA3xLTGhGA2YFzRsGZHPfXGhGAR9kyvpaz24GZGUHz250AK9dAj1Gz3p0z20GWNUewvULyu4GZGThTOlEXNliYqU9WNUHz250AK9dv25JCSoGZLdGz3UIxvTGZHP2WNUgzGT6XNhGyuYgzGT6THikBKAEB2JIBRE9UkThUjmMxuJLySo9UkThUk48xjm0AKQfA2xgAK09U3pjwu5kzRQ0xqE1WNl1VqA#nSmFBREExO0LrrlfYOw5YOEdXuseXOsErOlfYOw5YOEdXuseXOsErOlfYOw5YOEdXNmXYj40YHI0Yjh1WHTiZOA1TPhhWHo2Zro4WOPhWHokYksErOlfYOw5YOEdXuseXOsEuGmYYj41Xkl1XGhhTPh5WHskXOsjWOlErOIfYrXhYrTdXrlfYHT0ZOTErOAfYrXhYrTdXrlfYHT0ZOTErOAfYrXhYrTdXNmyUjmKyuidnqAHxKxKxKxKUj8#nN9LnHhgA3xLnGTdTKQHBRJgzGT6TK5JCSoGWNU0CvmJTHMGA3xLTGhGA2YFzRsGZHPfXGhGAR9kyvpaz24GZGUHz250AK9dAj1Gz3p0z20GWNUewvULyu4GZGThTOlEXNliYqU9WNUHz250AK9dv3YMwvUJTHa7TK9jxRtjTHMiYjhGz24GZHldTKJHz24GZGT8A3xLTSBaxSpMnqAjXNAEyRtax2F0nqAjXNA#nRAEBSUFzLYKz3UenqB0AKQfA2iFBRsMXqhEXjILnHihwvpMTRo9U00iXN41XHT3YrlkWOPjWHX0ZOoiXHEErOPhWHsjXHA1XOXdZq4kXOXkZrohXqmOYq41Xkw1ZOw0ZNh5WHPiZrshZOI4TOTfYrX0ZOl5ZOIdXrPfXkE5YHI4XqlhWOPkWHIiXHskXOsEokldYj45Xrs5XHsiZql1WHTjYHI2ZOA3WOXfXrIjYkP1XkwEXrlfYrTjYkshXjhkWHPkZrE2XOPErOPhWHsjXHA1XOXdXN4iXrA2YOAhYrIErOP4WHlhXks4XrEdYG4jXkXhXHI5XjmXXrlfYrTjYkshXjhiXG4kYOE0XrT4TQMLTRxazRh9UjYKxKxKxKwLWk48W2A#nN9kBKA#TGhGwuY0yu9fTHMGA2FFAKsGWNU0CvmJTHMGA3xLTGhGAR9kyvpaz24GZGU0z3leAKJLySoGWNUewvULyu4GZGTiYqliYqlhTOlGWNUGxjT6XqhGwKBgTHMiWNUkw2QdxqT6XqhGwKBhwupIyu5LTHMGYGl2TOwEYGTdTKULwqT6XN4kWNUGx2QgBKtjTHMhWHwdTKQfyu1FBRJgzGT6TLmgA2J0yu9fTGhGxuQkxqT6TKtdwvY0yuXGDqhGzRQfxjT6TLU1TGhGAK91zKpazKAGZHldTKigxjT6XNhGxK9fBSXGZHPdTKxgzLpfwu1JAjT6TJUgwK90zjmOz25Ixu5kxuoGWNUkxvp0yu5LAjT6CjUkxvp0yu5LAkoGZHPdTLYJBSpazKBkYRQHBRJgzGT6TLYhxutITGhGzuQjx2JfTHMGXNlhTOsEXNU9WNUKyuiJTHMGuko4XSmBySp0ASX6Wj9hzSUbAj5Hz20gA2QeARiJWK1hYNizYkThAQ1MBSphAkMgW3mdAKakWKYgzq9kwu1hzRsfzvl0WQdiXOEhAQ1MBSphAkMgW3mdAKakWKYgzq9kwu1hzRsfzvl0TL0=',
        u2: '',
        u3: '',
        u4: '',
        u5: '',
        u6: '',
        u7: '',
        u8: '',
        u9: '',
        y: 'xx???x=xx??x?=',
        p: '{partners}',
        isflash: -1,
        brand: "playerjs",
        brandurl: "//playerjs.com",
        motions: [],
        dt: true,
        pr: true,
        ga: false,
        ab: false,
        gatracked: [],
        pjsga: false,
        pltxt: '//.txt//',
        files_quality: [],
        files_audiotrack: [],
        files_subtitle: [],
        files_channel: [],
        plhistory: [],
        rightclick: 0,
        vastclick: false,
        focus: false,
        start: false,
        start2: false,
        metadata: false,
        subtitle_on: false,
        starttimeout: false,
        thumbs_on: false,
        noads: false,
        airplayed: false,
        timerInterval: undefined,
        toolbarInterval: undefined,
        toolbarhidden: false,
        reloaderTimer: 0,
        timerTime: 200,
        tagvideo: false,
        controlover: false,
        doctype: document.doctype,
        logos: {},
        files_speed: [],
        files_scale: [],
        files_sleep: [],
        gifed: [],
        time: 0,
        timeld: 0,
        casting: false,
        dk: -1,
        current_speed: 3,
        current_sleep: 0,
        vastgo: 0,
        reloadTimer: 0,
        mediascale: {
            x: 1,
            y: 1,
            x0: 1,
            y0: 1
        },
        sub_options: ["sub_sizeproc", "sub_color", "sub_color2", "sub_bgcolor", "sub_bga", "sub_shadow", "sub_weight", "sub_bottom"],
        vast_impressions: 0,
        vast_impressions_all: 0,
        vast_starts: 0,
        vast_longtimeout: 0,
        vsts: ['preroll', 'pauseroll', 'postroll', 'midroll'],
        adsfirst: true,
        overlays: [],
        stuck: 0,
        acted: false,
        quartile: [false, false, false]
    };
    var default_style = {
        but: {
            w: 20,
            h: 20,
            action: "-",
            action_back: "-",
            a: 1,
            aover: -1,
            color: "ffffff",
            type: "",
            scale: 1,
            scaleover: -1,
            rotation: 0,
            tip: 1,
            icon: "",
            text: "",
            font: "Verdana",
            fontsize: 12,
            letterspacing: 0,
            position: "controls",
            margin: "0 3 0 3",
            marginproc: "0 0 0 0",
            click: 1,
            clickmargin: "0 0 0 0",
            normalonclick: 0,
            hand: 1,
            bg: 0,
            bgo: 0,
            bgstretch: 0,
            bga: 1,
            bgaover: -1,
            bgcolor: "000000",
            bgcolorover: -1,
            bgpadding: "0 0 0 0",
            bgborder: -1,
            bgbordercolor: "ffffff",
            iconscolor: -1,
            iconscolorover: -1,
            animation: "none",
            target: "_blank",
            tip: 0,
            tipbgcolor: "000000",
            tipbga: 0.7,
            tipbgrounding: 0,
            tipcolor: "ffffff",
            tippadding: "5 5 5 5",
            tippmargin: "0 0 0 0",
            tipa: 1,
            tipfont: "sans-serif",
            tipfontsize: 10,
            tipletterspacing: 0,
            tiptext: "",
            linetipmarginbottom: 5,
            toptip: 0,
            hidden: 0,
            stripsw: 2,
            stripsspace: 2,
            linespeed1: 0.2,
            linespeed2: 0,
            linespeed3: 0.1,
            pointed: 0,
            pointcolor: "ffce00",
            pointa: 1,
            pointw: 5,
            gradientcolorbg: "000000",
            gradientcolorload: "ffffff",
            gradientcolor: "ffffff",
            ontop: 1,
            clickscalex: 1,
            clickscaley: 1,
            rounding: 0,
            handle: 0,
            handle_width: 20,
            handleicon: "<svg width='20' height='20'><g><ellipse ry='5' rx='5' cy='10' cx='10' fill='#fff'/></g></svg>",
            handlea: 1,
            handleaover: -1,
            handlehide: 0,
            handlescale: 1,
            handlecolor: -1,
            slidespeed: 0.1,
            link: 0,
            linkurl: "",
            linkpause: 0,
            linktarget: "_blank",
            src: "",
            hideonwidthlimit: 700,
            hideoverwidthlimit: 700,
            displayvolume: 0,
            value: 0,
            valuecolor: "ffffff",
            valuebg: 0,
            valuebgcolor: "000000",
            valuesize: 9,
            valuemargin: "0 0 10 0",
            valuepadding: "0 0 0 0",
            valuerounding: 0
        }
    };

    function prtObj() {
        return true
    }

    function fd2(x) {
        var a;
        return a
    };

    function fd3(x) {
        var a;
        return a
    };

    function fd0(s) {
        if (s.indexOf('.') == -1) {
            s = s.substr(1);
            s2 = '';
            for (i = 0; i < s.length; i += 3) {
                s2 += '%u0' + s.slice(i, i + 3)
            }
            s = unescape(s2)
        }
        return s
    };

    function optStr() {
        if (o.u != '') {
            v = UpdateObject(v, JSON.parse(decode(o.u)))
        }
        if (options.indexOf("#2") == 0) {
            options = JSON.parse(fd2(options))
        } else {
            if (options.indexOf("#3") == 0) {
                options = JSON.parse(fd3(options))
            }
        }
    }

    function SettingsTimers(x) {}

    function Touch(y, event) {}
    var Alert = function() {
        var xbg = createElement("div");
        o.frame.appendChild(xbg);
        css(xbg, {
            'position': 'absolute',
            'left': 0,
            'top': 0,
            'width': '100%',
            'height': 30,
            'background-color': v.alertsbgcolor,
            'opacity': v.alertsbga,
            'display': 'none'
        });
        var x = createElement("div");
        o.frame.appendChild(x);
        css(x, {
            'position': 'absolute',
            'left': 0,
            'top': 0,
            'width': '100%',
            'color': v.alertscolor,
            'font-size': v.alertsfontsize,
            'padding': (v.alertspaddingv + 'px ' + v.alertspaddingh + 'px'),
            'display': 'none'
        });
        this.txt = function(text) {
            x.innerHTML = text;
            show2(x);
            css(xbg, {
                'height': x.offsetHeight,
                'display': 'block'
            });
            xbg.style.zIndex = "997";
            for (var i = 0; i < x.getElementsByTagName('a').length; i++) {
                x.getElementsByTagName('a')[i].style.color = '#fff'
            }
            x.style.zIndex = "998"
        };
        this.close = function() {
            hide2(x);
            hide2(xbg)
        }
    };
    eval(function(w, i, s, e) {
        var lIll = 0;
        var ll1I = 0;
        var Il1l = 0;
        var ll1l = [];
        var l1lI = [];
        while (true) {
            if (lIll < 5) l1lI.push(w.charAt(lIll));
            else if (lIll < w.length) ll1l.push(w.charAt(lIll));
            lIll++;
            if (ll1I < 5) l1lI.push(i.charAt(ll1I));
            else if (ll1I < i.length) ll1l.push(i.charAt(ll1I));
            ll1I++;
            if (Il1l < 5) l1lI.push(s.charAt(Il1l));
            else if (Il1l < s.length) ll1l.push(s.charAt(Il1l));
            Il1l++;
            if (w.length + i.length + s.length + e.length == ll1l.length + l1lI.length + e.length) break
        }
        var lI1l = ll1l.join('');
        var I1lI = l1lI.join('');
        ll1I = 0;
        var l1ll = [];
        for (lIll = 0; lIll < ll1l.length; lIll += 2) {
            var ll11 = -1;
            if (I1lI.charCodeAt(ll1I) % 2) ll11 = 1;
            l1ll.push(String.fromCharCode(parseInt(lI1l.substr(lIll, 2), 36) - ll11));
            ll1I++;
            if (ll1I >= l1lI.length) ll1I = 0
        }
        return l1ll.join('')
    }('10a381u212a27333918263o01311o273z2q1b3x3e1b3q01112m3o01322m3x3s37262v323n11323a251q273521162z2x25211c3s2911113a231s2735211422381y11101611153x292q1921261s3u2v212p1z3w262e153v2b2q19312411121o253c1i3e2b38162x3u12111m280y121139233x213b36182x3u121z1o3e182v39233x2b233v3b233x2b213x11113u2711322u291s2u291r2q1g27322q3e1x23141b3x1z1132243514212q1b3x1z1k1v35211b223p2e113u2o211q1g25211q1o251z1s273t193z26162e1e3c2b381c3y29341x3w2u3o3u39223b3p3732291914211611121m253e1q111z3w262e1d353a3x111z21141i1j1h183f1m1g1j1d1j3e181e1t3e1e1g1b3d143g1m3g1k1e1y1g121d172e1t2e102e1w2e1z2c1t2f1u2e1s1e172e1t2e1y2e1u2e152e1v3g1u2c1u2e1k2e1u1e112e1u1c1x2e1s3f1w2e1v2e1t2c1s2f172e1t2e1w2e1s2c1e2e1u2g1t2e1w2f1r2c1s3g1x2e1s2g162e1u2e1y2e1t3g1z2e1u1e1s2c1s2g1v2e1t2e1x2e1t2c1v2e1s3f1w2e1w2e1q2c1s3g1h2e1s2f1b2e1s3d102e1s2f182e1u3f1h2c1s1f172e1s3g122e1s3d172e1u3f1u2e1u3f192c1s3f1t2e1s2f192e1u3d1v2e1s3f192e1v3e1c2c1s3f182e1u3f102e1s3d192e1u3f182e1u1f192c1u3f1e2e1s3f192e1s3e1r2e1s2f192e1u3f1c2c1s3f192e1s3g1y2e1s1d172e1s3f192e1u3f172c1s3f1b2e1s2e1w2e1s1c1f1e1b2f1e3g1e1e1i1d1m3f1r3d1c3f1e3f1i2d123f1l2f1c2f1r1e1b3c1f3f1c1f1p1g1e1g1q3e1f1e1f1f1c3e1f1f161e1s1f1b1f1c3f1e3g1g3d1g2e1f1e1d3e1e1g1m3c1f1e183f133g1j2e1b1d1k1f1d1e1g3g1l3g1j3e1j1g141f1e3f1r1g1m1e1i1g1b2e1c1g1j3d1d2d1c1e1s2g1c3f1h3f123c1f3f1f1e1p3f1q3e1d3e181f1d1e123e1d1f191d1f1f1d1f1j1g1e2e1l2c1f1e1f1e1d3f1e1e181b1f1g1h1f172e1v1e1h2c1u1g1m2e1s2e122e1t2c1h2e1w2g1v2e1w3e1q2c1u3g1v2e1s2g1l2e1s2e1f1e1u2g1q2e1v1g1j2c1u2f102e1t1e122e1t3c1t2e143e142e1x1e191d1r143g1f2d183g1r3e183e1u3g1a1e1i3e1j1e1j1e1h2e181b1g3f142e1s2g1t2e1u2d1r2e1s3g1v2e1s2g142c1u2g1y2e1r2g1z2e1s1c1s2e1s2g1t2e1t2e1v2c1t2e1v2e1q3f1w2e1u3c1q2e1s3g1f2e1s2e1z2c1s2e1e2e1q1e1i2e1s3c1z2e1u1e1t2e1u1f1r2c1t1e1g2e1q1f1x2e1t2c1m2e1u1g1t2e1t2e152c1u2e1y2e1q3e1e2e1u2c1r2e1s1f142e1u3e1g2c1s3f192e1s3f162e1s3d172e1s3f1c2e1s1f192c1s3f1v2e1q3f192e1s3c182e1s3f172e1u3g1b2c1s3f182e1q3f182e1s3d192e1u3f1t2e1s3f182c1s3e1c2e1q3f192e1t3e1d2e1s3f172e1s3f1k2c1s1f172e1s3g1c2e1s3d192e1u3e1o2e1s1f172c1t3e1i2e1q3f172e1s3d1e2e1s3f152e1s2e1z2c1s1e1k1e163f1k1g1j1e1f3e1i3f1k3f1r3d1f3e1f1f1b3g1f3f133f1l1c1i1f1h3f1e3e181e1f1d161g1f1g1h3e1d1e1g3d141g1h3g173f1f3f1s1e1m3e1f1e1b3f1s2f1m1c1b3e1f3g1a1e1m1g1f1e1j3g1d3e1q1f1m1g1m1e1m1g1m1g1d3f1k3f181c181e142f1b3f1d1e1m3c1f1f1g1g121g1f2e1g3c1d3g1f3f1d3e1i3e121c161g1k3f1f2e1s1g1q3d1f3g183g1i1f151f1k1c1f1e1d3f1q3e1f3f1s2e1l3e1d1e1u3f142e1u2e1h2e1u2e1p2e1s2f1k2c1s2e1t2e161g1k2e1s3c1y2e1u1e1d2e1s1g1y2c1u1g1k3f1s1e1w2e1u1e1l2e1s3f1d2e1s2f1f2c1s1e103e142f1v2e18121m1q1r1g1c1e1m2g141e1e3g1j1f1e3g161f1i1e1j1g1v2e1i1g1y2e1r1e1g2e1w1e1u2e1v2e1k2c1u2e182e1s2g1r2e1s1d192e1w2g1p2e1w1g1x2c1s2g102e1s3f122e1s3c1w2e1u1f1k2e1t2g1v2c1t3g1i2e1s2e1w2e1s1d1r2e1v3g1t2e1u2e1w2c1s3g1g2e1u1e112e1s3c1r2e1w2e142e1u2g1m2c1u1e1m2e1u3e1j2e1u3d1z2e1u3e1z2e1v1f1u2c1s1f192e1t3e182e1s1d182e1w3f182e1u3f172c1s3e1d2e1s3f192e1u3e1t2e1u1f192e1u3f1e2c1s3f192e1s3g182e1s1d192e1u3f1g2e1u3f172c1u3f162e1s2f1b2e1s3d1z2e1u1f192e1u3g1w2c1s3f1b2e1t3f1d2e1s3d172e1u3e1b2e1u3f182c1t3f1b2e1s1f192e1t3c192e1u3f172e1u3f192c1s2e1w2e1s2e1y1e1f1c123e181e1k3g1d3e141c121f162g1s2e1d3e1q1c183e1e1e1g3g161g1h3e191f1e3f1s1g1r3e1d1c1f3f1u2f1p1e1d3e1d3d1c1e1r1g1c1g1e3g1f1c1s1f1e3e1d1f181g1s1d1b1f1l3f1c3g1i3f1g2c1f1e1s3f1c3f1l3f183d142e1c1e1c3f1e3f183e1f1f1r3e121f163e1e1c1d3f1u3f1i1g1e3g1m1e1d1e161e1s3f1r3e181c1t1e1e1g1g1g1k3f171e1e1e1q1e1c1e1e2e1s1d1f3f1r1g1c3e1m1g1m3c121f1v3e1y2e1u2e1u2c1t1g1w2e1t2g1z2e1t1c173e1t1e172e1v2e1i2c1u2f1j2e1u1e1v2e1f3c1u2e1v3g1t2e1v2e1j2c1u1g1s2e1s1e111e1s3c1u3e1w3e1t1e141f1e1j2q2t1m1q1c1d2h241o', '3a7d7o3o1v3s221c271u3b3v211b3q01101o25213q193x3c1k1b3v111i1c21173u3w11311411133x3b2o1930261u3s2v302p113u263c153x392q1722361z311m253e1g3e29381y2v3u1z121o260y1z122b213x3z2b381w2x3s11121m3e162v212n11303a251q27332e162z2x232e182s291z113a231s25353e1421361y1c2s291w2u29163u271u3u271q3c113w26111z3w281z3w243u3o3o011z213b3w141m272e2o111x23141z121m273e2o2o35223q1z313z2b233v3236163q0z1e1c2v2e292q122u11101f3z1q112z3a23373w253w253t1536231z113a37113z161j1z1e1m2e182t312p2e2b213x3z2q1i27333c2b3y121o121h1e1d1f1c1e1h1c142d1m1e1a2g1k1e1a3e1a1e171g1i1e1i1f1f2c1u1d1t2e1r2g1r2e1s2c1y2c1u2g1c2e1s1e1z2c1u3c1t2e1s2e122e1s2e1r2c1w1e1i2e1s3e1h2c1w2d112e1q3e1x2e1t1d1w2c1u1f1s2e1q2e1u2c1v3e1x2e1s2e1t2e1u2e1b2c1w1f1w2e1r2g1q2c1u2d102e1r2g1j2e1t1c1w2c1v2e1q2e1q2e1y2c1u3c1b2e1s2g1y2e1s3c192c1v3g1r2e1q2f172c1u3d1z2e1q3f152e1s3d1d2c1u2f172e1q3f1a2c1u1d1b2e1r3g142e1s3d1a2c1u3f1t2e1q2f172c1v3d1e2e1q3f162e1s3d162c1u3f172e1s3f1a2c1u3d1a2e1q3f1f2e1s1d1b2c1u3f1b2e1q3f172c1u3d1v2e1q2f172e1s3d182c1u3f152e1r3e1i2c1u2d192e1q3f172e1s3d192c1w2e1s2e1q2e1e1c1h1c1r1g1a1e1i2f1d3c1d2c161e101f123f1s3d1e1e1w1f1u2f1h2f181d141b1e3g1c3f1k1e1b3c1e3d1l3f113f1j1e1i1d1j3d1i2e161e1d2f161e1u1d1l3e1d1e1e3g141d1j3e1b3f1d3f1q1g1m3c1e1c1e3f1d3f1d3f1f3d1e3d1e1f192f1c3f1e3d1d1e1u3e1d1e121f1s2e1h3d1t3d1d3f1d1e1f1c1a1c1e2g192e1a1f1b3d1i2c1e2e1d1g1i1e1d3c1i1d1i2e1h1f1r2e1s1d1l3c1f3f161e1b3g1i1d1h1c1i3e1r2g1j2e1u2d1k2c1u1g1y2e1r1g1x2c1v1c1z2e1s2f162e1t2e172c1u3e1r2e1r2e1y2c1h2c1u2e1q1e1f2e1t2c1v2c1w1e1i2e1q2g1a1c1u2d193e1q2f1d341g1c3g173f1q1c191c133g103e121g1i3d171e1e2g1i1e1v3g1i3e152c1t3g1t2e1s2e1v2c1u2e192e1s1f1w2e1t2e1q2c1s2f1w2e1r2g1l2c1t1c1u2e1r2e1q2e1s2c1y2c1s3e172e1s2g102c1s3c172e1r3g1x2e1s2c1w2c1u1e1j2e1r2e152c1s1c1l2e1q3g1d2e1u1c1e2c1s3g1e2e1s1f1x2c1t2e1j2e1s2g1r2e1u2e1z2c1s2e1a2e1s1e1x2c1u2c1h2e1q1f162e1u3d1a2c1s3f172e1q3f1a2c1s3d192e1s3f1j2e1s3d192c1t3e1b2e1q1f182c1u3d152e1q3f152e1t3d1d2c1s3f162e1s3g102c1s3d182e1q3f172e1s3d182c1s3e152e1q3f172c1s3c1d2e1q3f152e1s3e1l2c1s3f172e1s3g1f2c1s3d172e1q3f1h2e1s2d182c1u3f1c2e1q3f172c1s3d1b2e1q2e1x2e1s2c1k1c1h3e1d1f1c1e1h3b1f3d1f3e192e123e103b1d3e181f171g1d1g1g3d1g3c1f3f1d2g1i3e1l1c1i1d1h1f1a3e1f3e1b1d1k3d183f1d3e181g1g3d141d1h3e101g1u2f1j1d181c121d1b3g1c3g1m1c1b3c1f3f1h3g1c3f1e3e1e3d1e3e1d3f1d1g1k3e1k3d1w1f122e1c1e1b3c1d1e1h3f1k3e1w3g1f2e132c1a3f122f1d3e1g3c1i3c1f1e1q2g1k1e1c1e1b3d143g1b1g1g1g1k1e1h3c121f123e181g1r1e1b3c1e1e162e1s1e1v2c1t3c1s2e1q1e1w2e1t1c1t2c1s1f1k2e1r3f102c1t2e1h2e1s2g1j2e1u2c1f2c102e1k2e1q2e1l2c1s2e172e1q2g1r2e1s1c1k2c103e1v2e1r3e1h121h1d1i1g1e3g1s1g1l2d1d1c1l1f171f1d1f1f1c1l1c1w1g1j3e1q3f1g2c1u1c1k2e1q3e1x2e1w2c1x2c1w1f1p2e1r1e1i2c1u1d1z2e1r2e1k2e1w1e1x2c1v2e132e1s2e102c1u3c1g2e1s2e1p2e1u1d182c1u2e1s2e1q2g1m2c1v3c112e1s3g1w2e1v2c102c1u3f1i2e1q2e1a2c1u3c1t2e1s2e1o2e1v1c1i2c1w2e122e1s2e112c1u2c1d2e1s2g1c2e1v3e1l2c1u2f162e1q3e1e2c1u3d1b2e1q3g1c2e1u3d1a2c1v3e172e1q3f192c1u3c1j2e1q3f162e1w3c1f2c1u1f172e1q3e1j2c1u3d1a2e1s3f172e1u3d1b2c1u3e1x2e1q2f1b2c1u3d1d2e1q1f172e1u3d1e2c1u3f152e1r3g1d2c1u2d1a2e1q3f162e1u2d192c1v3e1h2e1q2f1a2c1u3d1b2e1q3f152e1u3d1v2c1u2e1s2e1d1e1h3b163e1h2f162g1d2g1e1c1k3e1r3g1w2g1d2e1e1e1e3e1j3e192f1i1f1a3d1f3c1c1g1e3g121f1j1d141e1y2f1h3f161e141b1e1d1g3g1k1e193e1f3d1l3d153g1j1e1g1f1j1d1i2c1a1e1d2f141g1u1d1l3c1a1e161e161e1a1c1u3e1l3e181e181g143b1e3e1e1e1g2f1d3f1h1c141e163g1b3e1d1f1g3d1l1e1e2e172f121f1e1c1e3c1e1f1g3f181g1i1d1e3e1m3g1f2e1q3f1l3d172d1g3g122f1c2f1e1c1h3d102e1s1g1y2e1v2e1e2c1w3e1y2e1q3g1h1c1b1c1l2e1s2g1u2e1w2c1w2c1w1g1d2e1r2g163c1w2e1c2e1s1g1q2e1u3c1h2c1v3e1b2e1d2e122d173d182e1f191b1m1m1o1s2h2i1h2d1v1s16', '32e4c2b33333w351y371g25323q193x2c1d3q00111m27313o2o253e2q2m2y233a1g23211g3e2b361c2v3u113z1o260y113z3b213x3139381a2x3u1z311m21182t312n113238251q27353c162z2x253c1y2s29111z3a231s27333e1431281w121z1611133x392q192z361s3u2v2z3p1z3w263c153v3b2q17212412111m251z3w281z3w26113w26113u2q3139233v3e2b213x29233x2520393x2e1z112235163o02203e2b3w141m3e1d3o012z2m241z311m21111z3u2711311d3b3v3e1a1w12202x3w2s352c12111c1o1z153x27231t322q12252522352c182635211d1g183e163z281w11121z322s2911101o3s37013z243316351h1f3d1l1g1k1f1f1e1q3d1j2e1q3f1f3g183g1k1e1i1c1h2f1e3e1s3f1k2c1t3c1z2e1u2g1y2e1t2c1y2c1s3f1k2e1s2e182c1s3c1r2e1u2e1q2e1t1c1g2c1u3e142e1u2e1z2c1s2c1b2e1u2g1e2e1t3e1j2c1s2e1u2e1s1g142c1u2e1r2e1s2e1z2e1u2c1g2c1u3e1t2e1u2g1w2c1t2c1t2e1u2g1g2e1t2c1x2c1u2f1y2e1u2e182c1s2e1x2e1u2g1b2e1s1d162c1u3g1v2e1s3f192c1s3d192e1s1f182e1s3d1z2c1s3f192e1s3e1i2c1s2d172e1u3f142e1s2d172c1t3f1o2e1s2f192c1u3d142e1s3f192e1u3c1c2c1s3f172e1u3f1d2c1s3d172e1t3f1c2e1s3d172c1s3g1b2e1s2f172c1t3d1z2e1s3f162e1u3e1a2c1s2f182e1u3g1v2c1s3d172e1s3f192e1s3d1u2c1s2e1u2e1f1e1h3d1g1e1g3g1u1f141g1s2e1d1c1i1f121f143f1g1c1g1c1s2g1q3g1c3e1j3c1f2d1b1f1j2f183f123c191d1f1g1g3f1g2e1f3d1s3d1k1e1o1e1i1f1h3d1c1c1h1e1b1f1k3f183d1f3c1a1f1g3g141f1h1c121c1a1e1a1e1a1e1a3d1m1e1s2f1b1f1b1f1m3d1f1d1g1g1d1f1p3e122c141d101e1c3f1c3f1k3d1t2e1s2e1d1f1a3g1s1c1s3c1g3f1e3g141f1i1e1s1d1g1e1u1f1h3f1c3c1f1d1k1e123g1c3f1g1e193d1u2e1u1g1s2e1t1c1f2c1s3g1k2e1u1g1f2d1u2e1t2e1u2e1s2e1t2e152c1t1e1w2e1u1e1v2c1t2c1f2e1s1g1v2e1s3e1j2c1t3f1u2e1f2e1z3d103c1r2f12141d223e141e1i3g1g2e1f3d142e1g3f181g1g1d1q1e1j1e103g1a1e1r3e142c1u2g1p2e1q2e1z2c1u2c1g2e1s3e1r2e1u2e1w2c1t2e1r2e1s2g1g2c1t2c1x2e1s2f1w2e1u2c182c1s2g1v2e1s2g1b2c1s1d162e1q2e1x2e1s1e1g2c1u1e1s2e1r2e1k2c1u2c162e1q2g1k2e1s1d192c1u2g1k2e1s1g1x2c1s2e1y2e1q3f1y2e1s2c1w2c1s1f1i2e1p2g1v2c1t3e1g2e1q1f172e1u3e182c1s3f172e1r3f162c1s3d172e1s3f1a2e1s2d172c1u3g1e2e1q3f192c1u3d1d2e1q3f162e1u3e1e2c1s3f152e1q3f172c1s2d172e1s3e182e1s3d182c1s3g182e1q3f182c1s3d1a2e1q1f152e1t3d1b2c1s3f172e1q3f152c1s2d172e1s3g1u2e1s1d172c1s3f1c2e1q3f172c1s3c1z2e1q2e1u2e1k1c123d1l1g1i1f123f121e141e1s2g1d3f123f103e1i1d1d3e1b1f141g1f1d1b1d1q3f1d3g1e3f1g3c1d1c1f1e1d1g1k3e1f1c183e133g1f2e191f1k3d1f1c1g2e1q1g1h3g1d3c1j3c1f1f193f1h1f181c122c191f191f191f1b1d1b3c181e1b3f163f153c1i1e1s3f1d1g1d3f1f1c1f3c1b3e171f1p1f1s3e123c1u1g123f1d3f171e1h1e1s2g1h2g1k1e1a3e181e1m3g1b1e1f3e1f1c1g2c1f3g1f2e1g1g1f3d1f2c1s3e1d2e1q1e152c1s2e1f2e1s1e1j2e1u2e1f3d1t1g132e1r2e1r2c1s1c1x2e1q2g1t2e1u1d1t2c1u2f1r2e1s1e1w2c1s1e1t2e1s3g1k2e1r3c143d1w2f173e171k2f2d1e3e1e1e1i3e1p1g1j1d1k1c1f3e1g1f1g1f1g2c1h1e1d2e152e1u1e1l2c1t2c172e1s1e1o2e1s3e1f2c1w2e1e2e1s3g1g2c1u2d1z2e1t2g1j2e1u3e1t2c1w3g1z2e1s2e1c2c1u1c1z2e1u2e1h2e1s1c1u2c1u2e1w2e1t2e102c1u2c112e1t2f1u2e1s1c152c1v3g1y2e1u2e152c1t3e1w2e1u1e1k2e1u1c1z2c1w1e1x2e1s2f1w2c1t2c1v2e1s2f172e1t3c1z2c1u3f182e1s3e1e2c1s3d1b2e1u3g1d2e1s3d182c1u3f1d2e1s2f172c1t3d112e1s3f172e1s3c1k2c1u3f172e1s3f162c1s1d1b2e1s3f152e1s3d182c1u3f1v2e1s2f192c1s3e1i2e1s2f192e1s3d1e2c1u1f172e1s3e1q2c1s1d1b2e1u3f1t2e1s3d182c1w3g1y2e1s3f172c1s3d1b2e1s3f172e1s2c1u2c1u2g1f1e123g193d1q1c1r3f1r3d1d3f1f3c1b2c1r3e1y2f1k3g1f1c1f1e1r3e1d1e183g131e1h2c1d2f1k1g1c3e1g2c1s2e1e3g1c1e1j3e1d2d1b1d1l3f183e122e191d1f1e1i3f1g2e1c3f1s1d1k1c1q1e1i1g1h3g1c2d1k3d1m1f1k3g1k3g1f3d1f1e1l1g1h3g143e1f2e1f3d1u3e1d1e1c1e1i2d121d161f1c1f1b1g1h3b1s2d1u2f1f3e1d2g141d1l1e1c1g1i3e1j1e1f2e1f1c1z1e122e193f1s2d1b1d1y1g1s1g1f3e182c1t2e1j2e1u2g1u2e1s2c182c1w2e102e1k3e1h2c1s3d1w2e1s1f1v2e1t1c1h2c1u2e1o1e192g1y2c1s2e1h2e1t1e192e1s2e192c1u3f1t2e1v2f162c1v2c141f1c1m1f2g2r1q2g1q1h1f141', '2021919984aa3cdb69c5a341c204f42e'));
    var v = {
        log: 0,
        logout: 0,
        screencolor: "#000000",
        border: 0,
        bordersize: 1,
        bordercolor: "#000000",
        bgcolor: "#ffffff",
        rounding: 0,
        screenclick: 1,
        doubleclick: 1,
        player: 0,
        stopotherplayers: 1,
        iframe: 0,
        toolbar: {
            customimage: 0,
            color: "000000",
            a: "0.4",
            h: 34,
            stretchonfullscreen: 1,
            hide: 1,
            hidewithoutmoving: 1,
            hidejustfull: 0,
            hidetimeout: 3,
            hideleavetimeout: 0,
            leftandrightpadding: 3,
            animation: "none",
            position: "bottom",
            margin: "0 0 0 0",
            rounding: 0,
            clickarea: 0,
            image: ''
        },
        hotkey: {
            on: 1,
            f: 1,
            r: 1,
            m: 1,
            seek: 5,
            leftright: "seek",
            space: 1,
            updown: "volume",
            seeksides: 0,
            nums: 1,
            volumewheelfull: 1,
            wheelstep: 0.2
        },
        playlist: {
            bgcolor: "000000",
            bgcolorover: "333333",
            bga: 0.9,
            bgaover: -1,
            position: "left",
            margin: "0 0 0 0",
            padding: "7 15 7 15",
            color: "ffffff",
            font: "arial, helvetica, sans-serif",
            fontsize: 12,
            valuefontsize: 10,
            letterspacing: 0,
            valuecolor: "ffdd1f",
            borderbottom: 1,
            bordercolor: "444444",
            a: 1,
            aover: -1,
            posters: 0,
            posterheight: 100,
            posterwidth: 177,
            postertitleonhover: 1,
            historytitlea: 1,
            historycolor: "999999",
            historybgcolor: "000000",
            historybga: -1,
            historybgaover: -1,
            historytitlestrike: 0,
            activeiconsize: 3,
            headfontsize: 16,
            headbordercolor: "888888",
            rounding: 0,
            scrollarrows: 1,
            scrollarrowsize: 1,
            scrollarrowcolor: "ffffff",
            scrollarrowbg: 0,
            scrollarrowbgcolor: "000000",
            scrollarrowgradient: 1,
            scrollarrowbgover: 0,
            scrollarrowbgovercolor: "333333",
            limitwidth: 0,
            limitmaxwidth: 200,
            autoplaylist: 0,
            always: 0,
            alwaysjustpause: 0,
            alwaysnotfullscreen: 0,
            autohide: 1,
            floatleft: 0,
            floatheight: 50,
            floatmarginright: 0,
            floatlimitwidth: 1,
            floatwidth: 170,
            marginbg: 0,
            marginbgcolor: "333333",
            marginbgpadding: "0 0 0 0",
            hmaxk: 30,
            bordercolor: "666666"
        },
        settings: {
            bgcolor: "000000",
            bgcolorover: "222222",
            bga: 0.7,
            bgaover: -1,
            font: "arial, helvetica, sans-serif",
            position: "bottom-right",
            margin: "0 0 0 0",
            padding: "7 10 7 15",
            color: "ffffff",
            fontsize: 12,
            headfontsize: 16,
            valuefontsize: 10,
            letterspacing: 0,
            titlecolor: "ffffff",
            valuecolor: "ffdd1f",
            a: 1,
            scale: 5,
            aover: -1,
            activeicon: 1,
            activeiconsize: 3,
            scrollarrows: 1,
            scrollarrowsize: 1,
            scrollarrowcolor: "ffffff",
            limitwidth: 0,
            limitmaxwidth: 200,
            rounding: 0,
            settings1: 1,
            settings1action: "quality",
            settings2: 1,
            settings2action: "audiotrack",
            settings3: 1,
            settings3action: "subtitle",
            settings4: 0,
            settings4action: "download",
            settings5: 0,
            settings5action: "speed",
            hmaxk: 30,
            bordercolor: "666666"
        },
        logo: {
            position: "bottom-right",
            margin: "0 10 50 0"
        },
        volume: 0.8,
        volumestore: 1,
        mutestore: 1,
        loop: 0,
        shuffle: 0,
        finishrewind: 1,
        mute: 0,
        preload: 0,
        preloadhls: 0,
        preloaddash: 0,
        autoplay: 0,
        autoplaymute: 1,
        showtitleplaylist: 0,
        addtitleplaylistbr: 0,
        addtitleplaylist: 0,
        file_separator: ',',
        file2_separator: ';',
        file3_separator: '//',
        poster_scale: 'fill',
        poster_a: 1,
        poster_aover: -1,
        poster_float: 0,
        poster_floatmargin: '20 0 0 20',
        poster_floatposition: 'top-left',
        poster_floatwidth: 100,
        poster_floatheight: 100,
        poster_floatbgcolor: -1,
        posteronpause: 0,
        d: location.hostname,
        domain: location.hostname,
        href: location.href,
        https: location.href.indexOf("https") == 0,
        alerts: 1,
        alertsbgcolor: "ff0000",
        alertscolor: "ffffff",
        alertspaddingv: 5,
        alertspaddingh: 10,
        alertsbga: 1,
        alertsfontsize: 10,
        rightclick: 0,
        youtubeposter: 1,
        youtubelayer: 1,
        ytautoquality: 1,
        posterhide: 1,
        aspect: '16x9',
        landfullmobile: 0,
        hlschangequality: 'next',
        hlsautoquality: 1,
        hlsdebug: 0,
        hlscookies: 0,
        hlslowquality: 0,
        hlsquality: 1,
        hlsaudio: 1,
        livewakeuptime: 5,
        nativehlsinsafari: 0,
        reload: 0,
        reloadlive: 1,
        livewakeup: 0,
        reloadtimeout: 5,
        dashdebug: 0,
        dashcookies: 0,
        dashlowquality: 0,
        dashquality: 1,
        dashaudio: 1,
        nameofhlsquality: 0,
        nameofyoutubequality: 0,
        nameofdashquality: 0,
        qualitystore: 1,
        eventstracker: 0,
        events: "PlayerjsEvents",
        errortimeout: 5000,
        container_h_procent: '100%',
        ga: 0,
        ga_event: {
            init: 1,
            error: 0,
            full: 0,
            end: 0,
            play: 1,
            play25: 0,
            play50: 0,
            play75: 0,
            vast_skip: 0,
            vast_click: 0,
            vast_impression: 0
        },
        yamtr_event: {
            init: 1,
            error: 0,
            full: 0,
            end: 0,
            play: 1,
            play25: 0,
            play50: 0,
            play75: 0
        },
        ga_proc: 100,
        playsinlineonmobile: 1,
        subtitle_start: 1,
        sub_size: 14,
        sub_sizeproc: '100%',
        sub_big_fullscreen: 1,
        sub_size_fullscreen: 20,
        sub_bg: 1,
        sub_bga: 0.7,
        sub_bgo: 2,
        sub_bgpadding: 3,
        sub_bottom: 10,
        sub_color: "ffffff",
        sub_color2: "ffeeab",
        sub_bgcolor: "000000",
        sub_shadow: 0,
        sub_weight: 400,
        sub_designstore: 1,
        sub_store: 1,
        sub_off: 1,
        sharetitle: 1,
        sharetop: 0.3,
        shareiconscale: 3,
        shareiconscaleover: 4,
        shareiconmargin: 5,
        embedsize: 0,
        embedwidth: 560,
        embedheight: 315,
        fullonplay: 0,
        fullonplaymobile: 1,
        fullblack: 1,
        nativefullios: 1,
        hidestartbutios: 1,
        thumbs: 0,
        thumb_width: 160,
        thumb_height: 90,
        thumb_border: 0,
        thumb_borderwidth: 1,
        thumb_bordercolor: "333333",
        thumb_radius: 0,
        thumb_shadow: 1,
        vast_timeout: 10,
        vast_pauseonclick: 1,
        vast_closeonclick: 1,
        vast_volume: -1,
        vast_title: 1,
        vast_preroll_limit: 1,
        vast_preroll_andlimit: -1,
        vast_prerolltimebreak: 0,
        vast_prerolltbimp: 1,
        vast_preroll_counter: 0,
        vast_pauseroll_limit: 1,
        vast_pauserolltimebreak: 0,
        vast_pauserolltbimp: 1,
        vast_pauseroll_counter: 0,
        vast_postroll_limit: 1,
        vast_postrolltimebreak: 0,
        vast_postrolltbimp: 1,
        vast_postroll_counter: 0,
        vast_playroll_limit: 1,
        vast_playroll_counter: 0,
        vast_midroll_limit: 1,
        vast_midroll_counter: 0,
        vast_midrolltimebreak: 0,
        vast_midrolltbimp: 1,
        vast_introtimebreak: 0,
        vast_introtbimp: 1,
        vast_linktxtbgcolor: "#2fd565",
        vast_linktxtcolor: "#000000",
        vast_skipbgcolor: "#000000",
        vast_skipcolor: "#ffffff",
        vast_titlebgcolor: "#000000",
        vast_titlecolor: "#ffffff",
        vast_xbgcolor: "#000000",
        vast_xcolor: "#ffffff",
        vast_progressbgcolor: "#000000",
        vast_progresscolor: "#ffffff",
        vast_volumebgcolor: "#000000",
        vast_volumecolor: "#ffffff",
        vast_linktxtonmobile: 1,
        vast_unmutehover: 0,
        vast_unmutebutonce: 1,
        vast_default_volume: 0.5,
        vast_unmutebutbgcolor: "#ffffff",
        vast_unmutebutcolor: "#000000",
        vast_openclick: 1,
        vast_preroll_vmap: 1,
        vast_pauseroll_vmap: 1,
        vast_postroll_vmap: 1,
        vast_midroll_vmap: 1,
        vpaid_timeout: 10,
        vpaid_timeout2: -1,
        vast_resound: 1,
        vpaid_slotinframe: 1,
        eventstrackervast: 0,
        pauserollonplay: 0,
        partnerprerollor: "or",
        partnerpauserollor: "or",
        partnerpostrollor: "or",
        partnermidrollor: "or",
        midrollpoint: "50%",
        introskiptime: -1,
        introclickable: 0,
        introclosetime: -1,
        introtitle: 0,
        introtxt: 0,
        rc_version: 1,
        rc_anyway: 0,
        heartbeatinterval: 30,
        default_channel: 2,
        tagsinterval: 10,
        playedquartile: 0,
        minivis: 30,
        lsfullstart: 1,
        lsfullplay: 1,
        captions: 0,
        pip: {
            on: 0,
            bgcolor: "000000",
            border: 0,
            shadow: 2,
            bordercolor: "000000",
            position: "left",
            margin: "35 0 0 10",
            width: 150,
            hide: 0
        }
    };
    v.lang = "ru";
    var PluginHdIcon = function(control, bg) {
        var icon = createElement("div");
        control.appendChild(icon);
        css(icon, {
            "position": "absolute",
            "top": (-bg.offsetHeight / 2) - 1,
            "right": (-bg.offsetWidth / 2) - 2,
            "background-image": "url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTAwJSIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMTMgOSIgd2lkdGg9IjEwMCUiPjxwYXRoIGQ9Ik01LDcgTDYsNyBMNiw4IEw1LDggTDUsNyBaIE0xMCwzIEwxMCw0IEw4LDQgTDgsMyBMMTAsMyBaIE0zLDYgTDMsNSBMNSw1IEw1LDYgTDMsNiBaIE0yLDcgTDMsNyBMMyw4IEwyLDggTDIsNyBaIE03LDcgTDEwLDcgTDEwLDggTDcsOCBMNyw3IFogTTEwLDYgTDExLDYgTDExLDcgTDEwLDcgTDEwLDYgWiIgZmlsbD0iIzAwMCIgZmlsbC1vcGFjaXR5PSIwLjY0NzEiIGZpbGwtcnVsZT0iZXZlbm9kZCIgLz48cGF0aCBkPSJNNSw3IEw1LDYgTDUsNSBMMyw1IEwzLDYgTDMsNyBMMiw3IEwyLDIgTDMsMiBMMyw0IEw1LDQgTDUsMiBMNiwyIEw2LDcgTDUsNyBaIE0xMSw2IEwxMCw2IEwxMCw3IEw3LDcgTDcsMiBMMTAsMiBMMTAsMyBMMTEsMyBMMTEsNiBaIE0xMCw0IEwxMCwzIEw4LDMgTDgsNCBMOCw2IEwxMCw2IEwxMCw0IFoiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgLz48L3N2Zz4=)",
            "background-color": "#f00",
            "height": 9,
            "width": 13,
            "border-radius": 1,
            "display": "none",
            "pointerEvents": "none"
        });
        this.toggle = function() {
            var y = 0;
            var x = o.media.getQuality();
            x = x.replace(Lang("auto") + ' ', '');
            if (x) {
                if (x == 'HD' || x.indexOf(' HD') > 0 || x.indexOf('hd') == 0 || x.indexOf('Hd') == 0) {
                    x = '720'
                }
                if (x.indexOf(' ') > 0) {
                    x = x.substr(0, x.indexOf(' '))
                }
                y = parseInt(x)
            }
            if (y > 700) {
                show2(icon)
            } else {
                hide2(icon)
            }
        }
    };
    o.lang_ru = {
        "auto": "2B>",
        "play": "CA:",
        "pause": "0C70",
        "stop": "!B>?",
        "fullscreen": "> 25AL M:@0=",
        "normalscreen": "K9B8 87 ?>;=>M:@0==>3> @568<0",
        "settings": "0AB@>9:8",
        "options": "0@0<5B@K",
        "volume": "@><:>ABL",
        "mute": "K:;NG8BL 72C:",
        "unmute": ":;NG8BL 72C:",
        "live": " -$ ",
        "playlist": ";59;8AB",
        "quality": "0G5AB2>",
        "download": "!:0G0BL",
        "subtitle": "!C1B8B@K",
        "speed": "!:>@>ABL",
        "error": ">H81:0",
        "unmute_video": ":;NG8B5 72C:",
        "audiotrack": "C48>",
        "loading_error": ">H81:0 703@C7:8",
        "160p": "G5=L =87:>5",
        "240p": "87:>5",
        "360p": "!@54=55",
        "480p": "KA>:>5",
        "540p": "KA>:>5",
        "next": "!;54CNI89",
        "prev": "@54K4CI89",
        "share": ">45;8BLAO",
        "copied": "!:>?8@>20=> 2 1CD5@ >1<5=0",
        "ads": " 5:;0<0",
        "skip": "@>?CAB8BL",
        "skip_after_": "@>?CAB8BL <>6=> G5@57 ",
        "adsinvitation": "5@59B8 =0 A09B @5:;0<>40B5;O",
        "sub_sizeproc": " 07<5@ B5:AB0",
        "sub_color": "&25B B5:AB0",
        "sub_color2": "&25B B5:AB0 2",
        "sub_bgcolor": "&25B D>=0",
        "sub_bga": "@>7@0G=>ABL D>=0",
        "sub_shadow": ""
        5 = L ","
        sub_weight ":"
        ">;I8=0 B5:AB0",
        "sub_bottom": "BABC? A=87C",
        "sleeptimer": "!>=",
        "offsettimer": "@>?CA:0BL",
        "hour": "'0A",
        "minute": "8=CB0",
        "second": "!5:C=40",
        "1val": "0",
        "0val": "5B",
        "of": "87",
        "pass": "0@>;L",
        "casterror": "H81:0 2>A?@>872545=8O =0 CAB@>9AB25",
        "castdevice": "3@05B =0 CAB@>9AB25",
        "channel": "0=0;",
        "scale": "0AHB01",
        "off": "K:;.",
        "together": "A5 A@07C",
        "kbps": ":18B/A"
    };
    var Motion = function(_o) {
        var _ease;
        var _timer;
        var _type;
        var _from;
        var _to;
        var _steps;
        var _step = 0;
        var _speed;
        var _stop = false;
        var _timeout;
        if (_o.me != undefined && _o.mc != undefined && _o.type != undefined && _o.to != undefined) {
            if (_o.time == null) {
                if (_o.type.indexOf("alpha") > -1) {
                    _o.to == 0 ? _o.time = 0.5 : _o.time = 0.2
                } else {
                    _o.time = 0.15
                }
            }
            _ease = Ease(_o.ease);
            if (_o.type.indexOf("scale") == -1) {
                if (exist(o.motions[_o.me])) {
                    o.motions[_o.me].TheEnd()
                }
            }
            if (_o.type.indexOf("scale") == -1) {
                o.motions[_o.me] = this
            }
            if (_o.show == 1) {
                _o.mc.set("display", true)
            }
            _type = _o.type.split('|');
            _to = String(_o.to).split('|');
            _from = new Array();
            for (var i = 0; i < _type.length; i++) {
                if (!_to[i]) {
                    _to[i] = _to[0]
                }
                if (_type[i] == "alpha") {
                    _from[i] = _o.mc.g("opacity")
                }
                if (_type[i] == "alpha_div") {
                    _from[i] = _o.mc.style.opacity
                }
                if (_type[i] == "y") {
                    _from[i] = _o.mc.g("y")
                }
                if (_type[i] == "x") {
                    _from[i] = _o.mc.g("x")
                }
                if (_type[i] == "left") {
                    _from[i] = parseInt(_o.mc.style.left)
                }
                if (_type[i] == "scale") {
                    _from[i] = _o.mc.g("scaleX")
                }
                if (_type[i] == "scroll") {
                    _from[i] = _o.mc.scrollTop
                }
                if (_type[i] == "scrollleft") {
                    _from[i] = _o.mc.scrollLeft
                }
                if (_type[i] == "scaleY") {
                    _from[i] = _o.mc.g("scaleY")
                }
                if (_type[i] == "scaleX") {
                    _from[i] = _o.mc.g("scaleX")
                }
                if (_type[i] == "width") {
                    _from[i] = _o.mc.g("width")
                }
                if (_type[i] == "width_div") {
                    _from[i] = _o.mc.offsetWidth;
                    _to[i] = Math.floor(_to[i]);
                    _o.me == "line_play" ? log("width", _o.me, _from[i], _to[i], _o.mc.offsetWidth) : ''
                }
                if (_type[i] == "height") {
                    _from[i] = _o.mc.g("height")
                }
                if (_type[i] == "height_div") {
                    _from[i] = _o.mc.offsetHeight
                }
                _to[i] = Number(_to[i]);
                _from[i] = Number(_from[i])
            }
            _speed = _o.time * 1000 / _ease.length;
            _steps = _ease.length;
            if (_type.length == 1 && _from[0] == _to[0]) {
                End()
            } else {
                setTimeout(onStep, Math.round(_speed))
            }
        }

        function onStep() {
            for (var i = 0; i < _type.length; i++) {
                var tmp = _from[i] + (_to[i] - _from[i]) * (_ease[_step] ? _ease[_step] : 0);
                if (_type[i] == "alpha") {
                    _o.mc.set("opacity", tmp)
                }
                if (_type[i] == "alpha_div") {
                    _o.mc.style.opacity = tmp
                }
                if (_type[i] == "y") {
                    _o.mc.set("top", tmp)
                }
                if (_type[i] == "x") {
                    _o.mc.set("left", tmp)
                }
                if (_type[i] == "left") {
                    _o.mc.style.left = tmp + "px"
                }
                if (_type[i] == "scale") {
                    _o.mc.set("scale", tmp)
                }
                if (_type[i] == "scaleY") {
                    _o.mc.set("scaleY", tmp)
                }
                if (_type[i] == "scaleX") {
                    _o.mc.set("scaleX", tmp)
                }
                if (_type[i] == "scroll") {
                    _o.mc.scrollTop = tmp
                }
                if (_type[i] == "scrollleft") {
                    _o.mc.scrollLeft = tmp
                }
                if (_type[i] == "width") {
                    _o.mc.set("width", tmp)
                }
                if (_type[i] == "width_div") {
                    css(_o.mc, {
                        "width": tmp
                    })
                }
                if (_type[i] == "height") {
                    _o.mc.set("height", tmp)
                }
                if (_type[i] == "height_div") {
                    css(_o.mc, {
                        "height": tmp
                    })
                }
            }
            _step++;
            if (!_stop) {
                if (_step == _steps) {
                    End()
                } else {
                    _timeout = setTimeout(onStep, Math.round(_speed))
                }
            }
        }

        function End() {
            _stop = true;
            if (_o.hide) {
                if (_type[0] == "alpha_div" || _type[0] == "left") {
                    hide(_o.mc)
                } else {
                    _o.mc.set("display", false)
                }
            }
            if (_o.type.indexOf("scale") == -1) {
                o.motions[_o.me] = null;
                delete o.motions[_o.me]
            }
        };
        this.TheEnd = function() {
            clearTimeout(_timeout);
            End()
        };
        this.TheEnd2 = function() {
            clearTimeout(_timeout);
            _step = _steps - 1;
            onStep();
            End()
        };

        function Ease(str) {
            switch (str) {
                case "elastic":
                    return [0, 0.432, 0.857, 1.275, 1.372, 1.296, 1.102, 0.957, 0.883, 0.87, 0.914, 0.992, 1.029, 1.041, 1.036, 1.019, 0.996, 0.984, 0.981, 0.988, 1.001, 1.006, 1.007, 1.006, 1.003, 0.999, 0.998, 0.998, 0.998, 0.998, 1];
                    break;
                case "cubic":
                    return [0, 0.096, 0.185, 0.267, 0.344, 0.416, 0.483, 0.547, 0.606, 0.659, 0.705, 0.747, 0.785, 0.818, 0.848, 0.874, 0.897, 0.918, 0.935, 0.95, 0.962, 0.971, 0.979, 0.985, 0.99, 0.994, 0.997, 0.999, 1];
                    break;
                case "back":
                    return [0, 0.146, 0.28, 0.403, 0.513, 0.613, 0.702, 0.78, 0.848, 0.907, 0.956, 0.997, 1.029, 1.055, 1.072, 1.084, 1.092, 1.095, 1.095, 1.093, 1.088, 1.081, 1.072, 1.06, 1.046, 1.033, 1.023, 1.014, 1.007, 1.003];
                    break;
                default:
                    return [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1];
                    break
            }
        }
    };
    var System = function() {
        var N = navigator.appName,
            ua = navigator.userAgent,
            tem;
        var M = ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
        var M = ua.match(/(opera|chrome|safari|firefox|msie|trident|edge)\/?\s*(\.?\d+(\.\d+)*)/i);
        if (M && (tem = ua.match(/version\/([\.\d]+)/i)) != null) M[2] = tem[1];
        this.browser = M ? M[1] : N;
        this.version = M ? M[2] : navigator.appVersion;
        this.opera = this.browser == "Opera";
        this.ie = this.browser == "MSIE" || this.browser == "Trident" || this.browser == "Edge";
        this.edge = ua.search(/(edge)\/?\s*/i) > -1;
        this.firefox = this.browser == "Firefox";
        this.safari = this.browser == "Safari";
        this.chrome = window.chrome;
        this.win = ua.search("Windows NT") > -1;
        this.ios = (ua.search(/(iphone|ipad|ipod)\/?\s*/i) > -1) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);
        this.tv = v.notv != 1 && ua.search(/(Tizen|MiTV|LG Browser|SmartTV|Philips|TV Build)\/?\s*/i) > -1;
        this.lg = v.notv != 1 && ua.search(/(LG Browser)\/?\s*/i) > -1;
        this.iphone = ua.search(/(iphone)\/?\s*/i) > -1;
        this.ipad = this.ios && !this.iphone;
        this.webkit = 'WebkitAppearance' in document.documentElement.style;
        this.android = ua.search(/(android)\/?\s*/i) > -1;
        this.mobile = (this.ios || this.android || (ua.search(/(blackberry|iemobile|opera mini)\/?\s*/i) > -1)) && !this.tv;
        this.mutedautoplay = this.safari || this.chrome;
        this.desktop = !this.mobile;
        this.mobiletv = this.mobile || this.tv;
        this.fullscreen = false;
        if (this.ios) {
            this.iosv = parseFloat(ua.substr(ua.indexOf('OS ') + 3, 4).replace('_', '.'))
        }
        if (o.frame.requestFullScreen || o.frame.requestFullscreen || o.frame.mozRequestFullScreen || o.frame.webkitRequestFullScreen || o.frame.msRequestFullscreen) {
            this.fullscreen = true
        }
    };

    function UpdateObject(obj, obj2) {
        for (var s in obj2) {
            if (typeof(obj2[s]) == 'object') {
                if (s == "events" || s == "file") {
                    obj[s] = obj2[s]
                } else {
                    for (var s2 in obj2[s]) {
                        if (!exist(obj[s])) {
                            obj[s] = {}
                        }
                        if (typeof(obj2[s][s2]) == 'object') {
                            for (var s3 in obj2[s][s2]) {
                                if (!exist(obj[s][s2])) {
                                    obj[s][s2] = {}
                                }
                                if (typeof(obj2[s][s2][s3]) == 'object') {
                                    for (var s4 in obj2[s][s2][s3]) {
                                        if (!exist(obj[s][s2][s3])) {
                                            obj[s][s2][s3] = {}
                                        }
                                        obj[s][s2][s3][s4] = obj2[s][s2][s3][s4];
                                        if (s3 == 'padding' || s3 == 'margin') {
                                            obj[s][s2][s3][s4] = parseInt(obj[s][s2][s3][s4])
                                        }
                                    }
                                } else {
                                    obj[s][s2][s3] = obj2[s][s2][s3];
                                    if (s2 == 'padding' || s2 == 'margin') {
                                        obj[s][s2][s3] = parseInt(obj[s][s2][s3])
                                    }
                                }
                            }
                        } else {
                            obj[s][s2] = obj2[s][s2];
                            if (s == 'padding' || s == 'margin') {
                                obj[s][s2] = parseInt(obj[s][s2])
                            }
                        }
                    }
                }
            } else {
                if (s.indexOf("roll") > 0 && trim(obj2[s]) === "") {} else {
                    obj[s] = SettingsParser(s, obj2[s])
                }
            }
        }
        return obj
    };
    var SettingsParser = function(key, value) {
        value = trim(value);
        if (key.indexOf("color") > -1 && key.indexOf("#") != 0 && value != -1) {
            value = "#" + value
        }
        return value
    };

    function hexToRGBA(hex, opacity) {
        return 'rgba(' + (hex = hex.replace('#', '')).match(new RegExp('(.{' + hex.length / 3 + '})', 'g')).map(function(l) {
            return parseInt(hex.length % 2 ? l + l : l, 16)
        }).concat(opacity || 1).join(',') + ');'
    }

    function StorageSupport() {
        try {
            var storage = window['localStorage'],
                x = '__storage_test__';
            storage.setItem(x, x);
            storage.removeItem(x);
            return true
        } catch (e) {
            return false
        }
    };

    function killMotion(motion_id) {
        if (motion_id) {
            if (o.motions[motion_id]) {
                o.motions[motion_id].TheEnd()
            }
        }
    };
    var Lang = function(x) {
        var y = x;
        if (y) {
            y = x.charAt(0).toUpperCase() + x.slice(1);
            if (y.indexOf("_") > -1) {
                y = y.replace(/_/ig, " ")
            }
        }
        var en = {
            "of": "of",
            "kbps": "kbps",
            "castdevice": "Playback on device",
            "casterror": "Playback error on device",
            "together": "All at once",
            "pass": "Password",
            "0val": "No",
            "sleeptimer": "Sleep",
            "offsettimer": "Skip",
            "1val": "Yes",
            "sub_bottom": "Bottom margin",
            "sub_weight": "Font weight",
            "sub_shadow": "Shadow",
            "sub_bga": "Background opacity",
            "sub_bgcolor": "Background color",
            "sub_sizeproc": "Text size",
            "sub_color": "Text color",
            "sub_color2": "Text color 2",
            "prev": "Previous",
            "copied": "Copied to clipboard",
            "160p": "Tiny",
            "240p": "Small",
            "360p": "Medium",
            "480p": "Large",
            "540p": "Large",
            "720p": "HD",
            "1080p": "Full HD",
            "1296p": "Super HD",
            "1440p": "Quad HD",
            "2160p": "Ultra HD 4K",
            "adsinvitation": "Go to advertiser's website",
            "audiotrack": "Audio",
            "live": "LIVE",
            "fullscreen": "Enter fullscreen",
            "normalscreen": "Exit fullscreen"
        };
        if (exist(en[x])) {
            y = en[x]
        }
        if (exist(o['lang_' + v.lang])) {
            if (exist(o['lang_' + v.lang][x])) {
                y = o['lang_' + v.lang][x]
            }
        }
        if (v.rename) {
            if (v.rename[x]) {
                y = v.rename[x]
            }
        }
        return y
    };
    var gaTracker = function(x, y, z) {
        if (!exist(o.gatracked[y]) && v.playerjscom != 1) {
            if (v.yamtr_event[x] == 1 && v.yamtr == 1 && exist(v.yamtrid)) {
                if (x == "init") {
                    setInterval(yaHit, 300000)
                }
                try {
                    window["yaCounter" + v.yamtrid].reachGoal('playerjs_' + x);
                    log("Yandex", 'playerjs_' + x)
                } catch (e) {
                    log("Yandex Metric error ", e)
                }
            }
            if (v.ga_event[x] == 1) {
                if (v.ga == 1) {
                    ga('user.send', 'event', {
                        eventCategory: 'Player',
                        eventAction: y
                    })
                }
            }
        }
        z ? o.gatracked[y] = true : ''
    };

    function yaHit() {
        try {
            window["yaCounter" + v.yamtrid].reachGoal('playerjs_hit')
        } catch (e) {}
    };
    var YoutubeID = function(url) {
        var x = '';
        if (url.indexOf('youtu.be/') > -1) {
            x = url.substr(url.indexOf(".be/") + 4);
            x.replace("/", "")
        } else {
            x = url.split(/(youtu.be\/|v\/|embed\/|watch\?|youtube.capiom\/user\/[^#]*#([^\/]*?\/)*)\??v?=?([^#\&\?]*)/)[3]
        }
        if (x != '') {
            if (x.indexOf("?t=") > 0) {
                v.start = x.substr(x.indexOf("?t=") + 3);
                var h = 0;
                var m = 0;
                var s = 0;
                if (v.start.indexOf("h") > 0) {
                    h = v.start.substr(0, v.start.indexOf("h"));
                    v.start = v.start.substr(v.start.indexOf("h") + 1)
                }
                if (v.start.indexOf("m") > 0) {
                    m = v.start.substr(0, v.start.indexOf("m"));
                    v.start = v.start.substr(v.start.indexOf("m") + 1)
                }
                if (v.start.indexOf("s") > 0) {
                    s = v.start.substr(0, v.start.indexOf("s"));
                    v.start = v.start.substr(v.start.indexOf("s") + 1)
                }
                if (h > 0 || m > 0 || s > 0) {
                    v.start = h * 3600 + m * 60 + s * 1
                }
                x = x.substr(0, x.indexOf("?t="))
            }
        }
        return x
    };
    var js = function(x, y, li) {
        if (x == "init") {
            o.init = true
        }
        if (v.eventstracker == 1 && o.init) {
            if (v.eventlisteners == 1 || li == 1) {
                var ev = document.createEvent('Events');
                if (y !== undefined) {
                    ev.info = y
                }
                ev.initEvent(x, true, true);
                o.container.dispatchEvent(ev)
            } else {
                if (y !== undefined) {
                    if (typeof(y) == 'object') {
                        y = JSON.stringify(y)
                    }
                }
                if (typeof(v.events) == 'object') {
                    if (exist(v.events[x]) || exist(v.events['other'])) {
                        var z = x;
                        if (!exist(v.events[x]) && exist(v.events['other'])) {
                            z = 'other'
                        }
                        if (x.indexOf("vast_") == 0) {
                            if (exist(v.events['vast'])) {
                                z = 'vast'
                            }
                        }
                        try {
                            if (y !== undefined) {
                                eval(v.events[z] + "('" + x + "','" + v.id + "','" + y + "')")
                            } else {
                                eval(v.events[z] + "('" + x + "','" + v.id + "')")
                            }
                        } catch (e) {
                            log("events", e, x)
                        }
                    }
                } else {
                    if (v.events == '') {
                        v.events = "PlayerjsEvents"
                    }
                    try {
                        if (y !== undefined) {
                            eval(v.events + "('" + x + "','" + v.id + "','" + y + "')")
                        } else {
                            eval(v.events + "('" + x + "','" + v.id + "')")
                        }
                    } catch (e) {
                        log("events", e, x, y)
                    }
                }
            }
        }
        if (v.postmessage == 1 && li !== 1) {
            var zv = {
                event: x,
                time: (x == "seek" ? o.seeked_time : o.media.time())
            };
            if (y !== undefined) {
                zv["data"] = y
            }
            if (x == "duration" || x == "time") {
                zv["duration"] = o.media.duration()
            }
            if (x == "volume" || x == "unmute") {
                zv["volume"] = v.volume
            }
            window.parent.postMessage(zv, '*');
            var z = x;
            x == "init" || x == "start" || x == "end" ? z = x + "ed" : '';
            x == "play" ? z = "resumed" : '';
            x == "pause" ? z = "paused" : '';
            x == "mute" ? z = "muted" : '';
            x == "unmute" ? z = "unmuted" : '';
            x == "seek" ? z = "rewound" : '';
            x == "vast_Impression" ? z = "adShown" : '';
            zv["event"] = z;
            if (z != '' && z != x) {
                window.parent.postMessage(zv, '*')
            }
        }
    };
    this.event = function(x, y) {
        o.events[x] = y
    };
    var api = function(x, y, but) {
        return apiProcessor(x, y, but)
    };
    this.api = function(x, y, but) {
        return apiProcessor(x, y, but)
    };

    function apiProcessor(x, y, but) {
        if (exist(o.actions)) {
            if (o.destroyed == 1) {
                return
            }
            if (but) {
                if (typeof(but) == 'string') {
                    if (but.indexOf("id:") == 0) {
                        but = o.controls.butById(but.substr(3));
                        if (but) {
                            if (x == "button" && y == "toogle") {
                                but.CustomToogle()
                            }
                        }
                    }
                }
            }
            if (x == "play") {
                if (exist(y)) {
                    if (typeof(y) == 'string') {
                        y = y.replace(/(\r\n|\n|\r)/gm, "");
                        var seekto = -1;
                        if (y.indexOf("[seek:") > -1 && y.indexOf("]") == y.length - 1) {
                            seekto = y.substr(y.indexOf("[seek:") + 6, y.length - 1);
                            o.seekto = seekto = parseInt(seekto.substr(0, seekto.length - 1));
                            y = y.substr(0, y.indexOf("[seek:"))
                        }
                        if (y.indexOf("#2") == 0) {
                            y = fd2(y)
                        }
                        if (y.indexOf("#3") == 0 && y.indexOf(v.file3_separator) > 0) {
                            y = fd3(y)
                        }
                        if (y.indexOf("#0") == 0) {
                            y = fd0(y)
                        }
                        if (v.fplace == 1) {
                            y = fplace(y)
                        }
                        if (y.indexOf(".txt") == y.length - 4) {
                            var xhr = XHR(y);
                            xhr.onload = function() {
                                if (this.readyState == 4 && this.status == 200) {
                                    try {
                                        apiProcessor('play', JSON.parse(this.responseText))
                                    } catch (e) {}
                                }
                            };
                            xhr.send();
                            return
                        }
                        if (y.indexOf("id:") == 0 && exist(o.playlist_dic)) {
                            var z = y.substr(3);
                            for (var j in o.playlist_dic) {
                                if (o.playlist_dic.hasOwnProperty(j)) {
                                    if (o.playlist_dic[j].pjs_id == z) {
                                        z = j
                                    }
                                }
                            }
                            if (exist(o.playlist_dic[z])) {
                                o.controls.PlaylistPlayId(z);
                                seekto > -1 ? o.seekto = seekto : '';
                                return true
                            } else {
                                return false
                            }
                        }
                        if (y.indexOf("youtubeid:") == 0) {
                            var z = y.substr(10);
                            if (o.file_type == "youtube") {
                                o.media.playByYoutubeId(z);
                                return true
                            } else {
                                y = '//youtu.be/' + z
                            }
                        }
                    }
                    o.actions.NewFile(y)
                } else {
                    o.actions.Play()
                }
            }
            if (x == "file" && exist(y)) {
                o.actions.NewFile(y, 1);
                o.controls.Duration(0, 0)
            }
            if (x == "pause") {
                o.play ? o.actions.Pause() : ''
            }
            if (x == "channel" && exist(y)) {
                o.start && o.channels ? o.channels.SetChannel(y) : ''
            }
            if (x.indexOf("vpaid_") == 0) {
                if (o.vast) {
                    o.vast.VpaidSet(x.substr(6), y)
                }
            }
            if (x == "preload") {
                o.media.Preload()
            }
            if (x == "alert") {
                o.alert.close();
                o.alert = new Alert();
                if (v.alert404 == 1) {
                    o.alert.txt(v.alert404text)
                } else {
                    o.alert.txt("Test message")
                }
            }
            if (x == "waiting") {
                o.controls.Waiting();
                o.controls.HideElement("control_start")
            }
            if (x == "toggle") {
                o.play ? o.actions.Pause() : o.actions.Play()
            }
            if (x == "stop") {
                v.preload = 0;
                v.autoplay = 0;
                o.media.Recover();
                o.actions.Stop()
            }
            if (x == "reload") {
                o.time = o.media.time();
                o.actions.Reload()
            }
            if (x == "share") {
                o.controls.showShare()
            }
            if (x == "startvast" && exist(y)) {
                if (v.vast == 1 && o.p != '') {
                    var sv = JSON.parse(decode(o.p));
                    for (var l in sv) {
                        if (sv.hasOwnProperty(l)) {
                            if (exist(sv[l].id)) {
                                if (y == sv[l].id) {
                                    v.midroll = 'prt' + (exist(sv[l]['cpm']) ? 'cpm' + sv[l]['cpm'] : '') + y + '_' + sv[l].preroll;
                                    v.midrolls = true;
                                    o.actions.advertising("midroll")
                                }
                            }
                        }
                    }
                }
            }
            if (x == "vastbreak") {
                typeof VastBreak == "function" ? VastBreak() : ''
            }
            if (x == "cuid" && y) {
                v.cuid = y;
                o.continue ? o.continue.updateCuid() : ''
            }
            if (x == "mute") {
                o.actions.Mute()
            }
            if (x == "speed") {
                if (exist(y)) {
                    o.actions.SetSpeed(y)
                } else {
                    return o.files_speed[o.current_speed]
                }
            }
            if (x == "unmute") {
                o.actions.Unmute()
            }
            if (x == "qualities") {
                return o.files_quality
            }
            if (x == "adblock") {
                return o.ab ? true : false
            }
            if (x == "live") {
                return o.media ? o.media.isLive() : false
            }
            if (x == "audiotracks") {
                return o.files_audiotrack
            }
            if (x == "volume" || x == "setVolume") {
                if (exist(y)) {
                    if (y >= 0 && y <= 1) {
                        o.actions.Volume(y)
                    }
                }
                return o.muted ? 0 : v.volume
            }
            if (x == "muted") {
                return exist(o.muted) ? o.muted : false
            }
            if (x == "moveplaylist") {
                o.controls ? o.controls.PlaylistMove(y) : ''
            }
            if (x == "design") {
                y < 2 ? y = '' : '';
                if (o['u' + y] != '') {
                    var x2 = JSON.parse(decode(o['u' + y]));
                    var v2 = [];
                    for (var l in v) {
                        if (v.hasOwnProperty(l)) {
                            if (l.indexOf("control_") == 0) {
                                v[l] = null
                            }
                        }
                    }
                    if (typeof x2 == "object") {
                        for (var k in x2) {
                            if (x2.hasOwnProperty(k)) {
                                if (k.indexOf("control_") == 0) {
                                    v[k] = x2[k]
                                }
                                if (k == "toolbar") {
                                    v2[k] = x2[k]
                                }
                            }
                        }
                    }
                    v = UpdateObject(v, v2);
                    var show_settings = false;
                    if (o.controls.SettingsVisible()) {
                        o.controls.Settings();
                        show_settings = true
                    }
                    var show_playlist = false;
                    if (o.controls.PlaylistVisible()) {
                        o.controls.Playlist();
                        show_playlist = true
                    }
                    o.controls.Remove();
                    o.controls = null;
                    o.controls = new Controls();
                    if (o.media.status() == "playing") {
                        o.controls.Play()
                    }
                    o.controls.Volume(v.volume);
                    if (exist(v.title)) {
                        Title(v.title)
                    }
                    if (show_settings) {
                        o.controls.Settings()
                    }
                    if (show_playlist) {
                        o.controls.Playlist()
                    }
                    if (o.fullscreen) {
                        o.controls.Fullscreen()
                    }
                    if (key != 'control_duration') {
                        o.controls.Duration(o.media.time(), o.media.duration())
                    }
                    Resize()
                }
            }
            if (x == "vars") {
                return v.vars
            }
            if (x == "resize") {
                o.controls.resize(true)
            }
            if (x == "seek") {
                if (exist(y)) {
                    if (typeof y == "string") {
                        if (y.indexOf("%") > -1) {
                            y = parseInt(y.substr(0, y.indexOf("%")));
                            y = o.media.duration() * y / 100
                        } else {
                            var omt = o.media.time();
                            if (o.continue && !o.start) {
                                if (!o.continue.seeked) {
                                    var f = o.continue.flag();
                                    if (f.t && f.d) {
                                        omt = f.t;
                                        o.continue.seeked = true
                                    }
                                }
                            }
                            if (y.indexOf("+") == 0) {
                                y = omt + parseInt(y.substr(1))
                            } else {
                                if (y.indexOf("-") == 0) {
                                    y = omt - parseInt(y.substr(1))
                                }
                            }
                        }
                    }
                    y = parseInt(y);
                    y < 0 ? y = 0 : '';
                    if (o.media.duration() > 0) {
                        y > o.media.duration() ? y = 0 : ''
                    }
                    if (!exist(o.vast) && !exist(o.vastloader) && o.media.duration() > 0) {
                        o.seekto = undefined;
                        o.actions.Seek(y, true);
                        o.actions.Playing()
                    } else {
                        o.seekto = y
                    }
                }
            }
            if (x == "fullscreen") {
                !o.fullscreen ? o.actions.Fullscreen() : ''
            }
            if (x == "exitfullscreen") {
                o.fullscreen ? o.actions.Normalscreen() : ''
            }
            if (x == "isfullscreen") {
                return o.fullscreen
            }
            if (x == "unfixing") {
                if (exist(o.minify)) {
                    o.minify.Un()
                }
            }
            if (x == "time") {
                var _t = o.media ? o.media.time() : 0;
                if (o.continue && v.timestore == 1 && !o.start) {
                    var f = o.continue.flag();
                    if (f.t) {
                        _t = f.t
                    }
                }
                return _t
            }
            if (x == "timeplay") {
                if (o.butplstart) {
                    apiProcessor("play", "id:" + o.butplstart)
                }
                if (o.butseekto) {
                    apiProcessor("seek", o.butseekto);
                    apiProcessor("play")
                }
            }
            if (x == "duration") {
                return o.media ? o.media.duration() : 0
            }
            if (x == "points") {
                if (y) {
                    v.points = y;
                    o.controls.RenewPoints()
                }
            }
            if (x == "quality") {
                if (exist(y)) {
                    if (but) {
                        v.hd = Switcher(v.hd, y, but);
                        if (o.files_quality.length == 2) {
                            o.actions.SetQuality(v.hd)
                        }
                    } else {
                        o.actions.SetQuality(y)
                    }
                } else {
                    return o.media ? o.media.getQuality() : 0
                }
            }
            if (x == "audiotrack") {
                if (exist(y)) {
                    if (but) {
                        v.ahd = Switcher(v.ahd, y, but);
                        if (o.files_audiotrack.length == 2) {
                            o.actions.SetAudioTrack(v.ahd)
                        }
                    } else {
                        o.actions.SetAudioTrack(y)
                    }
                } else {
                    return o.media ? o.media.getAudioTrack() : 0
                }
            }
            if (x == "isyoutube") {
                return o.file_type == "youtube"
            }
            if (x == "restart") {
                if (o.current_audiotrack > 0) {
                    o.restart_audio = o.current_audiotrack
                }
                o.actions.NewFile(v.file)
            }
            if (x == "playing") {
                return o.play
            }
            if (x == "started") {
                return o.start
            }
            if (x == "system") {
                return o.system[y]
            }
            if (x == "youtubeready") {
                o.media.onYoutubeReady()
            }
            if (x == "id") {
                return v.id
            }
            if (x == "log") {
                v.log = y
            }
            if (x == "eventstracker") {
                v.eventstracker = y
            }
            if (x == "pip") {
                o.media.PipToggle()
            }
            if (x == "airplay") {
                o.media.Airplay()
            }
            if (x == "pipwebkit") {
                o.media.PipWebkit()
            }
            if (x == "options") {
                console.log(options)
            }
            if (x == "subtitle") {
                v.subtitle = y;
                if (y) {
                    if (y.toString().length < 3) {
                        o.actions.SetSubtitle(y * 1)
                    } else {
                        o.media.SubtitleStart(y)
                    }
                }
            }
            if (x == "box") {
                var box = createElement("div");
                box.id = y;
                box.style.zIndex = 10000;
                o.frame.appendChild(box)
            }
            if (x == "screenshot") {
                if (o.tagvideo) {
                    var canvas = createElement("canvas");
                    o.container.appendChild(canvas);
                    var ctx = canvas.getContext('2d');
                    var size = o.media.size();
                    canvas.width = size.width > 0 ? size.width : o.normal_w;
                    canvas.height = size.height > 0 ? size.height : o.normal_h;
                    ctx.drawImage(o.media.tag(), 0, 0, canvas.width, canvas.height);
                    quality = 2;
                    var canvas2 = document.createElement("canvas");
                    canvas2.width = canvas.width * quality;
                    canvas2.height = canvas.height * quality;
                    var ctx2 = canvas2.getContext("2d");
                    ctx2.drawImage(o.media.tag(), 0, 0, canvas.width * quality, canvas.height * quality);
                    if (v.sscopyright == 1 && exist(v.sstext)) {
                        !exist(v.ssfontsize) ? v.ssfontsize = 20 : '';
                        !exist(v.ssfontcolor) ? v.ssfontcolor = "ffffff" : '';
                        ctx2.font = v.ssfontsize + "px Courier, Arial";
                        ctx2.fillStyle = "#" + v.ssfontcolor;
                        ctx2.fillText((v.sstext == "domain" ? v.domain : v.sstext), v.ssfontsize, canvas.height * quality - v.ssfontsize - 5)
                    }
                    ctx.drawImage(canvas2, 0, 0, canvas.width, canvas.height);
                    var img;
                    try {
                        img = canvas.toDataURL("image/jpeg")
                    } catch (e) {
                        console.log(e.message);
                        return false
                    }
                    return img
                } else {
                    return false
                }
            }
            if (x == "dash") {
                return o.file_type == x ? o.media.getDASH() : undefined
            }
            if (x == "hls") {
                return o.file_type == x ? o.media.getHLS() : undefined
            }
            if (x == "poster") {
                if (!o.play && y.indexOf('//') > -1) {
                    o.media.Poster(y);
                    return true
                } else {
                    return false
                }
            }
            if (x == "scale") {
                o.media.scale(y)
            }
            if (x == "title") {
                if (exist(y)) {
                    exist(y) ? v.title = y : '';
                    o.actions.Title('title');
                    return true
                } else {
                    return v.title
                }
            }
            if (x == "invert") {
                o.actions.InvertPlaylist()
            }
            if (x == "playlist") {
                if (typeof(y) == 'object') {
                    try {
                        o.actions.UpdatePlaylist(y);
                        return true
                    } catch (e) {
                        return false
                    }
                } else {
                    if (y.indexOf(".txt") == y.length - 4 || y.indexOf(".txt?") > 0) {
                        var xhr = XHR(y);
                        xhr.onload = function() {
                            if (this.readyState == 4 && this.status == 200) {
                                try {
                                    apiProcessor('playlist', JSON.parse(this.responseText))
                                } catch (e) {}
                            }
                        };
                        xhr.send();
                        return true
                    }
                }
            }
            if (x == "next") {
                o.controls.PlaylistNext()
            }
            if (x == "prev") {
                o.controls.PlaylistPrev()
            }
            if (x == "find") {
                if (exist(y) && exist(o.playlist_dic)) {
                    !o.play ? v.autoplay = 0 : '';
                    for (var j in o.playlist_dic) {
                        if (o.playlist_dic.hasOwnProperty(j)) {
                            if (o.playlist_dic[j].pjs_id == y) {
                                y = j
                            }
                        }
                    }
                    if (exist(o.playlist_dic[y])) {
                        o.controls.PlaylistOpenId(y);
                        return true
                    } else {
                        return false
                    }
                }
            }
            if (x == "playlist_folders") {
                var tmp = [];
                if (exist(o.playlist_dic)) {
                    for (var j in o.playlist_dic) {
                        if (o.playlist_dic[j].folder && o.playlist_dic[j].pjs_parent_i == -1) {
                            tmp.push({
                                title: o.playlist_dic[j].title,
                                id: o.playlist_dic[j].id
                            })
                        }
                    }
                }
                return tmp
            }
            if (x == "playlist_id") {
                if (o.plid) {
                    return o.playlist_dic[o.plid].pjs_id ? o.playlist_dic[o.plid].pjs_id : o.plid
                }
            }
            if (x == "playlist_length") {
                if (o.playlist_dic) {
                    return Object.keys(o.playlist_dic).length
                } else {
                    return -1
                }
            }
            if (x == "playlist_title") {
                if (exist(o.playlist_title)) {
                    return o.playlist_title
                }
            }
            if (x == "showplaylist") {
                o.controls.PlaylistShow()
            }
            if (x == "vastnow") {
                if (o.vast) {
                    return true
                } else {
                    return false
                }
            }
            if (x == "vastinfo") {
                if (o.vast) {
                    return VastInfo()
                } else {
                    return false
                }
            }
            if (x == "vastpause") {
                if (o.vast) {
                    return o.vast.pause()
                } else {
                    return false
                }
            }
            if (x == "vastresume") {
                if (o.vast) {
                    return o.vast.resume()
                } else {
                    return false
                }
            }
            if (x == "captions") {
                v.captions = Switcher(v.captions, y, but);
                o.media.captions()
            }
            if (x == "loop") {
                v.loop = Switcher(v.loop, y, but)
            }
            if (x == "shuffle") {
                v.shuffle = Switcher(v.shuffle, y, but)
            }
            if (x == "autonext") {
                v.playlist.autoplaylist = Switcher(v.playlist.autoplaylist, y, but)
            }
            if (x == "hd") {
                if (o.files_quality.length == 2) {
                    v.hd = o.files_quality[o.current_quality];
                    v.hd = Switcher(v.hd, y, but);
                    if (o.files_quality[0] == v.hd) {
                        o.actions.SetQuality(0)
                    } else {
                        o.actions.SetQuality(1)
                    }
                }
            }
            if (x == "v" && y != 'file') {
                return v[y]
            }
            if (x.indexOf("update:") == 0) {
                if (typeof(y) == 'object' && typeof(v[x.substr(7)]) == 'object') {
                    for (var yy in y) {
                        if (y.hasOwnProperty(yy)) {
                            v[x.substr(7)][yy] = y[yy]
                        }
                    }
                } else {
                    v[x.substr(7)] = y
                }
                return true
            }
            if (x == "currentfile") {
                return o.media ? o.media.currentFile() : ''
            }
            if (x == "vrsn") {
                return o.version + ' ' + o.playerid
            }
            if (x == "playerid") {
                return o.playerid
            }
            if (x == "hlserror") {
                return o.hlserror
            }
            if (x == "dasherror") {
                return o.dasherror
            }
            if (x == "visibility") {
                return o.visibility
            }
            if (x == "destroy") {
                o.actions.Stop();
                o.destroyed = 1;
                v.hotkey.on = 0
            }
        } else {
            return false
        }
    };

    function Switcher(x, y, but) {
        var z = trim(y);
        if (y.indexOf("/") > 0) {
            var y2 = y.split("/");
            if (y2.length == 2) {
                if (x == trim(y2[0])) {
                    z = trim(y2[1]);
                    if (but) {
                        but.CustomSwitch(1)
                    }
                } else {
                    z = trim(y2[0]);
                    if (but) {
                        but.CustomSwitch(0)
                    }
                }
            }
        }
        return z
    }

    function XHR(x) {
        var xhr = new XMLHttpRequest();
        xhr.open('GET', x, true);
        return xhr
    }

    function VastInfo() {
        var x;
        if (o.vast) {
            if (o.vast.active()) {
                x = o.vast
            }
        }
        if (!x && o.vastloader) {
            x = o.vastloader
        }
        if (x) {
            return {
                system: x.info("adsystem"),
                version: x.info("version"),
                vpaid: x.info("isVpaid"),
                url: o.current_vast_url + (x.info("wrapper") ? x.info("wrapper0") + x.info("wrapper") : ''),
                type: x.info("filetype"),
                file: x.info("file"),
                volume: x.getVolume(),
                id: o.vast_adid
            }
        }
    }
    var createElement = function(x) {
        var y = x;
        x == 'div' || x == 'div2' ? y = 'pjsdiv' : '';
        var z = document.createElement(y);
        if (x == 'div2') {
            css(z, {
                "cursor": "pointer",
                "display": "block"
            })
        }
        return z
    };
    var log = function(a, b, c, d, e, f, g) {
        if (v.log == 1 || v.logout == 1) {
            var x = a + (b != undefined ? " " + b : "") + (c != undefined ? " " + c : "") + (d != undefined ? " " + d : "") + (e != undefined ? " " + e : "") + (f != undefined ? " " + f : "") + (g != undefined ? " " + g : "");
            console.log("Playerjs: " + x);
            if (v.logout == 1 && exist(document.getElementById("pjslog"))) {
                document.getElementById("pjslog").innerHTML += x + '<br/>'
            }
        }
    };
    var CustomFonts = function() {
        if (v.fonts == 1 && exist(v.fontnames) && v.fontnames != '') {
            var x = document.createElement('link');
            x.rel = 'stylesheet';
            x.href = 'https://fonts.googleapis.com/css?family=' + v.fontnames.replace(/,/ig, "|").replace(/ /ig, "+");
            document.head.appendChild(x)
        }
    };
    var Time = function(time) {
        time < 0 ? time = 0 : '';
        var full_minutes = o.media.duration >= 600 ? true : false;
        var full_hours = o.media.duration >= 3600 ? true : false;
        var minutes = Math.floor(time / 60);
        var seconds = int(time - minutes * 60);
        var hours = Math.floor(minutes / 60);
        minutes = minutes - hours * 60;
        return String((hours > 0 || full_hours ? hours + ':' : '') + ((hours > 0 || full_minutes) && minutes < 10 ? '0' : '') + minutes + ':' + (seconds < 10 ? '0' : '') + seconds)
    };
    var Href = function() {
        return encodeURIComponent((window.location != window.parent.location) ? document.referrer : document.location.href)
    };
    var Scripted = function(y) {
        var x = false;
        var scripts = document.getElementsByTagName('script');
        for (var i = 0; i < scripts.length; i++) {
            if (scripts[i].src.indexOf(y) > -1) {
                x = true
            }
        }
        return x
    };
    var hex2rgb = function(x, y) {
        x = x.replace('#', '');
        var r = parseInt(x.length == 3 ? x.slice(0, 1).repeat(2) : x.slice(0, 2), 16);
        var g = parseInt(x.length == 3 ? x.slice(1, 2).repeat(2) : x.slice(2, 4), 16);
        var b = parseInt(x.length == 3 ? x.slice(2, 3).repeat(2) : x.slice(4, 6), 16);
        if (y) {
            return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + y + ')'
        } else {
            return 'rgb(' + r + ', ' + g + ', ' + b + ')'
        }
    };
    var css = function(e, o) {
        if (e) {
            for (var key in o) {
                if (o.hasOwnProperty(key)) {
                    if (o[key] != 'NaNpx' && o[key] != undefined) {
                        if (typeof o[key] == 'number' && key != 'opacity' && key != 'zIndex') {
                            o[key] += 'px'
                        }
                        if ((key.indexOf("color") > -1 || key.indexOf("Color") > -1) && o[key].indexOf("#") == -1 && o[key].indexOf("rgba") == -1) {
                            o[key] = '#' + o[key]
                        }
                        if (key == "transform") {
                            e.style['-ms-' + key] = o[key];
                            e.style['-moz-' + key] = o[key];
                            e.style['-webkit-' + key] = o[key];
                            e.style['-o-' + key] = o[key]
                        }
                        if (key == "fontFamily") {
                            if (o[key].indexOf(" ") > -1) {
                                o[key] = '"' + o[key] + '"'
                            }
                        }
                        if (key == "box-sizing") {
                            e.style.setProperty(key, o[key], 'important')
                        } else {
                            e.style[key] = o[key]
                        }
                    }
                }
            }
        }
    };
    var CheckColor = function(c) {
        return c.substr(0, 1) != '#' ? c = "#" + c : c
    };
    var controlCSS = function(x, color, y) {
        !color ? color = '#fff' : '';
        color = CheckColor(color);
        var r = random(100000, 1000000);
        x = x.replace(/\(rand\)/g, r);
        x = x.replace(/\(color\)/g, color);
        var _html = x.substr(0, x.indexOf('|||'));
        var _css = x.substr(x.indexOf('|||') + 3);
        var _css2 = '';
        if (o.system.webkit) {
            _css2 = _css.replace(/animation:/g, "-webkit-animation:");
            _css2 = _css2.replace(/animation-/g, "-webkit-animation-");
            _css2 = _css2.replace(/@keyframes/g, "@-webkit-keyframes");
            _css2 = _css2.replace(/transform/g, "-webkit-transform")
        }
        y.innerHTML = _html;
        pushCSS(_css2 + _css)
    };
    var pushCSS = function(x) {
        if (o.css) {
            if (o.css.styleSheet) {
                o.css.styleSheet.cssText = x
            } else {
                o.css.appendChild(document.createTextNode(x))
            }
        }
    };
    var xhr = function(y, z) {
        var x = new XMLHttpRequest();
        x.open('GET', y, true);
        x.onload = z;
        x.send()
    };
    var gif = function(z) {
        var gif = document.createElement("img");
        if (o.gifed.indexOf(z) > -1) {
            o.gifed.push(z);
            if (z.indexOf("?") > 0) {
                z = z + '&' + Math.random()
            } else {
                z = z + '?' + Math.random()
            }
        } else {
            o.gifed.push(z)
        }
        gif.setAttribute('src', z);
        gif.setAttribute('height', '1px');
        gif.setAttribute('width', '1px')
    };
    var attr = function(e, o) {
        for (var key in o) {
            if (o.hasOwnProperty(key)) {
                e.setAttribute(key, o[key])
            }
        }
    };
    var destroy = function(e) {
        if (e) {
            try {
                e.parentNode.removeChild(e);
                e = null
            } catch (e) {}
        }
    };
    var random = function(min, max) {
        return Math.floor(arguments.length > 1 ? (max - min + 1) * Math.random() + min : (min + 1) * Math.random())
    };
    var trim = function(x) {
        if (typeof x == "string") {
            return x.replace(/^\s+|\s+$/gm, '')
        } else {
            return x
        }
    };
    var encode = function(x, n) {
        if (n == 0) {
            return "#0" + salt.e(x)
        }
        if (n == 1) {
            return "#1" + pepper(salt.e(x), 1)
        }
    };
    var str2obj = function(x) {
        if (v[x] != "") {
            if (typeof v[x] != "string") {
                o[x + 'o'] = v[x]
            } else {
                if (v[x].indexOf("[{") == 0) {
                    try {
                        v[x] = v[x].replace(/pjs'qt/ig, '"');
                        o[x + 'o'] = eval(v[x])
                    } catch (e) {}
                }
            }
        }
    };
    var dechar = function(x) {
        return String.fromCharCode(x)
    };
    var decode = function(x) {
        if (x.substr(0, 2) == "#1") {
            return salt.d(pepper(x.substr(2), -1))
        } else if (x.substr(0, 2) == "#0") {
            return salt.d(x.substr(2))
        } else {
            return x
        }
    };
    var checkBase64 = function(x) {
        if (x) {
            if (x.indexOf('http') == -1 && x.indexOf('.') == -1 && x.length > 100) {
                x = 'data:image/png;base64,' + x
            }
        }
        return x
    };
    var hide = function(x) {
        x.style.visibility = "hidden"
    };
    var show = function(x) {
        x.style.visibility = "visible"
    };
    var hide2 = function(x) {
        x.style.display = "none"
    };
    var show2 = function(x) {
        x.style.display = "block"
    };
    var isVisible = function(x) {
        return x ? x.style.visibility != "hidden" && x.style.display != "none" : false
    };
    var int = function(s) {
        if (typeof s == "string") {
            if (s.indexOf("px") > 0) {
                s = s.substr(0, s.indexOf("px"))
            }
        }
        return parseInt(s)
    };
    var hidden = function(x) {
        return x.style.display == "none"
    };
    var hexToRgb = function(hex) {
        var bigint = parseInt(hex, 16);
        var r = (bigint >> 16) & 255;
        var g = (bigint >> 8) & 255;
        var b = bigint & 255;
        return r + "," + g + "," + b
    };
    var MarginPadding = function(o, x, y) {
        o[x + 'top'] = 0;
        o[x + 'right'] = 0;
        o[x + 'bottom'] = 0;
        o[x + 'left'] = 0;
        if (exist(o[y])) {
            var z = o[y].split(" ");
            if (z.length == 4) {
                o[x + 'top'] = z[0] ? parseFloat(z[0]) : 0;
                o[x + 'right'] = z[1] ? parseFloat(z[1]) : 0;
                o[x + 'bottom'] = z[2] ? parseFloat(z[2]) : 0;
                o[x + 'left'] = z[3] ? parseFloat(z[3]) : 0
            }
        }
        return o
    };
    var StringVar = function(x, y) {
        return v[x] && v[x] != '' ? v[x] : y
    };
    var abc = String.fromCharCode(65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122);
    var salt = {
        _keyStr: abc + "0123456789+/=",
        e: function(e) {
            var t = "";
            var n, r, i, s, o, u, a;
            var f = 0;
            e = salt._ue(e);
            while (f < e.length) {
                n = e.charCodeAt(f++);
                r = e.charCodeAt(f++);
                i = e.charCodeAt(f++);
                s = n >> 2;
                o = (n & 3) << 4 | r >> 4;
                u = (r & 15) << 2 | i >> 6;
                a = i & 63;
                if (isNaN(r)) {
                    u = a = 64
                } else if (isNaN(i)) {
                    a = 64
                }
                t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a)
            }
            return t
        },
        d: function(e) {
            var t = "";
            var n, r, i;
            var s, o, u, a;
            var f = 0;
            e = e.replace(/[^A-Za-z0-9\+\/\=]/g, "");
            while (f < e.length) {
                s = this._keyStr.indexOf(e.charAt(f++));
                o = this._keyStr.indexOf(e.charAt(f++));
                u = this._keyStr.indexOf(e.charAt(f++));
                a = this._keyStr.indexOf(e.charAt(f++));
                n = s << 2 | o >> 4;
                r = (o & 15) << 4 | u >> 2;
                i = (u & 3) << 6 | a;
                t = t + dechar(n);
                if (u != 64) {
                    t = t + dechar(r)
                }
                if (a != 64) {
                    t = t + dechar(i)
                }
            }
            t = salt._ud(t);
            return t
        },
        _ue: function(e) {
            e = e.replace(/\r\n/g, "\n");
            var t = "";
            for (var n = 0; n < e.length; n++) {
                var r = e.charCodeAt(n);
                if (r < 128) {
                    t += dechar(r)
                } else if (r > 127 && r < 2048) {
                    t += dechar(r >> 6 | 192);
                    t += dechar(r & 63 | 128)
                } else {
                    t += dechar(r >> 12 | 224);
                    t += dechar(r >> 6 & 63 | 128);
                    t += dechar(r & 63 | 128)
                }
            }
            return t
        },
        _ud: function(e) {
            var t = "";
            var n = 0;
            var r = 0;
            var c1 = 0;
            var c2 = 0;
            while (n < e.length) {
                r = e.charCodeAt(n);
                if (r < 128) {
                    t += dechar(r);
                    n++
                } else if (r > 191 && r < 224) {
                    c2 = e.charCodeAt(n + 1);
                    t += dechar((r & 31) << 6 | c2 & 63);
                    n += 2
                } else {
                    c2 = e.charCodeAt(n + 1);
                    c3 = e.charCodeAt(n + 2);
                    t += dechar((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);
                    n += 3
                }
            }
            return t
        }
    };
    var pepper = function(s, n) {
        s = s.replace(/\+/g, "#");
        s = s.replace(/#/g, "+");
        var a = sugar(o.y) * n;
        if (n < 0) a += abc.length / 2;
        var r = abc.substr(a * 2) + abc.substr(0, a * 2);
        return s.replace(/[A-Za-z]/g, function(c) {
            return r.charAt(abc.indexOf(c))
        })
    };
    var sugar = function(x) {
        x = x.split(dechar(61));
        var result = '';
        var c1 = dechar(120);
        var chr;
        for (var i in x) {
            if (x.hasOwnProperty(i)) {
                var encoded = '';
                for (var j in x[i]) {
                    if (x[i].hasOwnProperty(j)) {
                        encoded += (x[i][j] == c1) ? dechar(49) : dechar(48)
                    }
                }
                chr = parseInt(encoded, 2);
                result += dechar(chr.toString(10))
            }
        }
        return result.substr(0, result.length - 1)
    };
    var exist = function(x) {
        return x != null && typeof(x) != 'undefined' && x != 'undefined'
    };
    var findLeft = function(el) {
        return el.getBoundingClientRect().left + (window.scrollX ? window.scrollX : window.pageXOffset)
    };
    var findTop = function(el) {
        const rect = el.getBoundingClientRect();
        return rect.top + window.scrollY
    };
    var redirect = function(x) {
        if (x != '') {
            if (v.redirectblank == 1) {
                window.open(x)
            } else {
                window.location.href = x
            }
            x = ''
        }
    };
    var timeFormat = function(seconds) {
        var seconds = Math.round(seconds);
        var minutes = Math.floor(seconds / 60);
        var hours = Math.floor(minutes / 60);
        minutes = Math.floor(minutes % 60);
        seconds = Math.floor(seconds % 60);
        hours > 0 && minutes < 10 ? minutes = "0" + minutes : "";
        seconds = seconds >= 0 ? ((seconds >= 10) ? seconds : "0" + seconds) : "00";
        var out = (hours > 0 ? hours + ":" : "") + (minutes >= 0 ? minutes : "0") + ":" + seconds;
        return out
    };
    var Actions = function() {
        var _fullscreen_end = false;
        var _subtitle_empty = true;
        if (o.system.tv) {
            log("tv")
        }
        this.Title = function(x) {
            o.controls ? o.controls.title(x) : ''
        };
        this.File = function(x) {
            if (x) {
                if (typeof(x) == 'string') {
                    x = x.replace(/(\r\n|\n|\r)/gm, "");
                    if (x.indexOf("[{") == 0) {
                        try {
                            x = x.replace(/pjs'qt/ig, '"');
                            x = JSON.parse(x)
                        } catch (e) {
                            x = "incorrect JSON"
                        }
                    }
                }
                if (typeof(x) == 'object') {
                    o.playlist_dic = [];
                    o.playlist = IndexPlaylist(x);
                    if (v.playlist.openlast == 1 && !v.plstart) {
                        var keys = Object.keys(o.playlist_dic);
                        var last = keys.slice(-1)[0];
                        last ? v.plstart = last : ''
                    }
                    var y = FindFileInPlaylist();
                    x = y.file;
                    o.titlestore = y.title;
                    o.controls ? o.controls.titlepl(y.title) : '';
                    if (exist(y.poster)) {
                        if (o.media) {
                            o.media.Poster(y.poster)
                        } else {
                            v.poster = y.poster
                        }
                    }
                    if (exist(y.sub)) {
                        y.subtitle = y.sub
                    }
                    if (exist(y.start)) {
                        v.start = o.seekto = y.start
                    }
                    SettingsTimers("offset");
                    if (exist(y.id)) {
                        o.plid = y.id
                    }
                    var sx = ["subtitle", "vars", "embed", "url", "heartbeat", "thumbnails", "download", "points", "remove", "end", "title2"];
                    if (exist(v.control_title)) {
                        if (v.control_title.showfrom1file == 1 && v.control_title.showtitleplaylist == 1) {
                            sx.push("title");
                            sx.push("t1");
                            sx.push("t2");
                            sx.push("t3");
                            sx.push("t4");
                            sx.push("t5")
                        }
                    }
                    for (var i = 0; i < sx.length; i++) {
                        if (exist(y[sx[i]])) {
                            v[sx[i]] = y[sx[i]]
                        }
                    }
                    if (sx.indexOf('title') > 0) {
                        if (v.control_title.templated == 1) {
                            o.title_template = v.control_title.template;
                            o.actions.TitleTemplate(y)
                        }
                        o.actions.Title('title')
                    }
                    if (o.controls) {
                        o.controls.UpdatePlaylist(o.playlist)
                    }
                    if (o.droplist) {
                        o.droplist.Update()
                    }
                }
                if (typeof(x) == 'string') {
                    if (x.indexOf("#2") == 0) {
                        x = fd2(x)
                    }
                    if (x.indexOf("#3") == 0 && x.indexOf(v.file3_separator) > 0) {
                        x = fd3(x)
                    }
                    if (x.indexOf("#0") == 0) {
                        x = fd0(x)
                    }
                    if (v.fplace == 1) {
                        x = fplace(x)
                    }
                    if (x == '') {
                        log("empty file");
                        o.media_error = true;
                        js("error", "empty")
                    }
                    o.files_quality = [];
                    o.files_audiotrack = [];
                    o.current_file = 0;
                    o.current_quality = 0;
                    o.current_audiotrack = 0;
                    v.file_separator == '' ? v.file_separator = ',' : '';
                    if ((x.indexOf("]") > -1 && x.indexOf("[") > -1) || exist(v.qualities)) {
                        o.files = x.split(v.file_separator)
                    } else {
                        o.files = [x]
                    }
                    o.audiotracks = [];
                    if (exist(v.qualities)) {
                        var qualities = v.qualities.split(v.file_separator)
                    }
                    if (o.files.length > 0) {
                        var q = 0;
                        for (var i = 0; i < o.files.length; i++) {
                            o.files[i] = trim(o.files[i]);
                            if (o.files[i] != '') {
                                if (o.files[i].indexOf("[") == 0 && o.files[i].indexOf("]") > 1) {
                                    o.files_quality[i] = o.files[i].substr(o.files[i].indexOf("[") + 1, o.files[i].indexOf("]") - 1);
                                    o.files[i] = o.files[i].substr(o.files[i].indexOf("]") + 1)
                                } else {
                                    if (exist(v.qualities)) {
                                        o.files_quality[i] = exist(qualities[i]) ? qualities[i] : ''
                                    } else {
                                        o.files_quality[i] = i + 1
                                    }
                                }
                                if (exist(v.default_quality) && q == 0) {
                                    if (v.default_quality == o.files_quality[i]) {
                                        o.current_file = i;
                                        o.current_quality = i
                                    }
                                }
                                if (exist(o.default_quality)) {
                                    if (o.default_quality == o.files_quality[i]) {
                                        o.current_file = i;
                                        o.current_quality = i;
                                        q = i
                                    }
                                }
                                o.files[i] = Prefile(o.files[i])
                            }
                        }
                    } else {
                        o.files[0] = Prefile(o.files[0])
                    }
                    return o.files[o.current_file]
                }
            } else {
                return x
            }
        };

        function Prefile(x) {
            if (exist(v.prefile) && x.indexOf("//") == -1) {
                x = v.prefile + x
            }
            return x
        };
        this.InvertPlaylist = function() {
            if (o.playlist) {
                var x = o.playlist.reverse();
                for (var i = 0; i < x.length; i++) {
                    x[i].pjs_i = i
                }
                o.playlist = x;
                o.controls.UpdatePlaylist(o.playlist)
            }
        };
        this.UpdatePlaylist = function(x) {
            if (typeof(x) == 'object') {
                o.playlist_dic = [];
                o.playlist_source = x;
                o.playlist = IndexPlaylist(x);
                if (o.controls) {
                    o.controls.UpdatePlaylist(o.playlist)
                }
            }
        };
        this.NewFile = function(x, y) {
            !exist(y) ? v.autoplay = 1 : '';
            v.preload = 0;
            v.duration = undefined;
            v.end = undefined;
            o.media_error != 2 ? o.media_error = false : '';
            o.metadata = false;
            o.pipwebkit = false;
            o.reloadTimer = 0;
            o.gatracked = [];
            o.checknative = false;
            o.gained = false;
            o.dvr = false;
            o.quartile = [false, false, false];
            RemoveSubtitles();
            if (v.vast_midroll_limit > 1) {
                if (exist(o.midrollo) && v.midrolls == 1) {
                    for (var i in o.midrollo) {
                        o.midrollo[i].worked = undefined
                    }
                    v.vast_midroll_limit--
                }
            }
            if (o.media.status() == "playing") {
                this.Stop()
            }
            if (exist(o.share)) {
                o.share.Remove()
            }
            if (exist(o.reloadErrorTimeout)) {
                clearTimeout(o.reloadErrorTimeout)
            }
            js("new");
            o.actions.VastRecover();
            x = this.File(x);
            if (y == 1) {
                o.file_type = ''
            }
            o.media.File(x);
            if ((o.system.mobile || o.system.safari) && !exist(y)) {
                o.actions.Play()
            }
            if (exist(o.custom_aspect)) {
                o.mediascale = {
                    x: 1,
                    y: 1,
                    x0: 1,
                    y0: 1
                };
                o.media.normalscale()
            }
            o.media.NativeControls();
            o.controls.QualityChangedNoHand();
            o.controls.AudioTrackChangedNoHand();
            o.controls.refresh()
        };
        this.RemoveSubtitles = function() {
            RemoveSubtitles()
        };

        function RemoveSubtitles() {
            o.current_subtitle = -1;
            o.subtitle_on = false;
            o.thumbs_on = false;
            v.subtitle = null;
            v.thumbnails = null;
            o.sub = null;
            o.subs = null;
            if (exist(o.controls)) {
                o.controls.SubtitleChanged()
            }
            o.files_subtitle = null;
            if (exist(o.subtitle)) {
                o.mediacontainer.removeChild(o.subtitle);
                o.subtitle = null
            }
            o.current_subtitle = null;
            o.subtitle_on = false
        }
        this.TitleTemplate = function(x) {
            var y = false;
            if (x && o.title_template) {
                v.title = o.title_template;
                for (var i = 1; i < 6; i++) {
                    if (exist(x['t' + i])) {
                        v.title = v.title.replace("{" + i + "}", x['t' + i]);
                        y = true
                    }
                }
            }
            return y
        };
        this.MediaReady = function() {
            if (v.autoplay == 1) {
                if (v.observer == 1) {
                    setTimeout(function() {
                        o.actions.Play()
                    }, 500)
                } else {
                    this.Play()
                }
                v.autoplayed = 1
            }
            if (v.thumbs == 1) {
                if (typeof PluginThumbs !== "undefined") {
                    var th = new PluginThumbs()
                }
            }
        };
        this.NativeControls = function() {
            var x = false;
            if (o.system.mobile) {
                x = true;
                if (v.nativenotiphone == 1 && o.system.iphone) {
                    x = false
                }
                if (v.nativenotipad == 1 && o.system.ipad) {
                    x = false
                }
                if (v.nativenotios == 1 && o.system.ios) {
                    x = false
                }
                if (v.nativenotandroid == 1 && o.system.android) {
                    x = false
                }
            }
            if (v.nativeontv == 1 && o.system.tv) {
                x = true
            }
            return x
        };
        this.Metadata = function() {
            o.media.Volume(v.volume);
            if (o.muted) {
                o.media.Mute()
            }
            o.metadata = true;
            o.controls.refresh();
            if (o.casting && o.tagvideo) {
                o.chromecast.Go()
            }
        };
        this.onPlayTag = function() {
            !o.onplay ? onPlay() : ''
        };

        function onPlay() {
            o.onplay = true;
            if (o.controls) {
                if (o.controls.SettingsVisible()) {
                    o.controls.Settings()
                }
            }
            if (o.droplist) {
                o.droplist.Close()
            }
            if (exist(o.lunchfileonstart)) {
                var ol = o.lunchfileonstart.valueOf();
                o.lunchfileonstart = undefined;
                o.actions.NewFile(ol)
            } else {
                o.media.Play()
            }
            if (!o.checknative) {
                setTimeout(function() {
                    o.media.NativeControls()
                }, 500)
            }!o.play ? o.controls.Play() : '';
            v.effects == 1 ? o.effects.api("play") : '';
            if (o.system.mobile) {
                o.controls.HideInterval()
            }
            if (exist(o.share)) {
                o.share.isOpen() ? o.share.Hide() : ''
            }
            if (v.heartbeats == 1 && exist(v.heartbeat) && o.dt) {
                if (v.heartbeat != '' && !exist(o.heartbeatInterval)) {
                    o.heartbeatInterval = setInterval(Heartbeat, v.heartbeatinterval * 1000);
                    Heartbeat()
                }
            }
        }
        this.Play = function(noads) {
            var stop = false;
            if (o.file_type == "youtube") {
                if (!o.media.YoutubeReady() && v.autoplay != 1 && v.preload == 1) {
                    stop = true;
                    if (window['YT']) {
                        v.autoplay = 1;
                        o.media.onYoutubeReady()
                    }
                }
            }
            if (v.pass == 1 && v.passontime == 0) {
                o.actions.Password();
                stop = true
            }
            if (o.geo) {
                if (v.geoplay == 1) {
                    o.geo.Go()
                }
            }
            if (o.media_error || stop) {
                if (o.media_error) {
                    Advertising("preroll") ? datetime(2) : ''
                }
            } else {
                StopOtherPlayer(!o.start);
                o.alert.close();
                if (!o.start) {
                    js("start");
                    o.start = true;
                    if (v.toolbar.hideuntilstarted == 1) {
                        setTimeout(function() {
                            o.controls.resizetext()
                        }, 100)
                    }
                    if (v.toolbar.hideleavetimeout > 0 && v.autoplay == 1) {
                        o.starttimeout = true;
                        setTimeout(StartTimeout, v.toolbar.hideleavetimeout * 1000)
                    }
                    if (v.water == 1 && v.wid) {
                        PluginWater()
                    }
                    js("new");
                    gaTracker("play", "Play", true);
                    o.ab ? gaTracker("adblock", "AdBlock", true) : ''
                } else {
                    gaTracker("resume", "Resume")
                }
                if (v.fullonplay == 1 && !o.fullscreen) {
                    var dd = new Date();
                    var tt = dd.getTime();
                    if (tt - o.clicktime < 300) {
                        if (v.fullonplaymobile == 1) {
                            o.system.mobile ? this.Fullscreen() : ''
                        } else {
                            this.Fullscreen()
                        }
                    }
                }
                if (Advertising("preroll") || Advertising("intro")) {
                    datetime(2)
                } else {
                    if (v.redirect == 1 && exist(v.redirectonplay) && !exist(options.redirect)) {
                        redirect(v.redirectonplay);
                        stop = true
                    }
                    if (!stop) {
                        log("Play");
                        if (o.file_type != 'pdf') {
                            o.media.duration() > 0 ? o.controls.Duration(o.media.time(), o.media.duration()) : ''
                        }
                        if (!o.start2) {
                            o.start2 = true;
                            if (v.toolbar.hideleavetimeout > 0 && v.autoplay == 1) {
                                o.starttimeout = true;
                                setTimeout(StartTimeout, v.toolbar.hideleavetimeout * 1000)
                            }
                        }
                        var playroll = false;
                        if (o.media.time() > 1 && v.pauserollonplay == 1 && noads != 1) {
                            playroll = Advertising("pauseroll")
                        }
                        if (playroll) {} else {
                            onPlay()
                        }
                    }
                }
            }
        };

        function StartTimeout() {
            o.starttimeout = false;
            o.controls.refresh()
        }
        this.Pause = function() {
            if (o.play) {
                log("Pause");
                o.media.Pause();
                o.controls.Pause();
                js("pause");
                v.posteronpause ? ShowPoster() : '';
                v.effects == 1 ? o.effects.api("pause") : '';
                if (!exist(o.vast) && v.pauserollonplay == 0) {
                    Advertising("pauseroll")
                }
                o.onplay = false
            }
        };
        this.Mute = function() {
            o.media.Mute();
            o.controls.Mute();
            o.muted = true;
            js("mute")
        };
        this.Unmute = function() {
            o.media.Unmute();
            o.muted = false;
            o.controls.Unmute();
            js("unmute")
        };
        this.Volume = function(x, y) {
            x < 0.02 ? x = 0 : '';
            x > 1 ? x = 1 : '';
            if (x <= 0) {
                this.Mute()
            } else {
                if (o.muted) {
                    this.Unmute()
                }
                v.volume = x
            }
            js("volume", x);
            o.controls.Volume(x, y);
            o.media.Volume(x)
        };
        this.Waiting = function() {
            o.controls.Waiting()
        };
        this.StopWaiting = function() {
            o.controls ? o.controls.StopWaiting() : ''
        };
        this.Progress = function() {
            this.StopWaiting()
        };
        this.Seeked = function() {
            o.actions.UpdatePlay();
            this.StopWaiting()
        };
        this.Duration = function(time, duration) {
            if (o.continue && !o.start) {
                var f = o.continue.flag();
                if (f.t && f.d) {
                    time = f.t
                }
            }
            o.controls.Duration(time, duration)
        };
        this.LoadedData = function(time, duration) {
            if (exist(o.seekto) && o.file_type != "youtube") {
                o.actions.Seek(o.seekto, false);
                o.seekto = undefined
            }
        };
        this.ScreenClick = function() {
            var d = new Date();
            o.clicktime = d.getTime();
            var x = false;
            if (o.controls.SettingsVisible() && v.settings.always != 1) {
                o.controls.Settings();
                x = true
            }
            if (o.droplist) {
                if (o.droplist.Visible()) {
                    o.droplist.Close();
                    x = true
                }
            }
            if (v.playlist.always == 0) {
                if (o.controls.PlaylistVisible() && v.playlist.autohide == 1) {
                    o.controls.Playlist();
                    x = true
                }
            }
            if (v.redirect == 1 && exist(v.redirectonclick) && !exist(options.redirect)) {
                redirect(v.redirectonclick);
                x = true
            }
            if (!x) {
                this.Toggle()
            }
        };
        this.ControlsBgClick = function() {
            if (o.controls.SettingsVisible()) {
                o.controls.Settings()
            }
        };
        this.Toggle = function() {
            if (o.media.status() == "playing") {
                this.Pause()
            } else {
                this.Play()
            }
            Subtitle(o.media.time())
        };
        this.Seek = function(sec, hand) {
            if (sec < o.media.duration()) {
                o.seeked_time = sec;
                o.media.Seek(sec);
                if (hand) {
                    o.controls.Seek(sec, o.media.duration())
                }
                o.seeking = true;
                o.seeking_time = o.media.time();
                Subtitle(o.seeking_time)
            }
        };
        this.Open = function(url, target, endfull) {
            if (o.media.status() == "playing" && o.mode != 'audio') {
                Pause();
                if (o.fullscreen && endfull) {
                    o.controls.Normalscreen()
                }
            }
            window.open(url, target)
        };
        this.Download = function() {
            var x = o.media.currentFile();
            if (exist(v.download)) {
                x = v.download
            }
            if (x != '') {
                js("download");
                var win = window.open(x, '_blank');
                win.focus()
            }
        };
        this.UpdatePlay = function() {
            var time = o.media.time();
            var duration = o.media.duration();
            o.controls.Played(time, duration)
        };
        this.Playing = function() {
            var time = o.media.time();
            var duration = o.media.duration();
            var delta = duration > 0 ? time / duration : 0;
            if (!o.seeking) {
                o.controls ? o.controls.Played((o.seekto > 0 ? o.seekto : time), duration) : ''
            } else {
                time != o.seeking_time ? o.seeking = false : ''
            }
            if ((v.ga == 1 || v.yamtr == 1) && duration > 0) {
                gaTrackPlay("play25", "Play 25%", delta, 0.25);
                gaTrackPlay("play50", "Play 50%", delta, 0.50);
                gaTrackPlay("play75", "Play 75%", delta, 0.75)
            }
            for (var i = 0; i < 3; i++) {
                if (!o.quartile[i]) {
                    if (delta >= i * 0.25 + 0.25) {
                        Quartile(i)
                    }
                }
            }
            v.reloadlog == 1 ? log(1, time, duration) : '';
            if (v.reload == 1) {
                if (o.play) {
                    var z = false;
                    var rld = false;
                    if (v.reloadlive == 1) {
                        if (!o.media.isLive()) {
                            z = true
                        }
                    }
                    if (time > 0) {
                        if (time == o.time && !z) {
                            rld = true
                        } else {
                            o.reloadTimer = 0
                        }
                        o.time = time
                    } else {
                        if (v.reloadstart == 1) {
                            var ld = o.media.loaded();
                            v.reloadlog == 1 ? log(2, ld, o.timeld) : '';
                            if (!z) {
                                if (ld == o.timeld) {
                                    rld = true
                                } else {
                                    o.reloadTimer = 0
                                }
                            }
                            o.timeld = ld
                        }
                    }
                    if (rld) {
                        o.reloadTimer++;
                        v.reloadlog == 1 ? log(3, o.reloadTimer) : '';
                        if (o.reloadTimer == v.reloadtimeout * (1000 / o.timerTime)) {
                            o.actions.Reload()
                        }
                    }
                }
            }
            if (v.vast == 1) {
                v.nomidroll != 1 && v.midrolls == 1 ? MidrollOverlay("midroll", time, duration) : '';
                v.nooverlay != 1 && v.overlays == 1 ? MidrollOverlay("overlay", time, duration) : ''
            }
            if (v.intros == 1 && v.introstart > 0) {
                if (time >= v.introstart) {
                    if (!exist(o.vast)) {
                        if (Advertising("intro")) {
                            o.media.Pause();
                            o.controls.Pause()
                        }
                        v.introstart = 0
                    }
                }
            }
            SettingsTimers("play");
            if (v.pass == 1 && v.passontime > -1) {
                PasswordTime(time, duration)
            }
            if (o.subtitle_on) {
                Subtitle(time)
            }
            if (o.storage && v.timestore == 1) {
                o.continue.write(time, duration)
            }
            if (exist(v.end)) {
                if (v.end > 0 && time > v.end) {
                    if (o.file_type == "youtube") {
                        o.media.Pause();
                        o.media.Seek(v.start > 0 ? v.start : 0)
                    } else {
                        o.media.Recover();
                        o.actions.Stop()
                    }
                    v.start > 0 ? o.seekto = v.start : '';
                    o.actions.Ended()
                }
            }
            if (exist(v.remove)) {
                var r1 = v.remove.split(",");
                for (var i = 0; i < r1.length; i++) {
                    var r2 = r1[i].split("-");
                    if (r2.length == 2) {
                        if (time > r2[0] && time < r2[1]) {
                            o.media.Seek(r2[1])
                        }
                    }
                }
            }
        };

        function Quartile(x) {
            o.quartile[x] = true;
            if (v.timestore == 1 && v.playedstore == 1 && v.playedquartile == x) {
                if (o.storage && o.plid) {
                    o.continue ? o.continue.writePl(o.plid) : ''
                }
            }
        }

        function gaTrackPlay(x, y, t, p) {
            if (!exist(o.gatracked[y])) {
                if (t > p) {
                    gaTracker(x, y, true)
                }
            }
        };
        this.Reload = function() {
            o.reloadTimer = 0;
            if (v.reloadjustevent == 1) {
                js("reload")
            } else {
                o.seekto > 0 || o.media.isLive() ? '' : o.seekto = o.media.time();
                var openpl = o.controls.PlaylistVisible();
                js("reload");
                o.media.reload();
                openpl && v.playlist.autohide == 1 ? o.controls.PlaylistShow() : ''
            }
        };
        this.Stopped = function() {
            o.controls.Played(0, 0);
            o.controls.Loaded(0, 0);
            o.actions.Duration(0, 0);
            o.controls.StopWaiting()
        };
        this.Loading = function() {
            var time = o.media.loaded();
            var duration = o.media.duration();
            o.controls ? o.controls.Loaded(time, duration) : ''
        };
        this.Ended = function() {
            js("fileend");
            if (v.loop == 1) {
                if (o.file_type == "youtube") {
                    this.Stop()
                }
                if (v.start > 0) {
                    o.actions.Seek(v.start)
                }
                this.Play()
            } else {
                if (o.media.isLive() || o.file_type == "youtube") {
                    this.Stop()
                } else {
                    if (v.finishrewind == 1) {
                        o.actions.Seek((v.start > 0 ? v.start : 0), true);
                        if (o.system.ie) {
                            o.media.Pause()
                        }
                    }
                }
                o.controls.onEnded();
                v.intros == 1 ? v.outros = 1 : '';
                if (Advertising("postroll") || Advertising("outro")) {} else {
                    End()
                }
            }
        };
        this.Fullscreen = function() {
            o.frameresize.contentWindow.onresize = Resize;
            var stop = false;
            var error = false;
            o.fs_error = false;
            o.fullscreen_process = true;
            setTimeout(function() {
                o.fullscreen_process = false
            }, 3000);
            for (var x in o.motions) {
                if (o.motions.hasOwnProperty(x)) {
                    if (exist(o.motions[x])) {
                        try {
                            o.motions[x].TheEnd2()
                        } catch (e) {}
                    }
                }
            }
            try {
                o.fullscreen_start = true;
                if (o.system.ios && v.nativefullios == 1 && o.tagvideo && v.nativecontrolsmobile != 1) {
                    var x = o.media.tag();
                    if (x) {
                        if (x.webkitSupportsFullscreen) {
                            x.webkitEnterFullScreen();
                            x.addEventListener("webkitendfullscreen", iosExitFullscreen);
                            o.media.nativeSubtitle();
                            stop = true
                        }
                    }
                }
                if (!stop) {
                    if (o.frame.requestFullScreen) {
                        o.frame.requestFullScreen({
                            navigationUI: "hide"
                        });
                        o.realfullscreen = true
                    } else if (o.frame.requestFullscreen) {
                        o.frame.requestFullscreen({
                            navigationUI: "hide"
                        });
                        o.realfullscreen = true
                    } else if (o.frame.mozRequestFullScreen) {
                        o.frame.mozRequestFullScreen({
                            navigationUI: "hide"
                        });
                        o.realfullscreen = true
                    } else if (o.frame.webkitRequestFullScreen) {
                        o.frame.webkitRequestFullScreen({
                            navigationUI: "hide"
                        });
                        o.realfullscreen = true
                    } else if (o.frame.msRequestFullscreen) {
                        o.frame.msRequestFullscreen();
                        o.realfullscreen = true
                    }
                }
            } catch (e) {
                error = true;
                log(e)
            }
            if (!o.realfullscreen && !stop) {
                this.FullscreenUI()
            }
            if (!error) {
                setTimeout(PostFullscreen, 200)
            }
        };

        function PostFullscreen() {
            if (o.fs_error != true) {
                if (o.ispipkit) {
                    o.media.PipWebkit()
                }
                if (v.hotkey.volumewheelfull == 1) {
                    VolumeWheelX(true);
                    o.volumewheel = true
                }
                v.effects == 1 ? o.effects.api("full") : '';
                js("fullscreen");
                gaTracker("full", "Fullscreen", true)
            }
        };
        var volumewheelin;
        var lastwheel = {
            x: 0,
            y: 0
        };

        function VolumeWheel(e) {
            if (o.droplist) {
                if (o.droplist.OpenScroll()) {
                    return
                }
            }
            o.hidden_volume_over = true;
            clearInterval(volumewheelin);
            volumewheelin = setInterval(function() {
                o.hidden_volume_over = false;
                o.controls.resize();
                lastwheel = {
                    x: 0,
                    y: 0
                };
                clearInterval(volumewheelin)
            }, 2000);
            o.controls.resize();
            e.preventDefault();
            e.deltaX != 0 ? lastwheel.x++ : lastwheel.x--;
            e.deltaY != 0 ? lastwheel.y++ : lastwheel.y--;
            if (e.wheelDelta != 0) {
                if (lastwheel.x > lastwheel.y) {
                    if (e.deltaX > 0) {
                        o.actions.Volume(parseFloat(v.volume) - v.hotkey.wheelstep / 10, "no")
                    } else {
                        o.actions.Volume(parseFloat(v.volume) + v.hotkey.wheelstep / 10, "no")
                    }
                } else {
                    if (e.deltaY > 0) {
                        o.actions.Volume(parseFloat(v.volume) + (o.system.win ? -v.hotkey.wheelstep / 10 : v.hotkey.wheelstep / 10), "no")
                    } else {
                        o.actions.Volume(parseFloat(v.volume) - (o.system.win ? -v.hotkey.wheelstep / 10 : v.hotkey.wheelstep / 10), "no")
                    }
                }
                o.controls.volumescroll()
            }
        }

        function iosExitFullscreen() {
            if (o.system.ios) {
                o.media.removeNativeSubtitle();
                js("exitfullscreen")
            }
        }
        this.FullscreenUI = function() {
            if (o.fullscreen_start) {
                o.fullscreen = true;
                o.controls.Fullscreen();
                if (!o.realfullscreen) {
                    if (exist(o.parentIframe)) {
                        try {
                            css(o.parentIframe, {
                                'width': '100%',
                                'height': '100%',
                                'position': 'fixed',
                                'left': 0,
                                'top': 0,
                                'zIndex': "100000"
                            })
                        } catch (err) {}
                    }
                    css(o.frame, {
                        'width': '100%',
                        'height': '100%',
                        'position': 'fixed',
                        'left': 0,
                        'top': 0,
                        'zIndex': "100000"
                    });
                    o.screen_w = o.frame.offsetWidth;
                    o.screen_h = o.frame.offsetHeight;
                    try {
                        document.body.style.overflow = 'hidden';
                        if (!exist(o.playlist)) {
                            document.ontouchmove = function(e) {
                                e.preventDefault()
                            }
                        }
                    } catch (err) {}
                }
                if (v.fullblack == 1) {
                    css(o.frame, {
                        'backgroundColor': '#000000'
                    })
                }
                if (o.droplist) {
                    o.droplist.Close()
                }
                Subtitle(o.media.time());
                o.fullscreen_start = false
            }
        };
        this.Normalscreen = function() {
            _fullscreen_end = true;
            if (document.cancelFullScreen) {
                document.cancelFullScreen()
            } else if (document.exitFullscreen) {
                document.exitFullscreen()
            } else if (document.cancelFullscreen) {
                document.cancelFullscreen()
            } else if (document.mozCancelFullScreen) {
                document.mozCancelFullScreen()
            } else if (document.webkitCancelFullScreen) {
                document.webkitCancelFullScreen()
            } else if (document.msExitFullscreen) {
                document.msExitFullscreen()
            }
            if (!o.realfullscreen) {
                this.NormalscreenUI(false)
            }
        };
        this.changeAspect = function(x, y) {
            NewAspect(x, y)
        };

        function NewAspect(x, frmvst) {
            if (exist(o.vast) && !frmvst) {
                o.resizeonplay = x
            } else {
                var stop = false;
                var coh = o.container_w / x;
                if (exist(o.parentIframe)) {
                    try {
                        css(o.parentIframe, {
                            'height': coh
                        })
                    } catch (err) {
                        stop = true;
                        log("iframe crossdomain issue")
                    }
                }
                if (!stop) {
                    o.aspect = x;
                    o.container_h = coh;
                    if (o.aspect > 0) {
                        css(o.container, {
                            'height': coh
                        })
                    }
                    js("height", coh)
                }
                if (o.vast && !o.fullscreen) {
                    o.screen_h = coh;
                    o.vast.Resize()
                }
            }
        };
        this.NormalscreenUI = function(x) {
            if (_fullscreen_end || x) {
                o.fullscreen = false;
                if (!o.realfullscreen) {
                    if (exist(o.parentIframe)) {
                        try {
                            css(o.parentIframe, {
                                'position': 'static',
                                'left': 0,
                                'top': 0,
                                'zIndex': 'unset'
                            });
                            css(o.parentIframe, o.parentIframe_style);
                            css(o.parentIframe, {
                                'width': o.normal_w,
                                'height': o.normal_h
                            })
                        } catch (err) {}
                    }
                    css(o.frame, {
                        'width': o.normal_w,
                        'height': o.normal_h,
                        'position': 'absolute',
                        'left': 0,
                        'top': 0,
                        'zIndex': 'unset'
                    });
                    try {
                        document.body.style.overflow = 'auto';
                        document.ontouchmove = function(e) {
                            return true
                        }
                    } catch (err) {}
                }
                o.controls.Normalscreen();
                if (v.fullblack == 1) {
                    css(o.frame, {
                        'backgroundColor': v.screencolor
                    });
                    if (v.transparent == 1) {
                        o.frame.style.backgroundColor = 'transparent'
                    } else {
                        css(o.frame, {
                            'backgroundColor': v.screencolor
                        })
                    }
                }
                if (v.hotkey.volumewheelfull == 1) {
                    VolumeWheelX(false);
                    o.volumewheel = false
                }
                if (o.droplist) {
                    o.droplist.Close()
                }
                Subtitle(o.media.time());
                o.controls.PlaylistHere();
                _fullscreen_end = false;
                js("exitfullscreen");
                o.realfullscreen = false;
                o.fullscreen_process = false
            }
        };
        this.volumewheel = function(x) {
            VolumeWheelX(x)
        };

        function VolumeWheelX(x) {
            lastwheel = {
                x: 0,
                y: 0
            };
            if (x) {
                window.addEventListener("wheel", VolumeWheel, {
                    passive: false
                })
            } else {
                clearInterval(volumewheelin);
                window.removeEventListener("wheel", VolumeWheel, {
                    passive: false
                })
            }
        }
        this.Stop = function() {
            v.preload = 0;
            o.controls.Pause();
            o.actions.Stopped();
            o.media.Volume(v.volume);
            if (o.controls.SettingsVisible()) {
                o.controls.Settings()
            }
            if (o.muted) {
                this.Mute()
            }
            if (exist(o.heartbeatInterval)) {
                clearInterval(o.heartbeatInterval);
                o.heartbeatInterval = null
            }
            Subtitle(0);
            log("stop");
            js("stop")
        };
        this.SetQuality = function(x) {
            if (exist(o.current_quality)) {
                if (o.current_quality != x) {
                    o.current_quality = x;
                    if (v.qualitystore == 1) {
                        o.default_quality = o.files_quality[x];
                        if (o.storage) {
                            localStorage.setItem("pljsquality", o.default_quality)
                        }
                    }
                    o.media.SetQuality(x);
                    js("quality", o.files_quality[x]);
                    o.controls.QualityChanged(x)
                }
            }
        };
        this.AirplayChanged = function() {
            o.controls ? o.controls.AirplayChanged() : ''
        };
        this.SetAudioTrack = function(x) {
            if (exist(o.current_audiotrack)) {
                if (o.current_audiotrack != x) {
                    o.current_audiotrack = x;
                    if (v.trackstore == 1) {
                        o.default_audio = v.default_audio = o.files_audiotrack[x];
                        if (o.storage) {
                            localStorage.setItem("pljstrack", o.default_audio)
                        }
                    }
                    o.media.SetAudioTrack(x);
                    js("audiotrack", x);
                    o.controls.SettingChanged("audiotrack")
                }
            }
        };
        this.SetSubtitle = function(x) {
            if (exist(o.current_subtitle)) {
                if (o.current_subtitle != x) {
                    if (v.sub_off == 1 && x == o.files_subtitle.length - 1) {
                        SubtitleOff()
                    } else {
                        o.current_subtitle = x;
                        o.subtitle_on = true;
                        o.media.SetSubtitle(x);
                        js("subtitle", o.files_subtitle[x]);
                        o.controls.SubtitleChanged()
                    }
                } else {
                    if (v.sub_off != 1) {
                        SubtitleOff()
                    }
                }
            }
        };

        function SubtitleOff() {
            o.current_subtitle = v.sub_off == 1 ? o.files_subtitle.length - 1 : -1;
            v.subtitle_start = 0;
            o.subtitle_on = false;
            o.controls.SubtitleChanged();
            o.hls_subs || o.dash_subs ? o.media.SetSubtitle(o.current_subtitle) : '';
            exist(o.subtitle) ? o.mediacontainer.removeChild(o.subtitle) : '';
            o.subtitle = null
        }
        this.SetSpeed = function(x) {
            o.media.SetSpeed(x == o.speed1 ? 1 : o.files_speed[x]);
            o.current_speed = x
        };
        this.RenewSubtitle = function() {
            Subtitle(o.media.time());
            StyleSubtitle()
        };

        function Subtitle(time) {
            if (o.subtitle_on && exist(o.subs)) {
                var sub = o.media.sub();
                if (sub) {
                    var x = o.current_subtitle;
                    if (exist(sub[x])) {
                        if (exist(sub[x][1])) {
                            var t = parseInt(time * 10);
                            if (exist(sub[x][1][t])) {
                                var y = '';
                                y = sub[x][0][sub[x][1][t]];
                                if (!exist(o.subtitle)) {
                                    o.subtitle = createElement('div');
                                    o.mediacontainer.appendChild(o.subtitle);
                                    StyleSubtitle()
                                }
                                if (o.controls.ToolbarHidden()) {
                                    css(o.subtitle, {
                                        "position": "absolute",
                                        "bottom": (v.sub_bottom * 1)
                                    })
                                } else {
                                    css(o.subtitle, {
                                        "position": "absolute",
                                        "bottom": (v.sub_bottom * 1 + v.toolbar.h * 1)
                                    })
                                }
                                if (v.sub_split2words == 1) {
                                    y = PluginSubword(y)
                                }
                                if (v.sub_all == 1) {
                                    y = y.replace(/\[sub2\]/gm, '<span style="color:' + (v.sub_color2.indexOf("#") == -1 ? '#' : '') + v.sub_color2 + '">');
                                    y = y.replace(/\[\/sub2\]/gm, '</span>')
                                }
                                o.subtitle.innerHTML = '<span style="' + (v.sub_bg == 1 ? 'background-color:' + hexToRGBA(v.sub_bgcolor, v.sub_bga) : '') + '-webkit-box-decoration-break: clone;color:' + (v.sub_color.indexOf("#") == -1 ? '#' : '') + v.sub_color + ';padding:' + v.sub_bgpadding + 'px ' + v.sub_bgpadding * 2 + 'px;border-radius:' + v.sub_bgo + 'px;margin:0 0;line-height:1.8;font-weight:' + v.sub_weight + '">' + trim(y) + '</span>';
                                if (v.sub_big_fullscreen == 1) {
                                    if (o.fullscreen) {
                                        css(o.subtitle, {
                                            "font-size": ((v.sub_size_fullscreen + ((parseInt(v.sub_sizeproc) - 100) * v.sub_size / 100)) + "px")
                                        })
                                    } else {
                                        css(o.subtitle, {
                                            "font-size": ((v.sub_size + ((parseInt(v.sub_sizeproc) - 100) * v.sub_size / 100)) + "px")
                                        })
                                    }
                                }
                                _subtitle_empty = false
                            } else {
                                if (!_subtitle_empty && exist(o.subtitle)) {
                                    o.subtitle.innerHTML = '';
                                    _subtitle_empty = true
                                }
                            }
                        }
                    }
                }
            }
        }

        function StyleSubtitle() {
            if (o.subtitle) {
                css(o.subtitle, {
                    "position": "absolute",
                    "width": "100%",
                    "padding-left": "10%",
                    "padding-right": "10%",
                    "left": 0,
                    "color": v.sub_color,
                    "text-align": "center",
                    "box-sizing": "border-box"
                });
                o.subtitle.draggable = "true";
                if (v.sub_shadow == 1) {
                    css(o.subtitle, {
                        "text-shadow": "1px 1px 2px black"
                    })
                } else {
                    css(o.subtitle, {
                        "text-shadow": "none"
                    })
                }
            }
        }
        var vast_and;
        var vast_or;
        var vast_type;
        var vast_loaders;
        var vasturl;

        function Advertising(x) {
            if (v["vast_" + x + "timebreak"] > 0 && o.storage) {
                var tb = localStorage.getItem("pljs" + x + "_" + v.d);
                if (tb) {
                    var ct = new Date();
                    o.clicktime = ct.getTime();
                    var ct2 = (ct.getTime() - tb) / 3600000;
                    if (ct2 < v["vast_" + x + "timebreak"]) {
                        return false
                    }
                }
            }
            if (v["vast_" + x + "timelimit"] > 0) {
                if (o.media.duration() > 0) {
                    if (o.media.duration() < v["vast_" + x + "timelimit"] * 60) {
                        if (v["vast_" + x + "timelimited"] > 0) {
                            v.vast_preroll_andlimit = v["vast_" + x + "timelimited"]
                        } else {
                            return false
                        }
                    }
                }
            }
            if (o.compilations.indexOf("VAST") != -1 && v.vast == 1 && !o.noads && v[x + 's'] == 1) {
                if (typeof VastVideo == "undefined") {
                    return false
                }
                if (x == "intro" || x == "outro") {
                    if (typeof PluginIntro !== "undefined") {
                        vasturl = [];
                        return PluginIntro(x)
                    }
                }
                if (exist(o.vast) || exist(o.vastloader)) {
                    js("vast_init", x);
                    return true
                } else {
                    if (exist(v[x])) {
                        if (v[x].toString().indexOf(".") > -1 || v[x].toString().indexOf(":") > -1) {
                            js("vast_init", x);
                            if (x != "midroll" && x != "overlay") {
                                o.actions.Waiting();
                                Curtain()
                            }
                            vast_and = 0;
                            vast_or = 0;
                            vast_type = x;
                            vasturl = v[x].split(" and ");
                            vast_loaders = [];
                            o.adsinchain = vasturl.length;
                            o.adscounter = 1;
                            o.adsfirst = true;
                            for (var i = 0; i < vasturl.length; i++) {
                                vasturl[i] = vasturl[i].split(" or ")
                            }
                            v[x + "_recover"] = v[x];
                            v[x] = null;
                            o.vasttype = x;
                            if (x != 'overlay') {
                                o.vast = new VastVideo()
                            }
                            o.vastloader = new VastLoader();
                            for (var i = 0; i < vasturl.length; i++) {
                                for (var j = 0; j < vasturl[i].length; j++) {
                                    var _url = trim(vasturl[i][j]);
                                    if (_url.indexOf("[50%]") > 0) {
                                        var tmp = random(1, 2);
                                        vasturl[i][j] = vasturl[i][j].replace("[50%]", "");
                                        if (tmp == 2) {
                                            vasturl[i][j] = ''
                                        }
                                    }
                                }
                            }
                            if (v.vast_preload == 1) {
                                for (var i = 0; i < vasturl.length; i++) {
                                    var n = i == 0 ? 1 : 0;
                                    if (vasturl[i].length > n) {
                                        for (var j = n; j < vasturl[i].length; j++) {
                                            var _url = trim(vasturl[i][j]);
                                            vast_loaders[_url] = new VastLoader(true);
                                            vast_loaders[_url].Load(_url, x)
                                        }
                                    }
                                }
                            }
                            o.vastloader.Load(trim(vasturl[0][0]), x);
                            return true
                        } else {
                            return false
                        }
                    } else {
                        return false
                    }
                }
            } else {
                return false
            }
        };
        this.advertising = function(x) {
            Advertising(x)
        };

        function MidrollOverlay(w, x, d) {
            if (exist(o[w + 'o']) && v[w + 's'] == 1) {
                var y;
                for (var i in o[w + 'o']) {
                    if (o[w + 'o'].hasOwnProperty(i)) {
                        if (!exist(o[w + 'o'][i].worked) && exist(o[w + 'o'][i].time) && exist(o[w + 'o'][i].vast)) {
                            var z = o[w + 'o'][i].time.toString();
                            if (z) {
                                if (z.indexOf("%") > 0) {
                                    if (d > 0) {
                                        z = parseInt(z.substr(0, z.indexOf("%"))) * d / 100
                                    } else {
                                        z = -1
                                    }
                                } else {
                                    z = parseInt(z)
                                }
                                if (x >= z) {
                                    if (v['vast_' + w + 'rest'] > 0 && z > -1) {
                                        if (x - z >= v['vast_' + w + 'rest']) {
                                            z = -1
                                        }
                                    }
                                    if (z > -1) {
                                        y = o[w + 'o'][i].vast;
                                        v[w] = o[w + 'o'][i].vast;
                                        if (Advertising(w)) {
                                            o[w + 'o'][i].worked = true;
                                            break
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        };
        this.VastReady = function(x) {
            o.vastloader = null;
            log("VAST ready");
            js("vast_ready", o.vasttype);
            if (x.type == "overlay") {
                var ovr = new VastOverlay(x);
                o.overlays.push(ovr)
            } else {
                if (exist(o.vast)) {
                    if (o.play) {
                        o.media.Pause();
                        o.controls.Pause()
                    }
                    if (v.preload == 0 && v.vastbgpreload == 1 && o.media.time() == 0 && o.media.duration() == 0) {
                        v.preload = 1;
                        o.media.Preload()
                    }
                    if ((!o.vast.tagLive() || x.isVpaid) && o.vastgo > 0) {
                        log("VAST renew");
                        o.vast.Remove();
                        o.vast = null;
                        o.vast = new VastVideo()
                    }
                    o.vastgo++;
                    if (o.adsfirst && v.vast_longtimeout > 0) {
                        clearTimeout(o.vast_longtimeout);
                        o.vast_longtimeout = setTimeout(VastLongTimeout, v.vast_longtimeout * 1000 * 60);
                        if (exist(v.vast_longtimemsg)) {
                            if (v.vast_longtimemsg != '') {
                                o.vast_longtomsg ? o.vast_longtomsg.remove() : '';
                                o.vast_longtomsg = new PluginVastTimeMsg()
                            }
                        }
                    }
                    o.adsfirst = false;
                    if (v.vast_prestarttimeout > 0) {
                        log("VAST startdelay");
                        js("vast_startdelay");
                        setTimeout(VastGo, v.vast_prestarttimeout * 1000, x)
                    } else {
                        VastGo(x)
                    }
                } else {
                    log("VAST alarm")
                }
            }
        };

        function VastGo(x) {
            o.vast.Go(x)
        }

        function VastLongTimeout() {
            if (exist(o.vast)) {
                if (o.vast.active() && o.vast_impressions == 0) {
                    o.vast.RemoveForNextAd();
                    log("VAST timeout " + v.vast_longtimeout);
                    vasturl = [];
                    VastRemoveAndPlay()
                }
            }
        }
        this.VastError = function() {
            js('vast_error', o.vasttype);
            log("VAST error");
            VastNext()
        };
        this.VastNext = function() {
            var stop = false;
            var nolimit = false;
            if (o.vasttype == "preroll") {
                if (v.vast_preroll_and2limit > 0 && o.vast_starts > 0) {
                    nolimit = true;
                    if (o.vast_impressions >= v.vast_preroll_and2limit) {
                        stop = true
                    }
                }
                if (v.vast_preroll_andlimit > 0 && !nolimit) {
                    if (v.vast_preroll_2andlimit == 1 && o.vast_starts == 0) {} else {
                        if (o.vast_impressions >= v.vast_preroll_andlimit) {
                            stop = true
                        }
                    }
                }
            }!stop ? VastNext() : VastRemoveAndPlay()
        };
        this.VastRemoveUrl = function(x) {
            if (v[o.vasttype + "_recover"]) {
                for (var i = 0; i < 3; i++) {
                    v[o.vasttype + "_recover"] = v[o.vasttype + "_recover"].replace(x + (i == 0 ? ' and ' : (i == 1 ? ' or ' : '')), '')
                }
            }
        };

        function VastNext() {
            if (vasturl.length > 0) {
                if (vast_or < vasturl[vast_and].length - 1) {
                    o.vast ? o.vast.RemoveForNextAd() : '';
                    vast_or++;
                    var _url = trim(vasturl[vast_and][vast_or]);
                    var _preloaded = VastPreloaded(_url);
                    if (_preloaded == 'skip') {
                        o.vastloader = new VastLoader();
                        o.vastloader.Load(_url, o.vasttype)
                    }
                    if (_preloaded == 'error') {
                        VastNext()
                    }
                } else {
                    VastRemoveAndPlay()
                }
            } else {
                VastRemoveAndPlay()
            }
        }

        function VastPreloaded(_url) {
            var x = 'skip';
            if (v.vast_preload == 1) {
                if (vast_loaders[_url]) {
                    var y = vast_loaders[_url].Status();
                    if (y == 'ready') {
                        o.vastloader = vast_loaders[_url];
                        log("VAST preloaded");
                        vast_loaders[_url].Ready();
                        x = y
                    } else {
                        if (y == '') {
                            x = 'ok';
                            o.vastloader = vast_loaders[_url];
                            vast_loaders[_url].disablePreload()
                        }
                        if (y == 'error') {
                            x = 'error'
                        }
                    }
                }
            }
            return x
        }
        this.VastInsertAnd = function(x) {
            if (x != '') {
                vasturl.splice(vast_and + 1, 0, [x]);
                VastAddPreload(x)
            }
        };
        this.VastInsertOr = function(x) {
            if (vasturl[vast_and] && x != '') {
                vasturl[vast_and].push(x);
                VastAddPreload(x)
            }
        };
        this.VastRemoveAndPlay = function(x) {
            VastRemoveAndPlay(x)
        };

        function VastAddPreload(x) {
            if (v.vast_preload == 1 && vast_loaders) {
                vast_loaders[x] = new VastLoader(true);
                vast_loaders[x].Load(trim(x), o.vasttype)
            }
        }

        function VastRemoveAndPlay(dontplay) {
            var stop = false;
            var nolimit = false;
            if (o.vasttype == "preroll") {
                if (v.vast_preroll_and2limit > 0 && o.vast_starts > 0) {
                    nolimit = true;
                    if (o.vast_impressions >= v.vast_preroll_and2limit) {
                        stop = true
                    }
                }
                if (v.vast_preroll_andlimit > 0 && !nolimit) {
                    if (v.vast_preroll_2andlimit == 1 && o.vast_starts == 0) {} else {
                        if (o.vast_impressions >= v.vast_preroll_andlimit) {
                            stop = true
                        }
                    }
                }
            }
            if (vasturl.length == 1) {
                if (vasturl[0][0].indexOf("js:") == 0) {
                    vast_and = -1;
                    vasturl = [
                        [vasturl[0][0]]
                    ]
                }
            }
            if (o.vast_stop == 2) {
                stop = true
            }
            if (vasturl.length > vast_and + 1 && !stop) {
                o.vast.RemoveForNextAd();
                vast_and++;
                o.adscounter++;
                vast_or = 0;
                var _url = trim(vasturl[vast_and][0]);
                var _preloaded = VastPreloaded(_url);
                if (_preloaded == 'skip') {
                    o.vastloader = new VastLoader();
                    o.vastloader.Load(_url, vast_type)
                }
                if (_preloaded == 'error') {
                    VastRemoveAndPlay(dontplay)
                }
            } else {
                RemoveCurtain();
                o.controls.StopWaiting();
                if (exist(o.vast)) {
                    o.vast.Remove();
                    o.vast = null
                }
                o.vastloader = null;
                vasturl = [];
                vast_or = 0;
                vast_and = 0;
                js("vast_finish", o.vasttype);
                if (v.vast_ima == 1) {
                    if (o.ima) {
                        o.ima.Destroy();
                        o.ima = undefined
                    }
                }
                vast_type = '';
                o.vast_impressions = 0;
                clearTimeout(o.vast_longtimeout);
                o.vast_longtomsg ? o.vast_longtomsg.remove() : '';
                o.vast_starts++;
                if (o.vasttype == "preroll" || (o.vasttype == "pauseroll" && v.pauserollonplay == 1) || o.vasttype == "midroll") {
                    if (v.file != '?') {
                        o.media.AfterVast();
                        if ((o.file_type == "youtube" && !o.vastclick && o.system.ios) || dontplay == 'dontplay' || v.vast_dontplay == 1) {} else {
                            o.actions.Play(1)
                        }
                    }
                }
                if (o.resizeonplay > 0) {
                    NewAspect(o.resizeonplay);
                    o.resizeonplay = 0
                }
                if (o.vasttype == "postroll") {
                    End()
                }
                o.vastclick = false;
                o.vasttype = null
            }
        };
        this.EmptyVastUrl = function() {
            vasturl = [
                ['']
            ]
        };
        this.VastRecover = function() {
            var x = ['preroll', 'pauseroll', 'postroll'];
            for (var i = 0; i < x.length; i++) {
                if (exist(v[x[i] + "_recover"])) {
                    v['vast_' + x[i] + '_' + 'limit'] --;
                    if (v['vast_' + x[i] + '_' + 'limit'] > 0) {
                        v[x[i]] = v[x[i] + "_recover"]
                    }
                }
            }
        };
        this.Password = function() {
            Curtain();
            if (exist(o.pass)) {
                o.pass.Remove();
                o.pass = null
            }
            o.pass = new Pass()
        };
        this.RemovePassword = function() {
            RemoveCurtain();
            o.pass.Remove();
            o.pass = null
        };

        function Curtain() {
            o.curtain = createElement("div");
            o.frame.appendChild(o.curtain);
            css(o.curtain, {
                "width": "100%",
                "height": "100%",
                "position": "absolute",
                "top": 0,
                "left": 0,
                "background": "#000000",
                "opacity": 0.1
            });
            o.curtain.style.zIndex = 1000
        };

        function ShowPoster() {
            if (exist(o.poster)) {
                if (v.poster != o.currentposter) {
                    Poster(v.poster, o.poster, v.poster_scale)
                }
                show(o.poster);
                css(o.poster, {
                    "opacity": v.poster_a
                });
                o.controls.refresh()
            }
        };
        this.HidePoster = function() {
            if (exist(o.poster)) {
                if (o.media.time() == 0 && v.posterhidestart == 1) {} else {
                    hide(o.poster);
                    css(o.poster, {
                        "opacity": 0
                    })
                }
            }
        };
        this.ShowPoster = function() {
            ShowPoster()
        };

        function RemoveCurtain() {
            if (o.curtain) {
                o.frame.removeChild(o.curtain);
                o.curtain = null
            }
        };

        function StopOtherPlayer(x) {
            if (v.stopotherplayers == 1) {
                for (var i = 0; i < pljssglobal.length; i++) {
                    if (pljssglobal[i].api("id") != v.id) {
                        pljssglobal[i].api('pause')
                    }
                }
            }
            pljssglobalid = v.id
        }

        function IndexPlaylist(x) {
            var y = Object.keys(x).length;
            if (y > 0) {
                x = IndexPlaylistProcessor(x, y, '', -1)
            }
            return x
        }

        function IndexPlaylistProcessor(x, y, p, j) {
            var x2 = [];
            var stop;
            if (exist(x['playlist'])) {
                x = x['playlist'];
                y = x.length
            }
            var ii = 0;
            for (var i = 0; i < y; i++) {
                stop = false;
                if (exist(x[i]['id'])) {
                    x[i]['pjs_id'] = x[i]['id']
                }
                x[i]['id'] = "x" + p + '-' + i + (exist(x[i]['id']) ? '-' + x[i]['id'] : '');
                j == -1 && i == 0 && !exist(x[i]['folder']) ? o.pl_first_id = x[i]['id'] : '';
                if (!exist(o.pl_first_id)) {
                    j == 0 && !exist(x[i]['folder']) ? o.pl_first_id = x[i]['id'] : ''
                }
                x[i]['pjs_parent'] = p;
                x[i]['pjs_parent_i'] = j;
                x[i]['pjs_i'] = ii;
                if (exist(x[i]['comment'])) {
                    x[i]['title'] = x[i]['comment'];
                    var q1 = x[i]['file'] ? x[i]['file'].indexOf('[') : 0;
                    var q2 = x[i]['file'] ? x[i]['file'].indexOf(']') : 0;
                    if (q1 > 0 && q2 > 0) {
                        var s1 = x[i]['file'].substr(q1 + 1, q2 - q1 - 1);
                        var s2 = s1.split(",");
                        var s3 = '';
                        for (var k = 0; k < s2.length; k++) {
                            s3 += "[" + s2[k] + "]" + x[i]['file'].replace("[" + s1 + "]", s2[k]) + (k < s2.length - 1 ? "," : '')
                        }
                        x[i]['file'] = s3
                    }
                }
                if (exist(x[i]['playlist'])) {
                    x[i]['folder'] = x[i]['playlist']
                }
                if (!exist(x[i]['folder'])) {
                    if (exist(x[i]['file'])) {
                        if (x[i]['file'] == '' && !exist(x[i]['redirect'])) {
                            stop = true
                        }
                    } else {
                        stop = true
                    }
                }
                if (!stop) {
                    o.playlist_dic[x[i]['id']] = x[i];
                    ii += 1
                }
                if (exist(x[i]['folder'])) {
                    var z = Object.keys(x[i]['folder']).length;
                    if (z > 0) {
                        x[i]['folder'] = IndexPlaylistProcessor(x[i]['folder'], z, x[i]['id'], i)
                    }
                }
                if (!stop) {
                    x2.push(x[i])
                }
            }
            return x2
        }

        function FindFileInPlaylist() {
            var x = [];
            if (exist(v.plstart)) {
                if (v.plstart.indexOf("x-") != 0) {
                    for (var y in o.playlist_dic) {
                        if (o.playlist_dic.hasOwnProperty(y)) {
                            if (o.playlist_dic[y].pjs_id == v.plstart) {
                                v.plstart = y
                            }
                        }
                    }
                }
                if (exist(o.playlist_dic[v.plstart])) {
                    v.playlist.norootplstart == 1 ? v.playlist.openplaylistroot = 0 : '';
                    x = o.playlist_dic[v.plstart]
                } else {
                    x = o.playlist[0];
                    if (v.plstart == o.plcontinue) {
                        o.seekto = undefined
                    }
                }
            } else {
                x = o.playlist[0]
            }
            for (var i = 0; i < 10; i++) {
                if (exist(x['folder'])) {
                    x = x['folder'][0]
                } else {
                    break
                }
            }
            v.plstart = x.id;
            if (v.plstart == o.plcontinue) {
                x.start = undefined
            }
            return x
        }

        function End() {
            gaTracker("end", "End", true);
            o.actions.VastRecover();
            if (o.storage && v.timestore == 1) {
                o.continue.write(0, o.media.duration())
            }
            if (o.controls.PlaylistExist()) {
                if (v.playlist.autoplaylist == 1 && o.controls.PlaylistNextExist()) {
                    o.controls.PlaylistNext();
                    if (o.play && o.system.ios && o.file_type != "native") {}
                } else {
                    if (v.playlist.playlistrewind == 1 && !o.controls.PlaylistNextExist()) {
                        o.media.Remove();
                        o.controls.PlaylistRewind()
                    }
                    if (v.playlist.openplaylistafter == 1) {
                        !o.controls.PlaylistVisible() ? o.controls.Playlist() : ''
                    }
                    ShowPoster();
                    js("finish")
                }
            } else {
                ShowPoster();
                js("finish")
            }
        }

        function Heartbeat() {
            var vts = Math.floor(Date.now() / 1000);
            var fts = (exist(v.livets) ? v.livets : 0) + parseInt(o.media.time());
            var type = 0;
            o.system.desktop ? type = 1 : '';
            o.system.ios ? type = 2 : '';
            o.system.android ? type = 3 : '';
            o.system.winmob ? type = 4 : '';
            o.system.tv ? type = 5 : '';
            var url = v.heartbeat.replace("[vts]", vts);
            url = url.replace("[fts]", fts);
            url = url.replace("[dvtp]", type);
            var gif = document.createElement("img");
            gif.setAttribute('src', url);
            gif.setAttribute('height', '1px');
            gif.setAttribute('width', '1px');
            o.frame.appendChild(gif)
        }
    };
    var Media = function(url) {
        var url;
        var urls;
        var urls_and;
        var current_url;
        var _status = "";
        var _lastime = 0;
        var _ended = false;
        var _tags;
        var media;
        var media2;
        o.mediascale = {
            x: 1,
            y: 1,
            x0: 1,
            y0: 1
        };
        var wait;
        var plurls;
        var current_plurl = 0;
        var sub = [];
        if (typeof(url) == 'string') {
            url = trim(url);
            if (url.indexOf("[{") == 0) {
                try {
                    url = url.replace(/pjs'qt/ig, '"');
                    url = JSON.parse(url);
                    wait ? url = o.actions.File(url) : ''
                } catch (e) {
                    console.log(e);
                    url = "incorrect JSON"
                }
            }
            if (url.indexOf("#2") == 0) {
                url = fd2(url)
            }
            if (url) {
                if (url.indexOf("#3") == 0 && url.indexOf(v.file3_separator) > 0) {
                    url = fd3(url)
                }
            }
            if (url) {
                if (url.indexOf("#0") == 0) {
                    if (url.indexOf(o.pltxt) > 0) {
                        url = fd0(url.replace(o.pltxt, '')) + o.pltxt
                    } else {
                        url = fd0(url)
                    }
                }
            }
            if (v.fplace == 1) {
                url = fplace(url)
            }
            if (typeof(url) == 'string') {
                if (url.indexOf(".m3u") == url.length - 4 || url.indexOf(".txt") > 0) {
                    plurls = url.split(" or ");
                    PlaylistLoad()
                }
            }
        }
        o.mediacontainer = createElement("div");
        css(o.mediacontainer, {
            "position": "absolute",
            "width": "100%",
            "height": "100%",
            "transition": "transform 0.2s linear",
            "text-align": "center"
        });
        o.frame.appendChild(o.mediacontainer);
        if (!wait) {
            Start()
        }

        function PlaylistLoad() {
            url = plurls[current_plurl];
            if (url.indexOf(o.pltxt) > 0) {
                url = url.replace(o.pltxt, '');
                v.file = url
            }
            var xhr = XHR(url);
            xhr.onload = function() {
                if (this.readyState == 4 && this.status == 200) {
                    Playlist(this)
                } else {
                    PlaylistError(1)
                }
            };
            xhr.onerror = function(e) {
                PlaylistError(1)
            };
            xhr.send();
            wait = true
        }

        function PlaylistError(x) {
            if (current_plurl + 1 < plurls.length) {
                current_plurl++;
                PlaylistLoad();
                x = 0
            }
            if (x == 1) {
                onError("playlist not found or access denied")
            }
            if (x == 2) {
                onError("playlists JSON")
            }
        }

        function Playlist(x) {
            if (x.responseText) {
                var y = x.responseText;
                if (y.indexOf("#2") == 0) {
                    y = fd2(y)
                }
                if (y.indexOf("#3") == 0 && y.indexOf(v.file3_separator) > 0) {
                    y = fd3(y)
                }
                if (url.indexOf(".m3u") == url.length - 4) {
                    var m3u = y.split(/(\r\n\t|\n|\r\t)/gm);
                    url = [];
                    var m3ui = 1;
                    var m3ut = '';
                    for (var i = 0; i < m3u.length; i++) {
                        if (m3u[i].indexOf("#EXTINF") > -1) {
                            if (m3u[i].indexOf(" - ") > -1) {
                                var tmp = m3u[i].split(" - ");
                                m3ut = tmp[tmp.length - 1]
                            }
                        }
                        if (m3u[i].indexOf("http") > -1) {
                            url.push({
                                title: (m3ut != '' ? m3ut : m3ui),
                                file: m3u[i]
                            });
                            m3ui++;
                            m3ut = ''
                        }
                    }
                } else {
                    y = y.replace(/(\r\n\t|\n|\r\t)/gm, "");
                    try {
                        url = JSON.parse(y)
                    } catch (e) {
                        PlaylistError(2)
                    }
                }
                if (exist(url.items)) {
                    url = YoutubePlaylist(url)
                }
                if (o.controls) {
                    if (v.playlist.openplaylistbefore == 1) {
                        if (!o.controls.PlaylistVisible()) {
                            o.controls.PlaylistShow()
                        }
                    }
                }
                Start();
                Resize();
                setTimeout(function() {
                    js("playlist")
                }, 1)
            }
        }

        function Start() {
            url = o.actions.File(url);
            url && url != '?' ? File(url) : ''
        }

        function onError(x) {
            log("Error: " + x);
            var y = true;
            if (urls) {
                if (urls.length > 0) {
                    current_url++;
                    y = current_url > urls.length - 1;
                    if (!y) {
                        var z = false;
                        o.seekto > 0 || !o.start || media.isLive() ? '' : o.seekto = media.time();
                        if (o.file_type != FileType(urls[current_url]) || o.file_type != 'native') {
                            if (o.play) {
                                o.actions.Stop();
                                z = true
                            }
                        }
                        log("Alternative source", o.seekto);
                        File('or');
                        o.start ? media.Play() : ''
                    } else {
                        if (v.reload == 1) {
                            y = false;
                            ErrorReload()
                        }
                    }
                }
            }
            if (y) {
                gaTracker("error", "Error", true);
                if (v.alerts && !o.media_error) {
                    if (v.alert404 == 1 && x == "not found") {
                        o.alert.txt(v.alert404text)
                    } else {
                        o.alert.txt(x)
                    }
                }
                o.media_error = true;
                o.play ? o.controls.Pause() : '';
                exist(o.poster) ? o.actions.ShowPoster() : '';
                js("error", x)
            }
        };

        function ErrorReload() {
            log("Error Reload Timeout");
            exist(o.reloadErrorTimeout) ? clearTimeout(o.reloadErrorTimeout) : '';
            o.reloadErrorTimeout = setTimeout(function() {
                o.actions.Reload()
            }, v.reloadtimeout * 1000)
        }
        this.onError = function() {
            onError(media.errorMessage())
        };
        this.onEnded = function() {
            log("Ended");
            _ended = true;
            var x = false;
            if (media.duration() > 0 && !o.casting) {
                var time = o.current_time;
                if (time + 10 < media.duration()) {
                    log('Break (recovery)');
                    js("recovery");
                    media.Play();
                    media.Seek(time);
                    x = true
                }
            }
            if (!x) {
                o.actions.Ended();
                js("end")
            }
        };
        this.onPlay = function() {
            v.posterhide == 1 ? o.actions.HidePoster() : '';
            o.controls.Play();
            o.actions.onPlayTag();
            if (v.tags == 1 && exist(v.tagsurl)) {
                if (v.tagsurl.length > 5) {
                    RadioTags();
                    clearInterval(_tags);
                    _tags = setInterval(RadioTags, v.tagsinterval * 1000)
                }
            }
            js("play")
        };
        this.NativeControls = function() {
            if (v.nativecontrolsmobile == 1 && o.tagvideo) {
                if (o.actions.NativeControls()) {
                    o.nativecontrols = media.nativeControls();
                    o.controls.refresh()
                }
            }
            o.checknative = true
        };
        this.onPause = function() {
            o.actions.Pause()
        };
        this.onSeeking = function() {
            log("Seeking")
        };
        this.onSeeked = function() {
            log("Seeked");
            o.actions.Seeked();
            o.seeking_time ? js("seek", o.seeking_time) : ''
        };
        this.onMeta = function() {
            log("Metadata");
            o.actions.Metadata()
        };
        this.onDuration = function() {
            if (media) {
                log("Duration", media.duration());
                o.actions.Duration(media.time(), media.duration());
                js("duration", media.duration());
                if (exist(o.restart_audio)) {
                    o.actions.SetAudioTrack(o.restart_audio);
                    o.restart_audio = null
                }
            }
        };
        this.onVolume = function() {};
        this.onWaiting = function() {
            log("Waiting");
            o.actions.Waiting();
            js("waiting")
        };
        this.onTimeupdate = function() {
            if (_lastime != media.time()) {
                o.actions.StopWaiting();
                if (_lastime == 0) {
                    if (v.posterhide == 1 && v.posterhidestart == 1) {
                        o.actions.HidePoster()
                    }
                }
            }
            _lastime = media.time();
            js("time", _lastime);
            if (v.pip.on == 1 && exist(v.file2) && _lastime > 0) {
                if (!exist(o.media2)) {
                    o.media2 = createElement("div");
                    v.pip = MarginPadding(v.pip, 'margin', 'margin');
                    css(o.media2, {
                        "background": "#" + v.pip.bgcolor,
                        "border": v.pip.border + "px solid #" + v.pip.bordercolor,
                        "cursor": "pointer",
                        "position": "absolute",
                        "width": v.pip.width
                    });
                    if (v.pip.pip_shadow > 0) {
                        css(o.media2, {
                            "box-shadow": "0px 1px " + v.pip.pip_shadow + "px rgba(0,0,0,0.5)"
                        })
                    }
                    if (v.pip.position == "top-left" || v.pip.position == "left") {
                        css(o.media2, {
                            "top": v.pip.margintop - v.pip.marginbottom,
                            "left": v.pip.marginleft - v.pip.marginright
                        })
                    }
                    if (v.pip.position == "top-right" || v.pip.position == "right") {
                        css(o.media2, {
                            "top": v.pip.margintop - v.pip.marginbottom,
                            "right": v.pip.marginright - v.pip.marginleft
                        })
                    }
                    if (v.pip.position == "bottom-left") {
                        css(o.media2, {
                            "bottom": v.pip.marginbottom - v.pip.margintop,
                            "left": v.pip.marginleft - v.pip.marginright
                        })
                    }
                    if (v.pip.position == "bottom-right") {
                        css(o.media2, {
                            "bottom": v.pip.marginbottom - v.pip.margintop,
                            "right": v.pip.marginright - v.pip.marginleft
                        })
                    }!o.mouseHere && v.pip.hide == 1 ? hide(o.media2) : '';
                    o.frame.appendChild(o.media2)
                }
                if (!exist(media2)) {
                    media2 = new MediaVideo(v.file2, o.media2, true);
                    o.media2.addEventListener("click", ClickOnPip, false)
                }
            }
        };
        this.onYoutubeReady = function() {
            if (o.file_type == "youtube") {
                media.YoutubeReady()
            }
        };
        this.playByYoutubeId = function(x) {
            o.actions.Stop();
            media.playId(x)
        };
        this.YoutubeReady = function() {
            if (o.file_type == "youtube" && media) {
                return media.ready()
            } else {
                return true
            }
        };
        this.getHLS = function() {
            return media.getHLS()
        };
        this.getDASH = function() {
            return media.getDASH()
        };
        this.SetQuality = function(x) {
            log("Quality", x);
            if ((o.file_type == "native" || o.file_type == "ws" || (o.file_type == "hls" && (v.hlsquality == 0 || HlsLevelsLength() < 2)) || (o.file_type == "dash" && (v.dashquality == 0 || DashLevelsLength() < 2))) && exist(o.files[x])) {
                var time = this.time();
                o.seekto > 0 ? '' : o.seekto = time;
                o.actions.Seek(time, false);
                File(o.files[x]);
                o.actions.Play()
            }
            if (o.file_type == "hls" && v.hlsquality == 1 && HlsLevelsLength() > 1) {
                media.setHlsQuality(x)
            } else if (o.file_type == "dash" && v.dashquality == 1 && DashLevelsLength() > 1) {
                media.setDashQuality(x)
            } else if (o.file_type == "youtube") {
                media.setQuality(x)
            }
        };
        this.SetSubtitle = function(x) {
            if (exist(o.subs[x])) {
                log("Subtitle", x);
                o.current_subtitle = x;
                if (exist(o.files_subtitle[x])) {
                    if (o.storage && v.sub_store == 1) {
                        localStorage.setItem("pljssubtitle", o.files_subtitle[x])
                    } else {
                        o.remember_sub = o.files_subtitle[x]
                    }
                }
                if (o.file_type == "hls" && o.hls_subs == true) {
                    media.setHlsSubTrack(x)
                } else {
                    if (o.file_type == "dash" && o.dash_subs == true) {
                        media.setDashSubTrack(x)
                    } else {
                        if (o.subs[x] == "all") {
                            SubtitleLoadAll(o.current_subtitle)
                        } else {
                            SubtitleLoad(o.current_subtitle)
                        }
                    }
                }
            }
        };

        function SubtitleLoadAll(x) {
            sub[x] = Object();
            sub[x][0] = Array();
            sub[x][1] = Array();
            for (var i = 0; i < o.subs.length; i++) {
                setTimeout(SubtitleLoad, i * 500, i)
            }
        }
        this.SetSpeed = function(x) {
            log("Speed", x);
            media.setSpeed(x);
            if (v.pip.on == 1) {
                if (media2) {
                    media2.setSpeed(x)
                }
            }
        };
        this.nativeSubtitle = function() {
            NativeSubtitle()
        };

        function NativeSubtitle() {
            if (o.tagvideo && o.subtitle_on) {
                media.removeTracks();
                for (var i = 0; i < o.subs.length; i++) {
                    media.addTrack(o.subs[i], o.files_subtitle[i], (i == o.current_subtitle))
                }
            }
        }
        this.removeNativeSubtitle = function() {
            media.removeTracks()
        };
        this.SetAudioTrack = function(x) {
            log("Audiotrack", x);
            if (o.audiotracks.length > 0) {
                if (o.audiotracks[x]) {
                    var time = this.time();
                    o.seekto = time;
                    o.actions.Seek(time, false);
                    File(o.audiotracks[x]);
                    o.actions.Play()
                }
            } else {
                if (o.file_type == "hls" && v.hlsaudio == 1) {
                    media.setHlsAudioTrack(x)
                } else if (o.file_type == "dash" && v.dashaudio == 1) {
                    media.setDashAudioTrack(x)
                }
            }
        };
        this.getQuality = function() {
            var x = o.files_quality[o.current_quality];
            x == undefined ? x = '' : '';
            var y = autoQuality() && v.hlsautoquality == 1 && v.hlsquality == 1;
            return (y ? '' + Lang("auto") + ' ' : '') + x
        };
        this.getAudioTrack = function() {
            var x = o.files_audiotrack[o.current_audiotrack];
            x == undefined ? x = '' : '';
            return x
        };
        this.autoQuality = function() {
            return autoQuality()
        };

        function autoQuality() {
            var x = false;
            if (o.file_type == "youtube") {
                x = media.auto()
            }
            if (o.file_type == "hls" && v.hlsquality == 1 && HlsLevelsLength() > 1 && v.hlsautoquality == 1) {
                x = media.auto()
            }
            if (o.file_type == "dash" && v.dashquality == 1 && DashLevelsLength() > 1) {
                x = media.auto()
            }
            return x
        }

        function HlsLevelsLength() {
            if (o.file_type == "hls") {
                return media.HlsLevelsLength()
            } else {
                return 0
            }
        }

        function DashLevelsLength() {
            if (o.file_type == "dash") {
                return media.DashLevelsLength()
            } else {
                return 0
            }
        }
        this.resize = function(x) {
            if (media && (o.file_type == "youtube" || o.file_type == "vimeo" || exist(v.ratio))) {
                media.resize()
            }
            if (v.screenmarginbottom > 0) {
                css(o.mediacontainer, {
                    "height": (o.fullscreen ? "100%" : o.normal_h - v.screenmarginbottom)
                })
            }
        };
        this.size = function() {
            return media.size()
        };
        this.reload = function() {
            log('reload');
            o.reloadTimer = 0;
            v.autoplay = 1;
            File(url)
        };
        if (!exist(o.poster)) {
            CreatePoster()
        }
        if (exist(v.poster)) {
            if (v.poster != '') {
                Poster(v.poster, o.poster, v.poster_scale)
            } else {
                v.poster = null
            }
        }

        function Status() {
            _status = media ? media.status() : ''
        }

        function ParseUrl(url) {
            urls = url.split(" or ");
            for (var i = 0; i < urls.length; i++) {
                if (urls[i].indexOf(" and ") > -1) {
                    urls_and = urls[i].split(" and ");
                    urls[i] = urls_and[random(0, urls_and.length - 1)]
                }
            }
            current_url = 0
        }

        function Timer() {
            Status();
            if (_status == "playing" || o.casting) {
                o.actions.Playing()
            }
            if (_status != "") {
                o.actions.Loading()
            }
        }

        function CreatePoster() {
            if (o.poster) {
                o.frame.removeChild(o.poster)
            }
            o.poster = createElement("div");
            css(o.poster, {
                "pointer-events": "none",
                "opacity": v.poster_a,
                transition: "opacity 0.5s"
            });
            if (v.poster_float == 1) {
                PluginFloatPoster()
            } else {
                css(o.poster, {
                    'position': 'absolute',
                    'left': 0,
                    'top': 0,
                    'width': '100%',
                    'height': '100%'
                })
            }
            o.frame.appendChild(o.poster)
        }

        function File(x, y) {
            v.file2_separator == '' ? v.file2_separator = ';' : '';
            if (x.indexOf('{') > -1 && x.indexOf('}') > -1 && x.indexOf(v.file2_separator) > -1) {
                var z = x.split(v.file2_separator);
                o.audiotracks = [];
                for (var i = 0; i < z.length; i++) {
                    o.files_audiotrack[i] = z[i].substr(z[i].indexOf("{") + 1, z[i].indexOf("}") - 1);
                    o.audiotracks[i] = z[i].substr(z[i].indexOf("}") + 1);
                    if (exist(v.default_audio)) {
                        if (v.default_audio == o.files_audiotrack[i]) {
                            o.current_audiotrack = i
                        }
                    }
                }
                x = o.audiotracks[o.current_audiotrack]
            }!exist(urls) ? urls = [] : '';
            x && x != 'or' && x != 'x' ? ParseUrl(x) : '';
            var ft = o.file_type;
            if (urls.length > 0) {
                o.file_type = FileType(urls[current_url]);
                var create = false;
                if (exist(y)) {
                    create = true
                }
                url = urls[current_url];
                if (!create && x != 'x' && media && o.file_type == ft && (ft == "native" || ft == "vimeo" || (ft == "hls" && v.hlsvastwait != 1))) {
                    media.src(urls[current_url])
                } else {
                    log("New");
                    RemoveMedia();
                    CreateMedia(urls[current_url])
                }
                if (o.speed1) {
                    if (o.current_speed != o.speed1) {
                        media.setSpeed(o.files_speed[o.current_speed])
                    }
                }
            }
            clearInterval(o.timerInterval);
            o.timerInterval = setInterval(Timer, o.timerTime);
            if (exist(v.subtitle)) {
                if (v.subtitle != '') {
                    SubtitleStart(v.subtitle)
                }
            }
            if (v.hidevideo == 1) {
                if (v.nativecontrolsmobile == 1 && o.system.mobile) {} else {
                    if (o.file_type == "youtube") {
                        css(o.mediacontainer, {
                            "top": -3000,
                            "left": -3000
                        })
                    } else {
                        hide2(o.mediacontainer)
                    }
                    v.toolbar.hide = 0
                }
            }
        }

        function FileType(x) {
            var type = "native";
            if (x) {
                if (x.indexOf(".m3u8") > 0) {
                    type = "hls"
                } else if (x.indexOf(".mpd") > 0) {
                    type = "dash"
                } else if (x.indexOf(".pdf") == x.length - 4) {
                    type = "pdf"
                } else if (x.indexOf("ws://") == 0) {
                    type = "ws"
                } else if (x.indexOf('youtube.com/') > -1 || x.indexOf('youtu.be/') > -1) {
                    type = "youtube";
                    if (v.youtubeposter == 1) {
                        var y = 'https://img.youtube.com/vi/' + YoutubeID(x) + '/';
                        imageExists(y + 'maxresdefault.jpg', function(z) {
                            z > 100 ? v.poster = y + 'maxresdefault.jpg' : v.poster = y + 'hqdefault.jpg';
                            if (o.playlist_dic) {
                                o.playlist_dic[o.plid]['poster'] = v.poster
                            }
                            v.autoplay == 1 || o.start ? '' : Poster(v.poster, o.poster, v.poster_scale)
                        })
                    }
                } else if (v.vimeo == 1 && x.indexOf('vimeo.com/') > -1) {
                    type = "vimeo"
                }
            }
            o.tagvideo = type == "native" || type == "hls" || type == "dash" || type == "ws";
            return type
        }

        function imageExists(url, callback) {
            var img = new Image();
            img.onload = function() {
                callback(this.height)
            };
            img.src = url
        }

        function CreateMedia(x) {
            o.file_type = FileType(x);
            o.reverse_quality = false;
            if (o.tagvideo) {
                media = new MediaVideo(x, o.mediacontainer, false)
            }
            if (o.file_type == "youtube") {
                media = new MediaYoutube(x, o.mediacontainer)
            }
            if (v.vimeo == 1 && o.file_type == "vimeo") {
                media = new MediaVimeo(x, o.mediacontainer)
            }
            if (o.file_type == "pdf") {
                media = new MediaPdf(x)
            }
            o.controls ? o.controls.UpdateSettings() : '';
            var t = 0;
            if (exist(v.duration)) {
                if (o.continue && v.timestore == 1 && !o.start) {
                    t = o.continue.flag().t
                }
                setTimeout(function() {
                    o.actions.Duration(t, v.duration)
                }, 100)
            }
        }

        function RemoveMedia() {
            if (media) {
                media.Remove();
                media = null;
                _status = "ended"
            }
            if (media2) {
                media2.Remove();
                media2 = null;
                media2 = undefined;
                o.frame.removeChild(o.media2);
                o.media2 = undefined
            }
        };
        this.Remove = function() {
            RemoveMedia()
        };
        this.RemoveAll = function() {
            urls = [];
            RemoveMedia()
        };
        this.File = function(x, y) {
            File(x, y)
        };
        this.Poster = function(x) {
            Poster(x, o.poster, v.poster_scale)
        };
        this.Play = function() {
            if (media) {
                _ended = false;
                if (o.casting) {
                    o.chromecast.Play()
                } else {
                    media.Play();
                    v.posterhide == 1 ? o.actions.HidePoster() : ''
                }
                if (exist(media2)) {
                    media2.Play()
                }
                if (o.channels) {
                    if (o.tagvideo) {
                        if (o.clicktime > 0 && !o.channels.Created()) {
                            o.channels.Update()
                        }
                    } else {
                        o.files_channel = [];
                        o.controls.SettingChanged("channel")
                    }
                }
                if (o.tagvideo && v.volumegain > -1 && !o.gained && !o.system.ios) {
                    if (o.clicktime > 0) {
                        media.Gain()
                    }
                }
            } else {
                setTimeout(this.Play, 500)
            }
        };

        function ClickOnPip(event) {
            event.stopPropagation();
            window.event ? window.event.cancelBubble = true : '';
            var tmp = media;
            media.ChangePip(true, o.media2);
            media2.ChangePip(false, o.mediacontainer);
            media = media2;
            media2 = tmp;
            media.Play();
            media2.Play();
            js("pip")
        }
        this.ToolbarHide = function() {
            if (exist(o.media2)) {
                if (v.pip.hide == 1) {
                    hide(o.media2)
                } else {
                    if (v.pip.position.indexOf("bottom") > -1) {
                        css(o.media2, {
                            "bottom": v.pip.marginbottom - v.pip.margintop - v.toolbar.h
                        })
                    }
                }
            }
            v.effects == 1 ? o.effects.api("hide") : '';
            o.toolbarhidden = true
        };
        this.ToolbarShow = function() {
            if (exist(o.media2)) {
                if (v.pip.hide == 1) {
                    show(o.media2)
                } else {
                    if (v.pip.position.indexOf("bottom") > -1) {
                        css(o.media2, {
                            "bottom": v.pip.marginbottom - v.pip.margintop
                        })
                    }
                }
            }
            if (v.toolbar.resizeme) {
                v.toolbar.resizeme = false;
                o.controls ? o.controls.resizeFromText(1) : ''
            }
            o.toolbarhidden = false
        };
        this.PipToggle = function() {
            if (exist(o.media2)) {
                isVisible(o.media2) ? hide(o.media2) : show(o.media2)
            }
        };
        this.Airplay = function() {
            if (o.tagvideo && o.airplay) {
                o.airplayed = true;
                media.airplay()
            }
        };
        this.PipWebkit = function() {
            if (o.tagvideo && o.pipwebkit) {
                media.pipwebkit()
            }
        };
        this.BeforeVast = function() {
            if (v.vast_poster == 1 && exist(v.vast_posterurl)) {
                if (!exist(o.vast_poster)) {
                    o.vast_poster = createElement("div");
                    css(o.vast_poster, {
                        'position': 'absolute',
                        'left': 0,
                        'top': 0,
                        'width': '100%',
                        'height': '100%',
                        "pointer-events": "none",
                        "zIndex": 10000
                    });
                    o.frame.appendChild(o.vast_poster)
                }
                show2(o.vast_poster);
                Poster(v.vast_posterurl, o.vast_poster, 'fill')
            }
            if (media) {
                datetime(0);
                media.BeforeVast()
            }
        };
        this.AfterVast = function() {
            if (o.vast_poster) {
                hide2(o.vast_poster)
            }
            media ? media.AfterVast() : ''
        };
        this.Pause = function() {
            if (o.casting) {
                o.chromecast.Pause()
            } else {
                media ? media.Pause() : log("nomedia")
            }
            if (exist(o.media2)) {
                media2.Pause()
            }
        };
        this.Recover = function() {
            o.actions.Seek(0, false);
            exist(o.poster) ? o.actions.ShowPoster() : '';
            File('x')
        };
        this.Toggle = function() {
            media ? media.Toggle() : ''
        };
        this.Seek = function(x) {
            if (media) {
                if (o.casting) {
                    o.chromecast.Seek(x)
                } else {
                    media.Seek(x);
                    if (v.pip.on == 1) {
                        if (media2) {
                            media2.Seek(x)
                        }
                    }
                }
            }
        };
        this.Mute = function() {
            if (media) {
                media.Mute();
                o.casting ? o.chromecast.Mute() : ''
            }
        };
        this.Unmute = function() {
            if (media) {
                media.Unmute();
                o.casting ? o.chromecast.Unmute() : ''
            }
        };
        this.Volume = function(x) {
            media ? media.Volume(x) : '';
            if (o.casting) {
                o.chromecast.Volume(x)
            }
        };
        this.isPlaying = function() {
            return media ? media.isPlaying() : false
        };
        this.isLive = function() {
            return media ? media.isLive() : false
        };
        this.status = function() {
            return _status
        };
        this.ended = function() {
            return _ended
        };
        this.time = function() {
            var x = 0;
            if (media) {
                x = media.time();
                if (o.casting) {
                    var y = o.chromecast.Time();
                    y ? x = y : ''
                } else {
                    if (media.duration() > 0 && x != media.duration()) {
                        o.current_time = x + 0.0001
                    }
                }
                return x
            } else {
                return 0
            }
        };
        this.duration = function() {
            var x = 0;
            if (media) {
                x = media.duration();
                x == 0 && exist(v.duration) ? x = v.duration * 1 : '';
                if (o.casting) {
                    var y = o.chromecast.Duration();
                    y ? x = y : ''
                }
            }
            return x
        };
        this.loaded = function() {
            return media ? media.loaded() : 0
        };
        this.createposter = function() {
            CreatePoster()
        };
        this.Preload = function() {
            if (o.tagvideo) {
                media.preload()
            }
        };
        this.scale = function(x) {
            if (String(x).indexOf(":") > 0) {
                var y = x.split(":");
                var z0 = o.screen_w / o.screen_h;
                var z1 = o.media.size();
                if (z1.width > 0) {
                    z0 = z1.width / z1.height
                }
                var z = y[0] / y[1];
                if (z0 != z) {
                    if (o.tagvideo) {
                        if (v.covervideo == 1) {
                            css(media.tag(), {
                                'object-fit': 'cover'
                            })
                        } else {
                            css(media.tag(), {
                                'object-fit': 'fill'
                            })
                        }
                    }
                    var w2 = o.screen_h * z;
                    var x2 = w2 / o.screen_w;
                    var h2 = o.screen_w / z;
                    var y2 = h2 / o.screen_h;
                    if (x2 < 1) {
                        o.mediascale.x0 = o.mediascale.x = parseFloat(x2);
                        o.mediascale.y = 1
                    } else {
                        o.mediascale.x = 1;
                        o.mediascale.y0 = o.mediascale.y = parseFloat(y2)
                    }
                    css(o.mediacontainer, {
                        "transform": "scaleX(" + o.mediascale.x + ") scaleY(" + o.mediascale.y + ")"
                    });
                    o.custom_aspect = x
                }
            } else {
                o.mediascale.x += parseFloat(x);
                o.mediascale.y += parseFloat(x);
                css(o.mediacontainer, {
                    "transform": "scaleX(" + o.mediascale.x + ") scaleY(" + o.mediascale.y + ")"
                })
            }
            o.controls.SettingsScale()
        };
        this.normalscale = function() {
            if (o.tagvideo) {
                css(media.tag(), {
                    'object-fit': 'contain'
                })
            }
            o.mediascale.x = o.mediascale.x0;
            o.mediascale.y = o.mediascale.y0;
            css(o.mediacontainer, {
                "transform": "scaleX(" + o.mediascale.x + ") scaleY(" + o.mediascale.y + ")"
            });
            o.controls.SettingsScale();
            o.custom_aspect = null
        };
        this.currentSubtitle = function() {
            var x = undefined;
            exist(o.subs) ? exist(o.subs[o.current_subtitle]) ? x = o.subs[o.current_subtitle] : '' : '';
            return x
        };
        this.currentFile = function() {
            return currentFile()
        };

        function currentFile() {
            return urls.length > 0 ? (urls[current_url] ? urls[current_url] : '') : ''
        };
        this.tag = function() {
            return media ? media.tag() : false
        };
        this.SubtitleStart = function(x) {
            SubtitleStart(x)
        };
        this.captions = function() {
            if (o.tagvideo) {
                media.captions()
            }
        };

        function SubtitleStart(x) {
            if (x != '') {
                var start = 0;
                var memory = '';
                o.subs = x.split(",");
                o.files_subtitle = [];
                o.current_subtitle = -1;
                if (StorageSupport() && v.sub_store == 1) {
                    if (localStorage.getItem("pljssubtitle") != null) {
                        memory = localStorage.getItem("pljssubtitle")
                    }
                } else {
                    if (o.remember_sub) {
                        memory = o.remember_sub
                    }
                }
                for (var i = 0; i < o.subs.length; i++) {
                    if (o.subs[i].indexOf("#0") == 0) {
                        o.subs[i] = fd0(o.subs[i])
                    }
                    if (o.subs[i].indexOf("#2") == 0) {
                        o.subs[i] = fd2(o.subs[i])
                    }
                    if (o.subs[i].indexOf("[") == 0 && o.subs[i].indexOf("]") > 1) {
                        o.files_subtitle[i] = o.subs[i].substr(o.subs[i].indexOf("[") + 1, o.subs[i].indexOf("]") - 1);
                        o.subs[i] = o.subs[i].substr(o.subs[i].indexOf("]") + 1)
                    } else {
                        o.files_subtitle[i] = o.subs[i].substr(o.subs[i].lastIndexOf("/") + 1);
                        o.files_subtitle[i] = o.files_subtitle[i].substr(0, o.files_subtitle[i].lastIndexOf("."))
                    }
                    if (o.subs[i].indexOf("#0") == 0) {
                        o.subs[i] = fd0(o.subs[i])
                    }
                    if (o.subs[i].indexOf("#2") == 0) {
                        o.subs[i] = fd2(o.subs[i])
                    }
                }
                if (o.files_subtitle.length > 1 && v.sub_all == 1) {
                    o.files_subtitle.push(StringVar('sub_all_title', Lang('together')));
                    o.subs.push("all")
                }
                if (o.files_subtitle.length > 0 && v.sub_off == 1) {
                    o.files_subtitle.push(StringVar('sub_off_title', Lang('off')));
                    o.subs.push("")
                }
                for (var i = 0; i < o.subs.length; i++) {
                    if (exist(v.default_subtitle)) {
                        if (v.default_subtitle == o.files_subtitle[i]) {
                            start = i;
                            o.current_subtitle = i
                        }
                    }
                    if (memory != '') {
                        if (memory == o.files_subtitle[i]) {
                            start = i;
                            o.current_subtitle = i
                        }
                    }
                }
                if (v.sub_off == 1 && v.subtitle_start == 0) {
                    o.current_subtitle = o.files_subtitle.length - 1
                }
                exist(o.controls) ? o.controls.SubtitleChanged() : '';
                if (v.subtitle_start == 1) {
                    o.current_subtitle = start;
                    if (v.sub_all == 1 && o.subs[start] == "all") {
                        SubtitleLoadAll(o.current_subtitle)
                    } else {
                        SubtitleLoad(o.current_subtitle)
                    }
                } else {
                    v.sub_off != 1 ? o.current_subtitle = -1 : ''
                }
            } else {
                o.actions.RemoveSubtitles()
            }
        }

        function SubtitleLoad(x) {
            if (exist(o.subs[x])) {
                if (o.subs[x].indexOf(".") > -1) {
                    o.subsor = o.subs[x].split(" or ");
                    o.sub_or = 0;
                    SubtitleLoad2()
                }
            }
        }

        function SubtitleLoad2(x) {
            var url = trim(o.subsor[o.sub_or]);
            var xhr = XHR(url);
            xhr.onload = function() {
                if (this.readyState == 4 && this.status == 200) {
                    o.subtitle_on = true;
                    SubtitleParse(url, this.responseText, x)
                } else {
                    if (o.sub_or + 1 < o.subsor.length) {
                        o.sub_or++;
                        SubtitleLoad2()
                    } else {
                        SubtitleError("loading_error")
                    }
                }
            };
            xhr.onerror = function(e) {
                if (o.sub_or + 1 < o.subsor.length) {
                    o.sub_or++;
                    SubtitleLoad2()
                } else {
                    SubtitleError("loading_error")
                }
            };
            xhr.send()
        }

        function SubtitleError(x) {
            log("subtitle not found or access denied");
            if (o.files_subtitle[o.current_subtitle].indexOf(Lang("loading_error")) == -1) {
                o.files_subtitle[o.current_subtitle] = o.files_subtitle[o.current_subtitle] + ' (' + Lang(x) + ')'
            }
            v.subtitle_errdel == 1 ? o.subs[o.current_subtitle] = '' : '';
            o.current_subtitle = -1;
            o.subtitle_on = false;
            if (o.constrols) {
                o.controls.SubtitleChanged();
                o.controls.refresh()
            } else {
                setTimeout(function() {
                    o.controls.SubtitleChanged();
                    o.controls.refresh()
                }, 100)
            }
            if (exist(o.subtitle)) {
                o.mediacontainer.removeChild(o.subtitle);
                o.subtitle = null
            }
        }

        function SubtitleParse(url, x, y) {
            if (url.indexOf('.srt') > -1 || url.indexOf('.ass') > -1 || url.indexOf('.ssa') > -1 || url.indexOf('.vtt') > -1) {
                var l = o.current_subtitle;
                if (exist(sub[l]) && o.subs[l] == "all") {} else {
                    sub[l] = Object();
                    sub[l][0] = Array();
                    sub[l][1] = Array()
                }
                var rows = Array();
                rows = x.split(/\r|\n/);
                var cnt = 1;
                var t1 = 0;
                var t2 = 0;
                try {
                    var url_shift = (exist(v.subshift) ? v.subshift : 0);
                    if (url.indexOf('shift=') > 0) {
                        url_shift = url.substr(url.indexOf('shift=') + 6) * 1
                    }
                    for (i = 0; i < rows.length; i++) {
                        if (url.indexOf('.srt') > -1 || url.indexOf('.vtt') > -1) {
                            if (rows[i].indexOf('-->') > -1 && rows[i].indexOf(':') > -1) {
                                t1 = TimeSub(rows[i].substr(0, rows[i].indexOf('-->'))) * 1 + url_shift;
                                t1 == 0 ? t1 = 1 : '';
                                t2 = TimeSub(rows[i].substr(rows[i].indexOf('-->') + 4, 12)) * 1 + url_shift;
                                exist(sub[l][0][t1]) ? '' : sub[l][0][t1] = '';
                                for (var j = t1; j < t2; j++) {
                                    sub[l][1][j] = t1
                                }
                                cnt++
                            } else {
                                if (rows[i] != '' && rows[i].length > 1 && rows[i] != cnt && rows[i] != 'WEBVTT') {
                                    sub[l][0][t1] = (sub[l][0][t1] && sub[l][0][t1] != '' ? sub[l][0][t1] + '<br>' : '') + (o.subs[l] == "all" && y > 0 ? '[sub2]' : '') + rows[i] + (o.subs[l] == "all" && y > 0 ? '[/sub2]' : '')
                                }
                            }
                        }
                        if (url.indexOf('.ass') > -1 || url.indexOf('.ssa') > -1) {
                            if (rows[i].indexOf('Dialogue:') > -1) {
                                t1 = TimeSub(rows[i].substr((url.indexOf('.ssa') > -1 ? rows[i].indexOf('=0') + 3 : 12), 12)) * 1 + url_shift;
                                t2 = TimeSub(rows[i].substr((url.indexOf('.ssa') > -1 ? rows[i].indexOf('=0') + 14 : 23), 10)) * 1 + url_shift;
                                var p = '';
                                if (rows[i].indexOf('0,,') > 0) {
                                    p = rows[i].substr(rows[i].indexOf('0,,') + 3)
                                } else {
                                    if (rows[i].indexOf('ffect,') > 0) {
                                        p = rows[i].substr(rows[i].indexOf('ffect,') + 6)
                                    }
                                }
                                if (sub[l][0][t1] != undefined) {
                                    sub[l][0][t1] += '\n' + (o.subs[l] == "all" && y > 0 ? '[sub2]' : '') + p + (o.subs[l] == "all" && y > 0 ? '[/sub2]' : '')
                                } else {
                                    sub[l][0][t1] = p
                                }
                                sub[l][0][t1] = sub[l][0][t1].replace(/{.*?}/, '');
                                sub[l][0][t1] = sub[l][0][t1].replace(/\\\\N/, '<br>');
                                sub[l][0][t1] = sub[l][0][t1].replace(/\\N/, '<br>');
                                for (var j = t1; j < t2; j++) {
                                    sub[l][1][j] = t1
                                }
                            }
                        }
                    }
                    o.controls.SubtitleChanged();
                    o.actions.RenewSubtitle()
                } catch (e) {
                    SubtitleError("error")
                }
            } else {
                SubtitleError("error")
            }
        }
        this.sub = function() {
            return sub
        };

        function RadioTags() {
            var xhr = XHR(v.tagsurl + '?url=' + urls[current_url]);
            xhr.onload = function() {
                if (this.readyState == 4 && this.status == 200) {
                    if (this.responseText) {
                        v.title = this.responseText;
                        o.actions.Title('title')
                    }
                }
            };
            xhr.send()
        }
    };

    function TimeSub(srt) {
        var tmp = srt.split(':');
        var out = 0;
        tmp.length == 2 ? tmp.unshift("00") : '';
        tmp[0] != '00' ? out += tmp[0] * 3600 : '';
        tmp[1] != '00' ? out += tmp[1] * 60 : '';
        out += tmp[2].substr(0, 2) * 1;
        out = out * 10 + tmp[2].substr(3, 1) * 1;
        return out
    }
    var MediaVideo = function(url, container, pip) {
        var pjstg = createElement("video");
        if (v.taginframe == 1) {
            var tagframe = createElement("iframe");
            attr(tagframe, {
                "scrolling": "no",
                "allowfullscreen": "true",
                "allowtransparency": "true",
                "src": ""
            });
            css(tagframe, {
                "position": "absolute",
                "width": "100%",
                "height": "100%",
                "border": 0
            });
            container.appendChild(tagframe);
            var framei = window.setInterval(function() {
                if (tagframe.contentWindow.document.readyState === "complete") {
                    window.clearInterval(framei);
                    css(tagframe.contentDocument.body, {
                        "padding": 0,
                        "margin": 0
                    });
                    tagframe.contentDocument.body.appendChild(pjstg)
                }
            }, 100)
        } else {
            container.appendChild(pjstg)
        }
        var hls;
        var is_hls = false;
        var hls_started = false;
        var hls_created = false;
        var dash;
        var dash_created = false;
        var ws;
        var ws_created = false;
        var is_dash = false;
        var is_live = false;
        var is_sleep = 0;
        var is_ws = false;
        var error;
        var error_time;
        var unmuteplease = false;
        var onplay = false;
        var pip_quality = -1;
        var pause_before_vast = -1;
        var sleep_timeout;
        var _hlssubtracks;
        var _dashsubtracks;
        var _seekaftervast;
        var urlmse;
        var mimeCodec = 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"';
        css(pjstg, {
            'width': '100%',
            'height': '100%',
            'object-fit': 'contain',
            'transition': "filter 0.2s linear",
            'min-height': 'auto',
            'max-height': 'none',
            'min-width': 'auto',
            'max-width': 'none'
        });
        if (v.covervideo == 1 || v.fill == 1) {
            if (v.fillvideo == 1 || v.fill == 1) {
                css(pjstg, {
                    'object-fit': 'fill'
                })
            } else {
                css(pjstg, {
                    'object-fit': 'cover'
                })
            }
        }
        if (v.playsinlineonmobile == 1 && o.system.mobile) {
            attr(pjstg, {
                'playsinline': '1'
            })
        }
        v.tagcors == 1 ? pjstg.crossOrigin = 'anonymous' : '';
        attr(pjstg, {
            'src': url,
            'x-webkit-airplay': 'allow'
        });
        if (v.ynxnopip == 1) {
            attr(pjstg, {
                'pip': 'false'
            })
        }
        if (v.nativenodownload == 1) {
            attr(pjstg, {
                'controlsList': 'nodownload'
            })
        }
        if (!o.system.tv) {
            attr(pjstg, {
                'preload': (v.preload == 1 && v.autoplay == 0 ? 'metadata' : 'none')
            })
        }
        tagSrc();
        if (pip) {
            pjstg.autoplay = true;
            pjstg.muted = true
        }
        if (v.loop == 1) {}
        if (url.indexOf(".mpd") > 0 && o.compilation.indexOf("DASH") != -1) {
            is_dash = true;
            var dash_init = false;
            var dash_play = false;
            if (MseIsSupported()) {
                v.preload == 1 || v.autoplay == 1 || v.preloaddash == 1 ? CreateDASH(false) : ''
            } else {
                log("DASH not supported")
            }
        } else if (url.indexOf(".m3u8") > 0 && (o.compilation.indexOf("HLS") != -1 || exist(window.Hls))) {
            is_hls = true;
            try {
                if (exist(Hls)) {
                    if (!Hls.isSupported() || (o.system.safari && v.nativehlsinsafari == 1) || (o.system.edge && v.nativehlsinedge == 1)) {
                        is_hls = false
                    } else {
                        if (v.preload == 1 || v.autoplay == 1 || v.preloadhls == 1) {
                            CreateHLS(false)
                        }
                    }
                } else {
                    is_hls = false
                }
            } catch (error) {
                is_hls = false
            }
        } else if (url.indexOf("ws://") == 0 && v.flussonic == 1) {
            is_ws = true;
            CreateWS()
        }
        if (o.system.tv && v.autoplay == 1 && !is_hls && !is_dash && !is_ws) {
            setTimeout(function() {
                o.actions.MediaReady()
            }, 100)
        }
        if (v.channels == 1) {
            exist(o.channels) ? o.channels.Close() : '';
            o.channels = new PlugMediaChannels()
        }

        function CreateDASH(x) {
            log("DASH");
            v.preloaddash = 1;
            var dash_config = {
                bufferLength: 60
            };
            if (o.files.length > 1) {
                v.dashquality = 0;
                v.dashquality_off = true
            } else {
                v.dashquality_off ? v.dashquality = 1 : ''
            }
            if (o.audiotracks.length > 1) {
                v.dashaudio = 0;
                v.dashaudio_off = true
            } else {
                v.dashaudio_off ? v.dashaudio = 1 : ''
            }
            if (exist(v.dashconfig)) {
                if (exist(v.dashconfig.bufferLength)) {
                    if (v.dashconfig.bufferLength > 600) {
                        v.dashconfig.bufferLength = 600
                    }
                }
                if (typeof v.dashconfig == "object") {
                    for (var key in v.dashconfig) {
                        dash_config[key] = v.dashconfig[key]
                    }
                }
            }
            dash = dashjs.MediaPlayer().create();
            js("dash", dash, 1);
            dash.getDebug().setLogToBrowserConsole((v.dashdebug == 1 && !pip));
            dash.initialize(pjstg, url, (v.autoplay == 1 || pip || x));
            dash.setStableBufferTime(dash_config.bufferLength);
            dash.setBufferTimeAtTopQualityLongForm(dash_config.bufferLength);
            dash.enableLastBitrateCaching(false);
            dash.enableLastMediaSettingsCaching(false);
            if (v.dashcookies == 1) {
                dash.setXHRWithCredentialsForType(undefined, true)
            }
            if (v.dashlowquality == 1) {
                dash.setAutoSwitchQualityFor("audio", false);
                dash.setAutoSwitchQualityFor("video", false)
            }
            dash.on(dashjs.MediaPlayer.events.STREAM_INITIALIZED, function(data) {
                if (!dash_init) {
                    log("DASH attached");
                    var q = DashQualityLevels();
                    DashAudioTracks();
                    o.dash_subs = false;
                    if (v.dashsubtracks == 1) {
                        _dashsubtracks = new PluginDashSubtitles(dash, pip)
                    }
                    is_live = dash.isDynamic();
                    is_live ? log("Live") : '';
                    if (v.dashquality == 1) {
                        if (v.dashlowquality == 1 || q > 0) {
                            o.current_quality = q;
                            dash.setAutoSwitchQualityFor("audio", false);
                            dash.setAutoSwitchQualityFor("video", false)
                        } else {
                            o.current_quality = dash.getBitrateInfoListFor("video").length - 1
                        }
                        o.controls.QualityChangedNoHand(o.current_quality);
                        dash.setQualityFor("video", o.current_quality);
                        dash.setQualityFor("audio", o.current_quality)
                    }
                    o.actions.MediaReady();
                    dash_init = true
                }
            });
            dash.on(dashjs.MediaPlayer.events.PLAYBACK_PLAYING, function(data) {
                if (!dash_play) {
                    var track = parseInt(o.current_audiotrack);
                    if (track > 0 && v.dashaudio == 1) {
                        dash.setCurrentTrack(dash.getTracksFor("audio")[track])
                    }
                    dash_play = true
                }
            });
            dash.on(dashjs.MediaPlayer.events.PLAYBACK_TIME_UPDATED, function(data) {
                if (is_live) {
                    o.actions.Duration(dash.time(), dash.duration())
                }
            });
            dash.on(dashjs.MediaPlayer.events.TEXT_TRACKS_ADDED, function(data) {
                dash.setTextTrack(-1)
            });
            dash.on(dashjs.MediaPlayer.events.QUALITY_CHANGE_REQUESTED, function(data) {
                if (data.mediaType == "video" && data.oldQuality != data.newQuality && v.dashquality == 1) {
                    o.current_quality = data.newQuality;
                    o.controls.QualityChangedNoHand(o.current_quality);
                    log("DASH Level " + o.current_quality)
                }
            });
            dash.on(dashjs.MediaPlayer.events.FRAGMENT_LOADING_COMPLETED, function(data) {
                if (exist(data.request)) {
                    if (data.request.type == "MediaSegment") {
                        js("fragment", data.request.url)
                    }
                }
            });
            dash.on(dashjs.MediaPlayer.events.ERROR, function(data) {
                console.log(data);
                o.dasherror = data;
                if (data.error == "manifestError") {
                    error = "DASH " + data.error + ": " + data.event.message + ", " + data.event.event;
                    log(error);
                    o.media.onError()
                } else if (data.error == "capability" || data.error == "mediasource") {
                    error = "DASH " + data.error + " error: " + data.event;
                    log(error);
                    o.media.onError()
                } else if (data.error == "key_session" || data.error == "key_message") {
                    error = "DASH " + data.error + " error: " + data.event;
                    log(error);
                    o.media.onError()
                } else if (data.error == "download") {
                    error = "DASH fatal network error encountered";
                    log(error);
                    o.media.onError()
                }
            });
            dash_created = true
        }

        function CreateHLS(x) {
            log("HLS");
            if (o.files.length > 1) {
                v.hlsquality = 0;
                v.hlsquality_off = true
            } else {
                v.hlsquality_off ? v.hlsquality = 1 : ''
            }
            if (o.audiotracks.length > 1) {
                v.hlsaudio = 0;
                v.hlsaudio_off = true
            } else {
                v.hlsaudio_off ? v.hlsaudio = 1 : ''
            }
            o.hls_subs = false;
            var dontstart = false;
            if (v.preroll && v.hlsvastwait == 1) {
                dontstart = true
            }
            var hls_config = {
                debug: (v.hlsdebug == 1 && !pip),
                autoStartLoad: (v.preload == 1 || v.autoplay == 1 || pip || x) && !dontstart,
                maxBufferLength: 60,
                maxMaxBufferLength: 60,
                manifestLoadingTimeOut: 40000,
                fragLoadingTimeOut: 40000,
                enableWorker: false
            };
            if (v.hlscookies == 1) {
                hls_config['xhrSetup'] = function(xhr, url) {
                    xhr.withCredentials = true
                }
            }
            if (exist(v.hlsconfig)) {
                if (exist(v.hlsconfig.maxBufferLength)) {
                    if (v.hlsconfig.maxBufferLength > 600) {
                        v.hlsconfig.maxBufferLength = 600
                    }
                    v.hlsconfig.maxMaxBufferLength = v.hlsconfig.maxBufferLength
                }
                if (exist(v.hlsconfig.customBuffer)) {
                    v.hlsconfig.maxMaxBufferLength = v.hlsconfig.maxBufferLength = v.hlsconfig.customBuffer
                }
                if (typeof v.hlsconfig == "object") {
                    for (var key in v.hlsconfig) {
                        hls_config[key] = v.hlsconfig[key]
                    }
                }
            }
            hls = new Hls(hls_config);
            js("hls", hls, 1);
            hls.loadSource(url);
            hls.attachMedia(pjstg);
            hls.on(Hls.Events.MEDIA_ATTACHED, function() {
                log("HLS attached")
            });
            hls.on(Hls.Events.MANIFEST_LOADED, function(event, data) {
                !pip ? o.actions.MediaReady() : ''
            });
            hls.on(Hls.Events.MANIFEST_PARSED, function(event, data) {
                if (!pip && v.hlsquality == 1 && HlsLevelsLength() > 1) {
                    HlsQualityLevels();
                    o.controls ? o.controls.QualityChangedNoHand(o.current_quality) : ''
                }
            });
            hls.on(Hls.Events.LEVEL_SWITCH, function(event, data) {
                if (!pip && v.hlsquality == 1 && HlsLevelsLength() > 1) {
                    o.current_quality = hls.loadLevel;
                    o.controls ? o.controls.QualityChangedNoHand(o.current_quality) : '';
                    log("HLS Level " + o.current_quality)
                }
            });
            hls.on(Hls.Events.LEVEL_LOADED, function(event, data) {
                if (!pip) {
                    if (data.details.live != is_live) {
                        is_live = data.details.live;
                        o.controls.refresh()
                    }
                    is_live = data.details.live;
                    if (is_live) {
                        log("Live");
                        o.dvr = url.indexOf("?DVR") > -1;
                        if (pjstg.duration > 0 && pjstg.currentTime > 0) {
                            if (pjstg.duration - pjstg.currentTime < 10) {
                                if (o.hls_stuck_time > 0) {
                                    if (o.hls_stuck_time == pjstg.currentTime && o.hls_stuck_duration == pjstg.duration) {
                                        o.stuck++;
                                        if (o.stuck > 2) {
                                            o.stuck = 0;
                                            o.hls_stuck_time = -1;
                                            hls.destroy();
                                            CreateHLS(true);
                                            onEnded()
                                        }
                                    } else {
                                        o.hls_stuck_time = -1
                                    }
                                } else {
                                    o.hls_stuck_time = pjstg.currentTime;
                                    o.hls_stuck_duration = pjstg.duration
                                }
                            }
                        }
                    }
                }
                if (v.hlsquality == 1) {
                    o.current_quality = hls.loadLevel;
                    o.controls ? o.controls.QualityChangedNoHand(o.current_quality) : ''
                }
            });
            hls.on(Hls.Events.FRAG_CHANGED, function(event, data) {
                if (exist(data.frag) && !pip) {
                    js("fragment", data.frag.relurl)
                }
                hls_started = true;
                hlsTextTracks()
            });
            hls.on(Hls.Events.FRAG_PARSING_METADATA, function(event, data) {
                js("fragdata", data, 1)
            });
            hls.on(Hls.Events.AUDIO_TRACKS_UPDATED, function(event, data) {
                !pip && v.hlsaudio == 1 ? HlsAudioTracks() : ''
            });
            hls.on(Hls.Events.AUDIO_TRACK_SWITCHING, function(event, data) {
                !pip && v.hlsaudio == 1 ? HlsAudioTrack() : ''
            });
            if (v.hlssubtracks == 1) {
                _hlssubtracks = new PluginHlsSubtitles(hls, pip)
            }
            hls.on(Hls.Events.ERROR, function(event, data) {
                v.log == 1 ? console.log(data) : '';
                o.hlserror = data;
                if (data.fatal) {
                    switch (data.type) {
                        case Hls.ErrorTypes.NETWORK_ERROR:
                            if (v.livewakeup == 1) {
                                log("sleep");
                                var playing = o.play;
                                !pip && playing ? o.actions.Pause() : '';
                                o.actions.ShowPoster();
                                is_sleep = 1;
                                HlsSleep(playing)
                            } else {
                                error = data.details;
                                o.seekto > 0 || pip || v.live == 1 || is_ws ? '' : o.seekto = Time();
                                hls.destroy();
                                if (!pip) {
                                    o.media.onError()
                                }
                            }
                            break;
                        case Hls.ErrorTypes.MEDIA_ERROR:
                            HlsRecoverMediaError();
                            break;
                        default:
                            error = "HLS fatal error, destroy";
                            hls.destroy();
                            !pip ? o.media.onError() : '';
                            break
                    }
                } else {
                    log("HLS ", data.type, data.details, (data.response ? data.response.code : ''));
                    js("hls_error", (data.response ? data.response.code : ''));
                    if (is_sleep > 0) {
                        is_sleep = 2;
                        HlsSleep()
                    }
                }
            });
            hls_created = true
        }

        function CreateWS() {
            if (exist(window.FlussonicMsePlayer)) {
                if (MseIsSupported()) {
                    if (!exist(o.ws)) {
                        o.ws = new PluginWS()
                    }
                    ws = new FlussonicMsePlayer(pjstg, url, {
                        debug: true
                    });
                    ws_created = true
                } else {
                    is_ws = false;
                    log("not supported")
                }
            }
        }

        function hlsTextTracks() {
            Captions()
        };
        this.captions = function() {
            Captions()
        };

        function Captions() {
            if (v.hlscaptions) {
                if (pjstg.textTracks.length > 0) {
                    if (v.captions == 1) {
                        pjstg.textTracks[pjstg.textTracks.length - 1].mode = "showing"
                    } else {
                        pjstg.textTracks[pjstg.textTracks.length - 1].mode = "hidden"
                    }
                    if (!o.captions) {
                        o.captions = true;
                        o.controls.refresh()
                    }
                } else {
                    if (o.captions) {
                        o.captions = false;
                        o.controls.refresh()
                    }
                }
            }
        }

        function HlsSleep(x) {
            if (is_sleep > 0) {
                clearTimeout(sleep_timeout);
                sleep_timeout = setTimeout(HlsLiveWaiting, v.livewakeuptime * 1000)
            }
        }

        function HlsLiveWaiting() {
            if (is_sleep > 0) {
                log("watching")
            }
            if (is_sleep == 1) {
                hls.loadSource(url)
            }
            if (is_sleep == 2) {
                hls.destroy();
                CreateHLS(true);
                pjstg.play()
            }
        }
        var recover_decoding_error_date = 0;
        var recover_swap_audio_codec_date = 0;

        function HlsRecoverMediaError() {
            var now = performance.now();
            if (!recover_decoding_error_date || (now - recover_decoding_error_date) > 3000) {
                recover_decoding_error_date = performance.now();
                log("HLS fatal media error, try to recover");
                hls.recoverMediaError();
                hls.startLoad();
                TagPlay()
            } else {
                if (!recover_swap_audio_codec_date || (now - recover_swap_audio_codec_date) > 3000) {
                    recover_swap_audio_codec_date = performance.now();
                    log("HLS fatal media error, try to recover");
                    hls.swapAudioCodec();
                    hls.recoverMediaError()
                } else {
                    log("HLS fatal media error, recovery failed")
                }
            }
        }
        pjstg.addEventListener('loadstart', onLoadStart);
        pjstg.addEventListener('error', onTagError);
        pjstg.addEventListener('ended', onEnded);
        pjstg.addEventListener('play', onPlay);
        pjstg.addEventListener('pause', onPause);
        pjstg.addEventListener('timeupdate', onTimeupdate);
        pjstg.addEventListener('seeking', onSeeking);
        pjstg.addEventListener('seeked', onSeeked);
        pjstg.addEventListener('loadedmetadata', onMeta);
        pjstg.addEventListener('volumechange', onVolume);
        pjstg.addEventListener('waiting', onWaiting);
        pjstg.addEventListener('durationchange', onDuration);
        pjstg.addEventListener('loadeddata', onLoadedData);
        pjstg.addEventListener('enterpictureinpicture', onPipEnter);
        pjstg.addEventListener('leavepictureinpicture', onPipLeave);

        function onLoadStart() {
            if (!is_hls && !is_dash) {
                !pip ? o.actions.MediaReady() : ''
            }
        }

        function onTagError() {
            if (!is_hls && !is_dash) {
                if (pjstg.error) {
                    log(pjstg.error, pjstg.error.code, pjstg.error.message);
                    var x = pjstg.error.code;
                    error = undefined;
                    if (x == 1) {
                        error = "aborted"
                    }
                    if (x == 2) {
                        error = "network"
                    }
                    if (x == 3) {
                        error = "decode"
                    }
                    if (x == 4) {
                        error = "not found"
                    }
                    log("Video Error: ", error)
                }
                if (error != undefined) {
                    onError()
                }
            }
        }

        function onError() {
            !pip ? o.media.onError() : ''
        }

        function onEnded() {
            !pip ? o.media.onEnded() : ''
        }

        function onPlay() {
            if (is_hls && is_sleep > 0) {} else {
                if (!pip) {
                    if (pause_before_vast == -1) {
                        var x = false;
                        if (is_hls) {
                            if (exist(o.vast) || exist(o.vastloader)) {
                                pause();
                                x = true
                            }
                        }
                        if (!x) {
                            o.media.onPlay()
                        }
                    }
                }
            }
        }

        function onPause() {
            !pip && !o.nopause ? o.media.onPause() : ''
        }

        function onTimeupdate() {
            !pip ? o.media.onTimeupdate() : '';
            if (pause_before_vast > -1) {
                if (Time() > pause_before_vast) {
                    pause();
                    pause_before_vast = -1
                }
            }
        }

        function onSeeking() {
            !pip ? o.media.onSeeking() : ''
        }

        function onSeeked() {
            !pip ? o.media.onSeeked() : ''
        }

        function onMeta() {
            if (pip) {
                PipSize()
            } else {
                o.media.onMeta();
                PlayerSize();
                if (is_hls && is_sleep > 0) {
                    is_sleep = 0;
                    log("wake up");
                    hls.startLoad();
                    TagPlay();
                    o.controls.Play()
                }
                if (exist(v.ratio)) {
                    Resize()
                }
            }
        }

        function PipSize() {
            if (pjstg.videoHeight > 0) {
                css(container, {
                    "height": container.offsetWidth / (pjstg.videoWidth / pjstg.videoHeight) - parseInt(v.pip.border)
                })
            }
        }

        function PlayerSize() {
            if (v.changeheight == 1) {
                clearInterval(o.heightInterval);
                o.heightInterval = setInterval(WaitSize, 100);
                WaitSize()
            }
        }

        function WaitSize() {
            if (pjstg.videoHeight > 0) {
                o.actions.changeAspect(pjstg.videoWidth / pjstg.videoHeight);
                clearInterval(o.heightInterval)
            }
        }

        function onDuration() {
            !pip && !is_ws ? o.media.onDuration() : ''
        }

        function onVolume() {
            !pip ? o.media.onVolume() : ''
        }

        function onWaiting() {
            if (is_hls && is_sleep > 0) {} else {
                !pip ? o.media.onWaiting() : ''
            }
        }

        function onLoadedData() {
            o.actions.LoadedData()
        }

        function MseIsSupported() {
            var mediaSource = window.MediaSource = window.MediaSource || window.WebKitMediaSource;
            var sourceBuffer = window.SourceBuffer = window.SourceBuffer || window.WebKitSourceBuffer;
            var isTypeSupported = mediaSource && typeof mediaSource.isTypeSupported === 'function' && mediaSource.isTypeSupported(mimeCodec);
            var sourceBufferValidAPI = !sourceBuffer || sourceBuffer.prototype && typeof sourceBuffer.prototype.appendBuffer === 'function' && typeof sourceBuffer.prototype.remove === 'function';
            return isTypeSupported && sourceBufferValidAPI
        }

        function DashQualityLevels() {
            var q = 0;
            if (!pip && v.dashquality == 1) {
                var x = dash.getBitrateInfoListFor("video");
                if (x.length > 1) {
                    var y = '';
                    for (var i = 0; i < x.length; i++) {
                        o.files_quality[i] = exist(x[i].height) ? MseRenameQualities(x[i], v.nameofdashquality) : i;
                        if (o.files_quality[i] == y) {
                            y = o.files_quality[i];
                            if (exist(x[i].bitrate)) {
                                o.files_quality[i] += " " + span05 + " &nbsp;" + parseInt(x[i].bitrate / 1000) + ' ' + Lang('kbps') + '</span>';
                                o.files_quality[i - 1] += " " + span05 + " &nbsp;" + parseInt(x[i - 1].bitrate / 1000) + ' ' + Lang('kbps') + '</span>';
                                y = ''
                            }
                        } else {
                            y = o.files_quality[i]
                        }
                        if (exist(v.default_quality) && q == 0) {
                            if (v.default_quality == o.files_quality[i]) {
                                q = i
                            }
                        }
                        if (exist(o.default_quality)) {
                            if (o.default_quality == o.files_quality[i]) {
                                q = i
                            }
                        }
                    }
                    o.files_quality[x.length] = Lang("auto")
                }
                o.reverse_quality = true
            }
            return q
        }

        function DashAudioTracks() {
            if (!pip && v.dashaudio == 1) {
                o.current_audiotrack = 0;
                var x = dash.getTracksFor("audio");
                if (x.length > 1) {
                    for (var i = 0; i < x.length; i++) {
                        o.files_audiotrack[i] = i;
                        if (exist(x[i].lang)) {
                            o.files_audiotrack[i] = RenameTracks(x[i].lang)
                        } else {
                            if (exist(x[i].index)) {
                                o.files_audiotrack[i] = Lang("audiotrack") + " " + x[i].index
                            }
                        }
                        if (exist(o.default_audio)) {
                            if (o.default_audio == o.files_audiotrack[i]) {
                                o.current_audiotrack = i
                            }
                        }
                    }
                }
                log("DASH AudioTrack ", o.current_audiotrack);
                o.controls.AudioTrackChangedNoHand(o.current_audiotrack)
            }
        }
        var span05 = "<span style='opacity:0.5'>";

        function HlsQualityLevels() {
            if (!pip && v.hlsquality == 1) {
                var x = hls.levels;
                var q = 0;
                if (x.length > 1) {
                    for (var i = 0; i < x.length; i++) {
                        if (exist(x[i].height)) {
                            var y = MseRenameQualities(x[i], v.nameofhlsquality);
                            if (o.files_quality.indexOf(y) > -1) {
                                if (exist(x[i].bitrate)) {
                                    var yi = o.files_quality.indexOf(y);
                                    o.files_quality[yi] += " " + span05 + " &nbsp;" + parseInt(x[yi].bitrate / 1000) + ' ' + Lang('kbps') + '</span>';
                                    o.files_quality[i] = y + " " + span05 + " &nbsp;" + parseInt(x[i].bitrate / 1000) + ' ' + Lang('kbps') + '</span>'
                                }
                            } else {
                                o.files_quality[i] = y
                            }
                        } else if (exist(x[i].name)) {
                            o.files_quality[i] = x[i].name
                        } else {
                            o.files_quality[i] = i
                        }
                        if (exist(v.default_quality) && q == 0) {
                            if (v.default_quality == o.files_quality[i]) {
                                q = i
                            }
                        }
                        if (exist(o.default_quality)) {
                            if (o.default_quality == o.files_quality[i]) {
                                q = i
                            }
                        }
                    }
                    if (v.hlsautoquality == 1) {
                        o.files_quality[x.length] = Lang("auto")
                    } else {
                        hls.autoLevelEnabled = 0;
                        hls.autoLevelCapping = 0
                    }
                    if (v.hlslowquality == 1 || q > 0) {
                        hls.autoLevelCapping = 0;
                        if (v.hlschangequality == "next" || (!o.start && v.preload == 0)) {
                            hls.nextLevel = q
                        } else {
                            if (v.hlschangequality == "current") {
                                hls.currentLevel = q
                            }
                        }
                    } else {
                        v.hlsautoquality == 1 ? o.current_quality = hls.levels.length - 1 : o.current_quality = hls.firstLevel
                    }
                }
                o.reverse_quality = true
            }
        }

        function HlsAudioTracks() {
            if (!pip && v.hlsaudio == 1) {
                var x = hls.audioTracks;
                if (x.length > 1) {
                    for (var i = 0; i < x.length; i++) {
                        o.files_audiotrack[i] = exist(x[i].name) ? RenameTracks(x[i].name) : i;
                        if (exist(v.default_audio)) {
                            if (v.default_audio == o.files_audiotrack[i]) {
                                o.current_audiotrack = i;
                                hls.audioTrack = i
                            }
                        }
                    }
                }
            }
        }

        function HlsAudioTrack() {
            if (!pip) {
                o.current_audiotrack = hls.audioTrack;
                log("HLS AudioTrack ", o.current_audiotrack);
                o.controls.AudioTrackChangedNoHand(o.current_audiotrack)
            }
        };

        function RenameTracks(x) {
            var r = x.toLowerCase();
            if (r == "eng" || r == "en") {
                x = "English"
            } else if (r == "rus" || r == "ru") {
                x = " CAA:89"
            }
            return x
        };

        function MseRenameQualities(x, y) {
            var r = x.height + 'p';
            if (x.height < 200) {
                r = '160p'
            } else if (x.height >= 200 && x.height <= 300) {
                r = '240p'
            } else if (x.height > 300 && x.height <= 400) {
                r = '360p'
            } else if (x.height > 400 && x.height <= 500) {
                r = '480p'
            } else if (x.height > 500 && x.height <= 600) {
                r = '540p'
            } else if (x.height > 600 && x.height <= 900) {
                r = '720p'
            } else if (x.height > 900 && x.height <= 1200) {
                r = '1080p'
            } else if (x.height > 1200 && x.height <= 1800) {
                r = '1440p'
            } else if (x.height > 1800) {
                r = '2160p'
            }
            if (x.width == 426 && x.height <= 240) {
                r = '240p'
            } else if (x.width == 640 && x.height <= 360) {
                r = '360p'
            } else if (x.width == 854 && x.height <= 480) {
                r = '480p'
            } else if (x.width == 1280 && x.height <= 720) {
                r = '720p'
            } else if (x.width == 1920 && x.height <= 1080) {
                r = '1080p'
            } else if (x.width == 2560 && x.height <= 1440) {
                r = '1440p'
            } else if (x.width == 3840 && x.height <= 2160) {
                r = '2160p'
            }
            if (v.settings.customqualities == 1 && exist(v.settings['name' + r])) {
                r = v.settings['name' + r]
            } else {
                if (y == 1) {
                    r = Lang(r)
                }
                if (y == 2 && exist(x.bitrate)) {
                    r = parseInt(x.bitrate / 1000) + ' ' + Lang('kbps')
                }
            }
            return r
        };

        function Time() {
            if (is_dash) {
                return dash_created ? dash.time() : 0
            } else {
                return pjstg.currentTime
            }
        };
        this.Play = function() {
            var p = true;
            if (is_hls && !hls_started) {
                if (!hls_created) {
                    CreateHLS(true)
                }
                hls.startLoad()
            }
            if (is_dash && !dash_created) {
                CreateDASH(true);
                p = false
            }
            if (is_ws) {
                if (!ws_created) {
                    CreateWS()
                }
                ws.play();
                p = false
            }
            if (pjstg.style.top == "-2000px") {
                this.AfterVast()
            }
            p ? TagPlay() : ''
        };
        var playtry;

        function TagPlay() {
            if (url != "none") {
                var playPromise = pjstg.play();
                if (playPromise !== undefined) {
                    playPromise.then(function() {}).catch(function(error) {
                        log("playError", error.message);
                        if (error.message.indexOf('source') == -1 && error.message.indexOf('interrupted by') == -1) {
                            if (!o.system.mobile || error.message.indexOf('user denied permission') == -1) {
                                if (v.autoplaymute == 1 && !o.muted) {
                                    o.actions.Mute();
                                    pjstg.play()
                                } else {
                                    o.controls.Pause();
                                    o.actions.ShowPoster()
                                }
                            } else {
                                o.controls.Pause();
                                o.actions.ShowPoster();
                                js("autoplay_denied")
                            }
                        }
                    })
                }
            }
        }
        this.BeforeVast = function() {
            if (o.vastloader || o.vast) {
                if (o.ispipkit) {
                    PipWebkit()
                }
                if (!o.airplayed && o.system.mobile && o.system.webkit) {
                    if (!pjstg.muted) {
                        pjstg.muted = true;
                        unmuteplease = true
                    }
                    css(pjstg, {
                        "position": "absolute",
                        "left": -2000,
                        "top": -2000
                    });
                    pause_before_vast = Time();
                    if (!is_ws) {
                        pjstg.play()
                    }
                    if (pause_before_vast == 0 && o.seekto > 0) {
                        _seekaftervast = o.seekto
                    }
                }
            }
        };
        this.AfterVast = function() {
            if (!o.airplayed && (o.system.mobile || o.system.webkit)) {
                css(pjstg, {
                    "position": "static",
                    "left": 0,
                    "top": 0
                });
                if (unmuteplease) {
                    !o.muted ? pjstg.muted = false : '';
                    unmuteplease = false
                }
                if (_seekaftervast > 0) {
                    o.seekto = _seekaftervast;
                    _seekaftervast = 0
                }
                pause_before_vast = -1
            }
        };
        this.Pause = function() {
            pause()
        };

        function pause() {
            if (is_ws) {
                ws.pause()
            } else {
                pjstg.pause()
            }
        };
        this.Toggle = function() {
            !pjstg.paused ? Pause() : TagPlay()
        };
        this.Seek = function(x) {
            if (is_dash && dash_created) {
                dash.seek(x)
            } else {
                pjstg.currentTime = x
            }
        };
        this.Mute = function() {
            pjstg.muted = true
        };
        this.Unmute = function() {
            pjstg.muted = false
        };
        this.Volume = function(x) {
            pjstg.volume = x
        };
        this.Gain = function() {
            if (o.gainedsource != pjstg) {
                window.AudioContext = window.AudioContext || window.webkitAudioContext;
                var ctx = new AudioContext();
                var source = ctx.createMediaElementSource(pjstg);
                var gain = ctx.createGain();
                gain.gain.value = v.volumegain;
                source.connect(gain);
                gain.connect(ctx.destination);
                o.gained = true;
                o.gainedsource = pjstg
            }
        };
        this.isPlaying = function() {
            return !pjstg.paused
        };
        this.isLive = function() {
            return v.live == 1 || is_ws ? true : is_live
        };
        this.tag = function() {
            return pjstg
        };
        this.nativeControls = function() {
            attr(pjstg, {
                'controls': '1'
            });
            return true
        };
        this.preload = function() {
            attr(pjstg, {
                'preload': 'metadata'
            });
            if (is_hls && !hls_created) {
                CreateHLS(false)
            }
            if (is_dash && !dash_created) {
                CreateDASH(false)
            }
        };
        this.status = function() {
            var state = "playing";
            if (pjstg.paused) {
                state = "paused"
            }
            if (pjstg.ended) {
                state = "ended"
            }
            return state
        };
        this.ChangePip = function(x, y) {
            pip = x;
            y.appendChild(pjstg);
            container = y;
            if (x) {
                pjstg.muted = true;
                PipSize();
                if (o.files_quality.length > 0) {
                    if (is_hls) {
                        pip_quality = o.current_quality;
                        hls.autoLevelCapping = 0;
                        hls.currentLevel = 0
                    }
                }
            } else {
                if (!o.muted) {
                    pjstg.muted = false
                }
                pjstg.volume = v.volume;
                PlayerSize();
                if (o.files_quality.length > 0) {
                    if (is_hls) {
                        hls.autoLevelCapping = -1;
                        if (pip_quality > -1) {
                            hls.nextLevel = pip_quality
                        }
                    }
                }
            }
        };
        this.time = function() {
            return Time()
        };
        this.duration = function() {
            var x = pjstg.duration;
            if (is_dash && dash_created) {
                x = dash.duration()
            }
            if (exist(v.end)) {
                x = v.end
            }
            return x != Infinity && !isNaN(x) ? x : 0
        };
        this.loaded = function() {
            var x = 0;
            if (pjstg.buffered) {
                if (pjstg.buffered.length > 0) {
                    var y = Time();
                    for (var i = 0; i < pjstg.buffered.length; i++) {
                        if ((y >= pjstg.buffered.start(i) || y >= pjstg.buffered.start(i) - 100) && y <= pjstg.buffered.end(i)) {
                            x = pjstg.buffered.end(i)
                        }
                    }
                    x == 0 ? x = pjstg.buffered.end(pjstg.buffered.length - 1) : ''
                }
            }
            if (exist(v.end)) {
                x > v.end ? x = v.end : ''
            }
            return x
        };
        this.auto = function() {
            var x = false;
            if (is_hls) {
                if (hls_created) {
                    x = hls.autoLevelEnabled
                }
            } else if (is_dash) {
                if (dash_created) {
                    x = dash.getAutoSwitchQualityFor("video")
                }
            }
            return x
        };
        this.size = function() {
            return {
                "width": pjstg.videoWidth,
                "height": pjstg.videoHeight
            }
        };
        this.src = function(x) {
            url = x;
            onplay = false;
            o.media_error != 2 ? o.media_error = false : '';
            if (is_hls) {
                is_hls && hls ? hls.destroy() : '';
                CreateHLS(true);
                CheckPip()
            } else {
                attr(pjstg, {
                    'src': x,
                    'autoplay': 0
                });
                tagSrc();
                pause()
            }
        };

        function tagSrc() {
            if (o.system.safari) {
                var y = pjstg.textTracks;
                if (y) {
                    for (var i = 0; i < y.length; i++) {
                        y[i].mode = "disabled"
                    }
                }
                y = pjstg.audioTracks;
                if (y) {
                    for (i = 0; i < y.length; i++) {
                        y[i].enabled = (i == 0 ? 1 : 0)
                    }
                }
                if (window.WebKitPlaybackTargetAvailabilityEvent) {
                    pjstg.addEventListener('webkitplaybacktargetavailabilitychanged', function(event) {
                        o.airplay = event.availability == "available";
                        !pip ? o.actions.AirplayChanged() : ''
                    })
                }
            }
            CheckPip()
        }
        this.airplay = function() {
            pjstg.webkitShowPlaybackTargetPicker()
        };
        this.pipwebkit = function() {
            PipWebkit()
        };

        function CheckPip() {
            if (o.system.webkit) {
                if (exist(pjstg.webkitSupportsPresentationMode) && !o.system.iphone) {
                    o.pipwebkit = true
                }
                if (document.pictureInPictureEnabled && !pjstg.disablePictureInPicture) {
                    o.pipwebkit = true
                }
            }
        }

        function PipWebkit() {
            if (o.system.safari) {
                if (pjstg.webkitPresentationMode === "picture-in-picture") {
                    pjstg.webkitSetPresentationMode("inline");
                    o.ispipkit = false
                } else {
                    pjstg.webkitSetPresentationMode("picture-in-picture");
                    o.ispipkit = true
                }
            } else {
                if (!document.pictureInPictureElement) {
                    eval('pjstg.requestPictureInPicture().then(p => {o.ispipkit = true;}).catch(error => {o.ispipkit = false;});')
                } else {
                    eval('document.exitPictureInPicture().then(ok =>{o.ispipkit = false;}).catch(error => {});')
                }
            }
        };

        function onPipEnter() {
            o.ispipkit = true
        };

        function onPipLeave() {
            o.ispipkit = false
        };
        this.setDashQuality = function(x) {
            if (dash_created) {
                var x = parseInt(x);
                if (x == dash.getBitrateInfoListFor("video").length) {
                    o.current_quality = dash.getQualityFor('video');
                    dash.setAutoSwitchQualityFor("audio", true);
                    dash.setAutoSwitchQualityFor("video", true)
                } else {
                    dash.setAutoSwitchQualityFor("audio", false);
                    dash.setAutoSwitchQualityFor("video", false);
                    dash.setQualityFor('video', x);
                    dash.setQualityFor('audio', x)
                }
            }
        };
        this.setWsQuality = function(x) {
            if (o.ws) {
                o.ws.setTracks(ws, x, -1)
            }
        };
        this.setWsAudioTrack = function(x) {
            if (o.ws) {
                o.ws.setTracks(ws, -1, x)
            }
        };
        this.setDashAudioTrack = function(x) {
            if (dash_created) {
                if (pjstg.buffered.length > 0) {
                    dash.setCurrentTrack(dash.getTracksFor('audio')[parseInt(x)])
                }
            }
        };
        this.setHlsQuality = function(x) {
            if (hls_created) {
                var y = parseInt(x);
                if (x == hls.levels.length) {
                    y = -1;
                    hls.autoLevelCapping = -1
                }
                if (v.hlschangequality == "current") {
                    setTimeout(onWaiting, 500);
                    hls.currentLevel = y
                }
                if (v.hlschangequality == "next") {
                    log("HLS next level " + y);
                    hls.nextLevel = y
                }
                if (y == -1) {
                    o.current_quality = hls.loadLevel
                }
            }
        };
        this.getHLS = function() {
            return hls
        };
        this.getDASH = function() {
            return dash
        };
        this.HlsLevelsLength = function() {
            return HlsLevelsLength()
        };

        function HlsLevelsLength() {
            var x = 0;
            if (hls_created) {
                if (hls.levels) {
                    x = hls.levels.length
                }
            }
            return x
        }
        this.DashLevelsLength = function() {
            return DashLevelsLength()
        };
        this.resize = function() {
            Resize()
        };

        function Resize() {
            var x = pjstg.videoWidth / pjstg.videoHeight;
            if (x) {
                x = (x).toFixed(2);
                var z = eval(v.ratio).toFixed(2);
                if (z != x) {
                    if (o.screen_w > o.screen_h) {
                        css(pjstg, {
                            'object-fit': 'fill',
                            'height': '100%',
                            'width': o.screen_h * z
                        })
                    } else {
                        css(pjstg, {
                            'object-fit': 'fill',
                            'width': '100%',
                            "height": (o.screen_w / z),
                            "position": "absolute",
                            "top": "50%",
                            "left": "50%",
                            "transform": "translate(-50%, -50%)"
                        })
                    }
                }
            }
        }

        function DashLevelsLength() {
            var x = 0;
            if (dash_created) {
                x = dash.getBitrateInfoListFor("video").length
            }
            return x
        }
        this.setHlsAudioTrack = function(x) {
            if (hls_created) {
                hls.audioTrack = parseInt(x)
            }
        };
        this.setHlsSubTrack = function(x) {
            if (hls_created && _hlssubtracks) {
                _hlssubtracks.HlsSubTrack(x)
            }
        };
        this.setDashSubTrack = function(x) {
            if (dash_created && _dashsubtracks) {
                _dashsubtracks.DashSubTrack(x)
            }
        };
        this.setSpeed = function(x) {
            pjstg.playbackRate = x
        };
        this.removeTracks = function() {
            var x = pjstg.textTracks;
            for (var y = 0; y < x.length; y++) {
                x[y].mode = "disabled";
                x[y].removeEventListener("load", iOSTrackLoaded);
                pjstg.removeChild(pjstg.children[0])
            }
        };
        this.addTrack = function(x, y, z) {
            var track = document.createElement('track');
            track.setAttribute('src', x);
            track.setAttribute('label', y);
            track.setAttribute('kind', 'subtitles');
            if (z) {
                track.setAttribute('default', '')
            }
            pjstg.appendChild(track);
            track.addEventListener("load", iOSTrackLoaded)
        };

        function iOSTrackLoaded(e) {
            if (e.target.label) {
                for (var i = 0; i < o.files_subtitle.length; i++) {
                    if (o.files_subtitle[i] == e.target.label) {
                        o.actions.SetSubtitle(i)
                    }
                }
            }
        };
        this.errorMessage = function() {
            return error
        };
        this.Remove = function() {
            is_hls && hls ? hls.destroy() : '';
            is_dash && dash ? dash.reset() : '';
            is_ws && ws ? ws.stop() : '';
            pjstg.removeEventListener('error', onTagError);
            pjstg.removeEventListener('ended', onEnded);
            pjstg.removeEventListener('play', onPlay);
            pjstg.removeEventListener('pause', onPause);
            pjstg.removeEventListener('timeupdate', onTimeupdate);
            pjstg.removeEventListener('seeking', onSeeking);
            pjstg.removeEventListener('seeked', onSeeked);
            pjstg.removeEventListener('loadedmetadata', onMeta);
            pjstg.removeEventListener('volumechange', onVolume);
            pjstg.removeEventListener('waiting', onWaiting);
            pjstg.removeEventListener('durationchange', onDuration);
            pjstg.removeEventListener('enterpictureinpicture', onPipEnter);
            pjstg.removeEventListener('leavepictureinpicture', onPipLeave);
            pjstg.src = '';
            if (container.tagName == "IFRAME") {
                container.contentDocument.body.removeChild(pjstg)
            } else {
                container.removeChild(pjstg)
            }
            pjstg = null
        }
    };
    var MediaYoutube = function(url, parentcontainer) {
        var intro = false;
        if (url.indexOf('intro') == 0) {
            intro = true;
            url = url.substr(5)
        }
        var youtube_id = YoutubeID(url);
        var error;
        var player;
        var created = false;
        var ready = false;
        var started = false;
        var vastonmobile = false;
        var auto = true;
        var _set_quality = [];
        var _speed = 1;
        var _wait = false;
        var startwait_t;
        var _start = 0;
        var _readyonplay = 0;
        var quality_received = false;
        var container_id = 'pljs_yt_' + v.id + (intro ? 'intro' : '');
        var container = createElement('div');
        container.setAttribute('id', container_id);
        parentcontainer.appendChild(container);
        o.airplay = false;
        !intro ? o.actions.AirplayChanged() : '';
        if (o.system.mobile) {
            v.preload = 1
        }
        if (v.youtubecontrols != 1) {
            var layer = createElement('div');
            parentcontainer.appendChild(layer);
            css(layer, {
                position: "absolute",
                top: 0,
                left: 0,
                "background-color": "#ff0000",
                height: "100%",
                width: "100%",
                "opacity": 0
            });
            layer.addEventListener("dblclick", function(event) {
                event.cancelBubble = true
            });
            if (o.system.mobile) {
                layer.addEventListener("touchstart", function(event) {
                    event.cancelBubble = true
                });
                layer.addEventListener("click", function(event) {
                    event.cancelBubble = true
                });
                layer.addEventListener("touchend", function(event) {
                    event.cancelBubble = true;
                    ScreenClick(event);
                    if (v.screenclick == 1) {
                        setTimeout(HideLayer, 100);
                        setTimeout(ShowLayer, 1000)
                    }
                })
            } else {
                layer.addEventListener("mousemove", function(event) {
                    var x = true;
                    if (v.vast == 1) {
                        if (exist(v.preroll) && !started) {
                            x = false
                        }
                        if (exist(v.playroll) && Status() == "paused" && time() > 0) {
                            x = false
                        }
                    }
                    if (x && v.screenclick == 1 && v.youtubelayer == 1 && v.ytcl != 1) {
                        hide2(this);
                        setTimeout(ShowLayer, 2000)
                    }
                })
            }
            v.screenclick == 1 ? hide2(layer) : ''
        }

        function ShowLayer() {
            show2(layer)
        }

        function HideLayer() {
            if (v.ytcl != 1) {
                hide2(layer)
            }
        }
        if (v.preload == 1 && v.autoplay == 0) {
            onWaiting()
        }
        if (!window['YT']) {
            window.onYouTubeIframeAPIReady = function() {
                YouTubeIframeAPIReady();
                for (var i = 0; i < pljssglobal.length; i++) {
                    if (pljssglobal[i].api("id") != v.id) {
                        if (pljssglobal[i].api('isyoutube')) {
                            pljssglobal[i].api('youtubeready')
                        }
                    }
                }
            };
            if (!Scripted("youtube.com/iframe_api")) {
                var tag = document.createElement('script');
                tag.src = "https://www.youtube.com/iframe_api";
                tag.name = "youtube_iframe_api";
                var firstScriptTag = document.getElementsByTagName('script')[0];
                firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
                tag.onerror = function(e) {
                    o.actions.MediaReady();
                    if (v.yterrors != 1) {
                        error = 'YouTube API Error';
                        o.media.onError()
                    }
                }
            }
        } else {
            YouTubeIframeAPIReady()
        }

        function YouTubeIframeAPIReady() {
            if (v.preload == 1 || intro) {
                !created ? Init() : ''
            } else {
                o.actions.MediaReady()
            }
        }

        function Init() {
            if ("YT" in window) {
                if (exist(YT.Player) && !created) {
                    log("Youtube Init");
                    var cntrls = 0;
                    if (v.youtubecontrols == 1) {
                        cntrls = 1
                    }
                    o.seekto > 0 ? _start = parseInt(o.seekto) : '';
                    player = new YT.Player(container_id, {
                        height: o.container_h,
                        width: o.container_w,
                        videoId: youtube_id,
                        playerVars: {
                            enablejsapi: 1,
                            playerapiid: container_id,
                            html5: 1,
                            disablekb: 1,
                            autohide: 1,
                            playsinline: ((v.playsinlineonmobile == 0 || (v.playsinlineonmobileiphone != 1 && o.system.iphone)) && o.system.mobile ? 0 : 1),
                            iv_load_policy: 3,
                            controls: cntrls,
                            showinfo: 0,
                            modestbranding: 1,
                            rel: 0,
                            autoplay: 0,
                            loop: 0
                        },
                        events: {
                            'onReady': onYtPlayerReady,
                            'onStateChange': onYtPlayerStateChange,
                            'onError': onError,
                            'onPlaybackQualityChange': onQualityChanged
                        }
                    });
                    if (o.seekto > 0) {
                        o.seekto = undefined
                    }
                    Resize();
                    created = true
                } else {
                    setTimeout(Init, 500)
                }
            } else {
                setTimeout(Init, 500)
            }
        }
        var _play_i;

        function onYtPlayerReady() {
            log("Youtube Ready");
            ready = true;
            clearTimeout(startwait_t);
            o.actions.StopWaiting();
            if (intro) {
                if (o.system.mutedautoplay) {
                    o.actions.Mute()
                }
                player.playVideo();
                o.vast.ytReady()
            } else {
                if (v.autoplay == 1 && o.system.mutedautoplay && !o.acted) {
                    o.actions.Mute();
                    if (o.system.mobile) {
                        clearInterval(_play_i);
                        _play_i = setInterval(PlayingChecker, 300)
                    }
                }
                if (v.preload == 0) {
                    player.playVideo()
                } else {
                    o.actions.MediaReady()
                }
                o.media.onDuration();
                if (_speed != 1) {
                    SetSpeed(_speed)
                }
                onMeta();
                Resize()
            }
        }

        function PlayingChecker() {
            var x = player.getPlayerState();
            if (x == 2 || x == -1) {
                o.controls.Pause();
                o.controls.StopWaiting();
                clearInterval(_play_i)
            }
            if (x == 1) {
                clearInterval(_play_i)
            }
        }

        function onYtPlayerStateChange(event) {
            if (intro) {
                if (event.data == YT.PlayerState.ENDED) {
                    o.vast.ytEnded()
                }
                if (event.data == YT.PlayerState.PLAYING) {}
            } else {
                if (event.data == YT.PlayerState.PLAYING) {
                    if (_readyonplay == 1) {
                        _readyonplay = 0;
                        onYtPlayerReady()
                    }
                    if (!o.start) {
                        o.actions.Play()
                    }
                    if (_start > 0) {
                        player.seekTo(_start, true);
                        _start = 0
                    }
                    ShowLayer();
                    started = true;
                    ready = true;
                    if (vastonmobile) {
                        player.pauseVideo()
                    } else {
                        o.media.onPlay();
                        o.media.onTimeupdate()
                    }
                    Qualities();
                    if (exist(v.default_quality)) {
                        for (var i = 0; i < o.files_quality.length; i++) {
                            if (v.default_quality == o.files_quality[i]) {
                                SetQuality(i)
                            }
                        }
                        v.default_quality = null
                    } else {
                        if (exist(o.default_quality)) {
                            for (var i = 0; i < o.files_quality.length; i++) {
                                if (o.default_quality == o.files_quality[i]) {
                                    SetQuality(i)
                                }
                            }
                            o.default_quality = null
                        }
                    }
                    _wait = false
                }
                if (event.data == -1 && _wait && o.play) {
                    o.actions.StopWaiting();
                    _wait = false;
                    onPause()
                }
                if (event.data == YT.PlayerState.PAUSED) {
                    onPause()
                }
                if (event.data == YT.PlayerState.ENDED) {
                    onEnded()
                }
                if (event.data == YT.PlayerState.BUFFERING) {
                    _wait = true;
                    onWaiting()
                }
                if (event.data == YT.PlayerState.CUED) {}
            }
        }

        function onError(event) {
            if (intro) {
                o.vast.ytError()
            } else {
                if (event.data == 2) {
                    error = "wrong youtube id"
                }
                if (event.data == 5) {
                    error = "network empty"
                }
                if (event.data == 101 || event.data == 150 || event.data == 100) {
                    error = "this video is unavailable"
                }
                if (v.customyterrors == 1) {
                    exist(v.customyterror) ? error = v.customyterror : ''
                }
                if (v.yterrors != 1) {
                    o.media.onError()
                }
            }
        }

        function onEnded() {
            v.start > 0 ? _start = v.start : '';
            o.media.onEnded();
            o.media.onDuration()
        }

        function onPause() {
            !o.nopause ? o.media.onPause() : ''
        }

        function onTimeupdate() {
            o.media.onTimeupdate()
        }

        function onMeta() {
            o.media.onMeta();
            o.actions.LoadedData()
        }

        function onDuration() {
            o.media.onDuration()
        }

        function onVolume() {
            o.media.onVolume()
        }

        function onWaiting() {
            if (o.media) {
                o.media.onWaiting()
            } else {
                startwait_t = setTimeout(onWaiting, 100)
            }
        }

        function onQualityChanged(event) {
            SetCurrentQuality(event.data)
        }

        function Qualities() {
            if (!quality_received) {
                var x = player.getAvailableQualityLevels() + '';
                if (x != '' && x != undefined) {
                    o.files_quality = x.split(',');
                    if (v.ytautoquality == 0) {
                        var y = o.files_quality.indexOf('auto');
                        if (y > -1) {
                            o.files_quality.splice(y, 1)
                        }
                    }
                    for (var i = 0; i < o.files_quality.length; i++) {
                        o.files_quality[i] = RenameQualities(o.files_quality[i])
                    }
                    quality_received = true;
                    SetCurrentQuality(player.getPlaybackQuality())
                }
            }
        }

        function SetCurrentQuality(x) {
            o.current_quality = o.files_quality.indexOf(RenameQualities(x + ''));
            o.controls.QualityChanged(o.current_quality)
        }
        this.size = function() {
            return {
                "width": 0,
                "height": 0
            }
        };

        function Status() {
            var state = -1;
            if (ready) {
                state = player.getPlayerState()
            }
            var x = '';
            if (state == -1) {
                x = "paused"
            }
            if (state == 1 || state == 3) {
                x = "playing"
            }
            if (state == 2) {
                x = "paused";
                if (o.play) {
                    o.controls.Pause();
                    o.actions.StopWaiting()
                }
            }
            if (state == 5) {
                x = "paused"
            }
            if (state == 0) {
                x = "ended"
            }
            return x
        }

        function Resize() {
            player ? player.setSize(o.screen_w, o.screen_h) : ''
        }

        function RenameQualities(x) {
            var y = x;
            if (x == "tiny") {
                y = "160p"
            }
            if (x == "small") {
                y = "240p"
            }
            if (x == "medium") {
                y = "360p"
            }
            if (x == "large") {
                y = "480p"
            }
            if (x == "hd720") {
                y = "720p"
            }
            if (x == "hd1080") {
                y = "1080p"
            }
            if (v.nameofyoutubequality == 1) {
                y = Lang(y)
            }
            if (x == "auto") {
                y = Lang("auto")
            }
            _set_quality[y] = x;
            return y
        }

        function time() {
            return ready ? player.getCurrentTime() : 0
        };

        function SetSpeed(x) {
            player ? player.setPlaybackRate(x) : '';
            _speed = x
        };
        this.YoutubeReady = function() {
            YouTubeIframeAPIReady()
        };
        this.Play = function() {
            if (ready) {
                player.playVideo()
            } else {
                if (!created) {
                    Init()
                } else {}
            }
        };
        this.Pause = function() {
            if (ready) {
                player.pauseVideo()
            }
        };
        this.Toggle = function() {
            if (ready) {
                Status() == 'playing' ? player.pauseVideo() : player.playVideo()
            }
        };
        this.Seek = function(x) {
            ready ? player.seekTo(x, true) : ''
        };
        this.tag = function() {
            return false
        };
        this.Mute = function() {
            ready ? player.mute() : ''
        };
        this.Unmute = function() {
            ready ? player.unMute() : ''
        };
        this.Volume = function(x) {
            ready ? player.setVolume(x * 100) : ''
        };
        this.isPlaying = function() {
            return Status() == 'playing'
        };
        this.isLive = function() {
            return false
        };
        this.setQuality = function(x) {
            SetQuality(x)
        };

        function SetQuality(x) {
            if (ready) {
                if (exist(o.files_quality[x])) {
                    var y = _set_quality[o.files_quality[x]];
                    auto = y == 'auto';
                    var z = time();
                    player.setPlaybackQuality(y)
                }
            }
        }
        this.setSpeed = function(x) {
            SetSpeed(x)
        };
        this.ready = function() {
            return ready
        };
        this.status = function() {
            return Status()
        };
        this.time = function() {
            return time()
        };
        this.duration = function() {
            var x = ready ? player.getDuration() : 0;
            if (exist(v.end)) {
                x = v.end
            }
            return x
        };
        this.loaded = function() {
            var x = 0;
            if (ready) {
                x = player.getVideoLoadedFraction() * player.getDuration()
            }
            return x
        };
        this.resize = function() {
            Resize()
        };
        this.errorMessage = function() {
            return error
        };
        this.auto = function() {
            return v.ytautoquality == 1 ? auto : false
        };
        this.playId = function(x) {
            if (player) {
                _readyonplay = 1;
                player.loadVideoById(x, 0)
            }
        };
        this.BeforeVast = function() {
            if (o.system.mobile && o.system.android) {
                this.Play();
                vastonmobile = true
            } else {
                if (Status() == "playing") {
                    this.Pause()
                }
            }
        };
        this.AfterVast = function() {
            vastonmobile = false
        };
        this.nativeControls = function() {
            return true
        };
        this.Remove = function() {
            ready ? player.destroy() : '';
            ready = false;
            quality_received = false;
            try {
                if (container) {
                    parentcontainer.removeChild(container)
                }
                parentcontainer.removeChild(layer)
            } catch (e) {}
        }
    };
    var Controls = function() {
        var b = [];
        var butNames = [];
        var butPosition = [];
        var waiting = false;
        var toolbarHidden = false;
        var settings;
        var playlist;
        o.files_speed = [0.25, 0.5, 0.75, 1, 1.25, 1.5, 2];
        if (v.settings.customspeeds == 1 && exist(v.settings.speeds)) {
            o.files_speed = v.settings.speeds.split(",")
        }
        o.speed1 = o.files_speed.indexOf('1') > -1 ? o.files_speed.indexOf('1') : o.files_speed.indexOf(1);
        o.current_speed == 3 ? o.current_speed = o.speed1 : '';
        !exist(v.settings.scale) ? v.settings.scale = 5 : '';
        o.files_scale = ['+ ' + v.settings.scale + '%', '&ndash; ' + v.settings.scale + '%', '100%'];
        var resizeonwidth = false;
        var stretch_width = 0;
        var stretch_width_last = 0;
        var stretch_with_volume = false;
        var firstly = true;
        var bg = new ControlsBg();
        var settings;
        var order = [];
        var _rights = false;
        var _move_rights = false;
        var _max_order = 0;
        var _rb = [];
        if (v.control_line.position == "controls-right") {
            v.control_line.position = "controls"
        }
        for (var y in v) {
            if (v.hasOwnProperty(y)) {
                if (y.indexOf("control_") == 0 && v[y]) {
                    !exist(v[y].order0) ? v[y].order0 = v[y].order : v[y].order = v[y].order0;
                    order[v[y].order] = y;
                    if (v.control_line.position != "controls") {
                        if (v[y].position == "controls-right") {
                            _rb.push([y, v[y].order]);
                            _rights = true
                        } else {
                            if (v[y].position == "controls" || v[y].position == undefined) {
                                _rights ? _move_rights = true : ''
                            }
                        }
                    }
                    _max_order < v[y].order ? _max_order = v[y].order : ''
                }
            }
        }
        if (_move_rights) {
            _rb.sort(function(a, b) {
                return a[1] - b[1]
            });
            for (var i = 0; i < _rb.length; i++) {
                order[v[_rb[i][0]].order] = null;
                v[_rb[i][0]].order = _max_order + 1;
                _max_order++;
                order[v[_rb[i][0]].order] = _rb[i][0]
            }
        }
        if (v.hotkey.seeksides == 1) {}
        if (v.toolbar.hide == 1 && v.toolbar.hidedown == 1) {
            o.toolbar = createElement("div");
            o.frame.appendChild(o.toolbar);
            css(o.toolbar, {
                'position': 'absolute',
                'left': 0,
                'top': 0,
                'width': '100%',
                'height': '100%',
                'transition': 'top 0.3s ease-out',
                'pointer-events': 'none'
            })
        }
        var bg2 = createElement("div");
        if (v.toolbar.hide == 1 && v.toolbar.hidedown == 1) {
            o.toolbar.appendChild(bg2)
        } else {
            o.frame.appendChild(bg2)
        }
        css(bg2, {
            'position': 'absolute',
            'left': 0,
            'bottom': 0,
            'width': '100%',
            'height': v.toolbar.h
        });
        bg2.onclick = function() {
            !o.system.mobile ? o.actions.ControlsBgClick() : ''
        };
        for (var i = 1; i < order.length; i++) {
            if (order[i]) {
                var y = order[i];
                if (y) {
                    if (o.system.mobile) {
                        if (v[y].action == "volume" || (v[y].action == "fullscreen" && v.nativemobile)) {
                            v[y].on = 0
                        }
                    }
                    if (v[y].on == 1) {
                        var action = v[y].action;
                        if (action == "line" || action == "volume") {
                            b[y] = new ControlLine(y, action);
                            b[y].Resize(b[y].s("w"))
                        } else {
                            b[y] = new Control(y)
                        }
                        butNames.push(y);
                        if (b[y].g("action") == "title") {
                            if (b[y].s("text") == '') {
                                if (b[y].s("var") != '') {
                                    if (!exist(v[b[y].s("var")])) {
                                        b[y].set("display", false)
                                    }
                                } else {
                                    b[y].set("display", false)
                                }
                            }
                        }
                        b[y].set("scale", b[y].s("scale"))
                    }
                }
            }
        }
        if (exist(v.settings)) {
            settings = new Settings("settings");
            v.settings.always == 1 ? settings.show() : settings.hide()
        }
        if (exist(v.playlist)) {
            playlist = new Settings("playlist");
            if (exist(o.playlist)) {
                playlist.updatePlaylist(o.playlist);
                if (v.playlist.openplaylistbefore == 0 || !exist(v.playlist.openplaylistbefore)) {
                    v.playlist.always == 0 ? playlist.hide() : ''
                } else {
                    playlist.show()
                }
            } else {
                playlist.hide(1)
            }
        }
        if (exist(v.control_share)) {
            if (v.control_share.on == 1) {
                o.share = new Share()
            }
        }
        PlaylistControls();
        Resize(true);
        ShowOrHide();
        firstly = false;

        function ControlX(but) {
            var x = 0;
            var to_right = false;
            if (but) {
                if (but.g("action") == 'line') {
                    x = butPosition.left + but.s("marginleft");
                    if (butPosition.rightbs != null) {} else {
                        butPosition.rightbs = []
                    }
                } else {
                    if (butPosition.rightbs != null) {
                        var but_space = but.g("width") + but.s("marginright") + but.s("marginleft");
                        if (HideProof(but)) {
                            but_space = 0
                        }
                        if (but.s("hidden") == 1 && !but.g("show")) {
                            but_space = 0
                        }
                        if (but.s("vertical") > 0) {
                            but_space = 0
                        }
                        x = bg.g("w") - v.toolbar.leftandrightpadding * 1 - but_space + but.g("width") / 2 + but.s("marginleft");
                        var i = 0;
                        butPosition.right -= but_space;
                        for (i = 0; i < butPosition.rightbs.length; i++) {
                            var but2 = b[butPosition.rightbs[i]];
                            if (but2.s("vertical") > 0) {
                                css(but2.c(), {
                                    "left": (but2.g("x0") - but_space)
                                })
                            } else {
                                css(but2.c(), {
                                    "left": (but2.g("x") - but_space)
                                })
                            }
                            but2.set("x0", but2.g("x"))
                        }
                        butPosition.rightbs.push(but.g("key"));
                        but.set('rightside', 1)
                    } else {
                        if (but.s("hidden") == 1 && !but.g("show")) {
                            if (but.g("action") == "volume") {
                                if (but.s("hide") == 1 && but.s("hideoutmute") == 1 && stretch_with_volume) {
                                    stretch_width += but.g("width") + but.s("marginleft") + but.s("marginright");
                                    stretch_with_volume = false
                                }
                            }
                        } else {
                            if (but.s("vertical") > 0) {
                                x = butPosition.left + but.s("marginleft") + but.s("marginright")
                            } else {
                                var stop = false;
                                if (but.g("action") == "volume") {
                                    if (but.s("hide") == 1 && but.s("hideoutmute") == 1) {
                                        if (!o.hidden_volume_over_process && !o.hidden_volume_over) {
                                            stop = true;
                                            stretch_with_volume = false
                                        } else {
                                            if (!stretch_with_volume) {
                                                stretch_width -= but.g("width") + but.s("marginleft") + but.s("marginright");
                                                stretch_with_volume = true
                                            }
                                        }
                                    }
                                }
                                if (HideProof(but)) {
                                    stop = true
                                }
                                if (!stop) {
                                    butPosition.left += but.g("width") / 2 + but.s("marginleft");
                                    x = butPosition.left;
                                    butPosition.left += but.g("width") / 2 + but.s("marginright")
                                } else {
                                    x = butPosition.left
                                }
                            }
                        }
                    }
                }
            }
            return x
        }

        function ControlCoordinate(but) {
            var width = o.fullscreen && v.toolbar.stretchonfullscreen == 0 ? o.normal_w : o.screen_w;
            var height = o.screen_h;
            var but_x = 0;
            if (but != bg) {
                but_x = width / 2 + but.s("marginleft") - but.s("marginright")
            }
            var but_y = height / 2;
            var but_w = but.g("width");
            var but_h = but.g("height");
            var position = but.s("position");
            if (position.indexOf("center") > -1) {
                but_x = o.screen_w / 2 + but.s("marginleft") - but.s("marginright")
            }
            if (position.indexOf("top") == 0) {
                but_y = but_h / 2 + (but.s("marginproctop") * o.screen_h / 100)
            }
            if (position.indexOf("bottom") == 0) {
                but_y = o.screen_h - (but == bg ? but_h : but_h / 2) - (but.s("marginprocbottom") * o.screen_h / 100)
            }
            if (position.indexOf("right") > -1) {
                but_x = o.screen_w - but_w / 2 + but.s("marginleft") - but.s("marginright") - (but.s("marginprocright") * o.screen_w / 100)
            }
            if (position.indexOf("left") > -1) {
                but_x = but_w / 2 + but.s("marginleft") - but.s("marginright") + (but.s("marginprocleft") * o.screen_w / 100)
            }
            if (position == "timeline") {
                but_x = -o.timeline_w / 2 + (but.s("marginprocleft") * o.timeline_w / 100) + but.s("marginleft") - but.s("marginright");
                but_y = -o.timeline_h / 2 - (but.s("marginprocbottom") * o.timeline_h / 100) + (but.s("marginproctop") * o.timeline_h / 100)
            }
            if (position.indexOf("controls") > -1) {
                var cx = ControlX(but);
                but_x = (bg ? (bg.c() ? int(bg.c().offsetLeft) : 0) : 0) + cx;
                if (position == "controls-right") {
                    but_x += stretch_width
                }
                if (v.toolbar.position == "top") {
                    but_y = v.toolbar.h / 2
                } else {
                    but_y = height - v.toolbar.h / 2
                }
            }
            return {
                x: but_x,
                y: but_y + but.s("margintop") - but.s("marginbottom")
            }
        }

        function Resize(all) {
            var w = o.fullscreen && v.toolbar.stretchonfullscreen == 0 ? o.normal_w : o.screen_w;
            var h = o.screen_h;
            css(bg.c(), {
                'top': (v.toolbar.position == "top" ? 0 : o.screen_h - v.toolbar.h) - v.toolbar_margintop
            });
            bg.set("y0", (o.screen_h - v.toolbar.h - v.toolbar_margintop));
            if (v.toolbar.stretchonfullscreen == 0 && bg) {
                css(bg.c(), {
                    'width': w,
                    'left': 0,
                    'margin-left': 0
                });
                bg.set("w", w);
                if (o.fullscreen) {
                    css(bg.c(), {
                        'left': '50%',
                        'margin-left': -w / 2
                    })
                }
            }
            butPosition = {
                "left": v.toolbar.leftandrightpadding * 1,
                "right": (bg.g("w") - v.toolbar.leftandrightpadding * 1)
            };
            var bg_hide = false;
            if (!bg.g("show")) {
                bg.set("display", true);
                bg_hide = true
            }
            var key;
            for (var i = 0; i < butNames.length; i++) {
                key = butNames[i];
                if (b[key]) {
                    var cc = ControlCoordinate(b[key]);
                    if (cc) {
                        b[key].set("x0", cc.x);
                        b[key].set("y0", cc.y);
                        if (b[key].s("hidden") == 1 && !b[key].g("show") && !all) {
                            HidePositionControl(b[key])
                        } else {
                            css(b[key].c(), {
                                "position": "absolute",
                                "left": b[key].g("x0"),
                                "top": b[key].g("y0")
                            })
                        }
                    }
                }
            }
            if (bg_hide) {
                bg.set("display", false)
            }
            stretch_width = 0;
            for (key in b) {
                if (b.hasOwnProperty(key)) {
                    if (b[key].s("position") == "controls-right" && b[key].g("action") != "line" && stretch_width > -1) {
                        stretch_width = butPosition.right - butPosition.left
                    }
                    if (b[key].g("action") == "line" && bg) {
                        var line_width;
                        if (b[key].s("customwidth") == 1) {
                            line_width = b[key].s("w")
                        } else {
                            if (b[key].s("position").indexOf("controls") > -1) {
                                line_width = butPosition.right - butPosition.left - b[key].s("marginleft") - b[key].s("marginright");
                                css(b[key].c(), {
                                    "left": (int(bg.c().offsetLeft) + butPosition.left + b[key].s("marginleft") + line_width / 2)
                                });
                                stretch_width = -1
                            } else {
                                line_width = bg.g("w") - b[key].s("marginleft") - b[key].s("marginright");
                                css(b[key].c(), {
                                    "left": (int(bg.c().offsetLeft) + b[key].s("marginleft") + line_width / 2)
                                })
                            }
                        }
                        b[key].set("x0", b[key].g("x"));
                        b[key].Resize(line_width)
                    }
                }
            }
            if (settings) {
                ResizeSettings(settings)
            }
            if (exist(v.playlist)) {
                ResizeSettings(playlist)
            }
            resizeonwidth || o.fullscreen || stretch_width_last != stretch_width ? ShowOrHide() : ''
        }

        function HidePositionControl(b) {
            var left = 0;
            var top = 0;
            if (b.s("position").indexOf("right") > -1 && b.s("position").indexOf("controls") == -1) {
                left = o.screen_w + b.g("width") + 10
            }
            if (b.s("position").indexOf("left") > -1) {
                left = -b.g("width") - 10
            }
            if (b.s("position").indexOf("top") > -1) {
                top = -b.g("height") * 2
            }
            if (b.s("position").indexOf("bottom") > -1 || b.s("position").indexOf("controls") > -1) {
                top = o.screen_h + b.g("height") + b.g("width") + 10
            }
            if (left > 0) {
                css(b.c(), {
                    "left": left
                })
            }
            if (top > 0) {
                css(b.c(), {
                    "top": top
                })
            }
        }

        function ResizeSettings(x) {
            var top = -2000;
            x.resizePlaylist();
            var y = o.screen_h - v.toolbar.h * (x.s("position").indexOf("top") > -1 ? 1 : 2);
            var ymax = y - (o.fullscreen && !o.system.mobile ? (100 + x.s("hmaxk") * 1) : x.s("hmaxk"));
            ymax < 100 ? ymax = 100 : '';
            css(x.c(), {
                'max-height': ymax
            });
            x.co() ? css(x.co(), {
                'max-height': ymax
            }) : '';
            if (x.g("show")) {
                top = o.screen_h / 2 - x.g("height") / 2 + x.s("margintop") - x.s("marginbottom");
                if (x.s("position").indexOf("top") > -1) {
                    top = x.s("margintop") - x.s("marginbottom")
                }
                if (x.s("position").indexOf("bottom") > -1) {
                    top = o.screen_h - v.toolbar.h - x.g("height") + x.s("margintop") - x.s("marginbottom")
                }
                top < 0 ? top = 0 : ''
            }
            if (x.s("position").indexOf("right") > -1) {
                css(x.c(), {
                    "position": "absolute",
                    "right": x.s("marginright") - x.s("scrollwidth"),
                    "top": top
                })
            } else if (x.s("position").indexOf("left") > -1) {
                css(x.c(), {
                    "position": "absolute",
                    "left": x.s("marginleft"),
                    "top": top
                })
            } else {
                if (x.g("key") == "playlist" && x.s("floatleft") == 1) {
                    css(x.c(), {
                        "position": "absolute",
                        "left": o.screen_w / 2 - x.g("width") / 2 + x.s("marginleft") / 2 - x.s("marginright") / 2,
                        "top": top
                    })
                } else {
                    css(x.c(), {
                        "position": "absolute",
                        "left": o.screen_w / 2 - x.g("width") / 2 + x.s("marginleft") - x.s("marginright"),
                        "top": top
                    })
                }
            }
            x.Arrows()
        };
        this.ControlClick = function(key) {
            var but = b[key];
            var action = but.g("action");
            if (action) {
                var d = new Date();
                o.clicktime = d.getTime();
                if (action && action != "") {
                    Action(but)
                }
            }
        };
        this.toggleControl = function(x, y) {
            for (var key in b) {
                if (b.hasOwnProperty(key)) {
                    if (b[key].g("action") == x) {
                        b[key].set(y ? "show2" : "hide2")
                    }
                }
            }
        };
        this.butById = function(x) {
            var y;
            for (var key in b) {
                if (b.hasOwnProperty(key)) {
                    if (b[key].s("dom") == x) {
                        y = b[key]
                    }
                }
            }
            return y
        };

        function Action(but) {
            o.acted = true;
            var a = but.g("action");
            if (a == "play") {
                o.actions.Play()
            } else {
                if (a == "pause") {
                    o.actions.Pause()
                }
                if (a == "stop") {
                    v.preload = 0;
                    v.autoplay = 0;
                    o.media.Recover();
                    o.actions.Stop()
                }
            }
            if (a == "back") {
                o.actions.Seek(0, false)
            }
            if (a == "fullscreen") {
                !o.casting ? o.actions.Fullscreen() : ''
            } else {
                if (a == "normalscreen") {
                    o.actions.Normalscreen()
                }
            }
            if (a == "line") {
                if (v.seekwindow > 0) {
                    if (v.seekwindow / (o.media.duration()) <= 1 - but.g("click")) {
                        return
                    }
                }
                o.actions.Seek(but.g("click") * o.media.duration(), true);
                if (o.continue) {
                    o.continue.write(but.g("click") * o.media.duration(), o.media.duration());
                    o.seekto > 0 ? o.seekto = undefined : ''
                }
            }
            if (a == "volume") {
                var x = but.g("click");
                x < 0.02 ? x = 0 : '';
                x > 1 ? x = 1 : '';
                if (o.storage && v.volumestore == 1) {
                    localStorage.setItem("pljsvolume", x);
                    if (but.g("click") > 0 || o.system.iphone || v.mutestore == 0) {
                        localStorage.removeItem("pljsmute")
                    } else {
                        localStorage.setItem("pljsmute", 1)
                    }
                }
                o.actions.Volume(x)
            }
            if (a == "mute") {
                if (o.storage && !o.system.iphone && v.mutestore == 1) {
                    localStorage.setItem("pljsmute", 1)
                }
                o.actions.Mute()
            } else {
                if (a == "unmute") {
                    if (o.storage) {
                        localStorage.removeItem("pljsmute")
                    }
                    o.actions.Unmute()
                }
            }
            if (a.indexOf("time") == 0) {
                but.isOn() ? but.Off() : but.On()
            }
            if (a == "rotate") {
                o.media.Rotate()
            }
            if (a == "scale+") {
                o.media.Scale(0.1)
            }
            if (a == "scale-") {
                o.media.Scale(-0.1)
            }
            if (a == "scale") {
                o.media.Scale(0)
            }
            if (a == "live") {
                api("restart");
                but.set("iconopacity", 1);
                but.set("saturate", 1)
            }
            if (a == "share") {
                js("share");
                ShowShare()
            }
            if (a == "settings") {
                if (settings) {
                    if (!settings.g("show")) {
                        settings.show()
                    } else {
                        settings.hide()
                    }
                }
            }
            if (a == "playlist") {
                if (exist(v.playlist)) {
                    if (playlist.g("show")) {
                        playlist.hide()
                    } else {
                        setTimeout(function() {
                            playlist.show()
                        }, 100)
                    }
                }
            }
            if (a == "next") {
                o.controls.PlaylistNext()
            }
            if (a == "prev") {
                o.controls.PlaylistPrev()
            }
            if (a == "custom") {
                if (but.s("link") == 1 && but.s("linkurl") != "") {
                    var x = but.s("linkurl");
                    if (x.indexOf('{time}') > -1) {
                        x = x.replace('{time}', (exist(o.continue) ? o.continue.flag().t : o.media.time()))
                    }
                    if (x.indexOf('{file}') > -1) {
                        x = x.replace('{file}', o.media.currentFile())
                    }
                    if (x.indexOf('{title}') > -1) {
                        x = x.replace('{title}', v.title.replace(/,/ig, " "))
                    }
                    if (x == "airplay") {
                        o.media.Airplay()
                    }
                    if (x == "seektome") {
                        o.actions.Seek(but.s("marginprocleft") * o.media.duration() / 100);
                        !o.play ? o.actions.Play() : ''
                    }
                    but.s("linkpause") == 1 ? o.actions.Pause() : '';
                    var y = x.split(",");
                    if (x.indexOf("api:") == 0) {
                        var z = x.substr(4).split(";");
                        for (var i = 0; i < z.length; i++) {
                            y = z[i].split(",");
                            if (y.length > 1) {
                                api(y[0], y[1], but)
                            } else {
                                if (y[0] == "screenshot" && v.ssfly == 1) {
                                    var ss = api(y[0]);
                                    if (ss) {
                                        if (ss.indexOf("data") > -1) {
                                            var img = document.createElement('img');
                                            img.setAttribute('src', ss);
                                            css(img, {
                                                position: "fixed",
                                                right: (exist(v.ssflyp) ? v.ssflyp : 20),
                                                bottom: (exist(v.ssflyp) ? v.ssflyp : 20),
                                                width: 0,
                                                transition: "width 0.5s cubic-bezier(.75,-0.5,0,1.75)"
                                            });
                                            img.style.zIndex = 1001;
                                            document.body.appendChild(img);
                                            setTimeout(function() {
                                                css(img, {
                                                    width: (exist(v.ssflyw) ? v.ssflyw : 200)
                                                })
                                            }, 1);
                                            img.onclick = function() {
                                                this.parentNode.removeChild(this)
                                            }
                                        }
                                    } else {
                                        log(y[0] + " error")
                                    }
                                } else {
                                    api(y[0])
                                }
                            }
                        }
                    } else {
                        if (x.indexOf("js:") == 0) {
                            eval(y[0].substr(3) + '(' + (exist(y[1]) ? '"' + y[1] + '"' : '') + (exist(y[2]) ? ',"' + y[2] + '"' : '') + ')')
                        }
                        if (x.indexOf("http") == 0 || x.indexOf("/") == 0 || x.indexOf("?") == 0 || x.indexOf("url:") == 0) {
                            x.indexOf("url:") == 0 ? x = x.substr(4) : '';
                            window.open(x, but.s("linktarget"))
                        }
                        if (x.indexOf("download") == 0) {
                            o.actions.Download()
                        }
                        if (x == "api:pipwebkit") {
                            o.media.PipWebkit()
                        }
                    }
                }
            }
            for (var i = 0; i < 10; i++) {
                if (but.s("linkurl") == "settings#" + i) {
                    if (settings) {
                        if (settings.g("show") && settings.g("open") == i) {
                            settings.hide()
                        } else {
                            settings.show();
                            settings.open(i)
                        }
                    }
                }
            }
        };
        this.title = function(t) {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "title") {
                        if (b[x].s("var") == t) {
                            if (v[t] != '' || b[x].s("icon") != '') {
                                b[x].set("display", true)
                            } else {
                                b[x].set("display", false)
                            }
                            b[x].UpdateText(v[t])
                        }
                    }
                }
            }
            TitlePl()
        };
        this.titlepl = function() {
            TitlePl()
        };
        this.resizetext = function() {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "custom") {
                        if (b[x].s("type") == "text") {
                            b[x].ResizeText()
                        }
                    }
                }
            }
        };

        function TitlePl() {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "custom") {
                        if (b[x].s("type") == "text") {
                            b[x].RenewFromTitle(true)
                        }
                    }
                }
            }
        }

        function ShowShare() {
            if (exist(o.share)) {
                o.share.Show()
            }
        }
        this.showShare = function() {
            ShowShare()
        };
        this.updateTitle = function() {
            if (v.title != '') {
                for (var x in b) {
                    if (b.hasOwnProperty(x)) {
                        if (b[x].g("action") == "title") {
                            var y = false;
                            if (!b[x].g("show")) {
                                y = true;
                                b[x].set("display", true)
                            }
                            b[x].UpdateText(v.title);
                            if (y) {
                                b[x].set("display", false)
                            }
                        }
                    }
                }
            }
        };
        this.customText = function(y, z) {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "custom" && b[x].s("type") == "text") {
                        if (b[x].s("dom") == y) {
                            if (!b[x].g("show")) {
                                b[x].set("display", true)
                            }
                            b[x].UpdateText(z)
                        }
                    }
                }
            }
        };
        this.resize = function() {
            Resize()
        };
        this.resize2 = function() {
            Resize(true)
        };
        this.resizeSettings = function() {
            ResizeSettings(settings)
        };
        this.resizePlaylist = function() {
            ResizeSettings(playlist)
        };
        this.Play = function() {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "play") {
                        b[x].On()
                    }
                }
            }
            if (this.PlaylistVisible() && v.playlist.autohide == 1) {
                this.Playlist()
            }
            o.play = true;
            ShowOrHide()
        };
        this.Pause = function() {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "pause" || b[x].g("action") == "stop") {
                        b[x].Off()
                    }
                }
            }
            if (playlist) {
                if (v.playlist.openplaylistpause == 1 && !playlist.empty()) {
                    playlist.show()
                }
            }
            o.play = false;
            ShowOrHide();
            if (v.toolbar.hide == 1 && v.toolbar.hideonpause == 1) {
                HideForce(true)
            }
        };
        this.Mute = function() {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "mute") {
                        b[x].On()
                    }
                    this.Volume(0)
                }
            }
            ShowOrHide()
        };
        this.Unmute = function() {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "unmute") {
                        b[x].Off()
                    }
                }
            }
            if (v.volume < 0.1) {
                v.volume = 0.5;
                o.actions.Volume(v.volume)
            } else {
                this.Volume(v.volume)
            }
            ShowOrHide()
        };
        this.Volume = function(volume, y) {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "volume") {
                        b[x].UpdatePlay(volume, 1, (y == "no" ? y : true))
                    }
                    if (b[x].g("action") == "mute") {
                        b[x].UpdateVolume(volume)
                    }
                }
            }
            ShowOrHide()
        };
        this.Fullscreen = function() {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "fullscreen") {
                        b[x].On();
                        b[x].set("scale", b[x].s("scale"))
                    }
                }
            }
            ShowOrHide();
            resizeonwidth ? setTimeout(ShowOrHide, 500) : '';
            HideInterval()
        };
        this.Normalscreen = function() {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "normalscreen") {
                        b[x].Off()
                    }
                }
            }
            Resize();
            clearInterval(o.toolbarInterval);
            ShowOrHide()
        };
        this.onEnded = function() {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "play") {
                        b[x].ReplayIcon()
                    }
                }
            }
        };
        this.Review = function() {
            ShowOrHide()
        };

        function ShowOrHide() {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") != "buffer") {
                        ShowOrHideProcessor(b[x])
                    }
                }
            }
            ShowOrHideProcessor(bg);
            if (stretch_width_last != stretch_width) {
                stretch_width_last = stretch_width;
                Resize()
            }
            if (v.toolbar.hide == 1 && v.toolbar.hidedown == 1) {
                ToolbarDown(!o.starttimeout && !o.mouseHere && !o.fullscreen && o.play && v.toolbar.hidejustfull != 1 && !o.casting)
            }
        };

        function ShowForce() {
            var show = toolbarHidden && v.toolbar.hidewithoutmoving == 1;
            if (!o.play && v.toolbar.hide == 1 && v.toolbar.hideonpause == 1) {
                show = false
            }
            if (show) {
                for (var x in b) {
                    if (b.hasOwnProperty(x)) {
                        if (b[x].g("action") != "buffer") {
                            ShowOrHideProcessor(b[x], false)
                        }
                    }
                }
                css(o.frame, {
                    "cursor": "default"
                });
                o.fcdef = true;
                ShowOrHideProcessor(bg, false);
                if (bg.g("show")) {
                    ToolbarShow()
                }
                ToolbarDown(false)
            }
        }

        function HideForce() {
            var hide = o.play && v.toolbar.hidewithoutmoving == 1 && !o.mouseDown && !o.controlover;
            if (!o.play && v.toolbar.hide == 1 && v.toolbar.hideonpause == 1) {
                hide = true
            }
            if (hide) {
                for (var x in b) {
                    if (b.hasOwnProperty(x)) {
                        if (b[x].g("action") != "buffer") {
                            ShowOrHideProcessor(b[x], true)
                        }
                    }
                }
                ShowOrHideProcessor(bg, true);
                if (!bg.g("show")) {
                    toolbarHidden = true;
                    o.media.ToolbarHide();
                    if (o.play) {
                        css(o.frame, {
                            "cursor": "none"
                        });
                        o.fcdef = false
                    }
                }
                ToolbarDown(true)
            }
        }

        function HideInterval() {
            if (v.toolbar.hidewithoutmoving == 1) {
                if (v.toolbar.hidejustfull == 1 && !o.fullscreen && !o.fullscreen_process) {} else {
                    clearInterval(o.toolbarInterval);
                    o.toolbarInterval = setInterval(HideForce, ((v.toolbar.hideleavetimeout > 0 ? v.toolbar.hideleavetimeout : v.toolbar.hidetimeout) * 1000))
                }
            }
        }

        function ShowOrHideProcessor(but, forcehide) {
            var hide = false;
            var show = false;
            var toolbar_hide = false;
            if (v.toolbar.hide == 1) {
                if (!o.starttimeout && !o.mouseHere && !o.fullscreen && o.play && v.toolbar.hidejustfull != 1 && !o.casting) {
                    hide = true;
                    show = false;
                    toolbar_hide = true
                } else {
                    hide = false;
                    show = true
                }
                if (exist(forcehide) && !o.casting) {
                    hide = forcehide;
                    show = !hide
                }
                if (v.toolbar.hide == 1 && v.toolbar.hidedown == 1 && (but.s("position").indexOf("controls") == 0 || but.s("action") == "line")) {
                    hide = false;
                    show = true
                }
                if (v.toolbar.hideonpause == 1 && !o.play) {
                    hide = true;
                    show = false;
                    toolbar_hide = false
                }
            } else {
                if (but.s("hide") != 1) {
                    show = true
                }
            }
            if (show && !o.fcdef) {
                css(o.frame, {
                    "cursor": "default"
                });
                o.fcdef = true
            }
            if (but.s("action") == "custom" && but.s("position").indexOf("controls") == -1) {
                hide = false;
                show = true
            }
            if (o.casting) {
                if (but.s("action") == "line") {
                    if (o.media.duration() == -1) {
                        hide = true;
                        show = false
                    }
                }
            }
            var re_y = false;
            var hp = HideProof(but);
            if (but.s("hide") == 1) {
                if (but.s("hideonleaveandplay") == 1) {
                    toolbar_hide || forcehide ? hp = true : ''
                }
                if (but.s("hideonwidth") == 1 || but.s("hideoverwidth") == 1) {
                    resizeonwidth = true
                }
            }
            if (hp) {
                hide = true;
                show = false
            } else {
                !hide ? show = true : ''
            }
            if (but.s("action") == "volume") {
                if (but.s("hide") == 1 && but.s("hideoutmute") == 1) {
                    hide = true;
                    show = false;
                    if (!toolbar_hide && (o.hidden_volume_over || o.hidden_volume_over_process) && !forcehide && but.s("hiddenwidth") != 1) {
                        hide = false;
                        show = true
                    } else {
                        re_y = true
                    }
                }
            }
            if (o.nativecontrols || (!o.start && v.toolbar.hide == 1 && v.toolbar.hideuntilstarted == 1) || (!o.metadata && v.toolbar.hide == 1 && v.toolbar.hideuntilmeta == 1)) {
                if (but.s("position").indexOf("controls") > -1 || but.s("position").indexOf("bottom") > -1) {
                    hide = true;
                    show = false
                }
                if (v.toolbar.hidejustfull == 1 && !o.fullscreen) {
                    hide = false;
                    show = true
                }
            }
            if (settings) {
                if (settings.g("show") && v.settings.always != 1) {
                    toolbar_hide = false;
                    forcehide = false
                }
            }
            if (but.g("action") == "share") {
                if (exist(o.share)) {
                    if (o.share.empty()) {
                        hide = true;
                        show = false;
                        but.set("animation", "none")
                    }
                }
            }
            if (but.g("action") == "playlist" || but.g("action") == "next" || but.g("action") == "prev" || but.s("hidewithoutplaylist") == 1) {
                if (playlist.empty() && but.s("hidewithoutplaylist") != 0) {
                    hide = true;
                    show = false;
                    but.set("animation", "none")
                }
            }
            if (re_y) {
                var cc = ControlCoordinate(but);
                if (cc) {
                    cc.y > 0 ? but.set("y0", cc.y) : '';
                    css(but.c(), {
                        "position": "absolute",
                        "top": but.g("y0")
                    })
                }
            }
            if (hide) {
                HideControl(but, (firstly ? true : false))
            }
            if (show) {
                ShowControl(but)
            }
            if (but == bg) {
                if (!hide && show) {
                    ToolbarShow();
                    show2(bg2);
                    toolbarHidden = false
                }
                if (hide && !show) {
                    o.media.ToolbarHide();
                    hide2(bg2);
                    toolbarHidden = true
                }
                if (playlist) {
                    if (v.playlist.always == 1 && !playlist.empty()) {
                        if (show || o.nativecontrols) {
                            if (v.playlist.alwaysnotfullscreen == 1 && o.fullscreen) {} else {
                                if (!playlist.g("show")) {
                                    if (v.playlist.alwaysjustpause == 1) {
                                        !o.play ? playlist.show() : ''
                                    } else {
                                        playlist.show()
                                    }
                                }
                            }
                        } else {
                            if (hide && playlist.g("show")) {
                                playlist.hide()
                            }
                        }
                    }
                }
            }
        };

        function HideProof(but) {
            var x = false;
            if (but.s("hide") == 1) {
                if (but.s("hideonplay") == 1) {
                    o.play ? x = true : ''
                }
                if (but.s("hideonpause") == 1) {
                    !o.play ? x = true : ''
                }
                if (but.s("hideondesktop") == 1) {
                    o.system.desktop ? x = true : ''
                }
                if (but.s("hideonmobile") == 1) {
                    o.system.mobile ? x = true : ''
                }
                if (but.s("hideoverwidth") == 1) {
                    if (o.screen_w > but.s("hideoverwidthlimit")) {
                        but.set("hiddenwidth", 1);
                        x = true
                    } else {
                        but.set("hiddenwidth", 0)
                    }
                }
                if (but.s("hideonwidth") == 1) {
                    if (o.screen_w <= but.s("hideonwidthlimit")) {
                        but.set("hiddenwidth", 1);
                        x = true
                    } else {
                        but.set("hiddenwidth", 0)
                    }
                }
                if (but.s("hideafterstart") == 1) {
                    o.start ? x = true : ''
                }
                if (but.s("hide0timestore") == 1) {
                    if (o.start || !o.continue || o.media.isLive()) {
                        x = true
                    }
                    if (o.continue) {
                        if (o.continue.flag().t == 0) {
                            x = true
                        }
                    }
                }
                if (but.s("hideuntilstarted") == 1) {
                    !o.start ? x = true : ''
                }
                if (but.s("hideuntilended") == 1) {
                    !o.media.ended() ? x = true : ''
                }
                if (but.s("hideonvod") == 1) {
                    !o.media.isLive() ? x = true : ''
                }
                if (but.s("hideonleave") == 1) {
                    !o.mouseHere ? x = true : ''
                }
                if (but.s("hidenormscreen") == 1) {
                    !o.fullscreen ? x = true : ''
                }
                if (but.s("hideonfullscreen") == 1) {
                    o.fullscreen ? x = true : ''
                }
                if (but.s("hideonunmute") == 1) {
                    !o.muted ? x = true : ''
                }
                if (but.s("hideonlive") == 1) {
                    o.media.isLive() && o.media.currentFile().indexOf("?DVR") == -1 ? x = true : ''
                }
                if (but.s("hidewithposter") == 1) {
                    isVisible(o.poster) ? x = true : ''
                }
                if (but.s("hideuntilmeta") == 1) {
                    !o.metadata ? x = true : ''
                }
                if (but.s("hidemini") == 1) {
                    o.mini ? x = true : ''
                }
                if (but.s("hidenomini") == 1) {
                    !o.mini ? x = true : ''
                }
                if (but.s("hideafterclick") == 1) {
                    if (but.g("clicked")) {
                        x = true
                    }
                }
                if (but.s("hidenoab") == 1) {
                    !o.ab ? x = true : ''
                }
                if (but.s("hideab") == 1) {
                    o.ab ? x = true : ''
                }
                if (but.s("hideonyoutube") == 1) {
                    if (v.preload == 1 && v.screenclick == 1) {
                        if (o.file_type == "youtube" && !exist(v.poster) && v.youtubeposter == 0) {
                            if (!o.start || o.media.status() == "ended") {
                                if (v.poster == '') {} else {
                                    x = true
                                }
                            }
                        }
                    }
                }
            }
            if (but.g("action") == "custom") {
                if (but.s("linkurl")) {
                    if (but.s("linkurl") == "api:airplay" || but.s("linkurl") == "airplay") {
                        if (!o.airplay && !o.airplayed) {
                            x = true
                        }
                    }
                    if (but.s("linkurl") == "api:pipwebkit") {
                        if (!o.pipwebkit || (!o.start && v.preload == 0)) {
                            x = true
                        }
                    }
                    if (but.s("linkurl") == "api:unfixing") {
                        if (!o.mini) {
                            x = true
                        }
                    }
                    if (but.s("linkurl").indexOf("captions") > -1) {
                        if (!o.captions) {
                            x = true
                        }
                    }
                }
            }
            if (but.g("action") == "playlist" || but.g("action") == "next" || but.g("action") == "prev") {
                if (playlist.empty()) {
                    x = true
                }
            }
            if (but.g("action") == "settings") {
                if (settings.empty()) {
                    x = true;
                    but.set("animation", "none")
                }
            }
            if (but.g("type") == "text") {
                if (but.g("length") == 0) {
                    x = true
                }
            }
            if (but.g("settings#")) {
                if (!but.g("set#visible")) {
                    x = true
                }
            }
            if (but.s("chromecast") == 1) {
                var cb = document.getElementById("pjs_cast_button_" + v.id);
                if ((o.media.duration() == 0 && o.media.time() == 0) || !o.tagvideo || !isVisible(cb) || !o.cast_available) {
                    x = true
                }
            }
            if (but.g("action") == "duration") {
                if (o.media.isLive()) {
                    x = true
                }
            }
            if (but.g("key") == "control_start" && o.system.mobile) {
                if (o.nativecontrols && o.system.android) {
                    x = true
                }
            }
            if (but.s("customjscontrol") == 1) {
                x = true
            }
            return x
        }

        function HideControl(but, quick) {
            if (but.g("show")) {
                if (o.fullscreen_process || but.s("animation") == "none" || quick) {
                    but.set("display", false)
                } else {
                    HideAnimate(but)
                }
                but.set("show", false)
            }
        };

        function ShowControl(but) {
            if (!but.g("show")) {
                if (but.s("animation") == "none" || o.fullscreen_process) {
                    but.set("display", true);
                    if (o.fullscreen_process) {
                        but.s("animation") == "alpha" ? but.set("opacity", 1) : ''
                    }
                    if (but.g("action") == "volume") {
                        if (o.hidden_volume) {
                            HidePositionControl(but)
                        }
                    }
                } else {
                    ShowAnimate(but)
                }
                if (but.s("action") == "volume") {
                    o.controls.Volume(o.muted ? 0 : v.volume)
                }
                if (but.s("action") == "line") {
                    o.actions.Loading()
                }
                but.set("show", true)
            }
        };

        function HideAnimate(but) {
            killMotion(but.g("key"));
            var m_type = "alpha|";
            var m_to = "0|";
            var hide = 1;
            var a = but.s("animation");
            var p = but.s("position");
            if (a == "scale") {
                m_type += "scale|";
                m_to += "0|"
            }
            if (a == "position") {
                if (p.indexOf("right") > -1 && p.indexOf("controls") == -1) {
                    m_type += "x|";
                    m_to += int(o.screen_w + but.g("width")) + "|"
                }
                if (p.indexOf("left") > -1) {
                    m_type += "x|";
                    m_to += int(-but.g("width")) + "|"
                }
                if (p.indexOf("top") > -1) {
                    m_type += "alpha|y|";
                    m_to += "0|" + (-but.g("height")) + "|"
                }
                if (p.indexOf("bottom") > -1 || p.indexOf("controls") > -1 || p == "timeline") {
                    m_type += "y|";
                    if (but.g("action") == "line" || but.g("action") == "volume") {
                        m_to += int(o.screen_h + but.s("h") + (but.s("h") < 20 ? 20 - but.s("h") : 0)) + "|"
                    } else {
                        m_to += int(o.screen_h + but.g("height")) + "|"
                    }
                }
                if (p == "center") {
                    m_type += "scale|";
                    m_to += "0|"
                }
            }
            var m = new Motion({
                "mc": but,
                "me": but.g("key"),
                "type": m_type.substr(0, m_type.length - 1),
                "to": m_to.substr(0, m_to.length - 1),
                "hide": hide
            })
        };

        function ShowAnimate(but) {
            killMotion(but.g("key"));
            var m_type = "";
            var m_to = "";
            var a = but.s("animation");
            var p = but.s("position");
            if (but.g("opacity") != 1) {
                m_type = "alpha|";
                m_to = (but.g("key") == 'bg' ? v.toolbar.a : "1") + "|"
            }
            if (a == "scale") {
                if (but.g("scaleX") != but.s("scale")) {
                    but.set("scale", 0);
                    m_type += "scale|";
                    m_to += but.s("scale") + "|"
                }
            }
            if (a == "position") {
                if (p == "center") {
                    if (but.g("scaleX") != but.s("scale")) {
                        m_type += "scale|";
                        m_to += but.s("scale") + "|"
                    }
                } else {
                    if (p.indexOf("controls") > -1) {
                        if (but.g("y") != but.g("y0")) {
                            m_type += "y|";
                            m_to += but.g("y0") + "|"
                        }
                    } else {
                        m_type += "x|y|";
                        m_to += but.g("x0") + "|" + but.g("y0") + "|"
                    }
                }
            }
            if (m_type != "" && m_to != "") {
                var m = new Motion({
                    mc: but,
                    me: but.g("key"),
                    type: m_type.substr(0, m_type.length - 1),
                    to: m_to.substr(0, m_to.length - 1),
                    show: 1
                })
            } else {
                but.set("display", true)
            }
        };
        this.Mouse = function(key, type, quick) {
            var resize = false;
            var stop = false;
            var but = b[key];
            var action = but.g("action");
            if (type == "over") {
                if (o.hidden_volume) {
                    if (action == "volume" || action == "mute" || action == "unmute") {
                        o.hidden_volume_over = true;
                        o.hidden_volume_over_process = true;
                        resize = true;
                        ShowOrHide()
                    }
                }
                if (v.settings.showovercontrol == 1 && (action == "settings" || but.s("linkurl").indexOf("setting") == 0)) {
                    clearTimeout(o.settingsovertimer);
                    !settings.g("show") ? settings.show() : ''
                }
            }
            if (type == "out") {
                if (o.hidden_volume) {
                    if (action == "volume" || action == "mute" || action == "unmute") {
                        o.hidden_volume_over = false;
                        o.hidden_volume_over_process = true;
                        setTimeout(function() {
                            if (!o.hidden_volume_over) {
                                o.hidden_volume_over_process = false;
                                for (var x in b) {
                                    if (b.hasOwnProperty(x)) {
                                        if (b[x].g("action") == "volume") {
                                            HideControl(b[x]);
                                            Resize()
                                        }
                                    }
                                }
                            }
                        }, 500)
                    }
                }
                if (v.settings.showovercontrol == 1 && (action == "settings" || but.s("linkurl").indexOf("setting") == 0)) {
                    clearTimeout(o.settingsovertimer);
                    o.settingsovertimer = setTimeout(function() {
                        if (!o.mouseDown) {
                            settings.g("show") ? settings.hide() : ''
                        }
                    }, 1000)
                }
            }
            if (resize) {
                setTimeout(Resize, 10)
            }
        };
        this.StageLeave = function() {
            if (o.volumewheel && !o.fullscreen) {
                o.actions.volumewheel(false);
                o.volumewheel = false
            }
            if (o.poster) {
                if (v.poster_aover > -1 && isVisible(o.poster)) {
                    css(o.poster, {
                        opacity: v.poster_a
                    })
                }
            }
            if (o.play && v.playonhover == 1) {
                o.actions.Pause()
            }
            if (v.toolbar.hideleavetimeout > 0) {
                clearTimeout(o.leavetimeout);
                o.leavetimeout = setTimeout(ShowOrHide, v.toolbar.hideleavetimeout * 1000)
            } else {
                ShowOrHide()
            }
        };
        this.StageOver = function() {
            if (o.poster) {
                if (v.poster_aover > -1 && isVisible(o.poster)) {
                    css(o.poster, {
                        opacity: v.poster_aover
                    })
                }
            }
            if (!o.play && v.playonhover == 1) {
                o.actions.Play()
            }
            ShowOrHide();
            ToolbarDown(false)
        };
        this.StageMove = function(stage_x, stage_y) {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "line" || b[x].g("action") == "volume") {
                        b[x].StageMove(stage_x, stage_y)
                    }
                }
            }
        };
        this.StageMove2 = function() {
            if (v.toolbar.hide == 1) {
                if (v.toolbar.hidejustfull == 1 && !o.fullscreen) {
                    return
                }
                if (!o.mouseHere && o.media.status() == "playing") {
                    o.mouseHere = true;
                    ShowOrHide()
                }
                if (v.toolbar.hidewithoutmoving == 1) {
                    ShowForce();
                    HideInterval()
                }
                ToolbarDown(false)
            }
        };
        this.StageMouseUp = function(stage_x, stage_y) {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "line" || b[x].g("action") == "volume") {
                        b[x].StageMouseUp(stage_x, stage_y)
                    }
                }
            }
        };
        this.Played = function(time, duration) {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "line") {
                        b[x].UpdatePlay(time, duration)
                    }
                    if (b[x].g("action") == "time") {
                        UpdateTime(b[x], time, duration)
                    }
                    if (b[x].s("rotateplaying") == 1) {
                        b[x].Rotate()
                    }
                }
            }
        };

        function ToolbarDown(x) {
            x ? SettingsClose() : '';
            if (v.toolbar.hide == 1 && v.toolbar.hidedown == 1) {
                if (!o.play && v.toolbar.hideonpause == 1) {
                    x = true
                }
                if (x && !o.toolbarisdown) {
                    css(o.toolbar, {
                        "top": bg.h()
                    })
                }
                if (!x && o.toolbarisdown) {
                    css(o.toolbar, {
                        "top": 0
                    })
                }
                o.toolbarisdown = x
            }
        }

        function ToolbarShow() {
            toolbarHidden = false;
            o.media.ToolbarShow();
            if (o.resizeonmouse) {
                o.resizeonmouse = false;
                Resize();
                setTimeout(Resize, 300)
            }
        }

        function UpdateTime(x, time, duration) {
            var y = Time(time);
            if (x.s("inversetime") == "1") {
                y = Time(duration - time)
            }
            if (x.s("showduration") == "1") {
                if (x.s("showboth") == "1") {
                    y = y + (duration > 0 ? ' ' + Lang(x.s("separator")) + ' ' + Time(duration) : '')
                } else {
                    time == 0 ? y = Time(duration) : ''
                }
            }
            x.UpdateText(y)
        }
        this.Loaded = function(time, duration) {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "line") {
                        b[x].UpdateLoad(time, duration)
                    }
                }
            }
        };
        this.Waiting = function() {
            if (!waiting) {
                js("buffering");
                for (var x in b) {
                    if (b.hasOwnProperty(x)) {
                        if (b[x].g("action") == "buffer") {
                            b[x].Buffer();
                            waiting = true
                        }
                    }
                }
            }
        };
        this.HideElement = function(y) {
            for (var x in b) {
                if (x == y) {
                    b[x].set("hide2")
                }
            }
        };
        this.StopWaiting = function(time, duration) {
            if (waiting) {
                js("buffered");
                for (var x in b) {
                    if (b.hasOwnProperty(x)) {
                        if (b[x].g("action") == "buffer") {
                            b[x].BufferStop();
                            waiting = false
                        }
                    }
                }
            }
        };
        this.volumescroll = function() {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].s("linkurl") == "volume scroll") {
                        b[x].set("show2");
                        b[x].UpdateText(Lang('volume') + ' ' + (o.muted ? 0 : Math.ceil(v.volume * 100)) + '%');
                        clearTimeout(o.volumescroll);
                        o.volumescroll = setTimeout(Volumescrolled, 1000)
                    }
                }
            }
        };

        function Volumescrolled() {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].s("linkurl") == "volume scroll") {
                        b[x].UpdateText('');
                        b[x].set("hide2");
                        clearTimeout(o.volumescroll)
                    }
                }
            }
        }
        this.Seek = function(time, duration) {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "line") {
                        duration > 0 ? b[x].set("click", time / duration) : '';
                        b[x].UpdatePlaySeek()
                    }
                    if (b[x].g("action") == "time") {
                        UpdateTime(b[x], time, duration)
                    }
                    if (b[x].g("action") == "live") {
                        b[x].set("iconopacity", 0.5);
                        b[x].set("saturate", 0)
                    }
                }
            }
        };
        this.Duration = function(time, duration) {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "duration") {
                        b[x].UpdateText(Time(duration))
                    }
                    if (b[x].g("action") == "line") {
                        b[x].UpdatePlay(time, duration);
                        b[x].PlacePoints(duration)
                    }
                    if (b[x].g("action") == "time") {
                        UpdateTime(b[x], time, duration)
                    }
                }
            }
        };
        this.Settings = function() {
            settings.g("show") ? settings.hide() : settings.show()
        };
        this.SettingsVisible = function() {
            if (settings) {
                return settings.g("show") ? true : false
            } else {
                return false
            }
        };
        this.SettingsScale = function() {
            if (settings) {
                settings.Scale()
            }
        };
        this.SettingsClose = function() {
            SettingsClose()
        };
        this.SettingsTimer = function(x) {
            if (settings) {
                settings.UpdateTimer(x)
            }
        };

        function SettingsClose() {
            if (settings) {
                settings.g("show") ? settings.hide() : ''
            }
        };
        this.Playlist = function() {
            if (playlist) {
                if (playlist.g("show")) {
                    playlist.hide(1)
                } else {
                    playlist.show()
                }
            }
        };
        this.PlaylistShow = function() {
            if (playlist) {
                setTimeout(function() {
                    playlist.show()
                }, 100)
            }
        };
        this.PlaylistVisible = function() {
            if (playlist) {
                return playlist.g("show") ? true : false
            } else {
                return false
            }
        };

        function PlaylistClose() {
            if (playlist) {
                playlist.g("show") ? playlist.hide(1) : ''
            }
        };
        this.PlaylistG = function(x) {
            return playlist ? playlist.g(x) : ''
        };
        this.UpdatePlaylist = function(x) {
            if (playlist) {
                playlist.updatePlaylist(x)
            }
        };
        this.PlaylistNext = function() {
            if (playlist) {
                playlist.PlaylistNext()
            }
        };
        this.PlaylistHere = function() {
            if (playlist) {
                playlist.PlaylistHere()
            }
        };
        this.PlaylistControls = function() {
            PlaylistControls()
        };

        function PlaylistControls() {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "next") {
                        css(b[x].c(), {
                            "opacity": (!playlist.PlaylistNextExist() ? 0.5 : 1)
                        })
                    }
                    if (b[x].g("action") == "prev") {
                        css(b[x].c(), {
                            "opacity": (!playlist.PlaylistPrevExist() ? 0.5 : 1)
                        })
                    }
                }
            }
        }
        this.PlaylistNextExist = function() {
            if (playlist) {
                return playlist.PlaylistNextExist()
            } else {
                return false
            }
        };
        this.PlaylistExist = function() {
            if (playlist) {
                return playlist.PlaylistExist()
            } else {
                return false
            }
        };
        this.PlaylistRewind = function() {
            if (playlist) {
                playlist.PlaylistRewind()
            }
        };
        this.PlaylistPrev = function() {
            if (playlist) {
                playlist.PlaylistPrev()
            }
        };
        this.PlaylistPlayId = function(x) {
            if (x && playlist) {
                playlist.playById(x)
            }
        };
        this.PlaylistOpenId = function(x) {
            if (x && playlist) {
                playlist.openById(x)
            }
        };
        this.PlaylistMove = function(x) {
            if (x && playlist) {
                css(playlist.co(), {
                    "maxHeight": "none"
                });
                document.getElementById(x).appendChild(playlist.co());
                hide2(playlist.c())
            }
        };
        this.ShowSettingsBut = function() {};
        this.QualityChanged = function(x) {
            if (settings) {
                settings.SetQuality();
                settings.g("show") ? setTimeout(function() {
                    settings.hide()
                }, 200) : ''
            }
        };
        this.QualityChangedNoHand = function(x) {
            if (settings) {
                settings.SetQuality()
            }
        };
        this.AirplayChanged = function(x) {
            if (settings) {
                settings.Airplay()
            }
            Resize();
            ShowOrHide()
        };
        this.SettingChanged = function(x) {
            if (settings) {
                settings.SetSetting(x);
                settings.g("show") ? settings.hide() : ''
            }
        };
        this.AudioTrackChangedNoHand = function(x) {
            if (settings) {
                settings.SetSetting("audiotrack")
            }
        };
        this.SubtitleChanged = function() {
            if (settings) {
                settings.SetSubtitle();
                settings.g("show") ? setTimeout(function() {
                    settings.hide()
                }, 200) : ''
            }
        };
        this.SettingsN = function(num, display, val) {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "settings") {
                        if (b[x].s("hdicon") == 1) {
                            b[x].HdIcon()
                        }
                    }
                    if (b[x].g("action_settings") == "settings#" + num) {
                        b[x].set("set#visible", display);
                        if (b[x].g("type") == "text") {
                            if (val) {
                                b[x].UpdateText(val)
                            }
                        } else {
                            if (v.settings['settings' + num + 'action'] == "subtitle") {
                                if (val == Lang("off")) {
                                    b[x].CustomSwitch(0)
                                } else {
                                    b[x].CustomSwitch(1)
                                }
                            }
                            Resize()
                        }
                        ShowOrHideProcessor(b[x])
                    }
                }
            }
        };
        this.UpdateSettings = function() {
            if (settings) {
                settings.SetQuality();
                settings.SetSetting("audiotrack");
                settings.SetSetting("download")
            }
        };
        this.RenewPoints = function() {
            for (var x in b) {
                if (b.hasOwnProperty(x)) {
                    if (b[x].g("action") == "line") {
                        b[x].RenewPoints()
                    }
                }
            }
        };
        this.resize = function() {
            Resize();
            if (toolbarHidden) {
                o.resizeonmouse = true
            }
        };
        this.resizeFromText = function(x) {
            if (!toolbarHidden || x == 1) {
                Resize();
                ShowOrHide()
            } else {
                v.toolbar.resizeme = true
            }
        };
        this.refresh = function() {
            ShowOrHide();
            Resize();
            ShowOrHide();
            if (o.nativecontrols) {
                hide2(bg2)
            } else {
                !toolbarHidden ? show2(bg2) : ''
            }
        };
        this.KeyDown = function(event) {
            if (pljssglobalid == v.id && v.hotkey.on == 1) {
                var x = event.which;
                if (x == undefined) {
                    x = event.keyCode
                }
                if (exist(o.vast) || exist(o.pass)) {
                    return false
                }
                if (v.hotkey.space == 1 && x == 32 && (o.focus || o.mouseHere)) {
                    o.actions.Toggle();
                    event.preventDefault();
                    return false
                }
                if (v.hotkey.enter == 1 && x == 13 && (o.focus || o.mouseHere)) {
                    o.actions.Toggle();
                    event.preventDefault();
                    return false
                }!v.hotkey.vol ? v.hotkey.vol = 0.2 : '';
                !v.hotkey.scale ? v.hotkey.scale = 5 : '';
                if (v.hotkey.nums == 1 && o.focus) {
                    if (o.media.duration() > 0) {
                        for (var i = 48; i < 58; i++) {
                            if (x == i) {
                                o.actions.Seek((o.media.duration() * (x - 48) * 10) / 100, true)
                            }
                        }
                    }
                }
                if (x == 39 && o.focus) {
                    KeyPlusUp(v.hotkey.leftright)
                }
                if (x == 37 && o.focus) {
                    KeyPlusDown(v.hotkey.leftright)
                }
                if (x == 38 && o.focus) {
                    KeyPlusUp(v.hotkey.updown)
                }
                if (x == 40 && o.focus) {
                    KeyPlusDown(v.hotkey.updown)
                }
                if (x == 187 && o.focus) {
                    KeyPlusUp(v.hotkey.plusminus)
                }
                if (x == 189 && o.focus) {
                    KeyPlusDown(v.hotkey.plusminus)
                }
            }
        };

        function KeyPlusUp(x) {
            if (x == "seek") {
                if (o.media.duration() > 0) {
                    if (o.media.time() + parseFloat(v.hotkey.seek) < o.media.duration()) {
                        o.actions.Seek(o.media.time() + parseFloat(v.hotkey.seek), true)
                    }
                }
            }
            if (x == "volume") {
                o.actions.Volume(parseFloat(v.volume) + parseFloat(v.hotkey.vol));
                event.preventDefault()
            }
            if (x == "scale") {
                o.media.scale(v.hotkey.scale / 100);
                event.preventDefault()
            }
        }

        function KeyPlusDown(x) {
            if (x == "seek") {
                if (o.media.duration() > 0 && o.start) {
                    o.actions.Seek((o.media.time() - v.hotkey.seek >= 0 ? o.media.time() - v.hotkey.seek : 0), true)
                }
            }
            if (x == "volume") {
                o.actions.Volume(parseFloat(v.volume) - parseFloat(v.hotkey.vol));
                event.preventDefault()
            }
            if (x == "scale") {
                o.media.scale(-v.hotkey.scale / 100);
                event.preventDefault()
            }
        };
        this.KeyUp = function(event) {
            if (pljssglobalid == v.id) {
                var x = event.which;
                if (x == undefined) {
                    x = event.keyCode
                }
                if (x == 57) {
                    if (v.log == 1) {}
                }
                if (o.fullscreen && x == 27) {
                    o.actions.Normalscreen()
                }
                if (exist(o.vast) || exist(o.pass)) {
                    return false
                }
                if (v.hotkey.f == 1 && x == 70 && (o.focus || o.mouseHere)) {
                    o.fullscreen ? o.actions.Normalscreen() : o.actions.Fullscreen()
                }
                if (v.hotkey.m == 1 && x == 77 && (o.focus || o.mouseHere)) {
                    o.muted ? o.actions.Unmute() : o.actions.Mute()
                }
            }
        };
        this.Remove = function() {
            clearInterval(o.toolbarInterval);
            for (var i = 0; i < butNames.length; i++) {
                key = butNames[i];
                if (b[key]) {
                    b[key].Remove()
                }
            }
            if (settings) {
                settings.Remove()
            }
            if (playlist) {
                playlist.Remove()
            }
            bg.Remove();
            if (bg2.parentNode == o.frame) {
                o.frame.removeChild(bg2)
            } else {
                o.toolbar ? o.toolbar.removeChild(bg2) : ''
            }
        };
        this.ShowForce = function() {
            ShowForce()
        };
        this.HideForce = function() {
            HideForce();
            ShowOrHide()
        };
        this.HideInterval = function() {
            HideInterval()
        };
        this.ToolbarHidden = function() {
            return toolbarHidden
        }
    };
    var Control = function(key) {
        var i;
        var style = [];
        var w;
        var h;
        var last_text_w = 0;
        var bg;
        var bgcontainer;
        var area;
        var angle = 0;
        var visible = true;
        var selectOpen = false;
        var scaleX = 1;
        var scaleY = 1;
        var tip;
        var tipbg;
        var tiptext;
        var tipcrn;
        var action;
        var action_settings = '';
        var x0;
        var y0;
        var on;
        var over = false;
        var touchmove = false;
        var iconangle = 0;
        var bufferInterval;
        var bufferDeg = 0;
        var rightside = 0;
        var topside = 0;
        var bottomside = 0;
        var noclick = false;
        var clicked = false;
        var hdicon;
        var settingsNumberVisible = false;
        style = UpdateObject(style, default_style.but);
        style = UpdateObject(style, v[key]);
        var actions = [style.action];
        action = actions[0];
        exist(style.action2) ? actions[1] = style.action2 : '';
        exist(style.opposite) ? actions[1] = style.opposite : '';
        exist(style.title) ? style.text = style.title : '';
        if (exist(style.linkurl)) {
            if (style.linkurl.indexOf("settings#") == 0) {
                action_settings = style.linkurl;
                if (style.tiptext == '') {
                    style.tiptext = Lang(v.settings['settings' + action_settings.substr(9) + 'action'])
                }
            }
            if (style.linkurl.indexOf("captions") > 0) {
                v.hlscaptions = true
            }
        }
        var tips = style.tiptext.split("///");
        var _currentIcon = 0;
        var icons = new Array();
        var icon = new Array();
        var iconsover = new Array();
        var iconspress = new Array();
        var iconreplay = 0;
        var replay;
        if (style.type == "text") {
            if (exist(style.text)) {
                icons[0] = trim(style.text);
                style.lngth = style.text.length;
                if (style.text.indexOf("/") == 0) {
                    style.slash4time = 1
                }
                if (style.text.indexOf("|") == 0) {
                    style.line4time = 1
                }
                if (style.text.indexOf("-") == 0) {
                    style.minus4time = 1
                }
                if (action == "time" || action == "duration") {
                    if (style.text.split(":").length == 3) {
                        style.with_hours = true
                    }
                }
                if (style.inversetime == 1 && style.text.indexOf("-") == 0) {
                    style.minus4back = 1
                }
                if (style.text.indexOf("///") > 0 && action == "custom") {
                    style.texts = style.text.split("///");
                    style.text = icons[0] = style.texts[0]
                }
            }
            if (v.fonts == 1) {
                setTimeout(ResizeText, 100);
                setTimeout(ResizeText, 500);
                setTimeout(ResizeText, 1000)
            }
        } else {
            if (exist(style.icon)) {
                icons[0] = style.icon;
                if (icons[0].indexOf("///") > 0 && icons[0].indexOf("base64") == -1) {
                    icons = style.icon.split("///")
                }
                if (exist(style.icon2)) {
                    icons[1] = style.icon2
                }
                if (style.iconsreplay == 1) {
                    if (exist(style.icon3)) {
                        if (style.icon3 != '') {
                            icons.push(style.icon3);
                            iconreplay = icons.length - 1
                        }
                    }
                }
            }
        }
        if (action == "custom") {
            if (style.link2 == 1 && exist(style.linkurl2)) {
                style.linkurl0 = style.linkurl
            }
        }
        var control = createElement("div");
        if (style.position == 'timeline') {
            o.timeline.appendChild(control)
        } else {
            if (style.position.indexOf('controls') > -1 && v.toolbar.hide == 1 && v.toolbar.hidedown == 1) {
                o.toolbar.appendChild(control)
            } else {
                o.frame.appendChild(control)
            }
        }
        var bgcontainer = createElement("div");
        control.appendChild(bgcontainer);
        css(control, {
            "position": "absolute",
            "left": 0,
            "top": 0,
            "opacity": 1,
            "fontSize": "14px",
            "lineHeight": "1em"
        });
        if (exist(style.dom)) {
            if (style.dom != '') {
                attr(control, {
                    "id": (v.id + "_control_" + style.dom)
                })
            }
        }
        if (style.rotateplaying == 1) {
            css(control, {
                "transition": "transform 0.2s linear"
            })
        }
        if (icons.length > 0) {
            for (i = 0; i < icons.length; i++) {
                icon[i] = createElement("div");
                css(icon[i], {
                    "position": "absolute",
                    "top": 0,
                    "left": 0,
                    "pointerEvents": "none",
                    "opacity": style.a,
                    "transition": "opacity 0.1s linear,transform 0.1s linear"
                });
                if (style.type == "pic" && style.src != '') {
                    if (style.src.indexOf(".png") > -1 || style.src.indexOf(".jpg") > -1 || style.src.indexOf("base64") > -1) {
                        style.src.indexOf("//") == -1 && style.src.indexOf("base64") == -1 ? style.src = '//' + style.src : '';
                        var z = createElement("img");
                        style.loading = 1;
                        z.addEventListener("load", imageLoaded);
                        z.src = style.src;
                        icon[i].appendChild(z);
                        style.w = icon[i].offsetWidth;
                        style.h = icon[i].offsetHeight;
                        if (exist(style.dom)) {
                            if (style.dom != '') {
                                attr(icon[i], {
                                    "id": (v.id + "_control_" + style.dom + "_icon")
                                })
                            }
                        }
                    }
                }
                if (style.type == "text") {
                    css(icon[i], {
                        "color": (style.color),
                        "fontFamily": style.font,
                        "fontSize": style.fontsize,
                        "letter-spacing": style.letterspacing + 'px',
                        "padding": "0 3px 0 3px",
                        "white-space": "nowrap"
                    });
                    if (style.click == 1) {
                        if (style.text.indexOf("<a ") > -1 || key == "control_title") {
                            css(icon[i], {
                                "pointerEvents": "auto"
                            })
                        }
                    }
                    if (style.bold == 1) {
                        css(icon[i], {
                            "font-weight": "bold"
                        })
                    }
                    icons[i] == 'live' ? icons[i] = Lang("live") : '';
                    icon[i].innerHTML = Places(icons[i]);
                    setTimeout(Marquee, 100);
                    style.w = icon[i].offsetWidth;
                    style.h = icon[i].offsetHeight;
                    if (exist(style.dom)) {
                        if (style.dom != '') {
                            attr(icon[i], {
                                "id": (v.id + "_control_" + style.dom + "_text")
                            })
                        }
                    }
                }
                if (style.type == "css") {
                    controlCSS(icons[i], style.color, icon[i])
                }
                var icn = icons[i].toString();
                var isvg = icn.indexOf('<svg') > -1 || icn.indexOf('<SVG') > -1;
                if (style.type == "svg" && (icn.indexOf('<g>') > -1 || isvg)) {
                    icon[i].innerHTML = (!isvg ? "<svg width='20' height='20' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'>" : '') + icn + (!isvg ? "</svg>" : '');
                    icon[i].offsetWidth > 20 ? style.w = icon[i].offsetWidth : '';
                    icon[i].offsetHeight > 20 ? style.h = icon[i].offsetHeight : '';
                    css(icon[i], {
                        "width": style.w,
                        "height": style.h
                    });
                    if (style.iconscolor != -1) {
                        IconsColor(icon, style.iconscolor)
                    }
                    if (exist(style.dom)) {
                        if (style.dom != '') {
                            attr(icon[i], {
                                "id": (v.id + "_control_" + style.dom + "_icon" + i)
                            })
                        }
                    }
                }
                control.appendChild(icon[i]);
                i > 0 ? hide(icon[i]) : ''
            }
            Background();
            if (style.linkurl == "chromecast") {
                style.chromecast = 1;
                style.hide = 1;
                o.chromecast ? icon[0].innerHTML = o.chromecast.button(style.iconscolor != -1 ? style.iconscolor : '#ffffff') : '';
                icon[0].onmouseover = onOver;
                icon[0].onmouseout = onOut;
                icon[0].onmousemove = onMove
            } else {
                if ((bg.offsetWidth * style.scale < 35 || bg.offsetHeight * style.scale < 35) && style.type != 'text') {
                    ClickArea();
                    Clickable(area)
                } else {
                    Clickable(bg)
                }
            }
            if (action == "custom") {
                if (style.link == 1 && exist(style.linkurl)) {
                    if (style.linkurl.indexOf("api:") == 0) {
                        var tmp = style.linkurl.substr(4).split(",");
                        if (tmp.length == 2) {
                            var tmp2 = tmp[1].split("/");
                            if (tmp2.length == 2) {
                                tmp[0] == 'hd' ? tmp[0] = "default_quality" : '';
                                if (v[tmp[0]] == tmp2[1]) {
                                    style.a = 1;
                                    css(icon[0], {
                                        "opacity": style.a
                                    })
                                }
                            }
                        }
                    }
                }
            }
            if (action == "settings" && style.hdicon == 1) {
                hdicon = new PluginHdIcon(control, bg)
            }
            if (style.click == 0) {
                css(control, {
                    "pointerEvents": "none"
                })
            }
            if (style.loading == 1) {
                hide(bg)
            }
            if (style.tip == 1) {
                CreateTip()
            }
            if (style.position.indexOf("right") > -1) {
                rightside = 1
            }
            if (style.position.indexOf("top") > -1) {
                topside = 1
            }
            if (style.position.indexOf("bottom") > -1 || style.position.indexOf("control") > -1) {
                bottomside = 1
            }
            Resize();
            var t = '';
            if (style.rotation != 0) {
                t += "rotate(" + style.rotation + "deg)"
            }
            if (style.flipx == 1) {
                t += " scaleX(-1)"
            }
            if (style.flipy == 1) {
                t += " scaleY(-1)"
            }
            if (t != '') {
                css(control, {
                    "transform": t
                })
            }
            if (action == "buffer") {
                BufferStop()
            }
            var tmp = [];
            var i;
            if (action == "playlist") {
                tmp = ['autoplaylist', 'openplaylistafter', 'openplaylistbefore', 'openplaylistpause', 'openplaylistroot', 'playlistrewind'];
                for (i = 0; i < tmp.length; i++) {
                    if (exist(style[tmp[i]]) && !exist(v.playlist[tmp[i]])) {
                        v.playlist[tmp[i]] = style[tmp[i]]
                    }
                }
            }
            if (action == "title") {
                tmp = ['showtitleplaylist', 'addtitleplaylist', 'addtitleplaylistbr'];
                for (i = 0; i < tmp.length; i++) {
                    if (exist(style[tmp[i]]) && !exist(options[tmp[i]])) {
                        v[tmp[i]] = style[tmp[i]]
                    }
                }
            }
            style.tipalways == 1 ? Tip() : '';
            if (action == "custom" && style.on == 0) {
                hide2(control)
            }
        }

        function ClickArea() {
            if (area) {
                area.parentNode.removeChild(area)
            }
            area = createElement("div");
            css(area, {
                "position": "absolute",
                "top": 0,
                "left": 0,
                "width": style.type == "pic" ? bg.offsetWidth : (bg.offsetWidth > 35 ? bg.offsetWidth : 35) * style.clickscalex,
                "height": style.type == "pic" ? bg.offsetHeight : (bg.offsetHeight > 35 ? bg.offsetHeight : 35) * style.clickscaley
            });
            style = MarginPadding(style, 'clickmargin', 'clickmargin');
            if (v.toolbar.clickarea == 1 || style.clickarea == 1) {
                css(area, {
                    "background-color": "#ff0000",
                    "opacity": 0.5
                })
            }
            control.appendChild(area)
        }

        function Clickable(x) {
            if (action.indexOf("time") == 0 && actions.length == 1) {
                style.click = 0
            }
            if (action == "custom" && style.link == 0) {
                style.click = 0
            }
            if (style.click == 1) {
                if (style.hand == 1) {
                    css(x, {
                        "cursor": "pointer"
                    })
                }
                css(x, {
                    "pointerEvents": "auto"
                });
                if (o.system.mobile) {
                    x.addEventListener("touchmove", function(event) {
                        event.stopPropagation();
                        touchmove = true
                    });
                    if (action == "fullscreen") {
                        x.addEventListener("click", function(event) {
                            event.stopPropagation();
                            onClick(event)
                        });
                        x.addEventListener("touchend", function(event) {
                            event.stopPropagation();
                            touchmove = false
                        })
                    } else {
                        x.addEventListener("touchend", function(event) {
                            event.stopPropagation();
                            if (!touchmove) {
                                onClick(event)
                            }
                            touchmove = false
                        })
                    }
                } else {
                    x.onclick = onClick
                }
            } else {
                css(x, {
                    "cursor": "default"
                })
            }
            if (!o.system.mobile) {
                x.onmouseover = onOver;
                x.onmouseout = onOut
            }
            if (style.hidden == 1 || style.tip == 1) {
                x.onmousemove = onMove
            }
        }

        function Background() {
            if (bg) {
                bg.parentNode.removeChild(bg)
            }
            bg = createElement("div");
            css(bg, {
                "position": "absolute",
                "top": 0,
                "left": 0
            });
            if (exist(style.dom)) {
                if (style.dom != '') {
                    attr(bg, {
                        "id": (v.id + "_control_" + style.dom + "_bg")
                    })
                }
            }
            w = style.w;
            h = style.h;
            style = MarginPadding(style, 'margin', 'margin');
            style = MarginPadding(style, 'marginproc', 'marginproc');
            if (style.type == "text") {
                w = icon[_currentIcon].offsetWidth;
                h = icon[_currentIcon].offsetHeight
            }
            style = MarginPadding(style, 'bgpadding', 'bgpadding');
            style = MarginPadding(style, 'iconmargin', 'iconmargin');
            if (o.system.safari) {
                style.iconmarginleft /= style.scale;
                style.iconmarginright /= style.scale;
                style.iconmargintop /= style.scale;
                style.iconmarginbottom /= style.scale
            }
            if (exist(style.dom) && exist(v.custom) && style.action == "custom") {
                if (style.dom != '' && typeof(v.custom) == 'object') {
                    for (var i = 0; i < Object.keys(v.custom).length; i++) {
                        if (v.custom[i][style.dom]) {
                            if (v.custom[i][style.dom] == "off") {
                                style.on = 0
                            } else {
                                var tmp = v.custom[i][style.dom].split(":");
                                if (tmp[0] == "margin-left") {
                                    if (tmp[1].indexOf("%") > 0) {
                                        style.marginprocleft = parseInt(tmp[1])
                                    } else {
                                        style.marginleft = parseInt(tmp[1])
                                    }
                                }
                            }
                        }
                    }
                }
            }
            style.h = h;
            style.w = w;
            if (style.bg == 1) {
                h = h + style.bgpaddingtop + style.bgpaddingbottom;
                w = w + style.bgpaddingleft + style.bgpaddingright;
                style.h = h;
                style.w = w;
                if (style.type == "text") {
                    style.bgh = icon[0].offsetHeight
                }
            } else {
                style.bga = 0
            }
            css(bg, {
                "width": (style.bgstretch == 1 ? 5000 : w),
                "height": h,
                "borderRadius": (style.bgo * h) / 2,
                "background": style.bgcolor,
                "opacity": style.bga,
                "transition": "opacity .1s linear, background .1s linear, transform .1s linear"
            });
            if (style.type == "pic") {
                css(bg, {
                    "width": w,
                    "height": h,
                    "borderRadius": (style.bgo * h / style.scale) / 2,
                })
            }
            if (style.bgborder == 1) {
                css(bg, {
                    "border": "1px solid " + style.bgbordercolor
                })
            }
            bgcontainer.appendChild(bg)
        }

        function Resize() {
            css(bg, {
                "top": (-bg.offsetHeight / 2),
                "left": (-bg.offsetWidth / 2)
            });
            if (area) {
                var x = style.type == "pic" ? bg.offsetWidth : (bg.offsetWidth > 35 ? bg.offsetWidth : 35);
                var y = style.type == "pic" ? bg.offsetHeight : (bg.offsetHeight > 35 ? bg.offsetHeight : 35);
                css(area, {
                    "top": (-y / 2) + style.clickmargintop - style.clickmarginbottom,
                    "left": (-x / 2) + style.clickmarginleft - style.clickmarginright
                })
            }
            for (i = 0; i < icons.length; i++) {
                if (style.type == "svg") {
                    css(icon[i], {
                        "top": -Math.round(parseInt(icon[i].style.height)) / 2,
                        "left": -parseInt(icon[i].style.width) / 2
                    })
                } else {
                    css(icon[i], {
                        "top": -Math.round(icon[i].offsetHeight) / 2,
                        "left": -icon[i].offsetWidth / 2
                    })
                }
                if (bg) {
                    css(icon[i], {
                        "top": (int(icon[i].style.top) + style.bgpaddingtop / 2 - style.bgpaddingbottom / 2 + style.iconmargintop / 2 + style.iconmarginbottom / 2),
                        "left": (int(icon[i].style.left) + style.bgpaddingleft / 2 - style.bgpaddingright / 2 + style.iconmarginleft / 2 + style.iconmarginright / 2)
                    })
                }
            }
        }

        function onOver() {
            var i;
            over = true;
            if (style.iconsover == 1) {
                if (on && exist(style.icon2)) {
                    i = 1
                } else {
                    i = 0
                }
                if (replay && iconsover.length > 2) {
                    i = 2
                }
                if (iconsover[i]) {
                    hideAllIcons();
                    show(icon[iconsover[i]])
                }
            }
            if (style.bg == 1) {
                if (style.bgaover != -1) {
                    css(bg, {
                        "opacity": style.bgaover
                    })
                }
                if (style.bgcolorover != -1) {
                    css(bg, {
                        "background": style.bgcolorover
                    })
                }
            }
            if (style.aover > -1 && !selectOpen) {
                for (i = 0; i < icons.length; i++) {
                    if (icon[i].style.visibility != "hidden") {
                        css(icon[i], {
                            "opacity": style.aover
                        })
                    }
                }
            }
            if (style.iconscolorover != -1) {
                IconsColor(icon, style.iconscolorover)
            }
            if (style.rotateonhover == 1) {
                iconangle = iconangle + 45;
                css(icon[0], {
                    "transform": "rotate(" + iconangle + "deg)"
                })
            }
            if (style.scaleover > style.scale && style.scaleover > -1) {
                scale(style.scaleover)
            }
            if (action == "settings" && o.controls.SettingsVisible()) {} else {
                if (style.tip == 1 && style.tipalways != 1) {
                    show(tip);
                    css(tip, {
                        "opacity": 1
                    })
                }
            }
            if (action == "mute") {
                o.actions.volumewheel(true);
                o.volumewheel = true
            }
            o.controlover = true;
            o.controls.Mouse(key, "over")
        }

        function onOut() {
            over = false;
            var i;
            if (style.iconsover == 1) {
                if (on && exist(style.icon2)) {
                    i = 1
                } else {
                    i = 0
                }
                if (replay && iconsover.length > 2) {
                    i = 2
                }
                hideAllIcons();
                show(icon[i])
            }
            if (style.bg == 1) {
                if (style.bgaover != -1) {
                    css(bg, {
                        "opacity": style.bga
                    })
                }
                if (style.bgcolorover != -1) {
                    css(bg, {
                        "background": style.bgcolor
                    })
                }
            }
            if (style.aover > -1) {
                for (i = 0; i < icons.length; i++) {
                    if (icon[i].style.visibility != "hidden") {
                        css(icon[i], {
                            "opacity": style.a
                        })
                    }
                }
            }
            if (style.scaleover > -1) {
                scale(style.scale)
            }
            if (style.iconscolorover != -1) {
                IconsColor(icon, (style.iconscolor == -1 ? '#ffffff' : style.iconscolor))
            }
            if (action == "mute" && !o.fullscreen) {
                o.actions.volumewheel(false);
                o.volumewheel = false
            }
            if (style.tip == 1 && style.tipalways != 1) {
                hide(tip);
                css(tip, {
                    "opacity": 0
                })
            }
            o.controlover = false;
            o.controls ? o.controls.Mouse(key, "out") : ''
        }

        function onClick(event) {
            event.cancelBubble = true;
            if (!noclick) {
                o.controls.ControlClick(key);
                if (action == "custom") {
                    CustomToogle()
                }
                if (style.tip == 1 && style.tipalways != 1) {
                    hide(tip);
                    css(tip, {
                        "opacity": 0
                    })
                }
                if (style.rotateonclick == 1) {
                    iconangle = iconangle + 45;
                    css(icon[0], {
                        "transform": "rotate(" + iconangle + "deg)"
                    })
                }
                clicked = true;
                if (style.hideafterclick == 1 || (key == "control_start" && style.hide == 1 && style.hideonplay == 1)) {
                    o.controls.refresh()
                }
            }
        }

        function CustomToogle() {
            if (icons) {
                if (icons.length > 1) {
                    if (on == true) {
                        show(icon[0]);
                        hide(icon[1])
                    } else {
                        show(icon[1]);
                        hide(icon[0])
                    }
                }
                if (style.tip == 1 && tips.length > 1) {
                    tiptext.innerHTML = (on == true ? tips[0] : tips[1]);
                    Tip()
                }
            }
            if (exist(style.linkurl0)) {
                if (on == true) {
                    style.linkurl = style.linkurl0
                } else {
                    style.linkurl = style.linkurl2
                }
            }
            if (exist(style.texts)) {
                if (style.texts.length > 1) {
                    if (on == true) {
                        UpdateText(style.texts[0])
                    } else {
                        UpdateText(style.texts[1])
                    }
                }
            }
            on = on != true;
            if (style.bg == 1 && exist(style.bgcolorlink2)) {
                if (style.bgcolorlink2 != -1) {
                    if (on) {
                        style.bgcolorlink0 = style.bgcolor;
                        style.bgcolor = style.bgcolorlink2
                    } else {
                        style.bgcolor = style.bgcolorlink0
                    }
                    Background();
                    Clickable(bg);
                    Resize();
                    if (style.type == "text") {
                        ResizeText()
                    } else {
                        scale(style.scale)
                    }
                }
            }
        }

        function ReplayIcon(event) {
            event.cancelBubble = true;
            o.controls.ControlClick(key)
        }

        function hideAllIcons() {
            for (var i = 0; i < icons.length; i++) {
                if (icon[i].style.visibility != "hidden") {
                    css(icon[i], {
                        "opacity": style.a
                    });
                    hide(icon[i])
                }
            }
        }

        function Marquee(text) {
            if (icon[0].offsetWidth > o.screen_w - style.marginleft - style.marginright - style.bgpaddingleft - style.bgpaddingright) {
                if (style.marquee == 1) {
                    if (!text) {
                        text = icon[0].innerHTML
                    }
                    icon[0].innerHTML = '<marquee>' + text + '</marquee>'
                } else {
                    css(icon[0], {
                        "white-space": "normal"
                    })
                }
                css(icon[0], {
                    "width": o.screen_w - style.marginleft - style.marginright - style.bgpaddingleft - style.bgpaddingright
                })
            }
        }

        function imageLoaded() {
            style.loading = 0;
            hide(bg);
            if (icon[0]) {
                style.w = icon[0].offsetWidth * style.scale;
                style.h = icon[0].offsetHeight * style.scale;
                if (style.picheight > 0) {
                    style.h = style.picheight * style.scale;
                    css(icon[0], {
                        height: style.picheight
                    })
                }
                scale(style.scale)
            }
            style.loaded = 0;
            Background();
            ClickArea();
            Clickable(area);
            show(bg);
            Resize();
            o.controls.resize();
            if (!isVisible(control)) {
                hide2(control)
            }
        }

        function CancelBubble(event) {
            event.cancelBubble = true
        }

        function onMove() {
            Tip()
        }

        function scale(x) {
            if (x > 0) {
                if (o.system.safari && style.tipalways != 1) {
                    css(bg, {
                        "zoom": x + ""
                    })
                } else {
                    css(bg, {
                        "transform": "scale(" + x + ")"
                    })
                }
                for (i = 0; i < icons.length; i++) {
                    if (o.system.safari && style.tipalways != 1) {
                        css(icon[i], {
                            "zoom": x + ""
                        })
                    } else {
                        css(icon[i], {
                            "transform": "scale(" + x + ")"
                        })
                    }
                }
                scaleX = x;
                scaleY = x
            }
        }

        function CreateTip() {
            tip = createElement("div");
            css(tip, {
                'position': 'absolute',
                'left': 0,
                'top': 0,
                'height': 'auto',
                "opacity": 0,
                "transition": "opacity 0.1s linear"
            });
            tipbg = createElement("div");
            style = MarginPadding(style, 'tippadding', 'tippadding');
            style = MarginPadding(style, 'tipmargin', 'tipmargin');
            css(tipbg, {
                'position': 'absolute',
                'left': 0,
                'top': 0,
                'width': '100%',
                'height': 30,
                'background-color': style.tipbgcolor,
                'opacity': style.tipbga,
                'border-radius': style.tipbgrounding
            });
            tiptext = createElement("div");
            css(tiptext, {
                'position': 'absolute',
                'left': style.tippaddingright,
                'top': style.tippaddingtop,
                'color': style.tipcolor,
                'font-family': style.tipfont,
                'font-size': style.tipfontsize,
                "letter-spacing": style.tipletterspacing + 'px',
                'opacity': style.tipa,
                "line-height": "1",
                'white-space': 'nowrap'
            });
            if (style.tippointer == 1) {
                tipcrn = createElement("div");
                tipcrn.innerHTML = '<svg width="8px" height="6px" viewBox="0 0 8 6" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><polygon id="Rectangle" stroke="none" fill="#' + style.tipbgcolor.replace("#", "") + '" fill-rule="evenodd" points="0 0 8 0 4 6"></polygon></svg>'
            }
            if (style.tipalways == 1) {
                css(tip, {
                    "opacity": 1
                });
                Clickable(tip)
            } else {
                css(tip, {
                    "pointerEvents": "none"
                })
            }
            control.appendChild(tip);
            tiptext.innerHTML = style.tiptext == '' ? Lang(action) : tips[0];
            tip.appendChild(tipbg);
            tip.appendChild(tiptext);
            if (style.tippointer == 1) {
                tip.appendChild(tipcrn);
                var btm = o.doctype ? '-8px' : '-6px';
                var ps = style.tippointeralign;
                if (!exist(ps)) {
                    ps = ''
                }
                var tp = ps.indexOf("top") > -1;
                if (tp) {
                    css(tipcrn, {
                        "transform": "rotate(-180deg)"
                    })
                }
                css(tipcrn, {
                    'position': 'absolute',
                    'right': (ps.indexOf("right") > -1 ? 10 * style.scale : 'auto'),
                    'left': (ps.indexOf("left") > -1 ? 10 * style.scale : (ps == '' || ps == 'top' ? '50%' : 'auto')),
                    'margin-left': (ps == '' || ps == 'top' ? '-4px' : 0),
                    'bottom': (tp ? 'auto' : btm),
                    'top': (tp ? btm : 'auto'),
                    'opacity': style.tipbga
                })
            }
            Tip()
        }

        function Tip() {
            if (style.tip == 1) {
                css(tip, {
                    "top": (bottomside == 1 ? -h - tip.offsetHeight + 3 : -tip.offsetHeight / 2) + style.tipmargintop - style.tipmarginbottom,
                    "left": (rightside == 1 ? -tiptext.offsetWidth : (bottomside == 1 ? -w / 2 : +tiptext.offsetWidth)) - (bottomside == 1 ? 0 : tiptext.offsetWidth / 2 + 5) + style.tipmarginleft - style.tipmarginright,
                    "height": style.tippaddingtop + style.tipfontsize + style.tippaddingbottom,
                    "width": style.tippaddingleft + tiptext.offsetWidth + style.tippaddingright
                });
                css(tipbg, {
                    'height': tip.offsetHeight
                });
                tip.style.zIndex = "1000"
            }
        }
        this.c = function() {
            return control
        };
        this.s = function(x) {
            return style[x]
        };
        this.ss = function(x, x2) {
            return exist(style[x]) ? style[x][x2] : false
        };
        this.g = function(x) {
            switch (x) {
                case "width":
                    return w;
                    break;
                case "height":
                    return h;
                    break;
                case "x":
                    return int(control.style.left);
                    break;
                case "y":
                    return int(control.style.top);
                    break;
                case "opacity":
                    return control.style.opacity ? control.style.opacity : 1;
                    break;
                case "show":
                    return visible;
                    break;
                case "scaleX":
                    return scaleX;
                    break;
                case "scaleY":
                    return scaleY;
                    break;
                case "action":
                    return action;
                    break;
                case "action_settings":
                    return action_settings;
                    break;
                case "clicked":
                    return clicked;
                    break;
                case "type":
                    return style.type;
                    break;
                case "length":
                    return style.lngth ? style.lngth : 0;
                    break;
                case "key":
                    return key;
                    break;
                case "x0":
                    return x0;
                    break;
                case "y0":
                    return y0;
                    break;
                case "over":
                    return over;
                    break;
                case "settings#":
                    return action_settings.indexOf("settings#") == 0;
                    break;
                case "set#visible":
                    return settingsNumberVisible;
                    break;
                default:
                    return false
            }
        };
        this.set = function(k, x) {
            switch (k) {
                case "show":
                    over ? onOut() : '';
                    visible = x;
                    break;
                case "display":
                    DisplayControl(x);
                    break;
                case "show2":
                    show2(control);
                    break;
                case "hide2":
                    hide2(control);
                    break;
                case "scale":
                    scale(x);
                    break;
                case "scaleX":
                    css(control, {
                        "transform": "scaleX(" + x + ")"
                    });
                    scaleX = x;
                    break;
                case "scaleY":
                    css(control, {
                        "transform": "scaleY(" + x + ")"
                    });
                    scaleY = x;
                    break;
                case "opacity":
                    css(control, {
                        "opacity": x
                    });
                    break;
                case "iconopacity":
                    css(icon[0], {
                        "opacity": x
                    });
                    break;
                case "saturate":
                    css(icon[0], {
                        "filter": "saturate(" + x + ")"
                    });
                    break;
                case "left":
                    css(control, {
                        "left": x
                    });
                    break;
                case "top":
                    css(control, {
                        "top": x
                    });
                    break;
                case "width":
                    css(control, {
                        "width": x
                    });
                    break;
                case "height":
                    css(control, {
                        "height": x
                    });
                    break;
                case "over_final":
                    style.over_final = x;
                    break;
                case "rightside":
                    rightside = x;
                    break;
                case "set#visible":
                    settingsNumberVisible = x;
                    break;
                case "x":
                    css(control, {
                        "left": x
                    });
                    break;
                case "y":
                    css(control, {
                        "top": x
                    });
                    break;
                case "animation":
                    style.animation = x;
                    break;
                case "x0":
                    x0 = x;
                    break;
                case "y0":
                    y0 = x;
                    break;
                default:
                    return false
            }
        };

        function DisplayControl(x) {
            if (x && o.system.mobile) {
                noclick = true;
                setTimeout(noClickTimeout, 300)
            }
            if (!x) {
                if (style.iconsreplay == 1 && replay) {
                    hide(icon[iconreplay]);
                    show(icon[0]);
                    replay = false
                }
            }
            if (style.loading == 1) {
                x ? show(control) : hide(control)
            } else {
                if (key == "control_time" || key == "control_duration") {
                    x ? show(control) : hide(control)
                } else {
                    css(control, {
                        "display": (x ? "block" : "none")
                    })
                }
                visible = x;
                x ? show(control) : ''
            }
        }

        function noClickTimeout() {
            noclick = false
        }
        this.UpdateText = function(text) {
            UpdateText(text);
            style.text33 = text
        };
        this.Rotate = function() {
            css(control, {
                "transform": "rotate(" + angle + "deg)"
            });
            angle += 20
        };
        this.RenewFromTitle = function(x) {
            if (style.text.indexOf("{title") > -1) {
                UpdateText(style.text)
            }
        };
        this.CustomToogle = function() {
            CustomToogle()
        };

        function UpdateText(text) {
            if (style.type == "text") {
                if (exist(text)) {
                    if (style.with_hours) {
                        if (text.length == 4) {
                            text = '00:0' + text
                        }
                        if (text.length == 5) {
                            text = '00:' + text
                        }
                    }
                    style.lngth = text.length
                }
                text = (style.line4time == 1 ? '| ' : '') + (style.slash4time == 1 ? '/ ' : '') + (style.minus4back == 1 ? '-' : (style.minus4time == 1 ? '- ' : '')) + text;
                var prevorius_default_w = icon[0].offsetWidth + (style.bg == 1 ? style.bgpaddingtop + style.bgpaddingbottom : 0);
                var prevorius_default_h = icon[0].offsetHeight + (style.bg == 1 ? style.bgpaddingtop + style.bgpaddingbottom : 0);
                icon[0].innerHTML = (action == "custom" ? Places(text) : text);
                if (style.triangle == 1) {
                    icon[0].innerHTML += '<span style="display:inline-block;width:10px"></span><span style="border-top: 3px solid #fff;border-left: 3px solid transparent;border-right: 3px solid transparent;position: absolute;right:3px;top: 50%;margin-top: -1px;"></span>'
                }
                if (action == "title") {
                    css(icon[0], {
                        "width": "auto",
                        "white-space": "nowrap"
                    });
                    Marquee(text)
                }
                style.w = icon[0].offsetWidth + (style.bg == 1 ? style.bgpaddingtop + style.bgpaddingbottom : 0);
                style.h = icon[0].offsetHeight + (style.bg == 1 ? style.bgpaddingtop + style.bgpaddingbottom : 0);
                if (prevorius_default_w != style.w || prevorius_default_h != style.h || (style.w > 0 && last_text_w == 0)) {
                    ResizeText()
                }
                if (icon[0].offsetWidth > 0) {
                    last_text_w = style.w
                } else {
                    if (text != '') {
                        setTimeout(ResizeText, 100)
                    }
                }
            }
        }
        this.ResizeText = function() {
            ResizeText()
        };

        function ResizeText() {
            if (style.type == "text") {
                if (icon[0]) {
                    if (icon[0].offsetWidth > 0) {
                        w = style.w = icon[0].offsetWidth;
                        h = style.h = icon[0].offsetHeight;
                        Background();
                        Clickable(bg);
                        Resize();
                        o.controls.resizeFromText()
                    }
                }
            }
        }
        this.UpdateVolume = function(x) {
            if (style.displayvolume == 1 && !o.system.mobile) {
                var l1 = document.getElementById('pjs_volume_element1');
                var l2 = document.getElementById('pjs_volume_element2');
                var l3 = document.getElementById('pjs_volume_element3');
                if (l1) {
                    if (x <= 0.2) {
                        l3 ? hide(l3) : '';
                        l2 ? hide(l2) : '';
                        l1 ? hide(l1) : ''
                    }
                    if (x > 0.2 && x <= 0.5) {
                        l3 ? hide(l3) : '';
                        l2 ? hide(l2) : ''
                    }
                    if (x > 0.2) {
                        l1 ? show(l1) : ''
                    }
                    if (x > 0.5) {
                        l2 ? show(l2) : ''
                    }
                    if (x > 0.5 && x <= 0.8) {
                        l3 ? hide(l3) : ''
                    }
                    if (x > 0.8) {
                        l3 ? show(l3) : ''
                    }
                }
            }
        };
        this.On = function() {
            if (!on) {
                if (icons) {
                    if (icons.length > 1 && actions.length > 1) {
                        hide(icon[0]);
                        show(icon[1])
                    }
                }
                if (actions.length > 1) {
                    action = actions[1];
                    if (style.tip == 1) {
                        tiptext.innerHTML = style.tiptext == '' ? Lang(actions[1]) : (tips.length > 1 ? tips[1] : tips[0]);
                        Tip()
                    }
                }
                if (style.iconsreplay == 1 && replay) {
                    hide(icon[iconreplay]);
                    replay = false
                }
                on = true
            }
        };
        this.CustomSwitch = function(x) {
            if (x == 1) {
                style.a = 1
            } else {
                style.a = 0.5
            }
            css(icon[0], {
                "opacity": style.a
            })
        };
        this.Off = function() {
            if (on) {
                if (icons) {
                    if (icons.length > 1 && actions.length > 1) {
                        show(icon[0]);
                        hide(icon[1])
                    }
                }
                action = actions[0];
                if (actions.length > 1) {
                    if (style.tip == 1) {
                        tiptext.innerHTML = style.tiptext == '' ? Lang(actions[0]) : tips[0];
                        Tip()
                    }
                }
                on = false;
                replay = false
            }
        };
        this.ReplayIcon = function() {
            if (style.iconsreplay == 1) {
                hideAllIcons();
                show(icon[iconreplay]);
                replay = true
            }
        };
        this.Buffer = function() {
            var stop = false;
            if (style.hide == 1 && style.hidewithposter == 1) {
                if (isVisible(o.poster)) {
                    stop = true
                }
            }
            if (!stop) {
                show2(control);
                var items = control.getElementsByTagName("*");
                for (var i = items.length; i--;) {
                    css(items[i], {
                        "animation-play-state": "running"
                    })
                }
                visible = true
            }
        };
        this.BufferStop = function() {
            BufferStop()
        };

        function BufferStop() {
            hide2(control);
            var items = control.getElementsByTagName("*");
            for (var i = items.length; i--;) {
                css(items[i], {
                    "animation-play-state": "paused"
                })
            }
            visible = false
        }
        this.Remove = function() {
            if (icons.length > 0) {
                for (i = 0; i < icons.length; i++) {
                    control.removeChild(icon[i]);
                    icon[i] = null
                }
            }
            if (bg) {
                bg.removeAttribute("onclick");
                bg.removeAttribute("onmouseover");
                bg.removeAttribute("onmouseout");
                bg.parentNode.removeChild(bg);
                bg = null
            }
            if (style.position == 'timeline') {
                o.timeline.removeChild(control)
            } else {
                if (control.parentNode == o.frame) {
                    o.frame.removeChild(control)
                } else {
                    if (o.toolbar) {
                        if (control.parentNode == o.toolbar) {
                            o.toolbar.removeChild(control)
                        }
                    }
                }
            }
            if (tip) {
                control.removeChild(tip)
            }
            control = null
        };
        this.HdIcon = function() {
            hdicon ? hdicon.toggle() : ''
        };

        function Places(x) {
            var z = x + '';
            if (x.indexOf('{time}') > -1 && exist(o.continue)) {
                x = x.replace('{time}', timeFormat(o.continue.flag().t))
            }
            if (x.indexOf('{title') > -1) {
                var y = o.titlestore ? o.titlestore : (v.title ? v.title : '');
                if (x.indexOf('{title2}') > -1 && o.controls) {
                    x = x.replace('{title2}', o.controls.PlaylistG('title2'))
                }
                if (o.butplstart && o.controls) {
                    y = o.controls.PlaylistG('butplstart')
                }
                x = x.replace('{title}', y);
                if (o.butplstart && !o.controls) {
                    setTimeout(UpdateText, 100, z)
                }
            }
            return x
        }

        function IconsColor(icon, clr) {
            for (var i = 0; i < icon.length; i++) {
                var x = ["path", "polygon", "polyline", "rect", "ellipse"];
                for (var y = 0; y < x.length; y++) {
                    var z = icon[i].querySelectorAll("svg " + x[y]);
                    if (z.length > 0) {
                        for (var y2 = 0; y2 < z.length; y2++) {
                            z[y2].style.fill = clr
                        }
                    }
                }
            }
            if (style.linkurl == "chromecast") {
                if (o.chromecast) {
                    o.chromecast.Color(icon[0], clr)
                }
            }
        }
    };
    var ControlLine = function(key, action) {
        var i;
        var style = [];
        var w;
        var h;
        var bg;
        var visible = true;
        var x0;
        var y0;
        var scaleX = 1;
        var scaleY = 1;
        var topBg = 0;
        var leftBg = 0;
        var alphas;
        var mouseDown;
        var mouseUp;
        var click;
        var handle;
        var _duration_load;
        var _duration_play;
        var _time_load;
        var _time_play;
        var tip;
        var tipbg;
        var tiptext;
        var tipcrn;
        var points = [];
        var thumb;
        var current_thumb = -1;
        var lastTouch;
        var over;
        var onup_to;
        for (i in default_style.but) {
            style[i] = default_style.but[i]
        }
        var action = v[key].action;
        var type = v[key].type;
        for (i in default_style[action]) {
            style[i] = default_style[action][i]
        }
        for (i in v[key]) {
            style[i] = v[key][i]
        }
        style.w = parseInt(style.w);
        style.h = parseInt(style.h);
        style = MarginPadding(style, 'margin', 'margin');
        style = MarginPadding(style, 'marginproc', 'marginproc');
        var control = createElement("div");
        if (v.toolbar.hidedown == 1 && v.toolbar.hide == 1) {
            o.toolbar.appendChild(control)
        } else {
            o.frame.appendChild(control)
        }
        action == "line" ? o.timeline = control : '';
        css(control, {
            "position": "absolute",
            "top": 0,
            "left": 0,
            "opacity": 1,
            "fontSize": "14px",
            "lineHeight": "1em"
        });
        if (style.ontop == 1) {
            control.style.zIndex = 5
        }
        Background();
        var lines = createElement("div");
        css(lines, {
            "position": "absolute",
            "bottom": Math.round(-style.h / 2),
            "left": Math.round(-style.w / 2),
            "transition": "transform 0.2s ease-in-out"
        });
        if (style.roundout == 1) {
            css(lines, {
                "border-radius": style.rounding * style.h / 2,
                "height": style.h,
                "overflow": "hidden",
                "pointer-events": "none"
            })
        }
        if (exist(style.dom)) {
            if (style.dom != '') {
                attr(control, {
                    "id": (v.id + "_control_" + style.dom)
                })
            }
        }
        control.appendChild(lines);
        if (action == 'line' && v.thumbs == 1) {
            CreateThumb()
        }
        if (style.tip == 1) {
            CreateTip()
        }
        var line0 = createElement("div");
        StyleLine(line0, 0.3, (style.gradient == 1 ? "linear-gradient(#" + style.gradientcolorbg + ", #" + style.colorbg + ")" : style.colorbg), style.w, style.abg);
        if (style.customdesign == 1 && exist(style.customdesignsvg)) {
            var svg0 = createElement("div");
            svg0.innerHTML = style.customdesignsvg.replace(/\#FFFFFF/g, "#" + style.colorbg);
            line0.appendChild(svg0);
            css(svg0, {
                "position": "absolute",
                "bottom": -Math.round(style.h / 2),
                "left": 0,
                "pointer-events": "none"
            });
            css(line0, {
                "overflow": "hidden",
                "background": "none"
            });
            var x = ["path", "polygon", "polyline", "rect", "ellipse"];
            for (var y = 0; y < x.length; y++) {
                var z = svg0.querySelectorAll("svg " + x[y]);
                if (z.length > 0) {
                    for (var y2 = 0; y2 < z.length; y2++) {
                        z[y2].style.fill = style.colorbg
                    }
                }
            }
        }
        lines.appendChild(line0);
        var lines1 = [];
        var line1 = createElement("div");
        StyleLine(line1, style.linespeed1, (style.gradient == 1 ? "linear-gradient(#" + style.gradientcolorload + ", #" + style.colorload + ")" : style.colorload), 0, style.aload);
        lines.appendChild(line1);
        if (style.aover > 0) {
            var line2 = createElement("div");
            StyleLine(line2, style.linespeed2, style.colorover, 0, style.aover);
            lines.appendChild(line2)
        }
        var line3 = createElement("div");
        StyleLine(line3, style.linespeed3, (style.gradient == 1 ? "linear-gradient(#" + style.gradientcolor + ", #" + style.color + ")" : style.color), 0, style.a);
        if (style.customdesign == 1 && exist(style.customdesignsvg)) {
            var svg3 = createElement("div");
            svg3.innerHTML = style.customdesignsvg.replace(/\#FFFFFF/g, "#" + style.color);
            css(svg3, {
                "position": "absolute",
                "bottom": -Math.round(style.h / 2),
                "left": 0,
                "pointer-events": "none"
            });
            css(line3, {
                "overflow": "hidden",
                "background": "none"
            });
            line3.appendChild(svg3)
        }
        if (style.value == 1) {
            var line3value = createElement("div");
            style = MarginPadding(style, 'valuepadding', 'valuepadding');
            style = MarginPadding(style, 'valuemargin', 'valuemargin');
            css(line3value, {
                "position": "absolute",
                "bottom": style.h / 2,
                "right": 0,
                "pointer-events": "none",
                "font-size": (style.valuesize + "px"),
                "color": style.valuecolor,
                "line-height": "100%",
                "padding-top": style.valuepaddingtop,
                "padding-bottom": style.valuepaddingbottom,
                "padding-left": style.valuepaddingleft,
                "padding-right": style.valuepaddingright,
                "margin-top": style.valuemargintop,
                "margin-bottom": style.valuemarginbottom,
                "margin-left": style.valuemarginleft,
                "margin-right": style.valuemarginright,
                "border-radius": (style.valuerounding + "px"),
                "display": "none"
            });
            if (style.valuebg == 1) {
                css(line3value, {
                    "background": "#" + style.valuebgcolor
                })
            }
            line3.appendChild(line3value);
            var l3v_show = false;
            var l3v_left = false
        }
        o.timeline_h = style.h;
        lines.appendChild(line3);
        if (style.pointed == 1) {
            v.pointed = 1;
            var pointscontrol = createElement("div");
            css(pointscontrol, {
                "position": "absolute",
                "top": 0,
                "left": 0
            });
            control.appendChild(pointscontrol);
            exist(v.points) ? UpdatePoints(v.points) : ''
        }
        if (style.handle == 1) {
            if (style.handleicon.toString().indexOf('<svg') > -1) {
                handle = createElement("div");
                handle.innerHTML = style.handleicon.toString();
                style = MarginPadding(style, 'handlemargin', 'handlemargin');
                css(handle, {
                    "position": "absolute",
                    "top": -10 + style.handlemargintop - style.handlemarginbottom,
                    "left": -1000,
                    "pointer-events": "none",
                    "height": 20,
                    "width": style.handle_width,
                    "opacity": style.handlea,
                    "transition": "transform 0.1s linear, opacity 0.1s linear"
                });
                if (style.handlehide == 1 || style.handlehideinit == 1) {
                    css(handle, {
                        "transform": "scale(0)"
                    })
                } else {
                    if (style.handlescale != 1) {
                        css(handle, {
                            "transform": "scale(" + style.handlescale + ")"
                        })
                    }
                }
                control.appendChild(handle);
                if (style.handlecolor != -1) {
                    var x = ["path", "rect", "ellipse"];
                    for (var y = 0; y < x.length; y++) {
                        var z = handle.querySelectorAll("svg " + x[y]);
                        if (z.length > 0) {
                            for (var y2 = 0; y2 < z.length; y2++) {
                                z[y2].style.fill = "#" + style.handlecolor
                            }
                        }
                    }
                }
                style.handlewidth = handle.offsetWidth
            } else {
                style.handle = 0
            }
        }
        if (style.rotation != 0) {
            css(control, {
                "transform": "rotate(" + style.rotation + "deg)"
            })
        }
        if (style.hidden == 1) {
            hide(control);
            visible = false
        }
        if (action == "volume") {
            if (style.hide == 1 && style.hideoutmute == 1) {
                o.hidden_volume = true;
                style.hidden = true
            } else {
                o.hidden_volume = false
            }
        }
        style.vertical = 0;
        if (style.rotation != 0) {
            style.rotation2 = Math.abs(style.rotation);
            if (style.rotation2 > 45 && style.rotation2 < 135) {
                style.vertical = 90
            }
            if (style.rotation2 > 225 && style.rotation2 < 315) {
                style.vertical = 270
            }
        }

        function StyleLine(x, y, z, _w, _a) {
            css(x, {
                "position": "absolute",
                "bottom": 0,
                "left": 0,
                "width": _w,
                "height": style.h,
                "background": z ? (z.indexOf("linear") > -1 ? z : '#' + z) : '',
                "border-radius": (style.roundout == 1 ? 1 : style.rounding * style.h / 2),
                "opacity": _a,
                "pointer-events": "none",
            })
        }

        function Background() {
            bg = createElement("div");
            style = MarginPadding(style, 'bgpadding', 'bgpadding');
            var bgh = style.h + style.bgpaddingtop + style.bgpaddingbottom;
            var bgw = style.w + style.bgpaddingleft + style.bgpaddingright;
            if (style.bg == 1) {} else {
                style.bga = 0
            }
            style = MarginPadding(style, 'clickmargin', 'clickmargin');
            if (v.toolbar.clickarea == 1 || style.clickarea == 1) {
                style.bgcolor = '#ff0000';
                style.bg = 1;
                style.bga = 0.5
            }
            css(bg, {
                "position": "absolute",
                "top": 0,
                "left": 0,
                "width": bgw,
                "height": bgh * style.clickscaley,
                "borderRadius": (style.bgo * bgh) / 2,
                "backgroundColor": style.bgcolor,
                "opacity": style.bga,
                "pointerEvents": "auto",
                "transition": "opacity .1s linear, background .1s linear"
            });
            if (style.bgborder == 1) {
                css(bg, {
                    "border": "1px solid #" + style.bgbordercolor
                })
            }
            css(bg, {
                "top": -style.h / 2 - style.bgpaddingtop + style.clickmargintop - style.clickmarginbottom
            });
            if (style.click == 1) {
                if (style.hand == 1) {
                    css(bg, {
                        "cursor": "pointer"
                    })
                }
                if (!o.system.mobile) {
                    bg.onclick = onClick;
                    bg.onmouseup = onUp;
                    bg.onmousedown = onDown;
                    bg.onmousemove = onMove
                }
            } else {
                css(bg, {
                    "cursor": "default"
                })
            }
            if (!o.system.mobile) {
                bg.onmouseover = onOver;
                bg.onmousemove = onMove;
                bg.onmouseout = onOut
            }
            if (o.system.mobile) {
                bg.addEventListener("touchstart", function(event) {
                    event.cancelBubble = true;
                    if (!exist(event.clientX) && event.touches.length > 0) {
                        event.clientX = event.touches[0].pageX;
                        event.clientY = event.touches[0].pageY
                    }
                    lastTouch = event;
                    onOver(event);
                    onDown(event)
                });
                bg.addEventListener("touchend", function(event) {
                    event.cancelBubble = true;
                    onOut(event);
                    onUp(lastTouch)
                });
                bg.addEventListener("click", function(event) {
                    event.cancelBubble = true
                });
                bg.addEventListener("touchmove", function(event) {
                    if (!exist(event.clientX) && event.touches.length > 0) {
                        event.clientX = event.touches[0].pageX;
                        event.clientY = event.touches[0].pageY
                    }
                    lastTouch = event;
                    onMove(event)
                })
            }
            css(bg, {
                "left": -style.w / 2 - style.bgpaddingleft
            });
            css(bg, {
                "top": -style.h / 2 - style.bgpaddingtop + style.clickmargintop - style.clickmarginbottom
            });
            control.appendChild(bg)
        }

        function Resize(width) {
            if (width != w) {
                w = width;
                o.timeline_w = w;
                var delta = w / line0.offsetWidth;
                css(bg, {
                    "width": (w + style.bgpaddingleft + style.bgpaddingright),
                    "left": -w / 2 - style.bgpaddingleft,
                });
                css(lines, {
                    "left": -w / 2
                });
                css(line0, {
                    "width": w
                });
                css(lines, {
                    "width": w
                });
                var xx = line1.offsetWidth * delta;
                if (xx > line0.offsetWidth) {
                    xx = line0.offsetWidth
                }
                css(line1, {
                    "width": xx
                });
                var wp = line3.offsetWidth * delta;
                css(line3, {
                    "width": wp
                });
                HandleWidth(wp, false);
                if (action == "line") {
                    Continue()
                }
                if (style.pointed == 1) {
                    PlacePoints()
                }
            }
        }

        function HandleWidth(x, none) {
            if (style.handle == 1) {
                if (x < style.handlewidth / 2 && style.handle_width != 20) {
                    x = style.handlewidth / 2
                }
                if (x > w - style.handlewidth / 2 && style.handle_width != 20) {
                    x = w - style.handlewidth / 2
                }
                var y = x - w / 2 - style.handlewidth / 2 + style.handlemarginleft - style.handlemarginright;
                css(handle, {
                    "left": y
                })
            }
        }

        function ShowHandle() {
            css(handle, {
                "transform": "scale(" + style.handlescale + ")"
            })
        }

        function onOver(event) {
            o.controls.Mouse(key, "over");
            if (style.bg == 1) {
                if (style.bgaover != -1) {
                    var m = new Motion({
                        "mc": bg,
                        "type": "alpha_div",
                        "to": style.bgaover,
                        "time": 0.1,
                        "me": (key + "bg")
                    })
                }
                if (exist(style.bgcolorover)) {
                    if (style.bgcolorover != -1) {
                        css(bg, {
                            "background-color": style.bgcolorover
                        })
                    }
                }
            }
            if (exist(style.coloroverplay)) {
                if (style.coloroverplay != -1) {
                    css(line3, {
                        "background-color": style.coloroverplay
                    })
                }
            }
            if (style.handle == 1) {
                if (style.handleiconsover == 1 && exist(style.handleiconover)) {
                    if (style.handleiconspress == 1 && mouseDown) {} else {
                        handle.innerHTML = "<svg width='" + style.handle_width + "' height='20' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'>" + style.handleiconover.toString() + "</svg>"
                    }
                }
                if (style.handlehide == 1) {
                    if (style.handlehideinit == 1 && !o.start) {} else {
                        ShowHandle()
                    }
                } else {
                    if (style.handleaover != -1) {
                        var m2 = new Motion({
                            "mc": handle,
                            "type": "alpha_div",
                            "to": style.handleaover,
                            "time": 0.1,
                            "me": (key + "handle")
                        })
                    }
                }
            }
            if (style.tip == 1 && (o.media.duration() > 0 || action == "volume")) {
                show(tip);
                css(tip, {
                    "opacity": 1
                })
            }
            if (style.expand > 0) {
                css(bg, {
                    "transform": "scaleY(" + ((style.expand - 1) / 5 + 1) + ")"
                });
                css(lines, {
                    "transform": "scaleY(" + style.expand + ")"
                })
            }
            if (action == "volume") {
                o.actions.volumewheel(true);
                o.volumewheel = true
            }
            o.controlover = true
        }

        function onOut() {
            if (!mouseUp) {
                if (style.aover > 0) {
                    css(line2, {
                        "width": 0
                    })
                }
                if (exist(style.coloroverplay)) {
                    if (style.coloroverplay != -1) {
                        css(line3, {
                            "background-color": style.color
                        })
                    }
                }
                if (style.bg == 1) {
                    if (style.bgaover != -1) {
                        var m = new Motion({
                            "mc": bg,
                            "type": "alpha_div",
                            "to": style.bga,
                            "time": 0.1,
                            "me": (key + "bg")
                        })
                    }
                    if (exist(style.bgcolorover)) {
                        if (style.bgcolorover != -1) {
                            css(bg, {
                                "background-color": style.bgcolor
                            })
                        }
                    }
                }
                if (style.handle == 1) {
                    if (style.handleiconsover == 1 && exist(style.handleiconover)) {
                        if (style.handleiconspress == 1 && mouseDown) {} else {
                            handle.innerHTML = "<svg width='" + style.handle_width + "' height='20' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'>" + style.handleicon.toString() + "</svg>"
                        }
                    }
                    if (style.handlehide == 1) {
                        css(handle, {
                            "transform": "scale(0)"
                        })
                    } else {
                        if (style.handleaover != -1) {
                            var m2 = new Motion({
                                "mc": handle,
                                "type": "alpha_div",
                                "to": style.handlea,
                                "time": 0.1,
                                "me": (key + "handle")
                            })
                        }
                    }
                }
                if (style.expand > 0) {
                    css(bg, {
                        "transform": "scaleY(1)"
                    });
                    css(lines, {
                        "transform": "scaleY(1)"
                    })
                }
                if (action == "volume" && !o.fullscreen) {
                    o.actions.volumewheel(false);
                    o.volumewheel = false
                }
                o.controls.Mouse(key, "out")
            }
            if (style.tip == 1 && (o.media.duration() > 0 || action == "volume")) {
                hide(tip);
                css(tip, {
                    "opacity": 0
                })
            }
            if (o.thumbs_on && action == "line") {
                hide2(thumb);
                current_thumb = -1
            }
            o.controlover = false
        }

        function onClick(event) {
            event.cancelBubble = true
        }

        function CancelBubble(event) {
            event.cancelBubble = true
        }

        function onUp(event) {
            if (action == "volume") {
                if (o.hidden_volume_over) {
                    mouseUp = true;
                    clearTimeout(onup_to);
                    onup_to = setTimeout(function() {
                        mouseUp = false;
                        onOut()
                    }, 1000)
                }
            }
            EndMove();
            o.mouseDown = false;
            if (style.handle == 1) {
                if (style.handleiconspress == 1 && exist(style.handleiconpress)) {
                    handle.innerHTML = "<svg width='20' height='20' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'>" + style.handleicon.toString() + "</svg>"
                }
            }
            CalculateClick(event.clientX, event.clientY);
            o.controls.ControlClick(key);
            o.controls.StageMouseUp(event.clientX, event.clientY);
            event.cancelBubble = true
        }

        function onDown(event) {
            mouseDown = true;
            if (style.handle == 1) {
                if (style.handleiconspress == 1 && exist(style.handleiconpress)) {
                    handle.innerHTML = "<svg width='20' height='20' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'>" + style.handleiconpress.toString() + "</svg>"
                }
            }
            topBg = findTop(bg);
            leftBg = findLeft(bg);
            CalculateClick(event.clientX, event.clientY);
            UpdatePlay(click, 1, "no")
        }

        function CalculateClick(event_x, event_y) {
            var x;
            var xOffset = document.documentElement.scrollLeft;
            var yOffset = document.documentElement.scrollTop;
            event_y = event_y + yOffset;
            event_x = event_x + xOffset;
            if (style.vertical > 0) {
                x = event_y - topBg - style.bgpaddingright;
                click = x / w;
                if (style.vertical == 270) {
                    x = event_y - topBg - style.bgpaddingleft;
                    click = x / w;
                    click = (click - 1) * -1
                }
            } else {
                x = event_x - leftBg - style.bgpaddingleft;
                click = x / w;
                if (style.rotation > 134 && style.rotation < 235) {
                    x = event_x - leftBg - style.bgpaddingright;
                    click = x / w;
                    click = (click - 1) * -1
                }
            }
            click > 1 ? click = 1 : '';
            click < 0 ? click = 0 : ''
        }
        this.PlacePoints = function() {
            PlacePoints()
        };
        this.RenewPoints = function() {
            UpdatePoints()
        };

        function UpdatePoints() {
            if (points) {
                for (var i = 0; i < points.length; i++) {
                    pointscontrol.removeChild(points[i])
                }
            }
            points = [];
            if (v.points) {
                for (var i = 0; i < Object.keys(v.points).length; i++) {
                    if (v.points[i].time) {
                        points[i] = createElement("div");
                        css(points[i], {
                            'position': 'absolute',
                            'left': 0,
                            'top': -style.h / 2,
                            'width': (exist(v.points[i].width) ? v.points[i].width : style.pointw),
                            'height': style.h,
                            'opacity': (exist(v.points[i].opacity) ? v.points[i].opacity : style.pointa),
                            'pointer-events': 'none',
                            'display': 'none',
                            'background-color': (exist(v.points[i].color) ? v.points[i].color : style.pointcolor)
                        });
                        points[i].time = v.points[i].time;
                        pointscontrol.appendChild(points[i])
                    }
                }
                PlacePoints()
            }
        }

        function PlacePoints() {
            var x = o.media.duration();
            for (var i = 0; i < points.length; i++) {
                if (x > 0) {
                    css(points[i], {
                        'left': w * (points[i].time / x) - w / 2,
                        'display': 'block'
                    })
                } else {
                    hide2(points[i])
                }
            }
        }

        function EndMove() {
            mouseDown = false
        }

        function onMove(event) {
            if (style.aover > 0) {
                if (o.start || action != 'line') {
                    css(line2, {
                        "width": event.clientX - leftBg
                    })
                }
            }
            if (style.tip == 1 && (o.media.duration() > 0 || action == "volume")) {
                !isVisible(tip) ? show(tip) : '';
                topBg = findTop(bg);
                leftBg = findLeft(bg);
                CalculateClick(event.clientX, event.clientY);
                if (action == "line") {
                    if (v.hlsdvrtime == 1) {
                        if (o.media.isLive() && o.media.currentFile().indexOf("?DVR") > 0) {
                            tiptext.innerHTML = '- ' + timeFormat((1 - click) * o.media.duration(true))
                        } else {
                            tiptext.innerHTML = timeFormat(click * o.media.duration())
                        }
                    } else {
                        tiptext.innerHTML = timeFormat(click * o.media.duration())
                    }
                }
                if (action == "volume") {
                    tiptext.innerHTML = Math.round(click * 100)
                }
                css(tip, {
                    "top": (-tiptext.offsetHeight * 2 - style.linetipmarginbottom * 1) - (style.toptip == 1 ? (style.h / 2) * (style.expand > 0 ? style.expand : 1) : 0),
                    "left": (-w / 2 + (event.clientX + document.documentElement.scrollLeft - leftBg) - tip.offsetWidth / 2),
                    "height": style.tippaddingtop + style.tipfontsize + style.tippaddingbottom,
                    "width": style.tippaddingleft + tiptext.offsetWidth + style.tippaddingright,
                });
                css(tipbg, {
                    'height': tip.offsetHeight
                });
                tip.style.zIndex = "1000"
            }
            if (o.thumbs_on && action == "line") {
                if (o.media.duration() > 0) {
                    if (style.tip == 0) {
                        topBg = findTop(bg);
                        leftBg = findLeft(bg);
                        CalculateClick(event.clientX, event.clientY)
                    }
                    var left = (-w / 2 + (event.clientX - leftBg) - v.thumb_width / 2);
                    left > w / 2 - v.thumb_width ? left = w / 2 - v.thumb_width : '';
                    css(thumb, {
                        "top": (-v.thumb_height - 5 - v.thumb_border),
                        "left": (left < -w / 2 ? -w / 2 : left)
                    });
                    ThumbsTime(click * o.media.duration())
                }
            }
        }
        this.c = function() {
            return control
        };
        this.s = function(key) {
            return style[key]
        };
        this.ss = function(x, x2) {
            return style[x][x2]
        };
        this.g = function(x) {
            switch (x) {
                case "width":
                    return w;
                    break;
                case "offsetwidth":
                    return line0.offsetWidth;
                    break;
                case "height":
                    return style.h;
                    break;
                case "x":
                    return int(control.style.left);
                    break;
                case "y":
                    return int(control.style.top);
                    break;
                case "opacity":
                    return control.style.opacity ? control.style.opacity : 1;
                    break;
                case "show":
                    return visible;
                    break;
                case "scaleX":
                    return scaleX;
                    break;
                case "scaleY":
                    return scaleY;
                    break;
                case "action":
                    return action;
                    break;
                case "key":
                    return key;
                    break;
                case "x0":
                    return x0;
                    break;
                case "y0":
                    return y0;
                    break;
                case "click":
                    return click;
                    break;
                default:
                    return false
            }
        };
        this.set = function(key, x) {
            switch (key) {
                case "show":
                    visible = x;
                    break;
                case "mouseDown":
                    mouseDown = x;
                    break;
                case "display":
                    action == "line" || style.hide == 1 ? css(control, {
                        "visibility": (x ? "visible" : "hidden")
                    }) : css(control, {
                        "display": (x ? "block" : "none")
                    });
                    visible = x;
                    break;
                case "scaleX":
                    css(control, {
                        "transform": "scaleX(" + x + ")"
                    });
                    scaleX = x;
                    break;
                case "scaleY":
                    css(control, {
                        "transform": "scaleY(" + x + ")"
                    });
                    scaleY = x;
                    break;
                case "opacity":
                    css(control, {
                        "opacity": x
                    });
                    break;
                case "left":
                    css(control, {
                        "left": x
                    });
                    break;
                case "top":
                    css(control, {
                        "top": x
                    });
                    break;
                case "click":
                    click = x;
                    break;
                case "hiddenwidth":
                    style.hiddenwidth = x;
                    break;
                case "width":
                    css(control, {
                        "width": x
                    });
                    break;
                case "height":
                    css(control, {
                        "height": x
                    });
                    break;
                case "over_final":
                    style.roundingver_final = x;
                    break;
                case "x":
                    css(control, {
                        "left": x
                    });
                    break;
                case "y":
                    css(control, {
                        "top": x
                    });
                    break;
                case "x0":
                    x0 = x;
                    break;
                case "y0":
                    y0 = x;
                    break
            }
        };
        this.Resize = function(x) {
            Resize(x)
        };
        this.StageLeave = function(x) {};
        this.StageMove = function(stage_x, stage_y) {
            if (mouseDown) {
                if (action == "volume") {
                    CalculateClick(stage_x, stage_y);
                    o.controls.ControlClick(key);
                    o.hidden_volume_over = true
                }
                CalculateClick(stage_x, stage_y);
                UpdatePlay(click, 1, "no")
            }
        };
        this.StageMouseUp = function(stage_x, stage_y) {
            if (mouseDown) {
                EndMove();
                mouseDown = false;
                CalculateClick(stage_x, stage_y);
                o.controls.ControlClick(key);
                UpdatePlay(click, 1, "no")
            }
        };

        function UpdatePlay(time, duration, animate) {
            time < 0 ? time = 0 : '';
            if (style.handle == 1 && style.handlehideinit == 1 && style.handlehide != 1) {
                if (!style.handleinit && time > 0) {
                    ShowHandle();
                    style.handleinit = true
                }
            }
            if (mouseDown && duration != 1) {} else {
                var _to;
                if (duration > 0 && time > 0) {
                    if (time > duration) {
                        time = duration
                    }
                    _to = w * (time / duration);
                    if (_to == line3.offsetWidth) {
                        _to = -1
                    }
                } else {
                    _to = 0
                }
                if (_to >= 0) {
                    css(line3, {
                        "width": _to
                    });
                    HandleWidth(_to, true)
                }
                if (exist(line3value)) {
                    if (duration < 2 && action == "line") {
                        if (l3v_show) {
                            hide2(line3value);
                            l3v_show = false
                        }
                    } else {
                        if (!l3v_show) {
                            show2(line3value);
                            l3v_show = true
                        }
                        line3value.innerHTML = action == "line" ? Time(time == 0 ? duration : time) : Math.ceil(time * 100);
                        if (_to < line3value.clientWidth + style.valuemarginright + style.valuemarginleft) {
                            if (!l3v_left) {
                                css(line3value, {
                                    "left": 0,
                                    "right": "auto"
                                });
                                l3v_left = true
                            }
                        } else {
                            if (l3v_left) {
                                css(line3value, {
                                    "right": 0,
                                    "left": "auto"
                                });
                                l3v_left = false
                            }
                        }
                    }
                }
            }
        };
        this.UpdatePlay = function(time, duration, animate) {
            if (duration != _duration_play || time != _time_play) {
                UpdatePlay(time, duration, animate)
            }
        };
        this.UpdatePlaySeek = function() {
            click > 1 ? click = 1 : '';
            click < 0 ? click = 0 : '';
            css(line3, {
                "width": (click * w)
            })
        };
        this.UpdateLoad = function(time, duration) {
            if (duration > 0 && time > 0) {
                var _to = w * (time / duration);
                css(line1, {
                    "width": int(_to)
                });
                _duration_load = duration;
                _time_load = time
            } else {
                _time_load = 0;
                css(line1, {
                    "width": 0
                })
            }
        };

        function ThumbsTime(x) {
            if (v.thumbs == 1) {
                if (o.thumbs_on) {
                    var y = -1;
                    if (exist(o.thumbs)) {
                        if (o.thumbs.length > 0) {
                            for (var i = o.thumbs.length - 1; i >= 0; i--) {
                                if (x >= o.thumbs[i].t1 && x <= o.thumbs[i].t2) {
                                    y = i;
                                    break
                                }
                            }
                        }
                    }
                    if (y != -1 && current_thumb != y) {
                        if (exist(o.thumbs[y])) {
                            if (exist(o.thumbs[y].url)) {
                                var z = o.thumbs[y].url;
                                if (z.indexOf('.') > -1) {
                                    !isVisible(thumb) ? show2(thumb) : '';
                                    css(thumb, {
                                        'background-image': 'url(' + o.thumbs[y].url + ')'
                                    });
                                    if (z.indexOf('xywh') > 0) {
                                        var xy = z.substr(z.indexOf('xywh') + 5);
                                        var xywh = xy.split(',');
                                        if (xywh.length == 4) {
                                            css(thumb, {
                                                'background-position-y': "-" + parseInt(xywh[1]) + 'px',
                                                'background-position-x': "-" + parseInt(xywh[0]) + 'px',
                                                'width': parseInt(xywh[2]) + 'px',
                                                'height': parseInt(xywh[3]) + 'px',
                                                'background-size': 'auto'
                                            });
                                            v.thumb_width = xywh[2];
                                            v.thumb_height = xywh[3]
                                        }
                                    } else {
                                        css(thumb, {
                                            'background-size': 'cover'
                                        })
                                    }
                                }
                            } else {
                                hide2(thumb)
                            }
                        }
                    } else {
                        y == -1 ? hide2(thumb) : ''
                    }
                    current_thumb = y
                }
            }
        }

        function CreateThumb() {
            thumb = createElement("div");
            css(thumb, {
                'position': 'absolute',
                'left': 0,
                'top': 0,
                'width': v.thumb_width,
                'height': v.thumb_height,
                'overflow': 'hidden',
                "pointer-events": "none",
                "background-color": "#000",
                "border-radius": v.thumb_radius + 'px',
                "display": "none"
            });
            if (v.thumb_border == 1) {
                css(thumb, {
                    "border": v.thumb_borderwidth + "px solid #" + v.thumb_bordercolor
                })
            }
            if (v.thumb_shadow == 1) {
                css(thumb, {
                    "box-shadow": "0px 1px 5px rgba(0,0,0,0.5)"
                })
            }
            thumb.style.zIndex = "999";
            control.appendChild(thumb)
        }

        function CreateTip() {
            tip = createElement("div");
            css(tip, {
                'position': 'absolute',
                'left': 0,
                'top': 0,
                'height': 'auto',
                "pointer-events": "none",
                "opacity": 0,
                "transition": "opacity 0.1s linear"
            });
            tipbg = createElement("div");
            style = MarginPadding(style, 'tippadding', 'tippadding');
            css(tipbg, {
                'position': 'absolute',
                'left': 0,
                'top': 0,
                'width': '100%',
                'height': 30,
                'background-color': style.tipbgcolor,
                'opacity': style.tipbga,
                'border-radius': style.tipbgrounding
            });
            tiptext = createElement("div");
            css(tiptext, {
                'position': 'absolute',
                'left': style.tippaddingright,
                'top': style.tippaddingtop,
                'color': style.tipcolor,
                'font-family': style.tipfont,
                'font-size': style.tipfontsize,
                "letter-spacing": style.tipletterspacing + 'px',
                "line-height": "1",
                'opacity': style.tipa
            });
            style.linetippointer ? style.tippointer = style.linetippointer : '';
            if (style.tippointer == 1) {
                tipcrn = createElement("div");
                tipcrn.innerHTML = '<svg width="8px" height="6px" viewBox="0 0 8 6" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><polygon id="Rectangle" stroke="none" fill="' + CheckColor(style.tipbgcolor) + '" fill-rule="evenodd" points="0 0 8 0 4 6"></polygon></svg>'
            }
            control.appendChild(tip);
            tip.appendChild(tipbg);
            tip.appendChild(tiptext);
            if (style.tippointer == 1) {
                tip.appendChild(tipcrn);
                css(tipcrn, {
                    'position': 'absolute',
                    'left': '50%',
                    'margin-left': '-4px',
                    'bottom': (o.doctype ? '-8px' : '-6px'),
                    'opacity': style.tipbga
                })
            }
        };

        function Continue() {
            if (o.continue && v.timestore == 1) {
                var f = o.continue.flag();
                if (f.t && f.d) {
                    UpdatePlay(f.t, f.d)
                }
            }
        };
        this.Remove = function() {
            control.removeChild(lines);
            if (bg) {
                bg.removeAttribute("onclick");
                bg.removeAttribute("onmouseover");
                bg.removeAttribute("onmouseout");
                bg.parentNode.removeChild(bg);
                bg = null
            }
            if (handle) {
                control.removeChild(handle)
            }
            if (control.parentNode == o.frame) {
                o.frame.removeChild(control)
            } else {
                if (o.toolbar) {
                    if (control.parentNode == o.toolbar) {
                        o.toolbar.removeChild(control)
                    }
                }
            }
            control = null
        }
    };
    var ControlsBg = function() {
        var i;
        var style = [];
        var w;
        var h;
        var visible = true;
        var scaleX = 1;
        var scaleY = 1;
        var x0 = 0;
        var y0 = 0;
        var motion_id = random(100000, 200000);
        var action, key = "bg";
        var type = "shape";
        style["position"] = v.toolbar.position;
        for (var k in v.toolbar) {
            if (v.toolbar.hasOwnProperty(k)) {
                style[k] = v.toolbar[k]
            }
        }
        if (style.show == 0) {
            v.toolbar.h = style.h = 0;
            style.padding = style.margin = "0 0 0 0";
            style.gradient = 0
        }
        style["scale"] = 1;
        style = MarginPadding(style, 'margin', 'margin');
        style = MarginPadding(style, 'marginproc', 'marginproc');
        if (exist(style.paddingtop)) {
            if (style.paddingtop != 20 && style.margin == "-20 0 0 0") {
                style.margintop = style.paddingtop
            }
        }
        var control = createElement("div");
        css(control, {
            'position': 'absolute',
            'left': 0,
            'top': 0,
            'width': (style.stretchonfullscreen == 1 ? '100%' : o.normal_w),
            'height': style.h - style.margintop,
            'opacity_': style.a,
            'pointer-events': 'none',
            'fontSize': '14px',
            'lineHeight': '1em'
        });
        o.frame.appendChild(control);
        var bg = createElement("div");
        css(bg, {
            'position_': 'absolute',
            'left_': 0,
            'top_': 0,
            'width_': '100%',
            'height': style.h - style.marginbottom - style.margintop,
            'opacity': style.a,
            'display': 'block',
            'margin-left': style.marginleft,
            'margin-right': style.marginright,
            'border-radius': style.rounding
        });
        control.appendChild(bg);
        w = control.offsetWidth;
        v.toolbar_margintop = -style.margintop;
        if (style.gradient == 1) {
            if (style.color == '000000' || v.toolbar.image != '') {
                v.toolbar_margintop = 98 - style.h;
                var img = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==';
                if (v.toolbar.image.indexOf("data:image") > -1) {
                    img = v.toolbar.image
                }
                css(bg, {
                    'height': style.h + v.toolbar_margintop,
                    'background': 'url(' + img + ') repeat-x 50% 100%',
                    'background-size': 'auto'
                })
            } else {
                var bgg = 'to bottom, rgba(' + hexToRgb(style.color) + ',0), rgba(' + hexToRgb(style.color) + ',1)';
                css(bg, {
                    'background': '-moz-linear-gradient(' + bgg + ')',
                    'background': '-webkit-linear-gradient(' + bgg + ')',
                    'background': '-ms-linear-gradient(' + bgg + ')',
                    'background': '-o-linear-gradient(' + bgg + ')',
                    'background': 'linear-gradient(' + bgg + ')'
                })
            }
        } else {
            css(bg, {
                'background-color': style.color
            })
        }
        this.h = function() {
            return style.h - style.margintop
        };
        this.c = function() {
            return control
        };
        this.s = function(key) {
            return style[key]
        };
        this.g = function(x) {
            if (control) {
                switch (x) {
                    case "w":
                        control.offsetWidth > 0 ? w = control.offsetWidth : '';
                        return w;
                        break;
                    case "width":
                        return control.offsetWidth;
                        break;
                    case "height":
                        return control.offsetHeight;
                        break;
                    case "x":
                        return int(control.style.left);
                        break;
                    case "y":
                        return int(control.style.top);
                        break;
                    case "opacity":
                        return control.style.opacity ? control.style.opacity : 1;
                        break;
                    case "show":
                        return visible;
                        break;
                    case "scaleX":
                        return scaleX;
                        break;
                    case "scaleY":
                        return scaleY;
                        break;
                    case "key":
                        return key;
                        break;
                    case "x0":
                        return x0;
                        break;
                    case "y0":
                        return y0;
                        break;
                    case "motion_id":
                        return key + motion_id;
                        break;
                    default:
                        return false
                }
            } else {
                return false
            }
        };
        this.set = function(key, x) {
            switch (key) {
                case "show":
                    visible = x;
                    break;
                case "w":
                    w = x;
                    break;
                case "display":
                    css(control, {
                        "display": (x ? "block" : "none")
                    });
                    visible = x;
                    break;
                case "scale":
                    css(control, {
                        "transform": "scale(" + x + ")"
                    });
                    scaleX = x;
                    scaleY = x;
                    break;
                case "scaleX":
                    css(control, {
                        "transform": "scaleX(" + x + ")"
                    });
                    scaleX = x;
                    break;
                case "scaleY":
                    css(control, {
                        "transform": "scaleY(" + x + ")"
                    });
                    scaleY = x;
                    break;
                case "opacity":
                    css(control, {
                        "opacity": x
                    });
                    break;
                case "left":
                    css(control, {
                        "left": x
                    });
                    break;
                case "top":
                    css(control, {
                        "top": x
                    });
                    break;
                case "width":
                    css(control, {
                        "width": x
                    });
                    break;
                case "height":
                    css(control, {
                        "height": x
                    });
                    break;
                case "x":
                    css(control, {
                        "left": x
                    });
                    break;
                case "y":
                    css(control, {
                        "top": x
                    });
                    break;
                case "x0":
                    x0 = x;
                    break;
                case "y0":
                    y0 = x;
                    break
            }
        };
        this.Remove = function() {
            o.frame.removeChild(control);
            control = null
        }
    };
    var Settings = function(is) {
        var i;
        var style = [];
        var f = [];
        var fbg = [];
        var fimg = [];
        var ftitle = [];
        var fvalue = [];
        var faction = [];
        var f2 = [];
        var f2bg = [];
        var f2img = [];
        var f2title = [];
        var f2value = [];
        var f2action = [];
        var stout = [];
        var is_visible = false;
        var open_action;
        var open_settings = -1;
        var empty = true;
        var key = is;
        var playlist;
        var shuffle = [];
        var shuffle_ = [];
        var plid = '';
        var plfolder = '';
        var plx = -1;
        var sub_settings_on = false;
        var sub_settings = false;
        var autonextopenfolder = false;
        var autoprevopenfolder = false;
        var justshow = false;
        var removed = false;
        var showinterval;
        var arrinterval;
        var wheelinterval;
        var hidetimeout;
        var scale_i = -1;
        style = UpdateObject(style, v[is]);
        style = MarginPadding(v[is], 'margin', 'margin');
        if (style.marginbg == 0) {
            style.marginbgpadding = "0 0 0 0"
        }
        style = MarginPadding(v[is], 'bgpadding', 'marginbgpadding');
        style = MarginPadding(v[is], 'padding', 'padding');
        style.scrollwidth = 0;
        var _activeIcon = "<svg width='" + style.activeiconsize * 2 + "' height='" + (style.activeiconsize * 2 > style.valuefontsize ? (style.activeiconsize * 2) : style.valuefontsize) + "' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g><ellipse ry='" + (style.activeiconsize) + "' rx='" + style.activeiconsize + "' cy='" + (style.activeiconsize * 2 > style.valuefontsize ? (style.activeiconsize) : (style.valuefontsize / 2)) + "' cx='" + style.activeiconsize + "' fill='#" + style.valuecolor + "'/></g></svg>";
        var _xIcon = "<svg width='" + style.activeiconsize * 2 + "' height='" + style.valuefontsize + "' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg' ><g><ellipse ry='" + (style.activeiconsize - 1) + "' rx='" + (style.activeiconsize - 1) + "' cy='" + (style.valuefontsize / 2 + 2) + "' cx='" + style.activeiconsize + "' stroke='#" + style.valuecolor + "' stroke='1' fill-opacity='0'/></g></svg>";
        var xx = 4;
        var _nextIcon = "<svg width='" + (xx + 2) + "' height='" + (style.valuefontsize) + "' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g><line x1='1' y1='" + (style.valuefontsize / 2 - xx) + "' x2='" + xx + "' y2='" + (style.valuefontsize / 2) + "' stroke='#" + style.color + "' stroke-width='1' stroke-linecap='round'/><line x1='" + xx + "' y1='" + (style.valuefontsize / 2) + "' x2='1' y2='" + (style.valuefontsize / 2 + xx) + "' stroke='#" + style.color + "' stroke-width='1' stroke-linecap='round'/></g></svg>";
        var _prevIcon = "<svg width='" + (xx + 2) + "' height='" + (style.valuefontsize + 2) + "' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g><line x1='1' y1='" + (style.valuefontsize / 2 + 2) + "' x2='" + xx + "' y2='" + (style.valuefontsize / 2 - xx + 2) + "' stroke='#" + style.color + "' stroke-width='1' stroke-linecap='round'/><line x1='1' y1='" + (style.valuefontsize / 2 + 2) + "' x2='" + xx + "' y2='" + (style.valuefontsize / 2 + xx + 2) + "' stroke='#" + style.color + "' stroke-width='1' stroke-linecap='round'/></g></svg>";
        var container = createElement("div");
        o.frame.appendChild(container);
        css(container, {
            'overflow': 'hidden',
            'display': 'block',
            'opacity': 0,
            'border-radius': style.rounding
        });
        if (is == "settings") {
            container.style.zIndex = 100
        } else {
            container.style.zIndex = 99
        }
        var control = createElement("div");
        css(control, {
            'position': 'relative',
            'top': 0,
            'left': 0,
            'display': 'block',
            'width': '100%',
            'padding-top': style.bgpaddingtop,
            'padding-right': style.bgpaddingright + 20,
            'padding-bottom': style.bgpaddingbottom,
            'padding-left': style.bgpaddingleft,
            'color': style.color,
            'font-size': style.fontsize,
            'font-family': style.font,
            'letter-spacing': style.letterspacing + 'px'
        });
        if (o.system.safari) {
            css(control, {
                'min-width': 220
            })
        }
        if (is !== "playlist") {
            css(control, {
                'overflow-y': 'scroll'
            })
        }
        container.appendChild(control);
        if (style.floatleft != 1) {
            var control2 = createElement("div");
            css(control2, {
                'display': 'block',
                'overflow': 'hidden',
                'border-radius': style.rounding
            });
            if (style.floatleft != 1) {
                if (o.system.safari) {
                    css(control2, {
                        'min-width': 220
                    })
                }
            }
            control.appendChild(control2)
        }
        if (is == "playlist") {
            attr(control, {
                id: (v.id + "_" + is)
            });
            if (style.floatleft == 1) {
                css(control, {
                    'width': '100%',
                    'padding-right': style.bgpaddingright,
                    'padding-bottom': style.bgpaddingbottom + 20,
                    'overflow-x': 'scroll',
                    'white-space': 'nowrap'
                });
                css(container, {
                    'width': o.screen_w - style.marginright - style.marginleft,
                    'height': style.floatheight + style.bgpaddingtop + style.bgpaddingbottom
                })
            } else {
                css(control, {
                    'overflow-y': 'scroll'
                });
                if (style.width100 == 1) {
                    ResizePlaylist()
                }
            }
            if (style.marginbg == 1) {
                css(container, {
                    'background-color': style.marginbgcolor
                })
            }
            if (v.playlist.droplist == 1) {
                hide2(container)
            }
        }
        if (style.scrollarrows == 1) {
            var arr_up = createElement("div");
            var scrollbgcolor = hexToRgb(style.marginbg == 1 ? style.marginbgcolor : style.bgcolor);
            if (style.floatleft == 1) {
                StyleArrow(arr_up, 'to right, rgba(' + scrollbgcolor + ',' + (style.bga * 1 + 0.3) + '), rgba(' + scrollbgcolor + ',0)', 'left', 12, 5, 7, 10, 7, 10, 12, 15);
                if (o.system.mobile) {
                    arr_up.addEventListener("touchstart", ScrollLeft)
                } else {
                    arr_up.addEventListener("click", ScrollLeft)
                }
            } else {
                StyleArrow(arr_up, 'to bottom, rgba(' + scrollbgcolor + ',' + (style.bga * 1 + 0.3) + '), rgba(' + scrollbgcolor + ',0)', 'top', 5, 12, 10, 7, 10, 7, 15, 12);
                if (o.system.mobile) {
                    arr_up.addEventListener("touchstart", ScrollUp)
                } else {
                    arr_up.addEventListener("click", ScrollUp)
                }
            }
            var arr_down = createElement("div");
            if (style.floatleft == 1) {
                StyleArrow(arr_down, 'to left, rgba(' + scrollbgcolor + ',' + (style.bga * 1 + 0.3) + '), rgba(' + scrollbgcolor + ',0)', 'right', 8, 5, 13, 10, 13, 10, 8, 15);
                if (o.system.mobile) {
                    arr_down.addEventListener("touchstart", ScrollRight)
                } else {
                    arr_down.addEventListener("click", ScrollRight)
                }
            } else {
                StyleArrow(arr_down, 'to bottom, rgba(' + scrollbgcolor + ',0), rgba(' + scrollbgcolor + ',' + (style.bga * 1 + 0.3) + ')', 'bottom', 5, 8, 10, 13, 10, 13, 15, 8);
                if (o.system.mobile) {
                    arr_down.addEventListener("touchstart", ScrollDown)
                } else {
                    arr_down.addEventListener("click", ScrollDown)
                }
            }
            control.addEventListener("wheel", Wheel, {
                passive: true
            });
            arr_up.addEventListener("mouseup", onMouseUp);
            arr_down.addEventListener("mouseup", onMouseUp);
            container.appendChild(arr_up);
            container.appendChild(arr_down);
            clearInterval(arrinterval);
            arrinterval = setInterval(ArrowsInterval, 1000)
        }
        if (o.system.mobile) {
            control.ontouchstart = ControlOver;
            control.ontouchend = ControlOut
        } else {
            control.onmouseover = ControlOver;
            control.onmouseout = ControlOut
        }
        if (is == "settings") {
            for (var i = 1; i < 11; i++) {
                if (exist(v["control_" + is][is + i])) {
                    v.settings[is + i] = v["control_" + is][is + i];
                    if (exist(v["control_" + is][is + i + "title"])) {
                        v.settings[is + i + "title"] = v["control_" + is][is + i + "title"]
                    }
                    if (exist(v["control_" + is][is + i + "action"])) {
                        v.settings[is + i + "action"] = v["control_" + is][is + i + "action"]
                    }
                }
                if (exist(v.settings[is + i])) {
                    if (v.settings[is + i] == 1) {
                        CreateItem('f', i);
                        StyleItem(f[i], fbg[i], ftitle[i], fvalue[i]);
                        ftitle[i].innerHTML = Lang(v.settings[is + i + "action"]);
                        if (exist(v.settings[is + i + "title"])) {
                            if (v.settings[is + i + "title"] != '') {
                                ftitle[i].innerHTML = v.settings[is + i + "title"]
                            }
                        }
                        if (exist(v.settings[is + i + "action"])) {
                            faction[i] = v.settings[is + i + "action"];
                            Value(i);
                            if (faction[i] == 'scale') {
                                scale_i = i
                            }
                        }
                        if (o.system.mobile) {
                            f[i].addEventListener("touchstart", onOver);
                            f[i].addEventListener("touchend", onOut)
                        } else {
                            f[i].addEventListener("mouseover", onOver);
                            f[i].addEventListener("mouseout", onOut)
                        }
                        f[i].addEventListener("click", onClick);
                        f[i].addEventListener("mouseup", onMouseUp);
                        if (v.settings[is + i + "hide"] == 1) {
                            hide(f[i])
                        }
                    }
                }
            }
        }

        function Wheel() {
            clearInterval(wheelinterval);
            wheelinterval = setInterval(ControlOut, 3000)
        }

        function ControlOver() {
            o.mouseDown = true
        }

        function ControlOut() {
            if (style.showovercontrol == 1) {
                clearTimeout(o.settingsovertimer);
                o.settingsovertimer = setTimeout(function() {
                    if (!o.mouseDown) {
                        HideControl()
                    }
                }, 1000)
            }
            o.mouseDown = false
        }

        function onOver(event) {
            if (o.fullscreen) {
                o.volumewheel ? o.actions.volumewheel(false) : ''
            }
            var i = event.target.getAttribute('fid');
            var x;
            if (i) {
                x = 'f'
            } else {
                if (event.target.getAttribute('f2id')) {
                    i = event.target.getAttribute('f2id');
                    x = 'f2'
                }
            }
            if (i) {
                i = parseInt(i);
                var opn = false;
                if (exist(eval(x)[i])) {
                    if (style.bgaover > -1) {
                        css(eval(x + 'bg')[i], {
                            'opacity': style.bgaover
                        })
                    }
                    if (style.aover > -1) {
                        css(eval(x + 'title')[i], {
                            'opacity': style.aover
                        });
                        css(eval(x + 'value')[i], {
                            'opacity': style.aover
                        })
                    }
                    if (is == "playlist") {
                        if (faction[i].indexOf("playlist") == 0) {
                            var id = faction[i].substr(8);
                            if (plid == id || plfolder == id) {
                                css(eval(x + 'title')[i], {
                                    'color': style.valuecolor
                                });
                                css(eval(x + 'value')[i], {
                                    'color': style.valuecolor
                                });
                                opn = true
                            } else {
                                css(eval(x + 'title')[i], {
                                    'color': style.color
                                })
                            }
                        }
                    }
                    if (style.playbgcolored == 1 && exist(style.playbgcolor) && opn) {} else {
                        css(eval(x + 'bg')[i], {
                            'backgroundColor': style.bgcolorover
                        })
                    }
                }
            }
        };

        function onOut(event) {
            if (o.fullscreen) {
                o.volumewheel ? o.actions.volumewheel(true) : ''
            }
            var i = event.target.getAttribute('fid');
            var x;
            var opn = false;
            if (i) {
                x = 'f'
            } else {
                if (event.target.getAttribute('f2id')) {
                    i = event.target.getAttribute('f2id');
                    x = 'f2'
                }
            }
            if (i) {
                if (exist(eval(x)[i])) {
                    if (style.bgaover > -1) {
                        css(eval(x + 'bg')[i], {
                            'opacity': style.bga,
                            "transition": "opacity 0.1s linear"
                        })
                    }
                    if (style.aover > -1) {
                        css(eval(x + 'title')[i], {
                            'opacity': style.a,
                            "transition": "opacity 0.1s linear"
                        });
                        css(eval(x + 'value')[i], {
                            'opacity': style.a,
                            "transition": "opacity 0.1s linear"
                        })
                    }
                    if (is == "playlist") {
                        if (faction[i].indexOf("playlist") == 0) {
                            var id = faction[i].substr(8);
                            if (plid == id || plfolder == id) {
                                css(eval(x + 'title')[i], {
                                    'color': style.valuecolor
                                });
                                css(eval(x + 'value')[i], {
                                    'color': style.valuecolor
                                });
                                opn = true
                            } else {
                                if (exist(o.plhistory[id])) {
                                    HistoryPlaylist(i)
                                } else {
                                    css(eval(x + 'title')[i], {
                                        'color': style.color
                                    })
                                }
                            }
                        }
                    }
                    if (style.playbgcolored == 1 && exist(style.playbgcolor) && opn) {} else {
                        css(eval(x + 'bg')[i], {
                            'backgroundColor': style.bgcolor
                        })
                    }
                }
            }
        }

        function onClick(event) {
            if (!justshow) {
                var d = new Date();
                o.clicktime = d.getTime();
                var i = event.target.getAttribute('fid');
                if (i) {
                    if (exist(f[i])) {
                        if (exist(faction[i])) {
                            Action(i)
                        }
                    }
                }
            }
        }

        function onMouseUp(event) {
            event.cancelBubble = true
        }

        function onClick2(event) {
            if (!justshow) {
                var d = new Date();
                o.clicktime = d.getTime();
                var i = event.target.getAttribute('f2id');
                if (i) {
                    if (i == 0) {
                        Home()
                    } else {
                        if (exist(f2action[i])) {
                            Action2(i)
                        }
                    }
                }
            }
        }

        function onClickSubtitle(event) {
            var x = event.target.getAttribute('setupx');
            if (x) {
                ActionOptions(x)
            }
        }

        function onClickSubtitle2(event) {
            var i = event.target.getAttribute('f2id');
            if (exist(f2action[i])) {
                if (f2action[i].indexOf("=") > 0) {
                    var x = f2action[i].substr(0, f2action[i].indexOf("="));
                    var y = f2action[i].substr(f2action[i].indexOf("=") + 1);
                    v[x] = y;
                    if (o.storage && v.sub_designstore == 1) {
                        localStorage.setItem("pljs" + x, y)
                    }
                    o.actions.RenewSubtitle();
                    ActionOptions(x)
                }
            }
        }

        function onClickTimer2(event) {
            var i = event.target.getAttribute('f2id');
            var x = f2action[i];
            if (exist(x)) {
                if (x.indexOf("=") > 0) {
                    var z = x.substr(0, x.indexOf("="));
                    var y = x.substr(x.indexOf("=") + 1);
                    v[z] = y;
                    SubtitleTimerMenu();
                    Value(o[open_action + '_i']);
                    if (open_action == "offsettimer") {
                        SettingsTimers("offsetwrite")
                    }
                }
            }
        }

        function Value(i) {
            if (exist(faction[i])) {
                var _hide = false;
                var _show = false;
                var _value = '';
                if (is == "settings") {
                    if (faction[i] == "quality") {
                        _value = o.media.getQuality()
                    }
                    if (faction[i] == "audiotrack") {
                        _value = o.media.getAudioTrack()
                    }
                    if (faction[i] == "channel") {
                        if (o.channels) {
                            _value = o.files_channel[o.current_channel]
                        }
                    }
                    if (faction[i] == "audiotrack" || faction[i] == "channel" || faction[i] == "quality") {
                        if (o['files_' + faction[i]].length == 0) {
                            _hide = true
                        } else {
                            if (o['files_' + faction[i]].length == 1 && (style.show1value != 1 || o['files_' + faction[i]][0] == 1)) {
                                _hide = true
                            } else {
                                _show = true
                            }
                        }
                    }
                    if (faction[i] == "airplay") {
                        if (!o.airplay) {
                            _hide = true
                        } else {
                            _show = true
                        }
                    }
                    if (faction[i] == "download") {
                        if (o.file_type != 'native' && !v.download) {
                            _hide = true
                        } else {
                            _show = true
                        }
                    }
                    if (faction[i] == "subtitle") {
                        if (exist(o.subs)) {
                            _show = true;
                            if (o.subtitle_on || v.sub_off == 1) {
                                _value = o.files_subtitle[!o.subtitle_on ? o.files_subtitle.length - 1 : o.current_subtitle]
                            } else {
                                _value = ''
                            }
                            var sxs = false;
                            for (var s = 0; s < o.subs.length; s++) {
                                if (o.subs[s] != '') {
                                    sxs = true;
                                    break
                                }
                            }
                            if (!sxs) {
                                _hide = true;
                                _show = false
                            }
                        } else {
                            _hide = true
                        }
                    }
                    if (faction[i] == "speed") {
                        _value = o.files_speed[o.current_speed];
                        _show = true;
                        if (o.file_type == "vimeo" || (o.media.isLive() && v.speed4live != 1)) {
                            _hide = true;
                            _show = false
                        }
                    }
                    if (faction[i] == "scale") {
                        _value = Math.round(o.mediascale.x * 100) + '%';
                        _show = true
                    }
                    if (faction[i].indexOf("timer") > 0) {
                        var x = ' ';
                        var y = ['hour', 'minute', 'second'];
                        for (var z = 0; z < y.length; z++) {
                            if (exist(v[faction[i] + y[z]])) {
                                if (v[faction[i] + y[z]] != ' ') {
                                    x += (x != ' ' ? ':' : '') + v[faction[i] + y[z]]
                                }
                            }
                        }
                        _value = x != ' 0:0' && x.indexOf(":") > -1 ? x : ' ';
                        _show = true
                    }
                }
                fvalue[i].innerHTML = _value + (_value != '' && style.hidearrow != 1 ? ' &nbsp;<svg width="5px" height="7px" viewBox="-1 -1 5 8" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><polyline stroke="#' + style.valuecolor + '" stroke-width="1" fill="none" points="0 0 3 3 0 6"></polyline></svg>' : '');
                if (_hide) {
                    hide(f[i]);
                    if (is == "settings") {
                        stout[i] ? clearTimeout(stout[i]) : '';
                        if (o.controls) {
                            o.controls.SettingsN(i, false, _value)
                        } else {
                            stout[i] = setTimeout(function() {
                                o.controls.SettingsN(i, false, _value)
                            }, 200)
                        }
                    }
                    css(f[i], {
                        'position': 'absolute',
                        'right': 0,
                        'top': -100
                    })
                }
                if (_show) {
                    if (style.floatleft == 1) {
                        css(f[i], {
                            'display': 'inline-block'
                        })
                    } else {
                        show(f[i])
                    }
                    if (is == "settings") {
                        stout[i] ? clearTimeout(stout[i]) : '';
                        if (o.controls) {
                            o.controls.SettingsN(i, true, _value)
                        } else {
                            stout[i] = setTimeout(function() {
                                o.controls.SettingsN(i, true, _value)
                            }, 500)
                        }
                    }
                    css(f[i], {
                        'position': 'relative',
                        'right': 0,
                        'top': 0
                    })
                }
                Resize()
            }
            for (var j = 1; j < f.length; j++) {
                if (f[j]) {
                    if (isVisible(f[j])) {
                        var refresh = false;
                        empty ? refresh = true : '';
                        empty = false;
                        refresh && o.controls ? o.controls.refresh() : ''
                    }
                }
            }
        };

        function Action(i) {
            if (exist(faction[i])) {
                var x = VisibleItems();
                if (open_action != faction[i]) {
                    open_action = faction[i];
                    if (open_action == 'quality' || open_action == 'audiotrack' || open_action == 'subtitle' || open_action == 'speed' || open_action == 'channel' || open_action == 'scale' || open_action.indexOf("timer") > 0) {
                        open_settings = i;
                        var files_query = [];
                        if (exist(Object.assign)) {
                            files_query = Object.assign([], o['files_' + open_action])
                        } else {
                            for (var key in o['files_' + open_action]) {
                                if (o['files_' + open_action].hasOwnProperty(key)) {
                                    files_query[key] = o['files_' + open_action][key]
                                }
                            }
                        }
                        if (open_action == "sleeptimer") {
                            files_query = SettingsTimers("sleepoptions")
                        }
                        if (open_action == "offsettimer") {
                            files_query = SettingsTimers("offsetoptions")
                        }
                        var current = o['current_' + open_action];
                        var pressed = o['pressed_' + open_action];
                        for (var j = 1; j < f.length; j++) {
                            if (f[j]) {
                                f[j].style.display = "none"
                            }
                        }
                        f2 = [];
                        CreateItem('f2', 0);
                        StyleItem(f2[0], f2bg[0], f2title[0], f2value[0]);
                        css(f2[0], {
                            "border-bottom": "1px solid " + (style.bordercolored == 1 ? "#" + style.bordercolor.replace("#", "") : "rgba(100,100,100,0.7)")
                        });
                        f2title[0].innerHTML = (x[0] > 1 && style.noprevicon != 1 ? _prevIcon + '&nbsp;' : '') + (v.settings[is + i + "title"] && v.settings[is + i + "title"] != '' ? v.settings[is + i + "title"] : Lang(v.settings[is + i + "action"]));
                        if (open_action == 'subtitle' && !o.hls_subs && !o.dash_subs) {
                            f2value[0].innerHTML = Lang("options");
                            css(f2value[0], {
                                'color': style.color,
                                'text-decoration': 'underline',
                                'pointerEvents': 'auto',
                                'cursor': 'pointer'
                            });
                            f2value[0].addEventListener("click", SubtitleSettings);
                            if (sub_settings_on) {
                                for (j = 0; j < o.sub_options.length; j++) {
                                    if (v.sub_all == 0 && o.sub_options[j] == "sub_color2") {} else {
                                        files_query.push("pjslng_" + o.sub_options[j])
                                    }
                                }
                            }
                        }
                        if (open_action == 'scale') {
                            Scale();
                            css(f2value[0], {
                                'width': style.valuefontsize * 2.5,
                                'text-align': 'right'
                            })
                        }
                        css(f2title[0], {
                            'font-size': style.headfontsize
                        });
                        f2action[0] = "home";
                        if (x[0] > 1) {
                            if (o.system.mobile) {
                                f2[0].addEventListener("touchstart", onOver);
                                f2[0].addEventListener("touchend", onOut)
                            } else {
                                f2[0].addEventListener("mouseover", onOver);
                                f2[0].addEventListener("mouseout", onOut)
                            }
                            f2[0].addEventListener("click", onClick2);
                            f2[0].addEventListener("mouseup", onMouseUp)
                        } else {
                            css(f2[0], {
                                "cursor": 'default'
                            })
                        }
                        if (style.nohead == 1) {
                            hide2(f2[0])
                        }
                        if (exist(files_query)) {
                            for (j = 0; j < files_query.length; j++) {
                                var y = j + 1;
                                var totheend = false;
                                var off = false;
                                if (trim(files_query[j]) != '') {
                                    if (open_action == 'quality') {
                                        if (files_query[j] == Lang("auto")) {
                                            totheend = true
                                        }
                                    }
                                    CreateItem('f2', y, totheend);
                                    StyleItem(f2[y], f2bg[y], f2title[y], f2value[y], faction[i]);
                                    if (typeof(files_query[j]) == 'string') {
                                        if (files_query[j].indexOf("<<<") == 0) {
                                            files_query[j] = files_query[j].replace('<<<', '');
                                            off = true
                                        }
                                        if (files_query[j].indexOf('timer') > 0) {
                                            o[open_action + '_i'] = i
                                        }
                                        if (files_query[j].indexOf("pjslng") == 0) {
                                            var tmp = files_query[j];
                                            if (tmp.indexOf("timer") > 0) {
                                                f2title[y].innerHTML = Lang(files_query[j].substr(tmp.indexOf("timer") + 5))
                                            } else {
                                                f2title[y].innerHTML = Lang(files_query[j].substr(7))
                                            }
                                            if (files_query[j] == 'pjslng_sub_sizeproc') {
                                                css(f2[y], {
                                                    "border-top": "1px solid rgba(100,100,100,0.7)"
                                                })
                                            }
                                        } else {
                                            f2title[y].innerHTML = files_query[j]
                                        }
                                    } else {
                                        f2title[y].innerHTML = files_query[j]
                                    }
                                    f2action[y] = open_action + j;
                                    if (current == j || pressed == j) {
                                        f2value[y].innerHTML = current == j ? _activeIcon : _xIcon;
                                        current == j ? css(f2title[y], {
                                            'color': style.valuecolor
                                        }) : ''
                                    }
                                    if (typeof(files_query[j]) == 'string') {
                                        if (files_query[j].indexOf("pjslng") == 0) {
                                            var t = files_query[j].substr(7);
                                            if (t.indexOf("color") > 0) {
                                                f2value[y].innerHTML = "<div style='" + (v[t] == "000000" ? 'border:1px solid #999;height:8px;width:8px;' : 'height:10px;width:10px;') + ";background-color:" + (v[t].indexOf("#") == -1 ? '#' : '') + v[t] + ";border-radius:10px;'></div>"
                                            } else {
                                                f2value[y].innerHTML = v[files_query[j].substr(7)]
                                            }
                                        }
                                    }
                                    if (open_action == 'quality') {
                                        if (files_query[j] == Lang("auto") && o.media.autoQuality()) {
                                            css(f2title[y], {
                                                'color': style.valuecolor
                                            })
                                        }
                                        if (exist(v.forbidden_quality)) {
                                            if (v.forbidden_quality.indexOf(files_query[j]) > -1) {
                                                hide2(f2[y])
                                            }
                                        }
                                    }
                                    var clck = "";
                                    if (typeof(files_query[j]) == 'string') {
                                        if (files_query[j].indexOf("pjslng") == 0) {
                                            attr(f2[y], {
                                                'f2parent': i,
                                                'setupx': files_query[j].substr(7)
                                            });
                                            clck = "onClickSubtitle"
                                        }
                                    }
                                    if (!off) {
                                        if (o.system.mobile) {
                                            f2[y].addEventListener("touchstart", onOver);
                                            f2[y].addEventListener("touchend", onOut)
                                        } else {
                                            f2[y].addEventListener("mouseover", onOver);
                                            f2[y].addEventListener("mouseout", onOut)
                                        }
                                        if (clck == "onClickSubtitle") {
                                            f2[y].addEventListener("click", onClickSubtitle)
                                        } else {
                                            f2[y].addEventListener("click", onClick2)
                                        }
                                        f2[y].addEventListener("mouseup", onMouseUp)
                                    } else {
                                        css(f2[y], {
                                            "cursor": "default"
                                        })
                                    }
                                }
                            }
                        }
                        Resize()
                    }
                    if (faction[i] == 'download') {
                        o.actions.Download()
                    }
                    if (faction[i].indexOf('playlist') > -1) {
                        var id = faction[i].substr(8);
                        if (exist(o.playlist_dic[id])) {
                            if (exist(o.playlist_dic[id]['file'])) {
                                o.seekto = undefined;
                                ActionPlaylist(i);
                                if (exist(o.playlist_dic[id]['start'])) {
                                    v.start = o.seekto = o.playlist_dic[id]['start']
                                }
                                SettingsTimers("offset");
                                if (exist(o.playlist_dic[id]['redirect']) && v.redirect == 1 && v.redirectplaylist == 1) {
                                    redirect(o.playlist_dic[id]['redirect'])
                                } else {
                                    o.actions.NewFile(o.playlist_dic[id]['file']);
                                    v.playlist.always == 0 && v.playlist.autohide == 1 ? setTimeout(HideControl, 200) : '';
                                    autonextopenfolder = false;
                                    autoprevopenfolder = false;
                                    UpdateVars(id)
                                }
                            } else {
                                if (exist(o.playlist_dic[id]['folder'])) {
                                    UpdatePlaylist(id);
                                    if (autonextopenfolder) {
                                        plx == -1 ? Action(0) : ''
                                    } else if (autoprevopenfolder) {
                                        plx == -1 ? Action(parseInt(f.length) - 2) : ''
                                    }
                                }
                            }
                        }
                        if (o.droplist) {
                            o.droplist.Update()
                        }
                    }
                    if (faction[i] == 'airplay') {
                        o.media.Airplay()
                    }
                }
            }
        };
        this.UpdateTimer = function(x) {
            Value(o[x + '_i'])
        };

        function ActionOptions(x) {
            for (var i = 0; i < f2.length; i++) {
                if (f2[i]) {
                    f2[i].style.display = "none"
                }
            }
            f2 = [];
            CreateItem('f2', 0);
            StyleItem(f2[0], f2bg[0], f2title[0], f2value[0]);
            css(f2[0], {
                "border-bottom": "1px solid " + (style.bordercolored == 1 ? "#" + style.bordercolor.replace("#", "") : "rgba(100,100,100,0.7)")
            });
            if (x.indexOf("timer") > 0) {
                f2[0].addEventListener("click", SubtitleTimerMenu);
                f2title[0].innerHTML = Lang(x.substr(x.indexOf("timer") + 5))
            } else {
                f2[0].addEventListener("click", SubtitleSettingsMenu);
                f2title[0].innerHTML = Lang(x)
            }
            css(f2title[0], {
                'font-size': style.headfontsize
            });
            if (o.system.mobile) {
                f2[0].addEventListener("touchstart", onOver);
                f2[0].addEventListener("touchend", onOut)
            } else {
                f2[0].addEventListener("mouseover", onOver);
                f2[0].addEventListener("mouseout", onOut)
            }
            f2[0].addEventListener("mouseup", onMouseUp);
            var values = [];
            var valuefromlang = false;
            if (x.indexOf("size") > 0) {
                values = ['50%', '75%', '100%', '125%', '150%', '175%', '200%', '250%', '300%', '400%']
            }
            if (x.indexOf("bga") > 0) {
                values = ['0', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']
            }
            if (x.indexOf("weight") > 0) {
                values = [200, 400, 600]
            }
            if (x.indexOf("bottom") > 0) {
                for (i = 0; i < 21; i++) {
                    values[i] = i * 10
                }
            }
            if (x.indexOf("hour") > 0) {
                for (i = 0; i < 24; i++) {
                    values[i] = i
                }
            }
            if (x.indexOf("minute") > 0 || x.indexOf("second") > 0) {
                for (i = 0; i < 60; i++) {
                    values[i] = i
                }
            }
            if (x.indexOf("shadow") > 0) {
                valuefromlang = true;
                values = [0, 1]
            }
            if (x.indexOf("color") > 0) {
                values = ['ffffff', 'ffeeab', '72ccf8', '62de50', 'faed54', 'feba54', 'e8bbff', 'ffc7d1', 'aaaaaa', 'd9bb8c', 'b3fee8', '4bd9ac', 'FEF370', 'D90000', '073DA0', '409829', '644082', '000000'];
                var vx = v[x].replace("#", "");
                if (values.indexOf(vx) == -1) {
                    values[8] = vx
                }
            }
            for (y = 1; y <= values.length; y++) {
                CreateItem('f2', y, false);
                StyleItem(f2[y], f2bg[y], f2title[y], f2value[y]);
                css(f2value[y], {
                    'padding-left': 0
                });
                if (x.indexOf("color") > 0 || x.indexOf("bottom") > 0 || x.indexOf("timer") > 0) {
                    y % 3 != 0 ? css(f2[y], {
                        'float': 'left'
                    }) : '';
                    css(f2[y], {
                        'width': '33.3%'
                    });
                    if (x.indexOf("color") > 0) {
                        f2title[y].innerHTML = "<div style='" + (values[y - 1] == "000000" ? 'border:1px solid #999;height:18px;width:18px;' : 'height:20px;width:20px;') + ";background-color:#" + values[y - 1] + ";border-radius:20px;'></div>";
                        css(f2[y], {
                            'line-height': 1
                        })
                    } else {
                        f2title[y].innerHTML = values[y - 1]
                    }
                } else {
                    if (x.indexOf("weight") > 0) {
                        f2title[y].innerHTML = values[y - 1]
                    } else {
                        y % 2 != 0 ? css(f2[y], {
                            'float': 'left'
                        }) : '';
                        css(f2[y], {
                            'width': '50%'
                        });
                        if (valuefromlang) {
                            f2title[y].innerHTML = Lang(values[y - 1] + 'val')
                        } else {
                            f2title[y].innerHTML = values[y - 1]
                        }
                    }
                }
                f2action[y] = x + '=' + values[y - 1];
                if ((values[y - 1] == v[x] && v[x] != ' ') || v[x] == '#' + values[y - 1]) {
                    f2value[y].innerHTML = _activeIcon;
                    css(f2title[y], {
                        'color': style.valuecolor
                    })
                }
                if (o.system.mobile) {
                    f2[y].addEventListener("touchstart", onOver);
                    f2[y].addEventListener("touchend", onOut)
                } else {
                    f2[y].addEventListener("mouseover", onOver);
                    f2[y].addEventListener("mouseout", onOut)
                }
                if (x.indexOf("timer") > 0) {
                    f2[y].addEventListener("click", onClickTimer2)
                } else {
                    f2[y].addEventListener("click", onClickSubtitle2)
                }
                f2[y].addEventListener("mouseup", onMouseUp)
            }
            Resize()
        }

        function UpdateVars(id) {
            if (exist(o.playlist_dic[id]['poster'])) {
                v.poster = o.playlist_dic[id]['poster'];
                exist(v.poster) ? o.media.Poster(v.poster) : ''
            }
            if (exist(o.playlist_dic[id]['thumbnails'])) {
                v.thumbnails = o.playlist_dic[id]['thumbnails']
            }
            if (exist(o.playlist_dic[id]['title'])) {
                o.titlestore = o.playlist_dic[id]['title'];
                if (v.showtitleplaylist == 1) {
                    if (o.actions.TitleTemplate(o.playlist_dic[id])) {} else {
                        v.title = (v.addtitleplaylist == 1 && exist(o.maintitle) ? o.maintitle + (v.addtitleplaylistbr == 1 ? '<br>' : ' ') : '') + o.playlist_dic[id]['title']
                    }
                    o.actions.Title('title')
                }
            }
            if (v.pointed == 1) {
                if (exist(o.playlist_dic[id]['points'])) {
                    v.points = o.playlist_dic[id]['points']
                } else {
                    v.points = []
                }
                o.controls.RenewPoints()
            }
            v.remove = undefined;
            var xv = ['url', 'vars', 'embed', 'end', 'remove', 'heartbeat', 'download', 'title2'];
            for (var i = 0; i < xv.length; i++) {
                if (exist(o.playlist_dic[id][xv[i]])) {
                    v[xv[i]] = o.playlist_dic[id][xv[i]]
                }
            }
            v.start = 0;
            if (exist(o.playlist_dic[id]['start'])) {
                v.start = o.seekto = o.playlist_dic[id]['start']
            }
            if (exist(o.playlist_dic[id]['sub'])) {
                o.playlist_dic[id]['subtitle'] = o.playlist_dic[id]['sub']
            }
            if (exist(o.playlist_dic[id]['subtitle'])) {
                o.media.SubtitleStart(o.playlist_dic[id]['subtitle'])
            }
            if (exist(o.playlist_dic[id]['design'])) {
                apiProcessor('design', o.playlist_dic[id]['design'])
            }
        }

        function ActionPlaylist(x) {
            if (plx == 0 && !o.start) {
                css(ftitle[plx], {
                    'color': style.color
                });
                css(fbg[plx], {
                    'backgroundColor': style.bgcolor
                });
                fvalue[plx].innerHTML = ''
            } else {
                o.plopenid = x;
                if (plx > -1) {
                    HistoryPlaylist(plx)
                }
                if (plid != '') {
                    o.plhistory[plid] = true;
                    shuffle[plid] = null
                }
            }
            var id = faction[x].substr(8);
            fvalue[x].innerHTML = _activeIcon;
            css(ftitle[x], {
                'color': style.valuecolor,
                'text-decoration': 'none',
                'opacity': style.a
            });
            if (style.playbgcolored == 1 && exist(style.playbgcolor)) {
                css(fbg[x], {
                    'backgroundColor': style.playbgcolor
                })
            }
            plx = x;
            plid = id;
            o.plid = plid;
            v.plstart = plid;
            o.playlist_title = ftitle[x].innerHTML;
            o.plopenid = plid;
            plfolder = o.playlist_dic[id]['pjs_parent'];
            if (o.controls) {
                o.controls.PlaylistControls()
            }
        }

        function UpdatePlaylist(id) {
            var x = id == 0 ? o.playlist : o.playlist_dic[id];
            o.plopenid = id;
            for (var i = 0; i < f.length; i++) {
                if (style.floatleft == 1) {
                    control.removeChild(f[i])
                } else {
                    control2.removeChild(f[i])
                }
                f[i] = null
            }
            f = [];
            plx = -1;
            if (exist(x['folder'])) {
                var y = Object.keys(x['folder']).length;
                CreateItem('f', y);
                faction[y] = "playlistfolder";
                StyleItem(f[y], fbg[y], ftitle[y], fvalue[y]);
                if (style.floatleft == 1) {
                    css(f[y], {
                        "width": (style.floatlimitwidth == 1 ? style.floatwidth : "auto"),
                        "height": style.floatheight
                    })
                }
                if (style.borderbottom == 1) {
                    if (style.floatleft == 1) {
                        css(f[y], {
                            "borderRight": "1px solid #" + style.headbordercolor
                        })
                    } else {
                        css(f[y], {
                            "borderBottom": "1px solid #" + style.headbordercolor
                        })
                    }
                }
                var tmp = x.title;
                if (style.noprevicon != 1) {
                    if (tmp.indexOf(" ") > -1) {
                        tmp = '<pjspan style="white-space:nowrap">' + _prevIcon + ' ' + tmp.substr(0, tmp.indexOf(" ")) + '</pjspan> ' + tmp.substr(tmp.indexOf(" "))
                    } else {
                        tmp = _prevIcon + ' ' + tmp;
                        css(ftitle[y], {
                            'white-space': 'nowrap'
                        })
                    }
                }
                ftitle[y].innerHTML = tmp;
                css(ftitle[y], {
                    'font-size': style.headfontsize
                });
                var p = x['pjs_parent'];
                if (o.system.mobile) {
                    f[y].addEventListener("touchstart", onOver);
                    f[y].addEventListener("touchend", onOut)
                } else {
                    f[y].addEventListener("mouseover", onOver);
                    f[y].addEventListener("mouseout", onOut)
                }
                f[y].addEventListener("click", function() {
                    PlaylistBack(p)
                });
                x = x['folder']
            }
            var y = Object.keys(x).length;
            shuffle = [];
            shuffle_ = [];
            for (var i = 0; i < y; i++) {
                CreateItem('f', i);
                faction[i] = "playlist" + x[i].id;
                if (!exist(o.plhistory[x[i].id]) && !exist(x[i].folder)) {
                    shuffle[x[i].id] = i;
                    shuffle_[x[i].id] = i
                }
                StyleItem(f[i], fbg[i], ftitle[i], fvalue[i]);
                if (style.floatleft == 1) {
                    if (style.activeiconsize == 0) {
                        css(ftitle[i], {
                            'width': style.floatwidth - style.paddingleft - style.paddingright
                        });
                        hide2(fvalue[i])
                    }
                    css(f[i], {
                        "width": (style.floatlimitwidth == 1 ? style.floatwidth : "auto"),
                        "height": style.floatheight
                    })
                }
                if (style.borderbottom == 1 && i < y - 1) {
                    var brd = createElement("div");
                    f[i].appendChild(brd);
                    if (style.floatleft == 1) {
                        css(brd, {
                            "position": "absolute",
                            "top": 0,
                            "right": 0,
                            "width": 1,
                            "height": "100%",
                            "background": "#" + style.bordercolor
                        })
                    } else {
                        css(brd, {
                            "position": "absolute",
                            "bottom": 0,
                            "left": 0,
                            "width": "100%",
                            "height": 1,
                            "background": "#" + style.bordercolor
                        })
                    }
                }
                ftitle[i].innerHTML = x[i].title ? x[i].title : '&nbsp;';
                if (v.timestore == 1 && v.playedstore == 1 && x[i].id) {
                    if (o.playedstored) {
                        if (o.playedstored.indexOf(x[i].id) > -1) {
                            x[i].played = 1
                        }
                    }
                }
                if (exist(x[i].played)) {
                    if (x[i].played == 1) {
                        o.plhistory[x[i].id] = true;
                        HistoryPlaylist(i)
                    }
                }
                if (exist(x[i].folder)) {
                    fvalue[i].innerHTML = _nextIcon;
                    css(fvalue[i], {
                        "color": style.color
                    })
                }
                if (o.system.mobile) {
                    f[i].addEventListener("touchstart", onOver);
                    f[i].addEventListener("touchend", onOut)
                } else {
                    f[i].addEventListener("mouseover", onOver);
                    f[i].addEventListener("mouseout", onOut)
                }
                f[i].addEventListener("click", onClick);
                f[i].addEventListener("mouseup", onMouseUp);
                if (exist(o.plhistory[x[i].id])) {
                    HistoryPlaylist(i)
                }
                if (plid == x[i].id) {
                    ActionPlaylist(i)
                }
                if (plfolder == x[i].id) {
                    css(ftitle[i], {
                        'color': style.valuecolor
                    });
                    css(fvalue[i], {
                        'color': style.valuecolor
                    })
                }
            }
            Resize();
            empty = false;
            o.controls ? o.controls.refresh() : ''
        }

        function StyleArrow(x, y, z, x1, y1, x2, y2, x3, y3, x4, y4) {
            var ww = (style.floatleft == 1 ? '40px' : '100%');
            var hh = (style.floatleft == 1 ? '100%' : '40px');
            css(x, {
                'position': 'absolute',
                'display': 'inline-block',
                'width': ww,
                'height': hh,
                'text-align': 'center'
            });
            if (style.scrollarrowgradient == 1) {
                css(x, {
                    'background': '-moz-linear-gradient(' + y + ')',
                    'background': '-webkit-linear-gradient(' + y + ')',
                    'background': '-ms-linear-gradient(' + y + ')',
                    'background': '-o-linear-gradient(' + y + ')',
                    'background': 'linear-gradient(' + y + ')',
                })
            }
            if (style.floatleft == 1 || o.system.mobile) {
                css(x, {
                    'cursor': 'pointer'
                })
            } else {
                css(x, {
                    'pointer-events': 'none'
                })
            }
            if (style.limitwidth == 1) {
                css(x, {
                    'max-width': style.limitmaxwidth + 'px!important'
                })
            }
            if (z == "top") {
                css(x, {
                    'top': -1,
                    'left': 0
                })
            }
            if (z == "bottom") {
                css(x, {
                    'bottom': -1,
                    'left': 0
                })
            }
            if (z == "left") {
                css(x, {
                    'top': 0,
                    'left': 0
                })
            }
            if (z == "right") {
                css(x, {
                    'top': 0,
                    'right': 0
                })
            }
            if (z == "right" || z == "left") {
                css(x, {
                    'text-align': 'left',
                    'padding-top': container.offsetHeight / 2 - 10
                })
            }
            x.innerHTML = "<center><div " + (style.scrollarrowbgover == 1 ? "onMouseOver='this.style.backgroundColor=\"#" + style.scrollarrowbgovercolor + "\"' onMouseOut='" + (style.scrollarrowbg == 1 ? "this.style.backgroundColor=\"#" + style.scrollarrowbgcolor : "this.style.background=\"none") + "\"'" : "") + " style='pointer-events:auto;cursor:pointer;width:20px;height:20px;border-radius:20px;" + (style.scrollarrowbg == 1 ? "background-color:#" + style.scrollarrowbgcolor + ";" : "") + (z == "top" ? "margin-top:10px;" : "") + (z == "bottom" ? "margin-top:10px;" : "") + (z == "right" ? "margin-left:0px;" : "") + (z == "left" ? "margin-right:0px;" : "") + "'><svg width='20' height='20' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g><line x1='" + x1 + "' y1='" + y1 + "' x2='" + x2 + "' y2='" + y2 + "' stroke='#" + style.scrollarrowcolor + "' stroke-width='" + style.scrollarrowsize + "' stroke-linecap='round'/><line x1='" + x3 + "' y1='" + y3 + "' x2='" + x4 + "' y2='" + y4 + "' stroke='#" + style.scrollarrowcolor + "' stroke-width='" + style.scrollarrowsize + "' stroke-linecap='round'/></g></svg></div></center>"
        }
        this.Arrows = function() {
            if (style.scrollarrows == 1) {
                Arrows()
            }
        };

        function ArrowsInterval() {
            if (is_visible) {
                Arrows()
            }
        }

        function Arrows(e) {
            if (style.scrollarrows == 1 && !removed) {
                if (style.floatleft == 1) {
                    var h = control.scrollWidth;
                    var m = container.offsetWidth + style.bgpaddingleft + style.bgpaddingright;
                    var t = control.scrollLeft
                } else {
                    var h = control.scrollHeight;
                    var m = container.offsetHeight;
                    var t = control.scrollTop
                }
                if (h > m) {
                    if (t > 0) {
                        if (!isVisible(arr_up)) {
                            show(arr_up);
                            var m1 = new Motion({
                                "mc": arr_up,
                                "type": "alpha_div",
                                "to": 1,
                                "time": 0.3,
                                "me": "arr_up"
                            })
                        }
                    } else {
                        if (isVisible(arr_up)) {
                            var m2 = new Motion({
                                "mc": arr_up,
                                "type": "alpha_div",
                                "to": 0,
                                "time": 0.3,
                                "me": "arr_up",
                                "hide": true
                            })
                        }
                        if (e) {
                            e.deltaY < 0 ? e.preventDefault() : ''
                        }
                    }
                    if (t < h - m - 10) {
                        if (!isVisible(arr_down)) {
                            show(arr_down);
                            var m3 = new Motion({
                                "mc": arr_down,
                                "type": "alpha_div",
                                "to": 1,
                                "time": 0.3,
                                "me": "arr_down"
                            })
                        }
                    } else {
                        if (isVisible(arr_down)) {
                            var m4 = new Motion({
                                "mc": arr_down,
                                "type": "alpha_div",
                                "to": 0,
                                "time": 0.3,
                                "me": "arr_down",
                                "hide": true
                            })
                        }
                        if (e) {
                            e.deltaY > 0 ? e.preventDefault() : ''
                        }
                    }
                } else {
                    hide(arr_up);
                    hide(arr_down)
                }
            }
        }

        function ScrollDown() {
            var x = control.scrollTop + container.offsetHeight - 60;
            var m = new Motion({
                "mc": control,
                "type": "scroll",
                "to": x,
                "time": 0.3,
                "me": "scroll_down",
                "ease": "cubic"
            });
            setTimeout(Arrows, 1000)
        }

        function ScrollUp() {
            var x = control.scrollTop - container.offsetHeight + 60;
            var m = new Motion({
                "mc": control,
                "type": "scroll",
                "to": x,
                "time": 0.3,
                "me": "scroll_up",
                "ease": "cubic"
            });
            setTimeout(Arrows, 1000)
        }

        function ScrollRight() {
            var x = control.scrollLeft + (container.offsetWidth + style.bgpaddingleft + style.bgpaddingright) - 60;
            var m = new Motion({
                "mc": control,
                "type": "scrollleft",
                "to": x,
                "time": 0.3,
                "me": "scroll_right",
                "ease": "cubic"
            });
            setTimeout(Arrows, 1000)
        }

        function ScrollLeft() {
            var x = control.scrollLeft - (container.offsetWidth + style.bgpaddingleft + style.bgpaddingright) + 60;
            var m = new Motion({
                "mc": control,
                "type": "scrollleft",
                "to": x,
                "time": 0.3,
                "me": "scroll_left",
                "ease": "cubic"
            });
            setTimeout(Arrows, 1000)
        }

        function PlaylistBack(x) {
            if (x == '') {
                UpdatePlaylist(0)
            } else {
                if (exist(o.playlist_dic[x])) {
                    UpdatePlaylist(x)
                }
            }
            open_action = ''
        }

        function HistoryPlaylist(x) {
            fvalue[x].innerHTML = '';
            css(ftitle[x], {
                'color': style.historycolor
            });
            if (style.historytitlestrike == 1) {
                css(ftitle[x], {
                    'text-decoration': 'line-through'
                })
            }
            if (style.historytitlea > -1) {
                css(ftitle[x], {
                    'opacity': style.historytitlea
                })
            }
            css(fbg[x], {
                'backgroundColor': style.historybgcolor
            });
            if (style.historybga > -1) {
                css(fbg[x], {
                    'opacity': style.historybga
                })
            }
        }

        function Action2(i) {
            if (exist(f2action[i])) {
                if (f2action[i].indexOf("quality") == 0) {
                    o.actions.SetQuality(f2action[i].substr(7))
                }
                if (f2action[i].indexOf("audiotrack") == 0) {
                    o.actions.SetAudioTrack(f2action[i].substr(10))
                }
                if (f2action[i].indexOf("subtitle") == 0) {
                    o.actions.SetSubtitle(f2action[i].substr(8))
                }
                if (f2action[i].indexOf("channel") == 0 && v.channels == 1) {
                    o.channels.SetChannel(f2action[i].substr(7))
                }
                if (f2action[i].indexOf("scale") == 0) {
                    if (f2action[i] == 'scale0') {
                        o.media.scale(style.scale / 100)
                    }
                    if (f2action[i] == 'scale1') {
                        o.media.scale('-' + style.scale / 100)
                    }
                    if (f2action[i] == 'scale2') {
                        o.media.normalscale()
                    }
                }
                if (f2action[i].indexOf("timer") > 0) {
                    if (f2action[i].indexOf("timer2") > 0) {
                        SettingsTimers(open_action + '0');
                        Value(o[open_action + '_i']);
                        if (open_action == "offsettimer") {
                            SettingsTimers("offsetwrite")
                        }
                        Home()
                    }
                }
                if (f2action[i].indexOf("speed") == 0) {
                    o.actions.SetSpeed(f2action[i].substr(5));
                    for (var i = 0; i < faction.length; i++) {
                        if (faction[i] == "speed") {
                            Value(i);
                            if (open_action == 'speed') {
                                Remove2();
                                Action(i)
                            }
                        }
                    }
                    setTimeout(HideControl, 200)
                }
            }
        };

        function CreateItem(x, i, totheend) {
            if (exist(eval(x))) {
                eval(x)[i] = createElement("div");
                if (i < 2 || x == "f" || open_action != 'quality' || totheend) {
                    if (style.floatleft == 1) {
                        control.appendChild(eval(x)[i])
                    } else {
                        control2.appendChild(eval(x)[i])
                    }
                } else {
                    if (style.floatleft == 1) {
                        control.insertBefore(eval(x)[i], eval(x)[i - 1])
                    } else {
                        control2.insertBefore(eval(x)[i], eval(x)[i - 1])
                    }
                }
                if (x == 'f') {
                    attr(eval(x)[i], {
                        'fid': i
                    })
                }
                if (x == 'f2') {
                    attr(eval(x)[i], {
                        'f2id': i
                    })
                }
                eval(x + 'bg')[i] = createElement("div");
                eval(x)[i].appendChild(eval(x + 'bg')[i]);
                eval(x + 'img')[i] = createElement("div");
                eval(x)[i].appendChild(eval(x + 'img')[i]);
                css(eval(x + 'img')[i], {
                    'position': 'absolute',
                    'right': 0,
                    'top': 0,
                    'width': '100%',
                    'height': '100%',
                    'pointerEvents': 'none'
                });
                eval(x + 'title')[i] = createElement("div");
                eval(x)[i].appendChild(eval(x + 'title')[i]);
                eval(x + 'value')[i] = createElement("div");
                eval(x)[i].appendChild(eval(x + 'value')[i]);
                if (x == "f2" && is == "settings" && style.activeicon == 0) {
                    hide2(eval(x + 'value')[i])
                }
            }
        };

        function StyleItem(x, xbg, xtitle, xvalue, actn) {
            css(x, {
                'position': 'relative',
                'right': 0,
                'top': 0,
                'cursor': 'pointer',
                'height': 'auto',
                'width': '100%',
                'overflow': 'hidden',
                'display': 'block',
                'line-height': '1.5em'
            });
            if (style.floatmarginright && style.floatleft == 1) {
                css(x, {
                    'marginRight': style.floatmarginright
                })
            }
            if (style.floatleft == 1) {
                css(x, {
                    'display': 'inline-block',
                    'vertical-align': 'top',
                    'white-space': 'normal'
                })
            }
            css(xbg, {
                'position': 'absolute',
                'right': 0,
                'top': 0,
                'width': '100%',
                'height': '100%',
                'backgroundColor': style.bgcolor,
                'opacity': style.bga,
                'pointerEvents': 'none',
                'transition': 'opacity 0.2s linear,background .2s linear'
            });
            css(xtitle, {
                'position': 'relative',
                'right': 0,
                'top': 0,
                'float': 'left',
                'color': style.color,
                'padding-top': style.paddingtop,
                'padding-right': style.paddingright,
                'padding-bottom': style.paddingbottom,
                'padding-left': style.paddingleft,
                'pointerEvents': 'none',
                'opacity': style.a,
                'transition': 'opacity 0.2s linear,color 0.2s linear'
            });
            css(xvalue, {
                'position': 'relative',
                'right': 0,
                'top': 0,
                'float': 'right',
                'padding-top': style.paddingtop + (style.valuefontsize < style.fontsize ? (style.fontsize - style.valuefontsize) / 2 : 0),
                'padding-right': style.paddingright,
                'padding-left': style.paddingleft,
                'pointerEvents': 'none',
                'font-size': style.valuefontsize,
                'opacity': style.a,
                'color': style.valuecolor,
                'transition': 'opacity 0.2s linear,color 0.2s linear'
            });
            if (style.limitwidth == 1) {
                css(x, {
                    'max-width': style.limitmaxwidth + 'px!important'
                });
                css(xtitle, {
                    'max-width': (style.limitmaxwidth - 70) + 'px!important'
                })
            } else {
                if (style.floatleft == 1) {
                    if (style.floatlimitwidth == 1) {
                        css(x, {
                            'width': style.floatwidth
                        });
                        css(xtitle, {
                            'width': style.floatwidth - 70
                        })
                    }
                } else {
                    css(xtitle, {
                        'white-space': 'nowrap'
                    });
                    css(xvalue, {
                        'white-space': 'nowrap'
                    })
                }
            }
        }

        function Home() {
            for (var i = 1; i < f.length; i++) {
                if (exist(f[i])) {
                    if (style.floatleft == 1) {
                        f[i].style.display = "inline-block"
                    } else {
                        f[i].style.display = "block"
                    }
                }
            }
            Remove2();
            Resize();
            open_action = '';
            open_settings = -1
        };

        function Remove2() {
            for (var j = 0; j < f2.length; j++) {
                if (f2[j]) {
                    if (style.floatleft == 1) {
                        control.removeChild(f2[j])
                    } else {
                        control2.removeChild(f2[j])
                    }
                    f2[j] = null
                }
            }
            f2 = [];
            open_action = ''
        }

        function Width() {
            return control.offsetWidth
        };
        this.resizePlaylist = function() {
            ResizePlaylist()
        };

        function ResizePlaylist() {
            if (is == "playlist") {
                if (style.floatleft == 1 || style.width100 == 1) {
                    var x = o.screen_w - style.marginright - style.marginleft;
                    css(container, {
                        'width': x
                    });
                    css(control, {
                        'width': x
                    });
                    control2 ? css(control2, {
                        'width': x
                    }) : ''
                }
            }
        }

        function Resize() {
            if (!removed) {
                if (is == "settings") {
                    o.controls ? o.controls.resizeSettings() : '';
                    var x = style.nohead == 1 && f.length > 1 ? f[1] : f[0]
                }
                if (is == "playlist") {
                    ResizePlaylist();
                    o.controls ? o.controls.resizePlaylist() : '';
                    var x = f[0];
                    if (v.change2playlist == 1) {
                        MainUpdateSize()
                    }
                }
                f.length > 1 && !x ? (f[1] ? x = f[1] : '') : '';
                f.length > 2 && !x ? (f[2] ? x = f[2] : '') : '';
                if (x) {
                    x.offsetWidth == 0 && f2.length > 0 ? x = f2[0] : ''
                }
                if (control.offsetWidth - control.clientWidth > 0 && x && style.floatleft != 1) {
                    if (exist(arr_up)) {
                        css(arr_up, {
                            "width": control2.offsetWidth
                        })
                    }
                    if (exist(arr_down)) {
                        css(arr_down, {
                            "width": control2.offsetWidth
                        })
                    }
                    style.scrollwidth = (control.offsetWidth - x.offsetWidth) - (control.clientWidth - x.clientWidth)
                } else {
                    style.scrollwidth = 0
                }
            }
        };

        function VisibleItems() {
            var x = 0;
            var y = 0;
            var z = '';
            for (var i = 1; i < f.length; i++) {
                if (exist(f[i])) {
                    if (isVisible(f[i])) {
                        x++;
                        y = i;
                        z = faction[i]
                    }
                }
            }
            return [x, y, z]
        }

        function SubtitleSettings() {
            sub_settings_on = !sub_settings_on;
            SubtitleSettingsMenu()
        }

        function SubtitleSettingsMenu() {
            Home();
            for (var i = 0; i < faction.length; i++) {
                if (faction[i] == "subtitle") {
                    Action(i)
                }
            }
        }

        function SubtitleTimerMenu() {
            var x = open_action;
            Home();
            for (var i = 0; i < faction.length; i++) {
                if (faction[i] == x) {
                    Action(i)
                }
            }
        }

        function HideControl(x) {
            if (is == 'settings' && v.settings.always == 1) {} else {
                if (is == 'playlist' && v.playlist.droplist == 1 && v.playlist.dropnohide != 1) {
                    o.droplist ? o.droplist.Hide() : '';
                    is_visible = false
                } else {
                    if ((x != 1 || (style.hidesmoothly == 1 && style.always == 1)) && !o.system.tv) {
                        var m = new Motion({
                            "mc": container,
                            "type": "alpha_div",
                            "to": 0,
                            "time": 0.1,
                            "me": is,
                            "ease": "elastic"
                        });
                        hidetimeout = setTimeout(function() {
                            css(container, {
                                "visibility": "hidden",
                                "opacity": 0,
                                "top": -2000
                            });
                            is_visible = false
                        }, 200)
                    } else {
                        css(container, {
                            "visibility": "hidden",
                            "opacity": 0,
                            "top": -2000
                        });
                        is_visible = false
                    }
                }
                if (is == 'playlist') {
                    if (v.playlist.hidecontrol == 1 && o.controls) {
                        o.controls.toggleControl("playlist", false)
                    }
                }
                clearInterval(wheelinterval)
            }
        };
        this.c = function() {
            return container
        };
        this.co = function() {
            if (container.contains(control)) {
                return control
            }
        };
        this.s = function(key) {
            return style[key]
        };
        this.ss = function(key) {
            return style
        };
        this.show = function() {
            Home();
            clearTimeout(hidetimeout);
            is_visible = true;
            if (is == 'playlist' && v.playlist.droplist == 1) {
                o.droplist ? o.droplist.Show() : ''
            } else {
                css(container, {
                    "visibility": "visible",
                    "opacity": 1,
                    "transition": "opacity 0.2s linear"
                });
                var x = VisibleItems();
                if (x[0] == 1) {
                    if (x[2] == "quality" || x[2] == "audiotrack" || x[2] == "subtitle" || x[2] == "speed" || x[2] == "scale" || x[2].indexOf("timer") > 0) {
                        Action(x[1])
                    }
                }
            }
            if (o.controls) {
                is == 'settings' ? o.controls.resizeSettings() : '';
                if (is == 'playlist') {
                    o.controls.resizePlaylist();
                    if (v.playlist.hidecontrol == 1) {
                        o.controls.toggleControl("playlist", false)
                    }
                }
            }
            if (o.system.safari) {
                css(control, {
                    'min-width': 'auto'
                });
                if (style.floatleft != 1) {
                    css(control2, {
                        'min-width': 'auto'
                    })
                }
            }
            justshow = true;
            clearInterval(showinterval);
            showinterval = setInterval(ShowTimeout, 100)
        };

        function ShowTimeout() {
            clearInterval(showinterval);
            justshow = false
        }
        this.open = function(i) {
            Action(i)
        };
        this.hide = function(x) {
            HideControl(x)
        };
        this.SetQuality = function() {
            for (var i = 0; i < faction.length; i++) {
                if (faction[i] == "quality") {
                    Value(i);
                    if (o.files_quality.length > 1) {
                        show(f[i])
                    }
                    if (open_action == 'quality') {
                        Remove2();
                        Action(i)
                    }
                }
            }
        };
        this.Airplay = function() {
            for (var i = 0; i < faction.length; i++) {
                if (faction[i] == "airplay") {
                    Value(i)
                }
            }
        };
        this.SetSetting = function(x) {
            for (var i = 0; i < faction.length; i++) {
                if (faction[i] == x) {
                    Value(i);
                    if (o['files_' + x]) {
                        if (o['files_' + x].length > 1) {
                            show(f[i])
                        }
                    }
                    if (open_action == x) {
                        Remove2();
                        Action(i)
                    }
                }
            }
        };
        this.SetSubtitle = function() {
            for (var i = 0; i < faction.length; i++) {
                if (faction[i] == "subtitle") {
                    Value(i);
                    if (o.files_subtitle) {
                        if (o.files_subtitle.length > 0) {
                            var x = false;
                            if (o.subs) {
                                for (var y = 0; y < o.subs.length; y++) {
                                    if (o.subs[y] != '') {
                                        x = true;
                                        break
                                    }
                                }
                            } else {
                                x = true
                            }
                            x ? show(f[i]) : ''
                        }
                    }
                    if (open_action == 'subtitle') {
                        Remove2();
                        Action(i)
                    }
                }
            }
        };
        this.updatePlaylist = function(x) {
            o.playlist = x;
            UpdatePlaylist(0);
            if (exist(v.plstart)) {
                if (v.plstart.indexOf("x-") != 0) {
                    for (var y in o.playlist_dic) {
                        if (o.playlist_dic.hasOwnProperty(y)) {
                            if (o.playlist_dic[y].pjs_id == v.plstart) {
                                v.plstart = y
                            }
                        }
                    }
                }
                if (exist(o.playlist_dic[v.plstart])) {
                    FindPlStart(o.playlist_dic[v.plstart]);
                    var y = o.playlist_dic[v.plstart]['pjs_i'];
                    ActionPlaylist(y);
                    if (v.playlist.openplaylistroot == 1) {
                        UpdatePlaylist(0);
                        setTimeout(function() {
                            Resize()
                        }, 500)
                    } else {
                        setTimeout(function() {
                            ScrollTo(y);
                            Resize()
                        }, 500)
                    }
                    v.plstart = undefined
                } else {
                    ActionPlaylist(0)
                }
            } else {
                ActionPlaylist(0)
            }
            if (style.droplist == 1) {
                if (!exist(o.droplist)) {
                    o.droplist = new PluginDroplist()
                }
            }
        };
        this.playById = function(x) {
            if (exist(o.playlist_dic[x])) {
                FindPlStart(o.playlist_dic[x]);
                Action(o.playlist_dic[x]['pjs_i']);
                ScrollTo(o.playlist_dic[x]['pjs_i'])
            }
        };
        this.openById = function(x) {
            if (exist(o.playlist_dic[x])) {
                FindPlStart(o.playlist_dic[x]);
                if (o.playlist_dic[x]["file"]) {
                    ActionPlaylist(o.playlist_dic[x]['pjs_i']);
                    exist(v.poster) ? o.media.Poster(v.poster) : '';
                    o.actions.NewFile(o.playlist_dic[x]["file"], 1);
                    UpdateVars(x);
                    ScrollTo(o.playlist_dic[x]['pjs_i'])
                } else if (o.playlist_dic[x]["folder"]) {
                    UpdatePlaylist(x)
                }
            }
        };

        function showById(x) {
            if (exist(o.playlist_dic[x])) {
                plfolder = '';
                UpdatePlaylist(0);
                FindPlStart(o.playlist_dic[x]);
                Action(o.playlist_dic[x]['pjs_i']);
                UpdateVars(x);
                o.lunchfileonstart = o.playlist_dic[x]["file"];
                exist(v.poster) ? o.media.Poster(v.poster) : ''
            }
        };
        this.PlaylistNext = function() {
            autonextopenfolder = true;
            x = parseInt(plx) + 1;
            if (plid != '') {
                o.plhistory[plid] = true;
                shuffle[plid] = null
            }
            if (v.shuffle == 1) {
                if (Object.keys(shuffle).length == 0 && v.shuffle8 == 1) {
                    shuffle_.sort(function(a, b) {
                        return Math.random() - 0.5
                    });
                    for (var x in shuffle_) {
                        if (shuffle_.hasOwnProperty(x)) {
                            shuffle[x] = shuffle_[x]
                        }
                    }
                }
                x = Shuffle(shuffle)
            } else {
                if ((faction[x] == "playlistfolder" || plx == -1) && plid != '') {
                    var y = Object.keys(o.playlist_dic).indexOf(plid);
                    if (y < Object.keys(o.playlist_dic).length) {
                        var z = o.playlist_dic[Object.keys(o.playlist_dic)[y + 1]];
                        if (z) {
                            if (exist(z.folder)) {
                                z = o.playlist_dic[Object.keys(o.playlist_dic)[y + 2]]
                            }
                            this.openById(z.id);
                            x = -1;
                            o.actions.Play()
                        }
                    }
                }
            }
            if (x > -1) {
                Action(x);
                ScrollTo(x)
            }
        };

        function ScrollTo(x) {
            if (f[x] && !removed) {
                if (style.floatleft == 1) {
                    var to = f[x].offsetLeft - 20;
                    var m = new Motion({
                        "mc": control,
                        "type": "scrollleft",
                        "to": to,
                        "time": 0.3,
                        "me": "scroll_left",
                        "ease": "cubic"
                    })
                } else {
                    var to = f[x].offsetTop - container.offsetHeight / 2 + 20;
                    var m = new Motion({
                        "mc": control,
                        "type": "scroll",
                        "to": to,
                        "time": 0.3,
                        "me": "scroll_down",
                        "ease": "cubic"
                    })
                }
                setTimeout(Arrows, 1000)
            }
        }

        function Shuffle(obj) {
            var keys = Object.keys(obj);
            return obj[keys[keys.length * Math.random() << 0]]
        };
        this.Scale = function() {
            Scale()
        };

        function Scale() {
            if (scale_i > -1) {
                Value(scale_i);
                if (open_action == 'scale') {
                    f2value[0].innerHTML = Math.round(o.mediascale.x * 100) + '%'
                }
            }
        };
        this.PlaylistNextExist = function() {
            if (v.shuffle == 1) {
                return Object.keys(shuffle).length > 0
            }
            var x = false;
            if (o.playlist_dic) {
                x = Object.keys(o.playlist_dic).indexOf(plid) < Object.keys(o.playlist_dic).length - 1
            }
            return x
        };
        this.PlaylistRewind = function() {
            if (exist(o.pl_first_id)) {
                showById(o.pl_first_id)
            }
        };
        this.PlaylistPrevExist = function() {
            return plx > 0
        };
        this.PlaylistExist = function() {
            return exist(o.playlist_dic)
        };
        this.PlaylistPrev = function() {
            autoprevopenfolder = true;
            if (plx > 0) {
                var x = parseInt(plx) - 1;
                Action(x);
                ScrollTo(x)
            }
        };
        this.PlaylistHere = function() {
            if (plx > 0) {
                ScrollTo(plx)
            }
        };

        function FindPlStart(x) {
            if (x['pjs_parent_i'] != -1) {
                FindPlStart(o.playlist_dic[x['pjs_parent']]);
                UpdatePlaylist(x['pjs_parent'])
            } else {
                UpdatePlaylist(0)
            }
        };
        this.g = function(x) {
            switch (x) {
                case "width":
                    return Width();
                    break;
                case "height":
                    return container.offsetHeight;
                    break;
                case "top":
                    return container.offsetTop;
                    break;
                case "scroll_height":
                    return control.scrollHeight;
                    break;
                case "margin_bottom":
                    return style.marginbottom;
                    break;
                case "x":
                    return int(container.style.left);
                    break;
                case "y":
                    return int(container.style.top);
                    break;
                case "opacity":
                    return container.style.opacity;
                    break;
                case "show":
                    return is_visible;
                    break;
                case "open":
                    return open_settings;
                    break;
                case "key":
                    return key;
                    break;
                case "motion_id":
                    return key + motion_id;
                    break;
                case "empty":
                    return empty;
                    break;
                case "playlist":
                    return is == "playlist";
                    break;
                case "activeicon":
                    return _activeIcon;
                    break;
                case "butplstart":
                    return o.playlist_dic[o.butplstart] ? o.playlist_dic[o.butplstart].title : '';
                case "title2":
                    return v.title2 ? v.title2 : ''
            }
        };
        this.empty = function() {
            if (is == "settings") {
                var x = 0;
                for (var i = 1; i < 11; i++) {
                    if (faction[i] == "quality") {
                        var y = o.files_quality.length;
                        if (exist(v.forbidden_quality)) {
                            var z = v.forbidden_quality.split(",");
                            for (var j = 0; j < z.length; j++) {
                                if (o.files_quality.indexOf(z[j]) > -1) {
                                    y--
                                }
                            }
                        }
                        if (y > 0) {
                            if (y > 1 || (y == 1 && o.files_quality != 1 && style.show1value == 1)) {
                                x++
                            }
                        }
                    }
                    if (faction[i] == "airplay") {
                        if (o.airplay) {
                            x++
                        }
                    }
                    if (faction[i] == "download") {
                        if (o.file_type == 'native' || v.download) {
                            x++
                        }
                    }
                    if (faction[i] == "audiotrack") {
                        if (o.files_audiotrack.length > 0) {
                            x++
                        }
                    }
                    if (faction[i] == "channel" && v.channels == 1) {
                        if (o.files_channel.length > 0) {
                            x++
                        }
                    }
                    if (faction[i] == "subtitle") {
                        if (exist(o.subs)) {
                            for (var s = 0; s < o.subs.length; s++) {
                                if (o.subs[s] != '') {
                                    x++;
                                    break
                                }
                            }
                        }
                    }
                    if (faction[i] == "speed") {
                        if (o.file_type != "vimeo") {
                            x++
                        }
                    }
                    if (faction[i] == "scale") {
                        x++
                    }
                    if (faction[i]) {
                        if (faction[i].indexOf("timer") > 0) {
                            x++
                        }
                    }
                    if (v.settings[is + i + 'hide'] == 1) {
                        x--
                    }
                }
                return x == 0
            } else if (is == "playlist") {
                return f.length == 0
            } else {
                return empty
            }
        };
        this.Remove = function() {
            if (container.parentNode == o.frame) {
                container.removeChild(control);
                o.frame.removeChild(container);
                o.droplist ? o.droplist.Remove() : '';
                container = null;
                control = null;
                removed = true
            }
        }
    };
    if (typeof(options) == "string") {
        optStr()
    }
    o.this = this;
    if (options.id) {
        if (document.getElementById(options.id)) {
            VisibleCheck()
        } else {
            document.addEventListener('DOMContentLoaded', Init)
        }
    }

    function VisibleCheck() {
        if (exist(options.id)) {
            if (document.getElementById(options.id)) {
                if (!isHidden(document.getElementById(options.id)) || options.visible == 1) {
                    Init()
                } else {
                    setTimeout(VisibleCheck, 50)
                }
            }
        }
    }

    function Init() {
        for (var i = 0; i < pljssglobal.length; i++) {
            if (pljssglobal[i].api("id") == options.id) {
                if (pljssglobal[i].api("playing")) {
                    pljssglobal[i].api('stop')
                }
            }
        }
        pljssglobal.push(o.this);
        var stop = false;
        if (exist(options.player)) {
            for (var i = 2; i < 10; i++) {
                if (options.player == i && o['u' + i] != '') {
                    v = UpdateObject(v, JSON.parse(decode(o['u' + i])));
                    stop = true
                }
            }
        }
        if (o.u != '' && !stop) {
            v = UpdateObject(v, (typeof o.u != "object" ? JSON.parse(decode(o.u)) : o.u))
        }
        for (var key in options) {
            if (options.hasOwnProperty(key)) {
                if (key.indexOf("rc_") == 0) {
                    options[key] = null
                }
            }
        }
        v = UpdateObject(v, options);
        for (var key in o.compilation) {
            if (o.compilation.hasOwnProperty(key)) {
                o.compilation[key] != '' ? o.compilations += o.compilation[key] + ' ' : ''
            }
        }
        log(o.version + ' ' + o.compilations);
        pljssglobalid = v.id;
        o.d = location.hostname;
        if (parent) {
            var exception = false;
            try {
                if (parent) {
                    if (parent.document) {
                        var frames = parent.document.getElementsByTagName("IFRAME");
                        for (var i = 0; i < frames.length; i++) {
                            if (frames[i].contentWindow === window) {
                                o.parentIframe = frames[i];
                                o.iniframe = true;
                                css(o.parentIframe, {
                                    "border": "none"
                                });
                                o.parentIframe_style = o.parentIframe.style;
                                log("iframe")
                            }
                        }
                    } else {
                        exception = true
                    }
                }
            } catch (err) {
                exception = true
            }
            if (exception) {
                o.iniframe = true;
                log("Cross-domain")
            }
        }
        o.iniframe && document.referrer ? v.domain = document.referrer.split('/')[2] : '';
        prtObj();
        CustomFonts();
        var _0xb263 = ['async', 'src', 'parentNode', 'https://www.google-analytics.com/analytics.js', 'srvsga', 'UA-88484718-', 'auto', 'pjs', 'require', 'linker', 'linker:autoLink', 'pjs.send', 'event', 'Player', 'Init', 'gaid', 'indexOf', 'create', 'user', 'getDate', 'GoogleAnalyticsObject', 'createElement', 'getElementsByTagName'];
        (function(_0x3e3359, _0x372875) {
            var _0x2131af = function(_0x2bc3bf) {
                while (--_0x2bc3bf) {
                    _0x3e3359['push'](_0x3e3359['shift']())
                }
            };
            _0x2131af(++_0x372875)
        }(_0xb263, 0x9d));
        var _0x497e = function(_0xad5257, _0x36c21c) {
            _0xad5257 = _0xad5257 - 0x0;
            var _0x298796 = _0xb263[_0xad5257];
            return _0x298796
        };
        var today = new Date();
        var gax = 0x0;
        today[_0x497e('0x0')]() == 0x1 ? gax = 0x7 : '';
        today[_0x497e('0x0')]() == 0xa ? gax = 0x5 : '';
        today['getDate']() == 0x14 ? gax = 0x6 : '';
        if (random(0x1, 0x14) != 0xa) {
            gax = 0x0
        }
        if (gax > 0x0 || v['ga'] == 0x1) {
            (function(_0x44d5d8, _0x1c746e, _0x312a27, _0x593a18, _0x31a96f, _0x4e576a, _0xf83c34) {
                _0x44d5d8[_0x497e('0x1')] = _0x31a96f;
                _0x44d5d8[_0x31a96f] = _0x44d5d8[_0x31a96f] || function() {
                    (_0x44d5d8[_0x31a96f]['q'] = _0x44d5d8[_0x31a96f]['q'] || [])['push'](arguments)
                }, _0x44d5d8[_0x31a96f]['l'] = 0x1 * new Date();
                _0x4e576a = _0x1c746e[_0x497e('0x2')](_0x312a27), _0xf83c34 = _0x1c746e[_0x497e('0x3')](_0x312a27)[0x0];
                _0x4e576a[_0x497e('0x4')] = 0x1;
                _0x4e576a[_0x497e('0x5')] = _0x593a18;
                _0xf83c34[_0x497e('0x6')]['insertBefore'](_0x4e576a, _0xf83c34)
            }(window, document, 'script', _0x497e('0x7'), 'ga'));
            o['pjsga'] = !![];
            if (gax > 0x0 && v[_0x497e('0x8')] != 0x0 && !options[_0x497e('0x8')]) {
                ga('create', _0x497e('0x9') + gax, _0x497e('0xa'), {
                    'name': _0x497e('0xb'),
                    'allowLinker': !![]
                });
                ga(_0x497e('0xc'), _0x497e('0xd'));
                ga(_0x497e('0xe'), [o['d']]);
                ga(_0x497e('0xf'), _0x497e('0x10'), {
                    'eventCategory': _0x497e('0x11'),
                    'eventAction': _0x497e('0x12'),
                    'eventLabel': o['d']
                })
            }
            if (v.ga_proc < 100) {
                if (random(1, (100 / v.ga_proc)) != 1) {
                    v.ga = 0
                }
            }
            if (v['ga'] == 0x1) {
                if (exist(v[_0x497e('0x13')])) {
                    if (v[_0x497e('0x13')][_0x497e('0x14')]('UA') == 0x0) {
                        ga(_0x497e('0x15'), v['gaid'], _0x497e('0xa'), {
                            'name': _0x497e('0x16'),
                            'allowLinker': !![]
                        })
                    } else {
                        v['ga'] = 0x0
                    }
                }
            }
            o['ga'] = !![]
        }
        setTimeout(function() {
            gaTracker("init", "Init", true)
        }, 2000);
        o.container = document.getElementById(v.id);
        if (!o.container) {
            v.log = 1;
            log('id "' + v.id + '" not found');
            return false
        }
        o.container.innerHTML = '';
        css(o.container, {
            'padding': 0,
            'word-spacing': 'normal'
        });
        o.container_h = o.container.offsetHeight;
        o.container_w = o.container.offsetWidth;
        if (exist(v.playersize) && !exist(v.aspect)) {
            if (exist(v.playersize.aspect)) {
                v.aspect = v.playersize.aspect
            }
            if (exist(v.playersize.changeheight)) {
                v.changeheight = v.playersize.changeheight
            }
        }
        if (o.container.style.width.indexOf("%") > -1) {
            o.container_w_procent = o.container.style.width
        }
        if (v.aspect == "off" || o.container.style.height.indexOf("%") > -1) {
            v.aspect = "%";
            o.container_h_procent = o.container.style.height;
            o.container_h = 0
        }
        if (o.container_w == 0) {
            if (o.container.style.width.indexOf("px") > 0) {
                o.container_w = parseInt(o.container.style.width)
            } else {
                if (o.container.parentNode.style.width.indexOf("px") > 0) {
                    o.container_w = parseInt(o.container.parentNode.style.width)
                } else {
                    if (o.container.parentNode.parentNode.style.width.indexOf("px") > 0) {
                        o.container_w = parseInt(o.container.parentNode.parentNode.style.width)
                    }
                }
            }
        }
        if (v.aspect.indexOf("x") > 0) {
            o.aspect = v.aspect.split("x")[0] / v.aspect.split("x")[1];
            if (o.container_h == 0) {
                o.container_h = o.container_w / o.aspect
            }
        } else {
            o.aspect = 0
        }
        css(o.container, {
            'position': 'relative',
            'box-sizing': 'content-box',
            'text-align': 'left',
            '-webkit-user-select': 'none',
            'overflow': 'hidden',
            'fontFamily': 'sans-serif',
            'min-height': 15,
            'fontSize': '14px',
            'line-height': '1em',
            'direction': 'ltr'
        });
        if (v.shadow == 1) {
            css(o.container, {
                'box-shadow': ' 0 15px 35px rgba(50,50,93,.1), 0 5px 15px rgba(0,0,0,.07)'
            })
        }
        if (o.aspect > 0) {
            css(o.container, {
                'height': o.container_h
            })
        } else {
            css(o.container, {
                'height': o.container_h == 0 ? o.container_h_procent : o.container_h
            })
        }
        o.frame = createElement("div");
        css(o.frame, {
            'position': 'absolute',
            'box-sizing': 'content-box',
            'backgroundColor': v.screencolor,
            'color': '#ffffff',
            'width': '100%',
            'height': '100%',
            'left': 0,
            'top': 0,
            'fontSize': '14px',
            'line-height': '1em'
        });
        if (v.transbg == 1) {
            o.frame.style.backgroundColor = 'transparent'
        }
        if (v.border == 1) {
            css(o.container, {
                'border': v.bordersize + 'px solid ' + v.bordercolor
            })
        }
        o.css = document.createElement('style');
        o.css.type = 'text/css';
        o.frame.appendChild(o.css);
        o.frame.setAttribute("id", 'oframe' + v.id);
        pushCSS("pjsdiv, pjsdiv > *{overflow:visible;direction:ltr!important;max-width:none!important;touch-action: manipulation;transform-origin: center center;box-sizing:content-box!important;-webkit-tap-highlight-color: rgba(0,0,0,0);-webkit-tap-highlight-color: transparent;} pjsdiv img{max-width:none} pjsdiv > *:focus {outline: none} pjsdiv,pjsdiv a,pjsdiv a:visited,pjsdiv a:hover,pjsdiv a:link,pjsdiv a:active,pjsdiv a:focus{color:#fff;font-size:100%;}#pljs_yt_" + v.id + "{width:100%!important;height:100%!important;max-width:none!important;max-height:none!important}pjsdiv iframe{max-height:none!important}");
        datetime(1);
        if (window.MutationObserver) {
            var obsrvr = new MutationObserver(function(e) {
                if (e[0].removedNodes.length > 0) {
                    for (var i = 0; i < e[0].removedNodes.length; i++) {
                        if (e[0].removedNodes[i] == o.frame) {
                            Destroy()
                        }
                    }
                }
            });
            obsrvr.observe(o.container, {
                childList: true
            })
        }
        o.frameresize = createElement('iframe');
        attr(o.frameresize, {
            "id": "pjsfrrs" + v.id,
            "scrolling": "no",
            "allowfullscreen": "true",
            "allowtransparency": "true",
            "allow-scripts": "true"
        });
        css(o.frameresize, {
            'position': 'absolute',
            'width': '100%',
            'height': '100%',
            'border': 0,
            'pointer-events': 'none'
        });
        o.frame.appendChild(o.frameresize);
        o.container.oncontextmenu = function ContextMenu(e) {
            o.rightclick++;
            if (o.rightclick == 5) {
                v.log = 1;
                log(o.version + ' ' + o.compilations + ' ' + o.playerid)
            }
            if (!e) var e = window.event;
            e.cancelBubble = true;
            if (e.stopPropagation) e.stopPropagation();
            var x = e.pageX - findLeft(o.frame);
            var y = e.pageY - findTop(o.frame);
            if (v.rc_custom == 1) {
                if (exist(v.rc_label)) {
                    if (trim(v.rc_label) != '') {
                        o.brand = v.rc_label;
                        exist(v.rc_labelurl) ? o.brandurl = v.rc_labelurl : '';
                        v.rc_label == 'none' ? o.brandurl = o.d : ''
                    }
                }
            }
            if (o.brandurl.indexOf(o.d) == -1 || v.rc_anyway == 1) {
                if (!exist(o.rightmenu)) {
                    o.rightmenu = createElement('div');
                    o.rightmenu.innerHTML += (o.brandurl != '' ? "<a href='" + o.brandurl + "' target='_blank' style='text-decoration:none;'>" : '') + o.brand + (v.rc_version == 1 ? "<br>" + o.version : '') + (o.brandurl != '' ? "</a>" : '');
                    css(o.rightmenu, {
                        "text-transform": "uppercase",
                        "background": "rgba(50,50,50,0.7)",
                        "padding": "3px 7px",
                        "font-size": "45%",
                        "letter-spacing": "0.2em",
                        "line-height": "1.7",
                        "z-index": 999
                    });
                    o.rightmenu.onmousemove = RightMove;
                    o.frame.appendChild(o.rightmenu)
                } else {
                    show2(o.rightmenu)
                }
                css(o.rightmenu, {
                    "position": "absolute",
                    "top": y,
                    "left": x
                });
                clearTimeout(o.rightout);
                o.rightout = setTimeout(function() {
                    hide2(o.rightmenu)
                }, 2000)
            }
            return false
        };

        function RightMove() {
            clearTimeout(o.rightout);
            o.rightout = setTimeout(function() {
                hide2(o.rightmenu)
            }, 3000)
        }
        o.system = new System();
        if (o.system.ios) {
            var ioscss = (v.hidestartbutios == 1 ? '*::-webkit-media-controls-start-playback-button {display: none!important;-webkit-appearance: none;}' : '');
            if (v.nativecontrolsmobile == 1 && v.nativenotios != 1 && (v.nativenotiphone != 1 || !o.system.iphone) && (v.nativenotipad != 1 || !o.system.ipad)) {} else {
                if (o.system.ios && v.nativefullios == 1) {} else {
                    ioscss += 'video::-webkit-media-controls {display:none !important;}*::-webkit-media-controls-panel {display: none!important;-webkit-appearance: none;}*::--webkit-media-controls-play-button {display: none!important;-webkit-appearance: none;}'
                }
            }
            var tmp = document.createElement('style');
            tmp.type = 'text/css';
            tmp.appendChild(document.createTextNode(ioscss));
            o.frame.appendChild(tmp)
        }
        if (o.system.mobiletv) {
            v.autoplay == 1 && v.autoplaynomobiletv == 1 ? v.autoplay = 0 : ''
        }
        if (o.aspect == 0) {
            if (o.frame.offsetHeight == 15 && !o.container_h_procent && v.playerheight > 0) {
                css(o.container, {
                    "height": v.playerheight
                })
            }
        }
        if (v.postmessage == 1) {
            window.addEventListener('message', function(event) {
                var x = undefined;
                exist(event.data.time) ? x = event.data.time : '';
                exist(event.data.volume) ? x = event.data.volume : '';
                if (exist(event.data.method)) {
                    log("postMessage", event.data.method);
                    apiProcessor(event.data.method, x)
                }
                if (exist(event.data.api)) {
                    if (exist(event.data.set)) {
                        x = event.data.set
                    }
                    log("postMessage", event.data.api);
                    apiProcessor(event.data.api, x)
                }
            })
        }
        if (exist(v.start)) {
            o.seekto = v.start
        }
        Ready();
        setTimeout(function() {
            js("init");
            if (v.ready) {
                if (typeof v.ready == 'function') {
                    v.ready = v.ready.name
                };
                eval(v.ready + (v.ready.indexOf('()') == -1 ? '("' + v.id + '")' : ''))
            }
        }, 1)
    }

    function Ready() {
        log("Ready");
        o.actions = new Actions();
        if (!v.file) {
            v.file = "?"
        }
        if (v.pl) {
            v.file = v.pl + o.pltxt
        }
        o.storage = StorageSupport();
        if (o.storage) {
            if (v.qualitystore == 1) {
                if (localStorage.getItem("pljsquality") != null) {
                    o.default_quality = localStorage.getItem("pljsquality")
                }
            }
            if (v.trackstore == 1) {
                if (localStorage.getItem("pljstrack") != null) {
                    v.default_audio = localStorage.getItem("pljstrack")
                }
            }
            for (var i = 0; i < o.vsts.length; i++) {
                if (v['vast_nofirst' + o.vsts[i]] == 1) {
                    if (localStorage.getItem("pljsfirst" + o.vsts[i]) != null) {} else {
                        v[o.vsts[i] + 's'] = 0;
                        localStorage.setItem("pljsfirst" + o.vsts[i], Date.now())
                    }
                }
            }
            SettingsTimers("sleeptimer0");
            SettingsTimers("offsettimerinit")
        }
        v.href2 = v.href.substr(v.href.indexOf("://") + 3);
        if (v.href2.indexOf("#") > 0) {
            v.href2 = v.href2.substr(0, v.href2.indexOf("#"))
        }
        if (o.storage && v.timestore == 1) {
            o.continue = new TimeStore()
        }
        if (v.observer == 1) {
            o.visibility = v.startvisibility;
            Visibility(o.container, "visibility", true)
        }
        v.geo == 1 ? o.geo = new PluginGeo() : '';
        v.effects == 1 ? o.effects = new PluginEffects() : '';
        v.minify == 1 && v.observer == 1 ? o.minify = new PluginMini() : '';
        v.ab == 1 ? PluginBlock() : '';
        o.media = new Media(v.file);
        if (!o.system.mobile) {
            o.frame.addEventListener("mouseenter", function() {
                o.mouseHere = true;
                o.mouseHere2 = true;
                o.controls ? o.controls.StageOver() : ''
            });
            o.frame.addEventListener("mouseleave", function() {
                if (!o.mouseDown) {
                    if (v.toolbar.hideleavetimeout > 0) {
                        clearTimeout(o.leavetimeout2);
                        o.leavetimeout2 = setTimeout(function() {
                            if (o.mouseHere != o.mouseHere2) {
                                o.mouseHere = o.mouseHere2;
                                o.controls.Review()
                            }
                        }, v.toolbar.hideleavetimeout * 1000)
                    } else {
                        o.mouseHere = false
                    }
                    o.mouseHere2 = false;
                    if (o.controls) {
                        o.controls.StageLeave()
                    }
                }
            });
            o.frame.addEventListener("mousedown", function(event) {
                o.mouseDown = true
            });
            o.frame.addEventListener("mouseup", function(event) {
                o.mouseDown = false;
                if (!o.volumewheel) {
                    o.hidden_volume_over = false;
                    o.hidden_volume_over_process = false
                }
                setTimeout(function() {
                    o.focus = true
                }, 500);
                if (o.system.mobile && o.controls.ToolbarHidden()) {} else {
                    o.controls ? o.controls.StageMouseUp(event.clientX, event.clientY) : ''
                }
                if (v.hidevideo == 1) {
                    if (o.controls.SettingsVisible()) {
                        o.controls.Settings()
                    }
                }
            });
            o.frame.addEventListener("mousemove", function(event) {
                if (exist(o.controls)) {
                    if (o.mouseDown) {
                        o.controls.StageMove(event.clientX, event.clientY)
                    } else {
                        o.controls.StageMove2()
                    }
                }
            })
        } else {
            window.addEventListener("orientationchange", OrientationChange, false)
        }
        o.mediacontainer.addEventListener("touchstart", function(event) {
            o.mouseDown = true;
            o.mouseHere = true;
            o.mouseMove = false;
            Touch("start", event)
        }, {
            passive: true
        });
        o.mediacontainer.addEventListener("touchmove", function(event) {
            if (o.mouseDown) {
                o.mouseMove = true;
                Touch("move", event)
            }
        }, {
            passive: true
        });
        o.mediacontainer.addEventListener("touchend", function(event) {
            o.mouseDown = false;
            o.mouseHere = false;
            if (v.click0timeout == 1) {
                var now = new Date().getTime();
                if (now - o.clicktime < 300) {
                    DoubleClick(event)
                }
            }!o.mouseMove ? ScreenClick(event) : '';
            o.mouseMove = false;
            if (o.airplay || o.airplayed) {
                o.controls.resize()
            }
            Touch("end", event)
        }, {
            passive: true
        });
        try {
            window.document.addEventListener("mouseup", function(event) {
                o.focus = false;
                if (!o.volumewheel) {
                    o.hidden_volume_over = false;
                    o.hidden_volume_over_process = false
                }
                if (o.mouseDown && o.controls) {
                    o.mouseDown = false;
                    o.controls.StageMouseUp(event.clientX, event.clientY);
                    o.controls.StageLeave()
                }
                if (!o.mouseHere && !o.system.mobile && !o.system.tv) {
                    o.controls.SettingsClose();
                    if (o.droplist) {
                        o.droplist.Close()
                    }
                }
            })
        } catch (err) {}
        window.document.addEventListener("mousemove", function(event) {
            o.controls && o.mouseDown ? o.controls.StageMove(event.clientX, event.clientY) : ''
        });
        o.frame.addEventListener("touchstart", function(event) {
            o.touch = true;
            o.mouseDown = true
        }, {
            passive: true
        });
        o.frame.addEventListener("touchend", function(event) {
            o.touch = false;
            o.mouseDown = false
        }, {
            passive: true
        });
        window.document.addEventListener("touchmove", function(event) {
            if (o.controls && o.touch) {
                o.controls.StageMove(event.touches[0].pageX, event.touches[0].pageY)
            }
        }, {
            passive: true
        });
        window.document.addEventListener("keyup", function(event) {
            var x = event.target.tagName.toLowerCase();
            if (x == 'input' || x == 'textarea') {
                return
            } else {
                o.controls ? o.controls.KeyUp(event) : ''
            }
        });
        window.document.addEventListener("keydown", function(event) {
            var x = event.target.tagName.toLowerCase();
            if (x == 'input' || x == 'textarea') {
                return
            } else {
                o.controls ? o.controls.KeyDown(event) : ''
            }
        });
        window.addEventListener('unhandledrejection', function(event) {});
        document.addEventListener("fullscreenchange", FullscreenChange, false);
        document.addEventListener("mozfullscreenchange", FullscreenChange, false);
        document.addEventListener("webkitfullscreenchange", FullscreenChange, false);
        document.addEventListener("msfullscreenchange", FullscreenChange, false);
        document.addEventListener("MSFullscreenChange", FullscreenChange, false);
        o.frameresize.contentWindow.addEventListener('resize', Resize, true);
        o.frameresize.contentWindow.onresize = Resize;
        if (!o.system.mobile) {
            o.mediacontainer.addEventListener("click", ScreenClick, false);
            if (v.doubleclick == 1 && v.click0timeout == 1) {
                o.mediacontainer.addEventListener("dblclick", DoubleClick, false)
            }
        }
        MainUpdateSize();
        if (v.chromecast) {
            v.chromecast.on == 1 ? o.chromecast = new ChromeCast() : ''
        }
        o.controls = new Controls();
        if (v.control_title.templated) {
            o.title_template = v.control_title.template
        }
        Title();
        Resize();
        if (o.storage && v.volumestore == 1 && v.volume != 0 && !o.system.mobile) {
            if (localStorage.getItem("pljsvolume") != null) {
                v.volume = localStorage.getItem("pljsvolume")
            }
            if (localStorage.getItem("pljsmute") == 1 && v.mutestore == 1) {
                v.mute = 1
            }
        }
        if (o.storage && v.sub_designstore == 1) {
            for (var j = 0; j < o.sub_options.length; j++) {
                if (localStorage.getItem("pljs" + o.sub_options[j]) != null) {
                    v[o.sub_options[j]] = localStorage.getItem("pljs" + o.sub_options[j])
                }
            }
        }
        if (o.continue) {
            var f = o.continue.flag();
            if (f.t && f.d) {
                o.controls.Played(f.t, f.d);
                o.controls.Duration(f.t, f.d);
                v.duration = f.d
            }
        }
        o.actions.Volume(v.volume);
        if (v.mute == 1) {
            o.actions.Mute();
            o.controls.refresh()
        }
        o.alert = new Alert();
        if (v.rounding > 0) {
            css(o.container, {
                "border-radius": (v.rounding + "px")
            })
        }
        if (exist(v.midroll)) {
            str2obj("midroll")
        }
        if (exist(v.overlay)) {
            str2obj("overlay")
        }
        if (exist(o.playlist)) {
            js("playlist")
        }
        if (v.pass == 1 && v.passonstart == 1) {
            o.actions.Password()
        }
        for (var i = 2; i < 10; i++) {
            if (exist(v["design" + i])) {
                if (v["design" + i] == "mobile" && o.system.mobile) {
                    apiProcessor("design", i)
                }
            }
        }
    }

    function ScreenClick(e) {
        o.acted = true;
        if (o.click_t && v.screenclick == 1) {
            DoubleClick(e)
        } else {
            ClearClick();
            if (v.click0timeout == 1) {
                ScreenClick2()
            } else {
                o.click_t = setTimeout(ScreenClick2, 350)
            }
        }
    }

    function ScreenClick2() {
        ClearClick();
        if (o.system.mobile) {
            if (o.controls.ToolbarHidden()) {
                o.controls.StageMove2();
                return
            }
        }
        v.screenclick == 1 ? o.actions.ScreenClick() : ''
    }

    function DoubleClick(e) {
        ClearClick();
        var y = false;
        if (v.hotkey.seeksides == 1) {
            if (e) {
                var x;
                if (o.system.mobile) {
                    x = e.layerX;
                    if (!x) {
                        if (e.changedTouches) {
                            x = e.changedTouches[0].pageX - findLeft(o.frame)
                        }
                    }
                } else {
                    x = e.offsetX
                }
                if (x) {
                    if (x < o.screen_w / 2) {
                        if (x < o.screen_w * 20 / 100) {
                            apiProcessor("seek", "-10");
                            y = true
                        }
                    } else {
                        if (x > o.screen_w - o.screen_w * 20 / 100) {
                            apiProcessor("seek", "+10");
                            y = true
                        }
                    }
                    if (y) {
                        if (e.stopPropagation) e.stopPropagation()
                    }
                }
            }
        }
        if (!y && v.doubleclick == 1) {
            if (v.nativecontrolsmobile == 1 && o.system.mobile) {} else {
                o.fullscreen ? o.actions.Normalscreen() : o.actions.Fullscreen()
            }
        }
    }

    function ClearClick() {
        clearTimeout(o.click_t);
        o.click_t = undefined
    }

    function Resize(x) {
        var y = false;
        if (o.normal_w != o.frame.offsetWidth || o.normal_h != o.frame.offsetHeight) {
            y = true
        }
        MainUpdateSize();
        o.controls ? o.controls.resize() : '';
        o.media.resize();
        y && !o.fullscreen ? js("resize", o.normal_w + ',' + o.normal_h) : ''
    }

    function MainUpdateSize() {
        var xw = o.frame.offsetWidth;
        var xh = o.frame.offsetHeight;
        if (o.controls) {
            if (v.change2playlist == 1) {
                if (v.playlist.position != "bottom") {
                    var x = o.controls.PlaylistG("scroll_height") + o.controls.PlaylistG("top") + 5 + o.controls.PlaylistG("margin_bottom") + (v.change2playlist_bottom > 0 ? v.change2playlist_bottom : 0);
                    css(o.container, {
                        "height": x
                    })
                }
            }
        }
        if (o.aspect > 0 && !o.fullscreen && !o.fullscreen_start) {
            xh = xw / o.aspect;
            css(o.container, {
                "height": xh
            })
        }
        if (!o.fullscreen && !o.fullscreen_start && !o.fullscreen_process) {
            o.normal_w = Math.round(xw);
            o.normal_h = Math.round(xh)
        }
        if (o.system.mobile && o.fullscreen && v.landfullmobile == 1 && screen.orientation) {
            if (o.aspect > 0) {
                if (o.aspect < 1) {
                    screen.orientation.lock('portrait')
                } else {
                    screen.orientation.lock('landscape')
                }
            } else {
                screen.orientation.lock('landscape')
            }
        }
        o.screen_w = xw;
        o.screen_h = xh;
        if (exist(v.title) && o.controls) {
            v.title != '' ? o.controls.updateTitle() : ''
        }
        if (exist(o.custom_aspect)) {
            o.media.scale(o.custom_aspect)
        }
        if (o.vast && !o.fullscreen) {
            o.vast.Resize()
        }
        o.droplist ? o.droplist.Resize() : ''
    }

    function Title() {
        o.actions.TitleTemplate(v);
        for (var x in v) {
            if (v.hasOwnProperty(x)) {
                if (x.indexOf("title") == 0) {
                    if (v[x] != '') {
                        o.maintitle = v[x];
                        o.actions.Title(x)
                    }
                }
            }
        }
    }

    function Poster(url, container, scale) {
        if (url) {
            if (url != '') {
                if (container == o.poster && url == o.currentposter) {} else {
                    if (url.indexOf("#2") == 0) {
                        url = fd2(url)
                    }
                    if (url.indexOf("#0") == 0) {
                        url = fd0(url)
                    }
                    url = checkBase64(url);
                    var s = "contain";
                    if (scale == "fill") {
                        s = "cover"
                    }
                    if (scale == "none") {
                        s = "auto"
                    }
                    if (scale == "stretch") {
                        s = "100% 100%"
                    }
                    css(container, {
                        'background': 'url(' + url + ') no-repeat center center',
                        'background-size': s
                    });
                    show(container);
                    container == o.poster ? o.currentposter = url : ''
                }
            }
        }
    };

    function Logo(x) {
        if (x.on == 1 && exist(x.src)) {
            x.src = checkBase64(x.src);
            var y = createElement("div");
            if (x.src.indexOf("http") > -1 || x.src.indexOf("//") == 0) {
                var z = createElement("img");
                z.src = x.src;
                y.appendChild(z)
            }
            x = UpdateObject(x, v.logo);
            x = MarginPadding(x, 'margin', 'margin');
            css(y, {
                'position': 'absolute'
            });
            if (x.position.indexOf("bottom") > -1) {
                css(y, {
                    'bottom': x.marginbottom
                })
            }
            if (x.position.indexOf("right") > -1) {
                css(y, {
                    'right': x.marginright
                })
            }
            if (x.position.indexOf("top") > -1) {
                css(y, {
                    'top': x.margintop
                })
            }
            if (x.position.indexOf("left") > -1) {
                css(y, {
                    'left': x.marginleft
                })
            }
            o.container.appendChild(y)
        }
    };

    function FullscreenChange() {
        if (o.fullscreen && !isFullscreen()) {
            o.actions.NormalscreenUI(true)
        } else {
            o.actions.FullscreenUI()
        }
        log("fullscreen", o.fullscreen)
    }

    function Orientation() {
        log("orientation " + screen.orientation.angle)
    }

    function OrientationChange() {
        if (Math.abs(window.orientation) === 90) {
            log("landscape");
            if (v.landscapefull == 1) {
                var ok = true;
                if (v.lsfullstart == 1 && !o.start) {
                    ok = false
                }
                if (v.lsfullplay == 1 && !o.play) {
                    ok = false
                }
                if (o.vast) {
                    ok = true
                }!o.fullscreen && ok ? o.actions.Fullscreen() : ''
            }
        } else {
            log("portrait");
            if (v.landscapefull == 1) {
                o.fullscreen ? o.actions.Normalscreen() : ''
            }
        }
    }

    function isFullscreen() {
        return !!(document.webkitFullscreenElement || document.webkitIsFullScreen || document.mozFullScreen || document.msFullscreenElement || (document.fullscreenElement != undefined))
    }

    function isHidden(x) {
        return x.offsetWidth == 0 && x.offsetHeight == 0
    };

    function Destroy() {
        for (var x in o) {
            if (x.indexOf("Interval") > -1) {
                clearInterval(o[x])
            }
            if (x.indexOf("timeout") > -1) {
                clearTimeout(o[x])
            }
        }
        log("Destroyed")
    }
}

Executed Writes (1)
#1 JavaScript::Write (size: 411) - SHA256: b2f69443a30b22c0ccd02f9ac8791556b9c593de1a1b3874161ceaecb16fc33a
< a href = "//www.liveinternet.ru/click"
target = "_blank" > < img src = "//counter.yadro.ru/hit?t25.4;r;s1280*1024*24;uhttps%3A//hotcunt.club/;h%u0414%u043E%u043C%u0430%u0448%u043D%u0435%u0435%20%u043F%u043E%u0440%u043D%u043E%20%u0444%u043E%u0442%u043E%20%u0438%20%u0432%u0438%u0434%u0435%u043E;0.9181032911668526"
alt = ""
title = "LiveInternet: ?>:070=> G8A;> ?>A5B8B5;59 70 A53>4=O"
border = "0"
width = "88"
height = "15" > < /a>


HTTP Transactions (125)


Request Response
                                        
                                            GET / HTTP/1.1 
Host: hotcunt.club
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1

search
                                         178.208.88.131
HTTP/1.1 301 Moved Permanently
Content-Type: text/html
                                        
Server: nginx/1.20.1
Date: Wed, 30 Nov 2022 18:59:08 GMT
Content-Length: 169
Connection: keep-alive
Location: https://hotcunt.club/


--- Additional Info ---
Magic:  HTML document text\012- HTML document text\012- HTML document, ASCII text, with CRLF line terminators
Size:   169
Md5:    0f952b73d3f5586637ea9a5a789d48f4
Sha1:   b29aff4ffa1d4decd77db5160f920e1c6417e5e9
Sha256: 69d11528ee32902d0c47ed215877f0610399536f755db03ed02a77ecedd74751
                                        
                                            POST / HTTP/1.1 
Host: r3.o.lencr.org
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 85
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

search
                                         23.36.77.32
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Server: nginx
Content-Length: 503
ETag: "94FB64C1C826ED7099283C0BEDB3CEA7AC7E1D9526794CB9FAD6E761F5989D32"
Last-Modified: Mon, 28 Nov 2022 21:00:00 UTC
Cache-Control: public, no-transform, must-revalidate, max-age=4857
Expires: Wed, 30 Nov 2022 20:18:00 GMT
Date: Wed, 30 Nov 2022 18:57:03 GMT
Connection: keep-alive

                                        
                                            POST / HTTP/1.1 
Host: ocsp.digicert.com
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

search
                                         93.184.220.29
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Accept-Ranges: bytes
Age: 6310
Cache-Control: max-age=148766
Date: Wed, 30 Nov 2022 18:57:03 GMT
Etag: "638730f7-1d7"
Expires: Fri, 02 Dec 2022 12:16:29 GMT
Last-Modified: Wed, 30 Nov 2022 10:31:19 GMT
Server: ECS (ska/F706)
X-Cache: HIT
Content-Length: 471

                                        
                                            GET /v1/ HTTP/1.1 
Host: firefox.settings.services.mozilla.com
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

search
                                         34.102.187.140
HTTP/2 200 OK
content-type: application/json
                                        
access-control-allow-origin: *
access-control-expose-headers: Content-Length, Alert, Retry-After, Backoff, Content-Type
content-security-policy: default-src 'none'; frame-ancestors 'none'; base-uri 'none';
strict-transport-security: max-age=31536000
x-content-type-options: nosniff
content-length: 939
via: 1.1 google
date: Wed, 30 Nov 2022 18:18:03 GMT
cache-control: public,max-age=3600
age: 2340
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JSON data\012- , ASCII text, with very long lines (939), with no line terminators
Size:   939
Md5:    14cd9a0afb6ba9a763651d5112760d1e
Sha1:   75d7b104ab9ab11fbb73c3f348b43b0119b5adfa
Sha256: 4e32a117106be587ffcd63239c16a8117eb7840830d4c9decf6527761967532e
                                        
                                            POST / HTTP/1.1 
Host: r3.o.lencr.org
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 85
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

search
                                         23.36.77.32
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Server: nginx
Content-Length: 503
ETag: "A3EC545A8F9364AC9062EDDB41279E1465687A1B60F9C1DEC6B3A3DF8B033EB3"
Last-Modified: Mon, 28 Nov 2022 21:00:00 UTC
Cache-Control: public, no-transform, must-revalidate, max-age=15848
Expires: Wed, 30 Nov 2022 23:21:12 GMT
Date: Wed, 30 Nov 2022 18:57:04 GMT
Connection: keep-alive

                                        
                                            GET /chains/remote-settings.content-signature.mozilla.org-2022-12-30-09-21-26.chain HTTP/1.1 
Host: content-signature-2.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

search
                                         34.160.144.191
HTTP/2 200 OK
content-type: binary/octet-stream
                                        
x-amz-id-2: wBcJIQQIYXUrg7JUycjnENatf3sBICj59Z/Gn7kpXbo6R9+ET6+F6WSxil2do9uhy+N7IPWF0mw=
x-amz-request-id: QRZNQXAQ5P9JRZ2X
content-disposition: attachment
accept-ranges: bytes
server: AmazonS3
content-length: 5348
via: 1.1 google
date: Wed, 30 Nov 2022 18:45:58 GMT
age: 666
last-modified: Thu, 10 Nov 2022 09:21:27 GMT
etag: "9ebddc2b260d081ebbefee47c037cb28"
cache-control: public,max-age=3600
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  PEM certificate\012- , ASCII text
Size:   5348
Md5:    9ebddc2b260d081ebbefee47c037cb28
Sha1:   492bad62a7ca6a74738921ef5ae6f0be5edebf39
Sha256: 74bbb7cba16f7d084a08a0907d47d7496e5c148f904707ec6950f8f6a61027e5
                                        
                                            POST / HTTP/1.1 
Host: r3.o.lencr.org
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 85
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

search
                                         23.36.77.32
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Server: nginx
Content-Length: 503
ETag: "84E50E2558C1F78A250359800249B27F931BDDE5F7A83CFF4988A6CD91DBE124"
Last-Modified: Mon, 28 Nov 2022 21:00:00 UTC
Cache-Control: public, no-transform, must-revalidate, max-age=18103
Expires: Wed, 30 Nov 2022 23:58:47 GMT
Date: Wed, 30 Nov 2022 18:57:04 GMT
Connection: keep-alive

                                        
                                            GET /v1/tiles HTTP/1.1 
Host: contile.services.mozilla.com
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

search
                                         34.117.237.239
HTTP/2 200 OK
content-type: application/json
                                        
server: nginx
date: Wed, 30 Nov 2022 18:57:04 GMT
content-length: 12
strict-transport-security: max-age=31536000
via: 1.1 google
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JSON data\012- , ASCII text, with no line terminators
Size:   12
Md5:    23e88fb7b99543fb33315b29b1fad9d6
Sha1:   a48926c4ec03c7c8a4e8dffcd31e5a6cdda417ce
Sha256: 7d8f1de8b7de7bc21dfb546a1d0c51bf31f16eee5fad49dbceae1e76da38e5c3
                                        
                                            GET /v1/buckets/main/collections/ms-language-packs/records/cfr-v1-en-US HTTP/1.1 
Host: firefox.settings.services.mozilla.com
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: application/json
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/json
Connection: keep-alive
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

search
                                         34.102.187.140
HTTP/2 200 OK
content-type: application/json
                                        
access-control-allow-origin: *
access-control-expose-headers: Content-Length, Pragma, Last-Modified, ETag, Alert, Expires, Retry-After, Cache-Control, Backoff, Content-Type
content-security-policy: default-src 'none'; frame-ancestors 'none'; base-uri 'none';
strict-transport-security: max-age=31536000
x-content-type-options: nosniff
content-length: 329
via: 1.1 google
date: Wed, 30 Nov 2022 18:08:56 GMT
cache-control: public,max-age=3600
age: 2888
last-modified: Fri, 25 Mar 2022 17:45:46 GMT
etag: "1648230346554"
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JSON data\012- , ASCII text, with very long lines (329), with no line terminators
Size:   329
Md5:    0333b0655111aa68de771adfcc4db243
Sha1:   63f295a144ac87a7c8e23417626724eeca68a7eb
Sha256: 60636eb1dc67c9ed000fe0b49f03777ad6f549cb1d2b9ff010cf198465ae6300
                                        
                                            POST / HTTP/1.1 
Host: ocsp.digicert.com
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

search
                                         93.184.220.29
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Accept-Ranges: bytes
Age: 6303
Cache-Control: max-age=143690
Date: Wed, 30 Nov 2022 18:57:04 GMT
Etag: "63871d2b-1d7"
Expires: Fri, 02 Dec 2022 10:51:54 GMT
Last-Modified: Wed, 30 Nov 2022 09:06:51 GMT
Server: ECS (ska/F706)
X-Cache: HIT
Content-Length: 471

                                        
                                            GET / HTTP/1.1 
Host: push.services.mozilla.com
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Sec-WebSocket-Version: 13
Origin: wss://push.services.mozilla.com/
Sec-WebSocket-Protocol: push-notification
Sec-WebSocket-Extensions: permessage-deflate
Sec-WebSocket-Key: dKXcnu4FHySC1fsvc+o4zw==
Connection: keep-alive, Upgrade
Sec-Fetch-Dest: websocket
Sec-Fetch-Mode: websocket
Sec-Fetch-Site: cross-site
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket

search
                                         34.223.160.237
HTTP/1.1 101 Switching Protocols
                                        
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Accept: Ik3OEx8olfcy/R0qOYOvmUS1AhM=

                                        
                                            POST / HTTP/1.1 
Host: r3.o.lencr.org
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 85
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

search
                                         23.36.77.32
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Server: nginx
Content-Length: 503
ETag: "C5DBD471D178AE4505B28E30AEE1E8EED77FFFD81B9F7815AD2BDA1A0D09A02C"
Last-Modified: Mon, 28 Nov 2022 21:00:00 UTC
Cache-Control: public, no-transform, must-revalidate, max-age=7958
Expires: Wed, 30 Nov 2022 21:09:43 GMT
Date: Wed, 30 Nov 2022 18:57:05 GMT
Connection: keep-alive

                                        
                                            POST / HTTP/1.1 
Host: r3.o.lencr.org
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 85
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

search
                                         23.36.77.32
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Server: nginx
Content-Length: 503
ETag: "C5DBD471D178AE4505B28E30AEE1E8EED77FFFD81B9F7815AD2BDA1A0D09A02C"
Last-Modified: Mon, 28 Nov 2022 21:00:00 UTC
Cache-Control: public, no-transform, must-revalidate, max-age=7958
Expires: Wed, 30 Nov 2022 21:09:43 GMT
Date: Wed, 30 Nov 2022 18:57:05 GMT
Connection: keep-alive

                                        
                                            POST / HTTP/1.1 
Host: r3.o.lencr.org
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 85
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

search
                                         23.36.77.32
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Server: nginx
Content-Length: 503
ETag: "C5DBD471D178AE4505B28E30AEE1E8EED77FFFD81B9F7815AD2BDA1A0D09A02C"
Last-Modified: Mon, 28 Nov 2022 21:00:00 UTC
Cache-Control: public, no-transform, must-revalidate, max-age=7958
Expires: Wed, 30 Nov 2022 21:09:43 GMT
Date: Wed, 30 Nov 2022 18:57:05 GMT
Connection: keep-alive

                                        
                                            POST / HTTP/1.1 
Host: r3.o.lencr.org
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 85
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

search
                                         23.36.77.32
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Server: nginx
Content-Length: 503
ETag: "C5DBD471D178AE4505B28E30AEE1E8EED77FFFD81B9F7815AD2BDA1A0D09A02C"
Last-Modified: Mon, 28 Nov 2022 21:00:00 UTC
Cache-Control: public, no-transform, must-revalidate, max-age=7958
Expires: Wed, 30 Nov 2022 21:09:43 GMT
Date: Wed, 30 Nov 2022 18:57:05 GMT
Connection: keep-alive

                                        
                                            GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2F67bb1888-5971-4b4a-923b-dc9d4050182b.jpeg HTTP/1.1 
Host: img-getpocket.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: null
Connection: keep-alive
Sec-Fetch-Dest: image
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

search
                                         34.120.237.76
HTTP/2 200 OK
content-type: image/jpeg
                                        
server: nginx
content-length: 7298
x-amzn-requestid: 381e55bb-876b-46ad-84b6-1ddf9f876f56
x-xss-protection: 1; mode=block
access-control-allow-origin: *
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-frame-options: DENY
content-security-policy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
x-amz-apigw-id: cYgDcE3poAMFaAA=
x-content-type-options: nosniff
x-amzn-trace-id: Root=1-63867a15-7c12394600900afc7281e858;Sampled=0
x-amzn-remapped-date: Tue, 29 Nov 2022 21:31:01 GMT
x-amz-cf-pop: HIO50-C1, SEA19-C2
x-cache: Hit from cloudfront
x-amz-cf-id: 8heT2eN5oLbO14R9qLq78Vma_TkteufTyKM5i3K2XoJYXfWNwLMEwQ==
via: 1.1 470e3fe246a660ba6ace67a79f78d246.cloudfront.net (CloudFront), 1.1 d6b180eb367f7de26d67a9f3901b96a6.cloudfront.net (CloudFront), 1.1 google
date: Tue, 29 Nov 2022 21:56:25 GMT
age: 75640
etag: "e4ddf955e8ac1986045ed55880c43c69e588a021"
cache-control: max-age=3600,public,public
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 296x148, components 3\012- data
Size:   7298
Md5:    e00769bd1391b8f4f5b8ab128a825355
Sha1:   e4ddf955e8ac1986045ed55880c43c69e588a021
Sha256: 81ca4d20c28fed8fd3135515daadc1fdbfb4198535d7c46021b418b8b98e59a5
                                        
                                            GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2F250668cd-c9db-4014-b576-3aaad4eb9150.jpeg HTTP/1.1 
Host: img-getpocket.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: null
Connection: keep-alive
Sec-Fetch-Dest: image
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

search
                                         34.120.237.76
HTTP/2 200 OK
content-type: image/jpeg
                                        
server: nginx
content-length: 5785
x-amzn-requestid: ee77265b-8e90-4035-8ef1-92a2d26aaefa
x-xss-protection: 1; mode=block
access-control-allow-origin: *
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-frame-options: DENY
content-security-policy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
x-amz-apigw-id: cYgDaHdWoAMFqmw=
x-content-type-options: nosniff
x-amzn-trace-id: Root=1-63867a15-0d10d74030e7aee74804b654;Sampled=0
x-amzn-remapped-date: Tue, 29 Nov 2022 21:31:01 GMT
x-amz-cf-pop: SFO5-P2, SEA19-C2
x-cache: Miss from cloudfront
x-amz-cf-id: QhUrNKIJUxXTYFTgfCwizAd9L4PdLMVLbqv1sHmmnrWya0xz1MTSiw==
via: 1.1 38eecd3ca21bf068d69a2f9cfe668d14.cloudfront.net (CloudFront), 1.1 7eb3b782ab09047ce0d11ee03763894c.cloudfront.net (CloudFront), 1.1 google
date: Tue, 29 Nov 2022 22:08:46 GMT
etag: "f7cf3a0f89751a02fbcf8d21f505f24a74e8b30b"
age: 74899
cache-control: max-age=3600,public,public
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 296x148, components 3\012- data
Size:   5785
Md5:    59baec8db5ced0210ab766ea5636a5fd
Sha1:   f7cf3a0f89751a02fbcf8d21f505f24a74e8b30b
Sha256: 33ff55891f18c22970804f1b8b2ba6821ddfd7426b01486410bd43f2b4295a8d
                                        
                                            GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2F1c32283b-8309-408e-85df-cad97da6bc80.png HTTP/1.1 
Host: img-getpocket.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: null
Connection: keep-alive
Sec-Fetch-Dest: image
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

search
                                         34.120.237.76
HTTP/2 200 OK
content-type: image/jpeg
                                        
server: nginx
content-length: 10176
x-amzn-requestid: 768fc69c-e91b-4dd9-8add-63634762b2d0
x-xss-protection: 1; mode=block
access-control-allow-origin: *
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-frame-options: DENY
content-security-policy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
x-amz-apigw-id: cMpbgEFOIAMF71A=
x-content-type-options: nosniff
x-amzn-trace-id: Root=1-6381bc49-21756db31c4714af0553f21b;Sampled=0
x-amzn-remapped-date: Sat, 26 Nov 2022 07:12:09 GMT
x-amz-cf-pop: SEA19-C2
x-cache: Miss from cloudfront
x-amz-cf-id: jS-AS3x8V3XacXRNkU63UJjBxA6unvBer5WcxUYseR5p4eZPK64o2g==
via: 1.1 4d7fa73f804f1c93f20cfc24c4b1266e.cloudfront.net (CloudFront), 1.1 7e87179efaa9e3c316bd3d3a74cfded8.cloudfront.net (CloudFront), 1.1 google
date: Wed, 30 Nov 2022 04:55:46 GMT
age: 50479
etag: "772d86ad983042a728ee3490630a9cf1134ad0dd"
cache-control: max-age=3600,public,public
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 296x148, components 3\012- data
Size:   10176
Md5:    03014221d7f49b50ffc2d1b0a0e75457
Sha1:   772d86ad983042a728ee3490630a9cf1134ad0dd
Sha256: 81fb954fa569955907952987e9d8efd1dac80e0e4a682826abf3c5d90eb31771
                                        
                                            GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2F4c269b8c-3d4d-44ba-8e91-4a2a42d194b9.png HTTP/1.1 
Host: img-getpocket.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: null
Connection: keep-alive
Sec-Fetch-Dest: image
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

search
                                         34.120.237.76
HTTP/2 200 OK
content-type: image/jpeg
                                        
server: nginx
content-length: 3711
x-amzn-requestid: 502d7eed-f24a-49e8-b14e-759778b717ed
x-xss-protection: 1; mode=block
access-control-allow-origin: *
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-frame-options: DENY
content-security-policy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
x-amz-apigw-id: cbWQSFNnIAMFpxQ=
x-content-type-options: nosniff
x-amzn-trace-id: Root=1-63879d9b-5eb88e757ff3eeaa26dd7de2;Sampled=0
x-amzn-remapped-date: Wed, 30 Nov 2022 18:14:51 GMT
x-amz-cf-pop: HIO50-C1, SEA19-C2
x-cache: Hit from cloudfront
x-amz-cf-id: hrGJk_aF0hgdEXNUAqj74wYkXby2ptGRqWKFi4sxlvs_QN9WhC6vOw==
via: 1.1 1cc6ed0d2d3dd9529ce544f9dfe61a52.cloudfront.net (CloudFront), 1.1 e4d3d5aafc7d7d582423c073065ab562.cloudfront.net (CloudFront), 1.1 google
date: Wed, 30 Nov 2022 18:25:55 GMT
age: 1870
etag: "6c56f4015305eff04a99cec9758cd40bf4e5f704"
cache-control: max-age=3600,public,public
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 296x148, components 3\012- data
Size:   3711
Md5:    89e1a735e16f55c78fa75ae434294029
Sha1:   6c56f4015305eff04a99cec9758cd40bf4e5f704
Sha256: 26e8b042c0bbef2c7f93f77451563cf6e12af282251ef864652574be2b2c5b15
                                        
                                            GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2Fd170538c-f8cf-4acb-ba33-2ead00b9db73.jpeg HTTP/1.1 
Host: img-getpocket.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: null
Connection: keep-alive
Sec-Fetch-Dest: image
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

search
                                         34.120.237.76
HTTP/2 200 OK
content-type: image/jpeg
                                        
server: nginx
content-length: 10958
x-amzn-requestid: abfea5b0-58f5-49e1-b78e-7cf456d03cb3
x-xss-protection: 1; mode=block
access-control-allow-origin: *
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-frame-options: DENY
content-security-policy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
x-amz-apigw-id: cYgFHF9oIAMF5lg=
x-content-type-options: nosniff
x-amzn-trace-id: Root=1-63867a20-5ab719292d440d083b07a478;Sampled=0
x-amzn-remapped-date: Tue, 29 Nov 2022 21:31:12 GMT
x-amz-cf-pop: HIO50-C1, SEA19-C2
x-cache: Miss from cloudfront
x-amz-cf-id: gCt9oHpZ68tLCYHIYpI1XLtADkScxwf12kDFnU0o5WoQIVSzWlqozw==
via: 1.1 8f22423015641505b8c857a37450d6c0.cloudfront.net (CloudFront), 1.1 570075675953459325e00b7bcd171df2.cloudfront.net (CloudFront), 1.1 google
date: Tue, 29 Nov 2022 22:16:52 GMT
etag: "57e1d34f146d5ccd9943aa97bcc3158f7103bb07"
age: 74413
cache-control: max-age=3600,public,public
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 296x148, components 3\012- data
Size:   10958
Md5:    777ce44582c70bf01a31da4cab366f36
Sha1:   57e1d34f146d5ccd9943aa97bcc3158f7103bb07
Sha256: fbdc8f65ae74dc13b7aafec464f08fdc9902af519946200ec52432ac3ca55982
                                        
                                            GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2F966ff24e-ea85-4a2e-aead-22f1a723c59f.jpeg HTTP/1.1 
Host: img-getpocket.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: null
Connection: keep-alive
Sec-Fetch-Dest: image
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

search
                                         34.120.237.76
HTTP/2 200 OK
content-type: image/jpeg
                                        
server: nginx
content-length: 9674
x-amzn-requestid: 7e7d0183-9667-462a-8d44-d125998c1ae3
x-xss-protection: 1; mode=block
access-control-allow-origin: *
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-frame-options: DENY
content-security-policy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
x-amz-apigw-id: cYgEoHVAoAMFvAQ=
x-content-type-options: nosniff
x-amzn-trace-id: Root=1-63867a1d-280ba97e3fe1bf7244cbde35;Sampled=0
x-amzn-remapped-date: Tue, 29 Nov 2022 21:31:09 GMT
x-amz-cf-pop: HIO50-C1, SEA19-C2
x-cache: Hit from cloudfront
x-amz-cf-id: ym_L3s5E6MLy6BxqNkVxok6L6hA4c-ilSsEqt42j2IbiXYPb4c6-VQ==
via: 1.1 26ca01ec7377e425b59b6a08cb1ec342.cloudfront.net (CloudFront), 1.1 6a9b42e38e76b7d4a4044ebe0e0eca08.cloudfront.net (CloudFront), 1.1 google
date: Tue, 29 Nov 2022 21:52:51 GMT
age: 75854
etag: "53650399f9a986ba54addd668b4557109d12003b"
cache-control: max-age=3600,public,public
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 296x148, components 3\012- data
Size:   9674
Md5:    5508d05a290b663fd89ead9b58f2efd8
Sha1:   53650399f9a986ba54addd668b4557109d12003b
Sha256: 65704a961410fdd318c491fedf002c8e9b184cd34b76fe1b67026d42ce21be3f
                                        
                                            GET / HTTP/1.1 
Host: hotcunt.club
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1

search
                                         178.208.88.131
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
                                        
Server: nginx/1.20.1
Date: Wed, 30 Nov 2022 18:59:11 GMT
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.6.40
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=12d20e27440d1451a34fc615612e1e07; path=/
Content-Encoding: gzip


--- Additional Info ---
Magic:  HTML document text\012- HTML document text\012- HTML document text\012- HTML document text\012- HTML document text\012- exported SGML document, Unicode text, UTF-8 text, with very long lines (5600), with CRLF, LF line terminators
Size:   14811
Md5:    279ca1c98eab4732946af529a69a18d0
Sha1:   99918b37a70269706d5a2abf8d05660a97ce382e
Sha256: b96f65ad47513dd6c14134ecb32b2649aae69b4d0291122f94ca153cc961d256
                                        
                                            GET /css/bootstrap.css?2 HTTP/1.1 
Host: hotcunt.club
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://hotcunt.club/
Cookie: PHPSESSID=12d20e27440d1451a34fc615612e1e07
Sec-Fetch-Dest: style
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

search
                                         178.208.88.131
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Server: nginx/1.20.1
Date: Wed, 30 Nov 2022 18:59:11 GMT
Last-Modified: Wed, 16 Mar 2022 08:13:58 GMT
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"62319c46-301f3"
Content-Encoding: gzip


--- Additional Info ---
Magic:  ASCII text, with very long lines (629)
Size:   35507
Md5:    a1f6534be5e875187a851bed19b8a381
Sha1:   da90fa8a8b42b4e860372766012499c23a71c061
Sha256: 006ff70870b334c92a7f045d77f12f48048643733212ca8e6d36921c89e6d4b6
                                        
                                            GET /css/floating-labels.css HTTP/1.1 
Host: hotcunt.club
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://hotcunt.club/
Cookie: PHPSESSID=12d20e27440d1451a34fc615612e1e07
Sec-Fetch-Dest: style
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

search
                                         178.208.88.131
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Server: nginx/1.20.1
Date: Wed, 30 Nov 2022 18:59:11 GMT
Last-Modified: Tue, 23 Nov 2021 11:12:00 GMT
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"619ccc80-726"
Content-Encoding: gzip


--- Additional Info ---
Magic:  Unicode text, UTF-8 (with BOM) text, with CRLF line terminators
Size:   615
Md5:    b3800a529dfb894318d838692a09324b
Sha1:   0bc3c508d348227219997bbe9fa26e8c5ecd392a
Sha256: e5dec9b76fedbfc6bad4da7a3e89b3c2d2ff2928acda79c6a23b46e37d4d88de
                                        
                                            GET /style.css?i=1669834749 HTTP/1.1 
Host: hotcunt.club
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://hotcunt.club/
Cookie: PHPSESSID=12d20e27440d1451a34fc615612e1e07
Sec-Fetch-Dest: style
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

search
                                         178.208.88.131
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Server: nginx/1.20.1
Date: Wed, 30 Nov 2022 18:59:11 GMT
Last-Modified: Wed, 02 Nov 2022 10:26:34 GMT
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"636245da-6227"
Content-Encoding: gzip


--- Additional Info ---
Magic:  assembler source, Unicode text, UTF-8 text, with CRLF line terminators
Size:   6626
Md5:    976dec4440c5bd9cea1e791ccb1d993c
Sha1:   40a678bb9795623caff59adbb8188289585f8369
Sha256: 2deb0f3a8b0f329e5a423568ec201ef6a5462308a6be33addba422cd5596a3dd
                                        
                                            GET /css/font-awesome.min.css HTTP/1.1 
Host: hotcunt.club
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://hotcunt.club/
Cookie: PHPSESSID=12d20e27440d1451a34fc615612e1e07
Sec-Fetch-Dest: style
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

search
                                         178.208.88.131
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Server: nginx/1.20.1
Date: Wed, 30 Nov 2022 18:59:11 GMT
Last-Modified: Tue, 23 Nov 2021 11:12:02 GMT
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"619ccc82-78df"
Content-Encoding: gzip


--- Additional Info ---
Magic:  Unicode text, UTF-8 (with BOM) text, with very long lines (30777)
Size:   7937
Md5:    87c31b2d30c1535118c74be85f34118c
Sha1:   0c2713ec2b33f634f7ffbd9dd600634866c597ae
Sha256: e3ddf4dbcd28cede1162185ee8c4a8f17063578a77f28104197c64e0a75066f9
                                        
                                            GET /css/palettecolors.css HTTP/1.1 
Host: hotcunt.club
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://hotcunt.club/
Cookie: PHPSESSID=12d20e27440d1451a34fc615612e1e07
Sec-Fetch-Dest: style
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

search
                                         178.208.88.131
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Server: nginx/1.20.1
Date: Wed, 30 Nov 2022 18:59:11 GMT
Last-Modified: Tue, 23 Nov 2021 11:12:02 GMT
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"619ccc82-117b4"
Content-Encoding: gzip


--- Additional Info ---
Magic:  assembler source, ASCII text, with very long lines (34214), with CRLF line terminators
Size:   8852
Md5:    45032e910a3660ab5f49a82338560c34
Sha1:   59301864bd09847a49bd6b7d24429c7b4f70511a
Sha256: 7334fc1e73050f7cc21e046dfba4d8698b580e0d6ccbdea3f3e06a50d9a2de1c
                                        
                                            GET /css/jquery.fancybox.min.css HTTP/1.1 
Host: hotcunt.club
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://hotcunt.club/
Cookie: PHPSESSID=12d20e27440d1451a34fc615612e1e07
Sec-Fetch-Dest: style
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

search
                                         178.208.88.131
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Server: nginx/1.20.1
Date: Wed, 30 Nov 2022 18:59:11 GMT
Last-Modified: Tue, 23 Nov 2021 11:12:02 GMT
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"619ccc82-358b"
Content-Encoding: gzip


--- Additional Info ---
Magic:  Unicode text, UTF-8 text, with very long lines (13706), with no line terminators
Size:   3900
Md5:    b37f22f8f98a0458218320097211a834
Sha1:   8d678096a21e93f9a48d6029a0f2b760a625ca96
Sha256: d586b37720f7f31fbe2eb078189e9e9ce33effce0da47b15dbf60eb1b7f86969
                                        
                                            GET /_comments.css?i=1669834749 HTTP/1.1 
Host: hotcunt.club
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://hotcunt.club/
Cookie: PHPSESSID=12d20e27440d1451a34fc615612e1e07
Sec-Fetch-Dest: style
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

search
                                         178.208.88.131
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Server: nginx/1.20.1
Date: Wed, 30 Nov 2022 18:59:11 GMT
Last-Modified: Tue, 23 Nov 2021 11:21:44 GMT
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"619ccec8-5b5"
Content-Encoding: gzip


--- Additional Info ---
Magic:  ASCII text, with CRLF line terminators
Size:   629
Md5:    5d06c023e6658f885b2465262848965d
Sha1:   af8f6eba4ea35885d1cd37c7be51118cf5170ee8
Sha256: dd21bba94ecfc5e0e9ee2179a1703df48847380dae1735734bf8914113a19b98
                                        
                                            GET /js/comments.js?i=1669834749 HTTP/1.1 
Host: hotcunt.club
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://hotcunt.club/
Cookie: PHPSESSID=12d20e27440d1451a34fc615612e1e07
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

search
                                         178.208.88.131
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=utf-8
                                        
Server: nginx/1.20.1
Date: Wed, 30 Nov 2022 18:59:11 GMT
Last-Modified: Tue, 23 Nov 2021 11:12:30 GMT
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"619ccc9e-398"
Content-Encoding: gzip


--- Additional Info ---
Magic:  HTML document, ASCII text, with CRLF line terminators
Size:   536
Md5:    bf3d19c4c1b5dd8049afac5bb0b3a8fe
Sha1:   b5219e83d2ef42c04acb09b47c894e31c8711c12
Sha256: e7d743c1b249130af8265f4333d26a2d0c1c0d7c5b4202a085c6c336ad011184
                                        
                                            GET /js/jquery.cookie.js HTTP/1.1 
Host: hotcunt.club
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://hotcunt.club/
Cookie: PHPSESSID=12d20e27440d1451a34fc615612e1e07
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

search
                                         178.208.88.131
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=utf-8
                                        
Server: nginx/1.20.1
Date: Wed, 30 Nov 2022 18:59:11 GMT
Last-Modified: Tue, 23 Nov 2021 11:12:30 GMT
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"619ccc9e-100b"
Content-Encoding: gzip


--- Additional Info ---
Magic:  ASCII text, with CRLF line terminators
Size:   1525
Md5:    bb4b85358f96ea428fbcda3a9c5ceedb
Sha1:   efb09943666b0617d392539f55eb2aac6cb3b30b
Sha256: 96d7623bea446d67a3a36cefcb3aad7a1ffeeed92ed32db3009a80418c095d89
                                        
                                            GET /js/masonry.pkgd.min.js HTTP/1.1 
Host: hotcunt.club
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://hotcunt.club/
Cookie: PHPSESSID=12d20e27440d1451a34fc615612e1e07
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

search
                                         178.208.88.131
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=utf-8
                                        
Server: nginx/1.20.1
Date: Wed, 30 Nov 2022 18:59:11 GMT
Last-Modified: Sat, 19 Mar 2022 09:23:38 GMT
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"6235a11a-5e27"
Content-Encoding: gzip


--- Additional Info ---
Magic:  ASCII text, with very long lines (23966)
Size:   8516
Md5:    b4c1c6c83606531add761111643352f0
Sha1:   57663951f18a5e296321be47b73078962797e706
Sha256: 52406e0e0419ca89710f30707f351b1b9e2626ba57936119844224c2f31a9d8b
                                        
                                            POST /gts1c3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 84
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

search
                                         142.250.74.131
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Wed, 30 Nov 2022 18:57:06 GMT
Cache-Control: public, max-age=14400
Server: ocsp_responder
Content-Length: 472
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

                                        
                                            POST /gts1c3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 84
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

search
                                         142.250.74.131
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Wed, 30 Nov 2022 18:57:06 GMT
Cache-Control: public, max-age=14400
Server: ocsp_responder
Content-Length: 472
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

                                        
                                            POST /gts1c3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 84
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

search
                                         142.250.74.131
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Wed, 30 Nov 2022 18:57:06 GMT
Cache-Control: public, max-age=14400
Server: ocsp_responder
Content-Length: 472
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

                                        
                                            GET /js/jquery-3.4.1.min.js HTTP/1.1 
Host: hotcunt.club
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://hotcunt.club/
Cookie: PHPSESSID=12d20e27440d1451a34fc615612e1e07
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

search
                                         178.208.88.131
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=utf-8
                                        
Server: nginx/1.20.1
Date: Wed, 30 Nov 2022 18:59:11 GMT
Last-Modified: Tue, 23 Nov 2021 11:12:28 GMT
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"619ccc9c-15851"
Content-Encoding: gzip


--- Additional Info ---
Magic:  ASCII text, with very long lines (65451)
Size:   35753
Md5:    bb8a4ff840424ffaceb092b76ab11572
Sha1:   83904c56bfdeaf58816857f7a5f8c9ea286a8df5
Sha256: b1304a8f3d9930e6bc5c04c962bb2ee619667ae330d447d77f05d3789e9d97c7
                                        
                                            GET /js/jquery.fancybox.min.js HTTP/1.1 
Host: hotcunt.club
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://hotcunt.club/
Cookie: PHPSESSID=12d20e27440d1451a34fc615612e1e07
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

search
                                         178.208.88.131
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=utf-8
                                        
Server: nginx/1.20.1
Date: Wed, 30 Nov 2022 18:59:11 GMT
Last-Modified: Tue, 23 Nov 2021 11:12:30 GMT
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"619ccc9e-ccc6"
Content-Encoding: gzip


--- Additional Info ---
Magic:  Unicode text, UTF-8 text, with very long lines (32007)
Size:   19780
Md5:    c421deb9af238ba9a090dc9cc749fe17
Sha1:   79681f65dc30ad8a44e0a9148334fa11fc9ec111
Sha256: f87eddda1d5ae8d580740fe09c23bd6ac9eeb476066bafb3b800df1d1cf1d970
                                        
                                            GET /js/bootstrap.bundle.js HTTP/1.1 
Host: hotcunt.club
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://hotcunt.club/
Cookie: PHPSESSID=12d20e27440d1451a34fc615612e1e07
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

search
                                         178.208.88.131
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=utf-8
                                        
Server: nginx/1.20.1
Date: Wed, 30 Nov 2022 18:59:11 GMT
Last-Modified: Tue, 23 Nov 2021 11:12:30 GMT
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"619ccc9e-37a60"
Content-Encoding: gzip


--- Additional Info ---
Magic:  ASCII text, with very long lines (337)
Size:   62786
Md5:    673b418b89cbb92e479f08f4a05d5834
Sha1:   462fd7eb47f54446e28b83e0b3faba39da99bd35
Sha256: 835b62026d1ab47ef909e6c26ae6812c205df667f822edd77617aed5c3b792b5
                                        
                                            GET /css?family=Alegreya+Sans+SC:400,500,700,800&display=swap HTTP/1.1 
Host: fonts.googleapis.com
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://hotcunt.club/
Sec-Fetch-Dest: style
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

search
                                         142.250.74.106
HTTP/2 200 OK
content-type: text/css; charset=utf-8
                                        
access-control-allow-origin: *
timing-allow-origin: *
link: <https://fonts.gstatic.com>; rel=preconnect; crossorigin
strict-transport-security: max-age=31536000
expires: Wed, 30 Nov 2022 18:57:06 GMT
date: Wed, 30 Nov 2022 18:57:06 GMT
cache-control: private, max-age=86400
cross-origin-opener-policy: same-origin-allow-popups
cross-origin-resource-policy: cross-origin
content-encoding: gzip
server: ESF
x-xss-protection: 0
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  data
Size:   1197
Md5:    6c1380191d22a985c9eeb0686cc1a68c
Sha1:   21b22e3d87976e5b5b1b7af38b8e84ef99e5464f
Sha256: dd78022cbce66b5b992fcecbdab73b90855f6a5d58a5fda1f78dbf53e6ebbc8f
                                        
                                            GET /js/pjs.js HTTP/1.1 
Host: hotcunt.club
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://hotcunt.club/
Cookie: PHPSESSID=12d20e27440d1451a34fc615612e1e07
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

search
                                         178.208.88.131
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=utf-8
                                        
Server: nginx/1.20.1
Date: Wed, 30 Nov 2022 18:59:11 GMT
Last-Modified: Tue, 23 Nov 2021 11:12:28 GMT
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"619ccc9c-6dbf9"
Content-Encoding: gzip


--- Additional Info ---
Magic:  Unicode text, UTF-8 text, with very long lines (64901)
Size:   181411
Md5:    a30109809b4b620801b0534c3d8c54e5
Sha1:   423f898896b8b733ae5feaaf3f6adad0aec7d97c
Sha256: 1548c7eba1a16c7680944ebcf54911169d3630efdb537e6f091a2e2bb68d42ea
                                        
                                            GET /imgs/logo.png HTTP/1.1 
Host: hotcunt.club
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://hotcunt.club/
Cookie: PHPSESSID=12d20e27440d1451a34fc615612e1e07
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

search
                                         178.208.88.131
HTTP/1.1 200 OK
Content-Type: image/png
                                        
Server: nginx/1.20.1
Date: Wed, 30 Nov 2022 18:59:11 GMT
Content-Length: 12157
Last-Modified: Tue, 23 Nov 2021 11:12:46 GMT
Connection: keep-alive
ETag: "619cccae-2f7d"
Accept-Ranges: bytes


--- Additional Info ---
Magic:  PNG image data, 179 x 72, 8-bit/color RGBA, non-interlaced\012- data
Size:   12157
Md5:    42f96626b258835505e9665dc451037a
Sha1:   35ca3aed6f00dc91e75783e9bc78d383a4183330
Sha256: 82ddbdd59bf7788ee26056cef13b94b417c75fb032c90d0c6fc072467c810108
                                        
                                            GET /videotmb/Beautiful-chubby-girl-sucks-small-dick-to-facial_6036.jpg HTTP/1.1 
Host: hotcunt.club
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://hotcunt.club/
Cookie: PHPSESSID=12d20e27440d1451a34fc615612e1e07
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

search
                                         178.208.88.131
HTTP/1.1 200 OK
Content-Type: image/jpeg
                                        
Server: nginx/1.20.1
Date: Wed, 30 Nov 2022 18:59:12 GMT
Content-Length: 38884
Last-Modified: Wed, 30 Nov 2022 04:26:46 GMT
Connection: keep-alive
ETag: "6386db86-97e4"
Accept-Ranges: bytes


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.02, aspect ratio, density 1x1, segment length 16, comment: "Lavc57.24.102", baseline, precision 8, 1280x720, components 3\012- data
Size:   38884
Md5:    ad5e63161871df1e05857fb99afd87ff
Sha1:   e662dac0f5b041a8a4a470f388d14867f41c2277
Sha256: 133b66557188d39d41d3fb9d78bb077d0017155dd225e8ce116b01a7d40c107c
                                        
                                            GET /imgs/logo.png?i=1669834749 HTTP/1.1 
Host: hotcunt.club
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://hotcunt.club/
Cookie: PHPSESSID=12d20e27440d1451a34fc615612e1e07
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin

search
                                         178.208.88.131
HTTP/1.1 200 OK
Content-Type: image/png
                                        
Server: nginx/1.20.1
Date: Wed, 30 Nov 2022 18:59:12 GMT
Content-Length: 12157
Last-Modified: Tue, 23 Nov 2021 11:12:46 GMT
Connection: keep-alive
ETag: "619cccae-2f7d"
Accept-Ranges: bytes


--- Additional Info ---
Magic:  PNG image data, 179 x 72, 8-bit/color RGBA, non-interlaced\012- data
Size:   12157
Md5:    42f96626b258835505e9665dc451037a
Sha1:   35ca3aed6f00dc91e75783e9bc78d383a4183330
Sha256: 82ddbdd59bf7788ee26056cef13b94b417c75fb032c90d0c6fc072467c810108
                                        
                                            POST /gts1c3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 84
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

search
                                         142.250.74.131
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Wed, 30 Nov 2022 18:57:07 GMT
Cache-Control: public, max-age=14400
Server: ocsp_responder
Content-Length: 472
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN