update site
This commit is contained in:
parent
377e9f2395
commit
10f2c55643
@ -1,34 +1,34 @@
|
|||||||
function fallbackCopyTextToClipboard(text) {
|
function fallbackCopyTextToClipboard(text) {
|
||||||
var textArea = document.createElement("textarea");
|
var textArea = document.createElement("textarea");
|
||||||
textArea.value = text;
|
textArea.value = text;
|
||||||
|
|
||||||
// Avoid scrolling to bottom
|
// Avoid scrolling to bottom
|
||||||
textArea.style.top = "0";
|
textArea.style.top = "0";
|
||||||
textArea.style.left = "0";
|
textArea.style.left = "0";
|
||||||
textArea.style.position = "fixed";
|
textArea.style.position = "fixed";
|
||||||
|
|
||||||
document.body.appendChild(textArea);
|
document.body.appendChild(textArea);
|
||||||
textArea.focus();
|
textArea.focus();
|
||||||
textArea.select();
|
textArea.select();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
var successful = document.execCommand('copy');
|
var successful = document.execCommand('copy');
|
||||||
var msg = successful ? 'successful' : 'unsuccessful';
|
var msg = successful ? 'successful' : 'unsuccessful';
|
||||||
console.log('Fallback: Copying text command was ' + msg);
|
console.log('Fallback: Copying text command was ' + msg);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('Fallback: Oops, unable to copy', err);
|
console.error('Fallback: Oops, unable to copy', err);
|
||||||
}
|
}
|
||||||
|
|
||||||
document.body.removeChild(textArea);
|
document.body.removeChild(textArea);
|
||||||
}
|
}
|
||||||
export function copyTextToClipboard(text) {
|
export function copyTextToClipboard(text) {
|
||||||
if (!navigator.clipboard) {
|
if (!navigator.clipboard) {
|
||||||
fallbackCopyTextToClipboard(text);
|
fallbackCopyTextToClipboard(text);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
navigator.clipboard.writeText(text).then(function() {
|
navigator.clipboard.writeText(text).then(function() {
|
||||||
console.log('Async: Copying to clipboard was successful!');
|
console.log('Async: Copying to clipboard was successful!');
|
||||||
}, function(err) {
|
}, function(err) {
|
||||||
console.error('Async: Could not copy text: ', err);
|
console.error('Async: Could not copy text: ', err);
|
||||||
});
|
});
|
||||||
}
|
}
|
@ -1,47 +1,47 @@
|
|||||||
if (!window.atob) {
|
if (!window.atob) {
|
||||||
var tableStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
var tableStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||||
var table = tableStr.split("");
|
var table = tableStr.split("");
|
||||||
|
|
||||||
window.atob = function (base64) {
|
window.atob = function (base64) {
|
||||||
if (/(=[^=]+|={3,})$/.test(base64)) throw new Error("String contains an invalid character");
|
if (/(=[^=]+|={3,})$/.test(base64)) throw new Error("String contains an invalid character");
|
||||||
base64 = base64.replace(/=/g, "");
|
base64 = base64.replace(/=/g, "");
|
||||||
var n = base64.length & 3;
|
var n = base64.length & 3;
|
||||||
if (n === 1) throw new Error("String contains an invalid character");
|
if (n === 1) throw new Error("String contains an invalid character");
|
||||||
for (var i = 0, j = 0, len = base64.length / 4, bin = []; i < len; ++i) {
|
for (var i = 0, j = 0, len = base64.length / 4, bin = []; i < len; ++i) {
|
||||||
var a = tableStr.indexOf(base64[j++] || "A"), b = tableStr.indexOf(base64[j++] || "A");
|
var a = tableStr.indexOf(base64[j++] || "A"), b = tableStr.indexOf(base64[j++] || "A");
|
||||||
var c = tableStr.indexOf(base64[j++] || "A"), d = tableStr.indexOf(base64[j++] || "A");
|
var c = tableStr.indexOf(base64[j++] || "A"), d = tableStr.indexOf(base64[j++] || "A");
|
||||||
if ((a | b | c | d) < 0) throw new Error("String contains an invalid character");
|
if ((a | b | c | d) < 0) throw new Error("String contains an invalid character");
|
||||||
bin[bin.length] = ((a << 2) | (b >> 4)) & 255;
|
bin[bin.length] = ((a << 2) | (b >> 4)) & 255;
|
||||||
bin[bin.length] = ((b << 4) | (c >> 2)) & 255;
|
bin[bin.length] = ((b << 4) | (c >> 2)) & 255;
|
||||||
bin[bin.length] = ((c << 6) | d) & 255;
|
bin[bin.length] = ((c << 6) | d) & 255;
|
||||||
};
|
};
|
||||||
return String.fromCharCode.apply(null, bin).substr(0, bin.length + n - 4);
|
return String.fromCharCode.apply(null, bin).substr(0, bin.length + n - 4);
|
||||||
};
|
};
|
||||||
|
|
||||||
window.btoa = function (bin) {
|
window.btoa = function (bin) {
|
||||||
for (var i = 0, j = 0, len = bin.length / 3, base64 = []; i < len; ++i) {
|
for (var i = 0, j = 0, len = bin.length / 3, base64 = []; i < len; ++i) {
|
||||||
var a = bin.charCodeAt(j++), b = bin.charCodeAt(j++), c = bin.charCodeAt(j++);
|
var a = bin.charCodeAt(j++), b = bin.charCodeAt(j++), c = bin.charCodeAt(j++);
|
||||||
if ((a | b | c) > 255) throw new Error("String contains an invalid character");
|
if ((a | b | c) > 255) throw new Error("String contains an invalid character");
|
||||||
base64[base64.length] = table[a >> 2] + table[((a << 4) & 63) | (b >> 4)] +
|
base64[base64.length] = table[a >> 2] + table[((a << 4) & 63) | (b >> 4)] +
|
||||||
(isNaN(b) ? "=" : table[((b << 2) & 63) | (c >> 6)]) +
|
(isNaN(b) ? "=" : table[((b << 2) & 63) | (c >> 6)]) +
|
||||||
(isNaN(b + c) ? "=" : table[c & 63]);
|
(isNaN(b + c) ? "=" : table[c & 63]);
|
||||||
}
|
}
|
||||||
return base64.join("");
|
return base64.join("");
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function hexToBase64(str) {
|
export function hexToBase64(str) {
|
||||||
return btoa(String.fromCharCode.apply(null,
|
return btoa(String.fromCharCode.apply(null,
|
||||||
str.replace(/\r|\n/g, "").replace(/([\da-fA-F]{2}) ?/g, "0x$1 ").replace(/ +$/, "").split(" "))
|
str.replace(/\r|\n/g, "").replace(/([\da-fA-F]{2}) ?/g, "0x$1 ").replace(/ +$/, "").split(" "))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function base64ToHex(str) {
|
export function base64ToHex(str) {
|
||||||
for (var i = 0, bin = atob(str.replace(/[ \r\n]+$/, "")), hex = []; i < bin.length; ++i) {
|
for (var i = 0, bin = atob(str.replace(/[ \r\n]+$/, "")), hex = []; i < bin.length; ++i) {
|
||||||
var tmp = bin.charCodeAt(i).toString(16);
|
var tmp = bin.charCodeAt(i).toString(16);
|
||||||
if (tmp.length === 1) tmp = "0" + tmp;
|
if (tmp.length === 1) tmp = "0" + tmp;
|
||||||
hex[hex.length] = tmp;
|
hex[hex.length] = tmp;
|
||||||
}
|
}
|
||||||
return hex.join(" ");
|
return hex.join(" ");
|
||||||
}
|
}
|
200
assets/main.css
200
assets/main.css
@ -1,101 +1,101 @@
|
|||||||
.carousel > .carousel-inner > .carousel-item > img {
|
.carousel > .carousel-inner > .carousel-item > img {
|
||||||
width : 100vh;
|
width : 100vh;
|
||||||
height : calc(100vh - 56px);
|
height : calc(100vh - 56px);
|
||||||
/* height : 10vh; */
|
/* height : 10vh; */
|
||||||
}
|
}
|
||||||
|
|
||||||
/*.main-window-alt {
|
/*.main-window-alt {
|
||||||
width : 100vh;
|
width : 100vh;
|
||||||
height : calc(100vh - 56px);
|
height : calc(100vh - 56px);
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
.centered-el {
|
.centered-el {
|
||||||
padding-top : 45vh;
|
padding-top : 45vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bg {
|
.bg {
|
||||||
background-color : #1A1A1A;
|
background-color : #1A1A1A;
|
||||||
}
|
}
|
||||||
|
|
||||||
.release-menu {
|
.release-menu {
|
||||||
/* Margin */
|
/* Margin */
|
||||||
margin-left : 35vh;
|
margin-left : 35vh;
|
||||||
margin-right : 35vh;
|
margin-right : 35vh;
|
||||||
margin-top : 5vh;
|
margin-top : 5vh;
|
||||||
/* Padding */
|
/* Padding */
|
||||||
padding-left : 5vh;
|
padding-left : 5vh;
|
||||||
padding-right : 5vh;
|
padding-right : 5vh;
|
||||||
padding-top : 5vh;
|
padding-top : 5vh;
|
||||||
padding-bottom : 5vh;
|
padding-bottom : 5vh;
|
||||||
/* Style */
|
/* Style */
|
||||||
border-radius : 2.0vh;
|
border-radius : 2.0vh;
|
||||||
background-color : #1F1F1F;
|
background-color : #1F1F1F;
|
||||||
}
|
}
|
||||||
|
|
||||||
.release-item {
|
.release-item {
|
||||||
/* Margin */
|
/* Margin */
|
||||||
margin-left : 5vh;
|
margin-left : 5vh;
|
||||||
margin-right : 45vh;
|
margin-right : 45vh;
|
||||||
margin-top : 5vh;
|
margin-top : 5vh;
|
||||||
/* Padding */
|
/* Padding */
|
||||||
padding-left : 5vh;
|
padding-left : 5vh;
|
||||||
padding-right : 5vh;
|
padding-right : 5vh;
|
||||||
padding-top : 5vh;
|
padding-top : 5vh;
|
||||||
padding-bottom : 5vh;
|
padding-bottom : 5vh;
|
||||||
/* Style */
|
/* Style */
|
||||||
border-radius : 2.0vh;
|
border-radius : 2.0vh;
|
||||||
background-color : #252525;
|
background-color : #252525;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sys-win-img {
|
.sys-win-img {
|
||||||
margin-top: 24vh;
|
margin-top: 24vh;
|
||||||
margin-bottom: 1vh;
|
margin-bottom: 1vh;
|
||||||
width : 25vh;
|
width : 25vh;
|
||||||
height : 25vh;
|
height : 25vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
.blog-post-card {
|
.blog-post-card {
|
||||||
border-radius : 25px;
|
border-radius : 25px;
|
||||||
background-color: #212121;
|
background-color: #212121;
|
||||||
min-width: 250px;
|
min-width: 250px;
|
||||||
min-height : 250px;
|
min-height : 250px;
|
||||||
margin-left : 25%;
|
margin-left : 25%;
|
||||||
margin-right : 25%;
|
margin-right : 25%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.blog-post-image-carousel {
|
.blog-post-image-carousel {
|
||||||
margin-left: 10%;
|
margin-left: 10%;
|
||||||
margin-right: 10%;
|
margin-right: 10%;
|
||||||
max-height: 512px;
|
max-height: 512px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.blog-post-image-carousel img {
|
.blog-post-image-carousel img {
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-img-view {
|
.modal-img-view {
|
||||||
width: 1920px;
|
width: 1920px;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.password-manger-form {
|
.password-manger-form {
|
||||||
margin-left : 30%;
|
margin-left : 30%;
|
||||||
margin-right : 30%;
|
margin-right : 30%;
|
||||||
padding : 10px;
|
padding : 10px;
|
||||||
padding-left : 65px;
|
padding-left : 65px;
|
||||||
padding-right : 65px;
|
padding-right : 65px;
|
||||||
border-radius : 15px;
|
border-radius : 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* $accordion-color:green; */
|
/* $accordion-color:green; */
|
||||||
/* $accordion-padding-y:1.3rem; */
|
/* $accordion-padding-y:1.3rem; */
|
||||||
/* $accordion-padding-x:2.5rem; */
|
/* $accordion-padding-x:2.5rem; */
|
||||||
/* $accordion-border-color:black; */
|
/* $accordion-border-color:black; */
|
||||||
/* $accordion-border-width:3.5px; */
|
/* $accordion-border-width:3.5px; */
|
||||||
/* $accordion-border-radius: 3rem; */
|
/* $accordion-border-radius: 3rem; */
|
||||||
/* $accordion-button-color:white; */
|
/* $accordion-button-color:white; */
|
||||||
/* $accordion-button-bg:green; */
|
/* $accordion-button-bg:green; */
|
||||||
/* $accordion-button-active-bg: white; */
|
/* $accordion-button-active-bg: white; */
|
||||||
/* $accordion-button-active-color:green; */
|
/* $accordion-button-active-color:green; */
|
||||||
/* @import "./node_modules/bootstrap/scss/bootstrap" */
|
/* @import "./node_modules/bootstrap/scss/bootstrap" */
|
@ -1,4 +1,4 @@
|
|||||||
.carousel {
|
.carousel {
|
||||||
width:640px;
|
width:640px;
|
||||||
height:360px;
|
height:360px;
|
||||||
}
|
}
|
|
180
assets/main.js
180
assets/main.js
@ -1,91 +1,91 @@
|
|||||||
import { blog } from "./pages/blog.js";
|
import { blog } from "./pages/blog.js";
|
||||||
import { passwordManager } from "./pages/password-manager.js";
|
import { passwordManager } from "./pages/password-manager.js";
|
||||||
/* Альтернативное главное меню */
|
/* Альтернативное главное меню */
|
||||||
let altMenuSelectedPage = 1;
|
let altMenuSelectedPage = 1;
|
||||||
const altPages = [
|
const altPages = [
|
||||||
`<h5 style="color: white;">Добро пожаловать на мой ресурс</h5><p style="color: white;">Это официальный ресурс FullGreaM.</p><button onclick="fl.go('/contacts');" type="button" class="btn btn-outline-light">Мои контакты</button>`,
|
`<h5 style="color: white;">Добро пожаловать на мой ресурс</h5><p style="color: white;">Это официальный ресурс FullGreaM.</p><button onclick="fl.go('/contacts');" type="button" class="btn btn-outline-light">Мои контакты</button>`,
|
||||||
`<h5 style="color: white;">О проектах и работах</h5>
|
`<h5 style="color: white;">О проектах и работах</h5>
|
||||||
<p style="color: white;">Здесь представлены мои проекты, работы с активными и актуальными ссылками на скачивание.</p>
|
<p style="color: white;">Здесь представлены мои проекты, работы с активными и актуальными ссылками на скачивание.</p>
|
||||||
<button onclick="fl.go('/projects');" type="button" class="btn btn-outline-light">Мои проекты</button>`,
|
<button onclick="fl.go('/projects');" type="button" class="btn btn-outline-light">Мои проекты</button>`,
|
||||||
`<h5 style="color: white;">О прочей информации</h5>
|
`<h5 style="color: white;">О прочей информации</h5>
|
||||||
<p style="color: white;">Также здесь представлен (или будет представлен) мой личный блог, а также, блог, касающийся моих проектов или проектов моей команды.</p>
|
<p style="color: white;">Также здесь представлен (или будет представлен) мой личный блог, а также, блог, касающийся моих проектов или проектов моей команды.</p>
|
||||||
<button onclick="fl.go('/blog');" type="button" class="btn btn-outline-light">Мой блог</button>`
|
<button onclick="fl.go('/blog');" type="button" class="btn btn-outline-light">Мой блог</button>`
|
||||||
];
|
];
|
||||||
function setAltMenuPage(pageNumber) {
|
function setAltMenuPage(pageNumber) {
|
||||||
altMenuSelectedPage = pageNumber;
|
altMenuSelectedPage = pageNumber;
|
||||||
if (altMenuSelectedPage <= 0) {
|
if (altMenuSelectedPage <= 0) {
|
||||||
altMenuSelectedPage = 3;
|
altMenuSelectedPage = 3;
|
||||||
}
|
}
|
||||||
else if (altMenuSelectedPage > 3) {
|
else if (altMenuSelectedPage > 3) {
|
||||||
altMenuSelectedPage = 1;
|
altMenuSelectedPage = 1;
|
||||||
}
|
}
|
||||||
document.getElementsByTagName('body')[0].style.backgroundImage = `url("/assets/hello/m/${altMenuSelectedPage}.png")`;
|
document.getElementsByTagName('body')[0].style.backgroundImage = `url("/assets/hello/m/${altMenuSelectedPage}.png")`;
|
||||||
document.getElementById('alt-carousel-viewer').innerHTML = altPages[altMenuSelectedPage - 1];
|
document.getElementById('alt-carousel-viewer').innerHTML = altPages[altMenuSelectedPage - 1];
|
||||||
};
|
};
|
||||||
/* Альтернативное главное меню */
|
/* Альтернативное главное меню */
|
||||||
setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
fl.go(window.location.pathname + location.search)
|
fl.go(window.location.pathname + location.search)
|
||||||
}, 50);
|
}, 50);
|
||||||
|
|
||||||
let isMobile = window.screen.availWidth / window.screen.availHeight <= 1.45;
|
let isMobile = window.screen.availWidth / window.screen.availHeight <= 1.45;
|
||||||
|
|
||||||
function goFromMobileWarning () {
|
function goFromMobileWarning () {
|
||||||
const currentURL = new URL(location.href);
|
const currentURL = new URL(location.href);
|
||||||
if (!document.cookie.includes('warning_showed=true')) document.cookie += 'warning_showed=true;';
|
if (!document.cookie.includes('warning_showed=true')) document.cookie += 'warning_showed=true;';
|
||||||
fl.go(currentURL.searchParams.get("go"));
|
fl.go(currentURL.searchParams.get("go"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isMobile && !document.cookie.includes('warning_showed=true')) {
|
if (isMobile && !document.cookie.includes('warning_showed=true')) {
|
||||||
// Я это уберу как только буду уверен, что на мобильной версии нет никаких проблем
|
// Я это уберу как только буду уверен, что на мобильной версии нет никаких проблем
|
||||||
fl.go('/mobile-warning?go=' + new URLSearchParams(location.pathname + location.search).toString().slice(0, -1));
|
fl.go('/mobile-warning?go=' + new URLSearchParams(location.pathname + location.search).toString().slice(0, -1));
|
||||||
}
|
}
|
||||||
|
|
||||||
fl.bindLoad('/blog', () => {
|
fl.bindLoad('/blog', () => {
|
||||||
blog();
|
blog();
|
||||||
});
|
});
|
||||||
fl.bindLoad('/password-manager', () => {
|
fl.bindLoad('/password-manager', () => {
|
||||||
passwordManager();
|
passwordManager();
|
||||||
});
|
});
|
||||||
|
|
||||||
fl.bindLoad('/main-mobile', () => {
|
fl.bindLoad('/main-mobile', () => {
|
||||||
document.getElementById('alt-main-prev').onclick = () => setAltMenuPage(altMenuSelectedPage - 1);
|
document.getElementById('alt-main-prev').onclick = () => setAltMenuPage(altMenuSelectedPage - 1);
|
||||||
document.getElementById('alt-main-next').onclick = () => setAltMenuPage(altMenuSelectedPage + 1);
|
document.getElementById('alt-main-next').onclick = () => setAltMenuPage(altMenuSelectedPage + 1);
|
||||||
});
|
});
|
||||||
|
|
||||||
fl.bindLoad('/mobile-warning', () => {
|
fl.bindLoad('/mobile-warning', () => {
|
||||||
document.getElementById('mobile-warning-go').onclick = () => goFromMobileWarning();
|
document.getElementById('mobile-warning-go').onclick = () => goFromMobileWarning();
|
||||||
});
|
});
|
||||||
|
|
||||||
let mainMenuErrorHandled = false;
|
let mainMenuErrorHandled = false;
|
||||||
|
|
||||||
setInterval(async () => {
|
setInterval(async () => {
|
||||||
// setTimeout(async () => {
|
// setTimeout(async () => {
|
||||||
const navbarHeight = +(document.getElementById("navbar-main")?.offsetHeight);
|
const navbarHeight = +(document.getElementById("navbar-main")?.offsetHeight);
|
||||||
if (!mainMenuErrorHandled && location.pathname == "/" && document.getElementById('main_img1')?.src) {
|
if (!mainMenuErrorHandled && location.pathname == "/" && document.getElementById('main_img1')?.src) {
|
||||||
document.getElementById('main_img1').src = window.screen.availWidth / window.screen.availHeight > 1.45 ? "/assets/hello/1.png" : "/assets/hello/m/1.png";
|
document.getElementById('main_img1').src = window.screen.availWidth / window.screen.availHeight > 1.45 ? "/assets/hello/1.png" : "/assets/hello/m/1.png";
|
||||||
document.getElementById('main_img2').src = window.screen.availWidth / window.screen.availHeight > 1.45 ? "/assets/hello/2.png" : "/assets/hello/m/2.png";
|
document.getElementById('main_img2').src = window.screen.availWidth / window.screen.availHeight > 1.45 ? "/assets/hello/2.png" : "/assets/hello/m/2.png";
|
||||||
document.getElementById('main_img3').src = window.screen.availWidth / window.screen.availHeight > 1.45 ? "/assets/hello/3.png" : "/assets/hello/m/3.png";
|
document.getElementById('main_img3').src = window.screen.availWidth / window.screen.availHeight > 1.45 ? "/assets/hello/3.png" : "/assets/hello/m/3.png";
|
||||||
}
|
}
|
||||||
const selectedCSS = Object.entries(document.styleSheets).filter(([key, cssFileObject]) => cssFileObject.href == `${location.origin}/assets/main.css`)[0][1];
|
const selectedCSS = Object.entries(document.styleSheets).filter(([key, cssFileObject]) => cssFileObject.href == `${location.origin}/assets/main.css`)[0][1];
|
||||||
Object.entries(selectedCSS.rules).filter(([key, rule]) => rule.selectorText == '.carousel > .carousel-inner > .carousel-item > img')[0][1].style.height = `calc(100vh - ${navbarHeight}px)`
|
Object.entries(selectedCSS.rules).filter(([key, rule]) => rule.selectorText == '.carousel > .carousel-inner > .carousel-item > img')[0][1].style.height = `calc(100vh - ${navbarHeight}px)`
|
||||||
|
|
||||||
const currHtml = document.getElementById('alt-carousel-viewer')?.innerHTML;
|
const currHtml = document.getElementById('alt-carousel-viewer')?.innerHTML;
|
||||||
mainMenuErrorHandled = currHtml?.trim() == altPages[altMenuSelectedPage - 1]?.trim();
|
mainMenuErrorHandled = currHtml?.trim() == altPages[altMenuSelectedPage - 1]?.trim();
|
||||||
|
|
||||||
if (!mainMenuErrorHandled && window.screen.availWidth < 768 && location.pathname == "/") { // Обработка ошибки вёрстки на главной странице
|
if (!mainMenuErrorHandled && window.screen.availWidth < 768 && location.pathname == "/") { // Обработка ошибки вёрстки на главной странице
|
||||||
mainMenuErrorHandled = true;
|
mainMenuErrorHandled = true;
|
||||||
setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
fl.goJust('/main-mobile', false);
|
fl.goJust('/main-mobile', false);
|
||||||
document.getElementsByTagName('body')[0].style.backgroundImage = 'url("/assets/hello/m/1.png")';
|
document.getElementsByTagName('body')[0].style.backgroundImage = 'url("/assets/hello/m/1.png")';
|
||||||
}, 150);
|
}, 150);
|
||||||
}
|
}
|
||||||
else if (mainMenuErrorHandled && window.screen.availWidth >= 768 && location.pathname == "/") { // Вернуть нормальную версию вёрстки
|
else if (mainMenuErrorHandled && window.screen.availWidth >= 768 && location.pathname == "/") { // Вернуть нормальную версию вёрстки
|
||||||
mainMenuErrorHandled = false;
|
mainMenuErrorHandled = false;
|
||||||
document.getElementsByTagName('body')[0].style.backgroundImage = '';
|
document.getElementsByTagName('body')[0].style.backgroundImage = '';
|
||||||
fl.goJust('/', false);
|
fl.goJust('/', false);
|
||||||
}
|
}
|
||||||
else if (location.pathname !== "/") {
|
else if (location.pathname !== "/") {
|
||||||
mainMenuErrorHandled = false;
|
mainMenuErrorHandled = false;
|
||||||
document.getElementsByTagName('body')[0].style.backgroundImage = '';
|
document.getElementsByTagName('body')[0].style.backgroundImage = '';
|
||||||
}
|
}
|
||||||
}, 1);
|
}, 1);
|
@ -1,122 +1,130 @@
|
|||||||
const blogpostsUrl = "/blog/posts.json";
|
const blogpostsUrl = "/blog/posts.json";
|
||||||
|
|
||||||
function bindImageView (id, url) {
|
function bindImageView (id, url) {
|
||||||
document.getElementById(id).onclick = () => {
|
document.getElementById(id).onclick = () => {
|
||||||
const imageModal = new bootstrap.Modal(document.getElementById('imageModal'), {});
|
const imageModal = new bootstrap.Modal(document.getElementById('imageModal'), {});
|
||||||
imageModal.show();
|
imageModal.show();
|
||||||
document.getElementById('image-viewer-url').src = url;
|
document.getElementById('image-viewer-url').src = url;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function testBlock () {
|
function testBlock () {
|
||||||
return; // uncomment this at realese
|
return; // uncomment this at realese
|
||||||
bindImageView('blog-img-0:0', 'https://warhammerart.com/wp-content/uploads/2021/08/Adeptus-Mechanicus.jpg');
|
bindImageView('blog-img-0:0', 'https://warhammerart.com/wp-content/uploads/2021/08/Adeptus-Mechanicus.jpg');
|
||||||
bindImageView('blog-img-0:1', 'https://warzonestudio.com/image/catalog/blog/Admech-review/Admech-codex-review-02.jpg');
|
bindImageView('blog-img-0:1', 'https://warzonestudio.com/image/catalog/blog/Admech-review/Admech-codex-review-02.jpg');
|
||||||
bindImageView('blog-img-0:2', 'https://i.pinimg.com/originals/7a/5c/0a/7a5c0a3a91db6011a49781c4016124a2.jpg');
|
bindImageView('blog-img-0:2', 'https://i.pinimg.com/originals/7a/5c/0a/7a5c0a3a91db6011a49781c4016124a2.jpg');
|
||||||
}
|
}
|
||||||
|
|
||||||
function dateFormater (value) {
|
function dateFormater (value, isMonth = false) {
|
||||||
value = value.toString();
|
if (isMonth) {
|
||||||
if (value.length === 1) value = '0' + value;
|
return [
|
||||||
return value;
|
"01", "02", "03",
|
||||||
}
|
"04", "05", "06",
|
||||||
|
"07", "08", "09",
|
||||||
function imagesDisplay (item, index) {
|
"10", "11", "12"
|
||||||
const items = item.attachments.images.map((imageUrl, imageId) => {
|
][+value];
|
||||||
setTimeout(() => bindImageView(`blog-img-${index}:${imageId}`, imageUrl), 0);
|
}
|
||||||
return `<div class="carousel-item blog-post-image${imageId === 0 ? ' active' : ''}" id="blog-img-${index}:${imageId}"><img src=${JSON.stringify(imageUrl)} class="d-block w-100" alt="..."></div>`
|
value = value.toString();
|
||||||
});
|
if (value.length === 1) value = '0' + value;
|
||||||
const buttons = items.map((_, id) => `<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="${id}"${id === 0 ? ' class="active" aria-current="true"' : ''} aria-label="Slide ${id}"></button>`);
|
return value;
|
||||||
return { items, buttons };
|
}
|
||||||
}
|
|
||||||
|
function imagesDisplay (item, index) {
|
||||||
function generateItem (item, index) {
|
const items = item.attachments.images.map((imageUrl, imageId) => {
|
||||||
const date = new Date(item.date * 1000);
|
setTimeout(() => bindImageView(`blog-img-${index}:${imageId}`, imageUrl), 0);
|
||||||
const images = item.attachments.images.length === 0 ? {
|
return `<div class="carousel-item blog-post-image${imageId === 0 ? ' active' : ''}" id="blog-img-${index}:${imageId}"><img src=${JSON.stringify(imageUrl)} class="d-block w-100" alt="..."></div>`
|
||||||
buttons : [],
|
});
|
||||||
items : []
|
const buttons = items.map((_, id) => `<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="${id}"${id === 0 ? ' class="active" aria-current="true"' : ''} aria-label="Slide ${id}"></button>`);
|
||||||
} : imagesDisplay(item, index);
|
return { items, buttons };
|
||||||
// console.log(date);
|
}
|
||||||
|
|
||||||
const page = `<div class="blog-post-card" id="post-${index}" style="margin-bottom: 1.5%;">
|
function generateItem (item, index) {
|
||||||
<center>
|
const date = new Date(item.date * 1000);
|
||||||
<h3 style="padding-top: 1.5%;">${item.title}</h3>
|
const images = item.attachments.images.length === 0 ? {
|
||||||
<small style="color: rgba(255,255,255,0.5); padding-bottom: 0.5%;">
|
buttons : [],
|
||||||
<div>Опубликовано: ${dateFormater(date.getDate())}.${dateFormater(date.getMonth())}.${date.getFullYear()} в ${date.getHours()}:${dateFormater(date.getMinutes())}</div>
|
items : []
|
||||||
<div id="posted-by-${index}" hidden>Через telegram</div>
|
} : imagesDisplay(item, index);
|
||||||
</small>
|
// console.log(date);
|
||||||
</center>
|
|
||||||
<p style="padding: 2%;">${item.data.replace(/\n/g, "<br/>")}</p>
|
const page = ` <div class="blog-post-card" id="post-${index}" style="margin-bottom: 1.5%;">
|
||||||
<!-- Изображения -->
|
<center>
|
||||||
<center><div id="carouselExampleIndicators" class="carousel slide blog-post-image-carousel" data-bs-ride="carousel" id="post-images-${index}"${item.attachments.images.length === 0 ? ' hidden' : ''}>
|
<h3 style="padding-top: 1.5%;">${item.title}</h3>
|
||||||
<div class="carousel-indicators"${item.attachments.images.length === 1 ? ' hidden' : ''}>
|
<small style="color: rgba(255,255,255,0.5); padding-bottom: 0.5%;">
|
||||||
${images.buttons.join('\n')}
|
<div>Опубликовано: ${dateFormater(date.getDate())}.${dateFormater(date.getMonth(), true)}.${date.getFullYear()} в ${date.getHours()}:${dateFormater(date.getMinutes())}</div>
|
||||||
</div>
|
<div id="posted-by-${index}" hidden>Через telegram</div>
|
||||||
<div class="carousel-inner">
|
</small>
|
||||||
${images.items.join('\n')}
|
</center>
|
||||||
</div>
|
<p style="padding: 2%;">${item.data.replace(/\n/g, "<br/>")}</p>
|
||||||
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="prev"${item.attachments.images.length === 1 ? ' hidden' : ''}>
|
<!-- Изображения -->
|
||||||
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
<center><div id="carouselExampleIndicators" class="carousel slide blog-post-image-carousel" data-bs-ride="carousel" id="post-images-${index}"${item.attachments.images.length === 0 ? ' hidden' : ''}>
|
||||||
<span class="visually-hidden">Предыдущий</span>
|
<div class="carousel-indicators"${item.attachments.images.length === 1 ? ' hidden' : ''}>
|
||||||
</button>
|
${images.buttons.join('\n')}
|
||||||
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="next"${item.attachments.images.length === 1 ? ' hidden' : ''}>
|
</div>
|
||||||
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
<div class="carousel-inner">
|
||||||
<span class="visually-hidden">Следующий</span>
|
${images.items.join('\n')}
|
||||||
</button>
|
</div>
|
||||||
</div></center>
|
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="prev"${item.attachments.images.length === 1 ? ' hidden' : ''}>
|
||||||
<!-- Файлы -->
|
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
||||||
<div class="accordion text-dark bg-dark" id="accordionExample" style="margin-left: 2.5%; margin-right: 2.5%; margin-top: 2.5%;" hidden>
|
<span class="visually-hidden">Предыдущий</span>
|
||||||
<div class="accordion-item">
|
</button>
|
||||||
<h5 class="accordion-header" id="headingOne">
|
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="next"${item.attachments.images.length === 1 ? ' hidden' : ''}>
|
||||||
<button class="accordion-button bg-dark text-light" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
|
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
||||||
Файлы
|
<span class="visually-hidden">Следующий</span>
|
||||||
</button>
|
</button>
|
||||||
</h5>
|
</div></center>
|
||||||
<div id="collapseOne" class="accordion-collapse bg-dark text-light collapse show" aria-labelledby="headingOne" data-bs-parent="#accordionExample">
|
<!-- Файлы -->
|
||||||
<div class="accordion-body">
|
<div class="accordion text-dark bg-dark" id="accordionExample" style="margin-left: 2.5%; margin-right: 2.5%; margin-top: 2.5%;" hidden>
|
||||||
<!-- <strong>Это тело аккордеона первого элемента.</strong> По умолчанию оно скрыто, пока плагин сворачивания не добавит соответствующие классы, которые мы используем для стилизации каждого элемента. Эти классы управляют общим внешним видом, а также отображением и скрытием с помощью переходов CSS. Вы можете изменить все это с помощью собственного CSS или переопределить наши переменные по умолчанию. Также стоит отметить, что практически любой HTML может быть помещен в <code>.accordion-body</code>, хотя переход ограничивает переполнение. -->
|
<div class="accordion-item">
|
||||||
<p><a href="https://github.com/student-manager/student-manager/releases/download/1.1.1/windows.x64.Student.manager.portabel.zip">windows.x64.Student.manager.portabel.zip (111 Mb)</a></p>
|
<h5 class="accordion-header" id="headingOne">
|
||||||
</div>
|
<button class="accordion-button bg-dark text-light" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
|
||||||
</div>
|
Файлы
|
||||||
</div>
|
</button>
|
||||||
</div>
|
</h5>
|
||||||
<!-- Рекации -->
|
<div id="collapseOne" class="accordion-collapse bg-dark text-light collapse show" aria-labelledby="headingOne" data-bs-parent="#accordionExample">
|
||||||
<button type="button" class="btn btn-outline-success" style="margin-left: 2.5%; margin-top: 1.5%; margin-bottom: 1.5%;" onclick="alert('Функция в разработке!');">Нравится (0)</button>
|
<div class="accordion-body">
|
||||||
<button type="button" class="btn btn-outline-secondary" style="margin-left: 0.5%; margin-top: 1.5%; margin-bottom: 1.5%;" onclick="alert('Функция в разработке!');">Комментарии (0)</button>
|
<!-- <strong>Это тело аккордеона первого элемента.</strong> По умолчанию оно скрыто, пока плагин сворачивания не добавит соответствующие классы, которые мы используем для стилизации каждого элемента. Эти классы управляют общим внешним видом, а также отображением и скрытием с помощью переходов CSS. Вы можете изменить все это с помощью собственного CSS или переопределить наши переменные по умолчанию. Также стоит отметить, что практически любой HTML может быть помещен в <code>.accordion-body</code>, хотя переход ограничивает переполнение. -->
|
||||||
</div>`;
|
<p><a href="https://github.com/student-manager/student-manager/releases/download/1.1.1/windows.x64.Student.manager.portabel.zip">windows.x64.Student.manager.portabel.zip (111 Mb)</a></p>
|
||||||
|
</div>
|
||||||
return page;
|
</div>
|
||||||
}
|
</div>
|
||||||
|
</div>
|
||||||
export function blog () {
|
<!-- Рекации -->
|
||||||
//testBlock();
|
<button type="button" class="btn btn-outline-success" style="margin-left: 2.5%; margin-top: 1.5%; margin-bottom: 1.5%;" onclick="alert('Функция в разработке!');">Нравится (0)</button>
|
||||||
const xhr = new XMLHttpRequest();
|
<button type="button" class="btn btn-outline-secondary" style="margin-left: 0.5%; margin-top: 1.5%; margin-bottom: 1.5%;" onclick="alert('Функция в разработке!');">Комментарии (0)</button>
|
||||||
xhr.open('GET', blogpostsUrl, true);
|
</div>`;
|
||||||
|
|
||||||
xhr.onerror = () => {
|
return page;
|
||||||
document.getElementById('blog-posts').innerHTML = `<center><img src="/assets/404.png" class="sys-win-img"></img><h2>Упс..</h2><p>Во время работы произошла ошибка, повторите запрос позже</p></center>`;
|
}
|
||||||
}
|
|
||||||
|
export function blog () {
|
||||||
xhr.onload = () => {
|
//testBlock();
|
||||||
try {
|
const xhr = new XMLHttpRequest();
|
||||||
if (xhr.status === 200) {
|
xhr.open('GET', blogpostsUrl, true);
|
||||||
// console.log(xhr.response);
|
|
||||||
const data = JSON.parse(xhr.response);
|
xhr.onerror = () => {
|
||||||
// console.log(data);
|
document.getElementById('blog-posts').innerHTML = `<center><img src="/assets/404.png" class="sys-win-img"></img><h2>Упс..</h2><p>Во время работы произошла ошибка, повторите запрос позже</p></center>`;
|
||||||
document.getElementById('blog-posts').innerHTML = '<hr/>';
|
}
|
||||||
data.posts.sort((a, b) => b.date - a.date).forEach((item, index) => {
|
|
||||||
document.getElementById('blog-posts').innerHTML += generateItem(item, index);
|
xhr.onload = () => {
|
||||||
});
|
try {
|
||||||
}
|
if (xhr.status === 200) {
|
||||||
else {
|
// console.log(xhr.response);
|
||||||
xhr.onerror();
|
const data = JSON.parse(xhr.response);
|
||||||
}
|
// console.log(data);
|
||||||
}
|
document.getElementById('blog-posts').innerHTML = '<hr/>';
|
||||||
catch (err) {
|
data.posts.sort((a, b) => b.date - a.date).forEach((item, index) => {
|
||||||
console.log(err);
|
document.getElementById('blog-posts').innerHTML += generateItem(item, index);
|
||||||
return xhr.onerror();
|
});
|
||||||
}
|
}
|
||||||
};
|
else {
|
||||||
|
xhr.onerror();
|
||||||
xhr.send();
|
}
|
||||||
}
|
}
|
||||||
|
catch (err) {
|
||||||
|
console.log(err);
|
||||||
|
return xhr.onerror();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
xhr.send();
|
||||||
|
}
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
import {} from "/assets/sha1.js";
|
import {} from "/assets/sha1.js";
|
||||||
import { hexToBase64 } from "/assets/encode-converter.js";
|
import { hexToBase64 } from "/assets/encode-converter.js";
|
||||||
import { copyTextToClipboard } from "/assets/clipboard.js";
|
import { copyTextToClipboard } from "/assets/clipboard.js";
|
||||||
|
|
||||||
function generatePassword () {
|
function generatePassword () {
|
||||||
const generatedPasswordElement = document.getElementById('generated-password');
|
const generatedPasswordElement = document.getElementById('generated-password');
|
||||||
const keyword = document.getElementById('keyword').value;
|
const keyword = document.getElementById('keyword').value;
|
||||||
const service = document.getElementById('service').value.toLowerCase();;
|
const service = document.getElementById('service').value.toLowerCase();;
|
||||||
const login = document.getElementById('login').value.toLowerCase();;
|
const login = document.getElementById('login').value.toLowerCase();;
|
||||||
|
|
||||||
const generatedPassword = hexToBase64(sha1(`${keyword}::${service}::${login}`)) + "#";
|
const generatedPassword = hexToBase64(sha1(`${keyword}::${service}::${login}`)) + "#";
|
||||||
generatedPasswordElement.value = generatedPassword;
|
generatedPasswordElement.value = generatedPassword;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function passwordManager () {
|
export function passwordManager () {
|
||||||
document.getElementById('generate-password').onclick = generatePassword;
|
document.getElementById('generate-password').onclick = generatePassword;
|
||||||
document.getElementById('copy-password').onclick = () => copyTextToClipboard(document.getElementById('generated-password').value);
|
document.getElementById('copy-password').onclick = () => copyTextToClipboard(document.getElementById('generated-password').value);
|
||||||
}
|
}
|
BIN
assets/posts/photo_2024-05-28_21-15-13.jpg
Normal file
BIN
assets/posts/photo_2024-05-28_21-15-13.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 109 KiB |
976
assets/sha1.js
976
assets/sha1.js
@ -1,489 +1,489 @@
|
|||||||
/*
|
/*
|
||||||
* [js-sha1]{@link https://github.com/emn178/js-sha1}
|
* [js-sha1]{@link https://github.com/emn178/js-sha1}
|
||||||
*
|
*
|
||||||
* @version 0.6.0
|
* @version 0.6.0
|
||||||
* @author Chen, Yi-Cyuan [emn178@gmail.com]
|
* @author Chen, Yi-Cyuan [emn178@gmail.com]
|
||||||
* @copyright Chen, Yi-Cyuan 2014-2017
|
* @copyright Chen, Yi-Cyuan 2014-2017
|
||||||
* @license MIT
|
* @license MIT
|
||||||
*/
|
*/
|
||||||
!(function () {
|
!(function () {
|
||||||
"use strict";
|
"use strict";
|
||||||
function t(t) {
|
function t(t) {
|
||||||
t
|
t
|
||||||
? ((f[0] =
|
? ((f[0] =
|
||||||
f[16] =
|
f[16] =
|
||||||
f[1] =
|
f[1] =
|
||||||
f[2] =
|
f[2] =
|
||||||
f[3] =
|
f[3] =
|
||||||
f[4] =
|
f[4] =
|
||||||
f[5] =
|
f[5] =
|
||||||
f[6] =
|
f[6] =
|
||||||
f[7] =
|
f[7] =
|
||||||
f[8] =
|
f[8] =
|
||||||
f[9] =
|
f[9] =
|
||||||
f[10] =
|
f[10] =
|
||||||
f[11] =
|
f[11] =
|
||||||
f[12] =
|
f[12] =
|
||||||
f[13] =
|
f[13] =
|
||||||
f[14] =
|
f[14] =
|
||||||
f[15] =
|
f[15] =
|
||||||
0),
|
0),
|
||||||
(this.blocks = f))
|
(this.blocks = f))
|
||||||
: (this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
|
: (this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
|
||||||
(this.h0 = 1732584193),
|
(this.h0 = 1732584193),
|
||||||
(this.h1 = 4023233417),
|
(this.h1 = 4023233417),
|
||||||
(this.h2 = 2562383102),
|
(this.h2 = 2562383102),
|
||||||
(this.h3 = 271733878),
|
(this.h3 = 271733878),
|
||||||
(this.h4 = 3285377520),
|
(this.h4 = 3285377520),
|
||||||
(this.block = this.start = this.bytes = this.hBytes = 0),
|
(this.block = this.start = this.bytes = this.hBytes = 0),
|
||||||
(this.finalized = this.hashed = !1),
|
(this.finalized = this.hashed = !1),
|
||||||
(this.first = !0);
|
(this.first = !0);
|
||||||
}
|
}
|
||||||
var h = "object" == typeof window ? window : {},
|
var h = "object" == typeof window ? window : {},
|
||||||
s =
|
s =
|
||||||
!h.JS_SHA1_NO_NODE_JS &&
|
!h.JS_SHA1_NO_NODE_JS &&
|
||||||
"object" == typeof process &&
|
"object" == typeof process &&
|
||||||
process.versions &&
|
process.versions &&
|
||||||
process.versions.node;
|
process.versions.node;
|
||||||
s && (h = global);
|
s && (h = global);
|
||||||
var i =
|
var i =
|
||||||
!h.JS_SHA1_NO_COMMON_JS && "object" == typeof module && module.exports,
|
!h.JS_SHA1_NO_COMMON_JS && "object" == typeof module && module.exports,
|
||||||
e = "function" == typeof define && define.amd,
|
e = "function" == typeof define && define.amd,
|
||||||
r = "0123456789abcdef".split(""),
|
r = "0123456789abcdef".split(""),
|
||||||
o = [-2147483648, 8388608, 32768, 128],
|
o = [-2147483648, 8388608, 32768, 128],
|
||||||
n = [24, 16, 8, 0],
|
n = [24, 16, 8, 0],
|
||||||
a = ["hex", "array", "digest", "arrayBuffer"],
|
a = ["hex", "array", "digest", "arrayBuffer"],
|
||||||
f = [],
|
f = [],
|
||||||
u = function (h) {
|
u = function (h) {
|
||||||
return function (s) {
|
return function (s) {
|
||||||
return new t(!0).update(s)[h]();
|
return new t(!0).update(s)[h]();
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
c = function () {
|
c = function () {
|
||||||
var h = u("hex");
|
var h = u("hex");
|
||||||
s && (h = p(h)),
|
s && (h = p(h)),
|
||||||
(h.create = function () {
|
(h.create = function () {
|
||||||
return new t();
|
return new t();
|
||||||
}),
|
}),
|
||||||
(h.update = function (t) {
|
(h.update = function (t) {
|
||||||
return h.create().update(t);
|
return h.create().update(t);
|
||||||
});
|
});
|
||||||
for (var i = 0; i < a.length; ++i) {
|
for (var i = 0; i < a.length; ++i) {
|
||||||
var e = a[i];
|
var e = a[i];
|
||||||
h[e] = u(e);
|
h[e] = u(e);
|
||||||
}
|
}
|
||||||
return h;
|
return h;
|
||||||
},
|
},
|
||||||
p = function (t) {
|
p = function (t) {
|
||||||
var h = eval("require('crypto')"),
|
var h = eval("require('crypto')"),
|
||||||
s = eval("require('buffer').Buffer"),
|
s = eval("require('buffer').Buffer"),
|
||||||
i = function (i) {
|
i = function (i) {
|
||||||
if ("string" == typeof i)
|
if ("string" == typeof i)
|
||||||
return h.createHash("sha1").update(i, "utf8").digest("hex");
|
return h.createHash("sha1").update(i, "utf8").digest("hex");
|
||||||
if (i.constructor === ArrayBuffer) i = new Uint8Array(i);
|
if (i.constructor === ArrayBuffer) i = new Uint8Array(i);
|
||||||
else if (void 0 === i.length) return t(i);
|
else if (void 0 === i.length) return t(i);
|
||||||
return h.createHash("sha1").update(new s(i)).digest("hex");
|
return h.createHash("sha1").update(new s(i)).digest("hex");
|
||||||
};
|
};
|
||||||
return i;
|
return i;
|
||||||
};
|
};
|
||||||
(t.prototype.update = function (t) {
|
(t.prototype.update = function (t) {
|
||||||
if (!this.finalized) {
|
if (!this.finalized) {
|
||||||
var s = "string" != typeof t;
|
var s = "string" != typeof t;
|
||||||
s && t.constructor === h.ArrayBuffer && (t = new Uint8Array(t));
|
s && t.constructor === h.ArrayBuffer && (t = new Uint8Array(t));
|
||||||
for (var i, e, r = 0, o = t.length || 0, a = this.blocks; r < o; ) {
|
for (var i, e, r = 0, o = t.length || 0, a = this.blocks; r < o; ) {
|
||||||
if (
|
if (
|
||||||
(this.hashed &&
|
(this.hashed &&
|
||||||
((this.hashed = !1),
|
((this.hashed = !1),
|
||||||
(a[0] = this.block),
|
(a[0] = this.block),
|
||||||
(a[16] =
|
(a[16] =
|
||||||
a[1] =
|
a[1] =
|
||||||
a[2] =
|
a[2] =
|
||||||
a[3] =
|
a[3] =
|
||||||
a[4] =
|
a[4] =
|
||||||
a[5] =
|
a[5] =
|
||||||
a[6] =
|
a[6] =
|
||||||
a[7] =
|
a[7] =
|
||||||
a[8] =
|
a[8] =
|
||||||
a[9] =
|
a[9] =
|
||||||
a[10] =
|
a[10] =
|
||||||
a[11] =
|
a[11] =
|
||||||
a[12] =
|
a[12] =
|
||||||
a[13] =
|
a[13] =
|
||||||
a[14] =
|
a[14] =
|
||||||
a[15] =
|
a[15] =
|
||||||
0)),
|
0)),
|
||||||
s)
|
s)
|
||||||
)
|
)
|
||||||
for (e = this.start; r < o && e < 64; ++r)
|
for (e = this.start; r < o && e < 64; ++r)
|
||||||
a[e >> 2] |= t[r] << n[3 & e++];
|
a[e >> 2] |= t[r] << n[3 & e++];
|
||||||
else
|
else
|
||||||
for (e = this.start; r < o && e < 64; ++r)
|
for (e = this.start; r < o && e < 64; ++r)
|
||||||
(i = t.charCodeAt(r)) < 128
|
(i = t.charCodeAt(r)) < 128
|
||||||
? (a[e >> 2] |= i << n[3 & e++])
|
? (a[e >> 2] |= i << n[3 & e++])
|
||||||
: i < 2048
|
: i < 2048
|
||||||
? ((a[e >> 2] |= (192 | (i >> 6)) << n[3 & e++]),
|
? ((a[e >> 2] |= (192 | (i >> 6)) << n[3 & e++]),
|
||||||
(a[e >> 2] |= (128 | (63 & i)) << n[3 & e++]))
|
(a[e >> 2] |= (128 | (63 & i)) << n[3 & e++]))
|
||||||
: i < 55296 || i >= 57344
|
: i < 55296 || i >= 57344
|
||||||
? ((a[e >> 2] |= (224 | (i >> 12)) << n[3 & e++]),
|
? ((a[e >> 2] |= (224 | (i >> 12)) << n[3 & e++]),
|
||||||
(a[e >> 2] |= (128 | ((i >> 6) & 63)) << n[3 & e++]),
|
(a[e >> 2] |= (128 | ((i >> 6) & 63)) << n[3 & e++]),
|
||||||
(a[e >> 2] |= (128 | (63 & i)) << n[3 & e++]))
|
(a[e >> 2] |= (128 | (63 & i)) << n[3 & e++]))
|
||||||
: ((i =
|
: ((i =
|
||||||
65536 + (((1023 & i) << 10) | (1023 & t.charCodeAt(++r)))),
|
65536 + (((1023 & i) << 10) | (1023 & t.charCodeAt(++r)))),
|
||||||
(a[e >> 2] |= (240 | (i >> 18)) << n[3 & e++]),
|
(a[e >> 2] |= (240 | (i >> 18)) << n[3 & e++]),
|
||||||
(a[e >> 2] |= (128 | ((i >> 12) & 63)) << n[3 & e++]),
|
(a[e >> 2] |= (128 | ((i >> 12) & 63)) << n[3 & e++]),
|
||||||
(a[e >> 2] |= (128 | ((i >> 6) & 63)) << n[3 & e++]),
|
(a[e >> 2] |= (128 | ((i >> 6) & 63)) << n[3 & e++]),
|
||||||
(a[e >> 2] |= (128 | (63 & i)) << n[3 & e++]));
|
(a[e >> 2] |= (128 | (63 & i)) << n[3 & e++]));
|
||||||
(this.lastByteIndex = e),
|
(this.lastByteIndex = e),
|
||||||
(this.bytes += e - this.start),
|
(this.bytes += e - this.start),
|
||||||
e >= 64
|
e >= 64
|
||||||
? ((this.block = a[16]),
|
? ((this.block = a[16]),
|
||||||
(this.start = e - 64),
|
(this.start = e - 64),
|
||||||
this.hash(),
|
this.hash(),
|
||||||
(this.hashed = !0))
|
(this.hashed = !0))
|
||||||
: (this.start = e);
|
: (this.start = e);
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
this.bytes > 4294967295 &&
|
this.bytes > 4294967295 &&
|
||||||
((this.hBytes += (this.bytes / 4294967296) << 0),
|
((this.hBytes += (this.bytes / 4294967296) << 0),
|
||||||
(this.bytes = this.bytes % 4294967296)),
|
(this.bytes = this.bytes % 4294967296)),
|
||||||
this
|
this
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
(t.prototype.finalize = function () {
|
(t.prototype.finalize = function () {
|
||||||
if (!this.finalized) {
|
if (!this.finalized) {
|
||||||
this.finalized = !0;
|
this.finalized = !0;
|
||||||
var t = this.blocks,
|
var t = this.blocks,
|
||||||
h = this.lastByteIndex;
|
h = this.lastByteIndex;
|
||||||
(t[16] = this.block),
|
(t[16] = this.block),
|
||||||
(t[h >> 2] |= o[3 & h]),
|
(t[h >> 2] |= o[3 & h]),
|
||||||
(this.block = t[16]),
|
(this.block = t[16]),
|
||||||
h >= 56 &&
|
h >= 56 &&
|
||||||
(this.hashed || this.hash(),
|
(this.hashed || this.hash(),
|
||||||
(t[0] = this.block),
|
(t[0] = this.block),
|
||||||
(t[16] =
|
(t[16] =
|
||||||
t[1] =
|
t[1] =
|
||||||
t[2] =
|
t[2] =
|
||||||
t[3] =
|
t[3] =
|
||||||
t[4] =
|
t[4] =
|
||||||
t[5] =
|
t[5] =
|
||||||
t[6] =
|
t[6] =
|
||||||
t[7] =
|
t[7] =
|
||||||
t[8] =
|
t[8] =
|
||||||
t[9] =
|
t[9] =
|
||||||
t[10] =
|
t[10] =
|
||||||
t[11] =
|
t[11] =
|
||||||
t[12] =
|
t[12] =
|
||||||
t[13] =
|
t[13] =
|
||||||
t[14] =
|
t[14] =
|
||||||
t[15] =
|
t[15] =
|
||||||
0)),
|
0)),
|
||||||
(t[14] = (this.hBytes << 3) | (this.bytes >>> 29)),
|
(t[14] = (this.hBytes << 3) | (this.bytes >>> 29)),
|
||||||
(t[15] = this.bytes << 3),
|
(t[15] = this.bytes << 3),
|
||||||
this.hash();
|
this.hash();
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
(t.prototype.hash = function () {
|
(t.prototype.hash = function () {
|
||||||
var t,
|
var t,
|
||||||
h,
|
h,
|
||||||
s = this.h0,
|
s = this.h0,
|
||||||
i = this.h1,
|
i = this.h1,
|
||||||
e = this.h2,
|
e = this.h2,
|
||||||
r = this.h3,
|
r = this.h3,
|
||||||
o = this.h4,
|
o = this.h4,
|
||||||
n = this.blocks;
|
n = this.blocks;
|
||||||
for (t = 16; t < 80; ++t)
|
for (t = 16; t < 80; ++t)
|
||||||
(h = n[t - 3] ^ n[t - 8] ^ n[t - 14] ^ n[t - 16]),
|
(h = n[t - 3] ^ n[t - 8] ^ n[t - 14] ^ n[t - 16]),
|
||||||
(n[t] = (h << 1) | (h >>> 31));
|
(n[t] = (h << 1) | (h >>> 31));
|
||||||
for (t = 0; t < 20; t += 5)
|
for (t = 0; t < 20; t += 5)
|
||||||
(s =
|
(s =
|
||||||
((h =
|
((h =
|
||||||
((i =
|
((i =
|
||||||
((h =
|
((h =
|
||||||
((e =
|
((e =
|
||||||
((h =
|
((h =
|
||||||
((r =
|
((r =
|
||||||
((h =
|
((h =
|
||||||
((o =
|
((o =
|
||||||
((h = (s << 5) | (s >>> 27)) +
|
((h = (s << 5) | (s >>> 27)) +
|
||||||
((i & e) | (~i & r)) +
|
((i & e) | (~i & r)) +
|
||||||
o +
|
o +
|
||||||
1518500249 +
|
1518500249 +
|
||||||
n[t]) <<
|
n[t]) <<
|
||||||
0) <<
|
0) <<
|
||||||
5) |
|
5) |
|
||||||
(o >>> 27)) +
|
(o >>> 27)) +
|
||||||
((s & (i = (i << 30) | (i >>> 2))) | (~s & e)) +
|
((s & (i = (i << 30) | (i >>> 2))) | (~s & e)) +
|
||||||
r +
|
r +
|
||||||
1518500249 +
|
1518500249 +
|
||||||
n[t + 1]) <<
|
n[t + 1]) <<
|
||||||
0) <<
|
0) <<
|
||||||
5) |
|
5) |
|
||||||
(r >>> 27)) +
|
(r >>> 27)) +
|
||||||
((o & (s = (s << 30) | (s >>> 2))) | (~o & i)) +
|
((o & (s = (s << 30) | (s >>> 2))) | (~o & i)) +
|
||||||
e +
|
e +
|
||||||
1518500249 +
|
1518500249 +
|
||||||
n[t + 2]) <<
|
n[t + 2]) <<
|
||||||
0) <<
|
0) <<
|
||||||
5) |
|
5) |
|
||||||
(e >>> 27)) +
|
(e >>> 27)) +
|
||||||
((r & (o = (o << 30) | (o >>> 2))) | (~r & s)) +
|
((r & (o = (o << 30) | (o >>> 2))) | (~r & s)) +
|
||||||
i +
|
i +
|
||||||
1518500249 +
|
1518500249 +
|
||||||
n[t + 3]) <<
|
n[t + 3]) <<
|
||||||
0) <<
|
0) <<
|
||||||
5) |
|
5) |
|
||||||
(i >>> 27)) +
|
(i >>> 27)) +
|
||||||
((e & (r = (r << 30) | (r >>> 2))) | (~e & o)) +
|
((e & (r = (r << 30) | (r >>> 2))) | (~e & o)) +
|
||||||
s +
|
s +
|
||||||
1518500249 +
|
1518500249 +
|
||||||
n[t + 4]) <<
|
n[t + 4]) <<
|
||||||
0),
|
0),
|
||||||
(e = (e << 30) | (e >>> 2));
|
(e = (e << 30) | (e >>> 2));
|
||||||
for (; t < 40; t += 5)
|
for (; t < 40; t += 5)
|
||||||
(s =
|
(s =
|
||||||
((h =
|
((h =
|
||||||
((i =
|
((i =
|
||||||
((h =
|
((h =
|
||||||
((e =
|
((e =
|
||||||
((h =
|
((h =
|
||||||
((r =
|
((r =
|
||||||
((h =
|
((h =
|
||||||
((o =
|
((o =
|
||||||
((h = (s << 5) | (s >>> 27)) +
|
((h = (s << 5) | (s >>> 27)) +
|
||||||
(i ^ e ^ r) +
|
(i ^ e ^ r) +
|
||||||
o +
|
o +
|
||||||
1859775393 +
|
1859775393 +
|
||||||
n[t]) <<
|
n[t]) <<
|
||||||
0) <<
|
0) <<
|
||||||
5) |
|
5) |
|
||||||
(o >>> 27)) +
|
(o >>> 27)) +
|
||||||
(s ^ (i = (i << 30) | (i >>> 2)) ^ e) +
|
(s ^ (i = (i << 30) | (i >>> 2)) ^ e) +
|
||||||
r +
|
r +
|
||||||
1859775393 +
|
1859775393 +
|
||||||
n[t + 1]) <<
|
n[t + 1]) <<
|
||||||
0) <<
|
0) <<
|
||||||
5) |
|
5) |
|
||||||
(r >>> 27)) +
|
(r >>> 27)) +
|
||||||
(o ^ (s = (s << 30) | (s >>> 2)) ^ i) +
|
(o ^ (s = (s << 30) | (s >>> 2)) ^ i) +
|
||||||
e +
|
e +
|
||||||
1859775393 +
|
1859775393 +
|
||||||
n[t + 2]) <<
|
n[t + 2]) <<
|
||||||
0) <<
|
0) <<
|
||||||
5) |
|
5) |
|
||||||
(e >>> 27)) +
|
(e >>> 27)) +
|
||||||
(r ^ (o = (o << 30) | (o >>> 2)) ^ s) +
|
(r ^ (o = (o << 30) | (o >>> 2)) ^ s) +
|
||||||
i +
|
i +
|
||||||
1859775393 +
|
1859775393 +
|
||||||
n[t + 3]) <<
|
n[t + 3]) <<
|
||||||
0) <<
|
0) <<
|
||||||
5) |
|
5) |
|
||||||
(i >>> 27)) +
|
(i >>> 27)) +
|
||||||
(e ^ (r = (r << 30) | (r >>> 2)) ^ o) +
|
(e ^ (r = (r << 30) | (r >>> 2)) ^ o) +
|
||||||
s +
|
s +
|
||||||
1859775393 +
|
1859775393 +
|
||||||
n[t + 4]) <<
|
n[t + 4]) <<
|
||||||
0),
|
0),
|
||||||
(e = (e << 30) | (e >>> 2));
|
(e = (e << 30) | (e >>> 2));
|
||||||
for (; t < 60; t += 5)
|
for (; t < 60; t += 5)
|
||||||
(s =
|
(s =
|
||||||
((h =
|
((h =
|
||||||
((i =
|
((i =
|
||||||
((h =
|
((h =
|
||||||
((e =
|
((e =
|
||||||
((h =
|
((h =
|
||||||
((r =
|
((r =
|
||||||
((h =
|
((h =
|
||||||
((o =
|
((o =
|
||||||
((h = (s << 5) | (s >>> 27)) +
|
((h = (s << 5) | (s >>> 27)) +
|
||||||
((i & e) | (i & r) | (e & r)) +
|
((i & e) | (i & r) | (e & r)) +
|
||||||
o -
|
o -
|
||||||
1894007588 +
|
1894007588 +
|
||||||
n[t]) <<
|
n[t]) <<
|
||||||
0) <<
|
0) <<
|
||||||
5) |
|
5) |
|
||||||
(o >>> 27)) +
|
(o >>> 27)) +
|
||||||
((s & (i = (i << 30) | (i >>> 2))) |
|
((s & (i = (i << 30) | (i >>> 2))) |
|
||||||
(s & e) |
|
(s & e) |
|
||||||
(i & e)) +
|
(i & e)) +
|
||||||
r -
|
r -
|
||||||
1894007588 +
|
1894007588 +
|
||||||
n[t + 1]) <<
|
n[t + 1]) <<
|
||||||
0) <<
|
0) <<
|
||||||
5) |
|
5) |
|
||||||
(r >>> 27)) +
|
(r >>> 27)) +
|
||||||
((o & (s = (s << 30) | (s >>> 2))) | (o & i) | (s & i)) +
|
((o & (s = (s << 30) | (s >>> 2))) | (o & i) | (s & i)) +
|
||||||
e -
|
e -
|
||||||
1894007588 +
|
1894007588 +
|
||||||
n[t + 2]) <<
|
n[t + 2]) <<
|
||||||
0) <<
|
0) <<
|
||||||
5) |
|
5) |
|
||||||
(e >>> 27)) +
|
(e >>> 27)) +
|
||||||
((r & (o = (o << 30) | (o >>> 2))) | (r & s) | (o & s)) +
|
((r & (o = (o << 30) | (o >>> 2))) | (r & s) | (o & s)) +
|
||||||
i -
|
i -
|
||||||
1894007588 +
|
1894007588 +
|
||||||
n[t + 3]) <<
|
n[t + 3]) <<
|
||||||
0) <<
|
0) <<
|
||||||
5) |
|
5) |
|
||||||
(i >>> 27)) +
|
(i >>> 27)) +
|
||||||
((e & (r = (r << 30) | (r >>> 2))) | (e & o) | (r & o)) +
|
((e & (r = (r << 30) | (r >>> 2))) | (e & o) | (r & o)) +
|
||||||
s -
|
s -
|
||||||
1894007588 +
|
1894007588 +
|
||||||
n[t + 4]) <<
|
n[t + 4]) <<
|
||||||
0),
|
0),
|
||||||
(e = (e << 30) | (e >>> 2));
|
(e = (e << 30) | (e >>> 2));
|
||||||
for (; t < 80; t += 5)
|
for (; t < 80; t += 5)
|
||||||
(s =
|
(s =
|
||||||
((h =
|
((h =
|
||||||
((i =
|
((i =
|
||||||
((h =
|
((h =
|
||||||
((e =
|
((e =
|
||||||
((h =
|
((h =
|
||||||
((r =
|
((r =
|
||||||
((h =
|
((h =
|
||||||
((o =
|
((o =
|
||||||
((h = (s << 5) | (s >>> 27)) +
|
((h = (s << 5) | (s >>> 27)) +
|
||||||
(i ^ e ^ r) +
|
(i ^ e ^ r) +
|
||||||
o -
|
o -
|
||||||
899497514 +
|
899497514 +
|
||||||
n[t]) <<
|
n[t]) <<
|
||||||
0) <<
|
0) <<
|
||||||
5) |
|
5) |
|
||||||
(o >>> 27)) +
|
(o >>> 27)) +
|
||||||
(s ^ (i = (i << 30) | (i >>> 2)) ^ e) +
|
(s ^ (i = (i << 30) | (i >>> 2)) ^ e) +
|
||||||
r -
|
r -
|
||||||
899497514 +
|
899497514 +
|
||||||
n[t + 1]) <<
|
n[t + 1]) <<
|
||||||
0) <<
|
0) <<
|
||||||
5) |
|
5) |
|
||||||
(r >>> 27)) +
|
(r >>> 27)) +
|
||||||
(o ^ (s = (s << 30) | (s >>> 2)) ^ i) +
|
(o ^ (s = (s << 30) | (s >>> 2)) ^ i) +
|
||||||
e -
|
e -
|
||||||
899497514 +
|
899497514 +
|
||||||
n[t + 2]) <<
|
n[t + 2]) <<
|
||||||
0) <<
|
0) <<
|
||||||
5) |
|
5) |
|
||||||
(e >>> 27)) +
|
(e >>> 27)) +
|
||||||
(r ^ (o = (o << 30) | (o >>> 2)) ^ s) +
|
(r ^ (o = (o << 30) | (o >>> 2)) ^ s) +
|
||||||
i -
|
i -
|
||||||
899497514 +
|
899497514 +
|
||||||
n[t + 3]) <<
|
n[t + 3]) <<
|
||||||
0) <<
|
0) <<
|
||||||
5) |
|
5) |
|
||||||
(i >>> 27)) +
|
(i >>> 27)) +
|
||||||
(e ^ (r = (r << 30) | (r >>> 2)) ^ o) +
|
(e ^ (r = (r << 30) | (r >>> 2)) ^ o) +
|
||||||
s -
|
s -
|
||||||
899497514 +
|
899497514 +
|
||||||
n[t + 4]) <<
|
n[t + 4]) <<
|
||||||
0),
|
0),
|
||||||
(e = (e << 30) | (e >>> 2));
|
(e = (e << 30) | (e >>> 2));
|
||||||
(this.h0 = (this.h0 + s) << 0),
|
(this.h0 = (this.h0 + s) << 0),
|
||||||
(this.h1 = (this.h1 + i) << 0),
|
(this.h1 = (this.h1 + i) << 0),
|
||||||
(this.h2 = (this.h2 + e) << 0),
|
(this.h2 = (this.h2 + e) << 0),
|
||||||
(this.h3 = (this.h3 + r) << 0),
|
(this.h3 = (this.h3 + r) << 0),
|
||||||
(this.h4 = (this.h4 + o) << 0);
|
(this.h4 = (this.h4 + o) << 0);
|
||||||
}),
|
}),
|
||||||
(t.prototype.hex = function () {
|
(t.prototype.hex = function () {
|
||||||
this.finalize();
|
this.finalize();
|
||||||
var t = this.h0,
|
var t = this.h0,
|
||||||
h = this.h1,
|
h = this.h1,
|
||||||
s = this.h2,
|
s = this.h2,
|
||||||
i = this.h3,
|
i = this.h3,
|
||||||
e = this.h4;
|
e = this.h4;
|
||||||
return (
|
return (
|
||||||
r[(t >> 28) & 15] +
|
r[(t >> 28) & 15] +
|
||||||
r[(t >> 24) & 15] +
|
r[(t >> 24) & 15] +
|
||||||
r[(t >> 20) & 15] +
|
r[(t >> 20) & 15] +
|
||||||
r[(t >> 16) & 15] +
|
r[(t >> 16) & 15] +
|
||||||
r[(t >> 12) & 15] +
|
r[(t >> 12) & 15] +
|
||||||
r[(t >> 8) & 15] +
|
r[(t >> 8) & 15] +
|
||||||
r[(t >> 4) & 15] +
|
r[(t >> 4) & 15] +
|
||||||
r[15 & t] +
|
r[15 & t] +
|
||||||
r[(h >> 28) & 15] +
|
r[(h >> 28) & 15] +
|
||||||
r[(h >> 24) & 15] +
|
r[(h >> 24) & 15] +
|
||||||
r[(h >> 20) & 15] +
|
r[(h >> 20) & 15] +
|
||||||
r[(h >> 16) & 15] +
|
r[(h >> 16) & 15] +
|
||||||
r[(h >> 12) & 15] +
|
r[(h >> 12) & 15] +
|
||||||
r[(h >> 8) & 15] +
|
r[(h >> 8) & 15] +
|
||||||
r[(h >> 4) & 15] +
|
r[(h >> 4) & 15] +
|
||||||
r[15 & h] +
|
r[15 & h] +
|
||||||
r[(s >> 28) & 15] +
|
r[(s >> 28) & 15] +
|
||||||
r[(s >> 24) & 15] +
|
r[(s >> 24) & 15] +
|
||||||
r[(s >> 20) & 15] +
|
r[(s >> 20) & 15] +
|
||||||
r[(s >> 16) & 15] +
|
r[(s >> 16) & 15] +
|
||||||
r[(s >> 12) & 15] +
|
r[(s >> 12) & 15] +
|
||||||
r[(s >> 8) & 15] +
|
r[(s >> 8) & 15] +
|
||||||
r[(s >> 4) & 15] +
|
r[(s >> 4) & 15] +
|
||||||
r[15 & s] +
|
r[15 & s] +
|
||||||
r[(i >> 28) & 15] +
|
r[(i >> 28) & 15] +
|
||||||
r[(i >> 24) & 15] +
|
r[(i >> 24) & 15] +
|
||||||
r[(i >> 20) & 15] +
|
r[(i >> 20) & 15] +
|
||||||
r[(i >> 16) & 15] +
|
r[(i >> 16) & 15] +
|
||||||
r[(i >> 12) & 15] +
|
r[(i >> 12) & 15] +
|
||||||
r[(i >> 8) & 15] +
|
r[(i >> 8) & 15] +
|
||||||
r[(i >> 4) & 15] +
|
r[(i >> 4) & 15] +
|
||||||
r[15 & i] +
|
r[15 & i] +
|
||||||
r[(e >> 28) & 15] +
|
r[(e >> 28) & 15] +
|
||||||
r[(e >> 24) & 15] +
|
r[(e >> 24) & 15] +
|
||||||
r[(e >> 20) & 15] +
|
r[(e >> 20) & 15] +
|
||||||
r[(e >> 16) & 15] +
|
r[(e >> 16) & 15] +
|
||||||
r[(e >> 12) & 15] +
|
r[(e >> 12) & 15] +
|
||||||
r[(e >> 8) & 15] +
|
r[(e >> 8) & 15] +
|
||||||
r[(e >> 4) & 15] +
|
r[(e >> 4) & 15] +
|
||||||
r[15 & e]
|
r[15 & e]
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
(t.prototype.toString = t.prototype.hex),
|
(t.prototype.toString = t.prototype.hex),
|
||||||
(t.prototype.digest = function () {
|
(t.prototype.digest = function () {
|
||||||
this.finalize();
|
this.finalize();
|
||||||
var t = this.h0,
|
var t = this.h0,
|
||||||
h = this.h1,
|
h = this.h1,
|
||||||
s = this.h2,
|
s = this.h2,
|
||||||
i = this.h3,
|
i = this.h3,
|
||||||
e = this.h4;
|
e = this.h4;
|
||||||
return [
|
return [
|
||||||
(t >> 24) & 255,
|
(t >> 24) & 255,
|
||||||
(t >> 16) & 255,
|
(t >> 16) & 255,
|
||||||
(t >> 8) & 255,
|
(t >> 8) & 255,
|
||||||
255 & t,
|
255 & t,
|
||||||
(h >> 24) & 255,
|
(h >> 24) & 255,
|
||||||
(h >> 16) & 255,
|
(h >> 16) & 255,
|
||||||
(h >> 8) & 255,
|
(h >> 8) & 255,
|
||||||
255 & h,
|
255 & h,
|
||||||
(s >> 24) & 255,
|
(s >> 24) & 255,
|
||||||
(s >> 16) & 255,
|
(s >> 16) & 255,
|
||||||
(s >> 8) & 255,
|
(s >> 8) & 255,
|
||||||
255 & s,
|
255 & s,
|
||||||
(i >> 24) & 255,
|
(i >> 24) & 255,
|
||||||
(i >> 16) & 255,
|
(i >> 16) & 255,
|
||||||
(i >> 8) & 255,
|
(i >> 8) & 255,
|
||||||
255 & i,
|
255 & i,
|
||||||
(e >> 24) & 255,
|
(e >> 24) & 255,
|
||||||
(e >> 16) & 255,
|
(e >> 16) & 255,
|
||||||
(e >> 8) & 255,
|
(e >> 8) & 255,
|
||||||
255 & e,
|
255 & e,
|
||||||
];
|
];
|
||||||
}),
|
}),
|
||||||
(t.prototype.array = t.prototype.digest),
|
(t.prototype.array = t.prototype.digest),
|
||||||
(t.prototype.arrayBuffer = function () {
|
(t.prototype.arrayBuffer = function () {
|
||||||
this.finalize();
|
this.finalize();
|
||||||
var t = new ArrayBuffer(20),
|
var t = new ArrayBuffer(20),
|
||||||
h = new DataView(t);
|
h = new DataView(t);
|
||||||
return (
|
return (
|
||||||
h.setUint32(0, this.h0),
|
h.setUint32(0, this.h0),
|
||||||
h.setUint32(4, this.h1),
|
h.setUint32(4, this.h1),
|
||||||
h.setUint32(8, this.h2),
|
h.setUint32(8, this.h2),
|
||||||
h.setUint32(12, this.h3),
|
h.setUint32(12, this.h3),
|
||||||
h.setUint32(16, this.h4),
|
h.setUint32(16, this.h4),
|
||||||
t
|
t
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
var y = c();
|
var y = c();
|
||||||
i
|
i
|
||||||
? (module.exports = y)
|
? (module.exports = y)
|
||||||
: ((h.sha1 = y),
|
: ((h.sha1 = y),
|
||||||
e &&
|
e &&
|
||||||
define(function () {
|
define(function () {
|
||||||
return y;
|
return y;
|
||||||
}));
|
}));
|
||||||
})();
|
})();
|
@ -1,32 +1,32 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
||||||
<link rel="stylesheet" href="/assets/main.css">
|
<link rel="stylesheet" href="/assets/main.css">
|
||||||
<link rel="icon" type="image/png" href="/favicon.png"/>
|
<link rel="icon" type="image/png" href="/favicon.png"/>
|
||||||
<title>FullGreaM</title>
|
<title>FullGreaM</title>
|
||||||
</head>
|
</head>
|
||||||
<body class="bg text-white">
|
<body class="bg text-white">
|
||||||
<script src="/fl_framework/index.js"></script>
|
<script src="/fl_framework/index.js"></script>
|
||||||
<nav id="navbar-main" class="navbar navbar-dark bg-dark">
|
<nav id="navbar-main" class="navbar navbar-dark bg-dark">
|
||||||
<a class="navbar-brand" href="#" onclick="fl.go('/');">
|
<a class="navbar-brand" href="#" onclick="fl.go('/');">
|
||||||
FullGreaM
|
FullGreaM
|
||||||
</a>
|
</a>
|
||||||
<button onclick="fl.go('/contacts');" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">Мои контакты</button>
|
<button onclick="fl.go('/contacts');" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">Мои контакты</button>
|
||||||
</nav>
|
</nav>
|
||||||
<div id="turn-on-js">
|
<div id="turn-on-js">
|
||||||
<h1>Включите поддержку JavaScript!</h1>
|
<h1>Включите поддержку JavaScript!</h1>
|
||||||
<p>В противном случае, компоненты сайте не смогут быть загружены</p>
|
<p>В противном случае, компоненты сайте не смогут быть загружены</p>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
document.getElementById("turn-on-js").innerHTML = '<div id="fl.area"><p>Loading...</p></div>';
|
document.getElementById("turn-on-js").innerHTML = '<div id="fl.area"><p>Loading...</p></div>';
|
||||||
</script>
|
</script>
|
||||||
<!-- Finalize loading bootstrap js -->
|
<!-- Finalize loading bootstrap js -->
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
||||||
<!-- Go to root -->
|
<!-- Go to root -->
|
||||||
<!-- <script>setTimeout(async () => fl.go(window.location.pathname), 50);</script> -->
|
<!-- <script>setTimeout(async () => fl.go(window.location.pathname), 50);</script> -->
|
||||||
<script src="/assets/main.js" type="module"></script>
|
<script src="/assets/main.js" type="module"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
121
blog/posts.json
121
blog/posts.json
@ -1,52 +1,69 @@
|
|||||||
{
|
{
|
||||||
"categories" : [
|
"categories" : [
|
||||||
{
|
{
|
||||||
"tag" : "news",
|
"tag" : "news",
|
||||||
"name" : "Новости"
|
"name" : "Новости"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"tag" : "updates",
|
"tag" : "updates",
|
||||||
"name" : "Обновления"
|
"name" : "Обновления"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"tag" : "personal",
|
"tag" : "personal",
|
||||||
"name" : "Личное"
|
"name" : "Личное"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"posts" : [
|
"posts" : [
|
||||||
{
|
{
|
||||||
"title" : "Открыт блог",
|
"title" : "Открыт блог",
|
||||||
"date" : 1697329458,
|
"date" : 1697329458,
|
||||||
"data" : "Сегодня я запустил блог на сайте и это первый пост в нём.\n...В блоге будут публиковаться новости, анонсы, а также, мои личные мысли. Впрочем, если вам интересно что-то одно или, наоборот, не интересно иное, то я добавил поддержку \"категорий\", которые вы можете включать и отключать.\n\n<i>UPD: Категории я добавлю позже.</i>",
|
"data" : "Сегодня я запустил блог на сайте и это первый пост в нём.\n...В блоге будут публиковаться новости, анонсы, а также, мои личные мысли. Впрочем, если вам интересно что-то одно или, наоборот, не интересно иное, то я добавил поддержку \"категорий\", которые вы можете включать и отключать.\n\n<i>UPD: Категории я добавлю позже.</i>",
|
||||||
"categories" : ["news", "updates"],
|
"categories" : ["news", "updates"],
|
||||||
"attachments" : {
|
"attachments" : {
|
||||||
"images" : [
|
"images" : [
|
||||||
"/assets/posts/15102023.png"
|
"/assets/posts/15102023.png"
|
||||||
],
|
],
|
||||||
"files" : [],
|
"files" : [],
|
||||||
"video" : [],
|
"video" : [],
|
||||||
"youtube" : [],
|
"youtube" : [],
|
||||||
"audio" : [],
|
"audio" : [],
|
||||||
"voice" : []
|
"voice" : []
|
||||||
},
|
},
|
||||||
"forward" : null
|
"forward" : null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title" : "Купил себе SD-Карты",
|
"title" : "Купил себе SD-Карты",
|
||||||
"date" : 1697385474,
|
"date" : 1697385474,
|
||||||
"data" : "Купил себе карты памяти в DNS, ща буду гонять, смотреть как работают.\n\nВообще, мне нехватало места на телефоне и посему решил докупить себе одну на 128 и одну на 64 гига.",
|
"data" : "Купил себе карты памяти в DNS, ща буду гонять, смотреть как работают.\n\nВообще, мне нехватало места на телефоне и посему решил докупить себе одну на 128 и одну на 64 гига.",
|
||||||
"categories" : ["personal"],
|
"categories" : ["personal"],
|
||||||
"attachments" : {
|
"attachments" : {
|
||||||
"images" : [
|
"images" : [
|
||||||
"/assets/posts/IMG_20231015_185244_587.jpg"
|
"/assets/posts/IMG_20231015_185244_587.jpg"
|
||||||
],
|
],
|
||||||
"files" : [],
|
"files" : [],
|
||||||
"video" : [],
|
"video" : [],
|
||||||
"youtube" : [],
|
"youtube" : [],
|
||||||
"audio" : [],
|
"audio" : [],
|
||||||
"voice" : []
|
"voice" : []
|
||||||
},
|
},
|
||||||
"forward" : null
|
"forward" : null
|
||||||
}
|
},
|
||||||
]
|
{
|
||||||
}
|
"title" : "Привод Arcturus",
|
||||||
|
"date" : 1718360744,
|
||||||
|
"data" : "Купил себе привод от Arcturus. Потестил - норм, буду гонять с ним дальше",
|
||||||
|
"categories" : ["personal"],
|
||||||
|
"attachments" : {
|
||||||
|
"images" : [
|
||||||
|
"/assets/posts/photo_2024-05-28_21-15-13.jpg"
|
||||||
|
],
|
||||||
|
"files" : [],
|
||||||
|
"video" : [],
|
||||||
|
"youtube" : [],
|
||||||
|
"audio" : [],
|
||||||
|
"voice" : []
|
||||||
|
},
|
||||||
|
"forward" : null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
@ -1,32 +1,32 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
||||||
<link rel="stylesheet" href="/assets/main.css">
|
<link rel="stylesheet" href="/assets/main.css">
|
||||||
<link rel="icon" type="image/png" href="/favicon.png"/>
|
<link rel="icon" type="image/png" href="/favicon.png"/>
|
||||||
<title>FullGreaM</title>
|
<title>FullGreaM</title>
|
||||||
</head>
|
</head>
|
||||||
<body class="bg text-white">
|
<body class="bg text-white">
|
||||||
<script src="/fl_framework/index.js"></script>
|
<script src="/fl_framework/index.js"></script>
|
||||||
<nav id="navbar-main" class="navbar navbar-dark bg-dark">
|
<nav id="navbar-main" class="navbar navbar-dark bg-dark">
|
||||||
<a class="navbar-brand" href="#" onclick="fl.go('/');">
|
<a class="navbar-brand" href="#" onclick="fl.go('/');">
|
||||||
FullGreaM
|
FullGreaM
|
||||||
</a>
|
</a>
|
||||||
<button onclick="fl.go('/contacts');" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">Мои контакты</button>
|
<button onclick="fl.go('/contacts');" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">Мои контакты</button>
|
||||||
</nav>
|
</nav>
|
||||||
<div id="turn-on-js">
|
<div id="turn-on-js">
|
||||||
<h1>Включите поддержку JavaScript!</h1>
|
<h1>Включите поддержку JavaScript!</h1>
|
||||||
<p>В противном случае, компоненты сайте не смогут быть загружены</p>
|
<p>В противном случае, компоненты сайте не смогут быть загружены</p>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
document.getElementById("turn-on-js").innerHTML = '<div id="fl.area"><p>Loading...</p></div>';
|
document.getElementById("turn-on-js").innerHTML = '<div id="fl.area"><p>Loading...</p></div>';
|
||||||
</script>
|
</script>
|
||||||
<!-- Finalize loading bootstrap js -->
|
<!-- Finalize loading bootstrap js -->
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
||||||
<!-- Go to root -->
|
<!-- Go to root -->
|
||||||
<!-- <script>setTimeout(async () => fl.go(window.location.pathname), 50);</script> -->
|
<!-- <script>setTimeout(async () => fl.go(window.location.pathname), 50);</script> -->
|
||||||
<script src="/assets/main.js" type="module"></script>
|
<script src="/assets/main.js" type="module"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,233 +1,233 @@
|
|||||||
#Mod_Priority,#Mod_Name,#Mod_Nexus_URL
|
#Mod_Priority,#Mod_Name,#Mod_Nexus_URL
|
||||||
"0000","Unmanaged: FNIS",""
|
"0000","Unmanaged: FNIS",""
|
||||||
"0002","DLC: HearthFires",""
|
"0002","DLC: HearthFires",""
|
||||||
"0003","DLC: Dragonborn",""
|
"0003","DLC: Dragonborn",""
|
||||||
"0004","DLC: Dawnguard",""
|
"0004","DLC: Dawnguard",""
|
||||||
"0006","Address Library for SKSE Plugins","https://www.nexusmods.com/skyrimspecialedition/mods/32444"
|
"0006","Address Library for SKSE Plugins","https://www.nexusmods.com/skyrimspecialedition/mods/32444"
|
||||||
"0007","Unofficial Skyrim Special Edition Patch-RUS-RUS","https://www.nexusmods.com/skyrimspecialedition/mods/266"
|
"0007","Unofficial Skyrim Special Edition Patch-RUS-RUS","https://www.nexusmods.com/skyrimspecialedition/mods/266"
|
||||||
"0008","powerofthree's Tweaks","https://www.nexusmods.com/skyrimspecialedition/mods/51073"
|
"0008","powerofthree's Tweaks","https://www.nexusmods.com/skyrimspecialedition/mods/51073"
|
||||||
"0009","JContainers SE","https://www.nexusmods.com/skyrimspecialedition/mods/16495"
|
"0009","JContainers SE","https://www.nexusmods.com/skyrimspecialedition/mods/16495"
|
||||||
"0010","ConsoleUtilSSE","https://www.nexusmods.com/skyrimspecialedition/mods/24858"
|
"0010","ConsoleUtilSSE","https://www.nexusmods.com/skyrimspecialedition/mods/24858"
|
||||||
"0011","ENB Helper SE 1.5 for SSE 1.5.97","https://www.nexusmods.com/skyrimspecialedition/mods/23174"
|
"0011","ENB Helper SE 1.5 for SSE 1.5.97","https://www.nexusmods.com/skyrimspecialedition/mods/23174"
|
||||||
"0012","Weapons Armor Clothing and Clutter Fixes","https://www.nexusmods.com/skyrimspecialedition/mods/18994"
|
"0012","Weapons Armor Clothing and Clutter Fixes","https://www.nexusmods.com/skyrimspecialedition/mods/18994"
|
||||||
"0013","Weapons Armor Clothing and Clutter Fixes 2.9 RUS","https://www.nexusmods.com/skyrimspecialedition/mods/19284"
|
"0013","Weapons Armor Clothing and Clutter Fixes 2.9 RUS","https://www.nexusmods.com/skyrimspecialedition/mods/19284"
|
||||||
"0014","SkyUI_5_2_SE","https://www.nexusmods.com/skyrimspecialedition/mods/12604"
|
"0014","SkyUI_5_2_SE","https://www.nexusmods.com/skyrimspecialedition/mods/12604"
|
||||||
"0015","UIExtensions","https://www.nexusmods.com/skyrimspecialedition/mods/17561"
|
"0015","UIExtensions","https://www.nexusmods.com/skyrimspecialedition/mods/17561"
|
||||||
"0016","DynDOLOD Resources SE","https://www.nexusmods.com/skyrimspecialedition/mods/32382"
|
"0016","DynDOLOD Resources SE","https://www.nexusmods.com/skyrimspecialedition/mods/32382"
|
||||||
"0018","RaceCompatibility with fixes for SSE","https://www.nexusmods.com/skyrimspecialedition/mods/2853"
|
"0018","RaceCompatibility with fixes for SSE","https://www.nexusmods.com/skyrimspecialedition/mods/2853"
|
||||||
"0019","more HUD SE Light Master- Pre AE","https://www.nexusmods.com/skyrimspecialedition/mods/12688"
|
"0019","more HUD SE Light Master- Pre AE","https://www.nexusmods.com/skyrimspecialedition/mods/12688"
|
||||||
"0020","MCM Helper SE","https://www.nexusmods.com/skyrimspecialedition/mods/53000"
|
"0020","MCM Helper SE","https://www.nexusmods.com/skyrimspecialedition/mods/53000"
|
||||||
"0021","FileAccess Interface for Skyrim SE Scripts - FISSES (FISS)","https://www.nexusmods.com/skyrimspecialedition/mods/13956"
|
"0021","FileAccess Interface for Skyrim SE Scripts - FISSES (FISS)","https://www.nexusmods.com/skyrimspecialedition/mods/13956"
|
||||||
"0022","Papyrus API","https://www.nexusmods.com/skyrimspecialedition/mods/24858"
|
"0022","Papyrus API","https://www.nexusmods.com/skyrimspecialedition/mods/24858"
|
||||||
"0023","IFrame Generator RE","https://www.nexusmods.com/skyrimspecialedition/mods/74401"
|
"0023","IFrame Generator RE","https://www.nexusmods.com/skyrimspecialedition/mods/74401"
|
||||||
"0024","dTry's Key Utils SE","https://www.nexusmods.com/skyrimspecialedition/mods/69944"
|
"0024","dTry's Key Utils SE","https://www.nexusmods.com/skyrimspecialedition/mods/69944"
|
||||||
"0025","Papyrus Ini Manipulator","https://www.nexusmods.com/skyrimspecialedition/mods/65634"
|
"0025","Papyrus Ini Manipulator","https://www.nexusmods.com/skyrimspecialedition/mods/65634"
|
||||||
"0027","SSE Display Tweaks","https://www.nexusmods.com/skyrimspecialedition/mods/34705"
|
"0027","SSE Display Tweaks","https://www.nexusmods.com/skyrimspecialedition/mods/34705"
|
||||||
"0028","CrashLogger","https://www.nexusmods.com/skyrimspecialedition/mods/59818"
|
"0028","CrashLogger","https://www.nexusmods.com/skyrimspecialedition/mods/59818"
|
||||||
"0029","CrashLoggerSE","https://www.nexusmods.com/skyrimspecialedition/mods/59818"
|
"0029","CrashLoggerSE","https://www.nexusmods.com/skyrimspecialedition/mods/59818"
|
||||||
"0035","BodySlide and Outfit Studio","https://www.nexusmods.com/skyrimspecialedition/mods/201"
|
"0035","BodySlide and Outfit Studio","https://www.nexusmods.com/skyrimspecialedition/mods/201"
|
||||||
"0036","Перевод BodySlide and Outfit Studio",""
|
"0036","Перевод BodySlide and Outfit Studio",""
|
||||||
"0038","Caliente's Beautiful Bodies Enhancer -CBBE-","https://www.nexusmods.com/skyrimspecialedition/mods/198"
|
"0038","Caliente's Beautiful Bodies Enhancer -CBBE-","https://www.nexusmods.com/skyrimspecialedition/mods/198"
|
||||||
"0039","CBPC - Physics with Collisions","https://www.nexusmods.com/skyrimspecialedition/mods/21224"
|
"0039","CBPC - Physics with Collisions","https://www.nexusmods.com/skyrimspecialedition/mods/21224"
|
||||||
"0041","HDT-SMP for SSE 1.5.97 (avx on)","https://www.nexusmods.com/skyrimspecialedition/mods/30872"
|
"0041","HDT-SMP for SSE 1.5.97 (avx on)","https://www.nexusmods.com/skyrimspecialedition/mods/30872"
|
||||||
"0045","CBBE 3BA","https://www.nexusmods.com/skyrimspecialedition/mods/30174"
|
"0045","CBBE 3BA","https://www.nexusmods.com/skyrimspecialedition/mods/30174"
|
||||||
"0046","XP32 Maximum Skeleton Special Extended","https://www.nexusmods.com/skyrimspecialedition/mods/1988"
|
"0046","XP32 Maximum Skeleton Special Extended","https://www.nexusmods.com/skyrimspecialedition/mods/1988"
|
||||||
"0047","XP32 Maximum Skeleton Special Extended - Fixed Scripts","https://www.nexusmods.com/skyrimspecialedition/mods/44252"
|
"0047","XP32 Maximum Skeleton Special Extended - Fixed Scripts","https://www.nexusmods.com/skyrimspecialedition/mods/44252"
|
||||||
"0049","AddItemMenu - NG","https://www.nexusmods.com/skyrimspecialedition/mods/71409"
|
"0049","AddItemMenu - NG","https://www.nexusmods.com/skyrimspecialedition/mods/71409"
|
||||||
"0054","NAT Stand Alone - 0.4.2 c","https://www.nexusmods.com/skyrimspecialedition/mods/12842"
|
"0054","NAT Stand Alone - 0.4.2 c","https://www.nexusmods.com/skyrimspecialedition/mods/12842"
|
||||||
"0055","Enhanced Lights and FX","https://www.nexusmods.com/skyrimspecialedition/mods/2424"
|
"0055","Enhanced Lights and FX","https://www.nexusmods.com/skyrimspecialedition/mods/2424"
|
||||||
"0056","Cathedral - 3D Pine Grass - Full 3D Coverage","https://www.nexusmods.com/skyrimspecialedition/mods/42032"
|
"0056","Cathedral - 3D Pine Grass - Full 3D Coverage","https://www.nexusmods.com/skyrimspecialedition/mods/42032"
|
||||||
"0057","Nature of the Wild Lands - Landscape textures","https://www.nexusmods.com/skyrimspecialedition/mods/63604"
|
"0057","Nature of the Wild Lands - Landscape textures","https://www.nexusmods.com/skyrimspecialedition/mods/63604"
|
||||||
"0058","Nature of the Wild Lands 2.0","https://www.nexusmods.com/skyrimspecialedition/mods/63604"
|
"0058","Nature of the Wild Lands 2.0","https://www.nexusmods.com/skyrimspecialedition/mods/63604"
|
||||||
"0059","Northern Roads","https://www.nexusmods.com/skyrimspecialedition/mods/77530"
|
"0059","Northern Roads","https://www.nexusmods.com/skyrimspecialedition/mods/77530"
|
||||||
"0060","Northern Roads (SE-AE) - RU","https://www.nexusmods.com/skyrimspecialedition/mods/77652"
|
"0060","Northern Roads (SE-AE) - RU","https://www.nexusmods.com/skyrimspecialedition/mods/77652"
|
||||||
"0061","Nature of the Wild Lands - Grass","https://www.nexusmods.com/skyrimspecialedition/mods/63604"
|
"0061","Nature of the Wild Lands - Grass","https://www.nexusmods.com/skyrimspecialedition/mods/63604"
|
||||||
"0062","Enhanced Landscapes","https://www.nexusmods.com/skyrimspecialedition/mods/18162"
|
"0062","Enhanced Landscapes","https://www.nexusmods.com/skyrimspecialedition/mods/18162"
|
||||||
"0063","EVLaS","https://www.nexusmods.com/skyrimspecialedition/mods/63725"
|
"0063","EVLaS","https://www.nexusmods.com/skyrimspecialedition/mods/63725"
|
||||||
"0064","Morning Fogs SSE - Thin Fog","https://www.nexusmods.com/skyrimspecialedition/mods/21436"
|
"0064","Morning Fogs SSE - Thin Fog","https://www.nexusmods.com/skyrimspecialedition/mods/21436"
|
||||||
"0065","Water for ENB","https://www.nexusmods.com/skyrimspecialedition/mods/37061"
|
"0065","Water for ENB","https://www.nexusmods.com/skyrimspecialedition/mods/37061"
|
||||||
"0066","ELFX Fixes (RUS)","https://www.nexusmods.com/skyrimspecialedition/mods/39765"
|
"0066","ELFX Fixes (RUS)","https://www.nexusmods.com/skyrimspecialedition/mods/39765"
|
||||||
"0067","Picta Series - Improved Sky Meshes","https://www.nexusmods.com/skyrimspecialedition/mods/58263"
|
"0067","Picta Series - Improved Sky Meshes","https://www.nexusmods.com/skyrimspecialedition/mods/58263"
|
||||||
"0068","Storm Lightning for SSE and VR (Minty Lightning 2019)","https://www.nexusmods.com/skyrimspecialedition/mods/29243"
|
"0068","Storm Lightning for SSE and VR (Minty Lightning 2019)","https://www.nexusmods.com/skyrimspecialedition/mods/29243"
|
||||||
"0070","Serious HD sse 1.2","https://www.nexusmods.com/skyrimspecialedition/mods/7435"
|
"0070","Serious HD sse 1.2","https://www.nexusmods.com/skyrimspecialedition/mods/7435"
|
||||||
"0071","HD Lods Textures SE 1K","https://www.nexusmods.com/skyrimspecialedition/mods/3333"
|
"0071","HD Lods Textures SE 1K","https://www.nexusmods.com/skyrimspecialedition/mods/3333"
|
||||||
"0072","B. Noble Skyrim - FULL PACK_Performance Edition","https://www.nexusmods.com/skyrimspecialedition/mods/21423"
|
"0072","B. Noble Skyrim - FULL PACK_Performance Edition","https://www.nexusmods.com/skyrimspecialedition/mods/21423"
|
||||||
"0073","Static Mesh Improvement Mod (SMIM)","https://www.nexusmods.com/skyrimspecialedition/mods/659"
|
"0073","Static Mesh Improvement Mod (SMIM)","https://www.nexusmods.com/skyrimspecialedition/mods/659"
|
||||||
"0074","Bellyaches Animal and Creature Pack",""
|
"0074","Bellyaches Animal and Creature Pack",""
|
||||||
"0075","Majestic Mountains Main","https://www.nexusmods.com/skyrimspecialedition/mods/11052"
|
"0075","Majestic Mountains Main","https://www.nexusmods.com/skyrimspecialedition/mods/11052"
|
||||||
"0077","Schlongs of Skyrim SE",""
|
"0077","Schlongs of Skyrim SE",""
|
||||||
"0079","Bijin Skin - CBBE","https://www.nexusmods.com/skyrimspecialedition/mods/20078"
|
"0079","Bijin Skin - CBBE","https://www.nexusmods.com/skyrimspecialedition/mods/20078"
|
||||||
"0080","Fair Skin Complexion for CBBE",""
|
"0080","Fair Skin Complexion for CBBE",""
|
||||||
"0082","Tempered Skins for Males - SOS Full Version","https://www.nexusmods.com/skyrimspecialedition/mods/7902"
|
"0082","Tempered Skins for Males - SOS Full Version","https://www.nexusmods.com/skyrimspecialedition/mods/7902"
|
||||||
"0085","Kalilies Brows - High Poly Head","https://www.nexusmods.com/skyrimspecialedition/mods/57115"
|
"0085","Kalilies Brows - High Poly Head","https://www.nexusmods.com/skyrimspecialedition/mods/57115"
|
||||||
"0086","High Poly Head SE",""
|
"0086","High Poly Head SE",""
|
||||||
"0087","Expressive Facegen Morphs SE","https://www.nexusmods.com/skyrimspecialedition/mods/35785"
|
"0087","Expressive Facegen Morphs SE","https://www.nexusmods.com/skyrimspecialedition/mods/35785"
|
||||||
"0088","Expressive Facial Animation - Female Edition","https://www.nexusmods.com/skyrimspecialedition/mods/19181"
|
"0088","Expressive Facial Animation - Female Edition","https://www.nexusmods.com/skyrimspecialedition/mods/19181"
|
||||||
"0089","Kalilies Brows","https://www.nexusmods.com/skyrimspecialedition/mods/40595"
|
"0089","Kalilies Brows","https://www.nexusmods.com/skyrimspecialedition/mods/40595"
|
||||||
"0091","ApachiiSkyHair_v_1_6_Full_optimized","https://www.nexusmods.com/skyrimspecialedition/mods/2014"
|
"0091","ApachiiSkyHair_v_1_6_Full_optimized","https://www.nexusmods.com/skyrimspecialedition/mods/2014"
|
||||||
"0092","ApachiiSkyHairMale_v_1_3","https://www.nexusmods.com/skyrimspecialedition/mods/2014"
|
"0092","ApachiiSkyHairMale_v_1_3","https://www.nexusmods.com/skyrimspecialedition/mods/2014"
|
||||||
"0093","ApachiiSkyHairFemale_v_1_5_1","https://www.nexusmods.com/skyrimspecialedition/mods/2014"
|
"0093","ApachiiSkyHairFemale_v_1_5_1","https://www.nexusmods.com/skyrimspecialedition/mods/2014"
|
||||||
"0094","The Witcher 3 Eyes","https://www.nexusmods.com/skyrimspecialedition/mods/2921"
|
"0094","The Witcher 3 Eyes","https://www.nexusmods.com/skyrimspecialedition/mods/2921"
|
||||||
"0095","HDT-SMP Racemenu Hairs and Wigs",""
|
"0095","HDT-SMP Racemenu Hairs and Wigs",""
|
||||||
"0096","Female Makeup Suite - Face - 2K","https://www.nexusmods.com/skyrimspecialedition/mods/24495"
|
"0096","Female Makeup Suite - Face - 2K","https://www.nexusmods.com/skyrimspecialedition/mods/24495"
|
||||||
"0097","The Eyes of Beauty SSE","https://www.nexusmods.com/skyrimspecialedition/mods/16185"
|
"0097","The Eyes of Beauty SSE","https://www.nexusmods.com/skyrimspecialedition/mods/16185"
|
||||||
"0098","KS Hairdos - HDT SMP (Physics)","https://www.nexusmods.com/skyrimspecialedition/mods/31300"
|
"0098","KS Hairdos - HDT SMP (Physics)","https://www.nexusmods.com/skyrimspecialedition/mods/31300"
|
||||||
"0099","Freckle Mania High Quality","https://www.nexusmods.com/skyrimspecialedition/mods/52841"
|
"0099","Freckle Mania High Quality","https://www.nexusmods.com/skyrimspecialedition/mods/52841"
|
||||||
"0100","SE SG Brows","https://www.nexusmods.com/skyrimspecialedition/mods/25890"
|
"0100","SE SG Brows","https://www.nexusmods.com/skyrimspecialedition/mods/25890"
|
||||||
"0101","Hvergelmir's Aesthetics - Brows","https://www.nexusmods.com/skyrimspecialedition/mods/1062"
|
"0101","Hvergelmir's Aesthetics - Brows","https://www.nexusmods.com/skyrimspecialedition/mods/1062"
|
||||||
"0102","Hvergelmir Brows - For High Poly Head","https://www.nexusmods.com/skyrimspecialedition/mods/38493"
|
"0102","Hvergelmir Brows - For High Poly Head","https://www.nexusmods.com/skyrimspecialedition/mods/38493"
|
||||||
"0103","Womens_Eyebrows",""
|
"0103","Womens_Eyebrows",""
|
||||||
"0104","Female Basic Makeup STANDALONE","https://www.nexusmods.com/skyrimspecialedition/mods/44716"
|
"0104","Female Basic Makeup STANDALONE","https://www.nexusmods.com/skyrimspecialedition/mods/44716"
|
||||||
"0105","Empyrean CS SSE 2.1","https://www.nexusmods.com/skyrimspecialedition/mods/38965"
|
"0105","Empyrean CS SSE 2.1","https://www.nexusmods.com/skyrimspecialedition/mods/38965"
|
||||||
"0106","Great modders' SMP Hair pack and Xing","https://www.nexusmods.com/skyrimspecialedition/mods/31405"
|
"0106","Great modders' SMP Hair pack and Xing","https://www.nexusmods.com/skyrimspecialedition/mods/31405"
|
||||||
"0107","llygaid Eye - Unreal 1K","https://www.nexusmods.com/skyrimspecialedition/mods/91422"
|
"0107","llygaid Eye - Unreal 1K","https://www.nexusmods.com/skyrimspecialedition/mods/91422"
|
||||||
"0109","Dynamic Animation Replacer (DAR) v1.0.0 for SkyrimSE","https://www.nexusmods.com/skyrimspecialedition/mods/33746"
|
"0109","Dynamic Animation Replacer (DAR) v1.0.0 for SkyrimSE","https://www.nexusmods.com/skyrimspecialedition/mods/33746"
|
||||||
"0110","Animation Motion Revolution","https://www.nexusmods.com/skyrimspecialedition/mods/50258"
|
"0110","Animation Motion Revolution","https://www.nexusmods.com/skyrimspecialedition/mods/50258"
|
||||||
"0111","Nemesis Unlimited Behavior Engine","https://www.nexusmods.com/skyrimspecialedition/mods/60033"
|
"0111","Nemesis Unlimited Behavior Engine","https://www.nexusmods.com/skyrimspecialedition/mods/60033"
|
||||||
"0112","Gesture Animation Remix (DAR) - main archive","https://www.nexusmods.com/skyrimspecialedition/mods/64420"
|
"0112","Gesture Animation Remix (DAR) - main archive","https://www.nexusmods.com/skyrimspecialedition/mods/64420"
|
||||||
"0113","Conditional Gender Animations","https://www.nexusmods.com/skyrimspecialedition/mods/73446"
|
"0113","Conditional Gender Animations","https://www.nexusmods.com/skyrimspecialedition/mods/73446"
|
||||||
"0116","Audio Overhaul for Skyrim 2","https://www.nexusmods.com/skyrimspecialedition/mods/12466"
|
"0116","Audio Overhaul for Skyrim 2","https://www.nexusmods.com/skyrimspecialedition/mods/12466"
|
||||||
"0117","MLVUCSSE - English Original Voices","https://www.nexusmods.com/skyrimspecialedition/mods/91265"
|
"0117","MLVUCSSE - English Original Voices","https://www.nexusmods.com/skyrimspecialedition/mods/91265"
|
||||||
"0119","Holds SSE Complete - 0.0.9","https://www.nexusmods.com/skyrimspecialedition/mods/10609"
|
"0119","Holds SSE Complete - 0.0.9","https://www.nexusmods.com/skyrimspecialedition/mods/10609"
|
||||||
"0120","Guards Armor Replacer","https://www.nexusmods.com/skyrimspecialedition/mods/22671"
|
"0120","Guards Armor Replacer","https://www.nexusmods.com/skyrimspecialedition/mods/22671"
|
||||||
"0121","Guards Armor Replacer [RUS]",""
|
"0121","Guards Armor Replacer [RUS]",""
|
||||||
"0122","NordWarUA's Vanilla Armor Replacers SSE","https://www.nexusmods.com/skyrimspecialedition/mods/31679"
|
"0122","NordWarUA's Vanilla Armor Replacers SSE","https://www.nexusmods.com/skyrimspecialedition/mods/31679"
|
||||||
"0123","NordWarUA's Vanilla Armor Replacers SSE -RUS-","https://www.nexusmods.com/skyrimspecialedition/mods/39681"
|
"0123","NordWarUA's Vanilla Armor Replacers SSE -RUS-","https://www.nexusmods.com/skyrimspecialedition/mods/39681"
|
||||||
"0124","Lanterns Of Skyrim II",""
|
"0124","Lanterns Of Skyrim II",""
|
||||||
"0125","Lanterns Of Skyrim II - FOMOD","https://www.nexusmods.com/skyrimspecialedition/mods/30817"
|
"0125","Lanterns Of Skyrim II - FOMOD","https://www.nexusmods.com/skyrimspecialedition/mods/30817"
|
||||||
"0128","HD HAIR(SE)",""
|
"0128","HD HAIR(SE)",""
|
||||||
"0129","NecDaz Feet v",""
|
"0129","NecDaz Feet v",""
|
||||||
"0130","Feminine Hands for SE","https://www.nexusmods.com/skyrimspecialedition/mods/67522"
|
"0130","Feminine Hands for SE","https://www.nexusmods.com/skyrimspecialedition/mods/67522"
|
||||||
"0131","Pandorable's NPCs","https://www.nexusmods.com/skyrimspecialedition/mods/19012"
|
"0131","Pandorable's NPCs","https://www.nexusmods.com/skyrimspecialedition/mods/19012"
|
||||||
"0132","PAN_AIO",""
|
"0132","PAN_AIO",""
|
||||||
"0133","PAN_DashingDefenders SE","https://www.nexusmods.com/skyrimspecialedition/mods/78600"
|
"0133","PAN_DashingDefenders SE","https://www.nexusmods.com/skyrimspecialedition/mods/78600"
|
||||||
"0134","Pandorable's Wicked Witches","https://www.nexusmods.com/skyrimspecialedition/mods/77478"
|
"0134","Pandorable's Wicked Witches","https://www.nexusmods.com/skyrimspecialedition/mods/77478"
|
||||||
"0135","Pandorable's NPCs - Sovngarde","https://www.nexusmods.com/skyrimspecialedition/mods/55877"
|
"0135","Pandorable's NPCs - Sovngarde","https://www.nexusmods.com/skyrimspecialedition/mods/55877"
|
||||||
"0136","PAN_DevotedDames","https://www.nexusmods.com/skyrimspecialedition/mods/59531"
|
"0136","PAN_DevotedDames","https://www.nexusmods.com/skyrimspecialedition/mods/59531"
|
||||||
"0137","Pandorable's Serana","https://www.nexusmods.com/skyrimspecialedition/mods/24931"
|
"0137","Pandorable's Serana","https://www.nexusmods.com/skyrimspecialedition/mods/24931"
|
||||||
"0138","Pandorable's Marvellous Miners","https://www.nexusmods.com/skyrimspecialedition/mods/56399"
|
"0138","Pandorable's Marvellous Miners","https://www.nexusmods.com/skyrimspecialedition/mods/56399"
|
||||||
"0139","Pandorable's Valerica","https://www.nexusmods.com/skyrimspecialedition/mods/35799"
|
"0139","Pandorable's Valerica","https://www.nexusmods.com/skyrimspecialedition/mods/35799"
|
||||||
"0140","Pandorable's Frea and Frida","https://www.nexusmods.com/skyrimspecialedition/mods/31273"
|
"0140","Pandorable's Frea and Frida","https://www.nexusmods.com/skyrimspecialedition/mods/31273"
|
||||||
"0141","PAN_Nevri","https://www.nexusmods.com/skyrimspecialedition/mods/45128"
|
"0141","PAN_Nevri","https://www.nexusmods.com/skyrimspecialedition/mods/45128"
|
||||||
"0142","PAN_Brelyna","https://www.nexusmods.com/skyrimspecialedition/mods/45128"
|
"0142","PAN_Brelyna","https://www.nexusmods.com/skyrimspecialedition/mods/45128"
|
||||||
"0143","Pandorable's Black-Briar Ladies","https://www.nexusmods.com/skyrimspecialedition/mods/33731"
|
"0143","Pandorable's Black-Briar Ladies","https://www.nexusmods.com/skyrimspecialedition/mods/33731"
|
||||||
"0144","Pandorable's Warrior Women","https://www.nexusmods.com/skyrimspecialedition/mods/34464"
|
"0144","Pandorable's Warrior Women","https://www.nexusmods.com/skyrimspecialedition/mods/34464"
|
||||||
"0145","Pandorable's Lethal Ladies","https://www.nexusmods.com/skyrimspecialedition/mods/36827"
|
"0145","Pandorable's Lethal Ladies","https://www.nexusmods.com/skyrimspecialedition/mods/36827"
|
||||||
"0146","PAN_ShieldSisters","https://www.nexusmods.com/skyrimspecialedition/mods/42480"
|
"0146","PAN_ShieldSisters","https://www.nexusmods.com/skyrimspecialedition/mods/42480"
|
||||||
"0147","Pandorable's NPCs - Males","https://www.nexusmods.com/skyrimspecialedition/mods/42043"
|
"0147","Pandorable's NPCs - Males","https://www.nexusmods.com/skyrimspecialedition/mods/42043"
|
||||||
"0148","Pandorable's NPCs - Males 2","https://www.nexusmods.com/skyrimspecialedition/mods/50617"
|
"0148","Pandorable's NPCs - Males 2","https://www.nexusmods.com/skyrimspecialedition/mods/50617"
|
||||||
"0149","Bijin Warmaidens SE","https://www.nexusmods.com/skyrimspecialedition/mods/1825"
|
"0149","Bijin Warmaidens SE","https://www.nexusmods.com/skyrimspecialedition/mods/1825"
|
||||||
"0150","Bijin Warmaidens SE - High-res skin textures for CBBE","https://www.nexusmods.com/skyrimspecialedition/mods/1825"
|
"0150","Bijin Warmaidens SE - High-res skin textures for CBBE","https://www.nexusmods.com/skyrimspecialedition/mods/1825"
|
||||||
"0151","Bijin Wives SE 1.1.2","https://www.nexusmods.com/skyrimspecialedition/mods/11247"
|
"0151","Bijin Wives SE 1.1.2","https://www.nexusmods.com/skyrimspecialedition/mods/11247"
|
||||||
"0152","Bijin NPCs SE 1.2.1","https://www.nexusmods.com/skyrimspecialedition/mods/11287"
|
"0152","Bijin NPCs SE 1.2.1","https://www.nexusmods.com/skyrimspecialedition/mods/11287"
|
||||||
"0153","Bijin AIO SE for USSEP","https://www.nexusmods.com/skyrimspecialedition/mods/11287"
|
"0153","Bijin AIO SE for USSEP","https://www.nexusmods.com/skyrimspecialedition/mods/11287"
|
||||||
"0161","Dragonborn Voice Overhaul","https://www.nexusmods.com/skyrimspecialedition/mods/84329"
|
"0161","Dragonborn Voice Overhaul","https://www.nexusmods.com/skyrimspecialedition/mods/84329"
|
||||||
"0162","Bella Voice DBVO","https://www.nexusmods.com/skyrimspecialedition/mods/89810"
|
"0162","Bella Voice DBVO","https://www.nexusmods.com/skyrimspecialedition/mods/89810"
|
||||||
"0163","Bella Voice Fix",""
|
"0163","Bella Voice Fix",""
|
||||||
"0164","voicebella maingame and dlc","https://www.nexusmods.com/skyrimspecialedition/mods/89810"
|
"0164","voicebella maingame and dlc","https://www.nexusmods.com/skyrimspecialedition/mods/89810"
|
||||||
"0165","Name heroine DBVO","https://www.nexusmods.com/skyrimspecialedition/mods/89810"
|
"0165","Name heroine DBVO","https://www.nexusmods.com/skyrimspecialedition/mods/89810"
|
||||||
"0169","IFPV","https://www.nexusmods.com/skyrimspecialedition/mods/22306"
|
"0169","IFPV","https://www.nexusmods.com/skyrimspecialedition/mods/22306"
|
||||||
"0170","RaceMenu Special Edition",""
|
"0170","RaceMenu Special Edition",""
|
||||||
"0171","RaceMenu Special Edition RUS",""
|
"0171","RaceMenu Special Edition RUS",""
|
||||||
"0172","Alternate Start - Live Another Life","https://www.nexusmods.com/skyrimspecialedition/mods/272"
|
"0172","Alternate Start - Live Another Life","https://www.nexusmods.com/skyrimspecialedition/mods/272"
|
||||||
"0174","Alternate Conversation Camera","https://www.nexusmods.com/skyrimspecialedition/mods/21220"
|
"0174","Alternate Conversation Camera","https://www.nexusmods.com/skyrimspecialedition/mods/21220"
|
||||||
"0175","SkyHUD","https://www.nexusmods.com/skyrimspecialedition/mods/463"
|
"0175","SkyHUD","https://www.nexusmods.com/skyrimspecialedition/mods/463"
|
||||||
"0176","Spell Perk Item Distributor (SPID)","https://www.nexusmods.com/skyrimspecialedition/mods/36869"
|
"0176","Spell Perk Item Distributor (SPID)","https://www.nexusmods.com/skyrimspecialedition/mods/36869"
|
||||||
"0177","Vokrii 3.8.2","https://www.nexusmods.com/skyrimspecialedition/mods/26176"
|
"0177","Vokrii 3.8.2","https://www.nexusmods.com/skyrimspecialedition/mods/26176"
|
||||||
"0178","Vokrii - Scaling Rebalance","https://www.nexusmods.com/skyrimspecialedition/mods/55091"
|
"0178","Vokrii - Scaling Rebalance","https://www.nexusmods.com/skyrimspecialedition/mods/55091"
|
||||||
"0179","NORDIC UI - Interface Overhaul","https://www.nexusmods.com/skyrimspecialedition/mods/49881"
|
"0179","NORDIC UI - Interface Overhaul","https://www.nexusmods.com/skyrimspecialedition/mods/49881"
|
||||||
"0180","iNeed - Food, Water and Sleep - Continued","https://www.nexusmods.com/skyrimspecialedition/mods/19390"
|
"0180","iNeed - Food, Water and Sleep - Continued","https://www.nexusmods.com/skyrimspecialedition/mods/19390"
|
||||||
"0181","Frostfall 3.4.1 SE Release","https://www.nexusmods.com/skyrimspecialedition/mods/671"
|
"0181","Frostfall 3.4.1 SE Release","https://www.nexusmods.com/skyrimspecialedition/mods/671"
|
||||||
"0182","Campfire 1.12.1SEVR Release","https://www.nexusmods.com/skyrimspecialedition/mods/667"
|
"0182","Campfire 1.12.1SEVR Release","https://www.nexusmods.com/skyrimspecialedition/mods/667"
|
||||||
"0183","SkyrimForBattleV",""
|
"0183","SkyrimForBattleV",""
|
||||||
"0184","PC Head Tracking - MCM v4.8 SE","https://www.nexusmods.com/skyrimspecialedition/mods/11993"
|
"0184","PC Head Tracking - MCM v4.8 SE","https://www.nexusmods.com/skyrimspecialedition/mods/11993"
|
||||||
"0186","SummonShadowMERCHANT","https://www.nexusmods.com/skyrimspecialedition/mods/2177"
|
"0186","SummonShadowMERCHANT","https://www.nexusmods.com/skyrimspecialedition/mods/2177"
|
||||||
"0188","VioLens - A Killmove Mod SE","https://www.nexusmods.com/skyrimspecialedition/mods/668"
|
"0188","VioLens - A Killmove Mod SE","https://www.nexusmods.com/skyrimspecialedition/mods/668"
|
||||||
"0189","True Directional Movement","https://www.nexusmods.com/skyrimspecialedition/mods/51614"
|
"0189","True Directional Movement","https://www.nexusmods.com/skyrimspecialedition/mods/51614"
|
||||||
"0190","True Directional Movement RU","https://www.nexusmods.com/skyrimspecialedition/mods/53188"
|
"0190","True Directional Movement RU","https://www.nexusmods.com/skyrimspecialedition/mods/53188"
|
||||||
"0191","SkySA",""
|
"0191","SkySA",""
|
||||||
"0192","Grip Switch SkySA 1.2.1","https://www.nexusmods.com/skyrim/mods/54056"
|
"0192","Grip Switch SkySA 1.2.1","https://www.nexusmods.com/skyrim/mods/54056"
|
||||||
"0194","TK Dodge SE","https://www.nexusmods.com/skyrimspecialedition/mods/15309"
|
"0194","TK Dodge SE","https://www.nexusmods.com/skyrimspecialedition/mods/15309"
|
||||||
"0195","JH Combat Animation Pack","https://www.nexusmods.com/skyrimspecialedition/mods/48500"
|
"0195","JH Combat Animation Pack","https://www.nexusmods.com/skyrimspecialedition/mods/48500"
|
||||||
"0197","Elder Souls - Sword 2.0 SE","https://www.nexusmods.com/skyrimspecialedition/mods/47191"
|
"0197","Elder Souls - Sword 2.0 SE","https://www.nexusmods.com/skyrimspecialedition/mods/47191"
|
||||||
"0198","Part 1) SEKIRO HUD by Inpa Skyrim","https://www.nexusmods.com/skyrimspecialedition/mods/41428"
|
"0198","Part 1) SEKIRO HUD by Inpa Skyrim","https://www.nexusmods.com/skyrimspecialedition/mods/41428"
|
||||||
"0199","Part 2) SEKIRO COMBAT","https://www.nexusmods.com/skyrimspecialedition/mods/41428"
|
"0199","Part 2) SEKIRO COMBAT","https://www.nexusmods.com/skyrimspecialedition/mods/41428"
|
||||||
"0200","Stances - Add-On","https://www.nexusmods.com/skyrimspecialedition/mods/41251"
|
"0200","Stances - Add-On","https://www.nexusmods.com/skyrimspecialedition/mods/41251"
|
||||||
"0201","Stances - Dynamic Animation Sets","https://www.nexusmods.com/skyrimspecialedition/mods/40484"
|
"0201","Stances - Dynamic Animation Sets","https://www.nexusmods.com/skyrimspecialedition/mods/40484"
|
||||||
"0202","AMR Stance Framework","https://www.nexusmods.com/skyrimspecialedition/mods/54674"
|
"0202","AMR Stance Framework","https://www.nexusmods.com/skyrimspecialedition/mods/54674"
|
||||||
"0203","Enhanced Enemy AI","https://www.nexusmods.com/skyrimspecialedition/mods/32063"
|
"0203","Enhanced Enemy AI","https://www.nexusmods.com/skyrimspecialedition/mods/32063"
|
||||||
"0204","Precision","https://www.nexusmods.com/skyrimspecialedition/mods/72347"
|
"0204","Precision","https://www.nexusmods.com/skyrimspecialedition/mods/72347"
|
||||||
"0205","Keytrace","https://www.nexusmods.com/skyrimspecialedition/mods/63362"
|
"0205","Keytrace","https://www.nexusmods.com/skyrimspecialedition/mods/63362"
|
||||||
"0206","Elden Power Attack","https://www.nexusmods.com/skyrimspecialedition/mods/66711"
|
"0206","Elden Power Attack","https://www.nexusmods.com/skyrimspecialedition/mods/66711"
|
||||||
"0207","Dark Souls Movement And Stamina Regen","https://www.nexusmods.com/skyrimspecialedition/mods/33135"
|
"0207","Dark Souls Movement And Stamina Regen","https://www.nexusmods.com/skyrimspecialedition/mods/33135"
|
||||||
"0208","Animated Potions","https://www.nexusmods.com/skyrimspecialedition/mods/73819"
|
"0208","Animated Potions","https://www.nexusmods.com/skyrimspecialedition/mods/73819"
|
||||||
"0209","3PCO - 3rd Person Camera Overhaul","https://www.nexusmods.com/skyrimspecialedition/mods/89516"
|
"0209","3PCO - 3rd Person Camera Overhaul","https://www.nexusmods.com/skyrimspecialedition/mods/89516"
|
||||||
"0210","Nock to Tip",""
|
"0210","Nock to Tip",""
|
||||||
"0211","Deadly Mutilation","https://www.nexusmods.com/skyrimspecialedition/mods/34917"
|
"0211","Deadly Mutilation","https://www.nexusmods.com/skyrimspecialedition/mods/34917"
|
||||||
"0213","Heroes Of Sovngarde","https://www.nexusmods.com/skyrimspecialedition/mods/3053"
|
"0213","Heroes Of Sovngarde","https://www.nexusmods.com/skyrimspecialedition/mods/3053"
|
||||||
"0214","Populated Dungeons Caves Ruins Legendary Edition","https://www.nexusmods.com/skyrimspecialedition/mods/2820"
|
"0214","Populated Dungeons Caves Ruins Legendary Edition","https://www.nexusmods.com/skyrimspecialedition/mods/2820"
|
||||||
"0216","[immyneedscake] Skydraenei by Eriayai CBBE SSE",""
|
"0216","[immyneedscake] Skydraenei by Eriayai CBBE SSE",""
|
||||||
"0217","3BA SkyDraenei","https://www.nexusmods.com/skyrimspecialedition/mods/57617"
|
"0217","3BA SkyDraenei","https://www.nexusmods.com/skyrimspecialedition/mods/57617"
|
||||||
"0218","True Demon Race","https://www.nexusmods.com/skyrimspecialedition/mods/58141"
|
"0218","True Demon Race","https://www.nexusmods.com/skyrimspecialedition/mods/58141"
|
||||||
"0222","Acalypha - Fully Voiced Follower",""
|
"0222","Acalypha - Fully Voiced Follower",""
|
||||||
"0223","INIGO_V2.4C SE","https://www.nexusmods.com/skyrimspecialedition/mods/1461"
|
"0223","INIGO_V2.4C SE","https://www.nexusmods.com/skyrimspecialedition/mods/1461"
|
||||||
"0224","Song Of The Green 1.4","https://www.nexusmods.com/skyrimspecialedition/mods/11278"
|
"0224","Song Of The Green 1.4","https://www.nexusmods.com/skyrimspecialedition/mods/11278"
|
||||||
"0225","Refined Auri SSE","https://www.nexusmods.com/skyrimspecialedition/mods/36444"
|
"0225","Refined Auri SSE","https://www.nexusmods.com/skyrimspecialedition/mods/36444"
|
||||||
"0226","SkyMirai Standalone Follower 2_11 SSE","https://www.nexusmods.com/skyrimspecialedition/mods/10908"
|
"0226","SkyMirai Standalone Follower 2_11 SSE","https://www.nexusmods.com/skyrimspecialedition/mods/10908"
|
||||||
"0227","Nicola Avenicci SE 0.3","https://www.nexusmods.com/skyrimspecialedition/mods/6862"
|
"0227","Nicola Avenicci SE 0.3","https://www.nexusmods.com/skyrimspecialedition/mods/6862"
|
||||||
"0229","WIC (Whinter is Coming) Cloaks SSE 2_4","https://www.nexusmods.com/skyrimspecialedition/mods/4933"
|
"0229","WIC (Whinter is Coming) Cloaks SSE 2_4","https://www.nexusmods.com/skyrimspecialedition/mods/4933"
|
||||||
"0230","Winter Is Coming - Cloaks RU SE","https://www.nexusmods.com/skyrimspecialedition/mods/62756"
|
"0230","Winter Is Coming - Cloaks RU SE","https://www.nexusmods.com/skyrimspecialedition/mods/62756"
|
||||||
"0231","True Weapons","https://www.nexusmods.com/skyrimspecialedition/mods/38596"
|
"0231","True Weapons","https://www.nexusmods.com/skyrimspecialedition/mods/38596"
|
||||||
"0232","Eclipse_Mage_Outfit_HDT",""
|
"0232","Eclipse_Mage_Outfit_HDT",""
|
||||||
"0233","[SE] BDOR Navillera",""
|
"0233","[SE] BDOR Navillera",""
|
||||||
"0235","Dominica Preset RM SSE","https://www.nexusmods.com/skyrimspecialedition/mods/70448"
|
"0235","Dominica Preset RM SSE","https://www.nexusmods.com/skyrimspecialedition/mods/70448"
|
||||||
"0236","Irena High Poly Head preset by ElleShet SE",""
|
"0236","Irena High Poly Head preset by ElleShet SE",""
|
||||||
"0237","Nirani Indoril Body preset SE by ElleShet",""
|
"0237","Nirani Indoril Body preset SE by ElleShet",""
|
||||||
"0239","MainMenuRandomizerSE","https://www.nexusmods.com/skyrimspecialedition/mods/33574"
|
"0239","MainMenuRandomizerSE","https://www.nexusmods.com/skyrimspecialedition/mods/33574"
|
||||||
"0240","Main Menu Redone - 1080p","https://www.nexusmods.com/skyrimspecialedition/mods/59993"
|
"0240","Main Menu Redone - 1080p","https://www.nexusmods.com/skyrimspecialedition/mods/59993"
|
||||||
"0241","Main Menu Design Replacer","https://www.nexusmods.com/skyrimspecialedition/mods/30810"
|
"0241","Main Menu Design Replacer","https://www.nexusmods.com/skyrimspecialedition/mods/30810"
|
||||||
"0242","Simple Load Screens","https://www.nexusmods.com/skyrimspecialedition/mods/49529"
|
"0242","Simple Load Screens","https://www.nexusmods.com/skyrimspecialedition/mods/49529"
|
||||||
"0243","NORDIC UI - Alternate loading screen and start menu","https://www.nexusmods.com/skyrimspecialedition/mods/54153"
|
"0243","NORDIC UI - Alternate loading screen and start menu","https://www.nexusmods.com/skyrimspecialedition/mods/54153"
|
||||||
"0245","Fantasy Soundtrack Project SE","https://www.nexusmods.com/skyrimspecialedition/mods/5268"
|
"0245","Fantasy Soundtrack Project SE","https://www.nexusmods.com/skyrimspecialedition/mods/5268"
|
||||||
"0246","Dreyma Mod [new Music of Skyrim]","https://www.nexusmods.com/skyrimspecialedition/mods/23386"
|
"0246","Dreyma Mod [new Music of Skyrim]","https://www.nexusmods.com/skyrimspecialedition/mods/23386"
|
||||||
"0248","NAT.ENB - ESP WEATHER PLUGIN","https://www.nexusmods.com/skyrimspecialedition/mods/27141"
|
"0248","NAT.ENB - ESP WEATHER PLUGIN","https://www.nexusmods.com/skyrimspecialedition/mods/27141"
|
||||||
"0250","NordWarUA's Vanilla Armor Replacers SSE -Patches-","https://www.nexusmods.com/skyrimspecialedition/mods/31679"
|
"0250","NordWarUA's Vanilla Armor Replacers SSE -Patches-","https://www.nexusmods.com/skyrimspecialedition/mods/31679"
|
||||||
"0251","Northern Roads - Patches Compendium","https://www.nexusmods.com/skyrimspecialedition/mods/77893"
|
"0251","Northern Roads - Patches Compendium","https://www.nexusmods.com/skyrimspecialedition/mods/77893"
|
||||||
"0252","Holds The City Overhaul -RUS-",""
|
"0252","Holds The City Overhaul -RUS-",""
|
||||||
"0253","Majestic Mountains [RUS]",""
|
"0253","Majestic Mountains [RUS]",""
|
||||||
"0254","Face Discoloration Fix SE","https://www.nexusmods.com/skyrimspecialedition/mods/42441"
|
"0254","Face Discoloration Fix SE","https://www.nexusmods.com/skyrimspecialedition/mods/42441"
|
||||||
"0255","Simple Load Screens - Russian translation","https://www.nexusmods.com/skyrimspecialedition/mods/50912"
|
"0255","Simple Load Screens - Russian translation","https://www.nexusmods.com/skyrimspecialedition/mods/50912"
|
||||||
"0256","Precision - Accurate Melee Collisions - RU","https://www.nexusmods.com/skyrimspecialedition/mods/72584"
|
"0256","Precision - Accurate Melee Collisions - RU","https://www.nexusmods.com/skyrimspecialedition/mods/72584"
|
||||||
"0257","Pandorable's NPCs_SSE_v1.4_RU","https://www.nexusmods.com/skyrimspecialedition/mods/27582"
|
"0257","Pandorable's NPCs_SSE_v1.4_RU","https://www.nexusmods.com/skyrimspecialedition/mods/27582"
|
||||||
"0258","Pandorables NPCs Males [RUS]",""
|
"0258","Pandorables NPCs Males [RUS]",""
|
||||||
"0259","Pandorables NPCs - Males 2 [RUS]",""
|
"0259","Pandorables NPCs - Males 2 [RUS]",""
|
||||||
"0260","PAN_AIO_small - AI Overhaul SSE patch-1-4-Rus",""
|
"0260","PAN_AIO_small - AI Overhaul SSE patch-1-4-Rus",""
|
||||||
"0261","Irena High Poly Head preset by ElleShet SE 3BBB Body",""
|
"0261","Irena High Poly Head preset by ElleShet SE 3BBB Body",""
|
||||||
"0262","Nirani Indoril High Poly Head preset SE by ElleShet",""
|
"0262","Nirani Indoril High Poly Head preset SE by ElleShet",""
|
||||||
"0263","Deadly Mutilation V1_3_3 CBBE meshes Pack","https://www.nexusmods.com/skyrimspecialedition/mods/34917"
|
"0263","Deadly Mutilation V1_3_3 CBBE meshes Pack","https://www.nexusmods.com/skyrimspecialedition/mods/34917"
|
||||||
"0264","Bijin skin compability patch Alternative normal map","https://www.nexusmods.com/skyrimspecialedition/mods/27405"
|
"0264","Bijin skin compability patch Alternative normal map","https://www.nexusmods.com/skyrimspecialedition/mods/27405"
|
||||||
"0265","SEKIRO COMBAT SE - RU","https://www.nexusmods.com/skyrimspecialedition/mods/57678"
|
"0265","SEKIRO COMBAT SE - RU","https://www.nexusmods.com/skyrimspecialedition/mods/57678"
|
||||||
"0266","Nordic UI -RUS-",""
|
"0266","Nordic UI -RUS-",""
|
||||||
"0267","Campfire 1.12.1 and Frostfall 3.4.1SE","https://www.nexusmods.com/skyrimspecialedition/mods/17925"
|
"0267","Campfire 1.12.1 and Frostfall 3.4.1SE","https://www.nexusmods.com/skyrimspecialedition/mods/17925"
|
||||||
"0268","SkyrimForBattleV-Patch",""
|
"0268","SkyrimForBattleV-Patch",""
|
||||||
"0269","IFPV Detector Plugin","https://www.nexusmods.com/skyrimspecialedition/mods/22306"
|
"0269","IFPV Detector Plugin","https://www.nexusmods.com/skyrimspecialedition/mods/22306"
|
||||||
"0270","Jaxonz MCM Kicker SE_rus_",""
|
"0270","Jaxonz MCM Kicker SE_rus_",""
|
||||||
"0271","SkyUI -RUS-","https://www.nexusmods.com/skyrimspecialedition/mods/21088"
|
"0271","SkyUI -RUS-","https://www.nexusmods.com/skyrimspecialedition/mods/21088"
|
||||||
"0272","INIGO -RUS-",""
|
"0272","INIGO -RUS-",""
|
||||||
"0273","Song of the Green _RUS_",""
|
"0273","Song of the Green _RUS_",""
|
||||||
"0274","Inigo Banter patch",""
|
"0274","Inigo Banter patch",""
|
||||||
"0275","Refined Auri SSE -PATCH-","https://www.nexusmods.com/skyrimspecialedition/mods/36444"
|
"0275","Refined Auri SSE -PATCH-","https://www.nexusmods.com/skyrimspecialedition/mods/36444"
|
||||||
"0276","Refined Auri SSE -RUS-",""
|
"0276","Refined Auri SSE -RUS-",""
|
||||||
"0277","Vokrii(26176)-2-0-1-RU","https://www.nexusmods.com/skyrimspecialedition/mods/28035"
|
"0277","Vokrii(26176)-2-0-1-RU","https://www.nexusmods.com/skyrimspecialedition/mods/28035"
|
||||||
"0278","Саурон",""
|
"0278","Саурон",""
|
||||||
"0279","Sweety Preset",""
|
"0279","Sweety Preset",""
|
||||||
"0280","Console font fix - RU","https://www.nexusmods.com/skyrimspecialedition/mods/55792"
|
"0280","Console font fix - RU","https://www.nexusmods.com/skyrimspecialedition/mods/55792"
|
||||||
"0281","BodySlide output",""
|
"0281","BodySlide output",""
|
||||||
"0282","DBVO NordicUI Patch","https://www.nexusmods.com/skyrimspecialedition/mods/84329"
|
"0282","DBVO NordicUI Patch","https://www.nexusmods.com/skyrimspecialedition/mods/84329"
|
||||||
"0284","Dragonborn Voice Over - Stereo Plugin Replacer","https://www.nexusmods.com/skyrimspecialedition/mods/90417"
|
"0284","Dragonborn Voice Over - Stereo Plugin Replacer","https://www.nexusmods.com/skyrimspecialedition/mods/90417"
|
||||||
"0285","FNIS Overwrite",""
|
"0285","FNIS Overwrite",""
|
||||||
"0286","Nemesis overwrite",""
|
"0286","Nemesis overwrite",""
|
||||||
"0288","Pipe Smoking SE","https://www.nexusmods.com/skyrimspecialedition/mods/13061"
|
"0288","Pipe Smoking SE","https://www.nexusmods.com/skyrimspecialedition/mods/13061"
|
||||||
"0289","Pipe Smoking SE RUS",""
|
"0289","Pipe Smoking SE RUS",""
|
||||||
"0291","PapyrusUtil SE - Scripting Utility Functions","https://www.nexusmods.com/skyrimspecialedition/mods/13048"
|
"0291","PapyrusUtil SE - Scripting Utility Functions","https://www.nexusmods.com/skyrimspecialedition/mods/13048"
|
||||||
"0292","powerofthree's Papyrus Extender","https://www.nexusmods.com/skyrimspecialedition/mods/22854"
|
"0292","powerofthree's Papyrus Extender","https://www.nexusmods.com/skyrimspecialedition/mods/22854"
|
||||||
|
|
@ -1,85 +1,85 @@
|
|||||||
<center>
|
<center>
|
||||||
<h1>Блог</h1>
|
<h1>Блог</h1>
|
||||||
</center>
|
</center>
|
||||||
<div id="blog-posts">
|
<div id="blog-posts">
|
||||||
<center><p>Загрузка новостей...</p></center>
|
<center><p>Загрузка новостей...</p></center>
|
||||||
<!-- <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#imageModal">...</button> -->
|
<!-- <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#imageModal">...</button> -->
|
||||||
|
|
||||||
<div class="blog-post-card" id="post-0" style="margin-bottom: 1.5%;">
|
<div class="blog-post-card" id="post-0" style="margin-bottom: 1.5%;">
|
||||||
<center>
|
<center>
|
||||||
<h3 style="padding-top: 1.5%;">Пример заголовка</h3>
|
<h3 style="padding-top: 1.5%;">Пример заголовка</h3>
|
||||||
<small style="color: rgba(255,255,255,0.5); padding-bottom: 0.5%;">
|
<small style="color: rgba(255,255,255,0.5); padding-bottom: 0.5%;">
|
||||||
<div>Опубликовано: 22.09.2003 в 7:00</div>
|
<div>Опубликовано: 22.09.2003 в 7:00</div>
|
||||||
<div id="posted-by-0" hidden>Через telegram</div>
|
<div id="posted-by-0" hidden>Через telegram</div>
|
||||||
</small>
|
</small>
|
||||||
</center>
|
</center>
|
||||||
<p style="padding: 2%;">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
|
<p style="padding: 2%;">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
|
||||||
<!-- Изображения -->
|
<!-- Изображения -->
|
||||||
<center><div id="carouselExampleIndicators" class="carousel slide blog-post-image-carousel" data-bs-ride="carousel" id="post-images-0" hidden>
|
<center><div id="carouselExampleIndicators" class="carousel slide blog-post-image-carousel" data-bs-ride="carousel" id="post-images-0" hidden>
|
||||||
<div class="carousel-indicators">
|
<div class="carousel-indicators">
|
||||||
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
|
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
|
||||||
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1" aria-label="Slide 2"></button>
|
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1" aria-label="Slide 2"></button>
|
||||||
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2" aria-label="Slide 3"></button>
|
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2" aria-label="Slide 3"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="carousel-inner">
|
<div class="carousel-inner">
|
||||||
<div class="carousel-item blog-post-image active" id="blog-img-0:0">
|
<div class="carousel-item blog-post-image active" id="blog-img-0:0">
|
||||||
<img src="https://warhammerart.com/wp-content/uploads/2021/08/Adeptus-Mechanicus.jpg" class="d-block w-100" alt="...">
|
<img src="https://warhammerart.com/wp-content/uploads/2021/08/Adeptus-Mechanicus.jpg" class="d-block w-100" alt="...">
|
||||||
</div>
|
</div>
|
||||||
<div class="carousel-item blog-post-image" id="blog-img-0:1">
|
<div class="carousel-item blog-post-image" id="blog-img-0:1">
|
||||||
<img src="https://warzonestudio.com/image/catalog/blog/Admech-review/Admech-codex-review-02.jpg" class="d-block w-100" alt="...">
|
<img src="https://warzonestudio.com/image/catalog/blog/Admech-review/Admech-codex-review-02.jpg" class="d-block w-100" alt="...">
|
||||||
</div>
|
</div>
|
||||||
<div class="carousel-item blog-post-image" id="blog-img-0:2">
|
<div class="carousel-item blog-post-image" id="blog-img-0:2">
|
||||||
<img src="https://i.pinimg.com/originals/7a/5c/0a/7a5c0a3a91db6011a49781c4016124a2.jpg" class="d-block w-100" alt="...">
|
<img src="https://i.pinimg.com/originals/7a/5c/0a/7a5c0a3a91db6011a49781c4016124a2.jpg" class="d-block w-100" alt="...">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="prev">
|
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="prev">
|
||||||
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
||||||
<span class="visually-hidden">Предыдущий</span>
|
<span class="visually-hidden">Предыдущий</span>
|
||||||
</button>
|
</button>
|
||||||
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="next">
|
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="next">
|
||||||
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
||||||
<span class="visually-hidden">Следующий</span>
|
<span class="visually-hidden">Следующий</span>
|
||||||
</button>
|
</button>
|
||||||
</div></center>
|
</div></center>
|
||||||
<!-- Файлы -->
|
<!-- Файлы -->
|
||||||
<div class="accordion text-dark bg-dark" id="accordionExample" style="margin-left: 2.5%; margin-right: 2.5%; margin-top: 2.5%;" hidden>
|
<div class="accordion text-dark bg-dark" id="accordionExample" style="margin-left: 2.5%; margin-right: 2.5%; margin-top: 2.5%;" hidden>
|
||||||
<div class="accordion-item">
|
<div class="accordion-item">
|
||||||
<h5 class="accordion-header" id="headingOne">
|
<h5 class="accordion-header" id="headingOne">
|
||||||
<button class="accordion-button bg-dark text-light" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
|
<button class="accordion-button bg-dark text-light" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
|
||||||
Файлы
|
Файлы
|
||||||
</button>
|
</button>
|
||||||
</h5>
|
</h5>
|
||||||
<div id="collapseOne" class="accordion-collapse bg-dark text-light collapse show" aria-labelledby="headingOne" data-bs-parent="#accordionExample">
|
<div id="collapseOne" class="accordion-collapse bg-dark text-light collapse show" aria-labelledby="headingOne" data-bs-parent="#accordionExample">
|
||||||
<div class="accordion-body">
|
<div class="accordion-body">
|
||||||
<!-- <strong>Это тело аккордеона первого элемента.</strong> По умолчанию оно скрыто, пока плагин сворачивания не добавит соответствующие классы, которые мы используем для стилизации каждого элемента. Эти классы управляют общим внешним видом, а также отображением и скрытием с помощью переходов CSS. Вы можете изменить все это с помощью собственного CSS или переопределить наши переменные по умолчанию. Также стоит отметить, что практически любой HTML может быть помещен в <code>.accordion-body</code>, хотя переход ограничивает переполнение. -->
|
<!-- <strong>Это тело аккордеона первого элемента.</strong> По умолчанию оно скрыто, пока плагин сворачивания не добавит соответствующие классы, которые мы используем для стилизации каждого элемента. Эти классы управляют общим внешним видом, а также отображением и скрытием с помощью переходов CSS. Вы можете изменить все это с помощью собственного CSS или переопределить наши переменные по умолчанию. Также стоит отметить, что практически любой HTML может быть помещен в <code>.accordion-body</code>, хотя переход ограничивает переполнение. -->
|
||||||
<p><a href="https://github.com/student-manager/student-manager/releases/download/1.1.1/windows.x64.Student.manager.portabel.zip">windows.x64.Student.manager.portabel.zip (111 Mb)</a></p>
|
<p><a href="https://github.com/student-manager/student-manager/releases/download/1.1.1/windows.x64.Student.manager.portabel.zip">windows.x64.Student.manager.portabel.zip (111 Mb)</a></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Рекации -->
|
<!-- Рекации -->
|
||||||
<button type="button" class="btn btn-outline-success" style="margin-left: 2.5%; margin-top: 1.5%; margin-bottom: 1.5%;" onclick="alert('Функция в разработке!');">Нравится (0)</button>
|
<button type="button" class="btn btn-outline-success" style="margin-left: 2.5%; margin-top: 1.5%; margin-bottom: 1.5%;" onclick="alert('Функция в разработке!');">Нравится (0)</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" style="margin-left: 0.5%; margin-top: 1.5%; margin-bottom: 1.5%;" onclick="alert('Функция в разработке!');">Комментарии (0)</button>
|
<button type="button" class="btn btn-outline-secondary" style="margin-left: 0.5%; margin-top: 1.5%; margin-bottom: 1.5%;" onclick="alert('Функция в разработке!');">Комментарии (0)</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Модальное окно просмотра изображений -->
|
<!-- Модальное окно просмотра изображений -->
|
||||||
<div class="modal fade text-light" id="imageModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
|
<div class="modal fade text-light" id="imageModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
|
||||||
<div class="modal-dialog modal-lg modal-img-view modal-dialog-centered modal-dialog-scrollable">
|
<div class="modal-dialog modal-lg modal-img-view modal-dialog-centered modal-dialog-scrollable">
|
||||||
<!-- <div class="modal-dialog modal-img-view"> -->
|
<!-- <div class="modal-dialog modal-img-view"> -->
|
||||||
<div class="modal-content text-light bg-dark">
|
<div class="modal-content text-light bg-dark">
|
||||||
<!-- <img src="https://warhammerart.com/wp-content/uploads/2021/08/Adeptus-Mechanicus.jpg"> -->
|
<!-- <img src="https://warhammerart.com/wp-content/uploads/2021/08/Adeptus-Mechanicus.jpg"> -->
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h1 class="modal-title fs-5" id="exampleModalLabel">Просмотр изображения</h1>
|
<h1 class="modal-title fs-5" id="exampleModalLabel">Просмотр изображения</h1>
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Закрыть"></button>
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Закрыть"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<center><img id="image-viewer-url" src="https://warhammerart.com/wp-content/uploads/2021/08/Adeptus-Mechanicus.jpg" style="width: 100%;"></center>
|
<center><img id="image-viewer-url" src="https://warhammerart.com/wp-content/uploads/2021/08/Adeptus-Mechanicus.jpg" style="width: 100%;"></center>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Закрыть</button>
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Закрыть</button>
|
||||||
<!-- <button type="button" class="btn btn-primary">Сохранить изменения</button> -->
|
<!-- <button type="button" class="btn btn-primary">Сохранить изменения</button> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
@ -1,19 +1,19 @@
|
|||||||
<center>
|
<center>
|
||||||
<h1 style="margin-top: 5px;">Мои контакты</h1>
|
<h1 style="margin-top: 5px;">Мои контакты</h1>
|
||||||
<h2><img src="/assets/avatar.png" class="rounded" alt="...", style="width:25vh"></h2>
|
<h2><img src="/assets/avatar.png" class="rounded" alt="...", style="width:25vh"></h2>
|
||||||
<h2>Обратная связь</h2>
|
<h2>Обратная связь</h2>
|
||||||
<div class="btn-group" role="group" aria-label="Basic example">
|
<div class="btn-group" role="group" aria-label="Basic example">
|
||||||
<button type="button" class="btn btn-dark btn-outline-light" onclick='fl.goToLocation("https://vk.com/decimus_crew")'>Вконтакте</button>
|
<button type="button" class="btn btn-dark btn-outline-light" onclick='fl.goToLocation("https://vk.com/decimus_crew")'>Вконтакте</button>
|
||||||
<button type="button" class="btn btn-dark btn-outline-light" onclick='fl.goToLocation("https://t.me/Nikiroy78")'>Telegram</button>
|
<button type="button" class="btn btn-dark btn-outline-light" onclick='fl.goToLocation("https://t.me/Nikiroy78")'>Telegram</button>
|
||||||
<button type="button" class="btn btn-dark btn-outline-light" onclick='fl.goToLocation("https://www.facebook.com/profile.php?id=100093948516820")'>Facebook</button>
|
<button type="button" class="btn btn-dark btn-outline-light" onclick='fl.goToLocation("https://www.facebook.com/profile.php?id=100093948516820")'>Facebook</button>
|
||||||
</div><p></p>
|
</div><p></p>
|
||||||
<div class="btn-group" role="group" aria-label="Basic example">
|
<div class="btn-group" role="group" aria-label="Basic example">
|
||||||
<button type="button" class="btn btn-dark btn-outline-light" onclick='fl.goToLocation("https://github.com/Nikiroy78")'>GitHub</button>
|
<button type="button" class="btn btn-dark btn-outline-light" onclick='fl.goToLocation("https://github.com/Nikiroy78")'>GitHub</button>
|
||||||
<button type="button" class="btn btn-dark btn-outline-light" onclick='fl.goToLocation("https://gamer-mods.ru/index/8-1000260")'>gamer-mods.ru</button>
|
<button type="button" class="btn btn-dark btn-outline-light" onclick='fl.goToLocation("https://gamer-mods.ru/index/8-1000260")'>gamer-mods.ru</button>
|
||||||
</div>
|
</div>
|
||||||
<h2>Паблики, блоги, иные ресурсы</h2>
|
<h2>Паблики, блоги, иные ресурсы</h2>
|
||||||
<div class="btn-group" role="group" aria-label="Basic example">
|
<div class="btn-group" role="group" aria-label="Basic example">
|
||||||
<button type="button" class="btn btn-dark btn-outline-light" onclick='fl.goToLocation("https://vk.com/imperium_human")'>Вконтакте</button>
|
<button type="button" class="btn btn-dark btn-outline-light" onclick='fl.goToLocation("https://vk.com/imperium_human")'>Вконтакте</button>
|
||||||
<!-- <button type="button" class="btn btn-dark btn-outline-light" onclick='fl.goToLocation("https://t.me/FullGreaM")'>Телеграм</button> -->
|
<!-- <button type="button" class="btn btn-dark btn-outline-light" onclick='fl.goToLocation("https://t.me/FullGreaM")'>Телеграм</button> -->
|
||||||
</div>
|
</div>
|
||||||
</center>
|
</center>
|
@ -1,22 +1,22 @@
|
|||||||
<center><h1>Документация технических стандартов IWW</h1></center>
|
<center><h1>Документация технических стандартов IWW</h1></center>
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="col">№</th>
|
<th scope="col">№</th>
|
||||||
<th scope="col">Материал</th>
|
<th scope="col">Материал</th>
|
||||||
<th scope="col">Дата опубликования</th>
|
<th scope="col">Дата опубликования</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">1</th>
|
<th scope="row">1</th>
|
||||||
<td>-</td>
|
<td>-</td>
|
||||||
<td>22/11/2011</td>
|
<td>22/11/2011</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">2</th>
|
<th scope="row">2</th>
|
||||||
<td>-</td>
|
<td>-</td>
|
||||||
<td>22/11/2011</td>
|
<td>22/11/2011</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
@ -1,47 +1,47 @@
|
|||||||
<center>
|
<center>
|
||||||
<!-- <h1>Добро пожаловать</h1> -->
|
<!-- <h1>Добро пожаловать</h1> -->
|
||||||
<div id="carouselExampleDark" class="carousel carousel-dark slide">
|
<div id="carouselExampleDark" class="carousel carousel-dark slide">
|
||||||
<div class="carousel-indicators">
|
<div class="carousel-indicators">
|
||||||
<button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
|
<button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
|
||||||
<button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="1" aria-label="Slide 2"></button>
|
<button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="1" aria-label="Slide 2"></button>
|
||||||
<button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="2" aria-label="Slide 3"></button>
|
<button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="2" aria-label="Slide 3"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="carousel-inner">
|
<div class="carousel-inner">
|
||||||
<div class="carousel-item active" data-bs-interval="10000">
|
<div class="carousel-item active" data-bs-interval="10000">
|
||||||
<img id="main_img1" src="/assets/hello/1.png" class="d-block w-100" alt="...">
|
<img id="main_img1" src="/assets/hello/1.png" class="d-block w-100" alt="...">
|
||||||
<div class="carousel-caption d-none d-md-block">
|
<div class="carousel-caption d-none d-md-block">
|
||||||
<h5 style="color: white;">Добро пожаловать на мой ресурс</h5>
|
<h5 style="color: white;">Добро пожаловать на мой ресурс</h5>
|
||||||
<p style="color: white;">Это официальный ресурс FullGreaM.</p>
|
<p style="color: white;">Это официальный ресурс FullGreaM.</p>
|
||||||
<button onclick="fl.go('/contacts');" type="button" class="btn btn-outline-light">Мои контакты</button>
|
<button onclick="fl.go('/contacts');" type="button" class="btn btn-outline-light">Мои контакты</button>
|
||||||
<div class="centered-el"></div>
|
<div class="centered-el"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="carousel-item" data-bs-interval="2000">
|
<div class="carousel-item" data-bs-interval="2000">
|
||||||
<img id="main_img2" src="/assets/hello/2.png" class="d-block w-100" alt="...">
|
<img id="main_img2" src="/assets/hello/2.png" class="d-block w-100" alt="...">
|
||||||
<div class="carousel-caption d-none d-md-block">
|
<div class="carousel-caption d-none d-md-block">
|
||||||
<h5 style="color: white;">О проектах и работах</h5>
|
<h5 style="color: white;">О проектах и работах</h5>
|
||||||
<p style="color: white;">Здесь представлены мои проекты, работы с активными и актуальными ссылками на скачивание.</p>
|
<p style="color: white;">Здесь представлены мои проекты, работы с активными и актуальными ссылками на скачивание.</p>
|
||||||
<button onclick="fl.go('/projects');" type="button" class="btn btn-outline-light">Мои проекты</button>
|
<button onclick="fl.go('/projects');" type="button" class="btn btn-outline-light">Мои проекты</button>
|
||||||
<div class="centered-el"></div>
|
<div class="centered-el"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="carousel-item">
|
<div class="carousel-item">
|
||||||
<img id="main_img3" src="/assets/hello/3.png" class="d-block w-100" alt="...">
|
<img id="main_img3" src="/assets/hello/3.png" class="d-block w-100" alt="...">
|
||||||
<div class="carousel-caption d-none d-md-block">
|
<div class="carousel-caption d-none d-md-block">
|
||||||
<h5 style="color: white;">О прочей информации</h5>
|
<h5 style="color: white;">О прочей информации</h5>
|
||||||
<p style="color: white;">Также здесь представлен (или будет представлен) мой личный блог, а также, блог, касающийся моих проектов или проектов моей команды.</p>
|
<p style="color: white;">Также здесь представлен (или будет представлен) мой личный блог, а также, блог, касающийся моих проектов или проектов моей команды.</p>
|
||||||
<button onclick="fl.go('/blog');" type="button" class="btn btn-outline-light">Мой блог</button>
|
<button onclick="fl.go('/blog');" type="button" class="btn btn-outline-light">Мой блог</button>
|
||||||
<div class="centered-el"></div>
|
<div class="centered-el"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="prev">
|
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="prev">
|
||||||
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
||||||
<span class="visually-hidden">Предыдущий</span>
|
<span class="visually-hidden">Предыдущий</span>
|
||||||
</button>
|
</button>
|
||||||
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="next">
|
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="next">
|
||||||
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
||||||
<span class="visually-hidden">Следующий</span>
|
<span class="visually-hidden">Следующий</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</center>
|
</center>
|
@ -1,19 +1,19 @@
|
|||||||
<center>
|
<center>
|
||||||
<div class="centered-el"></div>
|
<div class="centered-el"></div>
|
||||||
<!-- <h1>It's all worked!</h1> -->
|
<!-- <h1>It's all worked!</h1> -->
|
||||||
<div id="alt-carousel-viewer">
|
<div id="alt-carousel-viewer">
|
||||||
<h5 style="color: white;">Добро пожаловать на мой ресурс</h5><p style="color: white;">Это официальный ресурс FullGreaM.</p><button onclick="fl.go('/contacts');" type="button" class="btn btn-outline-light">Мои контакты</button>
|
<h5 style="color: white;">Добро пожаловать на мой ресурс</h5><p style="color: white;">Это официальный ресурс FullGreaM.</p><button onclick="fl.go('/contacts');" type="button" class="btn btn-outline-light">Мои контакты</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="main-window-alt" class="carousel main-window-alt">
|
<div id="main-window-alt" class="carousel main-window-alt">
|
||||||
<!-- <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="prev" id="alt-main-prev" onclick="setAltMenuPage(altMenuSelectedPage - 1)"> -->
|
<!-- <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="prev" id="alt-main-prev" onclick="setAltMenuPage(altMenuSelectedPage - 1)"> -->
|
||||||
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="prev" id="alt-main-prev">
|
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="prev" id="alt-main-prev">
|
||||||
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
||||||
<span class="visually-hidden">Предыдущий</span>
|
<span class="visually-hidden">Предыдущий</span>
|
||||||
</button>
|
</button>
|
||||||
<!-- <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="next" id="alt-main-next" onclick="setAltMenuPage(altMenuSelectedPage + 1)"> -->
|
<!-- <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="next" id="alt-main-next" onclick="setAltMenuPage(altMenuSelectedPage + 1)"> -->
|
||||||
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="next" id="alt-main-next">
|
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="next" id="alt-main-next">
|
||||||
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
||||||
<span class="visually-hidden">Предыдущий</span>
|
<span class="visually-hidden">Предыдущий</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</center>
|
</center>
|
@ -1,7 +1,7 @@
|
|||||||
<center>
|
<center>
|
||||||
<img src="/assets/no_mobile.png" class="sys-win-img"></img>
|
<img src="/assets/no_mobile.png" class="sys-win-img"></img>
|
||||||
<h1>Внимание!</h1>
|
<h1>Внимание!</h1>
|
||||||
<h2>Не адаптировано под мобильные устройства</h2>
|
<h2>Не адаптировано под мобильные устройства</h2>
|
||||||
<p>Мой ресурс пока что не адаптирован под мобильные устройства, тем не менее, вы всё ещё можете пользоваться сайтом</p>
|
<p>Мой ресурс пока что не адаптирован под мобильные устройства, тем не менее, вы всё ещё можете пользоваться сайтом</p>
|
||||||
<button type="button" class="btn btn-dark btn-outline-light" id="mobile-warning-go">Продолжить</button>
|
<button type="button" class="btn btn-dark btn-outline-light" id="mobile-warning-go">Продолжить</button>
|
||||||
</center>
|
</center>
|
@ -1,28 +1,28 @@
|
|||||||
<center>
|
<center>
|
||||||
<h1 style="margin-top: 5px; margin-bottom: 15px;">Менеджер паролей онлайн</h1>
|
<h1 style="margin-top: 5px; margin-bottom: 15px;">Менеджер паролей онлайн</h1>
|
||||||
</center>
|
</center>
|
||||||
<div class="password-manger-form bg-light text-dark">
|
<div class="password-manger-form bg-light text-dark">
|
||||||
<form>
|
<form>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<center><label class="form-label">Ключевое слово</label></center>
|
<center><label class="form-label">Ключевое слово</label></center>
|
||||||
<input type="password" class="form-control" id="keyword" aria-describedby="kwHelp">
|
<input type="password" class="form-control" id="keyword" aria-describedby="kwHelp">
|
||||||
<div id="kwHelp" class="form-text">Является "корневым паролем" для генерации паролей</div>
|
<div id="kwHelp" class="form-text">Является "корневым паролем" для генерации паролей</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<center><label class="form-label">Логин в системе</label></center>
|
<center><label class="form-label">Логин в системе</label></center>
|
||||||
<input type="text" class="form-control" id="login" aria-describedby="loginHelp">
|
<input type="text" class="form-control" id="login" aria-describedby="loginHelp">
|
||||||
<div id="loginHelp" class="form-text">Желательно использовать следующий приоритет: логин->почта->номер телефона; это поможет вам знать корректный пароль от системы</div>
|
<div id="loginHelp" class="form-text">Желательно использовать следующий приоритет: логин->почта->номер телефона; это поможет вам знать корректный пароль от системы</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<center><label class="form-label">Сервис</label></center>
|
<center><label class="form-label">Сервис</label></center>
|
||||||
<input type="text" class="form-control" id="service" aria-describedby="serviceHelp">
|
<input type="text" class="form-control" id="service" aria-describedby="serviceHelp">
|
||||||
<div id="serviceHelp" class="form-text">Используйте доменные имена без сокращений (vk.com; yandex.ru; mail.yandex.ru; youtube.com; etc.)</div>
|
<div id="serviceHelp" class="form-text">Используйте доменные имена без сокращений (vk.com; yandex.ru; mail.yandex.ru; youtube.com; etc.)</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<center><label class="form-label">Сгенерированный пароль</label></center>
|
<center><label class="form-label">Сгенерированный пароль</label></center>
|
||||||
<input type="password" class="form-control" id="generated-password" aria-describedby="genHelp" readonly>
|
<input type="password" class="form-control" id="generated-password" aria-describedby="genHelp" readonly>
|
||||||
<div id="genHelp" class="form-text">Сгенерированный пароль по формуле: base64(sha1(`${keyword}::${service}::${login}`)) + "#"</div>
|
<div id="genHelp" class="form-text">Сгенерированный пароль по формуле: base64(sha1(`${keyword}::${service}::${login}`)) + "#"</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<center><button type="submit" class="btn btn-primary" id="generate-password">Сгенерировать</button> <button class="btn btn-secondary" id="copy-password">Скопировать</button></center>
|
<center><button type="submit" class="btn btn-primary" id="generate-password">Сгенерировать</button> <button class="btn btn-secondary" id="copy-password">Скопировать</button></center>
|
||||||
</div>
|
</div>
|
@ -1,27 +1,27 @@
|
|||||||
<div id="releases" class="release-menu">
|
<div id="releases" class="release-menu">
|
||||||
<h1>Релизы программ</h1>
|
<h1>Релизы программ</h1>
|
||||||
<hr>
|
<hr>
|
||||||
<div id="realese-item-1" class="release-item">
|
<div id="realese-item-1" class="release-item">
|
||||||
<h3>Планировщик студента</h3>
|
<h3>Планировщик студента</h3>
|
||||||
<hr>
|
<hr>
|
||||||
<p><strong>Описание</strong></p>
|
<p><strong>Описание</strong></p>
|
||||||
<p>Планировщик студента - программа для планирования своего учебного времени, планировании задач и целей. Программа помогает в организации времени и досуга.</p>
|
<p>Планировщик студента - программа для планирования своего учебного времени, планировании задач и целей. Программа помогает в организации времени и досуга.</p>
|
||||||
<p><strong>Установка</strong></p>
|
<p><strong>Установка</strong></p>
|
||||||
<div class="accordion text-bg-info" id="accordionExample">
|
<div class="accordion text-bg-info" id="accordionExample">
|
||||||
<div class="accordion-item">
|
<div class="accordion-item">
|
||||||
<h5 class="accordion-header" id="headingOne">
|
<h5 class="accordion-header" id="headingOne">
|
||||||
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
|
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
|
||||||
Актуальные версии релиза
|
Актуальные версии релиза
|
||||||
</button>
|
</button>
|
||||||
</h5>
|
</h5>
|
||||||
<div id="collapseOne" class="accordion-collapse collapse show" aria-labelledby="headingOne" data-bs-parent="#accordionExample">
|
<div id="collapseOne" class="accordion-collapse collapse show" aria-labelledby="headingOne" data-bs-parent="#accordionExample">
|
||||||
<div class="accordion-body">
|
<div class="accordion-body">
|
||||||
<!-- <strong>Это тело аккордеона первого элемента.</strong> По умолчанию оно скрыто, пока плагин сворачивания не добавит соответствующие классы, которые мы используем для стилизации каждого элемента. Эти классы управляют общим внешним видом, а также отображением и скрытием с помощью переходов CSS. Вы можете изменить все это с помощью собственного CSS или переопределить наши переменные по умолчанию. Также стоит отметить, что практически любой HTML может быть помещен в <code>.accordion-body</code>, хотя переход ограничивает переполнение. -->
|
<!-- <strong>Это тело аккордеона первого элемента.</strong> По умолчанию оно скрыто, пока плагин сворачивания не добавит соответствующие классы, которые мы используем для стилизации каждого элемента. Эти классы управляют общим внешним видом, а также отображением и скрытием с помощью переходов CSS. Вы можете изменить все это с помощью собственного CSS или переопределить наши переменные по умолчанию. Также стоит отметить, что практически любой HTML может быть помещен в <code>.accordion-body</code>, хотя переход ограничивает переполнение. -->
|
||||||
<p><a href="https://github.com/student-manager/student-manager/releases/download/1.1.1/windows.x64.Student.manager.portabel.zip"><svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z"/></svg> Windows x64 (10/11) v.1.1.1 (111 mb)</a></p>
|
<p><a href="https://github.com/student-manager/student-manager/releases/download/1.1.1/windows.x64.Student.manager.portabel.zip"><svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z"/></svg> Windows x64 (10/11) v.1.1.1 (111 mb)</a></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
@ -1,5 +1,5 @@
|
|||||||
<center>
|
<center>
|
||||||
<img src="/assets/at_work.png" class="sys-win-img"></img>
|
<img src="/assets/at_work.png" class="sys-win-img"></img>
|
||||||
<h1>Страница в разработке</h1>
|
<h1>Страница в разработке</h1>
|
||||||
<p>Страница находится в разработке и на данный момент не доступна :(</p>
|
<p>Страница находится в разработке и на данный момент не доступна :(</p>
|
||||||
</center>
|
</center>
|
@ -1,133 +1,133 @@
|
|||||||
function setLocation(curLoc){
|
function setLocation(curLoc){
|
||||||
try {
|
try {
|
||||||
history.pushState(null, null, curLoc);
|
history.pushState(null, null, curLoc);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
catch(e) {}
|
catch(e) {}
|
||||||
location.hash = '#' + curLoc;
|
location.hash = '#' + curLoc;
|
||||||
}
|
}
|
||||||
|
|
||||||
class FlCursor {
|
class FlCursor {
|
||||||
constructor (options) {
|
constructor (options) {
|
||||||
this.options = options;
|
this.options = options;
|
||||||
if (!options) {
|
if (!options) {
|
||||||
this.options = {
|
this.options = {
|
||||||
saveCache : true,
|
saveCache : true,
|
||||||
ignoreCachePath : [],
|
ignoreCachePath : [],
|
||||||
saveOnlyPath : ["/fl_system/load_page.html"]
|
saveOnlyPath : ["/fl_system/load_page.html"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.cache = new Object();
|
this.cache = new Object();
|
||||||
if (!Array.isArray(this.options.ignoreCachePath)) {
|
if (!Array.isArray(this.options.ignoreCachePath)) {
|
||||||
this.options.ignoreCachePath = new Array();
|
this.options.ignoreCachePath = new Array();
|
||||||
}
|
}
|
||||||
|
|
||||||
this.curLoc = location.pathname;
|
this.curLoc = location.pathname;
|
||||||
this.events = {};
|
this.events = {};
|
||||||
|
|
||||||
// Включаем автоматическое обновление содержимого страницы при нажатии кнопки "Назад"
|
// Включаем автоматическое обновление содержимого страницы при нажатии кнопки "Назад"
|
||||||
window.onpopstate = (event) => {
|
window.onpopstate = (event) => {
|
||||||
this.go(location.pathname, false);
|
this.go(location.pathname, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
isCanCachePage (url) {
|
isCanCachePage (url) {
|
||||||
return (this.options.saveCache && this.options.ignoreCachePath.indexOf(url) == -1) ||
|
return (this.options.saveCache && this.options.ignoreCachePath.indexOf(url) == -1) ||
|
||||||
(!this.options.saveCache && this.options.saveOnlyPath.indexOf(url) != -1);
|
(!this.options.saveCache && this.options.saveOnlyPath.indexOf(url) != -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
bindLoad (page, handler) {
|
bindLoad (page, handler) {
|
||||||
this.events[page] = handler;
|
this.events[page] = handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
getHttpContent (url) {
|
getHttpContent (url) {
|
||||||
if (!this.cache[url]) {
|
if (!this.cache[url]) {
|
||||||
let rq = new XMLHttpRequest();
|
let rq = new XMLHttpRequest();
|
||||||
rq.open('GET', url, false);
|
rq.open('GET', url, false);
|
||||||
rq.send();
|
rq.send();
|
||||||
|
|
||||||
if (rq.status == 200) {
|
if (rq.status == 200) {
|
||||||
if (this.isCanCachePage(url)) {
|
if (this.isCanCachePage(url)) {
|
||||||
this.cache[url] = rq.responseText;
|
this.cache[url] = rq.responseText;
|
||||||
}
|
}
|
||||||
return rq.responseText;
|
return rq.responseText;
|
||||||
}
|
}
|
||||||
else if (rq.status == 404) {
|
else if (rq.status == 404) {
|
||||||
rq = new XMLHttpRequest();
|
rq = new XMLHttpRequest();
|
||||||
rq.open('GET', `/fl_system/404.html`, false);
|
rq.open('GET', `/fl_system/404.html`, false);
|
||||||
rq.send();
|
rq.send();
|
||||||
|
|
||||||
let page = "404. Not found.";
|
let page = "404. Not found.";
|
||||||
if (rq.status == 200) {
|
if (rq.status == 200) {
|
||||||
page = rq.responseText;
|
page = rq.responseText;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.isCanCachePage(url)) {
|
if (this.isCanCachePage(url)) {
|
||||||
this.cache[url] = page;
|
this.cache[url] = page;
|
||||||
}
|
}
|
||||||
return page;
|
return page;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
let page = `Http error: ${rq.status}`;
|
let page = `Http error: ${rq.status}`;
|
||||||
|
|
||||||
rq = new XMLHttpRequest();
|
rq = new XMLHttpRequest();
|
||||||
rq.open('GET', `/fl_system/${rq.status}.html`, false);
|
rq.open('GET', `/fl_system/${rq.status}.html`, false);
|
||||||
rq.send();
|
rq.send();
|
||||||
|
|
||||||
if (rq.status == 200) {
|
if (rq.status == 200) {
|
||||||
page = rq.responseText;
|
page = rq.responseText;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.isCanCachePage(url)) {
|
if (this.isCanCachePage(url)) {
|
||||||
this.cache[url] = page;
|
this.cache[url] = page;
|
||||||
}
|
}
|
||||||
return page;
|
return page;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else return this.cache[url];
|
else return this.cache[url];
|
||||||
}
|
}
|
||||||
|
|
||||||
loading () {
|
loading () {
|
||||||
/*let rq = new XMLHttpRequest();
|
/*let rq = new XMLHttpRequest();
|
||||||
rq.open('GET', `/fl_system/load_page.html`, false);
|
rq.open('GET', `/fl_system/load_page.html`, false);
|
||||||
rq.send();
|
rq.send();
|
||||||
if (rq.status == 200) {
|
if (rq.status == 200) {
|
||||||
let page = rq.responseText;
|
let page = rq.responseText;
|
||||||
document.getElementById('fl.area').innerHTML = page;
|
document.getElementById('fl.area').innerHTML = page;
|
||||||
}*/
|
}*/
|
||||||
document.getElementById('fl.area').innerHTML = this.getHttpContent("/fl_system/load_page.html");
|
document.getElementById('fl.area').innerHTML = this.getHttpContent("/fl_system/load_page.html");
|
||||||
}
|
}
|
||||||
|
|
||||||
goToLocation (href) {
|
goToLocation (href) {
|
||||||
window.location.href = href;
|
window.location.href = href;
|
||||||
}
|
}
|
||||||
|
|
||||||
goJust (href, refEdit = true, callFromGo = false) {
|
goJust (href, refEdit = true, callFromGo = false) {
|
||||||
if (refEdit && !callFromGo) {
|
if (refEdit && !callFromGo) {
|
||||||
this.loading();
|
this.loading();
|
||||||
setLocation(href);
|
setLocation(href);
|
||||||
this.curLoc = href;
|
this.curLoc = href;
|
||||||
}
|
}
|
||||||
|
|
||||||
document.getElementById('fl.area').innerHTML = this.getHttpContent(`/fl_dir${href}`);
|
document.getElementById('fl.area').innerHTML = this.getHttpContent(`/fl_dir${href}`);
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
let page = href.split('#')[0].split('?')[0];
|
let page = href.split('#')[0].split('?')[0];
|
||||||
while (page.at(-1) === '/')
|
while (page.at(-1) === '/')
|
||||||
page = page.slice(0, page.length - 1);
|
page = page.slice(0, page.length - 1);
|
||||||
this.events[page]?.();
|
this.events[page]?.();
|
||||||
}, 0);
|
}, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
go (href, refEdit = true) {
|
go (href, refEdit = true) {
|
||||||
if (refEdit) {
|
if (refEdit) {
|
||||||
this.loading();
|
this.loading();
|
||||||
setLocation(href);
|
setLocation(href);
|
||||||
this.curLoc = href;
|
this.curLoc = href;
|
||||||
}
|
}
|
||||||
|
|
||||||
setTimeout(async () => this.goJust(href, refEdit, true), 1);
|
setTimeout(async () => this.goJust(href, refEdit, true), 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const fl = new FlCursor();
|
const fl = new FlCursor();
|
@ -1,4 +1,4 @@
|
|||||||
<center>
|
<center>
|
||||||
<img src="/assets/404.png" class="sys-win-img"></img>
|
<img src="/assets/404.png" class="sys-win-img"></img>
|
||||||
<h1>404. Страница не найдена :(</h1>
|
<h1>404. Страница не найдена :(</h1>
|
||||||
</center>
|
</center>
|
66
index.html
66
index.html
@ -1,34 +1,34 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
||||||
<link rel="stylesheet" href="/assets/main.css">
|
<link rel="stylesheet" href="/assets/main.css">
|
||||||
<link rel="icon" type="image/png" href="/favicon.png"/>
|
<link rel="icon" type="image/png" href="/favicon.png"/>
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/font-awesome/css/all.css" />
|
<link rel="stylesheet" href="/assets/font-awesome/css/all.css" />
|
||||||
<title>FullGreaM</title>
|
<title>FullGreaM</title>
|
||||||
</head>
|
</head>
|
||||||
<body class="bg text-white">
|
<body class="bg text-white">
|
||||||
<script src="/fl_framework/index.js"></script>
|
<script src="/fl_framework/index.js"></script>
|
||||||
<nav id="navbar-main" class="navbar navbar-dark bg-dark">
|
<nav id="navbar-main" class="navbar navbar-dark bg-dark">
|
||||||
<a class="navbar-brand" href="#" onclick="fl.go('/');">
|
<a class="navbar-brand" href="#" onclick="fl.go('/');">
|
||||||
FullGreaM
|
FullGreaM
|
||||||
</a>
|
</a>
|
||||||
<button onclick="fl.go('/contacts');" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">Мои контакты</button>
|
<button onclick="fl.go('/contacts');" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">Мои контакты</button>
|
||||||
</nav>
|
</nav>
|
||||||
<div id="turn-on-js">
|
<div id="turn-on-js">
|
||||||
<h1>Включите поддержку JavaScript!</h1>
|
<h1>Включите поддержку JavaScript!</h1>
|
||||||
<p>В противном случае, компоненты сайте не смогут быть загружены</p>
|
<p>В противном случае, компоненты сайте не смогут быть загружены</p>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
document.getElementById("turn-on-js").innerHTML = '<div id="fl.area"><p>Loading...</p></div>';
|
document.getElementById("turn-on-js").innerHTML = '<div id="fl.area"><p>Loading...</p></div>';
|
||||||
</script>
|
</script>
|
||||||
<!-- Finalize loading bootstrap js -->
|
<!-- Finalize loading bootstrap js -->
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
||||||
<!-- Go to root -->
|
<!-- Go to root -->
|
||||||
<!-- <script>setTimeout(async () => fl.go(window.location.pathname), 50);</script> -->
|
<!-- <script>setTimeout(async () => fl.go(window.location.pathname), 50);</script> -->
|
||||||
<script src="/assets/main.js" type="module"></script>
|
<script src="/assets/main.js" type="module"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,32 +1,32 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
||||||
<link rel="stylesheet" href="/assets/main.css">
|
<link rel="stylesheet" href="/assets/main.css">
|
||||||
<link rel="icon" type="image/png" href="/favicon.png"/>
|
<link rel="icon" type="image/png" href="/favicon.png"/>
|
||||||
<title>FullGreaM</title>
|
<title>FullGreaM</title>
|
||||||
</head>
|
</head>
|
||||||
<body class="bg text-white">
|
<body class="bg text-white">
|
||||||
<script src="/fl_framework/index.js"></script>
|
<script src="/fl_framework/index.js"></script>
|
||||||
<nav id="navbar-main" class="navbar navbar-dark bg-dark">
|
<nav id="navbar-main" class="navbar navbar-dark bg-dark">
|
||||||
<a class="navbar-brand" href="#" onclick="fl.go('/');">
|
<a class="navbar-brand" href="#" onclick="fl.go('/');">
|
||||||
FullGreaM
|
FullGreaM
|
||||||
</a>
|
</a>
|
||||||
<button onclick="fl.go('/contacts');" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">Мои контакты</button>
|
<button onclick="fl.go('/contacts');" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">Мои контакты</button>
|
||||||
</nav>
|
</nav>
|
||||||
<div id="turn-on-js">
|
<div id="turn-on-js">
|
||||||
<h1>Включите поддержку JavaScript!</h1>
|
<h1>Включите поддержку JavaScript!</h1>
|
||||||
<p>В противном случае, компоненты сайте не смогут быть загружены</p>
|
<p>В противном случае, компоненты сайте не смогут быть загружены</p>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
document.getElementById("turn-on-js").innerHTML = '<div id="fl.area"><p>Loading...</p></div>';
|
document.getElementById("turn-on-js").innerHTML = '<div id="fl.area"><p>Loading...</p></div>';
|
||||||
</script>
|
</script>
|
||||||
<!-- Finalize loading bootstrap js -->
|
<!-- Finalize loading bootstrap js -->
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
||||||
<!-- Go to root -->
|
<!-- Go to root -->
|
||||||
<!-- <script>setTimeout(async () => fl.go(window.location.pathname), 50);</script> -->
|
<!-- <script>setTimeout(async () => fl.go(window.location.pathname), 50);</script> -->
|
||||||
<script src="/assets/main.js" type="module"></script>
|
<script src="/assets/main.js" type="module"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,34 +1,34 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
||||||
<link rel="stylesheet" href="/assets/main.css">
|
<link rel="stylesheet" href="/assets/main.css">
|
||||||
<link rel="icon" type="image/png" href="/favicon.png"/>
|
<link rel="icon" type="image/png" href="/favicon.png"/>
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/font-awesome/css/all.css" />
|
<link rel="stylesheet" href="/assets/font-awesome/css/all.css" />
|
||||||
<title>FullGreaM</title>
|
<title>FullGreaM</title>
|
||||||
</head>
|
</head>
|
||||||
<body class="bg text-white">
|
<body class="bg text-white">
|
||||||
<script src="/fl_framework/index.js"></script>
|
<script src="/fl_framework/index.js"></script>
|
||||||
<nav id="navbar-main" class="navbar navbar-dark bg-dark">
|
<nav id="navbar-main" class="navbar navbar-dark bg-dark">
|
||||||
<a class="navbar-brand" href="#" onclick="fl.go('/');">
|
<a class="navbar-brand" href="#" onclick="fl.go('/');">
|
||||||
FullGreaM
|
FullGreaM
|
||||||
</a>
|
</a>
|
||||||
<button onclick="fl.go('/contacts');" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">Мои контакты</button>
|
<button onclick="fl.go('/contacts');" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">Мои контакты</button>
|
||||||
</nav>
|
</nav>
|
||||||
<div id="turn-on-js">
|
<div id="turn-on-js">
|
||||||
<h1>Включите поддержку JavaScript!</h1>
|
<h1>Включите поддержку JavaScript!</h1>
|
||||||
<p>В противном случае, компоненты сайте не смогут быть загружены</p>
|
<p>В противном случае, компоненты сайте не смогут быть загружены</p>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
document.getElementById("turn-on-js").innerHTML = '<div id="fl.area"><p>Loading...</p></div>';
|
document.getElementById("turn-on-js").innerHTML = '<div id="fl.area"><p>Loading...</p></div>';
|
||||||
</script>
|
</script>
|
||||||
<!-- Finalize loading bootstrap js -->
|
<!-- Finalize loading bootstrap js -->
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
||||||
<!-- Go to root -->
|
<!-- Go to root -->
|
||||||
<!-- <script>setTimeout(async () => fl.go(window.location.pathname), 50);</script> -->
|
<!-- <script>setTimeout(async () => fl.go(window.location.pathname), 50);</script> -->
|
||||||
<script src="/assets/main.js" type="module"></script>
|
<script src="/assets/main.js" type="module"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,32 +1,32 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
||||||
<link rel="stylesheet" href="/assets/main.css">
|
<link rel="stylesheet" href="/assets/main.css">
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.3/font/bootstrap-icons.css">
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.3/font/bootstrap-icons.css">
|
||||||
<title>FullGreaM</title>
|
<title>FullGreaM</title>
|
||||||
</head>
|
</head>
|
||||||
<body class="bg text-white">
|
<body class="bg text-white">
|
||||||
<script src="/fl_framework/index.js"></script>
|
<script src="/fl_framework/index.js"></script>
|
||||||
<nav id="navbar-main" class="navbar navbar-dark bg-dark">
|
<nav id="navbar-main" class="navbar navbar-dark bg-dark">
|
||||||
<a class="navbar-brand" href="#" onclick="fl.go('/');">
|
<a class="navbar-brand" href="#" onclick="fl.go('/');">
|
||||||
FullGreaM
|
FullGreaM
|
||||||
</a>
|
</a>
|
||||||
<button onclick="fl.go('/contacts');" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">Мои контакты</button>
|
<button onclick="fl.go('/contacts');" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">Мои контакты</button>
|
||||||
</nav>
|
</nav>
|
||||||
<div id="turn-on-js">
|
<div id="turn-on-js">
|
||||||
<h1>Включите поддержку JavaScript!</h1>
|
<h1>Включите поддержку JavaScript!</h1>
|
||||||
<p>В противном случае, компоненты сайте не смогут быть загружены</p>
|
<p>В противном случае, компоненты сайте не смогут быть загружены</p>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
document.getElementById("turn-on-js").innerHTML = '<div id="fl.area"><p>Loading...</p></div>';
|
document.getElementById("turn-on-js").innerHTML = '<div id="fl.area"><p>Loading...</p></div>';
|
||||||
</script>
|
</script>
|
||||||
<!-- Finalize loading bootstrap js -->
|
<!-- Finalize loading bootstrap js -->
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
||||||
<!-- Go to root -->
|
<!-- Go to root -->
|
||||||
<script>setTimeout(async () => fl.go(window.location.pathname), 50);</script>
|
<script>setTimeout(async () => fl.go(window.location.pathname), 50);</script>
|
||||||
<script src="/assets/main.js"></script>
|
<script src="/assets/main.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,34 +1,34 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
||||||
<link rel="stylesheet" href="/assets/main.css">
|
<link rel="stylesheet" href="/assets/main.css">
|
||||||
<link rel="icon" type="image/png" href="/favicon.png"/>
|
<link rel="icon" type="image/png" href="/favicon.png"/>
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/font-awesome/css/all.css" />
|
<link rel="stylesheet" href="/assets/font-awesome/css/all.css" />
|
||||||
<title>FullGreaM</title>
|
<title>FullGreaM</title>
|
||||||
</head>
|
</head>
|
||||||
<body class="bg text-white">
|
<body class="bg text-white">
|
||||||
<script src="/fl_framework/index.js"></script>
|
<script src="/fl_framework/index.js"></script>
|
||||||
<nav id="navbar-main" class="navbar navbar-dark bg-dark">
|
<nav id="navbar-main" class="navbar navbar-dark bg-dark">
|
||||||
<a class="navbar-brand" href="#" onclick="fl.go('/');">
|
<a class="navbar-brand" href="#" onclick="fl.go('/');">
|
||||||
FullGreaM
|
FullGreaM
|
||||||
</a>
|
</a>
|
||||||
<button onclick="fl.go('/contacts');" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">Мои контакты</button>
|
<button onclick="fl.go('/contacts');" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">Мои контакты</button>
|
||||||
</nav>
|
</nav>
|
||||||
<div id="turn-on-js">
|
<div id="turn-on-js">
|
||||||
<h1>Включите поддержку JavaScript!</h1>
|
<h1>Включите поддержку JavaScript!</h1>
|
||||||
<p>В противном случае, компоненты сайте не смогут быть загружены</p>
|
<p>В противном случае, компоненты сайте не смогут быть загружены</p>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
document.getElementById("turn-on-js").innerHTML = '<div id="fl.area"><p>Loading...</p></div>';
|
document.getElementById("turn-on-js").innerHTML = '<div id="fl.area"><p>Loading...</p></div>';
|
||||||
</script>
|
</script>
|
||||||
<!-- Finalize loading bootstrap js -->
|
<!-- Finalize loading bootstrap js -->
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
||||||
<!-- Go to root -->
|
<!-- Go to root -->
|
||||||
<!-- <script>setTimeout(async () => fl.go(window.location.pathname), 50);</script> -->
|
<!-- <script>setTimeout(async () => fl.go(window.location.pathname), 50);</script> -->
|
||||||
<script src="/assets/main.js" type="module"></script>
|
<script src="/assets/main.js" type="module"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
Reference in New Issue
Block a user