Ultherapy Prime Treatment Singapore | Skin Tightening Face Lift {"@context":"https:\/\/schema.org","@graph":[{"@type":["WebPage","MedicalWebPage"],"@id":"https:\/\/kowayo.com\/ultherapy-prime\/","url":"https:\/\/kowayo.com\/ultherapy-prime\/","name":"Ultherapy Prime Treatment Singapore | Skin Tightening Face Lift","isPartOf":{"@id":"https:\/\/kowayo.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kowayo.com\/ultherapy-prime\/#primaryimage"},"image":{"@id":"https:\/\/kowayo.com\/ultherapy-prime\/#primaryimage"},"thumbnailUrl":"https:\/\/kowayo.com\/wp-content\/uploads\/Ultherapy-treatment-in-singapore-mobile-jpg.webp","datePublished":"2024-12-10T05:07:08+00:00","dateModified":"2026-05-26T16:46:06+00:00","description":"Ultherapy Prime is an FDA-approved non-surgical facelift skin tightening treatment in Singapore. Get rid of fine lines, wrinkles & sagging skin.","breadcrumb":{"@id":"https:\/\/kowayo.com\/ultherapy-prime\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kowayo.com\/ultherapy-prime\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kowayo.com\/ultherapy-prime\/#primaryimage","url":"https:\/\/kowayo.com\/wp-content\/uploads\/Ultherapy-treatment-in-singapore-mobile-jpg.webp","contentUrl":"https:\/\/kowayo.com\/wp-content\/uploads\/Ultherapy-treatment-in-singapore-mobile-jpg.webp","width":610,"height":700,"caption":"Ultherapy treatment in singapore"},{"@type":"BreadcrumbList","@id":"https:\/\/kowayo.com\/ultherapy-prime\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kowayo.com\/"},{"@type":"ListItem","position":2,"name":"Ultherapy Prime"}]},{"@type":"WebSite","@id":"https:\/\/kowayo.com\/#website","url":"https:\/\/kowayo.com\/","name":"Kowayo Aesthetic Clinic","description":"Ellanse | Dark Eye Circle Treatment | Rejuran Healer","publisher":{"@id":"https:\/\/kowayo.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kowayo.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/kowayo.com\/#organization","name":"Kowayo Aesthetic Clinic","alternateName":"Kowayo","url":"https:\/\/kowayo.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kowayo.com\/#\/schema\/logo\/image\/","url":"https:\/\/kowayo.com\/wp-content\/uploads\/kowayo-aesthetic-clinic-Singapore.png","contentUrl":"https:\/\/kowayo.com\/wp-content\/uploads\/kowayo-aesthetic-clinic-Singapore.png","width":335,"height":117,"caption":"Kowayo Aesthetic Clinic"},"image":{"@id":"https:\/\/kowayo.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kowayoaesthetic\/","https:\/\/x.com\/KowayoAesthetic","https:\/\/www.instagram.com\/kowayo_aesthetic\/","https:\/\/www.youtube.com\/@Kowayo","https:\/\/www.linkedin.com\/company\/kowayo-aesthetics"]}]} !function($){"use strict";$(document).ready(function(){$(this).scrollTop()>100&&$(".hfe-scroll-to-top-wrap").removeClass("hfe-scroll-to-top-hide"),$(window).scroll(function(){$(this).scrollTop()<100?$(".hfe-scroll-to-top-wrap").fadeOut(300):$(".hfe-scroll-to-top-wrap").fadeIn(300)}),$(".hfe-scroll-to-top-wrap").on("click",function(){$("html, body").animate({scrollTop:0},300);return!1})})}(jQuery); !function($){'use strict';$(document).ready(function(){var bar=$('.hfe-reading-progress-bar');if(!bar.length)return;$(window).on('scroll',function(){var s=$(window).scrollTop(),d=$(document).height()-$(window).height(),p=d? s/d*100:0;bar.css('width',p+'%')});});}(jQuery); //# sourceURL=jquery-js-after window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);} gtag("set","linker",{"domains":["kowayo.com"]}); gtag("js", new Date()); gtag("set", "developer_id.dZTNiMT", true); gtag("config", "G-ZT9J1PS009"); //# sourceURL=google_gtagjs-js-after (function () { var s = document.createElement("script"), h = document.head; s.async = 1; s.src = "https://monitor.fraudblocker.com/fbt.js?sid=Ssbq_TWc7iYISuS9n7U4s"; h.appendChild(s); })(); {"@context":"https://schema.org/","@type":"CreativeWorkSeries","name":"Aesthetic Clinic Singapore","aggregateRating":{"@type":"AggregateRating","ratingValue":"4.9","bestRating":"5","ratingCount":"655"}} !function (w, d, t) { w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie","holdConsent","revokeConsent","grantConsent"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);ttq.instance=function(t){for( var e=ttq._i[t]||[],n=0;n<ttq.methods.length;n++)ttq.setAndDefer(e,ttq.methods[n]);return e},ttq.load=function(e,n){var r="https://analytics.tiktok.com/i18n/pixel/events.js",o=n&&n.partner;ttq._i=ttq._i||{},ttq._i[e]=[],ttq._i[e]._u=r,ttq._t=ttq._t||{},ttq._t[e]=+new Date,ttq._o=ttq._o||{},ttq._o[e]=n||{};n=document.createElement("script") ;n.type="text/javascript",n.async=!0,n.src=r+"?sdkid="+e+"&lib="+t;e=document.getElementsByTagName("script")[0];e.parentNode.insertBefore(n,e)}; ttq.load('CM5506RC77U0VR5LJEQ0'); ttq.page(); }(window, document, 'ttq'); ( function( w, d, s, l, i ) { w[l] = w[l] || []; w[l].push( {'gtm.start': new Date().getTime(), event: 'gtm.js'} ); var f = d.getElementsByTagName( s )[0], j = d.createElement( s ), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore( j, f ); } )( window, document, 'script', 'dataLayer', 'GTM-WD5HWD2' );
Skip to content
Ultherapy treatment in singapore

Ultherapy Prime

Ultherapy Prime helps fight signs of aging by using micro-focused ultrasound to lift and tighten the skin, supporting collagen regeneration and reducing fine lines and wrinkles.

Ultherapy Prime is the 2nd generation of non-invasive skin lifting and tightening treatments, offering a personalized and effective solution to restore a youthful, lifted appearance.

By harnessing the power of FDA-approved ultrasound technology, with real-time imaging, it effectively targets sagging skin and loss of elasticity to restore a youthful lifted appearance, and long-lasting results without surgery or downtime.

What is Ultherapy Prime?

Ultherapy Prime is an skin lifting treatment designed to lift and tighten the skin using micro-focused ultrasound energy with real-time visualization. Unlike surface-level treatments, Ultherapy Prime penetrates deep into the skin’s foundational layers, including the collagen-rich Superficial Muscular Aponeurotic System (SMAS).

This technology ensures ultrasonic energy delivers more energy to stimulate collagen production, resulting in a more youthful appearance tailored to each individual’s needs.

ultherapy prime

Ultherapy Prime vs. Traditional Ultherapy

Why Ultherapy Prime?

Safe & Effective Treatment

Ultherapy Prime non-invasively targets the same deep tissue planes as a facelift using ultrasound energy, providing a safe, effective alternative to surgery. Due to efficiency, it is 20% shorter treatment duration compared to the traditional ultherapy, achieving the same long-lasting lifting results in just one treatment.

Ideal for individuals experiencing mild to moderate skin laxity, Ultherapy Prime offers clinically proven outcomes for those not ready for surgery.

Nonsurgical-Lift
go deeper

Go Deeper

Unlike lasers, radiofrequency, or other non-invasive technologies, Ultherapy Prime is the only FDA-cleared ultrasound treatment with real-time imaging.

