/*! elementor - v3.16.0 - 14-09-2023 */ "use strict"; (self["webpackChunkelementor"] = self["webpackChunkelementor"] || []).push([["accordion"],{ /***/ "../assets/dev/js/frontend/handlers/accordion.js": /*!*******************************************************!*\ !*** ../assets/dev/js/frontend/handlers/accordion.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _baseTabs = _interopRequireDefault(__webpack_require__(/*! ./base-tabs */ "../assets/dev/js/frontend/handlers/base-tabs.js")); class Accordion extends _baseTabs.default { getDefaultSettings() { const defaultSettings = super.getDefaultSettings(); return { ...defaultSettings, showTabFn: 'slideDown', hideTabFn: 'slideUp' }; } } exports["default"] = Accordion; /***/ }), /***/ "../assets/dev/js/frontend/handlers/base-tabs.js": /*!*******************************************************!*\ !*** ../assets/dev/js/frontend/handlers/base-tabs.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; class baseTabs extends elementorModules.frontend.handlers.Base { getDefaultSettings() { return { selectors: { tablist: '[role="tablist"]', tabTitle: '.elementor-tab-title', tabContent: '.elementor-tab-content' }, classes: { active: 'elementor-active' }, showTabFn: 'show', hideTabFn: 'hide', toggleSelf: true, hidePrevious: true, autoExpand: true, keyDirection: { ArrowLeft: elementorFrontendConfig.is_rtl ? 1 : -1, ArrowUp: -1, ArrowRight: elementorFrontendConfig.is_rtl ? -1 : 1, ArrowDown: 1 } }; } getDefaultElements() { const selectors = this.getSettings('selectors'); return { $tabTitles: this.findElement(selectors.tabTitle), $tabContents: this.findElement(selectors.tabContent) }; } activateDefaultTab() { const settings = this.getSettings(); if (!settings.autoExpand || 'editor' === settings.autoExpand && !this.isEdit) { return; } const defaultActiveTab = this.getEditSettings('activeItemIndex') || 1, originalToggleMethods = { showTabFn: settings.showTabFn, hideTabFn: settings.hideTabFn }; // Toggle tabs without animation to avoid jumping this.setSettings({ showTabFn: 'show', hideTabFn: 'hide' }); this.changeActiveTab(defaultActiveTab); // Return back original toggle effects this.setSettings(originalToggleMethods); } handleKeyboardNavigation(event) { const tab = event.currentTarget, $tabList = jQuery(tab.closest(this.getSettings('selectors').tablist)), // eslint-disable-next-line @wordpress/no-unused-vars-before-return $tabs = $tabList.find(this.getSettings('selectors').tabTitle), isVertical = 'vertical' === $tabList.attr('aria-orientation'); switch (event.key) { case 'ArrowLeft': case 'ArrowRight': if (isVertical) { return; } break; case 'ArrowUp': case 'ArrowDown': if (!isVertical) { return; } event.preventDefault(); break; case 'Home': event.preventDefault(); $tabs.first().trigger('focus'); return; case 'End': event.preventDefault(); $tabs.last().trigger('focus'); return; default: return; } const tabIndex = tab.getAttribute('data-tab') - 1, direction = this.getSettings('keyDirection')[event.key], nextTab = $tabs[tabIndex + direction]; if (nextTab) { nextTab.focus(); } else if (-1 === tabIndex + direction) { $tabs.last().trigger('focus'); } else { $tabs.first().trigger('focus'); } } deactivateActiveTab(tabIndex) { const settings = this.getSettings(), activeClass = settings.classes.active, activeFilter = tabIndex ? '[data-tab="' + tabIndex + '"]' : '.' + activeClass, $activeTitle = this.elements.$tabTitles.filter(activeFilter), $activeContent = this.elements.$tabContents.filter(activeFilter); $activeTitle.add($activeContent).removeClass(activeClass); $activeTitle.attr({ tabindex: '-1', 'aria-selected': 'false', 'aria-expanded': 'false' }); $activeContent[settings.hideTabFn](); $activeContent.attr('hidden', 'hidden'); } activateTab(tabIndex) { const settings = this.getSettings(), activeClass = settings.classes.active, $requestedTitle = this.elements.$tabTitles.filter('[data-tab="' + tabIndex + '"]'), $requestedContent = this.elements.$tabContents.filter('[data-tab="' + tabIndex + '"]'), animationDuration = 'show' === settings.showTabFn ? 0 : 400; $requestedTitle.add($requestedContent).addClass(activeClass); $requestedTitle.attr({ tabindex: '0', 'aria-selected': 'true', 'aria-expanded': 'true' }); $requestedContent[settings.showTabFn](animationDuration, () => elementorFrontend.elements.$window.trigger('elementor-pro/motion-fx/recalc')); $requestedContent.removeAttr('hidden'); } isActiveTab(tabIndex) { return this.elements.$tabTitles.filter('[data-tab="' + tabIndex + '"]').hasClass(this.getSettings('classes.active')); } bindEvents() { this.elements.$tabTitles.on({ keydown: event => { // Support for old markup that includes an `` tag in the tab if (jQuery(event.target).is('a') && `Enter` === event.key) { event.preventDefault(); } // We listen to keydowon event for these keys in order to prevent undesired page scrolling if (['End', 'Home', 'ArrowUp', 'ArrowDown'].includes(event.key)) { this.handleKeyboardNavigation(event); } }, keyup: event => { switch (event.code) { case 'ArrowLeft': case 'ArrowRight': this.handleKeyboardNavigation(event); break; case 'Enter': case 'Space': event.preventDefault(); this.changeActiveTab(event.currentTarget.getAttribute('data-tab')); break; } }, click: event => { event.preventDefault(); this.changeActiveTab(event.currentTarget.getAttribute('data-tab')); } }); } onInit() { super.onInit(...arguments); this.activateDefaultTab(); } onEditSettingsChange(propertyName) { if ('activeItemIndex' === propertyName) { this.activateDefaultTab(); } } changeActiveTab(tabIndex) { const isActiveTab = this.isActiveTab(tabIndex), settings = this.getSettings(); if ((settings.toggleSelf || !isActiveTab) && settings.hidePrevious) { this.deactivateActiveTab(); } if (!settings.hidePrevious && isActiveTab) { this.deactivateActiveTab(tabIndex); } if (!isActiveTab) { this.activateTab(tabIndex); } } } exports["default"] = baseTabs; /***/ }) }]); //# sourceMappingURL=accordion.c16b88b2e8a0c50189bc.bundle.js.map(function(e,t){"use strict";var n=e.History=e.History||{},r=e.jQuery;if(typeof n.Adapter!="undefined")throw new Error("History.js Adapter has already been loaded...");n.Adapter={bind:function(e,t,n){r(e).bind(t,n)},trigger:function(e,t,n){r(e).trigger(t,n)},extractEventData:function(e,n,r){var i=n&&n.originalEvent&&n.originalEvent[e]||r&&r[e]||t;return i},onDomLoad:function(e){r(e)}},typeof n.init!="undefined"&&n.init()})(window),function(e,t){"use strict";var n=e.console||t,r=e.document,i=e.navigator,s=!1,o=e.setTimeout,u=e.clearTimeout,a=e.setInterval,f=e.clearInterval,l=e.JSON,c=e.alert,h=e.History=e.History||{},p=e.history;try{s=e.sessionStorage,s.setItem("TEST","1"),s.removeItem("TEST")}catch(d){s=!1}l.stringify=l.stringify||l.encode,l.parse=l.parse||l.decode;if(typeof h.init!="undefined")throw new Error("History.js Core has already been loaded...");h.init=function(e){return typeof h.Adapter=="undefined"?!1:(typeof h.initCore!="undefined"&&h.initCore(),typeof h.initHtml4!="undefined"&&h.initHtml4(),!0)},h.initCore=function(d){if(typeof h.initCore.initialized!="undefined")return!1;h.initCore.initialized=!0,h.options=h.options||{},h.options.hashChangeInterval=h.options.hashChangeInterval||100,h.options.safariPollInterval=h.options.safariPollInterval||500,h.options.doubleCheckInterval=h.options.doubleCheckInterval||500,h.options.disableSuid=h.options.disableSuid||!1,h.options.storeInterval=h.options.storeInterval||1e3,h.options.busyDelay=h.options.busyDelay||250,h.options.debug=h.options.debug||!1,h.options.initialTitle=h.options.initialTitle||r.title,h.options.html4Mode=h.options.html4Mode||!1,h.options.delayInit=h.options.delayInit||!1,h.intervalList=[],h.clearAllIntervals=function(){var e,t=h.intervalList;if(typeof t!="undefined"&&t!==null){for(e=0;e")&&n[0]);return e>4?e:!1}();return e},h.isInternetExplorer=function(){var e=h.isInternetExplorer.cached=typeof h.isInternetExplorer.cached!="undefined"?h.isInternetExplorer.cached:Boolean(h.getInternetExplorerMajorVersion());return e},h.options.html4Mode?h.emulated={pushState:!0,hashChange:!0}:h.emulated={pushState:!Boolean(e.history&&e.history.pushState&&e.history.replaceState&&!/ Mobile\/([1-7][a-z]|(8([abcde]|f(1[0-8]))))/i.test(i.userAgent)&&!/AppleWebKit\/5([0-2]|3[0-2])/i.test(i.userAgent)),hashChange:Boolean(!("onhashchange"in e||"onhashchange"in r)||h.isInternetExplorer()&&h.getInternetExplorerMajorVersion()<8)},h.enabled=!h.emulated.pushState,h.bugs={setHash:Boolean(!h.emulated.pushState&&i.vendor==="Apple Computer, Inc."&&/AppleWebKit\/5([0-2]|3[0-3])/.test(i.userAgent)),safariPoll:Boolean(!h.emulated.pushState&&i.vendor==="Apple Computer, Inc."&&/AppleWebKit\/5([0-2]|3[0-3])/.test(i.userAgent)),ieDoubleCheck:Boolean(h.isInternetExplorer()&&h.getInternetExplorerMajorVersion()<8),hashEscape:Boolean(h.isInternetExplorer()&&h.getInternetExplorerMajorVersion()<7)},h.isEmptyObject=function(e){for(var t in e)if(e.hasOwnProperty(t))return!1;return!0},h.cloneObject=function(e){var t,n;return e?(t=l.stringify(e),n=l.parse(t)):n={},n},h.getRootUrl=function(){var e=r.location.protocol+"//"+(r.location.hostname||r.location.host);if(r.location.port||!1)e+=":"+r.location.port;return e+="/",e},h.getBaseHref=function(){var e=r.getElementsByTagName("base"),t=null,n="";return e.length===1&&(t=e[0],n=t.href.replace(/[^\/]+$/,"")),n=n.replace(/\/+$/,""),n&&(n+="/"),n},h.getBaseUrl=function(){var e=h.getBaseHref()||h.getBasePageUrl()||h.getRootUrl();return e},h.getPageUrl=function(){var e=h.getState(!1,!1),t=(e||{}).url||h.getLocationHref(),n;return n=t.replace(/\/+$/,"").replace(/[^\/]+$/,function(e,t,n){return/\./.test(e)?e:e+"/"}),n},h.getBasePageUrl=function(){var e=h.getLocationHref().replace(/[#\?].*/,"").replace(/[^\/]+$/,function(e,t,n){return/[^\/]$/.test(e)?"":e}).replace(/\/+$/,"")+"/";return e},h.getFullUrl=function(e,t){var n=e,r=e.substring(0,1);return t=typeof t=="undefined"?!0:t,/[a-z]+\:\/\//.test(e)||(r==="/"?n=h.getRootUrl()+e.replace(/^\/+/,""):r==="#"?n=h.getPageUrl().replace(/#.*/,"")+e:r==="?"?n=h.getPageUrl().replace(/[\?#].*/,"")+e:t?n=h.getBaseUrl()+e.replace(/^(\.\/)+/,""):n=h.getBasePageUrl()+e.replace(/^(\.\/)+/,"")),n.replace(/\#$/,"")},h.getShortUrl=function(e){var t=e,n=h.getBaseUrl(),r=h.getRootUrl();return h.emulated.pushState&&(t=t.replace(n,"")),t=t.replace(r,"/"),h.isTraditionalAnchor(t)&&(t="./"+t),t=t.replace(/^(\.\/)+/g,"./").replace(/\#$/,""),t},h.getLocationHref=function(e){return e=e||r,e.URL===e.location.href?e.location.href:e.location.href===decodeURIComponent(e.URL)?e.URL:e.location.hash&&decodeURIComponent(e.location.href.replace(/^[^#]+/,""))===e.location.hash?e.location.href:e.URL.indexOf("#")==-1&&e.location.href.indexOf("#")!=-1?e.location.href:e.URL||e.location.href},h.store={},h.idToState=h.idToState||{},h.stateToId=h.stateToId||{},h.urlToId=h.urlToId||{},h.storedStates=h.storedStates||[],h.savedStates=h.savedStates||[],h.normalizeStore=function(){h.store.idToState=h.store.idToState||{},h.store.urlToId=h.store.urlToId||{},h.store.stateToId=h.store.stateToId||{}},h.getState=function(e,t){typeof e=="undefined"&&(e=!0),typeof t=="undefined"&&(t=!0);var n=h.getLastSavedState();return!n&&t&&(n=h.createStateObject()),e&&(n=h.cloneObject(n),n.url=n.cleanUrl||n.url),n},h.getIdByState=function(e){var t=h.extractId(e.url),n;if(!t){n=h.getStateString(e);if(typeof h.stateToId[n]!="undefined")t=h.stateToId[n];else if(typeof h.store.stateToId[n]!="undefined")t=h.store.stateToId[n];else{for(;;){t=(new Date).getTime()+String(Math.random()).replace(/\D/g,"");if(typeof h.idToState[t]=="undefined"&&typeof h.store.idToState[t]=="undefined")break}h.stateToId[n]=t,h.idToState[t]=e}}return t},h.normalizeState=function(e){var t,n;if(!e||typeof e!="object")e={};if(typeof e.normalized!="undefined")return e;if(!e.data||typeof e.data!="object")e.data={};return t={},t.normalized=!0,t.title=e.title||"",t.url=h.getFullUrl(e.url?e.url:h.getLocationHref()),t.hash=h.getShortUrl(t.url),t.data=h.cloneObject(e.data),t.id=h.getIdByState(t),t.cleanUrl=t.url.replace(/\??\&_suid.*/,""),t.url=t.cleanUrl,n=!h.isEmptyObject(t.data),(t.title||n)&&h.options.disableSuid!==!0&&(t.hash=h.getShortUrl(t.url).replace(/\??\&_suid.*/,""),/\?/.test(t.hash)||(t.hash+="?"),t.hash+="&_suid="+t.id),t.hashedUrl=h.getFullUrl(t.hash),(h.emulated.pushState||h.bugs.safariPoll)&&h.hasUrlDuplicate(t)&&(t.url=t.hashedUrl),t},h.createStateObject=function(e,t,n){var r={data:e,title:t,url:n};return r=h.normalizeState(r),r},h.getStateById=function(e){e=String(e);var n=h.idToState[e]||h.store.idToState[e]||t;return n},h.getStateString=function(e){var t,n,r;return t=h.normalizeState(e),n={data:t.data,title:e.title,url:e.url},r=l.stringify(n),r},h.getStateId=function(e){var t,n;return t=h.normalizeState(e),n=t.id,n},h.getHashByState=function(e){var t,n;return t=h.normalizeState(e),n=t.hash,n},h.extractId=function(e){var t,n,r,i;return e.indexOf("#")!=-1?i=e.split("#")[0]:i=e,n=/(.*)\&_suid=([0-9]+)$/.exec(i),r=n?n[1]||e:e,t=n?String(n[2]||""):"",t||!1},h.isTraditionalAnchor=function(e){var t=!/[\/\?\.]/.test(e);return t},h.extractState=function(e,t){var n=null,r,i;return t=t||!1,r=h.extractId(e),r&&(n=h.getStateById(r)),n||(i=h.getFullUrl(e),r=h.getIdByUrl(i)||!1,r&&(n=h.getStateById(r)),!n&&t&&!h.isTraditionalAnchor(e)&&(n=h.createStateObject(null,null,i))),n},h.getIdByUrl=function(e){var n=h.urlToId[e]||h.store.urlToId[e]||t;return n},h.getLastSavedState=function(){return h.savedStates[h.savedStates.length-1]||t},h.getLastStoredState=function(){return h.storedStates[h.storedStates.length-1]||t},h.hasUrlDuplicate=function(e){var t=!1,n;return n=h.extractState(e.url),t=n&&n.id!==e.id,t},h.storeState=function(e){return h.urlToId[e.url]=e.id,h.storedStates.push(h.cloneObject(e)),e},h.isLastSavedState=function(e){var t=!1,n,r,i;return h.savedStates.length&&(n=e.id,r=h.getLastSavedState(),i=r.id,t=n===i),t},h.saveState=function(e){return h.isLastSavedState(e)?!1:(h.savedStates.push(h.cloneObject(e)),!0)},h.getStateByIndex=function(e){var t=null;return typeof e=="undefined"?t=h.savedStates[h.savedStates.length-1]:e<0?t=h.savedStates[h.savedStates.length+e]:t=h.savedStates[e],t},h.getCurrentIndex=function(){var e=null;return h.savedStates.length<1?e=0:e=h.savedStates.length-1,e},h.getHash=function(e){var t=h.getLocationHref(e),n;return n=h.getHashByUrl(t),n},h.unescapeHash=function(e){var t=h.normalizeHash(e);return t=decodeURIComponent(t),t},h.normalizeHash=function(e){var t=e.replace(/[^#]*#/,"").replace(/#.*/,"");return t},h.setHash=function(e,t){var n,i;return t!==!1&&h.busy()?(h.pushQueue({scope:h,callback:h.setHash,args:arguments,queue:t}),!1):(h.busy(!0),n=h.extractState(e,!0),n&&!h.emulated.pushState?h.pushState(n.data,n.title,n.url,!1):h.getHash()!==e&&(h.bugs.setHash?(i=h.getPageUrl(),h.pushState(null,null,i+"#"+e,!1)):r.location.hash=e),h)},h.escapeHash=function(t){var n=h.normalizeHash(t);return n=e.encodeURIComponent(n),h.bugs.hashEscape||(n=n.replace(/\%21/g,"!").replace(/\%26/g,"&").replace(/\%3D/g,"=").replace(/\%3F/g,"?")),n},h.getHashByUrl=function(e){var t=String(e).replace(/([^#]*)#?([^#]*)#?(.*)/,"$2");return t=h.unescapeHash(t),t},h.setTitle=function(e){var t=e.title,n;t||(n=h.getStateByIndex(0),n&&n.url===e.url&&(t=n.title||h.options.initialTitle));try{r.getElementsByTagName("title")[0].innerHTML=t.replace("<","<").replace(">",">").replace(" & "," & ")}catch(i){}return r.title=t,h},h.queues=[],h.busy=function(e){typeof e!="undefined"?h.busy.flag=e:typeof h.busy.flag=="undefined"&&(h.busy.flag=!1);if(!h.busy.flag){u(h.busy.timeout);var t=function(){var e,n,r;if(h.busy.flag)return;for(e=h.queues.length-1;e>=0;--e){n=h.queues[e];if(n.length===0)continue;r=n.shift(),h.fireQueueItem(r),h.busy.timeout=o(t,h.options.busyDelay)}};h.busy.timeout=o(t,h.options.busyDelay)}return h.busy.flag},h.busy.flag=!1,h.fireQueueItem=function(e){return e.callback.apply(e.scope||h,e.args||[])},h.pushQueue=function(e){return h.queues[e.queue||0]=h.queues[e.queue||0]||[],h.queues[e.queue||0].push(e),h},h.queue=function(e,t){return typeof e=="function"&&(e={callback:e}),typeof t!="undefined"&&(e.queue=t),h.busy()?h.pushQueue(e):h.fireQueueItem(e),h},h.clearQueue=function(){return h.busy.flag=!1,h.queues=[],h},h.stateChanged=!1,h.doubleChecker=!1,h.doubleCheckComplete=function(){return h.stateChanged=!0,h.doubleCheckClear(),h},h.doubleCheckClear=function(){return h.doubleChecker&&(u(h.doubleChecker),h.doubleChecker=!1),h},h.doubleCheck=function(e){return h.stateChanged=!1,h.doubleCheckClear(),h.bugs.ieDoubleCheck&&(h.doubleChecker=o(function(){return h.doubleCheckClear(),h.stateChanged||e(),!0},h.options.doubleCheckInterval)),h},h.safariStatePoll=function(){var t=h.extractState(h.getLocationHref()),n;if(!h.isLastSavedState(t))return n=t,n||(n=h.createStateObject()),h.Adapter.trigger(e,"popstate"),h;return},h.back=function(e){return e!==!1&&h.busy()?(h.pushQueue({scope:h,callback:h.back,args:arguments,queue:e}),!1):(h.busy(!0),h.doubleCheck(function(){h.back(!1)}),p.go(-1),!0)},h.forward=function(e){return e!==!1&&h.busy()?(h.pushQueue({scope:h,callback:h.forward,args:arguments,queue:e}),!1):(h.busy(!0),h.doubleCheck(function(){h.forward(!1)}),p.go(1),!0)},h.go=function(e,t){var n;if(e>0)for(n=1;n<=e;++n)h.forward(t);else{if(!(e<0))throw new Error("History.go: History.go requires a positive or negative integer passed.");for(n=-1;n>=e;--n)h.back(t)}return h};if(h.emulated.pushState){var v=function(){};h.pushState=h.pushState||v,h.replaceState=h.replaceState||v}else h.onPopState=function(t,n){var r=!1,i=!1,s,o;return h.doubleCheckComplete(),s=h.getHash(),s?(o=h.extractState(s||h.getLocationHref(),!0),o?h.replaceState(o.data,o.title,o.url,!1):(h.Adapter.trigger(e,"anchorchange"),h.busy(!1)),h.expectedStateId=!1,!1):(r=h.Adapter.extractEventData("state",t,n)||!1,r?i=h.getStateById(r):h.expectedStateId?i=h.getStateById(h.expectedStateId):i=h.extractState(h.getLocationHref()),i||(i=h.createStateObject(null,null,h.getLocationHref())),h.expectedStateId=!1,h.isLastSavedState(i)?(h.busy(!1),!1):(h.storeState(i),h.saveState(i),h.setTitle(i),h.Adapter.trigger(e,"statechange"),h.busy(!1),!0))},h.Adapter.bind(e,"popstate",h.onPopState),h.pushState=function(t,n,r,i){if(h.getHashByUrl(r)&&h.emulated.pushState)throw new Error("History.js does not support states with fragement-identifiers (hashes/anchors).");if(i!==!1&&h.busy())return h.pushQueue({scope:h,callback:h.pushState,args:arguments,queue:i}),!1;h.busy(!0);var s=h.createStateObject(t,n,r);return h.isLastSavedState(s)?h.busy(!1):(h.storeState(s),h.expectedStateId=s.id,p.pushState(s.id,s.title,s.url),h.Adapter.trigger(e,"popstate")),!0},h.replaceState=function(t,n,r,i){if(h.getHashByUrl(r)&&h.emulated.pushState)throw new Error("History.js does not support states with fragement-identifiers (hashes/anchors).");if(i!==!1&&h.busy())return h.pushQueue({scope:h,callback:h.replaceState,args:arguments,queue:i}),!1;h.busy(!0);var s=h.createStateObject(t,n,r);return h.isLastSavedState(s)?h.busy(!1):(h.storeState(s),h.expectedStateId=s.id,p.replaceState(s.id,s.title,s.url),h.Adapter.trigger(e,"popstate")),!0};if(s){try{h.store=l.parse(s.getItem("History.store"))||{}}catch(m){h.store={}}h.normalizeStore()}else h.store={},h.normalizeStore();h.Adapter.bind(e,"unload",h.clearAllIntervals),h.saveState(h.storeState(h.extractState(h.getLocationHref(),!0))),s&&(h.onUnload=function(){var e,t,n;try{e=l.parse(s.getItem("History.store"))||{}}catch(r){e={}}e.idToState=e.idToState||{},e.urlToId=e.urlToId||{},e.stateToId=e.stateToId||{};for(t in h.idToState){if(!h.idToState.hasOwnProperty(t))continue;e.idToState[t]=h.idToState[t]}for(t in h.urlToId){if(!h.urlToId.hasOwnProperty(t))continue;e.urlToId[t]=h.urlToId[t]}for(t in h.stateToId){if(!h.stateToId.hasOwnProperty(t))continue;e.stateToId[t]=h.stateToId[t]}h.store=e,h.normalizeStore(),n=l.stringify(e);try{s.setItem("History.store",n)}catch(i){if(i.code!==DOMException.QUOTA_EXCEEDED_ERR)throw i;s.length&&(s.removeItem("History.store"),s.setItem("History.store",n))}},h.intervalList.push(a(h.onUnload,h.options.storeInterval)),h.Adapter.bind(e,"beforeunload",h.onUnload),h.Adapter.bind(e,"unload",h.onUnload));if(!h.emulated.pushState){h.bugs.safariPoll&&h.intervalList.push(a(h.safariStatePoll,h.options.safariPollInterval));if(i.vendor==="Apple Computer, Inc."||(i.appCodeName||"")==="Mozilla")h.Adapter.bind(e,"hashchange",function(){h.Adapter.trigger(e,"popstate")}),h.getHash()&&h.Adapter.onDomLoad(function(){h.Adapter.trigger(e,"hashchange")})}},(!h.options||!h.options.delayInit)&&h.init()}(window){"id":1807,"date":"2021-07-26T22:17:12","date_gmt":"2021-07-26T15:17:12","guid":{"rendered":"https:\/\/uetacad.com\/?p=1807"},"modified":"2021-07-26T22:17:15","modified_gmt":"2021-07-26T15:17:15","slug":"cau-truc-cua-cong-nghe-dam-may","status":"publish","type":"post","link":"https:\/\/uetacad.com\/cau-truc-cua-cong-nghe-dam-may\/","title":{"rendered":"C\u1ea4U TR\u00daC C\u1ee6A C\u00d4NG NGH\u1ec6 \u0110\u00c1M M\u00c2Y"},"content":{"rendered":"\n

