overtime-live-trading-utils 0.0.43 → 0.0.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.ts CHANGED
@@ -5,11 +5,3 @@ export * from './src/utils/markets';
5
5
  export * from './src/utils/odds';
6
6
  export * from './src/utils/sports';
7
7
  export * from './src/utils/spread';
8
-
9
- //constants
10
- export * from './src/constants/common';
11
- export * from './src/constants/constantsOpticodds';
12
- export * from './src/constants/sports';
13
-
14
- export * from './src/enums/sports';
15
- export * from './src/enums/statuses';
package/main.js CHANGED
@@ -1 +1 @@
1
- !function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a():"function"==typeof define&&define.amd?define([],a):"object"==typeof exports?exports.thalesUtils=a():e.thalesUtils=a()}(this,(()=>(()=>{"use strict";var e={d:(a,_)=>{for(var r in _)e.o(_,r)&&!e.o(a,r)&&Object.defineProperty(a,r,{enumerable:!0,get:_[r]})},o:(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},a={};e.r(a),e.d(a,{ANYTIME_GOAL_SCORER:()=>D,ASIAN_HANDICAP:()=>g,ASIAN_HANDICAP_CARDS:()=>v,ASIAN_HANDICAP_CORNERS:()=>B,BOTH_TEAMS_TO_SCORE:()=>H,CORRECT_SCORE:()=>b,DRAW:()=>C_,DRAW_NO_BET:()=>y,EIGHTH_INNING_MONEYLINE_3_WAY:()=>Be,EIGHTH_INNING_RUN_LINE:()=>He,EIGHTH_INNING_TOTAL_RUNS:()=>be,FIFTH_INNING_MONEYLINE_3_WAY:()=>me,FIFTH_INNING_RUN_LINE:()=>fe,FIFTH_INNING_TOTAL_RUNS:()=>Ue,FIRST_3_INNINGS_MONEYLINE:()=>re,FIRST_3_INNINGS_RUN_LINE:()=>te,FIRST_3_INNINGS_TEAM_TOTAL:()=>oe,FIRST_3_INNINGS_TOTAL_RUNS:()=>ne,FIRST_7_INNINGS_MONEYLINE:()=>Ee,FIRST_7_INNINGS_RUN_LINE:()=>ie,FIRST_7_INNINGS_TEAM_TOTAL:()=>se,FIRST_7_INNINGS_TOTAL_RUNS:()=>Ae,FIRST_BASKET_INCLUDING_FT:()=>va,FIRST_GOAL_SCORER:()=>h,FIRST_HALF_ASIAN_HANDICAP:()=>T,FIRST_HALF_ASIAN_HANDICAP_CORNERS:()=>O,FIRST_HALF_BOTH_TEAMS_TO_SCORE:()=>d,FIRST_HALF_CORRECT_SCORE:()=>R,FIRST_HALF_DOUBLE_CHANCE:()=>Aa,FIRST_HALF_MONEYLINE:()=>M,FIRST_HALF_MONEYLINE_3_WAY:()=>Ia,FIRST_HALF_POINT_SPREAD:()=>Sa,FIRST_HALF_RACE_TO_20_POINTS:()=>Na,FIRST_HALF_RACE_TO_25_POINTS:()=>la,FIRST_HALF_RACE_TO_30_POINTS:()=>La,FIRST_HALF_RACE_TO_35_POINTS:()=>Ta,FIRST_HALF_RACE_TO_40_POINTS:()=>Oa,FIRST_HALF_RACE_TO_45_POINTS:()=>da,FIRST_HALF_RACE_TO_50_POINTS:()=>Ra,FIRST_HALF_RACE_TO_55_POINTS:()=>Ma,FIRST_HALF_RACE_TO_60_POINTS:()=>ua,FIRST_HALF_RUN_LINE:()=>Ie,FIRST_HALF_TEAM_TOTAL:()=>u,FIRST_HALF_TEAM_TOTAL_EXACT:()=>C,FIRST_HALF_TOTAL_CORNERS:()=>P,FIRST_HALF_TOTAL_GOALS:()=>c,FIRST_HALF_TOTAL_GOALS_ODD_EVEN:()=>p,FIRST_HALF_TOTAL_POINTS:()=>Ca,FIRST_HALF_TOTAL_POINTS_ODD_EVEN:()=>Pa,FIRST_HALF_TOTAL_RUNS:()=>Se,FIRST_INNING_MONEYLINE_3_WAY:()=>Ne,FIRST_INNING_RUN_LINE:()=>le,FIRST_INNING_TOTAL_RUNS:()=>Le,FIRST_INNING_TOTAL_RUNS_ODD_EVEN:()=>Te,FIRST_QUARTER_DOUBLE_CHANCE:()=>ca,FIRST_QUARTER_MONEYLINE:()=>pa,FIRST_QUARTER_MONEYLINE_3_WAY:()=>ma,FIRST_QUARTER_POINT_SPREAD:()=>fa,FIRST_QUARTER_RACE_TO_10_POINTS:()=>Ua,FIRST_QUARTER_RACE_TO_15_POINTS:()=>wa,FIRST_QUARTER_RACE_TO_20_POINTS:()=>Ga,FIRST_QUARTER_TEAM_TOTAL:()=>Fa,FIRST_QUARTER_TOTAL_POINTS:()=>Da,FIRST_QUARTER_TOTAL_POINTS_ODD_EVEN:()=>ga,FIRST_TEAM_TO_SCORE:()=>Ve,FIRST_TEAM_TO_SCORE_3_WAY:()=>Y,FOURTH_INNING_MONEYLINE_3_WAY:()=>Pe,FOURTH_INNING_RUN_LINE:()=>ce,FOURTH_INNING_TOTAL_RUNS:()=>pe,GO_THE_DISTANCE:()=>Xa,HALFTIME_FULLTIME:()=>_e,LAST_GOAL_SCORER:()=>V,LAST_TEAM_TO_SCORE_3_WAY:()=>W,LEAGUES_NO_FORMAL_HOME_AWAY:()=>L,LIVE_TYPE_ID_BASE:()=>P_,League:()=>l,LeagueMap:()=>r_,METHOD_OF_ENDING:()=>qa,METHOD_OF_VICTORY:()=>ja,MIN_ODDS_FOR_DIFF_CHECKING:()=>c_,MONEYLINE:()=>k,MONEYLINE_TOTAL_ROUNDS:()=>$a,MULTIPLIER_100:()=>f_,NINTH_INNING_MONEYLINE_3_WAY:()=>ye,NINTH_INNING_RUN_LINE:()=>he,NINTH_INNING_TOTAL_RUNS:()=>Ye,NO_RUNS_FIRST_INNING:()=>We,PLAYER_ASSISTS:()=>Ba,PLAYER_BASES:()=>ke,PLAYER_BATTING_STRIKEOUTS:()=>Ke,PLAYER_BATTING_WALKS:()=>Qe,PLAYER_DOUBLES:()=>Xe,PLAYER_DOUBLE_DOUBLE:()=>Ha,PLAYER_EARNED_RUNS:()=>je,PLAYER_GOALS:()=>K,PLAYER_HITS:()=>xe,PLAYER_HITS_ALLOWED:()=>Je,PLAYER_HITS_RUNS_RBIS:()=>ze,PLAYER_HOME_RUNS:()=>Ze,PLAYER_HOME_RUNS_YES_NO:()=>qe,PLAYER_MADE_THREES:()=>ba,PLAYER_OUTS:()=>$e,PLAYER_POINTS:()=>ya,PLAYER_POINTS_REBOUNDS_ASSISTS:()=>ha,PLAYER_RBIS:()=>ea,PLAYER_REBOUNDS:()=>Ya,PLAYER_RUNS:()=>aa,PLAYER_SIGNIFICANT_STRIKES:()=>xa,PLAYER_SINGLES:()=>_a,PLAYER_STOLEN_BASES:()=>ra,PLAYER_STRIKEOUTS:()=>ta,PLAYER_TAKEDOWNS:()=>za,PLAYER_TO_RECORD_WIN:()=>oa,PLAYER_WALKS:()=>na,POINT_SPREAD:()=>Va,RACE_TO_20_POINTS:()=>Wa,ROUND_BETTING:()=>Ja,RUN_LINE:()=>Ea,SECOND_HALF_ASIAN_HANDICAP_CORNERS:()=>m,SECOND_HALF_BOTH_TEAMS_TO_SCORE:()=>f,SECOND_HALF_MONEYLINE:()=>U,SECOND_HALF_TOTAL_CORNERS:()=>w,SECOND_HALF_TOTAL_GOALS:()=>G,SECOND_HALF_TOTAL_GOALS_ODD_EVEN:()=>F,SECOND_INNING_MONEYLINE_3_WAY:()=>Oe,SECOND_INNING_RUN_LINE:()=>de,SECOND_INNING_TOTAL_RUNS:()=>Re,SEVENTH_INNING_MONEYLINE_3_WAY:()=>De,SEVENTH_INNING_RUN_LINE:()=>ge,SEVENTH_INNING_TOTAL_RUNS:()=>ve,SIXTH_INNING_MONEYLINE_3_WAY:()=>we,SIXTH_INNING_RUN_LINE:()=>Ge,SIXTH_INNING_TOTAL_RUNS:()=>Fe,Sport:()=>N,TAG_CHILD_SPREAD:()=>p_,TAG_CHILD_TOTALS:()=>m_,TEAM_CLEAN_SHEET:()=>Q,TEAM_TOTAL:()=>X,TEAM_TOTAL_CARD_POINTS:()=>j,TEAM_TOTAL_CORNERS:()=>x,TEAM_TOTAL_ODD_EVEN:()=>z,TEAM_TOTAL_POINTS_ODD_EVEN:()=>ka,TENNIS_ATP_GRAND_SLAM_SET_THRESHOLD:()=>E_,TENNIS_GEMS_LIMIT:()=>s_,TENNIS_MASTERS_SET_THRESHOLD:()=>i_,THIRD_INNING_MONEYLINE_3_WAY:()=>Me,THIRD_INNING_RUN_LINE:()=>ue,THIRD_INNING_TOTAL_RUNS:()=>Ce,TOTAL_CARDS:()=>J,TOTAL_CORNERS:()=>Z,TOTAL_CORNERS_ODD_EVEN:()=>q,TOTAL_GOALS:()=>$,TOTAL_GOALS_ODD_EVEN:()=>ee,TOTAL_POINTS:()=>Ka,TOTAL_POINTS_ODD_EVEN:()=>Qa,TOTAL_ROUNDS:()=>Za,TOTAL_RUNS:()=>ia,TO_QUALIFY:()=>ae,VOLLEYBALL_FIFTH_SET_POINTS_LIMIT:()=>n_,VOLLEYBALL_POINTS_LIMIT:()=>o_,VOLLEYBALL_SET_THRESHOLD:()=>t_,WILL_A_POINT_BE_DEDUCTED:()=>e_,WILL_FIGHT_END_IN_FIRST_MINUTE:()=>a_,WILL_THERE_BE_OVERTIME:()=>sa,WINNING_ROUND:()=>__,ZERO:()=>u_,adjustSpreadOnOdds:()=>w_,allowGameSportWithPeriodConstraint:()=>l_,allowGameSportWithResultConstraint:()=>T_,allowSoccerGame:()=>L_,calculateImpliedOddsDifference:()=>S,checkGameContraints:()=>N_,checkOddsFromBookmakers:()=>I,createTotalChildMarkets:()=>Q_,cutOddsCloseToValue:()=>h_,extractOddsForGamePerProvider:()=>F_,filterOddsByMarketNameBookmaker:()=>H_,filterOddsByMarketNameTeamNameBookmaker:()=>v_,formatSpreadOdds:()=>b_,gamesDatesMatching:()=>M_,getBookmakersArray:()=>A,getLeagueSport:()=>A_,getLeagueSpreadType:()=>I_,getLeagueTotalType:()=>S_,getParentOdds:()=>B_,getSpreadData:()=>G_,groupAndFormatSpreadOdds:()=>y_,groupOddsBySelectionAndPoints:()=>V_,processMarket:()=>W_,processTotalOdds:()=>Y_,statusCodes:()=>U_,teamNamesMatching:()=>R_}),"function"!=typeof Object.assign&&(Object.assign=function(e,a){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var _=Object(e),r=1;r<arguments.length;r++){var t=arguments[r];if(null!=t)for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(_[o]=t[o])}return _});var _=function(e){return parseFloat(e.toPrecision(12))};function r(e,a,_){return void 0===_||0==+_?Math[e](a):(a=+a,_=+_,isNaN(a)||"number"!=typeof _||_%1!=0?NaN:a<0?-r(e,-a,_):(a=a.toString().split("e"),+((a=(a=Math[e](+(a[0]+"e"+(a[1]?+a[1]-_:-_)))).toString().split("e"))[0]+"e"+(a[1]?+a[1]+_:_))))}var t,o,n={decimal:{from:function(e){if((e=parseFloat(e))<=1)throw new Error("Outside valid range.");return e},to:function(){return this.decimalValue}},moneyline:{from:function(e){return(e=parseFloat(e))>=0?e/100+1:100/-e+1},to:function(){return this.decimalValue>=2?_(100*(this.decimalValue-1)):_(-100/(this.decimalValue-1))}},hongKong:{from:function(e){if((e=parseFloat(e))<0)throw new Error("Outside valid range.");return e+1},to:function(){return _(this.decimalValue-1)}},impliedProbability:{from:function(e){if((e="string"==typeof e&&"%"==e.slice(-1)?parseFloat(e)/100:parseFloat(e))<=0||e>=1)throw new Error("Outside valid range");return 1/e},to:function(e){if(e.percentage){var a=_(100/this.decimalValue);return null!==e.precision&&(a=r("round",a,-e.precision)),a.toString()+"%"}return _(1/this.decimalValue)}},fractional:{from:function(e){var a,_=e.toString().split("/");if(e=parseFloat(_[0]),2===_.length)a=parseFloat(_[1]);else{if(1!==_.length)throw new Error("Invalid fraction");a=1}if(0===e||0===a||e/a<=0)throw new Error("Outside valid range");return 1+e/a},to:function(e){return function(e,a){for(var _,r=[0,1],t=[1,0],o=function(e){var a=null,_=e.toString().indexOf("E");-1==_&&(_=e.toString().indexOf("e"));var r=null,t=(a=-1==_?e.toString():e.toString().substring(0,_)).toString().indexOf(".");-1==t?r=a:0===t?r=a.substring(1,a.length):t<a.length&&(r=a.substring(0,t)+a.substring(t+1,a.length));var o=r,n=o.toString().length,E=e,i=E.toString().length;0===E&&(i=0);var s,A=n-i;for(s=A;s>0&&o%2==0;s--)o/=2;for(s=A;s>0&&o%5==0;s--)o/=5;return o}(e),n=e,E=Math.pow(10,-a)/2,i=2;i<1e3;i++){var s=Math.floor(n);if(r[i]=s*r[i-1]+r[i-2],Math.abs(r[i])>o)return;if(t[i]=s*t[i-1]+t[i-2],_=r[i]/t[i],Math.abs(_-e)<E||NaN==_)return r[i].toString()+"/"+t[i].toString();n=1/(n-s)}}(this.decimalValue-1,e.precision||12)}},malay:{from:function(e){if((e=parseFloat(e))<=-1||e>1)throw new Error("Outside valid range.");return e<0&&(e=-1/e),e+1},to:function(){return this.decimalValue<=2?_(this.decimalValue-1):_(-1/(this.decimalValue-1))}},indonesian:{from:function(e){if(0===(e=parseFloat(e)))throw new Error("Outside valid range.");return e>=1?e+1:-1/e+1},to:function(){return this.decimalValue<2?_(-1/(this.decimalValue-1)):_(this.decimalValue-1)}}},E=((o=function(e){if("number"!=typeof e||isNaN(e))throw new Error("Invalid odds");this.decimalValue=_(e)}).prototype=(t=function(){throw new Error("This constructor is private, please use the from* functions")}).prototype,t.from=function(e,a){if(!n.hasOwnProperty(e))throw new Error("Unknown format "+e+".");var _=n[e].from(a);return new o(_)},t);E.prototype.to=function(e,a){if(!n.hasOwnProperty(e))throw new Error("Unknown format "+e+".");a=Object.assign({precision:null,percentage:!1},a);var _=n[e].to.call(this,a);return"number"==typeof _&&null!==a.precision&&(_=r("round",_,-a.precision)),_};var i,s=E.from,A=function(e,a,_){var r=e.find((function(e){return Number(e.sportId)===Number(a)}));if(r){if(""==r.primaryBookmaker)return _;var t=[];return r.primaryBookmaker&&t.push(r.primaryBookmaker),r.secondaryBookmaker&&t.push(r.secondaryBookmaker),r.tertiaryBookmaker&&t.push(r.tertiaryBookmaker),t}return _},I=function(e,a,_,r,t){var o=a.some((function(a){var r=e.get(a);return!!r&&(0===r.homeOdds||0===r.awayOdds||!_&&0===r.drawOdds||1===r.homeOdds||1===r.awayOdds||!_&&1===r.drawOdds)}));if(1==a.length){if(o)return[{homeOdds:0,awayOdds:0,drawOdds:0}];var n=a[0],E=e.get(n);return[{homeOdds:E.homeOdds,awayOdds:E.awayOdds,drawOdds:_?0:E.drawOdds}]}if(o)return[{homeOdds:0,awayOdds:0,drawOdds:0}];var i=e.get(a[0]),A=i.homeOdds,I=i.awayOdds,N=i.drawOdds;if(a.slice(1).some((function(a){var o=e[a];if(o){var n=o.homeOdds,E=o.awayOdds,i=o.drawOdds,l=s("decimal",A).to("impliedProbability"),L=s("decimal",I).to("impliedProbability"),T=_?0:s("decimal",N).to("impliedProbability"),O=s("decimal",n).to("impliedProbability"),d=s("decimal",E).to("impliedProbability"),R=_?0:s("decimal",i).to("impliedProbability"),M=S(l,O),u=S(L,d),C=_?0:S(T,R);if(M>r&&l>t&&O>t||u>r&&L>t&&d>t||!_&&C>r&&T>t&&R>t)return!0}return!1})))return console.log("Returning zero odds due to percentage difference"),[{homeOdds:0,awayOdds:0,drawOdds:0}];var l=[];return a.forEach((function(a){return l.push(e.get(a))})),null!=l[0]?l.map((function(e){return{homeOdds:e.homeOdds,awayOdds:e.awayOdds,drawOdds:_?0:e.drawOdds}})):(console.log("Returning zero odds cause no matching bookmakers have been found"),[{homeOdds:0,awayOdds:0,drawOdds:0}])},S=function(e,a){var _=Math.abs(e-a)/e*100;return console.log("% diff: "+_),_},N={SOCCER:"Soccer",FOOTBALL:"Football",BASKETBALL:"Basketball",BASEBALL:"Baseball",HOCKEY:"Hockey",FIGHTING:"Fighting",TENNIS:"Tennis",ESPORTS:"eSports",RUGBY:"Rugby",VOLLEYBALL:"Volleyball",HANDBALL:"Handball",WATERPOLO:"Waterpolo",CRICKET:"Cricket",MOTOSPORT:"Motosport",GOLF:"Golf",TABLE_TENNIS:"TableTennis",EMPTY:""},l={NCAAF:1,NFL:2,MLB:3,NBA:4,NCAAB:5,NHL:6,UFC:7,WNBA:8,MLS:10,EPL:11,LIGUE_ONE:12,BUNDESLIGA:13,LA_LIGA:14,SERIE_A:15,UEFA_CL:16,UEFA_EL:17,FIFA_WC:18,J1_LEAGUE:19,IPL:20,T20_BLAST:21,IIHF_WORLD_CHAMPIONSHIP:33,COPA_AMERICA:44,COPA_LIBERTADORES:45,UEFA_EURO:50,EREDIVISIE:57,PRIMEIRA_LIGA:61,SUMMER_OLYMPICS_SOCCER_WOMEN:65,SUMMER_OLYMPICS_SOCCER:66,FIFA_WC_WOMEN:76,ENGLAND_CUP:132,FRANCE_CUP:134,SPAIN_CUP:138,ITALY_CUP:141,TENNIS_GS:153,TENNIS_MASTERS:156,SUMMER_OLYMPICS_TENNIS:158,GERMANY_CUP:209,LIGA_MX:230,BRAZIL_1:268,UEFA_EURO_U21:288,FIFA_WORLD_CUP_U20:296,SUMMER_OLYMPICS_HANDBALL_WOMEN:380,SUMMER_OLYMPICS_HANDBALL:381,EUROLEAGUE:399,SUMMER_OLYMPICS_BASKETBALL:406,SUMMER_OLYMPICS_BASKETBALL_WOMEN:407,FIBA_WORLD_CUP:409,FORMULA1:445,SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN:453,SUMMER_OLYMPICS_BEACH_VOLEYBALL:454,MOTOGP:497,SAUDI_PROFESSIONAL_LEAGUE:536,SUMMER_OLYMPICS_WATERPOLO:8881,SUMMER_OLYMPICS_VOLEYBALL_WOMEN:8893,SUMMER_OLYMPICS_VOLEYBALL:8894,SUMMER_OLYMPICS_TABLE_TENNIS:8910,BOXING:9196,SUMMER_OLYMPICS_RUGBY:9578,SUMMER_OLYMPICS_RUGBY_WOMEN:9588,SUMMER_OLYMPICS_HOCKEY_WOMEN:9698,SUMMER_OLYMPICS_HOCKEY:9699,UEFA_NATIONS_LEAGUE:9806,CONCACAF_NATIONS_LEAGUE:9821,CSGO:9977,DOTA2:9983,SUMMER_OLYMPICS_BASKETBALL_3X3:10071,SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN:10072,SUMMER_OLYMPICS_QUALIFICATION:10502,LOL:10138,CONMEBOL_WC_QUALIFICATIONS:10199,UEFA_CONFERENCE_LEAGUE:10216,NON_TITLE_BOXING:10595,UEFA_CHAMPIONS_LEAGUE_QUALIFICATION:10611,UEFA_EUROPA_LEAGUE_QUALIFICATION:10613,UEFA_CONFERENCE_LEAGUE_QUALIFICATION:10615,GOLF_H2H:100021,GOLF_WINNER:100121,TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1:15312,TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2:15313,TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3:15314,TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4:15315,TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5:15316,TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6:15317,TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7:15318,TENNIS_MASTERS_LIVE_MAPPING_V2_1:15622,TENNIS_MASTERS_LIVE_MAPPING_V2_2:15623,TENNIS_MASTERS_LIVE_MAPPING_V2_3:15624,TENNIS_MASTERS_LIVE_MAPPING_V2_4:15625,TENNIS_MASTERS_LIVE_MAPPING_V2_5:15626,TENNIS_MASTERS_LIVE_MAPPING_V2_6:15627,TENNIS_MASTERS_LIVE_MAPPING_V2_7:15628,TENNIS_MASTERS_LIVE_MAPPING_V2_8:15632,TENNIS_MASTERS_LIVE_MAPPING_V2_9:15633,TENNIS_MASTERS_LIVE_MAPPING_V2_10:15634,TENNIS_MASTERS_LIVE_MAPPING_V2_11:15635,TENNIS_MASTERS_LIVE_MAPPING_V2_12:15636,TENNIS_MASTERS_LIVE_MAPPING_V2_13:15637,TENNIS_MASTERS_LIVE_MAPPING_V2_14:15638,TENNIS_MASTERS_LIVE_MAPPING_V2_15:15641,TENNIS_MASTERS_LIVE_MAPPING_V2_16:15642,TENNIS_MASTERS_LIVE_MAPPING_V2_17:15643,TENNIS_MASTERS_LIVE_MAPPING_V2_18:15644,TENNIS_MASTERS_LIVE_MAPPING_V2_19:15645,TENNIS_MASTERS_LIVE_MAPPING_V2_20:15646,TENNIS_MASTERS_LIVE_MAPPING_V2_21:15647,TENNIS_MASTERS_LIVE_MAPPING_V2_22:15648},L=[l.CSGO,l.DOTA2,l.LOL,l.TENNIS_GS,l.TENNIS_MASTERS,l.SUMMER_OLYMPICS_TENNIS,l.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1,l.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2,l.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3,l.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4,l.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5,l.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6,l.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7,l.TENNIS_MASTERS_LIVE_MAPPING_V2_1,l.TENNIS_MASTERS_LIVE_MAPPING_V2_2,l.TENNIS_MASTERS_LIVE_MAPPING_V2_3,l.TENNIS_MASTERS_LIVE_MAPPING_V2_4,l.TENNIS_MASTERS_LIVE_MAPPING_V2_5,l.TENNIS_MASTERS_LIVE_MAPPING_V2_6,l.TENNIS_MASTERS_LIVE_MAPPING_V2_7,l.TENNIS_MASTERS_LIVE_MAPPING_V2_8,l.TENNIS_MASTERS_LIVE_MAPPING_V2_9,l.TENNIS_MASTERS_LIVE_MAPPING_V2_10,l.TENNIS_MASTERS_LIVE_MAPPING_V2_11,l.TENNIS_MASTERS_LIVE_MAPPING_V2_12,l.TENNIS_MASTERS_LIVE_MAPPING_V2_13,l.TENNIS_MASTERS_LIVE_MAPPING_V2_14,l.TENNIS_MASTERS_LIVE_MAPPING_V2_15,l.TENNIS_MASTERS_LIVE_MAPPING_V2_16,l.TENNIS_MASTERS_LIVE_MAPPING_V2_17,l.TENNIS_MASTERS_LIVE_MAPPING_V2_18,l.TENNIS_MASTERS_LIVE_MAPPING_V2_19,l.TENNIS_MASTERS_LIVE_MAPPING_V2_20,l.TENNIS_MASTERS_LIVE_MAPPING_V2_21,l.TENNIS_MASTERS_LIVE_MAPPING_V2_22],T="1st Half Asian Handicap",O="1st Half Asian Handicap Corners",d="1st Half Both Teams To Score",R="1st Half Correct Score",M="1st Half Moneyline",u="1st Half Team Total",C="1st Half Team Total Exact",P="1st Half Total Corners",c="1st Half Total Goals",p="1st Half Total Goals Odd/Even",m="2nd Half Asian Handicap Corners",f="2nd Half Both Teams To Score",U="2nd Half Moneyline",w="2nd Half Total Corners",G="2nd Half Total Goals",F="2nd Half Total Goals Odd/Even",D="Anytime Goal Scorer",g="Asian Handicap",v="Asian Handicap Cards",B="Asian Handicap Corners",H="Both Teams To Score",b="Correct Score",y="Draw No Bet",h="First Goal Scorer",Y="First Team To Score 3-Way",V="Last Goal Scorer",W="Last Team To Score 3-Way",k="Moneyline",K="Player Goals",Q="Team Clean Sheet",X="Team Total",j="Team Total Card Points",x="Team Total Corners",z="Team Total Odd/Even",J="Total Cards",Z="Total Corners",q="Total Corners Odd/Even",$="Total Goals",ee="Total Goals Odd/Even",ae="To Qualify",_e="Halftime / Fulltime",re="1st 3 Innings Moneyline",te="1st 3 Innings Run Line",oe="1st 3 Innings Team Total",ne="1st 3 Innings Total Runs",Ee="1st 7 Innings Moneyline",ie="1st 7 Innings Run Line",se="1st 7 Innings Team Total",Ae="1st 7 Innings Total Runs",Ie="1st Half Run Line",Se="1st Half Total Runs",Ne="1st Inning Moneyline 3-Way",le="1st Inning Run Line",Le="1st Inning Total Runs",Te="1st Inning Total Runs Odd/Even",Oe="2nd Inning Moneyline 3-Way",de="2nd Inning Run Line",Re="2nd Inning Total Runs",Me="3rd Inning Moneyline 3-Way",ue="3rd Inning Run Line",Ce="3rd Inning Total Runs",Pe="4th Inning Moneyline 3-Way",ce="4th Inning Run Line",pe="4th Inning Total Runs",me="5th Inning Moneyline 3-Way",fe="5th Inning Run Line",Ue="5th Inning Total Runs",we="6th Inning Moneyline 3-Way",Ge="6th Inning Run Line",Fe="6th Inning Total Runs",De="7th Inning Moneyline 3-Way",ge="7th Inning Run Line",ve="7th Inning Total Runs",Be="8th Inning Moneyline 3-Way",He="8th Inning Run Line",be="8th Inning Total Runs",ye="9th Inning Moneyline 3-Way",he="9th Inning Run Line",Ye="9th Inning Total Runs",Ve="First Team To Score",We="No Runs First Inning",ke="Player Bases",Ke="Player Batting Strikeouts",Qe="Player Batting Walks",Xe="Player Doubles",je="Player Earned Runs",xe="Player Hits",ze="Player Hits + Runs + RBIs",Je="Player Hits Allowed",Ze="Player Home Runs",qe="Player Home Runs Yes/No",$e="Player Outs",ea="Player RBIs",aa="Player Runs",_a="Player Singles",ra="Player Stolen Bases",ta="Player Strikeouts",oa="Player To Record Win",na="Player Walks",Ea="Run Line",ia="Total Runs",sa="Will There Be Overtime",Aa="1st Half Double Chance",Ia="1st Half Moneyline 3-Way",Sa="1st Half Point Spread",Na="1st Half Race To 20 Points",la="1st Half Race To 25 Points",La="1st Half Race To 30 Points",Ta="1st Half Race To 35 Points",Oa="1st Half Race To 40 Points",da="1st Half Race To 45 Points",Ra="1st Half Race To 50 Points",Ma="1st Half Race To 55 Points",ua="1st Half Race To 60 Points",Ca="1st Half Total Points",Pa="1st Half Total Points Odd/Even",ca="1st Quarter Double Chance",pa="1st Quarter Moneyline",ma="1st Quarter Moneyline 3-Way",fa="1st Quarter Point Spread",Ua="1st Quarter Race To 10 Points",wa="1st Quarter Race To 15 Points",Ga="1st Quarter Race To 20 Points",Fa="1st Quarter Team Total",Da="1st Quarter Total Points",ga="1st Quarter Total Points Odd/Even",va="First Basket Including FT",Ba="Player Assists",Ha="Player Double Double",ba="Player Made Threes",ya="Player Points",ha="Player Points + Rebounds + Assists",Ya="Player Rebounds",Va="Point Spread",Wa="Race To 20 Points",ka="Team Total Points Odd/Even",Ka="Total Points",Qa="Total Points Odd/Even",Xa="Go The Distance",ja="Method of Victory",xa="Player Significant Strikes",za="Player Takedowns",Ja="Round Betting",Za="Total Rounds",qa="Method Of Ending",$a="Moneyline + Total Rounds",e_="Will A Point Be Deducted",a_="Will Fight End In First Minute",__="Winning Round",r_=((i={})[l.NCAAF]={sport:N.FOOTBALL,id:l.NCAAF,isDrawAvailable:!1},i[l.NFL]={sport:N.FOOTBALL,id:l.NFL,isDrawAvailable:!1,spread:g,total:Ka},i[l.MLB]={sport:N.BASEBALL,id:l.MLB,isDrawAvailable:!1,spread:Ea,total:ia},i[l.NBA]={sport:N.BASKETBALL,id:l.NBA,isDrawAvailable:!1,spread:Va,total:Ka},i[l.NCAAB]={sport:N.BASKETBALL,id:l.NCAAB,isDrawAvailable:!1,spread:Va,total:Ka},i[l.NHL]={sport:N.HOCKEY,id:l.NHL,isDrawAvailable:!1},i[l.UFC]={sport:N.FIGHTING,id:l.UFC,isDrawAvailable:!1},i[l.WNBA]={sport:N.BASKETBALL,id:l.WNBA,isDrawAvailable:!1,spread:Va,total:Ka},i[l.MLS]={sport:N.SOCCER,id:l.MLS,isDrawAvailable:!0,spread:g,total:$},i[l.EPL]={sport:N.SOCCER,id:l.EPL,isDrawAvailable:!0,spread:g,total:$},i[l.LIGUE_ONE]={sport:N.SOCCER,id:l.LIGUE_ONE,isDrawAvailable:!0,spread:g,total:$},i[l.BUNDESLIGA]={sport:N.SOCCER,id:l.BUNDESLIGA,isDrawAvailable:!0,spread:g,total:$},i[l.LA_LIGA]={sport:N.SOCCER,id:l.LA_LIGA,isDrawAvailable:!0,spread:g,total:$},i[l.SERIE_A]={sport:N.SOCCER,id:l.SERIE_A,isDrawAvailable:!0,spread:g,total:$},i[l.UEFA_CL]={sport:N.SOCCER,id:l.UEFA_CL,isDrawAvailable:!0,spread:g,total:$},i[l.UEFA_EL]={sport:N.SOCCER,id:l.UEFA_EL,isDrawAvailable:!0,spread:g,total:$},i[l.FIFA_WC]={sport:N.SOCCER,id:l.FIFA_WC,isDrawAvailable:!0,spread:g,total:$},i[l.J1_LEAGUE]={sport:N.SOCCER,id:l.J1_LEAGUE,isDrawAvailable:!0,spread:g,total:$},i[l.IPL]={sport:N.CRICKET,id:l.IPL,isDrawAvailable:!1},i[l.T20_BLAST]={sport:N.CRICKET,id:l.T20_BLAST,isDrawAvailable:!1},i[l.IIHF_WORLD_CHAMPIONSHIP]={sport:N.HOCKEY,id:l.IIHF_WORLD_CHAMPIONSHIP,isDrawAvailable:!0},i[l.COPA_AMERICA]={sport:N.SOCCER,id:l.COPA_AMERICA,isDrawAvailable:!0,spread:g,total:$},i[l.COPA_LIBERTADORES]={sport:N.SOCCER,id:l.COPA_LIBERTADORES,isDrawAvailable:!0,spread:g,total:$},i[l.UEFA_EURO]={sport:N.SOCCER,id:l.UEFA_EURO,isDrawAvailable:!0,spread:g,total:$},i[l.EREDIVISIE]={sport:N.SOCCER,id:l.EREDIVISIE,isDrawAvailable:!0,spread:g,total:$},i[l.PRIMEIRA_LIGA]={sport:N.SOCCER,id:l.PRIMEIRA_LIGA,isDrawAvailable:!0,spread:g,total:$},i[l.SUMMER_OLYMPICS_SOCCER_WOMEN]={sport:N.SOCCER,id:l.SUMMER_OLYMPICS_SOCCER_WOMEN,isDrawAvailable:!0,spread:g,total:$},i[l.SUMMER_OLYMPICS_SOCCER]={sport:N.SOCCER,id:l.SUMMER_OLYMPICS_SOCCER,isDrawAvailable:!0,spread:g,total:$},i[l.FIFA_WC_WOMEN]={sport:N.SOCCER,id:l.FIFA_WC_WOMEN,isDrawAvailable:!0,spread:g,total:$},i[l.ENGLAND_CUP]={sport:N.SOCCER,id:l.ENGLAND_CUP,isDrawAvailable:!0,spread:g,total:$},i[l.FRANCE_CUP]={sport:N.SOCCER,id:l.FRANCE_CUP,isDrawAvailable:!0,spread:g,total:$},i[l.SPAIN_CUP]={sport:N.SOCCER,id:l.SPAIN_CUP,isDrawAvailable:!0,spread:g,total:$},i[l.ITALY_CUP]={sport:N.SOCCER,id:l.ITALY_CUP,isDrawAvailable:!0,spread:g,total:$},i[l.TENNIS_GS]={sport:N.TENNIS,id:l.TENNIS_GS,isDrawAvailable:!1},i[l.TENNIS_MASTERS]={sport:N.TENNIS,id:l.TENNIS_MASTERS,isDrawAvailable:!1},i[l.SUMMER_OLYMPICS_TENNIS]={sport:N.TENNIS,id:l.SUMMER_OLYMPICS_TENNIS,isDrawAvailable:!1},i[l.GERMANY_CUP]={sport:N.SOCCER,id:l.GERMANY_CUP,isDrawAvailable:!0,spread:g,total:$},i[l.BRAZIL_1]={sport:N.SOCCER,id:l.BRAZIL_1,isDrawAvailable:!0,spread:g,total:$},i[l.UEFA_EURO_U21]={sport:N.SOCCER,id:l.UEFA_EURO_U21,isDrawAvailable:!0,spread:g,total:$},i[l.FIFA_WORLD_CUP_U20]={sport:N.SOCCER,id:l.FIFA_WORLD_CUP_U20,isDrawAvailable:!0,spread:g,total:$},i[l.SUMMER_OLYMPICS_HANDBALL_WOMEN]={sport:N.HANDBALL,id:l.SUMMER_OLYMPICS_HANDBALL_WOMEN,isDrawAvailable:!0},i[l.SUMMER_OLYMPICS_HANDBALL]={sport:N.HANDBALL,id:l.SUMMER_OLYMPICS_HANDBALL,isDrawAvailable:!0},i[l.EUROLEAGUE]={sport:N.BASKETBALL,id:l.EUROLEAGUE,isDrawAvailable:!1,spread:Va,total:Ka},i[l.SUMMER_OLYMPICS_BASKETBALL]={sport:N.BASKETBALL,id:l.SUMMER_OLYMPICS_BASKETBALL,isDrawAvailable:!1,spread:Va,total:Ka},i[l.SUMMER_OLYMPICS_BASKETBALL_WOMEN]={sport:N.BASKETBALL,id:l.SUMMER_OLYMPICS_BASKETBALL_WOMEN,isDrawAvailable:!1,spread:Va,total:Ka},i[l.FIBA_WORLD_CUP]={sport:N.BASKETBALL,id:l.FIBA_WORLD_CUP,isDrawAvailable:!1,spread:Va,total:Ka},i[l.FORMULA1]={sport:N.MOTOSPORT,id:l.FORMULA1,isDrawAvailable:!1},i[l.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN]={sport:N.VOLLEYBALL,id:l.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN,isDrawAvailable:!1},i[l.SUMMER_OLYMPICS_BEACH_VOLEYBALL]={sport:N.VOLLEYBALL,id:l.SUMMER_OLYMPICS_BEACH_VOLEYBALL,isDrawAvailable:!1},i[l.SUMMER_OLYMPICS_TABLE_TENNIS]={sport:N.TABLE_TENNIS,id:l.SUMMER_OLYMPICS_TABLE_TENNIS,isDrawAvailable:!1},i[l.MOTOGP]={sport:N.MOTOSPORT,id:l.MOTOGP,isDrawAvailable:!1},i[l.SAUDI_PROFESSIONAL_LEAGUE]={sport:N.SOCCER,id:l.SAUDI_PROFESSIONAL_LEAGUE,isDrawAvailable:!0,spread:g,total:$},i[l.SUMMER_OLYMPICS_WATERPOLO]={sport:N.WATERPOLO,id:l.SUMMER_OLYMPICS_WATERPOLO,isDrawAvailable:!0},i[l.SUMMER_OLYMPICS_VOLEYBALL_WOMEN]={sport:N.VOLLEYBALL,id:l.SUMMER_OLYMPICS_VOLEYBALL_WOMEN,isDrawAvailable:!1},i[l.SUMMER_OLYMPICS_VOLEYBALL]={sport:N.VOLLEYBALL,id:l.SUMMER_OLYMPICS_VOLEYBALL,isDrawAvailable:!1},i[l.BOXING]={sport:N.FIGHTING,id:l.BOXING,isDrawAvailable:!1},i[l.SUMMER_OLYMPICS_RUGBY]={sport:N.RUGBY,id:l.SUMMER_OLYMPICS_RUGBY,isDrawAvailable:!0},i[l.SUMMER_OLYMPICS_RUGBY_WOMEN]={sport:N.RUGBY,id:l.SUMMER_OLYMPICS_RUGBY_WOMEN,isDrawAvailable:!0},i[l.SUMMER_OLYMPICS_HOCKEY_WOMEN]={sport:N.HOCKEY,id:l.SUMMER_OLYMPICS_HOCKEY_WOMEN,isDrawAvailable:!0},i[l.SUMMER_OLYMPICS_HOCKEY]={sport:N.HOCKEY,id:l.SUMMER_OLYMPICS_HOCKEY,isDrawAvailable:!0},i[l.UEFA_NATIONS_LEAGUE]={sport:N.SOCCER,id:l.UEFA_NATIONS_LEAGUE,isDrawAvailable:!0,spread:g,total:$},i[l.CONCACAF_NATIONS_LEAGUE]={sport:N.SOCCER,id:l.CONCACAF_NATIONS_LEAGUE,isDrawAvailable:!0,spread:g,total:$},i[l.CSGO]={sport:N.ESPORTS,id:l.CSGO,isDrawAvailable:!1},i[l.DOTA2]={sport:N.ESPORTS,id:l.DOTA2,isDrawAvailable:!1},i[l.SUMMER_OLYMPICS_BASKETBALL_3X3]={sport:N.BASKETBALL,id:l.SUMMER_OLYMPICS_BASKETBALL_3X3,isDrawAvailable:!1},i[l.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN]={sport:N.BASKETBALL,id:l.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN,isDrawAvailable:!1},i[l.SUMMER_OLYMPICS_QUALIFICATION]={sport:N.BASKETBALL,id:l.SUMMER_OLYMPICS_QUALIFICATION,isDrawAvailable:!1,spread:Va,total:Ka},i[l.LOL]={sport:N.ESPORTS,id:l.LOL,isDrawAvailable:!1},i[l.CONMEBOL_WC_QUALIFICATIONS]={sport:N.SOCCER,id:l.CONMEBOL_WC_QUALIFICATIONS,isDrawAvailable:!0,spread:g,total:$},i[l.UEFA_CONFERENCE_LEAGUE]={sport:N.SOCCER,id:l.UEFA_CONFERENCE_LEAGUE,isDrawAvailable:!0,spread:g,total:$},i[l.NON_TITLE_BOXING]={sport:N.FIGHTING,id:l.NON_TITLE_BOXING,isDrawAvailable:!1},i[l.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION]={sport:N.SOCCER,id:l.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION,isDrawAvailable:!0,spread:g,total:$},i[l.UEFA_EUROPA_LEAGUE_QUALIFICATION]={sport:N.SOCCER,id:l.UEFA_EUROPA_LEAGUE_QUALIFICATION,isDrawAvailable:!0,spread:g,total:$},i[l.UEFA_CONFERENCE_LEAGUE_QUALIFICATION]={sport:N.SOCCER,id:l.UEFA_CONFERENCE_LEAGUE_QUALIFICATION,isDrawAvailable:!0,spread:g,total:$},i[l.GOLF_H2H]={sport:N.GOLF,id:l.GOLF_H2H,isDrawAvailable:!1},i[l.GOLF_WINNER]={sport:N.GOLF,id:l.GOLF_WINNER,isDrawAvailable:!1},i[l.LIGA_MX]={sport:N.SOCCER,id:l.LIGA_MX,isDrawAvailable:!0,spread:g,total:$},i),t_=2,o_=20,n_=10,E_=2,i_=1,s_=5,A_=function(e){var a=r_[e];return a?a.sport:N.EMPTY},I_=function(e){var a=r_[e];return a?a.spread:void 0},S_=function(e){var a=r_[e];return a?a.total:void 0},N_=function(e,a,_){var r=e.score_home_total,t=e.score_away_total,o=e.clock,n=e.period,E=e.status,i=e.home_team,s=e.away_team,A=parseInt(n),I=A_(a);return"completed"==E.toLowerCase()?{allow:!1,message:"Blocking game ".concat(i," - ").concat(s," because it is no longer live.")}:(I===N.BASKETBALL&&l_(i,s,A,_.get(N.BASKETBALL)),I===N.HOCKEY&&l_(i,s,A,_.get(N.HOCKEY)),I===N.BASEBALL&&l_(i,s,A,_.get(N.BASEBALL)),I===N.SOCCER&&L_(i,s,o,n,_.get(N.SOCCER)),I===N.TENNIS&&T_(e,i,s,n,r,t,a,I),I===N.VOLLEYBALL&&T_(e,i,s,A,r,t,a,I),{allow:!1,message:"Blocking game ".concat(i," - ").concat(s," because it entered constraints branch but the league does not have constraints")})},l_=function(e,a,_,r){return!Number.isNaN(_)&&_>=r?{allow:!1,message:"Blocking game ".concat(e," - ").concat(a," due to period: ").concat(_,". period")}:{allow:!0,message:""}},L_=function(e,a,_,r,t){var o=Number(_);return!Number.isNaN(o)&&o>=t||Number.isNaN(o)&&"HALF"!=r?{allow:!1,message:"Blocking game ".concat(e," - ").concat(a," due to clock: ").concat(_,"min")}:{allow:!0,message:""}},T_=function(e,a,_,r,t,o,n,E){var i=Number(r),s=O_(i,e),A="atp"==e.league.toLowerCase(),I={home:t,away:o};return E==N.VOLLEYBALL?d_(a,_,s,I,t_,5==i?n_:o_):n.toString().startsWith(l.TENNIS_GS)&&A?d_(a,_,s,I,E_,s_):n.toString().startsWith(l.TENNIS_GS)&&!A||n.toString().startsWith(l.TENNIS_MASTERS)||n.toString().startsWith(l.SUMMER_OLYMPICS_TENNIS)?d_(a,_,s,I,i_,s_):{allow:!0,message:"The sport ".concat(n," does not have result constraint")}},O_=function(e,a){var _=0,r=0;switch(e){case 2:_=Number(a.score_home_period_2),r=Number(a.score_away_period_2);break;case 3:_=Number(a.score_home_period_3),r=Number(a.score_away_period_3);break;case 4:_=Number(a.score_home_period_4),r=Number(a.score_away_period_4);break;case 5:_=Number(a.score_home_period_5),r=Number(a.score_away_period_5)}return{home:_,away:r}},d_=function(e,a,_,r,t,o){return Number(r.home)!=t&&Number(r.away)!=t||!(Number(r.home)==t&&_.home>=o||Number(r.away)==t&&_.away>=o)?{allow:!0,message:"",currentHomeGameScore:_.home,currentAwayGameScore:_.away}:{allow:!1,message:"Blocking game ".concat(e," - ").concat(a," due to current result: ").concat(r.home," - ").concat(r.away," (").concat(_.home," - ").concat(_.away,")")}},R_=function(e,a,_,r,t,o){var n,E;if(L.includes(e)?(n=r.toLowerCase()==a.toLowerCase()||r.toLowerCase()==_.toLowerCase(),E=t.toLowerCase()==a.toLowerCase()||t.toLowerCase()==_.toLowerCase()):(n=r.toLowerCase()==a.toLowerCase(),E=t.toLowerCase()==_.toLowerCase()),!0!==n){var i=o.get(r.toLowerCase()),s=o.get(a.toLowerCase()),A=o.get(_.toLowerCase());if([i,s].some((function(e){return null==e})))return!1;n=L.includes(e)?i==s||i==A:i==s}if(!0!==E){var I=o.get(t.toLowerCase());if(s=o.get(a.toLowerCase()),[I,A=o.get(_.toLowerCase())].some((function(e){return null==e})))return!1;E=L.includes(e)&&I==s||I==A}return n&&E},M_=function(e,a,_,r){var t;if(A_(_)==N.TENNIS){var o=a.getTime(),n=e.getTime();t=Math.abs(n-o)<=Number(60*r*1e3)}else t=a.toUTCString()==e.toUTCString();return t},u_=0,C_="Draw",P_=1e5,c_=.2,p_=10001,m_=10002,f_=100,U_={OPEN:0,PAUSED:1,IN_PROGRESS:3,FINISHED:8,RESOLVED:10,CANCELED:255},w_=function(e,a,_){if(e.some((function(e){return 0===e})))return e;var r=e.reduce((function(e,a){return e+a}),0);if(r<=1)return Array(e.length).fill(0);if(0===_){if(!(a>100*(r-1)))return e;_=a}var t=1+_/100,o=t/r,n=e.map((function(e){return e*o}));if(n.some((function(e){return e>=1})))return Array(e.length).fill(0);var E=n.reduce((function(e,a){return e+a}),0);if(E<1)return Array(e.length).fill(0);var i=t/E;return n.map((function(e){return e*i}))},G_=function(e,a,_,r){var t=e.find((function(e){return Number(e.typeId)===Number(_)&&Number(e.sportId)===Number(a)}));return t?{minSpread:t.minSpread?Number(t.minSpread):r,targetSpread:t.targetSpread?Number(t.targetSpread):0}:{minSpread:r,targetSpread:0}},F_=function(e,a,_,r,t){var o=new Map;return e.forEach((function(e){var n,E,i=a.odds.filter((function(a){return a.sports_book_name.toLowerCase()==e.toLowerCase()})),s=r.get(_.homeTeam.toLowerCase()),A=r.get(_.awayTeam.toLowerCase()),I=0;null!=(n=null==s?i.find((function(e){var a=r.get(e.name.toLowerCase());return null==a?e.name.toLowerCase()==_.homeTeam.toLowerCase():a==_.homeTeam.toLowerCase()})):i.find((function(e){var a=r.get(e.name.toLowerCase());return null==a?e.name.toLowerCase()==s:a==s})))&&(I=n.price);var S=0;null!=(E=null==A?i.find((function(e){var a=r.get(e.name.toLowerCase());return null==a?e.name.toLowerCase()==_.awayTeam.toLowerCase():a==_.awayTeam.toLowerCase()})):i.find((function(e){var a=r.get(e.name.toLowerCase());return null==a?e.name.toLowerCase()==A:a==A})))&&(S=E.price);var N=0;if(t){var l=i.find((function(e){return"draw"==e.name.toLowerCase()}));null!=l&&(N=l.price)}o.set(e.toLowerCase(),{homeOdds:I,awayOdds:S,drawOdds:N})})),o},D_=function(e){return e===u_?0:g_("decimal","impliedProbability",e)},g_=function(e,a,_){try{return s(e,_).to(a)}catch(e){return 0}},v_=function(e,a,_,r,t){var o=new Map;return console.log("Filtering odds by market name: "+a),_.forEach((function(_){var n=0,E=e.filter((function(e){return e.market_name.toLowerCase()===a.toLowerCase()&&e.sports_book_name.toLowerCase()==_.toLowerCase()&&e.selection.toLowerCase()==r.homeTeam.toLowerCase()}));null!=E&&(n=E.price);var i=0,s=e.filter((function(e){return e.market_name.toLowerCase()===a.toLowerCase()&&e.sports_book_name.toLowerCase()==_.toLowerCase()&&e.selection.toLowerCase()==r.awayTeam.toLowerCase()}));null!=s&&(i=s.price);var A=0;if(t){var I=e.filter((function(e){return e.market_name.toLowerCase()===a.toLowerCase()&&e.sports_book_name.toLowerCase()==_.toLowerCase()&&e.selection.toLowerCase()==C_.toLowerCase()}));null!=I&&(A=I.price)}o.set(_.toLowerCase(),{homeOdds:n,awayOdds:i,drawOdds:A})})),o},B_=function(e,a,_,r,t,o,n){console.log("Calculating parent odds");var E={homeTeam:r.home_team,awayTeam:r.away_team},i=v_(r.odds,k,_,E,e),s=I(i,_,e,n,c_),A=s.some((function(e){return 1==e.homeOdds||1==e.awayOdds||1==e.drawOdds}));if([s[0].homeOdds,s[0].awayOdds,s[0].drawOdds].every((function(e){return e==u_}))||A)return console.log("No Moneyline odds found or there is 100% odd, returning zero odds."),e?[0,0]:[0,0,0];var S=function(e,a,_){var r,t,o,n,E;return _?[D_((null===(r=e.find((function(e){return e.selection===a.homeTeam})))||void 0===r?void 0:r.price)||0),D_((null===(t=e.find((function(e){return e.selection===a.awayTeam})))||void 0===t?void 0:t.price)||0)]:[D_((null===(o=e.find((function(e){return e.selection===a.homeTeam})))||void 0===o?void 0:o.price)||0),D_((null===(n=e.find((function(e){return e.selection===a.awayTeam})))||void 0===n?void 0:n.price)||0),D_((null===(E=e.find((function(e){return e.selection===C_})))||void 0===E?void 0:E.price)||0)]}([s[0].homeOdds,s[0].awayOdds,s[0].drawOdds],E,e),N=G_(a,t,P_,o);return S=null!==N?w_(S,N.minSpread,N.targetSpread):w_(S,o,0),console.log("Parent odds calculated and adjusted for spread: "+JSON.stringify(S)),S},H_=function(e,a,_){return e.filter((function(e){return e.market_name.toLowerCase()===a.toLowerCase()&&e.sports_book_name.toLowerCase()==_.toLowerCase()}))},b_=function(e,a,_,r,t,o){var n=e.filter((function(e){return.5===Math.abs(e.selection_points%1)}));return y_(n,a).map((function(e){var a=e.line,n=e.odds,E=D_(n[0])||u_,i=D_(n[1])||u_,s=E===u_||i===u_;if(!s){var A,I=G_(r,_.leagueId,t,o);null!==I?(A=w_([E,i],I.minSpread,I.targetSpread)).some((function(e){return e===u_}))?s=!0:(E=A[0],i=A[1]):(A=w_([E,i],o,0)).some((function(e){return e===u_}))?s=!0:(E=A[0],i=A[1])}return{gameId:_.gameId,sportId:_.sportId,typeId:t,maturity:_.maturity,homeTeam:_.homeTeam,awayTeam:_.awayTeam,results:[],status:s?U_.PAUSED:U_.OPEN,line:a*f_,odds:[E,i]}})).filter((function(e){return null!==e}))},y_=function(e,a){var _=e.reduce((function(e,_){var r=_.selection_points,t=_.price,o=_.selection===a.homeTeam,n=o?r:-r;return e[n]||(e[n]={home:null,away:null}),o?e[n].home=t:e[n].away=t,e}),{}),r=Object.entries(_).reduce((function(e,a){var _=a[0],r=a[1],t=parseFloat(_);return null!==r.home&&null!==r.away&&e.push({line:t,odds:[r.home,r.away]}),e}),[]);return r},h_=function(e,a){return void 0===a&&(a=.952),e.map((function(e){return Math.abs(e)>a?u_:e}))},Y_=function(e,a,_,r,t,o){var n=[],E=e.filter((function(e){return.5===Math.abs(e.selection_points%1)})),i=V_(E);return Object.entries(i).forEach((function(e){var a=e[0],E=e[1],i=E.over,s=E.under,A=a.split("_"),I=(A[0],A[1]),S=D_(i)||u_,N=D_(s)||u_,l=S===u_||N===u_;if(!l){var L,T=G_(r,_.leagueId,t,o);null!==T?(L=w_([S,N],T.minSpread,T.targetSpread)).some((function(e){return e===u_}))?l=!0:(S=L[0],N=L[1]):(L=w_([S,N],o,0)).some((function(e){return e===u_}))?l=!0:(S=L[0],N=L[1])}var O={gameId:_.gameId,sportId:_.sportId,typeId:t,maturity:_.maturity,homeTeam:_.homeTeam,awayTeam:_.awayTeam,results:[],status:l?U_.PAUSED:U_.OPEN,line:parseFloat(I)*f_,odds:[S,N]};n.push(O)})),n},V_=function(e){return e.reduce((function(e,a){var _="".concat(a.selection,"_").concat(a.selection_points);return e[_]||(e[_]={over:null,under:null}),"over"===a.selection_line?e[_].over=a.price:"under"===a.selection_line&&(e[_].under=a.price),e}),{})},W_=function(e,a,_,r,t,o,n){var E=r.filter((function(a){return a.sportId===String(e.leagueId)}));console.log("Fetching parent odds for"+e.gameId);var i=B_(!t,E,_,a,e.leagueId,o,n);console.log("Fetched parent odds for"+e.gameId);var A=i[0]==u_||i[1]==u_||t&&i[2]==u_;console.log("Is zero parent odds? "+A),e.odds=e.odds.map((function(e,a){var _;switch(a){case 0:_=i[0];break;case 1:_=i[1];break;case 2:_=i[2]}return{american:s("impliedProbability",_).to("moneyline"),decimal:s("impliedProbability",_).to("decimal"),normalizedImplied:_}})),console.log("Fetching child markets");var I=A?[]:k_(e,E,a,_,o);return console.log("Mapped event for game ID: "+e.gameId),e.childMarkets=I,e},k_=function(e,a,_,r,t){var o=[];return o.concat(K_(_,e,a,r,t))},K_=function(e,a,_,r,t){var o=[],n=I_(a.leagueId),E={homeTeam:e.home_team,awayTeam:e.away_team};if(n){var i=H_(e.odds,n,r[0]);if(i.length>0){var s=b_(i,E,a,_,p_,t);o.push.apply(o,s)}}else console.warn("Spread type for sport ID ".concat(a.leagueId," not found."));return o},Q_=function(e,a,_,r,t){var o=[],n=S_(a.leagueId),E={homeTeam:e.home_team,awayTeam:e.away_team};if(n){var i=H_(e.odds,n,r[0]);i.length>0&&o.push.apply(o,Y_(i,E,a,_,m_,t))}else console.warn("Configuration (totals) for sport ID ".concat(a.leagueId," not found."));return o};return a})()));
1
+ !function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof exports?exports.thalesUtils=r():e.thalesUtils=r()}(this,(()=>(()=>{"use strict";var e={d:(r,a)=>{for(var t in a)e.o(a,t)&&!e.o(r,t)&&Object.defineProperty(r,t,{enumerable:!0,get:a[t]})},o:(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},r={};e.r(r),e.d(r,{adjustSpreadOnOdds:()=>$,allowGameSportWithPeriodConstraint:()=>K,allowGameSportWithResultConstraint:()=>J,allowSoccerGame:()=>z,calculateImpliedOddsDifference:()=>p,checkGameContraints:()=>W,checkOddsFromBookmakers:()=>c,createTotalChildMarkets:()=>fe,cutOddsCloseToValue:()=>de,extractOddsForGamePerProvider:()=>re,fetchResultInCurrentSet:()=>Y,filterOddsByMarketNameBookmaker:()=>ne,filterOddsByMarketNameTeamNameBookmaker:()=>oe,formatSpreadOdds:()=>se,gamesDatesMatching:()=>X,getBookmakersArray:()=>u,getLeagueSport:()=>H,getLeagueSpreadType:()=>x,getLeagueTotalType:()=>U,getParentOdds:()=>ie,getSpreadData:()=>ee,groupAndFormatSpreadOdds:()=>le,groupOddsBySelectionAndPoints:()=>ce,processMarket:()=>pe,processTotalOdds:()=>ue,teamNamesMatching:()=>Q}),"function"!=typeof Object.assign&&(Object.assign=function(e,r){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var a=Object(e),t=1;t<arguments.length;t++){var o=arguments[t];if(null!=o)for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(a[i]=o[i])}return a});var a=function(e){return parseFloat(e.toPrecision(12))};function t(e,r,a){return void 0===a||0==+a?Math[e](r):(r=+r,a=+a,isNaN(r)||"number"!=typeof a||a%1!=0?NaN:r<0?-t(e,-r,a):(r=r.toString().split("e"),+((r=(r=Math[e](+(r[0]+"e"+(r[1]?+r[1]-a:-a)))).toString().split("e"))[0]+"e"+(r[1]?+r[1]+a:a))))}var o,i,n={decimal:{from:function(e){if((e=parseFloat(e))<=1)throw new Error("Outside valid range.");return e},to:function(){return this.decimalValue}},moneyline:{from:function(e){return(e=parseFloat(e))>=0?e/100+1:100/-e+1},to:function(){return this.decimalValue>=2?a(100*(this.decimalValue-1)):a(-100/(this.decimalValue-1))}},hongKong:{from:function(e){if((e=parseFloat(e))<0)throw new Error("Outside valid range.");return e+1},to:function(){return a(this.decimalValue-1)}},impliedProbability:{from:function(e){if((e="string"==typeof e&&"%"==e.slice(-1)?parseFloat(e)/100:parseFloat(e))<=0||e>=1)throw new Error("Outside valid range");return 1/e},to:function(e){if(e.percentage){var r=a(100/this.decimalValue);return null!==e.precision&&(r=t("round",r,-e.precision)),r.toString()+"%"}return a(1/this.decimalValue)}},fractional:{from:function(e){var r,a=e.toString().split("/");if(e=parseFloat(a[0]),2===a.length)r=parseFloat(a[1]);else{if(1!==a.length)throw new Error("Invalid fraction");r=1}if(0===e||0===r||e/r<=0)throw new Error("Outside valid range");return 1+e/r},to:function(e){return function(e,r){for(var a,t=[0,1],o=[1,0],i=function(e){var r=null,a=e.toString().indexOf("E");-1==a&&(a=e.toString().indexOf("e"));var t=null,o=(r=-1==a?e.toString():e.toString().substring(0,a)).toString().indexOf(".");-1==o?t=r:0===o?t=r.substring(1,r.length):o<r.length&&(t=r.substring(0,o)+r.substring(o+1,r.length));var i=t,n=i.toString().length,s=e,l=s.toString().length;0===s&&(l=0);var d,u=n-l;for(d=u;d>0&&i%2==0;d--)i/=2;for(d=u;d>0&&i%5==0;d--)i/=5;return i}(e),n=e,s=Math.pow(10,-r)/2,l=2;l<1e3;l++){var d=Math.floor(n);if(t[l]=d*t[l-1]+t[l-2],Math.abs(t[l])>i)return;if(o[l]=d*o[l-1]+o[l-2],a=t[l]/o[l],Math.abs(a-e)<s||NaN==a)return t[l].toString()+"/"+o[l].toString();n=1/(n-d)}}(this.decimalValue-1,e.precision||12)}},malay:{from:function(e){if((e=parseFloat(e))<=-1||e>1)throw new Error("Outside valid range.");return e<0&&(e=-1/e),e+1},to:function(){return this.decimalValue<=2?a(this.decimalValue-1):a(-1/(this.decimalValue-1))}},indonesian:{from:function(e){if(0===(e=parseFloat(e)))throw new Error("Outside valid range.");return e>=1?e+1:-1/e+1},to:function(){return this.decimalValue<2?a(-1/(this.decimalValue-1)):a(this.decimalValue-1)}}},s=((i=function(e){if("number"!=typeof e||isNaN(e))throw new Error("Invalid odds");this.decimalValue=a(e)}).prototype=(o=function(){throw new Error("This constructor is private, please use the from* functions")}).prototype,o.from=function(e,r){if(!n.hasOwnProperty(e))throw new Error("Unknown format "+e+".");var a=n[e].from(r);return new i(a)},o);s.prototype.to=function(e,r){if(!n.hasOwnProperty(e))throw new Error("Unknown format "+e+".");r=Object.assign({precision:null,percentage:!1},r);var a=n[e].to.call(this,r);return"number"==typeof a&&null!==r.precision&&(a=t("round",a,-r.precision)),a};var l,d=s.from,u=function(e,r,a){var t=e.find((function(e){return Number(e.sportId)===Number(r)}));if(t){if(""==t.primaryBookmaker)return a;var o=[];return t.primaryBookmaker&&o.push(t.primaryBookmaker),t.secondaryBookmaker&&o.push(t.secondaryBookmaker),t.tertiaryBookmaker&&o.push(t.tertiaryBookmaker),o}return a},c=function(e,r,a,t,o){var i=r.some((function(r){var t=e.get(r);return!!t&&(0===t.homeOdds||0===t.awayOdds||!a&&0===t.drawOdds||1===t.homeOdds||1===t.awayOdds||!a&&1===t.drawOdds)}));if(1==r.length){if(i)return[{homeOdds:0,awayOdds:0,drawOdds:0}];var n=r[0],s=e.get(n);return[{homeOdds:s.homeOdds,awayOdds:s.awayOdds,drawOdds:a?0:s.drawOdds}]}if(i)return[{homeOdds:0,awayOdds:0,drawOdds:0}];var l=e.get(r[0]),u=l.homeOdds,c=l.awayOdds,m=l.drawOdds;if(r.slice(1).some((function(r){var i=e[r];if(i){var n=i.homeOdds,s=i.awayOdds,l=i.drawOdds,w=d("decimal",u).to("impliedProbability"),f=d("decimal",c).to("impliedProbability"),v=a?0:d("decimal",m).to("impliedProbability"),b=d("decimal",n).to("impliedProbability"),g=d("decimal",s).to("impliedProbability"),h=a?0:d("decimal",l).to("impliedProbability"),y=p(w,b),A=p(f,g),D=a?0:p(v,h);if(y>t&&w>o&&b>o||A>t&&f>o&&g>o||!a&&D>t&&v>o&&h>o)return!0}return!1})))return console.log("Returning zero odds due to percentage difference"),[{homeOdds:0,awayOdds:0,drawOdds:0}];var w=[];return r.forEach((function(r){return w.push(e.get(r))})),null!=w[0]?w.map((function(e){return{homeOdds:e.homeOdds,awayOdds:e.awayOdds,drawOdds:a?0:e.drawOdds}})):(console.log("Returning zero odds cause no matching bookmakers have been found"),[{homeOdds:0,awayOdds:0,drawOdds:0}])},p=function(e,r){var a=Math.abs(e-r)/e*100;return console.log("% diff: "+a),a},m="Soccer",w="Football",f="Basketball",v="Baseball",b="Hockey",g="Fighting",h="Tennis",y="eSports",A="Rugby",D="Volleyball",O="Handball",C="Cricket",L="Motosport",T="Golf",S=153,_=156,k=158,N=9977,I=9983,E=10138,M=100021,P=100121,F=[N,I,E,S,_,k,15312,15313,15314,15315,15316,15317,15318,15622,15623,15624,15625,15626,15627,15628,15632,15633,15634,15635,15636,15637,15638,15641,15642,15643,15644,15645,15646,15647,15648],R="Asian Handicap",B="Total Goals",j="Point Spread",V="Total Points",G=((l={})[1]={sport:w,id:1,isDrawAvailable:!1},l[2]={sport:w,id:2,isDrawAvailable:!1,spread:R,total:V},l[3]={sport:v,id:3,isDrawAvailable:!1,spread:"Run Line",total:"Total Runs"},l[4]={sport:f,id:4,isDrawAvailable:!1,spread:j,total:V},l[5]={sport:f,id:5,isDrawAvailable:!1,spread:j,total:V},l[6]={sport:b,id:6,isDrawAvailable:!1},l[7]={sport:g,id:7,isDrawAvailable:!1},l[8]={sport:f,id:8,isDrawAvailable:!1,spread:j,total:V},l[10]={sport:m,id:10,isDrawAvailable:!0,spread:R,total:B},l[11]={sport:m,id:11,isDrawAvailable:!0,spread:R,total:B},l[12]={sport:m,id:12,isDrawAvailable:!0,spread:R,total:B},l[13]={sport:m,id:13,isDrawAvailable:!0,spread:R,total:B},l[14]={sport:m,id:14,isDrawAvailable:!0,spread:R,total:B},l[15]={sport:m,id:15,isDrawAvailable:!0,spread:R,total:B},l[16]={sport:m,id:16,isDrawAvailable:!0,spread:R,total:B},l[17]={sport:m,id:17,isDrawAvailable:!0,spread:R,total:B},l[18]={sport:m,id:18,isDrawAvailable:!0,spread:R,total:B},l[19]={sport:m,id:19,isDrawAvailable:!0,spread:R,total:B},l[20]={sport:C,id:20,isDrawAvailable:!1},l[21]={sport:C,id:21,isDrawAvailable:!1},l[33]={sport:b,id:33,isDrawAvailable:!0},l[44]={sport:m,id:44,isDrawAvailable:!0,spread:R,total:B},l[45]={sport:m,id:45,isDrawAvailable:!0,spread:R,total:B},l[50]={sport:m,id:50,isDrawAvailable:!0,spread:R,total:B},l[57]={sport:m,id:57,isDrawAvailable:!0,spread:R,total:B},l[61]={sport:m,id:61,isDrawAvailable:!0,spread:R,total:B},l[65]={sport:m,id:65,isDrawAvailable:!0,spread:R,total:B},l[66]={sport:m,id:66,isDrawAvailable:!0,spread:R,total:B},l[76]={sport:m,id:76,isDrawAvailable:!0,spread:R,total:B},l[132]={sport:m,id:132,isDrawAvailable:!0,spread:R,total:B},l[134]={sport:m,id:134,isDrawAvailable:!0,spread:R,total:B},l[138]={sport:m,id:138,isDrawAvailable:!0,spread:R,total:B},l[141]={sport:m,id:141,isDrawAvailable:!0,spread:R,total:B},l[153]={sport:h,id:S,isDrawAvailable:!1},l[156]={sport:h,id:_,isDrawAvailable:!1},l[158]={sport:h,id:k,isDrawAvailable:!1},l[209]={sport:m,id:209,isDrawAvailable:!0,spread:R,total:B},l[268]={sport:m,id:268,isDrawAvailable:!0,spread:R,total:B},l[288]={sport:m,id:288,isDrawAvailable:!0,spread:R,total:B},l[296]={sport:m,id:296,isDrawAvailable:!0,spread:R,total:B},l[380]={sport:O,id:380,isDrawAvailable:!0},l[381]={sport:O,id:381,isDrawAvailable:!0},l[399]={sport:f,id:399,isDrawAvailable:!1,spread:j,total:V},l[406]={sport:f,id:406,isDrawAvailable:!1,spread:j,total:V},l[407]={sport:f,id:407,isDrawAvailable:!1,spread:j,total:V},l[409]={sport:f,id:409,isDrawAvailable:!1,spread:j,total:V},l[445]={sport:L,id:445,isDrawAvailable:!1},l[453]={sport:D,id:453,isDrawAvailable:!1},l[454]={sport:D,id:454,isDrawAvailable:!1},l[8910]={sport:"TableTennis",id:8910,isDrawAvailable:!1},l[497]={sport:L,id:497,isDrawAvailable:!1},l[536]={sport:m,id:536,isDrawAvailable:!0,spread:R,total:B},l[8881]={sport:"Waterpolo",id:8881,isDrawAvailable:!0},l[8893]={sport:D,id:8893,isDrawAvailable:!1},l[8894]={sport:D,id:8894,isDrawAvailable:!1},l[9196]={sport:g,id:9196,isDrawAvailable:!1},l[9578]={sport:A,id:9578,isDrawAvailable:!0},l[9588]={sport:A,id:9588,isDrawAvailable:!0},l[9698]={sport:b,id:9698,isDrawAvailable:!0},l[9699]={sport:b,id:9699,isDrawAvailable:!0},l[9806]={sport:m,id:9806,isDrawAvailable:!0,spread:R,total:B},l[9821]={sport:m,id:9821,isDrawAvailable:!0,spread:R,total:B},l[9977]={sport:y,id:N,isDrawAvailable:!1},l[9983]={sport:y,id:I,isDrawAvailable:!1},l[10071]={sport:f,id:10071,isDrawAvailable:!1},l[10072]={sport:f,id:10072,isDrawAvailable:!1},l[10502]={sport:f,id:10502,isDrawAvailable:!1,spread:j,total:V},l[10138]={sport:y,id:E,isDrawAvailable:!1},l[10199]={sport:m,id:10199,isDrawAvailable:!0,spread:R,total:B},l[10216]={sport:m,id:10216,isDrawAvailable:!0,spread:R,total:B},l[10595]={sport:g,id:10595,isDrawAvailable:!1},l[10611]={sport:m,id:10611,isDrawAvailable:!0,spread:R,total:B},l[10613]={sport:m,id:10613,isDrawAvailable:!0,spread:R,total:B},l[10615]={sport:m,id:10615,isDrawAvailable:!0,spread:R,total:B},l[100021]={sport:T,id:M,isDrawAvailable:!1},l[100121]={sport:T,id:P,isDrawAvailable:!1},l[230]={sport:m,id:230,isDrawAvailable:!0,spread:R,total:B},l),H=function(e){var r=G[e];return r?r.sport:""},x=function(e){var r=G[e];return r?r.spread:void 0},U=function(e){var r=G[e];return r?r.total:void 0},W=function(e,r,a){var t=e.score_home_total,o=e.score_away_total,i=e.clock,n=e.period,s=e.status,l=e.home_team,d=e.away_team,u=parseInt(n),c=H(r);return"completed"==s.toLowerCase()?{allow:!1,message:"Blocking game ".concat(l," - ").concat(d," because it is no longer live.")}:c===f?K(l,d,u,a.get(f)):c===b?K(l,d,u,a.get(b)):c===v?K(l,d,u,a.get(v)):c===m?z(l,d,i,n,a.get(m)):c===h?J(e,l,d,n,t,o,r,c):c===D?J(e,l,d,u,t,o,r,c):{allow:!0,message:"The sport ".concat(r," does not have constraint")}},K=function(e,r,a,t){return!Number.isNaN(a)&&a>=t?{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to period: ").concat(a,". period")}:{allow:!0,message:""}},z=function(e,r,a,t,o){var i=Number(a);return!Number.isNaN(i)&&i>=o||Number.isNaN(i)&&"HALF"!=t?{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to clock: ").concat(a,"min")}:{allow:!0,message:""}},J=function(e,r,a,t,o,i,n,s){var l=Number(t),d=Y(l,e),u="atp"==e.league.toLowerCase(),c={home:o,away:i};return s==D?q(r,a,d,c,2,5==l?10:20):n.toString().startsWith(S)&&u?q(r,a,d,c,2,5):n.toString().startsWith(S)&&!u||n.toString().startsWith(_)||n.toString().startsWith(k)?q(r,a,d,c,1,5):{allow:!0,message:"The sport ".concat(n," does not have result constraint")}},Y=function(e,r){var a=0,t=0;switch(e){case 1:a=Number(r.score_home_period_1),t=Number(r.score_away_period_1);break;case 2:a=Number(r.score_home_period_2),t=Number(r.score_away_period_2);break;case 3:a=Number(r.score_home_period_3),t=Number(r.score_away_period_3);break;case 4:a=Number(r.score_home_period_4),t=Number(r.score_away_period_4);break;case 5:a=Number(r.score_home_period_5),t=Number(r.score_away_period_5)}return{home:a,away:t}},q=function(e,r,a,t,o,i){return Number(t.home)!=o&&Number(t.away)!=o||!(Number(t.home)==o&&a.home>=i||Number(t.away)==o&&a.away>=i)?{allow:!0,message:"",currentHomeGameScore:a.home,currentAwayGameScore:a.away}:{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to current result: ").concat(t.home," - ").concat(t.away," (").concat(a.home," - ").concat(a.away,")")}},Q=function(e,r,a,t,o,i){var n,s;if(F.includes(e)?(n=t.toLowerCase()==r.toLowerCase()||t.toLowerCase()==a.toLowerCase(),s=o.toLowerCase()==r.toLowerCase()||o.toLowerCase()==a.toLowerCase()):(n=t.toLowerCase()==r.toLowerCase(),s=o.toLowerCase()==a.toLowerCase()),!0!==n){var l=i.get(t.toLowerCase()),d=i.get(r.toLowerCase()),u=i.get(a.toLowerCase());if([l,d].some((function(e){return null==e})))return!1;n=F.includes(e)?l==d||l==u:l==d}if(!0!==s){var c=i.get(o.toLowerCase());if(d=i.get(r.toLowerCase()),[c,u=i.get(a.toLowerCase())].some((function(e){return null==e})))return!1;s=F.includes(e)&&c==d||c==u}return n&&s},X=function(e,r,a,t){var o;if(H(a)==h){var i=r.getTime(),n=e.getTime();o=Math.abs(n-i)<=Number(60*t*1e3)}else o=r.toUTCString()==e.toUTCString();return o},Z="Draw",$=function(e,r,a){if(e.some((function(e){return 0===e})))return e;var t=e.reduce((function(e,r){return e+r}),0);if(t<=1)return Array(e.length).fill(0);if(0===a){if(!(r>100*(t-1)))return e;a=r}var o=1+a/100,i=o/t,n=e.map((function(e){return e*i}));if(n.some((function(e){return e>=1})))return Array(e.length).fill(0);var s=n.reduce((function(e,r){return e+r}),0);if(s<1)return Array(e.length).fill(0);var l=o/s;return n.map((function(e){return e*l}))},ee=function(e,r,a,t){var o=e.find((function(e){return Number(e.typeId)===Number(a)&&Number(e.sportId)===Number(r)}));return o?{minSpread:o.minSpread?Number(o.minSpread):t,targetSpread:o.targetSpread?Number(o.targetSpread):0}:{minSpread:t,targetSpread:0}},re=function(e,r,a,t,o){var i=new Map;return e.forEach((function(e){var n,s,l=r.odds.filter((function(r){return r.sports_book_name.toLowerCase()==e.toLowerCase()})),d=t.get(a.homeTeam.toLowerCase()),u=t.get(a.awayTeam.toLowerCase()),c=0;null!=(n=null==d?l.find((function(e){var r=t.get(e.name.toLowerCase());return null==r?e.name.toLowerCase()==a.homeTeam.toLowerCase():r==a.homeTeam.toLowerCase()})):l.find((function(e){var r=t.get(e.name.toLowerCase());return null==r?e.name.toLowerCase()==d:r==d})))&&(c=n.price);var p=0;null!=(s=null==u?l.find((function(e){var r=t.get(e.name.toLowerCase());return null==r?e.name.toLowerCase()==a.awayTeam.toLowerCase():r==a.awayTeam.toLowerCase()})):l.find((function(e){var r=t.get(e.name.toLowerCase());return null==r?e.name.toLowerCase()==u:r==u})))&&(p=s.price);var m=0;if(o){var w=l.find((function(e){return"draw"==e.name.toLowerCase()}));null!=w&&(m=w.price)}i.set(e.toLowerCase(),{homeOdds:c,awayOdds:p,drawOdds:m})})),i},ae=function(e){return 0===e?0:te("decimal","impliedProbability",e)},te=function(e,r,a){try{return d(e,a).to(r)}catch(e){return 0}},oe=function(e,r,a,t,o){var i=new Map;return console.log("Filtering odds by market name: "+r),a.forEach((function(a){var n=0,s=e.filter((function(e){return e.market_name.toLowerCase()===r.toLowerCase()&&e.sports_book_name.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()==t.homeTeam.toLowerCase()}));null!=s&&(n=s.price);var l=0,d=e.filter((function(e){return e.market_name.toLowerCase()===r.toLowerCase()&&e.sports_book_name.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()==t.awayTeam.toLowerCase()}));null!=d&&(l=d.price);var u=0;if(o){var c=e.filter((function(e){return e.market_name.toLowerCase()===r.toLowerCase()&&e.sports_book_name.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()==Z.toLowerCase()}));null!=c&&(u=c.price)}i.set(a.toLowerCase(),{homeOdds:n,awayOdds:l,drawOdds:u})})),i},ie=function(e,r,a,t,o,i,n){console.log("Calculating parent odds");var s={homeTeam:t.home_team,awayTeam:t.away_team},l=oe(t.odds,"Moneyline",a,s,e),d=c(l,a,e,n,.2),u=d.some((function(e){return 1==e.homeOdds||1==e.awayOdds||1==e.drawOdds}));if([d[0].homeOdds,d[0].awayOdds,d[0].drawOdds].every((function(e){return 0==e}))||u)return console.log("No Moneyline odds found or there is 100% odd, returning zero odds."),e?[0,0]:[0,0,0];var p=function(e,r,a){var t,o,i,n,s;return a?[ae((null===(t=e.find((function(e){return e.selection===r.homeTeam})))||void 0===t?void 0:t.price)||0),ae((null===(o=e.find((function(e){return e.selection===r.awayTeam})))||void 0===o?void 0:o.price)||0)]:[ae((null===(i=e.find((function(e){return e.selection===r.homeTeam})))||void 0===i?void 0:i.price)||0),ae((null===(n=e.find((function(e){return e.selection===r.awayTeam})))||void 0===n?void 0:n.price)||0),ae((null===(s=e.find((function(e){return e.selection===Z})))||void 0===s?void 0:s.price)||0)]}([d[0].homeOdds,d[0].awayOdds,d[0].drawOdds],s,e),m=ee(r,o,1e5,i);return p=null!==m?$(p,m.minSpread,m.targetSpread):$(p,i,0),console.log("Parent odds calculated and adjusted for spread: "+JSON.stringify(p)),p},ne=function(e,r,a){return e.filter((function(e){return e.market_name.toLowerCase()===r.toLowerCase()&&e.sports_book_name.toLowerCase()==a.toLowerCase()}))},se=function(e,r,a,t,o,i){var n=e.filter((function(e){return.5===Math.abs(e.selection_points%1)}));return le(n,r).map((function(e){var r=e.line,n=e.odds,s=ae(n[0])||0,l=ae(n[1])||0,d=0===s||0===l;if(!d){var u,c=ee(t,a.leagueId,o,i);null!==c?(u=$([s,l],c.minSpread,c.targetSpread)).some((function(e){return 0===e}))?d=!0:(s=u[0],l=u[1]):(u=$([s,l],i,0)).some((function(e){return 0===e}))?d=!0:(s=u[0],l=u[1])}return{gameId:a.gameId,sportId:a.sportId,typeId:o,maturity:a.maturity,homeTeam:a.homeTeam,awayTeam:a.awayTeam,results:[],status:d?1:0,line:100*r,odds:[s,l]}})).filter((function(e){return null!==e}))},le=function(e,r){var a=e.reduce((function(e,a){var t=a.selection_points,o=a.price,i=a.selection===r.homeTeam,n=i?t:-t;return e[n]||(e[n]={home:null,away:null}),i?e[n].home=o:e[n].away=o,e}),{}),t=Object.entries(a).reduce((function(e,r){var a=r[0],t=r[1],o=parseFloat(a);return null!==t.home&&null!==t.away&&e.push({line:o,odds:[t.home,t.away]}),e}),[]);return t},de=function(e,r){return void 0===r&&(r=.952),e.map((function(e){return Math.abs(e)>r?0:e}))},ue=function(e,r,a,t,o,i){var n=[],s=e.filter((function(e){return.5===Math.abs(e.selection_points%1)})),l=ce(s);return Object.entries(l).forEach((function(e){var r=e[0],s=e[1],l=s.over,d=s.under,u=r.split("_"),c=(u[0],u[1]),p=ae(l)||0,m=ae(d)||0,w=0===p||0===m;if(!w){var f,v=ee(t,a.leagueId,o,i);null!==v?(f=$([p,m],v.minSpread,v.targetSpread)).some((function(e){return 0===e}))?w=!0:(p=f[0],m=f[1]):(f=$([p,m],i,0)).some((function(e){return 0===e}))?w=!0:(p=f[0],m=f[1])}var b={gameId:a.gameId,sportId:a.sportId,typeId:o,maturity:a.maturity,homeTeam:a.homeTeam,awayTeam:a.awayTeam,results:[],status:w?1:0,line:100*parseFloat(c),odds:[p,m]};n.push(b)})),n},ce=function(e){return e.reduce((function(e,r){var a="".concat(r.selection,"_").concat(r.selection_points);return e[a]||(e[a]={over:null,under:null}),"over"===r.selection_line?e[a].over=r.price:"under"===r.selection_line&&(e[a].under=r.price),e}),{})},pe=function(e,r,a,t,o,i,n){var s=t.filter((function(r){return r.sportId===String(e.leagueId)}));console.log("READY TO FETCH PARENT ODDS");var l=ie(!o,s,a,r,e.leagueId,i,n);console.log("FETCHED PARENT ODDS: ",l);var u=0==l[0]||0==l[1]||o&&0==l[2];e.odds=e.odds.map((function(e,r){var a;switch(r){case 0:a=l[0];break;case 1:a=l[1];break;case 2:a=l[2]}return{american:d("impliedProbability",a).to("moneyline"),decimal:d("impliedProbability",a).to("decimal"),normalizedImplied:a}})),console.log("FETCHING CHILD ODDS:");var c=u?[]:me(e,s,r,a,i);return console.log("Mapped event for game ID: "+e.gameId),e.childMarkets=c,e},me=function(e,r,a,t,o){var i=[];return(i=i.concat(we(a,e,r,t,o))).concat(fe(a,e,r,t,o))},we=function(e,r,a,t,o){console.log("CREATING SPREAD CHILD MARKETS");var i=[],n=x(r.leagueId),s={homeTeam:e.home_team,awayTeam:e.away_team};if(n){var l=ne(e.odds,n,t[0]);if(l.length>0){var d=se(l,s,r,a,10001,o);i.push.apply(i,d)}}else console.warn("Spread type for sport ID ".concat(r.leagueId," not found."));return console.log("RETURNING SPREAD CHILD MARKETS",i),i},fe=function(e,r,a,t,o){console.log("CREATING TOTAL CHILD MARKETS");var i=[],n=U(r.leagueId),s={homeTeam:e.home_team,awayTeam:e.away_team};if(n){var l=ne(e.odds,n,t[0]);l.length>0&&i.push.apply(i,ue(l,s,r,a,10002,o))}else console.warn("Configuration (totals) for sport ID ".concat(r.leagueId," not found."));return console.log("RETURNING TOTAL CHILD MARKETS: ",i),i};return r})()));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overtime-live-trading-utils",
3
- "version": "0.0.43",
3
+ "version": "0.0.50",
4
4
  "description": "",
5
5
  "main": "main.js",
6
6
  "scripts": {
@@ -27,7 +27,7 @@ export const processMarket = (
27
27
  ) => {
28
28
  const sportSpreadData = spreadData.filter((data) => data.sportId === String(market.leagueId));
29
29
 
30
- console.log('Fetching parent odds for' + market.gameId);
30
+ console.log('READY TO FETCH PARENT ODDS');
31
31
  const moneylineOdds = getParentOdds(
32
32
  !isDrawAvailable,
33
33
  sportSpreadData,
@@ -37,13 +37,11 @@ export const processMarket = (
37
37
  defaultSpreadForLiveMarkets,
38
38
  maxPercentageDiffBetwenOdds
39
39
  );
40
-
41
- console.log('Fetched parent odds for' + market.gameId);
40
+ console.log('FETCHED PARENT ODDS: ', moneylineOdds);
42
41
 
43
42
  const isZeroParentOdds =
44
43
  moneylineOdds[0] == ZERO || moneylineOdds[1] == ZERO || (isDrawAvailable && moneylineOdds[2] == ZERO);
45
44
 
46
- console.log('Is zero parent odds? ' + isZeroParentOdds);
47
45
  market.odds = market.odds.map((_odd, index) => {
48
46
  let positionOdds;
49
47
  switch (index) {
@@ -64,7 +62,7 @@ export const processMarket = (
64
62
  };
65
63
  });
66
64
 
67
- console.log('Fetching child markets');
65
+ console.log('FETCHING CHILD ODDS:');
68
66
  const childMarkets = isZeroParentOdds
69
67
  ? []
70
68
  : getChildMarkets(market, sportSpreadData, apiResponseWithOdds, liveOddsProviders, defaultSpreadForLiveMarkets);
@@ -105,9 +103,15 @@ const getChildMarkets = (
105
103
  );
106
104
 
107
105
  // Create Total Child Markets
108
- // childMarkets = childMarkets.concat(
109
- // createTotalChildMarkets(oddChildren, commonData, sportIdApi, spreadDataForSport, defaultSpreadForLiveMarkets)
110
- // );
106
+ childMarkets = childMarkets.concat(
107
+ createTotalChildMarkets(
108
+ apiResponseWithOdds,
109
+ market,
110
+ spreadDataForSport,
111
+ liveOddsProviders,
112
+ defaultSpreadForLiveMarkets
113
+ )
114
+ );
111
115
 
112
116
  return childMarkets;
113
117
  };
@@ -129,6 +133,7 @@ const createSpreadChildMarkets = (
129
133
  liveOddsProviders,
130
134
  defaultSpreadForLiveMarkets
131
135
  ) => {
136
+ console.log('CREATING SPREAD CHILD MARKETS');
132
137
  const childMarkets = [];
133
138
  const spreadType = getLeagueSpreadType(market.leagueId);
134
139
  const commonData = {
@@ -157,7 +162,7 @@ const createSpreadChildMarkets = (
157
162
  } else {
158
163
  console.warn(`Spread type for sport ID ${market.leagueId} not found.`);
159
164
  }
160
-
165
+ console.log('RETURNING SPREAD CHILD MARKETS', childMarkets);
161
166
  return childMarkets;
162
167
  };
163
168
 
@@ -178,6 +183,7 @@ export const createTotalChildMarkets = (
178
183
  liveOddsProviders,
179
184
  defaultSpreadForLiveMarkets
180
185
  ) => {
186
+ console.log('CREATING TOTAL CHILD MARKETS');
181
187
  const childMarkets = [];
182
188
  const totalType = getLeagueTotalType(market.leagueId);
183
189
  const commonData = {
@@ -204,5 +210,6 @@ export const createTotalChildMarkets = (
204
210
  console.warn(`Configuration (totals) for sport ID ${market.leagueId} not found.`);
205
211
  }
206
212
 
213
+ console.log('RETURNING TOTAL CHILD MARKETS: ', childMarkets);
207
214
  return childMarkets;
208
215
  };
@@ -42,9 +42,8 @@ export const checkGameContraints = (opticOddsScoresApiResponse, marketLeague, co
42
42
  };
43
43
  }
44
44
 
45
- let allowedObject;
46
45
  if (marketSport === Sport.BASKETBALL) {
47
- allowedObject = allowGameSportWithPeriodConstraint(
46
+ return allowGameSportWithPeriodConstraint(
48
47
  homeTeam,
49
48
  awayTeam,
50
49
  currentPeriodNumber,
@@ -53,7 +52,7 @@ export const checkGameContraints = (opticOddsScoresApiResponse, marketLeague, co
53
52
  }
54
53
 
55
54
  if (marketSport === Sport.HOCKEY) {
56
- allowedObject = allowGameSportWithPeriodConstraint(
55
+ return allowGameSportWithPeriodConstraint(
57
56
  homeTeam,
58
57
  awayTeam,
59
58
  currentPeriodNumber,
@@ -62,7 +61,7 @@ export const checkGameContraints = (opticOddsScoresApiResponse, marketLeague, co
62
61
  }
63
62
 
64
63
  if (marketSport === Sport.BASEBALL) {
65
- allowedObject = allowGameSportWithPeriodConstraint(
64
+ return allowGameSportWithPeriodConstraint(
66
65
  homeTeam,
67
66
  awayTeam,
68
67
  currentPeriodNumber,
@@ -71,17 +70,11 @@ export const checkGameContraints = (opticOddsScoresApiResponse, marketLeague, co
71
70
  }
72
71
 
73
72
  if (marketSport === Sport.SOCCER) {
74
- allowedObject = allowSoccerGame(
75
- homeTeam,
76
- awayTeam,
77
- currentClock,
78
- currentPeriod,
79
- constraintsMap.get(Sport.SOCCER)
80
- );
73
+ return allowSoccerGame(homeTeam, awayTeam, currentClock, currentPeriod, constraintsMap.get(Sport.SOCCER));
81
74
  }
82
75
 
83
76
  if (marketSport === Sport.TENNIS) {
84
- allowedObject = allowGameSportWithResultConstraint(
77
+ return allowGameSportWithResultConstraint(
85
78
  opticOddsScoresApiResponse,
86
79
  homeTeam,
87
80
  awayTeam,
@@ -94,7 +87,7 @@ export const checkGameContraints = (opticOddsScoresApiResponse, marketLeague, co
94
87
  }
95
88
 
96
89
  if (marketSport === Sport.VOLLEYBALL) {
97
- allowedObject = allowGameSportWithResultConstraint(
90
+ return allowGameSportWithResultConstraint(
98
91
  opticOddsScoresApiResponse,
99
92
  homeTeam,
100
93
  awayTeam,
@@ -107,8 +100,8 @@ export const checkGameContraints = (opticOddsScoresApiResponse, marketLeague, co
107
100
  }
108
101
 
109
102
  return {
110
- allow: false,
111
- message: `Blocking game ${homeTeam} - ${awayTeam} because it entered constraints branch but the league does not have constraints`,
103
+ allow: true,
104
+ message: `The sport ${marketLeague} does not have constraint`,
112
105
  };
113
106
  };
114
107
 
@@ -203,10 +196,14 @@ export const allowGameSportWithResultConstraint = (
203
196
  };
204
197
  };
205
198
 
206
- const fetchResultInCurrentSet = (currentSet: number, opticOddsScoresApiResponse) => {
199
+ export const fetchResultInCurrentSet = (currentSet: number, opticOddsScoresApiResponse) => {
207
200
  let currentHomeGameScore = 0;
208
201
  let currentAwayGameScore = 0;
209
202
  switch (currentSet) {
203
+ case 1:
204
+ currentHomeGameScore = Number(opticOddsScoresApiResponse.score_home_period_1);
205
+ currentAwayGameScore = Number(opticOddsScoresApiResponse.score_away_period_1);
206
+ break;
210
207
  case 2:
211
208
  currentHomeGameScore = Number(opticOddsScoresApiResponse.score_home_period_2);
212
209
  currentAwayGameScore = Number(opticOddsScoresApiResponse.score_away_period_2);