This allows practitioners to safely reach the deeper, collagen-rich layers for treatment efficacy without affecting the skin’s surface.

For Long-Lasting Results

Collagen, the natural protein responsible for firm, youthful skin, diminishes with age, leading to sagging and loss of elasticity.

Ultherapy Prime works with your body’s natural collagen-building processes, delivering meaningful, natural-looking results that gradually emerge over time and can last a year or longer.

For Long-Lasting Results
What is Ultherapy

Is Ultherapy Prime Right For You?

How Does Ultherapy Prime Treatment Works?

Ultherapy Prime utilizes FDA-approved micro-focused ultrasound with real-time visualization to deliver energy at 1.5mm, 3.0mm, and 4.5mm depths. This non-invasive treatment works by stimulating collagen production in 5 key steps:

1. Real-Time Imaging

Real-time ultrasound imaging, which allows visualization of the different layers of your skin and pinpoint the exact areas that need treatment. This ensures energy is delivered to the collagen-rich layers for long term results.

Real-Time Imaging
Energy Delivery

2. Energy Delivery

Using micro-focused ultrasound energy, targeting specific depths of 1.5mm, 3.0mm, and 4.5mm beneath the skin’s surface. This energy bypasses the outer skin layer entirely, ensuring no damage to the skin’s surface while reaching the foundational layers responsible for skin laxity.

3. Thermal Coagulation Points

Ultrasound energy creates controlled thermal coagulation points in the targeted layers. This heat stimulates the natural collagen and elastin production process by causing collagen contraction and triggering the body’s regenerative response.

Thermal Coagulation Points
Collagen Remodeling

4. Collagen Remodeling

Over the next two to three months, the newly generated collagen strengthens and tightens the treated areas, leading to gradual lifting and elasticity.

5. Natural Results

The results appear natural as they develop over time, ensuring subtle yet noticeable improvements that align with your body’s natural healing process.

Natural Results

What Are The Benefits of Ultherapy Prime?

Non-invasive

Non-Invasive Skin Lifting

Provides alternative to surgical facelift, offering natural, gradual lifting and tightening over time.

Skinbooster natural looking result

Designed for Delicate Areas

The redesigned device head makes it ideal for hard-to-treat areas like the jawline, under the chin, and around the eyes.

comfort

Tolerable Treatment Experience

Designed with patient comfort in mind, ensuring a more tolerable experience compared to traditional ultherapy.

collageon-simulating

Collagen Regeneration

Stimulates the body’s natural production of collagen, leading to firmer, tighter skin over time.

no down time

Minimal Downtime

Resume your daily activities normally after the procedure, making it a convenient option for busy lifestyles.

FDA approve

Safe for All Skin Types

Suitable for diverse skin tones and conditions.

Benefits Of Laser Rejuvenation Minimise acne scars and pores

Long-Lasting Results

Collagen stimulation provides results that can last up to a year or more.

What Are The Area of Treatment?

From the face to the neck, Ultherapy Prime offers a personalized approach across different treatment zones, offering a natural lift and firmness for a refreshed and revitalized appearance.

Area of Treatment for Ultherapy eye

Around Eye

filler for cheek

Cheek

Area of Treatment for Ultherapy Lower Face Jowl

Lower Face/Jowl

Area of Treatment for Ultherapy Jawline

Jawline

Area of Treatment for Ultherapy double chin

Double Chin

Area of Treatment for Ultherapy neck

Neck

What Are The Area of Treatment?

From the face to the neck, Ultherapy Prime offers a personalized approach across different treatment zones, offering a natural lift and firmness for a refreshed and revitalized appearance.

Area of Treatment for Ultherapy eye

Around Eye

filler for cheek

Cheek

Area of Treatment for Ultherapy Lower Face Jowl

Lower Face/Jowl

Area of Treatment for Ultherapy Jawline

Jawline

Area of Treatment for Ultherapy double chin

Double Chin

Area of Treatment for Ultherapy neck

Neck

Ready for Ultherapy Prime Treatment in Singapore with Kowayo Aesthetic Clinic?

Take the first step toward radiant, long-lasting results! Contact us today to schedule your consultation.

FAQ for Ultherapy Prime

A typical session lasts between 30 to 60 minutes, depending on the treatment area and number of lines.

Optimal results appearing over 1-3 months as new collagen forms.

Ultherapy Prime usually has no downtime. Patients can resume normal activities right after the procedure.

You may feel mild heating or tingling as the energy is delivered. Doctor can adjust energy levels to suit your threshold.

Only one session needed, which can last for a year or longer.

Yes, Ultherapy Prime is safe and effective for all skin types.

Temporary redness, swelling, or tenderness may occur but typically subsides within a few hours to days.