Khi nh\u1eafc \u0111\u1ebfn m\u1ed9t h\u1ec7 th\u1ed1ng m\u00e1y ch\u1ee7 s\u1eed d\u1ee5ng c\u00f4ng ngh\u1ec7 \u0111\u00e1m m\u00e2y, ta s\u1ebd d\u1ec5 d\u00e0ng li\u00ean t\u01b0\u1edfng ngay \u0111\u1ebfn m\u1ed9t h\u1ec7 th\u1ed1ng m\u00e1y ch\u1ee7 \u1ea3o c\u00f3 k\u1ebft n\u1ed1i v\u1edbi m\u1ea1ng Internet v\u00e0 \u0111\u01b0\u1ee3c s\u1ed1 h\u00f3a. Ngo\u00e0i ra th\u00ec ch\u00fang ta c\u0169ng c\u1ea7n bi\u1ebft th\u00eam v\u1ec1 c\u1ea5u tr\u00fac c\u1ee7a c\u00f4ng ngh\u1ec7 \u0111\u00e1m m\u00e2y nh\u01b0 c\u00e1c th\u00e0nh ph\u1ea7n c\u1ee7a n\u00f3.Khi nh\u1eafc \u0111\u1ebfn m\u1ed9t h\u1ec7 th\u1ed1ng m\u00e1y ch\u1ee7 s\u1eed d\u1ee5ng c\u00f4ng ngh\u1ec7 \u0111\u00e1m m\u00e2y, ta s\u1ebd d\u1ec5 d\u00e0ng li\u00ean t\u01b0\u1edfng ngay \u0111\u1ebfn m\u1ed9t h\u1ec7 th\u1ed1ng m\u00e1y ch\u1ee7 \u1ea3o\u00a0c\u00f3 k\u1ebft n\u1ed1i v\u1edbi m\u1ea1ng Internet v\u00e0 \u0111\u01b0\u1ee3c s\u1ed1 h\u00f3a. Ngo\u00e0i ra th\u00ec ch\u00fang ta c\u0169ng c\u1ea7n bi\u1ebft th\u00eam v\u1ec1\u00a0c\u1ea5u tr\u00fac c\u1ee7a c\u00f4ng ngh\u1ec7 \u0111\u00e1m m\u00e2y\u00a0<\/strong>nh\u01b0 c\u00e1c th\u00e0nh ph\u1ea7n c\u1ee7a n\u00f3.<\/p>\n\n\n\n

