CINXE.COM
Cookies Policy | Handy
<!DOCTYPE html> <html class='' ng-app='root'> <style>[ng-cloak], .ng-cloak { display: none !important; }</style> <head> <script class="handy-analytics" id="handy-analytics--properties"> window.Handy = window.Handy || {}; (function setupHandyAnalytics(){ window.Handy.analytics = window.Handy.analytics || {"utm":{"handy_utm_source":null,"handy_utm_campaign":null,"handy_utm_coupon":null,"handy_utm_term":null,"handy_utm_medium":null,"handy_utm_content":null},"env":{"scully_fingerprint":["f61e014e-5439-4aec-b1d2-39ac89120a5e","936de6b5-bd9b-4c89-ad4d-c5d48742b09b","f02f2481-da6a-4612-b5cc-f3cd24c3d273","80179280-47c2-44b9-9b61-e76d576affaa","8262a1e2-4111-4016-97f6-b3379cf61f43","f76bb87a-24d8-4f46-84fe-e3f2cd131a26","ad30d738-4fee-4801-9852-8f37c732e2db","148a89d5-a2dd-4fde-ae5b-af77c162b066","9d39ed29-6db1-4512-8367-892b9167c51c","22f1e458-b0a0-459d-bed5-5c5fe7fa2c7e","9085bc5d-35ff-40a9-a7a8-37ff61c626d3","4a005674-3d4f-409a-88a9-d413af06e5fd","8a27e092-a629-4bc8-8c5a-5a74cd8041d0","022ae9ae-f5c5-40ef-bb5c-3dccfd6930ab","0b12fa2e-0a04-47b9-9150-edf9162bb68f","a48b4f5d-5bc2-473b-af88-25c2756d1008","20def8ec-aece-496e-80bc-8b608943c526","32faf179-c8fc-488f-a8d1-ff864e3be35e","72128813-e90f-45bf-8610-42980db57e90","0982159d-bc11-4173-b706-3123595ec604","b108499f-2e65-44e0-bb1d-fb8adfd675ef","30ecbfb0-ac32-4782-89c9-7aa751b9c540","3ef14d53-b7e4-408b-bb82-11106f2e12f4","78476689-4e12-4656-b509-f50e7c7190ee","34264c8c-942e-4051-b79f-bb3b67a4b9e9","8b1b9adb-5c3e-4fb1-a3d3-04a5db56a0d0","f39efb97-6942-4f29-ab22-19872ff8138c","7eb84b52-de6a-420f-ab00-739b72dcc716","281f397f-066f-4cca-8161-184db8a399e2","aee2200d-50e7-4cdb-b707-47bfea3e57fc","66d4b66b-ca20-4259-9fed-e0cd6856997c","65cf9460-893b-4155-bf93-a20ebb96167f","b5bbd335-1824-4e09-9810-2564222500c9","0d8c92ef-07bb-4bdb-9e78-698da974ba61","2db075b9-0c02-4e1e-9e81-2afaeeb4156b","bf779d91-45fa-44ed-98d7-05802e5c24b3","e975b5e5-c2d3-4991-a9d1-a399b27b1b37","1dcebcb7-550f-4c69-873e-57fc6734b2d3","0644d3ac-1eec-4513-9d16-7c41a61c41cf","37dffef4-caf2-47ec-a0b7-effc326b18aa","f7166369-537f-4cc5-8076-9fc369d1f33a"],"browser_uid":"nRZti9Y7dYgiLFPMqE6bvbLXI0RRYsLlw/zaHDnw0uJBZRwO7zPDi0WGvfZ6JFT/nTO4cQTWfvNZj11VJdrnjA==","from_native":false,"native_session_uid":null},"user":{"impersonating":false,"brand":"handy","new":false},"booking":{},"quote_request":{},"pageInfo":{"bookingId":null,"conversionType":null,"serviceName":null,"serviceCategory":null,"serviceId":null,"recurringFrequency":null,"zipcode":null,"dateOfBooking":null,"timeOfBooking":null,"dateAdded":null,"hourlyRate":null,"bookingHrs":null,"discount":null,"couponCode":null,"confirmedBooking":false,"cleaningType":null,"numberCreatedBookings":0,"isCleaning":0,"isCommit":0,"isOneTime":0,"isRecurring":0},"customerInfo":{"newUser":1,"userLoggedIn":false,"userHasAccount":false}}; }()); </script> <title>Cookies Policy | Handy</title> <meta charset='utf-8'> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","errorBeacon":"bam.nr-data.net","licenseKey":"fee8387e35","applicationID":"16225130","transactionName":"IQwNRkoKXlVcSh5QDwULPERXCUZYXl0eSAcFBhAdSw1dTg==","queueTime":0,"applicationTime":144,"agent":""}</script> <script type="text/javascript">(window.NREUM||(NREUM={})).init={ajax:{deny_list:["bam.nr-data.net"]}};(window.NREUM||(NREUM={})).loader_config={xpid:"VwMPUFNbGwIGVlNXBgIH",licenseKey:"fee8387e35",applicationID:"16225130"};;/*! For license information please see nr-loader-full-1.286.0.min.js.LICENSE.txt */ (()=>{var e,t,r={8122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(8122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},9417:(e,t,r)=>{"use strict";r.d(t,{D0:()=>h,gD:()=>p,xN:()=>g});var n=r(3333);const i=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var o=r(2614),a=r(944),s=r(384),c=r(8122);const u="[data-nr-mask]",d=()=>{const e={feature_flags:[],experimental:{marks:!1,measures:!1,resources:!1},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{get capture_marks(){return e.feature_flags.includes(n.$v.MARKS)||e.experimental.marks},set capture_marks(t){e.experimental.marks=t},get capture_measures(){return e.feature_flags.includes(n.$v.MEASURES)||e.experimental.measures},set capture_measures(t){e.experimental.measures=t},capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(n.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:o.wk,inactiveMs:o.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){i(t)?e.mask_selector="".concat(t,",").concat(u):""===t||null===t?e.mask_selector=u:(0,a.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){i(t)?e.block_selector+=",".concat(t):""!==t&&(0,a.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,a.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},spa:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]}}},l={},f="All configuration objects require an agent identifier!";function h(e){if(!e)throw new Error(f);if(!l[e])throw new Error("Configuration for ".concat(e," was never set"));return l[e]}function g(e,t){if(!e)throw new Error(f);l[e]=(0,c.a)(t,d());const r=(0,s.nY)(e);r&&(r.init=l[e])}function p(e,t){if(!e)throw new Error(f);var r=h(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},5603:(e,t,r)=>{"use strict";r.d(t,{a:()=>c,o:()=>s});var n=r(384),i=r(8122);const o={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},a={};function s(e){if(!e)throw new Error("All loader-config objects require an agent identifier!");if(!a[e])throw new Error("LoaderConfig for ".concat(e," was never set"));return a[e]}function c(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.loader_config=a[e])}},3371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>l});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0,harvester:void 0},d={};function l(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!d[e])throw new Error("Runtime for ".concat(e," was never set"));return d[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");d[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(d[e],"harvestCount")||Object.defineProperty(d[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=d[e])}},9324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,Yq:()=>a,xv:()=>n});const n="1.286.0",i="PROD",o="CDN",a="^2.0.0-alpha.18"},6154:(e,t,r)=>{"use strict";r.d(t,{OF:()=>u,RI:()=>i,WN:()=>f,bv:()=>o,gm:()=>a,lR:()=>l,m:()=>c,mw:()=>s,sb:()=>d});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s=Boolean("hidden"===a?.document?.visibilityState),c=""+a?.location,u=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),d=u&&"undefined"==typeof SharedWorker,l=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),f=Date.now()-(0,n.t)()},7295:(e,t,r)=>{"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>o});var n=[];function i(e){if(!e||o(e))return!1;if(0===n.length)return!0;for(var t=0;t<n.length;t++){var r=n[t];if("*"===r.hostname)return!1;if(s(r.hostname,e.hostname)&&c(r.pathname,e.pathname))return!1}return!0}function o(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let o,a;i>0?(o=r.substring(0,i),a=r.substring(i)):(o=r,a="");let[s]=o.split(":");n.push({hostname:s,pathname:a})}}function s(e,t){return!(e.length>t.length)&&t.indexOf(e)===t.length-e.length}function c(e,t){return 0===e.indexOf("/")&&(e=e.substring(1)),0===t.indexOf("/")&&(t=t.substring(1)),""===e||e===t}},3241:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(6154);const i="newrelic";function o(e={}){try{n.gm.dispatchEvent(new CustomEvent(i,{detail:e}))}catch(e){}}},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>l,x3:()=>u});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};d(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),h(e,t,!1),s[e].size&&f(e))}function d(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function l(e="",t="feature",r=!1){if(d(e),!e||!s[e].get(t)||r)return h(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),h(e,t)})))}function h(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)g(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function g(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:g,addEventListener:g,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o&&(o=!0);if(u.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=h(n),c=p(e),d=c.length,l=0;l<d;l++)c[l].apply(a,r);var g=v()[s[e]];g&&g.push([f,e,r,a]);return a},get:m,listeners:p,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function g(e,t){n[e]=p(e).concat(t)}function p(e){return n[e]||[]}function m(t){return d[t]=d[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=u)},2646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,ZF:()=>c,bz:()=>a,el:()=>u});var n=r(6154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}function c(){return s(16)}function u(){return s(32)}},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},7485:(e,t,r)=>{"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},5701:(e,t,r)=>{"use strict";r.d(t,{B:()=>a,t:()=>s});var n=r(7836),i=r(3241);const o=new Set,a={};function s(e,t){const r=n.ee.get(t);a[t]??={},e&&"object"==typeof e&&(o.has(t)||(r.emit("rumresp",[e]),a[t]=e,o.add(t),(0,i.W)({agentIdentifier:t,loaded:!0,drained:!0,type:"lifecycle",name:"load",feature:void 0,data:e})))}},8990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},3304:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(7836);const i=()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}};function o(e){try{return JSON.stringify(e,i())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(3878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>d,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>l});var n=r(6154),i=r(1863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function d(e,t){a()[e]=t}function l(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},2843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},8139:(e,t,r)=>{"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),o=r(8990),a=r(6154);const s={},c=a.gm.XMLHttpRequest,u="addEventListener",d="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e){var t=function(e){return(e||n.ee).get("events")}(e);if(s[t.debugId]++)return t;s[t.debugId]=1;var r=(0,i.YM)(t,!0);function f(e){r.inPlace(e,[u,d],"-",g)}function g(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,f),c&&h(c.prototype,f),h(a.gm,f)),t.on(u+"-start",(function(e,t){var n=e[1];if(null!==n&&("function"==typeof n||"object"==typeof n)){var i=(0,o.I)(n,l,(function(){var e={object:function(){if("function"!=typeof n.handleEvent)return;return n.handleEvent.apply(n,arguments)},function:n}[typeof n];return e?r(e,"fn-",null,e.name||"anonymous"):n}));this.wrapped=e[1]=i}})),t.on(d+"-start",(function(e){e[1]=this.wrapped||e[1]})),t}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,u);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434:(e,t,r)=>{"use strict";r.d(t,{Jt:()=>o,YM:()=>c});var n=r(7836),i=r(5607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],u=e[c];d(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return d(t)?t:(r||(r=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,d,l;try{a=this,o=[...arguments],d="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],d],e)}i(r+"start",[o,a,s],d,c);try{return l=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],d,c),e}finally{i(r+"end",[o,a,l],d,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function d(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},9414:(e,t,r)=>{"use strict";r.d(t,{J:()=>c});var n=r(7836),i=r(2646),o=r(944),a=r(3434);const s=new Map;function c(e,t,r,c){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,o.R)(29);const u=function(e){return(e||n.ee).get("logger")}(e),d=(0,a.YM)(u),l=new i.y(n.P);l.level=c.level,l.customAttributes=c.customAttributes;const f=t[r]?.[a.Jt]||t[r];return s.set(f,l),d.inPlace(t,[r],"wrap-logger-",(()=>s.get(f))),u}},9300:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.ajax},3333:(e,t,r)=>{"use strict";r.d(t,{$v:()=>u,TZ:()=>n,Zp:()=>i,kd:()=>c,mq:()=>s,nf:()=>a,qN:()=>o});const n=r(860).K7.genericEvents,i=["auxclick","click","copy","keydown","paste","scrollend"],o=["focus","blur"],a=4,s=1e3,c=["PageAction","UserAction","BrowserPerformance"],u={MARKS:"experimental.marks",MEASURES:"experimental.measures",RESOURCES:"experimental.resources"}},6774:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.jserrors},993:(e,t,r)=>{"use strict";r.d(t,{A$:()=>o,ET:()=>a,TZ:()=>s,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o={OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},a="log",s=n.K7.logging},3785:(e,t,r)=>{"use strict";r.d(t,{R:()=>c,b:()=>u});var n=r(9908),i=r(1863),o=r(860),a=r(8154),s=r(993);function c(e,t,r={},c=s.p_.INFO){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,o.K7.metrics,e),(0,n.p)(s.ET,[(0,i.t)(),t,r,c],void 0,o.K7.logging,e)}function u(e){return"string"==typeof e&&Object.values(s.p_).some((t=>t===e.toUpperCase().trim()))}},8154:(e,t,r)=>{"use strict";r.d(t,{z_:()=>o,XG:()=>s,TZ:()=>n,rs:()=>i,xV:()=>a});r(6154),r(9566),r(384);const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=>{"use strict";r.d(t,{BB:()=>d,G4:()=>o,Qb:()=>l,TZ:()=>i,Ug:()=>a,_s:()=>s,bc:()=>u,yP:()=>c});var n=r(2614);const i=r(860).K7.sessionReplay,o={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"},a=.12,s={DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},c={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0},u={RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},d=5e3,l={API:"api"}},5270:(e,t,r)=>{"use strict";r.d(t,{Aw:()=>c,CT:()=>u,SR:()=>s,rF:()=>d});var n=r(384),i=r(9417),o=r(7767),a=r(6154);function s(e){return!!(0,n.dV)().o.MO&&(0,o.V)(e)&&!0===(0,i.gD)(e,"session_trace.enabled")}function c(e){return!0===(0,i.gD)(e,"session_replay.preload")&&s(e)}function u(e,t){const r=t.correctAbsoluteTimestamp(e);return{originalTimestamp:e,correctedTimestamp:r,timestampDiff:e-r,originTime:a.WN,correctedOriginTime:t.correctedOriginTime,originTimeDiff:Math.floor(a.WN-t.correctedOriginTime)}}function d(e,t){try{if("string"==typeof t?.type){if("password"===t.type.toLowerCase())return"*".repeat(e?.length||0);if(void 0!==t?.dataset?.nrUnmask||t?.classList?.contains("nr-unmask"))return e}}catch(e){}return"string"==typeof e?e.replace(/[\S]/g,"*"):"*".repeat(e?.length||0)}},3738:(e,t,r)=>{"use strict";r.d(t,{He:()=>i,Kp:()=>s,Lc:()=>u,Rz:()=>d,TZ:()=>n,bD:()=>o,d3:()=>a,jx:()=>l,uP:()=>c});const n=r(860).K7.sessionTrace,i="bstResource",o="resource",a="-start",s="-end",c="fn"+a,u="fn"+s,d="pushState",l=1e3},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7767:(e,t,r)=>{"use strict";r.d(t,{V:()=>o});var n=r(9417),i=r(6154);const o=e=>i.RI&&!0===(0,n.gD)(e,"privacy.cookies_enabled")},8969:(e,t,r)=>{"use strict";r.d(t,{j:()=>N});var n=r(860),i=r(2555),o=r(9908),a=r(1687),s=r(5289),c=r(6154),u=r(944),d=r(8154),l=r(384),f=r(6344);const h=["setErrorHandler","finished","addToTrace","addRelease","recordCustomEvent","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",f.G4.RECORD,f.G4.PAUSE,"log","wrapLogger"],g=["setErrorHandler","finished","addToTrace","addRelease"];var p=r(1863),m=r(2614),v=r(993),b=r(3785),y=r(9414),R=r(3241),x=r(5701);function w(){const e=(0,l.pV)();h.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.runtime?e.exposed&&e[t]&&"micro-agent"!==e.runtime.loaderType&&n.push(e[t](...r)):(0,u.R)(38,t)})),n[0]}(t,...r)}))}const E={};var A=r(9417),T=r(5603),S=r(3371);const _=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};var O=r(7836);const I=new Set;function N(e,t={},h,N){let{init:P,info:j,loader_config:C,runtime:k={},exposed:H=!0}=t;k.loaderType=h;const L=(0,l.pV)();j||(P=L.init,j=L.info,C=L.loader_config),(0,A.xN)(e.agentIdentifier,P||{}),(0,T.a)(e.agentIdentifier,C||{}),j.jsAttributes??={},c.bv&&(j.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,j);const D=e.init,M=[j.beacon,j.errorBeacon];I.has(e.agentIdentifier)||(D.proxy.assets&&(_(D.proxy.assets),M.push(D.proxy.assets)),D.proxy.beacon&&M.push(D.proxy.beacon),w(),(0,l.US)("activatedFeatures",x.B),e.runSoftNavOverSpa&&=!0===D.soft_navigations.enabled&&D.feature_flags.includes("soft_nav")),k.denyList=[...D.ajax.deny_list||[],...D.ajax.block_internal?M:[]],k.ptid=e.agentIdentifier,(0,S.V)(e.agentIdentifier,k),I.has(e.agentIdentifier)||(e.ee=O.ee.get(e.agentIdentifier),e.exposed=H,function(e,t){t||(0,a.Ak)(e.agentIdentifier,"api");const l=e.ee.get("tracer");E[e.agentIdentifier]=m.g.OFF,e.ee.on(f.G4.REPLAY_RUNNING,(t=>{E[e.agentIdentifier]=t}));const h="api-",w=h+"ixn-";function A(t,r,n,o){const a=e.info;return null===r?delete a.jsAttributes[t]:(0,i.x1)(e.agentIdentifier,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),_(h,n,!0,o||null===r?"session":void 0)(t,r)}function T(){}e.log=function(t,{customAttributes:r={},level:i=v.p_.INFO}={}){(0,o.p)(d.xV,["API/log/called"],void 0,n.K7.metrics,e.ee),(0,b.R)(e.ee,t,r,i)},e.wrapLogger=(t,r,{customAttributes:i={},level:a=v.p_.INFO}={})=>{(0,o.p)(d.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,e.ee),(0,y.J)(e.ee,t,r,{customAttributes:i,level:a})},g.forEach((t=>{e[t]=_(h,t,!0,"api")})),e.addPageAction=_(h,"addPageAction",!0,n.K7.genericEvents),e.recordCustomEvent=_(h,"recordCustomEvent",!0,n.K7.genericEvents),e.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),e.runtime.customTransaction=(r||"http://custom.transaction")+t,_(h,"setPageViewName",!0)()},e.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return A(e,t,"setCustomAttribute",r);(0,u.R)(40,typeof t)}else(0,u.R)(39,typeof e)},e.setUserId=function(e){if("string"==typeof e||null===e)return A("enduser.id",e,"setUserId",!0);(0,u.R)(41,typeof e)},e.setApplicationVersion=function(e){if("string"==typeof e||null===e)return A("application.version",e,"setApplicationVersion",!1);(0,u.R)(42,typeof e)},e.start=()=>{try{(0,o.p)(d.xV,["API/start/called"],void 0,n.K7.metrics,e.ee),e.ee.emit("manual-start-all")}catch(e){(0,u.R)(23,e)}},e[f.G4.RECORD]=function(){(0,o.p)(d.xV,["API/recordReplay/called"],void 0,n.K7.metrics,e.ee),(0,o.p)(f.G4.RECORD,[],void 0,n.K7.sessionReplay,e.ee)},e[f.G4.PAUSE]=function(){(0,o.p)(d.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,e.ee),(0,o.p)(f.G4.PAUSE,[],void 0,n.K7.sessionReplay,e.ee)},e.interaction=function(e){return(new T).get("object"==typeof e?e:{})};const S=T.prototype={createTracer:function(t,r){var i={},a=this,s="function"==typeof r;return(0,o.p)(d.xV,["API/createTracer/called"],void 0,n.K7.metrics,e.ee),e.runSoftNavOverSpa||(0,o.p)(w+"tracer",[(0,p.t)(),t,i],a,n.K7.spa,e.ee),function(){if(l.emit((s?"":"no-")+"fn-start",[(0,p.t)(),a,s],i),s)try{return r.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw l.emit("fn-err",[arguments,this,t],i),t}finally{l.emit("fn-end",[(0,p.t)()],i)}}}};function _(t,r,i,a){return function(){return(0,o.p)(d.xV,["API/"+r+"/called"],void 0,n.K7.metrics,e.ee),(0,R.W)({agentIdentifier:e.agentIdentifier,drained:!!x.B?.[e.agentIdentifier],type:"data",name:"api",feature:t+r,data:{notSpa:i,bufferGroup:a}}),a&&(0,o.p)(t+r,[i?(0,p.t)():performance.now(),...arguments],i?null:this,a,e.ee),i?void 0:this}}function O(){r.e(891).then(r.bind(r,8778)).then((({setAsyncAPI:t})=>{t(e),(0,a.Ze)(e.agentIdentifier,"api")})).catch((t=>{(0,u.R)(27,t),e.ee.abort()}))}["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((t=>{S[t]=_(w,t,void 0,e.runSoftNavOverSpa?n.K7.softNav:n.K7.spa)})),e.setCurrentRouteName=e.runSoftNavOverSpa?_(w,"routeName",void 0,n.K7.softNav):_(h,"routeName",!0,n.K7.spa),e.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,o.p)(d.xV,["API/noticeError/called"],void 0,n.K7.metrics,e.ee),(0,o.p)("err",[t,(0,p.t)(),!1,r,!!E[e.agentIdentifier]],void 0,n.K7.jserrors,e.ee)},c.RI?(0,s.GG)((()=>O()),!0):O()}(e,N),(0,R.W)({agentIdentifier:e.agentIdentifier,drained:!!x.B?.[e.agentIdentifier],type:"lifecycle",name:"initialize",feature:void 0,data:e.config})),I.add(e.agentIdentifier)}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>d,K7:()=>c,P3:()=>u,XX:()=>i,Yy:()=>s,df:()=>o,qY:()=>n,v4:()=>a});const n="events",i="jserrors",o="browser/blobs",a="rum",s="browser/logs",c={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},u={[c.pageViewEvent]:1,[c.pageViewTiming]:2,[c.metrics]:3,[c.jserrors]:4,[c.spa]:5,[c.ajax]:6,[c.sessionTrace]:7,[c.softNav]:8,[c.sessionReplay]:9,[c.logging]:10,[c.genericEvents]:11},d={[c.pageViewEvent]:a,[c.pageViewTiming]:n,[c.ajax]:n,[c.spa]:n,[c.softNav]:n,[c.metrics]:i,[c.jserrors]:i,[c.sessionTrace]:o,[c.sessionReplay]:o,[c.logging]:s,[c.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>({95:"nr-full-compressor",222:"nr-full-recorder",891:"nr-full"}[e]+"-1.286.0.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.286.0.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d<u.length;d++){var l=u[d];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+o){s=l;break}}if(!s){c=!0;var f={891:"sha512-X28Y1nfmtn0Xl6rrvSj6yKktd3hdVlMJVpJIppDwjQkgtGLkoZTkr/6W5jnO5zHwMYgytOeQ9Zp8BH7X+M7hug==",222:"sha512-8Mc14NKEdLpLSGrkgcn6zXCvZq7SjtS54yzNEfu8VHYkMe2MNDCmPGJ6nxZvT6LoiNaj5I6a+emLUKL+GoT1Mw==",95:"sha512-rtlVTeYLfTLdKUtGMkJ98v3moIO41WYGH5IePgCLEO4i9MF6wKNkYoVKSbmeA5aepLI3TkgwSygReaZkzVIe1A=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var h=(t,n)=>{s.onerror=s.onload=null,clearTimeout(g);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},g=setTimeout(h.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=h.bind(null,s.onerror),s.onload=h.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={85:0,959:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.286.0.PROD"]=self["webpackChunk:NRBA-1.286.0.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(){this.agentIdentifier=(0,r.LA)(16)}#e(t,...r){if(this[t]!==n.prototype[t])return this[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}recordCustomEvent(e,t){return this.#e("recordCustomEvent",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if(this[t]!==o.prototype[t]&&this[t]!==n.prototype[t])return this[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(9417);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var d=i(8969);var l=i(1687),f=i(4234),h=i(5289),g=i(6154),p=i(5270),m=i(7767),v=i(6389);class b extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,l.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,v.J)((()=>{(0,l.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if((0,m.V)(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(891).then(i.bind(i,6526));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(!this.#t(this.featureName,o))return(0,l.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(891).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),t.runtime.harvester.initializedAggregates.push(this.featAggregate),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,l.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};g.RI?(0,h.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return(0,p.SR)(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var y=i(6630);class R extends b{static featureName=y.T;constructor(e,t=!0){super(e,y.T,t),this.importAggregator(e)}}var x=i(384);var w=i(9908),E=i(2843),A=i(3878),T=i(782),S=i(1863);class _ extends b{static featureName=T.T;constructor(e,t=!0){super(e,T.T,t),g.RI&&((0,E.u)((()=>(0,w.p)("docHidden",[(0,S.t)()],void 0,T.T,this.ee)),!0),(0,A.sp)("pagehide",(()=>(0,w.p)("winPagehide",[(0,S.t)()],void 0,T.T,this.ee))),this.importAggregator(e))}}var O=i(8154);class I extends b{static featureName=O.TZ;constructor(e,t=!0){super(e,O.TZ,t),g.RI&&document.addEventListener("securitypolicyviolation",(e=>{(0,w.p)(O.xV,["Generic/CSPViolation/Detected"],void 0,this.featureName,this.ee)})),this.importAggregator(e)}}var N=i(6774),P=i(3304);class j{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,P.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function C(e){return L(e)?e:new j(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic)}function k(e){const t="Unhandled Promise Rejection: ";if(!e?.reason)return;if(L(e.reason)){try{e.reason.message.startsWith(t)||(e.reason.message=t+e.reason.message)}catch(e){}return C(e.reason)}const r=C(e.reason);return(r.message||"").startsWith(t)||(r.message=t+r.message),r}function H(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new j(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic);return t.name=SyntaxError.name,t}return L(e.error)?e.error:C(e)}function L(e){return e instanceof Error&&!!e.stack}class D extends b{static featureName=N.T;#r=!1;constructor(e,r=!0){super(e,N.T,r);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",((e,t)=>{this.abortHandler&&(0,w.p)("ierr",[C(e),(0,S.t)(),!0,{},this.#r,t],void 0,this.featureName,this.ee)})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.#r=e})),g.gm.addEventListener("unhandledrejection",(e=>{this.abortHandler&&(0,w.p)("err",[k(e),(0,S.t)(),!1,{unhandledPromiseRejection:1},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),g.gm.addEventListener("error",(e=>{this.abortHandler&&(0,w.p)("err",[H(e),(0,S.t)(),!1,{},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var M=i(8990);let K=1;const U="nr@id";function V(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===g.gm?0:(0,M.I)(e,U,(function(){return K++}))}function G(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,P.A)(e).length}catch(e){return}}}var F=i(8139),B=i(7836),W=i(3434);const z={},q=["open","send"];function Z(t){var r=t||B.ee;const n=function(e){return(e||B.ee).get("xhr")}(r);if(void 0===g.gm.XMLHttpRequest)return n;if(z[n.debugId]++)return n;z[n.debugId]=1,(0,F.u)(r);var i=(0,W.YM)(n),o=g.gm.XMLHttpRequest,a=g.gm.MutationObserver,s=g.gm.Promise,c=g.gm.setInterval,u="readystatechange",d=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],l=[],f=g.gm.XMLHttpRequest=function(t){const r=new o(t),a=n.context(r);try{n.emit("new-xhr",[r],a),r.addEventListener(u,(s=a,function(){var e=this;e.readyState>3&&!s.resolved&&(s.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,d,"fn-",y)}),(0,A.jT)(!1))}catch(t){(0,e.R)(15,t);try{n.emit("internal-error",[t])}catch(e){}}var s;return r};function h(e,t){i.inPlace(t,["onreadystatechange"],"fn-",y)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,f),f.prototype=o.prototype,i.inPlace(f.prototype,q,"-xhr-",y),n.on("send-xhr-start",(function(e,t){h(e,t),function(e){l.push(e),a&&(p?p.then(b):c?c(b):(m=-m,v.data=m))}(t)})),n.on("open-xhr-start",h),a){var p=s&&s.resolve();if(!c&&!s){var m=1,v=document.createTextNode(m);new a(b).observe(v,{characterData:!0})}}else r.on("fn-end",(function(e){e[0]&&e[0].type===u||b()}));function b(){for(var e=0;e<l.length;e++)h(0,l[e]);l.length&&(l=[])}function y(e,t){return t}return n}var Y="fetch-",X=Y+"body-",J=["arrayBuffer","blob","json","text","formData"],Q=g.gm.Request,ee=g.gm.Response,te="prototype";const re={};function ne(e){const t=function(e){return(e||B.ee).get("fetch")}(e);if(!(Q&&ee&&g.gm.fetch))return t;if(re[t.debugId]++)return t;function r(e,r,n){var i=e[r];"function"==typeof i&&(e[r]=function(){var e,r=[...arguments],o={};t.emit(n+"before-start",[r],o),o[B.P]&&o[B.P].dt&&(e=o[B.P].dt);var a=i.apply(this,r);return t.emit(n+"start",[r,e],a),a.then((function(e){return t.emit(n+"end",[null,e],a),e}),(function(e){throw t.emit(n+"end",[e],a),e}))})}return re[t.debugId]=1,J.forEach((e=>{r(Q[te],e,X),r(ee[te],e,X)})),r(g.gm,"fetch",Y),t.on(Y+"end",(function(e,r){var n=this;if(r){var i=r.headers.get("content-length");null!==i&&(n.rxSize=i),t.emit(Y+"done",[null,r],n)}else t.emit(Y+"done",[e],n)})),t}var ie=i(7485),oe=i(5603);class ae{constructor(e){this.agentIdentifier=e}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var t=(0,oe.o)(this.agentIdentifier);if(!t)return null;var n=(t.accountID||"").toString()||null,i=(t.agentID||"").toString()||null,o=(t.trustKey||"").toString()||null;if(!n||!i)return null;var a=(0,r.ZF)(),s=(0,r.el)(),c=Date.now(),u={spanId:a,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(u.traceContextParentHeader=this.generateTraceContextParentHeader(a,s),u.traceContextStateHeader=this.generateTraceContextStateHeader(a,c,n,i,o)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(u.newrelicHeader=this.generateTraceHeader(a,s,c,n,i,o)),u}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,o){if(!("function"==typeof g.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return o&&n!==o&&(a.d.tk=o),btoa((0,P.A)(a))}shouldGenerateTrace(e){return this.isDtEnabled()&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1,r={};if((0,s.gD)(this.agentIdentifier,"distributed_tracing")&&(r=(0,s.D0)(this.agentIdentifier).distributed_tracing),e.sameOrigin)t=!0;else if(r.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,ie.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}isDtEnabled(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.enabled}excludeNewrelicHeader(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.cors_use_tracecontext_headers}}var se=i(9300),ce=i(7295),ue=["load","error","abort","timeout"],de=ue.length,le=(0,x.dV)().o.REQ,fe=(0,x.dV)().o.XHR;const he="X-NewRelic-App-Data";class ge extends b{static featureName=se.T;constructor(e,t=!0){super(e,se.T,t),this.dt=new ae(e.agentIdentifier),this.handler=(e,t,r,n)=>(0,w.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};g.gm?.performance?.getEntriesByType("resource").forEach((t=>{if(t.initiatorType in e&&0!==t.responseStatus){const r={status:t.responseStatus},n={rxSize:t.transferSize,duration:Math.floor(t.duration),cbTime:0};pe(r,t.name),this.handler("xhr",[r,n,t.startTime,t.responseEnd,e[t.initiatorType]],void 0,a.K7.ajax)}}))}catch(e){}ne(this.ee),Z(this.ee),function(e,t,r,n){function i(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=x,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener("load",(function(r){E(t,e)}),(0,A.jT)(!1)),g.lR||e.addEventListener("progress",(function(e){t.lastSize=e.loaded}),(0,A.jT)(!1))}function o(e){this.params={method:e[0]},pe(this,e[1]),this.metrics={}}function s(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var i=n.generateTracePayload(this.parsedOrigin);if(i){var o=!1;i.newrelicHeader&&(r.setRequestHeader("newrelic",i.newrelicHeader),o=!0),i.traceContextParentHeader&&(r.setRequestHeader("traceparent",i.traceContextParentHeader),i.traceContextStateHeader&&r.setRequestHeader("tracestate",i.traceContextStateHeader),o=!0),o&&(this.dt=i)}}function c(e,r){var n=this.metrics,i=e[0],o=this;if(n&&i){var a=G(i);a&&(n.txSize=a)}this.startTime=(0,S.t)(),this.body=i,this.listener=function(e){try{"abort"!==e.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==e.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof r.onload)&&"function"==typeof o.end)&&o.end(r)}catch(e){try{t.emit("internal-error",[e])}catch(e){}}};for(var s=0;s<de;s++)r.addEventListener(ue[s],this.listener,(0,A.jT)(!1))}function u(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function d(e,t){var r=""+V(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function l(e,t){var r=""+V(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function f(){this.endTime=(0,S.t)()}function h(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-added",[e[1],e[2]],r)}function p(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-removed",[e[1],e[2]],r)}function m(e,t,r){t instanceof fe&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,S.t)()))}function v(e,r){this.xhrCbStart&&t.emit("xhr-cb-time",[(0,S.t)()-this.xhrCbStart,this.onload,r],r)}function b(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&g.RI&&(t=""+g.gm.location.href):e[0]&&e[0].url?t=e[0].url:g.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,ie.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var i=n.generateTracePayload(this.parsedOrigin);if(i&&(i.newrelicHeader||i.traceContextParentHeader))if(e[0]&&e[0].headers)s(e[0].headers,i)&&(this.dt=i);else{var o={};for(var a in r)o[a]=r[a];o.headers=new Headers(r.headers||{}),s(o.headers,i)&&(this.dt=i),e.length>1?e[1]=o:e.push(o)}}function s(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function y(e,t){this.params={},this.metrics={},this.startTime=(0,S.t)(),this.dt=t,e.length>=1&&(this.target=e[0]),e.length>=2&&(this.opts=e[1]);var r,n=this.opts||{},i=this.target;"string"==typeof i?r=i:"object"==typeof i&&i instanceof le?r=i.url:g.gm?.URL&&"object"==typeof i&&i instanceof URL&&(r=i.href),pe(this,r);var o=(""+(i&&i instanceof le&&i.method||n.method||"GET")).toUpperCase();this.params.method=o,this.body=n.body,this.txSize=G(n.body)||0}function R(e,t){if(this.endTime=(0,S.t)(),this.params||(this.params={}),(0,ce.iW)(this.params))return;let n;this.params.status=t?t.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);const i={txSize:this.txSize,rxSize:n,duration:(0,S.t)()-this.startTime};r("xhr",[this.params,i,this.startTime,this.endTime,"fetch"],this,a.K7.ajax)}function x(e){const t=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(let t=0;t<de;t++)e.removeEventListener(ue[t],this.listener,!1);t.aborted||(0,ce.iW)(t)||(n.duration=(0,S.t)()-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):E(this,e),n.cbTime=this.cbTime,r("xhr",[t,n,this.startTime,this.endTime,"xhr"],this,a.K7.ajax))}}function E(e,r){e.params.status=r.status;var n=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?G(e.response):"text"===r||""===r||void 0===r?G(e.responseText):void 0}(r,e.lastSize);if(n&&(e.metrics.rxSize=n),e.sameOrigin&&r.getAllResponseHeaders().indexOf(he)>=0){var i=r.getResponseHeader(he);i&&((0,w.p)(O.rs,["Ajax/CrossApplicationTracing/Header/Seen"],void 0,a.K7.metrics,t),e.params.cat=i.split(", ").pop())}e.loadCaptureCalled=!0}t.on("new-xhr",i),t.on("open-xhr-start",o),t.on("open-xhr-end",s),t.on("send-xhr-start",c),t.on("xhr-cb-time",u),t.on("xhr-load-added",d),t.on("xhr-load-removed",l),t.on("xhr-resolved",f),t.on("addEventListener-end",h),t.on("removeEventListener-end",p),t.on("fn-end",v),t.on("fetch-before-start",b),t.on("fetch-start",y),t.on("fn-start",m),t.on("fetch-done",R)}(e,this.ee,this.handler,this.dt),this.importAggregator(e)}}function pe(e,t){var r=(0,ie.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}const me={},ve=["pushState","replaceState"];function be(e){const t=function(e){return(e||B.ee).get("history")}(e);return!g.RI||me[t.debugId]++||(me[t.debugId]=1,(0,W.YM)(t).inPlace(window.history,ve,"-")),t}var ye=i(3738);const{He:Re,bD:xe,d3:we,Kp:Ee,TZ:Ae,Lc:Te,uP:Se,Rz:_e}=ye;class Oe extends b{static featureName=Ae;constructor(e,t=!0){super(e,Ae,t);if(!(0,m.V)(this.agentIdentifier))return void this.deregisterDrain();const r=this.ee;let n;be(r),this.eventsEE=(0,F.u)(r),this.eventsEE.on(Se,(function(e,t){this.bstStart=(0,S.t)()})),this.eventsEE.on(Te,(function(e,t){(0,w.p)("bst",[e[0],t,this.bstStart,(0,S.t)()],void 0,a.K7.sessionTrace,r)})),r.on(_e+we,(function(e){this.time=(0,S.t)(),this.startPath=location.pathname+location.hash})),r.on(_e+Ee,(function(e){(0,w.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,a.K7.sessionTrace,r)}));try{n=new PerformanceObserver((e=>{const t=e.getEntries();(0,w.p)(Re,[t],void 0,a.K7.sessionTrace,r)})),n.observe({type:xe,buffered:!0})}catch(e){}this.importAggregator(e,{resourceObserver:n})}}var Ie=i(2614);class Ne extends b{static featureName=t.TZ;#i;#o;constructor(e,r=!0){let n;super(e,t.TZ,r),this.replayRunning=!1,this.#o=e;try{n=JSON.parse(localStorage.getItem("".concat(Ie.H3,"_").concat(Ie.uh)))}catch(e){}(0,p.SR)(e.agentIdentifier)&&this.ee.on(t.G4.RECORD,(()=>this.#a())),this.#s(n)?(this.#i=n?.sessionReplayMode,this.#c()):this.importAggregator(e),this.ee.on("err",(e=>{this.replayRunning&&(this.errorNoticed=!0,(0,w.p)(t.G4.ERROR_DURING_REPLAY,[e],void 0,this.featureName,this.ee))})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.replayRunning=e}))}#s(e){return e&&(e.sessionReplayMode===Ie.g.FULL||e.sessionReplayMode===Ie.g.ERROR)||(0,p.Aw)(this.agentIdentifier)}#u=!1;async#c(e){if(!this.#u){this.#u=!0;try{const{Recorder:t}=await Promise.all([i.e(891),i.e(222)]).then(i.bind(i,8589));this.recorder??=new t({mode:this.#i,agentIdentifier:this.agentIdentifier,trigger:e,ee:this.ee,agentRef:this.#o}),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording}catch(e){}this.importAggregator(this.#o,{recorder:this.recorder,errorNoticed:this.errorNoticed})}}#a(){this.featAggregate?this.featAggregate.mode!==Ie.g.FULL&&this.featAggregate.initializeRecording(Ie.g.FULL,!0):(this.#i=Ie.g.FULL,this.#c(t.Qb.API),this.recorder&&this.recorder.parent.mode!==Ie.g.FULL&&(this.recorder.parent.mode=Ie.g.FULL,this.recorder.stopRecording(),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording))}}var Pe=i(3333);class je extends b{static featureName=Pe.TZ;constructor(e,t=!0){super(e,Pe.TZ,t);const r=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.user_actions.enabled,e.init.performance.resources.enabled];if(g.RI&&(e.init.user_actions.enabled&&(Pe.Zp.forEach((e=>(0,A.sp)(e,(e=>(0,w.p)("ua",[e],void 0,this.featureName,this.ee)),!0))),Pe.qN.forEach((e=>{const t=(0,v.s)((e=>{(0,w.p)("ua",[e],void 0,this.featureName,this.ee)}),500,{leading:!0});(0,A.sp)(e,t)}))),e.init.performance.resources.enabled&&g.gm.PerformanceObserver?.supportedEntryTypes.includes("resource"))){new PerformanceObserver((e=>{e.getEntries().forEach((e=>{(0,w.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)}))})).observe({type:"resource",buffered:!0})}r.some((e=>e))?this.importAggregator(e):this.deregisterDrain()}}var Ce=i(993),ke=i(3785),He=i(9414);class Le extends b{static featureName=Ce.TZ;constructor(e,t=!0){super(e,Ce.TZ,t);const r=this.ee;(0,He.J)(r,g.gm.console,"log",{level:"info"}),(0,He.J)(r,g.gm.console,"error",{level:"error"}),(0,He.J)(r,g.gm.console,"warn",{level:"warn"}),(0,He.J)(r,g.gm.console,"info",{level:"info"}),(0,He.J)(r,g.gm.console,"debug",{level:"debug"}),(0,He.J)(r,g.gm.console,"trace",{level:"trace"}),this.ee.on("wrap-logger-end",(function([e]){const{level:t,customAttributes:n}=this;(0,ke.R)(r,e,n,t)})),this.importAggregator(e)}}new class extends o{constructor(t){super(),g.gm?(this.features={},(0,x.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(R),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,d.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,x.Zm)();delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[R,_,Oe,Ne,ge,I,D,je,Le],loaderType:"pro"})})()})();</script> <meta content='on' http-equiv='cleartype'> <meta content='width=device-width, initial-scale=1, maximum-scale=1' name='viewport'> <meta content='True' name='HandheldFriendly'> <meta content='yes' name='apple-mobile-web-app-capable'> <meta content='black' name='apple-mobile-web-app-status-bar-style'> <meta content='telephone=no' name='format-detection'> <meta content='summary' name='twitter:card'> <meta content='Cookies Policy | Handy' name='twitter:title'> <meta content='Handy' name='author'> <meta content='Handy' name='og:site_name'> <meta content='@Handy' name='twitter:site'> <meta content='https://cache.hbfiles.com/assets/open-graph/og-image-1fc721c4787b73c5c13d04648df3c401e4cf5f45ff44ba93095d723e7e94c6be.jpg ' name='image' property='image'> <meta content='https://cache.hbfiles.com/assets/open-graph/og-image-1fc721c4787b73c5c13d04648df3c401e4cf5f45ff44ba93095d723e7e94c6be.jpg ' name='og:image' property='og:image'> <meta content='https://cache.hbfiles.com/assets/open-graph/og-image-1fc721c4787b73c5c13d04648df3c401e4cf5f45ff44ba93095d723e7e94c6be.jpg ' name='twitter:image' property='twitter:image'> <meta content='Cookies policy for Handy, the leading home services platform.' name='description' property='description'> <meta content='app-id=604419063' name='apple-itunes-app'> <link rel="apple-touch-icon" type="image/png" href="https://cache.hbfiles.com/favicons/apple-touch-icon-57x57.png" sizes="57x57" /> <link rel="apple-touch-icon" type="image/png" href="https://cache.hbfiles.com/favicons/apple-touch-icon-114x114.png" sizes="114x114" /> <link rel="apple-touch-icon" type="image/png" href="https://cache.hbfiles.com/favicons/apple-touch-icon-60x60.png" sizes="60x60" /> <link rel="apple-touch-icon" type="image/png" href="https://cache.hbfiles.com/favicons/apple-touch-icon-120x120.png" sizes="120x120" /> <link rel="apple-touch-icon" type="image/png" href="https://cache.hbfiles.com/favicons/apple-touch-icon-72x72.png" sizes="72x72" /> <link rel="apple-touch-icon" type="image/png" href="https://cache.hbfiles.com/favicons/apple-touch-icon-144x144.png" sizes="144x144" /> <link rel="apple-touch-icon" type="image/png" href="https://cache.hbfiles.com/favicons/apple-touch-icon-76x76.png" sizes="76x76" /> <link rel="apple-touch-icon" type="image/png" href="https://cache.hbfiles.com/favicons/apple-touch-icon-152x152.png" sizes="152x152" /> <link rel="icon" type="image/png" href="https://cache.hbfiles.com/favicons/favicon-16x16.png" sizes="16x16" /> <link rel="icon" type="image/png" href="https://cache.hbfiles.com/favicons/favicon-32x32.png" sizes="32x32" /> <link rel="icon" type="image/png" href="https://cache.hbfiles.com/favicons/favicon-96x96.png" sizes="96x96" /> <link rel="icon" type="image/png" href="https://cache.hbfiles.com/favicons/favicon-160x160.png" sizes="160x160" /> <link rel="icon" type="image/png" href="https://cache.hbfiles.com/favicons/favicon-196x196.png" sizes="196x196" /> <meta content='#2d89ef' name='msapplication-TileColor'> <meta content='/mstile-144x144.png' name='msapplication-TileImage'> <meta name="stripe-key" content="pk_live_S11YUr7x6AxvE7QHPTRhCUQY" /> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="ruCB2kpwRq2HBjhqT6jP3k87GH9lg/cOWzpQOmLmyl3DVrdPzYySc8uoXYKiFEmeW5Swc4qH2zRAl+eurYbIJQ==" /> <link rel="stylesheet" media="screen" href="https://cache.hbfiles.com/assets/font_manifest-df4b95e6619d4e537be4efe30d979f568f2a987b1f2176c9af8928064728ca53.css" /> <link rel="stylesheet" media="screen" href="https://cache.hbfiles.com/assets/application-94882d960a6c5ad82abbeda7811f150382f94ffab82a9348e37306905a2b8c14.css" /> <script type="text/javascript"> window.waitForGlobalLib = function(library, callback, count) { // Allow a string or array of strings to be passed in var lib = library; var remaining_lib_count = 0; if (lib instanceof Array) { lib = lib[0]; remaining_lib_count = library.length - 1; } if (count >= 10) { console.error("Library `" + lib + "` didn't load after 1 second"); } else if (window[lib]) { if (remaining_lib_count > 0) { // if there are libraries left, // continuing checking for them (immediately) setTimeout(waitForGlobalLib, 0, library.slice(1), callback, 0); } else { callback(); } } else { setTimeout(waitForGlobalLib, 100, library, callback, count ? count + 1 : 1); } }; </script> <script class="handy-analytics" id="handy-analytics--properties"> window.Handy = window.Handy || {}; (function setupHandyAnalytics(){ window.Handy.analytics = window.Handy.analytics || {"utm":{"handy_utm_source":null,"handy_utm_campaign":null,"handy_utm_coupon":null,"handy_utm_term":null,"handy_utm_medium":null,"handy_utm_content":null},"env":{"scully_fingerprint":["f61e014e-5439-4aec-b1d2-39ac89120a5e","936de6b5-bd9b-4c89-ad4d-c5d48742b09b","f02f2481-da6a-4612-b5cc-f3cd24c3d273","80179280-47c2-44b9-9b61-e76d576affaa","8262a1e2-4111-4016-97f6-b3379cf61f43","f76bb87a-24d8-4f46-84fe-e3f2cd131a26","ad30d738-4fee-4801-9852-8f37c732e2db","148a89d5-a2dd-4fde-ae5b-af77c162b066","9d39ed29-6db1-4512-8367-892b9167c51c","22f1e458-b0a0-459d-bed5-5c5fe7fa2c7e","9085bc5d-35ff-40a9-a7a8-37ff61c626d3","4a005674-3d4f-409a-88a9-d413af06e5fd","8a27e092-a629-4bc8-8c5a-5a74cd8041d0","022ae9ae-f5c5-40ef-bb5c-3dccfd6930ab","0b12fa2e-0a04-47b9-9150-edf9162bb68f","a48b4f5d-5bc2-473b-af88-25c2756d1008","20def8ec-aece-496e-80bc-8b608943c526","32faf179-c8fc-488f-a8d1-ff864e3be35e","72128813-e90f-45bf-8610-42980db57e90","0982159d-bc11-4173-b706-3123595ec604","b108499f-2e65-44e0-bb1d-fb8adfd675ef","30ecbfb0-ac32-4782-89c9-7aa751b9c540","3ef14d53-b7e4-408b-bb82-11106f2e12f4","78476689-4e12-4656-b509-f50e7c7190ee","34264c8c-942e-4051-b79f-bb3b67a4b9e9","8b1b9adb-5c3e-4fb1-a3d3-04a5db56a0d0","f39efb97-6942-4f29-ab22-19872ff8138c","7eb84b52-de6a-420f-ab00-739b72dcc716","281f397f-066f-4cca-8161-184db8a399e2","aee2200d-50e7-4cdb-b707-47bfea3e57fc","66d4b66b-ca20-4259-9fed-e0cd6856997c","65cf9460-893b-4155-bf93-a20ebb96167f","b5bbd335-1824-4e09-9810-2564222500c9","0d8c92ef-07bb-4bdb-9e78-698da974ba61","2db075b9-0c02-4e1e-9e81-2afaeeb4156b","bf779d91-45fa-44ed-98d7-05802e5c24b3","e975b5e5-c2d3-4991-a9d1-a399b27b1b37","1dcebcb7-550f-4c69-873e-57fc6734b2d3","0644d3ac-1eec-4513-9d16-7c41a61c41cf","37dffef4-caf2-47ec-a0b7-effc326b18aa","f7166369-537f-4cc5-8076-9fc369d1f33a"],"browser_uid":"nRZti9Y7dYgiLFPMqE6bvbLXI0RRYsLlw/zaHDnw0uJBZRwO7zPDi0WGvfZ6JFT/nTO4cQTWfvNZj11VJdrnjA==","from_native":false,"native_session_uid":null},"user":{"impersonating":false,"brand":"handy","new":false},"booking":{},"quote_request":{},"pageInfo":{"bookingId":null,"conversionType":null,"serviceName":null,"serviceCategory":null,"serviceId":null,"recurringFrequency":null,"zipcode":null,"dateOfBooking":null,"timeOfBooking":null,"dateAdded":null,"hourlyRate":null,"bookingHrs":null,"discount":null,"couponCode":null,"confirmedBooking":false,"cleaningType":null,"numberCreatedBookings":0,"isCleaning":0,"isCommit":0,"isOneTime":0,"isRecurring":0},"customerInfo":{"newUser":1,"userLoggedIn":false,"userHasAccount":false}}; }()); </script> <script src="https://cache.hbfiles.com/assets/analytics-lib-67744239654dd45701c556d5ecdbe8ed42050829d29e3352f19a7403cb53a2ba.js"></script> <script src="https://cache.hbfiles.com/assets/accessibility-6ce81c161307e3641911a1964bb04a220f820a8a8e415ad48abcb26f6044cf9c.js" defer="defer"></script> <script src="https://cache.hbfiles.com/assets/nav_dropdown-fc89864a75fb4c72b82d851a70571014fff2591705018c65edd6f9b20f821bea.js" defer="defer"></script> <script src="https://cache.hbfiles.com/assets/newrelic_ignored_errors-83d3aadbead42c7e0d95d270341e67d0139ab49f22b7d4934596c9d1a7a3d98c.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js" crossorigin="anonymous" integrity="sha384-NXgwF8Kv9SSAr+jemKKcbvQsz+teULH/a5UNJvZc6kP47hZgl62M1vGnw6gHQhb1"></script> <script> window.jQuery || document.write("<script src='https://cache.hbfiles.com/jquery-3.7.0.min.js'><\/script>") </script> </head> <body class=''> <!-- 6.1 --> <div class='nav-drawer'> <ul class='nav-list-first nav-border-bottom'> <li class='nav-link'><a class="trackable" data-mixpanel-event="nav_bar_cta" data-mixpanel-event-context="nav_bar_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="login" data-qa="login-link" href="/login">Login</a></li> <li class='nav-link'><a target="_blank" class="trackable help" data-mixpanel-event="nav_bar_cta" data-mixpanel-event-context="nav_bar_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="help" data-qa="help-link" href="/help">Help</a></li> <li class='nav-link'><a class="pro-apply-link trackable" data-mixpanel-event="nav_bar_cta" data-mixpanel-event-context="nav_bar_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="apply" href="/apply?utm_source=home_footer">Become a Professional</a></li> </ul> <ul class='nav-list nav-border-bottom'> <li class='nav-link'><div class='services-dropdown-menu'> <ul> <li> <a class="services-dropdown-link" href="">Book Services</a> <i class='desktop fa fa-angle-down fa-hover-show'></i> <i class='desktop fa fa-angle-up fa-hover-hidden'></i> <i class='mobile fa fa-angle-down'></i> </li> <div class='nav-link nav-border-bottom services-dropdown-content'> <li class='nav-link'><a href="/services/home-cleaning">Home Cleaning</a></li> <li class='nav-link'><a href="/services/furniture-assembly">Furniture Assembly</a></li> <li class='nav-link'><a href="/services/mount-tv">TV Mounting</a></li> <li class='nav-link'><a href="/services/painting">Interior Painting</a></li> <li class='nav-link'><a href="/services/hanging-pictures-shelves">Hanging Pictures & Shelves</a></li> <li class='nav-link'><a href="/services/moving-help">Moving Help</a></li> <li class='nav-link'><a href="/services/other-handyman-service">Handyman Service</a></li> <li class='nav-link'><a href="/services/other-smart-device">Smart Device Installation</a></li> <li class='nav-link'><a href="/services/maid-service">Maid Service</a></li> <li class='nav-link'><a href="/services/housekeeping">Housekeeping</a></li> <li class='nav-link'> <a class="trackable" data-mixpanel-event="nav_bar_cta" data-mixpanel-event-context="nav_bar_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="services" href="/services">See All</a> </li> </div> </ul> </div> </li> </ul> <div class='about-dropdown-menu'> <ul class='nav-list'> <li class='nav-link'> <a class="about-dropdown-link" href="">About</a> <i class='desktop fa fa-angle-down fa-hover-show'></i> <i class='desktop fa fa-angle-up fa-hover-hidden'></i> <i class='mobile fa fa-angle-down'></i> </li> <div class='about-dropdown-content'> <li class='nav-link'><a href="/handy-guarantee">The Handy Happiness Guarantee</a></li> <li class='nav-link'><a href="/press">Press</a></li> <li class='nav-link'><a href="/retail">Retail Partnerships</a></li> <li class='nav-link'><a href="/blog">Blog</a></li> <li class='nav-link'><a href="/careers">Careers</a></li> <li class='nav-link'><a href="/help">Contact Us</a></li> </div> </ul> <div class='about-dropdown-content'> <ul class='nav-list nav-border-top'> <li class='nav-link'><a href="https://vault.pactsafe.io/s/f2c54d1f-373d-4a51-b961-d1bea6d73ec5/handy-legal-center#us-privacy-policy">Privacy</a></li> <li class='nav-link'><a href="https://vault.pactsafe.io/s/f2c54d1f-373d-4a51-b961-d1bea6d73ec5/handy-legal-center#us-privacy-policy">CA Pre-Collection Notice</a></li> <li class='nav-link'><a href="https://vault.pactsafe.io/s/f2c54d1f-373d-4a51-b961-d1bea6d73ec5/handy-legal-center#do-not-sell-or-share-my-personal-information">Do Not Sell or Share My Personal Information</a></li> <li class='nav-link'><a href="https://vault.pactsafe.io/s/f2c54d1f-373d-4a51-b961-d1bea6d73ec5/handy-legal-center#cookies-policy">Cookies</a></li> <li class='nav-link'><a href="https://vault.pactsafe.io/s/f2c54d1f-373d-4a51-b961-d1bea6d73ec5/handy-legal-center#us-terms-of-use">Terms</a></li> <li class='nav-link'> <form class="" id="locale-select-form" action="/locale_select" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" autocomplete="off" /><input type="hidden" name="authenticity_token" value="6+mC2h3Ox3WC/jo6V4E68/55JIDU/771kRj8/MJStAGGX7RPmjITq85QX9K6Pbyz6taMjDv7ks+KtUtoDTK2eQ==" autocomplete="off" /> <div class='select-wrapper footer-mobile-nav-select-wrapper'> <select name="locale" id="locale" class="locale-dropdown" onchange="this.form.submit()"><option selected="selected" value="en-US">United States</option> <option value="en-CA">Canada</option> <option value="en-GB">United Kingdom</option></select> </div> </form> </li> </ul> </div> </div> </div> <div class='nav-drawer with-drilldown'> <div class='mobile_menu'> <ul class='nav-list-first'> <li><a class="trackable" data-mixpanel-event="nav_bar_cta" data-mixpanel-event-context="nav_bar_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="login" data-qa="login-link" href="/login">Login</a></li> <li><a target="_blank" class="trackable help" data-mixpanel-event="nav_bar_cta" data-mixpanel-event-context="nav_bar_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="help" data-qa="help-link" href="/help">Help</a></li> <li><a class="pro-apply-link trackable" data-mixpanel-event="nav_bar_cta" data-mixpanel-event-context="nav_bar_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="apply" href="/apply?utm_source=home_footer">Become a Professional</a></li> <div class='nav__line'></div> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services'> All Services </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='#'> Services by Category </a> <ul> <li> <a href='#'> Cleaning </a> <ul> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_home_cleaning' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/home-cleaning'> Home Cleaning </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_move_out_in_cleaning' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/move-out-in-cleaning'> Move Out Cleaning </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_office_cleaning' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/office-cleaning'> Office Cleaning </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_deep_cleaning' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/deep-cleaning-service'> Deep Cleaning </a> </li> </ul> </li> <li> <a href='#'> Installation </a> <ul> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_mount_tv' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/mount-tv'> TV Mounting </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_hanging_pictures_shelves' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/hanging-pictures-shelves'> Picture or Shelf Hanging </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_light_fixtures' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/light-fixtures'> Light Fixtures </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_ceiling_fan' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/ceiling-fan'> Ceiling Fans </a> </li> </ul> </li> <li> <a href='#'> Handyman </a> <ul> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_furniture_assembly' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/furniture-assembly'> Furniture Assembly </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_other_handyman_service' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/other-handyman-service'> General Handyman </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_other_plumbing' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/other-plumbing'> General Plumbing </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_faucets_replacement' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/faucets-replacement'> Faucets </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_toilet_trouble' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/toilet-trouble'> Toilets </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_other_electrical' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/other-electrical'> General Electric </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_outlets' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/outlets'> Outlets and Switches </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_moving_help' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/moving-help'> Moving Help </a> </li> </ul> </li> <li> <a href='#'> Outdoor Projects </a> <ul> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_lawn_care_maintenance_service' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/lawn-care-maintenance-service?redirect_source=nav_bar'> Lawn Care </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_gutter_installation' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/gutter-installation?redirect_source=nav_bar'> Gutters and Downspouts </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_tree_removal' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/tree-removal?redirect_source=nav_bar'> Tree Removal </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_tree_trimming' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/tree-trimming?redirect_source=nav_bar'> Tree Trimming </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_fence_installation' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/fence-installation?redirect_source=nav_bar'> Wood Fence Installation </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_deck_and_porch_repair' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/deck-and-porch-repair?redirect_source=nav_bar'> Deck and Porch Repairs </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_deck_repair_installation' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/deck-repair-installation?redirect_source=nav_bar'> Deck Installation </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_exterior_painting' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/exterior-painting?redirect_source=nav_bar'> Exterior Painting </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_power_washing' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/power-washing?redirect_source=nav_bar'> Exterior Surfaces </a> </li> </ul> </li> <li> <a href='#'> Home Renovations </a> <ul> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_bathroom_remodeling' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/bathroom-remodeling?redirect_source=nav_bar'> Remodel a Bathroom </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_kitchen_remodeling' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/kitchen-remodeling?redirect_source=nav_bar'> Remodel a Kitchen </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_basement_remodeling' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/basement-remodeling?redirect_source=nav_bar'> Remodel a Basement </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_major_home_renovations' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/major-home-renovations?redirect_source=nav_bar'> Major Home Renovations </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_installing_wood_flooring' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/installing-wood-flooring?redirect_source=nav_bar'> Refinish Wood Flooring </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_install_asphalt_shingle_roofing' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/install-asphalt-shingle-roofing?redirect_source=nav_bar'> Install Roofing </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_repair_asphalt_shingle_roofing' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/repair-asphalt-shingle-roofing?redirect_source=nav_bar'> Repair Roofing </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_6_windows_installation' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/6-windows-installation?redirect_source=nav_bar'> Install New Windows </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_painting' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/painting'> Interior Painting </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_install_window_treatments' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/services/install-window-treatments'> Window Treatments </a> </li> </ul> </li> </ul> </li> <div class='nav__line'></div> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='blog' data-mixpanel-event='nav_bar_cta' data-mixpanel-trigger='click' href='/blog'> Blog </a> </li> <li> <a class="about-dropdown-link" href="">About</a> <ul> <li><a href="/handy-guarantee">The Handy Happiness Guarantee</a></li> <li><a href="/press">Press</a></li> <li><a href="/retail">Retail Partnerships</a></li> <li><a href="/blog">Blog</a></li> <li><a href="/careers">Careers</a></li> <li><a href="/help">Contact Us</a></li> <div class='nav__line'></div> <li><a href="https://vault.pactsafe.io/s/f2c54d1f-373d-4a51-b961-d1bea6d73ec5/handy-legal-center#us-privacy-policy">Privacy</a></li> <li><a href="https://vault.pactsafe.io/s/f2c54d1f-373d-4a51-b961-d1bea6d73ec5/handy-legal-center#us-privacy-policy">CA Pre-Collection Notice</a></li> <li><a href="https://vault.pactsafe.io/s/f2c54d1f-373d-4a51-b961-d1bea6d73ec5/handy-legal-center#do-not-sell-or-share-my-personal-information">Do Not Sell or Share My Personal Information</a></li> <li><a href="/cookies">Cookies</a></li> <li><a href="https://vault.pactsafe.io/s/f2c54d1f-373d-4a51-b961-d1bea6d73ec5/handy-legal-center#us-terms-of-use">Terms</a></li> <li> <form class="" id="locale-select-form" action="/locale_select" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" autocomplete="off" /><input type="hidden" name="authenticity_token" value="op6S6p+XBO228g880bYprObi9ufGvYWt/HxyKRqfG9fPKKR/GGvQM/pcatQ8Cq/s8k1e6ym5qZfn0cW91f8Zrw==" autocomplete="off" /> <div class='select-wrapper footer-mobile-nav-select-wrapper'> <select name="locale" id="locale" class="locale-dropdown" onchange="this.form.submit()"><option selected="selected" value="en-US">United States</option> <option value="en-CA">Canada</option> <option value="en-GB">United Kingdom</option></select> </div> </form> </li> </ul> </li> </ul> </div> </div> <script> jQuery(function () { if (typeof $.fn.slinky === "undefined") { return } const slinkyConfig = { 'theme': 'slinky-theme-white' }; $('.mobile_menu').slinky(slinkyConfig); const backLinks = $('.slinky-menu .header'); backLinks.each(function () { const backTxt = $(this).parent().parent().find('a:first > span').text(); $('a', this).text(backTxt); }); }); </script> <div class='non-drawer-content'> <div class='non-drawer-content-overlay'></div> <div class='non-flash-banner-content'> <header class='site-header'> <div class='header-row ms-margin-left'> <div class='header-content-container'> <div class='header-logo'><a class="home-link" href="/"><svg viewBox="0 0 32 23" height="100%"><path d=" M22.472 6.592l-2.365 0.503v6.82l2.356-0.501c1.969-0.419 3.285-1.996 3.285-4.104-0-2.106-1.316-3.134-3.276-2.718zM24.229 9.633c0 1.367-0.819 2.147-1.822 2.36l-0.847 0.18-0-3.954 0.847-0.18c1.003-0.213 1.822 0.228 1.822 1.594zM14.59 8.268l-1.443 0.307 0 6.82 1.443-0.307v-4.329l2.819 3.73 1.444-0.307v-6.82l-1.444 0.307v4.33l-2.819-3.731zM6.252 13.445c0 2.106 1.316 3.135 3.276 2.718l2.365-0.503v-6.82l-2.356 0.501c-1.969 0.419-3.285 1.998-3.285 4.104zM9.593 10.764l0.847-0.181v3.954l-0.847 0.18c-1.003 0.213-1.822-0.228-1.822-1.594s0.819-2.146 1.822-2.359zM30.547 9.029c-0 0.904-0.483 1.459-1.238 1.62s-1.238-0.19-1.238-1.094v-4.153l-1.453 0.309v4.22c0 1.783 1.197 2.469 2.691 2.152 0.447-0.095 0.867-0.271 1.238-0.516 0 0 0 1.143 0 1.525v0c0 0.913-0.592 1.779-1.581 1.989l-28.965 6.157v1.519l29.378-6.244c1.64-0.349 2.621-1.784 2.621-3.297v-8.647l-1.453 0.309 0 4.153zM1.453 13.727c0-0.904 0.483-1.459 1.237-1.62s1.238 0.189 1.238 1.094v4.153l1.453-0.309v-4.22c0-1.782-1.197-2.469-2.691-2.151-0.447 0.096-0.867 0.271-1.237 0.516 0 0 0-1.145 0-1.526 0-0.913 0.592-1.778 1.581-1.989l28.965-6.157-0-1.519-29.378 6.245c-1.64 0.348-2.621 1.784-2.621 3.297v8.647l1.453-0.309v-4.153z " fill="#00cded"></path></svg> </a><div class='site-header-container'> <div class='nav-drawer-trigger right-bumper'><span class='menu-icon'></span></div> <ul class='nav-container'><li class='header-link'> <div class='dropdown services-menu menu'> <a class="trackable-mouseover-once" data-mixpanel-event="nav_bar_hover" data-mixpanel-event-context="nav_bar_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="services" href="/services">All Services</a> <i class='desktop fa fa-angle-down fa-hover-show'></i> <i class='desktop fa fa-angle-up fa-hover-hidden'></i> </div> <div class='grid-container services-panel'> <div class='grid-x'> <div class='cell'> <ul class='services-columns four-columns'> <li> <span> Cleaning </span> <ul> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_home_cleaning' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/home-cleaning'> Home Cleaning </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_move_out_in_cleaning' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/move-out-in-cleaning'> Move Out Cleaning </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_office_cleaning' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/office-cleaning'> Office Cleaning </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_deep_cleaning' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/deep-cleaning-service'> Deep Cleaning </a> </li> </ul> </li> <li> <span> Installation </span> <ul> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_mount_tv' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/mount-tv'> TV Mounting </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_hanging_pictures_shelves' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/hanging-pictures-shelves'> Picture or Shelf Hanging </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_light_fixtures' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/light-fixtures'> Light Fixtures </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_ceiling_fan' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/ceiling-fan'> Ceiling Fans </a> </li> </ul> </li> <li> <span> Handyman </span> <ul> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_furniture_assembly' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/furniture-assembly'> Furniture Assembly </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_other_handyman_service' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/other-handyman-service'> General Handyman </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_other_plumbing' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/other-plumbing'> General Plumbing </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_faucets_replacement' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/faucets-replacement'> Faucets </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_toilet_trouble' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/toilet-trouble'> Toilets </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_other_electrical' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/other-electrical'> General Electric </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_outlets' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/outlets'> Outlets and Switches </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_moving_help' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/moving-help'> Moving Help </a> </li> </ul> </li> <li> <span> Outdoor Projects </span> <ul> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_lawn_care_maintenance_service' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/lawn-care-maintenance-service?redirect_source=nav_bar'> Lawn Care </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_gutter_installation' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/gutter-installation?redirect_source=nav_bar'> Gutters and Downspouts </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_tree_removal' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/tree-removal?redirect_source=nav_bar'> Tree Removal </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_tree_trimming' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/tree-trimming?redirect_source=nav_bar'> Tree Trimming </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_fence_installation' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/fence-installation?redirect_source=nav_bar'> Wood Fence Installation </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_deck_and_porch_repair' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/deck-and-porch-repair?redirect_source=nav_bar'> Deck and Porch Repairs </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_deck_repair_installation' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/deck-repair-installation?redirect_source=nav_bar'> Deck Installation </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_exterior_painting' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/exterior-painting?redirect_source=nav_bar'> Exterior Painting </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_power_washing' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/power-washing?redirect_source=nav_bar'> Exterior Surfaces </a> </li> </ul> </li> <li> <span> Home Renovations <span class='new-category'>NEW!</span> </span> <ul> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_bathroom_remodeling' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/bathroom-remodeling?redirect_source=nav_bar'> Remodel a Bathroom </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_kitchen_remodeling' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/kitchen-remodeling?redirect_source=nav_bar'> Remodel a Kitchen </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_basement_remodeling' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/basement-remodeling?redirect_source=nav_bar'> Remodel a Basement </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_major_home_renovations' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/major-home-renovations?redirect_source=nav_bar'> Major Home Renovations </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_installing_wood_flooring' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/installing-wood-flooring?redirect_source=nav_bar'> Refinish Wood Flooring </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_install_asphalt_shingle_roofing' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/install-asphalt-shingle-roofing?redirect_source=nav_bar'> Install Roofing </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_repair_asphalt_shingle_roofing' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/repair-asphalt-shingle-roofing?redirect_source=nav_bar'> Repair Roofing </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_6_windows_installation' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/6-windows-installation?redirect_source=nav_bar'> Install New Windows </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_painting' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/painting'> Interior Painting </a> </li> <li> <a class='trackable' data-mixpanel-event-context='nav_bar_monolith' data-mixpanel-event-source='services_install_window_treatments' data-mixpanel-event='nav_bar_cta' data-mixpanel-product-type='consumer' href='/services/install-window-treatments'> Window Treatments </a> </li> </ul> </li> </ul> </div> </div> <div class='grid-x button-row'> <div class='row all-services__button'> <a class='button primary trackable' data-mixpanel-event-context='nav_bar_refinery' data-mixpanel-event='nav_bar_cta' data-mixpanel-source='services' data-mixpanel-trigger='click' href='/services'> See All Services </a> </div> </div> </div> <script> const servicesPanel = document.querySelector('.services-panel'); const servicesMenu = document.querySelector('.services-menu'); servicesPanel.addEventListener('mouseenter', function() { servicesMenu.classList.add('chevron-hack'); }); servicesPanel.addEventListener('mouseleave', function() { servicesMenu.classList.remove('chevron-hack'); }); </script></li><li class='header-link'> <a class="trackable" data-mixpanel-event="nav_bar_cta" data-mixpanel-event-context="nav_bar_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="blog" href="/blog">Blog</a></li></ul> <ul class='nav-container'><li class='header-link'> <a class="trackable" data-mixpanel-event="nav_bar_cta" data-mixpanel-event-context="nav_bar_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="apply" href="/apply">Become a Pro</a></li> <li class='header-link'><a target="_blank" class="trackable" data-mixpanel-event="nav_bar_cta" data-mixpanel-event-context="nav_bar_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="help" data-qa="help-link" href="/help">Help</a></li> <li class='header-link'><a class="trackable right-bumper" data-mixpanel-event="nav_bar_cta" data-mixpanel-event-context="nav_bar_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="login" data-qa="login-link" href="/login">Log In</a></li></ul></div></div> </div> </div> </header> <div class='main-body-container'> <div class='gradient-background'> <div class='row'> <div class='small-12 columns'> <div class='content-container'> <h1 class='larger center pad-bot font-normal'> Cookies Policy </h1> <div class='small-11 small-centered large-9 columns'> <div class='paragraph-content'> <div data-section-type="1" class="ps-section" data-id="SyZfex-IT" data-time="1702064137301">Websites maintained by Handy (collectively the "Site") use a number of different cookies. This Cookies Policy explains the following:</div><ul data-section-type="3" class="ps-section ps-parent" data-id="B1lbGxl-LT" data-time="1702064137301"> <li class="ps-section" data-id="H1Wbzxe-La" data-time="1702064137301"><a href="#section1">What are cookies?</a></li> <li class="ps-section" data-id="HkzZMexWUT" data-time="1702064137301"><a href="#section2">Cookies we use and why we use them</a></li> <li class="ps-section" data-id="ByQ-MeebLT" data-time="1702064137301"><a href="#section3">E.U. users' right to refuse cookies</a></li></ul><div id="section1" data-section-type="1" class="ps-section" data-id="rkEWzggbUT" data-time="1702064137301"><strong>WHAT ARE COOKIES?</strong></div><div data-section-type="1" class="ps-section" data-id="B1B-MxlWI6" data-time="1702064137301">Cookies are small files that are downloaded to your device when you visit a website. The cookie then sends information back to the originating website on each subsequent visit, or to another website that recognizes that cookie. Cookies are useful because they allow a website to recognize a user's device. You can find more information about cookies at:<a href="http://www.allaboutcookies.org">www.allaboutcookies.org</a>and<a href="http://www.youronlinechoices.eu">www.youronlinechoices.eu</a>.</div><div data-section-type="1" class="ps-section" data-id="rJIWfleZ8p" data-time="1702064137301">Cookies perform many different functions, such as letting you navigate between pages efficiently, remembering your preferences, and generally improving the user experience.</div><div id="section2" data-section-type="1" class="ps-section" data-id="SkvZzlgZL6" data-time="1702064137301"><strong>COOKIES AND WHY WE USE THEM</strong></div><div data-section-type="1" class="ps-section" data-id="SJ_Zfll-Ip" data-time="1702064137301">Cookies can be categorized by who puts the cookie on the user's computer (or other device the user uses to browse the website).</div><div data-section-type="1" class="ps-section" data-id="ByYbfgx-Ua" data-time="1702064137301"><strong>First-party cookies</strong>are cookies placed by the party operating the website. For example, any cookies we (Handy) place on your computer from our Site are first-party cookies.</div><div data-section-type="1" class="ps-section" data-id="Sy9ZzxlZ86" data-time="1702064137301"><strong>Third-party cookies</strong>are cookies placed from a website by a party that does not own or operate that website.</div><div data-section-type="1" class="ps-section" data-id="B1jWGxxW8p" data-time="1702064137301">We use only first-party cookies on our Site.</div><div data-section-type="1" class="ps-section" data-id="Bk3-MllWIp" data-time="1702064137301">Cookies are also often categorized by function. We use four types of cookies by function on our Site:</div><div id="section2a" data-section-type="1" class="ps-section" data-id="SyabfxlWUp" data-time="1702064137301"><strong>1. Essential Cookies</strong></div><div data-section-type="1" class="ps-section" data-id="BJAZfelbU6" data-time="1702064137301">These are cookies that are strictly necessary for the functioning of the website or for performing services that an individual user has requested. For example, we use a cookie that remembers that you are logged into the Site until you log out.</div><div data-section-type="1" class="ps-section" data-id="S11g-zllZLa" data-time="1702064137301">If you sign up for our text messaging program, cookies may be used to personalize your experience (e.g. send you personalized text messages)</div><div id="section2b" data-section-type="1" class="ps-section" data-id="HyxeWMgx-I6" data-time="1702064137301"><strong>2. Analytical Cookies</strong></div><div data-section-type="1" class="ps-section" data-id="HyWgWGxx-86" data-time="1702064137301">These cookies collect information about how visitors use a website — for instance, which pages visitors go to most often, and whether visitors get error messages from web pages. Analytical cookies don't collect information that identifies a visitor. All information that analytical cookies collect is aggregated and therefore anonymous. These cookies are used only to improve how a website functions.</div><div data-section-type="1" class="ps-section" data-id="SyGgZGeeZ8a" data-time="1702064137301">We use cookies provided by third-party service providers, including Google Analytics, Optimizely, and New Relic, to help us analyze how users use the Site.</div><div data-section-type="1" class="ps-section" data-id="H17xZzgxWI6" data-time="1702064137301">The Google Analytics cookies collect data tied to a user's IP address, such as the length of time a user spends on a page, the pages a user visits, and the websites a user visits before and after visiting the Site. You can object to the collection of your information by Google Analytics by clicking<a href="https://tools.google.com/dlpage/gaoptout?hl=en">here</a>. We place cookies provided by Optimizely to test whether changes we have made to the Site work properly.</div><div data-section-type="1" class="ps-section" data-id="SJNlZzex-86" data-time="1702064137301">Like the cookies provided by Google Analytics and Optimizely, the cookies provided by New Relic collect information about your visit to the Site, such as delays you might experience when using Site features. The New Relic cookies assign an identification number, called a "session ID", to your visit to our Site. Information collected about your visit is sent to New Relic and tied to the session ID. Each visit generates a new session ID, and session IDs between different visits are not linked to identify you. New Relic deletes the session ID at the end of your visit.</div><div data-section-type="1" class="ps-section" data-id="rkrlZMgxbIp" data-time="1702064137301">The cookies provided by each third-party service provider send the information they collect to that third-party service provider. For example, the cookies provided by Google Analytics send information about your Site interactions to Google Analytics. Each third-party service provider then compiles aggregated data using the information received and sends us reports on the aggregated data. These reports are not shared with other parties. We use the reports to offer better Site experiences and tools in the future.</div><div data-section-type="1" class="ps-section" data-id="H1LlWGglbUT" data-time="1702064137301">Although these cookies provide information to the third-party service providers, they are first-party cookies because we place them ourselves.</div><div id="section2c" data-section-type="1" class="ps-section" data-id="BkDeWGlebIa" data-time="1702064137301"><strong>3. Functional Cookies</strong></div><div data-section-type="1" class="ps-section" data-id="rydlbGexWIT" data-time="1702064137301">These cookies allow the website to remember choices users make and to provide enhanced, personalized features. For example, we use cookies provided by Olark.com that allow you to continue chatting with customer support when navigating between pages.</div><div id="section2d" data-section-type="1" class="ps-section" data-id="S1FgWzegWUp" data-time="1702064137301"><strong>4. Targeting/Advertising Cookies</strong></div><div data-section-type="1" class="ps-section" data-id="r1cxWfglZI6" data-time="1702064137301">Targeting/advertising cookies are cookies used to deliver advertisements relevant to the user. They remember that a user has visited a website and share this information with other organizations, such as advertising vendors.</div><div data-section-type="1" class="ps-section" data-id="Sksg-Glgb8p" data-time="1702064137301">Cookies in this category may include Remarketing Cookies. These are cookies that remember that you visited our Site after you leave. Sometimes they collect information about what pages of our Site you visited. They then share this information with our third-party vendors, such as AppNexus, Google, Nanigans, Facebook, and Twitter. Based on this information, the third-party vendors show you advertisements on third-party websites for Handy products that we think may interest you based on what you viewed on our Site.</div><div data-section-type="1" class="ps-section" data-id="rk2gZMxgWLT" data-time="1702064137301">You may opt out of Google's use of cookies by visiting<a href="http://www.google.com/settings/ads?hl=en&sig=ACi0TCj3tYSWx1J-_py5kWT1_-bwSVlQ6_ctD3te7yK2M1nOjE8qqSPAFgD0ilTnZH6iRKipNQr3oHKqwYqeB9AJ6VnmkUfSZskoxWxZeLpChNWyCneYQQMHG2rpHJrxi_jE-Bv8LL8S0uqPcmcBA2zkPYibn6b5OwjEfvqbZTq7a_Muo-nZ-9GaW8xM7xt7asNUmDcB41Lg">Google's Ads Settings</a>here. You can also opt out of the use by other advertisers and third party service providers, such as AppNexus, of information from cookies placed by the Site by visiting the Network Advertising Initiative ("NAI") opt-out page. However, not all of our third-party vendors participate in the<a href="http://www.networkadvertising.org/choices/">Network Advertising Initiative opt-out page</a>. Some of these advertisers and/or service providers may also participate in the Digital Advertising Alliance’s (“DAA”) Self-Regulatory Program for Online Behavioral Advertising. To learn more about how you can exercise certain choices regarding Interest-based Advertising, including use of Cross-device Data for serving ads, visit<a href="http://www.aboutads.info/choices/">http://www.aboutads.info/choices/</a>, and<a href="http://www.aboutads.info/appchoices">http://www.aboutads.info/appchoices</a>for information on the DAA’s opt-out program specifically for mobile apps (including use of precise location for third party ads). Please be aware that, even if you are able to opt out of certain kinds of Interest-based Advertising, you may continue to receive other types of ads. Opting out only means that those selected members should no longer deliver certain Interest-based Advertising to you but does not mean you will no longer receive any targeted content and/or ads (e.g., from other ad networks). Also, if your browsers are configured to reject cookies when you visit these opt-out webpages, or you subsequently erase your cookies, use a different device or web browser or use a non-browser-based method of access (e.g., mobile app), your NAI / DAA browser-based opt-out may not, or may no longer, be effective.</div><div data-section-type="1" class="ps-section" data-id="r1alWGelZUT" data-time="1702064137301">Cookies can also be categorized by how long they remain on your device. There are two broad categories of duration:</div><div data-section-type="1" class="ps-section" data-id="r10e-fegbU6" data-time="1702064137301"><strong>1. Persistent cookies</strong></div><div data-section-type="1" class="ps-section" data-id="SJkbWfeeb8p" data-time="1702064137301">Persistent cookies remain on your device until deleted manually or automatically.</div><div data-section-type="1" class="ps-section" data-id="BJlWZzllWLT" data-time="1702064137301"><strong>2. Session cookies</strong></div><div data-section-type="1" class="ps-section" data-id="SJbZZzleb8a" data-time="1702064137301">Session cookies remain on your device until you close your browser when they are automatically deleted.</div><div data-section-type="1" class="ps-section" data-id="BkzbbfglZLa" data-time="1702064137301">We use both session and persistent cookies on our Site.</div><div data-section-type="1" class="ps-section" data-id="BJ7-bGleZUa" data-time="1702064137301"><strong>Location of information processing:</strong><br /></div><div data-section-type="1" class="ps-section" data-id="BkNW-zggZI6" data-time="1702064137301">The information collected by our cookies is processed in servers located in the United States.</div><div id="section3" data-section-type="1" class="ps-section" data-id="BJrbbGlgZUp" data-time="1702064137301"><strong>E.U. USERS' RIGHT TO REFUSE COOKIES</strong></div><div data-section-type="1" class="ps-section" data-id="rkI-bMexbI6" data-time="1702064137301">Users in the European Union (E.U.) have the right to refuse to allow cookies to be placed on the device they use to access the Site. We describe below how E.U. users can reject cookies used by our Site.</div><div data-section-type="1" class="ps-section" data-id="BJP--GglZ8T" data-time="1702064137301"><u>Rejecting Cookies Through Browser Settings:</u></div><div data-section-type="1" class="ps-section" data-id="Skub-GxlW8a" data-time="1702064137301">The Help menu on the menu bar of most browsers will tell you how to prevent your browser from accepting new cookies, how to have the browser notify you when you receive a new cookie, and how to disable cookies altogether. For more information on using browser settings to reject cookies, please visit<a href="http://www.allaboutcookies.org">www.allaboutcookies.org</a>.</div><div data-section-type="1" class="ps-section" data-id="SJKWbMegZUa" data-time="1702064137301">You should note that rejecting cookies in your browser settings may mean that any preferences you set on this Site will be lost and that the Site may not work as well. In addition, using the browser settings to reject cookies may also cause your browser to reject cookies from all websites, not just this Site.</div><div data-section-type="1" class="ps-section" data-id="Bk5ZbGleb8a" data-time="1702064137301"><strong>HAVE QUESTIONS?</strong></div><div data-section-type="1" class="ps-section" data-id="rJjWWfglbIa" data-time="1702064137301">If you have any questions about our Cookie Policy, we'll do our best to answer them. You can email us at<a href="mailto:privacy@handy.com">privacy@handy.com</a>.</div><div data-section-type="1" class="ps-section" data-id="ByhZWfgl-I6" data-time="1702064137301"><strong>COOKIE POLICY UPDATES</strong></div><div data-section-type="1" class="ps-section" data-id="r1pbZfgeZUT" data-time="1702064137301">If we change our Cookie Policy, we will post those changes on this page and update the Cookie Policy modification date above. If we materially change this Cookie Policy in a way that affects how we use or disclose your personal information, we will notify you by prominently posting a notice of such changes before making them and by stating the effective date of the changes.</div><div data-section-type="1" class="ps-section" data-id="S10-ZMxgWLp" data-time="1702064137301">Last updated:<strong>December 20, 2019</strong></div> </div> </div> </div> </div> </div> </div> </div> <footer class='site-footer'> <div class='row hide-for-small search-footer-content-row'> <nav class='small-5 columns'> <ul class='footer-link-menu top-footer-links'> <li class=''><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="happiness_guarantee" href="/handy-guarantee">The Handy Happiness Guarantee</a></li> <li class=''><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="about" href="/about">About</a></li> <li class=''><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="press" href="/press">Press</a></li> <li class=''><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="careers" href="/careers">Careers</a></li> <li class=''><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="blog" href="/blog">Blog</a></li> <li class=''><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="help" href="/help">Help</a></li> <li class=''><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="help" href="/help">Contact Us</a></li> <br> <li class=''><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="apply" href="/apply?utm_source=home_footer">Be a Professional</a></li> <li class=''><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="retail" href="/retail">Retail Partnerships</a></li> <li class='pad-top2 footer-appstore-icons'> <div class='row'> <div class='small-12 columns'> <a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="app" href="https://handy.app.link/app"><img src="" data-img-src="https://cache.hbfiles.com/assets/miscellaneous/app-store-badge-4a71a8c7f185bad9ad8653a3267dafec0a9a649da7d5764c582fec70b8dc9f45.svg" class="lazy-loading " /></a> <a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="app" href="https://handy.app.link/app"><img src="" data-img-src="https://cache.hbfiles.com/assets/miscellaneous/play-store-badge-49e311a794277c754af75084413fbc788682c55ad83b651c681c99d6197c6bc1.svg" class="lazy-loading " /></a> </div> </div> </li> </ul> </nav> <nav class='small-4 columns'> <p class='footer-header'>Locations</p> <ul class='footer-link-menu'> <li><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="locations_boston" href="/services/home-cleaning/boston">Boston</a></li> <li><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="locations_chicago" href="/services/home-cleaning/chicago">Chicago</a></li> <li><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="locations_london" href="/services/home-cleaning/london">London</a></li> <li><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="locations_los-angeles" href="/services/home-cleaning/los-angeles">Los Angeles</a></li> <li><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="locations_new-york" href="/services/home-cleaning/new-york">New York</a></li> <li><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="locations_san-francisco" href="/services/home-cleaning/san-francisco">San Francisco</a></li> <li><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="locations_toronto" href="/services/home-cleaning/toronto">Toronto</a></li> <li><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="locations_vancouver" href="/services/home-cleaning/vancouver">Vancouver</a></li> <li><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="locations" href="/locations">See all locations</a></li> <li class='header-link'> <form class="header-form-wrapper" id="locale-select-form" action="/locale_select" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" autocomplete="off" /><input type="hidden" name="authenticity_token" value="ep7x/w2XNoQFSNiNz0qc6S95ocAA6pS6GezIfrUgwnsXKMdqimviWknmvWUi9hqpO9YJzO/uuIACQX/qekDAAw==" autocomplete="off" /> <div class='select-wrapper header-select-wrapper'> <select name="locale" id="locale" class="locale-dropdown" onchange="this.form.submit()"><option selected="selected" value="en-US">United States</option> <option value="en-CA">Canada</option> <option value="en-GB">United Kingdom</option></select> </div> </form> </li> </ul> </nav> <nav class='small-3 columns'> <p class='footer-header'>Popular Services</p> <ul class='footer-link-menu'> <li><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="services_home_cleaning" href="/services/home-cleaning">Cleaning</a></li> <li><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="services_other_handyman_service" href="/services/other-handyman-service">Handyman</a></li> <li><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="services_other_plumbing" href="/services/other-plumbing">Plumbing</a></li> <li><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="services_other_electrical" href="/services/other-electrical">Electrical</a></li> <li><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="services_moving_help" href="/services/moving-help">Moving Help</a></li> <li><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="services_painting" href="/services/painting">Painting</a></li> <li><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="services_furniture_assembly" href="/services/furniture-assembly">Furniture Assembly</a></li> <li><a class="trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="services" href="/services">See all services</a></li> </ul> </nav> </div> <div class='row hide-for-small search-footer-content-row'> <div class='footer-social-icon-row columns'> <a class="icon-link" target="_blank" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="twitter" href="https://twitter.com/handy"><i class='fa lazy-loading' data-class='fa-twitter'></i> </a><a class="icon-link" target="_blank" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="facebook" href="https://facebook.com/handyhq"><i class='fa lazy-loading' data-class='fa-facebook'></i> </a><a class="icon-link" target="_blank" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="instagram" href="http://instagram.com/handy_hq"><i class='fa lazy-loading' data-class='fa-instagram'></i> </a><a class="icon-link" target="_blank" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="wikipedia" href="https://en.wikipedia.org/wiki/Handy_(company)"><i class='fa lazy-loading' data-class='fa-wikipedia-w'></i> </a><a class="icon-link" target="_blank" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="linkedin" href="https://www.linkedin.com/company/handyhq"><i class='fa lazy-loading' data-class='fa-linkedin'></i> </a><a class="icon-link" target="_blank" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="crunchbase" href="https://crunchbase.com/organization/handybook"><i class='fa lazy-loading' data-class='fa-cb'></i> </a></div> <div class='small-12 columns'> <div class='footer-divider'></div> </div> </div> <div class='row search-footer-content-row'> <div class='row footer-interlinks'> <div class='column headline'>Other Handy Services</div> <div class='column medium-5'> <ul> <li> <a href="https://www.handy.com/services/cleaning-service/chicago">cleaning service in chicago</a> </li> <li> <a href="https://www.handy.com/services/office-cleaning/houston">commercial cleaning services in houston</a> </li> <li> <a href="https://www.handy.com/services/home-cleaning/los-angeles">house cleaning los angeles</a> </li> </ul> </div> <div class='column medium-4'> <ul> <li> <a href="https://www.handy.com/services/home-cleaning/near-me">house cleaning service near me</a> </li> <li> <a href="https://www.handy.com/services/maid-service">maids</a> </li> <li> <a href="https://www.handy.com/services/move-out-in-cleaning">move in cleaning</a> </li> </ul> </div> <div class='column medium-3'> <ul> <li> <a href="https://www.handy.com/services/move-out-in-cleaning/atlanta">move in cleaning atlanta</a> </li> <li> <a href="https://www.handy.com/services/home-cleaning">residential cleaning</a> </li> <li> <a href="https://www.handy.com/services/wall-painting">wall painting service</a> </li> </ul> </div> </div> <div class='small-12 columns'> <div class='footer-divider'></div> </div> </div> <div class='row pad-top lower-footer search-footer-content-row'> <div class='small-12 medium-8 columns footer-term-links'> <ul class='footer-secondary-links'> <li><a class="smaller trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="contact" href="/help">Contact</a></li> <li><a class="smaller trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="privacy" href="https://vault.pactsafe.io/s/f2c54d1f-373d-4a51-b961-d1bea6d73ec5/handy-legal-center#us-privacy-policy">Privacy</a></li> <li><a class="smaller trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="privacy" href="https://vault.pactsafe.io/s/f2c54d1f-373d-4a51-b961-d1bea6d73ec5/handy-legal-center#us-privacy-policy">CA Pre-Collection Notice</a></li> <li><a class="smaller trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="cookies" href="https://vault.pactsafe.io/s/f2c54d1f-373d-4a51-b961-d1bea6d73ec5/handy-legal-center#do-not-sell-or-share-my-personal-information">Do Not Sell or Share My Personal Information</a></li> <li><a class="smaller trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="cookies" href="https://vault.pactsafe.io/s/f2c54d1f-373d-4a51-b961-d1bea6d73ec5/handy-legal-center#cookies-policy">Cookies</a></li> <li><a class="smaller trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="terms" href="https://vault.pactsafe.io/s/f2c54d1f-373d-4a51-b961-d1bea6d73ec5/handy-legal-center#us-terms-of-use">Terms</a></li> <li><a class="smaller trackable" data-mixpanel-event="footer_cta" data-mixpanel-event-context="footer_monolith" data-mixpanel-product-type="consumer" data-mixpanel-event-source="cancellation_policy" href="https://help.handy.com/handysupport/s/article/What-s-the-cancellation-policy--How-Handy-Works">Cancellation Policy</a></li> </ul> </div> <div class='small-12 medium-4 columns footer-copyright-text'> <div class='attribution-wrapper'> <span> 2025 Handy. All rights reserved. </span> <strong> Handy powered by Angi </strong> </div> </div> </div> <!-- BEGIN TRACERS --> <!-- handy_request_trace_id=74d25f1fb247af8e541872087ba0a106 --> <!-- handy_user_trace_id=CsoD4Gf5ZUABdAAHrKWjAg== --> <!-- END TRACERS --> </footer> </div> </div> <script src="https://cache.hbfiles.com/assets/vendor/built-8f695339a51840c6b18455b0b02afe88e4d355e73f60ad4719021a17817342fc.js"></script> <script src="https://cache.hbfiles.com/assets/polyfills-cfc5672726f9bad46be17973ffae6c2e4b48ee765cc9cb93573b3235ec3bc12e.js" defer="defer"></script> <script src="https://cache.hbfiles.com/assets/application-047e2ce373aa30fcb3f8426e63dc2263d3bc835f563b199305fefa434531bcd9.js" defer="defer"></script> <script class="handy-analytics-events" id="handy-analytics--events--mixpanel"> document.addEventListener('DOMContentLoaded', function(){ window.Handy = window.Handy || {}; if (typeof Handy.track === "function") { } if (typeof Handy.trackLink === "function") { } if (typeof Handy.trackVisibleElement === "function") { } }); </script> </body> </html>