overtime-live-trading-utils 0.0.129 → 0.0.130

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.ts CHANGED
@@ -13,4 +13,3 @@ export * from './src/constants/common';
13
13
  export * from './src/constants/sports';
14
14
 
15
15
  export * from './src/enums/sports';
16
- export * from './src/enums/statuses';
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:()=>U,DRAW:()=>k,LEAGUES_NO_FORMAL_HOME_AWAY:()=>M,LEAGUES_NO_LIVE_CONSTRAINTS:()=>C,LIVE_TYPE_ID_BASE:()=>K,League:()=>S,LeagueIdMapEnetpulse:()=>G,LeagueIdMapOpticOdds:()=>y,LeagueIdMapRundown:()=>m,LeagueMap:()=>c,MIN_ODDS_FOR_DIFF_CHECKING:()=>Q,MULTIPLIER_100:()=>z,MatchResolveType:()=>T,MoneylineTypes:()=>t,PeriodType:()=>N,Provider:()=>I,ScoringType:()=>s,Sport:()=>L,SpreadTypes:()=>p,TAG_CHILD_SPREAD:()=>X,TAG_CHILD_TOTALS:()=>j,TotalTypes:()=>l,UFC_LEAGUE_IDS:()=>u,ZERO:()=>W,adjustSpreadOnOdds:()=>x,allowGameSportWithPeriodConstraint:()=>se,allowGameSportWithResultConstraint:()=>Ne,allowSoccerGame:()=>Te,calculateImpliedOddsDifference:()=>P,checkGameContraints:()=>le,checkOddsFromBookmakers:()=>R,createSpreadChildMarkets:()=>te,createTotalChildMarkets:()=>pe,fetchResultInCurrentSet:()=>Ie,filterOddsByMarketNameBookmaker:()=>ae,filterOddsByMarketNameTeamNameBookmaker:()=>ee,formatSpreadOdds:()=>Ee,gamesDatesMatching:()=>Y,getBetTypesForLeague:()=>V,getBookmakersArray:()=>d,getLeagueIsDrawAvailable:()=>b,getLeagueLabel:()=>D,getLeagueOpticOddsName:()=>h,getLeaguePeriodType:()=>B,getLeagueProvider:()=>g,getLeagueSport:()=>v,getLeagueSpreadTypes:()=>f,getLeagueTotalTypes:()=>w,getLiveSupportedLeagues:()=>F,getParentOdds:()=>re,getSpreadData:()=>J,groupAndFormatSpreadOdds:()=>ie,groupOddsBySelectionAndPoints:()=>Ae,processMarket:()=>Le,processTotalOdds:()=>oe,statusCodes:()=>Z,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 S,t=A-L;for(S=t;S>0&&o%2==0;S--)o/=2;for(S=t;S>0&&o%5==0;S--)o/=5;return o}(e),A=e,_=Math.pow(10,-r)/2,L=2;L<1e3;L++){var S=Math.floor(A);if(E[L]=S*E[L-1]+E[L-2],Math.abs(E[L])>o)return;if(i[L]=S*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-S)}}(this.decimalValue-1,e.precision||12)}},malay:{from:function(e){if((e=parseFloat(e))<=-1||e>1)throw new Error("Outside valid range.");return e<0&&(e=-1/e),e+1},to:function(){return this.decimalValue<=2?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,S,t,p,l,s,T,N,I,n,O=_.from,d=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 S=o.homeOdds,t=o.awayOdds,p=o.drawOdds,l=O("decimal",A).to("impliedProbability"),s=O("decimal",_).to("impliedProbability"),T=a?0:O("decimal",L).to("impliedProbability"),N=O("decimal",S).to("impliedProbability"),I=O("decimal",t).to("impliedProbability"),n=a?0:O("decimal",p).to("impliedProbability"),d=P(l,N),R=P(s,I),c=a?0:P(T,n);if(d>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 S=[];return r.forEach((function(r){return S.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.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.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"}(S||(S={})),function(e){e.MONEYLINE="Moneyline"}(t||(t={})),function(e){e.ASIAN_HANDICAP="Asian Handicap",e.GAME_SPREAD="Game Spread",e.POINT_SPREAD="Point 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={})[S.NCAAF]={sport:L.FOOTBALL,id:S.NCAAF,label:"NCAA Football",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.NFL]={sport:L.FOOTBALL,id:S.NFL,label:"NFL",opticOddsName:"NFL",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.MLB]={sport:L.BASEBALL,id:S.MLB,label:"MLB",opticOddsName:"MLB",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.INNING,isDrawAvailable:!1},n[S.NBA]={sport:L.BASKETBALL,id:S.NBA,label:"NBA",opticOddsName:"NBA",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.NCAAB]={sport:L.BASKETBALL,id:S.NCAAB,label:"NCAA Basketball",provider:I.RUNDOWN,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.NHL]={sport:L.HOCKEY,id:S.NHL,label:"NHL",opticOddsName:"NHL",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.OVERTIME,periodType:N.PERIOD,isDrawAvailable:!1},n[S.UFC]={sport:L.FIGHTING,id:S.UFC,label:"UFC",provider:I.OPTICODDS,scoringType:s.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[S.WNBA]={sport:L.BASKETBALL,id:S.WNBA,label:"WNBA",opticOddsName:"WNBA",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.MLS]={sport:L.SOCCER,id:S.MLS,label:"MLS",opticOddsName:"USA - Major League Soccer",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.EPL]={sport:L.SOCCER,id:S.EPL,label:"EPL",opticOddsName:"England - Premier League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.LIGUE_ONE]={sport:L.SOCCER,id:S.LIGUE_ONE,label:"Ligue 1",opticOddsName:"France - Ligue 1",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.BUNDESLIGA]={sport:L.SOCCER,id:S.BUNDESLIGA,label:"Bundesliga",opticOddsName:"Germany - Bundesliga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.LA_LIGA]={sport:L.SOCCER,id:S.LA_LIGA,label:"La Liga",opticOddsName:"Spain - La Liga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SERIE_A]={sport:L.SOCCER,id:S.SERIE_A,label:"Serie A",opticOddsName:"Italy - Serie A",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.UEFA_CL]={sport:L.SOCCER,id:S.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[S.UEFA_EL]={sport:L.SOCCER,id:S.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[S.FIFA_WC]={sport:L.SOCCER,id:S.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[S.J1_LEAGUE]={sport:L.SOCCER,id:S.J1_LEAGUE,label:"J1 League",opticOddsName:"Japan - J1 League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.IPL]={sport:L.CRICKET,id:S.IPL,label:"Indian Premier League",provider:I.RUNDOWN,scoringType:s.POINTS,matchResolveType:T.EMPTY,periodType:N.INNING,isDrawAvailable:!1},n[S.T20_BLAST]={sport:L.CRICKET,id:S.T20_BLAST,label:"T20 Blast",provider:I.RUNDOWN,scoringType:s.POINTS,matchResolveType:T.EMPTY,periodType:N.INNING,isDrawAvailable:!1},n[S.IIHF_WORLD_CHAMPIONSHIP]={sport:L.HOCKEY,id:S.IIHF_WORLD_CHAMPIONSHIP,label:"IIHF World Championship",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.PERIOD,isDrawAvailable:!0},n[S.COPA_AMERICA]={sport:L.SOCCER,id:S.COPA_AMERICA,label:"Copa America",opticOddsName:"CONMEBOL - Copa America",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.COPA_LIBERTADORES]={sport:L.SOCCER,id:S.COPA_LIBERTADORES,label:"Copa Libertadores",opticOddsName:"CONMEBOL - Copa Libertadores",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.UEFA_EURO]={sport:L.SOCCER,id:S.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[S.EREDIVISIE]={sport:L.SOCCER,id:S.EREDIVISIE,label:"Eredivisie",opticOddsName:"Netherlands - Eredivisie",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.PRIMEIRA_LIGA]={sport:L.SOCCER,id:S.PRIMEIRA_LIGA,label:"Primeira Liga",opticOddsName:"Portugal - Primeira Liga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SUMMER_OLYMPICS_SOCCER_WOMEN]={sport:L.SOCCER,id:S.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[S.SUMMER_OLYMPICS_SOCCER]={sport:L.SOCCER,id:S.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[S.FIFA_WC_WOMEN]={sport:L.SOCCER,id:S.FIFA_WC_WOMEN,label:"FIFA World Cup Women",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.ENGLAND_CUP]={sport:L.SOCCER,id:S.ENGLAND_CUP,label:"FA Cup",opticOddsName:"England - FA Cup",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.FRANCE_CUP]={sport:L.SOCCER,id:S.FRANCE_CUP,label:"Coupe de France",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SPAIN_CUP]={sport:L.SOCCER,id:S.SPAIN_CUP,label:"Copa del Rey",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.ITALY_CUP]={sport:L.SOCCER,id:S.ITALY_CUP,label:"Coppa Italia",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.TENNIS_WTA]={sport:L.TENNIS,id:S.TENNIS_WTA,label:"WTA Events",opticOddsName:"WTA",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[S.TENNIS_GS]={sport:L.TENNIS,id:S.TENNIS_GS,label:"Grand Slam",opticOddsName:"ATP,WTA",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[S.TENNIS_MASTERS]={sport:L.TENNIS,id:S.TENNIS_MASTERS,label:"ATP Events",opticOddsName:"ATP",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[S.SUMMER_OLYMPICS_TENNIS]={sport:L.TENNIS,id:S.SUMMER_OLYMPICS_TENNIS,label:"Olympic Games Tennis",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[S.GERMANY_CUP]={sport:L.SOCCER,id:S.GERMANY_CUP,label:"DFB Pokal",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.LIGA_MX]={sport:L.SOCCER,id:S.LIGA_MX,label:"Liga MX",opticOddsName:"Mexico - Liga MX",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.BRAZIL_1]={sport:L.SOCCER,id:S.BRAZIL_1,label:"Serie A",opticOddsName:"Brazil - Serie A",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.UEFA_EURO_U21]={sport:L.SOCCER,id:S.UEFA_EURO_U21,label:"UEFA EURO U21",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.FIFA_WORLD_CUP_U20]={sport:L.SOCCER,id:S.FIFA_WORLD_CUP_U20,label:"FIFA World Cup U20",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SUMMER_OLYMPICS_HANDBALL_WOMEN]={sport:L.HANDBALL,id:S.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[S.SUMMER_OLYMPICS_HANDBALL]={sport:L.HANDBALL,id:S.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[S.EUROLEAGUE]={sport:L.BASKETBALL,id:S.EUROLEAGUE,label:"Euroleague",opticOddsName:"Euroleague",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.SUMMER_OLYMPICS_BASKETBALL]={sport:L.BASKETBALL,id:S.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[S.SUMMER_OLYMPICS_BASKETBALL_WOMEN]={sport:L.BASKETBALL,id:S.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[S.FIBA_WORLD_CUP]={sport:L.BASKETBALL,id:S.FIBA_WORLD_CUP,label:"FIBA World Cup",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.FORMULA1]={sport:L.MOTOSPORT,id:S.FORMULA1,label:"Formula 1",provider:I.ENETPULSE,scoringType:s.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[S.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN]={sport:L.VOLLEYBALL,id:S.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[S.SUMMER_OLYMPICS_BEACH_VOLEYBALL]={sport:L.VOLLEYBALL,id:S.SUMMER_OLYMPICS_BEACH_VOLEYBALL,label:"Olympic Games Beach Voleyball",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[S.SUMMER_OLYMPICS_TABLE_TENNIS]={sport:L.TABLE_TENNIS,id:S.SUMMER_OLYMPICS_TABLE_TENNIS,label:"Olympic Games Table Tennis",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[S.MOTOGP]={sport:L.MOTOSPORT,id:S.MOTOGP,label:"MotoGP",provider:I.ENETPULSE,scoringType:s.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[S.SAUDI_PROFESSIONAL_LEAGUE]={sport:L.SOCCER,id:S.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[S.SUMMER_OLYMPICS_WATERPOLO]={sport:L.WATERPOLO,id:S.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[S.SUMMER_OLYMPICS_VOLEYBALL_WOMEN]={sport:L.VOLLEYBALL,id:S.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[S.SUMMER_OLYMPICS_VOLEYBALL]={sport:L.VOLLEYBALL,id:S.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[S.BOXING]={sport:L.FIGHTING,id:S.BOXING,label:"Boxing",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[S.SUMMER_OLYMPICS_RUGBY]={sport:L.RUGBY,id:S.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[S.SUMMER_OLYMPICS_RUGBY_WOMEN]={sport:L.RUGBY,id:S.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[S.SUMMER_OLYMPICS_HOCKEY_WOMEN]={sport:L.HOCKEY,id:S.SUMMER_OLYMPICS_HOCKEY_WOMEN,label:"Olympic Games Hockey Women",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.PERIOD,isDrawAvailable:!0},n[S.SUMMER_OLYMPICS_HOCKEY]={sport:L.HOCKEY,id:S.SUMMER_OLYMPICS_HOCKEY,label:"Olympic Games Hockey",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.PERIOD,isDrawAvailable:!0},n[S.UEFA_NATIONS_LEAGUE]={sport:L.SOCCER,id:S.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[S.CONCACAF_NATIONS_LEAGUE]={sport:L.SOCCER,id:S.CONCACAF_NATIONS_LEAGUE,label:"CONCACAF Nations League",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.CSGO]={sport:L.ESPORTS,id:S.CSGO,label:"CS GO",opticOddsName:"CS2",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[S.DOTA2]={sport:L.ESPORTS,id:S.DOTA2,label:"DOTA 2",opticOddsName:"Dota 2",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[S.SUMMER_OLYMPICS_BASKETBALL_3X3]={sport:L.BASKETBALL,id:S.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[S.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN]={sport:L.BASKETBALL,id:S.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[S.SUMMER_OLYMPICS_QUALIFICATION]={sport:L.BASKETBALL,id:S.SUMMER_OLYMPICS_QUALIFICATION,label:"Summer Olympics Basketball Qualification",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.LOL]={sport:L.ESPORTS,id:S.LOL,label:"LOL",opticOddsName:"League of Legends",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[S.CONMEBOL_WC_QUALIFICATIONS]={sport:L.SOCCER,id:S.CONMEBOL_WC_QUALIFICATIONS,label:"CONMEBOL WC Qualification",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.UEFA_CONFERENCE_LEAGUE]={sport:L.SOCCER,id:S.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[S.NON_TITLE_BOXING]={sport:L.FIGHTING,id:S.NON_TITLE_BOXING,label:"Boxing",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[S.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION]={sport:L.SOCCER,id:S.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[S.UEFA_EUROPA_LEAGUE_QUALIFICATION]={sport:L.SOCCER,id:S.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[S.UEFA_CONFERENCE_LEAGUE_QUALIFICATION]={sport:L.SOCCER,id:S.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[S.US_ELECTION]={sport:L.POLITICS,id:S.US_ELECTION,label:"US Election 2024",provider:I.EMPTY,scoringType:s.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[S.UEFA_SUPER_CUP]={sport:L.SOCCER,id:S.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[S.BRAZIL_CUP]={sport:L.SOCCER,id:S.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[S.ENGLAND_CHAMPIONSHIP]={sport:L.SOCCER,id:S.ENGLAND_CHAMPIONSHIP,label:"EFL Championship",opticOddsName:"England - Championship",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SCOTLAND_PREMIERSHIP]={sport:L.SOCCER,id:S.SCOTLAND_PREMIERSHIP,label:"Scotland Premiership",opticOddsName:"Scotland - Premiership",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.BELGIUM_LEAGUE]={sport:L.SOCCER,id:S.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[S.CZECH_LEAGUE]={sport:L.SOCCER,id:S.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[S.CHILE_PRIMERA]={sport:L.SOCCER,id:S.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[S.FINLAND_LEAGUE]={sport:L.SOCCER,id:S.FINLAND_LEAGUE,label:"Finland Veikkausliiga",opticOddsName:"Finland - Veikkausliiga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.ARGENTINA_PRIMERA]={sport:L.SOCCER,id:S.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[S.RUSSIA_PREMIER]={sport:L.SOCCER,id:S.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[S.TURKEY_SUPER_LEAGUE]={sport:L.SOCCER,id:S.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[S.SERBIA_SUPER_LEAGUE]={sport:L.SOCCER,id:S.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[S.GREECE_SUPER_LEAGUE]={sport:L.SOCCER,id:S.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[S.INDIA_PREMIER]={sport:L.SOCCER,id:S.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[S.CHINA_SUPER_LEAGUE]={sport:L.SOCCER,id:S.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[S.AUSTRALIA_A_LEAGUE]={sport:L.SOCCER,id:S.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[S.SWITZERLAND_SUPER_LEAGUE]={sport:L.SOCCER,id:S.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[S.BUNDESLIGA_2]={sport:L.SOCCER,id:S.BUNDESLIGA_2,label:"Bundesliga 2",opticOddsName:"Germany - Bundesliga 2",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.LA_LIGA_2]={sport:L.SOCCER,id:S.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[S.SERIE_B]={sport:L.SOCCER,id:S.SERIE_B,label:"Serie B",opticOddsName:"Italy - Serie B",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.INDIA_SUPER_LEAGUE]={sport:L.SOCCER,id:S.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[S.LIGUE_2]={sport:L.SOCCER,id:S.LIGUE_2,label:"Ligue 2",opticOddsName:"France - Ligue 2",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.AUSTRIA_BUNDESLIGA]={sport:L.SOCCER,id:S.AUSTRIA_BUNDESLIGA,label:"Austria Bundesliga",opticOddsName:"Austria - Bundesliga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.DENMARK_SUPER_LEAGUE]={sport:L.SOCCER,id:S.DENMARK_SUPER_LEAGUE,label:"Denmark Superliga",opticOddsName:"Denmark - Superliga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.POLAND_LEAGUE]={sport:L.SOCCER,id:S.POLAND_LEAGUE,label:"Poland Ekstraklasa",opticOddsName:"Poland - Ekstraklasa",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SWEDEN_LEAGUE]={sport:L.SOCCER,id:S.SWEDEN_LEAGUE,label:"Sweden Allsvenskan",opticOddsName:"Sweden - Allsvenskan",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.COLOMBIA_PRIMERA_A]={sport:L.SOCCER,id:S.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[S.ENGLAND_EFL_CUP]={sport:L.SOCCER,id:S.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[S.ENGLAND_LEGAUE_1]={sport:L.SOCCER,id:S.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[S.URUGUAY_PRIMERA_DIVISION]={sport:L.SOCCER,id:S.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[S.EUROCUP]={sport:L.BASKETBALL,id:S.EUROCUP,label:"Eurocup",opticOddsName:"Eurocup",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.GOLF_H2H]={sport:L.GOLF,id:S.GOLF_H2H,label:"Golf head-to-head",provider:I.JSONODDS,scoringType:s.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[S.GOLF_WINNER]={sport:L.GOLF,id:S.GOLF_WINNER,label:"Golf Tournament Winner",provider:I.JSONODDS,scoringType:s.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n),M=[S.CSGO,S.DOTA2,S.LOL,S.TENNIS_GS,S.TENNIS_MASTERS,S.SUMMER_OLYMPICS_TENNIS,S.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1,S.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2,S.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3,S.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4,S.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5,S.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6,S.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7,S.TENNIS_MASTERS_LIVE_MAPPING_V2_1,S.TENNIS_MASTERS_LIVE_MAPPING_V2_2,S.TENNIS_MASTERS_LIVE_MAPPING_V2_3,S.TENNIS_MASTERS_LIVE_MAPPING_V2_4,S.TENNIS_MASTERS_LIVE_MAPPING_V2_5,S.TENNIS_MASTERS_LIVE_MAPPING_V2_6,S.TENNIS_MASTERS_LIVE_MAPPING_V2_7,S.TENNIS_MASTERS_LIVE_MAPPING_V2_8,S.TENNIS_MASTERS_LIVE_MAPPING_V2_9,S.TENNIS_MASTERS_LIVE_MAPPING_V2_10,S.TENNIS_MASTERS_LIVE_MAPPING_V2_11,S.TENNIS_MASTERS_LIVE_MAPPING_V2_12,S.TENNIS_MASTERS_LIVE_MAPPING_V2_13,S.TENNIS_MASTERS_LIVE_MAPPING_V2_14,S.TENNIS_MASTERS_LIVE_MAPPING_V2_15,S.TENNIS_MASTERS_LIVE_MAPPING_V2_16,S.TENNIS_MASTERS_LIVE_MAPPING_V2_17,S.TENNIS_MASTERS_LIVE_MAPPING_V2_18,S.TENNIS_MASTERS_LIVE_MAPPING_V2_19,S.TENNIS_MASTERS_LIVE_MAPPING_V2_20,S.TENNIS_MASTERS_LIVE_MAPPING_V2_21,S.TENNIS_MASTERS_LIVE_MAPPING_V2_22,S.TENNIS_WTA_LIVE_MAPPING_V2_1,S.TENNIS_WTA_LIVE_MAPPING_V2_2,S.TENNIS_WTA_LIVE_MAPPING_V2_3,S.TENNIS_WTA_LIVE_MAPPING_V2_4,S.TENNIS_WTA_LIVE_MAPPING_V2_5,S.TENNIS_WTA_LIVE_MAPPING_V2_6,S.TENNIS_WTA_LIVE_MAPPING_V2_7],C=[S.SUMMER_OLYMPICS_RUGBY,S.SUMMER_OLYMPICS_RUGBY_WOMEN],U=[S.NCAAF,S.NFL,S.MLB,S.NBA,S.NCAAB,S.NHL,S.WNBA,S.MLS,S.IPL,S.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",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)}))},V=function(e,r){return r.filter((function(r){return Number(r.sportId)===e&&"true"===r.enabled})).map((function(e){return e.marketName}))},h=function(e){var r=c[e];return r?r.opticOddsName:void 0},B=function(e){var r=c[e];return r?r.periodType:""},f=function(e,r){return r.filter((function(r){return Number(r.sportId)===e&&"Spread"===r.type&&"true"===r.enabled})).map((function(e){return e.marketName.toLowerCase()}))},w=function(e,r){return r.filter((function(r){return Number(r.sportId)===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()),S=o.get(r.toLowerCase()),t=o.get(a.toLowerCase());if([L,S].some((function(e){return null==e})))return!1;A=M.includes(e)?L==S||L==t:L==S}if(!0!==_){var p=o.get(i.toLowerCase());if(S=o.get(r.toLowerCase()),[p,t=o.get(a.toLowerCase())].some((function(e){return null==e})))return!1;_=M.includes(e)&&p==S||p==t}return A&&_},Y=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},W=0,k="Draw",K=1e5,Q=.2,X=10001,j=10002,z=100,Z={OPEN:0,PAUSED:1,IN_PROGRESS:3,FINISHED:8,RESOLVED:10,CANCELED:255},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(e){return e===W?0:$("decimal","impliedProbability",e)},$=function(e,r,a){try{return O(e,a).to(r)}catch(e){return 0}},ee=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,S=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!==S.length&&(L=S[0].price);var t=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&&(t=p[0].price)}o.set(a.toLowerCase(),{homeOdds:A,awayOdds:L,drawOdds:t})})),o},re=function(e,r,a,E,i,o,A){var _={homeTeam:E.home_team,awayTeam:E.away_team},L=ee(E.odds,t.MONEYLINE,a,_,e),S=R(L,a,e,A,Q);if(S.errorMessage)return{odds:e?[0,0]:[0,0,0],errorMessage:S.errorMessage};var p=(e?[S.homeOdds,S.awayOdds]:[S.homeOdds,S.awayOdds,S.drawOdds]).map((function(e){return q(e)})),l=J(r,i,K,o);return{odds:p=null!==l?x(p,l.minSpread,l.targetSpread):x(p,o,0)}},ae=function(e,r,a){return e.filter((function(e){return r.includes(e.market_name.toLowerCase())&&e.sports_book_name.toLowerCase()==a.toLowerCase()}))},Ee=function(e,r,a,E,i,o){var A=[],_=e.filter((function(e){return e&&.5===Math.abs(e.selection_points%1)}));return ie(_,r).forEach((function(e){var r=e.line,_=e.odds,L=q(_[0])||W,S=q(_[1])||W,t=L===W||S===W;if(!t){var p,l=J(E,a,i,o);null!==l?(p=x([L,S],l.minSpread,l.targetSpread)).some((function(e){return e===W}))?t=!0:(L=p[0],S=p[1]):(p=x([L,S],o,0)).some((function(e){return e===W}))?t=!0:(L=p[0],S=p[1])}var s=process.env.MIN_ODDS_FOR_CHILD_MARKETS_FOR_LIVE,T=process.env.MAX_ODDS_FOR_CHILD_MARKETS_FOR_LIVE;s&&T&&(L>=s||L<=T||S>=s||S<=T)||A.push({leagueId:a,typeId:i,type:"spread",results:[],status:t?Z.PAUSED:Z.OPEN,line:r,odds:[L,S]})})),A},ie=function(e,r){var a=e.reduce((function(e,a){var E=a.selection_points,i=a.price,o=a.selection===r.homeTeam,A=o?E:-E;return e[A]||(e[A]={home:null,away:null}),o?e[A].home=i:e[A].away=i,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]}),e}),[]);return E},oe=function(e,r,a,E,i){var o=[],A=e.filter((function(e){return e&&.5===Math.abs(e.selection_points%1)})),_=Ae(A);return Object.entries(_).forEach((function(e){var A=e[0],_=e[1],L=_.over,S=_.under,t=A.split("_"),p=(t[0],t[1]),l=q(L)||W,s=q(S)||W,T=l===W||s===W;if(!T){var N,I=J(a,r,E,i);null!==I?(N=x([l,s],I.minSpread,I.targetSpread)).some((function(e){return e===W}))?T=!0:(l=N[0],s=N[1]):(N=x([l,s],i,0)).some((function(e){return e===W}))?T=!0:(l=N[0],s=N[1])}var n=process.env.MIN_ODDS_FOR_CHILD_MARKETS_FOR_LIVE,O=process.env.MAX_ODDS_FOR_CHILD_MARKETS_FOR_LIVE,d={leagueId:r,typeId:E,type:"total",results:[],status:T?Z.PAUSED:Z.OPEN,line:parseFloat(p),odds:[l,s]};n&&O&&(l>=n||l<=O||s>=n||s<=O)||o.push(d)})),o},Ae=function(e){return 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)}return e}),{})},_e=function(){return _e=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},_e.apply(this,arguments)},Le=function(e,r,a,E,i,o,A,_){var L=E.filter((function(r){return r.sportId===String(e.leagueId)})),S=re(!i,L,a,r,e.leagueId,o,A);S.errorMessage?(e.odds=e.odds.map((function(){return{american:0,decimal:0,normalizedImplied:0}})),e.errorMessage=S.errorMessage):e.odds=S.odds.filter((function(e){return 0!=e})).map((function(e){return{american:O("impliedProbability",e).to("moneyline"),decimal:O("impliedProbability",e).to("decimal"),normalizedImplied:e}}));var t=Se(e.leagueId,L,r,a,o,_).map((function(r){var a=_e(_e({},e),r);return a.odds.length>0&&(a.odds=a.odds.map((function(e){return 0==e?{american:0,decimal:0,normalizedImplied:0}:{american:O("impliedProbability",e).to("moneyline"),decimal:O("impliedProbability",e).to("decimal"),normalizedImplied:e}}))),a}));return e.childMarkets=t,e},Se=function(e,r,a,E,i,o){var A=[];return(A=A.concat(te(a,e,r,E,i,o))).concat(pe(a,e,r,E,i,o))},te=function(e,r,a,E,i,o){var A=[],_=f(r,o),L={homeTeam:e.home_team,awayTeam:e.away_team};if(_.length>0){var S=ae(e.odds,_,E[0]);if(S.length>0){var t=Ee(S,L,r,a,X,i);A.push.apply(A,t)}}else console.warn("Spread type for sport ID ".concat(r," not found."));return A},pe=function(e,r,a,E,i,o){var A=[],_=w(r,o);if(_.length>0){var L=ae(e.odds,_,E[0]);L.length>0&&A.push.apply(A,oe(L,r,a,j,i))}else console.warn("Configuration (totals) for sport ID ".concat(r," not found."));return A},le=function(e,r,a){var E=e.score_home_total,i=e.score_away_total,o=e.clock,A=e.period,_=e.status,S=e.home_team,t=e.away_team,p=parseInt(A),l=v(r);return"completed"==_.toLowerCase()?{allow:!1,message:"Blocking game ".concat(S," - ").concat(t," because it is no longer live.")}:l===L.BASKETBALL?se(S,t,p,a.get(L.BASKETBALL)):l===L.HOCKEY?se(S,t,p,a.get(L.HOCKEY)):l===L.BASEBALL?se(S,t,p,a.get(L.BASEBALL)):l===L.SOCCER?Te(S,t,o,A,a.get(L.SOCCER)):l===L.TENNIS?Ne(e,S,t,A,E,i,r,l):l===L.VOLLEYBALL?Ne(e,S,t,p,E,i,r,l):{allow:!0,message:"The sport ".concat(r," does not have constraint")}},se=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:""}},Te=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:""}},Ne=function(e,r,a,E,i,o,A,_){var t=Number(E),p=Ie(t,e),l="atp"==e.league.toLowerCase(),s={home:i,away:o};return _==L.VOLLEYBALL?ne(r,a,p,s,Oe,5==t?Re:de):A.toString().startsWith(S.TENNIS_GS)&&l?ne(r,a,p,s,Pe,Me):A.toString().startsWith(S.TENNIS_GS)&&!l||A.toString().startsWith(S.TENNIS_MASTERS)||A.toString().startsWith(S.SUMMER_OLYMPICS_TENNIS)||A.toString().startsWith(S.TENNIS_WTA)?ne(r,a,p,s,ce,Me):{allow:!0,message:"The sport ".concat(A," does not have result constraint")}},Ie=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}},ne=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,")")}},Oe=2,de=20,Re=10,Pe=2,ce=1,Me=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 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:()=>U,DRAW:()=>K,LEAGUES_NO_FORMAL_HOME_AWAY:()=>M,LEAGUES_NO_LIVE_CONSTRAINTS:()=>C,LIVE_TYPE_ID_BASE:()=>Q,League:()=>t,LeagueIdMapEnetpulse:()=>G,LeagueIdMapOpticOdds:()=>y,LeagueIdMapRundown:()=>m,LeagueMap:()=>P,MIN_ODDS_FOR_DIFF_CHECKING:()=>j,MULTIPLIER_100:()=>Z,MatchResolveType:()=>N,MoneylineTypes:()=>S,PeriodType:()=>T,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:()=>Ne,allowSoccerGame:()=>se,calculateImpliedOddsDifference:()=>c,checkGameContraints:()=>pe,checkOddsFromBookmakers:()=>R,createChildMarkets:()=>ie,fetchResultInCurrentSet:()=>Te,filterOddsByMarketNameBookmaker:()=>oe,filterOddsByMarketNameTeamNameBookmaker:()=>ae,gamesDatesMatching:()=>W,getBetTypesForLeague:()=>h,getBookmakersArray:()=>O,getLeagueInfo:()=>V,getLeagueIsDrawAvailable:()=>b,getLeagueLabel:()=>D,getLeagueOpticOddsName:()=>B,getLeaguePeriodType:()=>w,getLeagueProvider:()=>g,getLeagueSport:()=>v,getLeagueSpreadTypes:()=>f,getLeagueTotalTypes:()=>Y,getLiveSupportedLeagues:()=>F,getParentOdds:()=>Ee,getSpreadData:()=>J,groupAndFormatSpreadOdds:()=>Ae,groupOddsBySelectionAndPoints:()=>_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,N,T,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"),N=a?0:d("decimal",L).to("impliedProbability"),T=d("decimal",t).to("impliedProbability"),I=d("decimal",S).to("impliedProbability"),n=a?0:d("decimal",p).to("impliedProbability"),O=c(l,T),R=c(s,I),P=a?0:c(N,n);if(O>E&&l>i&&T>i||R>E&&s>i&&I>i||!a&&P>E&&N>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}},c=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.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.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.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=""}(N||(N={})),function(e){e.QUARTER="quarter",e.HALF="half",e.PERIOD="period",e.ROUND="round",e.INNING="inning",e.SET="set",e.EMPTY=""}(T||(T={})),function(e){e.RUNDOWN="rundown",e.ENETPULSE="enetpulse",e.JSONODDS="jsonOdds",e.OPTICODDS="opticOdds",e.EMPTY=""}(I||(I={}));var P=((n={})[t.NCAAF]={sport:L.FOOTBALL,id:t.NCAAF,label:"NCAA Football",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.NFL]={sport:L.FOOTBALL,id:t.NFL,label:"NFL",opticOddsName:"NFL",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.MLB]={sport:L.BASEBALL,id:t.MLB,label:"MLB",opticOddsName:"MLB",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.INNING,isDrawAvailable:!1},n[t.NBA]={sport:L.BASKETBALL,id:t.NBA,label:"NBA",opticOddsName:"NBA",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.NCAAB]={sport:L.BASKETBALL,id:t.NCAAB,label:"NCAA Basketball",provider:I.RUNDOWN,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.NHL]={sport:L.HOCKEY,id:t.NHL,label:"NHL",opticOddsName:"NHL",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.OVERTIME,periodType:T.PERIOD,isDrawAvailable:!1},n[t.UFC]={sport:L.FIGHTING,id:t.UFC,label:"UFC",provider:I.OPTICODDS,scoringType:s.ROUNDS,matchResolveType:N.EMPTY,periodType:T.ROUND,isDrawAvailable:!1},n[t.WNBA]={sport:L.BASKETBALL,id:t.WNBA,label:"WNBA",opticOddsName:"WNBA",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.BUNDESLIGA]={sport:L.SOCCER,id:t.BUNDESLIGA,label:"Bundesliga",opticOddsName:"Germany - Bundesliga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.IPL]={sport:L.CRICKET,id:t.IPL,label:"Indian Premier League",provider:I.RUNDOWN,scoringType:s.POINTS,matchResolveType:N.EMPTY,periodType:T.INNING,isDrawAvailable:!1},n[t.T20_BLAST]={sport:L.CRICKET,id:t.T20_BLAST,label:"T20 Blast",provider:I.RUNDOWN,scoringType:s.POINTS,matchResolveType:N.EMPTY,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.EREDIVISIE]={sport:L.SOCCER,id:t.EREDIVISIE,label:"Eredivisie",opticOddsName:"Netherlands - Eredivisie",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.ITALY_CUP]={sport:L.SOCCER,id:t.ITALY_CUP,label:"Coppa Italia",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.GERMANY_CUP]={sport:L.SOCCER,id:t.GERMANY_CUP,label:"DFB Pokal",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.EUROLEAGUE]={sport:L.BASKETBALL,id:t.EUROLEAGUE,label:"Euroleague",opticOddsName:"Euroleague",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.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:N.OVERTIME,periodType:T.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:N.OVERTIME,periodType:T.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:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.FORMULA1]={sport:L.MOTOSPORT,id:t.FORMULA1,label:"Formula 1",provider:I.ENETPULSE,scoringType:s.EMPTY,matchResolveType:N.EMPTY,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.MOTOGP]={sport:L.MOTOSPORT,id:t.MOTOGP,label:"MotoGP",provider:I.ENETPULSE,scoringType:s.EMPTY,matchResolveType:N.EMPTY,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.BOXING]={sport:L.FIGHTING,id:t.BOXING,label:"Boxing",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:N.EMPTY,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.CSGO]={sport:L.ESPORTS,id:t.CSGO,label:"CS GO",opticOddsName:"CS2",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:N.EMPTY,periodType:T.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:N.EMPTY,periodType:T.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:N.OVERTIME,periodType:T.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:N.OVERTIME,periodType:T.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:N.OVERTIME,periodType:T.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:N.EMPTY,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.EMPTY,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.EMPTY,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.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:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.EUROCUP]={sport:L.BASKETBALL,id:t.EUROCUP,label:"Eurocup",opticOddsName:"Eurocup",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,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:N.EMPTY,periodType:T.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:N.EMPTY,periodType:T.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],C=[t.SUMMER_OLYMPICS_RUGBY,t.SUMMER_OLYMPICS_RUGBY_WOMEN],U=[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",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:L.EMPTY},D=function(e){var r=P[e];return r?r.label:""},g=function(e){var r=P[e];return r?r.provider:""},b=function(e){var r=P[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)===e&&"true"===r.enabled})).map((function(e){return e.marketName}))},V=function(e,r){return r.filter((function(r){return Number(r.sportId)===e}))},B=function(e){var r=P[e];return r?r.opticOddsName:void 0},w=function(e){var r=P[e];return r?r.periodType:""},f=function(e,r){return r.filter((function(r){return Number(r.sportId)===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)===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=1e5,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=V(r.leagueId,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){e&&.5===Math.abs(e.selection_points%1)&&("Total"===e.type?L.push(e):"Spread"===e.type&&_.push(e))}));var l=$($([],Ae(_,p),!0),_e(L),!0);Le(l,a,i).forEach((function(e){var r=process.env.MIN_ODDS_FOR_CHILD_MARKETS_FOR_LIVE,a=process.env.MAX_ODDS_FOR_CHILD_MARKETS_FOR_LIVE,E={leagueId:e.sportId,typeId:e.typeId,type:e.type,line:e.line,odds:e.odds};r&&a&&(e.odds[0]>=r||e.odds[0]<=a||e.odds[1]>=r||e.odds[1]<=a)||t.push(E)}))}else console.warn("No child markets for leagueID: ".concat(r.leagueId));return t},oe=function(e,r,a){var E=r.map((function(e){return e.marketName}));return e.filter((function(e){return E.includes(e.market_name.toLowerCase())&&e.market_name.toLowerCase()!==S.MONEYLINE.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){var r=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}),{}),a=Object.entries(r).reduce((function(e,r){var a=r[0],E=r[1],i=parseFloat(a);return null!==E.over&&null!==E.under&&e.push({line:i,odds:[E.over,E.under],typeId:E.typeId,sportId:E.sportId,type:E.type}),e}),[]);return a},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(e,L,r,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?Ne(e,t,S,A,E,i,r,l):l===L.VOLLEYBALL?Ne(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:""}},Ne=function(e,r,a,E,i,o,A,_){var S=Number(E),p=Te(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,Pe):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,ce,Pe):{allow:!0,message:"The sport ".concat(A," does not have result constraint")}},Te=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,ce=1,Pe=5;return r})()));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overtime-live-trading-utils",
3
- "version": "0.0.129",
3
+ "version": "0.0.130",
4
4
  "description": "",
5
5
  "main": "main.js",
6
6
  "scripts": {
@@ -1,7 +1,5 @@
1
1
  import * as oddslib from 'oddslib';
2
- import { TAG_CHILD_SPREAD, TAG_CHILD_TOTALS } from '../constants/common';
3
- import { filterOddsByMarketNameBookmaker, formatSpreadOdds, getParentOdds, processTotalOdds } from './odds';
4
- import { getLeagueSpreadTypes, getLeagueTotalTypes } from './sports';
2
+ import { createChildMarkets, getParentOdds } from './odds';
5
3
  /**
6
4
  * Processes a single sports event. This function maps event data to a specific format,
7
5
  * filters invalid events, and optionally fetches player properties if the sport supports it.
@@ -62,8 +60,8 @@ export const processMarket = (
62
60
  });
63
61
  }
64
62
 
65
- const childMarkets = getChildMarkets(
66
- market.leagueId,
63
+ const childMarkets = createChildMarkets(
64
+ market,
67
65
  sportSpreadData,
68
66
  apiResponseWithOdds,
69
67
  liveOddsProviders,
@@ -96,144 +94,3 @@ export const processMarket = (
96
94
 
97
95
  return market;
98
96
  };
99
-
100
- /**
101
- * Retrieves the child markets for the given event.
102
- *
103
- * @param {Object} market - The market object from the API
104
- * @param {Array} spreadDataForSport - Spread data for sport.
105
- * @param {Object} apiResponseWithOdds - API response from the provider
106
- * @param {Number} defaultSpreadForLiveMarkets - Default spread for live markets
107
- * @param {Boolean} isTestnet - Flag showing should we process for testnet or mainnet
108
- * @returns {Array} The child markets for the event.
109
- */
110
- const getChildMarkets = (
111
- leagueId,
112
- spreadDataForSport,
113
- apiResponseWithOdds,
114
- liveOddsProviders,
115
- defaultSpreadForLiveMarkets,
116
- leagueMap
117
- ) => {
118
- let childMarkets = [];
119
-
120
- // Create Spread Child Markets
121
- childMarkets = childMarkets.concat(
122
- createSpreadChildMarkets(
123
- apiResponseWithOdds,
124
- leagueId,
125
- spreadDataForSport,
126
- liveOddsProviders,
127
- defaultSpreadForLiveMarkets,
128
- leagueMap
129
- )
130
- );
131
-
132
- // Create Total Child Markets
133
- childMarkets = childMarkets.concat(
134
- createTotalChildMarkets(
135
- apiResponseWithOdds,
136
- leagueId,
137
- spreadDataForSport,
138
- liveOddsProviders,
139
- defaultSpreadForLiveMarkets,
140
- leagueMap
141
- )
142
- );
143
-
144
- return childMarkets;
145
- };
146
-
147
- /**
148
- * Creates spread child markets based on the given parameters.
149
- *
150
- * @param {Object} market - The market object from the API
151
- * @param {Array} spreadDataForSport - Spread data for sport.
152
- * @param {Object} apiResponseWithOdds - API response from the provider
153
- * @param {Array} liveOddsProviders - Odds providers for live odds
154
- * @param {Number} defaultSpreadForLiveMarkets - Default spread for live markets
155
- * @param {Boolean} isTestnet - Flag showing should we process for testnet or mainnet
156
- * @returns {Array} The spread child markets.
157
- */
158
- export const createSpreadChildMarkets = (
159
- apiResponseWithOdds,
160
- leagueId,
161
- spreadDataForSport,
162
- liveOddsProviders,
163
- defaultSpreadForLiveMarkets,
164
- leagueMap
165
- ) => {
166
- const childMarkets = [] as any;
167
- const spreadTypes = getLeagueSpreadTypes(leagueId, leagueMap);
168
- const commonData = {
169
- homeTeam: apiResponseWithOdds.home_team,
170
- awayTeam: apiResponseWithOdds.away_team,
171
- };
172
- if (spreadTypes.length > 0) {
173
- // TODO ADD ODDS COMPARISON BETWEEN BOOKMAKERS
174
- const allSpreadOdds = filterOddsByMarketNameBookmaker(
175
- apiResponseWithOdds.odds,
176
- spreadTypes,
177
- liveOddsProviders[0]
178
- );
179
-
180
- if (allSpreadOdds.length > 0) {
181
- const formattedSpreadOdds = formatSpreadOdds(
182
- allSpreadOdds,
183
- commonData,
184
- leagueId,
185
- spreadDataForSport,
186
- TAG_CHILD_SPREAD,
187
- defaultSpreadForLiveMarkets
188
- );
189
-
190
- childMarkets.push(...formattedSpreadOdds);
191
- }
192
- } else {
193
- console.warn(`Spread type for sport ID ${leagueId} not found.`);
194
- }
195
- return childMarkets;
196
- };
197
-
198
- /**
199
- * Creates total child markets based on the given parameters.
200
- *
201
- * @param {Object} market - The market object from the API
202
- * @param {Array} spreadDataForSport - Spread data for sport.
203
- * @param {Object} apiResponseWithOdds - API response from the provider
204
- * @param {Array} liveOddsProviders - Odds providers for live odds
205
- * @param {Number} defaultSpreadForLiveMarkets - Default spread for live markets
206
- * @param {Boolean} isTestnet - Flag showing should we process for testnet or mainnet
207
- * @returns {Array} The total child markets.
208
- */
209
- export const createTotalChildMarkets = (
210
- apiResponseWithOdds,
211
- leagueId,
212
- spreadDataForSport,
213
- liveOddsProviders,
214
- defaultSpreadForLiveMarkets,
215
- leagueMap
216
- ) => {
217
- const childMarkets = [] as any;
218
- const totalTypes = getLeagueTotalTypes(leagueId, leagueMap);
219
-
220
- if (totalTypes.length > 0) {
221
- // TODO ADD ODDS COMPARISON BETWEEN BOOKMAKERS
222
- const totalOdds = filterOddsByMarketNameBookmaker(apiResponseWithOdds.odds, totalTypes, liveOddsProviders[0]);
223
-
224
- if (totalOdds.length > 0) {
225
- childMarkets.push(
226
- ...processTotalOdds(
227
- totalOdds,
228
- leagueId,
229
- spreadDataForSport,
230
- TAG_CHILD_TOTALS,
231
- defaultSpreadForLiveMarkets
232
- )
233
- );
234
- }
235
- } else {
236
- console.warn(`Configuration (totals) for sport ID ${leagueId} not found.`);
237
- }
238
- return childMarkets;
239
- };
package/src/utils/odds.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import * as oddslib from 'oddslib';
2
2
  import { DRAW, LIVE_TYPE_ID_BASE, MIN_ODDS_FOR_DIFF_CHECKING, ZERO } from '../constants/common';
3
- import { statusCodes } from '../enums/statuses';
4
3
  import { checkOddsFromBookmakers } from './bookmakers';
5
4
  import { adjustSpreadOnOdds, getSpreadData } from './spread';
6
5
  import { MoneylineTypes } from '../enums/sports';
6
+ import { LeagueInfo } from '../types/sports';
7
+ import { getLeagueInfo } from './sports';
7
8
 
8
9
  /**
9
10
  * Converts a given odds value from one format to another.
@@ -164,100 +165,117 @@ export const getParentOdds = (
164
165
  };
165
166
 
166
167
  /**
167
- * Filters the odds array to find entries matching the specified market name.
168
- *
169
- * @param {Array} oddsArray - The array of odds objects.
170
- * @param {string} marketNames - The market names to filter by.
171
- * @param {string} oddsProvider - The main odds provider to filter by.
172
- * @returns {Array} The filtered odds array.
173
- */
174
- export const filterOddsByMarketNameBookmaker = (oddsArray, marketNames, oddsProvider) => {
175
- return oddsArray.filter(
176
- (odd) =>
177
- marketNames.includes(odd.market_name.toLowerCase()) &&
178
- odd.sports_book_name.toLowerCase() == oddsProvider.toLowerCase()
179
- );
180
- };
181
-
182
- // TODO: Unify the same code from formatSpreadOdds method and from processTotalOdds method
183
- /**
184
- * Formats the spread odds and creates market objects.
168
+ * Creates child markets based on the given parameters.
185
169
  *
186
- * @param {Array} spreadOdds - The spread odds array.
187
- * @param {Object} commonData - The common data object.
188
- * @param {Object} market - The sport ID from the API.
189
- * @param {Array} spreadDataForSport - Spread data for the sport.
190
- * @param {Number} typeId - typeID
191
- * @param {Number} defaultSpreadForLiveMarkets - Default spread for live markets,
192
- * @returns {Array} The formatted spread markets.
170
+ * @param {Object} market - The market object from the API
171
+ * @param {Array} spreadDataForSport - Spread data for sport.
172
+ * @param {Object} apiResponseWithOdds - API response from the provider
173
+ * @param {Array} liveOddsProviders - Odds providers for live odds
174
+ * @param {Number} defaultSpreadForLiveMarkets - Default spread for live markets
175
+ * @param {Boolean} leagueMap - League Map info
176
+ * @returns {Array} The child markets.
193
177
  */
194
- export const formatSpreadOdds = (
195
- spreadOdds,
196
- commonData,
197
- leagueId,
178
+ export const createChildMarkets = (
179
+ apiResponseWithOdds,
180
+ market,
198
181
  spreadDataForSport,
199
- typeId,
200
- defaultSpreadForLiveMarkets
182
+ liveOddsProviders,
183
+ defaultSpreadForLiveMarkets,
184
+ leagueMap
201
185
  ) => {
202
- const childMarkets = [] as any;
203
- const validSpreadOdds = spreadOdds.filter((odd) => odd && Math.abs(odd.selection_points % 1) === 0.5) as any;
204
- const formattedSpreadOdds = groupAndFormatSpreadOdds(validSpreadOdds, commonData);
186
+ const [spreadOdds, totalOdds, childMarkets] = [[], [], []]; // placeholders for
187
+ const leagueInfo = getLeagueInfo(market.leagueId, leagueMap);
188
+ const commonData = {
189
+ homeTeam: apiResponseWithOdds.home_team,
190
+ awayTeam: apiResponseWithOdds.away_team,
191
+ };
192
+ if (leagueInfo.length > 0) {
193
+ // TODO ADD ODDS COMPARISON BETWEEN BOOKMAKERS
194
+ const allChildOdds = filterOddsByMarketNameBookmaker(
195
+ apiResponseWithOdds.odds,
196
+ leagueInfo,
197
+ liveOddsProviders[0]
198
+ );
205
199
 
206
- formattedSpreadOdds.forEach(({ line, odds }) => {
207
- let homeTeamOdds = convertOddsToImpl(odds[0]) || ZERO;
208
- let awayTeamOdds = convertOddsToImpl(odds[1]) || ZERO;
209
- let isZeroOddsChild = homeTeamOdds === ZERO || awayTeamOdds === ZERO;
200
+ const allValidOdds = allChildOdds.filter((odd) => odd && Math.abs(odd.selection_points % 1) === 0.5) as any;
210
201
 
211
- if (!isZeroOddsChild) {
212
- const spreadData = getSpreadData(spreadDataForSport, leagueId, typeId, defaultSpreadForLiveMarkets);
213
- if (spreadData !== null) {
214
- let adjustedOdds = adjustSpreadOnOdds(
215
- [homeTeamOdds, awayTeamOdds],
216
- spreadData.minSpread,
217
- spreadData.targetSpread
218
- );
219
- if (adjustedOdds.some((prob) => prob === ZERO)) {
220
- isZeroOddsChild = true;
221
- } else {
222
- [homeTeamOdds, awayTeamOdds] = adjustedOdds;
223
- }
224
- } else {
225
- let adjustedOdds = adjustSpreadOnOdds([homeTeamOdds, awayTeamOdds], defaultSpreadForLiveMarkets, 0);
226
- if (adjustedOdds.some((prob) => prob === ZERO)) {
227
- isZeroOddsChild = true;
228
- } else {
229
- [homeTeamOdds, awayTeamOdds] = adjustedOdds;
202
+ allValidOdds.forEach((odd) => {
203
+ if (odd && Math.abs(odd.selection_points % 1) === 0.5) {
204
+ if (odd.type === 'Total') {
205
+ totalOdds.push(odd);
206
+ } else if (odd.type === 'Spread') {
207
+ spreadOdds.push(odd);
230
208
  }
231
209
  }
232
- }
210
+ });
233
211
 
234
- const minOdds = process.env.MIN_ODDS_FOR_CHILD_MARKETS_FOR_LIVE;
235
- const maxOdds = process.env.MAX_ODDS_FOR_CHILD_MARKETS_FOR_LIVE;
236
-
237
- if (
238
- !(
239
- minOdds &&
240
- maxOdds &&
241
- (homeTeamOdds >= minOdds ||
242
- homeTeamOdds <= maxOdds ||
243
- awayTeamOdds >= minOdds ||
244
- awayTeamOdds <= maxOdds)
245
- )
246
- ) {
247
- childMarkets.push({
248
- leagueId,
249
- typeId: typeId,
250
- type: 'spread',
251
- results: [],
252
- status: isZeroOddsChild ? statusCodes.PAUSED : statusCodes.OPEN,
253
- line: line,
254
- odds: [homeTeamOdds, awayTeamOdds],
255
- });
256
- }
257
- });
212
+ const formattedOdds = [
213
+ ...groupAndFormatSpreadOdds(spreadOdds, commonData),
214
+ ...groupOddsBySelectionAndPoints(totalOdds),
215
+ ];
216
+
217
+ const oddsWithSpreadAdjusted = adjustSpreadOnChildOdds(
218
+ formattedOdds,
219
+ spreadDataForSport,
220
+ defaultSpreadForLiveMarkets
221
+ );
222
+
223
+ oddsWithSpreadAdjusted.forEach((data) => {
224
+ const minOdds = process.env.MIN_ODDS_FOR_CHILD_MARKETS_FOR_LIVE;
225
+ const maxOdds = process.env.MAX_ODDS_FOR_CHILD_MARKETS_FOR_LIVE;
226
+
227
+ const childMarket = {
228
+ leagueId: data.sportId,
229
+ typeId: data.typeId,
230
+ type: data.type,
231
+ line: data.line,
232
+ odds: data.odds,
233
+ };
234
+
235
+ if (
236
+ !(
237
+ minOdds &&
238
+ maxOdds &&
239
+ (data.odds[0] >= minOdds ||
240
+ data.odds[0] <= maxOdds ||
241
+ data.odds[1] >= minOdds ||
242
+ data.odds[1] <= maxOdds)
243
+ )
244
+ ) {
245
+ childMarkets.push(childMarket);
246
+ }
247
+ });
248
+ } else {
249
+ console.warn(`No child markets for leagueID: ${market.leagueId}`);
250
+ }
258
251
  return childMarkets;
259
252
  };
260
253
 
254
+ /**
255
+ * Filters the odds array to find entries matching the specified market name.
256
+ *
257
+ * @param {Array} oddsArray - The array of odds objects.
258
+ * @param {string} leagueInfos - The market names to filter by.
259
+ * @param {string} oddsProvider - The main odds provider to filter by.
260
+ * @returns {Array} The filtered odds array.
261
+ */
262
+ export const filterOddsByMarketNameBookmaker = (oddsArray, leagueInfos: LeagueInfo[], oddsProvider) => {
263
+ const allChildMarketsTypes = leagueInfos.map((leagueInfo) => leagueInfo.marketName);
264
+ return oddsArray
265
+ .filter(
266
+ (odd) =>
267
+ allChildMarketsTypes.includes(odd.market_name.toLowerCase()) &&
268
+ odd.market_name.toLowerCase() !== MoneylineTypes.MONEYLINE.toLowerCase() &&
269
+ odd.sports_book_name.toLowerCase() == oddsProvider.toLowerCase()
270
+ )
271
+ .map((odd) => {
272
+ return {
273
+ ...odd,
274
+ ...leagueInfos.find((leagueInfo) => leagueInfo.marketName === odd.market_name),
275
+ };
276
+ });
277
+ };
278
+
261
279
  /**
262
280
  * Groups spread odds by their lines and formats the result.
263
281
  *
@@ -268,13 +286,13 @@ export const formatSpreadOdds = (
268
286
  export const groupAndFormatSpreadOdds = (oddsArray, commonData) => {
269
287
  // Group odds by their selection points and selection
270
288
  const groupedOdds = oddsArray.reduce((acc: any, odd: any) => {
271
- const { selection_points, price, selection } = odd;
289
+ const { selection_points, price, selection, typeId, sportId, type } = odd;
272
290
  const isHomeTeam = selection === commonData.homeTeam;
273
291
 
274
292
  const key = isHomeTeam ? selection_points : -selection_points;
275
293
 
276
294
  if (!acc[key]) {
277
- acc[key] = { home: null, away: null };
295
+ acc[key] = { home: null, away: null, typeId: null, sportId: null };
278
296
  }
279
297
 
280
298
  if (isHomeTeam) {
@@ -283,6 +301,10 @@ export const groupAndFormatSpreadOdds = (oddsArray, commonData) => {
283
301
  acc[key].away = price;
284
302
  }
285
303
 
304
+ acc[key].typeId = typeId;
305
+ acc[key].type = type;
306
+ acc[key].sportId = sportId;
307
+
286
308
  return acc;
287
309
  }, {}) as any;
288
310
  // Format the grouped odds into the desired output
@@ -292,6 +314,9 @@ export const groupAndFormatSpreadOdds = (oddsArray, commonData) => {
292
314
  acc.push({
293
315
  line: line as any,
294
316
  odds: [(value as any).home, (value as any).away],
317
+ typeId: value.typeId,
318
+ sportId: value.sportId,
319
+ type: value.type,
295
320
  });
296
321
  }
297
322
  return acc;
@@ -300,81 +325,6 @@ export const groupAndFormatSpreadOdds = (oddsArray, commonData) => {
300
325
  return formattedOdds;
301
326
  };
302
327
 
303
- /**
304
- * Processes total odds to create market objects.
305
- *
306
- * @param {Array} totalOdds - The total odds array.
307
- * @param {Object} commonData - The common data object.
308
- * @param {Object} market - The sport ID from the API.
309
- * @param {Array} spreadDataForSport - Spread data for the sport.
310
- * @param {Number} typeId - typeID
311
- * @param {Number} defaultSpreadForLiveMarkets - Default spread for live markets,
312
- * @returns {Array} The processed total odds market objects.
313
- */
314
- export const processTotalOdds = (totalOdds, leagueId, spreadDataForSport, typeId, defaultSpreadForLiveMarkets) => {
315
- const childMarkets = [] as any;
316
- const validTotalOdds = totalOdds.filter((odd) => odd && Math.abs(odd.selection_points % 1) === 0.5);
317
- const groupedOdds = groupOddsBySelectionAndPoints(validTotalOdds);
318
- const iterableGroupedOdds = Object.entries(groupedOdds) as any;
319
-
320
- iterableGroupedOdds.forEach(([key, { over, under }]) => {
321
- const [_, selection_points] = key.split('_');
322
-
323
- let overOdds = convertOddsToImpl(over) || ZERO;
324
- let underOdds = convertOddsToImpl(under) || ZERO;
325
- let isZeroOddsChild = overOdds === ZERO || underOdds === ZERO;
326
-
327
- if (!isZeroOddsChild) {
328
- const spreadData = getSpreadData(spreadDataForSport, leagueId, typeId, defaultSpreadForLiveMarkets);
329
- if (spreadData !== null) {
330
- let adjustedOdds = adjustSpreadOnOdds(
331
- [overOdds, underOdds],
332
- spreadData.minSpread,
333
- spreadData.targetSpread
334
- );
335
- if (adjustedOdds.some((prob) => prob === ZERO)) {
336
- isZeroOddsChild = true;
337
- } else {
338
- [overOdds, underOdds] = adjustedOdds;
339
- }
340
- } else {
341
- // Use min spread by sport if available, otherwise use default min spread
342
- let adjustedOdds = adjustSpreadOnOdds([overOdds, underOdds], defaultSpreadForLiveMarkets, 0);
343
- if (adjustedOdds.some((prob) => prob === ZERO)) {
344
- isZeroOddsChild = true;
345
- } else {
346
- [overOdds, underOdds] = adjustedOdds;
347
- }
348
- }
349
- }
350
-
351
- const minOdds = process.env.MIN_ODDS_FOR_CHILD_MARKETS_FOR_LIVE;
352
- const maxOdds = process.env.MAX_ODDS_FOR_CHILD_MARKETS_FOR_LIVE;
353
-
354
- const childMarket = {
355
- leagueId,
356
- typeId: typeId,
357
- type: 'total',
358
- results: [],
359
- status: isZeroOddsChild ? statusCodes.PAUSED : statusCodes.OPEN,
360
- line: parseFloat(selection_points),
361
- odds: [overOdds, underOdds],
362
- };
363
-
364
- if (
365
- !(
366
- minOdds &&
367
- maxOdds &&
368
- (overOdds >= minOdds || overOdds <= maxOdds || underOdds >= minOdds || underOdds <= maxOdds)
369
- )
370
- ) {
371
- childMarkets.push(childMarket);
372
- }
373
- });
374
-
375
- return childMarkets;
376
- };
377
-
378
328
  /**
379
329
  * Groups odds by selection and points over/under.
380
330
  *
@@ -382,7 +332,8 @@ export const processTotalOdds = (totalOdds, leagueId, spreadDataForSport, typeId
382
332
  * @returns {Object} The grouped odds.
383
333
  */
384
334
  export const groupOddsBySelectionAndPoints = (oddsArray) => {
385
- return oddsArray.reduce((acc, odd) => {
335
+ // Group odds by their selection points and selection
336
+ const groupedOdds = oddsArray.reduce((acc, odd) => {
386
337
  if (odd) {
387
338
  const key = `${odd.selection}_${odd.selection_points}`;
388
339
  if (!acc[key]) {
@@ -393,8 +344,62 @@ export const groupOddsBySelectionAndPoints = (oddsArray) => {
393
344
  } else if (odd.selection_line === 'under') {
394
345
  acc[key].under = odd.price;
395
346
  }
347
+
348
+ acc[key].typeId = odd.typeId;
349
+ acc[key].type = odd.type;
350
+ acc[key].sportId = odd.sportId;
396
351
  }
397
352
 
398
353
  return acc;
399
354
  }, {});
355
+
356
+ // Format the grouped odds into the desired output
357
+ const formattedOdds = (Object.entries(groupedOdds as any) as any).reduce((acc, [key, value]) => {
358
+ const line = parseFloat(key);
359
+ if ((value as any).over !== null && (value as any).under !== null) {
360
+ acc.push({
361
+ line: line as any,
362
+ odds: [(value as any).over, (value as any).under],
363
+ typeId: value.typeId,
364
+ sportId: value.sportId,
365
+ type: value.type,
366
+ });
367
+ }
368
+ return acc;
369
+ }, []);
370
+
371
+ return formattedOdds;
372
+ };
373
+
374
+ export const adjustSpreadOnChildOdds = (iterableGroupedOdds, spreadDataForSport, defaultSpreadForLiveMarkets) => {
375
+ const result = [];
376
+ iterableGroupedOdds.forEach((data) => {
377
+ let homeTeamOdds = convertOddsToImpl(data.odds[0]) || ZERO;
378
+ let awayTeamOdds = convertOddsToImpl(data.odds[1]) || ZERO;
379
+ let isZeroOddsChild = homeTeamOdds === ZERO || awayTeamOdds === ZERO;
380
+ if (!isZeroOddsChild) {
381
+ const spreadData = getSpreadData(
382
+ spreadDataForSport,
383
+ data.sportId,
384
+ data.typeId,
385
+ defaultSpreadForLiveMarkets
386
+ );
387
+ let adjustedOdds;
388
+ if (spreadData !== null) {
389
+ adjustedOdds = adjustSpreadOnOdds(
390
+ [homeTeamOdds, awayTeamOdds],
391
+ spreadData.minSpread,
392
+ spreadData.targetSpread
393
+ );
394
+ } else {
395
+ adjustedOdds = adjustSpreadOnOdds([homeTeamOdds, awayTeamOdds], defaultSpreadForLiveMarkets, 0);
396
+ }
397
+ [homeTeamOdds, awayTeamOdds] = adjustedOdds;
398
+ result.push({
399
+ ...data,
400
+ odds: adjustedOdds,
401
+ });
402
+ }
403
+ });
404
+ return result;
400
405
  };
@@ -33,6 +33,11 @@ export const getBetTypesForLeague = (league: League, leagueMap: LeagueInfo[]) =>
33
33
  return betTypes;
34
34
  };
35
35
 
36
+ export const getLeagueInfo = (league: League, leagueMap: LeagueInfo[]) => {
37
+ const leagueInfos = leagueMap.filter((leagueInfo) => Number(leagueInfo.sportId) === league);
38
+ return leagueInfos;
39
+ };
40
+
36
41
  export const getLeagueOpticOddsName = (league: League) => {
37
42
  const leagueInfo = LeagueMap[league];
38
43
  return leagueInfo ? leagueInfo.opticOddsName : undefined;
@@ -1,21 +0,0 @@
1
- /**
2
- * Enum for task status codes.
3
- * @readonly
4
- * @enum {number}
5
- */
6
- export const statusCodes = {
7
- /** Game is open and has not started. */
8
- OPEN: 0,
9
- /** Game has been temporarily halted. */
10
- PAUSED: 1,
11
- /** Game is currently underway. */
12
- IN_PROGRESS: 3,
13
- /** Game has been finished successfully. */
14
- FINISHED: 8,
15
- /** Game has been resolved successfully. */
16
- RESOLVED: 10,
17
- /** Game has been canceled and will not be finished. */
18
- CANCELED: 255,
19
- };
20
-
21
- // TODO: Check if this file can be deleted