Th\u00e0nh ph\u1ea7n c\u1ee7a c\u00f4ng ngh\u1ec7 \u0111\u00e1m m\u00e2y<\/strong><\/p>\n\n\n\n

M\u1ed9t h\u1ec7 th\u1ed1ng s\u1eed d\u1ee5ng c\u00f4ng ngh\u1ec7 \u0111\u00e1m m\u00e2y bao g\u1ed3m hai th\u00e0nh ph\u1ea7n ri\u00eang bi\u1ec7t: m\u1eb7t tr\u01b0\u1edbc (Front End) l\u00e0 m\u00e1y t\u00ednh c\u1ee7a kh\u00e1ch h\u00e0ng v\u00e0 m\u1eb7t sau (Back End) l\u00e0 ph\u1ea7n \u0111\u00e1m m\u00e2y c\u1ee7a h\u1ec7 th\u1ed1ng. M\u1eb7t tr\u01b0\u1edbc g\u1ed3m c\u00f3 m\u1ed9t m\u00e1y t\u00ednh Client v\u00e0 m\u1ed9t \u1ee9ng d\u1ee5ng c\u1ea7n cho vi\u1ec7c truy c\u1eadp v\u00e0o h\u1ec7 th\u1ed1ng. Giao di\u1ec7n c\u1ee7a c\u00e1c h\u1ec7 th\u1ed1ng s\u1eed d\u1ee5ng c\u00f4ng ngh\u1ec7 \u0111\u00e1m m\u00e2y kh\u00f4ng ph\u1ea3i l\u00fac n\u00e0o c\u0169ng c\u00f3 giao di\u1ec7n nh\u01b0 nhau. C\u00e1c \u1ee9ng d\u1ee5ng mail th\u00ec c\u00f3 ti\u1ec7n \u00edch n\u1eb1m tr\u00ean tr\u00ecnh duy\u1ec7t Web nh\u01b0ng c\u00e1c \u1ee9ng d\u1ee5ng kh\u00e1c th\u00ec c\u00f3 nh\u1eefng \u1ee9ng d\u1ee5ng ri\u00eang \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng \u0111\u1ec3 ph\u1ee5c v\u1ee5 nhu c\u1ea7u c\u00f4ng vi\u1ec7c.
<\/p>\n\n\n\n

