Перейти к содержимому

Фотография

Этот занимательный SVGВнимание конкурс - Приз 10 000 тенге

svg программирование конкурс

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 69

#41
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений
Скрытый текст

 

Твой ТИПА SVG  файл

<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" id="svg"
     style="position: fixed;top:0;left:0;height:100%;width:100%;display: none;">
    <!--

    Примечание: Координаты для  осей X и Y (0,0)  рисунка c шагом 50px в экранной сетке X=700 (14*50px) Y=450 (9*50px)

    -->
    <line x1="0%" y1="50%" x2="100%" y2="50%" stroke-width="1" stroke="rgb(0,0,0)"></line>
    <line x1="50%" y1="0%" x2="50%" y2="100%" stroke-width="1" stroke="rgb(0,0,0)"></line>

    <circle id="circle1"
            r="50"
            cy="200"
            cx="450"
            style="fill:yellow;"/>
    <rect id="rect2"
          y="700"
          x="950"
          height="100"
          width="100"
          style="fill:red;"/>

    <script type="text/javascript"><![CDATA[

        const _0x5b25=['pow','circle1','getElementById','rect2','map','cloneNode','svg','block','forEach','innerWidth','documentElement','body','clientWidth','innerHeight','clientHeight','tagName','orig','baseVal','value','rect','height','width','dispatchEvent','resize','sqrt'];(function(_0xef930a,_0xf2def8){const _0x41a874=function(_0x42a006){while(--_0x42a006){_0xef930a['push'](_0xef930a['shift']());}};_0x41a874(++_0xf2def8);}(_0x5b25,0x95));const _0x4519=function(_0xef930a,_0xf2def8){_0xef930a=_0xef930a-0x0;let _0x41a874=_0x5b25[_0xef930a];return _0x41a874;};let orig_scr_w=0x578;let orig_scr_h=0x384;let sq2=Math[_0x4519('0x0')](Math[_0x4519('0x1')](orig_scr_w,0x2)+Math[_0x4519('0x1')](orig_scr_h,0x2));let shapes=[document['getElementById'](_0x4519('0x2')),document[_0x4519('0x3')](_0x4519('0x4'))][_0x4519('0x5')](_0x3b9969=>({'el':_0x3b9969,'orig':_0x3b9969[_0x4519('0x6')](![])}));window['addEventListener']('resize',function(_0x42b6bd){document[_0x4519('0x3')](_0x4519('0x7'))['style']['display']=_0x4519('0x8');shapes[_0x4519('0x9')](_0x1543ed=>{let _0x55c22c=window[_0x4519('0xa')]||document[_0x4519('0xb')]['clientWidth']||document[_0x4519('0xc')][_0x4519('0xd')];let _0x59ed7f=window[_0x4519('0xe')]||document[_0x4519('0xb')][_0x4519('0xf')]||document[_0x4519('0xc')][_0x4519('0xf')];let _0x5e3fe4=Math[_0x4519('0x0')](Math[_0x4519('0x1')](_0x55c22c,0x2)+Math[_0x4519('0x1')](_0x59ed7f,0x2));if(_0x1543ed['el'][_0x4519('0x10')]==='circle'){_0x1543ed['el']['r']['baseVal']['value']=_0x1543ed[_0x4519('0x11')]['r'][_0x4519('0x12')][_0x4519('0x13')]*_0x5e3fe4/sq2;_0x1543ed['el']['cx'][_0x4519('0x12')]['value']=_0x55c22c*_0x1543ed['orig']['cx'][_0x4519('0x12')][_0x4519('0x13')]/orig_scr_w;_0x1543ed['el']['cy'][_0x4519('0x12')][_0x4519('0x13')]=_0x59ed7f*_0x1543ed[_0x4519('0x11')]['cy'][_0x4519('0x12')][_0x4519('0x13')]/orig_scr_h;}if(_0x1543ed['el'][_0x4519('0x10')]===_0x4519('0x14')){let _0x56c4f6=Math[_0x4519('0x0')](0x2)*_0x1543ed[_0x4519('0x11')][_0x4519('0x15')][_0x4519('0x12')][_0x4519('0x13')]*_0x5e3fe4/sq2/Math[_0x4519('0x0')](0x2);_0x1543ed['el']['height'][_0x4519('0x12')][_0x4519('0x13')]=_0x56c4f6;_0x1543ed['el'][_0x4519('0x16')][_0x4519('0x12')][_0x4519('0x13')]=_0x56c4f6;_0x1543ed['el']['x'][_0x4519('0x12')]['value']=_0x55c22c*_0x1543ed[_0x4519('0x11')]['x']['baseVal']['value']/orig_scr_w;_0x1543ed['el']['y'][_0x4519('0x12')]['value']=_0x59ed7f*_0x1543ed['orig']['y'][_0x4519('0x12')][_0x4519('0x13')]/orig_scr_h;}});});window[_0x4519('0x17')](new Event(_0x4519('0x18')));
     ]]></script>