{"@context":"https:\/\/schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"How long does an Ultherapy Prime session take?","acceptedAnswer":{"@type":"Answer","text":"<p>A typical session lasts between 30 to 60 minutes, depending on the treatment area and number of lines.<\/p>"}},{"@type":"Question","name":"When will I see results from Ultherapy Prime?","acceptedAnswer":{"@type":"Answer","text":"<p>Optimal results appearing over 1-3 months as new collagen forms.<\/p>"}},{"@type":"Question","name":"Is there any downtime after the procedure?","acceptedAnswer":{"@type":"Answer","text":"<p>Ultherapy Prime usually has no downtime. Patients can resume normal activities right after the procedure.<\/p>"}},{"@type":"Question","name":"What does the treatment feel like?","acceptedAnswer":{"@type":"Answer","text":"<p>You may feel mild heating or tingling as the energy is delivered. Doctor can adjust energy levels to suit your threshold.<\/p>"}},{"@type":"Question","name":"How many treatments will I need?","acceptedAnswer":{"@type":"Answer","text":"<p>Only one session needed, which can last for a year or longer.<\/p>"}},{"@type":"Question","name":"Is Ultherapy Prime safe for all skin types?","acceptedAnswer":{"@type":"Answer","text":"<p>Yes, Ultherapy Prime is safe and effective for all skin types.<\/p>"}},{"@type":"Question","name":"Are there any side effects?","acceptedAnswer":{"@type":"Answer","text":"<p>Temporary redness, swelling, or tenderness may occur but typically subsides within a few hours to days.<\/p>"}}]}
{ "@context": "https://schema.org/", "@type": "MedicalProcedure", "name": "Ultherapy Prime Treatment", "description": "A specialized non-surgical face lifting treatment in Singapore to lift and tighten the skin, supporting collagen regeneration and reducing fine lines and wrinkles", "procedureType": "NonSurgical", "bodyLocation": "Face", "image": "https://kowayo.com/wp-content/uploads/Ultherapy-treatment-in-singapore-mobile-jpg.webp", "url": "https://kowayo.com/ultherapy-prime/", "mainEntityOfPage": { "@type": "MedicalWebPage", "@id": "https://kowayo.com/ultherapy-prime/", "name": "Ultherapy Prime Treatment" } } { "@context": "https://schema.org/", "@type": "LocalBusiness", "name": "Kowayo Aesthetic Clinic", "telephone": "+65 6884 4280", "address": { "@type": "PostalAddress", "streetAddress": "CityLink Mall, #B1-29, Singapore", "addressLocality": "Singapore", "postalCode": "039393", "addressCountry": "SG" } } { "@context": "https://schema.org/", "@type": "MedicalOrganization", "@id": "https://kowayo.com#Organization", "name": "Kowayo Aesthetic Clinic", "url": "https://kowayo.com", "sameAs": [ "https://www.facebook.com/kowayoaesthetic/", "https://www.instagram.com/kowayo_aesthetic/", "https://www.linkedin.com/company/kowayo-aesthetics", "https://www.youtube.com/@Kowayo/" ], "logo": { "@type": "ImageObject", "url": "https://kowayo.com/wp-content/uploads/kowayo-aesthetic-clinic-jpg.webp", "width": 400, "height": 150 }, "contactPoint": { "@type": "ContactPoint", "contactType": "Customer Support", "telephone": "+65 6884 4280", "url": "https://kowayo.com/contact-us/" }, "address": { "@type": "PostalAddress", "streetAddress": "CityLink Mall, #B1-29", "addressLocality": "Singapore", "postalCode": "039393", "addressCountry": "SG" } }



{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/neve/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} const lazyloadRunObserver = () => { const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` ); const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => { entries.forEach( ( entry ) => { if ( entry.isIntersecting ) { let lazyloadBackground = entry.target; if( lazyloadBackground ) { lazyloadBackground.classList.add( 'e-lazyloaded' ); } lazyloadBackgroundObserver.unobserve( entry.target ); } }); }, { rootMargin: '200px 0px 200px 0px' } ); lazyloadBackgrounds.forEach( ( lazyloadBackground ) => { lazyloadBackgroundObserver.observe( lazyloadBackground ); } ); }; const events = [ 'DOMContentLoaded', 'elementor/lazyload/observe', ]; events.forEach( ( event ) => { document.addEventListener( event, lazyloadRunObserver ); } ); var eztoc_smooth_local = {"scroll_offset":"0","add_request_uri":"","add_self_reference_link":""}; //# sourceURL=eztoc-scroll-scriptjs-js-extra var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"1","width":"auto","scroll_offset":"0","fallbackIcon":"\u003Cspan class=\"\"\u003E\u003Cspan class=\"eztoc-hide\" style=\"display:none;\"\u003EToggle\u003C/span\u003E\u003Cspan class=\"ez-toc-icon-toggle-span\"\u003E\u003Csvg style=\"fill: #0a0a0a;color:#0a0a0a\" xmlns=\"http://www.w3.org/2000/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"\u003E\u003Cpath d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"\u003E\u003C/path\u003E\u003C/svg\u003E\u003Csvg style=\"fill: #0a0a0a;color:#0a0a0a\" class=\"arrow-unsorted-368013\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"\u003E\u003Cpath d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"/\u003E\u003C/svg\u003E\u003C/span\u003E\u003C/span\u003E","visibility_hide_by_device":"1","chamomile_theme_is_on":""}; //# sourceURL=eztoc-js-js-extra var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":true},"i18n":{"shareOnFacebook":"Share on Facebook","shareOnTwitter":"Share on Twitter","pinIt":"Pin it","download":"Download","downloadImage":"Download image","fullscreen":"Fullscreen","zoom":"Zoom","share":"Share","playVideo":"Play Video","previous":"Previous","next":"Next","close":"Close","a11yCarouselPrevSlideMessage":"Previous slide","a11yCarouselNextSlideMessage":"Next slide","a11yCarouselFirstSlideMessage":"This is the first slide","a11yCarouselLastSlideMessage":"This is the last slide","a11yCarouselPaginationBulletMessage":"Go to slide"},"is_rtl":false,"breakpoints":{"xs":0,"sm":480,"md":768,"lg":1025,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Mobile Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Portrait","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1200,"default_value":1200,"direction":"max","is_enabled":false},"laptop":{"label":"Laptop","value":1366,"default_value":1366,"direction":"max","is_enabled":false},"widescreen":{"label":"Widescreen","value":2400,"default_value":2400,"direction":"min","is_enabled":false}},"hasCustomBreakpoints":false},"version":"4.1.3","is_static":false,"experimentalFeatures":{"e_font_icon_svg":true,"additional_custom_breakpoints":true,"global_classes_should_enforce_capabilities":true,"e_variables":true,"e_opt_in_v4_page":true,"e_components":true,"e_interactions":true,"e_widget_creation":true,"import-export-customization":true},"urls":{"assets":"https:\/\/kowayo.com\/wp-content\/plugins\/elementor\/assets\/","ajaxurl":"https:\/\/kowayo.com\/wp-admin\/admin-ajax.php","uploadUrl":"https:\/\/kowayo.com\/wp-content\/uploads"},"nonces":{"floatingButtonsClickTracking":"97405f74d3","atomicFormsSendForm":"e51eea2d94"},"swiperClass":"swiper","settings":{"page":[],"editorPreferences":[]},"kit":{"active_breakpoints":["viewport_mobile","viewport_tablet"],"global_image_lightbox":"yes","lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title","lightbox_description_src":"description"},"post":{"id":15439,"title":"Ultherapy%20Prime%20Treatment%20Singapore%20%7C%20Skin%20Tightening%20Face%20Lift","excerpt":"Searching for the most effective Ultherapy treatment in Singapore? Look no further! Kowayo Asethetic's Ultherapy treatment can effectively get rid of fine lines, wrinkles, and sagging skin, giving them a youthful and radiant glow. Get ready to experience the wonders of this non-invasive facelift technique and achieve remarkable results.","featuredImage":false}}; //# sourceURL=elementor-frontend-js-before class RocketBrowserCompatibilityChecker { constructor( options ) { this.passiveSupported = false; this._checkPassiveOption( this ); this.options = this.passiveSupported ? options : false; } /** * Initializes browser check for addEventListener passive option. * * @link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support * @private * * @param self Instance of this object. * @returns {boolean} */ _checkPassiveOption( self ) { try { const options = { // This function will be called when the browser attempts to access the passive property. get passive() { self.passiveSupported = true; return false; } }; window.addEventListener( 'test', null, options ); window.removeEventListener( 'test', null, options ); } catch ( err ) { self.passiveSupported = false; } } /** * Checks if the browser supports requestIdleCallback and cancelIdleCallback. If no, shims its behavior with a polyfills. * * @link @link https://developers.google.com/web/updates/2015/08/using-requestidlecallback */ initRequestIdleCallback() { if ( ! 'requestIdleCallback' in window ) { window.requestIdleCallback = ( cb ) => { const start = Date.now(); return setTimeout( () => { cb( { didTimeout: false, timeRemaining: function timeRemaining() { return Math.max( 0, 50 - ( Date.now() - start ) ); } } ); }, 1 ); }; } if ( ! 'cancelIdleCallback' in window ) { window.cancelIdleCallback = ( id ) => clearTimeout( id ); } } /** * Detects if data saver mode is on. * * @link https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/save-data/#detecting_the_save-data_setting * * @returns {boolean|boolean} */ isDataSaverModeOn() { return ( 'connection' in navigator && true === navigator.connection.saveData ); } /** * Checks if the browser supports link prefetch. * * @returns {boolean|boolean} */ supportsLinkPrefetch() { const elem = document.createElement( 'link' ); return ( elem.relList && elem.relList.supports && elem.relList.supports( 'prefetch' ) && window.IntersectionObserver && 'isIntersecting' in IntersectionObserverEntry.prototype ); } isSlowConnection() { return ( 'connection' in navigator && 'effectiveType' in navigator.connection && ( '2g' === navigator.connection.effectiveType || 'slow-2g' === navigator.connection.effectiveType ) ) } } //# sourceURL=rocket-browser-checker-js-after var RocketPreloadLinksConfig = {"excludeUris":"/(?:.+/)?feed(?:/(?:.+/?)?)?$|/(?:.+/)?embed/|/(index.php/)?(.*)wp-json(/.*|$)|/refer/|/go/|/recommend/|/recommends/","usesTrailingSlash":"1","imageExt":"jpg|jpeg|gif|png|tiff|bmp|webp|avif|pdf|doc|docx|xls|xlsx|php","fileExt":"jpg|jpeg|gif|png|tiff|bmp|webp|avif|pdf|doc|docx|xls|xlsx|php|html|htm","siteUrl":"https://kowayo.com","onHoverDelay":"100","rateThrottle":"3"}; //# sourceURL=rocket-preload-links-js-extra class RocketPreloadLinks { constructor( browser, config ) { this.browser = browser; this.config = config; this.options = this.browser.options; this.prefetched = new Set; this.eventTime = null; this.threshold = 1111; this.numOnHover = 0; } /** * Initializes the handler. */ init() { if ( ! this.browser.supportsLinkPrefetch() || this.browser.isDataSaverModeOn() || this.browser.isSlowConnection() ) { return; } this.regex = { excludeUris: RegExp( this.config.excludeUris, 'i' ), images: RegExp( '.(' + this.config.imageExt + ')$', 'i' ), fileExt: RegExp( '.(' + this.config.fileExt + ')$', 'i' ) }; this._initListeners( this ); } /** * Initializes the event listeners. * * @private * * @param self instance of this object, used for binding "this" to the listeners. */ _initListeners( self ) { // Setting onHoverDelay to -1 disables the "on-hover" feature. if ( this.config.onHoverDelay > -1 ) { document.addEventListener( 'mouseover', self.listener.bind( self ), self.listenerOptions ); } document.addEventListener( 'mousedown', self.listener.bind( self ), self.listenerOptions ); document.addEventListener( 'touchstart', self.listener.bind( self ), self.listenerOptions ); } /** * Event listener. Processes when near or on a valid <a> hyperlink. * * @param Event event Event instance. */ listener( event ) { const linkElem = event.target.closest( 'a' ); const url = this._prepareUrl( linkElem ); if ( null === url ) { return; } switch ( event.type ) { case 'mousedown': case 'touchstart': this._addPrefetchLink( url ); break; case 'mouseover': this._earlyPrefetch( linkElem, url, 'mouseout' ); } } /** * * @private * * @param Element|null linkElem * @param object url * @param string resetEvent */ _earlyPrefetch( linkElem, url, resetEvent ) { const doPrefetch = () => { falseTrigger = null; // Start the rate throttle: 1 sec timeout. if ( 0 === this.numOnHover ) { setTimeout( () => this.numOnHover = 0, 1000 ); } // Bail out when exceeding the rate throttle. else if ( this.numOnHover > this.config.rateThrottle ) { return; } this.numOnHover++; this._addPrefetchLink( url ); }; // Delay to avoid false triggers for hover/touch/tap. let falseTrigger = setTimeout( doPrefetch, this.config.onHoverDelay ); // On reset event, reset the false trigger timer. const reset = () => { linkElem.removeEventListener( resetEvent, reset, { passive: true } ); if ( null === falseTrigger ) { return; } clearTimeout( falseTrigger ); falseTrigger = null; }; linkElem.addEventListener( resetEvent, reset, { passive: true } ); } /** * Adds a <link rel="prefetch" href="<url>"> for the given URL. * * @param string url The Given URL to prefetch. */ _addPrefetchLink( url ) { this.prefetched.add( url.href ); return new Promise( ( resolve, reject ) => { const elem = document.createElement( 'link' ); elem.rel = 'prefetch'; elem.href = url.href; elem.onload = resolve; elem.onerror = reject; document.head.appendChild( elem ); } ).catch(() => { // ignore and continue. }); } /** * Prepares the target link's URL. * * @private * * @param Element|null linkElem Instance of the link element. * @returns {null|*} */ _prepareUrl( linkElem ) { if ( null === linkElem || typeof linkElem !== 'object' || ! 'href' in linkElem || // Link prefetching only works on http/https protocol. [ 'http:', 'https:' ].indexOf( linkElem.protocol ) === -1 ) { return null; } const origin = linkElem.href.substring( 0, this.config.siteUrl.length ); const pathname = this._getPathname( linkElem.href, origin ); const url = { original: linkElem.href, protocol: linkElem.protocol, origin: origin, pathname: pathname, href: origin + pathname }; return this._isLinkOk( url ) ? url : null; } /** * Gets the URL's pathname. Note: ensures the pathname matches the permalink structure. * * @private * * @param object url Instance of the URL. * @param string origin The target link href's origin. * @returns {string} */ _getPathname( url, origin ) { let pathname = origin ? url.substring( this.config.siteUrl.length ) : url; if ( ! pathname.startsWith( '/' ) ) { pathname = '/' + pathname; } if ( this._shouldAddTrailingSlash( pathname ) ) { return pathname + '/'; } return pathname; } _shouldAddTrailingSlash( pathname ) { return ( this.config.usesTrailingSlash && ! pathname.endsWith( '/' ) && ! this.regex.fileExt.test( pathname ) ); } /** * Checks if the given link element is okay to process. * * @private * * @param object url URL parts object. * * @returns {boolean} */ _isLinkOk( url ) { if ( null === url || typeof url !== 'object' ) { return false; } return ( ! this.prefetched.has( url.href ) && url.origin === this.config.siteUrl // is an internal document. && url.href.indexOf( '?' ) === -1 // not a query string. && url.href.indexOf( '#' ) === -1 // not an anchor. && ! this.regex.excludeUris.test( url.href ) // not excluded. && ! this.regex.images.test( url.href ) // not an image. ); } /** * Named static constructor to encapsulate how to create the object. */ static run() { // Bail out if the configuration not passed from the server. if ( typeof RocketPreloadLinksConfig === 'undefined' ) { return; } const browser = new RocketBrowserCompatibilityChecker( { capture: true, passive: true } ); const instance = new RocketPreloadLinks( browser, RocketPreloadLinksConfig ); instance.init(); } } RocketPreloadLinks.run(); //# sourceURL=rocket-preload-links-js-after var wpfront_scroll_top_data = {"data":{"css":"#wpfront-scroll-top-container{position:fixed;cursor:pointer;z-index:9999;border:none;outline:none;background-color:rgba(0,0,0,0);box-shadow:none;outline-style:none;text-decoration:none;opacity:0;display:none;align-items:center;justify-content:center;margin:0;padding:0}#wpfront-scroll-top-container.show{display:flex;opacity:1}#wpfront-scroll-top-container .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}#wpfront-scroll-top-container .text-holder{padding:3px 10px;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:4px 4px 5px 0px rgba(50,50,50,.5);-moz-box-shadow:4px 4px 5px 0px rgba(50,50,50,.5);box-shadow:4px 4px 5px 0px rgba(50,50,50,.5)}#wpfront-scroll-top-container{left:20px;bottom:20px;}#wpfront-scroll-top-container img{width:auto;height:auto;}#wpfront-scroll-top-container .text-holder{color:#ffffff;background-color:#000000;width:auto;height:auto;;}#wpfront-scroll-top-container .text-holder:hover{background-color:#000000;}#wpfront-scroll-top-container i{color:#000000;}","html":"\u003Cbutton id=\"wpfront-scroll-top-container\" aria-label=\"\" title=\"\" \u003E\u003Cimg src=\"https://kowayo.com/wp-content/plugins/wpfront-scroll-top/includes/assets/icons/1.png\" alt=\"\" title=\"\"\u003E\u003C/button\u003E","data":{"hide_iframe":false,"button_fade_duration":0,"auto_hide":false,"auto_hide_after":2,"scroll_offset":100,"button_opacity":0.8,"button_action":"top","button_action_element_selector":"","button_action_container_selector":"html, body","button_action_element_offset":0,"scroll_duration":400}}}; //# sourceURL=wpfront-scroll-top-js-extra var NeveProperties = {"ajaxurl":"https://kowayo.com/wp-admin/admin-ajax.php","nonce":"e1e17ac45d","isRTL":"","isCustomize":""}; //# sourceURL=neve-script-js-extra var html = document.documentElement; var theme = html.getAttribute('data-neve-theme') || 'light'; var variants = {"logo":{"light":{"src":"https:\/\/kowayo.com\/wp-content\/uploads\/kowayo-aesthetic-clinic-Singapore-3.webp","srcset":false,"sizes":"(max-width: 200px) 100vw, 200px"},"dark":{"src":"https:\/\/kowayo.com\/wp-content\/uploads\/kowayo-aesthetic-clinic-Singapore-3.webp","srcset":false,"sizes":"(max-width: 200px) 100vw, 200px"},"same":true}}; function setCurrentTheme( theme ) { var pictures = document.getElementsByClassName( 'neve-site-logo' ); for(var i = 0; i<pictures.length; i++) { var picture = pictures.item(i); if( ! picture ) { continue; }; var fileExt = picture.src.slice((Math.max(0, picture.src.lastIndexOf(".")) || Infinity) + 1); if ( fileExt === 'svg' ) { picture.removeAttribute('width'); picture.removeAttribute('height'); picture.style = 'width: var(--maxwidth)'; } var compId = picture.getAttribute('data-variant'); if ( compId && variants[compId] ) { var isConditional = variants[compId]['same']; if ( theme === 'light' || isConditional || variants[compId]['dark']['src'] === false ) { picture.src = variants[compId]['light']['src']; picture.srcset = variants[compId]['light']['srcset'] || ''; picture.sizes = variants[compId]['light']['sizes']; continue; }; picture.src = variants[compId]['dark']['src']; picture.srcset = variants[compId]['dark']['srcset'] || ''; picture.sizes = variants[compId]['dark']['sizes']; }; }; }; var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.type == 'attributes') { theme = html.getAttribute('data-neve-theme'); setCurrentTheme(theme); }; }); }); observer.observe(html, { attributes: true }); function toggleAriaClick() { function toggleAriaExpanded(toggle = 'true') { document.querySelectorAll('button.navbar-toggle').forEach(function(el) { if ( el.classList.contains('caret-wrap') ) { return; } el.setAttribute('aria-expanded', 'true' === el.getAttribute('aria-expanded') ? 'false' : toggle); }); } toggleAriaExpanded(); if ( document.body.hasAttribute('data-ftrap-listener') ) { return; } document.body.setAttribute('data-ftrap-listener', 'true'); document.addEventListener('ftrap-end', function() { toggleAriaExpanded('false'); }); } var menuCarets=document.querySelectorAll(".nav-ul li > .wrap > .caret");menuCarets.forEach(function(e){e.addEventListener("keydown",e=>{13===e.keyCode&&(e.target.parentElement.classList.toggle("active"),e.target.getAttribute("aria-pressed")&&e.target.setAttribute("aria-pressed","true"===e.target.getAttribute("aria-pressed")?"false":"true"))}),e.parentElement.parentElement.addEventListener("focusout",t=>{!e.parentElement.parentElement.contains(t.relatedTarget)&&(e.parentElement.classList.remove("active"),e.setAttribute("aria-pressed","false"))})}); function initNoLinkDD() { var noLinkDDs = document.querySelectorAll( '.header-menu-sidebar-inner .menu-item-has-children a[href="#"]' ); if( noLinkDDs.length < 1 ) { return; } noLinkDDs.forEach( function (noLinkDD) { var dropdownButton = noLinkDD.parentElement.querySelector('button'); noLinkDD.addEventListener('click', function (e) { e.preventDefault(); dropdownButton.click(); }); }); } window.addEventListener('DOMContentLoaded', initNoLinkDD); //# sourceURL=neve-script-js-after var neveScrollOffset = {"offset":"0"}; //# sourceURL=neve-scroll-to-top-js-extra var chaty_settings = {"ajax_url":"https://kowayo.com/wp-admin/admin-ajax.php","analytics":"0","capture_analytics":"0","token":"feaf026897","chaty_widgets":[{"id":0,"identifier":0,"settings":{"cta_type":"simple-view","cta_body":"","cta_head":"","cta_head_bg_color":"","cta_head_text_color":"","show_close_button":0,"position":"right","custom_position":1,"bottom_spacing":"25","side_spacing":"25","icon_view":"vertical","default_state":"open","cta_text":"","cta_text_color":"rgb(255, 255, 255)","cta_bg_color":"#ff95ee","show_cta":"all_time","is_pending_mesg_enabled":"off","pending_mesg_count":"","pending_mesg_count_color":"#ffffff","pending_mesg_count_bgcolor":"#dd0000","widget_icon":"chat-base","widget_icon_url":"","font_family":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif","widget_size":"54","custom_widget_size":"54","is_google_analytics_enabled":0,"close_text":"Hide","widget_color":"#FF95EE","widget_icon_color":"#ffffff","widget_rgb_color":"255,149,238","has_custom_css":0,"custom_css":"","widget_token":"779d56a454","widget_index":"","attention_effect":""},"triggers":{"has_time_delay":1,"time_delay":"0","exit_intent":0,"has_display_after_page_scroll":0,"display_after_page_scroll":"0","auto_hide_widget":0,"hide_after":0,"show_on_pages_rules":[],"time_diff":0,"has_date_scheduling_rules":0,"date_scheduling_rules":{"start_date_time":"","end_date_time":""},"date_scheduling_rules_timezone":0,"day_hours_scheduling_rules_timezone":0,"has_day_hours_scheduling_rules":[],"day_hours_scheduling_rules":[],"day_time_diff":0,"show_on_direct_visit":0,"show_on_referrer_social_network":0,"show_on_referrer_search_engines":0,"show_on_referrer_google_ads":0,"show_on_referrer_urls":[],"has_show_on_specific_referrer_urls":0,"has_traffic_source":0,"has_countries":0,"countries":[],"has_target_rules":0},"channels":[{"channel":"Whatsapp","value":"6597282087","hover_text":"WhatsApp","chatway_position":"","svg_icon":"\u003Csvg width=\"39\" height=\"39\" viewBox=\"0 0 39 39\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003E\u003Ccircle class=\"color-element\" cx=\"19.4395\" cy=\"19.4395\" r=\"19.4395\" fill=\"#49E670\"/\u003E\u003Cpath d=\"M12.9821 10.1115C12.7029 10.7767 11.5862 11.442 10.7486 11.575C10.1902 11.7081 9.35269 11.8411 6.84003 10.7767C3.48981 9.44628 1.39593 6.25317 1.25634 6.12012C1.11674 5.85403 2.13001e-06 4.39053 2.13001e-06 2.92702C2.13001e-06 1.46351 0.83755 0.665231 1.11673 0.399139C1.39592 0.133046 1.8147 1.01506e-06 2.23348 1.01506e-06C2.37307 1.01506e-06 2.51267 1.01506e-06 2.65226 1.01506e-06C2.93144 1.01506e-06 3.21063 -2.02219e-06 3.35022 0.532183C3.62941 1.19741 4.32736 2.66092 4.32736 2.79397C4.46696 2.92702 4.46696 3.19311 4.32736 3.32616C4.18777 3.59225 4.18777 3.59224 3.90858 3.85834C3.76899 3.99138 3.6294 4.12443 3.48981 4.39052C3.35022 4.52357 3.21063 4.78966 3.35022 5.05576C3.48981 5.32185 4.18777 6.38622 5.16491 7.18449C6.42125 8.24886 7.39839 8.51496 7.81717 8.78105C8.09636 8.91409 8.37554 8.9141 8.65472 8.648C8.93391 8.38191 9.21309 7.98277 9.49228 7.58363C9.77146 7.31754 10.0507 7.1845 10.3298 7.31754C10.609 7.45059 12.2841 8.11582 12.5633 8.38191C12.8425 8.51496 13.1217 8.648 13.1217 8.78105C13.1217 8.78105 13.1217 9.44628 12.9821 10.1115Z\" transform=\"translate(12.9597 12.9597)\" fill=\"#FAFAFA\"/\u003E\u003Cpath d=\"M0.196998 23.295L0.131434 23.4862L0.323216 23.4223L5.52771 21.6875C7.4273 22.8471 9.47325 23.4274 11.6637 23.4274C18.134 23.4274 23.4274 18.134 23.4274 11.6637C23.4274 5.19344 18.134 -0.1 11.6637 -0.1C5.19344 -0.1 -0.1 5.19344 -0.1 11.6637C-0.1 13.9996 0.624492 16.3352 1.93021 18.2398L0.196998 23.295ZM5.87658 19.8847L5.84025 19.8665L5.80154 19.8788L2.78138 20.8398L3.73978 17.9646L3.75932 17.906L3.71562 17.8623L3.43104 17.5777C2.27704 15.8437 1.55796 13.8245 1.55796 11.6637C1.55796 6.03288 6.03288 1.55796 11.6637 1.55796C17.2945 1.55796 21.7695 6.03288 21.7695 11.6637C21.7695 17.2945 17.2945 21.7695 11.6637 21.7695C9.64222 21.7695 7.76778 21.1921 6.18227 20.039L6.17557 20.0342L6.16817 20.0305L5.87658 19.8847Z\" transform=\"translate(7.7758 7.77582)\" fill=\"white\" stroke=\"white\" stroke-width=\"0.2\"/\u003E\u003C/svg\u003E","is_desktop":1,"is_mobile":1,"icon_color":"rgb(235, 58, 114)","icon_rgb_color":"235,58,114","channel_type":"Whatsapp","custom_image_url":"","order":"","pre_set_message":"","is_use_web_version":"0","is_open_new_tab":"1","is_default_open":"0","has_welcome_message":"0","emoji_picker":"1","input_placeholder":"Write your message...","chat_welcome_message":"\u003Cp\u003EHow can I help you? :)\u003C/p\u003E","wp_popup_headline":"Let's chat on WhatsApp","wp_popup_nickname":"","wp_popup_profile":"","wp_popup_head_bg_color":"#4AA485","qr_code_image_url":"","mail_subject":"","channel_account_type":"personal","contact_form_settings":[],"contact_fields":[],"url":"https://wa.me/6597282087","mobile_target":"","desktop_target":"","target":"","is_agent":0,"agent_data":[],"header_text":"","header_sub_text":"","header_bg_color":"","header_text_color":"","widget_token":"779d56a454","widget_index":"","click_event":"","viber_url":""},{"channel":"Phone","value":"6568844280","hover_text":"Phone","chatway_position":"","svg_icon":"\u003Csvg width=\"39\" height=\"39\" viewBox=\"0 0 39 39\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003E\u003Ccircle class=\"color-element\" cx=\"19.4395\" cy=\"19.4395\" r=\"19.4395\" fill=\"#03E78B\"/\u003E\u003Cpath d=\"M19.3929 14.9176C17.752 14.7684 16.2602 14.3209 14.7684 13.7242C14.0226 13.4259 13.1275 13.7242 12.8292 14.4701L11.7849 16.2602C8.65222 14.6193 6.11623 11.9341 4.47529 8.95057L6.41458 7.90634C7.16046 7.60799 7.45881 6.71293 7.16046 5.96705C6.56375 4.47529 6.11623 2.83435 5.96705 1.34259C5.96705 0.596704 5.22117 0 4.47529 0H0.745882C0.298353 0 5.69062e-07 0.298352 5.69062e-07 0.745881C5.69062e-07 3.72941 0.596704 6.71293 1.93929 9.3981C3.87858 13.575 7.30964 16.8569 11.3374 18.7962C14.0226 20.1388 17.0061 20.7355 19.9896 20.7355C20.4371 20.7355 20.7355 20.4371 20.7355 19.9896V16.4094C20.7355 15.5143 20.1388 14.9176 19.3929 14.9176Z\" transform=\"translate(9.07179 9.07178)\" fill=\"white\"/\u003E\u003C/svg\u003E","is_desktop":1,"is_mobile":1,"icon_color":"rgb(235, 58, 114)","icon_rgb_color":"235,58,114","channel_type":"Phone","custom_image_url":"","order":"","pre_set_message":"","is_use_web_version":"1","is_open_new_tab":"1","is_default_open":"0","has_welcome_message":"0","emoji_picker":"1","input_placeholder":"Write your message...","chat_welcome_message":"","wp_popup_headline":"","wp_popup_nickname":"","wp_popup_profile":"","wp_popup_head_bg_color":"#4AA485","qr_code_image_url":"","mail_subject":"","channel_account_type":"personal","contact_form_settings":[],"contact_fields":[],"url":"tel:6568844280","mobile_target":"","desktop_target":"","target":"","is_agent":0,"agent_data":[],"header_text":"","header_sub_text":"","header_bg_color":"","header_text_color":"","widget_token":"779d56a454","widget_index":"","click_event":"","viber_url":""},{"channel":"Email","value":"clinic@kowayo.com","hover_text":"Email","chatway_position":"","svg_icon":"\u003Csvg width=\"39\" height=\"39\" viewBox=\"0 0 39 39\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003E\u003Ccircle class=\"color-element\" cx=\"19.4395\" cy=\"19.4395\" r=\"19.4395\" fill=\"#FF485F\"/\u003E\u003Cpath d=\"M20.5379 14.2557H1.36919C0.547677 14.2557 0 13.7373 0 12.9597V1.29597C0 0.518387 0.547677 0 1.36919 0H20.5379C21.3594 0 21.9071 0.518387 21.9071 1.29597V12.9597C21.9071 13.7373 21.3594 14.2557 20.5379 14.2557ZM20.5379 12.9597V13.6077V12.9597ZM1.36919 1.29597V12.9597H20.5379V1.29597H1.36919Z\" transform=\"translate(8.48619 12.3117)\" fill=\"white\"/\u003E\u003Cpath d=\"M10.9659 8.43548C10.829 8.43548 10.692 8.43548 10.5551 8.30588L0.286184 1.17806C0.012346 0.918864 -0.124573 0.530073 0.149265 0.270879C0.423104 0.0116857 0.833862 -0.117911 1.1077 0.141283L10.9659 7.00991L20.8241 0.141283C21.0979 -0.117911 21.5087 0.0116857 21.7825 0.270879C22.0563 0.530073 21.9194 0.918864 21.6456 1.17806L11.3766 8.30588C11.2397 8.43548 11.1028 8.43548 10.9659 8.43548Z\" transform=\"translate(8.47443 12.9478)\" fill=\"white\"/\u003E\u003Cpath d=\"M9.0906 7.13951C8.95368 7.13951 8.81676 7.13951 8.67984 7.00991L0.327768 1.17806C-0.0829894 0.918864 -0.0829899 0.530073 0.190849 0.270879C0.327768 0.0116855 0.738525 -0.117911 1.14928 0.141282L9.50136 5.97314C9.7752 6.23233 9.91212 6.62112 9.63828 6.88032C9.50136 7.00991 9.36444 7.13951 9.0906 7.13951Z\" transform=\"translate(20.6183 18.7799)\" fill=\"white\"/\u003E\u003Cpath d=\"M0.696942 7.13951C0.423104 7.13951 0.286185 7.00991 0.149265 6.88032C-0.124573 6.62112 0.012346 6.23233 0.286185 5.97314L8.63826 0.141282C9.04902 -0.117911 9.45977 0.0116855 9.59669 0.270879C9.87053 0.530073 9.73361 0.918864 9.45977 1.17806L1.1077 7.00991C0.970781 7.13951 0.833862 7.13951 0.696942 7.13951Z\" transform=\"translate(8.47443 18.7799)\" fill=\"white\"/\u003E\u003C/svg\u003E","is_desktop":1,"is_mobile":1,"icon_color":"rgb(235, 58, 114)","icon_rgb_color":"235,58,114","channel_type":"Email","custom_image_url":"","order":"","pre_set_message":"","is_use_web_version":"1","is_open_new_tab":"1","is_default_open":"0","has_welcome_message":"0","emoji_picker":"1","input_placeholder":"Write your message...","chat_welcome_message":"","wp_popup_headline":"","wp_popup_nickname":"","wp_popup_profile":"","wp_popup_head_bg_color":"#4AA485","qr_code_image_url":"","mail_subject":"","channel_account_type":"personal","contact_form_settings":[],"contact_fields":[],"url":"mailto:clinic@kowayo.com","mobile_target":"","desktop_target":"","target":"","is_agent":0,"agent_data":[],"header_text":"","header_sub_text":"","header_bg_color":"","header_text_color":"","widget_token":"779d56a454","widget_index":"","click_event":"","viber_url":""}]}],"data_analytics_settings":"off","lang":{"whatsapp_label":"WhatsApp Message","hide_whatsapp_form":"Hide WhatsApp Form","emoji_picker":"Show Emojis"},"has_chatway":""}; //# sourceURL=chaty-front-end-js-extra function heateorSssLoadEvent(e) {var t=window.onload;if (typeof window.onload!="function") {window.onload=e}else{window.onload=function() {t();e()}}}; var heateorSssSharingAjaxUrl = 'https://kowayo.com/wp-admin/admin-ajax.php', heateorSssCloseIconPath = 'https://kowayo.com/wp-content/plugins/sassy-social-share/public/../images/close.png', heateorSssPluginIconPath = 'https://kowayo.com/wp-content/plugins/sassy-social-share/public/../images/logo.png', heateorSssHorizontalSharingCountEnable = 0, heateorSssVerticalSharingCountEnable = 0, heateorSssSharingOffset = -10; var heateorSssMobileStickySharingEnabled = 0;var heateorSssCopyLinkMessage = "Link copied.";var heateorSssUrlCountFetched = [], heateorSssSharesText = 'Shares', heateorSssShareText = 'Share';function heateorSssPopup(e) {window.open(e,"popUpWindow","height=400,width=600,left=400,top=100,resizable,scrollbars,toolbar=0,personalbar=0,menubar=no,location=no,directories=no,status")} //# sourceURL=heateor_sss_sharing_js-js-before var jh_disabled_options_data = {"disabled_click":"1","disabled_ct_u":"1","disabled_f12":"1","disabled_ctst_i":"1","disabled_ctst_j":"1","disabled_ctst_c":"1","disabled_ct_s":"1","disabled_dragging_img":"1","disabled_notifi_status":"","disabled_notifi_text":"You cannot copy content of this Page","disabled_notifi_position":"right center","disabled_ct_p":""}; //# sourceURL=disabled-source-and-content-protection-js-js-extra {"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"wpemoji":"https://kowayo.com/wp-includes/js/wp-emoji.js?ver=7.0","twemoji":"https://kowayo.com/wp-includes/js/twemoji.js?ver=7.0"}} /** * @output wp-includes/js/wp-emoji-loader.js */ /* eslint-env es6 */ // Note: This is loaded as a script module, so there is no need for an IIFE to prevent pollution of the global scope. /** * Emoji Settings as exported in PHP via _print_emoji_detection_script(). * @typedef WPEmojiSettings * @type {object} * @property {?object} source * @property {?string} source.concatemoji * @property {?string} source.twemoji * @property {?string} source.wpemoji */ const settings = /** @type {WPEmojiSettings} */ ( JSON.parse( document.getElementById( 'wp-emoji-settings' ).textContent ) ); // For compatibility with other scripts that read from this global, in particular wp-includes/js/wp-emoji.js (source file: js/_enqueues/wp/emoji.js). window._wpemojiSettings = settings; /** * Support tests. * @typedef SupportTests * @type {object} * @property {?boolean} flag * @property {?boolean} emoji */ const sessionStorageKey = 'wpEmojiSettingsSupports'; const tests = [ 'flag', 'emoji' ]; /** * Checks whether the browser supports offloading to a Worker. * * @since 6.3.0 * * @private * * @returns {boolean} */ function supportsWorkerOffloading() { return ( typeof Worker !== 'undefined' && typeof OffscreenCanvas !== 'undefined' && typeof URL !== 'undefined' && URL.createObjectURL && typeof Blob !== 'undefined' ); } /** * @typedef SessionSupportTests * @type {object} * @property {number} timestamp * @property {SupportTests} supportTests */ /** * Get support tests from session. * * @since 6.3.0 * * @private * * @returns {?SupportTests} Support tests, or null if not set or older than 1 week. */ function getSessionSupportTests() { try { /** @type {SessionSupportTests} */ const item = JSON.parse( sessionStorage.getItem( sessionStorageKey ) ); if ( typeof item === 'object' && typeof item.timestamp === 'number' && new Date().valueOf() < item.timestamp + 604800 && // Note: Number is a week in seconds. typeof item.supportTests === 'object' ) { return item.supportTests; } } catch ( e ) {} return null; } /** * Persist the supports in session storage. * * @since 6.3.0 * * @private * * @param {SupportTests} supportTests Support tests. */ function setSessionSupportTests( supportTests ) { try { /** @type {SessionSupportTests} */ const item = { supportTests: supportTests, timestamp: new Date().valueOf() }; sessionStorage.setItem( sessionStorageKey, JSON.stringify( item ) ); } catch ( e ) {} } /** * Checks if two sets of Emoji characters render the same visually. * * This is used to determine if the browser is rendering an emoji with multiple data points * correctly. set1 is the emoji in the correct form, using a zero-width joiner. set2 is the emoji * in the incorrect form, using a zero-width space. If the two sets render the same, then the browser * does not support the emoji correctly. * * This function may be serialized to run in a Worker. Therefore, it cannot refer to variables from the containing * scope. Everything must be passed by parameters. * * @since 4.9.0 * * @private * * @param {CanvasRenderingContext2D} context 2D Context. * @param {string} set1 Set of Emoji to test. * @param {string} set2 Set of Emoji to test. * * @return {boolean} True if the two sets render the same. */ function emojiSetsRenderIdentically( context, set1, set2 ) { // Cleanup from previous test. context.clearRect( 0, 0, context.canvas.width, context.canvas.height ); context.fillText( set1, 0, 0 ); const rendered1 = new Uint32Array( context.getImageData( 0, 0, context.canvas.width, context.canvas.height ).data ); // Cleanup from previous test. context.clearRect( 0, 0, context.canvas.width, context.canvas.height ); context.fillText( set2, 0, 0 ); const rendered2 = new Uint32Array( context.getImageData( 0, 0, context.canvas.width, context.canvas.height ).data ); return rendered1.every( ( rendered2Data, index ) => { return rendered2Data === rendered2[ index ]; } ); } /** * Checks if the center point of a single emoji is empty. * * This is used to determine if the browser is rendering an emoji with a single data point * correctly. The center point of an incorrectly rendered emoji will be empty. A correctly * rendered emoji will have a non-zero value at the center point. * * This function may be serialized to run in a Worker. Therefore, it cannot refer to variables from the containing * scope. Everything must be passed by parameters. * * @since 6.8.2 * * @private * * @param {CanvasRenderingContext2D} context 2D Context. * @param {string} emoji Emoji to test. * * @return {boolean} True if the center point is empty. */ function emojiRendersEmptyCenterPoint( context, emoji ) { // Cleanup from previous test. context.clearRect( 0, 0, context.canvas.width, context.canvas.height ); context.fillText( emoji, 0, 0 ); // Test if the center point (16, 16) is empty (0,0,0,0). const centerPoint = context.getImageData(16, 16, 1, 1); for ( let i = 0; i < centerPoint.data.length; i++ ) { if ( centerPoint.data[ i ] !== 0 ) { // Stop checking the moment it's known not to be empty. return false; } } return true; } /** * Determines if the browser properly renders Emoji that Twemoji can supplement. * * This function may be serialized to run in a Worker. Therefore, it cannot refer to variables from the containing * scope. Everything must be passed by parameters. * * @since 4.2.0 * * @private * * @param {CanvasRenderingContext2D} context 2D Context. * @param {string} type Whether to test for support of "flag" or "emoji". * @param {Function} emojiSetsRenderIdentically Reference to emojiSetsRenderIdentically function, needed due to minification. * @param {Function} emojiRendersEmptyCenterPoint Reference to emojiRendersEmptyCenterPoint function, needed due to minification. * * @return {boolean} True if the browser can render emoji, false if it cannot. */ function browserSupportsEmoji( context, type, emojiSetsRenderIdentically, emojiRendersEmptyCenterPoint ) { let isIdentical; switch ( type ) { case 'flag': /* * Test for Transgender flag compatibility. Added in Unicode 13. * * To test for support, we try to render it, and compare the rendering to how it would look if * the browser doesn't render it correctly (white flag emoji + transgender symbol). */ isIdentical = emojiSetsRenderIdentically( context, '\uD83C\uDFF3\uFE0F\u200D\u26A7\uFE0F', // as a zero-width joiner sequence '\uD83C\uDFF3\uFE0F\u200B\u26A7\uFE0F' // separated by a zero-width space ); if ( isIdentical ) { return false; } /* * Test for Sark flag compatibility. This is the least supported of the letter locale flags, * so gives us an easy test for full support. * * To test for support, we try to render it, and compare the rendering to how it would look if * the browser doesn't render it correctly ([C] + [Q]). */ isIdentical = emojiSetsRenderIdentically( context, '\uD83C\uDDE8\uD83C\uDDF6', // as the sequence of two code points '\uD83C\uDDE8\u200B\uD83C\uDDF6' // as the two code points separated by a zero-width space ); if ( isIdentical ) { return false; } /* * Test for English flag compatibility. England is a country in the United Kingdom, it * does not have a two letter locale code but rather a five letter sub-division code. * * To test for support, we try to render it, and compare the rendering to how it would look if * the browser doesn't render it correctly (black flag emoji + [G] + [B] + [E] + [N] + [G]). */ isIdentical = emojiSetsRenderIdentically( context, // as the flag sequence '\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67\uDB40\uDC7F', // with each code point separated by a zero-width space '\uD83C\uDFF4\u200B\uDB40\uDC67\u200B\uDB40\uDC62\u200B\uDB40\uDC65\u200B\uDB40\uDC6E\u200B\uDB40\uDC67\u200B\uDB40\uDC7F' ); return ! isIdentical; case 'emoji': /* * Is there a large, hairy, humanoid mythical creature living in the browser? * * To test for Emoji 17.0 support, try to render a new emoji: Hairy Creature. * * The hairy creature emoji is a single code point emoji. Testing for browser * support required testing the center point of the emoji to see if it is empty. * * 0xD83E 0x1FAC8 (\uD83E\u1FAC8) == 🫈 Hairy creature. * * When updating this test, please ensure that the emoji is either a single code point * or switch to using the emojiSetsRenderIdentically function and testing with a zero-width * joiner vs a zero-width space. */ const notSupported = emojiRendersEmptyCenterPoint( context, '\uD83E\u1FAC8' ); return ! notSupported; } return false; } /** * Checks emoji support tests. * * This function may be serialized to run in a Worker. Therefore, it cannot refer to variables from the containing * scope. Everything must be passed by parameters. * * @since 6.3.0 * * @private * * @param {string[]} tests Tests. * @param {Function} browserSupportsEmoji Reference to browserSupportsEmoji function, needed due to minification. * @param {Function} emojiSetsRenderIdentically Reference to emojiSetsRenderIdentically function, needed due to minification. * @param {Function} emojiRendersEmptyCenterPoint Reference to emojiRendersEmptyCenterPoint function, needed due to minification. * * @return {SupportTests} Support tests. */ function testEmojiSupports( tests, browserSupportsEmoji, emojiSetsRenderIdentically, emojiRendersEmptyCenterPoint ) { let canvas; if ( typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope ) { canvas = new OffscreenCanvas( 300, 150 ); // Dimensions are default for HTMLCanvasElement. } else { canvas = document.createElement( 'canvas' ); } const context = canvas.getContext( '2d', { willReadFrequently: true } ); /* * Chrome on OS X added native emoji rendering in M41. Unfortunately, * it doesn't work when the font is bolder than 500 weight. So, we * check for bold rendering support to avoid invisible emoji in Chrome. */ context.textBaseline = 'top'; context.font = '600 32px Arial'; const supports = {}; tests.forEach( ( test ) => { supports[ test ] = browserSupportsEmoji( context, test, emojiSetsRenderIdentically, emojiRendersEmptyCenterPoint ); } ); return supports; } /** * Adds a script to the head of the document. * * @ignore * * @since 4.2.0 * * @param {string} src The url where the script is located. * * @return {void} */ function addScript( src ) { const script = document.createElement( 'script' ); script.src = src; script.defer = true; document.head.appendChild( script ); } settings.supports = { everything: true, everythingExceptFlag: true }; // Obtain the emoji support from the browser, asynchronously when possible. new Promise( ( resolve ) => { let supportTests = getSessionSupportTests(); if ( supportTests ) { resolve( supportTests ); return; } if ( supportsWorkerOffloading() ) { try { // Note that the functions are being passed as arguments due to minification. const workerScript = 'postMessage(' + testEmojiSupports.toString() + '(' + [ JSON.stringify( tests ), browserSupportsEmoji.toString(), emojiSetsRenderIdentically.toString(), emojiRendersEmptyCenterPoint.toString() ].join( ',' ) + '));'; const blob = new Blob( [ workerScript ], { type: 'text/javascript' } ); const worker = new Worker( URL.createObjectURL( blob ), { name: 'wpTestEmojiSupports' } ); worker.onmessage = ( event ) => { supportTests = event.data; setSessionSupportTests( supportTests ); worker.terminate(); resolve( supportTests ); }; return; } catch ( e ) {} } supportTests = testEmojiSupports( tests, browserSupportsEmoji, emojiSetsRenderIdentically, emojiRendersEmptyCenterPoint ); setSessionSupportTests( supportTests ); resolve( supportTests ); } ) // Once the browser emoji support has been obtained from the session, finalize the settings. .then( ( supportTests ) => { /* * Tests the browser support for flag emojis and other emojis, and adjusts the * support settings accordingly. */ for ( const test in supportTests ) { settings.supports[ test ] = supportTests[ test ]; settings.supports.everything = settings.supports.everything && settings.supports[ test ]; if ( 'flag' !== test ) { settings.supports.everythingExceptFlag = settings.supports.everythingExceptFlag && settings.supports[ test ]; } } settings.supports.everythingExceptFlag = settings.supports.everythingExceptFlag && ! settings.supports.flag; // When the browser can not render everything we need to load a polyfill. if ( ! settings.supports.everything ) { const src = settings.source || {}; if ( src.concatemoji ) { addScript( src.concatemoji ); } else if ( src.wpemoji && src.twemoji ) { addScript( src.twemoji ); addScript( src.wpemoji ); } } } ); //# sourceURL=https://kowayo.com/wp-includes/js/wp-emoji-loader.js
x server