\"M\u00e1y<\/a><\/figure>\n\n\n\n

<\/a><\/p>\n\n\n\n

Th\u00e0nh ph\u1ea7n c\u00f4ng ngh\u1ec7 \u0111\u00e1m m\u00e2y<\/strong><\/p>\n\n\n\n

V\u00ec khi\u00a0thu\u00ea m\u00e1y ch\u1ee7<\/strong>\u00a0h\u1ea7u nh\u01b0 kh\u00f4ng bao gi\u1edd ch\u1ea1y h\u1ebft c\u00f4ng su\u1ea5t \u0111\u01b0\u1ee3c n\u00ean m\u1ed9t l\u01b0\u1ee3ng n\u0103ng l\u01b0\u1ee3ng x\u1eed l\u00fd s\u1ebd b\u1ecb l\u00e3ng ph\u00ed. Nh\u01b0ng b\u1ea1n khi b\u1ea1n s\u1eed d\u1ee5ng c\u00f4ng ngh\u1ec7 \u1ea3o h\u00f3a m\u00e1y ch\u1ee7 \u0111\u1ec3 l\u1eeba m\u00e1y ch\u1ee7 r\u1eb1ng th\u1ef1c ra b\u1ea3n th\u00e2n n\u00f3 g\u1ed3m nhi\u1ec1u m\u00e1y ch\u1ee7 ri\u00eang bi\u1ec7t v\u1edbi nhau. B\u1eb1ng c\u00e1ch t\u1ed1i \u0111a h\u00f3a s\u1ed1 l\u01b0\u1ee3ng m\u00e1y ch\u1ee7 c\u00e1 nh\u00e2n, nh\u1edd c\u00f4ng ngh\u1ec7 n\u00e0y m\u00e0 c\u00f3 th\u1ec3 t\u1ed1i \u0111a h\u00f3a c\u00f4ng xu\u1ea5t l\u00e0m vi\u1ec7c c\u1ee7a m\u00e1y ch\u1ee7 theo nhu c\u1ea7u c\u1ee7a kh\u00e1ch h\u00e0ng. M\u1eb7t sau c\u1ee7a h\u1ec7 th\u1ed1ng c\u1ea3 m\u1ed9t h\u1ec7 th\u1ed1ng l\u1edbn l\u01b0u tr\u1eef th\u00f4ng tin d\u1eef li\u1ec7u g\u1ed9p th\u00e0nh \u201c\u0111\u00e1m m\u00e2y\u201d c\u00e1c d\u1ecbch v\u1ee5 web. Tr\u00ean l\u00fd thuy\u1ebft, m\u1ed9t h\u1ec7 th\u1ed1ng \u0111\u00e1m m\u00e2y c\u00f3 th\u1ec3 gi\u1ea3i quy\u1ebft m\u1ecdi c\u00f4ng vi\u1ec7c t\u1eeb c\u00e1c qu\u1ea3n tr\u1ecb th\u00f4ng tin v\u0103n ph\u00f2ng \u0111\u1ebfn c\u00e1c \u1ee9ng d\u1ee5ng c\u1ee7a c\u00e1c tr\u00f2 ch\u01a1i \u0111i\u1ec7n t\u1eed. V\u00e0 th\u00f4ng th\u01b0\u1eddng m\u1ed7i \u1ee9ng d\u1ee5ng s\u1ebd c\u00f3 m\u1ed9t m\u00e1y ch\u1ee7 ri\u00eang h\u1ed5 tr\u1ee3 cho c\u00f4ng vi\u1ec7c c\u1ee7a n\u00f3.<\/p>\n\n\n\n