</svg>

Виюеры не открывают от слова вообще...

 

 

mashka_svg2.png

 

mashka_svg3.png

 

 

Скрытый текст

 

Сделай нормальный SVG, интегрируй в него элементы Управления, проверь файл хотя бы в Inkscape и тогда только... 

 

Что-то  Выкладывай... :dandy:


Сообщение отредактировал T-800 Danya: 13.01.2020, 16:06:51

  • 0

#42
trnj

trnj
  • Свой человек
  • 741 сообщений

 вот и я скорее обрадовался даже, а так сидишь-сидишь, на тебя косо смотрят, а уволить боятся.. вопрос решили ребром - вообще закрыть учебный центр  :dandy:

приглашают преподом и админом в один Алматинский ВУЗ, но там ЗП не ахти и много бумажной работы

еще по другим местным учцентрам побегаю, где нужны преподы, админы или веб-разрабы за побольше чем 300к теньгов

 

 

Навскидку апплайнись в евраз, днём с огнём ищут it. И в другие банки.

 

Это этот закрывают, по сейфуллина чтоли? Ничё себе.

 

Может тебе в Канаду? :)  Сколько у тебя ielts ?  


Сообщение отредактировал trnj: 13.01.2020, 16:12:26

  • -1

#43
zavuch

zavuch

    ЗАВеду У Чащу )

  • В доску свой
  • 2 063 сообщений

иелтс ни разу не сдавал, хотя курсы по-английски могу читать


  • 0

#44
trnj

trnj
  • Свой человек
  • 741 сообщений

Виюеры не открывают от слова вообще...

 

 

 О бже, даже меня атеиста заставил произнести имя в суе. Нда....уж 

 

Чел открывает svg с js во вьювере фоток ))  Без комментариев. 

 

Ну а в inkspace в svg убери display: none;  (специально добавил чтобы не было fouc) и редактируй сколько тебе влезет, можешь даже временно js убрать, потом зашипить, или поставь линк для js.  Или если уж так приспичило, меня через translate calc.

 

Вот это ты обезьяна тупая, конечно, просто феерически тупой.

 

Деньги от победы перечисли завучу, конечно, пока рабоут ищет. думаю это временно, тфу тфу тфу ))


  • -1

#45
trnj

trnj
  • Свой человек
  • 741 сообщений

иелтс ни разу не сдавал, хотя курсы по-английски могу читать

 

Попробуй сдай ielts, хотя бы в интернете. С такими как у тебя дипломами в Канаде ищут. В Британской Колумбии открыли IT пилот, там скилловых спецов типа тебя ищут, даже ielts проходной балл понизили, чтобы it-шники апплаились (понятно, только препод английского наберёт 8777 по ielts )

 

Апплайнись в евраз, там сейчас скилловый чел ушёл, с большим трудом отпустили, ибо заменить некем. 

И в другие, в жилстрой, на треньку хожу с админом оттуда - ищут во всю.

 

А преподавать в вузе, блин, все нервы попортят ))  Если только в магистратуре и выше )) 


  • -1

#46
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений

 

Виюеры не открывают от слова вообще...

 

 

 О бже, даже меня атеиста заставил произнести имя в суе. Нда....уж 

 

