From a7753714881e45a06148915da3c72e3a3f0f3cb7 Mon Sep 17 00:00:00 2001 From: Mike Plante Date: Sun, 14 Apr 2024 10:05:06 -0400 Subject: [PATCH 1/2] Add separate setting for sigmoid adjustment factor --- FreeAPS/Resources/json/defaults/preferences.json | 3 ++- FreeAPS/Sources/APS/APSManager.swift | 2 +- FreeAPS/Sources/Models/Preferences.swift | 4 +++- .../PreferencesEditorStateModel.swift | 14 +++++++++++++- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/FreeAPS/Resources/json/defaults/preferences.json b/FreeAPS/Resources/json/defaults/preferences.json index 6edb81100..3453e2b5e 100644 --- a/FreeAPS/Resources/json/defaults/preferences.json +++ b/FreeAPS/Resources/json/defaults/preferences.json @@ -39,7 +39,8 @@ "noisyCGMTargetMultiplier" : 1.3, "suspend_zeros_iob" : false, "maxDelta_bg_threshold" : 0.2, - "adjustmentFactor" : 0.5, + "adjustmentFactor" : 0.8, + "adjustmentFactorSigmoid" : 0.5, "sigmoid" : false, "enableDynamicCR" : false, "useNewFormula" : false, diff --git a/FreeAPS/Sources/APS/APSManager.swift b/FreeAPS/Sources/APS/APSManager.swift index 3747b3751..ee91be419 100644 --- a/FreeAPS/Sources/APS/APSManager.swift +++ b/FreeAPS/Sources/APS/APSManager.swift @@ -939,7 +939,7 @@ final class BaseAPSManager: APSManager, Injectable { } else if preferences.useNewFormula, !preferences.sigmoid,!preferences.enableDynamicCR { algo_ = "Dynamic ISF: Logarithmic" } - let af = preferences.adjustmentFactor + let af = preferences.sigmoid ? preferences.adjustmentFactorSigmoid : preferences.adjustmentFactor let insulin_type = preferences.curve let buildDate = Bundle.main.buildDate let version = Bundle.main.releaseVersionNumber diff --git a/FreeAPS/Sources/Models/Preferences.swift b/FreeAPS/Sources/Models/Preferences.swift index ee4057a3d..1066ecf6d 100644 --- a/FreeAPS/Sources/Models/Preferences.swift +++ b/FreeAPS/Sources/Models/Preferences.swift @@ -42,7 +42,8 @@ struct Preferences: JSON { var suspendZerosIOB: Bool = false var timestamp: Date? var maxDeltaBGthreshold: Decimal = 0.2 - var adjustmentFactor: Decimal = 0.5 + var adjustmentFactor: Decimal = 0.8 + var adjustmentFactorSigmoid: Decimal = 0.5 var sigmoid: Bool = false var enableDynamicCR: Bool = false var useNewFormula: Bool = false @@ -98,6 +99,7 @@ extension Preferences { case suspendZerosIOB = "suspend_zeros_iob" case maxDeltaBGthreshold = "maxDelta_bg_threshold" case adjustmentFactor + case adjustmentFactorSigmoid case sigmoid case enableDynamicCR case useNewFormula diff --git a/FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorStateModel.swift b/FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorStateModel.swift index bdd1c8632..20ccd5da7 100644 --- a/FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorStateModel.swift +++ b/FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorStateModel.swift @@ -108,7 +108,7 @@ extension PreferencesEditor { displayName: NSLocalizedString("Adjustment Factor", comment: "Adjust Dynamic ISF constant"), type: .decimal(keypath: \.adjustmentFactor), infoText: NSLocalizedString( - "Adjust Dynamic ratios by a constant. Default is 0.5. The higher the value, the larger the correction of your ISF will be for a high or a low BG. Maximum correction is determined by the Autosens min/max settings. For Sigmoid function an adjustment factor of 0.4 - 0.5 is recommended to begin with. For the logaritmic formula threre is less consensus, but starting with 0.5 - 0.8 is more appropiate for most users", + "Adjust Dynamic ratios by a constant. Default is 0.8. The higher the value, the larger the correction of your ISF will be for a high or a low BG. Maximum correction is determined by the Autosens min/max settings.", comment: "Adjust Dynamic ISF constant" ), settable: self @@ -122,6 +122,18 @@ extension PreferencesEditor { ), settable: self ), + Field( + displayName: NSLocalizedString( + "Sigmoid Adjustment Factor", + comment: "Adjust Dynamic ISF constant for Sigmoid" + ), + type: .decimal(keypath: \.adjustmentFactorSigmoid), + infoText: NSLocalizedString( + "Adjust Dynamic ratios by a constant. Default is 0.5. The higher the value, the larger the correction of your ISF will be for a high or a low BG. Maximum correction is determined by the Autosens min/max settings.", + comment: "Adjust Dynamic ISF constant for Sigmoid" + ), + settable: self + ), Field( displayName: NSLocalizedString( "Weighted Average of TDD. Weight of past 24 hours:", From 9a113684d84dacea5c68b110825c02d78a79feef Mon Sep 17 00:00:00 2001 From: Mike Plante Date: Fri, 26 Apr 2024 17:54:22 +0200 Subject: [PATCH 2/2] Update oref0 with changes for #114: separate setting for sigmoid AF Brings in https://github.com/nightscout/open-iaps-oref/pull/21 oref0 branch: separate_adjustment_factors - git version: 969586d --- .../javascript/bundle/determine-basal.js | 2 +- .../Resources/javascript/bundle/profile.js | 2 +- .../lib/determine-basal/determine-basal.js | 57 ++++++++++--------- open-iaps-oref/lib/profile/index.js | 4 +- oref0_source_version.txt | 3 +- 5 files changed, 37 insertions(+), 31 deletions(-) diff --git a/FreeAPS/Resources/javascript/bundle/determine-basal.js b/FreeAPS/Resources/javascript/bundle/determine-basal.js index b1ca770b8..d65d2fdef 100644 --- a/FreeAPS/Resources/javascript/bundle/determine-basal.js +++ b/FreeAPS/Resources/javascript/bundle/determine-basal.js @@ -1 +1 @@ -var freeaps_determineBasal;(()=>{var e={2982:(e,t,a)=>{var r=a(3531);function n(e,t){t||(t=0);var a=Math.pow(10,t);return Math.round(e*a)/a}function o(e,t){return"mmol/L"===t.out_units?n(.0555*e,1):Math.round(e)}e.exports=function(e,t,a,i,s,l,u,m,d,c,g,h,p,v,B){var f=i.min_bg,b=v.overrideTarget;0!=b&&6!=b&&v.useOverride&&!i.temptargetSet&&(f=b),v.smbIsOff;const M=v.advancedSettings,_=v.isfAndCr,y=v.isf,x=v.cr,S=v.smbIsAlwaysOff;v.start,v.end;const D=v.smbMinutes,w=v.uamMinutes;var G=h.useNewFormula,C=0,T=f,U=new Date;c&&(U=new Date(c));var O=0,R="",A="",I="",F="",P="",j="",E=0,q=0,W=0,k=0,L=0,z=0;const N=v.weightedAverage;var H=1,Z=i.sens,$=i.carb_ratio;v.useOverride&&(H=v.overridePercentage/100,_?(Z/=H,$/=H):(x&&($/=H),y&&(Z/=H)));const J=i.weightPercentage,K=v.average_total_data;function Q(e,t){var a=e.getTime();return new Date(a+36e5*t)}function V(e){var t=i.bolus_increment;.1!=t&&(t=.05);var a=e/t;return a>=1?n(Math.floor(a)*t,5):0}function X(e){function t(e){return e<10&&(e="0"+e),e}return t(e.getHours())+":"+t(e.getMinutes())+":00"}function Y(e,t){var a=new Date("1/1/1999 "+e),r=new Date("1/1/1999 "+t);return(a.getTime()-r.getTime())/36e5}const ee=Math.min(i.autosens_min,i.autosens_max),te=Math.max(i.autosens_min,i.autosens_max);function ae(e,t){var a=0,r=t,n=(e-t)/36e5,o=0,i=n,s=0;do{if(n>0){var l=X(r),u=p[0].rate;for(let e=0;e=(s=Y(p[e+1].start,p[e].start))?o=s:n=(s=24-Y(p[e].start,t))?o=s:nm)if(e+1=(s=Y(d,l))?o=s:n=(s=Y("23:59:59",l))?o=s:n0&&n1)&&(G=!1,console.log("Dynamic ISF disabled due to current autosens settings")),g.length){if(G){let e=g.length-1;var re=new Date(g[e].timestamp),ne=new Date(g[0].timestamp);"TempBasalDuration"==g[0]._type&&(ne=new Date),(O=(ne-re)/36e5)<23.9&&O>21?(L=ae(re,(oe=24-O,ie=re.getTime(),new Date(ie-36e5*oe))),F="24 hours of data is required for an accurate tdd calculation. Currently only "+O.toPrecision(3)+" hours of pump history data are available. Using your pump scheduled basals to fill in the missing hours. Scheduled basals added: "+L.toPrecision(5)+" U. "):O<21?(G=!1,enableDynamicCR=!1):F=""}}else console.log("Pumphistory is empty!"),G=!1,enableDynamicCR=!1;var oe,ie,se;if(G){for(let e=0;e0){E=e,z=g[e].rate;var le=g[e-1]["duration (min)"]/60,ue=le,me=new Date(g[e-1].timestamp),de=new Date(me),ce=0;do{if(e--,0==e){de=new Date;break}if("TempBasal"==g[e]._type||"PumpSuspend"==g[e]._type){de=new Date(g[e].timestamp);break}var ge=e-2;if(ge>=0&&"Rewind"==g[ge]._type){let e=g[ge].timestamp;for(;ge-1>=0&&"Prime"==g[ge-=1]._type;)ce=(g[ge].timestamp-e)/36e5;ce>=le&&(de=new Date(e),ce=0)}}while(e>0);var he=(de-me)/36e5;he0&&(--r,"TempBasal"==g[r]._type)){a=new Date(g[r].timestamp);break}}while(r>0);(a-t)/36e5>0&&(L+=ae(a,t))}for(let e=g.length-1;e>0;e--)if("TempBasalDuration"==g[e]._type){let t=g[e]["duration (min)"]/60,a=new Date(g[e].timestamp);var pe=new Date(a);let r=e;do{if(--r,r>=0&&("TempBasal"==g[r]._type||"PumpSuspend"==g[r]._type)){pe=new Date(g[r].timestamp);break}}while(r>0);0==e&&"TempBasalDuration"==g[0]._type&&(pe=new Date,t=g[e]["duration (min)"]/60),(pe-a)/36e5-t>0&&(L+=ae(pe,Q(a,t)))}var ve={TDD:n(q=k+W+L,5),bolus:n(k,5),temp_basal:n(W,5),scheduled_basal:n(L,5)};O>21?(A=". Bolus insulin: "+k.toPrecision(5)+" U",I=". Temporary basal insulin: "+W.toPrecision(5)+" U",R=". Insulin with scheduled basal rate: "+L.toPrecision(5)+" U",P=F+" TDD past 24h is: "+q.toPrecision(5)+" U"+A+I+R,j=", TDD: "+n(q,2)+" U, "+n(k/q*100,0)+"% Bolus "+n((W+L)/q*100,0)+"% Basal"):j=", TDD: Not enough pumpData (< 21h)"}const Be=e.glucose,fe=h.enableDynamicCR,be=h.adjustmentFactor,Me=f;var _e,ye=!1,xe="",Se=1;K>0&&(Se=N/K),Se>1?(Se=n(Se=Math.min(Se,i.autosens_max),2),i.autosens_max):Se<1&&(Se=n(Se=Math.max(Se,i.autosens_min),2),i.autosens_min),_e=", Basal ratio: "+Se,(i.high_temptarget_raises_sensitivity||i.exercise_mode||v.isEnabled)&&(ye=!0),Me>=118&&ye&&(G=!1,xe="Dynamic ISF temporarily off due to a high temp target/exercising. Current min target: "+Me);var De=", Dynamic ratios log: ",we=", AF: "+be,Ge="BG: "+Be+" mg/dl ("+(.0555*Be).toPrecision(2)+" mmol/l)",Ce="",Te="";const Ue=h.curve,Oe=i.insulinPeakTime,Re=h.useCustomPeakTime;var Ae=55,Ie=65;switch(Ue){case"rapid-acting":Ie=65;break;case"ultra-rapid":Ie=50}Re?(Ae=120-Oe,console.log("Custom insulinpeakTime set to :"+Oe+", insulinFactor: "+Ae)):(Ae=120-Ie,console.log("insulinFactor set to : "+Ae)),se=q,J<1&&N>0&&(q=N,console.log("Using weighted TDD average: "+n(q,2)+" U, instead of past 24 h ("+n(se,2)+" U), weight: "+J),Te=", Weighted TDD: "+n(q,2)+" U");const Fe=h.sigmoid;var Pe="";if(G){var je=Z*be*q*Math.log(Be/Ae+1)/1800;Ce=", Logarithmic formula"}if(G&&Fe){const e=ee,t=te-e,a=.0555*(Be-f);var Ee=Se,qe=te-1;1==te&&(qe=te+.01-1);const r=Math.log10(1/qe-e/qe)/Math.log10(Math.E),n=a*be*Ee+r;je=t/(1+Math.exp(-n))+e,Ce=", Sigmoid function"}var We=$;const ke=n($,1);var Le="",ze="";if(G&&q>0){if(Le=", Dynamic ISF/CR: On/",je>te?(xe=", Dynamic ISF limited by autosens_max setting: "+te+" ("+n(je,2)+"), ",ze=", Autosens/Dynamic Limit: "+te+" ("+n(je,2)+")",je=te):je-.5?"+"+n(e.delta,0):n(e.delta,0);var et=Math.min(e.delta,e.short_avgdelta),tt=Math.min(e.short_avgdelta,e.long_avgdelta),at=Math.max(e.delta,e.short_avgdelta,e.long_avgdelta);if((Xe<=10||38===Xe||Ye>=3)&&(He.reason="CGM is calibrating, in ??? state, or noise is high"),Xe>60&&0==e.delta&&e.short_avgdelta>-1&&e.short_avgdelta<1&&e.long_avgdelta>-1&&e.long_avgdelta<1&&400!=Xe&&"fakecgm"==e.device&&(console.error("CGM data is unchanged ("+o(Xe,i)+"+"+o(e.delta,i)+") for 5m w/ "+o(e.short_avgdelta,i)+" mg/dL ~15m change & "+o(e.long_avgdelta,2)+" mg/dL ~45m change"),console.error("Simulator mode detected ("+e.device+"): continuing anyway")),Ve>12||Ve<-5?He.reason="If current system time "+U+" is correct, then BG data is too old. The last BG data was read "+Ve+"m ago at "+Qe:0===e.short_avgdelta&&0===e.long_avgdelta&&400!=Xe&&(e.last_cal&&e.last_cal<3?He.reason="CGM was just calibrated":He.reason="CGM data is unchanged ("+o(Xe,i)+"+"+o(e.delta,i)+") for 5m w/ "+o(e.short_avgdelta,i)+" mg/dL ~15m change & "+o(e.long_avgdelta,i)+" mg/dL ~45m change"),400!=Xe&&(Xe<=10||38===Xe||Ye>=3||Ve>12||Ve<-5||0===e.short_avgdelta&&0===e.long_avgdelta))return t.rate>=Je?(He.reason+=". Canceling high temp basal of "+t.rate,He.deliverAt=Ze,He.temp="absolute",He.duration=0,He.rate=0,He):0===t.rate&&t.duration>30?(He.reason+=". Shortening "+t.duration+"m long zero temp to 30m. ",He.deliverAt=Ze,He.temp="absolute",He.duration=30,He.rate=0,He):(He.reason+=". Temp "+t.rate+" <= current basal "+Je+"U/hr; doing nothing. ",He);var rt,nt,ot,it,st=i.max_iob;if(void 0!==f&&(nt=f),void 0!==i.max_bg&&(ot=f),void 0!==i.enableSMB_high_bg_target&&(it=i.enableSMB_high_bg_target),void 0===f)return He.error="Error: could not determine target_bg. ",He;rt=f;var lt=i.exercise_mode||i.high_temptarget_raises_sensitivity||v.isEnabled,ut=100,mt=160;if(mt=i.half_basal_exercise_target,v.isEnabled){const e=v.hbt;console.log("Half Basal Target used: "+o(e,i)+" "+i.out_units),mt=e}else console.log("Default Half Basal Target used: "+o(mt,i)+" "+i.out_units);if(lt&&i.temptargetSet&&rt>ut||i.low_temptarget_lowers_sensitivity&&i.temptargetSet&&rt=rt&&sensitivityRatio0&&(process.stderr.write("TDD-adjustment of basals activated, using tdd24h_14d_Ratio "+n(Se,2)+", TDD 24h = "+n(se,2)+"U, Weighted average TDD = "+n(N,2)+"U, (Weight percentage = "+J+"), Total data of TDDs (up to 14 days) average = "+n(K,2)+"U. "),Je!==$e*H?process.stderr.write("Adjusting basal from "+$e*H+" U/h to "+Je+" U/h; "):process.stderr.write("Basal unchanged: "+Je+" U/h; "))),i.temptargetSet);else if(void 0!==s&&s&&(i.sensitivity_raises_target&&s.ratio<1||i.resistance_lowers_target&&s.ratio>1)){nt=n((nt-60)/s.ratio)+60,ot=n((ot-60)/s.ratio)+60;var ct=n((rt-60)/s.ratio)+60;rt===(ct=Math.max(80,ct))?process.stderr.write("target_bg unchanged: "+o(ct,i)+"; "):process.stderr.write("target_bg from "+o(ct,i)+" to "+o(ct,i)+"; "),rt=ct}var gt=o(rt,i);rt!=f&&(gt=0!==b&&6!==b&&b!==rt?o(f,i)+"→"+o(b,i)+"→"+o(rt,i):o(f,i)+"→"+o(rt,i));var ht=200,pt=200,vt=200;if(e.noise>=2){var Bt=Math.max(1.1,i.noisyCGMTargetMultiplier);Math.min(250,i.maxRaw),ht=n(Math.min(200,nt*Bt)),pt=n(Math.min(200,rt*Bt)),vt=n(Math.min(200,ot*Bt)),process.stderr.write("Raising target_bg for noisy / raw CGM data, from "+o(ct,i)+" to "+o(pt,i)+"; "),nt=ht,rt=pt,ot=vt}T=nt-.5*(nt-40),T=Math.min(Math.max(i.threshold_setting,T,60),120),console.error("Threshold set to ${convert_bg(threshold, profile)}");var ft="",bt=(n(Z,1),Z);if(void 0!==s&&s&&((bt=n(bt=Z/sensitivityRatio,1))!==Z?process.stderr.write("ISF from "+o(Z,i)+" to "+o(bt,i)):process.stderr.write("ISF unchanged: "+o(bt,i)),ft+="Autosens ratio: "+n(sensitivityRatio,2)+", ISF: "+o(Z,i)+"→"+o(bt,i)),console.error("CR:"+$),void 0===a)return He.error="Error: iob_data undefined. ",He;var Mt,_t=a;if(a.length,a.length>1&&(a=_t[0]),void 0===a.activity||void 0===a.iob)return He.error="Error: iob_data missing some property. ",He;var yt=((Mt=void 0!==a.lastTemp?n((new Date(U).getTime()-a.lastTemp.date)/6e4):0)+t.duration)%30;if(console.error("currenttemp:"+t.rate+" lastTempAge:"+Mt+"m, tempModulus:"+yt+"m"),He.temp="absolute",He.deliverAt=Ze,m&&t&&a.lastTemp&&t.rate!==a.lastTemp.rate&&Mt>10&&t.duration)return He.reason="Warning: currenttemp rate "+t.rate+" != lastTemp rate "+a.lastTemp.rate+" from pumphistory; canceling temp",u.setTempBasal(0,0,i,He,t);if(t&&a.lastTemp&&t.duration>0){var xt=Mt-a.lastTemp.duration;if(xt>5&&Mt>10)return He.reason="Warning: currenttemp running but lastTemp from pumphistory ended "+xt+"m ago; canceling temp",u.setTempBasal(0,0,i,He,t)}var St=n(-a.activity*bt*5,2),Dt=n(6*(et-St));Dt<0&&(Dt=n(6*(tt-St)))<0&&(Dt=n(6*(e.long_avgdelta-St)));var wt,Gt=(wt=a.iob>0?n(Xe-a.iob*bt):n(Xe-a.iob*Math.min(bt,Z)))+Dt;if(void 0===Gt||isNaN(Gt))return He.error="Error: could not calculate eventualBG. Sensitivity: "+bt+" Deviation: "+Dt,He;var Ct,Tt,Ut=function(e,t,a){return n(a+(e-t)/24,1)}(rt,Gt,St);He={temp:"absolute",bg:Xe,tick:Ke,eventualBG:Gt,insulinReq:0,reservoir:d,deliverAt:Ze,sensitivityRatio,CR:n($,1),TDD:se,insulin:ve,current_target:rt,insulinForManualBolus:C,manualBolusErrorString:0,minDelta:et,expectedDelta:Ut,minGuardBG:Tt,minPredBG:Ct,threshold:o(T,i)};var Ot=[],Rt=[],At=[],It=[];Ot.push(Xe),Rt.push(Xe),It.push(Xe),At.push(Xe);let Ft=!1;S?(console.error("SMBs are always off."),Ft=!1):Ft=function(e,t,a,r,n,i,s,l){if(s.smbIsOff){let e=new Date(l.getHours()),t=s.start,a=s.end;if(t=t&&ea&&(e>=t||e100?(console.error("SMB disabled due to high temptarget of "+n),!1):!0===a.bwFound&&!1===e.A52_risk_enable?(console.error("SMB disabled due to Bolus Wizard activity in the last 6 hours."),!1):400==r?(console.error("Invalid CGM (HIGH). SMBs disabled."),!1):!0===e.enableSMB_always?(a.bwFound?console.error("Warning: SMB enabled within 6h of using Bolus Wizard: be sure to easy bolus 30s before using Bolus Wizard"):console.error("SMB enabled due to enableSMB_always"),!0):!0===e.enableSMB_with_COB&&a.mealCOB?(a.bwCarbs?console.error("Warning: SMB enabled with Bolus Wizard carbs: be sure to easy bolus 30s before using Bolus Wizard"):console.error("SMB enabled for COB of "+a.mealCOB),!0):!0===e.enableSMB_after_carbs&&a.carbs?(a.bwCarbs?console.error("Warning: SMB enabled with Bolus Wizard carbs: be sure to easy bolus 30s before using Bolus Wizard"):console.error("SMB enabled for 6h after carb entry"),!0):!0===e.enableSMB_with_temptarget&&e.temptargetSet&&n<100?(a.bwFound?console.error("Warning: SMB enabled within 6h of using Bolus Wizard: be sure to easy bolus 30s before using Bolus Wizard"):console.error("SMB enabled for temptarget of "+o(n,e)),!0):!0===e.enableSMB_high_bg&&null!==i&&r>=i?(console.error("Checking BG to see if High for SMB enablement."),console.error("Current BG",r," | High BG ",i),a.bwFound?console.error("Warning: High BG SMB enabled within 6h of using Bolus Wizard: be sure to easy bolus 30s before using Bolus Wizard"):console.error("High BG detected. Enabling SMB."),!0):(console.error("SMB disabled (no enableSMB preferences active or no condition satisfied)"),!1):(console.error("SMB disabled (!microBolusAllowed)"),!1)}(i,m,l,Xe,rt,it,v,U);var Pt,jt=i.enableUAM,Et=0;Et=n(et-St,1);var qt=n(et-St,1);csf=bt/$,console.error("profile.sens:"+o(Z,i)+", sens:"+o(bt,i)+", CSF:"+n(csf,1));var Wt=n(30*csf*5/60,1);Et>Wt&&(console.error("Limiting carb impact from "+Et+" to "+Wt+"mg/dL/5m (30g/h)"),Et=Wt);var kt=3;sensitivityRatio&&(kt/=sensitivityRatio);var Lt=kt;if(l.carbs){kt=Math.max(kt,l.mealCOB/20);var zt=n((new Date(U).getTime()-l.lastCarbTime)/6e4),Nt=(l.carbs-l.mealCOB)/l.carbs;Lt=n(Lt=kt+1.5*zt/60,1),console.error("Last carbs "+zt+" minutes ago; remainingCATime:"+Lt+"hours; "+n(100*Nt,1)+"% carbs absorbed")}var Ht=Math.max(0,Et/5*60*Lt/2)/csf,Zt=90,$t=1;i.remainingCarbsCap&&(Zt=Math.min(90,i.remainingCarbsCap)),i.remainingCarbsFraction&&($t=Math.min(1,i.remainingCarbsFraction));var Jt=1-$t,Kt=Math.max(0,l.mealCOB-Ht-l.carbs*Jt),Qt=(Kt=Math.min(Zt,Kt))*csf*5/60/(Lt/2),Vt=n(l.slopeFromMaxDeviation,2),Xt=n(l.slopeFromMinDeviation,2),Yt=Math.min(Vt,-Xt/3);Pt=0===Et?0:Math.min(60*Lt/5/2,Math.max(0,l.mealCOB*csf/Et)),console.error("Carb Impact:"+Et+"mg/dL per 5m; CI Duration:"+n(5*Pt/60*2,1)+"hours; remaining CI ("+Lt/2+"h peak):"+n(Qt,1)+"mg/dL per 5m");var ea,ta,aa,ra,na=999,oa=999,ia=999,sa=999,la=999,ua=999,ma=999,da=Gt,ca=Xe,ga=Xe,ha=0,pa=[],va=[];try{_t.forEach((function(e){var t=n(-e.activity*bt*5,2),a=n(-e.iobWithZeroTemp.activity*bt*5,2),r=wt,o=Et*(1-Math.min(1,Rt.length/12));!0===(G&&!Fe)?(da=Rt[Rt.length-1]+n(-e.activity*(1800/(q*be*Math.log(Math.max(Rt[Rt.length-1],39)/Ae+1)))*5,2)+o,r=It[It.length-1]+n(-e.iobWithZeroTemp.activity*(1800/(q*be*Math.log(Math.max(It[It.length-1],39)/Ae+1)))*5,2),console.log("Dynamic ISF (Logarithmic Formula) )adjusted predictions for IOB and ZT: IOBpredBG: "+n(da,2)+" , ZTpredBG: "+n(r,2))):(da=Rt[Rt.length-1]+t+o,r=It[It.length-1]+a);var i=Math.max(0,Math.max(0,Et)*(1-Ot.length/Math.max(2*Pt,1))),s=Math.min(Ot.length,12*Lt-Ot.length),l=Math.max(0,s/(Lt/2*12)*Qt);pa.push(n(l,0)),va.push(n(i,0)),COBpredBG=Ot[Ot.length-1]+t+Math.min(0,o)+i+l;var u=Math.max(0,qt+At.length*Yt),m=Math.max(0,qt*(1-At.length/Math.max(36,1))),d=Math.min(u,m);d>0&&(ha=n(5*(At.length+1)/60,1)),!0===(G&&!Fe)?(UAMpredBG=At[At.length-1]+n(-e.activity*(1800/(q*be*Math.log(Math.max(At[At.length-1],39)/Ae+1)))*5,2)+Math.min(0,o)+d,console.log("Dynamic ISF (Logarithmic Formula) adjusted prediction for UAM: UAMpredBG: "+n(UAMpredBG,2))):UAMpredBG=At[At.length-1]+t+Math.min(0,o)+d,Rt.length<48&&Rt.push(da),Ot.length<48&&Ot.push(COBpredBG),At.length<48&&At.push(UAMpredBG),It.length<48&&It.push(r),COBpredBG18&&daca&&(ca=da),(Pt||Qt>0)&&Ot.length>18&&COBpredBG0)&&COBpredBG>ca&&(ga=COBpredBG),jt&&At.length>12&&UAMpredBGca&&UAMpredBG}))}catch(e){console.error("Problem with iobArray. Optional feature Advanced Meal Assist disabled")}l.mealCOB&&(console.error("predCIs (mg/dL/5m):"+va.join(" ")),console.error("remainingCIs: "+pa.join(" "))),He.predBGs={},Rt.forEach((function(e,t,a){a[t]=n(Math.min(401,Math.max(39,e)))}));for(var Ba=Rt.length-1;Ba>12&&Rt[Ba-1]===Rt[Ba];Ba--)Rt.pop();for(He.predBGs.IOB=Rt,ta=n(Rt[Rt.length-1]),It.forEach((function(e,t,a){a[t]=n(Math.min(401,Math.max(39,e)))})),Ba=It.length-1;Ba>6&&!(It[Ba-1]>=It[Ba]||It[Ba]<=rt);Ba--)It.pop();if(He.predBGs.ZT=It,n(It[It.length-1]),l.mealCOB>0&&(Et>0||Qt>0)){for(Ot.forEach((function(e,t,a){a[t]=n(Math.min(1500,Math.max(39,e)))})),Ba=Ot.length-1;Ba>12&&Ot[Ba-1]===Ot[Ba];Ba--)Ot.pop();He.predBGs.COB=Ot,aa=n(Ot[Ot.length-1]),Gt=Math.max(Gt,n(Ot[Ot.length-1])),console.error("COBpredBG: "+n(Ot[Ot.length-1]))}if(Et>0||Qt>0){if(jt){for(At.forEach((function(e,t,a){a[t]=n(Math.min(401,Math.max(39,e)))})),Ba=At.length-1;Ba>12&&At[Ba-1]===At[Ba];Ba--)At.pop();He.predBGs.UAM=At,ra=n(At[At.length-1]),At[At.length-1]&&(Gt=Math.max(Gt,n(At[At.length-1])))}He.eventualBG=Gt}console.error("UAM Impact:"+qt+"mg/dL per 5m; UAM Duration:"+ha+"hours"),na=Math.max(39,na),oa=Math.max(39,oa),ia=Math.max(39,ia),Ct=n(na);var fa=l.mealCOB/l.carbs;ea=n(ia<999&&oa<999?(1-fa)*UAMpredBG+fa*COBpredBG:oa<999?(da+COBpredBG)/2:ia<999?(da+UAMpredBG)/2:da),ma>ea&&(ea=ma),Tt=n(Tt=Pt||Qt>0?jt?fa*sa+(1-fa)*la:sa:jt?la:ua);var ba=ia;if(maia&&(ba=(ia+ma)/2);if(ba=n(ba),l.carbs)if(!jt&&oa<999)Ct=n(Math.max(na,oa));else if(oa<999){var _a=fa*oa+(1-fa)*ba;Ct=n(Math.max(na,oa,_a))}else Ct=jt?ba:Tt;else jt&&(Ct=n(Math.max(na,ba)));Ct=Math.min(Ct,ea),process.stderr.write("minPredBG: "+Ct+" minIOBPredBG: "+na+" minZTGuardBG: "+ma),oa<999&&process.stderr.write(" minCOBPredBG: "+oa),ia<999&&process.stderr.write(" minUAMPredBG: "+ia),console.error(" avgPredBG:"+ea+" COB/Carbs:"+l.mealCOB+"/"+l.carbs),ga>Xe&&(Ct=Math.min(Ct,ga)),He.COB=l.mealCOB,He.IOB=a.iob,He.BGI=o(St,i),He.deviation=o(Dt,i),He.ISF=o(bt,i),He.CR=n($,1),He.target_bg=o(rt,i),He.TDD=n(se,2),He.current_target=n(rt,0);var ya=He.CR;ke!=He.CR&&(ya=ke+"→"+He.CR),He.reason=ft+", COB: "+He.COB+", Dev: "+He.deviation+", BGI: "+He.BGI+", CR: "+ya+", Target: "+gt+", minPredBG "+o(Ct,i)+", minGuardBG "+o(Tt,i)+", IOBpredBG "+o(ta,i),aa>0&&(He.reason+=", COBpredBG "+o(aa,i)),ra>0&&(He.reason+=", UAMpredBG "+o(ra,i)),He.reason+=j,He.reason+="; ";var xa=wt;xa<40&&(xa=Math.min(Tt,xa));var Sa,Da=T-xa,wa=240,Ga=240;if(l.mealCOB>0&&(Et>0||Qt>0)){for(Ba=0;BaSa*Xe&&(console.error("maxDelta "+o(at,i)+" > "+100*Sa+"% of BG "+o(Xe,i)+" - disabling SMB"),He.reason+="maxDelta "+o(at,i)+" > "+100*Sa+"% of BG "+o(Xe,i)+" - SMB disabled!, ",Ft=!1),console.error("BG projected to remain above "+o(nt,i)+" for "+wa+"minutes"),(Ga<240||wa<60)&&console.error("BG projected to remain above "+o(T,i)+" for "+Ga+"minutes");var Ca=Ga,Ta=i.current_basal*H*bt*Ca/60,Ua=Math.max(0,l.mealCOB-.25*l.carbs),Oa=(Da-Ta)/csf-Ua;Ta=n(Ta),Oa=n(Oa),console.error("naive_eventualBG:",wt,"bgUndershoot:",Da,"zeroTempDuration:",Ca,"zeroTempEffect:",Ta,"carbsReq:",Oa),"Could not parse clock data"==l.reason?console.error("carbsReq unknown: Could not parse clock data"):Oa>=i.carbsReqThreshold&&Ga<=45&&(He.carbsReq=Oa,He.reason+=Oa+" add'l carbs req w/in "+Ga+"m; ");var Ra=0;if(Xe0&&et>Ut)He.reason+="IOB "+a.iob+" < "+n(-i.current_basal*H*20/60,2),He.reason+=" and minDelta "+o(et,i)+" > expectedDelta "+o(Ut,i)+"; ";else if(Xe=55)return He.reason+="; Canceling temp at "+He.deliverAt.getMinutes()+"m past the hour. ",u.setTempBasal(0,0,i,He,t);var Aa=0,Ia=Je,Fa=0;if(GtUt&&et>0&&!Oa)return wt<40?(He.reason+=", naive_eventualBG < 40. ",u.setTempBasal(0,30,i,He,t)):(e.delta>et?He.reason+=", but Delta "+o(Ke,i)+" > expectedDelta "+o(Ut,i):He.reason+=", but Min. Delta "+et.toFixed(2)+" > Exp. Delta "+o(Ut,i),t.duration>15&&r(Je,i)===r(t.rate,i)?(He.reason+=", temp "+t.rate+" ~ req "+Je+"U/hr. ",He):(He.reason+="; setting current basal of "+Je+" as temp. ",u.setTempBasal(Je,30,i,He,t)));Aa=n(Aa=2*Math.min(0,(Gt-rt)/bt),2);var Pa=Math.min(0,(wt-rt)/bt);Pa=n(Pa,2),et<0&&et>Ut&&(Aa=n(Aa*(et/Ut),2)),Ia=r(Ia=Je+2*Aa,i),Fa=t.duration*(t.rate-Je)/60;var ja=Math.min(Aa,Pa);if(console.log("naiveInsulinReq:"+Pa),Fa5&&Ia>=.8*t.rate)return He.reason+=", temp "+t.rate+" ~< req "+Ia+"U/hr. ",He;if(Ia<=0){if((Ra=n((Da=rt-wt)/bt*60/i.current_basal*H))<0?Ra=0:(Ra=30*n(Ra/30),Ra=Math.min(120,Math.max(0,Ra))),Ra>0)return He.reason+=", setting "+Ra+"m zero temp. ",u.setTempBasal(Ia,Ra,i,He,t)}else He.reason+=", setting "+Ia+"U/hr. ";return u.setTempBasal(Ia,30,i,He,t)}if(et=2||Ut+-1*et>=2)&&(He.manualBolusErrorString=et>=0&&Ut>0?3:et<0&&Ut<=0||et<0&&Ut>=0?4:5),He.insulinForManualBolus=n((He.eventualBG-He.target_bg)/bt,2),!m||!Ft))return e.delta "+o(nt,i)+" but Delta "+o(Ke,i)+" < Exp. Delta "+o(Ut,i):He.reason+="Eventual BG "+o(Gt,i)+" > "+o(nt,i)+" but Min. Delta "+et.toFixed(2)+" < Exp. Delta "+o(Ut,i),t.duration>15&&r(Je,i)===r(t.rate,i)?(He.reason+=", temp "+t.rate+" ~ req "+Je+"U/hr. ",He):(He.reason+="; setting current basal of "+Je+" as temp. ",u.setTempBasal(Je,30,i,He,t));if(Math.min(Gt,Ct)nt&&(He.manualBolusErrorString=6,He.insulinForManualBolus=n((He.eventualBG-He.target_bg)/bt,2),He.minPredBG=Ct),!m||!Ft))return He.reason+=o(Gt,i)+"-"+o(Ct,i)+" in range: no temp required",t.duration>15&&r(Je,i)===r(t.rate,i)?(He.reason+=", temp "+t.rate+" ~ req "+Je+"U/hr. ",He):(He.reason+="; setting current basal of "+Je+" as temp. ",u.setTempBasal(Je,30,i,He,t));if(Gt>=ot&&(He.reason+="Eventual BG "+o(Gt,i)+" >= "+o(ot,i)+", ",Gt>ot&&(He.insulinForManualBolus=n((Gt-rt)/bt,2))),a.iob>st)return He.reason+="IOB "+n(a.iob,2)+" > max_iob "+st,t.duration>15&&r(Je,i)===r(t.rate,i)?(He.reason+=", temp "+t.rate+" ~ req "+Je+"U/hr. ",He):(He.reason+="; setting current basal of "+Je+" as temp. ",u.setTempBasal(Je,30,i,He,t));Aa=n((Math.min(Ct,Gt)-rt)/bt,2),C=n((Gt-rt)/bt,2),Aa>st-a.iob?(console.error("SMB limited by maxIOB: "+st-a.iob+" (. insulinReq: "+Aa+" U)"),He.reason+="max_iob "+st+", ",Aa=st-a.iob):console.error("SMB not limited by maxIOB ( insulinReq: "+Aa+" U)."),C>st-a.iob?(console.error("Ev. Bolus limited by maxIOB: "+st-a.iob+" (. insulinForManualBolus: "+C+" U)"),He.reason+="max_iob "+st+", "):console.error("Ev. Bolus would not be limited by maxIOB ( insulinForManualBolus: "+C+" U)."),Ia=r(Ia=Je+2*Aa,i),Aa=n(Aa,3),He.insulinReq=Aa;var Ea=n((new Date(U).getTime()-a.lastBolusTime)/6e4,1);if(m&&Ft&&Xe>T){var qa=30;void 0!==i.maxSMBBasalMinutes&&(qa=i.maxSMBBasalMinutes);var Wa=30;void 0!==i.maxUAMSMBBasalMinutes&&(Wa=i.maxUAMSMBBasalMinutes),v.useOverride&&M&&D!==qa&&(console.error("SMB Max Minutes - setting overriden from "+qa+" to "+D),qa=D),v.useOverride&&M&&w!==Wa&&(console.error("UAM Max Minutes - setting overriden from "+Wa+" to "+w),Wa=w);var ka=n(l.mealCOB/$,3),La=0;void 0===qa?(La=n(i.current_basal*H*30/60,1),console.error("smbMinutesSetting undefined: defaulting to 30m"),Aa>La&&console.error("SMB limited by maxBolus: "+La+" ( "+Aa+" U)")):a.iob>ka&&a.iob>0?(console.error("IOB"+a.iob+"> COB"+l.mealCOB+"; mealInsulinReq ="+ka),Wa?(console.error("maxUAMSMBBasalMinutes: "+Wa+", profile.current_basal: "+i.current_basal*H),La=n(i.current_basal*H*Wa/60,1)):(console.error("maxUAMSMBBasalMinutes undefined: defaulting to 30m"),La=n(i.current_basal*H*30/60,1)),Aa>La?console.error("SMB limited by maxUAMSMBBasalMinutes [ "+Wa+"m ]: "+La+"U ( "+Aa+"U )"):console.error("SMB is not limited by maxUAMSMBBasalMinutes. ( insulinReq: "+Aa+"U )")):(console.error(".maxSMBBasalMinutes: "+qa+", profile.current_basal: "+i.current_basal*H),Aa>(La=n(i.current_basal*H*qa/60,1))?console.error("SMB limited by maxSMBBasalMinutes: "+qa+"m ]: "+La+"U ( insulinReq: "+Aa+"U )"):console.error("SMB is not limited by maxSMBBasalMinutes. ( insulinReq: "+Aa+"U )"));var za=i.bolus_increment,Na=1/za,Ha=Math.min(i.smb_delivery_ratio,1);.5!=Ha&&console.error("SMB Delivery Ratio changed from default 0.5 to "+n(Ha,2));var Za=Math.min(Aa*Ha,La);Za=Math.floor(Za*Na)/Na,Ra=n((rt-(wt+na)/2)/bt*60/i.current_basal*H),Aa>0&&Za=30?(Ra=30*n(Ra/30),Ra=Math.min(60,Math.max(0,Ra))):($a=n(Je*Ra/30,2),Ra=30),He.reason+=" insulinReq "+Aa,Za>=La&&(He.reason+="; maxBolus "+La),Ra>0&&(He.reason+="; setting "+Ra+"m low temp of "+$a+"U/h"),He.reason+=". ";var Ja=3;i.SMBInterval&&(Ja=Math.min(10,Math.max(1,i.SMBInterval)));var Ka=n(Ja-Ea,0),Qa=n(60*(Ja-Ea),0)%60;if(console.error("naive_eventualBG "+wt+","+Ra+"m "+$a+"U/h temp needed; last bolus "+Ea+"m ago; maxBolus: "+La),Ea>Ja?Za>0&&(He.units=Za,He.reason+="Microbolusing "+Za+"U. "):He.reason+="Waiting "+Ka+"m "+Qa+"s to microbolus again. ",Ra>0)return He.rate=$a,He.duration=Ra,He}var Va=u.getMaxSafeBasal(i);return 400==Xe?u.setTempBasal(i.current_basal,30,i,He,t):(Ia>Va&&(He.reason+="adj. req. rate: "+Ia+" to maxSafeBasal: "+n(Va,2)+", ",Ia=r(Va,i)),(Fa=t.duration*(t.rate-Je)/60)>=2*Aa?(He.reason+=t.duration+"m@"+t.rate.toFixed(2)+" > 2 * insulinReq. Setting temp basal of "+Ia+"U/hr. ",u.setTempBasal(Ia,30,i,He,t)):void 0===t.duration||0===t.duration?(He.reason+="no temp, setting "+Ia+"U/hr. ",u.setTempBasal(Ia,30,i,He,t)):t.duration>5&&r(Ia,i)<=r(t.rate,i)?(He.reason+="temp "+t.rate+" >~ req "+Ia+"U/hr. ",He):(He.reason+="temp "+t.rate+"<"+Ia+"U/hr. ",u.setTempBasal(Ia,30,i,He,t)))}},3531:(e,t,a)=>{var r=a(2296);e.exports=function(e,t){var a=20;return void 0!==t&&"string"==typeof t.model&&(r(t.model,"54")||r(t.model,"23"))&&(a=40),e<1?Math.round(e*a)/a:e<10?Math.round(20*e)/20:Math.round(10*e)/10}},1873:(e,t,a)=>{var r=a(9325).Symbol;e.exports=r},4932:e=>{e.exports=function(e,t){for(var a=-1,r=null==e?0:e.length,n=Array(r);++a{e.exports=function(e,t,a){return e==e&&(void 0!==a&&(e=e<=a?e:a),void 0!==t&&(e=e>=t?e:t)),e}},2552:(e,t,a)=>{var r=a(1873),n=a(659),o=a(9350),i=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?n(e):o(e)}},7556:(e,t,a)=>{var r=a(1873),n=a(4932),o=a(6449),i=a(4394),s=r?r.prototype:void 0,l=s?s.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(o(t))return n(t,e)+"";if(i(t))return l?l.call(t):"";var a=t+"";return"0"==a&&1/t==-1/0?"-0":a}},4128:(e,t,a)=>{var r=a(1800),n=/^\s+/;e.exports=function(e){return e?e.slice(0,r(e)+1).replace(n,""):e}},4840:(e,t,a)=>{var r="object"==typeof a.g&&a.g&&a.g.Object===Object&&a.g;e.exports=r},659:(e,t,a)=>{var r=a(1873),n=Object.prototype,o=n.hasOwnProperty,i=n.toString,s=r?r.toStringTag:void 0;e.exports=function(e){var t=o.call(e,s),a=e[s];try{e[s]=void 0;var r=!0}catch(e){}var n=i.call(e);return r&&(t?e[s]=a:delete e[s]),n}},9350:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},9325:(e,t,a)=>{var r=a(4840),n="object"==typeof self&&self&&self.Object===Object&&self,o=r||n||Function("return this")();e.exports=o},1800:e=>{var t=/\s/;e.exports=function(e){for(var a=e.length;a--&&t.test(e.charAt(a)););return a}},2296:(e,t,a)=>{var r=a(7133),n=a(7556),o=a(1489),i=a(3222);e.exports=function(e,t,a){e=i(e),t=n(t);var s=e.length,l=a=void 0===a?s:r(o(a),0,s);return(a-=t.length)>=0&&e.slice(a,l)==t}},6449:e=>{var t=Array.isArray;e.exports=t},3805:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},346:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},4394:(e,t,a)=>{var r=a(2552),n=a(346);e.exports=function(e){return"symbol"==typeof e||n(e)&&"[object Symbol]"==r(e)}},7400:(e,t,a)=>{var r=a(6993),n=1/0;e.exports=function(e){return e?(e=r(e))===n||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},1489:(e,t,a)=>{var r=a(7400);e.exports=function(e){var t=r(e),a=t%1;return t==t?a?t-a:t:0}},6993:(e,t,a)=>{var r=a(4128),n=a(3805),o=a(4394),i=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,l=/^0o[0-7]+$/i,u=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(o(e))return NaN;if(n(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=n(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=r(e);var a=s.test(e);return a||l.test(e)?u(e.slice(2),a?2:8):i.test(e)?NaN:+e}},3222:(e,t,a)=>{var r=a(7556);e.exports=function(e){return null==e?"":r(e)}}},t={};function a(r){var n=t[r];if(void 0!==n)return n.exports;var o=t[r]={exports:{}};return e[r](o,o.exports,a),o.exports}a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();var r=a(2982);freeaps_determineBasal=r})(); \ No newline at end of file +var freeaps_determineBasal;(()=>{var e={2982:(e,t,a)=>{var r=a(3531);function n(e,t){t||(t=0);var a=Math.pow(10,t);return Math.round(e*a)/a}function o(e,t){return"mmol/L"===t.out_units?n(.0555*e,1):Math.round(e)}e.exports=function(e,t,a,i,s,l,u,m,d,c,g,h,p,v,B){var f=i.min_bg,b=v.overrideTarget;0!=b&&6!=b&&v.useOverride&&!i.temptargetSet&&(f=b),v.smbIsOff;const M=v.advancedSettings,_=v.isfAndCr,y=v.isf,x=v.cr,S=v.smbIsAlwaysOff;v.start,v.end;const D=v.smbMinutes,w=v.uamMinutes;var G=h.useNewFormula,C=0,T=f,U=new Date;c&&(U=new Date(c));var O=0,R="",A="",I="",F="",j="",P="",E=0,q=0,W=0,k=0,L=0,z=0;const N=v.weightedAverage;var H=1,Z=i.sens,$=i.carb_ratio;v.useOverride&&(H=v.overridePercentage/100,_?(Z/=H,$/=H):(x&&($/=H),y&&(Z/=H)));const J=i.weightPercentage,K=v.average_total_data;function Q(e,t){var a=e.getTime();return new Date(a+36e5*t)}function V(e){var t=i.bolus_increment;.1!=t&&(t=.05);var a=e/t;return a>=1?n(Math.floor(a)*t,5):0}function X(e){function t(e){return e<10&&(e="0"+e),e}return t(e.getHours())+":"+t(e.getMinutes())+":00"}function Y(e,t){var a=new Date("1/1/1999 "+e),r=new Date("1/1/1999 "+t);return(a.getTime()-r.getTime())/36e5}const ee=Math.min(i.autosens_min,i.autosens_max),te=Math.max(i.autosens_min,i.autosens_max);function ae(e,t){var a=0,r=t,n=(e-t)/36e5,o=0,i=n,s=0;do{if(n>0){var l=X(r),u=p[0].rate;for(let e=0;e=(s=Y(p[e+1].start,p[e].start))?o=s:n=(s=24-Y(p[e].start,t))?o=s:nm)if(e+1=(s=Y(d,l))?o=s:n=(s=Y("23:59:59",l))?o=s:n0&&n1)&&(G=!1,console.log("Dynamic ISF disabled due to current autosens settings")),g.length){if(G){let e=g.length-1;var re=new Date(g[e].timestamp),ne=new Date(g[0].timestamp);"TempBasalDuration"==g[0]._type&&(ne=new Date),(O=(ne-re)/36e5)<23.9&&O>21?(L=ae(re,(oe=24-O,ie=re.getTime(),new Date(ie-36e5*oe))),F="24 hours of data is required for an accurate tdd calculation. Currently only "+O.toPrecision(3)+" hours of pump history data are available. Using your pump scheduled basals to fill in the missing hours. Scheduled basals added: "+L.toPrecision(5)+" U. "):O<21?(G=!1,enableDynamicCR=!1):F=""}}else console.log("Pumphistory is empty!"),G=!1,enableDynamicCR=!1;var oe,ie,se;if(G){for(let e=0;e0){E=e,z=g[e].rate;var le=g[e-1]["duration (min)"]/60,ue=le,me=new Date(g[e-1].timestamp),de=new Date(me),ce=0;do{if(e--,0==e){de=new Date;break}if("TempBasal"==g[e]._type||"PumpSuspend"==g[e]._type){de=new Date(g[e].timestamp);break}var ge=e-2;if(ge>=0&&"Rewind"==g[ge]._type){let e=g[ge].timestamp;for(;ge-1>=0&&"Prime"==g[ge-=1]._type;)ce=(g[ge].timestamp-e)/36e5;ce>=le&&(de=new Date(e),ce=0)}}while(e>0);var he=(de-me)/36e5;he0&&(--r,"TempBasal"==g[r]._type)){a=new Date(g[r].timestamp);break}}while(r>0);(a-t)/36e5>0&&(L+=ae(a,t))}for(let e=g.length-1;e>0;e--)if("TempBasalDuration"==g[e]._type){let t=g[e]["duration (min)"]/60,a=new Date(g[e].timestamp);var pe=new Date(a);let r=e;do{if(--r,r>=0&&("TempBasal"==g[r]._type||"PumpSuspend"==g[r]._type)){pe=new Date(g[r].timestamp);break}}while(r>0);0==e&&"TempBasalDuration"==g[0]._type&&(pe=new Date,t=g[e]["duration (min)"]/60),(pe-a)/36e5-t>0&&(L+=ae(pe,Q(a,t)))}var ve={TDD:n(q=k+W+L,5),bolus:n(k,5),temp_basal:n(W,5),scheduled_basal:n(L,5)};O>21?(A=". Bolus insulin: "+k.toPrecision(5)+" U",I=". Temporary basal insulin: "+W.toPrecision(5)+" U",R=". Insulin with scheduled basal rate: "+L.toPrecision(5)+" U",j=F+" TDD past 24h is: "+q.toPrecision(5)+" U"+A+I+R,P=", TDD: "+n(q,2)+" U, "+n(k/q*100,0)+"% Bolus "+n((W+L)/q*100,0)+"% Basal"):P=", TDD: Not enough pumpData (< 21h)"}const Be=e.glucose,fe=h.enableDynamicCR,be=h.adjustmentFactor,Me=h.adjustmentFactorSigmoid,_e=h.sigmoid,ye=f;var xe,Se=!1,De="",we=1;K>0&&(we=N/K),we>1?(we=n(we=Math.min(we,i.autosens_max),2),i.autosens_max):we<1&&(we=n(we=Math.max(we,i.autosens_min),2),i.autosens_min),xe=", Basal ratio: "+we,(i.high_temptarget_raises_sensitivity||i.exercise_mode||v.isEnabled)&&(Se=!0),ye>=118&&Se&&(G=!1,De="Dynamic ISF temporarily off due to a high temp target/exercising. Current min target: "+ye);var Ge=", Dynamic ratios log: ",Ce=", AF: "+(_e?Me:be),Te="BG: "+Be+" mg/dl ("+(.0555*Be).toPrecision(2)+" mmol/l)",Ue="",Oe="";const Re=h.curve,Ae=i.insulinPeakTime,Ie=h.useCustomPeakTime;var Fe=55,je=65;switch(Re){case"rapid-acting":je=65;break;case"ultra-rapid":je=50}Ie?(Fe=120-Ae,console.log("Custom insulinpeakTime set to :"+Ae+", insulinFactor: "+Fe)):(Fe=120-je,console.log("insulinFactor set to : "+Fe)),se=q,J<1&&N>0&&(q=N,console.log("Using weighted TDD average: "+n(q,2)+" U, instead of past 24 h ("+n(se,2)+" U), weight: "+J),Oe=", Weighted TDD: "+n(q,2)+" U");var Pe="";if(G)if(_e){const e=ee,t=te-e;var Ee=te-1;1==te&&(Ee=te+.01-1);const a=.0555*(Be-f)*Me*we+Math.log10(1/Ee-e/Ee)/Math.log10(Math.E);qe=t/(1+Math.exp(-a))+e,Ue=", Sigmoid function"}else{var qe=Z*be*q*Math.log(Be/Fe+1)/1800;Ue=", Logarithmic formula"}var We=$;const ke=n($,1);var Le="",ze="";if(G&&q>0){if(Le=", Dynamic ISF/CR: On/",qe>te?(De=", Dynamic ISF limited by autosens_max setting: "+te+" ("+n(qe,2)+"), ",ze=", Autosens/Dynamic Limit: "+te+" ("+n(qe,2)+")",qe=te):qe-.5?"+"+n(e.delta,0):n(e.delta,0);var et=Math.min(e.delta,e.short_avgdelta),tt=Math.min(e.short_avgdelta,e.long_avgdelta),at=Math.max(e.delta,e.short_avgdelta,e.long_avgdelta);if((Xe<=10||38===Xe||Ye>=3)&&(He.reason="CGM is calibrating, in ??? state, or noise is high"),Xe>60&&0==e.delta&&e.short_avgdelta>-1&&e.short_avgdelta<1&&e.long_avgdelta>-1&&e.long_avgdelta<1&&400!=Xe&&"fakecgm"==e.device&&(console.error("CGM data is unchanged ("+o(Xe,i)+"+"+o(e.delta,i)+") for 5m w/ "+o(e.short_avgdelta,i)+" mg/dL ~15m change & "+o(e.long_avgdelta,2)+" mg/dL ~45m change"),console.error("Simulator mode detected ("+e.device+"): continuing anyway")),Ve>12||Ve<-5?He.reason="If current system time "+U+" is correct, then BG data is too old. The last BG data was read "+Ve+"m ago at "+Qe:0===e.short_avgdelta&&0===e.long_avgdelta&&400!=Xe&&(e.last_cal&&e.last_cal<3?He.reason="CGM was just calibrated":He.reason="CGM data is unchanged ("+o(Xe,i)+"+"+o(e.delta,i)+") for 5m w/ "+o(e.short_avgdelta,i)+" mg/dL ~15m change & "+o(e.long_avgdelta,i)+" mg/dL ~45m change"),400!=Xe&&(Xe<=10||38===Xe||Ye>=3||Ve>12||Ve<-5||0===e.short_avgdelta&&0===e.long_avgdelta))return t.rate>=Je?(He.reason+=". Canceling high temp basal of "+t.rate,He.deliverAt=Ze,He.temp="absolute",He.duration=0,He.rate=0,He):0===t.rate&&t.duration>30?(He.reason+=". Shortening "+t.duration+"m long zero temp to 30m. ",He.deliverAt=Ze,He.temp="absolute",He.duration=30,He.rate=0,He):(He.reason+=". Temp "+t.rate+" <= current basal "+Je+"U/hr; doing nothing. ",He);var rt,nt,ot,it,st=i.max_iob;if(void 0!==f&&(nt=f),void 0!==i.max_bg&&(ot=f),void 0!==i.enableSMB_high_bg_target&&(it=i.enableSMB_high_bg_target),void 0===f)return He.error="Error: could not determine target_bg. ",He;rt=f;var lt=i.exercise_mode||i.high_temptarget_raises_sensitivity||v.isEnabled,ut=100,mt=160;if(mt=i.half_basal_exercise_target,v.isEnabled){const e=v.hbt;console.log("Half Basal Target used: "+o(e,i)+" "+i.out_units),mt=e}else console.log("Default Half Basal Target used: "+o(mt,i)+" "+i.out_units);if(lt&&i.temptargetSet&&rt>ut||i.low_temptarget_lowers_sensitivity&&i.temptargetSet&&rt=rt&&sensitivityRatio0&&(process.stderr.write("TDD-adjustment of basals activated, using tdd24h_14d_Ratio "+n(we,2)+", TDD 24h = "+n(se,2)+"U, Weighted average TDD = "+n(N,2)+"U, (Weight percentage = "+J+"), Total data of TDDs (up to 14 days) average = "+n(K,2)+"U. "),Je!==$e*H?process.stderr.write("Adjusting basal from "+$e*H+" U/h to "+Je+" U/h; "):process.stderr.write("Basal unchanged: "+Je+" U/h; "))),i.temptargetSet);else if(void 0!==s&&s&&(i.sensitivity_raises_target&&s.ratio<1||i.resistance_lowers_target&&s.ratio>1)){nt=n((nt-60)/s.ratio)+60,ot=n((ot-60)/s.ratio)+60;var ct=n((rt-60)/s.ratio)+60;rt===(ct=Math.max(80,ct))?process.stderr.write("target_bg unchanged: "+o(ct,i)+"; "):process.stderr.write("target_bg from "+o(ct,i)+" to "+o(ct,i)+"; "),rt=ct}var gt=o(rt,i);rt!=f&&(gt=0!==b&&6!==b&&b!==rt?o(f,i)+"→"+o(b,i)+"→"+o(rt,i):o(f,i)+"→"+o(rt,i));var ht=200,pt=200,vt=200;if(e.noise>=2){var Bt=Math.max(1.1,i.noisyCGMTargetMultiplier);Math.min(250,i.maxRaw),ht=n(Math.min(200,nt*Bt)),pt=n(Math.min(200,rt*Bt)),vt=n(Math.min(200,ot*Bt)),process.stderr.write("Raising target_bg for noisy / raw CGM data, from "+o(ct,i)+" to "+o(pt,i)+"; "),nt=ht,rt=pt,ot=vt}T=nt-.5*(nt-40),T=Math.min(Math.max(i.threshold_setting,T,60),120),console.error("Threshold set to ${convert_bg(threshold, profile)}");var ft="",bt=(n(Z,1),Z);if(void 0!==s&&s&&((bt=n(bt=Z/sensitivityRatio,1))!==Z?process.stderr.write("ISF from "+o(Z,i)+" to "+o(bt,i)):process.stderr.write("ISF unchanged: "+o(bt,i)),ft+="Autosens ratio: "+n(sensitivityRatio,2)+", ISF: "+o(Z,i)+"→"+o(bt,i)),console.error("CR:"+$),void 0===a)return He.error="Error: iob_data undefined. ",He;var Mt,_t=a;if(a.length,a.length>1&&(a=_t[0]),void 0===a.activity||void 0===a.iob)return He.error="Error: iob_data missing some property. ",He;var yt=((Mt=void 0!==a.lastTemp?n((new Date(U).getTime()-a.lastTemp.date)/6e4):0)+t.duration)%30;if(console.error("currenttemp:"+t.rate+" lastTempAge:"+Mt+"m, tempModulus:"+yt+"m"),He.temp="absolute",He.deliverAt=Ze,m&&t&&a.lastTemp&&t.rate!==a.lastTemp.rate&&Mt>10&&t.duration)return He.reason="Warning: currenttemp rate "+t.rate+" != lastTemp rate "+a.lastTemp.rate+" from pumphistory; canceling temp",u.setTempBasal(0,0,i,He,t);if(t&&a.lastTemp&&t.duration>0){var xt=Mt-a.lastTemp.duration;if(xt>5&&Mt>10)return He.reason="Warning: currenttemp running but lastTemp from pumphistory ended "+xt+"m ago; canceling temp",u.setTempBasal(0,0,i,He,t)}var St=n(-a.activity*bt*5,2),Dt=n(6*(et-St));Dt<0&&(Dt=n(6*(tt-St)))<0&&(Dt=n(6*(e.long_avgdelta-St)));var wt,Gt=(wt=a.iob>0?n(Xe-a.iob*bt):n(Xe-a.iob*Math.min(bt,Z)))+Dt;if(void 0===Gt||isNaN(Gt))return He.error="Error: could not calculate eventualBG. Sensitivity: "+bt+" Deviation: "+Dt,He;var Ct,Tt,Ut=function(e,t,a){return n(a+(e-t)/24,1)}(rt,Gt,St);He={temp:"absolute",bg:Xe,tick:Ke,eventualBG:Gt,insulinReq:0,reservoir:d,deliverAt:Ze,sensitivityRatio,CR:n($,1),TDD:se,insulin:ve,current_target:rt,insulinForManualBolus:C,manualBolusErrorString:0,minDelta:et,expectedDelta:Ut,minGuardBG:Tt,minPredBG:Ct,threshold:o(T,i)};var Ot=[],Rt=[],At=[],It=[];Ot.push(Xe),Rt.push(Xe),It.push(Xe),At.push(Xe);let Ft=!1;S?(console.error("SMBs are always off."),Ft=!1):Ft=function(e,t,a,r,n,i,s,l){if(s.smbIsOff){let e=new Date(l.getHours()),t=s.start,a=s.end;if(t=t&&ea&&(e>=t||e100?(console.error("SMB disabled due to high temptarget of "+n),!1):!0===a.bwFound&&!1===e.A52_risk_enable?(console.error("SMB disabled due to Bolus Wizard activity in the last 6 hours."),!1):400==r?(console.error("Invalid CGM (HIGH). SMBs disabled."),!1):!0===e.enableSMB_always?(a.bwFound?console.error("Warning: SMB enabled within 6h of using Bolus Wizard: be sure to easy bolus 30s before using Bolus Wizard"):console.error("SMB enabled due to enableSMB_always"),!0):!0===e.enableSMB_with_COB&&a.mealCOB?(a.bwCarbs?console.error("Warning: SMB enabled with Bolus Wizard carbs: be sure to easy bolus 30s before using Bolus Wizard"):console.error("SMB enabled for COB of "+a.mealCOB),!0):!0===e.enableSMB_after_carbs&&a.carbs?(a.bwCarbs?console.error("Warning: SMB enabled with Bolus Wizard carbs: be sure to easy bolus 30s before using Bolus Wizard"):console.error("SMB enabled for 6h after carb entry"),!0):!0===e.enableSMB_with_temptarget&&e.temptargetSet&&n<100?(a.bwFound?console.error("Warning: SMB enabled within 6h of using Bolus Wizard: be sure to easy bolus 30s before using Bolus Wizard"):console.error("SMB enabled for temptarget of "+o(n,e)),!0):!0===e.enableSMB_high_bg&&null!==i&&r>=i?(console.error("Checking BG to see if High for SMB enablement."),console.error("Current BG",r," | High BG ",i),a.bwFound?console.error("Warning: High BG SMB enabled within 6h of using Bolus Wizard: be sure to easy bolus 30s before using Bolus Wizard"):console.error("High BG detected. Enabling SMB."),!0):(console.error("SMB disabled (no enableSMB preferences active or no condition satisfied)"),!1):(console.error("SMB disabled (!microBolusAllowed)"),!1)}(i,m,l,Xe,rt,it,v,U);var jt,Pt=i.enableUAM,Et=0;Et=n(et-St,1);var qt=n(et-St,1);csf=bt/$,console.error("profile.sens:"+o(Z,i)+", sens:"+o(bt,i)+", CSF:"+n(csf,1));var Wt=n(30*csf*5/60,1);Et>Wt&&(console.error("Limiting carb impact from "+Et+" to "+Wt+"mg/dL/5m (30g/h)"),Et=Wt);var kt=3;sensitivityRatio&&(kt/=sensitivityRatio);var Lt=kt;if(l.carbs){kt=Math.max(kt,l.mealCOB/20);var zt=n((new Date(U).getTime()-l.lastCarbTime)/6e4),Nt=(l.carbs-l.mealCOB)/l.carbs;Lt=n(Lt=kt+1.5*zt/60,1),console.error("Last carbs "+zt+" minutes ago; remainingCATime:"+Lt+"hours; "+n(100*Nt,1)+"% carbs absorbed")}var Ht=Math.max(0,Et/5*60*Lt/2)/csf,Zt=90,$t=1;i.remainingCarbsCap&&(Zt=Math.min(90,i.remainingCarbsCap)),i.remainingCarbsFraction&&($t=Math.min(1,i.remainingCarbsFraction));var Jt=1-$t,Kt=Math.max(0,l.mealCOB-Ht-l.carbs*Jt),Qt=(Kt=Math.min(Zt,Kt))*csf*5/60/(Lt/2),Vt=n(l.slopeFromMaxDeviation,2),Xt=n(l.slopeFromMinDeviation,2),Yt=Math.min(Vt,-Xt/3);jt=0===Et?0:Math.min(60*Lt/5/2,Math.max(0,l.mealCOB*csf/Et)),console.error("Carb Impact:"+Et+"mg/dL per 5m; CI Duration:"+n(5*jt/60*2,1)+"hours; remaining CI ("+Lt/2+"h peak):"+n(Qt,1)+"mg/dL per 5m");var ea,ta,aa,ra,na=999,oa=999,ia=999,sa=999,la=999,ua=999,ma=999,da=Gt,ca=Xe,ga=Xe,ha=0,pa=[],va=[];try{_t.forEach((function(e){var t=n(-e.activity*bt*5,2),a=n(-e.iobWithZeroTemp.activity*bt*5,2),r=wt,o=Et*(1-Math.min(1,Rt.length/12));!0===(G&&!_e)?(da=Rt[Rt.length-1]+n(-e.activity*(1800/(q*be*Math.log(Math.max(Rt[Rt.length-1],39)/Fe+1)))*5,2)+o,r=It[It.length-1]+n(-e.iobWithZeroTemp.activity*(1800/(q*be*Math.log(Math.max(It[It.length-1],39)/Fe+1)))*5,2),console.log("Dynamic ISF (Logarithmic Formula) )adjusted predictions for IOB and ZT: IOBpredBG: "+n(da,2)+" , ZTpredBG: "+n(r,2))):(da=Rt[Rt.length-1]+t+o,r=It[It.length-1]+a);var i=Math.max(0,Math.max(0,Et)*(1-Ot.length/Math.max(2*jt,1))),s=Math.min(Ot.length,12*Lt-Ot.length),l=Math.max(0,s/(Lt/2*12)*Qt);pa.push(n(l,0)),va.push(n(i,0)),COBpredBG=Ot[Ot.length-1]+t+Math.min(0,o)+i+l;var u=Math.max(0,qt+At.length*Yt),m=Math.max(0,qt*(1-At.length/Math.max(36,1))),d=Math.min(u,m);d>0&&(ha=n(5*(At.length+1)/60,1)),!0===(G&&!_e)?(UAMpredBG=At[At.length-1]+n(-e.activity*(1800/(q*be*Math.log(Math.max(At[At.length-1],39)/Fe+1)))*5,2)+Math.min(0,o)+d,console.log("Dynamic ISF (Logarithmic Formula) adjusted prediction for UAM: UAMpredBG: "+n(UAMpredBG,2))):UAMpredBG=At[At.length-1]+t+Math.min(0,o)+d,Rt.length<48&&Rt.push(da),Ot.length<48&&Ot.push(COBpredBG),At.length<48&&At.push(UAMpredBG),It.length<48&&It.push(r),COBpredBG18&&daca&&(ca=da),(jt||Qt>0)&&Ot.length>18&&COBpredBG0)&&COBpredBG>ca&&(ga=COBpredBG),Pt&&At.length>12&&UAMpredBGca&&UAMpredBG}))}catch(e){console.error("Problem with iobArray. Optional feature Advanced Meal Assist disabled")}l.mealCOB&&(console.error("predCIs (mg/dL/5m):"+va.join(" ")),console.error("remainingCIs: "+pa.join(" "))),He.predBGs={},Rt.forEach((function(e,t,a){a[t]=n(Math.min(401,Math.max(39,e)))}));for(var Ba=Rt.length-1;Ba>12&&Rt[Ba-1]===Rt[Ba];Ba--)Rt.pop();for(He.predBGs.IOB=Rt,ta=n(Rt[Rt.length-1]),It.forEach((function(e,t,a){a[t]=n(Math.min(401,Math.max(39,e)))})),Ba=It.length-1;Ba>6&&!(It[Ba-1]>=It[Ba]||It[Ba]<=rt);Ba--)It.pop();if(He.predBGs.ZT=It,n(It[It.length-1]),l.mealCOB>0&&(Et>0||Qt>0)){for(Ot.forEach((function(e,t,a){a[t]=n(Math.min(1500,Math.max(39,e)))})),Ba=Ot.length-1;Ba>12&&Ot[Ba-1]===Ot[Ba];Ba--)Ot.pop();He.predBGs.COB=Ot,aa=n(Ot[Ot.length-1]),Gt=Math.max(Gt,n(Ot[Ot.length-1])),console.error("COBpredBG: "+n(Ot[Ot.length-1]))}if(Et>0||Qt>0){if(Pt){for(At.forEach((function(e,t,a){a[t]=n(Math.min(401,Math.max(39,e)))})),Ba=At.length-1;Ba>12&&At[Ba-1]===At[Ba];Ba--)At.pop();He.predBGs.UAM=At,ra=n(At[At.length-1]),At[At.length-1]&&(Gt=Math.max(Gt,n(At[At.length-1])))}He.eventualBG=Gt}console.error("UAM Impact:"+qt+"mg/dL per 5m; UAM Duration:"+ha+"hours"),na=Math.max(39,na),oa=Math.max(39,oa),ia=Math.max(39,ia),Ct=n(na);var fa=l.mealCOB/l.carbs;ea=n(ia<999&&oa<999?(1-fa)*UAMpredBG+fa*COBpredBG:oa<999?(da+COBpredBG)/2:ia<999?(da+UAMpredBG)/2:da),ma>ea&&(ea=ma),Tt=n(Tt=jt||Qt>0?Pt?fa*sa+(1-fa)*la:sa:Pt?la:ua);var ba=ia;if(maia&&(ba=(ia+ma)/2);if(ba=n(ba),l.carbs)if(!Pt&&oa<999)Ct=n(Math.max(na,oa));else if(oa<999){var _a=fa*oa+(1-fa)*ba;Ct=n(Math.max(na,oa,_a))}else Ct=Pt?ba:Tt;else Pt&&(Ct=n(Math.max(na,ba)));Ct=Math.min(Ct,ea),process.stderr.write("minPredBG: "+Ct+" minIOBPredBG: "+na+" minZTGuardBG: "+ma),oa<999&&process.stderr.write(" minCOBPredBG: "+oa),ia<999&&process.stderr.write(" minUAMPredBG: "+ia),console.error(" avgPredBG:"+ea+" COB/Carbs:"+l.mealCOB+"/"+l.carbs),ga>Xe&&(Ct=Math.min(Ct,ga)),He.COB=l.mealCOB,He.IOB=a.iob,He.BGI=o(St,i),He.deviation=o(Dt,i),He.ISF=o(bt,i),He.CR=n($,1),He.target_bg=o(rt,i),He.TDD=n(se,2),He.current_target=n(rt,0);var ya=He.CR;ke!=He.CR&&(ya=ke+"→"+He.CR),He.reason=ft+", COB: "+He.COB+", Dev: "+He.deviation+", BGI: "+He.BGI+", CR: "+ya+", Target: "+gt+", minPredBG "+o(Ct,i)+", minGuardBG "+o(Tt,i)+", IOBpredBG "+o(ta,i),aa>0&&(He.reason+=", COBpredBG "+o(aa,i)),ra>0&&(He.reason+=", UAMpredBG "+o(ra,i)),He.reason+=P,He.reason+="; ";var xa=wt;xa<40&&(xa=Math.min(Tt,xa));var Sa,Da=T-xa,wa=240,Ga=240;if(l.mealCOB>0&&(Et>0||Qt>0)){for(Ba=0;BaSa*Xe&&(console.error("maxDelta "+o(at,i)+" > "+100*Sa+"% of BG "+o(Xe,i)+" - disabling SMB"),He.reason+="maxDelta "+o(at,i)+" > "+100*Sa+"% of BG "+o(Xe,i)+" - SMB disabled!, ",Ft=!1),console.error("BG projected to remain above "+o(nt,i)+" for "+wa+"minutes"),(Ga<240||wa<60)&&console.error("BG projected to remain above "+o(T,i)+" for "+Ga+"minutes");var Ca=Ga,Ta=i.current_basal*H*bt*Ca/60,Ua=Math.max(0,l.mealCOB-.25*l.carbs),Oa=(Da-Ta)/csf-Ua;Ta=n(Ta),Oa=n(Oa),console.error("naive_eventualBG:",wt,"bgUndershoot:",Da,"zeroTempDuration:",Ca,"zeroTempEffect:",Ta,"carbsReq:",Oa),"Could not parse clock data"==l.reason?console.error("carbsReq unknown: Could not parse clock data"):Oa>=i.carbsReqThreshold&&Ga<=45&&(He.carbsReq=Oa,He.reason+=Oa+" add'l carbs req w/in "+Ga+"m; ");var Ra=0;if(Xe0&&et>Ut)He.reason+="IOB "+a.iob+" < "+n(-i.current_basal*H*20/60,2),He.reason+=" and minDelta "+o(et,i)+" > expectedDelta "+o(Ut,i)+"; ";else if(Xe=55)return He.reason+="; Canceling temp at "+He.deliverAt.getMinutes()+"m past the hour. ",u.setTempBasal(0,0,i,He,t);var Aa=0,Ia=Je,Fa=0;if(GtUt&&et>0&&!Oa)return wt<40?(He.reason+=", naive_eventualBG < 40. ",u.setTempBasal(0,30,i,He,t)):(e.delta>et?He.reason+=", but Delta "+o(Ke,i)+" > expectedDelta "+o(Ut,i):He.reason+=", but Min. Delta "+et.toFixed(2)+" > Exp. Delta "+o(Ut,i),t.duration>15&&r(Je,i)===r(t.rate,i)?(He.reason+=", temp "+t.rate+" ~ req "+Je+"U/hr. ",He):(He.reason+="; setting current basal of "+Je+" as temp. ",u.setTempBasal(Je,30,i,He,t)));Aa=n(Aa=2*Math.min(0,(Gt-rt)/bt),2);var ja=Math.min(0,(wt-rt)/bt);ja=n(ja,2),et<0&&et>Ut&&(Aa=n(Aa*(et/Ut),2)),Ia=r(Ia=Je+2*Aa,i),Fa=t.duration*(t.rate-Je)/60;var Pa=Math.min(Aa,ja);if(console.log("naiveInsulinReq:"+ja),Fa5&&Ia>=.8*t.rate)return He.reason+=", temp "+t.rate+" ~< req "+Ia+"U/hr. ",He;if(Ia<=0){if((Ra=n((Da=rt-wt)/bt*60/i.current_basal*H))<0?Ra=0:(Ra=30*n(Ra/30),Ra=Math.min(120,Math.max(0,Ra))),Ra>0)return He.reason+=", setting "+Ra+"m zero temp. ",u.setTempBasal(Ia,Ra,i,He,t)}else He.reason+=", setting "+Ia+"U/hr. ";return u.setTempBasal(Ia,30,i,He,t)}if(et=2||Ut+-1*et>=2)&&(He.manualBolusErrorString=et>=0&&Ut>0?3:et<0&&Ut<=0||et<0&&Ut>=0?4:5),He.insulinForManualBolus=n((He.eventualBG-He.target_bg)/bt,2),!m||!Ft))return e.delta "+o(nt,i)+" but Delta "+o(Ke,i)+" < Exp. Delta "+o(Ut,i):He.reason+="Eventual BG "+o(Gt,i)+" > "+o(nt,i)+" but Min. Delta "+et.toFixed(2)+" < Exp. Delta "+o(Ut,i),t.duration>15&&r(Je,i)===r(t.rate,i)?(He.reason+=", temp "+t.rate+" ~ req "+Je+"U/hr. ",He):(He.reason+="; setting current basal of "+Je+" as temp. ",u.setTempBasal(Je,30,i,He,t));if(Math.min(Gt,Ct)nt&&(He.manualBolusErrorString=6,He.insulinForManualBolus=n((He.eventualBG-He.target_bg)/bt,2),He.minPredBG=Ct),!m||!Ft))return He.reason+=o(Gt,i)+"-"+o(Ct,i)+" in range: no temp required",t.duration>15&&r(Je,i)===r(t.rate,i)?(He.reason+=", temp "+t.rate+" ~ req "+Je+"U/hr. ",He):(He.reason+="; setting current basal of "+Je+" as temp. ",u.setTempBasal(Je,30,i,He,t));if(Gt>=ot&&(He.reason+="Eventual BG "+o(Gt,i)+" >= "+o(ot,i)+", ",Gt>ot&&(He.insulinForManualBolus=n((Gt-rt)/bt,2))),a.iob>st)return He.reason+="IOB "+n(a.iob,2)+" > max_iob "+st,t.duration>15&&r(Je,i)===r(t.rate,i)?(He.reason+=", temp "+t.rate+" ~ req "+Je+"U/hr. ",He):(He.reason+="; setting current basal of "+Je+" as temp. ",u.setTempBasal(Je,30,i,He,t));Aa=n((Math.min(Ct,Gt)-rt)/bt,2),C=n((Gt-rt)/bt,2),Aa>st-a.iob?(console.error("SMB limited by maxIOB: "+st-a.iob+" (. insulinReq: "+Aa+" U)"),He.reason+="max_iob "+st+", ",Aa=st-a.iob):console.error("SMB not limited by maxIOB ( insulinReq: "+Aa+" U)."),C>st-a.iob?(console.error("Ev. Bolus limited by maxIOB: "+st-a.iob+" (. insulinForManualBolus: "+C+" U)"),He.reason+="max_iob "+st+", "):console.error("Ev. Bolus would not be limited by maxIOB ( insulinForManualBolus: "+C+" U)."),Ia=r(Ia=Je+2*Aa,i),Aa=n(Aa,3),He.insulinReq=Aa;var Ea=n((new Date(U).getTime()-a.lastBolusTime)/6e4,1);if(m&&Ft&&Xe>T){var qa=30;void 0!==i.maxSMBBasalMinutes&&(qa=i.maxSMBBasalMinutes);var Wa=30;void 0!==i.maxUAMSMBBasalMinutes&&(Wa=i.maxUAMSMBBasalMinutes),v.useOverride&&M&&D!==qa&&(console.error("SMB Max Minutes - setting overriden from "+qa+" to "+D),qa=D),v.useOverride&&M&&w!==Wa&&(console.error("UAM Max Minutes - setting overriden from "+Wa+" to "+w),Wa=w);var ka=n(l.mealCOB/$,3),La=0;void 0===qa?(La=n(i.current_basal*H*30/60,1),console.error("smbMinutesSetting undefined: defaulting to 30m"),Aa>La&&console.error("SMB limited by maxBolus: "+La+" ( "+Aa+" U)")):a.iob>ka&&a.iob>0?(console.error("IOB"+a.iob+"> COB"+l.mealCOB+"; mealInsulinReq ="+ka),Wa?(console.error("maxUAMSMBBasalMinutes: "+Wa+", profile.current_basal: "+i.current_basal*H),La=n(i.current_basal*H*Wa/60,1)):(console.error("maxUAMSMBBasalMinutes undefined: defaulting to 30m"),La=n(i.current_basal*H*30/60,1)),Aa>La?console.error("SMB limited by maxUAMSMBBasalMinutes [ "+Wa+"m ]: "+La+"U ( "+Aa+"U )"):console.error("SMB is not limited by maxUAMSMBBasalMinutes. ( insulinReq: "+Aa+"U )")):(console.error(".maxSMBBasalMinutes: "+qa+", profile.current_basal: "+i.current_basal*H),Aa>(La=n(i.current_basal*H*qa/60,1))?console.error("SMB limited by maxSMBBasalMinutes: "+qa+"m ]: "+La+"U ( insulinReq: "+Aa+"U )"):console.error("SMB is not limited by maxSMBBasalMinutes. ( insulinReq: "+Aa+"U )"));var za=i.bolus_increment,Na=1/za,Ha=Math.min(i.smb_delivery_ratio,1);.5!=Ha&&console.error("SMB Delivery Ratio changed from default 0.5 to "+n(Ha,2));var Za=Math.min(Aa*Ha,La);Za=Math.floor(Za*Na)/Na,Ra=n((rt-(wt+na)/2)/bt*60/i.current_basal*H),Aa>0&&Za=30?(Ra=30*n(Ra/30),Ra=Math.min(60,Math.max(0,Ra))):($a=n(Je*Ra/30,2),Ra=30),He.reason+=" insulinReq "+Aa,Za>=La&&(He.reason+="; maxBolus "+La),Ra>0&&(He.reason+="; setting "+Ra+"m low temp of "+$a+"U/h"),He.reason+=". ";var Ja=3;i.SMBInterval&&(Ja=Math.min(10,Math.max(1,i.SMBInterval)));var Ka=n(Ja-Ea,0),Qa=n(60*(Ja-Ea),0)%60;if(console.error("naive_eventualBG "+wt+","+Ra+"m "+$a+"U/h temp needed; last bolus "+Ea+"m ago; maxBolus: "+La),Ea>Ja?Za>0&&(He.units=Za,He.reason+="Microbolusing "+Za+"U. "):He.reason+="Waiting "+Ka+"m "+Qa+"s to microbolus again. ",Ra>0)return He.rate=$a,He.duration=Ra,He}var Va=u.getMaxSafeBasal(i);return 400==Xe?u.setTempBasal(i.current_basal,30,i,He,t):(Ia>Va&&(He.reason+="adj. req. rate: "+Ia+" to maxSafeBasal: "+n(Va,2)+", ",Ia=r(Va,i)),(Fa=t.duration*(t.rate-Je)/60)>=2*Aa?(He.reason+=t.duration+"m@"+t.rate.toFixed(2)+" > 2 * insulinReq. Setting temp basal of "+Ia+"U/hr. ",u.setTempBasal(Ia,30,i,He,t)):void 0===t.duration||0===t.duration?(He.reason+="no temp, setting "+Ia+"U/hr. ",u.setTempBasal(Ia,30,i,He,t)):t.duration>5&&r(Ia,i)<=r(t.rate,i)?(He.reason+="temp "+t.rate+" >~ req "+Ia+"U/hr. ",He):(He.reason+="temp "+t.rate+"<"+Ia+"U/hr. ",u.setTempBasal(Ia,30,i,He,t)))}},3531:(e,t,a)=>{var r=a(2296);e.exports=function(e,t){var a=20;return void 0!==t&&"string"==typeof t.model&&(r(t.model,"54")||r(t.model,"23"))&&(a=40),e<1?Math.round(e*a)/a:e<10?Math.round(20*e)/20:Math.round(10*e)/10}},1873:(e,t,a)=>{var r=a(9325).Symbol;e.exports=r},4932:e=>{e.exports=function(e,t){for(var a=-1,r=null==e?0:e.length,n=Array(r);++a{e.exports=function(e,t,a){return e==e&&(void 0!==a&&(e=e<=a?e:a),void 0!==t&&(e=e>=t?e:t)),e}},2552:(e,t,a)=>{var r=a(1873),n=a(659),o=a(9350),i=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?n(e):o(e)}},7556:(e,t,a)=>{var r=a(1873),n=a(4932),o=a(6449),i=a(4394),s=r?r.prototype:void 0,l=s?s.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(o(t))return n(t,e)+"";if(i(t))return l?l.call(t):"";var a=t+"";return"0"==a&&1/t==-1/0?"-0":a}},4128:(e,t,a)=>{var r=a(1800),n=/^\s+/;e.exports=function(e){return e?e.slice(0,r(e)+1).replace(n,""):e}},4840:(e,t,a)=>{var r="object"==typeof a.g&&a.g&&a.g.Object===Object&&a.g;e.exports=r},659:(e,t,a)=>{var r=a(1873),n=Object.prototype,o=n.hasOwnProperty,i=n.toString,s=r?r.toStringTag:void 0;e.exports=function(e){var t=o.call(e,s),a=e[s];try{e[s]=void 0;var r=!0}catch(e){}var n=i.call(e);return r&&(t?e[s]=a:delete e[s]),n}},9350:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},9325:(e,t,a)=>{var r=a(4840),n="object"==typeof self&&self&&self.Object===Object&&self,o=r||n||Function("return this")();e.exports=o},1800:e=>{var t=/\s/;e.exports=function(e){for(var a=e.length;a--&&t.test(e.charAt(a)););return a}},2296:(e,t,a)=>{var r=a(7133),n=a(7556),o=a(1489),i=a(3222);e.exports=function(e,t,a){e=i(e),t=n(t);var s=e.length,l=a=void 0===a?s:r(o(a),0,s);return(a-=t.length)>=0&&e.slice(a,l)==t}},6449:e=>{var t=Array.isArray;e.exports=t},3805:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},346:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},4394:(e,t,a)=>{var r=a(2552),n=a(346);e.exports=function(e){return"symbol"==typeof e||n(e)&&"[object Symbol]"==r(e)}},7400:(e,t,a)=>{var r=a(6993),n=1/0;e.exports=function(e){return e?(e=r(e))===n||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},1489:(e,t,a)=>{var r=a(7400);e.exports=function(e){var t=r(e),a=t%1;return t==t?a?t-a:t:0}},6993:(e,t,a)=>{var r=a(4128),n=a(3805),o=a(4394),i=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,l=/^0o[0-7]+$/i,u=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(o(e))return NaN;if(n(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=n(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=r(e);var a=s.test(e);return a||l.test(e)?u(e.slice(2),a?2:8):i.test(e)?NaN:+e}},3222:(e,t,a)=>{var r=a(7556);e.exports=function(e){return null==e?"":r(e)}}},t={};function a(r){var n=t[r];if(void 0!==n)return n.exports;var o=t[r]={exports:{}};return e[r](o,o.exports,a),o.exports}a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();var r=a(2982);freeaps_determineBasal=r})(); \ No newline at end of file diff --git a/FreeAPS/Resources/javascript/bundle/profile.js b/FreeAPS/Resources/javascript/bundle/profile.js index 86ba00f94..dcfa5bb3e 100644 --- a/FreeAPS/Resources/javascript/bundle/profile.js +++ b/FreeAPS/Resources/javascript/bundle/profile.js @@ -1,2 +1,2 @@ /*! For license information please see profile.js.LICENSE.txt */ -var freeaps_profile;(()=>{var n={2647:(n,t)=>{n.exports=function(n){var t=new Date;return t.setHours("00"),t.setMinutes("00"),t.setSeconds("00"),t.getTime()+60*n*1e3}},7688:(n,t,r)=>{var e=r(2543);t.maxDailyBasal=function(n){var t=e.maxBy(n.basals,(function(n){return Number(n.rate)}));return 1e3*Number(t.rate)/1e3},t.maxBasalLookup=function(n){return n.settings.maxBasal},t.basalLookup=function(n,t){var r=t;void 0===t&&(r=new Date);var u=e.sortBy(n,(function(n){return n.i})),i=u[u.length-1].rate;if(0!==i){for(var o=60*r.getHours()+r.getMinutes(),a=0;a=u[a].minutes&&o{var e=r(2647);function u(n,t){var r=new Date,u=n.carbratio;if(void 0===u||void 0===u.schedule);else{var i;if("grams"===u.units||"exchanges"===u.units){i=u.schedule[u.schedule.length-1];for(var o=0;o=e(u.schedule[o].offset)&&r150)return void console.error("Error: carbRatio of "+i+" out of bounds.");break}return"exchanges"===u.units&&(i.ratio=12/i.ratio),i.ratio}console.error("Error: Unsupported carb_ratio units "+u.units)}}u.carbRatioLookup=u,n.exports=u},7087:(n,t,r)=>{var e=r(7688),u=r(1029),i=r(1705),o=r(6146),a=r(2543);function f(n,t){var r=t&&t.type?t:{max_iob:9,max_daily_safety_multiplier:5,current_basal_safety_multiplier:6,autosens_max:2.5,autosens_min:.5,rewind_resets_autosens:!0,high_temptarget_raises_sensitivity:!1,low_temptarget_lowers_sensitivity:!1,sensitivity_raises_target:!1,resistance_lowers_target:!1,exercise_mode:!1,half_basal_exercise_target:160,maxCOB:120,skip_neutral_temps:!1,unsuspend_if_no_temp:!1,min_5m_carbimpact:8,autotune_isf_adjustmentFraction:1,remainingCarbsFraction:1,remainingCarbsCap:90,enableUAM:!0,A52_risk_enable:!1,enableSMB_with_COB:!0,enableSMB_with_temptarget:!0,enableSMB_always:!1,enableSMB_after_carbs:!1,allowSMB_with_high_temptarget:!0,maxSMBBasalMinutes:90,maxUAMSMBBasalMinutes:90,SMBInterval:3,bolus_increment:.05,maxDelta_bg_threshold:.2,curve:"rapid-acting",useCustomPeakTime:!1,insulinPeakTime:45,carbsReqThreshold:1,offline_hotspot:!1,noisyCGMTargetMultiplier:1.3,suspend_zeros_iob:!0,enableEnliteBgproxy:!1,calc_glucose_noise:!1,target_bg:!1,smb_delivery_ratio:.5,adjustmentFactor:1,useNewFormula:!1,enableDynamicCR:!1,sigmoid:!1,weightPercentage:.65,tddAdjBasal:!1,enableSMB_high_bg:!1,enableSMB_high_bg_target:110,threshold_setting:.6};for(var f in r)n.hasOwnProperty(f)&&(r[f]=n[f]);var c=n.settings;if(!(n.settings.insulin_action_curve>1))return console.error("DIA of",r.dia,"is not supported"),-1;if(r.dia=c.insulin_action_curve,n.model&&(r.model=n.model),r.skip_neutral_temps=n.skip_neutral_temps,r.current_basal=e.basalLookup(n.basals),r.basalprofile=n.basals,a.forEach(r.basalprofile,(function(n){n.rate=+(Math.round(n.rate+"e+3")+"e-3")})),r.max_daily_basal=e.maxDailyBasal(n),r.max_basal=e.maxBasalLookup(n),0===r.current_basal)return console.error("current_basal of",r.current_basal,"is not supported"),-1;if(0===r.max_daily_basal)return console.error("max_daily_basal of",r.max_daily_basal,"is not supported"),-1;if(r.max_basal<.1)return console.error("max_basal of",r.max_basal,"is not supported"),-1;var l=u.bgTargetsLookup(n,r);return r.out_units=n.targets.user_preferred_units,r.min_bg=Math.round(l.min_bg),r.max_bg=Math.round(l.max_bg),r.bg_targets=n.targets,a.forEach(r.bg_targets.targets,(function(n){n.high=Math.round(n.high),n.low=Math.round(n.low),n.min_bg=Math.round(n.min_bg),n.max_bg=Math.round(n.max_bg)})),delete r.bg_targets.raw,r.temptargetSet=l.temptargetSet,r.sens=i.isfLookup(n.isf),r.isfProfile=n.isf,r.sens<5?(console.error("ISF of",r.sens,"is not supported"),-1):(void 0!==n.carbratio?(r.carb_ratio=o.carbRatioLookup(n,r),r.carb_ratios=n.carbratio):console.error("Profile wasn't given carb ratio data, cannot calculate carb_ratio"),r)}f.defaults=function(){return{max_iob:9,max_daily_safety_multiplier:5,current_basal_safety_multiplier:6,autosens_max:2.5,autosens_min:.5,rewind_resets_autosens:!0,high_temptarget_raises_sensitivity:!1,low_temptarget_lowers_sensitivity:!1,sensitivity_raises_target:!1,resistance_lowers_target:!1,exercise_mode:!1,half_basal_exercise_target:160,maxCOB:120,skip_neutral_temps:!1,unsuspend_if_no_temp:!1,min_5m_carbimpact:8,autotune_isf_adjustmentFraction:1,remainingCarbsFraction:1,remainingCarbsCap:90,enableUAM:!0,A52_risk_enable:!1,enableSMB_with_COB:!0,enableSMB_with_temptarget:!0,enableSMB_always:!1,enableSMB_after_carbs:!1,allowSMB_with_high_temptarget:!0,maxSMBBasalMinutes:90,maxUAMSMBBasalMinutes:90,SMBInterval:3,bolus_increment:.05,maxDelta_bg_threshold:.2,curve:"rapid-acting",useCustomPeakTime:!1,insulinPeakTime:45,carbsReqThreshold:1,offline_hotspot:!1,noisyCGMTargetMultiplier:1.3,suspend_zeros_iob:!0,enableEnliteBgproxy:!1,calc_glucose_noise:!1,target_bg:!1,smb_delivery_ratio:.5,adjustmentFactor:1,useNewFormula:!1,enableDynamicCR:!1,sigmoid:!1,weightPercentage:.65,tddAdjBasal:!1,enableSMB_high_bg:!1,enableSMB_high_bg_target:110,threshold_setting:.6}},f.displayedDefaults=function(){var n=9,t=5,r=6,e=2.5,u=.5,i=!0,o=!1,a=!1,f=!1,c=!0,l=!0,s=!0,h=.05,_=.2,p="rapid-acting",v=!1,g=.5,d=1,y=!1,b=!1,m=!1,w=.65,x=!1,j=!1,A=110,k=.6,B={};return B.max_iob=n,B.max_daily_safety_multiplier=t,B.current_basal_safety_multiplier=r,B.autosens_max=e,B.autosens_min=u,B.rewind_resets_autosens=i,B.exercise_mode=a,B.sensitivity_raises_target=o,B.unsuspend_if_no_temp=f,B.enableSMB_with_COB=l,B.enableSMB_with_temptarget=s,B.enableUAM=c,B.curve=p,B.offline_hotspot=v,B.bolus_increment=h,B.smb_delivery_ratio=g,B.maxDelta_bg_threshold=_,B.adjustmentFactor=d,B.useNewFormula=y,B.enableDynamicCR=b,B.sigmoid=m,B.weightPercentage=w,B.tddAdjBasal=x,B.threshold_setting=k,B.enableSMB_high_bg=j,B.enableSMB_high_bg_target=A,console.error(B),B},n.exports=f},1705:(n,t,r)=>{var e=r(2543),u=null;function i(n,t){var r=t;void 0===t&&(r=new Date);var i=60*r.getHours()+r.getMinutes();if(u&&i>=u.offset&&i=c.offset&&i{var e=r(2647);function u(n,t){return o(i(n,t))}function i(n,t){for(var r=n.targets,u=n.temptargets,i=new Date,o=r.targets[r.targets.length-1],a=0;a=e(r.targets[a].offset)&&i=c&&0===u[a].duration){f=o;break}if(!u[a].targetBottom||!u[a].targetTop){console.error("eventualBG target range invalid: "+u[a].targetBottom+"-"+u[a].targetTop);break}if(i>=c&&i"']/g,K=RegExp(Z.source),H=RegExp(G.source),V=/<%-([\s\S]+?)%>/g,J=/<%([\s\S]+?)%>/g,Y=/<%=([\s\S]+?)%>/g,Q=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,X=/^\w*$/,nn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,tn=/[\\^$.*+?()[\]{}|]/g,rn=RegExp(tn.source),en=/^\s+/,un=/\s/,on=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,an=/\{\n\/\* \[wrapped with (.+)\] \*/,fn=/,? & /,cn=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,ln=/[()=,{}\[\]\/\s]/,sn=/\\(\\)?/g,hn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,_n=/\w*$/,pn=/^[-+]0x[0-9a-f]+$/i,vn=/^0b[01]+$/i,gn=/^\[object .+?Constructor\]$/,dn=/^0o[0-7]+$/i,yn=/^(?:0|[1-9]\d*)$/,bn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,mn=/($^)/,wn=/['\n\r\u2028\u2029\\]/g,xn="\\ud800-\\udfff",jn="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",An="\\u2700-\\u27bf",kn="a-z\\xdf-\\xf6\\xf8-\\xff",Bn="A-Z\\xc0-\\xd6\\xd8-\\xde",Sn="\\ufe0e\\ufe0f",Mn="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",On="["+xn+"]",Rn="["+Mn+"]",In="["+jn+"]",En="\\d+",Cn="["+An+"]",zn="["+kn+"]",Ln="[^"+xn+Mn+En+An+kn+Bn+"]",Tn="\\ud83c[\\udffb-\\udfff]",Dn="[^"+xn+"]",Un="(?:\\ud83c[\\udde6-\\uddff]){2}",Wn="[\\ud800-\\udbff][\\udc00-\\udfff]",Fn="["+Bn+"]",Pn="\\u200d",$n="(?:"+zn+"|"+Ln+")",Nn="(?:"+Fn+"|"+Ln+")",qn="(?:['’](?:d|ll|m|re|s|t|ve))?",Zn="(?:['’](?:D|LL|M|RE|S|T|VE))?",Gn="(?:"+In+"|"+Tn+")?",Kn="["+Sn+"]?",Hn=Kn+Gn+"(?:"+Pn+"(?:"+[Dn,Un,Wn].join("|")+")"+Kn+Gn+")*",Vn="(?:"+[Cn,Un,Wn].join("|")+")"+Hn,Jn="(?:"+[Dn+In+"?",In,Un,Wn,On].join("|")+")",Yn=RegExp("['’]","g"),Qn=RegExp(In,"g"),Xn=RegExp(Tn+"(?="+Tn+")|"+Jn+Hn,"g"),nt=RegExp([Fn+"?"+zn+"+"+qn+"(?="+[Rn,Fn,"$"].join("|")+")",Nn+"+"+Zn+"(?="+[Rn,Fn+$n,"$"].join("|")+")",Fn+"?"+$n+"+"+qn,Fn+"+"+Zn,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",En,Vn].join("|"),"g"),tt=RegExp("["+Pn+xn+jn+Sn+"]"),rt=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,et=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],ut=-1,it={};it[C]=it[z]=it[L]=it[T]=it[D]=it[U]=it[W]=it[F]=it[P]=!0,it[v]=it[g]=it[I]=it[d]=it[E]=it[y]=it[b]=it[m]=it[x]=it[j]=it[A]=it[B]=it[S]=it[M]=it[R]=!1;var ot={};ot[v]=ot[g]=ot[I]=ot[E]=ot[d]=ot[y]=ot[C]=ot[z]=ot[L]=ot[T]=ot[D]=ot[x]=ot[j]=ot[A]=ot[B]=ot[S]=ot[M]=ot[O]=ot[U]=ot[W]=ot[F]=ot[P]=!0,ot[b]=ot[m]=ot[R]=!1;var at={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ft=parseFloat,ct=parseInt,lt="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,st="object"==typeof self&&self&&self.Object===Object&&self,ht=lt||st||Function("return this")(),_t=t&&!t.nodeType&&t,pt=_t&&n&&!n.nodeType&&n,vt=pt&&pt.exports===_t,gt=vt&<.process,dt=function(){try{return pt&&pt.require&&pt.require("util").types||gt&>.binding&>.binding("util")}catch(n){}}(),yt=dt&&dt.isArrayBuffer,bt=dt&&dt.isDate,mt=dt&&dt.isMap,wt=dt&&dt.isRegExp,xt=dt&&dt.isSet,jt=dt&&dt.isTypedArray;function At(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function kt(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u-1}function It(n,t,r){for(var e=-1,u=null==n?0:n.length;++e-1;);return r}function nr(n,t){for(var r=n.length;r--&&Ft(t,n[r],0)>-1;);return r}var tr=Zt({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"}),rr=Zt({"&":"&","<":"<",">":">",'"':""","'":"'"});function er(n){return"\\"+at[n]}function ur(n){return tt.test(n)}function ir(n){var t=-1,r=Array(n.size);return n.forEach((function(n,e){r[++t]=[e,n]})),r}function or(n,t){return function(r){return n(t(r))}}function ar(n,t){for(var r=-1,e=n.length,u=0,i=[];++r",""":'"',"'":"'"}),_r=function n(t){var r,e=(t=null==t?ht:_r.defaults(ht.Object(),t,_r.pick(ht,et))).Array,un=t.Date,xn=t.Error,jn=t.Function,An=t.Math,kn=t.Object,Bn=t.RegExp,Sn=t.String,Mn=t.TypeError,On=e.prototype,Rn=jn.prototype,In=kn.prototype,En=t["__core-js_shared__"],Cn=Rn.toString,zn=In.hasOwnProperty,Ln=0,Tn=(r=/[^.]+$/.exec(En&&En.keys&&En.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"",Dn=In.toString,Un=Cn.call(kn),Wn=ht._,Fn=Bn("^"+Cn.call(zn).replace(tn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Pn=vt?t.Buffer:u,$n=t.Symbol,Nn=t.Uint8Array,qn=Pn?Pn.allocUnsafe:u,Zn=or(kn.getPrototypeOf,kn),Gn=kn.create,Kn=In.propertyIsEnumerable,Hn=On.splice,Vn=$n?$n.isConcatSpreadable:u,Jn=$n?$n.iterator:u,Xn=$n?$n.toStringTag:u,tt=function(){try{var n=ai(kn,"defineProperty");return n({},"",{}),n}catch(n){}}(),at=t.clearTimeout!==ht.clearTimeout&&t.clearTimeout,lt=un&&un.now!==ht.Date.now&&un.now,st=t.setTimeout!==ht.setTimeout&&t.setTimeout,_t=An.ceil,pt=An.floor,gt=kn.getOwnPropertySymbols,dt=Pn?Pn.isBuffer:u,Dt=t.isFinite,Zt=On.join,pr=or(kn.keys,kn),vr=An.max,gr=An.min,dr=un.now,yr=t.parseInt,br=An.random,mr=On.reverse,wr=ai(t,"DataView"),xr=ai(t,"Map"),jr=ai(t,"Promise"),Ar=ai(t,"Set"),kr=ai(t,"WeakMap"),Br=ai(kn,"create"),Sr=kr&&new kr,Mr={},Or=Ci(wr),Rr=Ci(xr),Ir=Ci(jr),Er=Ci(Ar),Cr=Ci(kr),zr=$n?$n.prototype:u,Lr=zr?zr.valueOf:u,Tr=zr?zr.toString:u;function Dr(n){if(Yo(n)&&!Fo(n)&&!(n instanceof Pr)){if(n instanceof Fr)return n;if(zn.call(n,"__wrapped__"))return zi(n)}return new Fr(n)}var Ur=function(){function n(){}return function(t){if(!Jo(t))return{};if(Gn)return Gn(t);n.prototype=t;var r=new n;return n.prototype=u,r}}();function Wr(){}function Fr(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=u}function Pr(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=_,this.__views__=[]}function $r(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t=t?n:t)),n}function ie(n,t,r,e,i,o){var a,f=1&t,c=2&t,l=4&t;if(r&&(a=i?r(n,e,i,o):r(n)),a!==u)return a;if(!Jo(n))return n;var s=Fo(n);if(s){if(a=function(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&zn.call(n,"index")&&(r.index=n.index,r.input=n.input),r}(n),!f)return ku(n,a)}else{var h=li(n),_=h==m||h==w;if(qo(n))return bu(n,f);if(h==A||h==v||_&&!i){if(a=c||_?{}:hi(n),!f)return c?function(n,t){return Bu(n,ci(n),t)}(n,function(n,t){return n&&Bu(t,Ma(t),n)}(a,n)):function(n,t){return Bu(n,fi(n),t)}(n,te(a,n))}else{if(!ot[h])return i?n:{};a=function(n,t,r){var e,u=n.constructor;switch(t){case I:return mu(n);case d:case y:return new u(+n);case E:return function(n,t){var r=t?mu(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.byteLength)}(n,r);case C:case z:case L:case T:case D:case U:case W:case F:case P:return wu(n,r);case x:return new u;case j:case M:return new u(n);case B:return function(n){var t=new n.constructor(n.source,_n.exec(n));return t.lastIndex=n.lastIndex,t}(n);case S:return new u;case O:return e=n,Lr?kn(Lr.call(e)):{}}}(n,h,f)}}o||(o=new Gr);var p=o.get(n);if(p)return p;o.set(n,a),ra(n)?n.forEach((function(e){a.add(ie(e,t,r,e,n,o))})):Qo(n)&&n.forEach((function(e,u){a.set(u,ie(e,t,r,u,n,o))}));var g=s?u:(l?c?ni:Xu:c?Ma:Sa)(n);return Bt(g||n,(function(e,u){g&&(e=n[u=e]),Qr(a,u,ie(e,t,r,u,n,o))})),a}function oe(n,t,r){var e=r.length;if(null==n)return!e;for(n=kn(n);e--;){var i=r[e],o=t[i],a=n[i];if(a===u&&!(i in n)||!o(a))return!1}return!0}function ae(n,t,r){if("function"!=typeof n)throw new Mn(i);return Bi((function(){n.apply(u,r)}),t)}function fe(n,t,r,e){var u=-1,i=Rt,o=!0,a=n.length,f=[],c=t.length;if(!a)return f;r&&(t=Et(t,Jt(r))),e?(i=It,o=!1):t.length>=200&&(i=Qt,o=!1,t=new Zr(t));n:for(;++u-1},Nr.prototype.set=function(n,t){var r=this.__data__,e=Xr(r,n);return e<0?(++this.size,r.push([n,t])):r[e][1]=t,this},qr.prototype.clear=function(){this.size=0,this.__data__={hash:new $r,map:new(xr||Nr),string:new $r}},qr.prototype.delete=function(n){var t=ii(this,n).delete(n);return this.size-=t?1:0,t},qr.prototype.get=function(n){return ii(this,n).get(n)},qr.prototype.has=function(n){return ii(this,n).has(n)},qr.prototype.set=function(n,t){var r=ii(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},Zr.prototype.add=Zr.prototype.push=function(n){return this.__data__.set(n,o),this},Zr.prototype.has=function(n){return this.__data__.has(n)},Gr.prototype.clear=function(){this.__data__=new Nr,this.size=0},Gr.prototype.delete=function(n){var t=this.__data__,r=t.delete(n);return this.size=t.size,r},Gr.prototype.get=function(n){return this.__data__.get(n)},Gr.prototype.has=function(n){return this.__data__.has(n)},Gr.prototype.set=function(n,t){var r=this.__data__;if(r instanceof Nr){var e=r.__data__;if(!xr||e.length<199)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new qr(e)}return r.set(n,t),this.size=r.size,this};var ce=Ou(de),le=Ou(ye,!0);function se(n,t){var r=!0;return ce(n,(function(n,e,u){return r=!!t(n,e,u)})),r}function he(n,t,r){for(var e=-1,i=n.length;++e0&&r(a)?t>1?pe(a,t-1,r,e,u):Ct(u,a):e||(u[u.length]=a)}return u}var ve=Ru(),ge=Ru(!0);function de(n,t){return n&&ve(n,t,Sa)}function ye(n,t){return n&&ge(n,t,Sa)}function be(n,t){return Ot(t,(function(t){return Ko(n[t])}))}function me(n,t){for(var r=0,e=(t=vu(t,n)).length;null!=n&&rt}function Ae(n,t){return null!=n&&zn.call(n,t)}function ke(n,t){return null!=n&&t in kn(n)}function Be(n,t,r){for(var i=r?It:Rt,o=n[0].length,a=n.length,f=a,c=e(a),l=1/0,s=[];f--;){var h=n[f];f&&t&&(h=Et(h,Jt(t))),l=gr(h.length,l),c[f]=!r&&(t||o>=120&&h.length>=120)?new Zr(f&&h):u}h=n[0];var _=-1,p=c[0];n:for(;++_=a?f:f*("desc"==r[e]?-1:1)}return n.index-t.index}(n,t,r)}))}function Pe(n,t,r){for(var e=-1,u=t.length,i={};++e-1;)a!==n&&Hn.call(a,f,1),Hn.call(n,f,1);return n}function Ne(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r];if(r==e||u!==i){var i=u;pi(u)?Hn.call(n,u,1):au(n,u)}}return n}function qe(n,t){return n+pt(br()*(t-n+1))}function Ze(n,t){var r="";if(!n||t<1||t>s)return r;do{t%2&&(r+=n),(t=pt(t/2))&&(n+=n)}while(t);return r}function Ge(n,t){return Si(xi(n,t,Xa),n+"")}function Ke(n){return Hr(Ta(n))}function He(n,t){var r=Ta(n);return Ri(r,ue(t,0,r.length))}function Ve(n,t,r,e){if(!Jo(n))return n;for(var i=-1,o=(t=vu(t,n)).length,a=o-1,f=n;null!=f&&++ii?0:i+t),(r=r>i?i:r)<0&&(r+=i),i=t>r?0:r-t>>>0,t>>>=0;for(var o=e(i);++u>>1,o=n[i];null!==o&&!ua(o)&&(r?o<=t:o=200){var c=t?null:Zu(n);if(c)return fr(c);o=!1,u=Qt,f=new Zr}else f=t?[]:a;n:for(;++e=e?n:Xe(n,t,r)}var yu=at||function(n){return ht.clearTimeout(n)};function bu(n,t){if(t)return n.slice();var r=n.length,e=qn?qn(r):new n.constructor(r);return n.copy(e),e}function mu(n){var t=new n.constructor(n.byteLength);return new Nn(t).set(new Nn(n)),t}function wu(n,t){var r=t?mu(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.length)}function xu(n,t){if(n!==t){var r=n!==u,e=null===n,i=n==n,o=ua(n),a=t!==u,f=null===t,c=t==t,l=ua(t);if(!f&&!l&&!o&&n>t||o&&a&&c&&!f&&!l||e&&a&&c||!r&&c||!i)return 1;if(!e&&!o&&!l&&n1?r[i-1]:u,a=i>2?r[2]:u;for(o=n.length>3&&"function"==typeof o?(i--,o):u,a&&vi(r[0],r[1],a)&&(o=i<3?u:o,i=1),t=kn(t);++e-1?i[o?t[a]:a]:u}}function Lu(n){return Qu((function(t){var r=t.length,e=r,o=Fr.prototype.thru;for(n&&t.reverse();e--;){var a=t[e];if("function"!=typeof a)throw new Mn(i);if(o&&!f&&"wrapper"==ri(a))var f=new Fr([],!0)}for(e=f?e:r;++e1&&m.reverse(),_&&sf))return!1;var l=o.get(n),s=o.get(t);if(l&&s)return l==t&&s==n;var h=-1,_=!0,p=2&r?new Zr:u;for(o.set(n,t),o.set(t,n);++h-1&&n%1==0&&n1?"& ":"")+t[e],t=t.join(r>2?", ":" "),n.replace(on,"{\n/* [wrapped with "+t+"] */\n")}(e,function(n,t){return Bt(p,(function(r){var e="_."+r[0];t&r[1]&&!Rt(n,e)&&n.push(e)})),n.sort()}(function(n){var t=n.match(an);return t?t[1].split(fn):[]}(e),r)))}function Oi(n){var t=0,r=0;return function(){var e=dr(),i=16-(e-r);if(r=e,i>0){if(++t>=800)return arguments[0]}else t=0;return n.apply(u,arguments)}}function Ri(n,t){var r=-1,e=n.length,i=e-1;for(t=t===u?e:t;++r1?n[t-1]:u;return r="function"==typeof r?(n.pop(),r):u,no(n,r)}));function ao(n){var t=Dr(n);return t.__chain__=!0,t}function fo(n,t){return t(n)}var co=Qu((function(n){var t=n.length,r=t?n[0]:0,e=this.__wrapped__,i=function(t){return ee(t,n)};return!(t>1||this.__actions__.length)&&e instanceof Pr&&pi(r)?((e=e.slice(r,+r+(t?1:0))).__actions__.push({func:fo,args:[i],thisArg:u}),new Fr(e,this.__chain__).thru((function(n){return t&&!n.length&&n.push(u),n}))):this.thru(i)})),lo=Su((function(n,t,r){zn.call(n,r)?++n[r]:re(n,r,1)})),so=zu(Ui),ho=zu(Wi);function _o(n,t){return(Fo(n)?Bt:ce)(n,ui(t,3))}function po(n,t){return(Fo(n)?St:le)(n,ui(t,3))}var vo=Su((function(n,t,r){zn.call(n,r)?n[r].push(t):re(n,r,[t])})),go=Ge((function(n,t,r){var u=-1,i="function"==typeof t,o=$o(n)?e(n.length):[];return ce(n,(function(n){o[++u]=i?At(t,n,r):Se(n,t,r)})),o})),yo=Su((function(n,t,r){re(n,r,t)}));function bo(n,t){return(Fo(n)?Et:Le)(n,ui(t,3))}var mo=Su((function(n,t,r){n[r?0:1].push(t)}),(function(){return[[],[]]})),wo=Ge((function(n,t){if(null==n)return[];var r=t.length;return r>1&&vi(n,t[0],t[1])?t=[]:r>2&&vi(t[0],t[1],t[2])&&(t=[t[0]]),Fe(n,pe(t,1),[])})),xo=lt||function(){return ht.Date.now()};function jo(n,t,r){return t=r?u:t,t=n&&null==t?n.length:t,Ku(n,c,u,u,u,u,t)}function Ao(n,t){var r;if("function"!=typeof t)throw new Mn(i);return n=la(n),function(){return--n>0&&(r=t.apply(this,arguments)),n<=1&&(t=u),r}}var ko=Ge((function(n,t,r){var e=1;if(r.length){var u=ar(r,ei(ko));e|=f}return Ku(n,e,t,r,u)})),Bo=Ge((function(n,t,r){var e=3;if(r.length){var u=ar(r,ei(Bo));e|=f}return Ku(t,e,n,r,u)}));function So(n,t,r){var e,o,a,f,c,l,s=0,h=!1,_=!1,p=!0;if("function"!=typeof n)throw new Mn(i);function v(t){var r=e,i=o;return e=o=u,s=t,f=n.apply(i,r)}function g(n){var r=n-l;return l===u||r>=t||r<0||_&&n-s>=a}function d(){var n=xo();if(g(n))return y(n);c=Bi(d,function(n){var r=t-(n-l);return _?gr(r,a-(n-s)):r}(n))}function y(n){return c=u,p&&e?v(n):(e=o=u,f)}function b(){var n=xo(),r=g(n);if(e=arguments,o=this,l=n,r){if(c===u)return function(n){return s=n,c=Bi(d,t),h?v(n):f}(l);if(_)return yu(c),c=Bi(d,t),v(l)}return c===u&&(c=Bi(d,t)),f}return t=ha(t)||0,Jo(r)&&(h=!!r.leading,a=(_="maxWait"in r)?vr(ha(r.maxWait)||0,t):a,p="trailing"in r?!!r.trailing:p),b.cancel=function(){c!==u&&yu(c),s=0,e=l=o=c=u},b.flush=function(){return c===u?f:y(xo())},b}var Mo=Ge((function(n,t){return ae(n,1,t)})),Oo=Ge((function(n,t,r){return ae(n,ha(t)||0,r)}));function Ro(n,t){if("function"!=typeof n||null!=t&&"function"!=typeof t)throw new Mn(i);var r=function(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;if(i.has(u))return i.get(u);var o=n.apply(this,e);return r.cache=i.set(u,o)||i,o};return r.cache=new(Ro.Cache||qr),r}function Io(n){if("function"!=typeof n)throw new Mn(i);return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}Ro.Cache=qr;var Eo=gu((function(n,t){var r=(t=1==t.length&&Fo(t[0])?Et(t[0],Jt(ui())):Et(pe(t,1),Jt(ui()))).length;return Ge((function(e){for(var u=-1,i=gr(e.length,r);++u=t})),Wo=Me(function(){return arguments}())?Me:function(n){return Yo(n)&&zn.call(n,"callee")&&!Kn.call(n,"callee")},Fo=e.isArray,Po=yt?Jt(yt):function(n){return Yo(n)&&xe(n)==I};function $o(n){return null!=n&&Vo(n.length)&&!Ko(n)}function No(n){return Yo(n)&&$o(n)}var qo=dt||_f,Zo=bt?Jt(bt):function(n){return Yo(n)&&xe(n)==y};function Go(n){if(!Yo(n))return!1;var t=xe(n);return t==b||"[object DOMException]"==t||"string"==typeof n.message&&"string"==typeof n.name&&!na(n)}function Ko(n){if(!Jo(n))return!1;var t=xe(n);return t==m||t==w||"[object AsyncFunction]"==t||"[object Proxy]"==t}function Ho(n){return"number"==typeof n&&n==la(n)}function Vo(n){return"number"==typeof n&&n>-1&&n%1==0&&n<=s}function Jo(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function Yo(n){return null!=n&&"object"==typeof n}var Qo=mt?Jt(mt):function(n){return Yo(n)&&li(n)==x};function Xo(n){return"number"==typeof n||Yo(n)&&xe(n)==j}function na(n){if(!Yo(n)||xe(n)!=A)return!1;var t=Zn(n);if(null===t)return!0;var r=zn.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&Cn.call(r)==Un}var ta=wt?Jt(wt):function(n){return Yo(n)&&xe(n)==B},ra=xt?Jt(xt):function(n){return Yo(n)&&li(n)==S};function ea(n){return"string"==typeof n||!Fo(n)&&Yo(n)&&xe(n)==M}function ua(n){return"symbol"==typeof n||Yo(n)&&xe(n)==O}var ia=jt?Jt(jt):function(n){return Yo(n)&&Vo(n.length)&&!!it[xe(n)]},oa=$u(ze),aa=$u((function(n,t){return n<=t}));function fa(n){if(!n)return[];if($o(n))return ea(n)?lr(n):ku(n);if(Jn&&n[Jn])return function(n){for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}(n[Jn]());var t=li(n);return(t==x?ir:t==S?fr:Ta)(n)}function ca(n){return n?(n=ha(n))===l||n===-1/0?17976931348623157e292*(n<0?-1:1):n==n?n:0:0===n?n:0}function la(n){var t=ca(n),r=t%1;return t==t?r?t-r:t:0}function sa(n){return n?ue(la(n),0,_):0}function ha(n){if("number"==typeof n)return n;if(ua(n))return h;if(Jo(n)){var t="function"==typeof n.valueOf?n.valueOf():n;n=Jo(t)?t+"":t}if("string"!=typeof n)return 0===n?n:+n;n=Vt(n);var r=vn.test(n);return r||dn.test(n)?ct(n.slice(2),r?2:8):pn.test(n)?h:+n}function _a(n){return Bu(n,Ma(n))}function pa(n){return null==n?"":iu(n)}var va=Mu((function(n,t){if(bi(t)||$o(t))Bu(t,Sa(t),n);else for(var r in t)zn.call(t,r)&&Qr(n,r,t[r])})),ga=Mu((function(n,t){Bu(t,Ma(t),n)})),da=Mu((function(n,t,r,e){Bu(t,Ma(t),n,e)})),ya=Mu((function(n,t,r,e){Bu(t,Sa(t),n,e)})),ba=Qu(ee),ma=Ge((function(n,t){n=kn(n);var r=-1,e=t.length,i=e>2?t[2]:u;for(i&&vi(t[0],t[1],i)&&(e=1);++r1),t})),Bu(n,ni(n),r),e&&(r=ie(r,7,Ju));for(var u=t.length;u--;)au(r,t[u]);return r})),Ea=Qu((function(n,t){return null==n?{}:function(n,t){return Pe(n,t,(function(t,r){return ja(n,r)}))}(n,t)}));function Ca(n,t){if(null==n)return{};var r=Et(ni(n),(function(n){return[n]}));return t=ui(t),Pe(n,r,(function(n,r){return t(n,r[0])}))}var za=Gu(Sa),La=Gu(Ma);function Ta(n){return null==n?[]:Yt(n,Sa(n))}var Da=Eu((function(n,t,r){return t=t.toLowerCase(),n+(r?Ua(t):t)}));function Ua(n){return Ga(pa(n).toLowerCase())}function Wa(n){return(n=pa(n))&&n.replace(bn,tr).replace(Qn,"")}var Fa=Eu((function(n,t,r){return n+(r?"-":"")+t.toLowerCase()})),Pa=Eu((function(n,t,r){return n+(r?" ":"")+t.toLowerCase()})),$a=Iu("toLowerCase"),Na=Eu((function(n,t,r){return n+(r?"_":"")+t.toLowerCase()})),qa=Eu((function(n,t,r){return n+(r?" ":"")+Ga(t)})),Za=Eu((function(n,t,r){return n+(r?" ":"")+t.toUpperCase()})),Ga=Iu("toUpperCase");function Ka(n,t,r){return n=pa(n),(t=r?u:t)===u?function(n){return rt.test(n)}(n)?function(n){return n.match(nt)||[]}(n):function(n){return n.match(cn)||[]}(n):n.match(t)||[]}var Ha=Ge((function(n,t){try{return At(n,u,t)}catch(n){return Go(n)?n:new xn(n)}})),Va=Qu((function(n,t){return Bt(t,(function(t){t=Ei(t),re(n,t,ko(n[t],n))})),n}));function Ja(n){return function(){return n}}var Ya=Lu(),Qa=Lu(!0);function Xa(n){return n}function nf(n){return Ee("function"==typeof n?n:ie(n,1))}var tf=Ge((function(n,t){return function(r){return Se(r,n,t)}})),rf=Ge((function(n,t){return function(r){return Se(n,r,t)}}));function ef(n,t,r){var e=Sa(t),u=be(t,e);null!=r||Jo(t)&&(u.length||!e.length)||(r=t,t=n,n=this,u=be(t,Sa(t)));var i=!(Jo(r)&&"chain"in r&&!r.chain),o=Ko(n);return Bt(u,(function(r){var e=t[r];n[r]=e,o&&(n.prototype[r]=function(){var t=this.__chain__;if(i||t){var r=n(this.__wrapped__);return(r.__actions__=ku(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,Ct([this.value()],arguments))})})),n}function uf(){}var of=Wu(Et),af=Wu(Mt),ff=Wu(Tt);function cf(n){return gi(n)?qt(Ei(n)):function(n){return function(t){return me(t,n)}}(n)}var lf=Pu(),sf=Pu(!0);function hf(){return[]}function _f(){return!1}var pf,vf=Uu((function(n,t){return n+t}),0),gf=qu("ceil"),df=Uu((function(n,t){return n/t}),1),yf=qu("floor"),bf=Uu((function(n,t){return n*t}),1),mf=qu("round"),wf=Uu((function(n,t){return n-t}),0);return Dr.after=function(n,t){if("function"!=typeof t)throw new Mn(i);return n=la(n),function(){if(--n<1)return t.apply(this,arguments)}},Dr.ary=jo,Dr.assign=va,Dr.assignIn=ga,Dr.assignInWith=da,Dr.assignWith=ya,Dr.at=ba,Dr.before=Ao,Dr.bind=ko,Dr.bindAll=Va,Dr.bindKey=Bo,Dr.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return Fo(n)?n:[n]},Dr.chain=ao,Dr.chunk=function(n,t,r){t=(r?vi(n,t,r):t===u)?1:vr(la(t),0);var i=null==n?0:n.length;if(!i||t<1)return[];for(var o=0,a=0,f=e(_t(i/t));oi?0:i+r),(e=e===u||e>i?i:la(e))<0&&(e+=i),e=r>e?0:sa(e);r>>0)?(n=pa(n))&&("string"==typeof t||null!=t&&!ta(t))&&!(t=iu(t))&&ur(n)?du(lr(n),0,r):n.split(t,r):[]},Dr.spread=function(n,t){if("function"!=typeof n)throw new Mn(i);return t=null==t?0:vr(la(t),0),Ge((function(r){var e=r[t],u=du(r,0,t);return e&&Ct(u,e),At(n,this,u)}))},Dr.tail=function(n){var t=null==n?0:n.length;return t?Xe(n,1,t):[]},Dr.take=function(n,t,r){return n&&n.length?Xe(n,0,(t=r||t===u?1:la(t))<0?0:t):[]},Dr.takeRight=function(n,t,r){var e=null==n?0:n.length;return e?Xe(n,(t=e-(t=r||t===u?1:la(t)))<0?0:t,e):[]},Dr.takeRightWhile=function(n,t){return n&&n.length?cu(n,ui(t,3),!1,!0):[]},Dr.takeWhile=function(n,t){return n&&n.length?cu(n,ui(t,3)):[]},Dr.tap=function(n,t){return t(n),n},Dr.throttle=function(n,t,r){var e=!0,u=!0;if("function"!=typeof n)throw new Mn(i);return Jo(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),So(n,t,{leading:e,maxWait:t,trailing:u})},Dr.thru=fo,Dr.toArray=fa,Dr.toPairs=za,Dr.toPairsIn=La,Dr.toPath=function(n){return Fo(n)?Et(n,Ei):ua(n)?[n]:ku(Ii(pa(n)))},Dr.toPlainObject=_a,Dr.transform=function(n,t,r){var e=Fo(n),u=e||qo(n)||ia(n);if(t=ui(t,4),null==r){var i=n&&n.constructor;r=u?e?new i:[]:Jo(n)&&Ko(i)?Ur(Zn(n)):{}}return(u?Bt:de)(n,(function(n,e,u){return t(r,n,e,u)})),r},Dr.unary=function(n){return jo(n,1)},Dr.union=Ji,Dr.unionBy=Yi,Dr.unionWith=Qi,Dr.uniq=function(n){return n&&n.length?ou(n):[]},Dr.uniqBy=function(n,t){return n&&n.length?ou(n,ui(t,2)):[]},Dr.uniqWith=function(n,t){return t="function"==typeof t?t:u,n&&n.length?ou(n,u,t):[]},Dr.unset=function(n,t){return null==n||au(n,t)},Dr.unzip=Xi,Dr.unzipWith=no,Dr.update=function(n,t,r){return null==n?n:fu(n,t,pu(r))},Dr.updateWith=function(n,t,r,e){return e="function"==typeof e?e:u,null==n?n:fu(n,t,pu(r),e)},Dr.values=Ta,Dr.valuesIn=function(n){return null==n?[]:Yt(n,Ma(n))},Dr.without=to,Dr.words=Ka,Dr.wrap=function(n,t){return Co(pu(t),n)},Dr.xor=ro,Dr.xorBy=eo,Dr.xorWith=uo,Dr.zip=io,Dr.zipObject=function(n,t){return hu(n||[],t||[],Qr)},Dr.zipObjectDeep=function(n,t){return hu(n||[],t||[],Ve)},Dr.zipWith=oo,Dr.entries=za,Dr.entriesIn=La,Dr.extend=ga,Dr.extendWith=da,ef(Dr,Dr),Dr.add=vf,Dr.attempt=Ha,Dr.camelCase=Da,Dr.capitalize=Ua,Dr.ceil=gf,Dr.clamp=function(n,t,r){return r===u&&(r=t,t=u),r!==u&&(r=(r=ha(r))==r?r:0),t!==u&&(t=(t=ha(t))==t?t:0),ue(ha(n),t,r)},Dr.clone=function(n){return ie(n,4)},Dr.cloneDeep=function(n){return ie(n,5)},Dr.cloneDeepWith=function(n,t){return ie(n,5,t="function"==typeof t?t:u)},Dr.cloneWith=function(n,t){return ie(n,4,t="function"==typeof t?t:u)},Dr.conformsTo=function(n,t){return null==t||oe(n,t,Sa(t))},Dr.deburr=Wa,Dr.defaultTo=function(n,t){return null==n||n!=n?t:n},Dr.divide=df,Dr.endsWith=function(n,t,r){n=pa(n),t=iu(t);var e=n.length,i=r=r===u?e:ue(la(r),0,e);return(r-=t.length)>=0&&n.slice(r,i)==t},Dr.eq=To,Dr.escape=function(n){return(n=pa(n))&&H.test(n)?n.replace(G,rr):n},Dr.escapeRegExp=function(n){return(n=pa(n))&&rn.test(n)?n.replace(tn,"\\$&"):n},Dr.every=function(n,t,r){var e=Fo(n)?Mt:se;return r&&vi(n,t,r)&&(t=u),e(n,ui(t,3))},Dr.find=so,Dr.findIndex=Ui,Dr.findKey=function(n,t){return Ut(n,ui(t,3),de)},Dr.findLast=ho,Dr.findLastIndex=Wi,Dr.findLastKey=function(n,t){return Ut(n,ui(t,3),ye)},Dr.floor=yf,Dr.forEach=_o,Dr.forEachRight=po,Dr.forIn=function(n,t){return null==n?n:ve(n,ui(t,3),Ma)},Dr.forInRight=function(n,t){return null==n?n:ge(n,ui(t,3),Ma)},Dr.forOwn=function(n,t){return n&&de(n,ui(t,3))},Dr.forOwnRight=function(n,t){return n&&ye(n,ui(t,3))},Dr.get=xa,Dr.gt=Do,Dr.gte=Uo,Dr.has=function(n,t){return null!=n&&si(n,t,Ae)},Dr.hasIn=ja,Dr.head=Pi,Dr.identity=Xa,Dr.includes=function(n,t,r,e){n=$o(n)?n:Ta(n),r=r&&!e?la(r):0;var u=n.length;return r<0&&(r=vr(u+r,0)),ea(n)?r<=u&&n.indexOf(t,r)>-1:!!u&&Ft(n,t,r)>-1},Dr.indexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=null==r?0:la(r);return u<0&&(u=vr(e+u,0)),Ft(n,t,u)},Dr.inRange=function(n,t,r){return t=ca(t),r===u?(r=t,t=0):r=ca(r),function(n,t,r){return n>=gr(t,r)&&n=-9007199254740991&&n<=s},Dr.isSet=ra,Dr.isString=ea,Dr.isSymbol=ua,Dr.isTypedArray=ia,Dr.isUndefined=function(n){return n===u},Dr.isWeakMap=function(n){return Yo(n)&&li(n)==R},Dr.isWeakSet=function(n){return Yo(n)&&"[object WeakSet]"==xe(n)},Dr.join=function(n,t){return null==n?"":Zt.call(n,t)},Dr.kebabCase=Fa,Dr.last=Zi,Dr.lastIndexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var i=e;return r!==u&&(i=(i=la(r))<0?vr(e+i,0):gr(i,e-1)),t==t?function(n,t,r){for(var e=r+1;e--;)if(n[e]===t)return e;return e}(n,t,i):Wt(n,$t,i,!0)},Dr.lowerCase=Pa,Dr.lowerFirst=$a,Dr.lt=oa,Dr.lte=aa,Dr.max=function(n){return n&&n.length?he(n,Xa,je):u},Dr.maxBy=function(n,t){return n&&n.length?he(n,ui(t,2),je):u},Dr.mean=function(n){return Nt(n,Xa)},Dr.meanBy=function(n,t){return Nt(n,ui(t,2))},Dr.min=function(n){return n&&n.length?he(n,Xa,ze):u},Dr.minBy=function(n,t){return n&&n.length?he(n,ui(t,2),ze):u},Dr.stubArray=hf,Dr.stubFalse=_f,Dr.stubObject=function(){return{}},Dr.stubString=function(){return""},Dr.stubTrue=function(){return!0},Dr.multiply=bf,Dr.nth=function(n,t){return n&&n.length?We(n,la(t)):u},Dr.noConflict=function(){return ht._===this&&(ht._=Wn),this},Dr.noop=uf,Dr.now=xo,Dr.pad=function(n,t,r){n=pa(n);var e=(t=la(t))?cr(n):0;if(!t||e>=t)return n;var u=(t-e)/2;return Fu(pt(u),r)+n+Fu(_t(u),r)},Dr.padEnd=function(n,t,r){n=pa(n);var e=(t=la(t))?cr(n):0;return t&&et){var e=n;n=t,t=e}if(r||n%1||t%1){var i=br();return gr(n+i*(t-n+ft("1e-"+((i+"").length-1))),t)}return qe(n,t)},Dr.reduce=function(n,t,r){var e=Fo(n)?zt:Gt,u=arguments.length<3;return e(n,ui(t,4),r,u,ce)},Dr.reduceRight=function(n,t,r){var e=Fo(n)?Lt:Gt,u=arguments.length<3;return e(n,ui(t,4),r,u,le)},Dr.repeat=function(n,t,r){return t=(r?vi(n,t,r):t===u)?1:la(t),Ze(pa(n),t)},Dr.replace=function(){var n=arguments,t=pa(n[0]);return n.length<3?t:t.replace(n[1],n[2])},Dr.result=function(n,t,r){var e=-1,i=(t=vu(t,n)).length;for(i||(i=1,n=u);++es)return[];var r=_,e=gr(n,_);t=ui(t),n-=_;for(var u=Ht(e,t);++r=o)return n;var f=r-cr(e);if(f<1)return e;var c=a?du(a,0,f).join(""):n.slice(0,f);if(i===u)return c+e;if(a&&(f+=c.length-f),ta(i)){if(n.slice(f).search(i)){var l,s=c;for(i.global||(i=Bn(i.source,pa(_n.exec(i))+"g")),i.lastIndex=0;l=i.exec(s);)var h=l.index;c=c.slice(0,h===u?f:h)}}else if(n.indexOf(iu(i),f)!=f){var _=c.lastIndexOf(i);_>-1&&(c=c.slice(0,_))}return c+e},Dr.unescape=function(n){return(n=pa(n))&&K.test(n)?n.replace(Z,hr):n},Dr.uniqueId=function(n){var t=++Ln;return pa(n)+t},Dr.upperCase=Za,Dr.upperFirst=Ga,Dr.each=_o,Dr.eachRight=po,Dr.first=Pi,ef(Dr,(pf={},de(Dr,(function(n,t){zn.call(Dr.prototype,t)||(pf[t]=n)})),pf),{chain:!1}),Dr.VERSION="4.17.21",Bt(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(n){Dr[n].placeholder=Dr})),Bt(["drop","take"],(function(n,t){Pr.prototype[n]=function(r){r=r===u?1:vr(la(r),0);var e=this.__filtered__&&!t?new Pr(this):this.clone();return e.__filtered__?e.__takeCount__=gr(r,e.__takeCount__):e.__views__.push({size:gr(r,_),type:n+(e.__dir__<0?"Right":"")}),e},Pr.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}})),Bt(["filter","map","takeWhile"],(function(n,t){var r=t+1,e=1==r||3==r;Pr.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:ui(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}})),Bt(["head","last"],(function(n,t){var r="take"+(t?"Right":"");Pr.prototype[n]=function(){return this[r](1).value()[0]}})),Bt(["initial","tail"],(function(n,t){var r="drop"+(t?"":"Right");Pr.prototype[n]=function(){return this.__filtered__?new Pr(this):this[r](1)}})),Pr.prototype.compact=function(){return this.filter(Xa)},Pr.prototype.find=function(n){return this.filter(n).head()},Pr.prototype.findLast=function(n){return this.reverse().find(n)},Pr.prototype.invokeMap=Ge((function(n,t){return"function"==typeof n?new Pr(this):this.map((function(r){return Se(r,n,t)}))})),Pr.prototype.reject=function(n){return this.filter(Io(ui(n)))},Pr.prototype.slice=function(n,t){n=la(n);var r=this;return r.__filtered__&&(n>0||t<0)?new Pr(r):(n<0?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==u&&(r=(t=la(t))<0?r.dropRight(-t):r.take(t-n)),r)},Pr.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},Pr.prototype.toArray=function(){return this.take(_)},de(Pr.prototype,(function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),i=Dr[e?"take"+("last"==t?"Right":""):t],o=e||/^find/.test(t);i&&(Dr.prototype[t]=function(){var t=this.__wrapped__,a=e?[1]:arguments,f=t instanceof Pr,c=a[0],l=f||Fo(t),s=function(n){var t=i.apply(Dr,Ct([n],a));return e&&h?t[0]:t};l&&r&&"function"==typeof c&&1!=c.length&&(f=l=!1);var h=this.__chain__,_=!!this.__actions__.length,p=o&&!h,v=f&&!_;if(!o&&l){t=v?t:new Pr(this);var g=n.apply(t,a);return g.__actions__.push({func:fo,args:[s],thisArg:u}),new Fr(g,h)}return p&&v?n.apply(this,a):(g=this.thru(s),p?e?g.value()[0]:g.value():g)})})),Bt(["pop","push","shift","sort","splice","unshift"],(function(n){var t=On[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);Dr.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(Fo(u)?u:[],n)}return this[r]((function(r){return t.apply(Fo(r)?r:[],n)}))}})),de(Pr.prototype,(function(n,t){var r=Dr[t];if(r){var e=r.name+"";zn.call(Mr,e)||(Mr[e]=[]),Mr[e].push({name:t,func:r})}})),Mr[Tu(u,2).name]=[{name:"wrapper",func:u}],Pr.prototype.clone=function(){var n=new Pr(this.__wrapped__);return n.__actions__=ku(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=ku(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=ku(this.__views__),n},Pr.prototype.reverse=function(){if(this.__filtered__){var n=new Pr(this);n.__dir__=-1,n.__filtered__=!0}else(n=this.clone()).__dir__*=-1;return n},Pr.prototype.value=function(){var n=this.__wrapped__.value(),t=this.__dir__,r=Fo(n),e=t<0,u=r?n.length:0,i=function(n,t,r){for(var e=-1,u=r.length;++e=this.__values__.length;return{done:n,value:n?u:this.__values__[this.__index__++]}},Dr.prototype.plant=function(n){for(var t,r=this;r instanceof Wr;){var e=zi(r);e.__index__=0,e.__values__=u,t?i.__wrapped__=e:t=e;var i=e;r=r.__wrapped__}return i.__wrapped__=n,t},Dr.prototype.reverse=function(){var n=this.__wrapped__;if(n instanceof Pr){var t=n;return this.__actions__.length&&(t=new Pr(this)),(t=t.reverse()).__actions__.push({func:fo,args:[Vi],thisArg:u}),new Fr(t,this.__chain__)}return this.thru(Vi)},Dr.prototype.toJSON=Dr.prototype.valueOf=Dr.prototype.value=function(){return lu(this.__wrapped__,this.__actions__)},Dr.prototype.first=Dr.prototype.head,Jn&&(Dr.prototype[Jn]=function(){return this}),Dr}();ht._=_r,(e=function(){return _r}.call(t,r,t,n))===u||(n.exports=e)}.call(this)}},t={};function r(e){var u=t[e];if(void 0!==u)return u.exports;var i=t[e]={id:e,loaded:!1,exports:{}};return n[e].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),r.nmd=n=>(n.paths=[],n.children||(n.children=[]),n);var e=r(7087);freeaps_profile=e})(); \ No newline at end of file +var freeaps_profile;(()=>{var n={2647:(n,t)=>{n.exports=function(n){var t=new Date;return t.setHours("00"),t.setMinutes("00"),t.setSeconds("00"),t.getTime()+60*n*1e3}},7688:(n,t,r)=>{var e=r(2543);t.maxDailyBasal=function(n){var t=e.maxBy(n.basals,(function(n){return Number(n.rate)}));return 1e3*Number(t.rate)/1e3},t.maxBasalLookup=function(n){return n.settings.maxBasal},t.basalLookup=function(n,t){var r=t;void 0===t&&(r=new Date);var u=e.sortBy(n,(function(n){return n.i})),i=u[u.length-1].rate;if(0!==i){for(var o=60*r.getHours()+r.getMinutes(),a=0;a=u[a].minutes&&o{var e=r(2647);function u(n,t){var r=new Date,u=n.carbratio;if(void 0===u||void 0===u.schedule);else{var i;if("grams"===u.units||"exchanges"===u.units){i=u.schedule[u.schedule.length-1];for(var o=0;o=e(u.schedule[o].offset)&&r150)return void console.error("Error: carbRatio of "+i+" out of bounds.");break}return"exchanges"===u.units&&(i.ratio=12/i.ratio),i.ratio}console.error("Error: Unsupported carb_ratio units "+u.units)}}u.carbRatioLookup=u,n.exports=u},7087:(n,t,r)=>{var e=r(7688),u=r(1029),i=r(1705),o=r(6146),a=r(2543);function f(n,t){var r=t&&t.type?t:{max_iob:9,max_daily_safety_multiplier:5,current_basal_safety_multiplier:6,autosens_max:2.5,autosens_min:.5,rewind_resets_autosens:!0,high_temptarget_raises_sensitivity:!1,low_temptarget_lowers_sensitivity:!1,sensitivity_raises_target:!1,resistance_lowers_target:!1,exercise_mode:!1,half_basal_exercise_target:160,maxCOB:120,skip_neutral_temps:!1,unsuspend_if_no_temp:!1,min_5m_carbimpact:8,autotune_isf_adjustmentFraction:1,remainingCarbsFraction:1,remainingCarbsCap:90,enableUAM:!0,A52_risk_enable:!1,enableSMB_with_COB:!0,enableSMB_with_temptarget:!0,enableSMB_always:!1,enableSMB_after_carbs:!1,allowSMB_with_high_temptarget:!0,maxSMBBasalMinutes:90,maxUAMSMBBasalMinutes:90,SMBInterval:3,bolus_increment:.05,maxDelta_bg_threshold:.2,curve:"rapid-acting",useCustomPeakTime:!1,insulinPeakTime:45,carbsReqThreshold:1,offline_hotspot:!1,noisyCGMTargetMultiplier:1.3,suspend_zeros_iob:!0,enableEnliteBgproxy:!1,calc_glucose_noise:!1,target_bg:!1,smb_delivery_ratio:.5,adjustmentFactor:.8,adjustmentFactorSigmoid:.5,useNewFormula:!1,enableDynamicCR:!1,sigmoid:!1,weightPercentage:.65,tddAdjBasal:!1,enableSMB_high_bg:!1,enableSMB_high_bg_target:110,threshold_setting:.6};for(var f in r)n.hasOwnProperty(f)&&(r[f]=n[f]);var c=n.settings;if(!(n.settings.insulin_action_curve>1))return console.error("DIA of",r.dia,"is not supported"),-1;if(r.dia=c.insulin_action_curve,n.model&&(r.model=n.model),r.skip_neutral_temps=n.skip_neutral_temps,r.current_basal=e.basalLookup(n.basals),r.basalprofile=n.basals,a.forEach(r.basalprofile,(function(n){n.rate=+(Math.round(n.rate+"e+3")+"e-3")})),r.max_daily_basal=e.maxDailyBasal(n),r.max_basal=e.maxBasalLookup(n),0===r.current_basal)return console.error("current_basal of",r.current_basal,"is not supported"),-1;if(0===r.max_daily_basal)return console.error("max_daily_basal of",r.max_daily_basal,"is not supported"),-1;if(r.max_basal<.1)return console.error("max_basal of",r.max_basal,"is not supported"),-1;var l=u.bgTargetsLookup(n,r);return r.out_units=n.targets.user_preferred_units,r.min_bg=Math.round(l.min_bg),r.max_bg=Math.round(l.max_bg),r.bg_targets=n.targets,a.forEach(r.bg_targets.targets,(function(n){n.high=Math.round(n.high),n.low=Math.round(n.low),n.min_bg=Math.round(n.min_bg),n.max_bg=Math.round(n.max_bg)})),delete r.bg_targets.raw,r.temptargetSet=l.temptargetSet,r.sens=i.isfLookup(n.isf),r.isfProfile=n.isf,r.sens<5?(console.error("ISF of",r.sens,"is not supported"),-1):(void 0!==n.carbratio?(r.carb_ratio=o.carbRatioLookup(n,r),r.carb_ratios=n.carbratio):console.error("Profile wasn't given carb ratio data, cannot calculate carb_ratio"),r)}f.defaults=function(){return{max_iob:9,max_daily_safety_multiplier:5,current_basal_safety_multiplier:6,autosens_max:2.5,autosens_min:.5,rewind_resets_autosens:!0,high_temptarget_raises_sensitivity:!1,low_temptarget_lowers_sensitivity:!1,sensitivity_raises_target:!1,resistance_lowers_target:!1,exercise_mode:!1,half_basal_exercise_target:160,maxCOB:120,skip_neutral_temps:!1,unsuspend_if_no_temp:!1,min_5m_carbimpact:8,autotune_isf_adjustmentFraction:1,remainingCarbsFraction:1,remainingCarbsCap:90,enableUAM:!0,A52_risk_enable:!1,enableSMB_with_COB:!0,enableSMB_with_temptarget:!0,enableSMB_always:!1,enableSMB_after_carbs:!1,allowSMB_with_high_temptarget:!0,maxSMBBasalMinutes:90,maxUAMSMBBasalMinutes:90,SMBInterval:3,bolus_increment:.05,maxDelta_bg_threshold:.2,curve:"rapid-acting",useCustomPeakTime:!1,insulinPeakTime:45,carbsReqThreshold:1,offline_hotspot:!1,noisyCGMTargetMultiplier:1.3,suspend_zeros_iob:!0,enableEnliteBgproxy:!1,calc_glucose_noise:!1,target_bg:!1,smb_delivery_ratio:.5,adjustmentFactor:.8,adjustmentFactorSigmoid:.5,useNewFormula:!1,enableDynamicCR:!1,sigmoid:!1,weightPercentage:.65,tddAdjBasal:!1,enableSMB_high_bg:!1,enableSMB_high_bg_target:110,threshold_setting:.6}},f.displayedDefaults=function(){var n=9,t=5,r=6,e=2.5,u=.5,i=!0,o=!1,a=!1,f=!1,c=!0,l=!0,s=!0,h=.05,_=.2,p="rapid-acting",v=!1,g=.5,d=.8,y=.5,b=!1,m=!1,w=!1,x=.65,j=!1,A=!1,k=110,B=.6,S={};return S.max_iob=n,S.max_daily_safety_multiplier=t,S.current_basal_safety_multiplier=r,S.autosens_max=e,S.autosens_min=u,S.rewind_resets_autosens=i,S.exercise_mode=a,S.sensitivity_raises_target=o,S.unsuspend_if_no_temp=f,S.enableSMB_with_COB=l,S.enableSMB_with_temptarget=s,S.enableUAM=c,S.curve=p,S.offline_hotspot=v,S.bolus_increment=h,S.smb_delivery_ratio=g,S.maxDelta_bg_threshold=_,S.adjustmentFactor=d,S.adjustmentFactorSigmoid=y,S.useNewFormula=b,S.enableDynamicCR=m,S.sigmoid=w,S.weightPercentage=x,S.tddAdjBasal=j,S.threshold_setting=B,S.enableSMB_high_bg=A,S.enableSMB_high_bg_target=k,console.error(S),S},n.exports=f},1705:(n,t,r)=>{var e=r(2543),u=null;function i(n,t){var r=t;void 0===t&&(r=new Date);var i=60*r.getHours()+r.getMinutes();if(u&&i>=u.offset&&i=c.offset&&i{var e=r(2647);function u(n,t){return o(i(n,t))}function i(n,t){for(var r=n.targets,u=n.temptargets,i=new Date,o=r.targets[r.targets.length-1],a=0;a=e(r.targets[a].offset)&&i=c&&0===u[a].duration){f=o;break}if(!u[a].targetBottom||!u[a].targetTop){console.error("eventualBG target range invalid: "+u[a].targetBottom+"-"+u[a].targetTop);break}if(i>=c&&i"']/g,K=RegExp(Z.source),H=RegExp(G.source),V=/<%-([\s\S]+?)%>/g,J=/<%([\s\S]+?)%>/g,Y=/<%=([\s\S]+?)%>/g,Q=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,X=/^\w*$/,nn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,tn=/[\\^$.*+?()[\]{}|]/g,rn=RegExp(tn.source),en=/^\s+/,un=/\s/,on=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,an=/\{\n\/\* \[wrapped with (.+)\] \*/,fn=/,? & /,cn=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,ln=/[()=,{}\[\]\/\s]/,sn=/\\(\\)?/g,hn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,_n=/\w*$/,pn=/^[-+]0x[0-9a-f]+$/i,vn=/^0b[01]+$/i,gn=/^\[object .+?Constructor\]$/,dn=/^0o[0-7]+$/i,yn=/^(?:0|[1-9]\d*)$/,bn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,mn=/($^)/,wn=/['\n\r\u2028\u2029\\]/g,xn="\\ud800-\\udfff",jn="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",An="\\u2700-\\u27bf",kn="a-z\\xdf-\\xf6\\xf8-\\xff",Bn="A-Z\\xc0-\\xd6\\xd8-\\xde",Sn="\\ufe0e\\ufe0f",Mn="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",On="["+xn+"]",Rn="["+Mn+"]",In="["+jn+"]",En="\\d+",Cn="["+An+"]",zn="["+kn+"]",Ln="[^"+xn+Mn+En+An+kn+Bn+"]",Tn="\\ud83c[\\udffb-\\udfff]",Dn="[^"+xn+"]",Un="(?:\\ud83c[\\udde6-\\uddff]){2}",Wn="[\\ud800-\\udbff][\\udc00-\\udfff]",Fn="["+Bn+"]",Pn="\\u200d",$n="(?:"+zn+"|"+Ln+")",Nn="(?:"+Fn+"|"+Ln+")",qn="(?:['’](?:d|ll|m|re|s|t|ve))?",Zn="(?:['’](?:D|LL|M|RE|S|T|VE))?",Gn="(?:"+In+"|"+Tn+")?",Kn="["+Sn+"]?",Hn=Kn+Gn+"(?:"+Pn+"(?:"+[Dn,Un,Wn].join("|")+")"+Kn+Gn+")*",Vn="(?:"+[Cn,Un,Wn].join("|")+")"+Hn,Jn="(?:"+[Dn+In+"?",In,Un,Wn,On].join("|")+")",Yn=RegExp("['’]","g"),Qn=RegExp(In,"g"),Xn=RegExp(Tn+"(?="+Tn+")|"+Jn+Hn,"g"),nt=RegExp([Fn+"?"+zn+"+"+qn+"(?="+[Rn,Fn,"$"].join("|")+")",Nn+"+"+Zn+"(?="+[Rn,Fn+$n,"$"].join("|")+")",Fn+"?"+$n+"+"+qn,Fn+"+"+Zn,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",En,Vn].join("|"),"g"),tt=RegExp("["+Pn+xn+jn+Sn+"]"),rt=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,et=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],ut=-1,it={};it[C]=it[z]=it[L]=it[T]=it[D]=it[U]=it[W]=it[F]=it[P]=!0,it[v]=it[g]=it[I]=it[d]=it[E]=it[y]=it[b]=it[m]=it[x]=it[j]=it[A]=it[B]=it[S]=it[M]=it[R]=!1;var ot={};ot[v]=ot[g]=ot[I]=ot[E]=ot[d]=ot[y]=ot[C]=ot[z]=ot[L]=ot[T]=ot[D]=ot[x]=ot[j]=ot[A]=ot[B]=ot[S]=ot[M]=ot[O]=ot[U]=ot[W]=ot[F]=ot[P]=!0,ot[b]=ot[m]=ot[R]=!1;var at={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ft=parseFloat,ct=parseInt,lt="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,st="object"==typeof self&&self&&self.Object===Object&&self,ht=lt||st||Function("return this")(),_t=t&&!t.nodeType&&t,pt=_t&&n&&!n.nodeType&&n,vt=pt&&pt.exports===_t,gt=vt&<.process,dt=function(){try{return pt&&pt.require&&pt.require("util").types||gt&>.binding&>.binding("util")}catch(n){}}(),yt=dt&&dt.isArrayBuffer,bt=dt&&dt.isDate,mt=dt&&dt.isMap,wt=dt&&dt.isRegExp,xt=dt&&dt.isSet,jt=dt&&dt.isTypedArray;function At(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function kt(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u-1}function It(n,t,r){for(var e=-1,u=null==n?0:n.length;++e-1;);return r}function nr(n,t){for(var r=n.length;r--&&Ft(t,n[r],0)>-1;);return r}var tr=Zt({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"}),rr=Zt({"&":"&","<":"<",">":">",'"':""","'":"'"});function er(n){return"\\"+at[n]}function ur(n){return tt.test(n)}function ir(n){var t=-1,r=Array(n.size);return n.forEach((function(n,e){r[++t]=[e,n]})),r}function or(n,t){return function(r){return n(t(r))}}function ar(n,t){for(var r=-1,e=n.length,u=0,i=[];++r",""":'"',"'":"'"}),_r=function n(t){var r,e=(t=null==t?ht:_r.defaults(ht.Object(),t,_r.pick(ht,et))).Array,un=t.Date,xn=t.Error,jn=t.Function,An=t.Math,kn=t.Object,Bn=t.RegExp,Sn=t.String,Mn=t.TypeError,On=e.prototype,Rn=jn.prototype,In=kn.prototype,En=t["__core-js_shared__"],Cn=Rn.toString,zn=In.hasOwnProperty,Ln=0,Tn=(r=/[^.]+$/.exec(En&&En.keys&&En.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"",Dn=In.toString,Un=Cn.call(kn),Wn=ht._,Fn=Bn("^"+Cn.call(zn).replace(tn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Pn=vt?t.Buffer:u,$n=t.Symbol,Nn=t.Uint8Array,qn=Pn?Pn.allocUnsafe:u,Zn=or(kn.getPrototypeOf,kn),Gn=kn.create,Kn=In.propertyIsEnumerable,Hn=On.splice,Vn=$n?$n.isConcatSpreadable:u,Jn=$n?$n.iterator:u,Xn=$n?$n.toStringTag:u,tt=function(){try{var n=ai(kn,"defineProperty");return n({},"",{}),n}catch(n){}}(),at=t.clearTimeout!==ht.clearTimeout&&t.clearTimeout,lt=un&&un.now!==ht.Date.now&&un.now,st=t.setTimeout!==ht.setTimeout&&t.setTimeout,_t=An.ceil,pt=An.floor,gt=kn.getOwnPropertySymbols,dt=Pn?Pn.isBuffer:u,Dt=t.isFinite,Zt=On.join,pr=or(kn.keys,kn),vr=An.max,gr=An.min,dr=un.now,yr=t.parseInt,br=An.random,mr=On.reverse,wr=ai(t,"DataView"),xr=ai(t,"Map"),jr=ai(t,"Promise"),Ar=ai(t,"Set"),kr=ai(t,"WeakMap"),Br=ai(kn,"create"),Sr=kr&&new kr,Mr={},Or=Ci(wr),Rr=Ci(xr),Ir=Ci(jr),Er=Ci(Ar),Cr=Ci(kr),zr=$n?$n.prototype:u,Lr=zr?zr.valueOf:u,Tr=zr?zr.toString:u;function Dr(n){if(Yo(n)&&!Fo(n)&&!(n instanceof Pr)){if(n instanceof Fr)return n;if(zn.call(n,"__wrapped__"))return zi(n)}return new Fr(n)}var Ur=function(){function n(){}return function(t){if(!Jo(t))return{};if(Gn)return Gn(t);n.prototype=t;var r=new n;return n.prototype=u,r}}();function Wr(){}function Fr(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=u}function Pr(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=_,this.__views__=[]}function $r(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t=t?n:t)),n}function ie(n,t,r,e,i,o){var a,f=1&t,c=2&t,l=4&t;if(r&&(a=i?r(n,e,i,o):r(n)),a!==u)return a;if(!Jo(n))return n;var s=Fo(n);if(s){if(a=function(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&zn.call(n,"index")&&(r.index=n.index,r.input=n.input),r}(n),!f)return ku(n,a)}else{var h=li(n),_=h==m||h==w;if(qo(n))return bu(n,f);if(h==A||h==v||_&&!i){if(a=c||_?{}:hi(n),!f)return c?function(n,t){return Bu(n,ci(n),t)}(n,function(n,t){return n&&Bu(t,Ma(t),n)}(a,n)):function(n,t){return Bu(n,fi(n),t)}(n,te(a,n))}else{if(!ot[h])return i?n:{};a=function(n,t,r){var e,u=n.constructor;switch(t){case I:return mu(n);case d:case y:return new u(+n);case E:return function(n,t){var r=t?mu(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.byteLength)}(n,r);case C:case z:case L:case T:case D:case U:case W:case F:case P:return wu(n,r);case x:return new u;case j:case M:return new u(n);case B:return function(n){var t=new n.constructor(n.source,_n.exec(n));return t.lastIndex=n.lastIndex,t}(n);case S:return new u;case O:return e=n,Lr?kn(Lr.call(e)):{}}}(n,h,f)}}o||(o=new Gr);var p=o.get(n);if(p)return p;o.set(n,a),ra(n)?n.forEach((function(e){a.add(ie(e,t,r,e,n,o))})):Qo(n)&&n.forEach((function(e,u){a.set(u,ie(e,t,r,u,n,o))}));var g=s?u:(l?c?ni:Xu:c?Ma:Sa)(n);return Bt(g||n,(function(e,u){g&&(e=n[u=e]),Qr(a,u,ie(e,t,r,u,n,o))})),a}function oe(n,t,r){var e=r.length;if(null==n)return!e;for(n=kn(n);e--;){var i=r[e],o=t[i],a=n[i];if(a===u&&!(i in n)||!o(a))return!1}return!0}function ae(n,t,r){if("function"!=typeof n)throw new Mn(i);return Bi((function(){n.apply(u,r)}),t)}function fe(n,t,r,e){var u=-1,i=Rt,o=!0,a=n.length,f=[],c=t.length;if(!a)return f;r&&(t=Et(t,Jt(r))),e?(i=It,o=!1):t.length>=200&&(i=Qt,o=!1,t=new Zr(t));n:for(;++u-1},Nr.prototype.set=function(n,t){var r=this.__data__,e=Xr(r,n);return e<0?(++this.size,r.push([n,t])):r[e][1]=t,this},qr.prototype.clear=function(){this.size=0,this.__data__={hash:new $r,map:new(xr||Nr),string:new $r}},qr.prototype.delete=function(n){var t=ii(this,n).delete(n);return this.size-=t?1:0,t},qr.prototype.get=function(n){return ii(this,n).get(n)},qr.prototype.has=function(n){return ii(this,n).has(n)},qr.prototype.set=function(n,t){var r=ii(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},Zr.prototype.add=Zr.prototype.push=function(n){return this.__data__.set(n,o),this},Zr.prototype.has=function(n){return this.__data__.has(n)},Gr.prototype.clear=function(){this.__data__=new Nr,this.size=0},Gr.prototype.delete=function(n){var t=this.__data__,r=t.delete(n);return this.size=t.size,r},Gr.prototype.get=function(n){return this.__data__.get(n)},Gr.prototype.has=function(n){return this.__data__.has(n)},Gr.prototype.set=function(n,t){var r=this.__data__;if(r instanceof Nr){var e=r.__data__;if(!xr||e.length<199)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new qr(e)}return r.set(n,t),this.size=r.size,this};var ce=Ou(de),le=Ou(ye,!0);function se(n,t){var r=!0;return ce(n,(function(n,e,u){return r=!!t(n,e,u)})),r}function he(n,t,r){for(var e=-1,i=n.length;++e0&&r(a)?t>1?pe(a,t-1,r,e,u):Ct(u,a):e||(u[u.length]=a)}return u}var ve=Ru(),ge=Ru(!0);function de(n,t){return n&&ve(n,t,Sa)}function ye(n,t){return n&&ge(n,t,Sa)}function be(n,t){return Ot(t,(function(t){return Ko(n[t])}))}function me(n,t){for(var r=0,e=(t=vu(t,n)).length;null!=n&&rt}function Ae(n,t){return null!=n&&zn.call(n,t)}function ke(n,t){return null!=n&&t in kn(n)}function Be(n,t,r){for(var i=r?It:Rt,o=n[0].length,a=n.length,f=a,c=e(a),l=1/0,s=[];f--;){var h=n[f];f&&t&&(h=Et(h,Jt(t))),l=gr(h.length,l),c[f]=!r&&(t||o>=120&&h.length>=120)?new Zr(f&&h):u}h=n[0];var _=-1,p=c[0];n:for(;++_=a?f:f*("desc"==r[e]?-1:1)}return n.index-t.index}(n,t,r)}))}function Pe(n,t,r){for(var e=-1,u=t.length,i={};++e-1;)a!==n&&Hn.call(a,f,1),Hn.call(n,f,1);return n}function Ne(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r];if(r==e||u!==i){var i=u;pi(u)?Hn.call(n,u,1):au(n,u)}}return n}function qe(n,t){return n+pt(br()*(t-n+1))}function Ze(n,t){var r="";if(!n||t<1||t>s)return r;do{t%2&&(r+=n),(t=pt(t/2))&&(n+=n)}while(t);return r}function Ge(n,t){return Si(xi(n,t,Xa),n+"")}function Ke(n){return Hr(Ta(n))}function He(n,t){var r=Ta(n);return Ri(r,ue(t,0,r.length))}function Ve(n,t,r,e){if(!Jo(n))return n;for(var i=-1,o=(t=vu(t,n)).length,a=o-1,f=n;null!=f&&++ii?0:i+t),(r=r>i?i:r)<0&&(r+=i),i=t>r?0:r-t>>>0,t>>>=0;for(var o=e(i);++u>>1,o=n[i];null!==o&&!ua(o)&&(r?o<=t:o=200){var c=t?null:Zu(n);if(c)return fr(c);o=!1,u=Qt,f=new Zr}else f=t?[]:a;n:for(;++e=e?n:Xe(n,t,r)}var yu=at||function(n){return ht.clearTimeout(n)};function bu(n,t){if(t)return n.slice();var r=n.length,e=qn?qn(r):new n.constructor(r);return n.copy(e),e}function mu(n){var t=new n.constructor(n.byteLength);return new Nn(t).set(new Nn(n)),t}function wu(n,t){var r=t?mu(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.length)}function xu(n,t){if(n!==t){var r=n!==u,e=null===n,i=n==n,o=ua(n),a=t!==u,f=null===t,c=t==t,l=ua(t);if(!f&&!l&&!o&&n>t||o&&a&&c&&!f&&!l||e&&a&&c||!r&&c||!i)return 1;if(!e&&!o&&!l&&n1?r[i-1]:u,a=i>2?r[2]:u;for(o=n.length>3&&"function"==typeof o?(i--,o):u,a&&vi(r[0],r[1],a)&&(o=i<3?u:o,i=1),t=kn(t);++e-1?i[o?t[a]:a]:u}}function Lu(n){return Qu((function(t){var r=t.length,e=r,o=Fr.prototype.thru;for(n&&t.reverse();e--;){var a=t[e];if("function"!=typeof a)throw new Mn(i);if(o&&!f&&"wrapper"==ri(a))var f=new Fr([],!0)}for(e=f?e:r;++e1&&m.reverse(),_&&sf))return!1;var l=o.get(n),s=o.get(t);if(l&&s)return l==t&&s==n;var h=-1,_=!0,p=2&r?new Zr:u;for(o.set(n,t),o.set(t,n);++h-1&&n%1==0&&n1?"& ":"")+t[e],t=t.join(r>2?", ":" "),n.replace(on,"{\n/* [wrapped with "+t+"] */\n")}(e,function(n,t){return Bt(p,(function(r){var e="_."+r[0];t&r[1]&&!Rt(n,e)&&n.push(e)})),n.sort()}(function(n){var t=n.match(an);return t?t[1].split(fn):[]}(e),r)))}function Oi(n){var t=0,r=0;return function(){var e=dr(),i=16-(e-r);if(r=e,i>0){if(++t>=800)return arguments[0]}else t=0;return n.apply(u,arguments)}}function Ri(n,t){var r=-1,e=n.length,i=e-1;for(t=t===u?e:t;++r1?n[t-1]:u;return r="function"==typeof r?(n.pop(),r):u,no(n,r)}));function ao(n){var t=Dr(n);return t.__chain__=!0,t}function fo(n,t){return t(n)}var co=Qu((function(n){var t=n.length,r=t?n[0]:0,e=this.__wrapped__,i=function(t){return ee(t,n)};return!(t>1||this.__actions__.length)&&e instanceof Pr&&pi(r)?((e=e.slice(r,+r+(t?1:0))).__actions__.push({func:fo,args:[i],thisArg:u}),new Fr(e,this.__chain__).thru((function(n){return t&&!n.length&&n.push(u),n}))):this.thru(i)})),lo=Su((function(n,t,r){zn.call(n,r)?++n[r]:re(n,r,1)})),so=zu(Ui),ho=zu(Wi);function _o(n,t){return(Fo(n)?Bt:ce)(n,ui(t,3))}function po(n,t){return(Fo(n)?St:le)(n,ui(t,3))}var vo=Su((function(n,t,r){zn.call(n,r)?n[r].push(t):re(n,r,[t])})),go=Ge((function(n,t,r){var u=-1,i="function"==typeof t,o=$o(n)?e(n.length):[];return ce(n,(function(n){o[++u]=i?At(t,n,r):Se(n,t,r)})),o})),yo=Su((function(n,t,r){re(n,r,t)}));function bo(n,t){return(Fo(n)?Et:Le)(n,ui(t,3))}var mo=Su((function(n,t,r){n[r?0:1].push(t)}),(function(){return[[],[]]})),wo=Ge((function(n,t){if(null==n)return[];var r=t.length;return r>1&&vi(n,t[0],t[1])?t=[]:r>2&&vi(t[0],t[1],t[2])&&(t=[t[0]]),Fe(n,pe(t,1),[])})),xo=lt||function(){return ht.Date.now()};function jo(n,t,r){return t=r?u:t,t=n&&null==t?n.length:t,Ku(n,c,u,u,u,u,t)}function Ao(n,t){var r;if("function"!=typeof t)throw new Mn(i);return n=la(n),function(){return--n>0&&(r=t.apply(this,arguments)),n<=1&&(t=u),r}}var ko=Ge((function(n,t,r){var e=1;if(r.length){var u=ar(r,ei(ko));e|=f}return Ku(n,e,t,r,u)})),Bo=Ge((function(n,t,r){var e=3;if(r.length){var u=ar(r,ei(Bo));e|=f}return Ku(t,e,n,r,u)}));function So(n,t,r){var e,o,a,f,c,l,s=0,h=!1,_=!1,p=!0;if("function"!=typeof n)throw new Mn(i);function v(t){var r=e,i=o;return e=o=u,s=t,f=n.apply(i,r)}function g(n){var r=n-l;return l===u||r>=t||r<0||_&&n-s>=a}function d(){var n=xo();if(g(n))return y(n);c=Bi(d,function(n){var r=t-(n-l);return _?gr(r,a-(n-s)):r}(n))}function y(n){return c=u,p&&e?v(n):(e=o=u,f)}function b(){var n=xo(),r=g(n);if(e=arguments,o=this,l=n,r){if(c===u)return function(n){return s=n,c=Bi(d,t),h?v(n):f}(l);if(_)return yu(c),c=Bi(d,t),v(l)}return c===u&&(c=Bi(d,t)),f}return t=ha(t)||0,Jo(r)&&(h=!!r.leading,a=(_="maxWait"in r)?vr(ha(r.maxWait)||0,t):a,p="trailing"in r?!!r.trailing:p),b.cancel=function(){c!==u&&yu(c),s=0,e=l=o=c=u},b.flush=function(){return c===u?f:y(xo())},b}var Mo=Ge((function(n,t){return ae(n,1,t)})),Oo=Ge((function(n,t,r){return ae(n,ha(t)||0,r)}));function Ro(n,t){if("function"!=typeof n||null!=t&&"function"!=typeof t)throw new Mn(i);var r=function(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;if(i.has(u))return i.get(u);var o=n.apply(this,e);return r.cache=i.set(u,o)||i,o};return r.cache=new(Ro.Cache||qr),r}function Io(n){if("function"!=typeof n)throw new Mn(i);return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}Ro.Cache=qr;var Eo=gu((function(n,t){var r=(t=1==t.length&&Fo(t[0])?Et(t[0],Jt(ui())):Et(pe(t,1),Jt(ui()))).length;return Ge((function(e){for(var u=-1,i=gr(e.length,r);++u=t})),Wo=Me(function(){return arguments}())?Me:function(n){return Yo(n)&&zn.call(n,"callee")&&!Kn.call(n,"callee")},Fo=e.isArray,Po=yt?Jt(yt):function(n){return Yo(n)&&xe(n)==I};function $o(n){return null!=n&&Vo(n.length)&&!Ko(n)}function No(n){return Yo(n)&&$o(n)}var qo=dt||_f,Zo=bt?Jt(bt):function(n){return Yo(n)&&xe(n)==y};function Go(n){if(!Yo(n))return!1;var t=xe(n);return t==b||"[object DOMException]"==t||"string"==typeof n.message&&"string"==typeof n.name&&!na(n)}function Ko(n){if(!Jo(n))return!1;var t=xe(n);return t==m||t==w||"[object AsyncFunction]"==t||"[object Proxy]"==t}function Ho(n){return"number"==typeof n&&n==la(n)}function Vo(n){return"number"==typeof n&&n>-1&&n%1==0&&n<=s}function Jo(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function Yo(n){return null!=n&&"object"==typeof n}var Qo=mt?Jt(mt):function(n){return Yo(n)&&li(n)==x};function Xo(n){return"number"==typeof n||Yo(n)&&xe(n)==j}function na(n){if(!Yo(n)||xe(n)!=A)return!1;var t=Zn(n);if(null===t)return!0;var r=zn.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&Cn.call(r)==Un}var ta=wt?Jt(wt):function(n){return Yo(n)&&xe(n)==B},ra=xt?Jt(xt):function(n){return Yo(n)&&li(n)==S};function ea(n){return"string"==typeof n||!Fo(n)&&Yo(n)&&xe(n)==M}function ua(n){return"symbol"==typeof n||Yo(n)&&xe(n)==O}var ia=jt?Jt(jt):function(n){return Yo(n)&&Vo(n.length)&&!!it[xe(n)]},oa=$u(ze),aa=$u((function(n,t){return n<=t}));function fa(n){if(!n)return[];if($o(n))return ea(n)?lr(n):ku(n);if(Jn&&n[Jn])return function(n){for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}(n[Jn]());var t=li(n);return(t==x?ir:t==S?fr:Ta)(n)}function ca(n){return n?(n=ha(n))===l||n===-1/0?17976931348623157e292*(n<0?-1:1):n==n?n:0:0===n?n:0}function la(n){var t=ca(n),r=t%1;return t==t?r?t-r:t:0}function sa(n){return n?ue(la(n),0,_):0}function ha(n){if("number"==typeof n)return n;if(ua(n))return h;if(Jo(n)){var t="function"==typeof n.valueOf?n.valueOf():n;n=Jo(t)?t+"":t}if("string"!=typeof n)return 0===n?n:+n;n=Vt(n);var r=vn.test(n);return r||dn.test(n)?ct(n.slice(2),r?2:8):pn.test(n)?h:+n}function _a(n){return Bu(n,Ma(n))}function pa(n){return null==n?"":iu(n)}var va=Mu((function(n,t){if(bi(t)||$o(t))Bu(t,Sa(t),n);else for(var r in t)zn.call(t,r)&&Qr(n,r,t[r])})),ga=Mu((function(n,t){Bu(t,Ma(t),n)})),da=Mu((function(n,t,r,e){Bu(t,Ma(t),n,e)})),ya=Mu((function(n,t,r,e){Bu(t,Sa(t),n,e)})),ba=Qu(ee),ma=Ge((function(n,t){n=kn(n);var r=-1,e=t.length,i=e>2?t[2]:u;for(i&&vi(t[0],t[1],i)&&(e=1);++r1),t})),Bu(n,ni(n),r),e&&(r=ie(r,7,Ju));for(var u=t.length;u--;)au(r,t[u]);return r})),Ea=Qu((function(n,t){return null==n?{}:function(n,t){return Pe(n,t,(function(t,r){return ja(n,r)}))}(n,t)}));function Ca(n,t){if(null==n)return{};var r=Et(ni(n),(function(n){return[n]}));return t=ui(t),Pe(n,r,(function(n,r){return t(n,r[0])}))}var za=Gu(Sa),La=Gu(Ma);function Ta(n){return null==n?[]:Yt(n,Sa(n))}var Da=Eu((function(n,t,r){return t=t.toLowerCase(),n+(r?Ua(t):t)}));function Ua(n){return Ga(pa(n).toLowerCase())}function Wa(n){return(n=pa(n))&&n.replace(bn,tr).replace(Qn,"")}var Fa=Eu((function(n,t,r){return n+(r?"-":"")+t.toLowerCase()})),Pa=Eu((function(n,t,r){return n+(r?" ":"")+t.toLowerCase()})),$a=Iu("toLowerCase"),Na=Eu((function(n,t,r){return n+(r?"_":"")+t.toLowerCase()})),qa=Eu((function(n,t,r){return n+(r?" ":"")+Ga(t)})),Za=Eu((function(n,t,r){return n+(r?" ":"")+t.toUpperCase()})),Ga=Iu("toUpperCase");function Ka(n,t,r){return n=pa(n),(t=r?u:t)===u?function(n){return rt.test(n)}(n)?function(n){return n.match(nt)||[]}(n):function(n){return n.match(cn)||[]}(n):n.match(t)||[]}var Ha=Ge((function(n,t){try{return At(n,u,t)}catch(n){return Go(n)?n:new xn(n)}})),Va=Qu((function(n,t){return Bt(t,(function(t){t=Ei(t),re(n,t,ko(n[t],n))})),n}));function Ja(n){return function(){return n}}var Ya=Lu(),Qa=Lu(!0);function Xa(n){return n}function nf(n){return Ee("function"==typeof n?n:ie(n,1))}var tf=Ge((function(n,t){return function(r){return Se(r,n,t)}})),rf=Ge((function(n,t){return function(r){return Se(n,r,t)}}));function ef(n,t,r){var e=Sa(t),u=be(t,e);null!=r||Jo(t)&&(u.length||!e.length)||(r=t,t=n,n=this,u=be(t,Sa(t)));var i=!(Jo(r)&&"chain"in r&&!r.chain),o=Ko(n);return Bt(u,(function(r){var e=t[r];n[r]=e,o&&(n.prototype[r]=function(){var t=this.__chain__;if(i||t){var r=n(this.__wrapped__);return(r.__actions__=ku(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,Ct([this.value()],arguments))})})),n}function uf(){}var of=Wu(Et),af=Wu(Mt),ff=Wu(Tt);function cf(n){return gi(n)?qt(Ei(n)):function(n){return function(t){return me(t,n)}}(n)}var lf=Pu(),sf=Pu(!0);function hf(){return[]}function _f(){return!1}var pf,vf=Uu((function(n,t){return n+t}),0),gf=qu("ceil"),df=Uu((function(n,t){return n/t}),1),yf=qu("floor"),bf=Uu((function(n,t){return n*t}),1),mf=qu("round"),wf=Uu((function(n,t){return n-t}),0);return Dr.after=function(n,t){if("function"!=typeof t)throw new Mn(i);return n=la(n),function(){if(--n<1)return t.apply(this,arguments)}},Dr.ary=jo,Dr.assign=va,Dr.assignIn=ga,Dr.assignInWith=da,Dr.assignWith=ya,Dr.at=ba,Dr.before=Ao,Dr.bind=ko,Dr.bindAll=Va,Dr.bindKey=Bo,Dr.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return Fo(n)?n:[n]},Dr.chain=ao,Dr.chunk=function(n,t,r){t=(r?vi(n,t,r):t===u)?1:vr(la(t),0);var i=null==n?0:n.length;if(!i||t<1)return[];for(var o=0,a=0,f=e(_t(i/t));oi?0:i+r),(e=e===u||e>i?i:la(e))<0&&(e+=i),e=r>e?0:sa(e);r>>0)?(n=pa(n))&&("string"==typeof t||null!=t&&!ta(t))&&!(t=iu(t))&&ur(n)?du(lr(n),0,r):n.split(t,r):[]},Dr.spread=function(n,t){if("function"!=typeof n)throw new Mn(i);return t=null==t?0:vr(la(t),0),Ge((function(r){var e=r[t],u=du(r,0,t);return e&&Ct(u,e),At(n,this,u)}))},Dr.tail=function(n){var t=null==n?0:n.length;return t?Xe(n,1,t):[]},Dr.take=function(n,t,r){return n&&n.length?Xe(n,0,(t=r||t===u?1:la(t))<0?0:t):[]},Dr.takeRight=function(n,t,r){var e=null==n?0:n.length;return e?Xe(n,(t=e-(t=r||t===u?1:la(t)))<0?0:t,e):[]},Dr.takeRightWhile=function(n,t){return n&&n.length?cu(n,ui(t,3),!1,!0):[]},Dr.takeWhile=function(n,t){return n&&n.length?cu(n,ui(t,3)):[]},Dr.tap=function(n,t){return t(n),n},Dr.throttle=function(n,t,r){var e=!0,u=!0;if("function"!=typeof n)throw new Mn(i);return Jo(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),So(n,t,{leading:e,maxWait:t,trailing:u})},Dr.thru=fo,Dr.toArray=fa,Dr.toPairs=za,Dr.toPairsIn=La,Dr.toPath=function(n){return Fo(n)?Et(n,Ei):ua(n)?[n]:ku(Ii(pa(n)))},Dr.toPlainObject=_a,Dr.transform=function(n,t,r){var e=Fo(n),u=e||qo(n)||ia(n);if(t=ui(t,4),null==r){var i=n&&n.constructor;r=u?e?new i:[]:Jo(n)&&Ko(i)?Ur(Zn(n)):{}}return(u?Bt:de)(n,(function(n,e,u){return t(r,n,e,u)})),r},Dr.unary=function(n){return jo(n,1)},Dr.union=Ji,Dr.unionBy=Yi,Dr.unionWith=Qi,Dr.uniq=function(n){return n&&n.length?ou(n):[]},Dr.uniqBy=function(n,t){return n&&n.length?ou(n,ui(t,2)):[]},Dr.uniqWith=function(n,t){return t="function"==typeof t?t:u,n&&n.length?ou(n,u,t):[]},Dr.unset=function(n,t){return null==n||au(n,t)},Dr.unzip=Xi,Dr.unzipWith=no,Dr.update=function(n,t,r){return null==n?n:fu(n,t,pu(r))},Dr.updateWith=function(n,t,r,e){return e="function"==typeof e?e:u,null==n?n:fu(n,t,pu(r),e)},Dr.values=Ta,Dr.valuesIn=function(n){return null==n?[]:Yt(n,Ma(n))},Dr.without=to,Dr.words=Ka,Dr.wrap=function(n,t){return Co(pu(t),n)},Dr.xor=ro,Dr.xorBy=eo,Dr.xorWith=uo,Dr.zip=io,Dr.zipObject=function(n,t){return hu(n||[],t||[],Qr)},Dr.zipObjectDeep=function(n,t){return hu(n||[],t||[],Ve)},Dr.zipWith=oo,Dr.entries=za,Dr.entriesIn=La,Dr.extend=ga,Dr.extendWith=da,ef(Dr,Dr),Dr.add=vf,Dr.attempt=Ha,Dr.camelCase=Da,Dr.capitalize=Ua,Dr.ceil=gf,Dr.clamp=function(n,t,r){return r===u&&(r=t,t=u),r!==u&&(r=(r=ha(r))==r?r:0),t!==u&&(t=(t=ha(t))==t?t:0),ue(ha(n),t,r)},Dr.clone=function(n){return ie(n,4)},Dr.cloneDeep=function(n){return ie(n,5)},Dr.cloneDeepWith=function(n,t){return ie(n,5,t="function"==typeof t?t:u)},Dr.cloneWith=function(n,t){return ie(n,4,t="function"==typeof t?t:u)},Dr.conformsTo=function(n,t){return null==t||oe(n,t,Sa(t))},Dr.deburr=Wa,Dr.defaultTo=function(n,t){return null==n||n!=n?t:n},Dr.divide=df,Dr.endsWith=function(n,t,r){n=pa(n),t=iu(t);var e=n.length,i=r=r===u?e:ue(la(r),0,e);return(r-=t.length)>=0&&n.slice(r,i)==t},Dr.eq=To,Dr.escape=function(n){return(n=pa(n))&&H.test(n)?n.replace(G,rr):n},Dr.escapeRegExp=function(n){return(n=pa(n))&&rn.test(n)?n.replace(tn,"\\$&"):n},Dr.every=function(n,t,r){var e=Fo(n)?Mt:se;return r&&vi(n,t,r)&&(t=u),e(n,ui(t,3))},Dr.find=so,Dr.findIndex=Ui,Dr.findKey=function(n,t){return Ut(n,ui(t,3),de)},Dr.findLast=ho,Dr.findLastIndex=Wi,Dr.findLastKey=function(n,t){return Ut(n,ui(t,3),ye)},Dr.floor=yf,Dr.forEach=_o,Dr.forEachRight=po,Dr.forIn=function(n,t){return null==n?n:ve(n,ui(t,3),Ma)},Dr.forInRight=function(n,t){return null==n?n:ge(n,ui(t,3),Ma)},Dr.forOwn=function(n,t){return n&&de(n,ui(t,3))},Dr.forOwnRight=function(n,t){return n&&ye(n,ui(t,3))},Dr.get=xa,Dr.gt=Do,Dr.gte=Uo,Dr.has=function(n,t){return null!=n&&si(n,t,Ae)},Dr.hasIn=ja,Dr.head=Pi,Dr.identity=Xa,Dr.includes=function(n,t,r,e){n=$o(n)?n:Ta(n),r=r&&!e?la(r):0;var u=n.length;return r<0&&(r=vr(u+r,0)),ea(n)?r<=u&&n.indexOf(t,r)>-1:!!u&&Ft(n,t,r)>-1},Dr.indexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=null==r?0:la(r);return u<0&&(u=vr(e+u,0)),Ft(n,t,u)},Dr.inRange=function(n,t,r){return t=ca(t),r===u?(r=t,t=0):r=ca(r),function(n,t,r){return n>=gr(t,r)&&n=-9007199254740991&&n<=s},Dr.isSet=ra,Dr.isString=ea,Dr.isSymbol=ua,Dr.isTypedArray=ia,Dr.isUndefined=function(n){return n===u},Dr.isWeakMap=function(n){return Yo(n)&&li(n)==R},Dr.isWeakSet=function(n){return Yo(n)&&"[object WeakSet]"==xe(n)},Dr.join=function(n,t){return null==n?"":Zt.call(n,t)},Dr.kebabCase=Fa,Dr.last=Zi,Dr.lastIndexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var i=e;return r!==u&&(i=(i=la(r))<0?vr(e+i,0):gr(i,e-1)),t==t?function(n,t,r){for(var e=r+1;e--;)if(n[e]===t)return e;return e}(n,t,i):Wt(n,$t,i,!0)},Dr.lowerCase=Pa,Dr.lowerFirst=$a,Dr.lt=oa,Dr.lte=aa,Dr.max=function(n){return n&&n.length?he(n,Xa,je):u},Dr.maxBy=function(n,t){return n&&n.length?he(n,ui(t,2),je):u},Dr.mean=function(n){return Nt(n,Xa)},Dr.meanBy=function(n,t){return Nt(n,ui(t,2))},Dr.min=function(n){return n&&n.length?he(n,Xa,ze):u},Dr.minBy=function(n,t){return n&&n.length?he(n,ui(t,2),ze):u},Dr.stubArray=hf,Dr.stubFalse=_f,Dr.stubObject=function(){return{}},Dr.stubString=function(){return""},Dr.stubTrue=function(){return!0},Dr.multiply=bf,Dr.nth=function(n,t){return n&&n.length?We(n,la(t)):u},Dr.noConflict=function(){return ht._===this&&(ht._=Wn),this},Dr.noop=uf,Dr.now=xo,Dr.pad=function(n,t,r){n=pa(n);var e=(t=la(t))?cr(n):0;if(!t||e>=t)return n;var u=(t-e)/2;return Fu(pt(u),r)+n+Fu(_t(u),r)},Dr.padEnd=function(n,t,r){n=pa(n);var e=(t=la(t))?cr(n):0;return t&&et){var e=n;n=t,t=e}if(r||n%1||t%1){var i=br();return gr(n+i*(t-n+ft("1e-"+((i+"").length-1))),t)}return qe(n,t)},Dr.reduce=function(n,t,r){var e=Fo(n)?zt:Gt,u=arguments.length<3;return e(n,ui(t,4),r,u,ce)},Dr.reduceRight=function(n,t,r){var e=Fo(n)?Lt:Gt,u=arguments.length<3;return e(n,ui(t,4),r,u,le)},Dr.repeat=function(n,t,r){return t=(r?vi(n,t,r):t===u)?1:la(t),Ze(pa(n),t)},Dr.replace=function(){var n=arguments,t=pa(n[0]);return n.length<3?t:t.replace(n[1],n[2])},Dr.result=function(n,t,r){var e=-1,i=(t=vu(t,n)).length;for(i||(i=1,n=u);++es)return[];var r=_,e=gr(n,_);t=ui(t),n-=_;for(var u=Ht(e,t);++r=o)return n;var f=r-cr(e);if(f<1)return e;var c=a?du(a,0,f).join(""):n.slice(0,f);if(i===u)return c+e;if(a&&(f+=c.length-f),ta(i)){if(n.slice(f).search(i)){var l,s=c;for(i.global||(i=Bn(i.source,pa(_n.exec(i))+"g")),i.lastIndex=0;l=i.exec(s);)var h=l.index;c=c.slice(0,h===u?f:h)}}else if(n.indexOf(iu(i),f)!=f){var _=c.lastIndexOf(i);_>-1&&(c=c.slice(0,_))}return c+e},Dr.unescape=function(n){return(n=pa(n))&&K.test(n)?n.replace(Z,hr):n},Dr.uniqueId=function(n){var t=++Ln;return pa(n)+t},Dr.upperCase=Za,Dr.upperFirst=Ga,Dr.each=_o,Dr.eachRight=po,Dr.first=Pi,ef(Dr,(pf={},de(Dr,(function(n,t){zn.call(Dr.prototype,t)||(pf[t]=n)})),pf),{chain:!1}),Dr.VERSION="4.17.21",Bt(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(n){Dr[n].placeholder=Dr})),Bt(["drop","take"],(function(n,t){Pr.prototype[n]=function(r){r=r===u?1:vr(la(r),0);var e=this.__filtered__&&!t?new Pr(this):this.clone();return e.__filtered__?e.__takeCount__=gr(r,e.__takeCount__):e.__views__.push({size:gr(r,_),type:n+(e.__dir__<0?"Right":"")}),e},Pr.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}})),Bt(["filter","map","takeWhile"],(function(n,t){var r=t+1,e=1==r||3==r;Pr.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:ui(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}})),Bt(["head","last"],(function(n,t){var r="take"+(t?"Right":"");Pr.prototype[n]=function(){return this[r](1).value()[0]}})),Bt(["initial","tail"],(function(n,t){var r="drop"+(t?"":"Right");Pr.prototype[n]=function(){return this.__filtered__?new Pr(this):this[r](1)}})),Pr.prototype.compact=function(){return this.filter(Xa)},Pr.prototype.find=function(n){return this.filter(n).head()},Pr.prototype.findLast=function(n){return this.reverse().find(n)},Pr.prototype.invokeMap=Ge((function(n,t){return"function"==typeof n?new Pr(this):this.map((function(r){return Se(r,n,t)}))})),Pr.prototype.reject=function(n){return this.filter(Io(ui(n)))},Pr.prototype.slice=function(n,t){n=la(n);var r=this;return r.__filtered__&&(n>0||t<0)?new Pr(r):(n<0?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==u&&(r=(t=la(t))<0?r.dropRight(-t):r.take(t-n)),r)},Pr.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},Pr.prototype.toArray=function(){return this.take(_)},de(Pr.prototype,(function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),i=Dr[e?"take"+("last"==t?"Right":""):t],o=e||/^find/.test(t);i&&(Dr.prototype[t]=function(){var t=this.__wrapped__,a=e?[1]:arguments,f=t instanceof Pr,c=a[0],l=f||Fo(t),s=function(n){var t=i.apply(Dr,Ct([n],a));return e&&h?t[0]:t};l&&r&&"function"==typeof c&&1!=c.length&&(f=l=!1);var h=this.__chain__,_=!!this.__actions__.length,p=o&&!h,v=f&&!_;if(!o&&l){t=v?t:new Pr(this);var g=n.apply(t,a);return g.__actions__.push({func:fo,args:[s],thisArg:u}),new Fr(g,h)}return p&&v?n.apply(this,a):(g=this.thru(s),p?e?g.value()[0]:g.value():g)})})),Bt(["pop","push","shift","sort","splice","unshift"],(function(n){var t=On[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);Dr.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(Fo(u)?u:[],n)}return this[r]((function(r){return t.apply(Fo(r)?r:[],n)}))}})),de(Pr.prototype,(function(n,t){var r=Dr[t];if(r){var e=r.name+"";zn.call(Mr,e)||(Mr[e]=[]),Mr[e].push({name:t,func:r})}})),Mr[Tu(u,2).name]=[{name:"wrapper",func:u}],Pr.prototype.clone=function(){var n=new Pr(this.__wrapped__);return n.__actions__=ku(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=ku(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=ku(this.__views__),n},Pr.prototype.reverse=function(){if(this.__filtered__){var n=new Pr(this);n.__dir__=-1,n.__filtered__=!0}else(n=this.clone()).__dir__*=-1;return n},Pr.prototype.value=function(){var n=this.__wrapped__.value(),t=this.__dir__,r=Fo(n),e=t<0,u=r?n.length:0,i=function(n,t,r){for(var e=-1,u=r.length;++e=this.__values__.length;return{done:n,value:n?u:this.__values__[this.__index__++]}},Dr.prototype.plant=function(n){for(var t,r=this;r instanceof Wr;){var e=zi(r);e.__index__=0,e.__values__=u,t?i.__wrapped__=e:t=e;var i=e;r=r.__wrapped__}return i.__wrapped__=n,t},Dr.prototype.reverse=function(){var n=this.__wrapped__;if(n instanceof Pr){var t=n;return this.__actions__.length&&(t=new Pr(this)),(t=t.reverse()).__actions__.push({func:fo,args:[Vi],thisArg:u}),new Fr(t,this.__chain__)}return this.thru(Vi)},Dr.prototype.toJSON=Dr.prototype.valueOf=Dr.prototype.value=function(){return lu(this.__wrapped__,this.__actions__)},Dr.prototype.first=Dr.prototype.head,Jn&&(Dr.prototype[Jn]=function(){return this}),Dr}();ht._=_r,(e=function(){return _r}.call(t,r,t,n))===u||(n.exports=e)}.call(this)}},t={};function r(e){var u=t[e];if(void 0!==u)return u.exports;var i=t[e]={id:e,loaded:!1,exports:{}};return n[e].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),r.nmd=n=>(n.paths=[],n.children||(n.children=[]),n);var e=r(7087);freeaps_profile=e})(); \ No newline at end of file diff --git a/open-iaps-oref/lib/determine-basal/determine-basal.js b/open-iaps-oref/lib/determine-basal/determine-basal.js index a4b53786b..92c201f2e 100644 --- a/open-iaps-oref/lib/determine-basal/determine-basal.js +++ b/open-iaps-oref/lib/determine-basal/determine-basal.js @@ -569,6 +569,8 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_ const BG = glucose_status.glucose; const useDynamicCR = preferences.enableDynamicCR; const adjustmentFactor = preferences.adjustmentFactor; + const adjustmentFactorSigmoid = preferences.adjustmentFactorSigmoid; + const enable_sigmoid = preferences.sigmoid; const currentMinTarget = profileTarget; var exerciseSetting = false; var log = ""; @@ -610,7 +612,7 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_ } var startLog = ", Dynamic ratios log: "; - var afLog = ", AF: " + adjustmentFactor; + var afLog = ", AF: " + (enable_sigmoid ? adjustmentFactorSigmoid : adjustmentFactor); var bgLog = "BG: " + BG + " mg/dl (" + (BG * 0.0555).toPrecision(2) + " mmol/l)"; var formula = ""; var weightLog = ""; @@ -653,36 +655,37 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_ // New logarithmic formula : var newRatio = profile.sens * adjustmentFactor * tdd * ln(( BG/insulinFactor) + 1 )) / 1800 // - const enable_sigmoid = preferences.sigmoid; var sigmoidLog = "" if (dynISFenabled) { - var newRatio = sensitivity * adjustmentFactor * tdd * Math.log(BG/insulinFactor+1) / 1800; - formula = ", Logarithmic formula"; - } - - // Sigmoid Function - if (dynISFenabled && enable_sigmoid) { - const as_min = minLimitChris; - const autosens_interval = maxLimitChris - as_min; - //Blood glucose deviation from set target (the lower BG target) converted to mmol/l to fit current formula. - const bg_dev = (BG - profileTarget) * 0.0555; - // Account for TDD of insulin. Compare last 2 hours with total data (up to 14 days) - var tdd_factor = tdd24h_14d_Ratio; // weighted average TDD / total data average TDD - var max_minus_one = maxLimitChris - 1; - // Avoid division by 0 - if (maxLimitChris == 1) { - max_minus_one = maxLimitChris + 0.01 - 1; + // Logarithmic + if (!enable_sigmoid) { + var newRatio = sensitivity * adjustmentFactor * tdd * Math.log(BG/insulinFactor+1) / 1800; + formula = ", Logarithmic formula"; + } + // Sigmoid + else { + const as_min = minLimitChris; + const autosens_interval = maxLimitChris - as_min; + //Blood glucose deviation from set target (the lower BG target) converted to mmol/l to fit current formula. + const bg_dev = (BG - profileTarget) * 0.0555; + // Account for TDD of insulin. Compare last 2 hours with total data (up to 14 days) + var tdd_factor = tdd24h_14d_Ratio; // weighted average TDD / total data average TDD + var max_minus_one = maxLimitChris - 1; + // Avoid division by 0 + if (maxLimitChris == 1) { + max_minus_one = maxLimitChris + 0.01 - 1; + } + //Makes sigmoid factor(y) = 1 when BG deviation(x) = 0. + const fix_offset = (Math.log10(1/max_minus_one-as_min/max_minus_one) / Math.log10(Math.E)); + //Exponent used in sigmoid formula + const exponent = bg_dev * adjustmentFactorSigmoid * tdd_factor + fix_offset; + // The sigmoid function + const sigmoid_factor = autosens_interval / (1 + Math.exp(-exponent)) + as_min; + newRatio = sigmoid_factor; + formula = ", Sigmoid function"; + // Dynamic CR will be processed further down } - //Makes sigmoid factor(y) = 1 when BG deviation(x) = 0. - const fix_offset = (Math.log10(1/max_minus_one-as_min/max_minus_one) / Math.log10(Math.E)); - //Exponent used in sigmoid formula - const exponent = bg_dev * adjustmentFactor * tdd_factor + fix_offset; - // The sigmoid function - const sigmoid_factor = autosens_interval / (1 + Math.exp(-exponent)) + as_min; - newRatio = sigmoid_factor; - formula = ", Sigmoid function"; - // Dynamic CR will be processed further down } var cr = carbRatio; diff --git a/open-iaps-oref/lib/profile/index.js b/open-iaps-oref/lib/profile/index.js index 7bf31da04..7cd1ab0e6 100644 --- a/open-iaps-oref/lib/profile/index.js +++ b/open-iaps-oref/lib/profile/index.js @@ -68,7 +68,8 @@ function defaults ( ) { , target_bg: false // set to an integer value in mg/dL to override pump min_bg // autoISF variables , smb_delivery_ratio: 0.5 //Default value: 0.5 Used if flexible delivery ratio is not used. This is another key OpenAPS safety cap, and specifies what share of the total insulin required can be delivered as SMB. This is to prevent people from getting into dangerous territory by setting SMB requests from the caregivers phone at the same time. Increase this experimental value slowly and with caution. - , adjustmentFactor: 1 + , adjustmentFactor: 0.8 + , adjustmentFactorSigmoid: 0.5 , useNewFormula: false , enableDynamicCR: false , sigmoid: false @@ -102,6 +103,7 @@ function displayedDefaults () { profile.smb_delivery_ratio = allDefaults.smb_delivery_ratio; profile.maxDelta_bg_threshold = allDefaults.maxDelta_bg_threshold; profile.adjustmentFactor = allDefaults.adjustmentFactor; + profile.adjustmentFactorSigmoid = allDefaults.adjustmentFactorSigmoid; profile.useNewFormula = allDefaults.useNewFormula; profile.enableDynamicCR = allDefaults.enableDynamicCR; profile.sigmoid = allDefaults.sigmoid; diff --git a/oref0_source_version.txt b/oref0_source_version.txt index 2f94be770..907e67f8f 100644 --- a/oref0_source_version.txt +++ b/oref0_source_version.txt @@ -1,6 +1,7 @@ -oref0 branch: dev - git version: b89a39b +oref0 branch: separate_adjustment_factors - git version: 969586d Last commits: +969586d Separate Adjustment Factors for Logarithmic and Sigmoid b89a39b Merge pull request #16 from bjornoleh/webpack-update b8aaf93 Merge pull request #15 from avouspierre/dev 4aba4e0 webpack-cp.sh: git log --since=2024-01-01