android termika bildiga kamerao...">
,需要通过父级DOM结构来判断
*/
var trackActionPhone = function (node) {
var nodeInnerText = node.innerText || '';
if (!limitRegLength(nodeInnerText)) return;
var nodeText = trimText(nodeInnerText);
if (nodeText.length < 5 || nodeText.length > 20) return false;
var type =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: 'click';
var str = trimText(node.href || node.innerHTML || '');
if (phoneReg.test(str) && numUseReg.test(str)) {
_paq.push(['trackEvent', type, 'phone', nodeText]);
return true;
}
/** 排查父级嵌套非标签场景,并且对dom的正则校验做一个性能兜底,通过控制innerText的长度,来确保正则的性能 */
var fatherText = trimText(node.parentNode.innerText || '');
if (fatherText.length < 5 || fatherText.length > 20) return false;
var fatherDom = trimText(node.parentNode.innerHTML || '');
if (phoneReg.test(fatherDom) && numUseReg.test(fatherDom)) {
_paq.push(['trackEvent', type, 'phone', nodeText]);
return true;
}
return false;
};
window.addEventListener('click', function (e) {
var node = e.target;
/** 社媒点击 */
var appName = '';
var getAppAriaLabel =
node.ariaLabel || node.parentNode.ariaLabel || '';
if (mediaList.includes(getAppAriaLabel.toLowerCase())) {
appName = getAppAriaLabel;
}
if (
!appName &&
node.nodeName &&
node.nodeName.toLowerCase() === 'a'
) {
appName = getMediaName(node.href) || getMediaName(node.alt);
}
if (
!appName &&
node.nodeName &&
node.nodeName.toLowerCase() === 'img'
) {
appName = getMediaName(node.alt) || getMediaName(node.src);
}
if (
!appName &&
node.nodeName &&
node.nodeName.toLowerCase() === 'i'
) {
appName = getMediaName(node.className);
}
if (appName) {
_paq.push(['trackEvent', 'click', 'contactApp', appName]);
return;
}
/** 联系方式点击 */
if (trackActionPhone(node, 'click')) return;
if (node.nodeName && node.nodeName.toLowerCase() === 'a') {
var val = node.href;
if (!limitRegLength(val)) return;
if (emailReg.test(val)) {
_paq.push(['trackEvent', 'click', 'email', val]);
return;
}
}
if (node.nodeName && node.nodeName.toLowerCase() === 'i') {
var val = node.className;
var content = node.parentNode.href || '';
if (val.includes('email')) {
_paq.push(['trackEvent', 'click', 'email', content]);
return;
}
}
var nodeChildList = node.childNodes;
for (var i = 0; i < nodeChildList.length; i++) {
if (nodeChildList[i].nodeType !== 3) continue;
var val = nodeChildList[i].textContent.replace(/\s?:?/g, '');
if (!limitRegLength(val)) continue;
if (emailReg.test(val)) {
_paq.push(['trackEvent', 'click', 'email', val]);
return;
}
}
trackNumberData(node);
});
window.addEventListener('copy', function (e) {
if (trackActionPhone(e.target, 'copy')) return;
var text = e.target.textContent;
if (!text) return;
var val = text.replace(/\s:?/g, '');
if (!limitRegLength(val)) return;
if (emailReg.test(val)) {
_paq.push(['trackEvent', 'copy', 'email', val]);
return;
}
trackNumberData(e.target);
});
}
trackContactInit();
/**
* 基于custom_inquiry_form.js 以及 form.js 对于询盘表单提交的实现,来反推询盘表单的input标签触发,用来收集意向客户
* 1. 缓存的KEY:TRACK_INPUT_ID_MTM_00;
* 2. 缓存策略 - lockTrackInput:单个页面内,10分钟内,不重复上报
*/
function trackActionInput() {
const CACHE_KEY = 'TRACK_INPUT_ID_MTM_00';
const pathName = window.location.hostname + window.location.pathname;
var lockTrackInput = function () {
try {
const lastCacheData = localStorage.getItem(CACHE_KEY);
if (!lastCacheData) return false;
const cacheData = JSON.parse(lastCacheData);
const cacheTime = cacheData[pathName];
if (!cacheTime) return false;
return Date.now() - cacheTime < 1000 * 60 * 10; // 10分钟内,不重复上报
} catch (error) {
console.error('lockTrackInput Error', error);
return false;
}
};
var setInputTrackId = function () {
try {
const curCacheData = localStorage.getItem(CACHE_KEY);
if (curCacheData) {
const cacheData = JSON.parse(curCacheData);
cacheData[pathName] = Date.now();
localStorage.setItem(CACHE_KEY, JSON.stringify(cacheData));
return;
}
const cacheData = {
[pathName]: Date.now(),
};
localStorage.setItem(CACHE_KEY, JSON.stringify(cacheData));
} catch (error) {
console.error('setInputTrackId Error', error);
}
};
var getInputDom = function (initDom) {
var ele = initDom;
while (ele) {
/**
* isWebSiteForm 是站点的表单
* isChatWindowForm 是聊天窗口的表单
*/
/** 旧模板表单 */
var isWebSiteForm = !!(
/crm-form/i.test(ele.className) && ele.querySelector('form')
);
/** 1:新模板自定义表单、2:Get a Quote 弹框表单 */
var isWebSiteFormNew = !!(
/inquiry/i.test(ele.className) && ele.querySelector('form')
);
if (isWebSiteForm || isWebSiteFormNew) {
_paq.push(['trackEvent', 'formInquiry', 'formInput', 'page']);
setInputTrackId();
return;
}
/** Mkt会话触达-聊天弹框的表单输入: MKT由于是iframe嵌入,所以MKT的上报,会单独写到MKT-form代码上 */
var isInquiryChatForm = !!(
/comp-form/i.test(ele.className) && ele.querySelector('form')
);
if (isInquiryChatForm) {
_paq.push(['trackEvent', 'formInquiry', 'formInput', 'chat']);
setInputTrackId();
return;
}
/** 向上查找父节点 */
ele = ele.parentNode;
}
};
function initInputListener() {
var inputUseDebounce = function (fn, delay) {
var timer = null;
var that = this;
return function () {
var args = Array.prototype.slice.call(arguments);
if (timer) clearTimeout(timer);
timer = setTimeout(function () {
fn.apply(that, args);
}, delay);
};
};
var optimizeGetInputDom = inputUseDebounce(getInputDom, 300);
window.addEventListener('input', function (e) {
/** 如果已经上报过,则不再上报 */
if (lockTrackInput()) return;
optimizeGetInputDom(e.target);
});
}
try {
initInputListener();
} catch (error) {
console.log('initInputListener Error', error);
}
}
trackActionInput();
}
/** 第三方消息上报:目前主要是针对全点托管会话;在msgCollect/index.js中调试,访问test.html */
function thirdMsgCollect() {
/** 先检测是否是stayReal托管:如果stayReal脚本都没有,那么说明当前站点未开启stayReal会话托管 */
const scriptList = Array.prototype.slice.call(
document.querySelectorAll('script'),
);
const checkStayReal = () =>
!!scriptList.find((s) => s.src.includes('stayreal.xiaoman.cn'));
if (!checkStayReal()) return;
/** 缓存当前消息队列的最后一条消息id */
const CACHE_KEY = 'CACHE_KEY_MONITOR';
const setCache = (msgIndex) => {
/** 对缓存KEY进行base64转码处理 */
const cacheMsgIndex = btoa(msgIndex);
localStorage.setItem(CACHE_KEY, cacheMsgIndex);
};
const getCache = () => {
const cacheMsgIndex = localStorage.getItem(CACHE_KEY);
if (cacheMsgIndex) return Number(atob(cacheMsgIndex));
return -1;
};
/** 拉取最新msg列表 */
const pullMsgList = () => {
const msgEleList = Array.prototype.slice.call(
document.querySelectorAll('#chat-list li'),
);
const msgIds = [];
const msgMap = msgEleList.reduce((acc, item) => {
const sendTime = item
.querySelector('.message-data-time')
.textContent.trim();
const sendContent = item.querySelector('.message').textContent.trim();
/** msg带有class:other-message的是访客消息,my-message的是客服消息 */
const isOtherMessage = item
.querySelector('.message')
.classList.contains('other-message');
const msgId = item.querySelector('.message').getAttribute('id');
const msgItemData = {
msgId,
user: isOtherMessage ? 'visitor' : 'official',
time: sendTime,
content: sendContent,
};
msgIds.push(msgId);
acc[msgId] = msgItemData;
return acc;
}, {});
return {
ids: msgIds,
dataMap: msgMap,
};
};
/** 加密并上传消息数据 */
let ENCRYPT_KEY = 'de29f1aab63ab033';
let ENCRYPT_IV = 'b8d2badf875e76ac';
const baseUrl = 'https://cms.xiaoman.cn';
// var getEncryptConfig = function () {
// const url = baseUrl + '/shop-api/innerApi/getKeyIv'
// $.get(
// url,
// function (result) {
// console.log('result', result)
// if (Number(result.code) === 0 && result.data.key && result.data.iv) {
// ENCRYPT_KEY = result.data.key
// ENCRYPT_IV = result.data.iv
// uploadMsgData()
// } else {
// /** 如果获取失败,则重试 */
// setTimeout(() => {
// getEncryptConfig()
// }, 1000)
// }
// },
// 'json'
// )
// }
// getEncryptConfig()
const encryptMsg = function (msgData) {
const enc = new TextEncoder();
// 转字节
const keyBytes = enc.encode(ENCRYPT_KEY);
const ivBytes = enc.encode(ENCRYPT_IV);
const plainBytes = enc.encode(msgData);
// 导入密钥并加密
return crypto.subtle
.importKey('raw', keyBytes, { name: 'AES-CBC' }, false, ['encrypt'])
.then(function (cryptoKey) {
return crypto.subtle.encrypt(
{ name: 'AES-CBC', iv: ivBytes },
cryptoKey,
plainBytes,
);
})
.then(function (encryptedBuffer) {
// 转 base64 返回
return btoa(
String.fromCharCode(...new Uint8Array(encryptedBuffer)),
);
})
.catch((err) => {
return Promise.reject(err);
});
};
let uploadFlag = false;
const uploadMsgData = function () {
if (uploadFlag) return;
uploadFlag = true;
const { ids, dataMap } = pullMsgList();
let cacheMsgIndex = getCache();
const msgLen = ids.length;
if (!msgLen) {
// 消息DOM未挂载 || 消息DOM已挂载,但是消息列表为空
uploadFlag = false;
return;
}
if (msgLen - 1 < cacheMsgIndex) {
/** 针对站点挂后台一段时间,消息列表会自动塞入重复消息,导致消息有重复,刷新后又重置回正常消息列表,所以这里需要更新锚点下标 */
cacheMsgIndex = msgLen - 1;
setCache(cacheMsgIndex);
uploadFlag = false;
return;
}
if (msgLen - 1 === cacheMsgIndex) {
// 缓存的最后一次发送的消息ID是最后一条(说明当前消息均已经上报),则不跳过本地上报
uploadFlag = false;
return;
}
const currentMsgIds = ids.slice(cacheMsgIndex + 1, msgLen);
const currentMsgData = currentMsgIds.map((id) => dataMap[id]);
const mtmId = window.matomo_site_id_cookie_key || ''; // 获取mtm会话id
const msgBody = {
mtmId,
curl: window.location.href,
msgList: currentMsgData,
};
const msgBodyStr = JSON.stringify(msgBody);
encryptMsg(msgBodyStr)
.then(function (encryptedMsg) {
console.log('encryptedMsg:', encryptedMsg, msgBodyStr);
const url = baseUrl + '/shop-api/External/ListenSiteActiveStatus';
$.ajax({
type: 'POST',
url,
data: JSON.stringify({ d_v: encryptedMsg }),
contentType: 'application/json',
success: function (result) {
if (Number(result.code) === 0) {
// 更新消息队列
setCache(msgLen - 1);
}
uploadFlag = false;
},
error: function (err) {
console.error(err, '请求异常');
uploadFlag = false;
},
});
})
.catch((err) => {
console.error(err, '数据加密失败');
uploadFlag = false;
});
};
/** 监控chat-list的DOM变更 */
const initChatListObserver = () => {
// 需要监听的 DOM 节点
const target = document.getElementById('chat-list');
if (!target) return;
// 回调函数
const callback = function (mutationsList, observer) {
for (const mutation of mutationsList) {
console.log('mutation', mutation);
if (mutation.type === 'childList') {
uploadMsgData();
}
}
};
// 配置
const config = {
childList: true, // 监听子节点的增删
subtree: true, // 是否也监听后代节点
};
// 创建 observer
const observer = new MutationObserver(callback);
// 开始监听
observer.observe(target, config);
};
let testCount = 30;
let itv = null;
const checkChatDom = () => !!document.querySelector('#vc-model');
const initTalkCheck = () => {
itv = setTimeout(() => {
console.log('checkChatDom', checkChatDom(), testCount);
if (!checkChatDom() && testCount > 0) {
testCount--;
initTalkCheck();
return;
}
clearTimeout(itv);
uploadMsgData();
initChatListObserver();
}, 1500);
};
initTalkCheck();
}
try {
gtmTrack();
thirdMsgCollect();
console.log('inserted gtm code');
} catch (error) {
console.error('gtmTrack Error', error);
}
});
})();
Hejmpaĝo /
Jen la tuta obskurigo estas nova kamera kiu permesas al ni resti bone efektivigitaj kaj sekuraj. Kun nomo digna de James Bond, tiu kamera vere nomiĝas android terma bildigilo --kaj la entrepreno malantaŭ ĝi estas LSJ Technology. Kaj ili ofertas ĉi tiun koolan ilon kiel OpenSource. Legu plu por lerni kiel tiu mirinda Kamera funkcias por ni. Ĉu iam vidis en filmo kiam la espiono aŭ speciala agento uzas sekretan kameron por vidi kie la malbonuloj kaŝiĝas? Ĝi aspektas tiel koolo, ĉu ne? Nun vi povas eksperimenti tiun potencon unue mane kun mobil terma kamera por android ! Tiu ĉi estas speciala, ĉar ĝi elpafas varmon anstataŭ lumo. Do, eĉ en la mezo de totala nigra nokto kaj multe da fumo de vulkanaj ekstermadoj, ĝi ankoraŭ povas havi vidon. Do tiam kial tia ĉeblaĵo pri tiu kamera? Ĝi montras al vi aĵojn kiujn viaj okuloj neniam vidos. Ekzemple, se vi estas en la bosko je nokto kaj iu mankas, vi povus serĉi lin/ŝin per tiu termokamera. Volas trovi vian animon en la mallumo se ĝi eliras neatente? Vi povas uzi ĝin por detekti filtradon kaŝitan en la tubaro de via domo kaj tio eble helpos eviti malagrablajn surprizojn poste. La movileco de la varmkameraj kameraj ne limiĝas nur al vido en mallumo. Pro pluraj kialoj ŝajnas ke ili igas nin pli sekuraj. Unu apliko povus esti ke brulkampistoj uzos tiujn kamerajn por trovi varmajn punktojn en fajro malfrue en muroj aŭ tegmentoj. Tio permesas al ili eksterigi fajrojn pli sekure. Tiuj kameraj estas uzataj de policanoj por atrapigi homojn, kiuj provas eviti ilin aŭ fuĝi el iliaj okuloj. Vi ankaŭ povas uzi ilin por monitori grandajn spacojn kaj scii, ĉu ekzistas iu ebla danĝero aŭ problemo tie, do se vi estas gardisto kaj via entrepreno posedas dronojn, ĉi tie ili... Tamen, tio ne estas kamera, kiun nur profesiaj fotografoj aprezas! Tiujn samajn kamerajn vi ankaŭ povas uzi! Imaginu tion — ĉu iam vi estis timema promenante sola nokte? Uzu varmkameran kameron por serĉi iun, kiu kaŝiĝas en la areo ĉirkaŭ vi. Tio nur donas al vi la tranqvilitecon, kiun vi bezonas, kiam vi estas sole kaj sentas vin pli sekura. Kiel Funkcias Mobilaj Termaj Bildigiloj? La NIGHTSEA™ Predator uzas specifajn senzorojn, kiuj donas al ĝi la eblon determini kiom da varmo estas elsendita de diversaj objektoj. Kiam ĝi detektas la varmon, ĝi prezentas tiun datumon kiel vive kolorigitan bildon. Tiu bildo montras al vi la plej varmajn kaj plej malvarmajn areojn. Kiel supernatura vidpovo! — Lachie Smith (@LockieSmit) 1-a de septembro 2020 Gi ankaŭ estas mobilaj, kio signifas ke vi povas porti la aparaton kun vi ie ajn vi iras. Tio permesas al vi uzi ĝin hejme, eksterhejme kaj eĉ dum vojaĝado. Ŝanĝo estas neevitebla, la mondo konstante evoluas kaj novaj iloj/teknologioj regulare elpensatas. Hodien pli ol iam antaŭe estas esence resti sekura kaj profitanta kun la ĝustaj iloj, do jen ili. Unu el la plej komfortaj aparatoj por plibonigi vian vivstilon estas pordatebla termala bildigilo. Tiu kamera helpas vin trovi kaŝitajn danĝerojn hejme, serĉi perditajn individuojn aŭ animaĵojn aŭ eĉ kontroli kie energiofugoj povas perdi vin elektroniko kaj mono. Ni provizas subtenon al Fajro- kaj Savdepartementoj, same kiel al Publikservoj pri Sekureco kaj al mobilaj termikaj bildigaj kameroj. LSJ provizas progresintajn aparatojn por lukti kontraŭ fajroj, efektivigi serĉo- kaj savoperaciojn kaj labori en danĝeraj medioj trans diversajn industriojn. Termikaj kameroj por fajrolukto: Ni esploris kaj dezajnis du tipojn de termikaj kameroj kun tri eblecoj de rezolucio: 256×192, 384×288 kaj 640×512. Ili povas monitori temperaturojn ĝis 2000 °C. Ekipaĵo por serĉo kaj savo: Ni havas gamon da produktoj, inkluzive de gasdetektiloj, stabilecdetektiloj kaj moviĝmonitoraj sistemoj. Industriaj termikaj kameroj: Krom termikaj kameroj por fajrolukto, LSJ ofertas porteblajn termikajn kamerojn por detekti akvolekojn, konstrua inspektado, elektronika riparo, varmoperdojn en plankvarmigo kaj inspekton de HVAC-sistemoj. Termikaj teleskopo: Niaj noktovidaj optikoj estas perfektaj por noktovido en la nokto. Ili ankaŭ estas popularaj inter ĉasistoj. Ili facile montiĝas sur fusilojn. LSJ dediĉas sin al provizado de alta-kvalita termika bildigo kaj savtekniko, kiuj plenumas la postulojn de diversaj industrioj, plibonigante efikecon kaj sekurecon. Elektu LSJ por la plej sofistikaj kaj efikaj solvoj. Fidu je LSJ kiel via ĉefa partnero en la kampo de urbaj serĉo- kaj savoperacioj. Ĉe LSJ ni estas ekspertoj pri produktado de urbaj serĉo- kaj saviloj de plej alta kvalito, dezajnitaj por plenumi la plej altajn internaciajn normojn.
Antaŭvendaj Servoj:
Ni estas ĉi tie por helpi vin jam ekde la komenco. Ni provizas kompletajn konsultojn, tiel ke ni povu plene kompreni viajn bezonojn kaj oferti solvojn. Ni ankaŭ prezentas demonstraciojn de produktoj kune kun detalah teknikaj specifoj, tiel ke vi havu ĉion la necesa informo por fari informitan decidon.
Vendaj Servoj:
Dum la vendprocezo ni garantias mobilan termikan bildigilon kaj efikan sperton. Ni garantias, ke viaj produktoj alvenos ĝuste en tempo kaj en perfekta stato dank' al nia aŭtomatigita ordosistemo kaj strikta kvalitkontrolo. Ni ankaŭ subtenas liveradon pord-al-pordo.
Postvendaj Servoj:
Post kiam vi ricevis viajn varojn, nia kunlaboro kun vi ne finiĝos. Niaj vastaj postvendaj servoj inkluzivas subtenon pri instalo, uzantotrainado kaj prizorgado. Nia klienta servodepartemento estas ĉiam disponebla por solvi ajn demandojn aŭ zorgojn, kiujn vi povus havi, por certigi vian plenan kontenton. Post kiam vi aĉetos ekipaĵon de LSJ, ni donos tri-jaran garantion, kaj vi povos akiri specifajn postvendajn servojn de ni.
La elekto de LSJ estas elekto de fido, kvalito kaj senekvivalenta subteno. Ni atendas kun ĝojo esti via partnero en urbaj serĉo- kaj savoperacioj, same kiel ĉe incendiofunkciuloj. Ni ĉe LSJ scias, kiom gravas oferti al niaj klientoj produktojn de plej alta kvalito kaj mobilan termikan bildigilan kameron. Ni ofertas garantiojn de unu aŭ kvin jaroj, kio reflektas nian konvinkon pri la longdaŭra durableco kaj performo de niaj produktoj. Nia substanca investo en esplorado kaj evoluo garantias, ke viaj produktoj plenumas la plej altajn normojn. Kiel produktanta kompanio, ni sekvas rigoran kvalitkontrolon, komencante de brutmaterialoj ĝis la fino de la produktado. Ĉu vi estas privata kliento, distribuisto, tenderopartoprenanto aŭ registara instanco, ni ofertas larĝan gamon da produktoj, kiuj plenumas viajn postulojn. Nia stoko de brutmaterialoj, komponantoj kaj aliaj artikoloj estas sufiĉe granda por garantii tempan liveradon. Se ni ne liveras tempe, ni komitiĝas refundi al niaj klientoj ĝis 2–50 % de la tuta ordovaloro. Ni ofertas al vi detalan instruon kaj videojn, kiuj helpos vin uzi niajn produktojn efike. Ni ankaŭ povas organizi personan teknikan trejnadon surloke, adaptitan al viaj postuloj, por certigi, ke vi povos uzi niajn produktojn kun fido kaj facileco. Elektu LSJ por produktoj de alta kvalito kaj fidindeco, kaj por eksterordinara klienta servo. Ekde 2013, LSJ evoluigas fabrikadon, provizon kaj vendon de alta-performa serĉo- kaj sav-equipaĵo kaj fajrobrigadistaj equipaĵoj. LSJ ricevis certigojn de ISO9001, CE kaj ROHS. Plie, ĝi posedas pli ol 30 patentojn. Kiel gvidanta entrepreno, ni investas signife en nian dezignan kaj esplordepartementon. LSJ partoprenis en kvar gravaj eventoj en 2024: INTERSEC, Securika, 18-a Defence Services Asia kaj 3-a National Security Asia en Malajzio, kaj NFPA en Usono. Ni ankaŭ estas registritaj por partopreni en INTERSEC pri mobilaj termikaj bildigaj kameroj de la 14-a ĝis la 16-a de januaro 2025, kie ni montras nian vivdetektilon per radaro, 3D-radaron kapablan penetri murojn, gasdetektilon, audio- kaj videolistentan equipaĵon, stabilecmonitoran equipaĵon kaj termikajn kamerojn por lukti kontraŭ incendioj. Ni varme invitas vin viziti nian stalon. LSJ havas pli ol 11-jaran ekspertoncon pri fabrikado. Ĝi specialiĝas pri kreado kaj fabrikado de novaj produktoj bazitaj sur la uzokondiĉoj de klientoj. Ĝi ankaŭ daŭre plibonigas kapablojn kaj malaltigas kostojn de produktoj. LSJ havas riĉan ekspertoncon pri urbaj savoperacioj kaj serĉado. Ekzemple, dum la teruraj tertremoj en Turkio en 2023 la radara vivdetektilo de LSJ ludis vitalan rolon en la savoperacioj faritaj de la ĉina Blua Ĉielo Savteamo. Elektu LSJ por fidindaj, progresintaj solvoj adaptitaj al viaj specifaj bezonoj. Tutaj Rajtoj Rezervitaj © Pekino LSJ Teknologia Disvolvigo Konsiliumo, Ltd.
-
Politiko pri Privateco
mova termika bildkamero
Plibonigante sekurecon kaj tutsekurecon per mobilaj termikaj bildagentoj

Mobilaj Termikaj Bildagentaj Solvoj

Restu Antaŭen kun Portebla Termika Bildagento

Fortikante Profesiajn Kapablojn per Porteblaj Termikaj Bildagentaj Teknologioj
Why choose LSJ Technology mova termika bildkamero?
Plena langeto pri urba serĉado kaj subveno: ĉeĥoj de provizado de ekipmento
Kial LSJ Povas Estar Via Unua Manufakciulo kaj Furnacistino?
Garantado de kvalito kaj puntualeco: la ĝisdatigo de LSJ pri klienta kontento
Inovanta alta-prestiga serĉa kaj salvadoa aparataro fabrikanto
Rilataj kategorioj de produktoj
Ĉu vi ne trovas tion, kion vi serĉas?
Sendu peton pri oferto nun
Kontaktu niajn konsultantojn por pli da haveblaj produktoj.Kontaktu nin