Чел открывает svg с js во вьювере фоток ))  Без комментариев. 

 

Ну а в inkspace в svg убери display: none;  (специально добавил чтобы не было fouc) и редактируй сколько тебе влезет, можешь даже временно js убрать, потом зашипить, или поставь линк для js.  Или если уж так приспичило, меня через translate calc.

 

Вот это ты обезьяна тупая, конечно, просто феерически тупой.

 

Деньги от победы перечисли завучу, конечно, пока рабоут ищет. думаю это временно, тфу тфу тфу ))

 

 

 

Скрытый текст

 

Давай допиливай свой Бредокод...   

 

Сделай нормальный SVG, интегрируй в него элементы Управления, проверь файл хотя бы в Inkscape и Выкладывай
 

Время до субботы у тебя еще неделя...

 

Скрытый текст

 

В конце концов... Коли взялся за гуж не говори что не дюж... :dandy:


Сообщение отредактировал T-800 Danya: 13.01.2020, 16:40:39

  • 0

#47
trnj

trnj
  • Свой человек
  • 741 сообщений

Времени вообще ноль, но ладно

 

https://bogdan-top-c...s.com/test2.svg

 

Там значит, чтобы сделать удобно для дизайнера, svg находится в первозданном виде 1400 на 900. 

Потом javascript подхватит все эти размеры и переведёт svg в "адаптивный" режим. 

 

Понятно, что код чисто для демонстрации идеи, можно и нужно написать на много лучше при большей детализации задания. 

 

Ну а из базы, прилетает фигура, прогоняешь через скрипты и лепишь туда в svg.

 

 

Приз отправляй завучу (даже если я не выиграю конкурс  :cry: ), ибо it за it всегда горой )


  • -1

#48
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений

Времени вообще ноль, но ладно

 

https://bogdan-top-c...s.com/test2.svg

 

Там значит, чтобы сделать удобно для дизайнера, svg находится в первозданном виде 1400 на 900. 

Потом javascript подхватит все эти размеры и переведёт svg в "адаптивный" режим. 

 

Понятно, что код чисто для демонстрации идеи, можно и нужно написать на много лучше при большей детализации задания. 

 

Ну а из базы, прилетает фигура, прогоняешь через скрипты и лепишь туда в svg.

 

 

Приз отправляй завучу (даже если я не выиграю конкурс  :cry: ), ибо it за it всегда горой )

 

 

OК. Проверил твой новй код.

<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" id="svg"
     viewBox="0 0 1400 900" width="1400" height="900">
    <!--

    Примечание: Координаты для  осей X и Y (0,0)  рисунка c шагом 50px в экранной сетке X=700 (14*50px) Y=450 (9*50px)

    -->
    <line x1="0%" y1="50%" x2="100%" y2="50%" stroke-width="1" stroke="rgb(0,0,0)"></line>
    <line x1="50%" y1="0%" x2="50%" y2="100%" stroke-width="1" stroke="rgb(0,0,0)"></line>

    <circle id="circle1"
            r="50"
            cy="200"
            cx="450"
            style="fill:yellow;"/>
    <rect id="rect2"
          y="700"
          x="950"
          height="100"
          width="100"
          style="fill:red;"/>


    <style>
        .svg_production {
            display: none;
        }
    </style>

