overtime-live-trading-utils 0.3.1 → 1.0.1
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 +1 -0
- package/main.js +1 -1
- package/package.json +1 -1
- package/src/constants/sports.ts +70 -0
- package/src/enums/sports.ts +7 -0
- package/src/types/odds.ts +50 -0
- package/src/utils/bookmakers.ts +1 -2
- package/src/utils/constraints.ts +20 -18
- package/src/utils/markets.ts +20 -12
- package/src/utils/odds.ts +22 -19
- package/src/utils/opticOdds.ts +59 -0
- package/src/utils/sports.ts +17 -12
package/index.ts
CHANGED
package/main.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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 E in a)e.o(a,E)&&!e.o(r,E)&&Object.defineProperty(r,E,{enumerable:!0,get:a[E]})},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,{AMERICAN_LEAGUES:()=>C,DRAW:()=>K,LEAGUES_NO_FORMAL_HOME_AWAY:()=>M,LEAGUES_NO_LIVE_CONSTRAINTS:()=>U,League:()=>t,LeagueIdMapEnetpulse:()=>G,LeagueIdMapOpticOdds:()=>y,LeagueIdMapRundown:()=>m,LeagueMap:()=>c,MIN_ODDS_FOR_DIFF_CHECKING:()=>j,MONEYLINE_TYPE_ID:()=>Q,MULTIPLIER_100:()=>Z,MatchResolveType:()=>T,MoneylineTypes:()=>S,PeriodType:()=>N,Provider:()=>I,ScoringType:()=>s,Sport:()=>L,SpreadTypes:()=>p,TAG_CHILD_SPREAD:()=>X,TAG_CHILD_TOTALS:()=>z,TotalTypes:()=>l,UFC_LEAGUE_IDS:()=>u,ZERO:()=>k,adjustSpreadOnChildOdds:()=>Le,adjustSpreadOnOdds:()=>x,allowGameSportWithPeriodConstraint:()=>le,allowGameSportWithResultConstraint:()=>Te,allowSoccerGame:()=>se,calculateImpliedOddsDifference:()=>P,checkGameContraints:()=>pe,checkOddsFromBookmakers:()=>R,createChildMarkets:()=>ie,fetchResultInCurrentSet:()=>Ne,filterOddsByMarketNameBookmaker:()=>oe,filterOddsByMarketNameTeamNameBookmaker:()=>ae,gamesDatesMatching:()=>W,getBetTypesForLeague:()=>h,getBookmakersArray:()=>O,getLeagueInfo:()=>B,getLeagueIsDrawAvailable:()=>b,getLeagueLabel:()=>D,getLeagueOpticOddsName:()=>V,getLeaguePeriodType:()=>w,getLeagueProvider:()=>g,getLeagueSport:()=>v,getLeagueSpreadTypes:()=>f,getLeagueTotalTypes:()=>Y,getLiveSupportedLeagues:()=>F,getParentOdds:()=>Ee,getSpreadData:()=>J,groupAndFormatSpreadOdds:()=>Ae,groupAndFormatTotalOdds:()=>_e,processMarket:()=>Se,teamNamesMatching:()=>H}),"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),E=1;E<arguments.length;E++){var i=arguments[E];if(null!=i)for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(a[o]=i[o])}return a});var a=function(e){return parseFloat(e.toPrecision(12))};function E(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?-E(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 i,o,A={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=E("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,E=[0,1],i=[1,0],o=function(e){var r=null,a=e.toString().indexOf("E");-1==a&&(a=e.toString().indexOf("e"));var E=null,i=(r=-1==a?e.toString():e.toString().substring(0,a)).toString().indexOf(".");-1==i?E=r:0===i?E=r.substring(1,r.length):i<r.length&&(E=r.substring(0,i)+r.substring(i+1,r.length));var o=E,A=o.toString().length,_=e,L=_.toString().length;0===_&&(L=0);var t,S=A-L;for(t=S;t>0&&o%2==0;t--)o/=2;for(t=S;t>0&&o%5==0;t--)o/=5;return o}(e),A=e,_=Math.pow(10,-r)/2,L=2;L<1e3;L++){var t=Math.floor(A);if(E[L]=t*E[L-1]+E[L-2],Math.abs(E[L])>o)return;if(i[L]=t*i[L-1]+i[L-2],a=E[L]/i[L],Math.abs(a-e)<_||NaN==a)return E[L].toString()+"/"+i[L].toString();A=1/(A-t)}}(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)}}},_=((o=function(e){if("number"!=typeof e||isNaN(e))throw new Error("Invalid odds");this.decimalValue=a(e)}).prototype=(i=function(){throw new Error("This constructor is private, please use the from* functions")}).prototype,i.from=function(e,r){if(!A.hasOwnProperty(e))throw new Error("Unknown format "+e+".");var a=A[e].from(r);return new o(a)},i);_.prototype.to=function(e,r){if(!A.hasOwnProperty(e))throw new Error("Unknown format "+e+".");r=Object.assign({precision:null,percentage:!1},r);var a=A[e].to.call(this,r);return"number"==typeof a&&null!==r.precision&&(a=E("round",a,-r.precision)),a};var L,t,S,p,l,s,T,N,I,n,d=_.from,O=function(e,r,a){var E=e.find((function(e){return Number(e.sportId)===Number(r)}));if(E){if(""==E.primaryBookmaker)return a;var i=[];return E.primaryBookmaker&&i.push(E.primaryBookmaker),E.secondaryBookmaker&&i.push(E.secondaryBookmaker),E.tertiaryBookmaker&&i.push(E.tertiaryBookmaker),i}return a},R=function(e,r,a,E,i){var o=e.get(r[0]);if(!o)return{homeOdds:0,awayOdds:0,drawOdds:0,errorMessage:"Returning zero odds cause no matching bookmakers have been found"};var A=o.homeOdds,_=o.awayOdds,L=a?0:o.drawOdds;if(r.some((function(r){var E=e.get(r);return!!E&&(0===E.homeOdds||0===E.awayOdds||!a&&0===E.drawOdds||1===E.homeOdds||1===E.awayOdds||!a&&1===E.drawOdds)})))return{homeOdds:0,awayOdds:0,drawOdds:0,errorMessage:"Returning zero odds cause bookmakers have 0 or 1 odds"};if(1==r.length)return{homeOdds:A,awayOdds:_,drawOdds:a?0:L};if(r.slice(1).some((function(r){var o=e[r];if(o){var t=o.homeOdds,S=o.awayOdds,p=o.drawOdds,l=d("decimal",A).to("impliedProbability"),s=d("decimal",_).to("impliedProbability"),T=a?0:d("decimal",L).to("impliedProbability"),N=d("decimal",t).to("impliedProbability"),I=d("decimal",S).to("impliedProbability"),n=a?0:d("decimal",p).to("impliedProbability"),O=P(l,N),R=P(s,I),c=a?0:P(T,n);if(O>E&&l>i&&N>i||R>E&&s>i&&I>i||!a&&c>E&&T>i&&n>i)return!0}return!1})))return{homeOdds:0,awayOdds:0,drawOdds:0,errorMessage:"Returning zero odds due to percentage difference between bookmakers"};var t=[];return r.forEach((function(r){return t.push(e.get(r))})),{homeOdds:A,awayOdds:_,drawOdds:a?0:L}},P=function(e,r){var a=Math.abs(e-r)/e*100;return console.log("% diff: "+a),a};!function(e){e.SOCCER="Soccer",e.FOOTBALL="Football",e.BASKETBALL="Basketball",e.BASEBALL="Baseball",e.HOCKEY="Hockey",e.FIGHTING="Fighting",e.TENNIS="Tennis",e.ESPORTS="eSports",e.RUGBY="Rugby",e.VOLLEYBALL="Volleyball",e.HANDBALL="Handball",e.WATERPOLO="Waterpolo",e.CRICKET="Cricket",e.MOTOSPORT="Motosport",e.GOLF="Golf",e.TABLE_TENNIS="TableTennis",e.POLITICS="Politics",e.FUTURES="Futures",e.EMPTY=""}(L||(L={})),function(e){e[e.NCAAF=1]="NCAAF",e[e.NFL=2]="NFL",e[e.MLB=3]="MLB",e[e.NBA=4]="NBA",e[e.NCAAB=5]="NCAAB",e[e.NHL=6]="NHL",e[e.UFC=7]="UFC",e[e.WNBA=8]="WNBA",e[e.MLS=10]="MLS",e[e.EPL=11]="EPL",e[e.LIGUE_ONE=12]="LIGUE_ONE",e[e.BUNDESLIGA=13]="BUNDESLIGA",e[e.LA_LIGA=14]="LA_LIGA",e[e.SERIE_A=15]="SERIE_A",e[e.UEFA_CL=16]="UEFA_CL",e[e.UEFA_EL=17]="UEFA_EL",e[e.FIFA_WC=18]="FIFA_WC",e[e.J1_LEAGUE=19]="J1_LEAGUE",e[e.IPL=20]="IPL",e[e.T20_BLAST=21]="T20_BLAST",e[e.IIHF_WORLD_CHAMPIONSHIP=33]="IIHF_WORLD_CHAMPIONSHIP",e[e.COPA_AMERICA=44]="COPA_AMERICA",e[e.COPA_LIBERTADORES=45]="COPA_LIBERTADORES",e[e.UEFA_EURO=50]="UEFA_EURO",e[e.EREDIVISIE=57]="EREDIVISIE",e[e.PRIMEIRA_LIGA=61]="PRIMEIRA_LIGA",e[e.SUMMER_OLYMPICS_SOCCER_WOMEN=65]="SUMMER_OLYMPICS_SOCCER_WOMEN",e[e.SUMMER_OLYMPICS_SOCCER=66]="SUMMER_OLYMPICS_SOCCER",e[e.FIFA_WC_WOMEN=76]="FIFA_WC_WOMEN",e[e.ENGLAND_CUP=132]="ENGLAND_CUP",e[e.FRANCE_CUP=134]="FRANCE_CUP",e[e.SPAIN_CUP=138]="SPAIN_CUP",e[e.ITALY_CUP=141]="ITALY_CUP",e[e.TENNIS_WTA=152]="TENNIS_WTA",e[e.TENNIS_GS=153]="TENNIS_GS",e[e.TENNIS_MASTERS=156]="TENNIS_MASTERS",e[e.SUMMER_OLYMPICS_TENNIS=158]="SUMMER_OLYMPICS_TENNIS",e[e.GERMANY_CUP=209]="GERMANY_CUP",e[e.LIGA_MX=230]="LIGA_MX",e[e.BRAZIL_1=268]="BRAZIL_1",e[e.UEFA_EURO_U21=288]="UEFA_EURO_U21",e[e.FIFA_WORLD_CUP_U20=296]="FIFA_WORLD_CUP_U20",e[e.SUMMER_OLYMPICS_HANDBALL_WOMEN=380]="SUMMER_OLYMPICS_HANDBALL_WOMEN",e[e.SUMMER_OLYMPICS_HANDBALL=381]="SUMMER_OLYMPICS_HANDBALL",e[e.EUROLEAGUE=399]="EUROLEAGUE",e[e.SUMMER_OLYMPICS_BASKETBALL=406]="SUMMER_OLYMPICS_BASKETBALL",e[e.SUMMER_OLYMPICS_BASKETBALL_WOMEN=407]="SUMMER_OLYMPICS_BASKETBALL_WOMEN",e[e.FIBA_WORLD_CUP=409]="FIBA_WORLD_CUP",e[e.FORMULA1=445]="FORMULA1",e[e.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN=453]="SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN",e[e.SUMMER_OLYMPICS_BEACH_VOLEYBALL=454]="SUMMER_OLYMPICS_BEACH_VOLEYBALL",e[e.MOTOGP=497]="MOTOGP",e[e.SAUDI_PROFESSIONAL_LEAGUE=536]="SAUDI_PROFESSIONAL_LEAGUE",e[e.SUMMER_OLYMPICS_WATERPOLO=8881]="SUMMER_OLYMPICS_WATERPOLO",e[e.SUMMER_OLYMPICS_VOLEYBALL_WOMEN=8893]="SUMMER_OLYMPICS_VOLEYBALL_WOMEN",e[e.SUMMER_OLYMPICS_VOLEYBALL=8894]="SUMMER_OLYMPICS_VOLEYBALL",e[e.SUMMER_OLYMPICS_TABLE_TENNIS=8910]="SUMMER_OLYMPICS_TABLE_TENNIS",e[e.BOXING=9196]="BOXING",e[e.SUMMER_OLYMPICS_RUGBY=9578]="SUMMER_OLYMPICS_RUGBY",e[e.SUMMER_OLYMPICS_RUGBY_WOMEN=9588]="SUMMER_OLYMPICS_RUGBY_WOMEN",e[e.SUMMER_OLYMPICS_HOCKEY_WOMEN=9698]="SUMMER_OLYMPICS_HOCKEY_WOMEN",e[e.SUMMER_OLYMPICS_HOCKEY=9699]="SUMMER_OLYMPICS_HOCKEY",e[e.UEFA_NATIONS_LEAGUE=9806]="UEFA_NATIONS_LEAGUE",e[e.CONCACAF_NATIONS_LEAGUE=9821]="CONCACAF_NATIONS_LEAGUE",e[e.CSGO=9977]="CSGO",e[e.DOTA2=9983]="DOTA2",e[e.SUMMER_OLYMPICS_BASKETBALL_3X3=10071]="SUMMER_OLYMPICS_BASKETBALL_3X3",e[e.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN=10072]="SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN",e[e.SUMMER_OLYMPICS_QUALIFICATION=10502]="SUMMER_OLYMPICS_QUALIFICATION",e[e.LOL=10138]="LOL",e[e.CONMEBOL_WC_QUALIFICATIONS=10199]="CONMEBOL_WC_QUALIFICATIONS",e[e.UEFA_CONFERENCE_LEAGUE=10216]="UEFA_CONFERENCE_LEAGUE",e[e.NON_TITLE_BOXING=10595]="NON_TITLE_BOXING",e[e.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION=10611]="UEFA_CHAMPIONS_LEAGUE_QUALIFICATION",e[e.UEFA_EUROPA_LEAGUE_QUALIFICATION=10613]="UEFA_EUROPA_LEAGUE_QUALIFICATION",e[e.UEFA_CONFERENCE_LEAGUE_QUALIFICATION=10615]="UEFA_CONFERENCE_LEAGUE_QUALIFICATION",e[e.US_ELECTION=2e4]="US_ELECTION",e[e.UEFA_SUPER_CUP=20001]="UEFA_SUPER_CUP",e[e.BRAZIL_CUP=20002]="BRAZIL_CUP",e[e.ENGLAND_CHAMPIONSHIP=20011]="ENGLAND_CHAMPIONSHIP",e[e.SCOTLAND_PREMIERSHIP=20101]="SCOTLAND_PREMIERSHIP",e[e.BELGIUM_LEAGUE=20102]="BELGIUM_LEAGUE",e[e.CZECH_LEAGUE=20103]="CZECH_LEAGUE",e[e.CHILE_PRIMERA=20104]="CHILE_PRIMERA",e[e.FINLAND_LEAGUE=20105]="FINLAND_LEAGUE",e[e.ARGENTINA_PRIMERA=20106]="ARGENTINA_PRIMERA",e[e.RUSSIA_PREMIER=20107]="RUSSIA_PREMIER",e[e.TURKEY_SUPER_LEAGUE=20108]="TURKEY_SUPER_LEAGUE",e[e.SERBIA_SUPER_LEAGUE=20109]="SERBIA_SUPER_LEAGUE",e[e.GREECE_SUPER_LEAGUE=20110]="GREECE_SUPER_LEAGUE",e[e.INDIA_PREMIER=20111]="INDIA_PREMIER",e[e.CHINA_SUPER_LEAGUE=20112]="CHINA_SUPER_LEAGUE",e[e.AUSTRALIA_A_LEAGUE=20113]="AUSTRALIA_A_LEAGUE",e[e.SWITZERLAND_SUPER_LEAGUE=20114]="SWITZERLAND_SUPER_LEAGUE",e[e.BUNDESLIGA_2=20115]="BUNDESLIGA_2",e[e.LA_LIGA_2=20116]="LA_LIGA_2",e[e.SERIE_B=20117]="SERIE_B",e[e.INDIA_SUPER_LEAGUE=20118]="INDIA_SUPER_LEAGUE",e[e.LIGUE_2=20119]="LIGUE_2",e[e.AUSTRIA_BUNDESLIGA=20120]="AUSTRIA_BUNDESLIGA",e[e.DENMARK_SUPER_LEAGUE=20121]="DENMARK_SUPER_LEAGUE",e[e.POLAND_LEAGUE=20122]="POLAND_LEAGUE",e[e.SWEDEN_LEAGUE=20123]="SWEDEN_LEAGUE",e[e.COLOMBIA_PRIMERA_A=20124]="COLOMBIA_PRIMERA_A",e[e.ENGLAND_EFL_CUP=20125]="ENGLAND_EFL_CUP",e[e.ENGLAND_LEGAUE_1=20126]="ENGLAND_LEGAUE_1",e[e.URUGUAY_PRIMERA_DIVISION=20127]="URUGUAY_PRIMERA_DIVISION",e[e.EUROCUP=20200]="EUROCUP",e[e.NFL_FUTURES=30002]="NFL_FUTURES",e[e.NBA_FUTURES=30004]="NBA_FUTURES",e[e.EPL_FUTURES=30011]="EPL_FUTURES",e[e.GOLF_H2H=100021]="GOLF_H2H",e[e.GOLF_WINNER=100121]="GOLF_WINNER",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1=15312]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2=15313]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3=15314]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4=15315]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5=15316]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6=15317]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7=15318]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_1=15622]="TENNIS_MASTERS_LIVE_MAPPING_V2_1",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_2=15623]="TENNIS_MASTERS_LIVE_MAPPING_V2_2",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_3=15624]="TENNIS_MASTERS_LIVE_MAPPING_V2_3",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_4=15625]="TENNIS_MASTERS_LIVE_MAPPING_V2_4",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_5=15626]="TENNIS_MASTERS_LIVE_MAPPING_V2_5",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_6=15627]="TENNIS_MASTERS_LIVE_MAPPING_V2_6",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_7=15628]="TENNIS_MASTERS_LIVE_MAPPING_V2_7",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_8=15632]="TENNIS_MASTERS_LIVE_MAPPING_V2_8",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_9=15633]="TENNIS_MASTERS_LIVE_MAPPING_V2_9",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_10=15634]="TENNIS_MASTERS_LIVE_MAPPING_V2_10",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_11=15635]="TENNIS_MASTERS_LIVE_MAPPING_V2_11",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_12=15636]="TENNIS_MASTERS_LIVE_MAPPING_V2_12",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_13=15637]="TENNIS_MASTERS_LIVE_MAPPING_V2_13",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_14=15638]="TENNIS_MASTERS_LIVE_MAPPING_V2_14",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_15=15641]="TENNIS_MASTERS_LIVE_MAPPING_V2_15",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_16=15642]="TENNIS_MASTERS_LIVE_MAPPING_V2_16",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_17=15643]="TENNIS_MASTERS_LIVE_MAPPING_V2_17",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_18=15644]="TENNIS_MASTERS_LIVE_MAPPING_V2_18",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_19=15645]="TENNIS_MASTERS_LIVE_MAPPING_V2_19",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_20=15646]="TENNIS_MASTERS_LIVE_MAPPING_V2_20",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_21=15647]="TENNIS_MASTERS_LIVE_MAPPING_V2_21",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_22=15648]="TENNIS_MASTERS_LIVE_MAPPING_V2_22",e[e.TENNIS_WTA_LIVE_MAPPING_V2_1=15322]="TENNIS_WTA_LIVE_MAPPING_V2_1",e[e.TENNIS_WTA_LIVE_MAPPING_V2_2=15323]="TENNIS_WTA_LIVE_MAPPING_V2_2",e[e.TENNIS_WTA_LIVE_MAPPING_V2_3=15324]="TENNIS_WTA_LIVE_MAPPING_V2_3",e[e.TENNIS_WTA_LIVE_MAPPING_V2_4=15325]="TENNIS_WTA_LIVE_MAPPING_V2_4",e[e.TENNIS_WTA_LIVE_MAPPING_V2_5=15326]="TENNIS_WTA_LIVE_MAPPING_V2_5",e[e.TENNIS_WTA_LIVE_MAPPING_V2_6=15327]="TENNIS_WTA_LIVE_MAPPING_V2_6",e[e.TENNIS_WTA_LIVE_MAPPING_V2_7=15328]="TENNIS_WTA_LIVE_MAPPING_V2_7"}(t||(t={})),function(e){e.MONEYLINE="Moneyline"}(S||(S={})),function(e){e.ASIAN_HANDICAP="Asian Handicap",e.GAME_SPREAD="Game Spread",e.POINT_SPREAD="Point Spread",e.GOAL_SPREAD="Goal Spread",e.RUN_LINE="Run Line",e.PUCK_LINE="Puck Line"}(p||(p={})),function(e){e.TOTAL_GAMES="Total Games",e.TOTAL_GOALS="Total Goals",e.TOTAL_POINTS="Total Points",e.TOTAL_RUNS="Total Runs"}(l||(l={})),function(e){e.POINTS="points",e.GOALS="goals",e.ROUNDS="rounds",e.SETS="sets",e.EMPTY=""}(s||(s={})),function(e){e.OVERTIME="overtime",e.REGULAR="regular",e.EMPTY=""}(T||(T={})),function(e){e.QUARTER="quarter",e.HALF="half",e.PERIOD="period",e.ROUND="round",e.INNING="inning",e.SET="set",e.EMPTY=""}(N||(N={})),function(e){e.RUNDOWN="rundown",e.ENETPULSE="enetpulse",e.JSONODDS="jsonOdds",e.OPTICODDS="opticOdds",e.EMPTY=""}(I||(I={}));var c=((n={})[t.NCAAF]={sport:L.FOOTBALL,id:t.NCAAF,label:"NCAA Football",opticOddsName:"NCAAF",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[t.NFL]={sport:L.FOOTBALL,id:t.NFL,label:"NFL",opticOddsName:"NFL",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[t.MLB]={sport:L.BASEBALL,id:t.MLB,label:"MLB",opticOddsName:"MLB",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.INNING,isDrawAvailable:!1},n[t.NBA]={sport:L.BASKETBALL,id:t.NBA,label:"NBA",opticOddsName:"NBA",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[t.NCAAB]={sport:L.BASKETBALL,id:t.NCAAB,label:"NCAA Basketball",provider:I.RUNDOWN,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[t.NHL]={sport:L.HOCKEY,id:t.NHL,label:"NHL",opticOddsName:"NHL",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.OVERTIME,periodType:N.PERIOD,isDrawAvailable:!1},n[t.UFC]={sport:L.FIGHTING,id:t.UFC,label:"UFC",provider:I.OPTICODDS,scoringType:s.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[t.WNBA]={sport:L.BASKETBALL,id:t.WNBA,label:"WNBA",opticOddsName:"WNBA",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[t.MLS]={sport:L.SOCCER,id:t.MLS,label:"MLS",opticOddsName:"USA - Major League Soccer",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.EPL]={sport:L.SOCCER,id:t.EPL,label:"EPL",opticOddsName:"England - Premier League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.LIGUE_ONE]={sport:L.SOCCER,id:t.LIGUE_ONE,label:"Ligue 1",opticOddsName:"France - Ligue 1",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.BUNDESLIGA]={sport:L.SOCCER,id:t.BUNDESLIGA,label:"Bundesliga",opticOddsName:"Germany - Bundesliga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.LA_LIGA]={sport:L.SOCCER,id:t.LA_LIGA,label:"La Liga",opticOddsName:"Spain - La Liga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.SERIE_A]={sport:L.SOCCER,id:t.SERIE_A,label:"Serie A",opticOddsName:"Italy - Serie A",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.UEFA_CL]={sport:L.SOCCER,id:t.UEFA_CL,label:"UEFA Champions League",opticOddsName:"UEFA - Champions League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.UEFA_EL]={sport:L.SOCCER,id:t.UEFA_EL,label:"UEFA Europa League",opticOddsName:"UEFA - Europa League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.FIFA_WC]={sport:L.SOCCER,id:t.FIFA_WC,label:"FIFA World Cup Qualifiers",provider:I.OPTICODDS,opticOddsName:"FIFA - World Cup Qualifiers",scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.J1_LEAGUE]={sport:L.SOCCER,id:t.J1_LEAGUE,label:"J1 League",opticOddsName:"Japan - J1 League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.IPL]={sport:L.CRICKET,id:t.IPL,label:"Indian Premier League",provider:I.RUNDOWN,scoringType:s.POINTS,matchResolveType:T.EMPTY,periodType:N.INNING,isDrawAvailable:!1},n[t.T20_BLAST]={sport:L.CRICKET,id:t.T20_BLAST,label:"T20 Blast",provider:I.RUNDOWN,scoringType:s.POINTS,matchResolveType:T.EMPTY,periodType:N.INNING,isDrawAvailable:!1},n[t.IIHF_WORLD_CHAMPIONSHIP]={sport:L.HOCKEY,id:t.IIHF_WORLD_CHAMPIONSHIP,label:"IIHF World Championship",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.PERIOD,isDrawAvailable:!0},n[t.COPA_AMERICA]={sport:L.SOCCER,id:t.COPA_AMERICA,label:"Copa America",opticOddsName:"CONMEBOL - Copa America",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.COPA_LIBERTADORES]={sport:L.SOCCER,id:t.COPA_LIBERTADORES,label:"Copa Libertadores",opticOddsName:"CONMEBOL - Copa Libertadores",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.UEFA_EURO]={sport:L.SOCCER,id:t.UEFA_EURO,label:"UEFA EURO 2024",opticOddsName:"UEFA - European Championship",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.EREDIVISIE]={sport:L.SOCCER,id:t.EREDIVISIE,label:"Eredivisie",opticOddsName:"Netherlands - Eredivisie",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.PRIMEIRA_LIGA]={sport:L.SOCCER,id:t.PRIMEIRA_LIGA,label:"Primeira Liga",opticOddsName:"Portugal - Primeira Liga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_SOCCER_WOMEN]={sport:L.SOCCER,id:t.SUMMER_OLYMPICS_SOCCER_WOMEN,label:"Olympic Games Soccer Women",opticOddsName:"Olympics Soccer Women",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_SOCCER]={sport:L.SOCCER,id:t.SUMMER_OLYMPICS_SOCCER,label:"Olympic Games Soccer",opticOddsName:"Olympics Soccer Men",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.FIFA_WC_WOMEN]={sport:L.SOCCER,id:t.FIFA_WC_WOMEN,label:"FIFA World Cup Women",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.ENGLAND_CUP]={sport:L.SOCCER,id:t.ENGLAND_CUP,label:"FA Cup",opticOddsName:"England - FA Cup",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.FRANCE_CUP]={sport:L.SOCCER,id:t.FRANCE_CUP,label:"Coupe de France",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.SPAIN_CUP]={sport:L.SOCCER,id:t.SPAIN_CUP,label:"Copa del Rey",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.ITALY_CUP]={sport:L.SOCCER,id:t.ITALY_CUP,label:"Coppa Italia",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.TENNIS_WTA]={sport:L.TENNIS,id:t.TENNIS_WTA,label:"WTA Events",opticOddsName:"WTA",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[t.TENNIS_GS]={sport:L.TENNIS,id:t.TENNIS_GS,label:"Grand Slam",opticOddsName:"ATP,WTA",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[t.TENNIS_MASTERS]={sport:L.TENNIS,id:t.TENNIS_MASTERS,label:"ATP Events",opticOddsName:"ATP",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_TENNIS]={sport:L.TENNIS,id:t.SUMMER_OLYMPICS_TENNIS,label:"Olympic Games Tennis",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[t.GERMANY_CUP]={sport:L.SOCCER,id:t.GERMANY_CUP,label:"DFB Pokal",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.LIGA_MX]={sport:L.SOCCER,id:t.LIGA_MX,label:"Liga MX",opticOddsName:"Mexico - Liga MX",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.BRAZIL_1]={sport:L.SOCCER,id:t.BRAZIL_1,label:"Serie A",opticOddsName:"Brazil - Serie A",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.UEFA_EURO_U21]={sport:L.SOCCER,id:t.UEFA_EURO_U21,label:"UEFA EURO U21",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.FIFA_WORLD_CUP_U20]={sport:L.SOCCER,id:t.FIFA_WORLD_CUP_U20,label:"FIFA World Cup U20",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_HANDBALL_WOMEN]={sport:L.HANDBALL,id:t.SUMMER_OLYMPICS_HANDBALL_WOMEN,label:"Olympic Games Handball Women",opticOddsName:"Olympics Handball Women",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_HANDBALL]={sport:L.HANDBALL,id:t.SUMMER_OLYMPICS_HANDBALL,label:"Olympic Games Handball",opticOddsName:"Olympics Handball Men",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.EUROLEAGUE]={sport:L.BASKETBALL,id:t.EUROLEAGUE,label:"Euroleague",opticOddsName:"Euroleague",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_BASKETBALL]={sport:L.BASKETBALL,id:t.SUMMER_OLYMPICS_BASKETBALL,label:"Olympic Games Basketball",opticOddsName:"Olympics Basketball Men",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_BASKETBALL_WOMEN]={sport:L.BASKETBALL,id:t.SUMMER_OLYMPICS_BASKETBALL_WOMEN,label:"Olympic Games Basketball Women",opticOddsName:"Olympics Basketball Women",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[t.FIBA_WORLD_CUP]={sport:L.BASKETBALL,id:t.FIBA_WORLD_CUP,label:"FIBA World Cup",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[t.FORMULA1]={sport:L.MOTOSPORT,id:t.FORMULA1,label:"Formula 1",provider:I.ENETPULSE,scoringType:s.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN]={sport:L.VOLLEYBALL,id:t.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN,label:"Olympic Games Beach Voleyball Women",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_BEACH_VOLEYBALL]={sport:L.VOLLEYBALL,id:t.SUMMER_OLYMPICS_BEACH_VOLEYBALL,label:"Olympic Games Beach Voleyball",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_TABLE_TENNIS]={sport:L.TABLE_TENNIS,id:t.SUMMER_OLYMPICS_TABLE_TENNIS,label:"Olympic Games Table Tennis",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[t.MOTOGP]={sport:L.MOTOSPORT,id:t.MOTOGP,label:"MotoGP",provider:I.ENETPULSE,scoringType:s.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[t.SAUDI_PROFESSIONAL_LEAGUE]={sport:L.SOCCER,id:t.SAUDI_PROFESSIONAL_LEAGUE,label:"Saudi Professional League",opticOddsName:"Saudi Arabia - Saudi League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_WATERPOLO]={sport:L.WATERPOLO,id:t.SUMMER_OLYMPICS_WATERPOLO,label:"Olympic Games Water Polo",opticOddsName:"Olympics Water Polo",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.QUARTER,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_VOLEYBALL_WOMEN]={sport:L.VOLLEYBALL,id:t.SUMMER_OLYMPICS_VOLEYBALL_WOMEN,label:"Olympic Games Volleyball Women",opticOddsName:"Olympics Volleyball Women",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_VOLEYBALL]={sport:L.VOLLEYBALL,id:t.SUMMER_OLYMPICS_VOLEYBALL,label:"Olympic Games Volleyball",opticOddsName:"Olympics Volleyball Men",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[t.BOXING]={sport:L.FIGHTING,id:t.BOXING,label:"Boxing",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_RUGBY]={sport:L.RUGBY,id:t.SUMMER_OLYMPICS_RUGBY,label:"Olympic Games Rugby",opticOddsName:"Olympics Rugby 7s Men",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_RUGBY_WOMEN]={sport:L.RUGBY,id:t.SUMMER_OLYMPICS_RUGBY_WOMEN,label:"Olympic Games Rugby Women",opticOddsName:"Olympics Rugby 7s Women",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_HOCKEY_WOMEN]={sport:L.HOCKEY,id:t.SUMMER_OLYMPICS_HOCKEY_WOMEN,label:"Olympic Games Hockey Women",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.PERIOD,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_HOCKEY]={sport:L.HOCKEY,id:t.SUMMER_OLYMPICS_HOCKEY,label:"Olympic Games Hockey",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.PERIOD,isDrawAvailable:!0},n[t.UEFA_NATIONS_LEAGUE]={sport:L.SOCCER,id:t.UEFA_NATIONS_LEAGUE,label:"UEFA Nations League",provider:I.OPTICODDS,opticOddsName:"UEFA - Nations League",scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.CONCACAF_NATIONS_LEAGUE]={sport:L.SOCCER,id:t.CONCACAF_NATIONS_LEAGUE,label:"CONCACAF Nations League",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.CSGO]={sport:L.ESPORTS,id:t.CSGO,label:"CS GO",opticOddsName:"CS2",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[t.DOTA2]={sport:L.ESPORTS,id:t.DOTA2,label:"DOTA 2",opticOddsName:"Dota 2",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_BASKETBALL_3X3]={sport:L.BASKETBALL,id:t.SUMMER_OLYMPICS_BASKETBALL_3X3,label:"Olympic Games Basketball 3x3",opticOddsName:"Olympics Basketball 3x3 Men",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN]={sport:L.BASKETBALL,id:t.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN,label:"Olympic Games Basketball 3x3 Women",opticOddsName:"Olympics Basketball 3x3 Women",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_QUALIFICATION]={sport:L.BASKETBALL,id:t.SUMMER_OLYMPICS_QUALIFICATION,label:"Summer Olympics Basketball Qualification",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[t.LOL]={sport:L.ESPORTS,id:t.LOL,label:"LOL",opticOddsName:"League of Legends",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[t.CONMEBOL_WC_QUALIFICATIONS]={sport:L.SOCCER,id:t.CONMEBOL_WC_QUALIFICATIONS,label:"CONMEBOL WC Qualification",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.UEFA_CONFERENCE_LEAGUE]={sport:L.SOCCER,id:t.UEFA_CONFERENCE_LEAGUE,label:"UEFA Conference League",opticOddsName:"UEFA - Europa Conference League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.NON_TITLE_BOXING]={sport:L.FIGHTING,id:t.NON_TITLE_BOXING,label:"Boxing",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[t.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION]={sport:L.SOCCER,id:t.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION,label:"UEFA Champions League Qualification",opticOddsName:"UEFA - Champions League",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.UEFA_EUROPA_LEAGUE_QUALIFICATION]={sport:L.SOCCER,id:t.UEFA_EUROPA_LEAGUE_QUALIFICATION,label:"UEFA Europa League Qualification",opticOddsName:"UEFA - Europa League",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.UEFA_CONFERENCE_LEAGUE_QUALIFICATION]={sport:L.SOCCER,id:t.UEFA_CONFERENCE_LEAGUE_QUALIFICATION,label:"UEFA Conference League Qualification",opticOddsName:"UEFA - Europa Conference League",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.US_ELECTION]={sport:L.POLITICS,id:t.US_ELECTION,label:"US Election 2024",provider:I.EMPTY,scoringType:s.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[t.UEFA_SUPER_CUP]={sport:L.SOCCER,id:t.UEFA_SUPER_CUP,label:"UEFA Super Cup",opticOddsName:"UEFA - Super Cup",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.BRAZIL_CUP]={sport:L.SOCCER,id:t.BRAZIL_CUP,label:"Copa do Brasil",opticOddsName:"Brazil - Copa do Brasil",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.ENGLAND_CHAMPIONSHIP]={sport:L.SOCCER,id:t.ENGLAND_CHAMPIONSHIP,label:"EFL Championship",opticOddsName:"England - Championship",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.SCOTLAND_PREMIERSHIP]={sport:L.SOCCER,id:t.SCOTLAND_PREMIERSHIP,label:"Scotland Premiership",opticOddsName:"Scotland - Premiership",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.BELGIUM_LEAGUE]={sport:L.SOCCER,id:t.BELGIUM_LEAGUE,label:"Belgium Jupiler Pro League",opticOddsName:"Belgium - Jupiler Pro League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.CZECH_LEAGUE]={sport:L.SOCCER,id:t.CZECH_LEAGUE,label:"Czech Republic FNL",opticOddsName:"Czech Republic - FNL",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.CHILE_PRIMERA]={sport:L.SOCCER,id:t.CHILE_PRIMERA,label:"Chile Primera Division",opticOddsName:"Chile - Primera Division",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.FINLAND_LEAGUE]={sport:L.SOCCER,id:t.FINLAND_LEAGUE,label:"Finland Veikkausliiga",opticOddsName:"Finland - Veikkausliiga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.ARGENTINA_PRIMERA]={sport:L.SOCCER,id:t.ARGENTINA_PRIMERA,label:"Argentina Primera Division",opticOddsName:"Argentina - Primera Division",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.RUSSIA_PREMIER]={sport:L.SOCCER,id:t.RUSSIA_PREMIER,label:"Russia Premier League",opticOddsName:"Russia - Premier League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.TURKEY_SUPER_LEAGUE]={sport:L.SOCCER,id:t.TURKEY_SUPER_LEAGUE,label:"Turkey Super Lig",opticOddsName:"Turkey - Super Lig",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.SERBIA_SUPER_LEAGUE]={sport:L.SOCCER,id:t.SERBIA_SUPER_LEAGUE,label:"Serbia Super Liga",opticOddsName:"Serbia - Super Liga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.GREECE_SUPER_LEAGUE]={sport:L.SOCCER,id:t.GREECE_SUPER_LEAGUE,label:"Greece Super League",opticOddsName:"Greece - Super League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.INDIA_PREMIER]={sport:L.SOCCER,id:t.INDIA_PREMIER,label:"India Calcutta Premier Division",opticOddsName:"India - Calcutta Premier Division",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.CHINA_SUPER_LEAGUE]={sport:L.SOCCER,id:t.CHINA_SUPER_LEAGUE,label:"China Super League",opticOddsName:"China - Super League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.AUSTRALIA_A_LEAGUE]={sport:L.SOCCER,id:t.AUSTRALIA_A_LEAGUE,label:"Australia A-League",opticOddsName:"Australia - A-League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.SWITZERLAND_SUPER_LEAGUE]={sport:L.SOCCER,id:t.SWITZERLAND_SUPER_LEAGUE,label:"Switzerland Super League",opticOddsName:"Switzerland - Super League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.BUNDESLIGA_2]={sport:L.SOCCER,id:t.BUNDESLIGA_2,label:"Bundesliga 2",opticOddsName:"Germany - Bundesliga 2",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.LA_LIGA_2]={sport:L.SOCCER,id:t.LA_LIGA_2,label:"La Liga 2",opticOddsName:"Spain - La Liga 2",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.SERIE_B]={sport:L.SOCCER,id:t.SERIE_B,label:"Serie B",opticOddsName:"Italy - Serie B",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.INDIA_SUPER_LEAGUE]={sport:L.SOCCER,id:t.INDIA_SUPER_LEAGUE,label:"India Super League",opticOddsName:"India - Super League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.LIGUE_2]={sport:L.SOCCER,id:t.LIGUE_2,label:"Ligue 2",opticOddsName:"France - Ligue 2",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.AUSTRIA_BUNDESLIGA]={sport:L.SOCCER,id:t.AUSTRIA_BUNDESLIGA,label:"Austria Bundesliga",opticOddsName:"Austria - Bundesliga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.DENMARK_SUPER_LEAGUE]={sport:L.SOCCER,id:t.DENMARK_SUPER_LEAGUE,label:"Denmark Superliga",opticOddsName:"Denmark - Superliga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.POLAND_LEAGUE]={sport:L.SOCCER,id:t.POLAND_LEAGUE,label:"Poland Ekstraklasa",opticOddsName:"Poland - Ekstraklasa",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.SWEDEN_LEAGUE]={sport:L.SOCCER,id:t.SWEDEN_LEAGUE,label:"Sweden Allsvenskan",opticOddsName:"Sweden - Allsvenskan",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.COLOMBIA_PRIMERA_A]={sport:L.SOCCER,id:t.COLOMBIA_PRIMERA_A,label:"Colombia Primera A",opticOddsName:"Colombia - Primera A",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.ENGLAND_EFL_CUP]={sport:L.SOCCER,id:t.ENGLAND_EFL_CUP,label:"England EFL Cup",opticOddsName:"England - EFL Cup",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.ENGLAND_LEGAUE_1]={sport:L.SOCCER,id:t.ENGLAND_LEGAUE_1,label:"England League 1",opticOddsName:"England - League 1",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.URUGUAY_PRIMERA_DIVISION]={sport:L.SOCCER,id:t.URUGUAY_PRIMERA_DIVISION,label:"Uruguay Primera Division",opticOddsName:"Uruguay - Primera Division",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[t.EUROCUP]={sport:L.BASKETBALL,id:t.EUROCUP,label:"Eurocup",opticOddsName:"Eurocup",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[t.NFL_FUTURES]={sport:L.FUTURES,id:t.NFL_FUTURES,label:"NFL Futures",provider:I.EMPTY,scoringType:s.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[t.NBA_FUTURES]={sport:L.FUTURES,id:t.NBA_FUTURES,label:"NBA Futures",provider:I.EMPTY,scoringType:s.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[t.EPL_FUTURES]={sport:L.FUTURES,id:t.EPL_FUTURES,label:"EPL Futures",provider:I.EMPTY,scoringType:s.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[t.GOLF_H2H]={sport:L.GOLF,id:t.GOLF_H2H,label:"Golf head-to-head",provider:I.JSONODDS,scoringType:s.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[t.GOLF_WINNER]={sport:L.GOLF,id:t.GOLF_WINNER,label:"Golf Tournament Winner",provider:I.JSONODDS,scoringType:s.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n),M=[t.CSGO,t.DOTA2,t.LOL,t.TENNIS_GS,t.TENNIS_MASTERS,t.SUMMER_OLYMPICS_TENNIS,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7,t.TENNIS_MASTERS_LIVE_MAPPING_V2_1,t.TENNIS_MASTERS_LIVE_MAPPING_V2_2,t.TENNIS_MASTERS_LIVE_MAPPING_V2_3,t.TENNIS_MASTERS_LIVE_MAPPING_V2_4,t.TENNIS_MASTERS_LIVE_MAPPING_V2_5,t.TENNIS_MASTERS_LIVE_MAPPING_V2_6,t.TENNIS_MASTERS_LIVE_MAPPING_V2_7,t.TENNIS_MASTERS_LIVE_MAPPING_V2_8,t.TENNIS_MASTERS_LIVE_MAPPING_V2_9,t.TENNIS_MASTERS_LIVE_MAPPING_V2_10,t.TENNIS_MASTERS_LIVE_MAPPING_V2_11,t.TENNIS_MASTERS_LIVE_MAPPING_V2_12,t.TENNIS_MASTERS_LIVE_MAPPING_V2_13,t.TENNIS_MASTERS_LIVE_MAPPING_V2_14,t.TENNIS_MASTERS_LIVE_MAPPING_V2_15,t.TENNIS_MASTERS_LIVE_MAPPING_V2_16,t.TENNIS_MASTERS_LIVE_MAPPING_V2_17,t.TENNIS_MASTERS_LIVE_MAPPING_V2_18,t.TENNIS_MASTERS_LIVE_MAPPING_V2_19,t.TENNIS_MASTERS_LIVE_MAPPING_V2_20,t.TENNIS_MASTERS_LIVE_MAPPING_V2_21,t.TENNIS_MASTERS_LIVE_MAPPING_V2_22,t.TENNIS_WTA_LIVE_MAPPING_V2_1,t.TENNIS_WTA_LIVE_MAPPING_V2_2,t.TENNIS_WTA_LIVE_MAPPING_V2_3,t.TENNIS_WTA_LIVE_MAPPING_V2_4,t.TENNIS_WTA_LIVE_MAPPING_V2_5,t.TENNIS_WTA_LIVE_MAPPING_V2_6,t.TENNIS_WTA_LIVE_MAPPING_V2_7],U=[t.SUMMER_OLYMPICS_RUGBY,t.SUMMER_OLYMPICS_RUGBY_WOMEN],C=[t.NCAAF,t.NFL,t.MLB,t.NBA,t.NCAAB,t.NHL,t.WNBA,t.MLS,t.IPL,t.T20_BLAST],u=[701,702,703,704],m={1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21},G={320:18,6:24,33:33,16:42,44:44,45:45,11:47,50:50,12:53,13:54,15:55,57:57,61:61,65:65,66:66,17:73,76:76,14:87,152:152,153:153,156:156,158:158,132:132,134:134,138:138,141:141,209:209,230:230,268:268,288:288,296:296,310:310,319:319,322:322,327:327,380:380,381:381,399:399,406:406,407:407,409:409,445:445,453:453,454:454,497:497,536:536,8881:8881,8893:8893,8894:8894,8910:8910,9196:9196,9578:9578,9588:9588,9698:9698,9699:9699,9806:9806,9821:9821,9977:9977,9983:9983,10071:10071,10072:10072,10502:10502,10138:10138,10199:10199,10216:10216,10595:10595,10611:10611,10613:10613,10615:10615},y={1:"NCAAF",2:"NFL",3:"MLB",4:"NBA",6:"NHL",7:"UFC",8:"WNBA",10:"USA - Major League Soccer",11:"England - Premier League",12:"France - Ligue 1",13:"Germany - Bundesliga",14:"Spain - La Liga",15:"Italy - Serie A",16:"UEFA - Champions League",17:"UEFA - Europa League",18:"FIFA - World Cup Qualifiers",19:"Japan - J1 League",45:"CONMEBOL - Copa Libertadores",57:"Netherlands - Eredivisie",61:"Portugal - Primeira Liga",230:"Mexico - Liga MX",268:"Brazil - Serie A",399:"Euroleague",536:"Saudi Arabia - Saudi League",9806:"UEFA - Nations League",9977:"CS2",9983:"Dota 2",10138:"League of Legends",10216:"UEFA - Europa Conference League",20001:"UEFA - Super Cup",20002:"Brazil - Copa do Brasil",20011:"England - Championship",20101:"Scotland - Premiership",20102:"Belgium - Jupiler Pro League",20103:"Czech Republic - FNL",20104:"Chile - Primera Division",20105:"Finland - Veikkausliiga",20106:"Argentina - Primera Division",20107:"Russia - Premier League",20108:"Turkey - Super Lig",20109:"Serbia - Super Liga",20110:"Greece - Super League",20111:"India - Calcutta Premier Division",20112:"China - Super League",20113:"Australia - A-League",20114:"Switzerland - Super League",20115:"Germany - Bundesliga 2",20116:"Spain - La Liga 2",20117:"Italy - Serie B",20118:"India - Super League",20119:"France - Ligue 2",20120:"Austria - Bundesliga",20121:"Denmark - Superliga",20122:"Poland - Ekstraklasa",20123:"Sweden - Allsvenskan",20124:"Colombia - Primera A",20125:"England - EFL Cup",20126:"England - League 1",20127:"Uruguay - Primera Division",20200:"Eurocup"},v=function(e){var r=c[e];return r?r.sport:L.EMPTY},D=function(e){var r=c[e];return r?r.label:""},g=function(e){var r=c[e];return r?r.provider:""},b=function(e){var r=c[e];return!!r&&r.isDrawAvailable},F=function(e){return e.filter((function(e){return"true"===e.enabled})).map((function(e){return Number(e.sportId)}))},h=function(e,r){return r.filter((function(r){return Number(r.sportId)===Number(e)&&"true"===r.enabled})).map((function(e){return e.marketName}))},B=function(e,r){return r.filter((function(r){return Number(r.sportId)===e}))},V=function(e){var r=c[e];return r?r.opticOddsName:void 0},w=function(e){var r=c[e];return r?r.periodType:""},f=function(e,r){return r.filter((function(r){return Number(r.sportId)===Number(e)&&"Spread"===r.type&&"true"===r.enabled})).map((function(e){return e.marketName.toLowerCase()}))},Y=function(e,r){return r.filter((function(r){return Number(r.sportId)===Number(e)&&"Total"===r.type&&"true"===r.enabled})).map((function(e){return e.marketName.toLowerCase()}))},H=function(e,r,a,E,i,o){var A,_;if(M.includes(e)?(A=E.toLowerCase()==r.toLowerCase()||E.toLowerCase()==a.toLowerCase(),_=i.toLowerCase()==r.toLowerCase()||i.toLowerCase()==a.toLowerCase()):(A=E.toLowerCase()==r.toLowerCase(),_=i.toLowerCase()==a.toLowerCase()),!0!==A){var L=o.get(E.toLowerCase()),t=o.get(r.toLowerCase()),S=o.get(a.toLowerCase());if([L,t].some((function(e){return null==e})))return!1;A=M.includes(e)?L==t||L==S:L==t}if(!0!==_){var p=o.get(i.toLowerCase());if(t=o.get(r.toLowerCase()),[p,S=o.get(a.toLowerCase())].some((function(e){return null==e})))return!1;_=M.includes(e)&&p==t||p==S}return A&&_},W=function(e,r,a,E){var i;if(v(a)==L.TENNIS){var o=r.getTime(),A=e.getTime();i=Math.abs(A-o)<=Number(60*E*1e3)}else i=r.toUTCString()==e.toUTCString();return i},k=0,K="Draw",Q=0,j=.2,X=10001,z=10002,Z=100,x=function(e,r,a){if(e.some((function(e){return 0===e})))return e;var E=e.reduce((function(e,r){return e+r}),0);if(E<=1)return Array(e.length).fill(0);if(0===a){if(!(r>100*(E-1)))return e;a=r}var i=1+a/100,o=i/E,A=e.map((function(e){return e*o}));if(A.some((function(e){return e>=1})))return Array(e.length).fill(0);var _=A.reduce((function(e,r){return e+r}),0);if(_<1)return Array(e.length).fill(0);var L=i/_;return A.map((function(e){return e*L}))},J=function(e,r,a,E){var i=e.find((function(e){return Number(e.typeId)===Number(a)&&Number(e.sportId)===Number(r)}));return i?{minSpread:i.minSpread?Number(i.minSpread):E,targetSpread:i.targetSpread?Number(i.targetSpread):0}:{minSpread:E,targetSpread:0}},q=function(){return q=Object.assign||function(e){for(var r,a=1,E=arguments.length;a<E;a++)for(var i in r=arguments[a])Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i]);return e},q.apply(this,arguments)},$=function(e,r,a){if(a||2===arguments.length)for(var E,i=0,o=r.length;i<o;i++)!E&&i in r||(E||(E=Array.prototype.slice.call(r,0,i)),E[i]=r[i]);return e.concat(E||Array.prototype.slice.call(r))},ee=function(e){return e===k?0:re("decimal","impliedProbability",e)},re=function(e,r,a){try{return d(e,a).to(r)}catch(e){return 0}},ae=function(e,r,a,E,i){var o=new Map;return a.forEach((function(a){var A=0,_=e.filter((function(e){return e&&e.market_name.toLowerCase()===r.toLowerCase()&&e.sports_book_name.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()===E.homeTeam.toLowerCase()}));0!==_.length&&(A=_[0].price);var L=0,t=e.filter((function(e){return e&&e.market_name.toLowerCase()===r.toLowerCase()&&e.sports_book_name.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()===E.awayTeam.toLowerCase()}));0!==t.length&&(L=t[0].price);var S=0;if(!i){var p=e.filter((function(e){return e&&e.market_name.toLowerCase()===r.toLowerCase()&&e.sports_book_name.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()===K.toLowerCase()}));0!==p.length&&(S=p[0].price)}o.set(a.toLowerCase(),{homeOdds:A,awayOdds:L,drawOdds:S})})),o},Ee=function(e,r,a,E,i,o,A){var _={homeTeam:E.home_team,awayTeam:E.away_team},L=ae(E.odds,S.MONEYLINE,a,_,e),t=R(L,a,e,A,j);if(t.errorMessage)return{odds:e?[0,0]:[0,0,0],errorMessage:t.errorMessage};var p=(e?[t.homeOdds,t.awayOdds]:[t.homeOdds,t.awayOdds,t.drawOdds]).map((function(e){return ee(e)})),l=J(r,i,Q,o);return{odds:p=null!==l?x(p,l.minSpread,l.targetSpread):x(p,o,0)}},ie=function(e,r,a,E,i,o){var A=[[],[],[]],_=A[0],L=A[1],t=A[2],S=B(a,o),p={homeTeam:e.home_team,awayTeam:e.away_team};if(S.length>0){oe(e.odds,S,E[0]).filter((function(e){return e&&.5===Math.abs(e.selection_points%1)})).forEach((function(e){"Total"===e.type?L.push(e):"Spread"===e.type&&_.push(e)}));var l=$($([],Ae(_,p),!0),_e(L,p),!0);Le(l,r,i).forEach((function(e){var r={leagueId:Number(e.sportId),typeId:Number(e.typeId),type:e.type.toLowerCase(),line:Number(e.line),odds:e.odds},a=S.find((function(r){return Number(r.typeId)===Number(e.typeId)})),E=null==a?void 0:a.minOdds,i=null==a?void 0:a.maxOdds;E&&i&&(e.odds[0]>=E||e.odds[0]<=i||e.odds[1]>=E||e.odds[1]<=i)||t.push(r)}))}else console.warn("No child markets for leagueID: ".concat(Number(a)));return t},oe=function(e,r,a){var E=r.filter((function(e){return e.marketName.toLowerCase()!==S.MONEYLINE.toLowerCase()})).map((function(e){return e.marketName.toLowerCase()}));return e.filter((function(e){return E.includes(e.market_name.toLowerCase())&&e.sports_book_name.toLowerCase()==a.toLowerCase()})).map((function(e){return q(q({},e),r.find((function(r){return r.marketName===e.market_name})))}))},Ae=function(e,r){var a=e.reduce((function(e,a){var E=a.selection_points,i=a.price,o=a.selection,A=a.typeId,_=a.sportId,L=a.type,t=o===r.homeTeam,S=t?E:-E;return e[S]||(e[S]={home:null,away:null,typeId:null,sportId:null}),t?e[S].home=i:e[S].away=i,e[S].typeId=A,e[S].type=L,e[S].sportId=_,e}),{}),E=Object.entries(a).reduce((function(e,r){var a=r[0],E=r[1],i=parseFloat(a);return null!==E.home&&null!==E.away&&e.push({line:i,odds:[E.home,E.away],typeId:E.typeId,sportId:E.sportId,type:E.type}),e}),[]);return E},_e=function(e,r){var a=e.reduce((function(e,r){if(r){var a="".concat(r.selection,"_").concat(r.selection_points);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[a].typeId=r.typeId,e[a].type=r.type,e[a].sportId=r.sportId}return e}),{}),E=Object.entries(a).reduce((function(e,a){var E=a[0],i=a[1],o=E.split("_"),A=o[0],_=o[1],L=parseFloat(_),t=A===r.awayTeam;return null!==i.over&&null!==i.under&&e.push({line:L,odds:[i.over,i.under],typeId:t?Number(i.typeId)+1:i.typeId,sportId:i.sportId,type:i.type}),e}),[]);return E},Le=function(e,r,a){var E=[];return e.forEach((function(e){var i=ee(e.odds[0])||k,o=ee(e.odds[1])||k;if(i!==k&&o!==k){var A,_=J(r,e.sportId,e.typeId,a);i=(A=null!==_?x([i,o],_.minSpread,_.targetSpread):x([i,o],a,0))[0],o=A[1],E.push(q(q({},e),{odds:A}))}})),E},te=function(){return te=Object.assign||function(e){for(var r,a=1,E=arguments.length;a<E;a++)for(var i in r=arguments[a])Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i]);return e},te.apply(this,arguments)},Se=function(e,r,a,E,i,o,A,_){var L=E.filter((function(r){return r.sportId===String(e.leagueId)})),t=Ee(!i,L,a,r,e.leagueId,o,A);t.errorMessage?(e.odds=e.odds.map((function(){return{american:0,decimal:0,normalizedImplied:0}})),e.errorMessage=t.errorMessage):e.odds=t.odds.filter((function(e){return 0!=e})).map((function(e){return{american:d("impliedProbability",e).to("moneyline"),decimal:d("impliedProbability",e).to("decimal"),normalizedImplied:e}}));var S=ie(r,L,e.leagueId,a,o,_).map((function(r){var a=te(te({},e),r);return a.odds.length>0&&(a.odds=a.odds.map((function(e){return 0==e?{american:0,decimal:0,normalizedImplied:0}:{american:d("impliedProbability",e).to("moneyline"),decimal:d("impliedProbability",e).to("decimal"),normalizedImplied:e}}))),a}));return e.childMarkets=S,e},pe=function(e,r,a){var E=e.score_home_total,i=e.score_away_total,o=e.clock,A=e.period,_=e.status,t=e.home_team,S=e.away_team,p=parseInt(A),l=v(r);return"completed"==_.toLowerCase()?{allow:!1,message:"Blocking game ".concat(t," - ").concat(S," because it is no longer live.")}:l===L.BASKETBALL?le(t,S,p,a.get(L.BASKETBALL)):l===L.HOCKEY?le(t,S,p,a.get(L.HOCKEY)):l===L.BASEBALL?le(t,S,p,a.get(L.BASEBALL)):l===L.SOCCER?se(t,S,o,A,a.get(L.SOCCER)):l===L.TENNIS?Te(e,t,S,A,E,i,r,l):l===L.VOLLEYBALL?Te(e,t,S,p,E,i,r,l):{allow:!0,message:"The sport ".concat(r," does not have constraint")}},le=function(e,r,a,E){return!Number.isNaN(a)&&a>=E?{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to period: ").concat(a,". period")}:{allow:!0,message:""}},se=function(e,r,a,E,i){var o=Number(a);return!Number.isNaN(o)&&o>=i||Number.isNaN(o)&&"HALF"!=E?{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to clock: ").concat(a,"min")}:{allow:!0,message:""}},Te=function(e,r,a,E,i,o,A,_){var S=Number(E),p=Ne(S,e),l="atp"==e.league.toLowerCase(),s={home:i,away:o};return _==L.VOLLEYBALL?Ie(r,a,p,s,ne,5==S?Oe:de):A.toString().startsWith(t.TENNIS_GS)&&l?Ie(r,a,p,s,Re,ce):A.toString().startsWith(t.TENNIS_GS)&&!l||A.toString().startsWith(t.TENNIS_MASTERS)||A.toString().startsWith(t.SUMMER_OLYMPICS_TENNIS)||A.toString().startsWith(t.TENNIS_WTA)?Ie(r,a,p,s,Pe,ce):{allow:!0,message:"The sport ".concat(A," does not have result constraint")}},Ne=function(e,r){var a=0,E=0;switch(e){case 1:a=Number(r.score_home_period_1),E=Number(r.score_away_period_1);break;case 2:a=Number(r.score_home_period_2),E=Number(r.score_away_period_2);break;case 3:a=Number(r.score_home_period_3),E=Number(r.score_away_period_3);break;case 4:a=Number(r.score_home_period_4),E=Number(r.score_away_period_4);break;case 5:a=Number(r.score_home_period_5),E=Number(r.score_away_period_5)}return{home:a,away:E}},Ie=function(e,r,a,E,i,o){return Number(E.home)!=i&&Number(E.away)!=i||!(Number(E.home)==i&&a.home>=o||Number(E.away)==i&&a.away>=o)?{allow:!0,message:"",currentHomeGameScore:a.home,currentAwayGameScore:a.away}:{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to current result: ").concat(E.home," - ").concat(E.away," (").concat(a.home," - ").concat(a.away,")")}},ne=2,de=20,Oe=10,Re=2,Pe=1,ce=5;return r})()));
|
|
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 i in a)e.o(a,i)&&!e.o(r,i)&&Object.defineProperty(r,i,{enumerable:!0,get:a[i]})},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,{AMERICAN_LEAGUES:()=>U,DRAW:()=>K,LEAGUES_NO_FORMAL_HOME_AWAY:()=>M,LEAGUES_NO_LIVE_CONSTRAINTS:()=>C,League:()=>L,LeagueIdMapEnetpulse:()=>y,LeagueIdMapOpticOdds:()=>G,LeagueIdMapRundown:()=>m,LeagueMap:()=>P,MIN_ODDS_FOR_DIFF_CHECKING:()=>j,MONEYLINE_TYPE_ID:()=>Q,MULTIPLIER_100:()=>z,MatchResolveType:()=>T,MoneylineTypes:()=>p,PeriodType:()=>N,Provider:()=>d,ScoringType:()=>l,Sport:()=>_,SpreadTypes:()=>S,TAG_CHILD_SPREAD:()=>x,TAG_CHILD_TOTALS:()=>X,TotalTypes:()=>s,UFC_LEAGUE_IDS:()=>u,ZERO:()=>k,adjustSpreadOnChildOdds:()=>_e,adjustSpreadOnOdds:()=>Z,allowGameSportWithPeriodConstraint:()=>se,allowGameSportWithResultConstraint:()=>Te,allowSoccerGame:()=>le,calculateImpliedOddsDifference:()=>c,checkGameContraints:()=>Se,checkOddsFromBookmakers:()=>R,createChildMarkets:()=>Ee,fetchResultInCurrentSet:()=>Ne,filterOddsByMarketNameBookmaker:()=>oe,filterOddsByMarketNameTeamNameBookmaker:()=>ae,gamesDatesMatching:()=>W,getBetTypesForLeague:()=>B,getBookmakersArray:()=>O,getLeagueInfo:()=>h,getLeagueIsDrawAvailable:()=>b,getLeagueLabel:()=>g,getLeagueOpticOddsName:()=>w,getLeaguePeriodType:()=>V,getLeagueProvider:()=>D,getLeagueSport:()=>v,getLeagueSpreadTypes:()=>f,getLeagueTotalTypes:()=>Y,getLiveSupportedLeagues:()=>F,getParentOdds:()=>ie,getSpreadData:()=>J,groupAndFormatSpreadOdds:()=>Ae,groupAndFormatTotalOdds:()=>te,mapOpticOddsApiFixtureOdds:()=>ue,mapOpticOddsApiFixtures:()=>Ce,mapOpticOddsApiResults:()=>Ue,processMarket:()=>pe,teamNamesMatching:()=>H}),"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),i=1;i<arguments.length;i++){var E=arguments[i];if(null!=E)for(var o in E)Object.prototype.hasOwnProperty.call(E,o)&&(a[o]=E[o])}return a});var a=function(e){return parseFloat(e.toPrecision(12))};function i(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?-i(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 E,o,A={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=i("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,i=[0,1],E=[1,0],o=function(e){var r=null,a=e.toString().indexOf("E");-1==a&&(a=e.toString().indexOf("e"));var i=null,E=(r=-1==a?e.toString():e.toString().substring(0,a)).toString().indexOf(".");-1==E?i=r:0===E?i=r.substring(1,r.length):E<r.length&&(i=r.substring(0,E)+r.substring(E+1,r.length));var o=i,A=o.toString().length,t=e,_=t.toString().length;0===t&&(_=0);var L,p=A-_;for(L=p;L>0&&o%2==0;L--)o/=2;for(L=p;L>0&&o%5==0;L--)o/=5;return o}(e),A=e,t=Math.pow(10,-r)/2,_=2;_<1e3;_++){var L=Math.floor(A);if(i[_]=L*i[_-1]+i[_-2],Math.abs(i[_])>o)return;if(E[_]=L*E[_-1]+E[_-2],a=i[_]/E[_],Math.abs(a-e)<t||NaN==a)return i[_].toString()+"/"+E[_].toString();A=1/(A-L)}}(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)}}},t=((o=function(e){if("number"!=typeof e||isNaN(e))throw new Error("Invalid odds");this.decimalValue=a(e)}).prototype=(E=function(){throw new Error("This constructor is private, please use the from* functions")}).prototype,E.from=function(e,r){if(!A.hasOwnProperty(e))throw new Error("Unknown format "+e+".");var a=A[e].from(r);return new o(a)},E);t.prototype.to=function(e,r){if(!A.hasOwnProperty(e))throw new Error("Unknown format "+e+".");r=Object.assign({precision:null,percentage:!1},r);var a=A[e].to.call(this,r);return"number"==typeof a&&null!==r.precision&&(a=i("round",a,-r.precision)),a};var _,L,p,S,s,l,T,N,d,n,I=t.from,O=function(e,r,a){var i=e.find((function(e){return Number(e.sportId)===Number(r)}));if(i){if(""==i.primaryBookmaker)return a;var E=[];return i.primaryBookmaker&&E.push(i.primaryBookmaker),i.secondaryBookmaker&&E.push(i.secondaryBookmaker),i.tertiaryBookmaker&&E.push(i.tertiaryBookmaker),E}return a},R=function(e,r,a,i,E){var o=e.get(r[0]);if(!o)return{homeOdds:0,awayOdds:0,drawOdds:0,errorMessage:"Returning zero odds cause no matching bookmakers have been found"};var A=o.homeOdds,t=o.awayOdds,_=a?0:o.drawOdds;if(r.some((function(r){var i=e.get(r);return!!i&&(0===i.homeOdds||0===i.awayOdds||!a&&0===i.drawOdds||1===i.homeOdds||1===i.awayOdds||!a&&1===i.drawOdds)})))return{homeOdds:0,awayOdds:0,drawOdds:0,errorMessage:"Returning zero odds cause bookmakers have 0 or 1 odds"};if(1==r.length)return{homeOdds:A,awayOdds:t,drawOdds:a?0:_};if(r.slice(1).some((function(r){var o=e.get(r);if(o){var L=o.homeOdds,p=o.awayOdds,S=o.drawOdds,s=I("decimal",A).to("impliedProbability"),l=I("decimal",t).to("impliedProbability"),T=a?0:I("decimal",_).to("impliedProbability"),N=I("decimal",L).to("impliedProbability"),d=I("decimal",p).to("impliedProbability"),n=a?0:I("decimal",S).to("impliedProbability"),O=c(s,N),R=c(l,d),P=a?0:c(T,n);if(O>i&&s>E&&N>E||R>i&&l>E&&d>E||!a&&P>i&&T>E&&n>E)return!0}return!1})))return{homeOdds:0,awayOdds:0,drawOdds:0,errorMessage:"Returning zero odds due to percentage difference between bookmakers"};var L=[];return r.forEach((function(r){return L.push(e.get(r))})),{homeOdds:A,awayOdds:t,drawOdds:a?0:_}},c=function(e,r){return Math.abs(e-r)/e*100};!function(e){e.SOCCER="Soccer",e.FOOTBALL="Football",e.BASKETBALL="Basketball",e.BASEBALL="Baseball",e.HOCKEY="Hockey",e.FIGHTING="Fighting",e.TENNIS="Tennis",e.ESPORTS="eSports",e.RUGBY="Rugby",e.VOLLEYBALL="Volleyball",e.HANDBALL="Handball",e.WATERPOLO="Waterpolo",e.CRICKET="Cricket",e.MOTOSPORT="Motosport",e.GOLF="Golf",e.TABLE_TENNIS="TableTennis",e.POLITICS="Politics",e.FUTURES="Futures",e.EMPTY=""}(_||(_={})),function(e){e[e.NCAAF=1]="NCAAF",e[e.NFL=2]="NFL",e[e.MLB=3]="MLB",e[e.NBA=4]="NBA",e[e.NCAAB=5]="NCAAB",e[e.NHL=6]="NHL",e[e.UFC=7]="UFC",e[e.WNBA=8]="WNBA",e[e.MLS=10]="MLS",e[e.EPL=11]="EPL",e[e.LIGUE_ONE=12]="LIGUE_ONE",e[e.BUNDESLIGA=13]="BUNDESLIGA",e[e.LA_LIGA=14]="LA_LIGA",e[e.SERIE_A=15]="SERIE_A",e[e.UEFA_CL=16]="UEFA_CL",e[e.UEFA_EL=17]="UEFA_EL",e[e.FIFA_WC=18]="FIFA_WC",e[e.J1_LEAGUE=19]="J1_LEAGUE",e[e.IPL=20]="IPL",e[e.T20_BLAST=21]="T20_BLAST",e[e.IIHF_WORLD_CHAMPIONSHIP=33]="IIHF_WORLD_CHAMPIONSHIP",e[e.COPA_AMERICA=44]="COPA_AMERICA",e[e.COPA_LIBERTADORES=45]="COPA_LIBERTADORES",e[e.UEFA_EURO=50]="UEFA_EURO",e[e.EREDIVISIE=57]="EREDIVISIE",e[e.PRIMEIRA_LIGA=61]="PRIMEIRA_LIGA",e[e.SUMMER_OLYMPICS_SOCCER_WOMEN=65]="SUMMER_OLYMPICS_SOCCER_WOMEN",e[e.SUMMER_OLYMPICS_SOCCER=66]="SUMMER_OLYMPICS_SOCCER",e[e.FIFA_WC_WOMEN=76]="FIFA_WC_WOMEN",e[e.ENGLAND_CUP=132]="ENGLAND_CUP",e[e.FRANCE_CUP=134]="FRANCE_CUP",e[e.SPAIN_CUP=138]="SPAIN_CUP",e[e.ITALY_CUP=141]="ITALY_CUP",e[e.TENNIS_WTA=152]="TENNIS_WTA",e[e.TENNIS_GS=153]="TENNIS_GS",e[e.TENNIS_MASTERS=156]="TENNIS_MASTERS",e[e.SUMMER_OLYMPICS_TENNIS=158]="SUMMER_OLYMPICS_TENNIS",e[e.GERMANY_CUP=209]="GERMANY_CUP",e[e.LIGA_MX=230]="LIGA_MX",e[e.BRAZIL_1=268]="BRAZIL_1",e[e.UEFA_EURO_U21=288]="UEFA_EURO_U21",e[e.FIFA_WORLD_CUP_U20=296]="FIFA_WORLD_CUP_U20",e[e.SUMMER_OLYMPICS_HANDBALL_WOMEN=380]="SUMMER_OLYMPICS_HANDBALL_WOMEN",e[e.SUMMER_OLYMPICS_HANDBALL=381]="SUMMER_OLYMPICS_HANDBALL",e[e.EUROLEAGUE=399]="EUROLEAGUE",e[e.SUMMER_OLYMPICS_BASKETBALL=406]="SUMMER_OLYMPICS_BASKETBALL",e[e.SUMMER_OLYMPICS_BASKETBALL_WOMEN=407]="SUMMER_OLYMPICS_BASKETBALL_WOMEN",e[e.FIBA_WORLD_CUP=409]="FIBA_WORLD_CUP",e[e.FORMULA1=445]="FORMULA1",e[e.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN=453]="SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN",e[e.SUMMER_OLYMPICS_BEACH_VOLEYBALL=454]="SUMMER_OLYMPICS_BEACH_VOLEYBALL",e[e.MOTOGP=497]="MOTOGP",e[e.SAUDI_PROFESSIONAL_LEAGUE=536]="SAUDI_PROFESSIONAL_LEAGUE",e[e.SUMMER_OLYMPICS_WATERPOLO=8881]="SUMMER_OLYMPICS_WATERPOLO",e[e.SUMMER_OLYMPICS_VOLEYBALL_WOMEN=8893]="SUMMER_OLYMPICS_VOLEYBALL_WOMEN",e[e.SUMMER_OLYMPICS_VOLEYBALL=8894]="SUMMER_OLYMPICS_VOLEYBALL",e[e.SUMMER_OLYMPICS_TABLE_TENNIS=8910]="SUMMER_OLYMPICS_TABLE_TENNIS",e[e.BOXING=9196]="BOXING",e[e.SUMMER_OLYMPICS_RUGBY=9578]="SUMMER_OLYMPICS_RUGBY",e[e.SUMMER_OLYMPICS_RUGBY_WOMEN=9588]="SUMMER_OLYMPICS_RUGBY_WOMEN",e[e.SUMMER_OLYMPICS_HOCKEY_WOMEN=9698]="SUMMER_OLYMPICS_HOCKEY_WOMEN",e[e.SUMMER_OLYMPICS_HOCKEY=9699]="SUMMER_OLYMPICS_HOCKEY",e[e.UEFA_NATIONS_LEAGUE=9806]="UEFA_NATIONS_LEAGUE",e[e.CONCACAF_NATIONS_LEAGUE=9821]="CONCACAF_NATIONS_LEAGUE",e[e.CSGO=9977]="CSGO",e[e.DOTA2=9983]="DOTA2",e[e.SUMMER_OLYMPICS_BASKETBALL_3X3=10071]="SUMMER_OLYMPICS_BASKETBALL_3X3",e[e.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN=10072]="SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN",e[e.SUMMER_OLYMPICS_QUALIFICATION=10502]="SUMMER_OLYMPICS_QUALIFICATION",e[e.LOL=10138]="LOL",e[e.CONMEBOL_WC_QUALIFICATIONS=10199]="CONMEBOL_WC_QUALIFICATIONS",e[e.UEFA_CONFERENCE_LEAGUE=10216]="UEFA_CONFERENCE_LEAGUE",e[e.NON_TITLE_BOXING=10595]="NON_TITLE_BOXING",e[e.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION=10611]="UEFA_CHAMPIONS_LEAGUE_QUALIFICATION",e[e.UEFA_EUROPA_LEAGUE_QUALIFICATION=10613]="UEFA_EUROPA_LEAGUE_QUALIFICATION",e[e.UEFA_CONFERENCE_LEAGUE_QUALIFICATION=10615]="UEFA_CONFERENCE_LEAGUE_QUALIFICATION",e[e.US_ELECTION=2e4]="US_ELECTION",e[e.UEFA_SUPER_CUP=20001]="UEFA_SUPER_CUP",e[e.BRAZIL_CUP=20002]="BRAZIL_CUP",e[e.ENGLAND_CHAMPIONSHIP=20011]="ENGLAND_CHAMPIONSHIP",e[e.SCOTLAND_PREMIERSHIP=20101]="SCOTLAND_PREMIERSHIP",e[e.BELGIUM_LEAGUE=20102]="BELGIUM_LEAGUE",e[e.CZECH_LEAGUE=20103]="CZECH_LEAGUE",e[e.CHILE_PRIMERA=20104]="CHILE_PRIMERA",e[e.FINLAND_LEAGUE=20105]="FINLAND_LEAGUE",e[e.ARGENTINA_PRIMERA=20106]="ARGENTINA_PRIMERA",e[e.RUSSIA_PREMIER=20107]="RUSSIA_PREMIER",e[e.TURKEY_SUPER_LEAGUE=20108]="TURKEY_SUPER_LEAGUE",e[e.SERBIA_SUPER_LEAGUE=20109]="SERBIA_SUPER_LEAGUE",e[e.GREECE_SUPER_LEAGUE=20110]="GREECE_SUPER_LEAGUE",e[e.INDIA_PREMIER=20111]="INDIA_PREMIER",e[e.CHINA_SUPER_LEAGUE=20112]="CHINA_SUPER_LEAGUE",e[e.AUSTRALIA_A_LEAGUE=20113]="AUSTRALIA_A_LEAGUE",e[e.SWITZERLAND_SUPER_LEAGUE=20114]="SWITZERLAND_SUPER_LEAGUE",e[e.BUNDESLIGA_2=20115]="BUNDESLIGA_2",e[e.LA_LIGA_2=20116]="LA_LIGA_2",e[e.SERIE_B=20117]="SERIE_B",e[e.INDIA_SUPER_LEAGUE=20118]="INDIA_SUPER_LEAGUE",e[e.LIGUE_2=20119]="LIGUE_2",e[e.AUSTRIA_BUNDESLIGA=20120]="AUSTRIA_BUNDESLIGA",e[e.DENMARK_SUPER_LEAGUE=20121]="DENMARK_SUPER_LEAGUE",e[e.POLAND_LEAGUE=20122]="POLAND_LEAGUE",e[e.SWEDEN_LEAGUE=20123]="SWEDEN_LEAGUE",e[e.COLOMBIA_PRIMERA_A=20124]="COLOMBIA_PRIMERA_A",e[e.ENGLAND_EFL_CUP=20125]="ENGLAND_EFL_CUP",e[e.ENGLAND_LEGAUE_1=20126]="ENGLAND_LEGAUE_1",e[e.URUGUAY_PRIMERA_DIVISION=20127]="URUGUAY_PRIMERA_DIVISION",e[e.AFC_CHAMPIONS_LEAGUE=20128]="AFC_CHAMPIONS_LEAGUE",e[e.EUROCUP=20200]="EUROCUP",e[e.SPAIN_LIGA_ACB=20201]="SPAIN_LIGA_ACB",e[e.ITALY_LEGA_BASKET_SERIE_A=20202]="ITALY_LEGA_BASKET_SERIE_A",e[e.GERMANY_BBL=20203]="GERMANY_BBL",e[e.FRANCE_LNB_PRO_A=20204]="FRANCE_LNB_PRO_A",e[e.CHINA_CBA=20205]="CHINA_CBA",e[e.AUSTRALIA_NBL=20206]="AUSTRALIA_NBL",e[e.NFL_FUTURES=30002]="NFL_FUTURES",e[e.NBA_FUTURES=30004]="NBA_FUTURES",e[e.EPL_FUTURES=30011]="EPL_FUTURES",e[e.GOLF_H2H=100021]="GOLF_H2H",e[e.GOLF_WINNER=100121]="GOLF_WINNER",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1=15312]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2=15313]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3=15314]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4=15315]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5=15316]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6=15317]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7=15318]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_1=15622]="TENNIS_MASTERS_LIVE_MAPPING_V2_1",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_2=15623]="TENNIS_MASTERS_LIVE_MAPPING_V2_2",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_3=15624]="TENNIS_MASTERS_LIVE_MAPPING_V2_3",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_4=15625]="TENNIS_MASTERS_LIVE_MAPPING_V2_4",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_5=15626]="TENNIS_MASTERS_LIVE_MAPPING_V2_5",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_6=15627]="TENNIS_MASTERS_LIVE_MAPPING_V2_6",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_7=15628]="TENNIS_MASTERS_LIVE_MAPPING_V2_7",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_8=15632]="TENNIS_MASTERS_LIVE_MAPPING_V2_8",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_9=15633]="TENNIS_MASTERS_LIVE_MAPPING_V2_9",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_10=15634]="TENNIS_MASTERS_LIVE_MAPPING_V2_10",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_11=15635]="TENNIS_MASTERS_LIVE_MAPPING_V2_11",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_12=15636]="TENNIS_MASTERS_LIVE_MAPPING_V2_12",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_13=15637]="TENNIS_MASTERS_LIVE_MAPPING_V2_13",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_14=15638]="TENNIS_MASTERS_LIVE_MAPPING_V2_14",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_15=15641]="TENNIS_MASTERS_LIVE_MAPPING_V2_15",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_16=15642]="TENNIS_MASTERS_LIVE_MAPPING_V2_16",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_17=15643]="TENNIS_MASTERS_LIVE_MAPPING_V2_17",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_18=15644]="TENNIS_MASTERS_LIVE_MAPPING_V2_18",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_19=15645]="TENNIS_MASTERS_LIVE_MAPPING_V2_19",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_20=15646]="TENNIS_MASTERS_LIVE_MAPPING_V2_20",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_21=15647]="TENNIS_MASTERS_LIVE_MAPPING_V2_21",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_22=15648]="TENNIS_MASTERS_LIVE_MAPPING_V2_22",e[e.TENNIS_WTA_LIVE_MAPPING_V2_1=15322]="TENNIS_WTA_LIVE_MAPPING_V2_1",e[e.TENNIS_WTA_LIVE_MAPPING_V2_2=15323]="TENNIS_WTA_LIVE_MAPPING_V2_2",e[e.TENNIS_WTA_LIVE_MAPPING_V2_3=15324]="TENNIS_WTA_LIVE_MAPPING_V2_3",e[e.TENNIS_WTA_LIVE_MAPPING_V2_4=15325]="TENNIS_WTA_LIVE_MAPPING_V2_4",e[e.TENNIS_WTA_LIVE_MAPPING_V2_5=15326]="TENNIS_WTA_LIVE_MAPPING_V2_5",e[e.TENNIS_WTA_LIVE_MAPPING_V2_6=15327]="TENNIS_WTA_LIVE_MAPPING_V2_6",e[e.TENNIS_WTA_LIVE_MAPPING_V2_7=15328]="TENNIS_WTA_LIVE_MAPPING_V2_7"}(L||(L={})),function(e){e.MONEYLINE="Moneyline"}(p||(p={})),function(e){e.ASIAN_HANDICAP="Asian Handicap",e.GAME_SPREAD="Game Spread",e.POINT_SPREAD="Point Spread",e.GOAL_SPREAD="Goal Spread",e.RUN_LINE="Run Line",e.PUCK_LINE="Puck Line"}(S||(S={})),function(e){e.TOTAL_GAMES="Total Games",e.TOTAL_GOALS="Total Goals",e.TOTAL_POINTS="Total Points",e.TOTAL_RUNS="Total Runs"}(s||(s={})),function(e){e.POINTS="points",e.GOALS="goals",e.ROUNDS="rounds",e.SETS="sets",e.EMPTY=""}(l||(l={})),function(e){e.OVERTIME="overtime",e.REGULAR="regular",e.EMPTY=""}(T||(T={})),function(e){e.QUARTER="quarter",e.HALF="half",e.PERIOD="period",e.ROUND="round",e.INNING="inning",e.SET="set",e.EMPTY=""}(N||(N={})),function(e){e.RUNDOWN="rundown",e.ENETPULSE="enetpulse",e.JSONODDS="jsonOdds",e.OPTICODDS="opticOdds",e.EMPTY=""}(d||(d={}));var P=((n={})[L.NCAAF]={sport:_.FOOTBALL,id:L.NCAAF,label:"NCAA Football",opticOddsName:"NCAAF",provider:d.OPTICODDS,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[L.NFL]={sport:_.FOOTBALL,id:L.NFL,label:"NFL",opticOddsName:"NFL",provider:d.OPTICODDS,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[L.MLB]={sport:_.BASEBALL,id:L.MLB,label:"MLB",opticOddsName:"MLB",provider:d.OPTICODDS,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.INNING,isDrawAvailable:!1},n[L.NBA]={sport:_.BASKETBALL,id:L.NBA,label:"NBA",opticOddsName:"NBA",provider:d.OPTICODDS,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[L.NCAAB]={sport:_.BASKETBALL,id:L.NCAAB,label:"NCAA Basketball",provider:d.RUNDOWN,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[L.NHL]={sport:_.HOCKEY,id:L.NHL,label:"NHL",opticOddsName:"NHL",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.OVERTIME,periodType:N.PERIOD,isDrawAvailable:!1},n[L.UFC]={sport:_.FIGHTING,id:L.UFC,label:"UFC",provider:d.OPTICODDS,scoringType:l.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[L.WNBA]={sport:_.BASKETBALL,id:L.WNBA,label:"WNBA",opticOddsName:"WNBA",provider:d.OPTICODDS,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[L.MLS]={sport:_.SOCCER,id:L.MLS,label:"MLS",opticOddsName:"USA - Major League Soccer",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.EPL]={sport:_.SOCCER,id:L.EPL,label:"EPL",opticOddsName:"England - Premier League",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.LIGUE_ONE]={sport:_.SOCCER,id:L.LIGUE_ONE,label:"Ligue 1",opticOddsName:"France - Ligue 1",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.BUNDESLIGA]={sport:_.SOCCER,id:L.BUNDESLIGA,label:"Bundesliga",opticOddsName:"Germany - Bundesliga",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.LA_LIGA]={sport:_.SOCCER,id:L.LA_LIGA,label:"La Liga",opticOddsName:"Spain - La Liga",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.SERIE_A]={sport:_.SOCCER,id:L.SERIE_A,label:"Serie A",opticOddsName:"Italy - Serie A",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.UEFA_CL]={sport:_.SOCCER,id:L.UEFA_CL,label:"UEFA Champions League",opticOddsName:"UEFA - Champions League",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.UEFA_EL]={sport:_.SOCCER,id:L.UEFA_EL,label:"UEFA Europa League",opticOddsName:"UEFA - Europa League",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.FIFA_WC]={sport:_.SOCCER,id:L.FIFA_WC,label:"FIFA World Cup Qualifiers",provider:d.OPTICODDS,opticOddsName:"FIFA - World Cup Qualifiers",scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.J1_LEAGUE]={sport:_.SOCCER,id:L.J1_LEAGUE,label:"J1 League",opticOddsName:"Japan - J1 League",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.IPL]={sport:_.CRICKET,id:L.IPL,label:"Indian Premier League",provider:d.RUNDOWN,scoringType:l.POINTS,matchResolveType:T.EMPTY,periodType:N.INNING,isDrawAvailable:!1},n[L.T20_BLAST]={sport:_.CRICKET,id:L.T20_BLAST,label:"T20 Blast",provider:d.RUNDOWN,scoringType:l.POINTS,matchResolveType:T.EMPTY,periodType:N.INNING,isDrawAvailable:!1},n[L.IIHF_WORLD_CHAMPIONSHIP]={sport:_.HOCKEY,id:L.IIHF_WORLD_CHAMPIONSHIP,label:"IIHF World Championship",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.PERIOD,isDrawAvailable:!0},n[L.COPA_AMERICA]={sport:_.SOCCER,id:L.COPA_AMERICA,label:"Copa America",opticOddsName:"CONMEBOL - Copa America",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.COPA_LIBERTADORES]={sport:_.SOCCER,id:L.COPA_LIBERTADORES,label:"Copa Libertadores",opticOddsName:"CONMEBOL - Copa Libertadores",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.UEFA_EURO]={sport:_.SOCCER,id:L.UEFA_EURO,label:"UEFA EURO 2024",opticOddsName:"UEFA - European Championship",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.EREDIVISIE]={sport:_.SOCCER,id:L.EREDIVISIE,label:"Eredivisie",opticOddsName:"Netherlands - Eredivisie",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.PRIMEIRA_LIGA]={sport:_.SOCCER,id:L.PRIMEIRA_LIGA,label:"Primeira Liga",opticOddsName:"Portugal - Primeira Liga",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.SUMMER_OLYMPICS_SOCCER_WOMEN]={sport:_.SOCCER,id:L.SUMMER_OLYMPICS_SOCCER_WOMEN,label:"Olympic Games Soccer Women",opticOddsName:"Olympics Soccer Women",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.SUMMER_OLYMPICS_SOCCER]={sport:_.SOCCER,id:L.SUMMER_OLYMPICS_SOCCER,label:"Olympic Games Soccer",opticOddsName:"Olympics Soccer Men",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.FIFA_WC_WOMEN]={sport:_.SOCCER,id:L.FIFA_WC_WOMEN,label:"FIFA World Cup Women",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.ENGLAND_CUP]={sport:_.SOCCER,id:L.ENGLAND_CUP,label:"FA Cup",opticOddsName:"England - FA Cup",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.FRANCE_CUP]={sport:_.SOCCER,id:L.FRANCE_CUP,label:"Coupe de France",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.SPAIN_CUP]={sport:_.SOCCER,id:L.SPAIN_CUP,label:"Copa del Rey",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.ITALY_CUP]={sport:_.SOCCER,id:L.ITALY_CUP,label:"Coppa Italia",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.TENNIS_WTA]={sport:_.TENNIS,id:L.TENNIS_WTA,label:"WTA Events",opticOddsName:"WTA",provider:d.ENETPULSE,scoringType:l.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[L.TENNIS_GS]={sport:_.TENNIS,id:L.TENNIS_GS,label:"Grand Slam",opticOddsName:"ATP,WTA",provider:d.ENETPULSE,scoringType:l.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[L.TENNIS_MASTERS]={sport:_.TENNIS,id:L.TENNIS_MASTERS,label:"ATP Events",opticOddsName:"ATP",provider:d.ENETPULSE,scoringType:l.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[L.SUMMER_OLYMPICS_TENNIS]={sport:_.TENNIS,id:L.SUMMER_OLYMPICS_TENNIS,label:"Olympic Games Tennis",provider:d.ENETPULSE,scoringType:l.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[L.GERMANY_CUP]={sport:_.SOCCER,id:L.GERMANY_CUP,label:"DFB Pokal",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.LIGA_MX]={sport:_.SOCCER,id:L.LIGA_MX,label:"Liga MX",opticOddsName:"Mexico - Liga MX",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.BRAZIL_1]={sport:_.SOCCER,id:L.BRAZIL_1,label:"Serie A",opticOddsName:"Brazil - Serie A",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.UEFA_EURO_U21]={sport:_.SOCCER,id:L.UEFA_EURO_U21,label:"UEFA EURO U21",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.FIFA_WORLD_CUP_U20]={sport:_.SOCCER,id:L.FIFA_WORLD_CUP_U20,label:"FIFA World Cup U20",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.SUMMER_OLYMPICS_HANDBALL_WOMEN]={sport:_.HANDBALL,id:L.SUMMER_OLYMPICS_HANDBALL_WOMEN,label:"Olympic Games Handball Women",opticOddsName:"Olympics Handball Women",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.SUMMER_OLYMPICS_HANDBALL]={sport:_.HANDBALL,id:L.SUMMER_OLYMPICS_HANDBALL,label:"Olympic Games Handball",opticOddsName:"Olympics Handball Men",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.EUROLEAGUE]={sport:_.BASKETBALL,id:L.EUROLEAGUE,label:"Euroleague",opticOddsName:"Euroleague",provider:d.OPTICODDS,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[L.SUMMER_OLYMPICS_BASKETBALL]={sport:_.BASKETBALL,id:L.SUMMER_OLYMPICS_BASKETBALL,label:"Olympic Games Basketball",opticOddsName:"Olympics Basketball Men",provider:d.ENETPULSE,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[L.SUMMER_OLYMPICS_BASKETBALL_WOMEN]={sport:_.BASKETBALL,id:L.SUMMER_OLYMPICS_BASKETBALL_WOMEN,label:"Olympic Games Basketball Women",opticOddsName:"Olympics Basketball Women",provider:d.ENETPULSE,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[L.FIBA_WORLD_CUP]={sport:_.BASKETBALL,id:L.FIBA_WORLD_CUP,label:"FIBA World Cup",provider:d.ENETPULSE,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[L.FORMULA1]={sport:_.MOTOSPORT,id:L.FORMULA1,label:"Formula 1",provider:d.ENETPULSE,scoringType:l.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[L.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN]={sport:_.VOLLEYBALL,id:L.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN,label:"Olympic Games Beach Voleyball Women",provider:d.ENETPULSE,scoringType:l.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[L.SUMMER_OLYMPICS_BEACH_VOLEYBALL]={sport:_.VOLLEYBALL,id:L.SUMMER_OLYMPICS_BEACH_VOLEYBALL,label:"Olympic Games Beach Voleyball",provider:d.ENETPULSE,scoringType:l.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[L.SUMMER_OLYMPICS_TABLE_TENNIS]={sport:_.TABLE_TENNIS,id:L.SUMMER_OLYMPICS_TABLE_TENNIS,label:"Olympic Games Table Tennis",provider:d.ENETPULSE,scoringType:l.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[L.MOTOGP]={sport:_.MOTOSPORT,id:L.MOTOGP,label:"MotoGP",provider:d.ENETPULSE,scoringType:l.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[L.SAUDI_PROFESSIONAL_LEAGUE]={sport:_.SOCCER,id:L.SAUDI_PROFESSIONAL_LEAGUE,label:"Saudi Professional League",opticOddsName:"Saudi Arabia - Saudi League",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.SUMMER_OLYMPICS_WATERPOLO]={sport:_.WATERPOLO,id:L.SUMMER_OLYMPICS_WATERPOLO,label:"Olympic Games Water Polo",opticOddsName:"Olympics Water Polo",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.QUARTER,isDrawAvailable:!0},n[L.SUMMER_OLYMPICS_VOLEYBALL_WOMEN]={sport:_.VOLLEYBALL,id:L.SUMMER_OLYMPICS_VOLEYBALL_WOMEN,label:"Olympic Games Volleyball Women",opticOddsName:"Olympics Volleyball Women",provider:d.ENETPULSE,scoringType:l.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[L.SUMMER_OLYMPICS_VOLEYBALL]={sport:_.VOLLEYBALL,id:L.SUMMER_OLYMPICS_VOLEYBALL,label:"Olympic Games Volleyball",opticOddsName:"Olympics Volleyball Men",provider:d.ENETPULSE,scoringType:l.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[L.BOXING]={sport:_.FIGHTING,id:L.BOXING,label:"Boxing",provider:d.ENETPULSE,scoringType:l.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[L.SUMMER_OLYMPICS_RUGBY]={sport:_.RUGBY,id:L.SUMMER_OLYMPICS_RUGBY,label:"Olympic Games Rugby",opticOddsName:"Olympics Rugby 7s Men",provider:d.ENETPULSE,scoringType:l.POINTS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.SUMMER_OLYMPICS_RUGBY_WOMEN]={sport:_.RUGBY,id:L.SUMMER_OLYMPICS_RUGBY_WOMEN,label:"Olympic Games Rugby Women",opticOddsName:"Olympics Rugby 7s Women",provider:d.ENETPULSE,scoringType:l.POINTS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.SUMMER_OLYMPICS_HOCKEY_WOMEN]={sport:_.HOCKEY,id:L.SUMMER_OLYMPICS_HOCKEY_WOMEN,label:"Olympic Games Hockey Women",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.PERIOD,isDrawAvailable:!0},n[L.SUMMER_OLYMPICS_HOCKEY]={sport:_.HOCKEY,id:L.SUMMER_OLYMPICS_HOCKEY,label:"Olympic Games Hockey",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.PERIOD,isDrawAvailable:!0},n[L.UEFA_NATIONS_LEAGUE]={sport:_.SOCCER,id:L.UEFA_NATIONS_LEAGUE,label:"UEFA Nations League",provider:d.OPTICODDS,opticOddsName:"UEFA - Nations League",scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.CONCACAF_NATIONS_LEAGUE]={sport:_.SOCCER,id:L.CONCACAF_NATIONS_LEAGUE,label:"CONCACAF Nations League",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.CSGO]={sport:_.ESPORTS,id:L.CSGO,label:"CS GO",opticOddsName:"CS2",provider:d.ENETPULSE,scoringType:l.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[L.DOTA2]={sport:_.ESPORTS,id:L.DOTA2,label:"DOTA 2",opticOddsName:"Dota 2",provider:d.ENETPULSE,scoringType:l.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[L.SUMMER_OLYMPICS_BASKETBALL_3X3]={sport:_.BASKETBALL,id:L.SUMMER_OLYMPICS_BASKETBALL_3X3,label:"Olympic Games Basketball 3x3",opticOddsName:"Olympics Basketball 3x3 Men",provider:d.ENETPULSE,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[L.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN]={sport:_.BASKETBALL,id:L.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN,label:"Olympic Games Basketball 3x3 Women",opticOddsName:"Olympics Basketball 3x3 Women",provider:d.ENETPULSE,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[L.SUMMER_OLYMPICS_QUALIFICATION]={sport:_.BASKETBALL,id:L.SUMMER_OLYMPICS_QUALIFICATION,label:"Summer Olympics Basketball Qualification",provider:d.ENETPULSE,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[L.LOL]={sport:_.ESPORTS,id:L.LOL,label:"LOL",opticOddsName:"League of Legends",provider:d.ENETPULSE,scoringType:l.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[L.CONMEBOL_WC_QUALIFICATIONS]={sport:_.SOCCER,id:L.CONMEBOL_WC_QUALIFICATIONS,label:"CONMEBOL WC Qualification",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.UEFA_CONFERENCE_LEAGUE]={sport:_.SOCCER,id:L.UEFA_CONFERENCE_LEAGUE,label:"UEFA Conference League",opticOddsName:"UEFA - Europa Conference League",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.NON_TITLE_BOXING]={sport:_.FIGHTING,id:L.NON_TITLE_BOXING,label:"Boxing",provider:d.ENETPULSE,scoringType:l.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[L.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION]={sport:_.SOCCER,id:L.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION,label:"UEFA Champions League Qualification",opticOddsName:"UEFA - Champions League",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.UEFA_EUROPA_LEAGUE_QUALIFICATION]={sport:_.SOCCER,id:L.UEFA_EUROPA_LEAGUE_QUALIFICATION,label:"UEFA Europa League Qualification",opticOddsName:"UEFA - Europa League",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.UEFA_CONFERENCE_LEAGUE_QUALIFICATION]={sport:_.SOCCER,id:L.UEFA_CONFERENCE_LEAGUE_QUALIFICATION,label:"UEFA Conference League Qualification",opticOddsName:"UEFA - Europa Conference League",provider:d.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.US_ELECTION]={sport:_.POLITICS,id:L.US_ELECTION,label:"US Election 2024",provider:d.EMPTY,scoringType:l.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[L.UEFA_SUPER_CUP]={sport:_.SOCCER,id:L.UEFA_SUPER_CUP,label:"UEFA Super Cup",opticOddsName:"UEFA - Super Cup",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.BRAZIL_CUP]={sport:_.SOCCER,id:L.BRAZIL_CUP,label:"Copa do Brasil",opticOddsName:"Brazil - Copa do Brasil",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.ENGLAND_CHAMPIONSHIP]={sport:_.SOCCER,id:L.ENGLAND_CHAMPIONSHIP,label:"EFL Championship",opticOddsName:"England - Championship",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.SCOTLAND_PREMIERSHIP]={sport:_.SOCCER,id:L.SCOTLAND_PREMIERSHIP,label:"Scotland Premiership",opticOddsName:"Scotland - Premiership",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.BELGIUM_LEAGUE]={sport:_.SOCCER,id:L.BELGIUM_LEAGUE,label:"Belgium Jupiler Pro League",opticOddsName:"Belgium - Jupiler Pro League",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.CZECH_LEAGUE]={sport:_.SOCCER,id:L.CZECH_LEAGUE,label:"Czech Republic FNL",opticOddsName:"Czech Republic - FNL",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.CHILE_PRIMERA]={sport:_.SOCCER,id:L.CHILE_PRIMERA,label:"Chile Primera Division",opticOddsName:"Chile - Primera Division",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.FINLAND_LEAGUE]={sport:_.SOCCER,id:L.FINLAND_LEAGUE,label:"Finland Veikkausliiga",opticOddsName:"Finland - Veikkausliiga",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.ARGENTINA_PRIMERA]={sport:_.SOCCER,id:L.ARGENTINA_PRIMERA,label:"Argentina Primera Division",opticOddsName:"Argentina - Primera Division",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.RUSSIA_PREMIER]={sport:_.SOCCER,id:L.RUSSIA_PREMIER,label:"Russia Premier League",opticOddsName:"Russia - Premier League",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.TURKEY_SUPER_LEAGUE]={sport:_.SOCCER,id:L.TURKEY_SUPER_LEAGUE,label:"Turkey Super Lig",opticOddsName:"Turkey - Super Lig",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.SERBIA_SUPER_LEAGUE]={sport:_.SOCCER,id:L.SERBIA_SUPER_LEAGUE,label:"Serbia Super Liga",opticOddsName:"Serbia - Super Liga",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.GREECE_SUPER_LEAGUE]={sport:_.SOCCER,id:L.GREECE_SUPER_LEAGUE,label:"Greece Super League",opticOddsName:"Greece - Super League",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.INDIA_PREMIER]={sport:_.SOCCER,id:L.INDIA_PREMIER,label:"India Calcutta Premier Division",opticOddsName:"India - Calcutta Premier Division",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.CHINA_SUPER_LEAGUE]={sport:_.SOCCER,id:L.CHINA_SUPER_LEAGUE,label:"China Super League",opticOddsName:"China - Super League",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.AUSTRALIA_A_LEAGUE]={sport:_.SOCCER,id:L.AUSTRALIA_A_LEAGUE,label:"Australia A-League",opticOddsName:"Australia - A-League",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.SWITZERLAND_SUPER_LEAGUE]={sport:_.SOCCER,id:L.SWITZERLAND_SUPER_LEAGUE,label:"Switzerland Super League",opticOddsName:"Switzerland - Super League",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.BUNDESLIGA_2]={sport:_.SOCCER,id:L.BUNDESLIGA_2,label:"Bundesliga 2",opticOddsName:"Germany - Bundesliga 2",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.LA_LIGA_2]={sport:_.SOCCER,id:L.LA_LIGA_2,label:"La Liga 2",opticOddsName:"Spain - La Liga 2",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.SERIE_B]={sport:_.SOCCER,id:L.SERIE_B,label:"Serie B",opticOddsName:"Italy - Serie B",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.INDIA_SUPER_LEAGUE]={sport:_.SOCCER,id:L.INDIA_SUPER_LEAGUE,label:"India Super League",opticOddsName:"India - Super League",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.LIGUE_2]={sport:_.SOCCER,id:L.LIGUE_2,label:"Ligue 2",opticOddsName:"France - Ligue 2",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.AUSTRIA_BUNDESLIGA]={sport:_.SOCCER,id:L.AUSTRIA_BUNDESLIGA,label:"Austria Bundesliga",opticOddsName:"Austria - Bundesliga",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.DENMARK_SUPER_LEAGUE]={sport:_.SOCCER,id:L.DENMARK_SUPER_LEAGUE,label:"Denmark Superliga",opticOddsName:"Denmark - Superliga",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.POLAND_LEAGUE]={sport:_.SOCCER,id:L.POLAND_LEAGUE,label:"Poland Ekstraklasa",opticOddsName:"Poland - Ekstraklasa",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.SWEDEN_LEAGUE]={sport:_.SOCCER,id:L.SWEDEN_LEAGUE,label:"Sweden Allsvenskan",opticOddsName:"Sweden - Allsvenskan",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.COLOMBIA_PRIMERA_A]={sport:_.SOCCER,id:L.COLOMBIA_PRIMERA_A,label:"Colombia Primera A",opticOddsName:"Colombia - Primera A",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.ENGLAND_EFL_CUP]={sport:_.SOCCER,id:L.ENGLAND_EFL_CUP,label:"England EFL Cup",opticOddsName:"England - EFL Cup",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.ENGLAND_LEGAUE_1]={sport:_.SOCCER,id:L.ENGLAND_LEGAUE_1,label:"England League 1",opticOddsName:"England - League 1",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.URUGUAY_PRIMERA_DIVISION]={sport:_.SOCCER,id:L.URUGUAY_PRIMERA_DIVISION,label:"Uruguay Primera Division",opticOddsName:"Uruguay - Primera Division",provider:d.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.AFC_CHAMPIONS_LEAGUE]={sport:_.SOCCER,id:L.AFC_CHAMPIONS_LEAGUE,label:"AFC Champions League",opticOddsName:"AFC - Champions League",scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[L.EUROCUP]={sport:_.BASKETBALL,id:L.EUROCUP,label:"Eurocup",opticOddsName:"Eurocup",provider:d.OPTICODDS,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[L.SPAIN_LIGA_ACB]={sport:_.BASKETBALL,id:L.SPAIN_LIGA_ACB,label:"Spain Liga ACB",opticOddsName:"Spain - Liga ACB",scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[L.ITALY_LEGA_BASKET_SERIE_A]={sport:_.BASKETBALL,id:L.ITALY_LEGA_BASKET_SERIE_A,label:"Italy Lega Basket Serie A",opticOddsName:"Italy - Lega Basket Serie A",scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[L.GERMANY_BBL]={sport:_.BASKETBALL,id:L.GERMANY_BBL,label:"Germany BBL",opticOddsName:"Germany - BBL",scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[L.FRANCE_LNB_PRO_A]={sport:_.BASKETBALL,id:L.FRANCE_LNB_PRO_A,label:"France LNB Pro A",opticOddsName:"France - LNB Pro A",scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[L.CHINA_CBA]={sport:_.BASKETBALL,id:L.CHINA_CBA,label:"China CBA",opticOddsName:"China - CBA",scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[L.AUSTRALIA_NBL]={sport:_.BASKETBALL,id:L.AUSTRALIA_NBL,label:"Australia NBL",opticOddsName:"Australia - NBL",scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[L.NFL_FUTURES]={sport:_.FUTURES,id:L.NFL_FUTURES,label:"NFL Futures",provider:d.EMPTY,scoringType:l.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[L.NBA_FUTURES]={sport:_.FUTURES,id:L.NBA_FUTURES,label:"NBA Futures",provider:d.EMPTY,scoringType:l.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[L.EPL_FUTURES]={sport:_.FUTURES,id:L.EPL_FUTURES,label:"EPL Futures",provider:d.EMPTY,scoringType:l.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[L.GOLF_H2H]={sport:_.GOLF,id:L.GOLF_H2H,label:"Golf head-to-head",provider:d.JSONODDS,scoringType:l.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[L.GOLF_WINNER]={sport:_.GOLF,id:L.GOLF_WINNER,label:"Golf Tournament Winner",provider:d.JSONODDS,scoringType:l.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n),M=[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,L.TENNIS_WTA_LIVE_MAPPING_V2_1,L.TENNIS_WTA_LIVE_MAPPING_V2_2,L.TENNIS_WTA_LIVE_MAPPING_V2_3,L.TENNIS_WTA_LIVE_MAPPING_V2_4,L.TENNIS_WTA_LIVE_MAPPING_V2_5,L.TENNIS_WTA_LIVE_MAPPING_V2_6,L.TENNIS_WTA_LIVE_MAPPING_V2_7],C=[L.SUMMER_OLYMPICS_RUGBY,L.SUMMER_OLYMPICS_RUGBY_WOMEN],U=[L.NCAAF,L.NFL,L.MLB,L.NBA,L.NCAAB,L.NHL,L.WNBA,L.MLS,L.IPL,L.T20_BLAST],u=[701,702,703,704],m={1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21},y={320:18,6:24,33:33,16:42,44:44,45:45,11:47,50:50,12:53,13:54,15:55,57:57,61:61,65:65,66:66,17:73,76:76,14:87,152:152,153:153,156:156,158:158,132:132,134:134,138:138,141:141,209:209,230:230,268:268,288:288,296:296,310:310,319:319,322:322,327:327,380:380,381:381,399:399,406:406,407:407,409:409,445:445,453:453,454:454,497:497,536:536,8881:8881,8893:8893,8894:8894,8910:8910,9196:9196,9578:9578,9588:9588,9698:9698,9699:9699,9806:9806,9821:9821,9977:9977,9983:9983,10071:10071,10072:10072,10502:10502,10138:10138,10199:10199,10216:10216,10595:10595,10611:10611,10613:10613,10615:10615},G={1:"NCAAF",2:"NFL",3:"MLB",4:"NBA",6:"NHL",7:"UFC",8:"WNBA",10:"USA - Major League Soccer",11:"England - Premier League",12:"France - Ligue 1",13:"Germany - Bundesliga",14:"Spain - La Liga",15:"Italy - Serie A",16:"UEFA - Champions League",17:"UEFA - Europa League",18:"FIFA - World Cup Qualifiers",19:"Japan - J1 League",45:"CONMEBOL - Copa Libertadores",57:"Netherlands - Eredivisie",61:"Portugal - Primeira Liga",230:"Mexico - Liga MX",268:"Brazil - Serie A",399:"Euroleague",536:"Saudi Arabia - Saudi League",9806:"UEFA - Nations League",9977:"CS2",9983:"Dota 2",10138:"League of Legends",10216:"UEFA - Europa Conference League",20001:"UEFA - Super Cup",20002:"Brazil - Copa do Brasil",20011:"England - Championship",20101:"Scotland - Premiership",20102:"Belgium - Jupiler Pro League",20103:"Czech Republic - FNL",20104:"Chile - Primera Division",20105:"Finland - Veikkausliiga",20106:"Argentina - Primera Division",20107:"Russia - Premier League",20108:"Turkey - Super Lig",20109:"Serbia - Super Liga",20110:"Greece - Super League",20111:"India - Calcutta Premier Division",20112:"China - Super League",20113:"Australia - A-League",20114:"Switzerland - Super League",20115:"Germany - Bundesliga 2",20116:"Spain - La Liga 2",20117:"Italy - Serie B",20118:"India - Super League",20119:"France - Ligue 2",20120:"Austria - Bundesliga",20121:"Denmark - Superliga",20122:"Poland - Ekstraklasa",20123:"Sweden - Allsvenskan",20124:"Colombia - Primera A",20125:"England - EFL Cup",20126:"England - League 1",20127:"Uruguay - Primera Division",20200:"Eurocup"},v=function(e){var r=P[e];return r?r.sport:_.EMPTY},g=function(e){var r=P[e];return r?r.label:""},D=function(e){var r=P[e];return r?r.provider:""},b=function(e){var r=P[e];return!!r&&r.isDrawAvailable},F=function(e){var r=new Set;return e.filter((function(e){return"true"===e.enabled})).map((function(e){return r.add(Number(e.sportId))})),Array.from(r)},B=function(e,r){var a=new Set;return r.filter((function(r){return Number(r.sportId)===Number(e)&&"true"===r.enabled})).map((function(e){return a.add(e.marketName)})),Array.from(a)},h=function(e,r){return r.filter((function(r){return Number(r.sportId)===e}))},w=function(e){var r=P[e];return r?r.opticOddsName:void 0},V=function(e){var r=P[e];return r?r.periodType:""},f=function(e,r){return r.filter((function(r){return Number(r.sportId)===Number(e)&&"Spread"===r.type&&"true"===r.enabled})).map((function(e){return e.marketName.toLowerCase()}))},Y=function(e,r){return r.filter((function(r){return Number(r.sportId)===Number(e)&&"Total"===r.type&&"true"===r.enabled})).map((function(e){return e.marketName.toLowerCase()}))},H=function(e,r,a,i,E,o){var A,t;if(M.includes(e)?(A=i.toLowerCase()==r.toLowerCase()||i.toLowerCase()==a.toLowerCase(),t=E.toLowerCase()==r.toLowerCase()||E.toLowerCase()==a.toLowerCase()):(A=i.toLowerCase()==r.toLowerCase(),t=E.toLowerCase()==a.toLowerCase()),!0!==A){var _=o.get(i.toLowerCase()),L=o.get(r.toLowerCase()),p=o.get(a.toLowerCase());if([_,L].some((function(e){return null==e})))return!1;A=M.includes(e)?_==L||_==p:_==L}if(!0!==t){var S=o.get(E.toLowerCase());if(L=o.get(r.toLowerCase()),[S,p=o.get(a.toLowerCase())].some((function(e){return null==e})))return!1;t=M.includes(e)&&S==L||S==p}return A&&t},W=function(e,r,a,i){var E;if(v(a)==_.TENNIS){var o=r.getTime(),A=e.getTime();E=Math.abs(A-o)<=Number(60*i*1e3)}else E=r.toUTCString()==e.toUTCString();return E},k=0,K="Draw",Q=0,j=.2,x=10001,X=10002,z=100,Z=function(e,r,a){if(e.some((function(e){return 0===e})))return e;var i=e.reduce((function(e,r){return e+r}),0);if(i<=1)return Array(e.length).fill(0);if(0===a){if(!(r>100*(i-1)))return e;a=r}var E=1+a/100,o=E/i,A=e.map((function(e){return e*o}));if(A.some((function(e){return e>=1})))return Array(e.length).fill(0);var t=A.reduce((function(e,r){return e+r}),0);if(t<1)return Array(e.length).fill(0);var _=E/t;return A.map((function(e){return e*_}))},J=function(e,r,a,i){var E=e.find((function(e){return Number(e.typeId)===Number(a)&&Number(e.sportId)===Number(r)}));return E?{minSpread:E.minSpread?Number(E.minSpread):i,targetSpread:E.targetSpread?Number(E.targetSpread):0}:{minSpread:i,targetSpread:0}},q=function(){return q=Object.assign||function(e){for(var r,a=1,i=arguments.length;a<i;a++)for(var E in r=arguments[a])Object.prototype.hasOwnProperty.call(r,E)&&(e[E]=r[E]);return e},q.apply(this,arguments)},$=function(e,r,a){if(a||2===arguments.length)for(var i,E=0,o=r.length;E<o;E++)!i&&E in r||(i||(i=Array.prototype.slice.call(r,0,E)),i[E]=r[E]);return e.concat(i||Array.prototype.slice.call(r))},ee=function(e){return e===k?0:re("decimal","impliedProbability",e)},re=function(e,r,a){try{return I(e,a).to(r)}catch(e){return 0}},ae=function(e,r,a,i,E){var o=new Map;return a.forEach((function(a){var A=0,t=e.filter((function(e){return e&&e.marketName.toLowerCase()===r.toLowerCase()&&e.sportsBookName.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()===i.homeTeam.toLowerCase()}));0!==t.length&&(A=t[0].price);var _=0,L=e.filter((function(e){return e&&e.marketName.toLowerCase()===r.toLowerCase()&&e.sportsBookName.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()===i.awayTeam.toLowerCase()}));0!==L.length&&(_=L[0].price);var p=0;if(!E){var S=e.filter((function(e){return e&&e.marketName.toLowerCase()===r.toLowerCase()&&e.sportsBookName.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()===K.toLowerCase()}));0!==S.length&&(p=S[0].price)}o.set(a.toLowerCase(),{homeOdds:A,awayOdds:_,drawOdds:p})})),o},ie=function(e,r,a,i,E,o,A){var t={homeTeam:i.homeTeam,awayTeam:i.awayTeam},_=ae(i.odds,p.MONEYLINE,a,t,e),L=R(_,a,e,A,j);if(L.errorMessage)return{odds:e?[0,0]:[0,0,0],errorMessage:L.errorMessage};var S=(e?[L.homeOdds,L.awayOdds]:[L.homeOdds,L.awayOdds,L.drawOdds]).map((function(e){return ee(e)})),s=J(r,E,Q,o);return{odds:S=null!==s?Z(S,s.minSpread,s.targetSpread):Z(S,o,0)}},Ee=function(e,r,a,i,E,o){var A=[[],[],[]],t=A[0],_=A[1],L=A[2],p=h(a,o),S={homeTeam:e.homeTeam,awayTeam:e.awayTeam};if(p.length>0){oe(e.odds,p,i[0]).filter((function(e){return e&&.5===Math.abs(Number(e.points)%1)})).forEach((function(e){"Total"===e.type?_.push(e):"Spread"===e.type&&t.push(e)}));var s=$($([],Ae(t,S),!0),te(_,S),!0);_e(s,r,E).forEach((function(e){var r={leagueId:Number(e.sportId),typeId:Number(e.typeId),type:e.type.toLowerCase(),line:Number(e.line),odds:e.odds},a=p.find((function(r){return Number(r.typeId)===Number(e.typeId)})),i=null==a?void 0:a.minOdds,E=null==a?void 0:a.maxOdds;i&&E&&(e.odds[0]>=i||e.odds[0]<=E||e.odds[1]>=i||e.odds[1]<=E)||L.push(r)}))}else console.warn("No child markets for leagueID: ".concat(Number(a)));return L},oe=function(e,r,a){var i=r.filter((function(e){return e.marketName.toLowerCase()!==p.MONEYLINE.toLowerCase()})).map((function(e){return e.marketName.toLowerCase()}));return e.filter((function(e){return i.includes(e.marketName.toLowerCase())&&e.sportsBookName.toLowerCase()==a.toLowerCase()})).map((function(e){return q(q({},e),r.find((function(r){return r.marketName.toLowerCase()===e.marketName.toLowerCase()})))}))},Ae=function(e,r){var a=e.reduce((function(e,a){var i=a.points,E=a.price,o=a.selection,A=a.typeId,t=a.sportId,_=a.type,L=o===r.homeTeam,p=L?i:-i;return e[p]||(e[p]={home:null,away:null,typeId:null,sportId:null}),L?e[p].home=E:e[p].away=E,e[p].typeId=A,e[p].type=_,e[p].sportId=t,e}),{}),i=Object.entries(a).reduce((function(e,r){var a=r[0],i=r[1],E=parseFloat(a);return null!==i.home&&null!==i.away&&e.push({line:E,odds:[i.home,i.away],typeId:i.typeId,sportId:i.sportId,type:i.type}),e}),[]);return i},te=function(e,r){var a=e.reduce((function(e,r){if(r){var a="".concat(r.selection,"_").concat(r.points);e[a]||(e[a]={over:null,under:null}),"over"===r.selectionLine?e[a].over=r.price:"under"===r.selectionLine&&(e[a].under=r.price),e[a].typeId=r.typeId,e[a].type=r.type,e[a].sportId=r.sportId}return e}),{}),i=Object.entries(a).reduce((function(e,a){var i=a[0],E=a[1],o=i.split("_"),A=o[0],t=o[1],_=parseFloat(t),L=A===r.awayTeam;return null!==E.over&&null!==E.under&&e.push({line:_,odds:[E.over,E.under],typeId:L?Number(E.typeId)+1:E.typeId,sportId:E.sportId,type:E.type}),e}),[]);return i},_e=function(e,r,a){var i=[];return e.forEach((function(e){var E=ee(e.odds[0])||k,o=ee(e.odds[1])||k;if(E!==k&&o!==k){var A,t=J(r,e.sportId,e.typeId,a);E=(A=null!==t?Z([E,o],t.minSpread,t.targetSpread):Z([E,o],a,0))[0],o=A[1],i.push(q(q({},e),{odds:A}))}})),i},Le=function(){return Le=Object.assign||function(e){for(var r,a=1,i=arguments.length;a<i;a++)for(var E in r=arguments[a])Object.prototype.hasOwnProperty.call(r,E)&&(e[E]=r[E]);return e},Le.apply(this,arguments)},pe=function(e,r,a,i,E,o,A,t){var _=i.filter((function(r){return r.sportId===String(e.leagueId)})),L=ie(!E,_,a,r,e.leagueId,o,A);L.errorMessage?(e.odds=e.odds.map((function(){return{american:0,decimal:0,normalizedImplied:0}})),e.errorMessage=L.errorMessage):e.odds=L.odds.map((function(r){return 0!=r?{american:I("impliedProbability",r).to("moneyline"),decimal:I("impliedProbability",r).to("decimal"),normalizedImplied:r}:(e.errorMessage="Bad odds after spread adjustment",{american:0,decimal:0,normalizedImplied:0})}));var p=Ee(r,_,e.leagueId,a,o,t).map((function(r){var a=Le(Le({},e),r);return a.odds.length>0&&(a.odds=a.odds.map((function(e){return 0==e?{american:0,decimal:0,normalizedImplied:0}:{american:I("impliedProbability",e).to("moneyline"),decimal:I("impliedProbability",e).to("decimal"),normalizedImplied:e}}))),a}));return e.childMarkets=p,e},Se=function(e,r,a){var i=v(r),E=e.homeTeam,o=e.homeTotal,A=e.awayTeam,t=e.awayTotal,L=e.clock,p=e.period,S=e.status,s=parseInt(p);return"completed"==S.toLowerCase()?{allow:!1,message:"Blocking game ".concat(E," - ").concat(A," because it is no longer live.")}:i===_.BASKETBALL?se(E,A,s,a.get(_.BASKETBALL)):i===_.HOCKEY?se(E,A,s,a.get(_.HOCKEY)):i===_.BASEBALL?se(E,A,s,a.get(_.BASEBALL)):i===_.SOCCER?le(E,A,L,p,a.get(_.SOCCER)):i===_.TENNIS?Te(e,E,A,p,o,t,r,i):i===_.VOLLEYBALL?Te(e,E,A,s,o,t,r,i):{allow:!0,message:"The sport ".concat(r," does not have constraint")}},se=function(e,r,a,i){return!Number.isNaN(a)&&a>=i?{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to period: ").concat(a,". period")}:{allow:!0,message:""}},le=function(e,r,a,i,E){var o=Number(a);return!Number.isNaN(o)&&o>=E||Number.isNaN(o)&&"HALF"!=i?{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to clock: ").concat(a,"min")}:{allow:!0,message:""}},Te=function(e,r,a,i,E,o,A,t){var p=Number(i),S=Ne(p,e),s="atp"==e.league.toLowerCase(),l={home:E,away:o};return t==_.VOLLEYBALL?de(r,a,S,l,ne,5==p?Oe:Ie):A.toString().startsWith(L.TENNIS_GS)&&s?de(r,a,S,l,Re,Pe):A.toString().startsWith(L.TENNIS_GS)&&!s||A.toString().startsWith(L.TENNIS_MASTERS)||A.toString().startsWith(L.SUMMER_OLYMPICS_TENNIS)||A.toString().startsWith(L.TENNIS_WTA)?de(r,a,S,l,ce,Pe):{allow:!0,message:"The sport ".concat(A," does not have result constraint")}},Ne=function(e,r){var a=0,i=0;switch(e){case 1:a=Number(r.homePeriod1),i=Number(r.awayPeriod1);break;case 2:a=Number(r.homePeriod2),i=Number(r.awayPeriod2);break;case 3:a=Number(r.homePeriod3),i=Number(r.awayPeriod3);break;case 4:a=Number(r.homePeriod4),i=Number(r.awayPeriod4);break;case 5:a=Number(r.homePeriod5),i=Number(r.awayPeriod5)}return{home:a,away:i}},de=function(e,r,a,i,E,o){return Number(i.home)!=E&&Number(i.away)!=E||!(Number(i.home)==E&&a.home>=o||Number(i.away)==E&&a.away>=o)?{allow:!0,message:"",currentHomeGameScore:a.home,currentAwayGameScore:a.away}:{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to current result: ").concat(i.home," - ").concat(i.away," (").concat(a.home," - ").concat(a.away,")")}},ne=2,Ie=20,Oe=10,Re=2,ce=1,Pe=5,Me=function(){return Me=Object.assign||function(e){for(var r,a=1,i=arguments.length;a<i;a++)for(var E in r=arguments[a])Object.prototype.hasOwnProperty.call(r,E)&&(e[E]=r[E]);return e},Me.apply(this,arguments)},Ce=function(e){return e.map((function(e){return{gameId:e.id,startDate:e.start_date,homeTeam:e.home_team_display,awayTeam:e.away_team_display}}))},Ue=function(e){return e.map((function(e){return Me(Me({gameId:e.fixture.id,sport:e.sport.name,league:e.league.name.toLowerCase(),status:e.fixture.status.toLowerCase(),isLive:e.fixture.is_live,clock:e.in_play.clock,period:e.in_play.period?e.in_play.period.toLowerCase():e.in_play.period,homeTeam:e.fixture.home_team_display,awayTeam:e.fixture.away_team_display,homeTotal:e.scores.home.total,awayTotal:e.scores.away.total},me(e.scores.home.periods,"home")),me(e.scores.away.periods,"away"))}))},ue=function(e){return e.map((function(e){return{gameId:e.id,startDate:e.start_date,homeTeam:e.home_team_display,awayTeam:e.away_team_display,isLive:e.is_live,status:e.status,sport:e.sport.id,league:e.league.name,odds:e.odds.map((function(r){return{id:r.id,sportsBookName:r.sportsbook,name:r.name,price:r.price,timestamp:r.timestamp,points:r.points,isMain:r.is_main,isLive:e.is_live,marketName:r.market.toLowerCase(),playerId:r.player_id,selection:r.selection,selectionLine:r.selection_line}}))}}))},me=function(e,r){return Object.values(e).reduce((function(e,a,i){var E;return Me(Me({},e),((E={})["".concat(r,"Period").concat(i+1)]=a,E))}),{})};return r})()));
|
package/package.json
CHANGED
package/src/constants/sports.ts
CHANGED
|
@@ -1152,6 +1152,16 @@ export const LeagueMap = {
|
|
|
1152
1152
|
periodType: PeriodType.HALF,
|
|
1153
1153
|
isDrawAvailable: true,
|
|
1154
1154
|
},
|
|
1155
|
+
[League.AFC_CHAMPIONS_LEAGUE]: {
|
|
1156
|
+
sport: Sport.SOCCER,
|
|
1157
|
+
id: League.AFC_CHAMPIONS_LEAGUE,
|
|
1158
|
+
label: 'AFC Champions League',
|
|
1159
|
+
opticOddsName: 'AFC - Champions League',
|
|
1160
|
+
scoringType: ScoringType.GOALS,
|
|
1161
|
+
matchResolveType: MatchResolveType.REGULAR,
|
|
1162
|
+
periodType: PeriodType.HALF,
|
|
1163
|
+
isDrawAvailable: true,
|
|
1164
|
+
},
|
|
1155
1165
|
[League.EUROCUP]: {
|
|
1156
1166
|
sport: Sport.BASKETBALL,
|
|
1157
1167
|
id: League.EUROCUP,
|
|
@@ -1163,6 +1173,66 @@ export const LeagueMap = {
|
|
|
1163
1173
|
periodType: PeriodType.QUARTER,
|
|
1164
1174
|
isDrawAvailable: false,
|
|
1165
1175
|
},
|
|
1176
|
+
[League.SPAIN_LIGA_ACB]: {
|
|
1177
|
+
sport: Sport.BASKETBALL,
|
|
1178
|
+
id: League.SPAIN_LIGA_ACB,
|
|
1179
|
+
label: 'Spain Liga ACB',
|
|
1180
|
+
opticOddsName: 'Spain - Liga ACB',
|
|
1181
|
+
scoringType: ScoringType.POINTS,
|
|
1182
|
+
matchResolveType: MatchResolveType.OVERTIME,
|
|
1183
|
+
periodType: PeriodType.QUARTER,
|
|
1184
|
+
isDrawAvailable: false,
|
|
1185
|
+
},
|
|
1186
|
+
[League.ITALY_LEGA_BASKET_SERIE_A]: {
|
|
1187
|
+
sport: Sport.BASKETBALL,
|
|
1188
|
+
id: League.ITALY_LEGA_BASKET_SERIE_A,
|
|
1189
|
+
label: 'Italy Lega Basket Serie A',
|
|
1190
|
+
opticOddsName: 'Italy - Lega Basket Serie A',
|
|
1191
|
+
scoringType: ScoringType.POINTS,
|
|
1192
|
+
matchResolveType: MatchResolveType.OVERTIME,
|
|
1193
|
+
periodType: PeriodType.QUARTER,
|
|
1194
|
+
isDrawAvailable: false,
|
|
1195
|
+
},
|
|
1196
|
+
[League.GERMANY_BBL]: {
|
|
1197
|
+
sport: Sport.BASKETBALL,
|
|
1198
|
+
id: League.GERMANY_BBL,
|
|
1199
|
+
label: 'Germany BBL',
|
|
1200
|
+
opticOddsName: 'Germany - BBL',
|
|
1201
|
+
scoringType: ScoringType.POINTS,
|
|
1202
|
+
matchResolveType: MatchResolveType.OVERTIME,
|
|
1203
|
+
periodType: PeriodType.QUARTER,
|
|
1204
|
+
isDrawAvailable: false,
|
|
1205
|
+
},
|
|
1206
|
+
[League.FRANCE_LNB_PRO_A]: {
|
|
1207
|
+
sport: Sport.BASKETBALL,
|
|
1208
|
+
id: League.FRANCE_LNB_PRO_A,
|
|
1209
|
+
label: 'France LNB Pro A',
|
|
1210
|
+
opticOddsName: 'France - LNB Pro A',
|
|
1211
|
+
scoringType: ScoringType.POINTS,
|
|
1212
|
+
matchResolveType: MatchResolveType.OVERTIME,
|
|
1213
|
+
periodType: PeriodType.QUARTER,
|
|
1214
|
+
isDrawAvailable: false,
|
|
1215
|
+
},
|
|
1216
|
+
[League.CHINA_CBA]: {
|
|
1217
|
+
sport: Sport.BASKETBALL,
|
|
1218
|
+
id: League.CHINA_CBA,
|
|
1219
|
+
label: 'China CBA',
|
|
1220
|
+
opticOddsName: 'China - CBA',
|
|
1221
|
+
scoringType: ScoringType.POINTS,
|
|
1222
|
+
matchResolveType: MatchResolveType.OVERTIME,
|
|
1223
|
+
periodType: PeriodType.QUARTER,
|
|
1224
|
+
isDrawAvailable: false,
|
|
1225
|
+
},
|
|
1226
|
+
[League.AUSTRALIA_NBL]: {
|
|
1227
|
+
sport: Sport.BASKETBALL,
|
|
1228
|
+
id: League.AUSTRALIA_NBL,
|
|
1229
|
+
label: 'Australia NBL',
|
|
1230
|
+
opticOddsName: 'Australia - NBL',
|
|
1231
|
+
scoringType: ScoringType.POINTS,
|
|
1232
|
+
matchResolveType: MatchResolveType.OVERTIME,
|
|
1233
|
+
periodType: PeriodType.QUARTER,
|
|
1234
|
+
isDrawAvailable: false,
|
|
1235
|
+
},
|
|
1166
1236
|
[League.NFL_FUTURES]: {
|
|
1167
1237
|
sport: Sport.FUTURES,
|
|
1168
1238
|
id: League.NFL_FUTURES,
|
package/src/enums/sports.ts
CHANGED
|
@@ -128,7 +128,14 @@ export enum League {
|
|
|
128
128
|
ENGLAND_EFL_CUP = 20125,
|
|
129
129
|
ENGLAND_LEGAUE_1 = 20126,
|
|
130
130
|
URUGUAY_PRIMERA_DIVISION = 20127,
|
|
131
|
+
AFC_CHAMPIONS_LEAGUE = 20128,
|
|
131
132
|
EUROCUP = 20200,
|
|
133
|
+
SPAIN_LIGA_ACB = 20201,
|
|
134
|
+
ITALY_LEGA_BASKET_SERIE_A = 20202,
|
|
135
|
+
GERMANY_BBL = 20203,
|
|
136
|
+
FRANCE_LNB_PRO_A = 20204,
|
|
137
|
+
CHINA_CBA = 20205,
|
|
138
|
+
AUSTRALIA_NBL = 20206,
|
|
132
139
|
NFL_FUTURES = 30002,
|
|
133
140
|
NBA_FUTURES = 30004,
|
|
134
141
|
EPL_FUTURES = 30011,
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export type OddsObject = {
|
|
2
|
+
gameId: string;
|
|
3
|
+
startDate: number;
|
|
4
|
+
homeTeam: string;
|
|
5
|
+
awayTeam: string;
|
|
6
|
+
isLive: boolean;
|
|
7
|
+
status: string;
|
|
8
|
+
sport: string;
|
|
9
|
+
league: string;
|
|
10
|
+
odds: [
|
|
11
|
+
{
|
|
12
|
+
id: string;
|
|
13
|
+
sportsBookName: string;
|
|
14
|
+
name: string;
|
|
15
|
+
price: number;
|
|
16
|
+
timestamp: number;
|
|
17
|
+
points: number;
|
|
18
|
+
isMain: boolean;
|
|
19
|
+
isLive: boolean;
|
|
20
|
+
marketName: string;
|
|
21
|
+
playerId: string;
|
|
22
|
+
selection: string;
|
|
23
|
+
selectionLine: string;
|
|
24
|
+
}
|
|
25
|
+
];
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export type ScoresObject = {
|
|
29
|
+
gameId: string;
|
|
30
|
+
sport: string;
|
|
31
|
+
league: string;
|
|
32
|
+
status: string;
|
|
33
|
+
isLive: string;
|
|
34
|
+
clock: string;
|
|
35
|
+
period: string;
|
|
36
|
+
homeTeam: string;
|
|
37
|
+
awayTeam: string;
|
|
38
|
+
homeTotal: string;
|
|
39
|
+
awayTotal: string;
|
|
40
|
+
homePeriod1: string;
|
|
41
|
+
awayPeriod1: string;
|
|
42
|
+
homePeriod2: string;
|
|
43
|
+
awayPeriod2: string;
|
|
44
|
+
homePeriod3: string;
|
|
45
|
+
awayPeriod3: string;
|
|
46
|
+
homePeriod4: string;
|
|
47
|
+
awayPeriod4: string;
|
|
48
|
+
homePeriod5: string;
|
|
49
|
+
awayPeriod5: string;
|
|
50
|
+
};
|
package/src/utils/bookmakers.ts
CHANGED
|
@@ -78,7 +78,7 @@ export const checkOddsFromBookmakers = (
|
|
|
78
78
|
|
|
79
79
|
// If none of the bookmakers have zero odds, check implied odds percentage difference
|
|
80
80
|
const hasLargeImpliedPercentageDifference = arrayOfBookmakers.slice(1).some((bookmakerId) => {
|
|
81
|
-
const line = oddsMap
|
|
81
|
+
const line = oddsMap.get(bookmakerId);
|
|
82
82
|
if (line) {
|
|
83
83
|
const otherHomeOdd = line.homeOdds;
|
|
84
84
|
const otherAwayOdd = line.awayOdds;
|
|
@@ -152,6 +152,5 @@ export const checkOddsFromBookmakers = (
|
|
|
152
152
|
|
|
153
153
|
export const calculateImpliedOddsDifference = (impliedOddsA: number, impliedOddsB: number): number => {
|
|
154
154
|
const percentageDifference = (Math.abs(impliedOddsA - impliedOddsB) / impliedOddsA) * 100;
|
|
155
|
-
console.log('% diff: ' + percentageDifference);
|
|
156
155
|
return percentageDifference;
|
|
157
156
|
};
|
package/src/utils/constraints.ts
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { League, Sport } from '../enums/sports';
|
|
2
|
+
import { ScoresObject } from '../types/odds';
|
|
2
3
|
import { getLeagueSport } from './sports';
|
|
3
4
|
|
|
4
|
-
export const checkGameContraints = (opticOddsScoresApiResponse, marketLeague: League, constraintsMap) => {
|
|
5
|
-
const
|
|
6
|
-
const
|
|
5
|
+
export const checkGameContraints = (opticOddsScoresApiResponse: ScoresObject, marketLeague: League, constraintsMap) => {
|
|
6
|
+
const marketSport = getLeagueSport(marketLeague);
|
|
7
|
+
const homeTeam = opticOddsScoresApiResponse.homeTeam;
|
|
8
|
+
const currentScoreHome = opticOddsScoresApiResponse.homeTotal;
|
|
9
|
+
const awayTeam = opticOddsScoresApiResponse.awayTeam;
|
|
10
|
+
const currentScoreAway = opticOddsScoresApiResponse.awayTotal;
|
|
11
|
+
|
|
7
12
|
const currentClock = opticOddsScoresApiResponse.clock;
|
|
8
13
|
const currentPeriod = opticOddsScoresApiResponse.period;
|
|
9
14
|
const currentGameStatus = opticOddsScoresApiResponse.status;
|
|
10
|
-
const homeTeam = opticOddsScoresApiResponse.home_team;
|
|
11
|
-
const awayTeam = opticOddsScoresApiResponse.away_team;
|
|
12
15
|
const currentPeriodNumber = parseInt(currentPeriod);
|
|
13
|
-
const marketSport = getLeagueSport(marketLeague);
|
|
14
16
|
|
|
15
17
|
if (currentGameStatus.toLowerCase() == 'completed') {
|
|
16
18
|
return {
|
|
@@ -105,7 +107,7 @@ export const allowSoccerGame = (homeTeam, awayTeam, currentClock, currentPeriod,
|
|
|
105
107
|
};
|
|
106
108
|
|
|
107
109
|
export const allowGameSportWithResultConstraint = (
|
|
108
|
-
opticOddsScoresApiResponse,
|
|
110
|
+
opticOddsScoresApiResponse: ScoresObject,
|
|
109
111
|
homeTeam,
|
|
110
112
|
awayTeam,
|
|
111
113
|
currentPeriod,
|
|
@@ -174,29 +176,29 @@ export const allowGameSportWithResultConstraint = (
|
|
|
174
176
|
};
|
|
175
177
|
};
|
|
176
178
|
|
|
177
|
-
export const fetchResultInCurrentSet = (currentSet: number, opticOddsScoresApiResponse) => {
|
|
179
|
+
export const fetchResultInCurrentSet = (currentSet: number, opticOddsScoresApiResponse: ScoresObject) => {
|
|
178
180
|
let currentHomeGameScore = 0;
|
|
179
181
|
let currentAwayGameScore = 0;
|
|
180
182
|
switch (currentSet) {
|
|
181
183
|
case 1:
|
|
182
|
-
currentHomeGameScore = Number(opticOddsScoresApiResponse.
|
|
183
|
-
currentAwayGameScore = Number(opticOddsScoresApiResponse.
|
|
184
|
+
currentHomeGameScore = Number(opticOddsScoresApiResponse.homePeriod1);
|
|
185
|
+
currentAwayGameScore = Number(opticOddsScoresApiResponse.awayPeriod1);
|
|
184
186
|
break;
|
|
185
187
|
case 2:
|
|
186
|
-
currentHomeGameScore = Number(opticOddsScoresApiResponse.
|
|
187
|
-
currentAwayGameScore = Number(opticOddsScoresApiResponse.
|
|
188
|
+
currentHomeGameScore = Number(opticOddsScoresApiResponse.homePeriod2);
|
|
189
|
+
currentAwayGameScore = Number(opticOddsScoresApiResponse.awayPeriod2);
|
|
188
190
|
break;
|
|
189
191
|
case 3:
|
|
190
|
-
currentHomeGameScore = Number(opticOddsScoresApiResponse.
|
|
191
|
-
currentAwayGameScore = Number(opticOddsScoresApiResponse.
|
|
192
|
+
currentHomeGameScore = Number(opticOddsScoresApiResponse.homePeriod3);
|
|
193
|
+
currentAwayGameScore = Number(opticOddsScoresApiResponse.awayPeriod3);
|
|
192
194
|
break;
|
|
193
195
|
case 4:
|
|
194
|
-
currentHomeGameScore = Number(opticOddsScoresApiResponse.
|
|
195
|
-
currentAwayGameScore = Number(opticOddsScoresApiResponse.
|
|
196
|
+
currentHomeGameScore = Number(opticOddsScoresApiResponse.homePeriod4);
|
|
197
|
+
currentAwayGameScore = Number(opticOddsScoresApiResponse.awayPeriod4);
|
|
196
198
|
break;
|
|
197
199
|
case 5:
|
|
198
|
-
currentHomeGameScore = Number(opticOddsScoresApiResponse.
|
|
199
|
-
currentAwayGameScore = Number(opticOddsScoresApiResponse.
|
|
200
|
+
currentHomeGameScore = Number(opticOddsScoresApiResponse.homePeriod5);
|
|
201
|
+
currentAwayGameScore = Number(opticOddsScoresApiResponse.awayPeriod5);
|
|
200
202
|
break;
|
|
201
203
|
}
|
|
202
204
|
return { home: currentHomeGameScore, away: currentAwayGameScore };
|
package/src/utils/markets.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as oddslib from 'oddslib';
|
|
2
2
|
import { createChildMarkets, getParentOdds } from './odds';
|
|
3
|
+
import { OddsObject } from '../types/odds';
|
|
3
4
|
/**
|
|
4
5
|
* Processes a single sports event. This function maps event data to a specific format,
|
|
5
6
|
* filters invalid events, and optionally fetches player properties if the sport supports it.
|
|
@@ -16,14 +17,14 @@ import { createChildMarkets, getParentOdds } from './odds';
|
|
|
16
17
|
* @returns {Promise<Object|null>} A promise that resolves to the processed event object or null if the event is invalid or mapping fails.
|
|
17
18
|
*/
|
|
18
19
|
export const processMarket = (
|
|
19
|
-
market,
|
|
20
|
-
apiResponseWithOdds,
|
|
21
|
-
liveOddsProviders,
|
|
22
|
-
spreadData,
|
|
23
|
-
isDrawAvailable,
|
|
24
|
-
defaultSpreadForLiveMarkets,
|
|
25
|
-
maxPercentageDiffBetwenOdds,
|
|
26
|
-
leagueMap
|
|
20
|
+
market: any,
|
|
21
|
+
apiResponseWithOdds: OddsObject,
|
|
22
|
+
liveOddsProviders: any,
|
|
23
|
+
spreadData: any,
|
|
24
|
+
isDrawAvailable: any,
|
|
25
|
+
defaultSpreadForLiveMarkets: any,
|
|
26
|
+
maxPercentageDiffBetwenOdds: any,
|
|
27
|
+
leagueMap: any
|
|
27
28
|
) => {
|
|
28
29
|
const sportSpreadData = spreadData.filter((data) => data.sportId === String(market.leagueId));
|
|
29
30
|
|
|
@@ -49,15 +50,22 @@ export const processMarket = (
|
|
|
49
50
|
market.errorMessage = moneylineOdds.errorMessage;
|
|
50
51
|
} else {
|
|
51
52
|
// Pack market odds for UI
|
|
52
|
-
market.odds = moneylineOdds.odds
|
|
53
|
-
|
|
54
|
-
.map((_odd) => {
|
|
53
|
+
market.odds = moneylineOdds.odds.map((_odd) => {
|
|
54
|
+
if (_odd != 0) {
|
|
55
55
|
return {
|
|
56
56
|
american: oddslib.from('impliedProbability', _odd).to('moneyline'),
|
|
57
57
|
decimal: oddslib.from('impliedProbability', _odd).to('decimal'),
|
|
58
58
|
normalizedImplied: _odd,
|
|
59
59
|
};
|
|
60
|
-
}
|
|
60
|
+
} else {
|
|
61
|
+
market.errorMessage = 'Bad odds after spread adjustment';
|
|
62
|
+
return {
|
|
63
|
+
american: 0,
|
|
64
|
+
decimal: 0,
|
|
65
|
+
normalizedImplied: 0,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
});
|
|
61
69
|
}
|
|
62
70
|
|
|
63
71
|
const childMarkets = createChildMarkets(
|
package/src/utils/odds.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { adjustSpreadOnOdds, getSpreadData } from './spread';
|
|
|
5
5
|
import { MoneylineTypes } from '../enums/sports';
|
|
6
6
|
import { ChildMarket, LeagueInfo } from '../types/sports';
|
|
7
7
|
import { getLeagueInfo } from './sports';
|
|
8
|
+
import { OddsObject } from '../types/odds';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Converts a given odds value from one format to another.
|
|
@@ -55,8 +56,8 @@ export const filterOddsByMarketNameTeamNameBookmaker = (
|
|
|
55
56
|
const homeTeamOddsObject = oddsArray.filter((odd) => {
|
|
56
57
|
return (
|
|
57
58
|
odd &&
|
|
58
|
-
odd.
|
|
59
|
-
odd.
|
|
59
|
+
odd.marketName.toLowerCase() === marketName.toLowerCase() &&
|
|
60
|
+
odd.sportsBookName.toLowerCase() == oddsProvider.toLowerCase() &&
|
|
60
61
|
odd.selection.toLowerCase() === commonData.homeTeam.toLowerCase()
|
|
61
62
|
);
|
|
62
63
|
});
|
|
@@ -68,8 +69,8 @@ export const filterOddsByMarketNameTeamNameBookmaker = (
|
|
|
68
69
|
const awayTeamOddsObject = oddsArray.filter(
|
|
69
70
|
(odd) =>
|
|
70
71
|
odd &&
|
|
71
|
-
odd.
|
|
72
|
-
odd.
|
|
72
|
+
odd.marketName.toLowerCase() === marketName.toLowerCase() &&
|
|
73
|
+
odd.sportsBookName.toLowerCase() == oddsProvider.toLowerCase() &&
|
|
73
74
|
odd.selection.toLowerCase() === commonData.awayTeam.toLowerCase()
|
|
74
75
|
);
|
|
75
76
|
|
|
@@ -82,8 +83,8 @@ export const filterOddsByMarketNameTeamNameBookmaker = (
|
|
|
82
83
|
const drawOddsObject = oddsArray.filter(
|
|
83
84
|
(odd) =>
|
|
84
85
|
odd &&
|
|
85
|
-
odd.
|
|
86
|
-
odd.
|
|
86
|
+
odd.marketName.toLowerCase() === marketName.toLowerCase() &&
|
|
87
|
+
odd.sportsBookName.toLowerCase() == oddsProvider.toLowerCase() &&
|
|
87
88
|
odd.selection.toLowerCase() === DRAW.toLowerCase()
|
|
88
89
|
);
|
|
89
90
|
|
|
@@ -122,7 +123,7 @@ export const getParentOdds = (
|
|
|
122
123
|
defaultSpreadForLiveMarkets,
|
|
123
124
|
maxPercentageDiffBetwenOdds
|
|
124
125
|
) => {
|
|
125
|
-
const commonData = { homeTeam: oddsApiObject.
|
|
126
|
+
const commonData = { homeTeam: oddsApiObject.homeTeam, awayTeam: oddsApiObject.awayTeam };
|
|
126
127
|
|
|
127
128
|
// EXTRACTING ODDS FROM THE RESPONSE PER MARKET NAME AND BOOKMAKER
|
|
128
129
|
const moneylineOddsMap = filterOddsByMarketNameTeamNameBookmaker(
|
|
@@ -176,7 +177,7 @@ export const getParentOdds = (
|
|
|
176
177
|
* @returns {Array} The child markets.
|
|
177
178
|
*/
|
|
178
179
|
export const createChildMarkets: (
|
|
179
|
-
apiResponseWithOdds:
|
|
180
|
+
apiResponseWithOdds: OddsObject,
|
|
180
181
|
spreadDataForSport: any,
|
|
181
182
|
leagueId: number,
|
|
182
183
|
liveOddsProviders: any,
|
|
@@ -193,8 +194,8 @@ export const createChildMarkets: (
|
|
|
193
194
|
const [spreadOdds, totalOdds, childMarkets]: any[] = [[], [], []];
|
|
194
195
|
const leagueInfo = getLeagueInfo(leagueId, leagueMap);
|
|
195
196
|
const commonData = {
|
|
196
|
-
homeTeam: apiResponseWithOdds.
|
|
197
|
-
awayTeam: apiResponseWithOdds.
|
|
197
|
+
homeTeam: apiResponseWithOdds.homeTeam,
|
|
198
|
+
awayTeam: apiResponseWithOdds.awayTeam,
|
|
198
199
|
};
|
|
199
200
|
if (leagueInfo.length > 0) {
|
|
200
201
|
// TODO ADD ODDS COMPARISON BETWEEN BOOKMAKERS
|
|
@@ -204,7 +205,7 @@ export const createChildMarkets: (
|
|
|
204
205
|
liveOddsProviders[0]
|
|
205
206
|
);
|
|
206
207
|
|
|
207
|
-
const allValidOdds = allChildOdds.filter((odd) => odd && Math.abs(odd.
|
|
208
|
+
const allValidOdds = allChildOdds.filter((odd) => odd && Math.abs(Number(odd.points) % 1) === 0.5) as any;
|
|
208
209
|
|
|
209
210
|
allValidOdds.forEach((odd) => {
|
|
210
211
|
if (odd.type === 'Total') {
|
|
@@ -270,13 +271,15 @@ export const filterOddsByMarketNameBookmaker = (oddsArray, leagueInfos: LeagueIn
|
|
|
270
271
|
return oddsArray
|
|
271
272
|
.filter(
|
|
272
273
|
(odd) =>
|
|
273
|
-
allChildMarketsTypes.includes(odd.
|
|
274
|
-
odd.
|
|
274
|
+
allChildMarketsTypes.includes(odd.marketName.toLowerCase()) &&
|
|
275
|
+
odd.sportsBookName.toLowerCase() == oddsProvider.toLowerCase()
|
|
275
276
|
)
|
|
276
277
|
.map((odd) => {
|
|
277
278
|
return {
|
|
278
279
|
...odd,
|
|
279
|
-
...leagueInfos.find(
|
|
280
|
+
...leagueInfos.find(
|
|
281
|
+
(leagueInfo) => leagueInfo.marketName.toLowerCase() === odd.marketName.toLowerCase()
|
|
282
|
+
), // using .find() for team totals means that we will always assign 10017 as typeID at this point
|
|
280
283
|
};
|
|
281
284
|
});
|
|
282
285
|
};
|
|
@@ -291,10 +294,10 @@ export const filterOddsByMarketNameBookmaker = (oddsArray, leagueInfos: LeagueIn
|
|
|
291
294
|
export const groupAndFormatSpreadOdds = (oddsArray, commonData) => {
|
|
292
295
|
// Group odds by their selection points and selection
|
|
293
296
|
const groupedOdds = oddsArray.reduce((acc: any, odd: any) => {
|
|
294
|
-
const {
|
|
297
|
+
const { points, price, selection, typeId, sportId, type } = odd;
|
|
295
298
|
const isHomeTeam = selection === commonData.homeTeam;
|
|
296
299
|
|
|
297
|
-
const key = isHomeTeam ?
|
|
300
|
+
const key = isHomeTeam ? points : -points;
|
|
298
301
|
|
|
299
302
|
if (!acc[key]) {
|
|
300
303
|
acc[key] = { home: null, away: null, typeId: null, sportId: null };
|
|
@@ -340,13 +343,13 @@ export const groupAndFormatTotalOdds = (oddsArray, commonData) => {
|
|
|
340
343
|
// Group odds by their selection points and selection
|
|
341
344
|
const groupedOdds = oddsArray.reduce((acc, odd) => {
|
|
342
345
|
if (odd) {
|
|
343
|
-
const key = `${odd.selection}_${odd.
|
|
346
|
+
const key = `${odd.selection}_${odd.points}`;
|
|
344
347
|
if (!acc[key]) {
|
|
345
348
|
acc[key] = { over: null, under: null };
|
|
346
349
|
}
|
|
347
|
-
if (odd.
|
|
350
|
+
if (odd.selectionLine === 'over') {
|
|
348
351
|
acc[key].over = odd.price;
|
|
349
|
-
} else if (odd.
|
|
352
|
+
} else if (odd.selectionLine === 'under') {
|
|
350
353
|
acc[key].under = odd.price;
|
|
351
354
|
}
|
|
352
355
|
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export const mapOpticOddsApiFixtures = (fixturesData) =>
|
|
2
|
+
fixturesData.map((fixtureData) => ({
|
|
3
|
+
gameId: fixtureData.id, // fixture_id
|
|
4
|
+
startDate: fixtureData.start_date,
|
|
5
|
+
homeTeam: fixtureData.home_team_display,
|
|
6
|
+
awayTeam: fixtureData.away_team_display,
|
|
7
|
+
}));
|
|
8
|
+
|
|
9
|
+
export const mapOpticOddsApiResults = (resultsData) =>
|
|
10
|
+
resultsData.map((resultData: any) => ({
|
|
11
|
+
gameId: resultData.fixture.id, // fixture_id
|
|
12
|
+
sport: resultData.sport.name,
|
|
13
|
+
league: resultData.league.name.toLowerCase(),
|
|
14
|
+
status: resultData.fixture.status.toLowerCase(),
|
|
15
|
+
isLive: resultData.fixture.is_live,
|
|
16
|
+
clock: resultData.in_play.clock,
|
|
17
|
+
period: resultData.in_play.period ? resultData.in_play.period.toLowerCase() : resultData.in_play.period,
|
|
18
|
+
homeTeam: resultData.fixture.home_team_display,
|
|
19
|
+
awayTeam: resultData.fixture.away_team_display,
|
|
20
|
+
homeTotal: resultData.scores.home.total,
|
|
21
|
+
awayTotal: resultData.scores.away.total,
|
|
22
|
+
...mapScorePeriods(resultData.scores.home.periods, 'home'),
|
|
23
|
+
...mapScorePeriods(resultData.scores.away.periods, 'away'),
|
|
24
|
+
}));
|
|
25
|
+
|
|
26
|
+
export const mapOpticOddsApiFixtureOdds = (oddsDataArray) =>
|
|
27
|
+
oddsDataArray.map((oddsData) => ({
|
|
28
|
+
gameId: oddsData.id, // fixture_id
|
|
29
|
+
startDate: oddsData.start_date,
|
|
30
|
+
homeTeam: oddsData.home_team_display,
|
|
31
|
+
awayTeam: oddsData.away_team_display,
|
|
32
|
+
isLive: oddsData.is_live,
|
|
33
|
+
status: oddsData.status,
|
|
34
|
+
sport: oddsData.sport.id,
|
|
35
|
+
league: oddsData.league.name,
|
|
36
|
+
odds: oddsData.odds.map((oddsObj) => ({
|
|
37
|
+
id: oddsObj.id, // 39920-20584-2024-35:draftkings:2nd_set_moneyline:francisco_comesana
|
|
38
|
+
sportsBookName: oddsObj.sportsbook,
|
|
39
|
+
name: oddsObj.name,
|
|
40
|
+
price: oddsObj.price,
|
|
41
|
+
timestamp: oddsObj.timestamp,
|
|
42
|
+
points: oddsObj.points,
|
|
43
|
+
isMain: oddsObj.is_main,
|
|
44
|
+
isLive: oddsData.is_live,
|
|
45
|
+
marketName: oddsObj.market.toLowerCase(),
|
|
46
|
+
playerId: oddsObj.player_id,
|
|
47
|
+
selection: oddsObj.selection,
|
|
48
|
+
selectionLine: oddsObj.selection_line,
|
|
49
|
+
})),
|
|
50
|
+
}));
|
|
51
|
+
|
|
52
|
+
const mapScorePeriods = (periods, homeAwayType) =>
|
|
53
|
+
Object.values(periods).reduce(
|
|
54
|
+
(acc: any, periodValue, index) => ({
|
|
55
|
+
...acc,
|
|
56
|
+
[`${homeAwayType}Period${index + 1}`]: periodValue,
|
|
57
|
+
}),
|
|
58
|
+
{}
|
|
59
|
+
) as any;
|
package/src/utils/sports.ts
CHANGED
|
@@ -22,19 +22,24 @@ export const getLeagueIsDrawAvailable = (league: League) => {
|
|
|
22
22
|
return leagueInfo ? leagueInfo.isDrawAvailable : false;
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
export const getLiveSupportedLeagues = (
|
|
26
|
-
|
|
25
|
+
export const getLiveSupportedLeagues = (leagueInfoArray: LeagueInfo[]) => {
|
|
26
|
+
const uniqueId = new Set();
|
|
27
|
+
leagueInfoArray
|
|
28
|
+
.filter((leagueInfo) => leagueInfo.enabled === 'true')
|
|
29
|
+
.map((league) => uniqueId.add(Number(league.sportId)));
|
|
30
|
+
return Array.from(uniqueId);
|
|
27
31
|
};
|
|
28
|
-
export const getBetTypesForLeague = (league: League,
|
|
29
|
-
const
|
|
32
|
+
export const getBetTypesForLeague = (league: League, leagueInfoArray: LeagueInfo[]) => {
|
|
33
|
+
const uniqueMarketNames = new Set();
|
|
34
|
+
leagueInfoArray
|
|
30
35
|
.filter((leagueInfo) => Number(leagueInfo.sportId) === Number(league) && leagueInfo.enabled === 'true')
|
|
31
|
-
.map((leagueInfo) => leagueInfo.marketName);
|
|
36
|
+
.map((leagueInfo) => uniqueMarketNames.add(leagueInfo.marketName));
|
|
32
37
|
|
|
33
|
-
return
|
|
38
|
+
return Array.from(uniqueMarketNames);
|
|
34
39
|
};
|
|
35
40
|
|
|
36
|
-
export const getLeagueInfo = (league: League,
|
|
37
|
-
const leagueInfos =
|
|
41
|
+
export const getLeagueInfo = (league: League, leagueInfoArray: LeagueInfo[]) => {
|
|
42
|
+
const leagueInfos = leagueInfoArray.filter((leagueInfo) => Number(leagueInfo.sportId) === league);
|
|
38
43
|
return leagueInfos;
|
|
39
44
|
};
|
|
40
45
|
|
|
@@ -48,8 +53,8 @@ export const getLeaguePeriodType = (league: League) => {
|
|
|
48
53
|
return leagueInfo ? leagueInfo.periodType : '';
|
|
49
54
|
};
|
|
50
55
|
|
|
51
|
-
export const getLeagueSpreadTypes = (league: League,
|
|
52
|
-
const betTypes =
|
|
56
|
+
export const getLeagueSpreadTypes = (league: League, leagueInfoArray: LeagueInfo[]) => {
|
|
57
|
+
const betTypes = leagueInfoArray
|
|
53
58
|
.filter(
|
|
54
59
|
(leagueInfo) =>
|
|
55
60
|
Number(leagueInfo.sportId) === Number(league) &&
|
|
@@ -61,8 +66,8 @@ export const getLeagueSpreadTypes = (league: League, leagueMap: LeagueInfo[]) =>
|
|
|
61
66
|
return betTypes;
|
|
62
67
|
};
|
|
63
68
|
|
|
64
|
-
export const getLeagueTotalTypes = (league: League,
|
|
65
|
-
const betTypes =
|
|
69
|
+
export const getLeagueTotalTypes = (league: League, leagueInfoArray: LeagueInfo[]) => {
|
|
70
|
+
const betTypes = leagueInfoArray
|
|
66
71
|
.filter(
|
|
67
72
|
(leagueInfo) =>
|
|
68
73
|
Number(leagueInfo.sportId) === Number(league) &&
|