M\u00e1y ch\u1ee7 trung t\u00e2m c\u1ee7a h\u1ec7 th\u1ed1ng<\/strong><\/p>\n\n\n\n

\"M\u00e1y<\/a><\/figure>\n\n\n\n

H\u1ec7 th\u1ed1ng \u0111\u01b0\u1ee3c \u0111i\u1ec1u h\u00e0nh b\u1edfi m\u1ed9t m\u00e1y ch\u1ee7 trung t\u00e2m chuy\u00ean \u0111i\u1ec1u ph\u1ed1i b\u0103ng th\u00f4ng v\u00e0 c\u00e2u l\u1ec7nh m\u00e1y kh\u00e1ch g\u1eedi \u0111\u1ebfn \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o m\u1ecdi th\u1ee9 di\u1ec5n ra thu\u1eadn l\u1ee3i. M\u00e1y ch\u1ee7 trung t\u00e2m \u0111\u01b0\u1ee3c v\u1eadn h\u00e0nh theo m\u1ed9t quy lu\u1eadt \u0111\u01b0\u1ee3c g\u1ecdi l\u00e0 giao th\u1ee9c v\u00e0 s\u1eed d\u1ee5ng ph\u1ea7n m\u1ec1m mang t\u00ean Middleware \u0111\u1ec3 cho ph\u00e9p c\u00e1c m\u00e1y t\u00ednh trong m\u1ea1ng li\u00ean l\u1ea1c \u0111\u01b0\u1ee3c v\u1edbi nhau. N\u1ebfu m\u1ed9t c\u00f4ng ty qu\u1ea3n l\u00fd c\u00f4ng ngh\u1ec7 \u0111\u00e1m m\u00e2y c\u00f3 qu\u00e1 nhi\u1ec1u kh\u00e1ch h\u00e0ng th\u00ec s\u1ebd c\u1ea7n \u0111\u1ebfn r\u1ea5t nhi\u1ec1u kh\u00f4ng gian l\u01b0u tr\u1eef, c\u00f3 khi l\u00ean \u0111\u1ebfn v\u00e0i tr\u0103m thi\u1ebft b\u1ecb \u0111\u1ec3 gia t\u0103ng kh\u00f4ng gian. V\u00e0 s\u1ebd c\u1ea7n g\u1ea5p \u0111\u00f4i con s\u1ed1 nh\u01b0 v\u1eady \u0111\u1ec3 b\u1ea3o \u0111\u1ea3m th\u00f4ng tin kh\u00e1ch h\u00e0ng \u0111\u01b0\u1ee3c to\u00e0n v\u1eb9n khi x\u1ea3y ra s\u1ef1 c\u1ed1, h\u1ecfng h\u00f3c. H\u1ec7 th\u1ed1ng \u0111\u00e1m m\u00e2y s\u1ebd sao l\u01b0u th\u00f4ng tin kh\u00e1ch h\u00e0ng sang m\u1ed9t m\u00e1y ch\u1ee7 kh\u00e1c \u0111\u1ec3 khi s\u1ef1 c\u1ed1 x\u1ea3y ra ho\u1eb7c khi c\u1ea7n thi\u1ebft m\u00e1y ch\u1ee7 trung t\u00e2m c\u00f3 th\u1ec3 truy c\u1eadp \u0111\u1ec3 l\u1ea5y l\u1ea1i th\u00f4ng tin kh\u00e1ch h\u00e0ng.\u00a0<\/p>\n\n\n\n