<script type="text/javascript"><![CDATA[

let svg = document.getElementById('svg');

let orig_scr_w = svg.width.baseVal.value;
let orig_scr_h = svg.height.baseVal.value;

// переводим svg в "адаптивный" вид, сносим стили и размеры, всё к чертям!
svg.style.cssText = 'position: fixed;top:0;left:0;height:100%;width:100%;display: none;';
['viewBox', 'width', 'height'].map(attr => svg.removeAttribute(attr));

let shapes =
    ['circle', 'rect'] // какие элементы включаем в "адаптацию"
        .reduce((base, cur) => base.concat(...document.getElementsByTagName(cur)), [])
        .map(el => ({el, orig: el.cloneNode(false)}));

let sq2 = Math.sqrt(Math.pow(orig_scr_w, 2) + Math.pow(orig_scr_h, 2));

window.addEventListener('resize', function (event) {
    svg.style.display = 'block'; // без fouc
    shapes.forEach((todo) => {
        // разные браузеры сообщают размер по-разному
        let w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
        let h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
        let sq1 = Math.sqrt(Math.pow(w, 2) + Math.pow(h, 2));
        if (todo.el.tagName === 'circle') {
            todo.el.r.baseVal.value = (todo.orig.r.baseVal.value * sq1) / sq2;
            todo.el.cx.baseVal.value = (w * todo.orig.cx.baseVal.value) / orig_scr_w;
            todo.el.cy.baseVal.value = (h * todo.orig.cy.baseVal.value) / orig_scr_h;
        }
        if (todo.el.tagName === 'rect') {
            let a = ((Math.sqrt(2) * todo.orig.height.baseVal.value * sq1) / sq2) / Math.sqrt(2);
            todo.el.height.baseVal.value = a;
            todo.el.width.baseVal.value = a;
            todo.el.x.baseVal.value = (w * todo.orig.x.baseVal.value) / orig_scr_w;
            todo.el.y.baseVal.value = (h * todo.orig.y.baseVal.value) / orig_scr_h;
        }
    });
});
// всятряхнём браузер
window.dispatchEvent(new Event('resize'));



]]></script>

</svg>

Вижу что Вьюер  ты Осилил :dandy:

 

tuco_svg.png

 

 

Теперь тебе осталось - всего лишь  - только Ослилить   интеграцию в твой SVG  элементов Управления,

 

Осилишь и    можешь  считать что  на Приз ты точно Наработал...

 

ЗЫ На счет перевода Приза Завучу... Абсолютно не Вопрос.... 

 

ЗЗЫ Сделай интеграцию в твой SVG элементов Управления,  проверь что все работает, выложи SVG файл -   и будешь иметь полно право распорядится своим Призом на все 120%

 

ЗЗЗЫ Ну а если других каких-либо еще работ от других Участников до Субботы не будет  представлено, то  и ИМХО и всем призовым Фондом...


Сообщение отредактировал T-800 Danya: 13.01.2020, 18:22:27

  • 0

#49
trnj

trnj
  • Свой человек
  • 741 сообщений

https://bogdan-top-c...s.com/test3.svg

 

С размерами шрифтов контролов уж сами химичте. Я направление дал. 

 

Я бы рекомендовал через media запросы всё делать. Потому что под каждый размер экрана нужно проверять, и возможно, убирать какие-то контролы, или куда-то их перемещать. Это уже дело дизайнера. 

 

@media only screen and (max-width: 320px) {
 
   select { 
      font-size: 2em; 
   }
 
}

  • 0

#50
trnj

trnj
  • Свой человек
  • 741 сообщений

Завучу перечисли золотой парашют. 

 

Если не примет (посторайся), перечисляю деньги на развитие синтезатора речи для слепых или глухих, или кого там

 

"Не надо мне награды"

 


  • -1

#51
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений

https://bogdan-top-c...s.com/test3.svg

С размерами шрифтов контролов уж сами химичте. Я направление дал.

Я бы рекомендовал через media запросы всё делать. Потому что под каждый размер экрана нужно проверять, и возможно, убирать какие-то контролы, или куда-то их перемещать. Это уже дело дизайнера.

@media only screen and (max-width: 320px) {

select {
font-size: 2em;
}

}



Глянул я твой новый код...
 

