@zoho_apptics/apptics-js-sdk 2.0.0-beta.1 → 2.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/CHANGELOG.md +80 -16
  2. package/README.md +187 -100
  3. package/dist/apptics.esm.min.js +2 -2
  4. package/dist/apptics.esm.min.js.map +1 -1
  5. package/dist/apptics.min.js +2 -2
  6. package/dist/apptics.min.js.map +1 -1
  7. package/dist/chunks/lifecycle-C6m1W7jo.min.js +3 -0
  8. package/dist/chunks/lifecycle-C6m1W7jo.min.js.map +1 -0
  9. package/dist/chunks/send-CgUO82ne.min.js +3 -0
  10. package/dist/chunks/send-CgUO82ne.min.js.map +1 -0
  11. package/dist/cjs/core/attempts.js +1 -1
  12. package/dist/cjs/core/batch.js +1 -2
  13. package/dist/cjs/core/consent.d.ts +13 -3
  14. package/dist/cjs/core/consent.js +24 -10
  15. package/dist/cjs/core/constants.d.ts +22 -17
  16. package/dist/cjs/core/constants.js +22 -19
  17. package/dist/cjs/core/db.js +1 -1
  18. package/dist/cjs/core/debug.js +1 -1
  19. package/dist/cjs/core/env.d.ts +0 -3
  20. package/dist/cjs/core/env.js +1 -9
  21. package/dist/cjs/core/framework-id.d.ts +1 -1
  22. package/dist/cjs/core/framework-id.js +3 -3
  23. package/dist/cjs/core/guard.js +1 -1
  24. package/dist/cjs/core/hooks.d.ts +5 -0
  25. package/dist/cjs/core/hooks.js +2 -1
  26. package/dist/cjs/core/locks.js +1 -1
  27. package/dist/cjs/core/logger.js +1 -1
  28. package/dist/cjs/core/state.d.ts +6 -4
  29. package/dist/cjs/core/state.js +2 -4
  30. package/dist/cjs/core/storage.js +1 -4
  31. package/dist/cjs/core/stylesheet.js +1 -1
  32. package/dist/cjs/core/transport.js +13 -16
  33. package/dist/cjs/core/utils.js +1 -1
  34. package/dist/cjs/core/validate.js +1 -1
  35. package/dist/cjs/device/appversion.d.ts +10 -1
  36. package/dist/cjs/device/appversion.js +26 -3
  37. package/dist/cjs/device/index.d.ts +17 -2
  38. package/dist/cjs/device/index.js +195 -27
  39. package/dist/cjs/engagement/api-rules.js +1 -1
  40. package/dist/cjs/engagement/auto-api.js +1 -1
  41. package/dist/cjs/engagement/auto-screen.js +1 -1
  42. package/dist/cjs/engagement/defined-events.js +1 -1
  43. package/dist/cjs/engagement/send.js +7 -3
  44. package/dist/cjs/engagement/session.d.ts +17 -0
  45. package/dist/cjs/engagement/session.js +95 -4
  46. package/dist/cjs/engagement/track.d.ts +4 -4
  47. package/dist/cjs/engagement/track.js +15 -12
  48. package/dist/cjs/errors/send.js +2 -2
  49. package/dist/cjs/errors/track.d.ts +2 -1
  50. package/dist/cjs/errors/track.js +6 -4
  51. package/dist/cjs/feedback/controls.d.ts +6 -0
  52. package/dist/cjs/feedback/controls.js +74 -25
  53. package/dist/cjs/feedback/index.js +1 -1
  54. package/dist/cjs/feedback/logs.d.ts +3 -6
  55. package/dist/cjs/feedback/logs.js +8 -18
  56. package/dist/cjs/feedback/quartz.js +1 -1
  57. package/dist/cjs/feedback/send.d.ts +2 -2
  58. package/dist/cjs/feedback/send.js +4 -27
  59. package/dist/cjs/feedback/styles.js +2 -2
  60. package/dist/cjs/feedback/template.d.ts +1 -1
  61. package/dist/cjs/feedback/template.js +9 -1
  62. package/dist/cjs/feedback/ui.d.ts +7 -0
  63. package/dist/cjs/feedback/ui.js +160 -25
  64. package/dist/cjs/heatmap/send.d.ts +2 -0
  65. package/dist/cjs/heatmap/send.js +3 -5
  66. package/dist/cjs/heatmap/track.js +1 -1
  67. package/dist/cjs/index.d.ts +1 -2
  68. package/dist/cjs/index.js +54 -17
  69. package/dist/cjs/lifecycle.d.ts +13 -2
  70. package/dist/cjs/lifecycle.js +122 -54
  71. package/dist/cjs/remoteconfig/country.js +1 -1
  72. package/dist/cjs/remoteconfig/custom.js +1 -1
  73. package/dist/cjs/remoteconfig/evaluate.js +1 -1
  74. package/dist/cjs/remoteconfig/fetch.d.ts +17 -10
  75. package/dist/cjs/remoteconfig/fetch.js +126 -31
  76. package/dist/cjs/remoteconfig/index.d.ts +13 -4
  77. package/dist/cjs/remoteconfig/index.js +36 -20
  78. package/dist/cjs/remoteconfig/store.d.ts +15 -7
  79. package/dist/cjs/remoteconfig/store.js +68 -35
  80. package/dist/cjs/remoteconfig/tz-countries.js +1 -1
  81. package/dist/cjs/{core → remotelog}/callsite.d.ts +5 -4
  82. package/dist/cjs/{core → remotelog}/callsite.js +6 -5
  83. package/dist/cjs/remotelog/gate.js +1 -1
  84. package/dist/cjs/remotelog/logger.js +2 -2
  85. package/dist/cjs/remotelog/send.js +2 -2
  86. package/dist/cjs/remotelogger/index.js +1 -1
  87. package/dist/cjs/scheduler.d.ts +3 -1
  88. package/dist/cjs/scheduler.js +24 -21
  89. package/dist/cjs/types.d.ts +61 -16
  90. package/dist/cjs/user/index.js +6 -2
  91. package/dist/esm/core/attempts.js +1 -1
  92. package/dist/esm/core/batch.js +1 -2
  93. package/dist/esm/core/consent.d.ts +13 -3
  94. package/dist/esm/core/consent.js +24 -11
  95. package/dist/esm/core/constants.d.ts +22 -17
  96. package/dist/esm/core/constants.js +22 -19
  97. package/dist/esm/core/db.js +1 -1
  98. package/dist/esm/core/debug.js +1 -1
  99. package/dist/esm/core/env.d.ts +0 -3
  100. package/dist/esm/core/env.js +2 -9
  101. package/dist/esm/core/framework-id.d.ts +1 -1
  102. package/dist/esm/core/framework-id.js +3 -3
  103. package/dist/esm/core/guard.js +1 -1
  104. package/dist/esm/core/hooks.d.ts +5 -0
  105. package/dist/esm/core/hooks.js +2 -1
  106. package/dist/esm/core/locks.js +1 -1
  107. package/dist/esm/core/logger.js +1 -1
  108. package/dist/esm/core/state.d.ts +6 -4
  109. package/dist/esm/core/state.js +2 -4
  110. package/dist/esm/core/storage.js +1 -4
  111. package/dist/esm/core/stylesheet.js +1 -1
  112. package/dist/esm/core/transport.js +13 -16
  113. package/dist/esm/core/utils.js +1 -1
  114. package/dist/esm/core/validate.js +1 -1
  115. package/dist/esm/device/appversion.d.ts +10 -1
  116. package/dist/esm/device/appversion.js +26 -4
  117. package/dist/esm/device/index.d.ts +17 -2
  118. package/dist/esm/device/index.js +195 -30
  119. package/dist/esm/engagement/api-rules.js +1 -1
  120. package/dist/esm/engagement/auto-api.js +1 -1
  121. package/dist/esm/engagement/auto-screen.js +1 -1
  122. package/dist/esm/engagement/defined-events.js +1 -1
  123. package/dist/esm/engagement/send.js +7 -3
  124. package/dist/esm/engagement/session.d.ts +17 -0
  125. package/dist/esm/engagement/session.js +93 -5
  126. package/dist/esm/engagement/track.d.ts +4 -4
  127. package/dist/esm/engagement/track.js +16 -13
  128. package/dist/esm/errors/send.js +2 -2
  129. package/dist/esm/errors/track.d.ts +2 -1
  130. package/dist/esm/errors/track.js +6 -4
  131. package/dist/esm/feedback/controls.d.ts +6 -0
  132. package/dist/esm/feedback/controls.js +74 -26
  133. package/dist/esm/feedback/index.js +1 -1
  134. package/dist/esm/feedback/logs.d.ts +3 -6
  135. package/dist/esm/feedback/logs.js +8 -18
  136. package/dist/esm/feedback/quartz.js +1 -1
  137. package/dist/esm/feedback/send.d.ts +2 -2
  138. package/dist/esm/feedback/send.js +6 -29
  139. package/dist/esm/feedback/styles.js +2 -2
  140. package/dist/esm/feedback/template.d.ts +1 -1
  141. package/dist/esm/feedback/template.js +9 -1
  142. package/dist/esm/feedback/ui.d.ts +7 -0
  143. package/dist/esm/feedback/ui.js +161 -26
  144. package/dist/esm/heatmap/send.d.ts +2 -0
  145. package/dist/esm/heatmap/send.js +3 -5
  146. package/dist/esm/heatmap/track.js +1 -1
  147. package/dist/esm/index.d.ts +1 -2
  148. package/dist/esm/index.js +57 -20
  149. package/dist/esm/lifecycle.d.ts +13 -2
  150. package/dist/esm/lifecycle.js +126 -60
  151. package/dist/esm/remoteconfig/country.js +1 -1
  152. package/dist/esm/remoteconfig/custom.js +1 -1
  153. package/dist/esm/remoteconfig/evaluate.js +1 -1
  154. package/dist/esm/remoteconfig/fetch.d.ts +17 -10
  155. package/dist/esm/remoteconfig/fetch.js +127 -32
  156. package/dist/esm/remoteconfig/index.d.ts +13 -4
  157. package/dist/esm/remoteconfig/index.js +36 -20
  158. package/dist/esm/remoteconfig/store.d.ts +15 -7
  159. package/dist/esm/remoteconfig/store.js +68 -36
  160. package/dist/esm/remoteconfig/tz-countries.js +1 -1
  161. package/dist/esm/{core → remotelog}/callsite.d.ts +5 -4
  162. package/dist/esm/{core → remotelog}/callsite.js +6 -5
  163. package/dist/esm/remotelog/gate.js +1 -1
  164. package/dist/esm/remotelog/logger.js +2 -2
  165. package/dist/esm/remotelog/send.js +2 -2
  166. package/dist/esm/remotelogger/index.js +1 -1
  167. package/dist/esm/scheduler.d.ts +3 -1
  168. package/dist/esm/scheduler.js +25 -23
  169. package/dist/esm/types.d.ts +61 -16
  170. package/dist/esm/user/index.js +7 -3
  171. package/dist/feedback.esm.min.js +2 -2
  172. package/dist/feedback.esm.min.js.map +1 -1
  173. package/dist/remoteconfig.esm.min.js +3 -0
  174. package/dist/remoteconfig.esm.min.js.map +1 -0
  175. package/dist/remotelogger.esm.min.js +3 -0
  176. package/dist/remotelogger.esm.min.js.map +1 -0
  177. package/package.json +3 -2
  178. package/dist/chunks/lifecycle-VYr43KcB.min.js +0 -3
  179. package/dist/chunks/lifecycle-VYr43KcB.min.js.map +0 -1
  180. package/dist/cjs/auto-init.d.ts +0 -8
  181. package/dist/cjs/auto-init.js +0 -32
  182. package/dist/esm/auto-init.d.ts +0 -8
  183. package/dist/esm/auto-init.js +0 -29
@@ -1,3 +1,3 @@
1
- /*! @zoho_apptics/apptics-js-sdk v2.0.0-beta.1 | (c) Zoho Corporation Private Limited | see LICENSE */
2
- !function(){"use strict";const e=Object.freeze({USAGE_TRACKING_WITH_PII:1,USAGE_TRACKING_WITHOUT_PII:4,NO_TRACKING:-1}),t=Object.freeze({BUG:0,FEEDBACK:1,HELP:2,REPORT:3}),n=Object.freeze({SCREEN:"screen",SESSION:"session",EVENT:"event",API:"api",ERROR:"error",SUCCESS:"success",BROWSER:"Browser"}),r=Object.freeze({addversion:"app/addversion",regdevice:"device/add",reguser:"user/register",engagement:"engagement/add",error:"exception/error",feedback:"feedback/add",sdkconfig:"getsdkconfig",getupdates:"getupdates",consolelog:"log/add",heatmap:"heatmap/add"}),i=Object.freeze({addversion:"v2",regdevice:"v2",engagement:"v2",error:"v2",reguser:"v2",feedback:"v2",sdkconfig:"v2",getupdates:"v2",consolelog:"v2",heatmap:"v2"}),a=Object.freeze({SESSION:"Session",SCREEN:"Screen",EVENT:"Event",API:"API",HEATMAP:"Heatmap",PROPERTIES:"Properties"}),o=Object.freeze({REMOTE_CONFIG:"2",SESSION:"11",FEEDBACK:"12",CRASH:"13",REMOTE_LOGGER:"17",HEATMAP:"18"}),s=36e5,c=Object.freeze({endpoint:"/sdk/web/",method:"POST",transport:"XHR",track_link_timeout:300,cookie_expiration_days:365,storage_type:"localStorage",enable_batch_requests:!0,batch_size:50,batch_flush_interval:3e4,getupdates_interval:12e4,batch_request_timeout:7,auto_starts_batch:!0,mode:1,default_group_name:"default",default_optin_status:e.USAGE_TRACKING_WITHOUT_PII,enable_pageview_tracking:!1,save_referrer:!0,debug:!1,track_by_default:!0,ignore_do_not_track:!1,track_api:!1,track_screen:!0,screen_routes:[],feedback_theme:"auto",min_session_duration:5e3,track_heatmap:!1,debug_api:!1,device_name:"",heatmap_max_per_session:500}),d=Object.freeze(["base_url","auth_key","app_domain","appversion"]),u=Object.freeze({base_url:"serviceUrl",auth_key:"zak",app_domain:"identifier"}),l=Object.freeze({engagement:!0,error:!0,consolelog:!0}),p=Object.freeze({regdevice:!0,reguser:!0,engagement:!0,error:!0,heatmap:!0,consolelog:!0,feedback:!0,getupdates:!0}),f=Object.freeze({addversion:!0}),g=Object.freeze({serviceUrl:"base_url",base_domain:"base_url",zak:"auth_key",token:"auth_key",identifier:"app_domain"}),m=Object.freeze(["ahrefsbot","ahrefssiteaudit","baiduspider","bingbot","bingpreview","chrome-lighthouse","facebookexternal","petalbot","pinterest","screaming frog","yahoo! slurp","yandexbot","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleweblight","mediapartners-google","storebot-google"]),h={};function v(){return Math.round((new Date).getTime())}function k(e){return!!e&&"object"==typeof e&&e.result==n.SUCCESS}function _(e){return null==e||""===e}function b(e){return!!e&&"object"==typeof e&&0===Object.keys(e).length&&e.constructor===Object}function y(e,t){return JSON.stringify(e)===JSON.stringify(t)}function z(e,t){const n={};for(let key in e)t.includes(key)||(n[key]=e[key]);return n}function A(e){return JSON.parse(JSON.stringify(e))}function w(e){let t=0;return function e(value){if(null!==value&&"object"==typeof value)for(const key in value)Object.prototype.hasOwnProperty.call(value,key)&&(t+=2*key.length,e(value[key]));else"string"==typeof value?t+=2*value.length:"number"==typeof value?t+=8:"boolean"==typeof value&&(t+=4)}(e),t}function S(e,t){return-1!==e.indexOf(t)}function E(){var e=function(){for(var e=Date.now(),t=0;e==Date.now();)t++;return e.toString(16)+t.toString(16)},t=(screen.height*screen.width).toString(16);return e()+"-"+Math.random().toString(16).replace(".","")+"-"+function(){var e,t,n=navigator.userAgent,r=[],i=0;function a(e,t){var n,i=0;for(n=0;n<t.length;n++)i|=r[n]<<8*n;return e^i}for(e=0;e<n.length;e++)t=n.charCodeAt(e),r.unshift(255&t),r.length>=4&&(i=a(i,r),r=[]);return r.length>0&&(i=a(i,r)),i.toString(16)}()+"-"+t+"-"+e()}const x={_initialised:!1,_ready:!1,_pending:[],_readyPromise:null,_regDeviceSending:!1,_regDeviceResolve:[],_regDeviceReject:[],_sending:!1,_deferSendTimer:null,_config:{...c},_defaultoptions:{},inactiveduration:30,_token:"",_frameworkID:6002,_platform:n.BROWSER,_isanonrequired:!0,_devicestatus:e.USAGE_TRACKING_WITHOUT_PII,_uuid:"",_apid:"",_mapid:"",_device_info:{},_user_info:{},_current_screen:{},_current_session:{},_properties:{},_ignoreDnt:!1,_isGlobalErrorTracking:!0,_shouldTrack:!0,_engagementTracking:!0,_heatmapTracking:!0,_remoteLoggerEnabled:!0,_remoteConfigEnabled:!0,_remoteConfigReported:!0,_feedbackEnabled:!0,_nextConfigCheck:0,_debugUntil:0,_errorTracking:!0,_quartz:{enabled:!1,workspace:"",department:"",domain:"",cdnUrl:""},_trackinfo:{}};function P(key){return x._config[key]}function T(e){return!("number"!=typeof e||!isFinite(e))&&(e<v()-24*P("batch_request_timeout")*60*60*1e3||e>v()+6e4)}const O="undefined"!=typeof console?console:null;function I(method){return function(...e){if(x._config.debug&&O)try{O[method].apply(O,e)}catch(t){!function(e,t,n){if(null!=e)if(Array.prototype.forEach&&e.forEach===Array.prototype.forEach)e.forEach(t,n);else if(e.length===+e.length){for(var r=0,i=e.length;r<i;r++)if(r in e&&t.call(n,e[r],r,e)===h)return}else for(var key in e)if(Object.prototype.hasOwnProperty.call(e,key)&&t.call(n,e[key],key,e)===h)return}(e,function(e){O[method](e)})}}}const C={log:I("log"),warn:I("warn"),error:I("error"),info:I("info"),dir(e){x._config.debug&&O&&O.dir(e)}};function R(...e){O&&O.warn(...e)}function N(e,...t){C.error.apply(null,t)}const M={"Apptics.init":!0,"Apptics.ready":!0,"Apptics.reset":!0,"AppticsUser.getUser":!0,"AppticsSettings.getTrackingStatus":!0,"AppticsFeedback.sendFeedback":!0,"AppticsFeedback.addFeedbackLog":!0,"AppticsFeedback.addDiagnosticsInfo":!0,"AppticsFeedback.setFeedbackTheme":!0,"AppticsApi.configure":!0,"AppticsApi.startTrackApi":!0,"AppticsRemoteConfig.fetchValue":!0,"AppticsRemoteConfig.fetchValues":!0,"AppticsRemoteConfig.setCustomConditionValue":!0,"Apptics.enableDebug":!0,"Apptics.disableDebug":!0},L={"AppticsEvent.addEvent":!0,"AppticsScreen.inScreen":!0,"AppticsScreen.outScreen":!0,"AppticsApi.endTrackApi":!0,"AppticsError.trackError":!0,"AppticsUser.setUser":!0,"Apptics.flush":!0,AppticsLogger:!0,"AppticsFeedback.sendFeedback":!0,"AppticsRemoteConfig.fetchValue":!0,"AppticsRemoteConfig.fetchValues":!0};function q(name){return 0===name.indexOf("Apptics")?name:"apptics."+name}var D=!1;function F(name,e){const t=function(...n){if(x._initialised||!L[name]||D||(D=!0,R(q(name)+": the SDK has not started, so this call is ignored. Call Apptics.init() first, and check its warnings if you did.")),!x._initialised||x._ready||M[name])try{return e(...n)}catch(e){return R(q(name)+" failed:",e),void N(0,e)}else x._pending.push(function(){t(...n)})};return t}function j(e,t){return e.apply(null,Array.prototype.slice.call(t))}const B="apptics",U=["engagements","errors","feedbacklogs","remotelogs","heatmaps"],H="queue",G="seq",V=[["logs","feedbacklogs"],["consolelogs","remotelogs"]],K="feedbacklog",W="feedbackdiagnostics",Z=Object.freeze({log:K,diagnostics:W});function J(e){var t=e&&"string"==typeof e.type?Z[e.type]:void 0;return t?{...e,type:t}:e}const Y=Object.freeze({settings:"apptics-device-info",engagements:"apptics-engagements-transactions",errors:"apptics-errors-transactions",logs:"apptics-log-transactions",consolelogs:"apptics-consolelog-transactions"}),Q=Object.freeze({settings:Y.settings,engagements:Y.engagements,errors:Y.errors,feedbacklogs:"apptics-feedbacklog-transactions",remotelogs:"apptics-remotelog-transactions",heatmaps:"apptics-heatmap-transactions"});function $(value){return Array.isArray(value)?value:[]}function X(value){return value&&"object"==typeof value&&!Array.isArray(value)?value:{}}function ee(key){try{const e=localStorage.getItem(key);return null===e||""===e?null:JSON.parse(e)}catch(e){return C.warn("apptics: could not read "+key+", treating it as empty"),null}}function te(key,value){try{localStorage.setItem(key,JSON.stringify(value))}catch(e){C.warn("apptics: could not write "+key+": "+String(e))}}function ne(){return[[Y.logs,Q.feedbacklogs],[Y.consolelogs,Q.remotelogs]].forEach(function(e){try{var t=e[0],n=e[1],r=localStorage.getItem(t);if(null===r)return;if(null===localStorage.getItem(n)){var i=$(JSON.parse(r));localStorage.setItem(n,JSON.stringify(n===Q.feedbacklogs?i.map(J):i))}localStorage.removeItem(t)}catch(e){}}),{kind:"localstorage",loadSettings:()=>Promise.resolve(X(ee(Q.settings))),putSetting(key,value){const e=X(ee(Q.settings));return e[key]=value,te(Q.settings,e),Promise.resolve()},deleteSetting(key){const e=X(ee(Q.settings));return delete e[key],te(Q.settings,e),Promise.resolve()},clearSettings:()=>(te(Q.settings,{}),Promise.resolve()),queueAll:e=>Promise.resolve($(ee(Q[e]))),queuePut(e,t){const n=$(ee(Q[e]));return t.forEach(function(e){const t=n.findIndex(function(t){return t.id===e.id});-1===t?n.push(e):n[t]=e}),te(Q[e],n),Promise.resolve()},queueDelete(e,t){const n=$(ee(Q[e])).filter(function(e){return-1===t.indexOf(e.id)});return te(Q[e],n),Promise.resolve()},queueClear:e=>(te(Q[e],[]),Promise.resolve())}}let re=0;function ie(){const e=1e3*v();return re=e>re?e:re+1,re}function ae(e){return new Promise(function(t,n){e.onsuccess=function(){t(e.result)},e.onerror=function(){n(e.error)}})}function oe(e){return new Promise(function(t,n){e.oncomplete=function(){t()},e.onerror=function(){n(e.error)},e.onabort=function(){n(e.error)}})}const se=Object.freeze({engagements:"engagement",errors:"error",feedbacklogs:K,remotelogs:"remotelog",heatmaps:"heatmap"});function ce(e,t){return t&&"string"==typeof t.type&&""!==t.type?t.type:se[e]||e}function de(e,t,n){const id=String(t.id),r=e.get(id);r.onsuccess=function(){const i=r.result;i&&n||e.put({id:id,queue:i?i.queue:ie(),type:ce(e.name,t),item:t})}}function ue(e){return e.objectStoreNames.contains("settings")&&U.every(function(name){return e.objectStoreNames.contains(name)})}function le(e=indexedDB,t=3e3){return pe(e,t).then(function(n){return ue(n)?n:(C.warn('apptics: the "'+B+'" database is missing its stores, recreating it'),n.close(),function(e){return new Promise(function(t){var n=e.deleteDatabase(B);n.onsuccess=function(){t()},n.onerror=function(){t()},n.onblocked=function(){t()}})}(e).then(function(){return pe(e,t)}).then(function(e){if(!ue(e))throw e.close(),new Error("indexedDB: stores could not be created");return e}))})}function pe(e,t){return new Promise(function(n,r){let i=!1;const a=function(e){i||(i=!0,clearTimeout(o),r(e))},o=setTimeout(function(){a(new Error("indexedDB open timed out"))},t);let s;try{s=e.open(B,4)}catch(e){return void a(e)}s.onupgradeneeded=function(){!function(e,t){e.objectStoreNames.contains("settings")||e.createObjectStore("settings");U.forEach(function(name){e.objectStoreNames.contains(name)||e.createObjectStore(name,{keyPath:"id"}).createIndex(H,H)}),U.forEach(function(name){const e=t.objectStore(name);e.indexNames.contains(G)&&(e.deleteIndex(G),e.indexNames.contains(H)||e.createIndex(H,H),fe(e,function(e,t){t.update(ge(e,!1,name))}))}),V.forEach(function(n){const r=n[0],i=n[1];if(!e.objectStoreNames.contains(r))return;const a=t.objectStore(r),o=t.objectStore(i);fe(a,function(e){o.put(ge(e,"feedbacklogs"===i,i))},function(){e.deleteObjectStore(r)})})}(s.result,s.transaction)},s.onsuccess=function(){i?s.result.close():(i=!0,clearTimeout(o),s.result.onversionchange=function(){C.warn("apptics: another tab is upgrading the database, closing this connection"),s.result.close()},n(s.result))},s.onerror=function(){a(s.error)},s.onblocked=function(){C.warn("apptics: waiting for another tab to release the database")}})}function fe(e,t,n){const r=e.openCursor();r.onsuccess=function(){const e=r.result;e?(t(e.value,e),e.continue()):n&&n()}}function ge(e,t,n){const r="number"==typeof e[H]?e[H]:"number"==typeof e[G]?e[G]:ie(),i=t?J(e.item):e.item;return{id:String(e.id),queue:r,type:ce(n,i),item:i}}function me(e){return{kind:"indexeddb",loadSettings(){const t=e.transaction("settings","readonly").objectStore("settings");return Promise.all([ae(t.getAllKeys()),ae(t.getAll())]).then(function([e,t]){const n={};return e.forEach(function(key,e){n[String(key)]=t[e]}),n})},putSetting(key,value){const t=e.transaction("settings","readwrite");return t.objectStore("settings").put(value,key),oe(t)},deleteSetting(key){const t=e.transaction("settings","readwrite");return t.objectStore("settings").delete(key),oe(t)},clearSettings(){const t=e.transaction("settings","readwrite");return t.objectStore("settings").clear(),oe(t)},queueAll:t=>ae(e.transaction(t,"readonly").objectStore(t).index(H).getAll()).then(function(e){return e.map(function(e){return e.item})}),queuePut(t,n){const r=e.transaction(t,"readwrite"),i=r.objectStore(t);return n.forEach(function(e){de(i,e,!1)}),oe(r)},queueDelete(t,n){const r=e.transaction(t,"readwrite"),i=r.objectStore(t);return n.forEach(function(id){i.delete(id)}),oe(r)},queueClear(t){const n=e.transaction(t,"readwrite");return n.objectStore(t).clear(),oe(n)},importAll(t,n){const r=e.transaction(["settings"].concat(U),"readwrite"),i=r.objectStore("settings");return Object.keys(t).forEach(function(key){const e=i.get(key);e.onsuccess=function(){void 0===e.result&&i.put(t[key],key)}}),U.forEach(function(name){const e=r.objectStore(name);n[name].forEach(function(t){de(e,t,!0)})}),oe(r)}}}function he(){const e=function(e){return C.warn("apptics: IndexedDB unavailable ("+String(e)+"), using localStorage"),function(){try{const e="__apptics_probe__";return localStorage.setItem(e,"1"),localStorage.removeItem(e),!0}catch(e){return!1}}()?ne():null};let t;try{t="undefined"!=typeof indexedDB?indexedDB:void 0}catch(e){t=void 0}return t?le(t).then(me,e):Promise.resolve(e("not supported"))}var ve=null,ke={};function _e(e,t,n){return be().then(function(e){return e?n(e):t}).catch(function(n){return C.warn("apptics: storage "+e+" failed: "+String(n)),t})}function be(){return ve||(ve=he().then(function(e){return e?function(e){if("indexeddb"!==e.kind||!e.importAll)return Promise.resolve();var t;try{t={settings:localStorage.getItem(Y.settings),engagements:localStorage.getItem(Y.engagements),errors:localStorage.getItem(Y.errors),logs:localStorage.getItem(Y.logs),consolelogs:localStorage.getItem(Y.consolelogs)}}catch(e){return Promise.resolve()}if(null===t.settings&&null===t.engagements&&null===t.errors&&null===t.logs&&null===t.consolelogs)return Promise.resolve();var n=function(e){try{return null===e?null:JSON.parse(e)}catch(e){return null}},r={engagements:$(n(t.engagements)),errors:$(n(t.errors)),feedbacklogs:$(n(t.logs)).map(J),remotelogs:$(n(t.consolelogs)),heatmaps:[]};r.engagements.concat(r.errors,r.feedbacklogs,r.remotelogs).forEach(function(e){e.id||(e.id=E())});var i=e.importAll.bind(e);return Promise.resolve().then(function(){return i(X(n(t.settings)),r)}).then(function(){Object.values(Y).forEach(function(key){try{localStorage.removeItem(key)}catch(e){}}),C.log("apptics: moved 1.x data from localStorage to IndexedDB")}).catch(function(e){C.warn("apptics: 1.x data migration failed, will retry next load: "+String(e))})}(e).then(function(){return e.loadSettings()}).then(function(t){return ke=Object.assign({},t,ke),function(){var e=ke.device_info&&"object"==typeof ke.device_info?ke.device_info:null;void 0===ke.uuid&&void 0===ke.hadsession||(_((e=Object.assign({},e||{})).uuid)&&!_(ke.uuid)&&(e.uuid=ke.uuid),!0===ke.hadsession&&(e.hadsession=!0),Te("device_info",e),Te("uuid",void 0),Te("hadsession",void 0));if(void 0!==ke.tracking_status){var t=Object.assign({},ke.trackinfo&&"object"==typeof ke.trackinfo?ke.trackinfo:{});void 0===t.tracking_status&&(t.tracking_status=ke.tracking_status),Te("trackinfo",t),Te("tracking_status",void 0)}void 0!==ke.token&&Te("token",void 0)}(),e}):null}).catch(function(e){return C.warn("apptics: storage unavailable: "+String(e)),null})),ve}function ye(e){let t=0;const n=[];for(const r of e.slice(0,P("batch_size"))){const e=w(JSON.stringify(r));if(t+e>1048576)break;n.push(r),t+=e}return n}function ze(name){const e={name:name,all:()=>_e("read "+name,[],function(e){return e.queueAll(name)}),payload:()=>e.all().then(ye),add:e=>(e.id||(e.id=E()),T(function(e){return void 0!==e.starttime?e.starttime:e.happenedat}(e))?(C.warn("apptics: dropping a "+name+" item older than "+P("batch_request_timeout")+" days"),Promise.resolve()):_e("add "+name,void 0,function(t){return t.queuePut(name,[e])})),update:e=>_e("update "+name,void 0,function(t){return t.queuePut(name,[e])}),remove(e){const t=(e||[]).map(function(e){return String(e.id)});return _e("remove "+name,void 0,function(e){return e.queueDelete(name,t)})},clear:()=>_e("clear "+name,void 0,function(e){return e.queueClear(name)})};return e}const Ae=ze("engagements"),we=ze("errors"),Se=ze("feedbacklogs"),Ee=ze("heatmaps"),xe=ze("remotelogs");function Pe(e,key){return void 0===ke[key]?e.deleteSetting(key):e.putSetting(key,ke[key])}function Te(key,value){void 0===value?delete ke[key]:ke[key]=A(value),_e("save "+key,void 0,function(e){return Pe(e,key)})}function Oe(key,value){var e=Object.assign({},ke.device_info&&"object"==typeof ke.device_info?ke.device_info:{});e[key]=value,x._device_info&&"object"==typeof x._device_info&&(x._device_info[key]=value),Te("device_info",e)}const Ie={all:()=>A(ke),item(key){const value=ke[key];return void 0===value?void 0:A(value)},add(key,value){Te(key,value)},save:(key,value)=>(void 0===value?delete ke[key]:ke[key]=A(value),_e("save "+key,void 0,function(e){return Pe(e,key)})),clear(){ke={},_e("clear settings",void 0,function(e){return e.clearSettings()})}};function Ce(e){return _e("reload settings",void 0,function(t){return t.loadSettings().then(function(t){e.forEach(function(key){void 0!==t[key]&&(ke[key]=t[key])})})})}function Re(){var t=ke.trackinfo,status=t&&"object"==typeof t?t.tracking_status:void 0;return status===e.USAGE_TRACKING_WITH_PII||status===e.USAGE_TRACKING_WITHOUT_PII||status===e.NO_TRACKING?status:void 0}const Ne={_tracking_status:"tracking_status",all:()=>Ie.all(),opt_in_status:()=>Re()||e.USAGE_TRACKING_WITHOUT_PII,update_status(t){x._devicestatus=t,x._isanonrequired=Ne.opt_in_status()!=e.USAGE_TRACKING_WITH_PII&&x._isanonrequired;var n=Object.assign({},ke.trackinfo&&"object"==typeof ke.trackinfo?ke.trackinfo:{});n.tracking_status=t,x._trackinfo&&"object"==typeof x._trackinfo&&(x._trackinfo.tracking_status=t),Te("trackinfo",n)}};function Me(key){var e=ke.device_info;return null!=e&&""!==e&&void 0!==e[key]&&null!==e[key]&&""!==e[key]?A(e[key]):null}const Le={updateDevice:()=>Promise.reject("apptics: device module not loaded"),refreshDeviceInfo:()=>{},feedbackUser:()=>null,sendHeatmaps:()=>Promise.resolve(),trackHeatmap:()=>{},resetHeatmap:()=>{},resetRemoteConfig:()=>{},screenTrackedByApp:()=>{},remoteConfigStarted:()=>{},remoteConfigUserChanged:()=>{}};function qe(){return!0===x._config.debug_api&&!De()}function De(){return x._debugUntil>0&&v()>x._debugUntil}function Fe(){!0===x._config.debug_api&&(x._debugUntil=v()+s)}var je=null;function Be(on){x._config.debug_api=on,x._debugUntil=on?v()+s:0,C.log("apptics: debug mode "+(on?"on":"off"))}function Ue(){var e=navigator.connection||navigator.mozConnection||navigator.webkitConnection||{};return e.effectiveType||e.type||""}function He(){return window.navigator.onLine?0:-1}function Ge(){try{var e=navigator.getBattery;return"function"!=typeof e?Promise.resolve(null):e.call(navigator).then(function(e){var t=e&&"number"==typeof e.level?e.level:-1;return t>=0&&t<=1?Math.round(100*t):null},function(){return null})}catch(e){return Promise.resolve(null)}}function Ve(){var e=window.screen&&window.screen.orientation&&window.screen.orientation.type||"";return S(e,"portrait-primary")?0:S(e,"landscape-primary")?1:S(e,"landscape-secondary")?2:S(e,"portrait-secondary")?3:-1}function Ke(){var e=navigator.userAgent;return/Windows/i.test(e)?/Phone/.test(e)||/WPDesktop/.test(e)?"Windows Phone":"Windows":/iPad/.test(e)?"iPad":/iPod/.test(e)?"iPod Touch":/iPhone/.test(e)?"iPhone":/(BlackBerry|PlayBook|BB10)/i.test(e)?"BlackBerry":/Android/.test(e)?"Android":/Mac/i.test(e)?"Mac":/Linux/.test(e)?"Linux":/CrOS/.test(e)?"Chrome":""}function We(){var e=navigator.userAgent,t=navigator.vendor||"";return window.opera||S(e," OPR/")?S(e,"Mini")?"Opera Mini":"Opera":/(BlackBerry|PlayBook|BB10)/i.test(e)?"BlackBerry":S(e,"IEMobile")||S(e,"WPDesktop")?"Internet Explorer Mobile":S(e,"SamsungBrowser/")?"Samsung Internet":S(e,"Edge")||S(e,"Edg/")?"Microsoft Edge":S(e,"FBIOS")?"Facebook Mobile":S(e,"Chrome")?"object"==typeof ulaa?"Ulaa":null!=window.navigator.brave&&"isBrave"==window.navigator.brave.isBrave.name?"Brave":"Chrome":S(e,"CriOS")?"Chrome iOS":S(e,"UCWEB")||S(e,"UCBrowser")?"UC Browser":S(e,"FxiOS")?"Firefox iOS":S(t,"Apple")?S(e,"Mobile")?"Mobile Safari":"Safari":S(e,"Android")?"Android Mobile":S(e,"Konqueror")?"Konqueror":S(e,"Firefox")?"Firefox":S(e,"MSIE")||S(e,"Trident/")?"Internet Explorer":S(e,"Gecko")?"Mozilla":""}function Ze(){var e=We(),t=navigator.userAgent;if("Ulaa"===e&&"object"==typeof ulaa)return ulaa.getVersion();var n={"Internet Explorer Mobile":/rv:(\d+(\.\d+)?)/,"Microsoft Edge":/Edg\/(\d+(\.\d+)?)/,Chrome:/Chrome\/(\d+(\.\d+)?)/,Brave:/Chrome\/(\d+(\.\d+)?)/,"Chrome iOS":/CriOS\/(\d+(\.\d+)?)/,"UC Browser":/(UCBrowser|UCWEB)\/(\d+(\.\d+)?)/,Safari:/Version\/(\d+(\.\d+)?)/,"Mobile Safari":/Version\/(\d+(\.\d+)?)/,Opera:/(Opera|OPR)\/(\d+(\.\d+)?)/,Firefox:/Firefox\/(\d+(\.\d+)?)/,"Firefox iOS":/FxiOS\/(\d+(\.\d+)?)/,Konqueror:/Konqueror:(\d+(\.\d+)?)/,BlackBerry:/BlackBerry (\d+(\.\d+)?)/,"Android Mobile":/android\s(\d+(\.\d+)?)/,"Internet Explorer":/(rv:|MSIE )(\d+(\.\d+)?)/,Mozilla:/rv:(\d+(\.\d+)?)/}[e];if(void 0===n)return"";var r=t.match(n);return r?parseFloat(r[r.length-2]):""}function Je(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function Ye(){return"undefined"==typeof navigator||function(e){var t;for(e=e.toLowerCase(),t=0;t<m.length;t++)if(-1!==e.indexOf(m[t]))return!0;return!1}(navigator.userAgent||"")}function Qe(name,e){var t="undefined"!=typeof navigator?navigator.locks:void 0;return t&&"function"==typeof t.request?t.request("apptics-"+name,function(){return e()}):e()}function $e(){return!x._ignoreDnt&&(e=window.navigator||{},t=[!0,1,"1","yes"],!![e.doNotTrack,e.msDoNotTrack,window.doNotTrack].some(function(e){return S(t,e)})&&(C.warn("hasDoNotTrackEnabled: DoNotTrack is enabled, so nothing is tracked"),!0));var e,t}function Xe(){if($e())return C.warn('opt_in_status: It seems "Do Not Track" is enabled in this browser. Please enable tracking in the browser settings to continue tracking.'),e.NO_TRACKING;var status=Ne.opt_in_status();return-1==status&&C.warn("opt_in_status: You are opted out of Apptics tracking. This will prevent the our SDK from sending no data to our server."),status}function et(){return Xe()>-1&&x._shouldTrack}function tt(e){return x._token?!Ye()&&et():(C.warn("apptics."+e+": You must call Apptics.init() first"),!1)}function nt(e){return!!tt(e)&&(!!x._engagementTracking||(C.log("apptics."+e+": engagement tracking is turned off by the server"),!1))}function rt(e){return!!tt(e)&&(!!x._heatmapTracking||(C.log("apptics."+e+": heatmap tracking is turned off by the server"),!1))}function setTrackingStatus(t){_(t)?C.warn("setTrackingStatus: trackingStatus is Empty"):Ne.opt_in_status()!=t&&(Ne.update_status(t),x._devicestatus=Ne.opt_in_status(),x._isanonrequired=Ne.opt_in_status()!=e.USAGE_TRACKING_WITH_PII&&x._isanonrequired,Ne.opt_in_status()!=e.NO_TRACKING&&(C.log("setTrackingStatus: Updating device info with new tracking status"),Le.updateDevice(x._device_info).then(function(e){k(e)?(C.log("setTrackingStatus: Device info updated with new tracking status"+JSON.stringify(e.data)),C.dir(e.data)):C.log("setTrackingStatus: Error updating device info with new tracking status: "+JSON.stringify(e))}).catch(function(e){C.warn("setTrackingStatus: Error updating device info with new tracking status: "+JSON.stringify(e))})))}function getTrackingStatus(){return Xe()}const it="sendstate";function at(){var e=Ie.item(it);return e&&"object"==typeof e?e:{}}function ot(e){var t=at()[e];return t&&"object"==typeof t?{attempt:Number(t.attempt)||1,firstattempttime:Number(t.firstattempttime)||0,lst:Number(t.lst)||0}:{attempt:1,firstattempttime:0,lst:0}}function st(e,t){var n=at();n[e]=t,Ie.add(it,n)}function ct(e){if(!p[e])return{};var t=ot(e),n=v();(t.attempt<=1||0===t.firstattempttime)&&(t.attempt=1,t.firstattempttime=n);var r={attempt:String(Math.min(t.attempt,5)),firstattempttime:t.firstattempttime};return t.lst>0&&(r.lst=t.lst),st(e,{attempt:t.attempt+1,firstattempttime:t.firstattempttime,lst:t.lst}),r}function dt(url,method,e,t){return new Promise((n,r)=>{let i=new XMLHttpRequest;i.open(method,url),t&&Object.keys(t).forEach(key=>{i.setRequestHeader(key,t[key])}),i.withCredentials=!1,i.timeout=3e4,i.onreadystatechange=function(){4===i.readyState&&(200==i.status?n(i.responseText):r(i.statusText))},i.onerror=function(){r("makeRequest: Network Error")},i.ontimeout=function(){r("makeRequest: timed out after 30000 ms")},i.send(e)})}function ut(key){return"zak"==key?x._defaultoptions.zak:"uuid"==key?x._uuid:"apid"==key?x._apid||Me(key):"mapid"==key?x._mapid||Me(key):""}function lt(e){var t="",n=x._device_info.appversionid,r=_(x._device_info.frameworkid)?x._frameworkID:x._device_info.frameworkid;return _(n)||(t+="&appversionid="+encodeURIComponent(String(n))),_(r)||(t+="&frameworkid="+encodeURIComponent(String(r))),""===t?t:void 0===e||""===e?"?"+t.slice(1):t}function pt(e,t){if(!l[e])return"";var n=P("device_name"),name=_(n)?qe()?function(){var e=x._device_info,t=_(e.browser)?"":String(e.browser),n=_(e.browserversion)?"":String(e.browserversion),r=_(e.osversion)?"":String(e.osversion),name=""===t?"":""===n?t:t+" "+n;return""===r?name:""===name?r:name+" on "+r}():"":String(n);return""===name?"":(""===t?"?":"&")+("devicename="+encodeURIComponent(name.slice(0,100)))}function ft(t,n){var url=x._defaultoptions.base_domain+P("endpoint")+i[t]+"/"+(f[t]?"":x._defaultoptions.zsoid+"/"+x._defaultoptions.projectID+"/")+((function(e){return qe()&&!0===l[e]}(t)?"debug/":"")+r[t])+function(t){let n="";if("addversion"==t){var r=_(x._device_info.frameworkid)?x._frameworkID:x._device_info.frameworkid;return"?version="+encodeURIComponent(x._defaultoptions.appversion)+"&platform="+encodeURIComponent(x._platform)+"&identifier="+encodeURIComponent(x._defaultoptions.identifier)+"&frameworkid="+encodeURIComponent(String(r))}if("regdevice"==t)return n="?isanonrequired="+x._isanonrequired+"&devicestatus="+x._devicestatus,_(x._device_info.deviceid)||(n+="&deviceid="+encodeURIComponent(String(x._device_info.deviceid))),n+lt(n);var i="sdkconfig"!=t;if(i){if(_(x._device_info.deviceid))return Le.refreshDeviceInfo(),n+lt(n);n="?deviceid="+encodeURIComponent(String(x._device_info.deviceid))}if("feedback"===t){var a=Le.feedbackUser();return a&&(n+="&userid="+encodeURIComponent(String(a.userid)),_(a.groupid)||(n+="&customergroupid="+encodeURIComponent(String(a.groupid)))),n+lt(n)}return"reguser"!=t&&"getupdates"!=t&&i&&Xe()==e.USAGE_TRACKING_WITH_PII&&(x._user_info.hasOwnProperty("userid")&&!_(x._user_info.userid)&&(n+="&userid="+encodeURIComponent(String(x._user_info.userid))),x._user_info.hasOwnProperty("groupid")&&!_(x._user_info.groupid)&&(n+="&customergroupid="+encodeURIComponent(String(x._user_info.groupid)))),n+=pt(t,n),n+lt(n)}(t);if(!n)return url;var a=-1===url.indexOf("?")?"?":"&";return Object.keys(n).forEach(function(key){void 0!==n[key]&&null!==n[key]&&""!==n[key]&&(url+=a+key+"="+encodeURIComponent(String(n[key])),a="&")}),url}function gt(){return{apid:ut("apid"),mapid:ut("mapid")}}const mt={PATTERN_NOT_MATCHED:!0,EXTRA_PARAM_FOUND:!0,INVALID_INPUTSTREAM:!0,INVALID_PARAM:!0};function ht(e){var t=e?e.serverResult:void 0,n=t?t.error_code:void 0;return!_(n)&&!0===mt[String(n)]}function vt(e,t,n){var r=JSON.parse(n);if(k(r))return function(e){p[e]&&st(e,{attempt:1,firstattempttime:0,lst:v()})}(e),function(e,t){var n=t.data;n&&!_(n.req_id)&&C.log(e+": req_id "+String(n.req_id)+(_(n.path)?"":", path "+String(n.path))+(_(n.producerLogsUrl)?"":", logs "+String(n.producerLogsUrl)))}(t,r),Promise.resolve(r);var i=function(e,t,n){var r=t&&!_(t.error_code)?String(t.error_code):String(t?t.result:n),i=new Error(e+": "+r);return t&&(i.serverResult=t),i}(t,r,n);return Promise.reject(i)}function kt(e,t,n,r,i){return dt(ft(e,Object.assign(ct(e),{})),P("method"),t,n).then(function(t){return vt(e,r,t)},function(e){return Promise.reject(r+": "+e)})}var _t=0;function bt(e,t,n,r,i){var a=function(e){if(null==e)return 0;if("string"==typeof e)return"function"==typeof TextEncoder?(new TextEncoder).encode(e).length:3*e.length;var t=e;return Number(t.size||t.byteLength||0)}(t);if("function"==typeof fetch&&_t+a>61440)return C.log(r+": "+a+" bytes is over the keepalive budget, kept for the next send"),Promise.reject(r+": too large to send while the page closes");var url=ft(e,Object.assign(ct(e),{}));if("function"==typeof fetch){var o;try{o=fetch(url,{method:P("method"),headers:Object.assign({"content-type":"text/plain"},n),body:t,keepalive:!0,credentials:"omit"})}catch(e){return Promise.reject(r+": keepalive send not accepted: "+String(e))}_t+=a;var s=function(){_t=Math.max(0,_t-a)};return o.then(function(t){if(s(),!t||!0!==t.ok){var status=t?String(t.status):"";return Promise.reject(r+": "+status)}return("function"==typeof t.text?t.text():Promise.resolve("")).then(function(t){return _(t)?vt(e,r,JSON.stringify({result:"success"})):vt(e,r,t)})},function(e){return s(),Promise.reject(r+": "+String(e))})}return dt(url,P("method"),t,n).then(function(t){return vt(e,r,t)},function(e){return Promise.reject(r+": "+e)})}function yt(e){return Ye()?Promise.reject(e+": apptics is disabled for this client"):null}function zt(e){return 0==navigator.onLine?(C.warn(e+": No Network"),Promise.reject(e+": No Network")):null}function At(){return{frameworkid:x._device_info.frameworkid||Me("frameworkid"),aaid:x._device_info.aaid||Me("aaid"),apid:x._device_info.apid||Me("apid"),appversionid:x._device_info.appversionid||Me("appversionid"),modelid:x._device_info.modelid||Me("modelid"),appreleaseversionid:x._device_info.appreleaseversionid||Me("appreleaseversionid"),osversionid:x._device_info.osversionid||Me("osversionid"),timezoneid:x._device_info.timezoneid||Me("timezoneid"),platformid:x._device_info.platformid||Me("platformid"),devicetypeid:x._device_info.devicetypeid||Me("devicetypeid")}}function wt(e){return _(ut("apid"))&&_(ut("mapid"))?(Le.refreshDeviceInfo(),Promise.reject(e+": You must call Apptics.init() first")):St()?null:(Le.refreshDeviceInfo(),Promise.reject(e+": the device is not registered yet, kept for the next send"))}function St(){return!_(x._device_info&&x._device_info.deviceid)||!_(Me("deviceid"))}const Et="registerAppVersion",xt="app_version_info",Pt=["apid","mapid","aaid","appversionid","appreleaseversionid","platformid","projectid","portalid"];var Tt=null;function Ot(){var e=Ie.item(xt);return e&&"object"==typeof e?e:{}}const It=["aaid","portalid","projectid","apid","mapid","appversionid"];function Ct(e){return It.filter(function(key){return _(e[key])})}function Rt(e){Pt.forEach(function(key){_(e[key])||(x._device_info[key]=e[key])}),_(e.aaid)||(x._defaultoptions.aaid=e.aaid),_(e.portalid)||(x._defaultoptions.zsoid=String(e.portalid)),_(e.projectid)||(x._defaultoptions.projectID=String(e.projectid)),_(e.apid)||(x._apid=String(e.apid)),_(e.mapid)||(x._mapid=String(e.mapid))}var Nt=!1;function Mt(){return Nt}function Lt(){if(Nt=!1,0===Ct(e=Ot()).length&&e.appversion===x._defaultoptions.appversion&&e.identifier===x._defaultoptions.identifier&&e.serviceUrl===x._defaultoptions.serviceUrl)return Rt(Ot()),C.log(Et+": reusing the ids stored for "+x._defaultoptions.appversion),Promise.resolve(!0);var e;if(null!==Tt)return Tt;var t=_(x._device_info.frameworkid)?x._frameworkID:x._device_info.frameworkid;return 0===t&&R(Et+": this build has no registered framework id; build the package with npm pack"),_(t)||_(x._defaultoptions.identifier)||_(x._defaultoptions.zak)?(R(Et+": need zak, an identifier and a frameworkid to register this app version"),Promise.resolve(!1)):Tt=kt("addversion","",{zak:ut("zak")},Et).then(function(e){if(!k(e)||!e.data)return R(Et+": the server did not return the app ids"),!1;var t=e.data,n=Ct(t);if(n.length>0)return R(Et+": the answer has no "+n.join(", ")),!1;Rt(t);var r={appversion:x._defaultoptions.appversion,identifier:x._defaultoptions.identifier,serviceUrl:x._defaultoptions.serviceUrl};return Pt.forEach(function(key){_(t[key])||(r[key]=t[key])}),Ie.add(xt,r),C.log(Et+": registered "+x._defaultoptions.appversion+" as apid "+t.apid),!0}).catch(function(e){return Nt=!(e&&e.serverResult)||!1===navigator.onLine,R(Et+": could not register this app version: "+String(e&&e.message?e.message:e)),!1}).then(function(e){return Tt=null,e})}const qt=["devicetype","osversion","timezone","screenheight","screenwidth","referrer","referringdomain","browser","browserversion","donottrackenabled","platformid"],Dt=["screenheight","screenwidth","donottrackenabled","platformid"];function Ft(e){var t={};return qt.forEach(function(key){var value=e[key],n=-1!==Dt.indexOf(key);t[key]=_(value)?n?0:"":value}),JSON.stringify(t)}const jt=["osversion","browser","browserversion","devicetype","screenheight","screenwidth","timezone","donottrackenabled","frameworkid"];function Bt(e){var t={};return jt.forEach(function(key){t[key]=e?e[key]:void 0}),t}function Ut(){var e,t,n=Ie.item("device_info");x._device_info={osversion:(t=navigator.userAgent,/Windows/i.test(t)?/Phone/.test(t)||/WPDesktop/.test(t)?"Windows Phone":"Windows":/(iPhone|iPad|iPod)/.test(t)?"iOS":/Android/.test(t)?"Android":/(BlackBerry|PlayBook|BB10)/i.test(t)?"BlackBerry":/Mac/i.test(t)?"Mac OS X":/Linux/.test(t)?"Linux":/CrOS/.test(t)?"Chrome OS":""),browser:We(),browserversion:String(Ze()),donottrackenabled:$e()?1:0,devicetype:Ke(),screenheight:screen.height,screenwidth:screen.width,referrer:(e=String(window.location.href||"").split(window.location.pathname),e.length>=2?e[1].length>500?e[1].substring(0,500):e[1]:""),connectionType:Ue(),referringdomain:window.location.hostname||"",deviceid:Me("deviceid"),anonymousid:Me("anonymousid"),frameworkid:x._frameworkID,mapid:Me("mapid"),aaid:Me("aaid"),apid:Me("apid"),appversionid:Me("appversionid"),platformid:Me("platformid"),devicetypeid:Me("devicetypeid"),osversionid:Me("osversionid"),timezoneid:Me("timezoneid"),modelid:Me("modelid"),appreleaseversionid:Me("appreleaseversionid"),timezone:Je(),uuid:x._uuid||Me("uuid"),hadsession:!0===Me("hadsession")||void 0},Rt(Ot()),Ie.add("device_info",x._device_info),function(e,t){var n=void 0!==t?t:Ie.item("device_info")||{};null==e.deviceid||null==e.frameworkid||null==e.anonymousid?(e.frameworkid=x._frameworkID,C.log("addOrUpdateDeviceID: Initiated register the device"),function(){var e="registerDeviceWithApptics",t=yt(e);if(t)return t;if(!x._token)return C.warn(e+": You must call Apptics.init() first"),Promise.reject(e+": You must call Apptics.init() first");var n=zt(e);if(n)return n;if(x._device_info.deviceid&&x._device_info.anonymousid)return Promise.resolve(x._device_info);return new Promise((t,n)=>{if(x._regDeviceSending)return x._regDeviceResolve.push(t),void x._regDeviceReject.push(n);x._regDeviceSending=!0,Ce(["device_info"]).then(function(){var e=Ie.item("device_info")||{};return _(e.deviceid)||_(e.anonymousid)?null:(_(e.uuid)||(x._uuid=e.uuid),C.log("registerDeviceWithApptics: another tab registered this browser, using its device "+e.deviceid),Gt(e).then(function(){return{result:"success",data:e}}))}).then(function(t){return t||kt("regdevice",Ft(x._device_info),{zak:ut("zak"),uuid:ut("uuid"),...gt()},e).then(function(e){return Gt(e.data||{}).then(function(){return e})})}).then(function(e){Zt(!0,e),t(e),Xt()}).catch(function(e){Zt(!1,e),n(e)})})}().then(function(e){k(e)?(C.log("addOrUpdateDeviceID: Success register the device "+JSON.stringify(e.data)),C.dir(e.data)):C.log("addOrUpdateDeviceID: Error registering the device: "+e)}).catch(function(e){C.log("addOrUpdateDeviceID: Error registering the device: "+e)})):_(n)||function(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let key in e)if(!t.hasOwnProperty(key))return!1;for(let key in e)if(!y(e[key],t[key]))return!1;return!0}(Bt(e),Bt(n))||(C.log("addOrUpdateDeviceID: Device info changed, so updating new changes"),C.dir(Bt(e)),Jt(e).catch(function(e){C.log("addOrUpdateDeviceID: Error updating the device: "+e)}))}(x._device_info,n)}const Ht=["deviceid","anonymousid","aaid","apid","mapid","appversionid","osversionid","timezoneid","platformid","devicetypeid","modelid"];function Gt(e){return Ht.forEach(function(key){_(e[key])||(x._device_info[key]=e[key])}),_(e.apid)||(x._apid=e.apid),_(e.mapid)||(x._mapid=e.mapid),Ie.save("device_info",x._device_info)}function Vt(){var e=Me("uuid");_(e)&&Oe("uuid",e=E()),x._uuid=e}function Kt(){var e=Ie.item("device_info")||{};return _(e.deviceid)||_(e.anonymousid)?new Promise(function(e){Qe("device",function(){return Ce(["device_info"]).then(function(){return Vt(),Ut(),e(),Wt()})}).catch(function(e){C.log("prepareDevice: "+e)}).then(function(){e()})}):(Vt(),Ut(),Promise.resolve())}function Wt(){return x._regDeviceSending?new Promise(function(e){x._regDeviceResolve.push(function(){e()}),x._regDeviceReject.push(function(){e()})}):Promise.resolve()}function Zt(e,value){var t=e?x._regDeviceResolve:x._regDeviceReject;x._regDeviceSending=!1,x._regDeviceResolve=[],x._regDeviceReject=[],t.forEach(function(e){e(value)})}function Jt(e){var t="updateDeviceWithApptics",n=yt(t)||zt(t);return n||kt("regdevice",Ft(e),{zak:ut("zak"),uuid:ut("uuid"),...gt()},t).then(function(e){return Gt(e.data||{}),e})}function Yt(){var e="getUpdatesFromServer",t=zt(e)||wt(e);return t||kt("sdkconfig","",gt(),e).then(function(e){var t=e.data||{};$t(t);var n=Re();return Ie.add("trackinfo",void 0===n?x._trackinfo:Object.assign({},x._trackinfo,{tracking_status:n})),C.log("getUpdatesFromServer: "+JSON.stringify(x._trackinfo)),t})}function Qt(status,id){var e=status[id];return!e||"object"!=typeof e||!1!==e.enabled}function $t(e){var status=e.tracking_status&&"object"==typeof e.tracking_status?e.tracking_status:{},t=Object.keys(status).length>0;if(e.hasOwnProperty("tracking_enabled"))x._shouldTrack=!1!==e.tracking_enabled;else{var n=!(e.hasOwnProperty("versionarchivestatus")&&!_(e.versionarchivestatus))||e.versionarchivestatus,r=!(e.hasOwnProperty("customergrouptracking")&&!_(e.customergrouptracking))||e.customergrouptracking;x._shouldTrack=n||!r}t?(x._engagementTracking=Qt(status,o.SESSION),x._errorTracking=Qt(status,o.CRASH),x._heatmapTracking=Qt(status,o.HEATMAP),x._remoteLoggerEnabled=Qt(status,o.REMOTE_LOGGER),x._feedbackEnabled=Qt(status,o.FEEDBACK),x._remoteConfigEnabled=Qt(status,o.REMOTE_CONFIG)):(x._engagementTracking=!1!==e.engagementtracking,x._errorTracking=!1!==e.errortracking,x._heatmapTracking=!1!==e.heatmaptracking,x._remoteLoggerEnabled=!1!==e.remoteloggerenabled,x._feedbackEnabled=!1!==e.feedbackenabled);var i=e.quartz&&"object"==typeof e.quartz?e.quartz:{},a=function(value){return"string"==typeof value?value.trim():""};x._quartz={enabled:i.hasOwnProperty("quartz_enabled")?!0===i.quartz_enabled:!0===e.quartzenabled,workspace:a(i.quartz_workspace),department:a(i.quartz_department),domain:a(i.quartz_domain),cdnUrl:a(i.quartz_cdn_url)},"number"==typeof e.next_check_after&&e.next_check_after>0&&(x._nextConfigCheck=e.next_check_after),x._trackinfo={engagementtracking:x._engagementTracking,errortracking:x._errorTracking,heatmaptracking:x._heatmapTracking,remoteloggerenabled:x._remoteLoggerEnabled,feedbackenabled:x._feedbackEnabled,quartz:{quartz_enabled:x._quartz.enabled,quartz_workspace:x._quartz.workspace,quartz_department:x._quartz.department,quartz_domain:x._quartz.domain,quartz_cdn_url:x._quartz.cdnUrl},shouldtrack:x._shouldTrack,next_check_after:x._nextConfigCheck}}function Xt(){_(ut("apid"))&&_(ut("mapid"))||Yt().catch(function(e){C.log(e)})}function en(id,e){return _(id)?Promise.resolve():(x._current_screen&&x._current_screen.id===id&&!x._current_screen.endtime&&(x._current_screen=Object.assign({},x._current_screen,{endtime:e})),Ae.all().then(function(t){var r=t.filter(function(e){return e.type==n.SCREEN&&e.id===id&&0===e.endtime})[0];if(r)return Ae.update(Object.assign({},r,{endtime:Math.max(e,r.starttime)}))}))}function tn(){var e=x._current_screen;return e&&e.id?en(e.id,v()):Promise.resolve()}function nn(e,t){return Ae.all().then(function(r){return r.filter(function(t){return t.type==n.SCREEN&&0===t.endtime&&t.sessionstarttime===e.starttime}).reduce(function(e,n){return e.then(function(){return Ae.update(Object.assign({},n,{endtime:Math.max(t,n.starttime)}))})},Promise.resolve())})}function rn(e){if(!nt("trackSession"))return Promise.resolve();if(e&&"object"!=typeof e)return N(a.SESSION,"apptics.trackSession: sessionData param must be an object"),Promise.resolve();var t=Ae.add(e);return C.log("apptics.trackSession("+JSON.stringify(e||{})+")"),C.dir(e),t}function an(){var e=hn();return Ae.all().then(function(t){if(e){var r=t.filter(function(t){return t.type==n.SESSION&&t.id===e&&0===t.endtime})[0];if(r)return r}return function(e,t){return t.filter(function(t){return t.type==e&&0===t.endtime}).sort(function(e,t){return t.starttime-e.starttime})[0]}(n.SESSION,t)})}Le.updateDevice=Jt,Le.refreshDeviceInfo=Ut;var sn="";function cn(){return""===sn&&(sn=E()),sn}function dn(e){return Array.isArray(e.tabs)?e.tabs.slice():[]}const un="apptics-tab-";function ln(){var e="undefined"!=typeof navigator?navigator.locks:void 0;return e&&"function"==typeof e.request&&"function"==typeof e.query?e:void 0}var pn=!1;function fn(){var e=ln();if(!e)return Promise.resolve();var t=cn();return e.query().then(function(e){var r={};(e.held||[]).concat(e.pending||[]).forEach(function(e){e.name&&0===e.name.indexOf(un)&&(r[e.name.slice(12)]=!0)});var i=v();return Ae.all().then(function(e){var a=e.filter(function(e){return e.type==n.SCREEN&&0===e.endtime&&"string"==typeof e.tab&&e.tab!==t&&!r[e.tab]&&i-e.starttime>5e3});return a.length&&C.log("closeScreensOfGoneTabs: ending "+a.length+" screen view(s) left open by a tab that is gone"),a.reduce(function(e,t){var n=Math.max(t.starttime,Number(t.lastseen)||t.starttime);return e.then(function(){return Ae.update(Object.assign({},t,{endtime:n}))})},Promise.resolve())})}).catch(function(e){C.log("closeScreensOfGoneTabs: "+e)})}function gn(e){return Qe("session",e)}const mn="apptics-session";function hn(){try{return sessionStorage.getItem(mn)||""}catch(e){return""}}const vn="hadsession";var kn=null,_n=null;function bn(){null!==_n&&(clearTimeout(_n),_n=null)}function yn(){if(!kn)return Promise.resolve();var e=kn;return kn=null,bn(),e.firstsession&&Oe(vn,!0),rn(e)}function zn(e){x._current_session={id:E(),type:n.SESSION,starttime:e,endtime:0,edge:Ue(),orientation:Ve(),firstsession:!0!==Me(vn),networkstatus:He(),lastactivetime:e,tabs:[cn()]};var t,r="number"==typeof(t=navigator.deviceMemory)&&t>0?t+" GB":"";_(r)||(x._current_session.ram=r),function(id){try{sessionStorage.setItem(mn,id)}catch(e){}}(x._current_session.id);var i=Number(P("min_session_duration"));return i>0?(kn=x._current_session,bn(),_n=setTimeout(function(){_n=null,yn()},i),Promise.resolve()):function(e){e.firstsession&&Oe(vn,!0);return rn(e)}(x._current_session)}function An(){var e=v();return kn&&(C.log("session: dropped, shorter than the minimum with nothing tracked in it"),kn=null,bn(),1)?Promise.resolve():gn(function(){return function(e){return an().then(function(t){if(t&&0===t.endtime){var n=dn(t).filter(function(e){return e!==cn()});if(n.length>0){var r=Object.assign({},t,{tabs:n,lastactivetime:e});return x._current_session=r,C.log("endCurrentSession: "+n.length+" other tab(s) still on this session, so it stays open"),Ae.update(r)}var i=Object.assign({},t,{endtime:e,lastactivetime:e,tabs:[]});return x._current_session=i,C.log("endCurrentSession: closing the session opened at "+i.starttime),Ae.update(i).then(function(){return nn(i,e)})}})}(e)})}function wn(){if(!x._token)return N(a.SESSION,"checkAndUpdateSession: You must call Apptics.init() first"),Promise.resolve();if(Ye())return Promise.resolve();var e=v();return gn(function(){return function(e){return function(){var e=v()-60*x.inactiveduration*1e3,t=hn();return Ae.all().then(function(r){var i=r.filter(function(r){return r.type==n.SESSION&&0===r.endtime&&r.id!==t&&r.lastactivetime<e});return i.length?(C.log("closeAbandonedSessions: closing "+i.length+" session(s) left open by a closed tab"),i.reduce(function(e,t){return e.then(function(){return Ae.update(Object.assign({},t,{endtime:t.lastactivetime}))}).then(function(){return nn(t,t.lastactivetime)})},Promise.resolve())):Promise.resolve()})}().then(fn).then(an).then(function(t){if(!t||0!==t.endtime)return zn(e);if(x._current_session=t,e-t.lastactivetime>1e3*x.inactiveduration*60){C.log("checkAndUpdateSession: User is inactive for the past "+x.inactiveduration+" minutes so starting a new session");var n=Object.assign({},t,{endtime:t.lastactivetime});return C.log("checkAndUpdateSession: ("+JSON.stringify(n)+")"),C.dir(n),Ae.update(n).then(function(){return nn(n,n.endtime)}).then(function(){return zn(e)})}return C.log("checkAndUpdateSession: User is back before "+x.inactiveduration+" minutes so updating the lastactivitytime - "+e),Sn()})}(e)})}function Sn(){var e=v();return kn?(kn.lastactivetime=e,x._current_session=kn,Promise.resolve()):an().then(function(t){if(t){C.log("updateLastActiveTimeOfSession: Updating the lastactivitytime - "+e);var n,r,i=Object.assign({},t,{lastactivetime:e,tabs:(n=t,r=dn(n),-1===r.indexOf(cn())&&r.push(cn()),r)});return x._current_session=i,Ae.update(i)}}).then(function(){return function(e){var t=x._current_screen;return t&&t.id&&!t.endtime?Ae.all().then(function(r){var i=r.filter(function(e){return e.type==n.SCREEN&&e.id===t.id&&0===e.endtime})[0];return i?Ae.update(Object.assign({},i,{lastseen:e})):void 0}):Promise.resolve()}(e)})}const En=/^ap_/i;function xn(e){if(!e||""===e)return C.warn("validateEventOrGroup: Invalid event or group name"),!1;return En.test(e)?(C.warn('validateEventOrGroup: "'+e+'" starts with ap_, which is reserved for defined events'),!1):/^[a-zA-Z][a-zA-Z0-9_]{0,99}$/.test(e)}const Pn=/^[a-zA-Z][a-zA-Z0-9_]{0,49}$/;function Tn(e){if(_(e)||b(e))return{};var t=e,n={},r={},i=[],a=[],o=[];function s(e){-1===i.indexOf(e)&&i.push(e)}return Object.keys(t).forEach(function(key){if(!Pn.test(key)||En.test(key))return C.warn("validateJSON: dropped the property '"+key+"': a key is a letter, then up to 49 letters, digits or _, and not ap_"),a.push(key.substring(0,50)),void s(103);var e=function(value){if("number"==typeof value&&isFinite(value))return{value:value,type:"Number"};if("boolean"==typeof value)return{value:value?1:0,type:"Boolean"};if("string"==typeof value)return{value:value,type:"String"};var e;try{e=void 0===value?"undefined":JSON.stringify(value)}catch(t){e=String(value)}return{value:void 0===e?String(value):e,type:"String"}}(t[key]);if(String(e.value).length>250)return C.warn("validateJSON: dropped the property '"+key+"': its value is longer than 250 characters"),o.push(key),void s(104);if(Object.keys(n).length>=24)return C.warn("validateJSON: dropped the property '"+key+"': at most 24 properties"),void s(102);var i=Object.assign({},n);if(i[key]=e.value,JSON.stringify(i).length>7666)return C.warn("validateJSON: dropped the property '"+key+"': properties are at most 7666 characters in all"),void s(101);n[key]=e.value,r[key]=e.type}),Object.keys(n).length>0?{data:n,datatype:r,isvalid:!0}:0===i.length?{}:{isvalid:!1,message:{code:i,keys:a,valuekeys:o}}}function On(e){const t={},n={},message=[],r={101:[],102:[],103:[],104:[]},i=/^[a-zA-Z][a-zA-Z0-9_]{0,49}$/,a=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;let o=0;const s=["first_name","last_name","company_name","contact_number","country","region","city","geo_location","gender","plan_type","timezone","language"],c=["engagement_score","date_of_birth"];for(const[key,value]of Object.entries(e))if(o++,"string"!=typeof key||key.length>50||!i.test(key))r[103].push(key);else if(s.includes(key)){if("string"!=typeof value||value.length>255){r[103].push(key);continue}t[key]=value,n[key]="String"}else if("email_address"!==key)if(c.includes(key)){if("number"!=typeof value||!Number.isFinite(value)){r[103].push(key);continue}t[key]=value,n[key]="Number"}else if("boolean"==typeof value)t[key]=value,n[key]="Boolean";else if("string"==typeof value){if(value.length>255){r[103].push(key);continue}t[key]=value,n[key]="String"}else{if("number"!=typeof value){r[104].push(key);continue}if(!Number.isFinite(value)){r[104].push(key);continue}t[key]=value,n[key]="Number"}else{if("string"!=typeof value||value.length>255||!a.test(value)){r[103].push(key);continue}t[key]=value,n[key]="String"}o>45&&(r[102]=Object.keys(e));JSON.stringify(t).length+JSON.stringify(n).length>1e4&&(r[101]=Object.keys(e));for(const e of[101,102,103,104])r[e].length>0&&message.push({code:e,keys:r[e]});return{data:t,datatype:n,message:message}}function In(e){if(!e||""===e)return C.warn("validateScreenName: Invalid screenName"),!1;return/^[\w\s.\-_&/:*]{0,99}$/.test(e)}function Cn(e){try{var url=new URL(String(e).trim());if("http:"!==url.protocol&&"https:"!==url.protocol)return"";var t=url.pathname.length>1?url.pathname.replace(/\/+$/,""):url.pathname;return url.protocol+"//"+url.host.toLowerCase()+t}catch(e){return""}}function Rn(method,e){var t=[];return e.forEach(function(value){var url="string"==typeof value?Cn(value):"";""!==url?-1===t.indexOf(url)&&t.push(url):R("ApiTrackingBuilder."+method+": "+JSON.stringify(value)+" is not a full http(s) URL, as https://api.example.com/health, and is left out")}),t}function Nn(method,e){var t=[];return e.forEach(function(value){if(value instanceof RegExp)t.push(value);else{if("string"==typeof value&&""!==value)try{return void t.push(new RegExp(value))}catch(e){}R("ApiTrackingBuilder."+method+": "+String(value)+" is not a regular expression, and is left out")}}),t}class Mn{constructor(){this.rules={allowEquals:[],ignoreEquals:[],allowRegex:[],ignoreRegex:[]}}allowEquals(...e){return this.rules.allowEquals.push(...Rn("allowEquals",e)),this}ignoreEquals(...e){return this.rules.ignoreEquals.push(...Rn("ignoreEquals",e)),this}allowRegex(...e){return this.rules.allowRegex.push(...Nn("allowRegex",e)),this}ignoreRegex(...e){return this.rules.ignoreRegex.push(...Nn("ignoreRegex",e)),this}build(){return{allowEquals:this.rules.allowEquals.slice(),ignoreEquals:this.rules.ignoreEquals.slice(),allowRegex:this.rules.allowRegex.slice(),ignoreRegex:this.rules.ignoreRegex.slice()}}}const Ln=Object.freeze({ignoreDomains:"ignoreRegex",allowOnlyDomains:"allowRegex",allowOnlyTLDs:"allowRegex",ignoreTLDs:"ignoreRegex",ignoreDomainPrefixes:"ignoreRegex",ignoreDomainSuffixes:"ignoreRegex",groupDomains:"",ignoreEndpoint:"ignoreEquals or ignoreRegex",addPattern:"",preserveSegments:"",autoDetection:""});Object.keys(Ln).forEach(function(name){Object.defineProperty(Mn.prototype,name,{configurable:!0,value:function(){var e=Ln[name];throw new TypeError("ApiTrackingBuilder."+name+"() is no longer supported: "+(e?"use "+e+", which match the URL without its query":"ids, UUIDs and tokens in a path become * on their own"))}})});var qn={allowEquals:[],ignoreEquals:[],allowRegex:[],ignoreRegex:[]};function Dn(value,e){return Array.isArray(value)?value.filter(e):[]}function Fn(e,url){return e.lastIndex=0,e.test(url)}function jn(url){var e=Cn(url);return""!==e&&(-1===qn.ignoreEquals.indexOf(e)&&!qn.ignoreRegex.some(function(t){return Fn(t,e)})&&(0===qn.allowEquals.length&&0===qn.allowRegex.length||(-1!==qn.allowEquals.indexOf(e)||qn.allowRegex.some(function(t){return Fn(t,e)}))))}const Bn=/^\d+$/,Un=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Hn=/^eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/;function Gn(e){return function(e){var t=String(e||"").split(/[?#]/)[0];return""===t?"/":t}(e).split("/").map(function(e){return""!==e&&(Bn.test(e)||Un.test(e)||Hn.test(e))?"*":e}).join("/")}const Vn={AP_APP_LIFE_CYCLE:["AP_APP_INSTALL","AP_APP_UNINSTALL","AP_APP_UPDATE","AP_APP_CRACKED","AP_APP_OPEN","AP_APP_CLEAR_DATA","AP_APP_FOREGROUND","AP_APP_BACKGROUND","AP_APP_OUT_OF_MEMORY","AP_APP_FIRST_OPEN","AP_APP_LAUNCHING","AP_APP_RESIGN_ACTIVE","AP_APP_WILL_CONNECT"],AP_USER_LIFE_CYCLE:["AP_USER_SIGNUP","AP_USER_LOGIN","AP_USER_LOGOUT"],AP_APPLICATION:["AP_DEEP_LINK_OPEN","AP_DEEP_LINK_UPDATE","AP_DEEP_LINK_FIRST_OPEN","AP_IN_APP_PURCHASE","AP_NOTIFICATION_RECEIVE","AP_NOTIFICATION_OPEN","AP_NOTIFICATION_DISMISS","AP_NOTIFICATION_FOREGROUND","AP_SEARCH","AP_BATTERY_LOW","AP_BATTERY_FULL","AP_LOW_POWER_MODE_ON","AP_LOW_POWER_MODE_OFF"],AP_OTHERS:["AP_NETWORK_REACHABILITY_CHANGE","AP_NETWORK_BANDWIDTH_CHANGE","AP_SWITCH_THEME_LIGHT","AP_SWITCH_THEME_DARK","AP_SWITCH_THEME_CUSTOM","AP_SWITCH_ORIENTATION_LANDSCAPE","AP_SWITCH_ORIENTATION_PORTRAIT"],AP_OS:["AP_OS_UPDATE","AP_OS_UNSUPPORTED"]};const Kn=(Wn={},Object.keys(Vn).forEach(function(e){Vn[e].forEach(function(t){Wn[t]=Object.freeze({event:t,group:e})})}),Object.freeze(Wn));var Wn;function Zn(e){var t=String(e||"").split(/[?#]/)[0]||"/";return t.length>1?t.replace(/\/+$/,""):t}const Jn=/[^\w\s.\-&/:*]/g;var Yn=!1,Qn="",$n=null,Xn=300,er="",tr=null,nr=!1,rr=0,ir=null,ar=null,or=null,sr=null;function cr(e){return"*"===e||/^\{[^/]*\}$/.test(e)||/^:[^/]+$/.test(e)}function dr(e,t){var n=Zn(e).split("/"),r=t.split("/");if(n.length!==r.length)return!1;for(var i=0;i<n.length;i++){var a=n[i];if(!cr(a)&&a!==r[i])return!1}return!0}function ur(){try{return function(e){var name=e;try{name=decodeURIComponent(e)}catch(e){}return name.replace(Jn,"_").trim().slice(0,99)}(function(e){var t=x._config.screen_routes;if(!t||0===t.length)return e;for(var n=Zn(e),r=0;r<t.length;r++){var i=t[r];if("equals"===i.kind&&i.path===n)return i.name;if("regex"===i.kind&&(i.regex.lastIndex=0,i.regex.test(n)))return i.name;if("pattern"===i.kind&&dr(i.pattern,n))return Zn(i.pattern).split("/").map(e=>cr(e)?"*":e).join("/")}return e}(function(url){var e=url.pathname,t=url.hash;if(/^#!?\//.test(t)){var n=t.replace(/^#!?/,"").split("?")[0];e=e.replace(/\/+$/,"")+n}return e}(new URL(window.location.href))))}catch(e){return""}}function lr(){if($n=null,Yn){var name=ur();""!==name&&name!==Qn&&(Qn=name,nr||(x._current_screen=Object.assign({},x._current_screen,{screen:name}),er=name,rr=v(),tr=setTimeout(pr,Xn)))}}function pr(){tr=null;var name=er;if(er="",Yn&&!nr&&""!==name)try{_r(name,void 0,void 0,rr||void 0)}catch(e){C.log("automatic screen tracking: "+String(e))}}function fr(){null!==tr&&(clearTimeout(tr),tr=null),er=""}function gr(){var name=ur();""!==name&&(name===er||""===er&&name===Qn)||null===$n&&(nr=!1,fr(),$n=setTimeout(lr,0))}function mr(enabled,e){var on="boolean"!=typeof enabled||enabled;if(on&&(Xn=300),on!==Yn){if(on)return Qn="",t=history.pushState,n=history.replaceState,or=t,sr=n,ir=function(){var e=t.apply(this,arguments);return gr(),e},ar=function(){var e=n.apply(this,arguments);return gr(),e},history.pushState=ir,history.replaceState=ar,window.addEventListener("popstate",gr),window.addEventListener("hashchange",gr),Yn=!0,C.log("automatic screen tracking: on"),void(null===$n&&($n=setTimeout(lr,0)));var t,n;ir&&history.pushState===ir&&or&&(history.pushState=or),ar&&history.replaceState===ar&&sr&&(history.replaceState=sr),ir=ar=or=sr=null,window.removeEventListener("popstate",gr),window.removeEventListener("hashchange",gr),null!==$n&&(clearTimeout($n),$n=null),fr(),Yn=!1,Qn="",nr=!1,C.log("automatic screen tracking: off")}}Le.screenTrackedByApp=function(){nr=!0,fr()};var hr={};function vr(e,message){N(0,message),hr[message]||(hr[message]=!0,R(message))}function kr(eventName,groupName,e){if(nt("trackEvent")){var t=function(value){if(value&&"object"==typeof value){var e=value.event;return"string"==typeof e&&Kn[e]===value?value:void 0}}(eventName);if(t)e=groupName&&"object"==typeof groupName?groupName:e,groupName=t.group,eventName=t.event;else{if("string"!=typeof eventName||!xn(eventName))return void vr(a.EVENT,"AppticsEvent.addEvent: Invalid eventName: "+String(eventName));if(null==groupName||""===groupName)groupName=c.default_group_name;else if("string"!=typeof groupName||!xn(groupName))return void vr(a.EVENT,'AppticsEvent.addEvent: Invalid groupName for "'+eventName+'": '+String(groupName))}var r=Tn(e=e||{}),i=v(),o={id:E(),type:n.EVENT,group:groupName,event:eventName,starttime:i,endtime:i,edge:x._device_info.connectionType||Ue(),networkstatus:He(),screen:x._current_screen.screen||"",sessionstarttime:x._current_session.starttime||i,customproperties:r};yn(),Fe(),Ae.add(o),C.log("AppticsEvent.addEvent('"+eventName+"','"+groupName+"',"+JSON.stringify(r||{})+")"),C.dir(o)}}function _r(screenName,e,id,t,r){if(nt("inScreen"))if(In(screenName)){var i=Tn(e=e||{}),o="number"==typeof t?t:v(),s={id:id||E(),type:n.SCREEN,screen:screenName,starttime:o,endtime:0,edge:x._device_info.connectionType||Ue(),networkstatus:He(),orientation:Ve(),sessionstarttime:x._current_session.starttime||o,customproperties:i,tab:cn()},c=x._current_screen&&x._current_screen.id;c&&c!==s.id&&en(c,o),yn(),Fe(),Ae.add(s),x._current_screen=r?Object.assign({},s,{implicit:!0}):s,C.log("AppticsScreen.inScreen('"+screenName+"',"+JSON.stringify(i||{})+")"),C.dir(s)}else vr(a.SCREEN,"AppticsScreen.inScreen: Invalid screenName: "+String(screenName))}function br(){var e=x._current_screen;if(e&&!_(e.screen)&&!e.implicit)return String(e.screen);var name=ur()||"/";return e&&e.id&&e.screen===name&&!e.endtime||_r(name,void 0,void 0,void 0,!0),name}function yr(){var e=x._current_screen;e&&e.id&&e.endtime&&!_(e.screen)&&_r(String(e.screen))}const zr=/^([a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,Ar=/[^a-zA-Z0-9\-._*\/]+/g;function wr(e){if(nt("trackApi")){var t,r=(e=e||{}).url||e.path||"",method=(e.method||"GET").toString(),i="number"==typeof e.responsecode?e.responsecode:"number"==typeof e.status?e.status:0,o=e.responsemessage||e.statusText||e.error||"-",s=v(),c="number"==typeof e.starttime?e.starttime:s;t="number"==typeof e.endtime?e.endtime:"number"==typeof e.duration?c+e.duration:s;var d=e.scheme||"",u=e.hostname||"",l="number"==typeof e.port?e.port:0,p=e.path||"",f=_(e.url)&&!_(e.hostname);if(!_(r))try{var g=new URL(r,window.location.origin);_(d)&&!f&&(d=g.protocol.replace(":","")),_(u)&&(u=g.hostname),l||f||(l=g.port?parseInt(g.port,10):"https:"===g.protocol?443:80),_(p)&&(p=g.pathname)}catch(e){_(p)&&(p=r)}if(d="https"===d||"http"===d?d:"https",l||(l="https"===d?443:80),zr.test(u))if(jn(d+"://"+u+(l&&!("https"===d&&443===l||"http"===d&&80===l)?":"+l:"")+("/"===String(p).charAt(0)?"":"/")+p)){p=function(e){if(_(e))return"/";var t=e.replace(Ar,"*");return"/"===t.charAt(0)?t:"/"+t}(Gn(p));var m=x._current_session.starttime||c,h={id:E(),type:n.API,scheme:d,port:l,hostname:u,path:p,method:method,responsecode:i,responsemessage:o,starttime:c,endtime:t,sessionstarttime:m,networkstatus:He(),edge:x._device_info.connectionType||Ue()};yn(),Fe(),Ae.add(h),C.log("AppticsApi('"+method+" "+d+"://"+u+p+"')"),C.dir(h)}else C.log("AppticsApi: "+u+function(e){return String(e||"").split(/[?#]/)[0]}(p)+" is left out by configureApiTracking");else N(a.API,"AppticsApi: hostname not accepted by the server: "+String(u))}}var Sr={},Er=[];var xr=!1,Pr=null,Tr=null,Or=null;function Ir(e){if(_(e))return!1;var t;try{t=new URL(e,window.location.href)}catch(e){return!1}return("https:"===t.protocol||"http:"===t.protocol)&&(!function(url,e){for(var t=[x._defaultoptions.base_domain,x._defaultoptions.serviceUrl],n=0;n<t.length;n++)if(!_(t[n])&&0===url.indexOf(t[n]))return!0;var r=P("endpoint");return!_(r)&&0===e.indexOf(r)}(t.href,t.pathname)&&jn(t.href))}function Cr(method,url,e,t,n){try{wr({url:url,method:method,responsecode:t,responsemessage:n,starttime:e,endtime:v()})}catch(e){C.log("auto api tracking: "+String(e))}}function Rr(){"function"==typeof fetch&&(Or=fetch,window.fetch=function(e,t){var url,method,n;try{url=function(e){return"string"==typeof e?e:"undefined"!=typeof Request&&e instanceof Request?e.url:String(e)}(e),method=function(e,t){return t&&t.method?t.method:"undefined"!=typeof Request&&e instanceof Request?e.method:"GET"}(e,t),n=v()}catch(n){return Or(e,t)}return Ir(url)?Or(e,t).then(function(e){return Cr(method,url,n,e.status,e.statusText||"-"),e},function(e){throw Cr(method,url,n,0,String(e&&e.message?e.message:e)||"Network Error"),e}):Or(e,t)})}function enableApiTracking(enabled){var on="boolean"!=typeof enabled||enabled;if(on!==xr){if(on)return"function"==typeof XMLHttpRequest&&(Pr=XMLHttpRequest.prototype.open,Tr=XMLHttpRequest.prototype.send,XMLHttpRequest.prototype.open=function(method,url){try{var e=String(url);Ir(e)?this._ap_api={method:String(method||"GET"),url:e,starttime:0}:this._ap_api=void 0}catch(e){this._ap_api=void 0}return Pr.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){const e=this._ap_api;return e&&(e.starttime=v(),this.addEventListener("loadend",function(){var message=0===this.status?"Network Error":this.statusText||"-";Cr(e.method,e.url,e.starttime,this.status,message)})),Tr.apply(this,arguments)}),Rr(),xr=!0,void C.log("automatic api tracking: on");Pr&&(XMLHttpRequest.prototype.open=Pr),Tr&&(XMLHttpRequest.prototype.send=Tr),Or&&(window.fetch=Or),Pr=Tr=Or=null,xr=!1,C.log("automatic api tracking: off")}}function trackError(e,t){var r;if(tt(r="trackError")&&(x._errorTracking||(C.log("apptics."+r+": error tracking is turned off by the server"),0)))if(_(e))C.warn("AppticsError.trackError: Invalid error");else{var i=Tn(t),a=function(e){var t=e.reason?.stack||e.error?.stack||e.stack||"";if(!_(t))return t;var n=e.filename||e.fileName||"";if(_(n))return"";var r=void 0!==e.lineno?e.lineno:e.lineNumber,i=void 0!==e.colno?e.colno:e.columnNumber;return"at "+n+(_(r)?"":":"+r)+(_(i)?"":":"+i)}(e),o=function(e){let t="";if(_(e))return t;const n=e.split("\n");if(n.length<2)return t;const r=/at (\S+) \(/,i=/^(\w+)@/;for(let e of n){const n=e.match(r),a=e.match(i);if(n&&n[1]){const r=/\((.*)\)/.exec(e),url=r?r[1]:"Unknown URL";t=n[1],url.split("/").pop();break}if(a&&a[1]){t=a[1],e.split("@")[1].split("/").pop();break}}return t}(a)||"",s=e.type||"",c=function(e){if(null==e)return"";if("object"!=typeof e)return String(e);if(e instanceof Error||"string"==typeof e.message&&"string"==typeof e.name)return String(e);if("undefined"!=typeof Event&&e instanceof Event)return'Event "'+e.type+'"'+function(e){var t=e;if(!t||"string"!=typeof t.tagName)return"";var n=t.tagName.toLowerCase(),url=t.currentSrc||t.src||t.href||"";return" on <"+n+(url?(t.href&&!t.src?' href="':' src="')+url+'"':"")+">"}(e.target);var t=String(e);if("[object Object]"!==t)return t;try{return JSON.stringify(e).slice(0,300)}catch(e){return t}}(e.reason||e.error||e.message||""),message=(_(String(c))?_(s)?"Unknown error":String(s):String(c))+(_(o)?"":" at "+o),d=v(),u={id:E(),type:n.ERROR,edge:x._device_info.connectionType||Ue(),networkstatus:He(),happenedat:d,issuename:message,message:_(a)?_(String(c))?"no stack available":String(c):a,screenname:x._current_screen.screen||window.location.pathname,sessionstarttime:x._current_session.starttime||d,customproperties:i};yn(),Fe(),we.add(u),C.log("AppticsError.trackError('"+s+"','"+message+"',"+JSON.stringify(i||{})+")"),C.dir(u)}}function Nr(e){x._deferSendTimer&&clearTimeout(x._deferSendTimer),x._deferSendTimer=setTimeout(e,500)}function Mr(){x._deferSendTimer&&(clearTimeout(x._deferSendTimer),x._deferSendTimer=null)}function Lr(name,e){var t="undefined"!=typeof navigator?navigator.locks:void 0;return t&&"function"==typeof t.request?t.request("apptics-send-"+name,{ifAvailable:!0},function(t){return t?e():void 0}).then(function(){}):e()}function qr(e,t,n){return e.payload().then(function(r){var i=[],a=[];return r.forEach(function(e){t(e)&&(T(n(e))?a:i).push(e)}),a.length?e.remove(a).then(function(){return i}):i})}function Dr(e,t,n,r){var i=yt(t);if(i)return i;if(!et())return Promise.reject(t+": tracking is off");if(b(n))return Promise.reject(t+": nothing to send");var a=wt(t);if(a)return a;if(n.hasOwnProperty("meta")||(n.meta=At()),function(e){return ot(e).attempt>5}(e))return R("apptics: dropping a "+t+" batch after 5 attempts"),function(e){p[e]&&st(e,{attempt:1,firstattempttime:0,lst:ot(e).lst})}(e),Promise.resolve({result:"success"});C.log(t+": Payload size : "+w(n)/1024);var o=JSON.stringify(n);return r?bt(e,o,gt(),t):kt(e,o,gt(),t)}function Fr(e,t,n){if(!t)return e.then(function(){});e.catch(function(e){C.log(n+": not confirmed before the page closed, kept for the next send: "+String(e))})}function jr(e){return!Ye()&&et()&&x._engagementTracking?0==navigator.onLine?(C.warn("sendEngagementData: No Network"),Promise.resolve()):x._sending?(Nr(jr),Promise.resolve()):(x._sending=!0,Mr(),Lr("engagements",function(){return qr(Ae,function(e){return 0!=e.endtime},function(e){return e.starttime}).then(function(t){if(0==t.length)return;let r=[],i=[],a=[],o=[];var s={},c=[];return A(t).forEach(function(e){const t={...e};if(e.type==n.EVENT)a.push(e);else if(e.type==n.SCREEN)i.push(e);else if(e.type==n.SESSION)r.push(e);else{if(e.type!=n.API)return;o.push(e)}c.push(t),delete e.id,delete e.type,delete e.tabs,delete e.tab,delete e.lastseen}),a.length>0&&(s.events=a),i.length>0&&(s.screens=i),r.length>0&&(s.sessions=r),o.length>0&&(s.apis=o),b(s)?void 0:Fr(function(e,t){return Dr("engagement","requestToSendEngagements",e,t)}(s,e).then(function(){return Ae.remove(c)},function(e){return ht(e)?(R("apptics: the server refused these engagement items, so they were dropped: "+String(e&&e.message)),Ae.remove(c)):Promise.reject(e)}),e,"sendEngagementData")})}).catch(function(e){N(a.API,"sendEngagementData: "+e)}).then(function(){x._sending=!1})):Promise.resolve()}function Br(e){return!Ye()&&et()&&x._errorTracking?0==navigator.onLine?(C.warn("sendErrorData: No Network"),Promise.resolve()):x._sending?(Nr(Br),Promise.resolve()):(x._sending=!0,Mr(),Lr("errors",function(){return qr(we,function(e){return 0!=e.happenedat},function(e){return e.happenedat}).then(function(t){if(0==t.length)return;let n=[];var r=[];return A(t).forEach(function(e){r.push({...e}),e.hasOwnProperty("screenname")||(e.screenname=""),delete e.id,delete e.type,n.push(e)}),Fr(function(e,t){return Dr("error","requestToSendErrors",e,t)}({exceptiondetails:n},e).then(function(){return we.remove(r)},function(e){return ht(e)?(R("apptics: the server refused these errors, so they were dropped: "+String(e&&e.message)),we.remove(r)):Promise.reject(e)}),e,"sendErrorData")})}).catch(function(e){C.log("sendErrorData:"+e)}).then(function(){x._sending=!1})):Promise.resolve()}function flush(e){return tt("flush")?(x._sending=!1,jr(e).then(function(){return Br(e)}).then(function(){return Le.sendHeatmaps(e)})):Promise.resolve()}var Ur=null,Hr=null;function Gr(){null===Ur&&(Ur=setInterval(function(){De()&&(C.log("apptics: debug mode has been idle for an hour, switching it off"),Be(!1)),C.log("scheduleToSendDataToServer: Scheduling to send engagement data to the server after sometime"),jr().then(function(){return Br()}).then(function(){return Le.sendHeatmaps()})},P("batch_flush_interval"))),null===Hr&&(Hr=setInterval(function(){x._nextConfigCheck>0&&v()<x._nextConfigCheck||(C.log("scheduleToGetUpdatesFromServer: asking the server for its config"),Yt().catch(function(e){C.log(e)}))},P("getupdates_interval")))}function Vr(){return!(!x._token||Ye())&&(!!x._remoteLoggerEnabled&&et())}const Kr="remoteLog";let Wr=!1,Zr=!1;function Jr(e){var t={sessionstarttime:x._current_session.starttime||e.happenedat||v(),logtime:e.happenedat||v(),level:Number(e.level)||3,logmessage:String(e.exceptionlog).slice(0,1e4),function:String(e.module||"SDK").slice(0,100),linenumber:Number(e.linenumber)||0};return _(e.filename)||(t.filename=String(e.filename).slice(0,100)),t}function Yr(e){return JSON.stringify({logs:e.map(Jr),meta:At()})}function Qr(){return Zr||!Vr()||!1===navigator.onLine?Promise.resolve():(Zr=!0,xe.all().then(function(e){var t=function(e){for(var t=0,n=e.length,r=e.length-1;r>=0&&!((t+=JSON.stringify(e[r]).length)>1048576);r--)n=r;return 0===n?e:(xe.remove(e.slice(0,n)),e.slice(n))}(e).slice(0,50);if(0!==t.length)return kt("consolelog",Yr(t),gt(),Kr).then(function(){return xe.remove(t)},function(e){if(ht(e))return R("apptics: the server refused these log lines, so they were dropped: "+String(e&&e.message)),xe.remove(t);C.log(Kr+": "+String(e))})}).then(function(){Zr=!1}).catch(function(){Zr=!1}))}function $r(){var e=Ie.item("user_info");if(!e||"object"!=typeof e||_(e.userid)){var t=Ie.item("users")||[],n={};t.length>0&&(n=t.filter(e=>1===e.status)[0]||{}),x._user_info=n}else x._user_info=e}let Xr=!1,ei=null,ti=0;function ni(config){var e=Object.assign({},config);return Object.keys(u).forEach(function(key){var t=u[key];_(config[key])?(delete e[t],Object.keys(g).forEach(function(n){g[n]!==key||_(config[n])||(R("Apptics.init: "+n+" is now "+key+"; rename it in your config"),_(e[t])&&(e[t]=config[n]))})):e[t]=config[key]}),_(e.serviceUrl)||(e.serviceUrl=String(e.serviceUrl).replace(/\/+$/,"")),e.appversion=function(value){if("number"==typeof value)return isFinite(value)?String(value):"";return"string"==typeof value?value.trim():""}(e.appversion),e}const ri=["YOUR_APP_VERSION","YOUR_BUILD_OR_APP_VERSION","YOUR_APPVERSION"];function ii(e){return e.serviceUrl+"|"+e.identifier}var ai="";const oi=Object.freeze([{key:"batch_flush_interval",min:1e3,max:36e5},{key:"getupdates_interval",min:1e4,max:864e5},{key:"batch_size",min:1,max:500},{key:"batch_request_timeout",min:1,max:30},{key:"min_session_duration",min:0,max:6e4},{key:"heatmap_max_per_session",min:0,max:1e4}]);function si(){Ie.add(it,void 0),Ie.clear(),Ae.clear(),we.clear()}function init(config){if(!config||"object"!=typeof config)return R("Apptics.init: a config object is required, e.g. Apptics.init({ base_url, auth_key, app_domain, appversion })"),!1;if(x._initialised)return C.warn("Apptics.init: already initialised; call Apptics.reset() to start again"),!1;if(!function(){if("undefined"==typeof window||"undefined"==typeof document||"undefined"==typeof Promise)return!1;try{return"undefined"!=typeof indexedDB||!!window.localStorage}catch(e){return!1}}())return R("Apptics.init: skipped, no browser with storage and Promise support"),!1;var e,t,n=ni(config),r=d.filter(function(key){return _(n[u[key]||key])});if(r.length>0)return R("Apptics.init: missing required config: "+r.join(", ")),!1;if(e=n.appversion,-1!==ri.indexOf(e.toUpperCase()))return R('Apptics.init: appversion is still the placeholder "'+n.appversion+"\"; replace it with your app's version or build number, e.g. '2.4.0'"),!1;x._defaultoptions=n,x._defaultoptions.base_domain=n.serviceUrl,x._frameworkID=function(e){var t=e;try{t=new URL(e).hostname}catch(e){}return-1!==t.indexOf("localzoho")?5970:6002}(n.serviceUrl),x._token=n.identifier,_(config.console_log)||(x._config.debug=!!config.console_log),"boolean"==typeof config.ignore_do_not_track&&(x._config.ignore_do_not_track=config.ignore_do_not_track),x._config.debug_api="boolean"==typeof config.debug?config.debug:"boolean"==typeof config.debug_api?config.debug_api:c.debug_api,t=x._config.debug_api,Be(null!==je?je:t),x._config.device_name="string"==typeof config.device_name?config.device_name:c.device_name,void 0!==config.remote_log&&R("Apptics.init: remote_log is no longer read; the Remote Logger page shows the lines your app logs with AppticsLogger"),void 0!==config.show_logs&&R("Apptics.init: show_logs is no longer read; AppticsLogger lines are not printed to the browser console"),x._config.track_api=c.track_api,["track_api_hosts","track_api_exclude_hosts"].forEach(function(key){void 0!==config[key]&&R("Apptics.init: "+key+" is no longer supported; use AppticsApi.configure(new AppticsApi.ApiTrackingBuilder()."+("track_api_hosts"===key?"allowOnlyDomains":"ignoreDomains")+"(...).build())")}),["DC","quartz_workspace_key","quartz_department_key"].forEach(function(key){void 0!==config[key]&&R("Apptics.init: "+key+" is no longer read; screen recording in the feedback form is set up from the Apptics console")}),void 0!==config.track_session&&R("Apptics.init: track_session is no longer read; sessions are always recorded. To stop tracking, use AppticsSettings.setTrackingStatus(AppticsSettings.AP_TRACKING_STATUS.NO_TRACKING)"),"boolean"==typeof config.track_api&&(x._config.track_api=config.track_api),enableApiTracking(x._config.track_api),x._config.track_heatmap="boolean"==typeof config.track_heatmap?config.track_heatmap:c.track_heatmap,Le.trackHeatmap(x._config.track_heatmap),x._config.track_screen="boolean"==typeof config.track_screen?config.track_screen:c.track_screen,x._config.screen_routes=function(e){if(!Array.isArray(e))return[];var t=[];return e.forEach(function(e){if("string"!=typeof e){var n=e&&"object"==typeof e?e:null,name=n&&"string"==typeof n.name?n.name.trim():"";if(n&&""!==name&&"string"==typeof n.equals&&""!==n.equals.trim())t.push({kind:"equals",path:Zn(n.equals.trim()),name:name});else{if(n&&""!==name&&void 0!==n.regex){var r=null;if(n.regex instanceof RegExp)r=n.regex;else if("string"==typeof n.regex&&""!==n.regex)try{r=new RegExp(n.regex)}catch(e){r=null}if(r)return void t.push({kind:"regex",regex:r,name:name})}R("Apptics.init: screen_routes entry "+function(value){try{return JSON.stringify(value,function(e,t){return t instanceof RegExp?String(t):t})||String(value)}catch(e){return String(value)}}(e)+" is left out: give a route pattern, { equals, name } or { regex, name }")}}else""!==e.trim()&&t.push({kind:"pattern",pattern:e.trim()})}),t}(config.screen_routes),"light"!==config.feedback_theme&&"dark"!==config.feedback_theme&&"auto"!==config.feedback_theme||(x._config.feedback_theme=config.feedback_theme),function(config){if(oi.forEach(function(e){var value=config[e.key];if(x._config[e.key]=c[e.key],!_(value)){var t=Number(value);!isFinite(t)||t<e.min||t>e.max?R("Apptics.init: "+e.key+" must be between "+e.min+" and "+e.max+", keeping "+x._config[e.key]):(x._config[e.key]=t,C.log("Apptics.init: "+e.key+" set to "+t))}}),x.inactiveduration=30,!_(config.inactiveduration)){var e=Number(config.inactiveduration);!isFinite(e)||e<1||e>1440?R("Apptics.init: inactiveduration must be between 1 and 1440 minutes, keeping "+x.inactiveduration):(x.inactiveduration=e,C.log("Apptics.init: inactiveduration set to "+e))}}(config),ei=config,x._initialised=!0,x._ready=!1,x._pending=[];var i=++ti;return x._readyPromise=be().then(function(e){return i===ti&&(e?(function(e){var t=Ie.item("app_version_info")||{},n=_(t.serviceUrl)||_(t.identifier)?Ie.item("appkey"):ii(t);ai=String((_(t.appversion)?Ie.item("appversion"):t.appversion)||""),Ie.add("appkey",void 0),Ie.add("appversion",void 0),_(n)||n===ii(e)||(C.log("init: stored data belongs to another app, resetting"),si(),ai="")}(x._defaultoptions),Lt().then(function(e){return i===ti&&(!e&&Mt()?(R("Apptics.init: offline, so app/addversion is tried again when the browser is back online; calls made until then are kept"),function(e){return new Promise(function(t){var n=null,r=!1;function i(e){window.removeEventListener("online",a),null!==n&&clearInterval(n),t(e)}function a(){e===ti?r||!1===navigator.onLine||(r=!0,Lt().then(function(e){r=!1,e?i(!0):Mt()||(R("Apptics.init: app/addversion did not return the app ids, not starting"),i(!1))})):i(!1)}window.addEventListener("online",a),n=setInterval(a,ci)})}(i).then(function(e){return i===ti&&(e?di(config,i):(x._initialised=!1,x._token="",x._pending=[],!1))})):e?di(config,i):(R("Apptics.init: app/addversion did not return the app ids, not starting"),x._initialised=!1,x._token="",x._pending=[],!1))})):(R("Apptics.init: no usable storage (IndexedDB or localStorage), not starting"),x._initialised=!1,x._token="",x._pending=[],!1))}).catch(function(e){return C.error("Apptics.init: start-up failed",e),!1}),!0}const ci=6e4;function ready(){return x._readyPromise||Promise.resolve(!1)}function di(config,e){var t,n;(t=ln())&&!pn&&(pn=!0,t.request(un+cn(),function(){return new Promise(function(){})}).catch(function(){pn=!1})),x._token=String(x._defaultoptions.aaid),(n=Ie.item("trackinfo"))&&"object"==typeof n&&($t(n),C.log("restoreServerSettings: "+JSON.stringify(x._trackinfo)));var r=""!==ai&&ai!=x._defaultoptions.appversion;return x._ignoreDnt=x._config.ignore_do_not_track,Ne.update_status(Ne.opt_in_status()),Kt().then(function(){return e===ti&&function(e,t){e&&(x._device_info.appversionid="",Jt(x._device_info).then(function(e){k(e)&&C.log("init: appversion updated to "+x._defaultoptions.appversion)}).catch(function(e){C.log("init: error updating appversion: "+e)}));return x._device_info.connectionType=Ue(),function(){if(Xr)return;Xr=!0;var e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;e&&e.addEventListener&&e.addEventListener("change",function(){x._device_info.connectionType=Ue()});window.addEventListener("blur",function(){ui()&&(C.log("Window lost focus, user switched to another window or application"),gn(Sn))}),window.addEventListener("focus",function(){ui()&&(C.log("Window regained focus, user switched back to the window"),wn(),Gr())}),window.addEventListener("pagehide",gi),window.addEventListener("pageshow",function(e){ui()&&e.persisted&&(C.log("restored from the back/forward cache: starting a new session"),wn().then(yr),Gr())}),document.addEventListener("visibilitychange",function(){ui()&&("hidden"!==document.visibilityState?(C.log("page visible: refreshing the server settings"),wn().then(yr),Xt()):function(){if(!ui())return;tn(),flush(!0),C.log("page hidden: closing the open screen and flushing")}())}),window.addEventListener(window.cordova?"deviceready":"load",function(){ui()&&wn()},{passive:!0}),window.addEventListener("online",function(){if(ui()){if(_(ut("apid"))&&_(ut("mapid"))||!St())return C.log("back online: registering this device before sending"),void Kt().then(Wt).then(function(){ui()&&(flush(),Qr())});flush(),Qr()}},{passive:!0}),window.screen&&window.screen.orientation&&"function"==typeof window.screen.orientation.addEventListener&&window.screen.orientation.addEventListener("change",function(){x._properties.orientation=Ve()});window.addEventListener("unhandledrejection",function(e){ui()&&x._isGlobalErrorTracking&&trackError(e)}),window.addEventListener("error",function(e){if(ui()&&x._isGlobalErrorTracking){var t=e.target;t&&t!==window&&"string"==typeof t.tagName?trackError({type:"error",reason:e}):trackError(e)}},!0),window.addEventListener("click",fi,!0)}(),x._properties.orientation=Ve(),$r(),wn().then(function(){if(t!==ti)return!1;Gr(),Qr(),x._ready=!0;var e=x._pending;return x._pending=[],e.forEach(function(e){try{e()}catch(e){C.error("apptics: buffered call failed",e)}}),mr(x._config.track_screen),Le.remoteConfigStarted(),window.appticsReadyStatus=!0,"function"==typeof window.appticsReady&&window.appticsReady(),!0})}(r,e)})}function ui(){return x._ready}function li(e,name){var value=e.getAttribute(name);return null!==value&&""!==value?value:e.getAttribute("data-"+name)}function pi(name){return"["+name+"]:not(["+name+'=""]),[data-'+name+"]:not([data-"+name+'=""])'}function fi(e){if(window.appticsReadyStatus&&ui()){var t=e.target;if(t&&"function"!=typeof t.closest&&(t=t.parentElement),t){var n=t.closest(pi("apeventaction"));if(n){var eventName=li(n,"apeventaction")||"",r=n.closest(pi("apgroupaction")),groupName=r&&li(r,"apgroupaction")||c.default_group_name,i={},a=li(n,"apeventprops");if(!_(a))try{i=JSON.parse(a)}catch(e){C.warn('apptics: invalid JSON in apeventprops for "'+eventName+'", sending no properties'),i={}}_(eventName)||kr(eventName,groupName,i)}}}}function gi(){ui()&&(C.log("page closing: ending the session and sending what is queued"),tn(),Vr()?xe.all().then(function(e){if(0!==e.length){var t=e.slice(0,50);bt("consolelog",Yr(t),gt(),Kr).then(function(){return xe.remove(t)},function(e){if(ht(e))return xe.remove(t);C.log(Kr+": "+String(e))})}}):Promise.resolve(),An().then(function(){return flush(!0)}))}var mi=!1,hi=0,vi=[],ki=0,_i=0,bi=0,yi=null,zi=null,Ai=new WeakMap,wi=0,Si=0;function Ei(){var e=P("heatmap_max_per_session");return("number"!=typeof e||e<=0)&&(e=c.heatmap_max_per_session),!(hi>=e)||(hi===e&&(hi++,C.log("apptics.heatmap: reached "+e+" records for this session, pausing capture")),!1)}function xi(){var e=document.documentElement,t=document.body;return Math.max(e?e.scrollHeight:0,t?t.scrollHeight:0,e?e.clientHeight:0)}function Pi(e,t){if(!t||t<=0)return 0;var value=e/t;return value<0&&(value=0),value>1&&(value=1),Math.round(1e3*value)/1e3}function Ti(){return window.innerWidth||(document.documentElement?document.documentElement.clientWidth:0)||1}function Oi(t){if(!t)return"";for(var n=["data-ap-label","apeventaction","data-apeventaction","aria-label","name","id","title"],r=0;r<n.length;r++){var value=t.getAttribute?t.getAttribute(n[r]):null;if(!_(value))return String(value).slice(0,80)}var i=t.tagName?t.tagName.toLowerCase():"element";if(getTrackingStatus()!==e.USAGE_TRACKING_WITH_PII){var a=t.getAttribute?t.getAttribute("role"):null;return _(a)?i:i+"["+a+"]"}var o=(t.textContent||"").replace(/\s+/g," ").trim();return _(o)?i:o.slice(0,80)}function Ii(e){if(!e)return 0;for(var t="",n=e,r=0;n&&r<12;){var i=n.parentElement,a=0;if(i)for(var o=i.children,s=0;s<o.length;s++)if(o[s]===n){a=s;break}t="/"+(n.tagName||"?")+":"+a+t,n=i,r++}for(var c=2166136261,d=0;d<t.length;d++)c=16777619*(c^=t.charCodeAt(d))>>>0;return c}function Ci(e,t,n){return(vi=vi.filter(function(e){return n-e.at<=1e3})).push({at:n,x:e,y:t}),vi.filter(function(n){return Math.abs(n.x-e)<=30&&Math.abs(n.y-t)<=30}).length>=3}function Ri(){return{id:E(),session_start_time:x._current_session.starttime||v(),triggered_time:v(),screen:String(br()).slice(0,500),url_path:String(window.location.pathname).slice(0,500),screen_width:window.screen?window.screen.width:0,screen_height:window.screen?window.screen.height:0,content_height:xi(),orientation:Ve(),network_status:He(),edge_type:x._device_info.connectionType||Ue(),scroll_offset_x:Math.round(window.scrollX||window.pageXOffset||0),scroll_offset_y:Math.round(window.scrollY||window.pageYOffset||0)}}function Ni(e){hi++,Fe(),yn(),Ee.add(e),C.dir(e)}function Mi(e){if(rt("heatmap")&&Ei())try{var t=v(),n=e.target,r=function(e){for(var t=0;e&&t<10;){var n=e.tagName?e.tagName.toLowerCase():"",r=e.getAttribute?e.getAttribute("role"):null;if("a"===n||"button"===n||"input"===n||"select"===n||"textarea"===n||"summary"===n||"label"===n||"button"===r||"link"===r||"tab"===r||"menuitem"===r||e.hasAttribute&&e.hasAttribute("onclick"))return e;e=e.parentElement,t++}return null}(n),i=r||n,o=Math.round(e.clientX),s=Math.round(e.clientY),c=xi()||1,d=e.pointerType,u=Object.assign(Ri(),{triggered_type:"default",gesture_type:"click",gesture_duration:0,input_type:_(d)?"mouse":String(d),element_label:Oi(i),triggered_id:Ii(i),coordinate_x:o,coordinate_y:s,normalized_x:Pi(o,Ti()),normalized_y:Pi((window.scrollY||0)+s,c),velocity:0,is_clickable:r?1:0,is_rage_click:Ci(o,s,t)?1:0,is_dead_click:0});Ni(u),function(e){if(1===e.is_clickable||"function"!=typeof MutationObserver)return;var t=!1,url=window.location.href,n=new MutationObserver(function(){t=!0});try{n.observe(document.documentElement,{childList:!0,subtree:!0,attributes:!0})}catch(e){return}setTimeout(function(){n.disconnect(),t||window.location.href!==url||(e.is_dead_click=1,Ee.update(e))},1500)}(u)}catch(e){N(a.HEATMAP,"apptics.heatmap: click capture failed: "+String(e))}}function Li(e){if(rt("heatmap")&&Ei()){var t=function(e){var t=document;if(!e||1!==e.nodeType||e===t.documentElement||e===t.body)return null;var n=e;return n.clientHeight>=.5*(window.innerHeight||0)&&n.clientWidth>=.5*Ti()?n:void 0}(e?e.target:null);if(void 0!==t){if(null!==yi&&t!==zi&&(clearTimeout(yi),qi()),null===yi){zi=t;var n=function(e){return null===e?{x:wi,y:Si}:Ai.get(e)||{x:0,y:0}}(t);ki=v(),_i=n.x,bi=n.y}else clearTimeout(yi);yi=setTimeout(qi,150)}}}function qi(){yi=null;var e=zi;zi=null;try{var t=function(e){return null===e?{x:Math.round(window.scrollX||window.pageXOffset||0),y:Math.round(window.scrollY||window.pageYOffset||0)}:{x:Math.round(e.scrollLeft||0),y:Math.round(e.scrollTop||0)}}(e),n=t.x,r=t.y,i=n-_i,o=r-bi;if(null===e?(wi=n,Si=r):Ai.set(e,t),0===i&&0===o)return;var s=Math.max(1,v()-ki),c=Math.sqrt(i*i+o*o),d=Math.abs(o)>=Math.abs(i)?o>0?"down-scroll":"up-scroll":i>0?"right-scroll":"left-scroll",u=(null===e?xi():e.scrollHeight)||1,l=null===e?window.innerHeight||0:e.clientHeight;Ni(Object.assign(Ri(),null===e?{}:{content_height:e.scrollHeight,scroll_offset_x:n,scroll_offset_y:r},{triggered_type:"default",gesture_type:d,gesture_duration:Math.round(s),element_label:"",triggered_id:0,coordinate_x:n,coordinate_y:r,normalized_x:0,normalized_y:Pi(r+l,u),velocity:Math.round(c/s*1e3),is_clickable:0,is_rage_click:0,is_dead_click:0}))}catch(e){N(a.HEATMAP,"apptics.heatmap: scroll capture failed: "+String(e))}}function trackHeatmap(status){var e="boolean"!=typeof status||status;if(e!==mi){if(e)return wi=Math.round(window.scrollX||0),Si=Math.round(window.scrollY||0),window.addEventListener("pointerdown",Mi,{capture:!0,passive:!0}),window.addEventListener("scroll",Li,{capture:!0,passive:!0}),mi=!0,void C.log("apptics.heatmap: capturing clicks and scrolls");window.removeEventListener("pointerdown",Mi,!0),window.removeEventListener("scroll",Li,!0),null!==yi&&(clearTimeout(yi),qi()),zi=null,mi=!1,C.log("apptics.heatmap: capture stopped")}}function Di(e){if(x._initialised)return!1;var t=function(){if("undefined"!=typeof window&&window.appticssettings)return window.appticssettings._defaultoptions}();return!(!t||"object"!=typeof t)&&e.init(t)}Le.trackHeatmap=trackHeatmap,Le.resetHeatmap=function(){hi=0,vi=[],wi=0,Si=0,Ai=new WeakMap},Le.sendHeatmaps=function e(t){return!Ye()&&et()&&x._heatmapTracking?0==navigator.onLine?(C.warn("sendHeatmapData: No Network"),Promise.resolve()):x._sending?(Nr(e),Promise.resolve()):(x._sending=!0,Mr(),Lr("heatmaps",function(){return qr(Ee,function(){return!0},function(e){return e.triggered_time||e.session_start_time}).then(function(e){if(0!=e.length){var n=[],r=[];return A(e).forEach(function(e){r.push({...e}),delete e.id,n.push(e)}),Fr(function(e,t){return Dr("heatmap","requestToSendHeatmaps",e,t)}({data:n},t).then(function(){return Ee.remove(r)},function(e){return ht(e)?(R("apptics: the server refused these heatmap records, so they were dropped: "+String(e&&e.message)),Ee.remove(r)):Promise.reject(e)}),t,"sendHeatmapData")}})}).catch(function(e){C.log("sendHeatmapData:"+e)}).then(function(){x._sending=!1})):Promise.resolve()};const Fi=F("Apptics.init",init),ji=F("Apptics.ready",ready),Bi=F("Apptics.flush",flush),Ui=F("Apptics.reset",function reset(){ti++,null!==Ur&&clearInterval(Ur),null!==Hr&&clearInterval(Hr),Ur=null,Hr=null,Mr(),enableApiTracking(!1),mr(!1),Tt=null,Ie.add(xt,void 0),Le.trackHeatmap(!1),Le.resetHeatmap(),Le.resetRemoteConfig(),si(),x._initialised=!1,x._ready=!1,x._pending=[],x._readyPromise=null,x._device_info={},x._user_info={},x._current_screen={},x._current_session={},x._uuid="",x._apid="",x._mapid="",x._sending=!1,C.log("Apptics.reset()"),ei&&init(ei)}),Hi=F("Apptics.enableDebug",function enableDebug(){je=!0,Be(!0)}),Gi=F("Apptics.disableDebug",function disableDebug(){je=!1,Be(!1)}),Vi={init:function init(config){return j(Fi,arguments)},ready:function ready(){return j(ji,arguments)},flush:function flush(){return j(Bi,arguments)},reset:function reset(){return j(Ui,arguments)},enableDebug:function enableDebug(){return j(Hi,arguments)},disableDebug:function disableDebug(){return j(Gi,arguments)}},Ki=F("AppticsEvent.addEvent",kr),Wi={DefinedEvents:Kn,addEvent:function addEvent(eventName,groupName,properties){return j(Ki,arguments)}},Zi=F("AppticsScreen.inScreen",function(screenName,e,id,t){In(screenName)?(Le.screenTrackedByApp(),_r(screenName,e,id,t)):vr(a.SCREEN,"AppticsScreen.inScreen: Invalid screenName: "+String(screenName))}),Ji=F("AppticsScreen.outScreen",function(id,e){_(id)?N(a.SCREEN,"AppticsScreen.outScreen: no screen id given"):en(id,e)}),Yi={inScreen:function inScreen(screenName,properties){if(!In(screenName))return Zi(screenName,properties,"",v()),"";var id=E();return Zi(screenName,properties,id,v()),id},outScreen:function outScreen(id){Ji(id,v())}},Qi=F("AppticsApi.endTrackApi",function(id,responseCode,responseMessage,e){var t=Sr[id];t?(delete Sr[id],Er=Er.filter(function(e){return e!==id}),wr({url:t.url,method:t.method,responsecode:"number"==typeof responseCode?responseCode:0,responsemessage:responseMessage,starttime:t.starttime,endtime:e})):N(a.API,"AppticsApi.endTrackApi: no call started with id "+String(id))}),$i=F("AppticsApi.startTrackApi",function startTrackApi(url,method){var id=E();return Sr[id]={url:String(url||""),method:String(method||"GET").toUpperCase(),starttime:v()},Er.push(id),Er.length>500&&delete Sr[Er.shift()],id}),Xi=F("AppticsApi.configure",function(config){var e=config instanceof Mn?config.build():config;if(e&&"object"==typeof e){var t=function(e){return"string"==typeof e},n=function(e){return e instanceof RegExp};qn={allowEquals:Rn("allowEquals",Dn(e.allowEquals,t)),ignoreEquals:Rn("ignoreEquals",Dn(e.ignoreEquals,t)),allowRegex:Dn(e.allowRegex,n).concat(Nn("allowRegex",Dn(e.allowRegex,t))),ignoreRegex:Dn(e.ignoreRegex,n).concat(Nn("ignoreRegex",Dn(e.ignoreRegex,t)))}}else qn={allowEquals:[],ignoreEquals:[],allowRegex:[],ignoreRegex:[]}}),ea=F("AppticsApi.enableApiTracking",enableApiTracking),ta={startTrackApi:function startTrackApi(url,method){return j($i,arguments)},endTrackApi:function endTrackApi(id,responseCode,responseMessage){Qi(id,responseCode,responseMessage,v())},ApiTrackingBuilder:Mn,configure:function configure(config){return j(Xi,arguments)},enableApiTracking:function enableApiTracking(enabled){return j(ea,arguments)}},na=F("AppticsError.trackError",trackError),ra=F("AppticsError.trackGlobalErrorHandler",function trackGlobalErrorHandler(status){x._isGlobalErrorTracking="boolean"!=typeof status||status}),ia={trackError:function trackError(error,properties){return j(na,arguments)},trackGlobalErrorHandler:function trackGlobalErrorHandler(enabled){return j(ra,arguments)}},aa=F("AppticsUser.setUser",function setUser(userid,groupid,t){let n=t||{};if(userid=userid||"",groupid=groupid||"",tt("setUser"))if(_(userid))N(a.PROPERTIES,"AppticsUser.setUser: Invalid userid");else{var r={mam:userid,customergroupid:groupid,appversionid:x._device_info.appversionid||"",status:1,happendat:v()};b(n)||(r.userproperties=function(e){var t=e,n=t&&"object"==typeof t&&t.data&&t.datatype?t:On(e);return n.message.forEach(function(e){N(a.PROPERTIES,"AppticsUser.setUser: dropped "+e.keys.join(", ")+" (error "+e.code+")")}),n}(n)),function(t){var n="registerUserWithApptics",r=yt(n)||zt(n);if(r)return r;if(b(t))return Promise.reject(n+": nothing to register");var i=wt(n);if(i)return i;var a=JSON.stringify(z(t,["userid","groupid","happendat"]));return kt("reguser",a,gt(),n).then(function(n){var r=n.data||{};return t.userid=r.userid,t.groupid=r.customergroupid,setTrackingStatus(e.USAGE_TRACKING_WITH_PII),function(e){e.status=1;var t=Ie.item("users")||[],n=(t=t.map(e=>({...e,status:0}))).findIndex(t=>t.userid===e.userid);-1!==n?t[n]={...t[n],...e}:t.push(e);Ie.add("users",t),Ie.add("user_info",t[-1!==n?n:t.length-1])}(t),$r(),Le.remoteConfigUserChanged(),r})}(r).then(function(e){C.log("setUser: "+JSON.stringify(e))}).catch(function(e){C.log(e)})}}),oa=F("AppticsUser.getUser",function getUser(){return x._user_info||{}}),sa={setUser:function setUser(userid,groupid,properties){return j(aa,arguments)},getUser:function getUser(){return j(oa,arguments)},UserBuilder:class{setFirstName(e){return this.first_name=e,this}setLastName(e){return this.last_name=e,this}setCompanyName(e){return this.company_name=e,this}setEmailAddress(e){return this.email_address=e,this}setContactNumber(e){return this.contact_number=e,this}setCountry(e){return this.country=e,this}setRegion(e){return this.region=e,this}setCity(e){return this.city=e,this}setGeoLocation(e){return this.geo_location=e,this}setGender(e){return this.gender=e,this}setPlanType(e){return this.plan_type=e,this}setTimezone(e){return this.timezone=e,this}setLanguage(e){return this.language=e,this}setEngagementScore(e){return this.engagement_score=e,this}setDateOfBirth(e){return this.date_of_birth=e,this}addStringProperty(key,value){return"string"==typeof value&&(this[key]=value),this}addBooleanProperty(key,value){return"boolean"==typeof value&&(this[key]=value),this}addNumberProperty(key,value){return"number"==typeof value&&Number.isFinite(value)&&(this[key]=value),this}setCustomProperties(e){if("object"==typeof e&&null!==e)for(const[key,value]of Object.entries(e))this[key]=value;return this}build(){const e={},t=["first_name","last_name","company_name","email_address","contact_number","country","region","city","geo_location","gender","plan_type","timezone","language","engagement_score","date_of_birth"];return t.forEach(t=>{void 0!==this[t]&&(e[t]=this[t])}),Object.entries(this).forEach(([key,value])=>{-1===t.indexOf(key)&&"function"!=typeof value&&(e[key]=value)}),On(e)}}},ca=F("AppticsHeatmap.trackHeatmap",trackHeatmap),da={trackHeatmap:function trackHeatmap(on){return j(ca,arguments)}},ua=F("AppticsSettings.setTrackingStatus",setTrackingStatus),la=F("AppticsSettings.getTrackingStatus",getTrackingStatus),pa={AP_TRACKING_STATUS:e,setTrackingStatus:function setTrackingStatus(status){return j(ua,arguments)},getTrackingStatus:function getTrackingStatus(){return j(la,arguments)}},fa={Apptics:Vi,AppticsEvent:Wi,AppticsScreen:Yi,AppticsApi:ta,AppticsError:ia,AppticsUser:sa,AppticsSettings:pa,AppticsHeatmap:da};!function(e){"undefined"!=typeof window&&queueMicrotask(function(){Di(e)})}(Vi);const ga=2097152,ma=K,ha=W;let va=!1;function ka(){va||(va=!0,setTimeout(function(){va=!1,Se.all().then(function(e){const t=e.length-1e3;if(!(t<=0))return C.warn("apptics: dropping "+t+" oldest feedback log entries (cap is 1000)"),Se.remove(e.slice(0,t))})},2e3))}function _a(e){Se.add(e),ka()}function ba(e){return e.length>1e4?e.slice(0,1e4)+"…":e}const ya={};function za(message){ya[message]||(ya[message]=!0,R("AppticsFeedback.addDiagnosticsInfo: "+message+", so the entry is not recorded"))}function Aa(e){return Se.all().then(function(t){return t.filter(function(t){return t.type===e&&!T(t.happenedat)})})}function wa(e){return"string"==typeof e.timestamp&&e.timestamp.length>0?e.timestamp:new Date("number"==typeof e.happenedat?e.happenedat:v()).toISOString()}function Sa(e){return e.map(function(e){return String(e.id)})}function Ea(e){const t=[],n={};return e.forEach(function(e){const heading=String(e.heading);n[heading]||(n[heading]=[],t.push(heading)),n[heading].push(e.key+": "+e.value)}),t.map(function(heading){return"["+heading+"]\n"+n[heading].join("\n")}).join("\n\n")}function xa(name,e,t){const n=new File([e],name,{type:"text/plain"});return n.size>ga?(C.warn("apptics: "+name+" is over 2 MB, not sending it"),null):{file:n,ids:Sa(t)}}function Pa(){return Aa(ma).then(function(e){return 0===e.length?null:xa("feedbacklog.txt",function(e){return e.map(function(e){return"["+wa(e)+"] "+e.message}).join("\n")}(e),e)})}function Ta(){return Aa(ma).then(function(e){return e.map(function(e){return"["+function(e){var t=wa(e),n=new Date(t);return isNaN(n.getTime())?t:n.toLocaleDateString(void 0,{day:"2-digit",month:"short",year:"numeric"})+", "+n.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:"short"})}(e)+"] "+e.message}).join("\n")})}function Oa(){return Aa(ha).then(function(e){return e.length>0})}const Ia="Feedback sent successfully",Ca="Something went wrong. Send feedback again",Ra=["deviceid","anonymousid","aaid","apid","mapid","devicetypeid","osversionid","platformid","appversionid","appreleaseversionid","modelid","timezoneid","frameworkid","projectid","portalid","donottrackenabled","uuid","hadsession"];function Na(e){if(Ye())return Promise.resolve(null);if(0==navigator.onLine)return C.warn("sendFeedbackData: No Network"),Promise.resolve(null);var t=_(e.attachment)?null:e.attachment,n=t?t.length:0,r=function(e){if(!e||0===e.length)return"";if(e.length>5)return"Maximum 5 attachments is allowed";for(var t=0,n=0;n<e.length;n++)t+=Number(e[n].size)||0;return t>10485760?"Maximum limit reached. The total file size cannot exceed 10MB.":""}(t);if(""!==r)return Promise.reject(new Error("sendFeedback: "+r));var i=e&&e.logsFiles?e.logsFiles:null,a=i&&i.length?i.length:0,o=v();return Promise.all([Ma(e),Ge()]).then(function([r,s]){var c=new FormData,d={networkstatus:He(),orientation:Ve(),edge:Ue(),screenname:x._current_screen.screen||"",sessionstarttime:x._current_session.starttime||o,report:e.message,type:e.type,source:0,attachmentcount:n||0,logfilecount:a+(r.logFile?1:0),happendat:o};_(e.quartzid)||(d.quartzid=e.quartzid),null!==s&&(d.battery=s),c.append("feedinfo",JSON.stringify({feedinfo:d,meta:At()}));var u=Promise.resolve();return t&&n>0&&n<=5&&(u=function(e){var t=[];for(let n=0;n<e.length;n++){const r=e[n];t.push(new Promise(function(e,t){const i=new FileReader;i.onload=function(t){const i=t.target.result;e(new File([i],"image_"+(n+1),{type:r.type}))},i.onerror=function(){t(i.error)},i.readAsArrayBuffer(r)}))}return Promise.all(t)}(t).then(function(e){e.forEach(function(e){c.append("attachment",e)})})),u.then(function(){return function(e,t,n){if(t&&t.length>0)for(let n=0;n<t.length;n++)e.append("logfile",t[n]);n.logFile&&e.append("logfile",n.logFile);n.dyninfoFile&&e.append("dyninfo",n.dyninfoFile)}(c,i,r),a=c,o=r.ids,(e=a,t="requestToFeedback",n=yt(t)||wt(t),n||(C.log(t+": Feedback Payload size : "+w(e)/1024),kt("feedback",e,gt(),t))).then(function(){return x._sending=!1,o.length>0&&function(e){Se.remove(e.map(function(id){return{id:id}}))}(o),{ok:!0,message:Ia}}).catch(function(e){return x._sending=!1,C.log("sendFeedbackData:"+e),{ok:!1,message:Ca}});var e,t,n,a,o})}).catch(function(e){return C.error("sendFeedbackData: "+e),{ok:!1,message:Ca}})}function Ma(e){var t=!1!==e.includeLog,n=e.includeDyninfo,r=!0===n?Promise.resolve(!0):!1===n?Promise.resolve(!1):Oa();return Promise.all([t?Pa():Promise.resolve(null),r.then(function(e){return e?(t=function(){try{return JSON.stringify(z(x._device_info,Ra)||{},null,2)}catch(e){return C.error("Failed to prepare dyninfo file",e),null}}(),Aa(ha).then(function(e){const n=[];return e.length>0&&n.push(Ea(e)),t&&n.push("[Device Info]\n"+t),0===n.length?null:xa("dyninfo.txt",n.join("\n\n"),e)})):null;var t})]).then(function([e,t]){return{logFile:e?e.file:null,dyninfoFile:t?t.file:null,ids:(e?e.ids:[]).concat(t?t.ids:[])}})}const La="anonymous",qa="Anonymous",Da={anonymous:!0,userid:"",groupid:""},Fa={};function ja(){Da.anonymous=!0,Da.userid="",Da.groupid=""}function Ba(){var e=Ie.item("users");return Array.isArray(e)?e:[]}const Ua="http://www.w3.org/2000/svg";function Ha(e,t){var n=e.querySelector("#zasdkEmailTrigger"),r=e.querySelector("#zasdkEmailPanel"),i=e.querySelector("#zasdkEmailLabel"),a=e.querySelector("#zasdkEmailList"),o=e.querySelector("#zasdkEmailDropdown");if(n&&r&&i&&a&&o){var s=Ba(),c=function(e){var t=[{value:La,label:qa}],n={};return e.forEach(function(e){var r=e&&e.mam;_(r)||n[r]||(n[r]=!0,t.push({value:String(r),label:String(r)}))}),t}(s),d=La;if(ja(),!t){var u=null;s.forEach(function(e){u||!e||1!=e.status||_(e.mam)||(u=e)}),u&&l(String(u.mam))}n.addEventListener("click",function(e){e.stopPropagation();var t="none"!==r.style.display;r.style.display=t?"none":"block",t||p()}),a.addEventListener("click",function(e){var t=e.target.closest(".zasdk-select-option");t&&(l(String(t.getAttribute("data-value"))),r.style.display="none")}),o.setAttribute("tabindex","0"),o.addEventListener("focusout",function(e){o.contains(e.relatedTarget)||(r.style.display="none")}),p()}function l(value){d=value,Da.anonymous=value===La;var e=null;Da.anonymous||s.forEach(function(t){!e&&t&&t.mam===value&&(e=t)}),Da.userid=e?String(e.userid||""):"",Da.groupid=e?String(e.groupid||""):"",i.textContent=Da.anonymous?qa:value,p()}function p(){if(a.innerHTML="",0===c.length){var e=document.createElement("div");return e.className="zasdk-select-empty",e.textContent="No users to choose from",void a.appendChild(e)}c.forEach(function(e){var t=e.value===d,n=document.createElement("li");n.className="zasdk-select-option"+(t?" zasdk-option-selected":""),n.setAttribute("data-value",e.value);var r=document.createElement("span");r.textContent=e.label,n.appendChild(r),t&&n.appendChild(function(){var e=document.createElementNS(Ua,"svg");e.setAttribute("viewBox","0 0 14 10"),e.setAttribute("width","14"),e.setAttribute("height","10"),e.setAttribute("fill","none");var t=document.createElementNS(Ua,"path");return t.setAttribute("d","M1 5l4 4 8-8"),t.setAttribute("stroke","#0078d4"),t.setAttribute("stroke-width","2"),t.setAttribute("stroke-linecap","round"),t.setAttribute("stroke-linejoin","round"),e.appendChild(t),e}()),a.appendChild(n)})}}function Ga(e,t,n){var r=e.querySelector("#zasdkDataViewer"),i=e.querySelector("#zasdkViewerTitle"),a=e.querySelector("#zasdkViewerContent");r&&i&&a&&(i.textContent=t,a.textContent=n||"(No data available)",r.style.display="flex")}function Va(e,t){var n=e.querySelector("#zasdkIncludeLogToggle"),r=e.querySelector("#zasdkIncludeDiagToggle"),i=e.querySelector(".zasdk-toggles-section"),a=e.querySelector(".zasdk-toggle-separator"),o=e.querySelector("#zasdkViewLogsBtn"),s=e.querySelector("#zasdkViewDiagBtn"),c=e.querySelector("#zasdkViewerClose"),d=e.querySelector("#zasdkDataViewer");if(n&&r&&i){var u=n.closest(".zasdk-toggle-row"),l=r.closest(".zasdk-toggle-row");Fa.includeLog=!0===t.includeLog||void 0,Fa.includeDyninfo=!0===t.includeDyninfo||void 0,i.style.display="none",Promise.all([Aa(ma).then(function(e){return e.length>0}),Oa()]).then(function([e,o]){u&&(u.style.display=e?"":"none"),l&&(l.style.display=o?"":"none"),a&&(a.style.display=e&&o?"":"none"),i.style.display=e||o?"":"none",n.checked=!0===t.includeLog||e,r.checked=!0===t.includeDyninfo||o,Fa.includeLog=n.checked,Fa.includeDyninfo=r.checked}).catch(function(e){C.warn("apptics: could not read the stored logs: "+String(e))}),n.addEventListener("change",function(){Fa.includeLog=n.checked}),r.addEventListener("change",function(){Fa.includeDyninfo=r.checked}),o&&o.addEventListener("click",function(){Ta().then(function(t){Ga(e,"System Logs",t)})}),s&&s.addEventListener("click",function(){Aa(ha).then(Ea).then(function(t){Ga(e,"Diagnostic Information",t)})}),c&&d&&c.addEventListener("click",function(){d.style.display="none"})}}Le.feedbackUser=function(){return Da.anonymous||_(Da.userid)?null:Da};const Ka=/(^|\.)(zohocdn\.com|zohostatic\.com|localzohocdn\.com|localzoho\.com|zoho\.(com|eu|in|jp|sa|ae|com\.au|com\.cn)|zohocloud\.ca)$/;function Wa(e,t){return e&&""!==e.trim()?e.trim():function(e){var t="";try{t=new URL(e).hostname}catch(n){t=e||""}return"https://"+(-1!==t.indexOf("localzoho")?"static.localzohocdn.com":"static.zohocdn.com")+"/quartz/feedback/v2/quartz.js"}(t)}function Za(){return"undefined"!=typeof Quartz&&!!Quartz}var Ja=null,Ya=!1;function Qa(url){if(Za())return Promise.resolve(!0);var e=function(url){try{var e=new URL(url);return"https:"===e.protocol&&Ka.test(e.hostname)?e.href:""}catch(e){return""}}(url);return""===e?(url&&!Ya&&(Ya=!0,R("AppticsFeedback: screen recording is off; its script url is not an https url on a Zoho host: "+url)),Promise.resolve(!1)):Ja||(Ja=new Promise(function(t){var n=document.createElement("script");n.src=e,n.async=!0,n.setAttribute("data-apptics","quartz"),n.onload=function(){C.log("AppticsFeedback: Quartz loaded from "+e),t(Za())},n.onerror=function(){C.warn("AppticsFeedback: the Quartz script did not load: "+e),Ja=null,n.remove(),t(!1)},(document.head||document.documentElement).appendChild(n)}),Ja)}const $a={startRecording(){},previewVideo(){},editVideo(){},clearFeedback(){},endRecording(){},setVideoContent(){},submitRecording:()=>Promise.resolve({})},Xa={ErrorType:{},FeedbackState:{}};function eo(){return"undefined"!=typeof Quartz&&!!Quartz}function to(){return"undefined"!=typeof Quartz&&Quartz?Quartz:$a}function no(){return"undefined"!=typeof QuartzConstants&&QuartzConstants?QuartzConstants:Xa}function ro(e){return Na(e).then(function(e){return e?(uo.handleStatusmsg(e.ok,e.message),e.ok&&setTimeout(()=>{uo.close()},2e3),e):null})}function io(value){return null!==value&&"object"==typeof value&&!Array.isArray(value)}var ao=!1;function sendFeedback(options){if(void 0!==options&&!io(options))return Promise.reject(new Error("AppticsFeedback.sendFeedback: takes one options object, as sendFeedback({ type, message, attachments, logFiles, includeDiagnostics, includeLog, isAnonymous })"));const e=options||{},t={type:_(e.type)?1:e.type,message:e.message||"",attachment:e.attachments||null,logsFiles:e.logFiles||null,includeDyninfo:e.includeDiagnostics,includeLog:e.includeLog,quartzid:""};var n=function(e){var t={anonymous:Da.anonymous,userid:Da.userid,groupid:Da.groupid};if(ja(),!e){var n=_(x._user_info.userid)?null:x._user_info;Ba().forEach(function(e){n||!e||1!=e.status||_(e.userid)||(n=e)}),n&&(Da.anonymous=!1,Da.userid=String(n.userid),Da.groupid=String(n.groupid||""))}return function(){Da.anonymous=t.anonymous,Da.userid=t.userid,Da.groupid=t.groupid}}(!0===e.isAnonymous);return ro(t).then(function(e){return n(),e},function(e){throw n(),e}).then(function(e){if(!e)throw new Error("AppticsFeedback.sendFeedback: not sent, the browser is offline or Apptics is disabled for this client");if(!e.ok)throw new Error("AppticsFeedback.sendFeedback: not sent, "+e.message)})}function oo(e,message,t){var n=e.querySelector(".zasdk-selected").getAttribute("data-type"),r=e.querySelector("#zasdkFileInput").files;return{type:_(n)?1:uo.typeObj[n],message:message,attachment:r&&r.length>0?r:uo._opts.attachments||null,logsFiles:uo._opts.logFiles||null,includeLog:Fa.includeLog,includeDyninfo:Fa.includeDyninfo,quartzid:t}}function so(){try{return"function"==typeof DataTransfer?new DataTransfer:null}catch(e){return C.warn("apptics.feedback: this browser cannot build a file list, attachments are off"),null}}const co=["light","dark","auto"];const uo={feedbackUIHtml:'<div id="zasdkFeedbackconatiner" class="zasdk-modal-content" role="dialog" aria-modal="true" aria-labelledby="zasdkFeedbackTitle">\n <div class="zasdk-header">\n <h2 id="zasdkFeedbackTitle" class="zasdk-title">Share feedback</h2>\n <span id="appticsfeedbackclose" class="zasdk-close" role="button" tabindex="0" aria-label="Close"><svg viewBox="0 0 24 24" style=" width: 20px; "><path d="M19.92,19.08c.23.23.23.61,0,.85-.12.12-.27.18-.42.18s-.31-.06-.42-.18l-7.08-7.08-7.08,7.08c-.12.12-.27.18-.42.18s-.31-.06-.42-.18c-.23-.23-.23-.61,0-.85l7.08-7.08-7.08-7.08c-.23-.23-.23-.61,0-.85s.61-.23.85,0l7.08,7.08,7.08-7.08c.23-.23.61-.23.85,0s.23.61,0,.85l-7.08,7.08,7.08,7.08Z"/></svg></span>\n </div>\n <div class="zasdk-feedback-types" data-type="">\n <div class="zasdk-feedback-type zasdk-selected" data-type="feedback">\n <div class="zasdk-iconcnt zasdkfeedback__icon-reqest">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M6.69,9.25h10.81c.41,0,.75-.34.75-.75s-.34-.75-.75-.75H6.69c-.41,0-.75.34-.75.75s.34.75.75.75Z"/><path d="M6.69,13.07h8.11c.41,0,.75-.34.75-.75s-.34-.75-.75-.75H6.69c-.41,0-.75.34-.75.75s.34.75.75.75Z"/><path d="M20.72,5.17c0-.68-.55-1.23-1.23-1.23H4.48c-.68,0-1.23.55-1.23,1.23v11.84c0,.68.55,1.23,1.23,1.23h13.49l1.25,1.51c.17.2.41.31.67.31.1,0,.2-.02.3-.05.34-.13.57-.46.56-.83l-.03-14.01ZM19.22,17.39l-.17-.2c-.24-.29-.58-.45-.95-.45H4.75V5.44h14.47v11.95Z"/></svg></i>\n </div>\n <div>Feedback</div>\n </div>\n <div class="zasdk-feedback-type" data-type="bug">\n <div class="zasdk-iconcnt zasdkfeedback__icon-report">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M15.6,6.58c-.13-.37-.3-.7-.5-.97l1.23-1.18c.24-.23.25-.61.02-.85-.23-.24-.61-.25-.85-.02l-1.26,1.21c-.66-.45-1.37-.62-1.79-.68-.25-.04-.51-.04-.76-.02-.83.08-1.45.35-1.93.7l-1.22-1.2c-.24-.23-.62-.23-.85,0-.23.24-.23.62,0,.85l1.21,1.19c-.24.34-.41.68-.51.96-2.02,1.37-3.27,3.82-3.27,6.44,0,4.18,3.08,7.58,6.87,7.58s6.87-3.4,6.87-7.58c0-2.62-1.25-5.06-3.26-6.44ZM11.82,5.27c.15-.02.31-.01.47.01.69.1,1.86.48,2.26,1.9-.17.17-.51.44-1.14.65-1.08.36-2.31.28-3.36-.23-.24-.11-.44-.23-.6-.36,0-.01,0-.03.01-.04.18-.65.73-1.77,2.36-1.93ZM12,19.4c-3.12,0-5.67-2.86-5.67-6.38,0-1.98.82-3.82,2.19-5.02.26.25.59.48,1.01.68.78.38,1.65.57,2.5.57.6,0,1.19-.09,1.76-.28.88-.29,1.39-.7,1.67-1,1.38,1.2,2.21,3.06,2.21,5.05,0,3.52-2.54,6.38-5.67,6.38ZM9.12,9.86c-.92,0-1.67.75-1.67,1.67s.75,1.67,1.67,1.67,1.67-.75,1.67-1.67-.75-1.67-1.67-1.67ZM9.12,11.99c-.26,0-.47-.21-.47-.47s.21-.47.47-.47.47.21.47.47-.21.47-.47.47ZM14.88,9.86c-.92,0-1.67.75-1.67,1.67s.75,1.67,1.67,1.67,1.67-.75,1.67-1.67-.75-1.67-1.67-1.67ZM14.88,11.99c-.26,0-.47-.21-.47-.47s.21-.47.47-.47.47.21.47.47-.21.47-.47.47ZM12,14.49c-.92,0-1.67.75-1.67,1.67s.75,1.67,1.67,1.67,1.67-.75,1.67-1.67-.75-1.67-1.67-1.67ZM12,16.62c-.26,0-.47-.21-.47-.47s.21-.47.47-.47.47.21.47.47-.21.47-.47.47Z"/></svg></i>\n </div>\n <div>Bug</div>\n </div>\n <div class="zasdk-feedback-type" data-type="help">\n <div class="zasdk-iconcnt zasdkfeedback__icon-help">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M12.45,16.47c-.33,0-.6-.27-.6-.6v-2.7c0-.43.25-.82.64-.99.95-.42,3.15-1.62,3.15-3.51,0-1.6-1.01-3.03-2.51-3.55-.95-.33-1.97-.28-2.87.16-.91.43-1.59,1.2-1.92,2.14-.11.31-.45.48-.77.37-.31-.11-.48-.45-.37-.77.44-1.25,1.34-2.25,2.54-2.83,1.2-.57,2.54-.65,3.79-.21,1.99.7,3.32,2.58,3.31,4.69,0,2.46-2.34,3.91-3.79,4.57v2.63c0,.33-.27.6-.6.6ZM13.21,19.1c0-.66-.54-1.2-1.2-1.2h-.03c-.66,0-1.19.54-1.19,1.2s.55,1.2,1.21,1.2,1.2-.54,1.2-1.2Z"/></svg></i>\n </div>\n <div>Help</div>\n </div>\n <div class="zasdk-feedback-type" data-type="report">\n <div class="zasdk-iconcnt zasdkfeedback__icon-appreciate">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M20.47,16.72l-6.66-11.53c-.37-.65-1.07-1.05-1.81-1.05s-1.44.4-1.81,1.05l-6.66,11.53c-.37.65-.37,1.45,0,2.09.37.65,1.07,1.05,1.81,1.05h13.32c.75,0,1.44-.4,1.81-1.05.37-.64.37-1.45,0-2.09ZM19.17,18.06c-.11.18-.3.3-.51.3H5.34c-.21,0-.41-.11-.51-.3-.1-.18-.1-.41,0-.59l6.66-11.53h0c.11-.18.3-.3.51-.3s.41.11.51.3l6.66,11.53c.11.18.11.41,0,.59Z"/><path d="M12.35,13.9s.37-4.72.37-4.72c.05-1.08-1.58-1.06-1.5.02l.48,4.71c.03.38.62.37.64,0Z"/><path d="M11.97,15.06c-.52,0-.94.42-.94.94s.42.94.94.94.94-.42.94-.94-.42-.94-.94-.94Z"/></svg></i>\n </div>\n <div>Report</div>\n </div>\n </div>\n <div id="zasdkFeedbackForm" class="zasdk-form">\n <label class="zasdkdesclbl">User<span class="zasdkmadfeld">*</span></label>\n <div id="zasdkEmailDropdown" class="zasdk-custom-select">\n <div id="zasdkEmailTrigger" class="zasdk-select-trigger">\n <span id="zasdkEmailLabel" class="zasdk-select-label">Anonymous</span>\n <svg class="zasdk-select-arrow" viewBox="0 0 12 8" width="12" height="8"><path d="M1 1l5 5 5-5" stroke="#999" stroke-width="1.5" fill="none" stroke-linecap="round"/></svg>\n </div>\n <div id="zasdkEmailPanel" class="zasdk-select-panel" style="display:none">\n <ul id="zasdkEmailList" class="zasdk-select-list"></ul>\n </div>\n </div>\n <label class="zasdkdesclbl" for="zasdkDescription">Add details here<span class="zasdkmadfeld">*</span> <span class="zaleftcharspan"><span class="zaleftcharcnt">5000</span><span class="zaleftchartxt">characters left</span></span></label>\n <textarea id="zasdkDescription" name="description" placeholder="Please provide more details for us to help you better." reqname="name" maxlength="5000"></textarea>\n <div id="zasdkreccheckcnt" class="zasdkqz-container">\n <div class="zasdkqz-checkbox-wrapper">\n <input type="checkbox" id="zasdkqz-consent" class="zasdkqz-checkbox">\n <label for="zasdkqz-consent">By agreeing to record screen, I allow the collection of the required information for further analysis.</label>\n </div>\n <div id="zasdkqz-content" class="zasdkqz-content">\n <div class="zasdkqz-prop-content">Data collected while screen recording.\n <div class="zasdk_rec_hdr_icon zasdk-tooltip-container zasdk_rec_hdr">\n <i><svg viewBox="0 0 24 24"><path d="M12,20.6c-4.74,0-8.6-3.86-8.6-8.6S7.26,3.4,12,3.4s8.6,3.86,8.6,8.6-3.86,8.6-8.6,8.6ZM12,4.6c-4.08,0-7.4,3.32-7.4,7.4s3.32,7.4,7.4,7.4,7.4-3.32,7.4-7.4-3.32-7.4-7.4-7.4ZM12.6,15.97v-4.91c0-.33-.27-.6-.6-.6s-.6.27-.6.6v4.91c0,.33.27.6.6.6s.6-.27.6-.6ZM12.61,9.03c0-.33-.27-.6-.6-.6h-.01c-.33,0-.59.27-.59.6s.28.6.61.6.6-.27.6-.6Z"/></svg></i>\n <div class="zasdk-tooltip-top zasdk-prop-info">\n <ul>\n <li>- A recording of the window or region specified.</li>\n <li>- Audio captured during recording. (You can mute or re-record)</li>\n <li>- IP address.</li>\n <li>- Browser console logs generated while recording.</li>\n <li>- Device details (screen resolution, OS, and browser version).</li>\n <li>- Client-side performance metrics (DNS lookup time, TCP connection time, etc.).</li>\n </ul>\n </div>\n </div>\n </div>\n <div id="zasdkqz_rec_button" class="zasdkqz-button">Start screen recording</div>\n </div>\n </div>\n <div id="editRecordedVideo" class="zasdk_recordedClipArea" style="">\n <div id="recordScreenDesc" class="zasdk_rec_hdr"> Recorded Clip\n <div class="zasdk_rec_hdr_icon zasdk-tooltip-container">\n <i><svg viewBox="0 0 24 24"><path d="M12,20.6c-4.74,0-8.6-3.86-8.6-8.6S7.26,3.4,12,3.4s8.6,3.86,8.6,8.6-3.86,8.6-8.6,8.6ZM12,4.6c-4.08,0-7.4,3.32-7.4,7.4s3.32,7.4,7.4,7.4,7.4-3.32,7.4-7.4-3.32-7.4-7.4-7.4ZM12.6,15.97v-4.91c0-.33-.27-.6-.6-.6s-.6.27-.6.6v4.91c0,.33.27.6.6.6s.6-.27.6-.6ZM12.61,9.03c0-.33-.27-.6-.6-.6h-.01c-.33,0-.59.27-.59.6s.28.6.61.6.6-.27.6-.6Z"/></svg></i>\n <div class="zasdk-tooltip">This recording will be sent along with your feedback for further analysis.</div>\n </div>\n </div>\n <div class="zasdk_playEdit">\n <div class="zasdk_clipAreaButtonCnt zasdk-tooltip-container">\n <div id="preivewPlayButton" class="zasdk_clipAreaButton" title="Preview">\n <svg viewBox="0 0 24 24"><path d="M6.24,20.6c-.2,0-.39-.05-.57-.15-.38-.21-.62-.61-.62-1.05V4.59c0-.44.24-.84.62-1.05.38-.21.85-.19,1.22.04l11.52,7.41c.34.22.55.6.55,1,0,.41-.2.78-.55,1l-11.52,7.41c-.2.13-.42.19-.64.19ZM6.56,4.1l-.33.5v14.81s11.52-7.41,11.52-7.41L6.23,4.6l.33-.5Z"/></svg>\n </div>\n <div class="zasdk-tooltip">Preview</div>\n </div>\n <div class="zasdk_clipAreaButtonCnt zasdk-tooltip-container">\n <div id="videoEditButton" class="zasdk_clipAreaButton">\n <svg id="Layer_2" viewBox="0 0 24 24"><path d="M20.6,7.18c0-.58-.23-1.13-.65-1.54l-1.53-1.51c-.83-.83-2.29-.83-3.12,0l-1.31,1.3h0S4.88,14.41,4.88,14.41c-.12.12-.21.27-.26.44l-1.19,4.4c-.09.34,0,.7.26.95.19.18.44.29.7.29.09,0,.17-.01.26-.04l4.44-1.2c.16-.05.31-.13.44-.25l8.54-8.43h0s1.88-1.86,1.88-1.86c.06-.06.12-.12.17-.19h0c.31-.39.48-.86.48-1.36ZM8.72,18.12l-4.03,1.09,1.08-3.98L13.97,7.12l2.88,2.97-8.13,8.03ZM17.71,9.25l-2.88-2.97,1.32-1.3c.38-.38,1.04-.38,1.43,0l1.53,1.51c.19.18.29.43.29.69,0,.22-.08.43-.21.6h0s-.04.05-.08.08l-1.4,1.39Z"/></svg>\n </div>\n <div class="zasdk-tooltip">Edit</div>\n </div>\n <div class="zasdk_clipAreaButtonCnt zasdk-tooltip-container">\n <div id="videoDelButton" class="zasdk_clipAreaButton">\n <svg id="Layer_2" viewBox="0 0 24 24"><path d="M19.2,6.6h-3.4v-1c0-1.21-.99-2.2-2.2-2.2h-3.2c-1.21,0-2.2.99-2.2,2.2v1h-3.4c-.33,0-.6.27-.6.6s.27.6.6.6h1v10.6c0,1.21.99,2.2,2.2,2.2h8c1.21,0,2.2-.99,2.2-2.2V7.8h1c.33,0,.6-.27.6-.6s-.27-.6-.6-.6ZM9.4,5.6c0-.55.45-1,1-1h3.2c.55,0,1,.45,1,1v1h-5.2v-1ZM17,18.4c0,.55-.45,1-1,1h-8c-.55,0-1-.45-1-1V7.8h10v10.6ZM11,11.2v4.8c0,.33-.27.6-.6.6s-.6-.27-.6-.6v-4.8c0-.33.27-.6.6-.6s.6.27.6.6ZM14.2,11.2v4.8c0,.33-.27.6-.6.6s-.6-.27-.6-.6v-4.8c0-.33.27-.6.6-.6s.6.27.6.6Z"/></svg>\n </div>\n <div class="zasdk-tooltip">Delete</div>\n </div>\n </div>\n <div class="zasdk_videoPrev">\n <video id="previewVideoElemId" width="320" height="240" src=""></video>\n </div>\n </div>\n\n <div class="zasdk-buttons">\n <div class="zasdk-btncnt">\n <div id="zasdkattachinfo" class="zasdkattachinf">Maximum 5 attachments with a total file size of 10MB is allowed</div>\n <input type="file" id="zasdkFileInput" class="zasdk-file-input" multiple accept=".png, .jpg, .txt">\n <label id="zasdkAttachBtn" class="zasdk-btn zasdk-attach-btn" for="zasdkFileInput">\n <svg id="Layer_2" viewBox="0 0 24 24" style=" width: 25px; "><path d="M12,20.6c-2.63,0-4.78-2.14-4.78-4.78V6.78c0-1.87,1.52-3.38,3.38-3.38s3.38,1.52,3.38,3.38v9.04c0,1.1-.9,1.99-2,1.99s-1.99-.89-1.99-1.99V7.48c0-.33.27-.6.6-.6h0c.33,0,.6.27.6.6v8.35c0,.44.35.79.79.79s.79-.36.79-.79V6.78c0-1.2-.98-2.18-2.18-2.18s-2.18.98-2.18,2.18v9.04c0,1.97,1.6,3.58,3.58,3.58s3.58-1.6,3.58-3.58V6.78c0-.33.27-.6.6-.6s.6.27.6.6v9.04c0,2.63-2.14,4.78-4.78,4.78Z"/></svg>\n <span>Attachments</span>\n </label>\n <div id="zasdkfilesizeinfo" class="zasdkfilesizeinf"></div>\n <ul id="zasakfileList" class="zasakfilelstcnt"></ul>\n </div>\n </div>\n </div>\n <div class="zasdk-toggles-section">\n <div class="zasdk-toggle-row">\n <div class="zasdk-toggle-info">\n <span class="zasdk-toggle-label">Include System Logs</span>\n <span class="zasdk-view-link" id="zasdkViewLogsBtn">View</span>\n </div>\n <label class="zasdk-switch">\n <input type="checkbox" id="zasdkIncludeLogToggle">\n <span class="zasdk-slider"></span>\n </label>\n </div>\n <div class="zasdk-toggle-separator"></div>\n <div class="zasdk-toggle-row">\n <div class="zasdk-toggle-info">\n <span class="zasdk-toggle-label">Include Diagnostic Information</span>\n <span class="zasdk-view-link" id="zasdkViewDiagBtn">View</span>\n </div>\n <label class="zasdk-switch">\n <input type="checkbox" id="zasdkIncludeDiagToggle">\n <span class="zasdk-slider"></span>\n </label>\n </div>\n </div>\n <div class="zasdk_submit_btncnt">\n <div id="zasdksubmitstatus" class="zasdkstsmsg" style="display:none;" ></div>\n <div id="zasdk_submit_btnsubcnt" class="zasdk_submit_btnsubcnt">\n <input type="button" id="zasdk_submit_btn" class="zasdk-btn zasdk-send-btn zasdkbtndisableclr" value="Send">\n </div>\n </div>\n <div id="zasdkDataViewer" class="zasdk-data-viewer" style="display:none">\n <div class="zasdk-viewer-hdr">\n <span id="zasdkViewerClose" class="zasdk-viewer-back"><svg viewBox="0 0 24 24" width="20" height="20" fill="none"><path d="M15 19l-7-7 7-7" stroke="#333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></span>\n <span id="zasdkViewerTitle" class="zasdk-viewer-title"></span>\n </div>\n <pre id="zasdkViewerContent" class="zasdk-viewer-content"></pre>\n </div>\n </div>',timerHtml:'<div id="zasdkrectimer" class="zasdk-timer-container zasdk-tooltip-container">\n <div class="zasdk-timer-control" id="zasdkRecordButton"><div class="zasdk-timer-stopcricle"></div></div>\n <span class="zasdk-timer-display" id="zasdkTimerDisplay">05:00</span>\n <div class="zasdk-tooltip-top">Stop Recording</div>\n </div>',uploadFileAry:[],fileInput:null,selectedFiles:null,isScaled:!1,isHidden:!1,timerDisplay:null,recordButton:null,TOTAL_TIME:300,remainingTime:300,isRecording:!1,timerInterval:null,uploadTotalSize:0,MaxFileSize:10485760,_opts:{},typeObj:{bug:0,feedback:1,help:2,report:3},init:function(e){if(uo._opts=e||{},!_(r=document.getElementById("zasdkFeedbackModal")))return;const t=document.createElement("div");uo.uploadFileAry=[],t.id="zasdkFeedbackModal",t.className="zasdk-modal",t.setAttribute("data-zasdk-theme",x._config.feedback_theme),t.innerHTML=uo.feedbackUIHtml,document.body.appendChild(t);var n,name,r=document.getElementById("zasdkFeedbackModal"),i=x._quartz,a=i.workspace,o=i.department,s=(n=i.domain,name=(n||"").trim().replace(/^\.+|\.+$/g,""),/^https:\/\//i.test(name)?name.replace(/\/+$/,""):/^[a-z0-9-]+(\.[a-z0-9-]+)+$/i.test(name)?"https://quartz."+name:""),c=r.querySelector("#appticsfeedbackclose"),d=r.querySelectorAll(".zasdk-feedback-type");uo.fileInput=r.querySelector("#zasdkFileInput");var u=r.querySelector("#zasdkqz_rec_button"),l=r.querySelector("#zasdk_submit_btn"),p=r.querySelector("#zasdk_submit_btnsubcnt");const f=r.querySelector("#zasdkqz-consent"),g=r.querySelector("#zasdkqz-content"),m=r.querySelector("#preivewPlayButton"),h=r.querySelector("#videoEditButton"),v=r.querySelector("#videoDelButton"),k=r.querySelector("#zasdkFeedbackconatiner"),b=r.querySelector("#zasdkDescription");!function(e){var t=e.querySelector(".zasdk-header");if(t){var n=0,r=0,i=0,a=0,o=!1;t.addEventListener("mousedown",function(s){if(!s.target.closest(".zasdk-close")){if(!e.style.left||"auto"===e.style.left){var c=e.getBoundingClientRect();e.style.right="auto",e.style.bottom="auto",e.style.left=c.left+"px",e.style.top=c.top+"px"}o=!0,n=s.clientX,r=s.clientY,i=parseInt(e.style.left,10),a=parseInt(e.style.top,10),t.style.cursor="grabbing",s.preventDefault()}}),document.addEventListener("mousemove",function(t){if(o){var s=i+(t.clientX-n),c=a+(t.clientY-r);e.style.left=Math.max(0,Math.min(s,window.innerWidth-e.offsetWidth))+"px",e.style.top=Math.max(0,Math.min(c,window.innerHeight-e.offsetHeight))+"px"}}),document.addEventListener("mouseup",function(){o&&(o=!1,t.style.cursor="grab")})}}(k),Ha(r,!0===uo._opts.isAnonymous),Va(r,uo._opts),uo.isScaled=!1,uo.isHidden=!1,document.removeEventListener("quartz-feedback-state",uo.bindQuartzEvent),document.addEventListener("quartz-feedback-state",uo.bindQuartzEvent),document.removeEventListener("quartz-feedback-error",uo.handleErrorQuartzEvent),document.addEventListener("quartz-feedback-error",uo.handleErrorQuartzEvent);var y=i.enabled&&!_(s)&&!_(a)&&!_(o),z=r.querySelector("#zasdkreccheckcnt");z.style.display=y&&eo()?"block":"none",y&&!eo()&&Qa(Wa(i.cdnUrl,String(x._defaultoptions.serviceUrl||""))).then(function(e){e&&z.isConnected&&(z.style.display="block")}),k.addEventListener("transitionend",function(e){"transform"===e.propertyName&&uo.isScaled&&uo.toggleWindowAnimation()}),u.onclick=function(e){e.stopImmediatePropagation();let t={workspaceLinkName:a,departmentLinkName:o,recordingDomain:s};uo.handleStatusmsg(),eo()?_(a)||_(o)||_(s)?uo.handleStatusmsg(!1,"Screen recording is not configured for this app."):to().startRecording(t):uo.handleStatusmsg(!1,"Screen recording is unavailable on this page.")},c.onclick=function(){uo.close()},c.onkeydown=function(e){"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),uo.close())},document.addEventListener("keydown",uo.onEscape),m.addEventListener("click",function(){to().previewVideo()}),h.addEventListener("click",function(){to().editVideo({quartzBranding:!1})}),v.addEventListener("click",function(){var e=document.getElementById("zasdkFeedbackModal");to().clearFeedback(),f.checked=!1,g.classList.remove("zasdkqz-show"),e.querySelector("#editRecordedVideo").style.display="none",e.querySelector("#zasdkreccheckcnt").style.display="block",uo.validateFeedbackField()}),l.addEventListener("click",async()=>{uo.validateFeedbackField(),l.disabled=!0,p.classList.add("zasdkbtndisabled"),l.value="";try{let e=r.querySelector("#previewVideoElemId");if(e&&null!==e.offsetParent)uo.submitRecording();else{let message=r.querySelector("#zasdkDescription").value.trim();message.length>0?ro(oo(r,message,"")):uo.handleStatusmsg(!1,"Please provide more details for us to help you better.")}}catch(e){C.error("sendFeedbackData : "+e)}}),f.addEventListener("change",function(){this.checked?g.classList.add("zasdkqz-show"):g.classList.remove("zasdkqz-show")}),b.addEventListener("input",uo.validateFeedbackField);try{b.focus({preventScroll:!0})}catch(e){}if(d.forEach(function(e){e.addEventListener("click",function(){d.forEach(function(e){e.classList.remove("zasdk-selected")}),this.classList.add("zasdk-selected")})}),"number"==typeof uo._opts.type){var A=Object.keys(uo.typeObj).filter(function(name){return uo.typeObj[name]===uo._opts.type})[0],w=A?r.querySelector('.zasdk-feedback-type[data-type="'+A+'"]'):null;w&&(d.forEach(function(e){e.classList.remove("zasdk-selected")}),w.classList.add("zasdk-selected"))}_(uo._opts.message)||(b.value=String(uo._opts.message),uo.updateLeftCount(),uo.validateFeedbackField()),uo.selectedFiles=so(),uo.fileInput.onchange=function(){const e=this;var t=uo.selectedFiles;if(null!==t){if(t.files.length+e.files.length>5)return uo.handleStatusmsg(!1,"Maximum 5 attachments is allowed"),uo.fileInput.files=t.files,void(e.files=t.files);if(e.files.length>0){let n=0;for(let r of e.files){if(n+=r.size,n>10485760)return uo.handleStatusmsg(!1,"Maximum limit reached. The total file size cannot exceed 10MB."),void(e.files=t.files);t.items.add(r)}e.files=t.files,uo.fileAttachment()}else t.files.length>0&&(e.files=t.files)}},uo.handleStatusmsg(),uo.updateLeftCount()},updateLeftCount:function(){document.querySelectorAll("[reqname]").forEach(function(e){let t=e.value,n=parseInt(e.getAttribute("maxlength")||"",10),r=e.parentElement?e.parentElement.querySelector(".zaleftcharcnt"):null;if(r){r.textContent=String(n-t.length);var i=r.parentElement?r.parentElement.querySelector(".zaleftchartxt"):null;i&&(i.textContent=n-t.length===1?"character left":"characters left")}})},handleStatusmsg:function(e,t){var n=document.getElementById("zasdkFeedbackModal");if(!_(n)){var r=n.querySelector("#zasdksubmitstatus"),i=n.querySelector("#zasdk_submit_btn"),a=n.querySelector("#zasdk_submit_btnsubcnt"),o="",s="";r.style.display="none",_(e)||(o=e?"zasdkstssucs":"zasdkstserror",s=_(t)?"":t,r.textContent=s,r.classList.add(o),r.style.display="block",a.classList.remove("zasdkbtndisabled"),i.disabled=!1,i.value="Send")}},handleErrorQuartzEvent:function(e){let t=e.detail.error.name,n=e.detail.error.message;t!=no().ErrorType.RECORDING_INTERRUPTED&&t!=no().ErrorType.FEEDBACK_TIMEOUT||uo.stopRecording(),uo.handleStatusmsg(!1,n)},bindQuartzEvent:function(e){if(e.detail.feedbackState==no().FeedbackState.RECORDING_IN_PROGRESS){_(t=document.getElementById("zasdkrectimer"))||t.remove();const e=document.createElement("div");e.innerHTML=uo.timerHtml;const n=e.firstElementChild;n.setAttribute("data-zasdk-theme",x._config.feedback_theme),document.body.appendChild(n);var t=document.getElementById("zasdkrectimer");uo.timerDisplay=t.querySelector("#zasdkTimerDisplay"),uo.recordButton=t,uo.TOTAL_TIME=300,uo.remainingTime=uo.TOTAL_TIME,uo.isRecording=!0,uo.recordButton.addEventListener("click",uo.toggleRecording),uo.startRecording(),uo.toggleWindowAnimation()}},onEscape:function(e){"Escape"===e.key&&uo.close()},close:function(){var e=document.getElementById("zasdkFeedbackModal");document.removeEventListener("keydown",uo.onEscape),document.removeEventListener("quartz-feedback-state",uo.bindQuartzEvent),to().clearFeedback(),_(e)||e.remove()},toggleWindowAnimation:function(){var e=document.getElementById("zasdkFeedbackModal");const t=e.querySelector("#zasdkFeedbackconatiner");uo.isHidden?(e.style.display="block",setTimeout(()=>{t.style.transform="scale(1)",uo.validateFeedbackField()},10),uo.isHidden=!1,uo.isScaled=!1):uo.isScaled?(e.style.display="none",uo.isHidden=!0):(t.style.transform="scale(0)",uo.isScaled=!0)},fileAttachment:function(){var e=uo.fileInput.files;uo.uploadTotalSize=0,uo.MaxFileSize=10485760;var t=document.getElementById("zasdkFeedbackModal"),n=t.querySelector("#zasdkfilesizeinfo"),r=t.querySelector("#zasakfileList");if(n.textContent="",e.length>5)return uo.fileLimitExceeded(!1,!0),void uo.validateFeedbackField();if(r.innerHTML="",e.length>0){for(var i=0,a=0;a<e.length;a++){var o=e[a].name,s=o.substring(0,o.lastIndexOf(".")),c=o.substring(o.lastIndexOf(".")+1);i+=e[a].size;var d=uo.elementCreator("li");d.title=o;var u=uo.elementCreator("span");u.className="zaskFdBckFlName",u.innerText=s.length>10?s.slice(0,3)+"..."+s.slice(-3):s;var l=uo.elementCreator("span");l.innerText="."+c;var p=uo.elementCreator("span");p.className="zasdkFdBckFlCls",p.setAttribute("data-name",o),p.innerHTML="&times;",d.appendChild(u),d.appendChild(l),d.appendChild(p),r.appendChild(d)}var f=i>uo.MaxFileSize;uo.fileLimitExceeded(f),n.textContent=`${uo.formatFileSize(i)} Used / 10 MB`;const g=t.querySelectorAll(".zasdkFdBckFlCls");Array.from(g).forEach(function(e){e.addEventListener("click",function(){uo.handleStatusmsg(),uo.removeFileFromList(this),uo.fileAttachment()})})}uo.validateFeedbackField()},elementCreator:function(e){return document.createElement(e)},fileLimitExceeded:function(e,t){var n="";(t||e)&&(n=t?"Maximum 5 attachments is allowed":"Maximum limit reached. The total file size cannot exceed 10MB."),uo.handleStatusmsg(!1,n)},removeFileFromList:function(e){e.getAttribute("data-name");const t=e.parentElement,n=Array.from(t.parentElement.children).indexOf(t);t.remove();let r=so();if(uo.selectedFiles=so(),null!==r&&null!==uo.selectedFiles){for(let e=0;e<uo.fileInput.files.length;e++)e!==n&&(r.items.add(uo.fileInput.files[e]),uo.selectedFiles.items.add(uo.fileInput.files[e]));uo.fileInput.files=r.files}},formatFileSize:function(e){if(0===e)return"0 KB";const t=1024,n=e/t,r=e/(t*t),i=e/(t*t*t);return i>=1?i.toFixed(2)+" GB":r>=1?r.toFixed(2)+" MB":n.toFixed(2)+" KB"},toggleRecording:function(){uo.isRecording=!uo.isRecording,uo.isRecording?uo.startRecording():uo.stopRecording()},startRecording:function(){uo.timerInterval||(uo.timerInterval=setInterval(uo.updateTimer,1e3))},stopRecording:function(){var e=document.getElementById("zasdkFeedbackModal");clearInterval(uo.timerInterval||void 0),uo.timerInterval=null,document.querySelector("#zasdkrectimer").remove(),uo.toggleWindowAnimation(),e.querySelector("#editRecordedVideo").style.display="block",e.querySelector("#zasdkreccheckcnt").style.display="none";let t=e.querySelector("#previewVideoElemId");to().endRecording(),to().setVideoContent(t)},submitRecording:function(){var t=document.getElementById("zasdkFeedbackModal");let n=Da.anonymous?"":String(Da.userid||""),r=_(x._user_info.userid)?"":String(x._user_info.userid),i=_(n)?r:n,a=t.querySelector("#zasdkDescription").value.trim()||"-";i=/^[\w]([\w\-\.\+\'=]*)@([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,22}$/.test(i)&&Xe()==e.USAGE_TRACKING_WITH_PII?i:"user@example.com",to().submitRecording({email:i,subject:a}).then(e=>{var n=!b(e)&&e&&e.hasOwnProperty("feedbackLink")&&e.feedbackLink||"";ro(oo(t,a,n))}).catch(error=>{C.error("submitRecording : "+error),uo.handleStatusmsg(!1,"Could not upload the recording. Please try again.")})},updateTimer:function(){uo.remainingTime>0?(uo.remainingTime--,uo.updateDisplay()):uo.stopRecording()},updateDisplay:function(){const e=Math.floor(uo.remainingTime/60),t=uo.remainingTime%60;uo.timerDisplay.textContent=`${e.toString().padStart(2,"0")}:${t.toString().padStart(2,"0")}`},validateFeedbackField:function(){uo.updateLeftCount();var e=document.getElementById("zasdkFeedbackModal");const t=e.querySelector("#zasdkDescription"),n=e.querySelector("#zasdkFileInput"),r=e.querySelector("#previewVideoElemId"),i=e.querySelector("#zasdk_submit_btn"),a=t&&""!==t.value.trim()&&t.value.trim().length>0;n&&n.files&&n.files.length,r&&r.offsetParent;const o=e.querySelectorAll(".zasdkmaxerror");!(uo.getVisibleErrorCount(o)>0)&&a?(i.classList.remove("zasdkbtndisableclr"),uo.handleStatusmsg()):i.classList.add("zasdkbtndisableclr")},getVisibleErrorCount:function(e){return Array.from(e).filter(e=>null!==e.offsetParent).length}},lo=F("AppticsFeedback.feedbackFormOpen",function feedbackFormOpen(options){void 0===options||io(options)||ao||(ao=!0,R("AppticsFeedback.feedbackFormOpen: takes one options object, as feedbackFormOpen({ type, message, includeLog, includeDiagnostics, attachments, logFiles, isAnonymous }); opening it with its defaults"));const e=io(options)?options:{},t={includeLog:!0===e.includeLog,includeDyninfo:!0===e.includeDiagnostics,isAnonymous:!0===e.isAnonymous};"number"==typeof e.type&&(t.type=e.type),"string"==typeof e.message&&e.message.length>0&&(t.message=e.message),e.attachments&&e.attachments.length>0&&(t.attachments=e.attachments),e.logFiles&&e.logFiles.length>0&&(t.logFiles=e.logFiles),function(e){try{if(!e||"undefined"==typeof document)return;if(document.querySelector('[data-apptics="style"]'))return;var t=document.createElement("style");t.setAttribute("data-apptics","style"),t.textContent=e,(document.head||document.documentElement).appendChild(t)}catch(e){}}('.zasdk-modal{color:var(--zasdk-text-color);margin:0;padding:0;font-family:inherit;line-height:normal}.zasdk-modal p{margin:0}.zasdk-modal ul{margin:0;padding:0;list-style:none}.zasdk-modal,.zasdk-timer-container{--zasdk-background-color:#fff;--zasdk-text-color:#333;--zasdk-border-color:#ddd;--zasdk-modal-background:#0006;--zasdk-close-color:#aaa;--zasdk-close-hover-color:#000;--zasdk-input-background:#fff;--zasdk-button-background:#f0f0f0;--zasdk-primary-color:#007bff;--zasdk-primary-text-color:#000;--zasdk-button-text-color:#fff;--zasdk-secondary-background:#ddd;--zasdk-icon-border-color:#ccc;--zasdk-dropdown-hover:#f0f0f0;--zasdk-selected-background:#f0f0f0;--zasdk-selected-border:#ddd;--zasdk-muted-text:#999;--zasdk-link-color:#0078d4;--zasdk-switch-off:#ccc;--zasdk-viewer-background:#f8f8f8;--zasdk-placeholder-color:#757575;--zasdk-shadow:#0000002e}.zasdk-modal[data-zasdk-theme=dark],.zasdk-timer-container[data-zasdk-theme=dark],.zasdk-modal.zasdk-dark-theme,.zasdk-timer-container.zasdk-dark-theme{--zasdk-background-color:#1a1a1a;--zasdk-text-color:#f0f0f0;--zasdk-border-color:#444;--zasdk-modal-background:#ffffff1a;--zasdk-close-color:#888;--zasdk-close-hover-color:#fff;--zasdk-input-background:#2a2a2a;--zasdk-button-background:#333;--zasdk-primary-color:#2f7bd8;--zasdk-primary-text-color:#fff;--zasdk-secondary-background:#333;--zasdk-icon-border-color:#555;--zasdk-dropdown-hover:#2a2a2a;--zasdk-selected-background:#2a2a2a;--zasdk-selected-border:#555;--zasdk-muted-text:#888;--zasdk-link-color:#5aa9ff;--zasdk-switch-off:#555;--zasdk-viewer-background:#222;--zasdk-placeholder-color:#9a9a9a;--zasdk-shadow:#0009}@media (prefers-color-scheme:dark){.zasdk-modal[data-zasdk-theme=auto],.zasdk-timer-container[data-zasdk-theme=auto]{--zasdk-background-color:#1a1a1a;--zasdk-text-color:#f0f0f0;--zasdk-border-color:#444;--zasdk-modal-background:#ffffff1a;--zasdk-close-color:#888;--zasdk-close-hover-color:#fff;--zasdk-input-background:#2a2a2a;--zasdk-button-background:#333;--zasdk-primary-color:#2f7bd8;--zasdk-primary-text-color:#fff;--zasdk-secondary-background:#333;--zasdk-icon-border-color:#555;--zasdk-dropdown-hover:#2a2a2a;--zasdk-selected-background:#2a2a2a;--zasdk-selected-border:#555;--zasdk-muted-text:#888;--zasdk-link-color:#5aa9ff;--zasdk-switch-off:#555;--zasdk-viewer-background:#222;--zasdk-placeholder-color:#9a9a9a;--zasdk-shadow:#0009}}.zasdk-modal-content *{box-sizing:border-box;font-size:14px}.zasdk-modal{z-index:214748364;pointer-events:none;width:100%;height:100%;color:var(--zasdk-primary-text-color);background:0 0;position:fixed;top:0;left:0;overflow:visible}.zasdk-modal-content{background-color:var(--zasdk-background-color);border:1px solid var(--zasdk-border-color);width:500px;max-width:calc(100% - 40px);max-height:calc(100% - 40px);box-shadow:0 8px 24px var(--zasdk-shadow);pointer-events:auto;-webkit-user-select:none;user-select:none;border-radius:8px;flex-direction:column;padding:10px 0 20px;transition:none;display:flex;position:fixed;inset:auto 20px 20px auto}.zasdk-header{cursor:grab;justify-content:space-between;align-items:center;margin-bottom:20px;padding:0 20px;display:flex}.zasdk-title{margin:0;font-size:24px;font-weight:700}.zasdk-close{color:var(--zasdk-close-color);cursor:pointer;font-size:28px;font-weight:700}.zasdk-close svg path{fill:var(--zasdk-primary-text-color)}.zasdk-close:hover,.zasdk-close:focus{color:var(--zasdk-close-hover-color);cursor:pointer;text-decoration:none}.zasdk-feedback-types{text-align:center;justify-content:space-evenly;margin-bottom:20px;font-size:14px;display:flex}.zasdk-feedback-type{cursor:pointer;display:inline-block}.zasdk-iconcnt{background-color:var(--zasdk-background-color);border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;margin-bottom:5px;font-weight:700;display:inline-block}.zasdk-form{max-height:calc(100% - 190px);padding:0 20px;position:relative;overflow-y:auto}.zasdk-form select,.zasdk-form input,.zasdk-form textarea{border:1px solid var(--zasdk-border-color);background-color:var(--zasdk-input-background);width:100%;color:var(--zasdk-text-color);border-radius:4px;margin-bottom:15px;padding:8px;font-family:inherit;font-size:14px}.zasdk-form textarea::placeholder,.zasdk-form input::placeholder{color:var(--zasdk-placeholder-color);opacity:1}.zasdk-form textarea{resize:none;height:100px}.zasdkdesclbl{margin-bottom:5px;font-weight:700;display:block}.zasdkmadfeld{color:#f33558;padding-left:3px}.zaleftcharspan{float:right}.zaleftchartxt{margin-left:3px;font-weight:400}.zasdk_submit_btncnt{justify-content:end;align-items:center;margin-top:20px;padding:0 20px;display:flex}.zasdkstsmsg{text-align:end;margin-right:20px;font-size:14px;display:none}.zasdkstserror{color:#f33155}.zasdkstssucs{color:#009c08}.zasdk-buttons{margin-top:20px}.zasdk-btn{cursor:pointer;text-align:center;border:none;border-radius:4px;padding:7px 20px;font-size:14px}.zasdk-send-btn{background-color:var(--zasdk-primary-color);color:var(--zasdk-button-text-color);min-width:81px;height:34px}.zasdk-attach-btn{background-color:var(--zasdk-button-background);vertical-align:middle;justify-content:center;align-items:center;height:40px;margin-bottom:0;margin-right:10px;padding:10px 15px 10px 5px;font-size:14px;font-weight:400;display:inline-flex}.zasdkfilesizeinf{vertical-align:middle;margin-top:10px;font-size:13px;display:inline-block}.zasdkattachinf{vertical-align:middle;margin-bottom:10px;font-size:13px;display:inline-block}input[type=file].zasdk-file-input{display:none}.zasdkfeedback__icon{border:1px solid var(--zasdk-icon-border-color);vertical-align:middle;text-align:center;box-sizing:border-box;border-radius:100%;width:32px;height:32px;transition:all .5s;display:inline-block}.zasdk-feedback-types svg{width:inherit;height:inherit;vertical-align:middle;display:inline-block}.zasdkfeedback__icon-report .zasdkfeedback__icon{fill:#ff4122}.zasdkfeedback__icon-report svg{width:28px;height:100%}.zasdk-feedback-type{text-align:center;border:1px solid #0000;width:90px;padding:10px 0;transition:all .5s}.zasdk-selected{border:1px solid var(--zasdk-selected-border);background-color:var(--zasdk-selected-background);border-radius:6px}.zasdk-selected .zasdkfeedback__icon-report .zasdkfeedback__icon{fill:#fff;background:#ff4122;border-color:#ff4122}.zasdk-feedback-type:hover .zasdkfeedback__icon-report .zasdkfeedback__icon{border-color:#ff4122}.zasdkfeedback__icon-reqest .zasdkfeedback__icon{fill:#a63cff}.zasdkfeedback__icon-reqest svg{width:24px;height:100%}.zasdk-feedback-type:hover .zasdkfeedback__icon-reqest .zasdkfeedback__icon{border-color:#a63cff}.zasdk-selected .zasdkfeedback__icon-reqest .zasdkfeedback__icon{fill:#fff;background:#a63cff;border-color:#a63cff}.zasdkfeedback__icon-help .zasdkfeedback__icon{fill:#fba400}.zasdkfeedback__icon-help svg{width:28px;height:100%}.zasdk-feedback-type:hover .zasdkfeedback__icon-help .zasdkfeedback__icon{border-color:#fba400}.zasdk-selected .zasdkfeedback__icon-help .zasdkfeedback__icon{fill:#fff;background:#fba400;border-color:#fba400}.zasdkfeedback__icon-appreciate .zasdkfeedback__icon{fill:#ff297a}.zasdkfeedback__icon-appreciate svg{width:25px;height:28px}.zasdk-feedback-type:hover .zasdkfeedback__icon-appreciate .zasdkfeedback__icon{border-color:#ff297a}.zasdk-selected .zasdkfeedback__icon-appreciate .zasdkfeedback__icon{fill:#fff;background:#ff297a;border-color:#ff297a}.zasdk-btncnt{margin-bottom:10px}.zasdk-dropdown{width:100%;margin-bottom:15px;position:relative}.zasdk-dropdown-header{border:1px solid var(--zasdk-border-color);cursor:pointer;background-color:var(--zasdk-input-background);color:var(--zasdk-text-color);border-radius:4px;padding:5px 10px}.zasdk-dropdown-options{background-color:var(--zasdk-background-color);border:1px solid var(--zasdk-border-color);z-index:1;border-radius:5px;display:none;position:absolute;top:35px;left:0;right:0}.zasdk-dropdown-option{cursor:pointer;padding:5px 10px}.zasdk-dropdown-option:hover{background-color:var(--zasdk-dropdown-hover)}.zasdkqz-container{width:100%;color:var(--zasdk-text-color);background:var(--zasdk-secondary-background);box-sizing:border-box;border-radius:8px;padding:15px;font-size:14px}.zasdkqz-checkbox-wrapper{align-items:flex-start;display:flex;position:relative}input[type=checkbox].zasdkqz-checkbox{opacity:0;width:auto;margin:0;position:absolute}.zasdkqz-checkbox+label{cursor:pointer;margin:0;padding-left:30px;font-weight:400;line-height:1.5;display:inline-block;position:relative}.zasdkqz-checkbox+label:before{content:"";border:1px solid var(--zasdk-primary-color);border-radius:4px;width:18px;height:18px;position:absolute;top:2px;left:0}.zasdkqz-checkbox:focus+label:before{border:2px solid var(--zasdk-primary-color)}.zasdkqz-content .zasdkqz-prop-content{margin-top:10px;padding-left:30px}.zasdkqz-checkbox:checked+label:before{background:var(--zasdk-primary-color)}.zasdkqz-checkbox:checked+label:after{content:"";border:0 solid #fff;border-width:0 0 1px 1px;width:10px;height:5px;transition:transform .3s;position:absolute;top:6px;left:10px;transform:rotate(-40deg)translate(-50%,-50%)scale(1)}.zasdkqz-content{max-height:0;transition:max-height .5s;overflow:hidden}.zasdkqz-content.zasdkqz-show{max-height:250px;display:block}.zasdkqz-button{background:var(--zasdk-primary-color);color:var(--zasdk-button-text-color);cursor:pointer;border:none;border-radius:4px;margin-top:16px;padding:10px 20px;text-decoration:none;transition:background-color .3s;display:inline-block}.zasdkqz-button:hover{background:var(--zasdk-primary-color)}.zasdkqz-info{margin-top:5px;font-size:14px}.zasdkqz-icon{vertical-align:middle;width:20px;height:20px;margin-left:4px;display:inline-block}.zasdk-modal .zasakfilelstcnt{margin-top:10px;list-style:none}.zasdk-modal .zasakfilelstcnt li{border:1px solid var(--zasdk-border-color);vertical-align:middle;cursor:default;background:var(--zasdk-secondary-background);border-radius:3px;margin:0 5px 5px 0;padding:2px 20px 2px 5px;font-size:1.1rem;display:inline-flex;position:relative}.zaskFdBckFlName{box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;max-width:120px;display:inline-block;overflow:hidden}.zasdkFdBckFlCls{background:var(--zasdk-secondary-background);cursor:pointer;border-radius:0 3px 3px 0;padding:0 3px;font-size:14px;line-height:22px;position:absolute;top:0;bottom:0;right:2px}.zasdkmaxerror{color:#f33155;font-size:14px}.zasdk-timer-container{background-color:var(--zasdk-secondary-background);z-index:11111;cursor:pointer;border-radius:50px;align-items:center;gap:8px;padding:8px 10px;display:inline-flex;position:fixed;bottom:10px;right:10px;box-shadow:0 4px 15px #0000001a}.zasdk-timer-stopcricle{cursor:pointer;background-color:#f33155;border:none;border-radius:50%;width:12px;height:12px;padding:0;animation:1s infinite alternate blink}@keyframes blink{0%{opacity:1}to{opacity:.3}}.zasdk-timer-control{border:1px solid #f33155;border-radius:100%;padding:3px}.zasdk-timer-display{color:var(--zasdk-text-color);text-align:left;min-width:55px;font-size:14px;font-weight:500}.zasdk_videoPrev{justify-content:center;display:flex}.zasdk_videoPrev video{opacity:.4}.zasdk_recordedClipArea{border:1px solid var(--zasdk-border-color);border-radius:6px;display:none;position:relative}.zasdk_recordedClipArea .zasdk_rec_hdr{background-color:var(--zasdk-secondary-background);color:var(--zasdk-text-color);border-radius:3px 3px 0 0;padding:5px 10px}.zasdk_rec_hdr_icon{vertical-align:middle;display:inline-block;position:relative}.zasdk_rec_hdr i{vertical-align:middle;line-height:normal}.zasdk_rec_hdr svg{width:20px}.zasdk_playEdit{z-index:1;justify-content:space-between;align-items:stretch;width:180px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.zasdk_clipAreaButtonCnt,.zasdk_submit_btnsubcnt{position:relative}.zasdk_clipAreaButton{background:var(--zasdk-background-color);border:1px solid var(--zasdk-border-color);box-sizing:border-box;cursor:pointer;border-radius:6px;justify-content:center;align-items:center;width:50px;height:40px;display:flex;box-shadow:0 0 9px #0003}.zasdk_clipAreaButton:hover{background:var(--zasdk-dropdown-hover)}.zasdk_clipAreaButton svg{width:28px}.zasdk-send-btn.zasdkbtndisableclr{filter:grayscale();pointer-events:none;opacity:.5}.zasdk-send-btn.zasdkbtndisabled{cursor:not-allowed;position:relative}.zasdkbtndisabled:after{content:"";border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:20px;height:20px;margin:auto;animation:1s ease-in-out infinite zasdkbuttonspin;position:absolute;inset:0}@keyframes zasdkbuttonspin{to{transform:rotate(360deg)}}.zasdk-tooltip,.zasdk-tooltip-top{visibility:hidden;color:#fff;opacity:0;z-index:111111;background-color:#000;border-radius:4px;width:max-content;max-width:200px;margin-top:8px;padding:8px 12px;font-size:14px;transition:opacity .2s;position:absolute;top:100%;left:50%;transform:translate(-50%)}.zasdk-tooltip:after,.zasdk-tooltip-top:after{content:"";border:5px solid #0000;border-bottom-color:#000;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.zasdk-tooltip-container:hover .zasdk-tooltip,.zasdk-tooltip-container:hover .zasdk-tooltip-top{visibility:visible;opacity:1}.zasdk-tooltip-top{margin-top:0;margin-bottom:8px;top:auto;bottom:100%}.zasdk-tooltip-top:after{border-color:#000 #0000 #0000;top:100%}.zasdk-prop-info{max-width:320px}.zasdk-prop-info li{font-size:13px}.zasdkqz-content:has(.zasdk_rec_hdr:hover){overflow:visible}@media (width<=450px){.zasdk-modal-content{width:calc(100% - 10px);bottom:5px;left:5px;right:5px}}@media (height<=600px){.zasdk-modal-content{max-height:100%;top:auto}}@media (width<=370px){.zasdk-feedback-type{width:70px}.zasdk-iconcnt,.zasdkfeedback__icon{width:25px;height:25px}.zasdkfeedback__icon-report svg{width:20px;height:100%}.zasdkfeedback__icon-reqest svg{width:18px}.zasdkfeedback__icon-help svg{width:18px;height:22px}.zasdkfeedback__icon-appreciate svg{width:20px;height:20px}.zasdk-feedback-type *{word-break:break-word;font-size:12px}.zasdk-buttons{margin-top:0}}.zasdk-custom-select{width:100%;margin-bottom:15px;font-size:14px;position:relative}.zasdk-select-trigger{border:1px solid var(--zasdk-border-color);background:var(--zasdk-input-background);cursor:pointer;color:var(--zasdk-text-color);-webkit-user-select:none;user-select:none;border-radius:4px;justify-content:space-between;align-items:center;padding:9px 12px;display:flex}.zasdk-select-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.zasdk-select-arrow{flex-shrink:0;margin-left:8px}.zasdk-select-panel{background:var(--zasdk-input-background);border:1px solid var(--zasdk-border-color);box-shadow:0 6px 20px var(--zasdk-shadow);z-index:99;border-radius:8px;position:absolute;top:calc(100% + 3px);left:0;right:0;overflow:hidden}.zasdk-select-list{max-height:180px;margin:0;padding:4px 0;list-style:none;overflow-y:auto}.zasdk-select-option{cursor:pointer;color:var(--zasdk-text-color);justify-content:space-between;align-items:center;padding:10px 16px;font-size:14px;display:flex}.zasdk-select-option:hover{background:var(--zasdk-dropdown-hover)}.zasdk-select-option.zasdk-option-selected{color:var(--zasdk-link-color);font-weight:500}.zasdk-select-empty{color:var(--zasdk-muted-text);text-align:center;padding:10px 16px;font-size:13px;font-style:italic}.zasdk-toggles-section{margin:5px 16px}.zasdk-toggle-row{border-top:1px solid var(--zasdk-border-color);justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:flex}.zasdk-toggle-info{flex-direction:row;flex:1;align-items:center;gap:8px;display:flex}.zasdk-toggle-label{color:var(--zasdk-text-color);font-size:14px;font-weight:600}.zasdk-view-link{color:var(--zasdk-link-color);cursor:pointer;white-space:nowrap;font-size:12px}.zasdk-view-link:hover{text-decoration:underline}.zasdk-toggle-separator{background:var(--zasdk-border-color);margin:0 16px}.zasdk-switch{flex-shrink:0;width:44px;height:24px;display:inline-block;position:relative}.zasdk-switch input{opacity:0;width:0;height:0}.zasdk-slider{cursor:pointer;background:var(--zasdk-switch-off);border-radius:24px;transition:all .3s;position:absolute;inset:0}.zasdk-slider:before{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:all .3s;position:absolute;bottom:3px;left:3px}.zasdk-switch input:checked+.zasdk-slider{background:var(--zasdk-link-color)}.zasdk-switch input:checked+.zasdk-slider:before{transform:translate(20px)}.zasdk-data-viewer{background:var(--zasdk-background-color);z-index:100;border-radius:12px;flex-direction:column;position:absolute;inset:0;overflow:hidden}.zasdk-viewer-hdr{border-bottom:1px solid var(--zasdk-border-color);flex-shrink:0;align-items:center;gap:10px;padding:14px 16px;display:flex}.zasdk-viewer-back{cursor:pointer;flex-shrink:0;align-items:center;padding:2px;display:flex}.zasdk-viewer-back:hover svg path{stroke:var(--zasdk-link-color)}.zasdk-viewer-title{color:var(--zasdk-text-color);flex:1;font-size:16px;font-weight:600}.zasdk-viewer-content{color:var(--zasdk-text-color);white-space:pre-wrap;word-break:break-word;background:var(--zasdk-viewer-background);border-radius:6px;flex:1;margin:8px;padding:16px;font-family:monospace;font-size:12px;overflow-y:auto}.zasdk-modal-content :focus-visible{outline:2px solid var(--zasdk-primary-color);outline-offset:2px}@media (prefers-reduced-motion:reduce){.zasdk-modal *,.zasdk-timer-container *{transition:none!important;animation:none!important}}'),uo.init(t)}),po=F("AppticsFeedback.feedbackFormClose",function feedbackFormClose(){uo.close()}),fo=F("AppticsFeedback.addFeedbackLog",function addFeedbackLog(message){"string"==typeof message&&0!==message.length&&_a({type:ma,happenedat:v(),message:ba(message)})}),go=F("AppticsFeedback.addDiagnosticsInfo",function addDiagnosticsInfo(heading,key,value){"string"==typeof heading&&0!==heading.length?"string"==typeof key&&0!==key.length?null!=value&&""!==value?_a({type:ha,happenedat:v(),heading:heading,key:key,value:ba(String(value))}):za('a value is required for "'+heading+'" / "'+key+'"'):za("a key is required"):za("a heading is required")}),mo=F("AppticsFeedback.setFeedbackTheme",function setFeedbackTheme(theme){-1!==co.indexOf(theme)?(x._config.feedback_theme=theme,"undefined"!=typeof document&&["zasdkFeedbackModal","zasdkrectimer"].forEach(function(id){var e=document.getElementById(id);e&&e.setAttribute("data-zasdk-theme",theme)})):C.warn("AppticsFeedback.setFeedbackTheme: takes 'light', 'dark' or 'auto', not "+JSON.stringify(theme))}),ho=F("AppticsFeedback.sendFeedback",function(...e){return ready().then(function(t){if(!t)throw new Error("AppticsFeedback.sendFeedback: not sent, the SDK has not started; call Apptics.init() first");return sendFeedback(...e)}).catch(function(e){throw C.error("AppticsFeedback.sendFeedback failed:",e),e})}),vo={AP_FEEDBACK_TYPE:t,feedbackFormOpen:function feedbackFormOpen(options){return j(lo,arguments)},feedbackFormClose:function feedbackFormClose(){return j(po,arguments)},sendFeedback:function sendFeedback(options){return j(ho,arguments)},addFeedbackLog:function addFeedbackLog(message){return j(fo,arguments)},addDiagnosticsInfo:function addDiagnosticsInfo(heading,key,value){return j(go,arguments)},setFeedbackTheme:function setFeedbackTheme(theme){return j(mo,arguments)}};var ko=null;function _o(e){var t=function(){if(null!==ko)return ko;var e={};return"AD:Europe/Andorra;AE:Asia/Dubai;AF:Asia/Kabul;AG:America/Antigua;AI:America/Anguilla;AL:Europe/Tirane;AM:Asia/Yerevan;AO:Africa/Luanda;AQ:Antarctica/Casey,Davis,DumontDUrville,Mawson,McMurdo,Palmer,Rothera,Syowa,Troll,Vostok;AR:America/Argentina/Buenos_Aires,Argentina/Catamarca,Argentina/ComodRivadavia,Argentina/Cordoba,Argentina/Jujuy,Argentina/La_Rioja,Argentina/Mendoza,Argentina/Rio_Gallegos,Argentina/Salta,Argentina/San_Juan,Argentina/San_Luis,Argentina/Tucuman,Argentina/Ushuaia,Buenos_Aires,Catamarca,Cordoba,Jujuy,Mendoza,Rosario;AS:Pacific/Pago_Pago,Samoa|US/Samoa;AT:Europe/Vienna;AU:Antarctica/Macquarie|Australia/ACT,Adelaide,Brisbane,Broken_Hill,Canberra,Currie,Darwin,Eucla,Hobart,LHI,Lindeman,Lord_Howe,Melbourne,NSW,North,Perth,Queensland,South,Sydney,Tasmania,Victoria,West,Yancowinna;AW:America/Aruba;AX:Europe/Mariehamn;AZ:Asia/Baku;BA:Europe/Sarajevo;BB:America/Barbados;BD:Asia/Dacca,Dhaka;BE:CET,MET|Europe/Brussels;BF:Africa/Ouagadougou;BG:Europe/Sofia;BH:Asia/Bahrain;BI:Africa/Bujumbura;BJ:Africa/Porto-Novo;BL:America/St_Barthelemy;BM:Atlantic/Bermuda;BN:Asia/Brunei;BO:America/La_Paz;BQ:America/Kralendijk;BR:America/Araguaina,Bahia,Belem,Boa_Vista,Campo_Grande,Cuiaba,Eirunepe,Fortaleza,Maceio,Manaus,Noronha,Porto_Acre,Porto_Velho,Recife,Rio_Branco,Santarem,Sao_Paulo|Brazil/Acre,DeNoronha,East,West;BS:America/Nassau;BT:Asia/Thimbu,Thimphu;BW:Africa/Gaborone;BY:Europe/Minsk;BZ:America/Belize;CA:America/Atikokan,Blanc-Sablon,Cambridge_Bay,Creston,Dawson,Dawson_Creek,Edmonton,Fort_Nelson,Glace_Bay,Goose_Bay,Halifax,Inuvik,Iqaluit,Moncton,Montreal,Nipigon,Pangnirtung,Rainy_River,Rankin_Inlet,Regina,Resolute,St_Johns,Swift_Current,Thunder_Bay,Toronto,Vancouver,Whitehorse,Winnipeg,Yellowknife|Canada/Atlantic,Central,Eastern,Mountain,Newfoundland,Pacific,Saskatchewan,Yukon;CC:Indian/Cocos;CD:Africa/Kinshasa,Lubumbashi;CF:Africa/Bangui;CG:Africa/Brazzaville;CH:Europe/Zurich;CI:Africa/Abidjan,Timbuktu|Iceland;CK:Pacific/Rarotonga;CL:America/Coyhaique,Punta_Arenas,Santiago|Chile/Continental,EasterIsland|Pacific/Easter;CM:Africa/Douala;CN:Asia/Chongqing,Chungking,Harbin,Kashgar,Shanghai,Urumqi|PRC;CO:America/Bogota;CR:America/Costa_Rica;CU:America/Havana|Cuba;CV:Atlantic/Cape_Verde;CW:America/Curacao;CX:Indian/Christmas;CY:Asia/Famagusta,Nicosia|Europe/Nicosia;CZ:Europe/Prague;DE:Atlantic/Jan_Mayen|Europe/Berlin,Busingen;DJ:Africa/Djibouti;DK:Europe/Copenhagen;DM:America/Dominica;DO:America/Santo_Domingo;DZ:Africa/Algiers;EC:America/Guayaquil|Pacific/Galapagos;EE:Europe/Tallinn;EG:Africa/Cairo|Egypt;EH:Africa/El_Aaiun;ER:Africa/Asmara;ES:Africa/Ceuta|Atlantic/Canary|Europe/Madrid;ET:Africa/Addis_Ababa;FI:Europe/Helsinki;FJ:Pacific/Fiji;FK:Atlantic/Stanley;FM:Pacific/Chuuk,Kosrae,Pohnpei;FO:Atlantic/Faeroe,Faroe;FR:Europe/Paris;GA:Africa/Libreville;GB:Europe/Belfast,London|GB,GB-Eire;GD:America/Grenada;GE:Asia/Tbilisi;GF:America/Cayenne;GG:Europe/Guernsey;GH:Africa/Accra;GI:Europe/Gibraltar;GL:America/Danmarkshavn,Godthab,Nuuk,Scoresbysund,Thule;GM:Africa/Banjul;GN:Africa/Conakry;GP:America/Guadeloupe;GQ:Africa/Malabo;GR:EET|Europe/Athens;GS:Atlantic/South_Georgia;GT:America/Guatemala;GU:Pacific/Guam;GW:Africa/Bissau;GY:America/Guyana;HK:Asia/Hong_Kong|Hongkong;HN:America/Tegucigalpa;HR:Europe/Zagreb;HT:America/Port-au-Prince;HU:Europe/Budapest;ID:Asia/Jakarta,Jayapura,Makassar,Pontianak,Ujung_Pandang;IE:Eire|Europe/Dublin;IL:Asia/Jerusalem,Tel_Aviv|Israel;IM:Europe/Isle_of_Man;IN:Asia/Calcutta,Kolkata;IO:Indian/Chagos;IQ:Asia/Baghdad;IR:Asia/Tehran|Iran;IS:Atlantic/Reykjavik;IT:Europe/Rome;JE:Europe/Jersey;JM:America/Jamaica|Jamaica;JO:Asia/Amman;JP:Asia/Tokyo|Japan;KE:Africa/Asmera,Nairobi;KG:Asia/Bishkek;KH:Asia/Phnom_Penh;KI:Pacific/Enderbury,Kanton,Kiritimati,Tarawa;KM:Indian/Comoro;KN:America/St_Kitts;KP:Asia/Pyongyang;KR:Asia/Seoul|ROK;KW:Asia/Kuwait;KY:America/Cayman;KZ:Asia/Almaty,Aqtau,Aqtobe,Atyrau,Oral,Qostanay,Qyzylorda;LA:Asia/Vientiane;LB:Asia/Beirut;LC:America/St_Lucia;LI:Europe/Vaduz;LK:Asia/Colombo;LR:Africa/Monrovia;LS:Africa/Maseru;LT:Europe/Vilnius;LU:Europe/Luxembourg;LV:Europe/Riga;LY:Africa/Tripoli|Libya;MA:Africa/Casablanca;MC:Europe/Monaco;MD:Europe/Chisinau,Tiraspol;ME:Europe/Podgorica;MF:America/Marigot;MG:Indian/Antananarivo;MH:Kwajalein|Pacific/Kwajalein,Majuro;MK:Europe/Skopje;ML:Africa/Bamako;MM:Asia/Rangoon,Yangon;MN:Asia/Choibalsan,Hovd,Ulaanbaatar,Ulan_Bator;MO:Asia/Macao,Macau;MP:Pacific/Saipan;MQ:America/Martinique;MR:Africa/Nouakchott;MS:America/Montserrat;MT:Europe/Malta;MU:Indian/Mauritius;MV:Indian/Maldives;MW:Africa/Blantyre;MX:America/Bahia_Banderas,Cancun,Chihuahua,Ciudad_Juarez,Ensenada,Hermosillo,Matamoros,Mazatlan,Merida,Mexico_City,Monterrey,Ojinaga,Santa_Isabel,Tijuana|Mexico/BajaNorte,BajaSur,General;MY:Asia/Kuala_Lumpur,Kuching;MZ:Africa/Maputo;NA:Africa/Windhoek;NC:Pacific/Noumea;NE:Africa/Niamey;NF:Pacific/Norfolk;NG:Africa/Lagos;NI:America/Managua;NL:Europe/Amsterdam;NO:Europe/Oslo;NP:Asia/Kathmandu,Katmandu;NR:Pacific/Nauru;NU:Pacific/Niue;NZ:Antarctica/South_Pole|NZ,NZ-CHAT|Pacific/Auckland,Chatham;OM:Asia/Muscat;PA:America/Coral_Harbour,Panama|EST;PE:America/Lima;PF:Pacific/Gambier,Marquesas,Tahiti;PG:Pacific/Bougainville,Port_Moresby,Truk,Yap;PH:Asia/Manila;PK:Asia/Karachi;PL:Europe/Warsaw|Poland;PM:America/Miquelon;PN:Pacific/Pitcairn;PR:America/Puerto_Rico,Virgin;PS:Asia/Gaza,Hebron;PT:Atlantic/Azores,Madeira|Europe/Lisbon|Portugal,WET;PW:Pacific/Palau;PY:America/Asuncion;QA:Asia/Qatar;RE:Indian/Reunion;RO:Europe/Bucharest;RS:Europe/Belgrade;RU:Asia/Anadyr,Barnaul,Chita,Irkutsk,Kamchatka,Khandyga,Krasnoyarsk,Magadan,Novokuznetsk,Novosibirsk,Omsk,Sakhalin,Srednekolymsk,Tomsk,Ust-Nera,Vladivostok,Yakutsk,Yekaterinburg|Europe/Astrakhan,Kaliningrad,Kirov,Moscow,Samara,Saratov,Ulyanovsk,Volgograd|W-SU;RW:Africa/Kigali;SA:Asia/Riyadh;SB:Pacific/Guadalcanal,Ponape;SC:Indian/Mahe;SD:Africa/Khartoum;SE:Europe/Stockholm;SG:Asia/Singapore|Singapore;SH:Atlantic/St_Helena;SI:Europe/Ljubljana;SJ:Arctic/Longyearbyen;SK:Europe/Bratislava;SL:Africa/Freetown;SM:Europe/San_Marino;SN:Africa/Dakar;SO:Africa/Mogadishu;SR:America/Paramaribo;SS:Africa/Juba;ST:Africa/Sao_Tome;SV:America/El_Salvador;SX:America/Lower_Princes;SY:Asia/Damascus;SZ:Africa/Mbabane;TC:America/Grand_Turk;TD:Africa/Ndjamena;TF:Indian/Kerguelen;TG:Africa/Lome;TH:Asia/Bangkok;TJ:Asia/Dushanbe;TK:Pacific/Fakaofo;TL:Asia/Dili;TM:Asia/Ashgabat,Ashkhabad;TN:Africa/Tunis;TO:Pacific/Tongatapu;TR:Asia/Istanbul|Europe/Istanbul|Turkey;TT:America/Port_of_Spain;TV:Pacific/Funafuti;TW:Asia/Taipei|ROC;TZ:Africa/Dar_es_Salaam;UA:Europe/Kiev,Kyiv,Simferopol,Uzhgorod,Zaporozhye;UG:Africa/Kampala;UM:Pacific/Midway,Wake;US:America/Adak,Anchorage,Atka,Boise,Chicago,Denver,Detroit,Fort_Wayne,Indiana/Indianapolis,Indiana/Knox,Indiana/Marengo,Indiana/Petersburg,Indiana/Tell_City,Indiana/Vevay,Indiana/Vincennes,Indiana/Winamac,Indianapolis,Juneau,Kentucky/Louisville,Kentucky/Monticello,Knox_IN,Los_Angeles,Louisville,Menominee,Metlakatla,New_York,Nome,North_Dakota/Beulah,North_Dakota/Center,North_Dakota/New_Salem,Phoenix,Shiprock,Sitka,Yakutat|HST,MST,Navajo|Pacific/Honolulu,Johnston|US/Alaska,Aleutian,Arizona,Central,East-Indiana,Eastern,Hawaii,Indiana-Starke,Michigan,Mountain,Pacific;UY:America/Montevideo;UZ:Asia/Samarkand,Tashkent;VA:Europe/Vatican;VC:America/St_Vincent;VE:America/Caracas;VG:America/Tortola;VI:America/St_Thomas;VN:Asia/Ho_Chi_Minh,Saigon;VU:Pacific/Efate;WF:Pacific/Wallis;WS:Pacific/Apia;YE:Asia/Aden;YT:Indian/Mayotte;ZA:Africa/Johannesburg;ZM:Africa/Lusaka;ZW:Africa/Harare".split(";").forEach(function(t){var n=t.indexOf(":"),r=t.slice(0,n);t.slice(n+1).split("|").forEach(function(t){var n=t.indexOf("/"),i=-1===n?"":t.slice(0,n+1);t.slice(i.length).split(",").forEach(function(t){e[i+t]=r})})}),ko=e,e}();return Object.prototype.hasOwnProperty.call(t,e)?t[e]:""}const bo=Object.freeze({1:"in"}),yo=Object.freeze({appversion:function(){return String(x._defaultoptions.appversion||"")},platform:function(){return String(x._platform||"")},browser:function(){return String(x._device_info.browser||"")},browserversion:function(){return String(x._device_info.browserversion||"")},osversion:function(){return String(x._device_info.osversion||"")},devicetype:function(){return String(x._device_info.devicetype||"")},language:function(){return String(navigator.language||"")},country:function(){var e=String(x._user_info.country||"").trim();if(""!==e)return e;var t="";try{t=String(Je()||"")}catch(e){t=""}var n=_o(t);return""===n?"":function(e){try{return new Intl.DisplayNames(["en"],{type:"region"}).of(e)||e}catch(t){return e}}(n)},customergroupid:function(){return String(x._user_info.groupid||"")},userid:function(){return String(x._user_info.userid||"")}});var zo={};function Ao(key,message){zo[key]||(zo[key]=!0,C.warn(message))}function wo(){zo={}}function So(e,conditionname){var key=String(e.key||"");if(void 0===bo[String(e.status)])return Ao("op:"+e.status,'AppticsRemoteConfig: unknown criteria operator "'+e.status+'", so conditions using it will not match'),!1;var t=function(e){var t=e.value;return Array.isArray(t)?t.map(function(e){return String(e)}):_(t)?[]:[String(t)]}(e);if("custom_sdk_value"===key){var n=qo(conditionname);return 0===n.length?(Ao("custom:"+conditionname,'AppticsRemoteConfig: no value for the custom condition "'+conditionname+'"; set one with setCustomConditionValue, or it will not match'),!1):n.some(function(e){return-1!==t.indexOf(e)})}var r=yo[key];if(void 0===r)return Ao("key:"+key,'AppticsRemoteConfig: unknown criteria "'+key+'", so conditions using it will not match'),!1;var i=r();return""!==i&&-1!==t.indexOf(i)}function Eo(e){var t=e&&e.criterias;if(!Array.isArray(t)||0===t.length)return!1;for(var n=0;n<t.length;n++)if(!So(t[n],String(e.conditionname||"")))return!1;return!0}function xo(e){var t={},n=Array.isArray(e.all_parameter)?e.all_parameter:[],r=Array.isArray(e.all_condition)?e.all_condition:[];return n.forEach(function(e){var name=String(e.paramname||"");""!==name&&(t[name]=function(e,t){var n={};(Array.isArray(e.conditions)?e.conditions:[]).forEach(function(e){n[String(e.conditionid)]=e});for(var r={},i=0;i<t.length;i++){var a=t[i],id=String(a.conditionid);r[id]=!0;var o=n[id];if(void 0!==o&&Eo(a))return String(void 0===o.value||null===o.value?"":o.value)}return Object.keys(n).forEach(function(id){r[id]||Ao("missing:"+id,'AppticsRemoteConfig: parameter "'+e.paramname+'" uses condition '+id+", which the server did not send")}),String(void 0===e.defaultvalue||null===e.defaultvalue?"":e.defaultvalue)}(e,r))}),t}const Po="remoteconfig";var To={},Oo=!1;function Io(){var e=Ie.item(Po);return e&&"object"==typeof e?e:null}function Co(){var e=Io();return e&&"number"==typeof e.flagtime?e.flagtime:0}function Ro(e){var t=Array.isArray(e.version)?e.version:[],n=0;return t.forEach(function(e){var t=Number(e.date);isFinite(t)&&t>n&&(n=t)}),n}function No(){var e=Io();To=e&&e.rules?xo(e.rules):{},Oo=!0}function Mo(){return Oo||No(),To}var Lo={};function qo(conditionname){var name=String(conditionname||"").trim();return Object.prototype.hasOwnProperty.call(Lo,name)?Lo[name]:[]}const Do="AppticsRemoteConfig",Fo=[Number(o.REMOTE_CONFIG)];var jo=null,Bo=0;var Uo=0;function Ho(){if(null!==jo)return jo;if(!1===x._remoteConfigEnabled||!1===x._remoteConfigReported)return C.log(Do+": switched off by the server, not asking"),Promise.resolve({});var e=zt(Do)||wt(Do);if(e)return e;var t,n,r=Bo,i=kt("getupdates",(t={appversionid:String(x._device_info.appversionid||""),moduleids:Fo,flagtime:Co()},n=String(navigator.language||"").slice(0,10),""!==n&&(t.languagecode=n),JSON.stringify(t)),gt(),Do).then(function(e){var t=e.data||{};if(r!==Bo)return t;!function(e){var status=e.tracking_status;if(status&&"object"==typeof status){var t=status[o.REMOTE_CONFIG];t&&"object"==typeof t&&(x._remoteConfigReported=!1!==t.enabled)}}(t);var n=t.remoteconfig,i=v();return Uo=i,n&&"object"==typeof n?function(e,t){wo();var n={flagtime:Ro(e)||t,rules:e,fetchedat:t};Ie.add(Po,n),To=xo(e),Oo=!0,C.log("AppticsRemoteConfig: "+Object.keys(To).length+" parameters, published "+n.flagtime)}(n,i):(!function(e){var t=Io();null!==t&&(t.fetchedat=e,Ie.add(Po,t))}(i),C.log(Do+": no changes since "+Co())),t}).then(function(e){return a(),e},function(e){return a(),Promise.reject(e)});function a(){jo===i&&(jo=null)}return jo=i}function Go(){return ready().then(function(e){if(!e)return!1;var t=v();return Uo>0&&t-Uo<3e5||Wt().then(function(){return Ho()}).then(function(){return!0},function(e){return C.log(Do+": fetch failed: "+String(e)),!1})})}function Vo(){Go()}function Ko(name){var e=Mo();return Object.prototype.hasOwnProperty.call(e,name)?e[name]:void 0}function Wo(value,callback){if("function"==typeof callback)try{callback(value)}catch(e){C.warn("AppticsRemoteConfig: the callback threw",e)}return value}Le.resetRemoteConfig=function(){Bo++,jo=null,Uo=0,x._remoteConfigReported=!0,Lo={},Ie.add(Po,void 0),To={},Oo=!1,wo()},Le.remoteConfigStarted=Vo,Le.remoteConfigUserChanged=No,x._ready&&Vo();const Zo=F("AppticsRemoteConfig.fetchValue",function fetchValue(name,callback){return Go().then(function(){var value=Ko(name);return Wo(void 0===value?null:value,callback)})}),Jo=F("AppticsRemoteConfig.fetchValues",function fetchValues(names,callback){"function"==typeof names&&(callback=names,names=void 0);var e=function(names){if(null==names)return null;if(!Array.isArray(names))return C.warn("AppticsRemoteConfig.fetchValues: takes a list of parameter names, as fetchValues(['a', 'b']); answering with every parameter"),null;var e=[];return names.forEach(function(name){var t="string"==typeof name?name.trim():"";""!==t&&-1===e.indexOf(t)&&e.push(t)}),0===e.length?null:e}(names),t="function"==typeof callback?callback:void 0;return Go().then(function(){var n=Mo(),r={};return(null===e?Object.keys(n):e).forEach(function(name){var value=Ko(name);r[name]=void 0===value?null:value}),Wo(r,t)})}),Yo=F("AppticsRemoteConfig.setCustomConditionValue",function setCustomConditionValue(conditionname,value){var name="string"==typeof conditionname?conditionname.trim():"";if(""!==name){var e=(null==value?"":String(value)).split(",").map(function(e){return e.trim()}).filter(function(e,t,n){return""!==e&&n.indexOf(e)===t});0===e.length?delete Lo[name]:Lo[name]=e,be().then(function(e){e&&No()})}else C.warn("AppticsRemoteConfig.setCustomConditionValue: a condition name is required")}),Qo={fetchValue:function fetchValue(name,callback){return j(Zo,arguments)},fetchValues:function fetchValues(names,callback){return j(Jo,arguments)},setCustomConditionValue:function setCustomConditionValue(conditionname,value){j(Yo,arguments)}},$o={filename:"",linenumber:0,fn:""},Xo={filename:"-",linenumber:0,fn:"-"},es=/debugger eval code/,ts=/^(global|eval) code(@|$)/,ns=/([^\s(@]+):(\d+):(\d+)\)?$/;const rs=/^at\s+(?:async\s+)?(.+?)\s+\(/,is=/^([^@\s]+)@/;function as(e){var t=rs.exec(e)||is.exec(e);return t&&t[1]||""}function os(e){var t=e.trim(),n=ns.exec(t);if(null===n)return null;var url,r,i,a=Number(n[2]);return isFinite(a)?{filename:(url=n[1]||"",r=url.split(/[?#]/)[0]||url,i=r.split("/"),(i[i.length-1]||r).slice(0,100)),linenumber:a,fn:as(t)}:null}function ss(e){try{return function(e,t){if(!e)return $o;for(var n=e.split("\n"),r=0,i=0;i<n.length;i++){var a=(n[i]||"").trim(),o=os(a);if(null!==o){if(!(r++<t))return"<anonymous>"===o.filename||es.test(a)?Xo:o}else if(r===t&&ts.test(a))return Xo}return $o}((new Error).stack,e+1)}catch(e){return $o}}const cs=Object.freeze({VERBOSE:1,DEBUG:2,INFO:3,WARN:4,ERROR:5});function ds(e){var name=String(e.fn||"").replace(/<anonymous>/g,"").replace(/[<>]/g,"").trim();return""===name||/^(Object|Module|eval)\.?$/.test(name)?"App":name.slice(0,100)}function us(value){if(value instanceof Error){var e=value.name+": "+value.message;return value.stack&&-1!==value.stack.indexOf(value.message)?value.stack:e}if("string"==typeof value)return value;try{var t=JSON.stringify(value);return void 0===t?String(value):t}catch(e){return String(value)}}const ls=F("AppticsLogger",function(e,message,t,n,r){if(Vr()){var i=[message].concat(t).map(us).join(" ");xe.add({type:"remotelog",module:ds(r),level:e,happenedat:n,exceptionlog:i,attempt:1,filename:r.filename,linenumber:r.linenumber}),Wr||(Wr=!0,setTimeout(function(){Wr=!1,Qr()},1e3))}});function ps(e){return function(message,properties){try{var t=Array.prototype.slice.call(arguments,1);ls(e,message,t,v(),ss(1))}catch(e){}}}const fs={verbose:ps(cs.VERBOSE),debug:ps(cs.DEBUG),info:ps(cs.INFO),warn:ps(cs.WARN),error:ps(cs.ERROR)},gs=Object.assign({},fa,{AppticsFeedback:vo,AppticsLogger:fs,AppticsRemoteConfig:Qo});window.apptics=gs,window.Apptics=gs.Apptics,window.AppticsEvent=gs.AppticsEvent,window.AppticsScreen=gs.AppticsScreen,window.AppticsApi=gs.AppticsApi,window.AppticsError=gs.AppticsError,window.AppticsUser=gs.AppticsUser,window.AppticsSettings=gs.AppticsSettings,window.AppticsFeedback=vo,window.AppticsLogger=fs,window.AppticsRemoteConfig=Qo,window.AppticsHeatmap=gs.AppticsHeatmap,Di(gs.Apptics)}();
1
+ /*! @zoho_apptics/apptics-js-sdk v2.0.0-beta.2 | (c) Zoho Corporation Private Limited | see LICENSE */
2
+ !function(){"use strict";const e=Object.freeze({USAGE_TRACKING_WITH_PII:1,USAGE_TRACKING_WITHOUT_PII:4,NO_TRACKING:-1}),t=Object.freeze({BUG:0,FEEDBACK:1,HELP:2,REPORT:3}),n=Object.freeze({SCREEN:"screen",SESSION:"session",EVENT:"event",API:"api",ERROR:"error",SUCCESS:"success",BROWSER:"Browser"}),r=Object.freeze({addversion:"app/addversion",regdevice:"device/add",reguser:"user/register",engagement:"engagement/add",error:"exception/error",feedback:"feedback/add",sdkconfig:"getsdkconfig",getupdates:"getupdates",consolelog:"log/add",heatmap:"heatmap/add"}),i=Object.freeze({addversion:"v2",regdevice:"v2",engagement:"v2",error:"v2",reguser:"v2",feedback:"v2",sdkconfig:"v2",getupdates:"v2",consolelog:"v2",heatmap:"v2"}),a=Object.freeze({SESSION:"Session",SCREEN:"Screen",EVENT:"Event",API:"API",HEATMAP:"Heatmap",PROPERTIES:"Properties"}),o=Object.freeze({REMOTE_CONFIG:"2",EVENT:"5",API:"6",SCREEN:"10",SESSION:"11",FEEDBACK:"12",JS_ERROR:"15",REMOTE_LOGGER:"17",HEATMAP:"18"}),s=36e5,c=Object.freeze({endpoint:"/sdk/web/",method:"POST",batch_size:50,batch_flush_interval:3e4,getupdates_interval:12e4,batch_request_timeout:7,debug:!1,ignore_do_not_track:!1,track_api:!1,track_screen:!0,track_error:!0,track_click:!0,screen_routes:[],feedback_theme:"auto",min_session_duration:5e3,track_heatmap:!1,debug_api:!1,device_name:"",heatmap_max_per_session:500}),d=Object.freeze(["base_url","auth_key","app_domain","appversion"]),u=Object.freeze({base_url:"serviceUrl",auth_key:"zak",app_domain:"identifier"}),l=Object.freeze({engagement:!0,error:!0,consolelog:!0}),f=Object.freeze({regdevice:!0,reguser:!0,engagement:!0,error:!0,heatmap:!0,consolelog:!0,feedback:!0,getupdates:!0}),p=Object.freeze({addversion:!0}),g=Object.freeze({serviceUrl:"base_url",base_domain:"base_url",zak:"auth_key",token:"auth_key",identifier:"app_domain"}),m=Object.freeze(["ahrefsbot","ahrefssiteaudit","baiduspider","bingbot","bingpreview","chrome-lighthouse","facebookexternal","petalbot","pinterest","screaming frog","yahoo! slurp","yandexbot","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleweblight","mediapartners-google","storebot-google"]),v={};function h(){return Math.round((new Date).getTime())}function k(e){return!!e&&"object"==typeof e&&e.result==n.SUCCESS}function b(e){return null==e||""===e}function _(e){return!!e&&"object"==typeof e&&0===Object.keys(e).length&&e.constructor===Object}function y(e,t){return JSON.stringify(e)===JSON.stringify(t)}function z(e){return JSON.parse(JSON.stringify(e))}function A(e){let t=0;return function e(value){if(null!==value&&"object"==typeof value)for(const key in value)Object.prototype.hasOwnProperty.call(value,key)&&(t+=2*key.length,e(value[key]));else"string"==typeof value?t+=2*value.length:"number"==typeof value?t+=8:"boolean"==typeof value&&(t+=4)}(e),t}function w(e,t){return-1!==e.indexOf(t)}function S(){var e=function(){for(var e=Date.now(),t=0;e==Date.now();)t++;return e.toString(16)+t.toString(16)},t=(screen.height*screen.width).toString(16);return e()+"-"+Math.random().toString(16).replace(".","")+"-"+function(){var e,t,n=navigator.userAgent,r=[],i=0;function a(e,t){var n,i=0;for(n=0;n<t.length;n++)i|=r[n]<<8*n;return e^i}for(e=0;e<n.length;e++)t=n.charCodeAt(e),r.unshift(255&t),r.length>=4&&(i=a(i,r),r=[]);return r.length>0&&(i=a(i,r)),i.toString(16)}()+"-"+t+"-"+e()}const E={_initialised:!1,_ready:!1,_pending:[],_readyPromise:null,_regDeviceSending:!1,_regDeviceResolve:[],_regDeviceReject:[],_sending:!1,_deferSendTimer:null,_config:{...c},_defaultoptions:{},inactiveduration:30,_token:"",_frameworkID:6003,_platform:n.BROWSER,_devicestatus:e.USAGE_TRACKING_WITHOUT_PII,_uuid:"",_apid:"",_mapid:"",_device_info:{},_user_info:{},_current_screen:{},_current_session:{},_properties:{},_ignoreDnt:!1,_shouldTrack:!0,_engagementTracking:{event:!0,screen:!0,session:!0,api:!0},_heatmapTracking:!0,_remoteLoggerEnabled:!0,_remoteConfigEnabled:!0,_remoteConfigReported:!0,_feedbackEnabled:!0,_nextConfigCheck:0,_debugUntil:0,_errorTracking:!0,_quartz:{enabled:!1,workspace:"",department:"",domain:"",cdnUrl:""},_trackinfo:{}};function x(key){return E._config[key]}function T(e){return!("number"!=typeof e||!isFinite(e))&&(e<h()-24*x("batch_request_timeout")*60*60*1e3||e>h()+6e4)}const P="undefined"!=typeof console?console:null;function C(method){return function(...e){if(E._config.debug&&P)try{P[method].apply(P,e)}catch(t){!function(e,t,n){if(null!=e)if(Array.prototype.forEach&&e.forEach===Array.prototype.forEach)e.forEach(t,n);else if(e.length===+e.length){for(var r=0,i=e.length;r<i;r++)if(r in e&&t.call(n,e[r],r,e)===v)return}else for(var key in e)if(Object.prototype.hasOwnProperty.call(e,key)&&t.call(n,e[key],key,e)===v)return}(e,function(e){P[method](e)})}}}const O={log:C("log"),warn:C("warn"),error:C("error"),info:C("info"),dir(e){E._config.debug&&P&&P.dir(e)}};function I(...e){P&&P.warn(...e)}function R(e,...t){O.error.apply(null,t)}const N={"Apptics.init":!0,"Apptics.ready":!0,"Apptics.reset":!0,"AppticsUser.getUser":!0,"AppticsSettings.getTrackingStatus":!0,"AppticsFeedback.sendFeedback":!0,"AppticsFeedback.addFeedbackLog":!0,"AppticsFeedback.addDiagnosticsInfo":!0,"AppticsFeedback.setFeedbackTheme":!0,"AppticsApi.configure":!0,"AppticsApi.startTrackApi":!0,"AppticsRemoteConfig.fetchValue":!0,"AppticsRemoteConfig.fetchValues":!0,"AppticsRemoteConfig.setCustomConditionValue":!0,"Apptics.enableDebug":!0,"Apptics.disableDebug":!0},M={"AppticsEvent.addEvent":!0,"AppticsScreen.inScreen":!0,"AppticsScreen.outScreen":!0,"AppticsApi.endTrackApi":!0,"AppticsError.trackError":!0,"AppticsUser.setUser":!0,"Apptics.flush":!0,AppticsLogger:!0,"AppticsFeedback.sendFeedback":!0,"AppticsRemoteConfig.fetchValue":!0,"AppticsRemoteConfig.fetchValues":!0};function L(name){return 0===name.indexOf("Apptics")?name:"apptics."+name}var D=!1;function q(name,e){const t=function(...n){if(E._initialised||!M[name]||D||(D=!0,I(L(name)+": the SDK has not started, so this call is ignored. Call Apptics.init() first, and check its warnings if you did.")),!E._initialised||E._ready||N[name])try{return e(...n)}catch(e){return I(L(name)+" failed:",e),void R(0,e)}else E._pending.push(function(){t(...n)})};return t}function F(e,t){return e.apply(null,Array.prototype.slice.call(t))}const j="apptics",B=["engagements","errors","feedbacklogs","remotelogs","heatmaps"],U="queue",H="seq",G=[["logs","feedbacklogs"],["consolelogs","remotelogs"]],V="feedbacklog",K="feedbackdiagnostics",W=Object.freeze({log:V,diagnostics:K});function Z(e){var t=e&&"string"==typeof e.type?W[e.type]:void 0;return t?{...e,type:t}:e}const J=Object.freeze({settings:"apptics-device-info",engagements:"apptics-engagements-transactions",errors:"apptics-errors-transactions",logs:"apptics-log-transactions",consolelogs:"apptics-consolelog-transactions"}),Y=Object.freeze({settings:J.settings,engagements:J.engagements,errors:J.errors,feedbacklogs:"apptics-feedbacklog-transactions",remotelogs:"apptics-remotelog-transactions",heatmaps:"apptics-heatmap-transactions"});function Q(value){return Array.isArray(value)?value:[]}function $(value){return value&&"object"==typeof value&&!Array.isArray(value)?value:{}}function X(key){try{const e=localStorage.getItem(key);return null===e||""===e?null:JSON.parse(e)}catch(e){return O.warn("apptics: could not read "+key+", treating it as empty"),null}}function ee(key,value){try{localStorage.setItem(key,JSON.stringify(value))}catch(e){O.warn("apptics: could not write "+key+": "+String(e))}}function te(){return[[J.logs,Y.feedbacklogs],[J.consolelogs,Y.remotelogs]].forEach(function(e){try{var t=e[0],n=e[1],r=localStorage.getItem(t);if(null===r)return;if(null===localStorage.getItem(n)){var i=Q(JSON.parse(r));localStorage.setItem(n,JSON.stringify(n===Y.feedbacklogs?i.map(Z):i))}localStorage.removeItem(t)}catch(e){}}),{kind:"localstorage",loadSettings:()=>Promise.resolve($(X(Y.settings))),putSetting(key,value){const e=$(X(Y.settings));return e[key]=value,ee(Y.settings,e),Promise.resolve()},deleteSetting(key){const e=$(X(Y.settings));return delete e[key],ee(Y.settings,e),Promise.resolve()},clearSettings:()=>(ee(Y.settings,{}),Promise.resolve()),queueAll:e=>Promise.resolve(Q(X(Y[e]))),queuePut(e,t){const n=Q(X(Y[e]));return t.forEach(function(e){const t=n.findIndex(function(t){return t.id===e.id});-1===t?n.push(e):n[t]=e}),ee(Y[e],n),Promise.resolve()},queueDelete(e,t){const n=Q(X(Y[e])).filter(function(e){return-1===t.indexOf(e.id)});return ee(Y[e],n),Promise.resolve()},queueClear:e=>(ee(Y[e],[]),Promise.resolve())}}let ne=0;function re(){const e=1e3*h();return ne=e>ne?e:ne+1,ne}function ie(e){return new Promise(function(t,n){e.onsuccess=function(){t(e.result)},e.onerror=function(){n(e.error)}})}function ae(e){return new Promise(function(t,n){e.oncomplete=function(){t()},e.onerror=function(){n(e.error)},e.onabort=function(){n(e.error)}})}const oe=Object.freeze({engagements:"engagement",errors:"error",feedbacklogs:V,remotelogs:"remotelog",heatmaps:"heatmap"});function se(e,t){return t&&"string"==typeof t.type&&""!==t.type?t.type:oe[e]||e}function ce(e,t,n){const id=String(t.id),r=e.get(id);r.onsuccess=function(){const i=r.result;i&&n||e.put({id:id,queue:i?i.queue:re(),type:se(e.name,t),item:t})}}function de(e){return e.objectStoreNames.contains("settings")&&B.every(function(name){return e.objectStoreNames.contains(name)})}function ue(e=indexedDB,t=3e3){return le(e,t).then(function(n){return de(n)?n:(O.warn('apptics: the "'+j+'" database is missing its stores, recreating it'),n.close(),function(e){return new Promise(function(t){var n=e.deleteDatabase(j);n.onsuccess=function(){t()},n.onerror=function(){t()},n.onblocked=function(){t()}})}(e).then(function(){return le(e,t)}).then(function(e){if(!de(e))throw e.close(),new Error("indexedDB: stores could not be created");return e}))})}function le(e,t){return new Promise(function(n,r){let i=!1;const a=function(e){i||(i=!0,clearTimeout(o),r(e))},o=setTimeout(function(){a(new Error("indexedDB open timed out"))},t);let s;try{s=e.open(j,4)}catch(e){return void a(e)}s.onupgradeneeded=function(){!function(e,t){e.objectStoreNames.contains("settings")||e.createObjectStore("settings");B.forEach(function(name){e.objectStoreNames.contains(name)||e.createObjectStore(name,{keyPath:"id"}).createIndex(U,U)}),B.forEach(function(name){const e=t.objectStore(name);e.indexNames.contains(H)&&(e.deleteIndex(H),e.indexNames.contains(U)||e.createIndex(U,U),fe(e,function(e,t){t.update(pe(e,!1,name))}))}),G.forEach(function(n){const r=n[0],i=n[1];if(!e.objectStoreNames.contains(r))return;const a=t.objectStore(r),o=t.objectStore(i);fe(a,function(e){o.put(pe(e,"feedbacklogs"===i,i))},function(){e.deleteObjectStore(r)})})}(s.result,s.transaction)},s.onsuccess=function(){i?s.result.close():(i=!0,clearTimeout(o),s.result.onversionchange=function(){O.warn("apptics: another tab is upgrading the database, closing this connection"),s.result.close()},n(s.result))},s.onerror=function(){a(s.error)},s.onblocked=function(){O.warn("apptics: waiting for another tab to release the database")}})}function fe(e,t,n){const r=e.openCursor();r.onsuccess=function(){const e=r.result;e?(t(e.value,e),e.continue()):n&&n()}}function pe(e,t,n){const r="number"==typeof e[U]?e[U]:"number"==typeof e[H]?e[H]:re(),i=t?Z(e.item):e.item;return{id:String(e.id),queue:r,type:se(n,i),item:i}}function ge(e){return{kind:"indexeddb",loadSettings(){const t=e.transaction("settings","readonly").objectStore("settings");return Promise.all([ie(t.getAllKeys()),ie(t.getAll())]).then(function([e,t]){const n={};return e.forEach(function(key,e){n[String(key)]=t[e]}),n})},putSetting(key,value){const t=e.transaction("settings","readwrite");return t.objectStore("settings").put(value,key),ae(t)},deleteSetting(key){const t=e.transaction("settings","readwrite");return t.objectStore("settings").delete(key),ae(t)},clearSettings(){const t=e.transaction("settings","readwrite");return t.objectStore("settings").clear(),ae(t)},queueAll:t=>ie(e.transaction(t,"readonly").objectStore(t).index(U).getAll()).then(function(e){return e.map(function(e){return e.item})}),queuePut(t,n){const r=e.transaction(t,"readwrite"),i=r.objectStore(t);return n.forEach(function(e){ce(i,e,!1)}),ae(r)},queueDelete(t,n){const r=e.transaction(t,"readwrite"),i=r.objectStore(t);return n.forEach(function(id){i.delete(id)}),ae(r)},queueClear(t){const n=e.transaction(t,"readwrite");return n.objectStore(t).clear(),ae(n)},importAll(t,n){const r=e.transaction(["settings"].concat(B),"readwrite"),i=r.objectStore("settings");return Object.keys(t).forEach(function(key){const e=i.get(key);e.onsuccess=function(){void 0===e.result&&i.put(t[key],key)}}),B.forEach(function(name){const e=r.objectStore(name);n[name].forEach(function(t){ce(e,t,!0)})}),ae(r)}}}function me(){const e=function(e){return O.warn("apptics: IndexedDB unavailable ("+String(e)+"), using localStorage"),function(){try{const e="__apptics_probe__";return localStorage.setItem(e,"1"),localStorage.removeItem(e),!0}catch(e){return!1}}()?te():null};let t;try{t="undefined"!=typeof indexedDB?indexedDB:void 0}catch(e){t=void 0}return t?ue(t).then(ge,e):Promise.resolve(e("not supported"))}var ve=null,he={};function ke(e,t,n){return be().then(function(e){return e?n(e):t}).catch(function(n){return O.warn("apptics: storage "+e+" failed: "+String(n)),t})}function be(){return ve||(ve=me().then(function(e){return e?function(e){if("indexeddb"!==e.kind||!e.importAll)return Promise.resolve();var t;try{t={settings:localStorage.getItem(J.settings),engagements:localStorage.getItem(J.engagements),errors:localStorage.getItem(J.errors),logs:localStorage.getItem(J.logs),consolelogs:localStorage.getItem(J.consolelogs)}}catch(e){return Promise.resolve()}if(null===t.settings&&null===t.engagements&&null===t.errors&&null===t.logs&&null===t.consolelogs)return Promise.resolve();var n=function(e){try{return null===e?null:JSON.parse(e)}catch(e){return null}},r={engagements:Q(n(t.engagements)),errors:Q(n(t.errors)),feedbacklogs:Q(n(t.logs)).map(Z),remotelogs:Q(n(t.consolelogs)),heatmaps:[]};r.engagements.concat(r.errors,r.feedbacklogs,r.remotelogs).forEach(function(e){e.id||(e.id=S())});var i=e.importAll.bind(e);return Promise.resolve().then(function(){return i($(n(t.settings)),r)}).then(function(){Object.values(J).forEach(function(key){try{localStorage.removeItem(key)}catch(e){}}),O.log("apptics: moved 1.x data from localStorage to IndexedDB")}).catch(function(e){O.warn("apptics: 1.x data migration failed, will retry next load: "+String(e))})}(e).then(function(){return e.loadSettings()}).then(function(t){return he=Object.assign({},t,he),function(){var e=he.device_info&&"object"==typeof he.device_info?he.device_info:null;void 0===he.uuid&&void 0===he.hadsession||(b((e=Object.assign({},e||{})).uuid)&&!b(he.uuid)&&(e.uuid=he.uuid),!0===he.hadsession&&(e.hadsession=!0),Te("device_info",e),Te("uuid",void 0),Te("hadsession",void 0));if(void 0!==he.tracking_status){var t=Object.assign({},he.trackinfo&&"object"==typeof he.trackinfo?he.trackinfo:{});void 0===t.tracking_status&&(t.tracking_status=he.tracking_status),Te("trackinfo",t),Te("tracking_status",void 0)}void 0!==he.token&&Te("token",void 0)}(),e}):null}).catch(function(e){return O.warn("apptics: storage unavailable: "+String(e)),null})),ve}function _e(e){let t=0;const n=[];for(const r of e.slice(0,x("batch_size"))){const e=A(JSON.stringify(r));if(t+e>1048576)break;n.push(r),t+=e}return n}function ye(name){const e={name:name,all:()=>ke("read "+name,[],function(e){return e.queueAll(name)}),payload:()=>e.all().then(_e),add:e=>(e.id||(e.id=S()),T(function(e){return void 0!==e.starttime?e.starttime:e.happenedat}(e))?(O.warn("apptics: dropping a "+name+" item older than "+x("batch_request_timeout")+" days"),Promise.resolve()):ke("add "+name,void 0,function(t){return t.queuePut(name,[e])})),update:e=>ke("update "+name,void 0,function(t){return t.queuePut(name,[e])}),remove(e){const t=(e||[]).map(function(e){return String(e.id)});return ke("remove "+name,void 0,function(e){return e.queueDelete(name,t)})},clear:()=>ke("clear "+name,void 0,function(e){return e.queueClear(name)})};return e}const ze=ye("engagements"),Ae=ye("errors"),we=ye("feedbacklogs"),Se=ye("heatmaps"),Ee=ye("remotelogs");function xe(e,key){return void 0===he[key]?e.deleteSetting(key):e.putSetting(key,he[key])}function Te(key,value){void 0===value?delete he[key]:he[key]=z(value),ke("save "+key,void 0,function(e){return xe(e,key)})}function Pe(key,value){var e=Object.assign({},he.device_info&&"object"==typeof he.device_info?he.device_info:{});e[key]=value,E._device_info&&"object"==typeof E._device_info&&(E._device_info[key]=value),Te("device_info",e)}const Ce={all:()=>z(he),item(key){const value=he[key];return void 0===value?void 0:z(value)},add(key,value){Te(key,value)},save:(key,value)=>(void 0===value?delete he[key]:he[key]=z(value),ke("save "+key,void 0,function(e){return xe(e,key)})),clear(){he={},ke("clear settings",void 0,function(e){return e.clearSettings()})}};function Oe(e){return ke("reload settings",void 0,function(t){return t.loadSettings().then(function(t){e.forEach(function(key){void 0!==t[key]&&(he[key]=t[key])})})})}function Ie(){var t=he.trackinfo,status=t&&"object"==typeof t?t.tracking_status:void 0;return status===e.USAGE_TRACKING_WITH_PII||status===e.USAGE_TRACKING_WITHOUT_PII||status===e.NO_TRACKING?status:void 0}const Re={_tracking_status:"tracking_status",all:()=>Ce.all(),opt_in_status:()=>Ie()||e.USAGE_TRACKING_WITHOUT_PII,update_status(e){E._devicestatus=e;var t=Object.assign({},he.trackinfo&&"object"==typeof he.trackinfo?he.trackinfo:{});t.tracking_status=e,E._trackinfo&&"object"==typeof E._trackinfo&&(E._trackinfo.tracking_status=e),Te("trackinfo",t)}};function Ne(key){var e=he.device_info;return null!=e&&""!==e&&void 0!==e[key]&&null!==e[key]&&""!==e[key]?z(e[key]):null}const Me={updateDevice:()=>Promise.reject("apptics: device module not loaded"),refreshDeviceInfo:()=>{},feedbackUser:()=>null,sendHeatmaps:()=>Promise.resolve(),trackHeatmap:()=>{},resetHeatmap:()=>{},resetRemoteConfig:()=>{},screenTrackedByApp:()=>{},remoteConfigStarted:()=>{},remoteConfigUserChanged:()=>{},askServerSettings:()=>{}};function Le(){return!0===E._config.debug_api&&!De()}function De(){return E._debugUntil>0&&h()>E._debugUntil}function qe(){!0===E._config.debug_api&&(E._debugUntil=h()+s)}var Fe=null;function je(on){E._config.debug_api=on,E._debugUntil=on?h()+s:0,O.log("apptics: debug mode "+(on?"on":"off"))}function Be(){var e=navigator.connection||navigator.mozConnection||navigator.webkitConnection||{};return e.effectiveType||e.type||""}function Ue(){return window.navigator.onLine?0:-1}function He(){try{var e=navigator.getBattery;return"function"!=typeof e?Promise.resolve(null):e.call(navigator).then(function(e){var t=e&&"number"==typeof e.level?e.level:-1;return t>=0&&t<=1?Math.round(100*t):null},function(){return null})}catch(e){return Promise.resolve(null)}}function Ge(){var e=window.screen&&window.screen.orientation&&window.screen.orientation.type||"";return w(e,"portrait-primary")?0:w(e,"landscape-primary")?1:w(e,"landscape-secondary")?2:w(e,"portrait-secondary")?3:-1}function Ve(){var e=navigator.userAgent;return/Windows/i.test(e)?/Phone/.test(e)||/WPDesktop/.test(e)?"Windows Phone":"Windows":/iPad/.test(e)?"iPad":/iPod/.test(e)?"iPod Touch":/iPhone/.test(e)?"iPhone":/(BlackBerry|PlayBook|BB10)/i.test(e)?"BlackBerry":/Android/.test(e)?"Android":/Mac/i.test(e)?"Mac":/Linux/.test(e)?"Linux":/CrOS/.test(e)?"Chrome":""}function Ke(){var e=navigator.userAgent,t=navigator.vendor||"";return window.opera||w(e," OPR/")?w(e,"Mini")?"Opera Mini":"Opera":/(BlackBerry|PlayBook|BB10)/i.test(e)?"BlackBerry":w(e,"IEMobile")||w(e,"WPDesktop")?"Internet Explorer Mobile":w(e,"SamsungBrowser/")?"Samsung Internet":w(e,"Edge")||w(e,"Edg/")?"Microsoft Edge":w(e,"FBIOS")?"Facebook Mobile":w(e,"Chrome")?"object"==typeof ulaa?"Ulaa":null!=window.navigator.brave&&"isBrave"==window.navigator.brave.isBrave.name?"Brave":"Chrome":w(e,"CriOS")?"Chrome iOS":w(e,"UCWEB")||w(e,"UCBrowser")?"UC Browser":w(e,"FxiOS")?"Firefox iOS":w(t,"Apple")?w(e,"Mobile")?"Mobile Safari":"Safari":w(e,"Android")?"Android Mobile":w(e,"Konqueror")?"Konqueror":w(e,"Firefox")?"Firefox":w(e,"MSIE")||w(e,"Trident/")?"Internet Explorer":w(e,"Gecko")?"Mozilla":""}function We(){var e=Ke(),t=navigator.userAgent;if("Ulaa"===e&&"object"==typeof ulaa)return ulaa.getVersion();var n={"Internet Explorer Mobile":/rv:(\d+(\.\d+)?)/,"Microsoft Edge":/Edg\/(\d+(\.\d+)?)/,Chrome:/Chrome\/(\d+(\.\d+)?)/,Brave:/Chrome\/(\d+(\.\d+)?)/,"Chrome iOS":/CriOS\/(\d+(\.\d+)?)/,"UC Browser":/(UCBrowser|UCWEB)\/(\d+(\.\d+)?)/,Safari:/Version\/(\d+(\.\d+)?)/,"Mobile Safari":/Version\/(\d+(\.\d+)?)/,Opera:/(Opera|OPR)\/(\d+(\.\d+)?)/,Firefox:/Firefox\/(\d+(\.\d+)?)/,"Firefox iOS":/FxiOS\/(\d+(\.\d+)?)/,Konqueror:/Konqueror:(\d+(\.\d+)?)/,BlackBerry:/BlackBerry (\d+(\.\d+)?)/,"Android Mobile":/android\s(\d+(\.\d+)?)/,"Internet Explorer":/(rv:|MSIE )(\d+(\.\d+)?)/,Mozilla:/rv:(\d+(\.\d+)?)/}[e];if(void 0===n)return"";var r=t.match(n);return r?parseFloat(r[r.length-2]):""}function Ze(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function Je(){return"undefined"==typeof navigator||function(e){var t;for(e=e.toLowerCase(),t=0;t<m.length;t++)if(-1!==e.indexOf(m[t]))return!0;return!1}(navigator.userAgent||"")}function Ye(name,e){var t="undefined"!=typeof navigator?navigator.locks:void 0;return t&&"function"==typeof t.request?t.request("apptics-"+name,function(){return e()}):e()}function Qe(){return!E._ignoreDnt&&(e=window.navigator||{},t=[!0,1,"1","yes"],!![e.doNotTrack,e.msDoNotTrack,window.doNotTrack].some(function(e){return w(t,e)})&&(O.warn("hasDoNotTrackEnabled: DoNotTrack is enabled, so nothing is tracked"),!0));var e,t}function $e(){if(Qe())return O.warn('opt_in_status: It seems "Do Not Track" is enabled in this browser. Please enable tracking in the browser settings to continue tracking.'),e.NO_TRACKING;var status=Re.opt_in_status();return-1==status&&O.warn("opt_in_status: You are opted out of Apptics tracking. This will prevent the our SDK from sending no data to our server."),status}function Xe(){return $e()>-1&&E._shouldTrack}function et(e){return E._token?!Je()&&Xe():(O.warn("apptics."+e+": You must call Apptics.init() first"),!1)}function tt(e,t){return!!et(e)&&(!!E._engagementTracking[t]||(O.log("apptics."+e+": "+t+" tracking is turned off by the server"),!1))}function nt(e){return!!et(e)&&(!!E._heatmapTracking||(O.log("apptics."+e+": heatmap tracking is turned off by the server"),!1))}function rt(e){return Re.opt_in_status()!=e&&(Re.update_status(e),E._devicestatus=Re.opt_in_status(),!0)}function getTrackingStatus(){return $e()}const it="sendstate";function at(){var e=Ce.item(it);return e&&"object"==typeof e?e:{}}function ot(e){var t=at()[e];return t&&"object"==typeof t?{attempt:Number(t.attempt)||1,firstattempttime:Number(t.firstattempttime)||0,lst:Number(t.lst)||0}:{attempt:1,firstattempttime:0,lst:0}}function st(e,t){var n=at();n[e]=t,Ce.add(it,n)}function ct(e){if(!f[e])return{};var t=ot(e),n=h();(t.attempt<=1||0===t.firstattempttime)&&(t.attempt=1,t.firstattempttime=n);var r={attempt:String(Math.min(t.attempt,5)),firstattempttime:t.firstattempttime};return t.lst>0&&(r.lst=t.lst),st(e,{attempt:t.attempt+1,firstattempttime:t.firstattempttime,lst:t.lst}),r}function dt(url,method,e,t){return new Promise((n,r)=>{let i=new XMLHttpRequest;i.open(method,url),t&&Object.keys(t).forEach(key=>{i.setRequestHeader(key,t[key])}),i.withCredentials=!1,i.timeout=3e4,i.onreadystatechange=function(){4===i.readyState&&(200==i.status?n(i.responseText):r(i.statusText))},i.onerror=function(){r("makeRequest: Network Error")},i.ontimeout=function(){r("makeRequest: timed out after 30000 ms")},i.send(e)})}function ut(key){return"zak"==key?E._defaultoptions.zak:"uuid"==key?E._uuid:"apid"==key?E._apid||Ne(key):"mapid"==key?E._mapid||Ne(key):""}function lt(e){var t="",n=E._device_info.appversionid,r=b(E._device_info.frameworkid)?E._frameworkID:E._device_info.frameworkid;return b(n)||(t+="&appversionid="+encodeURIComponent(String(n))),b(r)||(t+="&frameworkid="+encodeURIComponent(String(r))),""===t?t:void 0===e||""===e?"?"+t.slice(1):t}function ft(e,t){if(!l[e])return"";var n=x("device_name"),name=b(n)?Le()?function(){var e=E._device_info,t=b(e.browser)?"":String(e.browser),n=b(e.browserversion)?"":String(e.browserversion),r=b(e.osversion)?"":String(e.osversion),name=""===t?"":""===n?t:t+" "+n;return""===r?name:""===name?r:name+" on "+r}():"":String(n);return""===name?"":(""===t?"?":"&")+("devicename="+encodeURIComponent(name.slice(0,100)))}function pt(t,n){var url=E._defaultoptions.base_domain+x("endpoint")+i[t]+"/"+(p[t]?"":E._defaultoptions.zsoid+"/"+E._defaultoptions.projectID+"/")+((function(e){return Le()&&!0===l[e]}(t)?"debug/":"")+r[t])+function(t){let n="";if("addversion"==t){var r=b(E._device_info.frameworkid)?E._frameworkID:E._device_info.frameworkid;return"?version="+encodeURIComponent(E._defaultoptions.appversion)+"&platform="+encodeURIComponent(E._platform)+"&identifier="+encodeURIComponent(E._defaultoptions.identifier)+"&frameworkid="+encodeURIComponent(String(r))}if("regdevice"==t)return n="?isanonrequired=false&devicestatus="+E._devicestatus,b(E._device_info.deviceid)||(n+="&deviceid="+encodeURIComponent(String(E._device_info.deviceid))),n+lt(n);if("sdkconfig"!=t){if(b(E._device_info.deviceid))return Me.refreshDeviceInfo(),n+lt(n);n="?deviceid="+encodeURIComponent(String(E._device_info.deviceid))}if("feedback"===t){var i=Me.feedbackUser();return i&&(n+="&userid="+encodeURIComponent(String(i.userid)),b(i.groupid)||(n+="&customergroupid="+encodeURIComponent(String(i.groupid)))),n+lt(n)}return"reguser"!=t&&"getupdates"!=t&&$e()==e.USAGE_TRACKING_WITH_PII&&(E._user_info.hasOwnProperty("userid")&&!b(E._user_info.userid)&&(n+=(""===n?"?":"&")+"userid="+encodeURIComponent(String(E._user_info.userid))),E._user_info.hasOwnProperty("groupid")&&!b(E._user_info.groupid)&&(n+=(""===n?"?":"&")+"customergroupid="+encodeURIComponent(String(E._user_info.groupid)))),n+=ft(t,n),n+lt(n)}(t);if(!n)return url;var a=-1===url.indexOf("?")?"?":"&";return Object.keys(n).forEach(function(key){void 0!==n[key]&&null!==n[key]&&""!==n[key]&&(url+=a+key+"="+encodeURIComponent(String(n[key])),a="&")}),url}function gt(){return{apid:ut("apid"),mapid:ut("mapid")}}const mt={PATTERN_NOT_MATCHED:!0,EXTRA_PARAM_FOUND:!0,INVALID_INPUTSTREAM:!0,INVALID_PARAM:!0};function vt(e){var t=e?e.serverResult:void 0,n=t?t.error_code:void 0;return!b(n)&&!0===mt[String(n)]}function ht(e,t,n){var r=JSON.parse(n);if(k(r))return function(e){f[e]&&st(e,{attempt:1,firstattempttime:0,lst:h()})}(e),function(e,t){var n=t.data;n&&!b(n.req_id)&&O.log(e+": req_id "+String(n.req_id)+(b(n.path)?"":", path "+String(n.path))+(b(n.producerLogsUrl)?"":", logs "+String(n.producerLogsUrl)))}(t,r),Promise.resolve(r);var i=function(e,t,n){var r=t&&!b(t.error_code)?String(t.error_code):String(t?t.result:n),i=new Error(e+": "+r);return t&&(i.serverResult=t),i}(t,r,n);return Promise.reject(i)}function kt(e,t,n,r,i){return dt(pt(e,Object.assign(ct(e),{})),x("method"),t,n).then(function(t){return ht(e,r,t)},function(e){return Promise.reject(r+": "+e)})}var bt=0;function _t(e,t,n,r,i){var a=function(e){if(null==e)return 0;if("string"==typeof e)return"function"==typeof TextEncoder?(new TextEncoder).encode(e).length:3*e.length;var t=e;return Number(t.size||t.byteLength||0)}(t);if("function"==typeof fetch&&bt+a>61440)return O.log(r+": "+a+" bytes is over the keepalive budget, kept for the next send"),Promise.reject(r+": too large to send while the page closes");var url=pt(e,Object.assign(ct(e),{}));if("function"==typeof fetch){var o;try{o=fetch(url,{method:x("method"),headers:Object.assign({"content-type":"text/plain"},n),body:t,keepalive:!0,credentials:"omit"})}catch(e){return Promise.reject(r+": keepalive send not accepted: "+String(e))}bt+=a;var s=function(){bt=Math.max(0,bt-a)};return o.then(function(t){if(s(),!t||!0!==t.ok){var status=t?String(t.status):"";return Promise.reject(r+": "+status)}return("function"==typeof t.text?t.text():Promise.resolve("")).then(function(t){return b(t)?ht(e,r,JSON.stringify({result:"success"})):ht(e,r,t)})},function(e){return s(),Promise.reject(r+": "+String(e))})}return dt(url,x("method"),t,n).then(function(t){return ht(e,r,t)},function(e){return Promise.reject(r+": "+e)})}function yt(e){return Je()?Promise.reject(e+": apptics is disabled for this client"):null}function zt(e){return 0==navigator.onLine?(O.warn(e+": No Network"),Promise.reject(e+": No Network")):null}function At(){return{frameworkid:E._device_info.frameworkid||Ne("frameworkid"),aaid:E._device_info.aaid||Ne("aaid"),apid:E._device_info.apid||Ne("apid"),appversionid:E._device_info.appversionid||Ne("appversionid"),modelid:E._device_info.modelid||Ne("modelid"),appreleaseversionid:E._device_info.appreleaseversionid||Ne("appreleaseversionid"),osversionid:E._device_info.osversionid||Ne("osversionid"),timezoneid:E._device_info.timezoneid||Ne("timezoneid"),platformid:E._device_info.platformid||Ne("platformid"),devicetypeid:E._device_info.devicetypeid||Ne("devicetypeid")}}function wt(e){return b(ut("apid"))&&b(ut("mapid"))?(Me.refreshDeviceInfo(),Promise.reject(e+": You must call Apptics.init() first")):St()?null:(Me.refreshDeviceInfo(),Promise.reject(e+": the device is not registered yet, kept for the next send"))}function St(){return!b(E._device_info&&E._device_info.deviceid)||!b(Ne("deviceid"))}const Et="registerAppVersion",xt="app_version_info",Tt=["apid","mapid","aaid","appversionid","appreleaseversionid","platformid","projectid","portalid"];var Pt=null;function Ct(){var e=Ce.item(xt);return e&&"object"==typeof e?e:{}}const Ot=["aaid","portalid","projectid","apid","mapid","appversionid"];function It(e){return Ot.filter(function(key){return b(e[key])})}function Rt(key){var e=b(key)?"":String(key);if(""===e)return"";for(var t=2166136261,n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619)>>>0;return("0000000"+t.toString(16)).slice(-8)}function Nt(e){Tt.forEach(function(key){b(e[key])||(E._device_info[key]=e[key])}),b(e.aaid)||(E._defaultoptions.aaid=e.aaid),b(e.portalid)||(E._defaultoptions.zsoid=String(e.portalid)),b(e.projectid)||(E._defaultoptions.projectID=String(e.projectid)),b(e.apid)||(E._apid=String(e.apid)),b(e.mapid)||(E._mapid=String(e.mapid))}var Mt=!1;function Lt(){return Mt}function Dt(){if(Mt=!1,0===It(e=Ct()).length&&e.appversion===E._defaultoptions.appversion&&e.identifier===E._defaultoptions.identifier&&e.serviceUrl===E._defaultoptions.serviceUrl&&e.zakhash===Rt(E._defaultoptions.zak))return Nt(Ct()),O.log(Et+": reusing the ids stored for "+E._defaultoptions.appversion),Promise.resolve(!0);var e;if(null!==Pt)return Pt;var t=b(E._device_info.frameworkid)?E._frameworkID:E._device_info.frameworkid;return 0===t&&I(Et+": this build has no registered framework id; build the package with npm pack"),b(t)||b(E._defaultoptions.identifier)||b(E._defaultoptions.zak)?(I(Et+": need zak, an identifier and a frameworkid to register this app version"),Promise.resolve(!1)):Pt=kt("addversion","",{zak:ut("zak")},Et).then(function(e){if(!k(e)||!e.data)return I(Et+": the server did not return the app ids"),!1;var t=e.data,n=It(t);if(n.length>0)return I(Et+": the answer has no "+n.join(", ")),!1;Nt(t);var r={appversion:E._defaultoptions.appversion,identifier:E._defaultoptions.identifier,serviceUrl:E._defaultoptions.serviceUrl,zakhash:Rt(E._defaultoptions.zak)};return Tt.forEach(function(key){b(t[key])||(r[key]=t[key])}),Ce.add(xt,r),O.log(Et+": registered "+E._defaultoptions.appversion+" as apid "+t.apid),!0}).catch(function(e){return Mt=!(e&&e.serverResult)||!1===navigator.onLine,I(Et+": could not register this app version: "+String(e&&e.message?e.message:e)),!1}).then(function(e){return Pt=null,e})}const qt=["devicetype","osversion","timezone","screenheight","screenwidth","referrer","referringdomain","browser","browserversion","donottrackenabled","platformid"],Ft=["screenheight","screenwidth","donottrackenabled","platformid"];function jt(e){var t={};return qt.forEach(function(key){var value=e[key],n=-1!==Ft.indexOf(key);t[key]=b(value)?n?0:"":value}),JSON.stringify(t)}const Bt=["osversion","browser","browserversion","devicetype","screenheight","screenwidth","timezone","donottrackenabled","frameworkid"];function Ut(e){var t={};return Bt.forEach(function(key){t[key]=e?e[key]:void 0}),t}function Ht(){var e,t,n=Ce.item("device_info");E._device_info={osversion:(t=navigator.userAgent,/Windows/i.test(t)?/Phone/.test(t)||/WPDesktop/.test(t)?"Windows Phone":"Windows":/(iPhone|iPad|iPod)/.test(t)?"iOS":/Android/.test(t)?"Android":/(BlackBerry|PlayBook|BB10)/i.test(t)?"BlackBerry":/Mac/i.test(t)?"Mac OS X":/Linux/.test(t)?"Linux":/CrOS/.test(t)?"Chrome OS":""),browser:Ke(),browserversion:String(We()),donottrackenabled:Qe()?1:0,devicetype:Ve(),screenheight:screen.height,screenwidth:screen.width,referrer:(e=String(window.location.href||"").split(window.location.pathname),e.length>=2?e[1].length>500?e[1].substring(0,500):e[1]:""),connectionType:Be(),referringdomain:window.location.hostname||"",deviceid:Ne("deviceid"),anonymousid:Ne("anonymousid"),frameworkid:E._frameworkID,mapid:Ne("mapid"),aaid:Ne("aaid"),apid:Ne("apid"),appversionid:Ne("appversionid"),platformid:Ne("platformid"),devicetypeid:Ne("devicetypeid"),osversionid:Ne("osversionid"),timezoneid:Ne("timezoneid"),modelid:Ne("modelid"),appreleaseversionid:Ne("appreleaseversionid"),timezone:Ze(),uuid:E._uuid||Ne("uuid"),hadsession:!0===Ne("hadsession")||void 0},Nt(Ct()),Ce.add("device_info",E._device_info),function(e,t){var n=void 0!==t?t:Ce.item("device_info")||{};Gt(e)&&null!=e.frameworkid?b(n)||function(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let key in e)if(!t.hasOwnProperty(key))return!1;for(let key in e)if(!y(e[key],t[key]))return!1;return!0}(Ut(e),Ut(n))||(O.log("addOrUpdateDeviceID: Device info changed, so updating new changes"),O.dir(Ut(e)),Qt(e).catch(function(e){O.log("addOrUpdateDeviceID: Error updating the device: "+e)})):(e.frameworkid=E._frameworkID,O.log("addOrUpdateDeviceID: Initiated register the device"),function(){var e="registerDeviceWithApptics",t=yt(e);if(t)return t;if(!E._token)return O.warn(e+": You must call Apptics.init() first"),Promise.reject(e+": You must call Apptics.init() first");var n=zt(e);if(n)return n;if(Gt(E._device_info))return Promise.resolve(E._device_info);return new Promise((t,n)=>{if(E._regDeviceSending)return E._regDeviceResolve.push(t),void E._regDeviceReject.push(n);E._regDeviceSending=!0,Oe(["device_info"]).then(function(){var e=Ce.item("device_info")||{};return Gt(e)?(b(e.uuid)||(E._uuid=e.uuid),O.log("registerDeviceWithApptics: another tab registered this browser, using its device "+e.deviceid),Kt(e).then(function(){return{result:"success",data:e}})):null}).then(function(t){return t||kt("regdevice",jt(E._device_info),{zak:ut("zak"),uuid:ut("uuid"),...gt()},e).then(function(e){return Kt(e.data||{}).then(function(){return e})})}).then(function(e){Yt(!0,e),t(e),ln()}).catch(function(e){Yt(!1,e),n(e)})})}().then(function(e){k(e)?(O.log("addOrUpdateDeviceID: Success register the device "+JSON.stringify(e.data)),O.dir(e.data)):O.log("addOrUpdateDeviceID: Error registering the device: "+e)}).catch(function(e){O.log("addOrUpdateDeviceID: Error registering the device: "+e)}))}(E._device_info,n)}function Gt(e){return!!e&&!b(e.deviceid)}const Vt=["deviceid","anonymousid","aaid","apid","mapid","appversionid","osversionid","timezoneid","platformid","devicetypeid","modelid"];function Kt(e){return Vt.forEach(function(key){b(e[key])||(E._device_info[key]=e[key])}),b(e.apid)||(E._apid=e.apid),b(e.mapid)||(E._mapid=e.mapid),Ce.save("device_info",E._device_info)}function Wt(){var e=Ne("uuid");b(e)&&Pe("uuid",e=S()),E._uuid=e}function Zt(){return Gt(Ce.item("device_info")||{})?(Wt(),Ht(),Promise.resolve()):new Promise(function(e){Ye("device",function(){return Oe(["device_info"]).then(function(){return Wt(),Ht(),e(),Jt()})}).catch(function(e){O.log("prepareDevice: "+e)}).then(function(){e()})})}function Jt(){return E._regDeviceSending?new Promise(function(e){E._regDeviceResolve.push(function(){e()}),E._regDeviceReject.push(function(){e()})}):Promise.resolve()}function Yt(e,value){var t=e?E._regDeviceResolve:E._regDeviceReject;E._regDeviceSending=!1,E._regDeviceResolve=[],E._regDeviceReject=[],t.forEach(function(e){e(value)})}function Qt(e){var t="updateDeviceWithApptics",n=yt(t)||zt(t);return n||kt("regdevice",jt(e),{zak:ut("zak"),uuid:ut("uuid"),...gt()},t).then(function(e){return Kt(e.data||{}),e})}function $t(status,id){var e=status[id];return!e||"object"!=typeof e||!1!==e.enabled}function Xt(e){var status=e.tracking_status&&"object"==typeof e.tracking_status?e.tracking_status:{},t=Object.keys(status).length>0;if(e.hasOwnProperty("tracking_enabled"))E._shouldTrack=!1!==e.tracking_enabled;else if(e.hasOwnProperty("shouldtrack"))E._shouldTrack=!1!==e.shouldtrack;else{var n=!(e.hasOwnProperty("versionarchivestatus")&&!b(e.versionarchivestatus))||e.versionarchivestatus,r=!(e.hasOwnProperty("customergrouptracking")&&!b(e.customergrouptracking))||e.customergrouptracking;E._shouldTrack=n||!r}if(t)E._engagementTracking={event:$t(status,o.EVENT),api:$t(status,o.API),screen:$t(status,o.SCREEN),session:$t(status,o.SESSION)},E._errorTracking=$t(status,o.JS_ERROR),E._heatmapTracking=$t(status,o.HEATMAP),E._remoteLoggerEnabled=$t(status,o.REMOTE_LOGGER),E._feedbackEnabled=$t(status,o.FEEDBACK),E._remoteConfigEnabled=$t(status,o.REMOTE_CONFIG);else{var i=e.engagement&&"object"==typeof e.engagement?e.engagement:null,a=function(t){return i?!1!==i[t]:!1!==e.engagementtracking};E._engagementTracking={event:a("event"),api:a("api"),screen:a("screen"),session:a("session")};var s=function(key,t){return!1!==(e.hasOwnProperty(key)?e[key]:e[t])};E._errorTracking=s("error","errortracking"),E._heatmapTracking=s("heatmap","heatmaptracking"),E._remoteLoggerEnabled=s("remotelogger","remoteloggerenabled"),E._feedbackEnabled=s("feedback","feedbackenabled")}var c=e.quartz&&"object"==typeof e.quartz?e.quartz:{},d=function(value){return"string"==typeof value?value.trim():""};E._quartz={enabled:c.hasOwnProperty("quartz_enabled")?!0===c.quartz_enabled:!0===e.quartzenabled,workspace:d(c.quartz_workspace),department:d(c.quartz_department),domain:d(c.quartz_domain),cdnUrl:d(c.quartz_cdn_url)},E._nextConfigCheck=function(value,e){if("number"!=typeof value||!(value>0))return 0;return value>=1e12?value:e+value}(e.next_check_after,h()),E._trackinfo={engagement:E._engagementTracking,error:E._errorTracking,heatmap:E._heatmapTracking,remotelogger:E._remoteLoggerEnabled,feedback:E._feedbackEnabled,quartz:{quartz_enabled:E._quartz.enabled,quartz_workspace:E._quartz.workspace,quartz_department:E._quartz.department,quartz_domain:E._quartz.domain,quartz_cdn_url:E._quartz.cdnUrl},shouldtrack:E._shouldTrack,next_check_after:E._nextConfigCheck}}var en=["engagementtracking","errortracking","heatmaptracking","remoteloggerenabled","feedbackenabled"];var tn=2147483647,nn=null,rn=!1,an=0,sn=!1,cn=!1,dn=0;function un(){if(!(rn||!St()||b(ut("apid"))&&b(ut("mapid")))){null!==nn&&(clearTimeout(nn),nn=null),rn=!0,sn=!0,function(){try{sessionStorage.setItem(fn,"1")}catch(e){}}();var e,t=an,n=h();(e="getUpdatesFromServer",zt(e)||wt(e)||kt("sdkconfig","",gt(),e).then(function(e){var t=e.data||{};Xt(t),0===E._nextConfigCheck&&(E._nextConfigCheck=h()+x("getupdates_interval"),E._trackinfo.next_check_after=E._nextConfigCheck);var n=Ie();return Ce.add("trackinfo",void 0===n?E._trackinfo:Object.assign({},E._trackinfo,{tracking_status:n})),O.log("getUpdatesFromServer: "+JSON.stringify(E._trackinfo)),t})).catch(function(e){O.log(e)}).then(function(){if(t===an){if(rn=!1,cn)return cn=!1,void un();dn=E._nextConfigCheck>h()?E._nextConfigCheck:n+x("getupdates_interval"),pn()}})}}function ln(){if(!sn)return function(){try{return"1"===sessionStorage.getItem(fn)}catch(e){return!1}}()&&E._nextConfigCheck>h()?(O.log("getsdkconfig: the saved answer is still current"),sn=!0,dn=E._nextConfigCheck,void pn()):void un()}var fn="_apptics_sdkconfig_asked";function pn(){null!==nn&&clearTimeout(nn);var e=Math.min(Math.max(dn-h(),0),tn);O.log("getsdkconfig: next check in "+e+" ms"),nn=setTimeout(function(){nn=null,un()},e)}function gn(id,e){return b(id)?Promise.resolve():(E._current_screen&&E._current_screen.id===id&&!E._current_screen.endtime&&(E._current_screen=Object.assign({},E._current_screen,{endtime:e})),ze.all().then(function(t){var r=t.filter(function(e){return e.type==n.SCREEN&&e.id===id&&0===e.endtime})[0];if(r)return ze.update(Object.assign({},r,{endtime:Math.max(e,r.starttime)}))}))}function mn(){var e=E._current_screen;return e&&e.id?gn(e.id,h()):Promise.resolve()}function vn(e,t){return ze.all().then(function(r){return r.filter(function(t){return t.type==n.SCREEN&&0===t.endtime&&t.sessionstarttime===e.starttime}).reduce(function(e,n){return e.then(function(){return ze.update(Object.assign({},n,{endtime:Math.max(t,n.starttime)}))})},Promise.resolve())})}function hn(e){if(!tt("trackSession",n.SESSION))return Promise.resolve();if(e&&"object"!=typeof e)return R(a.SESSION,"apptics.trackSession: sessionData param must be an object"),Promise.resolve();var t=ze.add(e);return O.log("apptics.trackSession("+JSON.stringify(e||{})+")"),O.dir(e),t}function kn(){var e=Tn();return ze.all().then(function(t){if(e){var r=t.filter(function(t){return t.type==n.SESSION&&t.id===e&&0===t.endtime})[0];if(r)return r}return function(e,t){return t.filter(function(t){return t.type==e&&0===t.endtime}).sort(function(e,t){return t.starttime-e.starttime})[0]}(n.SESSION,t)})}Me.updateDevice=Qt,Me.refreshDeviceInfo=Ht,Me.askServerSettings=function(){rn?cn=!0:un()};var bn="";function _n(){return""===bn&&(bn=S()),bn}function yn(e){return Array.isArray(e.tabs)?e.tabs.slice():[]}const zn="apptics-tab-";function An(){var e="undefined"!=typeof navigator?navigator.locks:void 0;return e&&"function"==typeof e.request&&"function"==typeof e.query?e:void 0}var wn=!1;function Sn(){var e=An();if(!e)return Promise.resolve();var t=_n();return e.query().then(function(e){var r={};(e.held||[]).concat(e.pending||[]).forEach(function(e){e.name&&0===e.name.indexOf(zn)&&(r[e.name.slice(12)]=!0)});var i=h();return ze.all().then(function(e){var a=e.filter(function(e){return e.type==n.SCREEN&&0===e.endtime&&"string"==typeof e.tab&&e.tab!==t&&!r[e.tab]&&i-e.starttime>5e3});return a.length&&O.log("closeScreensOfGoneTabs: ending "+a.length+" screen view(s) left open by a tab that is gone"),a.reduce(function(e,t){var n=Math.max(t.starttime,Number(t.lastseen)||t.starttime);return e.then(function(){return ze.update(Object.assign({},t,{endtime:n}))})},Promise.resolve())})}).catch(function(e){O.log("closeScreensOfGoneTabs: "+e)})}function En(e){return Ye("session",e)}const xn="apptics-session";function Tn(){try{return sessionStorage.getItem(xn)||""}catch(e){return""}}const Pn="hadsession";var Cn=null,On=null;function In(){null!==On&&(clearTimeout(On),On=null)}function Rn(){if(!Cn)return Promise.resolve();var e=Cn;return Cn=null,In(),e.firstsession&&Pe(Pn,!0),hn(e)}function Nn(e){E._current_session={id:S(),type:n.SESSION,starttime:e,endtime:0,edge:Be(),orientation:Ge(),firstsession:!0!==Ne(Pn),networkstatus:Ue(),lastactivetime:e,tabs:[_n()]};var t,r="number"==typeof(t=navigator.deviceMemory)&&t>0?t+" GB":"";b(r)||(E._current_session.ram=r),function(id){try{sessionStorage.setItem(xn,id)}catch(e){}}(E._current_session.id);var i=Number(x("min_session_duration"));return i>0?(Cn=E._current_session,In(),On=setTimeout(function(){On=null,Rn()},i),Promise.resolve()):function(e){e.firstsession&&Pe(Pn,!0);return hn(e)}(E._current_session)}var Mn=!1,Ln=null;function Dn(e){var t=!Mn;return Mn=!0,null!==Ln&&clearTimeout(Ln),Ln=setTimeout(function(){Ln=null,function(){if(!E._token||Je())return Promise.resolve(!1);var e=!1;return En(function(){return kn().then(function(t){if(t&&0===t.endtime){var n=Number(t.lastactivetime)||h();if(!(h()-n<60*E.inactiveduration*1e3)){var r=yn(t).filter(function(e){return e!==_n()});if(r.length>0){var i=Object.assign({},t,{tabs:r});return E._current_session=i,ze.update(i)}var a=Math.max(n,Number(t.starttime)||n),o=Object.assign({},t,{endtime:a,tabs:[]});return E._current_session=o,e=!0,O.log("session: inactive for "+E.inactiveduration+" minutes, so it ends when the user left, "+a),ze.update(o).then(function(){return vn(o,a)})}}})}).then(function(){return e})}().then(function(t){t&&e()})},60*E.inactiveduration*1e3+1e3),t?En(Bn):Promise.resolve()}function qn(){Mn=!1,null!==Ln&&(clearTimeout(Ln),Ln=null)}function Fn(){var e=h(),t=Mn;return qn(),Cn&&(O.log("session: dropped, shorter than the minimum with nothing tracked in it"),Cn=null,In(),1)?Promise.resolve():En(function(){return function(e,t){return kn().then(function(n){if(n&&0===n.endtime){var r=Number(n.lastactivetime)||0,i=t&&r>0?Math.max(Math.min(r,e),Number(n.starttime)||0):e,a=yn(n).filter(function(e){return e!==_n()});if(a.length>0){var o=Object.assign({},n,{tabs:a,lastactivetime:i});return E._current_session=o,O.log("endCurrentSession: "+a.length+" other tab(s) still on this session, so it stays open"),ze.update(o)}var s=Object.assign({},n,{endtime:i,lastactivetime:i,tabs:[]});return E._current_session=s,O.log("endCurrentSession: closing the session opened at "+s.starttime),ze.update(s).then(function(){return vn(s,i)})}})}(e,t)})}function jn(){if(!E._token)return R(a.SESSION,"checkAndUpdateSession: You must call Apptics.init() first"),Promise.resolve();if(Je())return Promise.resolve();var e=h();return En(function(){return function(e){return function(){var e=h()-60*E.inactiveduration*1e3,t=Tn();return ze.all().then(function(r){var i=r.filter(function(r){return r.type==n.SESSION&&0===r.endtime&&r.id!==t&&r.lastactivetime<e});return i.length?(O.log("closeAbandonedSessions: closing "+i.length+" session(s) left open by a closed tab"),i.reduce(function(e,t){return e.then(function(){return ze.update(Object.assign({},t,{endtime:t.lastactivetime}))}).then(function(){return vn(t,t.lastactivetime)})},Promise.resolve())):Promise.resolve()})}().then(Sn).then(kn).then(function(t){if(!t||0!==t.endtime)return Nn(e);if(E._current_session=t,e-t.lastactivetime>1e3*E.inactiveduration*60){O.log("checkAndUpdateSession: User is inactive for the past "+E.inactiveduration+" minutes so starting a new session");var n=Object.assign({},t,{endtime:t.lastactivetime});return O.log("checkAndUpdateSession: ("+JSON.stringify(n)+")"),O.dir(n),ze.update(n).then(function(){return vn(n,n.endtime)}).then(function(){return Nn(e)})}return O.log("checkAndUpdateSession: User is back before "+E.inactiveduration+" minutes so updating the lastactivitytime - "+e),Bn()})}(e)})}function Bn(){var e=h();return Cn?(Cn.lastactivetime=e,E._current_session=Cn,Promise.resolve()):kn().then(function(t){if(t){O.log("updateLastActiveTimeOfSession: Updating the lastactivitytime - "+e);var n,r,i=Object.assign({},t,{lastactivetime:e,tabs:(n=t,r=yn(n),-1===r.indexOf(_n())&&r.push(_n()),r)});return E._current_session=i,ze.update(i)}}).then(function(){return function(e){var t=E._current_screen;return t&&t.id&&!t.endtime?ze.all().then(function(r){var i=r.filter(function(e){return e.type==n.SCREEN&&e.id===t.id&&0===e.endtime})[0];return i?ze.update(Object.assign({},i,{lastseen:e})):void 0}):Promise.resolve()}(e)})}const Un=/^ap_/i;function Hn(e){if(!e||""===e)return O.warn("validateEventOrGroup: Invalid event or group name"),!1;return Un.test(e)?(O.warn('validateEventOrGroup: "'+e+'" starts with ap_, which is reserved for defined events'),!1):/^[a-zA-Z][a-zA-Z0-9_]{0,99}$/.test(e)}const Gn=/^[a-zA-Z][a-zA-Z0-9_]{0,49}$/;function Vn(e){if(b(e)||_(e))return{};var t=e,n={},r={},i=[],a=[],o=[];function s(e){-1===i.indexOf(e)&&i.push(e)}return Object.keys(t).forEach(function(key){if(!Gn.test(key)||Un.test(key))return O.warn("validateJSON: dropped the property '"+key+"': a key is a letter, then up to 49 letters, digits or _, and not ap_"),a.push(key.substring(0,50)),void s(103);var e=function(value){if("number"==typeof value&&isFinite(value))return{value:value,type:"Number"};if("boolean"==typeof value)return{value:value?1:0,type:"Boolean"};if("string"==typeof value)return{value:value,type:"String"};var e;try{e=void 0===value?"undefined":JSON.stringify(value)}catch(t){e=String(value)}return{value:void 0===e?String(value):e,type:"String"}}(t[key]);if(String(e.value).length>250)return O.warn("validateJSON: dropped the property '"+key+"': its value is longer than 250 characters"),o.push(key),void s(104);if(Object.keys(n).length>=24)return O.warn("validateJSON: dropped the property '"+key+"': at most 24 properties"),void s(102);var i=Object.assign({},n);if(i[key]=e.value,JSON.stringify(i).length>7666)return O.warn("validateJSON: dropped the property '"+key+"': properties are at most 7666 characters in all"),void s(101);n[key]=e.value,r[key]=e.type}),Object.keys(n).length>0?{data:n,datatype:r,isvalid:!0}:0===i.length?{}:{isvalid:!1,message:{code:i,keys:a,valuekeys:o}}}function Kn(e){const t={},n={},message=[],r={101:[],102:[],103:[],104:[]},i=/^[a-zA-Z][a-zA-Z0-9_]{0,49}$/,a=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;let o=0;const s=["first_name","last_name","company_name","contact_number","country","region","city","geo_location","gender","plan_type","timezone","language"],c=["engagement_score","date_of_birth"];for(const[key,value]of Object.entries(e))if(o++,"string"!=typeof key||key.length>50||!i.test(key))r[103].push(key);else if(s.includes(key)){if("string"!=typeof value||value.length>255){r[103].push(key);continue}t[key]=value,n[key]="String"}else if("email_address"!==key)if(c.includes(key)){if("number"!=typeof value||!Number.isFinite(value)){r[103].push(key);continue}t[key]=value,n[key]="Number"}else if("boolean"==typeof value)t[key]=value,n[key]="Boolean";else if("string"==typeof value){if(value.length>255){r[103].push(key);continue}t[key]=value,n[key]="String"}else{if("number"!=typeof value){r[104].push(key);continue}if(!Number.isFinite(value)){r[104].push(key);continue}t[key]=value,n[key]="Number"}else{if("string"!=typeof value||value.length>255||!a.test(value)){r[103].push(key);continue}t[key]=value,n[key]="String"}o>45&&(r[102]=Object.keys(e));JSON.stringify(t).length+JSON.stringify(n).length>1e4&&(r[101]=Object.keys(e));for(const e of[101,102,103,104])r[e].length>0&&message.push({code:e,keys:r[e]});return{data:t,datatype:n,message:message}}function Wn(e){if(!e||""===e)return O.warn("validateScreenName: Invalid screenName"),!1;return/^[\w\s.\-_&/:*]{0,99}$/.test(e)}function Zn(e){try{var url=new URL(String(e).trim());if("http:"!==url.protocol&&"https:"!==url.protocol)return"";var t=url.pathname.length>1?url.pathname.replace(/\/+$/,""):url.pathname;return url.protocol+"//"+url.host.toLowerCase()+t}catch(e){return""}}function Jn(method,e){var t=[];return e.forEach(function(value){var url="string"==typeof value?Zn(value):"";""!==url?-1===t.indexOf(url)&&t.push(url):I("ApiTrackingBuilder."+method+": "+JSON.stringify(value)+" is not a full http(s) URL, as https://api.example.com/health, and is left out")}),t}function Yn(method,e){var t=[];return e.forEach(function(value){if(value instanceof RegExp)t.push(value);else{if("string"==typeof value&&""!==value)try{return void t.push(new RegExp(value))}catch(e){}I("ApiTrackingBuilder."+method+": "+String(value)+" is not a regular expression, and is left out")}}),t}class Qn{constructor(){this.rules={allowEquals:[],ignoreEquals:[],allowRegex:[],ignoreRegex:[]}}allowEquals(...e){return this.rules.allowEquals.push(...Jn("allowEquals",e)),this}ignoreEquals(...e){return this.rules.ignoreEquals.push(...Jn("ignoreEquals",e)),this}allowRegex(...e){return this.rules.allowRegex.push(...Yn("allowRegex",e)),this}ignoreRegex(...e){return this.rules.ignoreRegex.push(...Yn("ignoreRegex",e)),this}build(){return{allowEquals:this.rules.allowEquals.slice(),ignoreEquals:this.rules.ignoreEquals.slice(),allowRegex:this.rules.allowRegex.slice(),ignoreRegex:this.rules.ignoreRegex.slice()}}}const $n=Object.freeze({ignoreDomains:"ignoreRegex",allowOnlyDomains:"allowRegex",allowOnlyTLDs:"allowRegex",ignoreTLDs:"ignoreRegex",ignoreDomainPrefixes:"ignoreRegex",ignoreDomainSuffixes:"ignoreRegex",groupDomains:"",ignoreEndpoint:"ignoreEquals or ignoreRegex",addPattern:"",preserveSegments:"",autoDetection:""});Object.keys($n).forEach(function(name){Object.defineProperty(Qn.prototype,name,{configurable:!0,value:function(){var e=$n[name];throw new TypeError("ApiTrackingBuilder."+name+"() is no longer supported: "+(e?"use "+e+", which match the URL without its query":"ids, UUIDs and tokens in a path become * on their own"))}})});var Xn={allowEquals:[],ignoreEquals:[],allowRegex:[],ignoreRegex:[]};function er(value,e){return Array.isArray(value)?value.filter(e):[]}function tr(e,url){return e.lastIndex=0,e.test(url)}function nr(url){var e=Zn(url);return""!==e&&(-1===Xn.ignoreEquals.indexOf(e)&&!Xn.ignoreRegex.some(function(t){return tr(t,e)})&&(0===Xn.allowEquals.length&&0===Xn.allowRegex.length||(-1!==Xn.allowEquals.indexOf(e)||Xn.allowRegex.some(function(t){return tr(t,e)}))))}const rr=/^\d+$/,ir=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,ar=/^eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/;function or(e){return function(e){var t=String(e||"").split(/[?#]/)[0];return""===t?"/":t}(e).split("/").map(function(e){return""!==e&&(rr.test(e)||ir.test(e)||ar.test(e))?"*":e}).join("/")}const sr={AP_APP_LIFE_CYCLE:["AP_APP_INSTALL","AP_APP_UNINSTALL","AP_APP_UPDATE","AP_APP_CRACKED","AP_APP_OPEN","AP_APP_CLEAR_DATA","AP_APP_FOREGROUND","AP_APP_BACKGROUND","AP_APP_OUT_OF_MEMORY","AP_APP_FIRST_OPEN","AP_APP_LAUNCHING","AP_APP_RESIGN_ACTIVE","AP_APP_WILL_CONNECT"],AP_USER_LIFE_CYCLE:["AP_USER_SIGNUP","AP_USER_LOGIN","AP_USER_LOGOUT"],AP_APPLICATION:["AP_DEEP_LINK_OPEN","AP_DEEP_LINK_UPDATE","AP_DEEP_LINK_FIRST_OPEN","AP_IN_APP_PURCHASE","AP_NOTIFICATION_RECEIVE","AP_NOTIFICATION_OPEN","AP_NOTIFICATION_DISMISS","AP_NOTIFICATION_FOREGROUND","AP_SEARCH","AP_BATTERY_LOW","AP_BATTERY_FULL","AP_LOW_POWER_MODE_ON","AP_LOW_POWER_MODE_OFF"],AP_OTHERS:["AP_NETWORK_REACHABILITY_CHANGE","AP_NETWORK_BANDWIDTH_CHANGE","AP_SWITCH_THEME_LIGHT","AP_SWITCH_THEME_DARK","AP_SWITCH_THEME_CUSTOM","AP_SWITCH_ORIENTATION_LANDSCAPE","AP_SWITCH_ORIENTATION_PORTRAIT"],AP_OS:["AP_OS_UPDATE","AP_OS_UNSUPPORTED"]};const cr=(dr={},Object.keys(sr).forEach(function(e){sr[e].forEach(function(t){dr[t]=Object.freeze({event:t,group:e})})}),Object.freeze(dr));var dr;function ur(e){var t=String(e||"").split(/[?#]/)[0]||"/";return t.length>1?t.replace(/\/+$/,""):t}const lr=/[^\w\s.\-&/:*]/g;var fr=!1,pr="",gr=null,mr=300,vr="",hr=null,kr=!1,br=0,_r=null,yr=null,zr=null,Ar=null;function wr(e){return"*"===e||/^\{[^/]*\}$/.test(e)||/^:[^/]+$/.test(e)}function Sr(e,t){var n=ur(e).split("/"),r=t.split("/");if(n.length!==r.length)return!1;for(var i=0;i<n.length;i++){var a=n[i];if(!wr(a)&&a!==r[i])return!1}return!0}function Er(){try{return function(e){var name=e;try{name=decodeURIComponent(e)}catch(e){}return name.replace(lr,"_").trim().slice(0,99)}(function(e){var t=E._config.screen_routes;if(!t||0===t.length)return e;for(var n=ur(e),r=0;r<t.length;r++){var i=t[r];if("equals"===i.kind&&i.path===n)return i.name;if("regex"===i.kind&&(i.regex.lastIndex=0,i.regex.test(n)))return i.name;if("pattern"===i.kind&&Sr(i.pattern,n))return ur(i.pattern).split("/").map(e=>wr(e)?"*":e).join("/")}return e}(function(url){var e=url.pathname,t=url.hash;if(/^#!?\//.test(t)){var n=t.replace(/^#!?/,"").split("?")[0];e=e.replace(/\/+$/,"")+n}return e}(new URL(window.location.href))))}catch(e){return""}}function xr(){if(gr=null,fr){var name=Er();""!==name&&name!==pr&&(pr=name,kr||(E._current_screen=Object.assign({},E._current_screen,{screen:name}),vr=name,br=h(),hr=setTimeout(Tr,mr)))}}function Tr(){hr=null;var name=vr;if(vr="",fr&&!kr&&""!==name)try{Mr(name,void 0,void 0,br||void 0)}catch(e){O.log("automatic screen tracking: "+String(e))}}function Pr(){null!==hr&&(clearTimeout(hr),hr=null),vr=""}function Cr(){var name=Er();""!==name&&(name===vr||""===vr&&name===pr)||null===gr&&(kr=!1,Pr(),gr=setTimeout(xr,0))}function Or(enabled,e){var on="boolean"!=typeof enabled||enabled;if(on&&(mr=300),on!==fr){if(on)return pr="",t=history.pushState,n=history.replaceState,zr=t,Ar=n,_r=function(){var e=t.apply(this,arguments);return Cr(),e},yr=function(){var e=n.apply(this,arguments);return Cr(),e},history.pushState=_r,history.replaceState=yr,window.addEventListener("popstate",Cr),window.addEventListener("hashchange",Cr),fr=!0,O.log("automatic screen tracking: on"),void(null===gr&&(gr=setTimeout(xr,0)));var t,n;_r&&history.pushState===_r&&zr&&(history.pushState=zr),yr&&history.replaceState===yr&&Ar&&(history.replaceState=Ar),_r=yr=zr=Ar=null,window.removeEventListener("popstate",Cr),window.removeEventListener("hashchange",Cr),null!==gr&&(clearTimeout(gr),gr=null),Pr(),fr=!1,pr="",kr=!1,O.log("automatic screen tracking: off")}}Me.screenTrackedByApp=function(){kr=!0,Pr()};var Ir={};function Rr(e,message){R(0,message),Ir[message]||(Ir[message]=!0,I(message))}function Nr(eventName,groupName,e){if(tt("trackEvent",n.EVENT)){var t=function(value){if(value&&"object"==typeof value){var e=value.event;return"string"==typeof e&&cr[e]===value?value:void 0}}(eventName);if(t)e=groupName&&"object"==typeof groupName?groupName:e,groupName=t.group,eventName=t.event;else{if("string"!=typeof eventName||!Hn(eventName))return void Rr(a.EVENT,"AppticsEvent.addEvent: Invalid eventName: "+String(eventName));if(null==groupName||""===groupName||"object"==typeof groupName)return void Rr(a.EVENT,'AppticsEvent.addEvent: groupName is required for "'+eventName+'": addEvent(eventName, groupName, properties?)');if("string"!=typeof groupName||!Hn(groupName))return void Rr(a.EVENT,'AppticsEvent.addEvent: Invalid groupName for "'+eventName+'": '+String(groupName))}var r=Vn(e=e||{}),i=h(),o={id:S(),type:n.EVENT,group:groupName,event:eventName,starttime:i,endtime:i,edge:E._device_info.connectionType||Be(),networkstatus:Ue(),screen:E._current_screen.screen||"",sessionstarttime:E._current_session.starttime||i,customproperties:r};Rn(),qe(),ze.add(o),O.log("AppticsEvent.addEvent('"+eventName+"','"+groupName+"',"+JSON.stringify(r||{})+")"),O.dir(o)}}function Mr(screenName,e,id,t,r){if(tt("inScreen",n.SCREEN))if(Wn(screenName)){var i=Vn(e=e||{}),o="number"==typeof t?t:h(),s={id:id||S(),type:n.SCREEN,screen:screenName,starttime:o,endtime:0,edge:E._device_info.connectionType||Be(),networkstatus:Ue(),orientation:Ge(),sessionstarttime:E._current_session.starttime||o,customproperties:i,tab:_n()},c=E._current_screen&&E._current_screen.id;c&&c!==s.id&&gn(c,o),Rn(),qe(),ze.add(s),E._current_screen=r?Object.assign({},s,{implicit:!0}):s,O.log("AppticsScreen.inScreen('"+screenName+"',"+JSON.stringify(i||{})+")"),O.dir(s)}else Rr(a.SCREEN,"AppticsScreen.inScreen: Invalid screenName: "+String(screenName))}function Lr(){var e=E._current_screen;if(e&&!b(e.screen)&&!e.implicit)return String(e.screen);var name=Er()||"/";return e&&e.id&&e.screen===name&&!e.endtime||Mr(name,void 0,void 0,void 0,!0),name}function Dr(){var e=E._current_screen;e&&e.id&&e.endtime&&!b(e.screen)&&Mr(String(e.screen))}const qr=/^([a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,Fr=/[^a-zA-Z0-9\-._*\/]+/g;function jr(e){if(tt("trackApi",n.API)){var t,r=(e=e||{}).url||e.path||"",method=(e.method||"GET").toString(),i="number"==typeof e.responsecode?e.responsecode:"number"==typeof e.status?e.status:0,o=e.responsemessage||e.statusText||e.error||"-",s=h(),c="number"==typeof e.starttime?e.starttime:s;t="number"==typeof e.endtime?e.endtime:"number"==typeof e.duration?c+e.duration:s;var d=e.scheme||"",u=e.hostname||"",l="number"==typeof e.port?e.port:0,f=e.path||"",p=b(e.url)&&!b(e.hostname);if(!b(r))try{var g=new URL(r,window.location.origin);b(d)&&!p&&(d=g.protocol.replace(":","")),b(u)&&(u=g.hostname),l||p||(l=g.port?parseInt(g.port,10):"https:"===g.protocol?443:80),b(f)&&(f=g.pathname)}catch(e){b(f)&&(f=r)}if(d="https"===d||"http"===d?d:"https",l||(l="https"===d?443:80),qr.test(u))if(nr(d+"://"+u+(l&&!("https"===d&&443===l||"http"===d&&80===l)?":"+l:"")+("/"===String(f).charAt(0)?"":"/")+f)){f=function(e){if(b(e))return"/";var t=e.replace(Fr,"*");return"/"===t.charAt(0)?t:"/"+t}(or(f));var m=E._current_session.starttime||c,v={id:S(),type:n.API,scheme:d,port:l,hostname:u,path:f,method:method,responsecode:i,responsemessage:o,starttime:c,endtime:t,sessionstarttime:m,networkstatus:Ue(),edge:E._device_info.connectionType||Be()};Rn(),qe(),ze.add(v),O.log("AppticsApi('"+method+" "+d+"://"+u+f+"')"),O.dir(v)}else O.log("AppticsApi: "+u+function(e){return String(e||"").split(/[?#]/)[0]}(f)+" is left out by configureApiTracking");else R(a.API,"AppticsApi: hostname not accepted by the server: "+String(u))}}var Br={},Ur=[];var Hr=!1,Gr=null,Vr=null,Kr=null;function Wr(e){if(b(e))return!1;var t;try{t=new URL(e,window.location.href)}catch(e){return!1}return("https:"===t.protocol||"http:"===t.protocol)&&(!function(url,e){for(var t=[E._defaultoptions.base_domain,E._defaultoptions.serviceUrl],n=0;n<t.length;n++)if(!b(t[n])&&0===url.indexOf(t[n]))return!0;var r=x("endpoint");return!b(r)&&0===e.indexOf(r)}(t.href,t.pathname)&&nr(t.href))}function Zr(method,url,e,t,n){try{jr({url:url,method:method,responsecode:t,responsemessage:n,starttime:e,endtime:h()})}catch(e){O.log("auto api tracking: "+String(e))}}function Jr(){"function"==typeof fetch&&(Kr=fetch,window.fetch=function(e,t){var url,method,n;try{url=function(e){return"string"==typeof e?e:"undefined"!=typeof Request&&e instanceof Request?e.url:String(e)}(e),method=function(e,t){return t&&t.method?t.method:"undefined"!=typeof Request&&e instanceof Request?e.method:"GET"}(e,t),n=h()}catch(n){return Kr(e,t)}return Wr(url)?Kr(e,t).then(function(e){return Zr(method,url,n,e.status,e.statusText||"-"),e},function(e){throw Zr(method,url,n,0,String(e&&e.message?e.message:e)||"Network Error"),e}):Kr(e,t)})}function enableApiTracking(enabled){var on="boolean"!=typeof enabled||enabled;if(on!==Hr){if(on)return"function"==typeof XMLHttpRequest&&(Gr=XMLHttpRequest.prototype.open,Vr=XMLHttpRequest.prototype.send,XMLHttpRequest.prototype.open=function(method,url){try{var e=String(url);Wr(e)?this._ap_api={method:String(method||"GET"),url:e,starttime:0}:this._ap_api=void 0}catch(e){this._ap_api=void 0}return Gr.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){const e=this._ap_api;return e&&(e.starttime=h(),this.addEventListener("loadend",function(){var message=0===this.status?"Network Error":this.statusText||"-";Zr(e.method,e.url,e.starttime,this.status,message)})),Vr.apply(this,arguments)}),Jr(),Hr=!0,void O.log("automatic api tracking: on");Gr&&(XMLHttpRequest.prototype.open=Gr),Vr&&(XMLHttpRequest.prototype.send=Vr),Kr&&(window.fetch=Kr),Gr=Vr=Kr=null,Hr=!1,O.log("automatic api tracking: off")}}function trackError(e,t){var r;if(et(r="trackError")&&(E._errorTracking||(O.log("apptics."+r+": error tracking is turned off by the server"),0)))if(b(e))O.warn("AppticsError.trackError: Invalid error");else{var i=Vn(t),a=function(e){var t=e.reason?.stack||e.error?.stack||e.stack||"";if(!b(t))return t;var n=e.filename||e.fileName||"";if(b(n))return"";var r=void 0!==e.lineno?e.lineno:e.lineNumber,i=void 0!==e.colno?e.colno:e.columnNumber;return"at "+n+(b(r)?"":":"+r)+(b(i)?"":":"+i)}(e),o=function(e){let t="";if(b(e))return t;const n=e.split("\n");if(n.length<2)return t;const r=/at (\S+) \(/,i=/^(\w+)@/;for(let e of n){const n=e.match(r),a=e.match(i);if(n&&n[1]){const r=/\((.*)\)/.exec(e),url=r?r[1]:"Unknown URL";t=n[1],url.split("/").pop();break}if(a&&a[1]){t=a[1],e.split("@")[1].split("/").pop();break}}return t}(a)||"",s=e.type||"",c=function(e){if(null==e)return"";if("object"!=typeof e)return String(e);if(e instanceof Error||"string"==typeof e.message&&"string"==typeof e.name)return String(e);if("undefined"!=typeof Event&&e instanceof Event)return'Event "'+e.type+'"'+function(e){var t=e;if(!t||"string"!=typeof t.tagName)return"";var n=t.tagName.toLowerCase(),url=t.currentSrc||t.src||t.href||"";return" on <"+n+(url?(t.href&&!t.src?' href="':' src="')+url+'"':"")+">"}(e.target);var t=String(e);if("[object Object]"!==t)return t;try{return JSON.stringify(e).slice(0,300)}catch(e){return t}}(e.reason||e.error||e.message||""),message=(b(String(c))?b(s)?"Unknown error":String(s):String(c))+(b(o)?"":" at "+o),d=h(),u={id:S(),type:n.ERROR,edge:E._device_info.connectionType||Be(),networkstatus:Ue(),happenedat:d,issuename:message,message:b(a)?b(String(c))?"no stack available":String(c):a,screenname:E._current_screen.screen||window.location.pathname,sessionstarttime:E._current_session.starttime||d,customproperties:i};Rn(),qe(),Ae.add(u),O.log("AppticsError.trackError('"+s+"','"+message+"',"+JSON.stringify(i||{})+")"),O.dir(u)}}function Yr(e){E._deferSendTimer&&clearTimeout(E._deferSendTimer),E._deferSendTimer=setTimeout(e,500)}function Qr(){E._deferSendTimer&&(clearTimeout(E._deferSendTimer),E._deferSendTimer=null)}function $r(name,e){var t="undefined"!=typeof navigator?navigator.locks:void 0;return t&&"function"==typeof t.request?t.request("apptics-send-"+name,{ifAvailable:!0},function(t){return t?e():void 0}).then(function(){}):e()}function Xr(e,t,n){return e.payload().then(function(r){var i=[],a=[];return r.forEach(function(e){t(e)&&(T(n(e))?a:i).push(e)}),a.length?e.remove(a).then(function(){return i}):i})}function ei(e,t,n,r){var i=yt(t);if(i)return i;if(!Xe())return Promise.reject(t+": tracking is off");if(_(n))return Promise.reject(t+": nothing to send");var a=wt(t);if(a)return a;if(n.hasOwnProperty("meta")||(n.meta=At()),function(e){return ot(e).attempt>5}(e))return I("apptics: dropping a "+t+" batch after 5 attempts"),function(e){f[e]&&st(e,{attempt:1,firstattempttime:0,lst:ot(e).lst})}(e),Promise.resolve({result:"success"});O.log(t+": Payload size : "+A(n)/1024);var o=JSON.stringify(n);return r?_t(e,o,gt(),t):kt(e,o,gt(),t)}function ti(e,t,n){if(!t)return e.then(function(){});e.catch(function(e){O.log(n+": not confirmed before the page closed, kept for the next send: "+String(e))})}function ni(e){return Je()||!Xe()?Promise.resolve():0==navigator.onLine?(O.warn("sendEngagementData: No Network"),Promise.resolve()):E._sending?(Yr(ni),Promise.resolve()):(E._sending=!0,Qr(),$r("engagements",function(){return Xr(ze,function(e){return 0!=e.endtime},function(e){return e.starttime}).then(function(t){if(0==t.length)return;let r=[],i=[],a=[],o=[];var s={},c=[];return z(t).forEach(function(e){if(!1===E._engagementTracking[e.type])return;const t={...e};if(e.type==n.EVENT)a.push(e);else if(e.type==n.SCREEN)i.push(e);else if(e.type==n.SESSION)r.push(e);else{if(e.type!=n.API)return;o.push(e)}c.push(t),delete e.id,delete e.type,delete e.tabs,delete e.tab,delete e.lastseen}),a.length>0&&(s.events=a),i.length>0&&(s.screens=i),r.length>0&&(s.sessions=r),o.length>0&&(s.apis=o),_(s)?void 0:ti(function(e,t){return ei("engagement","requestToSendEngagements",e,t)}(s,e).then(function(){return ze.remove(c)},function(e){return vt(e)?(I("apptics: the server refused these engagement items, so they were dropped: "+String(e&&e.message)),ze.remove(c)):Promise.reject(e)}),e,"sendEngagementData")})}).catch(function(e){R(a.API,"sendEngagementData: "+e)}).then(function(){E._sending=!1}))}function ri(e){return!Je()&&Xe()&&E._errorTracking?0==navigator.onLine?(O.warn("sendErrorData: No Network"),Promise.resolve()):E._sending?(Yr(ri),Promise.resolve()):(E._sending=!0,Qr(),$r("errors",function(){return Xr(Ae,function(e){return 0!=e.happenedat},function(e){return e.happenedat}).then(function(t){if(0==t.length)return;let n=[];var r=[];return z(t).forEach(function(e){r.push({...e}),e.hasOwnProperty("screenname")||(e.screenname=""),delete e.id,delete e.type,n.push(e)}),ti(function(e,t){return ei("error","requestToSendErrors",e,t)}({exceptiondetails:n},e).then(function(){return Ae.remove(r)},function(e){return vt(e)?(I("apptics: the server refused these errors, so they were dropped: "+String(e&&e.message)),Ae.remove(r)):Promise.reject(e)}),e,"sendErrorData")})}).catch(function(e){O.log("sendErrorData:"+e)}).then(function(){E._sending=!1})):Promise.resolve()}function flush(e){return et("flush")?(E._sending=!1,ni(e).then(function(){return ri(e)}).then(function(){return Me.sendHeatmaps(e)})):Promise.resolve()}var ii=0;var ai=null;function oi(){null===ai&&(ai=setInterval(function(){De()&&(O.log("apptics: debug mode has been idle for an hour, switching it off"),je(!1)),O.log("scheduleToSendDataToServer: Scheduling to send engagement data to the server after sometime"),ni().then(function(){return ri()}).then(function(){return Me.sendHeatmaps()})},x("batch_flush_interval")))}function si(){null!==ai&&clearInterval(ai),ai=null,Qr(),null!==nn&&clearTimeout(nn),nn=null,an++,rn=!1,sn=!1,cn=!1,dn=0,ii=0}function ci(){return!(!E._token||Je())&&(!!E._remoteLoggerEnabled&&Xe())}const di="remoteLog";let ui=!1,li=!1;function fi(e){var t={sessionstarttime:E._current_session.starttime||e.happenedat||h(),logtime:e.happenedat||h(),level:Number(e.level)||3,logmessage:String(e.exceptionlog).slice(0,1e4),function:String(e.module||"SDK").slice(0,100),linenumber:Number(e.linenumber)||0};return b(e.filename)||(t.filename=String(e.filename).slice(0,100)),t}function pi(e){return JSON.stringify({logs:e.map(fi),meta:At()})}function gi(){return li||!ci()||!1===navigator.onLine?Promise.resolve():(li=!0,Ee.all().then(function(e){var t=function(e){for(var t=0,n=e.length,r=e.length-1;r>=0&&!((t+=JSON.stringify(e[r]).length)>1048576);r--)n=r;return 0===n?e:(Ee.remove(e.slice(0,n)),e.slice(n))}(e).slice(0,50);if(0!==t.length)return kt("consolelog",pi(t),gt(),di).then(function(){return Ee.remove(t)},function(e){if(vt(e))return I("apptics: the server refused these log lines, so they were dropped: "+String(e&&e.message)),Ee.remove(t);O.log(di+": "+String(e))})}).then(function(){li=!1}).catch(function(){li=!1}))}function mi(){var e=Ce.item("user_info");if(!e||"object"!=typeof e||b(e.userid)){var t=Ce.item("users")||[],n={};t.length>0&&(n=t.filter(e=>1===e.status)[0]||{}),E._user_info=n}else E._user_info=e}let vi=!1,hi=null,ki=0;function bi(config){var e=Object.assign({},config);return Object.keys(u).forEach(function(key){var t=u[key];b(config[key])?(delete e[t],Object.keys(g).forEach(function(n){g[n]!==key||b(config[n])||(I("Apptics.init: "+n+" is now "+key+"; rename it in your config"),b(e[t])&&(e[t]=config[n]))})):e[t]=config[key]}),b(e.serviceUrl)||(e.serviceUrl=String(e.serviceUrl).replace(/\/+$/,"")),e.appversion=function(value){if("number"==typeof value)return isFinite(value)?String(value):"";return"string"==typeof value?value.trim():""}(e.appversion),e}const _i=["YOUR_APP_VERSION","YOUR_BUILD_OR_APP_VERSION","YOUR_APPVERSION"];function yi(e){return e.serviceUrl+"|"+e.identifier}var zi="";const Ai=Object.freeze([{key:"batch_flush_interval",min:1e3,max:36e5},{key:"getupdates_interval",min:1e4,max:864e5},{key:"batch_size",min:1,max:500},{key:"batch_request_timeout",min:1,max:30},{key:"min_session_duration",min:0,max:6e4},{key:"heatmap_max_per_session",min:0,max:1e4}]);function wi(){return Ce.add(it,void 0),Ce.clear(),Promise.all([ze,Ae,Se,Ee,we].map(function(e){return e.clear()})).then(function(){})}function init(config){if(!config||"object"!=typeof config)return I("Apptics.init: a config object is required, e.g. Apptics.init({ base_url, auth_key, app_domain, appversion })"),!1;if(E._initialised)return O.warn("Apptics.init: already initialised; call Apptics.reset() to start again"),!1;if(!function(){if("undefined"==typeof window||"undefined"==typeof document||"undefined"==typeof Promise)return!1;try{return"undefined"!=typeof indexedDB||!!window.localStorage}catch(e){return!1}}())return I("Apptics.init: skipped, no browser with storage and Promise support"),!1;var e,t,n=bi(config),r=d.filter(function(key){return b(n[u[key]||key])});if(r.length>0)return I("Apptics.init: missing required config: "+r.join(", ")),!1;if(e=n.appversion,-1!==_i.indexOf(e.toUpperCase()))return I('Apptics.init: appversion is still the placeholder "'+n.appversion+"\"; replace it with your app's version or build number, e.g. '2.4.0'"),!1;E._defaultoptions=n,E._defaultoptions.base_domain=n.serviceUrl,E._frameworkID=function(e){var t=e;try{t=new URL(e).hostname}catch(e){}return-1!==t.indexOf("localzoho")?5970:6003}(n.serviceUrl),E._token=n.identifier,b(config.console_log)||(E._config.debug=!!config.console_log),"boolean"==typeof config.ignore_do_not_track&&(E._config.ignore_do_not_track=config.ignore_do_not_track),E._config.debug_api="boolean"==typeof config.debug?config.debug:"boolean"==typeof config.debug_api?config.debug_api:c.debug_api,t=E._config.debug_api,je(null!==Fe?Fe:t),E._config.device_name="string"==typeof config.device_name?config.device_name:c.device_name,void 0!==config.remote_log&&I("Apptics.init: remote_log is no longer read; the Remote Logger page shows the lines your app logs with AppticsLogger"),void 0!==config.show_logs&&I("Apptics.init: show_logs is no longer read; AppticsLogger lines are not printed to the browser console"),E._config.track_api=c.track_api,["track_api_hosts","track_api_exclude_hosts"].forEach(function(key){void 0!==config[key]&&I("Apptics.init: "+key+" is no longer supported; use AppticsApi.configure(new AppticsApi.ApiTrackingBuilder()."+("track_api_hosts"===key?"allowOnlyDomains":"ignoreDomains")+"(...).build())")}),["DC","quartz_workspace_key","quartz_department_key"].forEach(function(key){void 0!==config[key]&&I("Apptics.init: "+key+" is no longer read; screen recording in the feedback form is set up from the Apptics console")}),void 0!==config.track_session&&I("Apptics.init: track_session is no longer read; sessions are always recorded. To stop tracking, use AppticsSettings.setTrackingStatus(AppticsSettings.AP_TRACKING_STATUS.NO_TRACKING)"),"boolean"==typeof config.track_api&&(E._config.track_api=config.track_api),enableApiTracking(E._config.track_api),E._config.track_heatmap="boolean"==typeof config.track_heatmap?config.track_heatmap:c.track_heatmap,Me.trackHeatmap(E._config.track_heatmap),E._config.track_screen="boolean"==typeof config.track_screen?config.track_screen:c.track_screen,E._config.screen_routes=function(e){if(!Array.isArray(e))return[];var t=[];return e.forEach(function(e){if("string"!=typeof e){var n=e&&"object"==typeof e?e:null,name=n&&"string"==typeof n.name?n.name.trim():"";if(n&&""!==name&&"string"==typeof n.equals&&""!==n.equals.trim())t.push({kind:"equals",path:ur(n.equals.trim()),name:name});else{if(n&&""!==name&&void 0!==n.regex){var r=null;if(n.regex instanceof RegExp)r=n.regex;else if("string"==typeof n.regex&&""!==n.regex)try{r=new RegExp(n.regex)}catch(e){r=null}if(r)return void t.push({kind:"regex",regex:r,name:name})}I("Apptics.init: screen_routes entry "+function(value){try{return JSON.stringify(value,function(e,t){return t instanceof RegExp?String(t):t})||String(value)}catch(e){return String(value)}}(e)+" is left out: give a route pattern, { equals, name } or { regex, name }")}}else""!==e.trim()&&t.push({kind:"pattern",pattern:e.trim()})}),t}(config.screen_routes),E._config.track_error="boolean"==typeof config.track_error?config.track_error:c.track_error,E._config.track_click="boolean"==typeof config.track_click?config.track_click:c.track_click,"light"!==config.feedback_theme&&"dark"!==config.feedback_theme&&"auto"!==config.feedback_theme||(E._config.feedback_theme=config.feedback_theme),function(config){if(Ai.forEach(function(e){var value=config[e.key];if(E._config[e.key]=c[e.key],!b(value)){var t=Number(value);!isFinite(t)||t<e.min||t>e.max?I("Apptics.init: "+e.key+" must be between "+e.min+" and "+e.max+", keeping "+E._config[e.key]):(E._config[e.key]=t,O.log("Apptics.init: "+e.key+" set to "+t))}}),E.inactiveduration=30,!b(config.inactiveduration)){var e=Number(config.inactiveduration);!isFinite(e)||e<1||e>1440?I("Apptics.init: inactiveduration must be between 1 and 1440 minutes, keeping "+E.inactiveduration):(E.inactiveduration=e,O.log("Apptics.init: inactiveduration set to "+e))}}(config),hi=config,E._initialised=!0,E._ready=!1,E._pending=[];var i=++ki;return E._readyPromise=be().then(function(e){return i===ki&&(e?function(e){var t=Ce.item("app_version_info")||{},n=b(t.serviceUrl)||b(t.identifier)?Ce.item("appkey"):yi(t);zi=String((b(t.appversion)?Ce.item("appversion"):t.appversion)||""),Ce.add("appkey",void 0),Ce.add("appversion",void 0);var r=!b(n)&&n!==yi(e),i=!b(t.zakhash)&&t.zakhash!==Rt(e.zak);return r||i?(O.log("init: stored data was registered with another "+(r?"base_url or app_domain":"auth_key")+", clearing it and starting as a first visit"),zi="",Me.resetRemoteConfig(),wi()):Promise.resolve()}(E._defaultoptions).then(function(){return i===ki&&function(config,e){return Dt().then(function(t){return e===ki&&(!t&&Lt()?(I("Apptics.init: offline, so app/addversion is tried again when the browser is back online; calls made until then are kept"),function(e){return new Promise(function(t){var n=null,r=!1;function i(e){window.removeEventListener("online",a),null!==n&&clearInterval(n),t(e)}function a(){e===ki?r||!1===navigator.onLine||(r=!0,Dt().then(function(e){r=!1,e?i(!0):Lt()||(I("Apptics.init: app/addversion did not return the app ids, not starting"),i(!1))})):i(!1)}window.addEventListener("online",a),n=setInterval(a,Si)})}(e).then(function(t){return e===ki&&(t?Ei(config,e):(E._initialised=!1,E._token="",E._pending=[],!1))})):t?Ei(config,e):(I("Apptics.init: app/addversion did not return the app ids, not starting"),E._initialised=!1,E._token="",E._pending=[],!1))})}(config,i)}):(I("Apptics.init: no usable storage (IndexedDB or localStorage), not starting"),E._initialised=!1,E._token="",E._pending=[],!1))}).catch(function(e){return O.error("Apptics.init: start-up failed",e),!1}),!0}const Si=6e4;function ready(){return E._readyPromise||Promise.resolve(!1)}function Ei(config,e){var t,n;(t=An())&&!wn&&(wn=!0,t.request(zn+_n(),function(){return new Promise(function(){})}).catch(function(){wn=!1})),E._token=String(E._defaultoptions.aaid),(n=Ce.item("trackinfo"))&&"object"==typeof n&&(Xt(n),en.some(function(key){return n.hasOwnProperty(key)})&&Ce.add("trackinfo",void 0===n.tracking_status?E._trackinfo:Object.assign({},E._trackinfo,{tracking_status:n.tracking_status})),O.log("restoreServerSettings: "+JSON.stringify(E._trackinfo))),mi();var r=""!==zi&&zi!=E._defaultoptions.appversion;return E._ignoreDnt=E._config.ignore_do_not_track,Re.update_status(Re.opt_in_status()),Zt().then(function(){return e===ki&&function(e,t){ln(),e&&(E._device_info.appversionid="",Qt(E._device_info).then(function(e){k(e)&&O.log("init: appversion updated to "+E._defaultoptions.appversion)}).catch(function(e){O.log("init: error updating appversion: "+e)}));return E._device_info.connectionType=Be(),function(){if(vi)return;vi=!0;var e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;e&&e.addEventListener&&e.addEventListener("change",function(){E._device_info.connectionType=Be()});window.addEventListener("blur",function(){xi()&&(document.activeElement&&"IFRAME"===document.activeElement.tagName||(O.log("Window lost focus, user switched to another window or application"),Dn(Oi)))}),window.addEventListener("focus",function(){xi()&&(O.log("Window regained focus, user switched back to the window"),qn(),jn(),oi())}),window.addEventListener("pagehide",Ii),window.addEventListener("pageshow",function(e){xi()&&e.persisted&&(O.log("restored from the back/forward cache: starting a new session"),qn(),jn().then(Dr),oi())}),document.addEventListener("visibilitychange",function(){xi()&&("hidden"!==document.visibilityState?(qn(),jn().then(Dr)):function(){if(!xi())return;Dn(Oi),mn(),flush(!0),O.log("page hidden: closing the open screen and flushing")}())}),window.addEventListener(window.cordova?"deviceready":"load",function(){xi()&&jn()},{passive:!0}),window.addEventListener("online",function(){if(xi()){if(b(ut("apid"))&&b(ut("mapid"))||!St())return O.log("back online: registering this device before sending"),void Zt().then(Jt).then(function(){xi()&&(flush(),gi())});flush(),gi()}},{passive:!0}),window.screen&&window.screen.orientation&&"function"==typeof window.screen.orientation.addEventListener&&window.screen.orientation.addEventListener("change",function(){E._properties.orientation=Ge()});window.addEventListener("unhandledrejection",function(e){xi()&&E._config.track_error&&trackError(e)}),window.addEventListener("error",function(e){if(xi()&&E._config.track_error){var t=e.target;t&&t!==window&&"string"==typeof t.tagName?trackError({type:"error",reason:e}):trackError(e)}},!0),window.addEventListener("click",Ci,!0)}(),E._properties.orientation=Ge(),jn().then(function(){if(t!==ki)return!1;oi(),gi(),E._ready=!0;var e=E._pending;return E._pending=[],e.forEach(function(e){try{e()}catch(e){O.error("apptics: buffered call failed",e)}}),Or(E._config.track_screen),Me.remoteConfigStarted(),window.appticsReadyStatus=!0,"function"==typeof window.appticsReady&&window.appticsReady(),!0})}(r,e)})}function xi(){return E._ready}function Ti(e,name){var value=e.getAttribute(name);return null!==value&&""!==value?value:e.getAttribute("data-"+name)}function Pi(name){return"["+name+"]:not(["+name+'=""]),[data-'+name+"]:not([data-"+name+'=""])'}function Ci(e){if(window.appticsReadyStatus&&xi()&&E._config.track_click){var t=e.target;if(t&&"function"!=typeof t.closest&&(t=t.parentElement),t){var n=t.closest(Pi("apeventaction"));if(n){var eventName=Ti(n,"apeventaction")||"",r=n.closest(Pi("apgroupaction")),groupName=r&&Ti(r,"apgroupaction")||void 0,i={},a=Ti(n,"apeventprops");if(!b(a))try{i=JSON.parse(a)}catch(e){O.warn('apptics: invalid JSON in apeventprops for "'+eventName+'", sending no properties'),i={}}b(eventName)||Nr(eventName,groupName,i)}}}}function Oi(){xi()&&flush()}function Ii(){xi()&&(O.log("page closing: ending the session and sending what is queued"),mn(),ci()?Ee.all().then(function(e){if(0!==e.length){var t=e.slice(0,50);_t("consolelog",pi(t),gt(),di).then(function(){return Ee.remove(t)},function(e){if(vt(e))return Ee.remove(t);O.log(di+": "+String(e))})}}):Promise.resolve(),Fn().then(function(){return flush(!0)}))}var Ri=!1,Ni=0,Mi=[],Li=0,Di=0,qi=0,Fi=null,ji=null,Bi=new WeakMap,Ui=0,Hi=0;function Gi(){var e=x("heatmap_max_per_session");return("number"!=typeof e||e<=0)&&(e=c.heatmap_max_per_session),!(Ni>=e)||(Ni===e&&(Ni++,O.log("apptics.heatmap: reached "+e+" records for this session, pausing capture")),!1)}function Vi(){var e=document.documentElement,t=document.body;return Math.max(e?e.scrollHeight:0,t?t.scrollHeight:0,e?e.clientHeight:0)}function Ki(e,t){if(!t||t<=0)return 0;var value=e/t;return value<0&&(value=0),value>1&&(value=1),Math.round(1e3*value)/1e3}function Wi(){return window.innerWidth||(document.documentElement?document.documentElement.clientWidth:0)||1}function Zi(t){if(!t)return"";for(var n=["data-ap-label","apeventaction","data-apeventaction","aria-label","name","id","title"],r=0;r<n.length;r++){var value=t.getAttribute?t.getAttribute(n[r]):null;if(!b(value))return String(value).slice(0,80)}var i=t.tagName?t.tagName.toLowerCase():"element";if(getTrackingStatus()!==e.USAGE_TRACKING_WITH_PII){var a=t.getAttribute?t.getAttribute("role"):null;return b(a)?i:i+"["+a+"]"}var o=(t.textContent||"").replace(/\s+/g," ").trim();return b(o)?i:o.slice(0,80)}function Ji(e){if(!e)return 0;for(var t="",n=e,r=0;n&&r<12;){var i=n.parentElement,a=0;if(i)for(var o=i.children,s=0;s<o.length;s++)if(o[s]===n){a=s;break}t="/"+(n.tagName||"?")+":"+a+t,n=i,r++}for(var c=2166136261,d=0;d<t.length;d++)c=16777619*(c^=t.charCodeAt(d))>>>0;return c}function Yi(e,t,n){return(Mi=Mi.filter(function(e){return n-e.at<=1e3})).push({at:n,x:e,y:t}),Mi.filter(function(n){return Math.abs(n.x-e)<=30&&Math.abs(n.y-t)<=30}).length>=3}function Qi(){return{id:S(),session_start_time:E._current_session.starttime||h(),triggered_time:h(),screen:String(Lr()).slice(0,500),url_path:String(window.location.pathname).slice(0,500),screen_width:window.screen?window.screen.width:0,screen_height:window.screen?window.screen.height:0,content_height:Vi(),orientation:Ge(),network_status:Ue(),edge_type:E._device_info.connectionType||Be(),scroll_offset_x:Math.round(window.scrollX||window.pageXOffset||0),scroll_offset_y:Math.round(window.scrollY||window.pageYOffset||0)}}function $i(e){Ni++,qe(),Rn(),Se.add(e),O.dir(e)}function Xi(e){if(nt("heatmap")&&Gi())try{var t=h(),n=e.target,r=function(e){for(var t=0;e&&t<10;){var n=e.tagName?e.tagName.toLowerCase():"",r=e.getAttribute?e.getAttribute("role"):null;if("a"===n||"button"===n||"input"===n||"select"===n||"textarea"===n||"summary"===n||"label"===n||"button"===r||"link"===r||"tab"===r||"menuitem"===r||e.hasAttribute&&e.hasAttribute("onclick"))return e;e=e.parentElement,t++}return null}(n),i=r||n,o=Math.round(e.clientX),s=Math.round(e.clientY),c=Vi()||1,d=e.pointerType,u=Object.assign(Qi(),{triggered_type:"default",gesture_type:"click",gesture_duration:0,input_type:b(d)?"mouse":String(d),element_label:Zi(i),triggered_id:Ji(i),coordinate_x:o,coordinate_y:s,normalized_x:Ki(o,Wi()),normalized_y:Ki((window.scrollY||0)+s,c),velocity:0,is_clickable:r?1:0,is_rage_click:Yi(o,s,t)?1:0,is_dead_click:0});$i(u),function(e){if(1===e.is_clickable||"function"!=typeof MutationObserver)return;var t=!1,url=window.location.href,n=new MutationObserver(function(){t=!0});try{n.observe(document.documentElement,{childList:!0,subtree:!0,attributes:!0})}catch(e){return}setTimeout(function(){n.disconnect(),t||window.location.href!==url||(e.is_dead_click=1,Se.update(e))},1500)}(u)}catch(e){R(a.HEATMAP,"apptics.heatmap: click capture failed: "+String(e))}}function ea(e){if(nt("heatmap")&&Gi()){var t=function(e){var t=document;if(!e||1!==e.nodeType||e===t.documentElement||e===t.body)return null;var n=e;return n.clientHeight>=.5*(window.innerHeight||0)&&n.clientWidth>=.5*Wi()?n:void 0}(e?e.target:null);if(void 0!==t){if(null!==Fi&&t!==ji&&(clearTimeout(Fi),ta()),null===Fi){ji=t;var n=function(e){return null===e?{x:Ui,y:Hi}:Bi.get(e)||{x:0,y:0}}(t);Li=h(),Di=n.x,qi=n.y}else clearTimeout(Fi);Fi=setTimeout(ta,150)}}}function ta(){Fi=null;var e=ji;ji=null;try{var t=function(e){return null===e?{x:Math.round(window.scrollX||window.pageXOffset||0),y:Math.round(window.scrollY||window.pageYOffset||0)}:{x:Math.round(e.scrollLeft||0),y:Math.round(e.scrollTop||0)}}(e),n=t.x,r=t.y,i=n-Di,o=r-qi;if(null===e?(Ui=n,Hi=r):Bi.set(e,t),0===i&&0===o)return;var s=Math.max(1,h()-Li),c=Math.sqrt(i*i+o*o),d=Math.abs(o)>=Math.abs(i)?o>0?"down-scroll":"up-scroll":i>0?"right-scroll":"left-scroll",u=(null===e?Vi():e.scrollHeight)||1,l=null===e?window.innerHeight||0:e.clientHeight;$i(Object.assign(Qi(),null===e?{}:{content_height:e.scrollHeight,scroll_offset_x:n,scroll_offset_y:r},{triggered_type:"default",gesture_type:d,gesture_duration:Math.round(s),element_label:"",triggered_id:0,coordinate_x:n,coordinate_y:r,normalized_x:0,normalized_y:Ki(r+l,u),velocity:Math.round(c/s*1e3),is_clickable:0,is_rage_click:0,is_dead_click:0}))}catch(e){R(a.HEATMAP,"apptics.heatmap: scroll capture failed: "+String(e))}}function trackHeatmap(status){var e="boolean"!=typeof status||status;if(e!==Ri){if(e)return Ui=Math.round(window.scrollX||0),Hi=Math.round(window.scrollY||0),window.addEventListener("pointerdown",Xi,{capture:!0,passive:!0}),window.addEventListener("scroll",ea,{capture:!0,passive:!0}),Ri=!0,void O.log("apptics.heatmap: capturing clicks and scrolls");window.removeEventListener("pointerdown",Xi,!0),window.removeEventListener("scroll",ea,!0),null!==Fi&&(clearTimeout(Fi),ta()),ji=null,Ri=!1,O.log("apptics.heatmap: capture stopped")}}Me.trackHeatmap=trackHeatmap,Me.resetHeatmap=function(){Ni=0,Mi=[],Ui=0,Hi=0,Bi=new WeakMap},Me.sendHeatmaps=function e(t){return!Je()&&Xe()&&E._heatmapTracking?0==navigator.onLine?(O.warn("sendHeatmapData: No Network"),Promise.resolve()):E._sending?(Yr(e),Promise.resolve()):(E._sending=!0,Qr(),$r("heatmaps",function(){return Xr(Se,function(){return!0},function(e){return e.triggered_time||e.session_start_time}).then(function(e){if(0!=e.length){var n=[],r=[];return z(e).forEach(function(e){r.push({...e}),delete e.id,n.push(e)}),ti(function(e,t){return ei("heatmap","requestToSendHeatmaps",e,t)}({data:n},t).then(function(){return Se.remove(r)},function(e){return vt(e)?(I("apptics: the server refused these heatmap records, so they were dropped: "+String(e&&e.message)),Se.remove(r)):Promise.reject(e)}),t,"sendHeatmapData")}})}).catch(function(e){O.log("sendHeatmapData:"+e)}).then(function(){E._sending=!1})):Promise.resolve()};const na=q("Apptics.init",init),ra=q("Apptics.ready",ready),ia=q("Apptics.flush",function(){var e=h();return ii>0&&e-ii<15e3?(O.log("Apptics.flush: sent "+(e-ii)+" ms ago; it sends at most once every 15000 ms, and the timer sends the rest"),Promise.resolve()):(ii=e,flush())}),aa=q("Apptics.reset",function reset(){ki++,si(),qn(),enableApiTracking(!1),Or(!1),Pt=null,Ce.add(xt,void 0),Me.trackHeatmap(!1),Me.resetHeatmap(),Me.resetRemoteConfig(),wi(),E._initialised=!1,E._ready=!1,E._pending=[],E._readyPromise=null,E._device_info={},E._user_info={},E._current_screen={},E._current_session={},E._uuid="",E._apid="",E._mapid="",E._sending=!1,O.log("Apptics.reset()"),hi&&init(hi)}),oa=q("Apptics.enableDebug",function enableDebug(){Fe=!0,je(!0)}),sa=q("Apptics.disableDebug",function disableDebug(){Fe=!1,je(!1)});var ca={};function da(e,t){ca[e]||(ca[e]=!0,I(e+" is now "+t+"; rename it in your code"))}const ua={init:function init(config){return F(na,arguments)},ready:function ready(){return F(ra,arguments)},flush:function flush(){return F(ia,arguments)},reset:function reset(){return F(aa,arguments)},enableDebug:function enableDebug(){return F(oa,arguments)},disableDebug:function disableDebug(){return F(sa,arguments)}},la=q("AppticsEvent.addEvent",Nr),fa=q("AppticsEvent.setClickTracking",function setClickTracking(enabled){E._config.track_click="boolean"!=typeof enabled||enabled,O.log("click tracking: "+(E._config.track_click?"on":"off"))}),pa={DefinedEvents:cr,addEvent:function addEvent(eventName,groupName,properties){return F(la,arguments)},setClickTracking:function setClickTracking(enabled){return F(fa,arguments)}},ga=q("AppticsScreen.inScreen",function(screenName,e,id,t){Wn(screenName)?(Me.screenTrackedByApp(),Mr(screenName,e,id,t)):Rr(a.SCREEN,"AppticsScreen.inScreen: Invalid screenName: "+String(screenName))}),ma=q("AppticsScreen.outScreen",function(id,e){b(id)?R(a.SCREEN,"AppticsScreen.outScreen: no screen id given"):gn(id,e)}),va=q("AppticsScreen.setScreenTracking",function setScreenTracking(enabled){E._config.track_screen="boolean"!=typeof enabled||enabled,xi()&&Or(E._config.track_screen)}),ha={inScreen:function inScreen(screenName,properties){if(!Wn(screenName))return ga(screenName,properties,"",h()),"";var id=S();return ga(screenName,properties,id,h()),id},outScreen:function outScreen(id){ma(id,h())},setScreenTracking:function setScreenTracking(enabled){return F(va,arguments)}},ka=q("AppticsApi.endTrackApi",function(id,responseCode,responseMessage,e){var t=Br[id];t?(delete Br[id],Ur=Ur.filter(function(e){return e!==id}),jr({url:t.url,method:t.method,responsecode:"number"==typeof responseCode?responseCode:0,responsemessage:responseMessage,starttime:t.starttime,endtime:e})):R(a.API,"AppticsApi.endTrackApi: no call started with id "+String(id))}),ba=q("AppticsApi.startTrackApi",function startTrackApi(url,method){var id=S();return Br[id]={url:String(url||""),method:String(method||"GET").toUpperCase(),starttime:h()},Ur.push(id),Ur.length>500&&delete Br[Ur.shift()],id}),_a=q("AppticsApi.configure",function(config){var e=config instanceof Qn?config.build():config;if(e&&"object"==typeof e){var t=function(e){return"string"==typeof e},n=function(e){return e instanceof RegExp};Xn={allowEquals:Jn("allowEquals",er(e.allowEquals,t)),ignoreEquals:Jn("ignoreEquals",er(e.ignoreEquals,t)),allowRegex:er(e.allowRegex,n).concat(Yn("allowRegex",er(e.allowRegex,t))),ignoreRegex:er(e.ignoreRegex,n).concat(Yn("ignoreRegex",er(e.ignoreRegex,t)))}}else Xn={allowEquals:[],ignoreEquals:[],allowRegex:[],ignoreRegex:[]}}),ya=q("AppticsApi.setApiTracking",enableApiTracking),za={startTrackApi:function startTrackApi(url,method){return F(ba,arguments)},endTrackApi:function endTrackApi(id,responseCode,responseMessage){ka(id,responseCode,responseMessage,h())},ApiTrackingBuilder:Qn,configure:function configure(config){return F(_a,arguments)},setApiTracking:function setApiTracking(enabled){return F(ya,arguments)},enableApiTracking:function enableApiTracking(enabled){return da("AppticsApi.enableApiTracking","AppticsApi.setApiTracking"),F(ya,arguments)}},Aa=q("AppticsError.trackError",trackError),wa=q("AppticsError.setErrorTracking",function setErrorTracking(status){E._config.track_error="boolean"!=typeof status||status,O.log("automatic error tracking: "+(E._config.track_error?"on":"off"))}),Sa={trackError:function trackError(error,properties){return F(Aa,arguments)},setErrorTracking:function setErrorTracking(enabled){return F(wa,arguments)},trackGlobalErrorHandler:function trackGlobalErrorHandler(enabled){return da("AppticsError.trackGlobalErrorHandler","AppticsError.setErrorTracking"),F(wa,arguments)}},Ea=q("AppticsUser.setUser",function setUser(userid,groupid,t){let n=t||{};if(userid=userid||"",groupid=groupid||"",et("setUser"))if(b(userid))R(a.PROPERTIES,"AppticsUser.setUser: Invalid userid");else{var r={mam:userid,customergroupid:groupid,appversionid:E._device_info.appversionid||"",status:1,happendat:h()};_(n)||(r.userproperties=function(e){var t=e,n=t&&"object"==typeof t&&t.data&&t.datatype?t:Kn(e);return n.message.forEach(function(e){R(a.PROPERTIES,"AppticsUser.setUser: dropped "+e.keys.join(", ")+" (error "+e.code+")")}),n}(n)),function(t){var n="registerUserWithApptics",r=yt(n)||zt(n);if(r)return r;if(_(t))return Promise.reject(n+": nothing to register");var i=wt(n);if(i)return i;var a=JSON.stringify(function(e,t){const n={};for(let key in e)t.includes(key)||(n[key]=e[key]);return n}(t,["userid","groupid","happendat"]));return kt("reguser",a,gt(),n).then(function(n){var r=n.data||{};return t.userid=r.userid,t.groupid=r.customergroupid,rt(e.USAGE_TRACKING_WITH_PII),function(e){e.status=1;var t=Ce.item("users")||[],n=(t=t.map(e=>({...e,status:0}))).findIndex(t=>t.userid===e.userid);-1!==n?t[n]={...t[n],...e}:t.push(e);Ce.add("users",t),Ce.add("user_info",t[-1!==n?n:t.length-1])}(t),mi(),Me.remoteConfigUserChanged(),Me.askServerSettings(),r})}(r).then(function(e){O.log("setUser: "+JSON.stringify(e))}).catch(function(e){O.log(e)})}}),xa=q("AppticsUser.getUser",function getUser(){return E._user_info||{}}),Ta={setUser:function setUser(userid,groupid,properties){return F(Ea,arguments)},getUser:function getUser(){return F(xa,arguments)},UserBuilder:class{setFirstName(e){return this.first_name=e,this}setLastName(e){return this.last_name=e,this}setCompanyName(e){return this.company_name=e,this}setEmailAddress(e){return this.email_address=e,this}setContactNumber(e){return this.contact_number=e,this}setCountry(e){return this.country=e,this}setRegion(e){return this.region=e,this}setCity(e){return this.city=e,this}setGeoLocation(e){return this.geo_location=e,this}setGender(e){return this.gender=e,this}setPlanType(e){return this.plan_type=e,this}setTimezone(e){return this.timezone=e,this}setLanguage(e){return this.language=e,this}setEngagementScore(e){return this.engagement_score=e,this}setDateOfBirth(e){return this.date_of_birth=e,this}addStringProperty(key,value){return"string"==typeof value&&(this[key]=value),this}addBooleanProperty(key,value){return"boolean"==typeof value&&(this[key]=value),this}addNumberProperty(key,value){return"number"==typeof value&&Number.isFinite(value)&&(this[key]=value),this}setCustomProperties(e){if("object"==typeof e&&null!==e)for(const[key,value]of Object.entries(e))this[key]=value;return this}build(){const e={},t=["first_name","last_name","company_name","email_address","contact_number","country","region","city","geo_location","gender","plan_type","timezone","language","engagement_score","date_of_birth"];return t.forEach(t=>{void 0!==this[t]&&(e[t]=this[t])}),Object.entries(this).forEach(([key,value])=>{-1===t.indexOf(key)&&"function"!=typeof value&&(e[key]=value)}),Kn(e)}}},Pa=q("AppticsHeatmap.setHeatmapTracking",trackHeatmap),Ca={setHeatmapTracking:function setHeatmapTracking(enabled){return F(Pa,arguments)},trackHeatmap:function trackHeatmap(on){return da("AppticsHeatmap.trackHeatmap","AppticsHeatmap.setHeatmapTracking"),F(Pa,arguments)}},Oa=q("AppticsSettings.setTrackingStatus",function setTrackingStatus(t){b(t)?O.warn("setTrackingStatus: trackingStatus is Empty"):rt(t)&&Re.opt_in_status()!=e.NO_TRACKING&&(O.log("setTrackingStatus: Updating device info with new tracking status"),Me.updateDevice(E._device_info).then(function(e){k(e)?(O.log("setTrackingStatus: Device info updated with new tracking status"+JSON.stringify(e.data)),O.dir(e.data)):O.log("setTrackingStatus: Error updating device info with new tracking status: "+JSON.stringify(e))}).catch(function(e){O.warn("setTrackingStatus: Error updating device info with new tracking status: "+JSON.stringify(e))}))}),Ia=q("AppticsSettings.getTrackingStatus",getTrackingStatus),Ra={AP_TRACKING_STATUS:e,setTrackingStatus:function setTrackingStatus(status){return F(Oa,arguments)},getTrackingStatus:function getTrackingStatus(){return F(Ia,arguments)}},Na={Apptics:ua,AppticsEvent:pa,AppticsScreen:ha,AppticsApi:za,AppticsError:Sa,AppticsUser:Ta,AppticsSettings:Ra,AppticsHeatmap:Ca},Ma=2097152,La=V,Da=K;let qa=!1;function Fa(){qa||(qa=!0,setTimeout(function(){qa=!1,we.all().then(function(e){const t=e.length-1e3;if(!(t<=0))return O.warn("apptics: dropping "+t+" oldest feedback log entries (cap is 1000)"),we.remove(e.slice(0,t))})},2e3))}function ja(e){we.add(e),Fa()}function Ba(e){return e.length>1e4?e.slice(0,1e4)+"…":e}const Ua={};function Ha(message){Ua[message]||(Ua[message]=!0,I("AppticsFeedback.addDiagnosticsInfo: "+message+", so the entry is not recorded"))}function Ga(e){return we.all().then(function(t){return t.filter(function(t){return t.type===e&&!T(t.happenedat)})})}function Va(e){return"string"==typeof e.timestamp&&e.timestamp.length>0?e.timestamp:new Date("number"==typeof e.happenedat?e.happenedat:h()).toISOString()}function Ka(e){return e.map(function(e){return String(e.id)})}function Wa(e){const t=[],n={};return e.forEach(function(e){const heading=String(e.heading);n[heading]||(n[heading]=[],t.push(heading)),n[heading].push(e.key+": "+e.value)}),t.map(function(heading){return"["+heading+"]\n"+n[heading].join("\n")}).join("\n\n")}function Za(name,e,t){const n=new File([e],name,{type:"text/plain"});return n.size>Ma?(O.warn("apptics: "+name+" is over 2 MB, not sending it"),null):{file:n,ids:Ka(t)}}function Ja(){return Ga(La).then(function(e){return 0===e.length?null:Za("feedbacklog.txt",function(e){return e.map(function(e){return"["+Va(e)+"] "+e.message}).join("\n")}(e),e)})}function Ya(){return Ga(La).then(function(e){return e.map(function(e){return"["+function(e){var t=Va(e),n=new Date(t);return isNaN(n.getTime())?t:n.toLocaleDateString(void 0,{day:"2-digit",month:"short",year:"numeric"})+", "+n.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}(e)+"] "+e.message}).join("\n")})}const Qa="Feedback sent successfully",$a="Something went wrong. Send feedback again";function Xa(e){if(Je())return Promise.resolve(null);if(0==navigator.onLine)return O.warn("sendFeedbackData: No Network"),Promise.resolve(null);var t=b(e.attachment)?null:e.attachment,n=t?t.length:0,r=function(e){if(!e||0===e.length)return"";if(e.length>5)return"Maximum 5 attachments is allowed";for(var t=0,n=0;n<e.length;n++)t+=Number(e[n].size)||0;return t>10485760?"Maximum limit reached. The total file size cannot exceed 10MB.":""}(t);if(""!==r)return Promise.reject(new Error("sendFeedback: "+r));var i=e&&e.logsFiles?e.logsFiles:null,a=i&&i.length?i.length:0,o=h();return Promise.all([eo(e),He()]).then(function([r,s]){var c=new FormData,d={networkstatus:Ue(),orientation:Ge(),edge:Be(),screenname:E._current_screen.screen||"",sessionstarttime:E._current_session.starttime||o,report:e.message,type:e.type,source:0,attachmentcount:n||0,logfilecount:a+(r.logFile?1:0),happendat:o};b(e.quartzid)||(d.quartzid=e.quartzid),null!==s&&(d.battery=s),c.append("feedinfo",JSON.stringify({feedinfo:d,meta:At()}));var u=Promise.resolve();return t&&n>0&&n<=5&&(u=function(e){var t=[];for(let n=0;n<e.length;n++){const r=e[n];t.push(new Promise(function(e,t){const i=new FileReader;i.onload=function(t){const i=t.target.result;e(new File([i],"image_"+(n+1),{type:r.type}))},i.onerror=function(){t(i.error)},i.readAsArrayBuffer(r)}))}return Promise.all(t)}(t).then(function(e){e.forEach(function(e){c.append("attachment",e)})})),u.then(function(){return function(e,t,n){if(t&&t.length>0)for(let n=0;n<t.length;n++)e.append("logfile",t[n]);n.logFile&&e.append("logfile",n.logFile);n.dyninfoFile&&e.append("dyninfo",n.dyninfoFile)}(c,i,r),a=c,o=r.ids,(e=a,t="requestToFeedback",n=yt(t)||wt(t),n||(O.log(t+": Feedback Payload size : "+A(e)/1024),kt("feedback",e,gt(),t))).then(function(){return E._sending=!1,o.length>0&&function(e){we.remove(e.map(function(id){return{id:id}}))}(o),{ok:!0,message:Qa}}).catch(function(e){return E._sending=!1,O.log("sendFeedbackData:"+e),{ok:!1,message:$a}});var e,t,n,a,o})}).catch(function(e){return O.error("sendFeedbackData: "+e),{ok:!1,message:$a}})}function eo(e){var t=!1!==e.includeLog,n=!1!==e.includeDyninfo;return Promise.all([t?Ja():Promise.resolve(null),n?Ga(Da).then(function(e){return 0===e.length?null:Za("dyninfo.txt",Wa(e),e)}):Promise.resolve(null)]).then(function([e,t]){return{logFile:e?e.file:null,dyninfoFile:t?t.file:null,ids:(e?e.ids:[]).concat(t?t.ids:[])}})}const to="anonymous",no="Anonymous",ro={anonymous:!0,userid:"",groupid:""},io={};function ao(){ro.anonymous=!0,ro.userid="",ro.groupid=""}function oo(){var e=Ce.item("users");return Array.isArray(e)?e:[]}const so="http://www.w3.org/2000/svg";function co(e,t){var n=e.querySelector("#zasdkEmailTrigger"),r=e.querySelector("#zasdkEmailPanel"),i=e.querySelector("#zasdkEmailLabel"),a=e.querySelector("#zasdkEmailList"),o=e.querySelector("#zasdkEmailDropdown");if(n&&r&&i&&a&&o){var s=oo(),c=function(e){var t=[{value:to,label:no}],n={};return e.forEach(function(e){var r=e&&e.mam;b(r)||n[r]||(n[r]=!0,t.push({value:String(r),label:String(r)}))}),t}(s),d=to;if(ao(),!t){var u=null;s.forEach(function(e){u||!e||1!=e.status||b(e.mam)||(u=e)}),u&&l(String(u.mam))}n.addEventListener("click",function(e){e.stopPropagation();var t="none"!==r.style.display;r.style.display=t?"none":"block",t||f()}),a.addEventListener("click",function(e){var t=e.target.closest(".zasdk-select-option");t&&(l(String(t.getAttribute("data-value"))),r.style.display="none")}),o.setAttribute("tabindex","0"),o.addEventListener("focusout",function(e){o.contains(e.relatedTarget)||(r.style.display="none")}),f()}function l(value){d=value,ro.anonymous=value===to;var e=null;ro.anonymous||s.forEach(function(t){!e&&t&&t.mam===value&&(e=t)}),ro.userid=e?String(e.userid||""):"",ro.groupid=e?String(e.groupid||""):"",i.textContent=ro.anonymous?no:value,f()}function f(){if(a.innerHTML="",0===c.length){var e=document.createElement("div");return e.className="zasdk-select-empty",e.textContent="No users to choose from",void a.appendChild(e)}c.forEach(function(e){var t=e.value===d,n=document.createElement("li");n.className="zasdk-select-option"+(t?" zasdk-option-selected":""),n.setAttribute("data-value",e.value);var r=document.createElement("span");r.textContent=e.label,n.appendChild(r),t&&n.appendChild(function(){var e=document.createElementNS(so,"svg");e.setAttribute("viewBox","0 0 14 10"),e.setAttribute("width","14"),e.setAttribute("height","10"),e.setAttribute("fill","none");var t=document.createElementNS(so,"path");return t.setAttribute("d","M1 5l4 4 8-8"),t.setAttribute("stroke","#0078d4"),t.setAttribute("stroke-width","2"),t.setAttribute("stroke-linecap","round"),t.setAttribute("stroke-linejoin","round"),e.appendChild(t),e}()),a.appendChild(n)})}}function uo(e,t,n){var r=e.querySelector("#zasdkDataViewer"),i=e.querySelector("#zasdkViewerTitle"),a=e.querySelector("#zasdkViewerContent");r&&i&&a&&(i.textContent=t,a.textContent=n||"(No data available)",r.style.display="flex")}function lo(e,t){var n=e.querySelector("#zasdkIncludeLogToggle"),r=e.querySelector("#zasdkIncludeDiagToggle"),i=e.querySelector(".zasdk-toggles-section"),a=e.querySelector(".zasdk-toggle-separator"),o=e.querySelector("#zasdkViewLogsBtn"),s=e.querySelector("#zasdkViewDiagBtn"),c=e.querySelector("#zasdkViewerClose"),d=e.querySelector("#zasdkDataViewer");if(n&&r&&i){var u=n.closest(".zasdk-toggle-row"),l=r.closest(".zasdk-toggle-row");io.includeLog=!0===t.includeLog||void 0,io.includeDyninfo=!0===t.includeDyninfo||void 0,i.style.display="none",Promise.all([Ga(La).then(function(e){return e.length>0}),Ga(Da).then(function(e){return e.length>0})]).then(function([e,o]){u&&(u.style.display=e?"":"none"),l&&(l.style.display=o?"":"none"),a&&(a.style.display=e&&o?"":"none"),i.style.display=e||o?"":"none",n.checked=!0===t.includeLog||e,r.checked=!0===t.includeDyninfo||o,io.includeLog=n.checked,io.includeDyninfo=r.checked}).catch(function(e){O.warn("apptics: could not read the stored logs: "+String(e))}),n.addEventListener("change",function(){io.includeLog=n.checked}),r.addEventListener("change",function(){io.includeDyninfo=r.checked}),o&&o.addEventListener("click",function(){Ya().then(function(t){uo(e,"System Logs",t)})}),s&&s.addEventListener("click",function(){Ga(Da).then(Wa).then(function(t){uo(e,"Diagnostic Information",t)})}),c&&d&&c.addEventListener("click",function(){d.style.display="none"})}}var fo=null;function po(e,t,n){e.style.right="auto",e.style.bottom="auto",e.style.left=Math.max(0,Math.min(t,window.innerWidth-e.offsetWidth))+"px",e.style.top=Math.max(0,Math.min(n,window.innerHeight-e.offsetHeight))+"px"}function go(e,t,n,r){var i=0,a=0,o=0,s=0,c=!1,d=!1;function u(){c&&(c=!1,t.style.cursor="",d&&r&&r(parseInt(e.style.left,10),parseInt(e.style.top,10)))}t.addEventListener("pointerdown",function(r){if(!(0!==r.button||n&&n(r.target))){var u=e.getBoundingClientRect();c=!0,d=!1,i=r.clientX,a=r.clientY,o=u.left,s=u.top,t.style.cursor="move";try{t.setPointerCapture(r.pointerId)}catch(e){}r.preventDefault()}}),t.addEventListener("pointermove",function(t){if(c){var n=t.clientX-i,r=t.clientY-a;!d&&Math.abs(n)<4&&Math.abs(r)<4||(d=!0,po(e,o+n,s+r))}}),t.addEventListener("pointerup",u),t.addEventListener("pointercancel",u),e.addEventListener("click",function(e){d&&(d=!1,e.stopImmediatePropagation(),e.preventDefault())},!0)}Me.feedbackUser=function(){return ro.anonymous||b(ro.userid)?null:ro};const mo=/(^|\.)(zohocdn\.com|zohostatic\.com|localzohocdn\.com|localzoho\.com|zoho\.(com|eu|in|jp|sa|ae|com\.au|com\.cn)|zohocloud\.ca)$/;function vo(e,t){return e&&""!==e.trim()?e.trim():function(e){var t="";try{t=new URL(e).hostname}catch(n){t=e||""}return"https://"+(-1!==t.indexOf("localzoho")?"static.localzohocdn.com":"static.zohocdn.com")+"/quartz/feedback/v2/quartz.js"}(t)}function ho(){return"undefined"!=typeof Quartz&&!!Quartz}var ko=null,bo=!1;function _o(url){if(ho())return Promise.resolve(!0);var e=function(url){try{var e=new URL(url);return"https:"===e.protocol&&mo.test(e.hostname)?e.href:""}catch(e){return""}}(url);return""===e?(url&&!bo&&(bo=!0,I("AppticsFeedback: screen recording is off; its script url is not an https url on a Zoho host: "+url)),Promise.resolve(!1)):ko||(ko=new Promise(function(t){var n=document.createElement("script");n.src=e,n.async=!0,n.setAttribute("data-apptics","quartz"),n.onload=function(){O.log("AppticsFeedback: Quartz loaded from "+e),t(ho())},n.onerror=function(){O.warn("AppticsFeedback: the Quartz script did not load: "+e),ko=null,n.remove(),t(!1)},(document.head||document.documentElement).appendChild(n)}),ko)}const yo={startRecording(){},previewVideo(){},editVideo(){},clearFeedback(){},endRecording(){},setVideoContent(){},submitRecording:()=>Promise.resolve({})},zo={ErrorType:{},FeedbackState:{}};var Ao=!1,wo=!1;function So(){return"undefined"!=typeof Quartz&&!!Quartz}function Eo(){return"undefined"!=typeof Quartz&&Quartz?Quartz:yo}function xo(){return"undefined"!=typeof QuartzConstants&&QuartzConstants?QuartzConstants:zo}function To(e){return Xa(e).then(function(e){return e?(e.ok?No.close():No.handleStatusmsg(e.ok,e.message),e):null})}function Po(value){return null!==value&&"object"==typeof value&&!Array.isArray(value)}var Co=!1;function sendFeedback(options){if(void 0!==options&&!Po(options))return Promise.reject(new Error("AppticsFeedback.sendFeedback: takes one options object, as sendFeedback({ type, message, attachments, logFiles, includeDiagnostics, includeLog, isAnonymous })"));const e=options||{},t={type:b(e.type)?1:e.type,message:e.message||"",attachment:e.attachments||null,logsFiles:e.logFiles||null,includeDyninfo:e.includeDiagnostics,includeLog:e.includeLog,quartzid:""};var n=function(e){var t={anonymous:ro.anonymous,userid:ro.userid,groupid:ro.groupid};if(ao(),!e){var n=b(E._user_info.userid)?null:E._user_info;oo().forEach(function(e){n||!e||1!=e.status||b(e.userid)||(n=e)}),n&&(ro.anonymous=!1,ro.userid=String(n.userid),ro.groupid=String(n.groupid||""))}return function(){ro.anonymous=t.anonymous,ro.userid=t.userid,ro.groupid=t.groupid}}(!0===e.isAnonymous);return To(t).then(function(e){return n(),e},function(e){throw n(),e}).then(function(e){if(!e)throw new Error("AppticsFeedback.sendFeedback: not sent, the browser is offline or Apptics is disabled for this client");if(!e.ok)throw new Error("AppticsFeedback.sendFeedback: not sent, "+e.message)})}function Oo(e,message,t){var n=e.querySelector(".zasdk-selected").getAttribute("data-type"),r=e.querySelector("#zasdkFileInput").files;return{type:b(n)?1:No.typeObj[n],message:message,attachment:r&&r.length>0?r:No._opts.attachments||null,logsFiles:No._opts.logFiles||null,includeLog:io.includeLog,includeDyninfo:io.includeDyninfo,quartzid:t}}function Io(){try{return"function"==typeof DataTransfer?new DataTransfer:null}catch(e){return O.warn("apptics.feedback: this browser cannot build a file list, attachments are off"),null}}const Ro=["light","dark","auto"];const No={feedbackUIHtml:'<div id="zasdkFeedbackconatiner" class="zasdk-modal-content" role="dialog" aria-modal="true" aria-labelledby="zasdkFeedbackTitle">\n <div class="zasdk-header">\n <h2 id="zasdkFeedbackTitle" class="zasdk-title">Share feedback</h2>\n <span id="appticsfeedbackclose" class="zasdk-close" role="button" tabindex="0" aria-label="Close"><svg viewBox="0 0 24 24" style=" width: 20px; "><path d="M19.92,19.08c.23.23.23.61,0,.85-.12.12-.27.18-.42.18s-.31-.06-.42-.18l-7.08-7.08-7.08,7.08c-.12.12-.27.18-.42.18s-.31-.06-.42-.18c-.23-.23-.23-.61,0-.85l7.08-7.08-7.08-7.08c-.23-.23-.23-.61,0-.85s.61-.23.85,0l7.08,7.08,7.08-7.08c.23-.23.61-.23.85,0s.23.61,0,.85l-7.08,7.08,7.08,7.08Z"/></svg></span>\n </div>\n <div class="zasdk-feedback-types" data-type="">\n <div class="zasdk-feedback-type zasdk-selected" data-type="feedback">\n <div class="zasdk-iconcnt zasdkfeedback__icon-reqest">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M6.69,9.25h10.81c.41,0,.75-.34.75-.75s-.34-.75-.75-.75H6.69c-.41,0-.75.34-.75.75s.34.75.75.75Z"/><path d="M6.69,13.07h8.11c.41,0,.75-.34.75-.75s-.34-.75-.75-.75H6.69c-.41,0-.75.34-.75.75s.34.75.75.75Z"/><path d="M20.72,5.17c0-.68-.55-1.23-1.23-1.23H4.48c-.68,0-1.23.55-1.23,1.23v11.84c0,.68.55,1.23,1.23,1.23h13.49l1.25,1.51c.17.2.41.31.67.31.1,0,.2-.02.3-.05.34-.13.57-.46.56-.83l-.03-14.01ZM19.22,17.39l-.17-.2c-.24-.29-.58-.45-.95-.45H4.75V5.44h14.47v11.95Z"/></svg></i>\n </div>\n <div>Feedback</div>\n </div>\n <div class="zasdk-feedback-type" data-type="bug">\n <div class="zasdk-iconcnt zasdkfeedback__icon-report">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M15.6,6.58c-.13-.37-.3-.7-.5-.97l1.23-1.18c.24-.23.25-.61.02-.85-.23-.24-.61-.25-.85-.02l-1.26,1.21c-.66-.45-1.37-.62-1.79-.68-.25-.04-.51-.04-.76-.02-.83.08-1.45.35-1.93.7l-1.22-1.2c-.24-.23-.62-.23-.85,0-.23.24-.23.62,0,.85l1.21,1.19c-.24.34-.41.68-.51.96-2.02,1.37-3.27,3.82-3.27,6.44,0,4.18,3.08,7.58,6.87,7.58s6.87-3.4,6.87-7.58c0-2.62-1.25-5.06-3.26-6.44ZM11.82,5.27c.15-.02.31-.01.47.01.69.1,1.86.48,2.26,1.9-.17.17-.51.44-1.14.65-1.08.36-2.31.28-3.36-.23-.24-.11-.44-.23-.6-.36,0-.01,0-.03.01-.04.18-.65.73-1.77,2.36-1.93ZM12,19.4c-3.12,0-5.67-2.86-5.67-6.38,0-1.98.82-3.82,2.19-5.02.26.25.59.48,1.01.68.78.38,1.65.57,2.5.57.6,0,1.19-.09,1.76-.28.88-.29,1.39-.7,1.67-1,1.38,1.2,2.21,3.06,2.21,5.05,0,3.52-2.54,6.38-5.67,6.38ZM9.12,9.86c-.92,0-1.67.75-1.67,1.67s.75,1.67,1.67,1.67,1.67-.75,1.67-1.67-.75-1.67-1.67-1.67ZM9.12,11.99c-.26,0-.47-.21-.47-.47s.21-.47.47-.47.47.21.47.47-.21.47-.47.47ZM14.88,9.86c-.92,0-1.67.75-1.67,1.67s.75,1.67,1.67,1.67,1.67-.75,1.67-1.67-.75-1.67-1.67-1.67ZM14.88,11.99c-.26,0-.47-.21-.47-.47s.21-.47.47-.47.47.21.47.47-.21.47-.47.47ZM12,14.49c-.92,0-1.67.75-1.67,1.67s.75,1.67,1.67,1.67,1.67-.75,1.67-1.67-.75-1.67-1.67-1.67ZM12,16.62c-.26,0-.47-.21-.47-.47s.21-.47.47-.47.47.21.47.47-.21.47-.47.47Z"/></svg></i>\n </div>\n <div>Bug</div>\n </div>\n <div class="zasdk-feedback-type" data-type="help">\n <div class="zasdk-iconcnt zasdkfeedback__icon-help">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M12.45,16.47c-.33,0-.6-.27-.6-.6v-2.7c0-.43.25-.82.64-.99.95-.42,3.15-1.62,3.15-3.51,0-1.6-1.01-3.03-2.51-3.55-.95-.33-1.97-.28-2.87.16-.91.43-1.59,1.2-1.92,2.14-.11.31-.45.48-.77.37-.31-.11-.48-.45-.37-.77.44-1.25,1.34-2.25,2.54-2.83,1.2-.57,2.54-.65,3.79-.21,1.99.7,3.32,2.58,3.31,4.69,0,2.46-2.34,3.91-3.79,4.57v2.63c0,.33-.27.6-.6.6ZM13.21,19.1c0-.66-.54-1.2-1.2-1.2h-.03c-.66,0-1.19.54-1.19,1.2s.55,1.2,1.21,1.2,1.2-.54,1.2-1.2Z"/></svg></i>\n </div>\n <div>Help</div>\n </div>\n <div class="zasdk-feedback-type" data-type="report">\n <div class="zasdk-iconcnt zasdkfeedback__icon-appreciate">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M20.47,16.72l-6.66-11.53c-.37-.65-1.07-1.05-1.81-1.05s-1.44.4-1.81,1.05l-6.66,11.53c-.37.65-.37,1.45,0,2.09.37.65,1.07,1.05,1.81,1.05h13.32c.75,0,1.44-.4,1.81-1.05.37-.64.37-1.45,0-2.09ZM19.17,18.06c-.11.18-.3.3-.51.3H5.34c-.21,0-.41-.11-.51-.3-.1-.18-.1-.41,0-.59l6.66-11.53h0c.11-.18.3-.3.51-.3s.41.11.51.3l6.66,11.53c.11.18.11.41,0,.59Z"/><path d="M12.35,13.9s.37-4.72.37-4.72c.05-1.08-1.58-1.06-1.5.02l.48,4.71c.03.38.62.37.64,0Z"/><path d="M11.97,15.06c-.52,0-.94.42-.94.94s.42.94.94.94.94-.42.94-.94-.42-.94-.94-.94Z"/></svg></i>\n </div>\n <div>Report</div>\n </div>\n </div>\n <div class="zasdk-body">\n <div id="zasdkFeedbackForm" class="zasdk-form">\n <label class="zasdkdesclbl">User<span class="zasdkmadfeld">*</span></label>\n <div id="zasdkEmailDropdown" class="zasdk-custom-select">\n <div id="zasdkEmailTrigger" class="zasdk-select-trigger">\n <span id="zasdkEmailLabel" class="zasdk-select-label">Anonymous</span>\n <svg class="zasdk-select-arrow" viewBox="0 0 12 8" width="12" height="8"><path d="M1 1l5 5 5-5" stroke="#999" stroke-width="1.5" fill="none" stroke-linecap="round"/></svg>\n </div>\n <div id="zasdkEmailPanel" class="zasdk-select-panel" style="display:none">\n <ul id="zasdkEmailList" class="zasdk-select-list"></ul>\n </div>\n </div>\n <label class="zasdkdesclbl" for="zasdkDescription">Add details here<span class="zasdkmadfeld">*</span> <span class="zaleftcharspan"><span class="zaleftcharcnt">5000</span><span class="zaleftchartxt">characters left</span></span></label>\n <textarea id="zasdkDescription" name="description" placeholder="Please provide more details for us to help you better." reqname="name" maxlength="5000"></textarea>\n <div id="zasdkreccheckcnt" class="zasdkqz-container">\n <div class="zasdkqz-checkbox-wrapper">\n <input type="checkbox" id="zasdkqz-consent" class="zasdkqz-checkbox">\n <label for="zasdkqz-consent">By agreeing to record screen, I allow the collection of the required information for further analysis.</label>\n </div>\n <div id="zasdkqz-content" class="zasdkqz-content">\n <div class="zasdkqz-prop-content">Data collected while screen recording.\n <div class="zasdk_rec_hdr_icon zasdk-tooltip-container zasdk_rec_hdr">\n <i><svg viewBox="0 0 24 24"><path d="M12,20.6c-4.74,0-8.6-3.86-8.6-8.6S7.26,3.4,12,3.4s8.6,3.86,8.6,8.6-3.86,8.6-8.6,8.6ZM12,4.6c-4.08,0-7.4,3.32-7.4,7.4s3.32,7.4,7.4,7.4,7.4-3.32,7.4-7.4-3.32-7.4-7.4-7.4ZM12.6,15.97v-4.91c0-.33-.27-.6-.6-.6s-.6.27-.6.6v4.91c0,.33.27.6.6.6s.6-.27.6-.6ZM12.61,9.03c0-.33-.27-.6-.6-.6h-.01c-.33,0-.59.27-.59.6s.28.6.61.6.6-.27.6-.6Z"/></svg></i>\n <div class="zasdk-tooltip-top zasdk-prop-info">\n <ul>\n <li>- A recording of the window or region specified.</li>\n <li>- Audio captured during recording. (You can mute or re-record)</li>\n <li>- IP address.</li>\n <li>- Browser console logs generated while recording.</li>\n <li>- Device details (screen resolution, OS, and browser version).</li>\n <li>- Client-side performance metrics (DNS lookup time, TCP connection time, etc.).</li>\n </ul>\n </div>\n </div>\n </div>\n <div id="zasdkqz_rec_button" class="zasdkqz-button">Start screen recording</div>\n </div>\n </div>\n <div id="zasdkrecstatus" class="zasdk-recstatus" style="display:none">\n <div class="zasdk-timer-control"><div class="zasdk-timer-stopcricle"></div></div>\n <span class="zasdk-recstatus-text">Recording in progress</span>\n <span id="zasdkRecStatusTime" class="zasdk-timer-display">05:00</span>\n <div id="zasdkRecStatusStop" class="zasdkqz-button zasdk-recstatus-stop" role="button" tabindex="0">Stop recording</div>\n </div>\n <div id="editRecordedVideo" class="zasdk_recordedClipArea" style="">\n <div id="recordScreenDesc" class="zasdk_rec_hdr"> Recorded Clip\n <div class="zasdk_rec_hdr_icon zasdk-tooltip-container">\n <i><svg viewBox="0 0 24 24"><path d="M12,20.6c-4.74,0-8.6-3.86-8.6-8.6S7.26,3.4,12,3.4s8.6,3.86,8.6,8.6-3.86,8.6-8.6,8.6ZM12,4.6c-4.08,0-7.4,3.32-7.4,7.4s3.32,7.4,7.4,7.4,7.4-3.32,7.4-7.4-3.32-7.4-7.4-7.4ZM12.6,15.97v-4.91c0-.33-.27-.6-.6-.6s-.6.27-.6.6v4.91c0,.33.27.6.6.6s.6-.27.6-.6ZM12.61,9.03c0-.33-.27-.6-.6-.6h-.01c-.33,0-.59.27-.59.6s.28.6.61.6.6-.27.6-.6Z"/></svg></i>\n <div class="zasdk-tooltip">This recording will be sent along with your feedback for further analysis.</div>\n </div>\n </div>\n <div class="zasdk_playEdit">\n <div class="zasdk_clipAreaButtonCnt zasdk-tooltip-container">\n <div id="preivewPlayButton" class="zasdk_clipAreaButton" title="Preview">\n <svg viewBox="0 0 24 24"><path d="M6.24,20.6c-.2,0-.39-.05-.57-.15-.38-.21-.62-.61-.62-1.05V4.59c0-.44.24-.84.62-1.05.38-.21.85-.19,1.22.04l11.52,7.41c.34.22.55.6.55,1,0,.41-.2.78-.55,1l-11.52,7.41c-.2.13-.42.19-.64.19ZM6.56,4.1l-.33.5v14.81s11.52-7.41,11.52-7.41L6.23,4.6l.33-.5Z"/></svg>\n </div>\n <div class="zasdk-tooltip">Preview</div>\n </div>\n <div class="zasdk_clipAreaButtonCnt zasdk-tooltip-container">\n <div id="videoEditButton" class="zasdk_clipAreaButton">\n <svg id="Layer_2" viewBox="0 0 24 24"><path d="M20.6,7.18c0-.58-.23-1.13-.65-1.54l-1.53-1.51c-.83-.83-2.29-.83-3.12,0l-1.31,1.3h0S4.88,14.41,4.88,14.41c-.12.12-.21.27-.26.44l-1.19,4.4c-.09.34,0,.7.26.95.19.18.44.29.7.29.09,0,.17-.01.26-.04l4.44-1.2c.16-.05.31-.13.44-.25l8.54-8.43h0s1.88-1.86,1.88-1.86c.06-.06.12-.12.17-.19h0c.31-.39.48-.86.48-1.36ZM8.72,18.12l-4.03,1.09,1.08-3.98L13.97,7.12l2.88,2.97-8.13,8.03ZM17.71,9.25l-2.88-2.97,1.32-1.3c.38-.38,1.04-.38,1.43,0l1.53,1.51c.19.18.29.43.29.69,0,.22-.08.43-.21.6h0s-.04.05-.08.08l-1.4,1.39Z"/></svg>\n </div>\n <div class="zasdk-tooltip">Edit</div>\n </div>\n <div class="zasdk_clipAreaButtonCnt zasdk-tooltip-container">\n <div id="videoDelButton" class="zasdk_clipAreaButton">\n <svg id="Layer_2" viewBox="0 0 24 24"><path d="M19.2,6.6h-3.4v-1c0-1.21-.99-2.2-2.2-2.2h-3.2c-1.21,0-2.2.99-2.2,2.2v1h-3.4c-.33,0-.6.27-.6.6s.27.6.6.6h1v10.6c0,1.21.99,2.2,2.2,2.2h8c1.21,0,2.2-.99,2.2-2.2V7.8h1c.33,0,.6-.27.6-.6s-.27-.6-.6-.6ZM9.4,5.6c0-.55.45-1,1-1h3.2c.55,0,1,.45,1,1v1h-5.2v-1ZM17,18.4c0,.55-.45,1-1,1h-8c-.55,0-1-.45-1-1V7.8h10v10.6ZM11,11.2v4.8c0,.33-.27.6-.6.6s-.6-.27-.6-.6v-4.8c0-.33.27-.6.6-.6s.6.27.6.6ZM14.2,11.2v4.8c0,.33-.27.6-.6.6s-.6-.27-.6-.6v-4.8c0-.33.27-.6.6-.6s.6.27.6.6Z"/></svg>\n </div>\n <div class="zasdk-tooltip">Delete</div>\n </div>\n </div>\n <div class="zasdk_videoPrev">\n <video id="previewVideoElemId" width="320" height="240" src=""></video>\n </div>\n </div>\n\n <div class="zasdk-buttons">\n <div class="zasdk-btncnt">\n <div id="zasdkattachinfo" class="zasdkattachinf">Maximum 5 attachments with a total file size of 10MB is allowed</div>\n <input type="file" id="zasdkFileInput" class="zasdk-file-input" multiple accept=".png, .jpg, .txt">\n <label id="zasdkAttachBtn" class="zasdk-btn zasdk-attach-btn" for="zasdkFileInput">\n <svg id="Layer_2" viewBox="0 0 24 24" style=" width: 25px; "><path d="M12,20.6c-2.63,0-4.78-2.14-4.78-4.78V6.78c0-1.87,1.52-3.38,3.38-3.38s3.38,1.52,3.38,3.38v9.04c0,1.1-.9,1.99-2,1.99s-1.99-.89-1.99-1.99V7.48c0-.33.27-.6.6-.6h0c.33,0,.6.27.6.6v8.35c0,.44.35.79.79.79s.79-.36.79-.79V6.78c0-1.2-.98-2.18-2.18-2.18s-2.18.98-2.18,2.18v9.04c0,1.97,1.6,3.58,3.58,3.58s3.58-1.6,3.58-3.58V6.78c0-.33.27-.6.6-.6s.6.27.6.6v9.04c0,2.63-2.14,4.78-4.78,4.78Z"/></svg>\n <span>Attachments</span>\n </label>\n <div id="zasdkfilesizeinfo" class="zasdkfilesizeinf"></div>\n <ul id="zasakfileList" class="zasakfilelstcnt"></ul>\n </div>\n </div>\n </div>\n <div class="zasdk-toggles-section">\n <div class="zasdk-toggle-row">\n <div class="zasdk-toggle-info">\n <span class="zasdk-toggle-label">Include System Logs</span>\n <span class="zasdk-view-link" id="zasdkViewLogsBtn">View</span>\n </div>\n <label class="zasdk-switch">\n <input type="checkbox" id="zasdkIncludeLogToggle">\n <span class="zasdk-slider"></span>\n </label>\n </div>\n <div class="zasdk-toggle-separator"></div>\n <div class="zasdk-toggle-row">\n <div class="zasdk-toggle-info">\n <span class="zasdk-toggle-label">Include Diagnostic Information</span>\n <span class="zasdk-view-link" id="zasdkViewDiagBtn">View</span>\n </div>\n <label class="zasdk-switch">\n <input type="checkbox" id="zasdkIncludeDiagToggle">\n <span class="zasdk-slider"></span>\n </label>\n </div>\n </div>\n </div>\n <div class="zasdk_submit_btncnt">\n <div id="zasdksubmitstatus" class="zasdkstsmsg" style="display:none;" ></div>\n <div id="zasdk_submit_btnsubcnt" class="zasdk_submit_btnsubcnt">\n <input type="button" id="zasdk_submit_btn" class="zasdk-btn zasdk-send-btn zasdkbtndisableclr" value="Send">\n </div>\n </div>\n <div id="zasdkDataViewer" class="zasdk-data-viewer" style="display:none">\n <div class="zasdk-viewer-hdr">\n <span id="zasdkViewerClose" class="zasdk-viewer-back"><svg viewBox="0 0 24 24" width="20" height="20" fill="none"><path d="M15 19l-7-7 7-7" stroke="#333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></span>\n <span id="zasdkViewerTitle" class="zasdk-viewer-title"></span>\n </div>\n <pre id="zasdkViewerContent" class="zasdk-viewer-content"></pre>\n </div>\n </div>',timerHtml:'<div id="zasdkrectimer" class="zasdk-timer-container zasdk-tooltip-container">\n <div class="zasdk-timer-control" id="zasdkRecordButton"><div class="zasdk-timer-stopcricle"></div></div>\n <span class="zasdk-timer-display" id="zasdkTimerDisplay">05:00</span>\n <div class="zasdk-tooltip-top">Stop Recording</div>\n </div>',uploadFileAry:[],fileInput:null,selectedFiles:null,isScaled:!1,isHidden:!1,timerDisplay:null,recordButton:null,TOTAL_TIME:300,remainingTime:300,isRecording:!1,timerInterval:null,uploadTotalSize:0,MaxFileSize:10485760,_opts:{},typeObj:{bug:0,feedback:1,help:2,report:3},init:function(e){if(No._opts=e||{},!b(r=document.getElementById("zasdkFeedbackModal")))return void((No.isHidden||No.isScaled)&&No.showForm());const t=document.createElement("div");No.uploadFileAry=[],t.id="zasdkFeedbackModal",t.className="zasdk-modal",t.setAttribute("data-zasdk-theme",E._config.feedback_theme),t.innerHTML=No.feedbackUIHtml,document.body.appendChild(t);var n,name,r=document.getElementById("zasdkFeedbackModal"),i=E._quartz,a=i.workspace,o=i.department,s=(n=i.domain,name=(n||"").trim().replace(/^\.+|\.+$/g,""),/^https:\/\//i.test(name)?name.replace(/\/+$/,""):/^[a-z0-9-]+(\.[a-z0-9-]+)+$/i.test(name)?"https://quartz."+name:""),c=r.querySelector("#appticsfeedbackclose"),d=r.querySelectorAll(".zasdk-feedback-type");No.fileInput=r.querySelector("#zasdkFileInput");var u=r.querySelector("#zasdkqz_rec_button"),l=r.querySelector("#zasdk_submit_btn"),f=r.querySelector("#zasdk_submit_btnsubcnt");const p=r.querySelector("#zasdkqz-consent"),g=r.querySelector("#zasdkqz-content"),m=r.querySelector("#preivewPlayButton"),v=r.querySelector("#videoEditButton"),h=r.querySelector("#videoDelButton"),k=r.querySelector("#zasdkFeedbackconatiner"),_=r.querySelector("#zasdkDescription");var y,z;(z=(y=k).querySelector(".zasdk-header"))&&go(y,z,function(e){return!!e.closest(".zasdk-close")}),co(r,!0===No._opts.isAnonymous),lo(r,No._opts),No.isScaled=!1,No.isHidden=!1,document.removeEventListener("quartz-feedback-state",No.bindQuartzEvent),document.addEventListener("quartz-feedback-state",No.bindQuartzEvent),document.removeEventListener("quartz-feedback-error",No.handleErrorQuartzEvent),document.addEventListener("quartz-feedback-error",No.handleErrorQuartzEvent);var A=i.enabled&&!b(s)&&!b(a)&&!b(o),w=r.querySelector("#zasdkreccheckcnt");w.style.display=A&&So()?"block":"none",A&&!So()&&_o(vo(i.cdnUrl,String(E._defaultoptions.serviceUrl||""))).then(function(e){e&&w.isConnected&&(w.style.display="block")}),k.addEventListener("transitionend",function(e){"transform"===e.propertyName&&No.finishHiding()});const S=r.querySelector("#zasdkRecStatusStop");S.onclick=function(){No.stopRecording()},S.onkeydown=function(e){"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),No.stopRecording())},u.onclick=function(e){e.stopImmediatePropagation();let t={workspaceLinkName:a,departmentLinkName:o,recordingDomain:s};No.handleStatusmsg(),So()?b(a)||b(o)||b(s)?No.handleStatusmsg(!1,"Screen recording is not configured for this app."):Eo().startRecording(t):No.handleStatusmsg(!1,"Screen recording is unavailable on this page.")},c.onclick=function(){No.dismiss()},c.onkeydown=function(e){"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),No.dismiss())},document.addEventListener("keydown",No.onEscape),m.addEventListener("click",function(){Eo().previewVideo()}),v.addEventListener("click",function(){Eo().editVideo({quartzBranding:!1})}),h.addEventListener("click",function(){var e=document.getElementById("zasdkFeedbackModal");Eo().clearFeedback(),p.checked=!1,g.classList.remove("zasdkqz-show"),e.querySelector("#editRecordedVideo").style.display="none",e.querySelector("#zasdkreccheckcnt").style.display="block",No.validateFeedbackField()}),l.addEventListener("click",async()=>{No.validateFeedbackField(),l.disabled=!0,f.classList.add("zasdkbtndisabled"),l.value="";try{if(Ao)return wo=!0,void No.stopRecording();let e=r.querySelector("#previewVideoElemId");if(e&&null!==e.offsetParent)No.submitRecording();else{let message=r.querySelector("#zasdkDescription").value.trim();message.length>0?To(Oo(r,message,"")):No.handleStatusmsg(!1,"Please provide more details for us to help you better.")}}catch(e){O.error("sendFeedbackData : "+e)}}),p.addEventListener("change",function(){this.checked?g.classList.add("zasdkqz-show"):g.classList.remove("zasdkqz-show")}),_.addEventListener("input",No.validateFeedbackField);try{_.focus({preventScroll:!0})}catch(e){}if(d.forEach(function(e){e.addEventListener("click",function(){d.forEach(function(e){e.classList.remove("zasdk-selected")}),this.classList.add("zasdk-selected")})}),"number"==typeof No._opts.type){var x=Object.keys(No.typeObj).filter(function(name){return No.typeObj[name]===No._opts.type})[0],T=x?r.querySelector('.zasdk-feedback-type[data-type="'+x+'"]'):null;T&&(d.forEach(function(e){e.classList.remove("zasdk-selected")}),T.classList.add("zasdk-selected"))}b(No._opts.message)||(_.value=String(No._opts.message),No.updateLeftCount(),No.validateFeedbackField()),No.selectedFiles=Io(),No.fileInput.onchange=function(){const e=this;var t=No.selectedFiles;if(null!==t){if(t.files.length+e.files.length>5)return No.handleStatusmsg(!1,"Maximum 5 attachments is allowed"),No.fileInput.files=t.files,void(e.files=t.files);if(e.files.length>0){let n=0;for(let r of e.files){if(n+=r.size,n>10485760)return No.handleStatusmsg(!1,"Maximum limit reached. The total file size cannot exceed 10MB."),void(e.files=t.files);t.items.add(r)}e.files=t.files,No.fileAttachment()}else t.files.length>0&&(e.files=t.files)}},No.handleStatusmsg(),No.updateLeftCount()},updateLeftCount:function(){document.querySelectorAll("[reqname]").forEach(function(e){let t=e.value,n=parseInt(e.getAttribute("maxlength")||"",10),r=e.parentElement?e.parentElement.querySelector(".zaleftcharcnt"):null;if(r){r.textContent=String(n-t.length);var i=r.parentElement?r.parentElement.querySelector(".zaleftchartxt"):null;i&&(i.textContent=n-t.length===1?"character left":"characters left")}})},handleStatusmsg:function(e,t){var n=document.getElementById("zasdkFeedbackModal");if(!b(n)){var r=n.querySelector("#zasdksubmitstatus"),i=n.querySelector("#zasdk_submit_btn"),a=n.querySelector("#zasdk_submit_btnsubcnt"),o="",s="";r.style.display="none",b(e)||(o=e?"zasdkstssucs":"zasdkstserror",s=b(t)?"":t,r.textContent=s,r.classList.add(o),r.style.display="block",a.classList.remove("zasdkbtndisabled"),i.disabled=!1,i.value="Send")}},handleErrorQuartzEvent:function(e){let t=e.detail.error.name,n=e.detail.error.message;t!=xo().ErrorType.RECORDING_INTERRUPTED&&t!=xo().ErrorType.FEEDBACK_TIMEOUT||No.stopRecording(),No.handleStatusmsg(!1,n)},bindQuartzEvent:function(e){let t=e.detail.feedbackState;if(t!=xo().FeedbackState.RECORDING_COMPLETED){if(t==xo().FeedbackState.RECORDING_IN_PROGRESS){Ao=!0,b(n=document.getElementById("zasdkrectimer"))||n.remove();const e=document.createElement("div");e.innerHTML=No.timerHtml;const t=e.firstElementChild;var n;t.setAttribute("data-zasdk-theme",E._config.feedback_theme),document.body.appendChild(t),!function(e){fo&&po(e,fo.left,fo.top),go(e,e,void 0,function(e,t){fo={left:e,top:t}})}(n=document.getElementById("zasdkrectimer")),No.timerDisplay=n.querySelector("#zasdkTimerDisplay"),No.recordButton=n,No.TOTAL_TIME=300,No.remainingTime=No.TOTAL_TIME,No.isRecording=!0,No.recordButton.addEventListener("click",No.toggleRecording),No.startRecording(),No.updateDisplay(),No.showRecordingStatus(!0),No.toggleWindowAnimation()}}else No.recordingEnded()},onEscape:function(e){"Escape"===e.key&&No.dismiss()},dismiss:function(){Ao?No.isScaled||No.isHidden||No.toggleWindowAnimation():No.close()},showRecordingStatus:function(on){var e=document.getElementById("zasdkFeedbackModal");e&&(e.querySelector("#zasdkrecstatus").style.display=on?"flex":"none",on&&(e.querySelector("#zasdkreccheckcnt").style.display="none"))},close:function(){var e=document.getElementById("zasdkFeedbackModal");document.removeEventListener("keydown",No.onEscape),document.removeEventListener("quartz-feedback-state",No.bindQuartzEvent),Eo().clearFeedback(),Ao=!1,wo=!1,No.isRecording=!1,clearInterval(No.timerInterval||void 0),No.timerInterval=null;var t=document.getElementById("zasdkrectimer");t&&t.remove(),b(e)||e.remove()},toggleWindowAnimation:function(){const e=document.getElementById("zasdkFeedbackModal").querySelector("#zasdkFeedbackconatiner");No.isHidden?No.showForm():No.isScaled?No.finishHiding():(e.style.transform="scale(0)",e.style.opacity="0",No.isScaled=!0,setTimeout(No.finishHiding,350))},finishHiding:function(){var e=document.getElementById("zasdkFeedbackModal");e&&No.isScaled&&!No.isHidden&&(e.style.display="none",No.isHidden=!0)},fileAttachment:function(){var e=No.fileInput.files;No.uploadTotalSize=0,No.MaxFileSize=10485760;var t=document.getElementById("zasdkFeedbackModal"),n=t.querySelector("#zasdkfilesizeinfo"),r=t.querySelector("#zasakfileList");if(n.textContent="",e.length>5)return No.fileLimitExceeded(!1,!0),void No.validateFeedbackField();if(r.innerHTML="",e.length>0){for(var i=0,a=0;a<e.length;a++){var o=e[a].name,s=o.substring(0,o.lastIndexOf(".")),c=o.substring(o.lastIndexOf(".")+1);i+=e[a].size;var d=No.elementCreator("li");d.title=o;var u=No.elementCreator("span");u.className="zaskFdBckFlName",u.innerText=s.length>10?s.slice(0,3)+"..."+s.slice(-3):s;var l=No.elementCreator("span");l.innerText="."+c;var f=No.elementCreator("span");f.className="zasdkFdBckFlCls",f.setAttribute("data-name",o),f.innerHTML="&times;",d.appendChild(u),d.appendChild(l),d.appendChild(f),r.appendChild(d)}var p=i>No.MaxFileSize;No.fileLimitExceeded(p),n.textContent=`${No.formatFileSize(i)} Used / 10 MB`;const g=t.querySelectorAll(".zasdkFdBckFlCls");Array.from(g).forEach(function(e){e.addEventListener("click",function(){No.handleStatusmsg(),No.removeFileFromList(this),No.fileAttachment()})})}No.validateFeedbackField()},elementCreator:function(e){return document.createElement(e)},fileLimitExceeded:function(e,t){var n="";(t||e)&&(n=t?"Maximum 5 attachments is allowed":"Maximum limit reached. The total file size cannot exceed 10MB."),No.handleStatusmsg(!1,n)},removeFileFromList:function(e){e.getAttribute("data-name");const t=e.parentElement,n=Array.from(t.parentElement.children).indexOf(t);t.remove();let r=Io();if(No.selectedFiles=Io(),null!==r&&null!==No.selectedFiles){for(let e=0;e<No.fileInput.files.length;e++)e!==n&&(r.items.add(No.fileInput.files[e]),No.selectedFiles.items.add(No.fileInput.files[e]));No.fileInput.files=r.files}},formatFileSize:function(e){if(0===e)return"0 KB";const t=1024,n=e/t,r=e/(t*t),i=e/(t*t*t);return i>=1?i.toFixed(2)+" GB":r>=1?r.toFixed(2)+" MB":n.toFixed(2)+" KB"},toggleRecording:function(){No.isRecording=!No.isRecording,No.isRecording?No.startRecording():No.stopRecording()},startRecording:function(){No.timerInterval||(No.timerInterval=setInterval(No.updateTimer,1e3))},stopRecording:function(){Ao&&(clearInterval(No.timerInterval||void 0),No.timerInterval=null,Promise.resolve(Eo().endRecording()).catch(function(e){O.log("stopRecording: "+e)}).then(No.recordingEnded))},recordingEnded:function(){if(!Ao)return;Ao=!1,No.isRecording=!1,clearInterval(No.timerInterval||void 0),No.timerInterval=null;var e=document.getElementById("zasdkrectimer");e&&e.remove();var t=document.getElementById("zasdkFeedbackModal");if(!t)return;var n=wo;wo=!1,No.showRecordingStatus(!1),No.showForm(),t.querySelector("#editRecordedVideo").style.display="block",t.querySelector("#zasdkreccheckcnt").style.display="none";let r=t.querySelector("#previewVideoElemId");Promise.resolve(Eo().setVideoContent(r)).catch(function(e){O.warn("AppticsFeedback: the recording could not be shown: "+e)}).then(function(){n&&document.getElementById("zasdkFeedbackModal")&&No.submitRecording()})},showForm:function(){var e=document.getElementById("zasdkFeedbackModal");if(!e)return;const t=e.querySelector("#zasdkFeedbackconatiner");No.isHidden=!1,No.isScaled=!1,e.style.display="block",setTimeout(()=>{t.style.transform="scale(1)",t.style.opacity="1",No.validateFeedbackField()},10)},submitRecording:function(){var t=document.getElementById("zasdkFeedbackModal");let n=ro.anonymous?"":String(ro.userid||""),r=b(E._user_info.userid)?"":String(E._user_info.userid),i=b(n)?r:n,a=t.querySelector("#zasdkDescription").value.trim()||"-";i=/^[\w]([\w\-\.\+\'=]*)@([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,22}$/.test(i)&&$e()==e.USAGE_TRACKING_WITH_PII?i:"user@example.com",Eo().submitRecording({email:i,subject:a}).then(e=>{var n=!_(e)&&e&&e.hasOwnProperty("feedbackLink")&&e.feedbackLink||"";To(Oo(t,a,n))}).catch(error=>{O.error("submitRecording : "+error),No.handleStatusmsg(!1,"Could not upload the recording. Please try again.")})},updateTimer:function(){No.remainingTime>0?(No.remainingTime--,No.updateDisplay()):No.stopRecording()},updateDisplay:function(){const e=Math.floor(No.remainingTime/60),t=No.remainingTime%60,n=`${e.toString().padStart(2,"0")}:${t.toString().padStart(2,"0")}`;No.timerDisplay&&(No.timerDisplay.textContent=n);var r=document.getElementById("zasdkRecStatusTime");r&&(r.textContent=n)},validateFeedbackField:function(){No.updateLeftCount();var e=document.getElementById("zasdkFeedbackModal");const t=e.querySelector("#zasdkDescription"),n=e.querySelector("#zasdkFileInput"),r=e.querySelector("#previewVideoElemId"),i=e.querySelector("#zasdk_submit_btn"),a=t&&""!==t.value.trim()&&t.value.trim().length>0;n&&n.files&&n.files.length,r&&r.offsetParent;const o=e.querySelectorAll(".zasdkmaxerror");!(No.getVisibleErrorCount(o)>0)&&a?(i.classList.remove("zasdkbtndisableclr"),No.handleStatusmsg()):i.classList.add("zasdkbtndisableclr")},getVisibleErrorCount:function(e){return Array.from(e).filter(e=>null!==e.offsetParent).length}},Mo=q("AppticsFeedback.feedbackFormOpen",function feedbackFormOpen(options){void 0===options||Po(options)||Co||(Co=!0,I("AppticsFeedback.feedbackFormOpen: takes one options object, as feedbackFormOpen({ type, message, includeLog, includeDiagnostics, attachments, logFiles, isAnonymous }); opening it with its defaults"));const e=Po(options)?options:{},t={includeLog:!0===e.includeLog,includeDyninfo:!0===e.includeDiagnostics,isAnonymous:!0===e.isAnonymous};"number"==typeof e.type&&(t.type=e.type),"string"==typeof e.message&&e.message.length>0&&(t.message=e.message),e.attachments&&e.attachments.length>0&&(t.attachments=e.attachments),e.logFiles&&e.logFiles.length>0&&(t.logFiles=e.logFiles),function(e){try{if(!e||"undefined"==typeof document)return;if(document.querySelector('[data-apptics="style"]'))return;var t=document.createElement("style");t.setAttribute("data-apptics","style"),t.textContent=e,(document.head||document.documentElement).appendChild(t)}catch(e){}}('.zasdk-modal{color:var(--zasdk-text-color);margin:0;padding:0;font-family:inherit;line-height:normal}.zasdk-modal p{margin:0}.zasdk-modal ul{margin:0;padding:0;list-style:none}.zasdk-modal,.zasdk-timer-container{--zasdk-background-color:#fff;--zasdk-text-color:#333;--zasdk-border-color:#ddd;--zasdk-modal-background:#0006;--zasdk-close-color:#aaa;--zasdk-close-hover-color:#000;--zasdk-input-background:#fff;--zasdk-button-background:#f0f0f0;--zasdk-primary-color:#007bff;--zasdk-primary-text-color:#000;--zasdk-button-text-color:#fff;--zasdk-secondary-background:#ddd;--zasdk-icon-border-color:#ccc;--zasdk-dropdown-hover:#f0f0f0;--zasdk-selected-background:#f0f0f0;--zasdk-selected-border:#ddd;--zasdk-muted-text:#999;--zasdk-link-color:#0078d4;--zasdk-switch-off:#ccc;--zasdk-viewer-background:#f8f8f8;--zasdk-placeholder-color:#757575;--zasdk-shadow:#0000002e}.zasdk-modal[data-zasdk-theme=dark],.zasdk-timer-container[data-zasdk-theme=dark],.zasdk-modal.zasdk-dark-theme,.zasdk-timer-container.zasdk-dark-theme{--zasdk-background-color:#1a1a1a;--zasdk-text-color:#f0f0f0;--zasdk-border-color:#444;--zasdk-modal-background:#ffffff1a;--zasdk-close-color:#888;--zasdk-close-hover-color:#fff;--zasdk-input-background:#2a2a2a;--zasdk-button-background:#333;--zasdk-primary-color:#2f7bd8;--zasdk-primary-text-color:#fff;--zasdk-secondary-background:#333;--zasdk-icon-border-color:#555;--zasdk-dropdown-hover:#2a2a2a;--zasdk-selected-background:#2a2a2a;--zasdk-selected-border:#555;--zasdk-muted-text:#888;--zasdk-link-color:#5aa9ff;--zasdk-switch-off:#555;--zasdk-viewer-background:#222;--zasdk-placeholder-color:#9a9a9a;--zasdk-shadow:#0009}@media (prefers-color-scheme:dark){.zasdk-modal[data-zasdk-theme=auto],.zasdk-timer-container[data-zasdk-theme=auto]{--zasdk-background-color:#1a1a1a;--zasdk-text-color:#f0f0f0;--zasdk-border-color:#444;--zasdk-modal-background:#ffffff1a;--zasdk-close-color:#888;--zasdk-close-hover-color:#fff;--zasdk-input-background:#2a2a2a;--zasdk-button-background:#333;--zasdk-primary-color:#2f7bd8;--zasdk-primary-text-color:#fff;--zasdk-secondary-background:#333;--zasdk-icon-border-color:#555;--zasdk-dropdown-hover:#2a2a2a;--zasdk-selected-background:#2a2a2a;--zasdk-selected-border:#555;--zasdk-muted-text:#888;--zasdk-link-color:#5aa9ff;--zasdk-switch-off:#555;--zasdk-viewer-background:#222;--zasdk-placeholder-color:#9a9a9a;--zasdk-shadow:#0009}}.zasdk-modal-content *{box-sizing:border-box;font-size:14px}.zasdk-modal{z-index:214748364;pointer-events:none;width:100%;height:100%;color:var(--zasdk-primary-text-color);background:0 0;position:fixed;top:0;left:0;overflow:visible}.zasdk-modal-content{background-color:var(--zasdk-background-color);border:1px solid var(--zasdk-border-color);width:500px;max-width:calc(100% - 40px);max-height:calc(100% - 40px);box-shadow:0 8px 24px var(--zasdk-shadow);transform-origin:100% 100%;pointer-events:auto;-webkit-user-select:none;user-select:none;border-radius:8px;flex-direction:column;padding:10px 0 20px;transition:transform .3s,opacity .3s;display:flex;position:fixed;inset:auto 20px 20px auto}.zasdk-header{touch-action:none;cursor:move;flex-shrink:0;justify-content:space-between;align-items:center;margin-bottom:20px;padding:0 20px;display:flex}.zasdk-title{margin:0;font-size:24px;font-weight:700}.zasdk-close{color:var(--zasdk-close-color);cursor:pointer;font-size:28px;font-weight:700}.zasdk-close svg path{fill:var(--zasdk-primary-text-color)}.zasdk-close:hover,.zasdk-close:focus{color:var(--zasdk-close-hover-color);cursor:pointer;text-decoration:none}.zasdk-feedback-types{text-align:center;flex-shrink:0;justify-content:space-evenly;margin-bottom:20px;font-size:14px;display:flex}.zasdk-feedback-type{cursor:pointer;display:inline-block}.zasdk-iconcnt{background-color:var(--zasdk-background-color);border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;margin-bottom:5px;font-weight:700;display:inline-block}.zasdk-body{flex:auto;min-height:0;overflow-y:auto}.zasdk-form{padding:0 20px;position:relative}.zasdk-form select,.zasdk-form input,.zasdk-form textarea{border:1px solid var(--zasdk-border-color);background-color:var(--zasdk-input-background);width:100%;color:var(--zasdk-text-color);border-radius:4px;margin-bottom:15px;padding:8px;font-family:inherit;font-size:14px}.zasdk-form textarea::placeholder,.zasdk-form input::placeholder{color:var(--zasdk-placeholder-color);opacity:1}.zasdk-form textarea{resize:none;height:100px}.zasdkdesclbl{margin-bottom:5px;font-weight:700;display:block}.zasdkmadfeld{color:#f33558;padding-left:3px}.zaleftcharspan{float:right}.zaleftchartxt{margin-left:3px;font-weight:400}.zasdk_submit_btncnt{flex-shrink:0;justify-content:end;align-items:center;margin-top:20px;padding:0 20px;display:flex}.zasdkstsmsg{text-align:end;margin-right:20px;font-size:14px;display:none}.zasdkstserror{color:#f33155}.zasdkstssucs{color:#009c08}.zasdk-buttons{margin-top:20px}.zasdk-btn{cursor:pointer;text-align:center;border:none;border-radius:4px;padding:7px 20px;font-size:14px}.zasdk-send-btn{background-color:var(--zasdk-primary-color);color:var(--zasdk-button-text-color);min-width:81px;height:34px}.zasdk-attach-btn{background-color:var(--zasdk-button-background);vertical-align:middle;justify-content:center;align-items:center;height:40px;margin-bottom:0;margin-right:10px;padding:10px 15px 10px 5px;font-size:14px;font-weight:400;display:inline-flex}.zasdkfilesizeinf{vertical-align:middle;margin-top:10px;font-size:13px;display:inline-block}.zasdkattachinf{vertical-align:middle;margin-bottom:10px;font-size:13px;display:inline-block}input[type=file].zasdk-file-input{display:none}.zasdkfeedback__icon{border:1px solid var(--zasdk-icon-border-color);vertical-align:middle;text-align:center;box-sizing:border-box;border-radius:100%;width:32px;height:32px;transition:all .5s;display:inline-block}.zasdk-feedback-types svg{width:inherit;height:inherit;vertical-align:middle;display:inline-block}.zasdkfeedback__icon-report .zasdkfeedback__icon{fill:#ff4122}.zasdkfeedback__icon-report svg{width:28px;height:100%}.zasdk-feedback-type{text-align:center;border:1px solid #0000;width:90px;padding:10px 0;transition:all .5s}.zasdk-selected{border:1px solid var(--zasdk-selected-border);background-color:var(--zasdk-selected-background);border-radius:6px}.zasdk-selected .zasdkfeedback__icon-report .zasdkfeedback__icon{fill:#fff;background:#ff4122;border-color:#ff4122}.zasdk-feedback-type:hover .zasdkfeedback__icon-report .zasdkfeedback__icon{border-color:#ff4122}.zasdkfeedback__icon-reqest .zasdkfeedback__icon{fill:#a63cff}.zasdkfeedback__icon-reqest svg{width:24px;height:100%}.zasdk-feedback-type:hover .zasdkfeedback__icon-reqest .zasdkfeedback__icon{border-color:#a63cff}.zasdk-selected .zasdkfeedback__icon-reqest .zasdkfeedback__icon{fill:#fff;background:#a63cff;border-color:#a63cff}.zasdkfeedback__icon-help .zasdkfeedback__icon{fill:#fba400}.zasdkfeedback__icon-help svg{width:28px;height:100%}.zasdk-feedback-type:hover .zasdkfeedback__icon-help .zasdkfeedback__icon{border-color:#fba400}.zasdk-selected .zasdkfeedback__icon-help .zasdkfeedback__icon{fill:#fff;background:#fba400;border-color:#fba400}.zasdkfeedback__icon-appreciate .zasdkfeedback__icon{fill:#ff297a}.zasdkfeedback__icon-appreciate svg{width:25px;height:28px}.zasdk-feedback-type:hover .zasdkfeedback__icon-appreciate .zasdkfeedback__icon{border-color:#ff297a}.zasdk-selected .zasdkfeedback__icon-appreciate .zasdkfeedback__icon{fill:#fff;background:#ff297a;border-color:#ff297a}.zasdk-btncnt{margin-bottom:10px}.zasdk-dropdown{width:100%;margin-bottom:15px;position:relative}.zasdk-dropdown-header{border:1px solid var(--zasdk-border-color);cursor:pointer;background-color:var(--zasdk-input-background);color:var(--zasdk-text-color);border-radius:4px;padding:5px 10px}.zasdk-dropdown-options{background-color:var(--zasdk-background-color);border:1px solid var(--zasdk-border-color);z-index:1;border-radius:5px;display:none;position:absolute;top:35px;left:0;right:0}.zasdk-dropdown-option{cursor:pointer;padding:5px 10px}.zasdk-dropdown-option:hover{background-color:var(--zasdk-dropdown-hover)}.zasdkqz-container{width:100%;color:var(--zasdk-text-color);background:var(--zasdk-secondary-background);box-sizing:border-box;border-radius:8px;padding:15px;font-size:14px}.zasdkqz-checkbox-wrapper{align-items:flex-start;display:flex;position:relative}input[type=checkbox].zasdkqz-checkbox{opacity:0;width:auto;margin:0;position:absolute}.zasdkqz-checkbox+label{cursor:pointer;margin:0;padding-left:30px;font-weight:400;line-height:1.5;display:inline-block;position:relative}.zasdkqz-checkbox+label:before{content:"";border:1px solid var(--zasdk-primary-color);border-radius:4px;width:18px;height:18px;position:absolute;top:2px;left:0}.zasdkqz-checkbox:focus+label:before{border:2px solid var(--zasdk-primary-color)}.zasdkqz-content .zasdkqz-prop-content{margin-top:10px;padding-left:30px}.zasdkqz-checkbox:checked+label:before{background:var(--zasdk-primary-color)}.zasdkqz-checkbox:checked+label:after{content:"";border:0 solid #fff;border-width:0 0 1px 1px;width:10px;height:5px;transition:transform .3s;position:absolute;top:6px;left:10px;transform:rotate(-40deg)translate(-50%,-50%)scale(1)}.zasdkqz-content{max-height:0;transition:max-height .5s;overflow:hidden}.zasdkqz-content.zasdkqz-show{max-height:250px;display:block}.zasdkqz-button{background:var(--zasdk-primary-color);color:var(--zasdk-button-text-color);cursor:pointer;border:none;border-radius:4px;margin-top:16px;padding:10px 20px;text-decoration:none;transition:background-color .3s;display:inline-block}.zasdkqz-button:hover{background:var(--zasdk-primary-color)}.zasdkqz-info{margin-top:5px;font-size:14px}.zasdkqz-icon{vertical-align:middle;width:20px;height:20px;margin-left:4px;display:inline-block}.zasdk-modal .zasakfilelstcnt{margin-top:10px;list-style:none}.zasdk-modal .zasakfilelstcnt li{border:1px solid var(--zasdk-border-color);vertical-align:middle;cursor:default;background:var(--zasdk-secondary-background);border-radius:3px;margin:0 5px 5px 0;padding:2px 20px 2px 5px;font-size:1.1rem;display:inline-flex;position:relative}.zaskFdBckFlName{box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;max-width:120px;display:inline-block;overflow:hidden}.zasdkFdBckFlCls{background:var(--zasdk-secondary-background);cursor:pointer;border-radius:0 3px 3px 0;padding:0 3px;font-size:14px;line-height:22px;position:absolute;top:0;bottom:0;right:2px}.zasdkmaxerror{color:#f33155;font-size:14px}.zasdk-timer-container{background-color:var(--zasdk-secondary-background);z-index:11111;cursor:move;touch-action:none;border-radius:50px;align-items:center;gap:8px;padding:8px 10px;display:inline-flex;position:fixed;bottom:10px;right:10px;box-shadow:0 4px 15px #0000001a}.zasdk-timer-stopcricle{cursor:pointer;background-color:#f33155;border:none;border-radius:50%;width:12px;height:12px;padding:0;animation:1s infinite alternate blink}@keyframes blink{0%{opacity:1}to{opacity:.3}}.zasdk-timer-control{cursor:pointer;border:1px solid #f33155;border-radius:100%;padding:3px}.zasdk-timer-display{color:var(--zasdk-text-color);text-align:left;min-width:55px;font-size:14px;font-weight:500}.zasdk_videoPrev{justify-content:center;display:flex}.zasdk_videoPrev video{opacity:.4}.zasdk-recstatus{background:var(--zasdk-secondary-background);color:var(--zasdk-text-color);border-radius:8px;align-items:center;gap:8px;margin-bottom:15px;padding:10px 15px;display:flex}.zasdk-recstatus-text{flex:1;font-weight:500}.zasdk-recstatus .zasdk-timer-display{min-width:0}.zasdk-recstatus-stop{background:#f33155;margin-top:0;padding:6px 14px}.zasdk-recstatus-stop:hover{background:#f33155}.zasdk_recordedClipArea{border:1px solid var(--zasdk-border-color);border-radius:6px;display:none;position:relative}.zasdk_recordedClipArea .zasdk_rec_hdr{background-color:var(--zasdk-secondary-background);color:var(--zasdk-text-color);border-radius:3px 3px 0 0;padding:5px 10px}.zasdk_rec_hdr_icon{vertical-align:middle;display:inline-block;position:relative}.zasdk_rec_hdr i{vertical-align:middle;line-height:normal}.zasdk_rec_hdr svg{width:20px}.zasdk_playEdit{z-index:1;justify-content:space-between;align-items:stretch;width:180px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.zasdk_clipAreaButtonCnt,.zasdk_submit_btnsubcnt{position:relative}.zasdk_clipAreaButton{background:var(--zasdk-background-color);border:1px solid var(--zasdk-border-color);box-sizing:border-box;cursor:pointer;border-radius:6px;justify-content:center;align-items:center;width:50px;height:40px;display:flex;box-shadow:0 0 9px #0003}.zasdk_clipAreaButton:hover{background:var(--zasdk-dropdown-hover)}.zasdk_clipAreaButton svg{width:28px}.zasdk-send-btn.zasdkbtndisableclr{filter:grayscale();pointer-events:none;opacity:.5}.zasdk-send-btn.zasdkbtndisabled{cursor:not-allowed;position:relative}.zasdkbtndisabled:after{content:"";border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:20px;height:20px;margin:auto;animation:1s ease-in-out infinite zasdkbuttonspin;position:absolute;inset:0}@keyframes zasdkbuttonspin{to{transform:rotate(360deg)}}.zasdk-tooltip,.zasdk-tooltip-top{visibility:hidden;color:#fff;opacity:0;z-index:111111;background-color:#000;border-radius:4px;width:max-content;max-width:200px;margin-top:8px;padding:8px 12px;font-size:14px;transition:opacity .2s;position:absolute;top:100%;left:50%;transform:translate(-50%)}.zasdk-tooltip:after,.zasdk-tooltip-top:after{content:"";border:5px solid #0000;border-bottom-color:#000;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.zasdk-tooltip-container:hover .zasdk-tooltip,.zasdk-tooltip-container:hover .zasdk-tooltip-top{visibility:visible;opacity:1}.zasdk-tooltip-top{margin-top:0;margin-bottom:8px;top:auto;bottom:100%}.zasdk-tooltip-top:after{border-color:#000 #0000 #0000;top:100%}.zasdk-prop-info{max-width:320px}.zasdk-prop-info li{font-size:13px}.zasdkqz-content:has(.zasdk_rec_hdr:hover){overflow:visible}@media (width<=450px){.zasdk-modal-content{width:calc(100% - 10px);bottom:5px;left:5px;right:5px}}@media (height<=600px){.zasdk-modal-content{max-height:100%;top:auto}}@media (width<=370px){.zasdk-feedback-type{width:70px}.zasdk-iconcnt,.zasdkfeedback__icon{width:25px;height:25px}.zasdkfeedback__icon-report svg{width:20px;height:100%}.zasdkfeedback__icon-reqest svg{width:18px}.zasdkfeedback__icon-help svg{width:18px;height:22px}.zasdkfeedback__icon-appreciate svg{width:20px;height:20px}.zasdk-feedback-type *{word-break:break-word;font-size:12px}.zasdk-buttons{margin-top:0}}.zasdk-custom-select{width:100%;margin-bottom:15px;font-size:14px;position:relative}.zasdk-select-trigger{border:1px solid var(--zasdk-border-color);background:var(--zasdk-input-background);cursor:pointer;color:var(--zasdk-text-color);-webkit-user-select:none;user-select:none;border-radius:4px;justify-content:space-between;align-items:center;padding:9px 12px;display:flex}.zasdk-select-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.zasdk-select-arrow{flex-shrink:0;margin-left:8px}.zasdk-select-panel{background:var(--zasdk-input-background);border:1px solid var(--zasdk-border-color);box-shadow:0 6px 20px var(--zasdk-shadow);z-index:99;border-radius:8px;position:absolute;top:calc(100% + 3px);left:0;right:0;overflow:hidden}.zasdk-select-list{max-height:180px;margin:0;padding:4px 0;list-style:none;overflow-y:auto}.zasdk-select-option{cursor:pointer;color:var(--zasdk-text-color);justify-content:space-between;align-items:center;padding:10px 16px;font-size:14px;display:flex}.zasdk-select-option:hover{background:var(--zasdk-dropdown-hover)}.zasdk-select-option.zasdk-option-selected{color:var(--zasdk-link-color);font-weight:500}.zasdk-select-empty{color:var(--zasdk-muted-text);text-align:center;padding:10px 16px;font-size:13px;font-style:italic}.zasdk-toggles-section{margin:5px 16px}.zasdk-toggle-row{border-top:1px solid var(--zasdk-border-color);justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:flex}.zasdk-toggle-info{flex-direction:row;flex:1;align-items:center;gap:8px;display:flex}.zasdk-toggle-label{color:var(--zasdk-text-color);font-size:14px;font-weight:600}.zasdk-view-link{color:var(--zasdk-link-color);cursor:pointer;white-space:nowrap;font-size:12px}.zasdk-view-link:hover{text-decoration:underline}.zasdk-toggle-separator{background:var(--zasdk-border-color);margin:0 16px}.zasdk-switch{flex-shrink:0;width:44px;height:24px;display:inline-block;position:relative}.zasdk-switch input{opacity:0;width:0;height:0}.zasdk-slider{cursor:pointer;background:var(--zasdk-switch-off);border-radius:24px;transition:all .3s;position:absolute;inset:0}.zasdk-slider:before{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:all .3s;position:absolute;bottom:3px;left:3px}.zasdk-switch input:checked+.zasdk-slider{background:var(--zasdk-link-color)}.zasdk-switch input:checked+.zasdk-slider:before{transform:translate(20px)}.zasdk-data-viewer{background:var(--zasdk-background-color);z-index:100;border-radius:12px;flex-direction:column;position:absolute;inset:0;overflow:hidden}.zasdk-viewer-hdr{border-bottom:1px solid var(--zasdk-border-color);flex-shrink:0;align-items:center;gap:10px;padding:14px 16px;display:flex}.zasdk-viewer-back{cursor:pointer;flex-shrink:0;align-items:center;padding:2px;display:flex}.zasdk-viewer-back:hover svg path{stroke:var(--zasdk-link-color)}.zasdk-viewer-title{color:var(--zasdk-text-color);flex:1;font-size:16px;font-weight:600}.zasdk-viewer-content{color:var(--zasdk-text-color);white-space:pre-wrap;word-break:break-word;background:var(--zasdk-viewer-background);border-radius:6px;flex:1;margin:8px;padding:16px;font-family:monospace;font-size:12px;overflow-y:auto}.zasdk-modal-content :focus-visible{outline:2px solid var(--zasdk-primary-color);outline-offset:2px}@media (prefers-reduced-motion:reduce){.zasdk-modal *,.zasdk-timer-container *{transition:none!important;animation:none!important}}'),No.init(t)}),Lo=q("AppticsFeedback.feedbackFormClose",function feedbackFormClose(){No.close()}),Do=q("AppticsFeedback.addFeedbackLog",function addFeedbackLog(message){"string"==typeof message&&0!==message.length&&ja({type:La,happenedat:h(),message:Ba(message)})}),qo=q("AppticsFeedback.addDiagnosticsInfo",function addDiagnosticsInfo(heading,key,value){"string"==typeof heading&&0!==heading.length?"string"==typeof key&&0!==key.length?null!=value&&""!==value?ja({type:Da,happenedat:h(),heading:heading,key:key,value:Ba(String(value))}):Ha('a value is required for "'+heading+'" / "'+key+'"'):Ha("a key is required"):Ha("a heading is required")}),Fo=q("AppticsFeedback.setFeedbackTheme",function setFeedbackTheme(theme){-1!==Ro.indexOf(theme)?(E._config.feedback_theme=theme,"undefined"!=typeof document&&["zasdkFeedbackModal","zasdkrectimer"].forEach(function(id){var e=document.getElementById(id);e&&e.setAttribute("data-zasdk-theme",theme)})):O.warn("AppticsFeedback.setFeedbackTheme: takes 'light', 'dark' or 'auto', not "+JSON.stringify(theme))}),jo=q("AppticsFeedback.sendFeedback",function(...e){return ready().then(function(t){if(!t)throw new Error("AppticsFeedback.sendFeedback: not sent, the SDK has not started; call Apptics.init() first");return sendFeedback(...e)}).catch(function(e){throw O.error("AppticsFeedback.sendFeedback failed:",e),e})}),Bo={AP_FEEDBACK_TYPE:t,feedbackFormOpen:function feedbackFormOpen(options){return F(Mo,arguments)},feedbackFormClose:function feedbackFormClose(){return F(Lo,arguments)},sendFeedback:function sendFeedback(options){return F(jo,arguments)},addFeedbackLog:function addFeedbackLog(message){return F(Do,arguments)},addDiagnosticsInfo:function addDiagnosticsInfo(heading,key,value){return F(qo,arguments)},setFeedbackTheme:function setFeedbackTheme(theme){return F(Fo,arguments)}};var Uo=null;function Ho(e){var t=function(){if(null!==Uo)return Uo;var e={};return"AD:Europe/Andorra;AE:Asia/Dubai;AF:Asia/Kabul;AG:America/Antigua;AI:America/Anguilla;AL:Europe/Tirane;AM:Asia/Yerevan;AO:Africa/Luanda;AQ:Antarctica/Casey,Davis,DumontDUrville,Mawson,McMurdo,Palmer,Rothera,Syowa,Troll,Vostok;AR:America/Argentina/Buenos_Aires,Argentina/Catamarca,Argentina/ComodRivadavia,Argentina/Cordoba,Argentina/Jujuy,Argentina/La_Rioja,Argentina/Mendoza,Argentina/Rio_Gallegos,Argentina/Salta,Argentina/San_Juan,Argentina/San_Luis,Argentina/Tucuman,Argentina/Ushuaia,Buenos_Aires,Catamarca,Cordoba,Jujuy,Mendoza,Rosario;AS:Pacific/Pago_Pago,Samoa|US/Samoa;AT:Europe/Vienna;AU:Antarctica/Macquarie|Australia/ACT,Adelaide,Brisbane,Broken_Hill,Canberra,Currie,Darwin,Eucla,Hobart,LHI,Lindeman,Lord_Howe,Melbourne,NSW,North,Perth,Queensland,South,Sydney,Tasmania,Victoria,West,Yancowinna;AW:America/Aruba;AX:Europe/Mariehamn;AZ:Asia/Baku;BA:Europe/Sarajevo;BB:America/Barbados;BD:Asia/Dacca,Dhaka;BE:CET,MET|Europe/Brussels;BF:Africa/Ouagadougou;BG:Europe/Sofia;BH:Asia/Bahrain;BI:Africa/Bujumbura;BJ:Africa/Porto-Novo;BL:America/St_Barthelemy;BM:Atlantic/Bermuda;BN:Asia/Brunei;BO:America/La_Paz;BQ:America/Kralendijk;BR:America/Araguaina,Bahia,Belem,Boa_Vista,Campo_Grande,Cuiaba,Eirunepe,Fortaleza,Maceio,Manaus,Noronha,Porto_Acre,Porto_Velho,Recife,Rio_Branco,Santarem,Sao_Paulo|Brazil/Acre,DeNoronha,East,West;BS:America/Nassau;BT:Asia/Thimbu,Thimphu;BW:Africa/Gaborone;BY:Europe/Minsk;BZ:America/Belize;CA:America/Atikokan,Blanc-Sablon,Cambridge_Bay,Creston,Dawson,Dawson_Creek,Edmonton,Fort_Nelson,Glace_Bay,Goose_Bay,Halifax,Inuvik,Iqaluit,Moncton,Montreal,Nipigon,Pangnirtung,Rainy_River,Rankin_Inlet,Regina,Resolute,St_Johns,Swift_Current,Thunder_Bay,Toronto,Vancouver,Whitehorse,Winnipeg,Yellowknife|Canada/Atlantic,Central,Eastern,Mountain,Newfoundland,Pacific,Saskatchewan,Yukon;CC:Indian/Cocos;CD:Africa/Kinshasa,Lubumbashi;CF:Africa/Bangui;CG:Africa/Brazzaville;CH:Europe/Zurich;CI:Africa/Abidjan,Timbuktu|Iceland;CK:Pacific/Rarotonga;CL:America/Coyhaique,Punta_Arenas,Santiago|Chile/Continental,EasterIsland|Pacific/Easter;CM:Africa/Douala;CN:Asia/Chongqing,Chungking,Harbin,Kashgar,Shanghai,Urumqi|PRC;CO:America/Bogota;CR:America/Costa_Rica;CU:America/Havana|Cuba;CV:Atlantic/Cape_Verde;CW:America/Curacao;CX:Indian/Christmas;CY:Asia/Famagusta,Nicosia|Europe/Nicosia;CZ:Europe/Prague;DE:Atlantic/Jan_Mayen|Europe/Berlin,Busingen;DJ:Africa/Djibouti;DK:Europe/Copenhagen;DM:America/Dominica;DO:America/Santo_Domingo;DZ:Africa/Algiers;EC:America/Guayaquil|Pacific/Galapagos;EE:Europe/Tallinn;EG:Africa/Cairo|Egypt;EH:Africa/El_Aaiun;ER:Africa/Asmara;ES:Africa/Ceuta|Atlantic/Canary|Europe/Madrid;ET:Africa/Addis_Ababa;FI:Europe/Helsinki;FJ:Pacific/Fiji;FK:Atlantic/Stanley;FM:Pacific/Chuuk,Kosrae,Pohnpei;FO:Atlantic/Faeroe,Faroe;FR:Europe/Paris;GA:Africa/Libreville;GB:Europe/Belfast,London|GB,GB-Eire;GD:America/Grenada;GE:Asia/Tbilisi;GF:America/Cayenne;GG:Europe/Guernsey;GH:Africa/Accra;GI:Europe/Gibraltar;GL:America/Danmarkshavn,Godthab,Nuuk,Scoresbysund,Thule;GM:Africa/Banjul;GN:Africa/Conakry;GP:America/Guadeloupe;GQ:Africa/Malabo;GR:EET|Europe/Athens;GS:Atlantic/South_Georgia;GT:America/Guatemala;GU:Pacific/Guam;GW:Africa/Bissau;GY:America/Guyana;HK:Asia/Hong_Kong|Hongkong;HN:America/Tegucigalpa;HR:Europe/Zagreb;HT:America/Port-au-Prince;HU:Europe/Budapest;ID:Asia/Jakarta,Jayapura,Makassar,Pontianak,Ujung_Pandang;IE:Eire|Europe/Dublin;IL:Asia/Jerusalem,Tel_Aviv|Israel;IM:Europe/Isle_of_Man;IN:Asia/Calcutta,Kolkata;IO:Indian/Chagos;IQ:Asia/Baghdad;IR:Asia/Tehran|Iran;IS:Atlantic/Reykjavik;IT:Europe/Rome;JE:Europe/Jersey;JM:America/Jamaica|Jamaica;JO:Asia/Amman;JP:Asia/Tokyo|Japan;KE:Africa/Asmera,Nairobi;KG:Asia/Bishkek;KH:Asia/Phnom_Penh;KI:Pacific/Enderbury,Kanton,Kiritimati,Tarawa;KM:Indian/Comoro;KN:America/St_Kitts;KP:Asia/Pyongyang;KR:Asia/Seoul|ROK;KW:Asia/Kuwait;KY:America/Cayman;KZ:Asia/Almaty,Aqtau,Aqtobe,Atyrau,Oral,Qostanay,Qyzylorda;LA:Asia/Vientiane;LB:Asia/Beirut;LC:America/St_Lucia;LI:Europe/Vaduz;LK:Asia/Colombo;LR:Africa/Monrovia;LS:Africa/Maseru;LT:Europe/Vilnius;LU:Europe/Luxembourg;LV:Europe/Riga;LY:Africa/Tripoli|Libya;MA:Africa/Casablanca;MC:Europe/Monaco;MD:Europe/Chisinau,Tiraspol;ME:Europe/Podgorica;MF:America/Marigot;MG:Indian/Antananarivo;MH:Kwajalein|Pacific/Kwajalein,Majuro;MK:Europe/Skopje;ML:Africa/Bamako;MM:Asia/Rangoon,Yangon;MN:Asia/Choibalsan,Hovd,Ulaanbaatar,Ulan_Bator;MO:Asia/Macao,Macau;MP:Pacific/Saipan;MQ:America/Martinique;MR:Africa/Nouakchott;MS:America/Montserrat;MT:Europe/Malta;MU:Indian/Mauritius;MV:Indian/Maldives;MW:Africa/Blantyre;MX:America/Bahia_Banderas,Cancun,Chihuahua,Ciudad_Juarez,Ensenada,Hermosillo,Matamoros,Mazatlan,Merida,Mexico_City,Monterrey,Ojinaga,Santa_Isabel,Tijuana|Mexico/BajaNorte,BajaSur,General;MY:Asia/Kuala_Lumpur,Kuching;MZ:Africa/Maputo;NA:Africa/Windhoek;NC:Pacific/Noumea;NE:Africa/Niamey;NF:Pacific/Norfolk;NG:Africa/Lagos;NI:America/Managua;NL:Europe/Amsterdam;NO:Europe/Oslo;NP:Asia/Kathmandu,Katmandu;NR:Pacific/Nauru;NU:Pacific/Niue;NZ:Antarctica/South_Pole|NZ,NZ-CHAT|Pacific/Auckland,Chatham;OM:Asia/Muscat;PA:America/Coral_Harbour,Panama|EST;PE:America/Lima;PF:Pacific/Gambier,Marquesas,Tahiti;PG:Pacific/Bougainville,Port_Moresby,Truk,Yap;PH:Asia/Manila;PK:Asia/Karachi;PL:Europe/Warsaw|Poland;PM:America/Miquelon;PN:Pacific/Pitcairn;PR:America/Puerto_Rico,Virgin;PS:Asia/Gaza,Hebron;PT:Atlantic/Azores,Madeira|Europe/Lisbon|Portugal,WET;PW:Pacific/Palau;PY:America/Asuncion;QA:Asia/Qatar;RE:Indian/Reunion;RO:Europe/Bucharest;RS:Europe/Belgrade;RU:Asia/Anadyr,Barnaul,Chita,Irkutsk,Kamchatka,Khandyga,Krasnoyarsk,Magadan,Novokuznetsk,Novosibirsk,Omsk,Sakhalin,Srednekolymsk,Tomsk,Ust-Nera,Vladivostok,Yakutsk,Yekaterinburg|Europe/Astrakhan,Kaliningrad,Kirov,Moscow,Samara,Saratov,Ulyanovsk,Volgograd|W-SU;RW:Africa/Kigali;SA:Asia/Riyadh;SB:Pacific/Guadalcanal,Ponape;SC:Indian/Mahe;SD:Africa/Khartoum;SE:Europe/Stockholm;SG:Asia/Singapore|Singapore;SH:Atlantic/St_Helena;SI:Europe/Ljubljana;SJ:Arctic/Longyearbyen;SK:Europe/Bratislava;SL:Africa/Freetown;SM:Europe/San_Marino;SN:Africa/Dakar;SO:Africa/Mogadishu;SR:America/Paramaribo;SS:Africa/Juba;ST:Africa/Sao_Tome;SV:America/El_Salvador;SX:America/Lower_Princes;SY:Asia/Damascus;SZ:Africa/Mbabane;TC:America/Grand_Turk;TD:Africa/Ndjamena;TF:Indian/Kerguelen;TG:Africa/Lome;TH:Asia/Bangkok;TJ:Asia/Dushanbe;TK:Pacific/Fakaofo;TL:Asia/Dili;TM:Asia/Ashgabat,Ashkhabad;TN:Africa/Tunis;TO:Pacific/Tongatapu;TR:Asia/Istanbul|Europe/Istanbul|Turkey;TT:America/Port_of_Spain;TV:Pacific/Funafuti;TW:Asia/Taipei|ROC;TZ:Africa/Dar_es_Salaam;UA:Europe/Kiev,Kyiv,Simferopol,Uzhgorod,Zaporozhye;UG:Africa/Kampala;UM:Pacific/Midway,Wake;US:America/Adak,Anchorage,Atka,Boise,Chicago,Denver,Detroit,Fort_Wayne,Indiana/Indianapolis,Indiana/Knox,Indiana/Marengo,Indiana/Petersburg,Indiana/Tell_City,Indiana/Vevay,Indiana/Vincennes,Indiana/Winamac,Indianapolis,Juneau,Kentucky/Louisville,Kentucky/Monticello,Knox_IN,Los_Angeles,Louisville,Menominee,Metlakatla,New_York,Nome,North_Dakota/Beulah,North_Dakota/Center,North_Dakota/New_Salem,Phoenix,Shiprock,Sitka,Yakutat|HST,MST,Navajo|Pacific/Honolulu,Johnston|US/Alaska,Aleutian,Arizona,Central,East-Indiana,Eastern,Hawaii,Indiana-Starke,Michigan,Mountain,Pacific;UY:America/Montevideo;UZ:Asia/Samarkand,Tashkent;VA:Europe/Vatican;VC:America/St_Vincent;VE:America/Caracas;VG:America/Tortola;VI:America/St_Thomas;VN:Asia/Ho_Chi_Minh,Saigon;VU:Pacific/Efate;WF:Pacific/Wallis;WS:Pacific/Apia;YE:Asia/Aden;YT:Indian/Mayotte;ZA:Africa/Johannesburg;ZM:Africa/Lusaka;ZW:Africa/Harare".split(";").forEach(function(t){var n=t.indexOf(":"),r=t.slice(0,n);t.slice(n+1).split("|").forEach(function(t){var n=t.indexOf("/"),i=-1===n?"":t.slice(0,n+1);t.slice(i.length).split(",").forEach(function(t){e[i+t]=r})})}),Uo=e,e}();return Object.prototype.hasOwnProperty.call(t,e)?t[e]:""}const Go=Object.freeze({1:"in"}),Vo=Object.freeze({appversion:function(){return String(E._defaultoptions.appversion||"")},platform:function(){return String(E._platform||"")},browser:function(){return String(E._device_info.browser||"")},browserversion:function(){return String(E._device_info.browserversion||"")},osversion:function(){return String(E._device_info.osversion||"")},devicetype:function(){return String(E._device_info.devicetype||"")},language:function(){return String(navigator.language||"")},country:function(){var e=String(E._user_info.country||"").trim();if(""!==e)return e;var t="";try{t=String(Ze()||"")}catch(e){t=""}var n=Ho(t);return""===n?"":function(e){try{return new Intl.DisplayNames(["en"],{type:"region"}).of(e)||e}catch(t){return e}}(n)},customergroupid:function(){return String(E._user_info.groupid||"")},userid:function(){return String(E._user_info.userid||"")}});var Ko={};function Wo(key,message){Ko[key]||(Ko[key]=!0,O.warn(message))}function Zo(){Ko={}}function Jo(e,conditionname){var key=String(e.key||"");if(void 0===Go[String(e.status)])return Wo("op:"+e.status,'AppticsRemoteConfig: unknown criteria operator "'+e.status+'", so conditions using it will not match'),!1;var t=function(e){var t=e.value;return Array.isArray(t)?t.map(function(e){return String(e)}):b(t)?[]:[String(t)]}(e);if("custom_sdk_value"===key){var n=cs(conditionname);return 0===n.length?(Wo("custom:"+conditionname,'AppticsRemoteConfig: no value for the custom condition "'+conditionname+'"; set one with setCustomConditionValue, or it will not match'),!1):n.some(function(e){return-1!==t.indexOf(e)})}var r=Vo[key];if(void 0===r)return Wo("key:"+key,'AppticsRemoteConfig: unknown criteria "'+key+'", so conditions using it will not match'),!1;var i=r();return""!==i&&-1!==t.indexOf(i)}function Yo(e){var t=e&&e.criterias;if(!Array.isArray(t)||0===t.length)return!1;for(var n=0;n<t.length;n++)if(!Jo(t[n],String(e.conditionname||"")))return!1;return!0}function Qo(e){var t={},n=Array.isArray(e.all_parameter)?e.all_parameter:[],r=Array.isArray(e.all_condition)?e.all_condition:[];return n.forEach(function(e){var name=String(e.paramname||"");""!==name&&(t[name]=function(e,t){var n={};(Array.isArray(e.conditions)?e.conditions:[]).forEach(function(e){n[String(e.conditionid)]=e});for(var r={},i=0;i<t.length;i++){var a=t[i],id=String(a.conditionid);r[id]=!0;var o=n[id];if(void 0!==o&&Yo(a))return String(void 0===o.value||null===o.value?"":o.value)}return Object.keys(n).forEach(function(id){r[id]||Wo("missing:"+id,'AppticsRemoteConfig: parameter "'+e.paramname+'" uses condition '+id+", which the server did not send")}),String(void 0===e.defaultvalue||null===e.defaultvalue?"":e.defaultvalue)}(e,r))}),t}const $o="remoteconfig";var Xo={},es=!1;function ts(){var e=Ce.item($o);return e&&"object"==typeof e?e:null}function ns(){var e=ts();Xo=e&&e.rules?Qo(e.rules):{},es=!0}function rs(e,t){Zo();var n={flagtime:t,rules:e,fetchedat:h()};Ce.add($o,n),Xo=Qo(e),es=!0,O.log("AppticsRemoteConfig: "+Object.keys(Xo).length+" parameters, as of "+t)}function is(e,t,key){var n=Array.isArray(e)?e.slice():[];return Array.isArray(t)?(t.forEach(function(e){if(e&&"object"==typeof e){var id=key(e),t=""===id?-1:n.findIndex(function(e){return key(e)===id});t>=0?n[t]=e:n.push(e)}}),n):n}function as(e,t){return function(n){var id=void 0!==n[e]&&null!==n[e]?n[e]:n[t];return null==id?"":String(id)}}function os(){return es||ns(),Xo}var ss={};function cs(conditionname){var name=String(conditionname||"").trim();return Object.prototype.hasOwnProperty.call(ss,name)?ss[name]:[]}const ds="AppticsRemoteConfig",us=[Number(o.REMOTE_CONFIG)];var ls=null,fs=!1,ps=0;const gs=18e4;var ms=0,vs=[],hs=null;function ks(e){if(null!==ls)return!0!==e||fs?ls:ls.catch(function(){return{}}).then(function(){return ks(!0)});if(!1===E._remoteConfigEnabled||!1===E._remoteConfigReported)return O.log(ds+": switched off by the server, not asking"),Promise.resolve({});var t=zt(ds)||wt(ds);if(t)return t;var n,r=ps,i=!0===e||0===ms,a=i?0:(n=ts())&&"number"==typeof n.flagtime?n.flagtime:0,s=h(),c=kt("getupdates",function(e){var t={appversionid:String(E._device_info.appversionid||""),moduleids:us,flagtime:e},n=String(navigator.language||"").slice(0,10);return""!==n&&(t.languagecode=n),JSON.stringify(t)}(a),gt(),ds).then(function(e){var t=e.data||{};if(r!==ps)return t;!function(e){var status=e.tracking_status;if(status&&"object"==typeof status){var t=status[o.REMOTE_CONFIG];if(t&&"object"==typeof t){var n=!1!==t.enabled,r=n!==E._remoteConfigReported;E._remoteConfigReported=n,r&&(O.log(ds+": getupdates reported the module "+(n?"on":"off")+", asking getsdkconfig"),Me.askServerSettings())}}}(t);var n=t.remoteconfig;return ms=h(),i?rs(n&&"object"==typeof n?n:{},s):n&&"object"==typeof n?function(e,t){var n=ts(),r=n&&n.rules&&"object"==typeof n.rules?n.rules:{},i=Object.assign({},r,e);i.all_parameter=is(r.all_parameter,e.all_parameter,as("paramid","paramname")),i.all_condition=is(r.all_condition,e.all_condition,as("conditionid","conditionname")),i.version=is(r.version,e.version,as("versionid","date")),rs(i,t)}(n,s):(!function(e){var t=ts();null!==t&&(t.flagtime=e,t.fetchedat=h(),Ce.add($o,t))}(s),O.log(ds+": no changes since "+a)),t}).then(function(e){return d(),e},function(e){return d(),Promise.reject(e)});function d(){ls===c&&(ls=null,fs=!1),r===ps&&ys()}return fs=i,ls=c}function bs(coldFetch){return ready().then(function(e){if(!e)return!1;var t=!0===coldFetch;if(t){var n=h();(vs=vs.filter(function(e){return n-e<6e4})).length>=3?(O.warn(ds+": coldFetch is limited to 3 a minute; this one is answered from the values this page has"),t=!1):vs.push(n)}return ms>0&&!t||Jt().then(function(){return ks(t)}).then(function(){return!0},function(e){return O.log(ds+": fetch failed: "+String(e)),!1})})}function _s(){E._ready&&null===hs&&null===ls&&ys()}function ys(){null!==hs&&clearTimeout(hs),hs=setTimeout(function(){var e;hs=null,e="every "+gs+" ms",E._ready&&(O.log(ds+": asking for changes ("+e+")"),Jt().then(function(){return ks()}).catch(function(e){O.log(ds+": fetch failed: "+String(e))}).then(_s))},gs)}function zs(){bs().then(_s)}function As(name){var e=os();return Object.prototype.hasOwnProperty.call(e,name)?e[name]:void 0}function ws(value,callback){if("function"==typeof callback)try{callback(value)}catch(e){O.warn("AppticsRemoteConfig: the callback threw",e)}return value}Me.resetRemoteConfig=function(){ps++,ls=null,fs=!1,ms=0,vs=[],null!==hs&&(clearTimeout(hs),hs=null),E._remoteConfigReported=!0,ss={},Ce.add($o,void 0),Xo={},es=!1,Zo()},Me.remoteConfigStarted=zs,Me.remoteConfigUserChanged=ns,E._ready&&zs();const Ss=q("AppticsRemoteConfig.fetchValue",function fetchValue(name,callback,coldFetch){"boolean"==typeof callback&&(coldFetch=callback,callback=void 0);var e="function"==typeof callback?callback:void 0;return bs(!0===coldFetch).then(function(){var value=As(name);return ws(void 0===value?null:value,e)})}),Es=q("AppticsRemoteConfig.fetchValues",function fetchValues(names,callback,coldFetch){var e=[names,callback,coldFetch],t=e.filter(function(e){return"boolean"==typeof e})[0],n=e.filter(function(e){return"function"==typeof e})[0],r=function(names){if(null==names)return null;if(!Array.isArray(names))return O.warn("AppticsRemoteConfig.fetchValues: takes a list of parameter names, as fetchValues(['a', 'b']); answering with every parameter"),null;var e=[];return names.forEach(function(name){var t="string"==typeof name?name.trim():"";""!==t&&-1===e.indexOf(t)&&e.push(t)}),0===e.length?null:e}("boolean"==typeof names||"function"==typeof names?void 0:names),i=n;return bs(!0===t).then(function(){var e=os(),t={};return(null===r?Object.keys(e):r).forEach(function(name){var value=As(name);t[name]=void 0===value?null:value}),ws(t,i)})}),xs=q("AppticsRemoteConfig.setCustomConditionValue",function setCustomConditionValue(conditionname,value){var name="string"==typeof conditionname?conditionname.trim():"";if(""!==name){var e=(null==value?"":String(value)).split(",").map(function(e){return e.trim()}).filter(function(e,t,n){return""!==e&&n.indexOf(e)===t});0===e.length?delete ss[name]:ss[name]=e,be().then(function(e){e&&ns()})}else O.warn("AppticsRemoteConfig.setCustomConditionValue: a condition name is required")}),Ts={fetchValue:function fetchValue(name,callback,coldFetch){return F(Ss,arguments)},fetchValues:function fetchValues(names,callback,coldFetch){return F(Es,arguments)},setCustomConditionValue:function setCustomConditionValue(conditionname,value){F(xs,arguments)}},Ps={filename:"",linenumber:0,fn:""},Cs={filename:"-",linenumber:0,fn:"-"},Os=/debugger eval code/,Is=/^(global|eval) code(@|$)/,Rs=/([^\s(@]+):(\d+):(\d+)\)?$/;const Ns=/^at\s+(?:async\s+)?(.+?)\s+\(/,Ms=/^([^@\s]+)@/;function Ls(e){var t=Ns.exec(e)||Ms.exec(e);return t&&t[1]||""}function Ds(e){var t=e.trim(),n=Rs.exec(t);if(null===n)return null;var url,r,i,a=Number(n[2]);return isFinite(a)?{filename:(url=n[1]||"",r=url.split(/[?#]/)[0]||url,i=r.split("/"),(i[i.length-1]||r).slice(0,100)),linenumber:a,fn:Ls(t)}:null}function qs(e){try{return function(e,t){if(!e)return Ps;for(var n=e.split("\n"),r=0,i=0;i<n.length;i++){var a=(n[i]||"").trim(),o=Ds(a);if(null!==o){if(!(r++<t))return"<anonymous>"===o.filename||Os.test(a)?Cs:o}else if(r===t&&Is.test(a))return Cs}return Ps}((new Error).stack,e+1)}catch(e){return Ps}}const Fs=Object.freeze({VERBOSE:1,DEBUG:2,INFO:3,WARN:4,ERROR:5});function js(e){var name=String(e.fn||"").replace(/<anonymous>/g,"").replace(/[<>]/g,"").trim();return""===name||/^(Object|Module|eval)\.?$/.test(name)?"App":name.slice(0,100)}function Bs(value){if(value instanceof Error){var e=value.name+": "+value.message;return value.stack&&-1!==value.stack.indexOf(value.message)?value.stack:e}if("string"==typeof value)return value;try{var t=JSON.stringify(value);return void 0===t?String(value):t}catch(e){return String(value)}}const Us=q("AppticsLogger",function(e,message,t,n,r){if(ci()){var i=[message].concat(t).map(Bs).join(" ");Ee.add({type:"remotelog",module:js(r),level:e,happenedat:n,exceptionlog:i,attempt:1,filename:r.filename,linenumber:r.linenumber}),ui||(ui=!0,setTimeout(function(){ui=!1,gi()},1e3))}});function Hs(e){return function(message,properties){try{var t=Array.prototype.slice.call(arguments,1);Us(e,message,t,h(),qs(1))}catch(e){}}}const Gs={verbose:Hs(Fs.VERBOSE),debug:Hs(Fs.DEBUG),info:Hs(Fs.INFO),warn:Hs(Fs.WARN),error:Hs(Fs.ERROR)},Vs=Object.assign({},Na,{AppticsFeedback:Bo,AppticsLogger:Gs,AppticsRemoteConfig:Ts});window.apptics=Vs,window.Apptics=Vs.Apptics,window.AppticsEvent=Vs.AppticsEvent,window.AppticsScreen=Vs.AppticsScreen,window.AppticsApi=Vs.AppticsApi,window.AppticsError=Vs.AppticsError,window.AppticsUser=Vs.AppticsUser,window.AppticsSettings=Vs.AppticsSettings,window.AppticsFeedback=Bo,window.AppticsLogger=Gs,window.AppticsRemoteConfig=Ts,window.AppticsHeatmap=Vs.AppticsHeatmap}();
3
3
  //# sourceMappingURL=apptics.min.js.map