L\u01b0\u1edbi, \u0111\u00e1m m\u00e2y v\u00e0 ti\u1ec7n \u00edch h\u1ed7 tr\u1ee3<\/strong><\/p>\n\n\n\n

\"C\u00f4ng<\/figure>\n\n\n\n

<\/strong><\/a><\/p>\n\n\n\n

C\u00f4ng ngh\u1ec7 l\u01b0\u1edbi<\/em><\/p>\n\n\n\n

C\u00f4ng ngh\u1ec7 \u0111\u00e1m m\u00e2y c\u00f3 li\u00ean quan m\u1eadt thi\u1ebft t\u1edbi c\u00f4ng ngh\u1ec7 l\u01b0\u1edbi v\u00e0 c\u00f4ng ngh\u1ec7 ti\u1ec7n \u00edch. Nh\u1edd c\u00f3 c\u00f4ng ngh\u1ec7 l\u01b0\u1edbi<\/strong> m\u00e0 m\u1ed9t m\u00e1y t\u00ednh c\u00f3 th\u1ec3 truy c\u1eadp v\u00e0 s\u1eed d\u1ee5ng t\u00e0i nguy\u00ean tr\u00ean t\u1ea5t c\u1ea3 c\u00e1c m\u00e1y t\u00ednh kh\u00e1c trong c\u00f9ng h\u1ec7 th\u1ed1ng. N\u1ebfu kh\u00f4ng \u00e1p d\u1ee5ng c\u00f4ng ngh\u1ec7 l\u01b0\u1edbi th\u00ec ch\u1ec9 c\u00f3 th\u1ec3 l\u00e0m \u0111i\u1ec1u n\u00e0y v\u1edbi m\u1eb7t sau c\u1ee7a h\u1ec7 th\u1ed1ng v\u00e0 s\u1ebd m\u1ea5t \u0111i t\u00ednh linh ho\u1ea1t, c\u01a1 \u0111\u1ed9ng khi c\u1ea7n thi\u1ebft. C\u00f4ng ngh\u1ec7 ti\u1ec7n \u00edch l\u00e0 m\u1ed9t m\u00f4 h\u00ecnh kinh doanh trong \u0111\u00f3 m\u1ed9t c\u00f4ng ty tr\u1ea3 ti\u1ec1n cho m\u1ed9t c\u00f4ng ty kh\u00e1c \u0111\u1ec3 \u0111\u01b0\u1ee3c ph\u00e9p truy c\u1eadp \u1ee9ng d\u1ee5ng m\u00e1y t\u00ednh ho\u1eb7c kho l\u01b0u tr\u1eef d\u1eef li\u1ec7u.<\/p>\n","protected":false},"excerpt":{"rendered":"