<svg
     xmlns="http://www.w3.org/2000/svg" version="1.1" id="svg"
     viewBox="0 0 1400 900" width="1400" height="900">
    <!--

    Примечание: Координаты для  осей X и Y (0,0)  рисунка c шагом 50px в экранной сетке X=700 (14*50px) Y=450 (9*50px)

    -->

    <line x1="0%" y1="50%" x2="100%" y2="50%" stroke-width="1" stroke="rgb(0,0,0)"></line>
    <line x1="50%" y1="0%" x2="50%" y2="100%" stroke-width="1" stroke="rgb(0,0,0)"></line>

    <circle
            r="50"
            cy="200"
            cx="450"
            style="fill:yellow;"/>
    <rect
          y="700"
          x="950"
          height="100"
          width="100"
          style="fill:red;"/>


    <style>
        .svg_production {
            display: none;
        }
    </style>

    <foreignObject x="30" y="30" width="400" height="200">
        <select xmlns="http://www.w3.org/1999/xhtml" style="padding: 10px 20px; font-size: calc(8px + 1vw)">
            <option>Ваш пол</option>
            <option>Мужчина</option>
            <option>Женщина</option>
            <option>Трансгендер</option>
        </select>
        <button xmlns="http://www.w3.org/1999/xhtml" style="margin-top: 10px; padding: 5px 10px" onclick="alert('Fuck you!')">Нажми на кнопку - получишь результат</button>
    </foreignObject>

<script type="text/javascript"><![CDATA[

(function(){
let svg = document.getElementById('svg');

let orig_scr_w = svg.width.baseVal.value;
let orig_scr_h = svg.height.baseVal.value;

// переводим svg в "адаптивный" вид, сносим стили и размеры, всё к чертям!
svg.style.cssText = 'position: fixed;top:0;left:0;height:100%;width:100%';
['viewBox', 'width', 'height'].map(attr => svg.removeAttribute(attr));

let shapes =
    ['circle', 'rect'] // какие элементы включаем в "адаптацию"
        .reduce((base, cur) => base.concat(...document.getElementsByTagName(cur)), [])
        .map(el => ({el, orig: el.cloneNode(false)}));

let sqrt = Math.sqrt(2);
let sq2 = Math.sqrt(Math.pow(orig_scr_w, 2) + Math.pow(orig_scr_h, 2));

window.addEventListener('resize', (event) => {
    svg.style.display = 'block'; // без fouc
    shapes.forEach((todo) => {
        // разные браузеры сообщают размер по-разному
        let {el, orig} = todo;
        let w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
        let h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
        let sq1 = Math.sqrt(Math.pow(w, 2) + Math.pow(h, 2));
        if (el.tagName === 'circle') {
            el.r.baseVal.value = (orig.r.baseVal.value * sq1) / sq2;
            el.cx.baseVal.value = (w * orig.cx.baseVal.value) / orig_scr_w;
            el.cy.baseVal.value = (h * orig.cy.baseVal.value) / orig_scr_h;
        }
        if (el.tagName === 'rect') {
            let a = ((sqrt * orig.height.baseVal.value * sq1) / sq2) / sqrt;
            el.height.baseVal.value = a;
            el.width.baseVal.value = a;
            el.x.baseVal.value = (w * orig.x.baseVal.value) / orig_scr_w;
            el.y.baseVal.value = (h * orig.y.baseVal.value) / orig_scr_h;
        }
    });
});
// всятряхнём браузер
window.dispatchEvent(new Event('resize'));

})();



]]></script>

</svg>

Элементы управления в виде Выпадающего Списка вижу...  Alert вижу...

А вот выполнения условий Конкурсного Задания

 

SVG должен быть адаптивным с реализованной возможностью вручную (используя выпадающий список) пропорционально изменять размеры выводимой картинки состоящей из осей координат и кружка с квадратом

 

Увы НЕ Вижу...

tuconeosilil.png



Так че давай Парашютист - Oсиливай! .. до Субботы время еще есть... :dandy:


Сообщение отредактировал T-800 Danya: 14.01.2020, 14:23:07

  • 0

#52
trnj

trnj
  • Свой человек
  • 741 сообщений

не очень понял что нужно сделать, примеры покажи, что и как должно выглядеть


  • -1

#53
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений

не очень понял что нужно сделать, примеры покажи, что и как должно выглядеть

 

Скрытый текст

 

Да прикрути вместо своего  Алерта  изменение размера изображения в  Разрешении к примеру

 

1024 × 768, 1280 × 1024   и 1400 x 900

 

Да и  все... -  Задание будет Выполнено   :dandy:

 

ЗЫ Размер окна браузера менять НЕ надо...   Только размер SVG в окне.


Сообщение отредактировал T-800 Danya: 14.01.2020, 15:20:56

  • 0