Khi nh\u1eafc \u0111\u1ebfn m\u1ed9t h\u1ec7 th\u1ed1ng m\u00e1y ch\u1ee7 s\u1eed d\u1ee5ng c\u00f4ng ngh\u1ec7 \u0111\u00e1m m\u00e2y, ta s\u1ebd d\u1ec5 d\u00e0ng li\u00ean t\u01b0\u1edfng ngay \u0111\u1ebfn m\u1ed9t h\u1ec7 th\u1ed1ng m\u00e1y ch\u1ee7 \u1ea3o c\u00f3 k\u1ebft n\u1ed1i v\u1edbi m\u1ea1ng Internet v\u00e0 \u0111\u01b0\u1ee3c s\u1ed1 h\u00f3a. Ngo\u00e0i ra th\u00ec ch\u00fang ta c\u0169ng c\u1ea7n bi\u1ebft th\u00eam v\u1ec1 c\u1ea5u tr\u00fac c\u1ee7a c\u00f4ng ngh\u1ec7 \u0111\u00e1m m\u00e2y […]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[122,128],"tags":[],"class_list":["post-1807","post","type-post","status-publish","format-standard","hentry","category-blog","category-tech"],"_links":{"self":[{"href":"https:\/\/uetacad.com\/wp-json\/wp\/v2\/posts\/1807"}],"collection":[{"href":"https:\/\/uetacad.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/uetacad.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/uetacad.com\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/uetacad.com\/wp-json\/wp\/v2\/comments?post=1807"}],"version-history":[{"count":1,"href":"https:\/\/uetacad.com\/wp-json\/wp\/v2\/posts\/1807\/revisions"}],"predecessor-version":[{"id":1808,"href":"https:\/\/uetacad.com\/wp-json\/wp\/v2\/posts\/1807\/revisions\/1808"}],"wp:attachment":[{"href":"https:\/\/uetacad.com\/wp-json\/wp\/v2\/media?parent=1807"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/uetacad.com\/wp-json\/wp\/v2\/categories?post=1807"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/uetacad.com\/wp-json\/wp\/v2\/tags?post=1807"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}