#54
trnj

trnj
  • Свой человек
  • 741 сообщений

Изображение ж и так подстроится под любой экран. 


  • -1

#55
trnj

trnj
  • Свой человек
  • 741 сообщений

Кстати, кому интересно, вот как это примерно можно на css реализовать

 

https://bogdan-top-c....com/test5.html


  • -1

#56
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений

Изображение ж и так подстроится под любой экран. 

 

Да нет в условии  Задания такого чтоб Изображение должно само подстраиваться под любой Экран.
 

 

SVG должен быть адаптивным с реализованной возможностью вручную (используя выпадающий список) пропорционально изменять размеры выводимой картинки состоящей из осей координат и кружка с квадратом

 

 

 

Т.е.  адаптивность необходима чисто в рамках ручного выбора разрешения из предлагаемых опций в выпадающем списке

 

Вот как это к примеру в принт-вьюерах организовано...

 

tucogenii.png


Сообщение отредактировал T-800 Danya: 14.01.2020, 15:36:14

  • 0

#57
asr

asr
  • Модератор
  • 24 325 сообщений

MODERATORIAL (Автоматическое сообщение от asr)

Пользователю T-800 Danya вынесено предупреждение за нарушение пункта 2.2.2 Правил в данном сообщении.

2.2. Не разрешена отправка сообщений, которые содержат:
2.2.2. Заведомо ложную, оскорбляющую, вульгарную, непристойную информацию в любом из элементов сообщения. Администрация имеет право удалить любое сообщение по своему усмотрению.

  • 0

#58
zavuch

zavuch

    ЗАВеду У Чащу )

  • В доску свой
  • 2 063 сообщений
Какой-то пустой спор... Лучше сделайте ченть красивое
Я свг не преподаю и не юзаю сам, только край хватаем в курсах по хтмл5 и студентам предлагаю или тупо по формуле график отрисовать или.. или по красивой формуле красивый график.. )) так они не делают а мне пофиг уже ((
Ну помните да во времена Паскаля и басика и на сях рисовали и кубики в триДэ и "шляпу мексиканца" и ландшафтные генераторы делали... Потом пошла Ява, опенДжэЭль даже раньше появилась (и на Вижуалбасике стало можно делать шедевры!!) Vrml со своим яваскриптподобными сценариями (помните такую?) , Флэш с экшнскриптом, питон как-то там поучаствовал в визуализации...
Хтмль цсс яваскрипт как замена всему...
А потом мне тупо всучили в конторе столы таскать и стало не до приколов. (((
Хоть щас уволился десять лет спустя и не знаю как уж нагоню (

Сообщение отредактировал zavuch: 15.01.2020, 22:27:48

  • 0

#59
trnj

trnj
  • Свой человек
  • 741 сообщений

 Т.е.  адаптивность необходима чисто в рамках ручного выбора разрешения из предлагаемых опций в выпадающем списке

 

Вот как это к примеру в принт-вьюерах организовано...

 

 

Козырь, ток по честноку, ты сам понимаешь что ты пишешь? :) 

А что такое...боюсь спросить...адаптивность... есть понимание?  


  • 0

#60
trnj

trnj
  • Свой человек
  • 741 сообщений

Какой-то пустой спор... Лучше сделайте ченть красивое
Я свг не преподаю и не юзаю сам, только край хватаем в курсах по хтмл5 и студентам предлагаю или тупо по формуле график отрисовать или.. или по красивой формуле красивый график.. )) так они не делают а мне пофиг уже ((
Ну помните да во времена Паскаля и басика и на сях рисовали и кубики в триДэ и "шляпу мексиканца" и ландшафтные генераторы делали...

 

СВГ нормальная вещь для логотипов, чтобы на высоком разрешении лого выглядело без размытия.

Плюс ещё, можно из Flash генернуть свг. Это очень большая экономия времени.

 

Для всего остального css. На css можно сделать практически всё где не требуется логика. 


  • 0



Темы с аналогичным тегами svg, программирование, конкурс

Количество пользователей, читающих эту тему: 1

пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.