{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./local/js/MarkerClusterer.js","webpack:///./local/js/calendar.js","webpack:///./local/js/chart.js","webpack:///./local/js/fixed-partition.js","webpack:///./local/js/map.js","webpack:///./local/js/ui.js","webpack:///./local/scss/site.scss","webpack:///./local/site.js"],"names":["MarkerClusterer","map","opt_markers","opt_options","extend","google","maps","OverlayView","map_","markers_","clusters_","markersCluster_","markersUniqueID","sizes","styles_","cssClass_","cssDefaultClass_","setIndex_","ready_","options","gridSize_","undefined","minClusterSize_","ignoreHiddenMarkers_","maxZoom_","imagePath_","MARKER_CLUSTER_IMAGE_PATH_","imageExtension_","MARKER_CLUSTER_IMAGE_EXTENSION_","zoomOnClick_","averageCenter_","onMouseoverCluster_","onMouseoutCluster_","drawCluster_","hideCluster_","showCluster_","onAddCluster_","onRemoveCluster_","setupStyles_","setMap","prevZoom_","getZoom","that","event","addListener","zoom","resetViewport","redraw","length","addMarkers","prototype","obj1","obj2","object","property","apply","onAdd","setReady_","draw","i","size","url","push","height","width","fitMapToMarkers","markers","getMarkers","bounds","LatLngBounds","marker","getPosition","fitBounds","setStyles","styles","getStyles","isZoomOnClick","isAverageCenter","getTotalMarkers","setMaxZoom","maxZoom","getMaxZoom","getMarkersCluster","uniqueID","calculator_","numStyles","index","count","dv","parseInt","Math","min","text","setCalculator","calculator","getCalculator","opt_nodraw","pushMarkerTo_","isAdded","repaint","addMarker","removeMarker_","indexOf","m","splice","removeMarker","removed","removeMarkers","r","ready","createClusters_","getTotalClusters","getClusters","getMap","getGridSize","setGridSize","getMinClusterSize","setMinClusterSize","getExtendedBounds","projection","getProjection","tr","LatLng","getNorthEast","lat","lng","bl","getSouthWest","trPix","fromLatLngToDivPixel","x","y","blPix","ne","fromDivPixelToLatLng","sw","isMarkerInBounds_","contains","clearMarkers","opt_hide","cluster","remove","oldClusters","slice","window","setTimeout","distanceBetweenPoints_","p1","p2","R","dLat","PI","dLon","a","sin","cos","c","atan2","sqrt","d","addToClosestCluster_","distance","clusterToAddTo","pos","clusterIndex","center","getCenter","isMarkerInClusterBounds","Cluster","mapBounds","getBounds","getVisible","markerClusterer","markerClusterer_","center_","bounds_","clusterIcon_","ClusterIcon","isMarkerAlreadyAdded","calculateBounds_","l","len","updateIcon","getMarkerClusterer","getSize","mz","hide","sums","setCenter","setSums","show","opt_padding","padding_","cluster_","div_","sums_","visible_","triggerClusterClick","trigger","triggerClusterMouseover","triggerClusterMouseout","defaultClusterOnAdd","clusterIcon","document","createElement","getPosFromLatLng_","style","cssText","createCss","innerHTML","addClass","panes","getPanes","overlayMouseTarget","appendChild","isDragging","isMouseDown","addDomListener","latlng","iconAnchor_","width_","height_","defaultClusterDraw","top","left","defaultClusterHide","display","className","defaultClusterShow","onRemove","defaultClusterOnRemove","parentNode","removeChild","text_","index_","useStyle","max","url_","textColor_","anchor_","textSize_","fontFamily_","fontWeight_","backgroundPosition_","backgroundPosition","txtColor","txtSize","fontFamily","fontWeight","join","$","cal","getElementById","fullCalendar","schedulerLicenseKey","eventSources","events","data","header","right","fixedWeekCount","contentHeight","defaultView","views","timelineCustom","type","buttonText","dateIncrement","years","slotDuration","months","visibleRange","currentDate","start","Date","year","end","chart","getJSON","json","AmCharts","makeChart","theme","dataProvider","categoryField","synchronizeGrid","chartCursor","bulletsEnabled","oneBalloonOnly","categoryBalloonDateFormat","categoryBalloonColor","responsive","enabled","balloon","adjustBorderColor","borderThickness","borderRadius","fillColor","color","categoryAxis","gridAlpha","parseDates","labelsEnabled","valueAxes","id","position","title","graphs","valueAxis","valueField","lineColor","lineThickness","legend","module","exports","elements","j","k","n","positions","elementCount","spacing","containerWidth","idealHeight","idealElementHeight","Error","aspect","aspects","aspects100","dataset","round","summedWidth","rowsNeeded","xSum","padLeft","align","spaceNeeded","floor","ySum","partitions","linear_partition","element_index","summedRatios","seq","ans","solution","table","_i","_j","_k","_l","_m","_nn","_results","_results1","_ref","_ref1","minValue","minIndex","concat","elems","getElementsByClassName","Map","streetViewControl","gestureHandling","mapTypeId","MapTypeId","ROADMAP","toString","get","response","html","view","result","JSON","parse","item","latLng","Point","Lat","Lon","Marker","icon","path","fillOpacity","anchor","strokeWeight","strokeColor","scale","Id","sel","$item","removeClass","markerCluster","imagePath","updateGrid","LazyLoad","update","bindGallery","layout","require","on","debounce","debouncedResize","debouncedScroll","setInterval","click","e","preventDefault","parent","siblings","children","toggleClass","magnificPopup","col","val","form","submit","GetTourData","$div","find","row","Month","Year","Bednights","Passengers","Bookings_0_3","Bookings_4_6","Bookings_7_9","Bookings_10","Alderney","Birmingham","Bournemouth","Bristol","Cardiff","EastMidlands","Edinburgh","Exeter","Glasgow","Jersey","LeedsBradford","Liverpool","LondonCity","LondonGatwick","LondonHeathrow","Manchester","Newquay","Norwich","Southampton","Southend","Stansted","Sea_Poole","Sea_Portsmouth","Sea_Weymouth","Sea_Jersey","Sea_StMalo","append","month","post","$head","scrollTop","unbind","$btn","parents","gridItems","innerHeight","grid","css","elements_selector","callback_enter","el","tagName","img","attr","func","wait","immediate","timeout","context","args","arguments","later","callNow","clearTimeout","replaceQueryStringParam","key","value","updateRegex","RegExp","newParam","replace"],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;;AClFA,SAASA,eAAT,CAAyBC,GAAzB,EAA8BC,WAA9B,EAA2CC,WAA3C,EAAwD;AACpD;AACA;AACA;AACA;AACA;AACA,OAAKC,MAAL,CAAYJ,eAAZ,EAA6BK,MAAM,CAACC,IAAP,CAAYC,WAAzC;AACA,OAAKC,IAAL,GAAYP,GAAZ;AAEA;;;;;AAIA,OAAKQ,QAAL,GAAgB,EAAhB;AAEA;;;;AAGA,OAAKC,SAAL,GAAiB,EAAjB;AAEA;;;;AAGA,OAAKC,eAAL,GAAuB,EAAvB;AAEA;;;;AAGA,OAAKC,eAAL,GAAuB,CAAvB;AAEA,OAAKC,KAAL,GAAa,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,EAAiB,EAAjB,CAAb;AAEA;;;;AAGA,OAAKC,OAAL,GAAe,EAAf;AAEA;;;;AAGA,OAAKC,SAAL,GAAiB,EAAjB;AAEA;;;;;AAIA,OAAKC,gBAAL,GAAwB,SAAxB;AAEA;;;;AAGA,OAAKC,SAAL,GAAiB,CAAjB;AAEA;;;;;AAIA,OAAKC,MAAL,GAAc,KAAd;AAEA,MAAIC,OAAO,GAAGhB,WAAW,IAAI,EAA7B;AAEA;;;;;AAIA,OAAKiB,SAAL,GAAkBD,OAAO,CAAC,UAAD,CAAP,KAAwBE,SAAzB,GAAsCF,OAAO,CAAC,UAAD,CAA7C,GAA4D,EAA7E;AAEA;;;;AAGA,OAAKG,eAAL,GAAuBH,OAAO,CAAC,oBAAD,CAAP,IAAiC,CAAxD;AAEA;;;;;AAIA,OAAKI,oBAAL,GAA4BJ,OAAO,CAAC,qBAAD,CAAP,IAAkC,KAA9D;AAEA;;;;;AAIA,OAAKK,QAAL,GAAgBL,OAAO,CAAC,SAAD,CAAP,IAAsB,IAAtC;AAEA,OAAKL,OAAL,GAAeK,OAAO,CAAC,QAAD,CAAP,IAAqB,EAApC;AAEA,OAAKJ,SAAL,GAAiBI,OAAO,CAAC,UAAD,CAAP,IAAuB,IAAxC;AAEA;;;;;AAIA,OAAKM,UAAL,GAAkBN,OAAO,CAAC,WAAD,CAAP,IACd,KAAKO,0BADT;AAGA;;;;;AAIA,OAAKC,eAAL,GAAuBR,OAAO,CAAC,gBAAD,CAAP,IACnB,KAAKS,+BADT;AAGA;;;;;AAIA,OAAKC,YAAL,GAAoB,IAApB;;AAEA,MAAIV,OAAO,CAAC,aAAD,CAAP,IAA0BE,SAA9B,EAAyC;AACrC,SAAKQ,YAAL,GAAoBV,OAAO,CAAC,aAAD,CAA3B;AACH;AAED;;;;;;AAIA,OAAKW,cAAL,GAAsB,KAAtB;;AAEA,MAAIX,OAAO,CAAC,eAAD,CAAP,IAA4BE,SAAhC,EAA2C;AACvC,SAAKS,cAAL,GAAsBX,OAAO,CAAC,eAAD,CAA7B;AACH;AAED;;;;;;AAIA,OAAKY,mBAAL,GAA2BZ,OAAO,CAAC,oBAAD,CAAlC;AAEA;;;;;AAIA,OAAKa,kBAAL,GAA0Bb,OAAO,CAAC,mBAAD,CAAjC;AAEA;;;;;AAIA,OAAKc,YAAL,GAAoBd,OAAO,CAAC,aAAD,CAA3B;AAEA;;;;;AAIA,OAAKe,YAAL,GAAoBf,OAAO,CAAC,aAAD,CAA3B;AAEA;;;;;AAIA,OAAKgB,YAAL,GAAoBhB,OAAO,CAAC,aAAD,CAA3B;AAEA;;;;;AAIA,OAAKiB,aAAL,GAAqBjB,OAAO,CAAC,cAAD,CAA5B;AAEA;;;;;AAIA,OAAKkB,gBAAL,GAAwBlB,OAAO,CAAC,iBAAD,CAA/B;AAEA,OAAKmB,YAAL;AAEA,OAAKC,MAAL,CAAYtC,GAAZ;AAEA;;;;;AAIA,OAAKuC,SAAL,GAAiB,KAAKhC,IAAL,CAAUiC,OAAV,EAAjB,CA5KoD,CA8KpD;;AACA,MAAIC,IAAI,GAAG,IAAX;AACArC,QAAM,CAACC,IAAP,CAAYqC,KAAZ,CAAkBC,WAAlB,CAA8B,KAAKpC,IAAnC,EAAyC,cAAzC,EAAyD,YAAY;AACjE,QAAIqC,IAAI,GAAGH,IAAI,CAAClC,IAAL,CAAUiC,OAAV,EAAX;;AAEA,QAAIC,IAAI,CAACF,SAAL,IAAkBK,IAAtB,EAA4B;AACxBH,UAAI,CAACF,SAAL,GAAiBK,IAAjB;AACAH,UAAI,CAACI,aAAL;AACH;AACJ,GAPD;AASAzC,QAAM,CAACC,IAAP,CAAYqC,KAAZ,CAAkBC,WAAlB,CAA8B,KAAKpC,IAAnC,EAAyC,MAAzC,EAAiD,YAAY;AACzDkC,QAAI,CAACK,MAAL;AACH,GAFD,EAzLoD,CA6LpD;;AACA,MAAI7C,WAAW,IAAIA,WAAW,CAAC8C,MAA/B,EAAuC;AACnC,SAAKC,UAAL,CAAgB/C,WAAhB,EAA6B,KAA7B;AACH;AACJ;AAGD;;;;;;;;AAMAF,eAAe,CAACkD,SAAhB,CAA0BxB,0BAA1B,GAAuD,iGAAvD;AAGA;;;;;;;AAMA1B,eAAe,CAACkD,SAAhB,CAA0BtB,+BAA1B,GAA4D,KAA5D;AAGA;;;;;;;;;AAQA5B,eAAe,CAACkD,SAAhB,CAA0B9C,MAA1B,GAAmC,UAAU+C,IAAV,EAAgBC,IAAhB,EAAsB;AACrD,SAAQ,UAAUC,MAAV,EAAkB;AACtB,SAAK,IAAIC,QAAT,IAAqBD,MAAM,CAACH,SAA5B,EAAuC;AACnC,WAAKA,SAAL,CAAeI,QAAf,IAA2BD,MAAM,CAACH,SAAP,CAAiBI,QAAjB,CAA3B;AACH;;AACD,WAAO,IAAP;AACH,GALM,CAKJC,KALI,CAKEJ,IALF,EAKQ,CAACC,IAAD,CALR,CAAP;AAMH,CAPD;AAUA;;;;;;AAIApD,eAAe,CAACkD,SAAhB,CAA0BM,KAA1B,GAAkC,YAAY;AAC1C,OAAKC,SAAL,CAAe,IAAf;AACH,CAFD;AAIA;;;;;;AAIAzD,eAAe,CAACkD,SAAhB,CAA0BQ,IAA1B,GAAiC,YAAY,CAAG,CAAhD;AAEA;;;;;;;AAKA1D,eAAe,CAACkD,SAAhB,CAA0BZ,YAA1B,GAAyC,YAAY;AACjD,MAAI,KAAKxB,OAAL,CAAakC,MAAjB,EAAyB;AACrB;AACH;;AAED,OAAK,IAAIW,CAAC,GAAG,CAAR,EAAWC,IAAhB,EAAsBA,IAAI,GAAG,KAAK/C,KAAL,CAAW8C,CAAX,CAA7B,EAA4CA,CAAC,EAA7C,EAAiD;AAC7C,QAAIE,GAAG,GAAG,EAAV;;AACA,QAAI,OAAO,KAAKpC,UAAZ,KAA2B,UAA/B,EAA2C;AACvCoC,SAAG,GAAG,KAAKpC,UAAL,CAAgBkC,CAAhB,EAAmBC,IAAnB,CAAN;AACH,KAFD,MAEO;AACHC,SAAG,GAAG,KAAKpC,UAAL,IAAmBkC,CAAC,GAAG,CAAvB,IAA4B,GAA5B,GAAkC,KAAKhC,eAA7C;AACH;;AACD,SAAKb,OAAL,CAAagD,IAAb,CAAkB;AACdD,SAAG,EAAEA,GADS;AAEdE,YAAM,EAAEH,IAFM;AAGdI,WAAK,EAAEJ;AAHO,KAAlB;AAKH;AACJ,CAlBD;AAoBA;;;;;AAGA5D,eAAe,CAACkD,SAAhB,CAA0Be,eAA1B,GAA4C,YAAY;AACpD,MAAIC,OAAO,GAAG,KAAKC,UAAL,EAAd;AACA,MAAIC,MAAM,GAAG,IAAI/D,MAAM,CAACC,IAAP,CAAY+D,YAAhB,EAAb;;AACA,OAAK,IAAIV,CAAC,GAAG,CAAR,EAAWW,MAAhB,EAAwBA,MAAM,GAAGJ,OAAO,CAACP,CAAD,CAAxC,EAA6CA,CAAC,EAA9C,EAAkD;AAC9CS,UAAM,CAAChE,MAAP,CAAckE,MAAM,CAACC,WAAP,EAAd;AACH;;AAED,OAAK/D,IAAL,CAAUgE,SAAV,CAAoBJ,MAApB;AACH,CARD;AAWA;;;;;;;AAKApE,eAAe,CAACkD,SAAhB,CAA0BuB,SAA1B,GAAsC,UAAUC,MAAV,EAAkB;AACpD,OAAK5D,OAAL,GAAe4D,MAAf;AACH,CAFD;AAKA;;;;;;;AAKA1E,eAAe,CAACkD,SAAhB,CAA0ByB,SAA1B,GAAsC,YAAY;AAC9C,SAAO,KAAK7D,OAAZ;AACH,CAFD;AAKA;;;;;;;AAKAd,eAAe,CAACkD,SAAhB,CAA0B0B,aAA1B,GAA0C,YAAY;AAClD,SAAO,KAAK/C,YAAZ;AACH,CAFD;AAIA;;;;;;;AAKA7B,eAAe,CAACkD,SAAhB,CAA0B2B,eAA1B,GAA4C,YAAY;AACpD,SAAO,KAAK/C,cAAZ;AACH,CAFD;AAKA;;;;;;;AAKA9B,eAAe,CAACkD,SAAhB,CAA0BiB,UAA1B,GAAuC,YAAY;AAC/C,SAAO,KAAK1D,QAAZ;AACH,CAFD;AAKA;;;;;;;AAKAT,eAAe,CAACkD,SAAhB,CAA0B4B,eAA1B,GAA4C,YAAY;AACpD,SAAO,KAAKrE,QAAL,CAAcuC,MAArB;AACH,CAFD;AAKA;;;;;;;AAKAhD,eAAe,CAACkD,SAAhB,CAA0B6B,UAA1B,GAAuC,UAAUC,OAAV,EAAmB;AACtD,OAAKxD,QAAL,GAAgBwD,OAAhB;AACH,CAFD;AAKA;;;;;;;AAKAhF,eAAe,CAACkD,SAAhB,CAA0B+B,UAA1B,GAAuC,YAAY;AAC/C,SAAO,KAAKzD,QAAZ;AACH,CAFD;AAIA;;;;;;;;;AAOAxB,eAAe,CAACkD,SAAhB,CAA0BgC,iBAA1B,GAA8C,UAAUZ,MAAV,EAAkB;AAC5D,SAAO,KAAK5D,SAAL,CAAe,KAAKC,eAAL,CAAqB2D,MAAM,CAACa,QAA5B,CAAf,CAAP;AACH,CAFD;AAIA;;;;;;;;;;AAQAnF,eAAe,CAACkD,SAAhB,CAA0BkC,WAA1B,GAAwC,UAAUlB,OAAV,EAAmBmB,SAAnB,EAA8B;AAClE,MAAIC,KAAK,GAAG,CAAZ;AACA,MAAIC,KAAK,GAAGrB,OAAO,CAAClB,MAApB;AACA,MAAIwC,EAAE,GAAGD,KAAT;;AACA,SAAOC,EAAE,KAAK,CAAd,EAAiB;AACbA,MAAE,GAAGC,QAAQ,CAACD,EAAE,GAAG,EAAN,EAAU,EAAV,CAAb;AACAF,SAAK;AACR;;AAEDA,OAAK,GAAGI,IAAI,CAACC,GAAL,CAASL,KAAT,EAAgBD,SAAhB,CAAR;AAEA,SAAO;AACHO,QAAI,EAAEL,KADH;AAEHD,SAAK,EAAEA;AAFJ,GAAP;AAIH,CAfD;AAkBA;;;;;;;;;;AAQAtF,eAAe,CAACkD,SAAhB,CAA0B2C,aAA1B,GAA0C,UAAUC,UAAV,EAAsB;AAC5D,OAAKV,WAAL,GAAmBU,UAAnB;AACH,CAFD;AAKA;;;;;;;AAKA9F,eAAe,CAACkD,SAAhB,CAA0B6C,aAA1B,GAA0C,YAAY;AAClD,SAAO,KAAKX,WAAZ;AACH,CAFD;AAKA;;;;;;;;AAMApF,eAAe,CAACkD,SAAhB,CAA0BD,UAA1B,GAAuC,UAAUiB,OAAV,EAAmB8B,UAAnB,EAA+B;AAClE,OAAK,IAAIrC,CAAC,GAAG,CAAR,EAAWW,MAAhB,EAAwBA,MAAM,GAAGJ,OAAO,CAACP,CAAD,CAAxC,EAA6CA,CAAC,EAA9C,EAAkD;AAC9C,SAAKsC,aAAL,CAAmB3B,MAAnB;AACH;;AACD,MAAI,CAAC0B,UAAL,EAAiB;AACb,SAAKjD,MAAL;AACH;AACJ,CAPD;AAUA;;;;;;;;AAMA/C,eAAe,CAACkD,SAAhB,CAA0B+C,aAA1B,GAA0C,UAAU3B,MAAV,EAAkB;AACxDA,QAAM,CAAC4B,OAAP,GAAiB,KAAjB;;AACA,MAAI5B,MAAM,CAAC,WAAD,CAAV,EAAyB;AACrB;AACA;AACA,QAAI5B,IAAI,GAAG,IAAX;AACArC,UAAM,CAACC,IAAP,CAAYqC,KAAZ,CAAkBC,WAAlB,CAA8B0B,MAA9B,EAAsC,SAAtC,EAAiD,YAAY;AACzDA,YAAM,CAAC4B,OAAP,GAAiB,KAAjB;AACAxD,UAAI,CAACyD,OAAL;AACH,KAHD;AAIH;;AACD7B,QAAM,CAACa,QAAP,GAAkB,KAAKvE,eAAvB;AACA,OAAKA,eAAL;AACA,OAAKH,QAAL,CAAcqD,IAAd,CAAmBQ,MAAnB;AACH,CAdD;AAiBA;;;;;;;;AAMAtE,eAAe,CAACkD,SAAhB,CAA0BkD,SAA1B,GAAsC,UAAU9B,MAAV,EAAkB0B,UAAlB,EAA8B;AAChE,OAAKC,aAAL,CAAmB3B,MAAnB;;AACA,MAAI,CAAC0B,UAAL,EAAiB;AACb,SAAKjD,MAAL;AACH;AACJ,CALD;AAQA;;;;;;;;;AAOA/C,eAAe,CAACkD,SAAhB,CAA0BmD,aAA1B,GAA0C,UAAU/B,MAAV,EAAkB;AACxD,MAAIgB,KAAK,GAAG,CAAC,CAAb;;AACA,MAAI,KAAK7E,QAAL,CAAc6F,OAAlB,EAA2B;AACvBhB,SAAK,GAAG,KAAK7E,QAAL,CAAc6F,OAAd,CAAsBhC,MAAtB,CAAR;AACH,GAFD,MAEO;AACH,SAAK,IAAIX,CAAC,GAAG,CAAR,EAAW4C,CAAhB,EAAmBA,CAAC,GAAG,KAAK9F,QAAL,CAAckD,CAAd,CAAvB,EAAyCA,CAAC,EAA1C,EAA8C;AAC1C,UAAI4C,CAAC,IAAIjC,MAAT,EAAiB;AACbgB,aAAK,GAAG3B,CAAR;AACA;AACH;AACJ;AACJ;;AAED,MAAI2B,KAAK,IAAI,CAAC,CAAd,EAAiB;AACb;AACA,WAAO,KAAP;AACH;;AAEDhB,QAAM,CAAC/B,MAAP,CAAc,IAAd;AAEA,OAAK9B,QAAL,CAAc+F,MAAd,CAAqBlB,KAArB,EAA4B,CAA5B;AACA,SAAO,KAAK3E,eAAL,CAAqB2D,MAAM,CAACa,QAA5B,CAAP;AAEA,SAAO,IAAP;AACH,CAxBD;AA2BA;;;;;;;;;AAOAnF,eAAe,CAACkD,SAAhB,CAA0BuD,YAA1B,GAAyC,UAAUnC,MAAV,EAAkB0B,UAAlB,EAA8B;AACnE,MAAIU,OAAO,GAAG,KAAKL,aAAL,CAAmB/B,MAAnB,CAAd;;AAEA,MAAI,CAAC0B,UAAD,IAAeU,OAAnB,EAA4B;AACxB,SAAK5D,aAAL;AACA,SAAKC,MAAL;AACA,WAAO,IAAP;AACH,GAJD,MAIO;AACH,WAAO,KAAP;AACH;AACJ,CAVD;AAaA;;;;;;;;AAMA/C,eAAe,CAACkD,SAAhB,CAA0ByD,aAA1B,GAA0C,UAAUzC,OAAV,EAAmB8B,UAAnB,EAA+B;AACrE,MAAIU,OAAO,GAAG,KAAd;;AAEA,OAAK,IAAI/C,CAAC,GAAGO,OAAO,CAAClB,MAArB,EAA6BW,CAAC,IAAI,CAAlC,EAAqCA,CAAC,EAAtC,EAA0C;AACtC,QAAIW,MAAM,GAAGJ,OAAO,CAACP,CAAD,CAApB;AACA,QAAIiD,CAAC,GAAG,KAAKP,aAAL,CAAmB/B,MAAnB,CAAR;AACAoC,WAAO,GAAGA,OAAO,IAAIE,CAArB;AACH;;AAED,MAAI,CAACZ,UAAD,IAAeU,OAAnB,EAA4B;AACxB,SAAK5D,aAAL;AACA,SAAKC,MAAL;AACA,WAAO,IAAP;AACH;AACJ,CAdD;AAiBA;;;;;;;;AAMA/C,eAAe,CAACkD,SAAhB,CAA0BO,SAA1B,GAAsC,UAAUoD,KAAV,EAAiB;AACnD,MAAI,CAAC,KAAK3F,MAAV,EAAkB;AACd,SAAKA,MAAL,GAAc2F,KAAd;AACA,SAAKC,eAAL;AACH;AACJ,CALD;AAQA;;;;;;;AAKA9G,eAAe,CAACkD,SAAhB,CAA0B6D,gBAA1B,GAA6C,YAAY;AACrD,SAAO,KAAKrG,SAAL,CAAesC,MAAtB;AACH,CAFD;AAKA;;;;;;;AAKAhD,eAAe,CAACkD,SAAhB,CAA0B8D,WAA1B,GAAwC,YAAY;AAChD,SAAO,KAAKtG,SAAZ;AACH,CAFD;AAKA;;;;;;;AAKAV,eAAe,CAACkD,SAAhB,CAA0B+D,MAA1B,GAAmC,YAAY;AAC3C,SAAO,KAAKzG,IAAZ;AACH,CAFD;AAKA;;;;;;;AAKAR,eAAe,CAACkD,SAAhB,CAA0BX,MAA1B,GAAmC,UAAUtC,GAAV,EAAe;AAC9C,OAAKO,IAAL,GAAYP,GAAZ;AACH,CAFD;AAKA;;;;;;;AAKAD,eAAe,CAACkD,SAAhB,CAA0BgE,WAA1B,GAAwC,YAAY;AAChD,SAAO,KAAK9F,SAAZ;AACH,CAFD;AAKA;;;;;;;AAKApB,eAAe,CAACkD,SAAhB,CAA0BiE,WAA1B,GAAwC,UAAUvD,IAAV,EAAgB;AACpD,OAAKxC,SAAL,GAAiBwC,IAAjB;AACH,CAFD;AAKA;;;;;;;AAKA5D,eAAe,CAACkD,SAAhB,CAA0BkE,iBAA1B,GAA8C,YAAY;AACtD,SAAO,KAAK9F,eAAZ;AACH,CAFD;AAIA;;;;;;;AAKAtB,eAAe,CAACkD,SAAhB,CAA0BmE,iBAA1B,GAA8C,UAAUzD,IAAV,EAAgB;AAC1D,OAAKtC,eAAL,GAAuBsC,IAAvB;AACH,CAFD;AAKA;;;;;;;;AAMA5D,eAAe,CAACkD,SAAhB,CAA0BoE,iBAA1B,GAA8C,UAAUlD,MAAV,EAAkB;AAC5D,MAAImD,UAAU,GAAG,KAAKC,aAAL,EAAjB,CAD4D,CAG5D;;AACA,MAAIC,EAAE,GAAG,IAAIpH,MAAM,CAACC,IAAP,CAAYoH,MAAhB,CAAuBtD,MAAM,CAACuD,YAAP,GAAsBC,GAAtB,EAAvB,EACLxD,MAAM,CAACuD,YAAP,GAAsBE,GAAtB,EADK,CAAT;AAEA,MAAIC,EAAE,GAAG,IAAIzH,MAAM,CAACC,IAAP,CAAYoH,MAAhB,CAAuBtD,MAAM,CAAC2D,YAAP,GAAsBH,GAAtB,EAAvB,EACLxD,MAAM,CAAC2D,YAAP,GAAsBF,GAAtB,EADK,CAAT,CAN4D,CAS5D;;AACA,MAAIG,KAAK,GAAGT,UAAU,CAACU,oBAAX,CAAgCR,EAAhC,CAAZ;AACAO,OAAK,CAACE,CAAN,IAAW,KAAK9G,SAAhB;AACA4G,OAAK,CAACG,CAAN,IAAW,KAAK/G,SAAhB;AAEA,MAAIgH,KAAK,GAAGb,UAAU,CAACU,oBAAX,CAAgCH,EAAhC,CAAZ;AACAM,OAAK,CAACF,CAAN,IAAW,KAAK9G,SAAhB;AACAgH,OAAK,CAACD,CAAN,IAAW,KAAK/G,SAAhB,CAhB4D,CAkB5D;;AACA,MAAIiH,EAAE,GAAGd,UAAU,CAACe,oBAAX,CAAgCN,KAAhC,CAAT;AACA,MAAIO,EAAE,GAAGhB,UAAU,CAACe,oBAAX,CAAgCF,KAAhC,CAAT,CApB4D,CAsB5D;;AACAhE,QAAM,CAAChE,MAAP,CAAciI,EAAd;AACAjE,QAAM,CAAChE,MAAP,CAAcmI,EAAd;AAEA,SAAOnE,MAAP;AACH,CA3BD;AA8BA;;;;;;;;;;AAQApE,eAAe,CAACkD,SAAhB,CAA0BsF,iBAA1B,GAA8C,UAAUlE,MAAV,EAAkBF,MAAlB,EAA0B;AACpE,SAAOA,MAAM,CAACqE,QAAP,CAAgBnE,MAAM,CAACC,WAAP,EAAhB,CAAP;AACH,CAFD;AAKA;;;;;AAGAvE,eAAe,CAACkD,SAAhB,CAA0BwF,YAA1B,GAAyC,YAAY;AACjD,OAAK5F,aAAL,CAAmB,IAAnB,EADiD,CAGjD;;AACA,OAAKrC,QAAL,GAAgB,EAAhB;AACA,OAAKE,eAAL,GAAuB,EAAvB;AACA,OAAKC,eAAL,GAAuB,CAAvB;AACH,CAPD;AAUA;;;;;;AAIAZ,eAAe,CAACkD,SAAhB,CAA0BJ,aAA1B,GAA0C,UAAU6F,QAAV,EAAoB;AAC1D;AACA,OAAK,IAAIhF,CAAC,GAAG,CAAR,EAAWiF,OAAhB,EAAyBA,OAAO,GAAG,KAAKlI,SAAL,CAAeiD,CAAf,CAAnC,EAAsDA,CAAC,EAAvD,EAA2D;AACvDiF,WAAO,CAACC,MAAR;AACH,GAJyD,CAM1D;;;AACA,OAAK,IAAIlF,CAAC,GAAG,CAAR,EAAWW,MAAhB,EAAwBA,MAAM,GAAG,KAAK7D,QAAL,CAAckD,CAAd,CAAjC,EAAmDA,CAAC,EAApD,EAAwD;AACpDW,UAAM,CAAC4B,OAAP,GAAiB,KAAjB;;AACA,QAAIyC,QAAJ,EAAc;AACVrE,YAAM,CAAC/B,MAAP,CAAc,IAAd;AACH;AACJ;;AAED,OAAK7B,SAAL,GAAiB,EAAjB;AACA,OAAKC,eAAL,GAAuB,EAAvB;AACA,OAAKC,eAAL,GAAuB,CAAvB;AACH,CAjBD;AAmBA;;;;;AAGAZ,eAAe,CAACkD,SAAhB,CAA0BiD,OAA1B,GAAoC,YAAY;AAC5C,MAAI2C,WAAW,GAAG,KAAKpI,SAAL,CAAeqI,KAAf,EAAlB;AACA,OAAKrI,SAAL,CAAesC,MAAf,GAAwB,CAAxB;AACA,OAAKF,aAAL;AACA,OAAKC,MAAL,GAJ4C,CAM5C;AACA;;AACAiG,QAAM,CAACC,UAAP,CAAkB,YAAY;AAC1B,SAAK,IAAItF,CAAC,GAAG,CAAR,EAAWiF,OAAhB,EAAyBA,OAAO,GAAGE,WAAW,CAACnF,CAAD,CAA9C,EAAmDA,CAAC,EAApD,EAAwD;AACpDiF,aAAO,CAACC,MAAR;AACH;AACJ,GAJD,EAIG,CAJH;AAKH,CAbD;AAgBA;;;;;AAGA7I,eAAe,CAACkD,SAAhB,CAA0BH,MAA1B,GAAmC,YAAY;AAC3C,OAAK+D,eAAL;AACH,CAFD;AAKA;;;;;;;;;;;AASA9G,eAAe,CAACkD,SAAhB,CAA0BgG,sBAA1B,GAAmD,UAAUC,EAAV,EAAcC,EAAd,EAAkB;AACjE,MAAI,CAACD,EAAD,IAAO,CAACC,EAAZ,EAAgB;AACZ,WAAO,CAAP;AACH;;AAED,MAAIC,CAAC,GAAG,IAAR,CALiE,CAKnD;;AACd,MAAIC,IAAI,GAAG,CAACF,EAAE,CAACxB,GAAH,KAAWuB,EAAE,CAACvB,GAAH,EAAZ,IAAwBlC,IAAI,CAAC6D,EAA7B,GAAkC,GAA7C;AACA,MAAIC,IAAI,GAAG,CAACJ,EAAE,CAACvB,GAAH,KAAWsB,EAAE,CAACtB,GAAH,EAAZ,IAAwBnC,IAAI,CAAC6D,EAA7B,GAAkC,GAA7C;AACA,MAAIE,CAAC,GAAG/D,IAAI,CAACgE,GAAL,CAASJ,IAAI,GAAG,CAAhB,IAAqB5D,IAAI,CAACgE,GAAL,CAASJ,IAAI,GAAG,CAAhB,CAArB,GACJ5D,IAAI,CAACiE,GAAL,CAASR,EAAE,CAACvB,GAAH,KAAWlC,IAAI,CAAC6D,EAAhB,GAAqB,GAA9B,IAAqC7D,IAAI,CAACiE,GAAL,CAASP,EAAE,CAACxB,GAAH,KAAWlC,IAAI,CAAC6D,EAAhB,GAAqB,GAA9B,CAArC,GACA7D,IAAI,CAACgE,GAAL,CAASF,IAAI,GAAG,CAAhB,CADA,GACqB9D,IAAI,CAACgE,GAAL,CAASF,IAAI,GAAG,CAAhB,CAFzB;AAGA,MAAII,CAAC,GAAG,IAAIlE,IAAI,CAACmE,KAAL,CAAWnE,IAAI,CAACoE,IAAL,CAAUL,CAAV,CAAX,EAAyB/D,IAAI,CAACoE,IAAL,CAAU,IAAIL,CAAd,CAAzB,CAAZ;AACA,MAAIM,CAAC,GAAGV,CAAC,GAAGO,CAAZ;AACA,SAAOG,CAAP;AACH,CAdD;AAiBA;;;;;;;;AAMA/J,eAAe,CAACkD,SAAhB,CAA0B8G,oBAA1B,GAAiD,UAAU1F,MAAV,EAAkB;AAC/D,MAAI2F,QAAQ,GAAG,KAAf,CAD+D,CACzC;;AACtB,MAAIC,cAAc,GAAG,IAArB;AACA,MAAIC,GAAG,GAAG7F,MAAM,CAACC,WAAP,EAAV;AACA,MAAI6F,YAAY,GAAG,IAAnB;;AACA,OAAK,IAAIzG,CAAC,GAAG,CAAR,EAAWiF,OAAhB,EAAyBA,OAAO,GAAG,KAAKlI,SAAL,CAAeiD,CAAf,CAAnC,EAAsDA,CAAC,EAAvD,EAA2D;AACvD,QAAI0G,MAAM,GAAGzB,OAAO,CAAC0B,SAAR,EAAb;;AACA,QAAID,MAAJ,EAAY;AACR,UAAIN,CAAC,GAAG,KAAKb,sBAAL,CAA4BmB,MAA5B,EAAoC/F,MAAM,CAACC,WAAP,EAApC,CAAR;;AACA,UAAIwF,CAAC,GAAGE,QAAR,EAAkB;AACdA,gBAAQ,GAAGF,CAAX;AACAG,sBAAc,GAAGtB,OAAjB;AACAwB,oBAAY,GAAGzG,CAAf;AACH;AACJ;AACJ;;AAED,MAAIuG,cAAc,IAAIA,cAAc,CAACK,uBAAf,CAAuCjG,MAAvC,CAAtB,EAAsE;AAClE4F,kBAAc,CAAC9D,SAAf,CAAyB9B,MAAzB;AACH,GAFD,MAEO;AACH,QAAIsE,OAAO,GAAG,IAAI4B,OAAJ,CAAY,IAAZ,CAAd;AACA5B,WAAO,CAACxC,SAAR,CAAkB9B,MAAlB;AACA,SAAK5D,SAAL,CAAeoD,IAAf,CAAoB8E,OAApB;AACAwB,gBAAY,GAAG,KAAK1J,SAAL,CAAesC,MAAf,GAAwB,CAAvC;AACH;;AAED,MAAIsB,MAAM,CAAC4B,OAAX,EAAoB;AAChB,SAAKvF,eAAL,CAAqB2D,MAAM,CAACa,QAA5B,IAAwCiF,YAAxC;AACH;AACJ,CA7BD;AAgCA;;;;;;;AAKApK,eAAe,CAACkD,SAAhB,CAA0B4D,eAA1B,GAA4C,YAAY;AACpD,MAAI,CAAC,KAAK5F,MAAV,EAAkB;AACd;AACH,GAHmD,CAKpD;AACA;;;AACA,MAAIuJ,SAAS,GAAG,IAAIpK,MAAM,CAACC,IAAP,CAAY+D,YAAhB,CAA6B,KAAK7D,IAAL,CAAUkK,SAAV,GAAsB3C,YAAtB,EAA7B,EACZ,KAAKvH,IAAL,CAAUkK,SAAV,GAAsB/C,YAAtB,EADY,CAAhB;AAEA,MAAIvD,MAAM,GAAG,KAAKkD,iBAAL,CAAuBmD,SAAvB,CAAb;;AAEA,OAAK,IAAI9G,CAAC,GAAG,CAAR,EAAWW,MAAhB,EAAwBA,MAAM,GAAG,KAAK7D,QAAL,CAAckD,CAAd,CAAjC,EAAmDA,CAAC,EAApD,EAAwD;AACpD,QAAI,CAACW,MAAM,CAAC4B,OAAR,IAAmB,KAAKsC,iBAAL,CAAuBlE,MAAvB,EAA+BF,MAA/B,CAAnB,KAA8D,CAAC,KAAK7C,oBAAN,IAA8B+C,MAAM,CAACqG,UAAP,EAA5F,CAAJ,EAAsH;AAClH,WAAKX,oBAAL,CAA0B1F,MAA1B;AACH;AACJ;AACJ,CAhBD;AAmBA;;;;;;;;;;AAQA,SAASkG,OAAT,CAAiBI,eAAjB,EAAkC;AAC9B,OAAKC,gBAAL,GAAwBD,eAAxB;AACA,OAAKpK,IAAL,GAAYoK,eAAe,CAAC3D,MAAhB,EAAZ;AACA,OAAK7F,SAAL,GAAiBwJ,eAAe,CAAC1D,WAAhB,EAAjB;AACA,OAAK5F,eAAL,GAAuBsJ,eAAe,CAACxD,iBAAhB,EAAvB;AACA,OAAKtF,cAAL,GAAsB8I,eAAe,CAAC/F,eAAhB,EAAtB;AACA,OAAKiG,OAAL,GAAe,IAAf;AACA,OAAKrK,QAAL,GAAgB,EAAhB;AACA,OAAKsK,OAAL,GAAe,IAAf;AACA,OAAKC,YAAL,GAAoB,IAAIC,WAAJ,CAAgB,IAAhB,EAAsBL,eAAe,CAACjG,SAAhB,EAAtB,EAChBiG,eAAe,CAAC1D,WAAhB,EADgB,CAApB;AAEH;AAED;;;;;;;;AAMAsD,OAAO,CAACtH,SAAR,CAAkBgI,oBAAlB,GAAyC,UAAU5G,MAAV,EAAkB;AACvD,MAAI,KAAK7D,QAAL,CAAc6F,OAAlB,EAA2B;AACvB,WAAO,KAAK7F,QAAL,CAAc6F,OAAd,CAAsBhC,MAAtB,KAAiC,CAAC,CAAzC;AACH,GAFD,MAEO;AACH,SAAK,IAAIX,CAAC,GAAG,CAAR,EAAW4C,CAAhB,EAAmBA,CAAC,GAAG,KAAK9F,QAAL,CAAckD,CAAd,CAAvB,EAAyCA,CAAC,EAA1C,EAA8C;AAC1C,UAAI4C,CAAC,IAAIjC,MAAT,EAAiB;AACb,eAAO,IAAP;AACH;AACJ;AACJ;;AACD,SAAO,KAAP;AACH,CAXD;AAcA;;;;;;;;AAMAkG,OAAO,CAACtH,SAAR,CAAkBkD,SAAlB,GAA8B,UAAU9B,MAAV,EAAkB;AAC5C,MAAI,KAAK4G,oBAAL,CAA0B5G,MAA1B,CAAJ,EAAuC;AACnC,WAAO,KAAP;AACH;;AAED,MAAI,CAAC,KAAKwG,OAAV,EAAmB;AACf,SAAKA,OAAL,GAAexG,MAAM,CAACC,WAAP,EAAf;AACA,SAAK4G,gBAAL;AACH,GAHD,MAGO;AACH,QAAI,KAAKrJ,cAAT,EAAyB;AACrB,UAAIsJ,CAAC,GAAG,KAAK3K,QAAL,CAAcuC,MAAd,GAAuB,CAA/B;AACA,UAAI4E,GAAG,GAAG,CAAC,KAAKkD,OAAL,CAAalD,GAAb,MAAsBwD,CAAC,GAAG,CAA1B,IAA+B9G,MAAM,CAACC,WAAP,GAAqBqD,GAArB,EAAhC,IAA8DwD,CAAxE;AACA,UAAIvD,GAAG,GAAG,CAAC,KAAKiD,OAAL,CAAajD,GAAb,MAAsBuD,CAAC,GAAG,CAA1B,IAA+B9G,MAAM,CAACC,WAAP,GAAqBsD,GAArB,EAAhC,IAA8DuD,CAAxE;AACA,WAAKN,OAAL,GAAe,IAAIzK,MAAM,CAACC,IAAP,CAAYoH,MAAhB,CAAuBE,GAAvB,EAA4BC,GAA5B,CAAf;AACA,WAAKsD,gBAAL;AACH;AACJ;;AAED7G,QAAM,CAAC4B,OAAP,GAAiB,IAAjB;AACA,OAAKzF,QAAL,CAAcqD,IAAd,CAAmBQ,MAAnB;AAEA,MAAI+G,GAAG,GAAG,KAAK5K,QAAL,CAAcuC,MAAxB;;AACA,MAAIqI,GAAG,GAAG,KAAK/J,eAAX,IAA8BgD,MAAM,CAAC2C,MAAP,MAAmB,KAAKzG,IAA1D,EAAgE;AAC5D;AACA8D,UAAM,CAAC/B,MAAP,CAAc,KAAK/B,IAAnB;AACH;;AAED,MAAI6K,GAAG,IAAI,KAAK/J,eAAhB,EAAiC;AAC7B;AACA,SAAK,IAAIqC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0H,GAApB,EAAyB1H,CAAC,EAA1B,EAA8B;AAC1B,WAAKlD,QAAL,CAAckD,CAAd,EAAiBpB,MAAjB,CAAwB,IAAxB;AACH;AACJ;;AAED,MAAI8I,GAAG,IAAI,KAAK/J,eAAhB,EAAiC;AAC7BgD,UAAM,CAAC/B,MAAP,CAAc,IAAd;AACH;;AAED,OAAK+I,UAAL;AACA,SAAO,IAAP;AACH,CAxCD;AA2CA;;;;;;;AAKAd,OAAO,CAACtH,SAAR,CAAkBqI,kBAAlB,GAAuC,YAAY;AAC/C,SAAO,KAAKV,gBAAZ;AACH,CAFD;AAKA;;;;;;;AAKAL,OAAO,CAACtH,SAAR,CAAkBwH,SAAlB,GAA8B,YAAY;AACtC,MAAItG,MAAM,GAAG,IAAI/D,MAAM,CAACC,IAAP,CAAY+D,YAAhB,CAA6B,KAAKyG,OAAlC,EAA2C,KAAKA,OAAhD,CAAb;AACA,MAAI5G,OAAO,GAAG,KAAKC,UAAL,EAAd;;AACA,OAAK,IAAIR,CAAC,GAAG,CAAR,EAAWW,MAAhB,EAAwBA,MAAM,GAAGJ,OAAO,CAACP,CAAD,CAAxC,EAA6CA,CAAC,EAA9C,EAAkD;AAC9CS,UAAM,CAAChE,MAAP,CAAckE,MAAM,CAACC,WAAP,EAAd;AACH;;AACD,SAAOH,MAAP;AACH,CAPD;AAUA;;;;;AAGAoG,OAAO,CAACtH,SAAR,CAAkB2F,MAAlB,GAA2B,YAAY;AACnC,OAAKmC,YAAL,CAAkBnC,MAAlB;AACA,OAAKpI,QAAL,CAAcuC,MAAd,GAAuB,CAAvB;AACA,SAAO,KAAKvC,QAAZ;AACH,CAJD;AAOA;;;;;;;AAKA+J,OAAO,CAACtH,SAAR,CAAkBsI,OAAlB,GAA4B,YAAY;AACpC,SAAO,KAAK/K,QAAL,CAAcuC,MAArB;AACH,CAFD;AAKA;;;;;;;AAKAwH,OAAO,CAACtH,SAAR,CAAkBiB,UAAlB,GAA+B,YAAY;AACvC,SAAO,KAAK1D,QAAZ;AACH,CAFD;AAKA;;;;;;;AAKA+J,OAAO,CAACtH,SAAR,CAAkBoH,SAAlB,GAA8B,YAAY;AACtC,SAAO,KAAKQ,OAAZ;AACH,CAFD;AAKA;;;;;;;AAKAN,OAAO,CAACtH,SAAR,CAAkBiI,gBAAlB,GAAqC,YAAY;AAC7C,MAAI/G,MAAM,GAAG,IAAI/D,MAAM,CAACC,IAAP,CAAY+D,YAAhB,CAA6B,KAAKyG,OAAlC,EAA2C,KAAKA,OAAhD,CAAb;AACA,OAAKC,OAAL,GAAe,KAAKF,gBAAL,CAAsBvD,iBAAtB,CAAwClD,MAAxC,CAAf;AACH,CAHD;AAMA;;;;;;;;AAMAoG,OAAO,CAACtH,SAAR,CAAkBqH,uBAAlB,GAA4C,UAAUjG,MAAV,EAAkB;AAC1D,SAAO,KAAKyG,OAAL,CAAatC,QAAb,CAAsBnE,MAAM,CAACC,WAAP,EAAtB,CAAP;AACH,CAFD;AAKA;;;;;;;AAKAiG,OAAO,CAACtH,SAAR,CAAkB+D,MAAlB,GAA2B,YAAY;AACnC,SAAO,KAAKzG,IAAZ;AACH,CAFD;AAKA;;;;;AAGAgK,OAAO,CAACtH,SAAR,CAAkBoI,UAAlB,GAA+B,YAAY;AACvC,MAAIzI,IAAI,GAAG,KAAKrC,IAAL,CAAUiC,OAAV,EAAX;AACA,MAAIgJ,EAAE,GAAG,KAAKZ,gBAAL,CAAsB5F,UAAtB,EAAT;;AAEA,MAAIwG,EAAE,IAAI5I,IAAI,GAAG4I,EAAjB,EAAqB;AACjB;AACA,SAAK,IAAI9H,CAAC,GAAG,CAAR,EAAWW,MAAhB,EAAwBA,MAAM,GAAG,KAAK7D,QAAL,CAAckD,CAAd,CAAjC,EAAmDA,CAAC,EAApD,EAAwD;AACpDW,YAAM,CAAC/B,MAAP,CAAc,KAAK/B,IAAnB;AACH;;AACD;AACH;;AAED,MAAI,KAAKC,QAAL,CAAcuC,MAAd,GAAuB,KAAK1B,eAAhC,EAAiD;AAC7C;AACA,SAAK0J,YAAL,CAAkBU,IAAlB;AACA;AACH;;AAED,MAAIrG,SAAS,GAAG,KAAKwF,gBAAL,CAAsBlG,SAAtB,GAAkC3B,MAAlD;AACA,MAAI2I,IAAI,GAAG,KAAKd,gBAAL,CAAsB9E,aAAtB,GAAsC,KAAKtF,QAA3C,EAAqD4E,SAArD,CAAX;AACA,OAAK2F,YAAL,CAAkBY,SAAlB,CAA4B,KAAKd,OAAjC;AACA,OAAKE,YAAL,CAAkBa,OAAlB,CAA0BF,IAA1B;AACA,OAAKX,YAAL,CAAkBc,IAAlB;AACH,CAvBD;AA0BA;;;;;;;;;;;;;;;;;;;AAiBA,SAASb,WAAT,CAAqBrC,OAArB,EAA8BlE,MAA9B,EAAsCqH,WAAtC,EAAmD;AAC/CnD,SAAO,CAAC2C,kBAAR,GAA6BnL,MAA7B,CAAoC6K,WAApC,EAAiD5K,MAAM,CAACC,IAAP,CAAYC,WAA7D;AAEA,OAAKO,OAAL,GAAe4D,MAAf;AACA,OAAKsH,QAAL,GAAgBD,WAAW,IAAI,CAA/B;AACA,OAAKE,QAAL,GAAgBrD,OAAhB;AACA,OAAKkC,OAAL,GAAe,IAAf;AACA,OAAKtK,IAAL,GAAYoI,OAAO,CAAC3B,MAAR,EAAZ;AACA,OAAKiF,IAAL,GAAY,IAAZ;AACA,OAAKC,KAAL,GAAa,IAAb;AACA,OAAKC,QAAL,GAAgB,KAAhB;AAEA,OAAK7J,MAAL,CAAY,KAAK/B,IAAjB;AACH;AAED;;;;;;;AAKAyK,WAAW,CAAC/H,SAAZ,CAAsBmJ,mBAAtB,GAA4C,UAAU1J,KAAV,EAAiB;AACzD,MAAIiI,eAAe,GAAG,KAAKqB,QAAL,CAAcV,kBAAd,EAAtB,CADyD,CAGzD;;AACAlL,QAAM,CAACC,IAAP,CAAYqC,KAAZ,CAAkB2J,OAAlB,CAA0B1B,eAA1B,EAA2C,cAA3C,EAA2D,KAAKqB,QAAhE,EAA0EtJ,KAA1E;;AAEA,MAAIiI,eAAe,CAAChG,aAAhB,EAAJ,EAAqC;AACjC;AACA,SAAKpE,IAAL,CAAUgE,SAAV,CAAoB,KAAKyH,QAAL,CAAcvB,SAAd,EAApB;AACH;AACJ,CAVD;AAYA;;;;;;AAIAO,WAAW,CAAC/H,SAAZ,CAAsBqJ,uBAAtB,GAAgD,UAAU5J,KAAV,EAAiB;AAC7D,MAAIiI,eAAe,GAAG,KAAKqB,QAAL,CAAcV,kBAAd,EAAtB,CAD6D,CAG7D;;AACAlL,QAAM,CAACC,IAAP,CAAYqC,KAAZ,CAAkB2J,OAAlB,CAA0B1B,eAA1B,EAA2C,kBAA3C,EAA+D,KAAKqB,QAApE,EAA8EtJ,KAA9E;;AAEA,MAAI,OAAO,KAAKsJ,QAAL,CAAcpB,gBAAd,CAA+B9I,mBAAtC,KAA8D,UAAlE,EAA8E;AAC1E,SAAKkK,QAAL,CAAcpB,gBAAd,CAA+B9I,mBAA/B,CAAmD,IAAnD,EAAyDY,KAAzD;AACH;AACJ,CATD;AAWA;;;;;;AAIAsI,WAAW,CAAC/H,SAAZ,CAAsBsJ,sBAAtB,GAA+C,UAAU7J,KAAV,EAAiB;AAC5D,MAAIiI,eAAe,GAAG,KAAKqB,QAAL,CAAcV,kBAAd,EAAtB,CAD4D,CAG5D;;AACAlL,QAAM,CAACC,IAAP,CAAYqC,KAAZ,CAAkB2J,OAAlB,CAA0B1B,eAA1B,EAA2C,iBAA3C,EAA8D,KAAKqB,QAAnE,EAA6EtJ,KAA7E;;AAEA,MAAI,OAAO,KAAKsJ,QAAL,CAAcpB,gBAAd,CAA+B7I,kBAAtC,KAA6D,UAAjE,EAA6E;AACzE,SAAKiK,QAAL,CAAcpB,gBAAd,CAA+B7I,kBAA/B,CAAkD,IAAlD,EAAwDW,KAAxD;AACH;AACJ,CATD;AAWA;;;;;;AAIAsI,WAAW,CAAC/H,SAAZ,CAAsBM,KAAtB,GAA8B,YAAY;AACtC,MAAI,OAAO,KAAKyI,QAAL,CAAcpB,gBAAd,CAA+BzI,aAAtC,KAAwD,UAA5D,EAAwE;AACpE,SAAK6J,QAAL,CAAcpB,gBAAd,CAA+BzI,aAA/B,CAA6C,IAA7C;AACH,GAFD,MAGK;AACDqK,uBAAmB,CAAC,IAAD,CAAnB;AACH;AACJ,CAPD;AASA;;;;;;AAIA,SAASA,mBAAT,CAA6BC,WAA7B,EAA0C;AACtCA,aAAW,CAACR,IAAZ,GAAmBS,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAnB;;AACA,MAAIF,WAAW,CAACN,QAAhB,EAA0B;AACtB,QAAIjC,GAAG,GAAGuC,WAAW,CAACG,iBAAZ,CAA8BH,WAAW,CAAC5B,OAA1C,CAAV;AACA4B,eAAW,CAACR,IAAZ,CAAiBY,KAAjB,CAAuBC,OAAvB,GAAiCL,WAAW,CAACM,SAAZ,CAAsB7C,GAAtB,CAAjC;AACAuC,eAAW,CAACR,IAAZ,CAAiBe,SAAjB,GAA6BP,WAAW,CAACP,KAAZ,CAAkBvG,IAA/C;AACA8G,eAAW,CAACQ,QAAZ;AACH;;AAED,MAAIC,KAAK,GAAGT,WAAW,CAACU,QAAZ,EAAZ;AAEAD,OAAK,CAACE,kBAAN,CAAyBC,WAAzB,CAAqCZ,WAAW,CAACR,IAAjD;AAEA,MAAIqB,UAAU,GAAG,KAAjB;AACA,MAAIC,WAAW,GAAG,KAAlB;AAEAnN,QAAM,CAACC,IAAP,CAAYqC,KAAZ,CAAkB8K,cAAlB,CAAiCf,WAAW,CAACR,IAA7C,EAAmD,OAAnD,EAA4D,UAAUvJ,KAAV,EAAiB;AACzE;AACA,QAAI,CAAC4K,UAAL,EAAiB;AACbb,iBAAW,CAACL,mBAAZ,CAAgC1J,KAAhC;AACH;AACJ,GALD;AAOAtC,QAAM,CAACC,IAAP,CAAYqC,KAAZ,CAAkB8K,cAAlB,CAAiCf,WAAW,CAACR,IAA7C,EAAmD,WAAnD,EAAgE,YAAY;AACxEqB,cAAU,GAAG,KAAb;AACAC,eAAW,GAAG,IAAd;AACH,GAHD;AAKAnN,QAAM,CAACC,IAAP,CAAYqC,KAAZ,CAAkB8K,cAAlB,CAAiCf,WAAW,CAACR,IAA7C,EAAmD,SAAnD,EAA8D,YAAY;AACtEqB,cAAU,GAAG,KAAb;AACAC,eAAW,GAAG,KAAd;AACH,GAHD;AAKAnN,QAAM,CAACC,IAAP,CAAYqC,KAAZ,CAAkB8K,cAAlB,CAAiCf,WAAW,CAACR,IAA7C,EAAmD,WAAnD,EAAgE,YAAY;AACxE,QAAIsB,WAAJ,EAAiB;AACbD,gBAAU,GAAG,IAAb;AACH;AACJ,GAJD;AAMAlN,QAAM,CAACC,IAAP,CAAYqC,KAAZ,CAAkB8K,cAAlB,CAAiCf,WAAW,CAACR,IAA7C,EAAmD,WAAnD,EAAgE,UAAUvJ,KAAV,EAAiB;AAC7E+J,eAAW,CAACH,uBAAZ,CAAoC5J,KAApC;AACH,GAFD;AAIAtC,QAAM,CAACC,IAAP,CAAYqC,KAAZ,CAAkB8K,cAAlB,CAAiCf,WAAW,CAACR,IAA7C,EAAmD,UAAnD,EAA+D,UAAUvJ,KAAV,EAAiB;AAC5E+J,eAAW,CAACF,sBAAZ,CAAmC7J,KAAnC;AACH,GAFD;AAGH;AAED;;;;;;;;;AAOAsI,WAAW,CAAC/H,SAAZ,CAAsB2J,iBAAtB,GAA0C,UAAUa,MAAV,EAAkB;AACxD,MAAIvD,GAAG,GAAG,KAAK3C,aAAL,GAAqBS,oBAArB,CAA0CyF,MAA1C,CAAV;;AAEA,MAAI,QAAO,KAAKC,WAAZ,MAA4B,QAA5B,IAAwC,KAAKA,WAAL,CAAiB3K,MAAjB,KAA4B,CAAxE,EAA2E;AACvEmH,OAAG,CAACjC,CAAJ,IAAS,KAAKyF,WAAL,CAAiB,CAAjB,CAAT;AACAxD,OAAG,CAAChC,CAAJ,IAAS,KAAKwF,WAAL,CAAiB,CAAjB,CAAT;AACH,GAHD,MAGO;AACHxD,OAAG,CAACjC,CAAJ,IAASzC,QAAQ,CAAC,KAAKmI,MAAL,GAAc,CAAf,EAAkB,EAAlB,CAAjB;AACAzD,OAAG,CAAChC,CAAJ,IAAS1C,QAAQ,CAAC,KAAKoI,OAAL,GAAe,CAAhB,EAAmB,EAAnB,CAAjB;AACH;;AACD,SAAO1D,GAAP;AACH,CAXD;AAcA;;;;;;AAIAc,WAAW,CAAC/H,SAAZ,CAAsBQ,IAAtB,GAA6B,YAAY;AACrC,MAAI,OAAO,KAAKuI,QAAL,CAAcpB,gBAAd,CAA+B5I,YAAtC,KAAuD,UAA3D,EAAuE;AACnE,SAAKgK,QAAL,CAAcpB,gBAAd,CAA+B5I,YAA/B,CAA4C,IAA5C;AACH,GAFD,MAGK;AACD6L,sBAAkB,CAAC,IAAD,CAAlB;AACH;AACJ,CAPD;AASA;;;;;;AAIA,SAASA,kBAAT,CAA4BpB,WAA5B,EAAyC;AACrC,MAAIA,WAAW,CAACN,QAAhB,EAA0B;AACtB,QAAIjC,GAAG,GAAGuC,WAAW,CAACG,iBAAZ,CAA8BH,WAAW,CAAC5B,OAA1C,CAAV;AACA4B,eAAW,CAACR,IAAZ,CAAiBY,KAAjB,CAAuBiB,GAAvB,GAA6B5D,GAAG,CAAChC,CAAJ,GAAQ,IAArC;AACAuE,eAAW,CAACR,IAAZ,CAAiBY,KAAjB,CAAuBkB,IAAvB,GAA8B7D,GAAG,CAACjC,CAAJ,GAAQ,IAAtC;AACH;AACJ;AAGD;;;;;AAGA+C,WAAW,CAAC/H,SAAZ,CAAsBwI,IAAtB,GAA6B,YAAY;AACrC,MAAI,OAAO,KAAKO,QAAL,CAAcpB,gBAAd,CAA+B3I,YAAtC,KAAuD,UAA3D,EAAuE;AACnE,SAAK+J,QAAL,CAAcpB,gBAAd,CAA+B3I,YAA/B,CAA4C,IAA5C;AACH,GAFD,MAGK;AACD+L,sBAAkB,CAAC,IAAD,CAAlB;AACH;AACJ,CAPD;AAUA;;;;;;AAIA,SAASA,kBAAT,CAA4BvB,WAA5B,EAAyC;AACrC,MAAIA,WAAW,CAACR,IAAhB,EAAsB;AAClBQ,eAAW,CAACR,IAAZ,CAAiBY,KAAjB,CAAuBoB,OAAvB,GAAiC,MAAjC;AACAxB,eAAW,CAACR,IAAZ,CAAiBiC,SAAjB,GAA6B,EAA7B;AACH;;AACDzB,aAAW,CAACN,QAAZ,GAAuB,KAAvB;AACH;AAGD;;;;;AAGAnB,WAAW,CAAC/H,SAAZ,CAAsB4I,IAAtB,GAA6B,YAAY;AACrC,MAAI,OAAO,KAAKG,QAAL,CAAcpB,gBAAd,CAA+B1I,YAAtC,KAAuD,UAA3D,EAAuE;AACnE,SAAK8J,QAAL,CAAcpB,gBAAd,CAA+B1I,YAA/B,CAA4C,IAA5C;AACH,GAFD,MAGK;AACDiM,sBAAkB,CAAC,IAAD,CAAlB;AACH;AACJ,CAPD;AASA;;;;;;AAIA,SAASA,kBAAT,CAA4B1B,WAA5B,EAAyC;AACrC,MAAIA,WAAW,CAACR,IAAhB,EAAsB;AAClB,QAAI/B,GAAG,GAAGuC,WAAW,CAACG,iBAAZ,CAA8BH,WAAW,CAAC5B,OAA1C,CAAV;AACA4B,eAAW,CAACR,IAAZ,CAAiBY,KAAjB,CAAuBC,OAAvB,GAAiCL,WAAW,CAACM,SAAZ,CAAsB7C,GAAtB,CAAjC;AACAuC,eAAW,CAACR,IAAZ,CAAiBY,KAAjB,CAAuBoB,OAAvB,GAAiC,EAAjC;AACAxB,eAAW,CAACQ,QAAZ;AACH;;AACDR,aAAW,CAACN,QAAZ,GAAuB,IAAvB;AACH;AAGD;;;;;AAGAnB,WAAW,CAAC/H,SAAZ,CAAsB2F,MAAtB,GAA+B,YAAY;AACvC,OAAKtG,MAAL,CAAY,IAAZ;AACH,CAFD;AAKA;;;;;;AAIA0I,WAAW,CAAC/H,SAAZ,CAAsBmL,QAAtB,GAAiC,YAAY;AACzC,MAAI,OAAO,KAAKpC,QAAL,CAAcpB,gBAAd,CAA+BxI,gBAAtC,KAA2D,UAA/D,EAA2E;AACvE,SAAK4J,QAAL,CAAcpB,gBAAd,CAA+BxI,gBAA/B,CAAgD,IAAhD;AACH,GAFD,MAGK;AACDiM,0BAAsB,CAAC,IAAD,CAAtB;AACH;AACJ,CAPD;AASA;;;;;;AAIA,SAASA,sBAAT,CAAgC5B,WAAhC,EAA6C;AACzC,MAAIA,WAAW,CAACR,IAAZ,IAAoBQ,WAAW,CAACR,IAAZ,CAAiBqC,UAAzC,EAAqD;AACjD7B,eAAW,CAAChB,IAAZ;AACAgB,eAAW,CAACR,IAAZ,CAAiBqC,UAAjB,CAA4BC,WAA5B,CAAwC9B,WAAW,CAACR,IAApD;AACAQ,eAAW,CAACR,IAAZ,GAAmB,IAAnB;AACH;AACJ;AAGD;;;;;;;;;AAOAjB,WAAW,CAAC/H,SAAZ,CAAsB2I,OAAtB,GAAgC,UAAUF,IAAV,EAAgB;AAC5C,OAAKQ,KAAL,GAAaR,IAAb;AACA,OAAK8C,KAAL,GAAa9C,IAAI,CAAC/F,IAAlB;AACA,OAAK8I,MAAL,GAAc/C,IAAI,CAACrG,KAAnB;;AACA,MAAI,KAAK4G,IAAT,EAAe;AACX,SAAKA,IAAL,CAAUe,SAAV,GAAsBtB,IAAI,CAAC/F,IAA3B;AACH;;AAED,OAAK+I,QAAL;AACH,CATD;AAYA;;;;;AAGA1D,WAAW,CAAC/H,SAAZ,CAAsByL,QAAtB,GAAiC,YAAY;AACzC,MAAIrJ,KAAK,GAAGI,IAAI,CAACkJ,GAAL,CAAS,CAAT,EAAY,KAAKzC,KAAL,CAAW7G,KAAX,GAAmB,CAA/B,CAAZ;AACAA,OAAK,GAAGI,IAAI,CAACC,GAAL,CAAS,KAAK7E,OAAL,CAAakC,MAAb,GAAsB,CAA/B,EAAkCsC,KAAlC,CAAR;AACA,MAAIwH,KAAK,GAAG,KAAKhM,OAAL,CAAawE,KAAb,CAAZ;AACA,OAAKuJ,IAAL,GAAY/B,KAAK,CAAC,KAAD,CAAjB;AACA,OAAKe,OAAL,GAAef,KAAK,CAAC,QAAD,CAApB;AACA,OAAKc,MAAL,GAAcd,KAAK,CAAC,OAAD,CAAnB;AACA,OAAKgC,UAAL,GAAkBhC,KAAK,CAAC,WAAD,CAAvB;AACA,OAAKiC,OAAL,GAAejC,KAAK,CAAC,QAAD,CAApB;AACA,OAAKkC,SAAL,GAAiBlC,KAAK,CAAC,UAAD,CAAtB;AACA,OAAKmC,WAAL,GAAmBnC,KAAK,CAAC,YAAD,CAAxB;AACA,OAAKoC,WAAL,GAAmBpC,KAAK,CAAC,YAAD,CAAxB;AACA,OAAKqC,mBAAL,GAA2BrC,KAAK,CAAC,oBAAD,CAAhC;AACA,OAAKa,WAAL,GAAmBb,KAAK,CAAC,YAAD,CAAxB;AACA,OAAK7L,SAAL,GAAiBqE,KAAjB;AACH,CAfD;AAkBA;;;;;;;AAKA2F,WAAW,CAAC/H,SAAZ,CAAsB0I,SAAtB,GAAkC,UAAUvB,MAAV,EAAkB;AAChD,OAAKS,OAAL,GAAeT,MAAf;AACH,CAFD;AAKA;;;;;;;;AAMAY,WAAW,CAAC/H,SAAZ,CAAsB8J,SAAtB,GAAkC,UAAU7C,GAAV,EAAe;AAC7C,MAAI2C,KAAK,GAAG,EAAZ;AACA,MAAIlC,eAAe,GAAG,KAAKqB,QAAL,CAAcV,kBAAd,EAAtB;;AAEA,MAAI,CAACX,eAAe,CAAC7J,SAArB,EAAgC;AAC5B+L,SAAK,CAAChJ,IAAN,CAAW,0BAA0B,KAAK+K,IAA/B,GAAsC,IAAjD;AACA,QAAIO,kBAAkB,GAAG,KAAKD,mBAAL,GAA2B,KAAKA,mBAAhC,GAAsD,KAA/E;AACArC,SAAK,CAAChJ,IAAN,CAAW,yBAAyBsL,kBAAzB,GAA8C,GAAzD;;AAEA,QAAI,QAAO,KAAKL,OAAZ,MAAwB,QAA5B,EAAsC;AAClC,UAAI,OAAO,KAAKA,OAAL,CAAa,CAAb,CAAP,KAA2B,QAA3B,IAAuC,KAAKA,OAAL,CAAa,CAAb,IAAkB,CAAzD,IACA,KAAKA,OAAL,CAAa,CAAb,IAAkB,KAAKlB,OAD3B,EACoC;AAChCf,aAAK,CAAChJ,IAAN,CAAW,aAAa,KAAK+J,OAAL,GAAe,KAAKkB,OAAL,CAAa,CAAb,CAA5B,IACP,kBADO,GACc,KAAKA,OAAL,CAAa,CAAb,CADd,GACgC,KAD3C;AAEH,OAJD,MAIO,IAAI,OAAO,KAAKA,OAAL,CAAa,CAAb,CAAP,KAA2B,QAA3B,IAAuC,KAAKA,OAAL,CAAa,CAAb,IAAkB,CAAzD,IACP,CAAC,KAAKA,OAAL,CAAa,CAAb,CAAD,GAAmB,KAAKlB,OADrB,EAC8B;AACjCf,aAAK,CAAChJ,IAAN,CAAW,YAAY,KAAK+J,OAAjB,GAA2B,kBAA3B,IAAiD,KAAKA,OAAL,GAAe,KAAKkB,OAAL,CAAa,CAAb,CAAhE,IACP,KADJ;AAEH,OAJM,MAIA;AACHjC,aAAK,CAAChJ,IAAN,CAAW,YAAY,KAAK+J,OAAjB,GAA2B,kBAA3B,GAAgD,KAAKA,OAArD,GACP,KADJ;AAEH;;AACD,UAAI,OAAO,KAAKkB,OAAL,CAAa,CAAb,CAAP,KAA2B,QAA3B,IAAuC,KAAKA,OAAL,CAAa,CAAb,IAAkB,CAAzD,IACA,KAAKA,OAAL,CAAa,CAAb,IAAkB,KAAKnB,MAD3B,EACmC;AAC/Bd,aAAK,CAAChJ,IAAN,CAAW,YAAY,KAAK8J,MAAL,GAAc,KAAKmB,OAAL,CAAa,CAAb,CAA1B,IACP,mBADO,GACe,KAAKA,OAAL,CAAa,CAAb,CADf,GACiC,KAD5C;AAEH,OAJD,MAIO;AACHjC,aAAK,CAAChJ,IAAN,CAAW,WAAW,KAAK8J,MAAhB,GAAyB,wBAApC;AACH;AACJ,KApBD,MAoBO;AACHd,WAAK,CAAChJ,IAAN,CAAW,YAAY,KAAK+J,OAAjB,GAA2B,kBAA3B,GACP,KAAKA,OADE,GACQ,YADR,GACuB,KAAKD,MAD5B,GACqC,wBADhD;AAEH;;AAED,QAAIyB,QAAQ,GAAG,KAAKP,UAAL,GAAkB,KAAKA,UAAvB,GAAoC,OAAnD;AACA,QAAIQ,OAAO,GAAG,KAAKN,SAAL,GAAiB,KAAKA,SAAtB,GAAkC,EAAhD;AACA,QAAIO,UAAU,GAAG,KAAKN,WAAL,GAAmB,KAAKA,WAAxB,GAAsC,kBAAvD;AACA,QAAIO,UAAU,GAAG,KAAKN,WAAL,GAAmB,KAAKA,WAAxB,GAAsC,MAAvD;AAEApC,SAAK,CAAChJ,IAAN,CAAW,yBAAyBqG,GAAG,CAAChC,CAA7B,GAAiC,WAAjC,GACPgC,GAAG,CAACjC,CADG,GACC,YADD,GACgBmH,QADhB,GAC2B,iCAD3B,GAEPC,OAFO,GAEG,kBAFH,GAEwBC,UAFxB,GAEqC,gBAFrC,GAEwDC,UAFnE;AAIH,GAvCD,MAuCO;AACH1C,SAAK,CAAChJ,IAAN,CAAW,SAASqG,GAAG,CAAChC,CAAb,GAAiB,WAAjB,GAA+BgC,GAAG,CAACjC,CAAnC,GAAuC,KAAlD;AACH;;AAED,SAAO4E,KAAK,CAAC2C,IAAN,CAAW,EAAX,CAAP;AACH,CAhDD;AAkDA;;;;;;AAIAxE,WAAW,CAAC/H,SAAZ,CAAsBgK,QAAtB,GAAiC,YAAY;AACzC,MAAItC,eAAe,GAAG,KAAKqB,QAAL,CAAcV,kBAAd,EAAtB;;AAEA,MAAIX,eAAe,CAAC7J,SAApB,EAA+B;AAC3B,SAAKmL,IAAL,CAAUiC,SAAV,GAAsBvD,eAAe,CAAC7J,SAAhB,GAA4B,GAA5B,GAAkC6J,eAAe,CAAC5J,gBAAlD,GAAqE,KAAKC,SAAhG;AACH,GAFD,MAEO;AACH,SAAKiL,IAAL,CAAUiC,SAAV,GAAsBvD,eAAe,CAAC5J,gBAAhB,GAAmC,KAAKC,SAA9D;AACH;AACJ,CARD,C,CAWA;AACA;AACA;;;AACA+H,MAAM,CAAC,iBAAD,CAAN,GAA4BhJ,eAA5B;AACAA,eAAe,CAACkD,SAAhB,CAA0B,WAA1B,IAAyClD,eAAe,CAACkD,SAAhB,CAA0BkD,SAAnE;AACApG,eAAe,CAACkD,SAAhB,CAA0B,YAA1B,IAA0ClD,eAAe,CAACkD,SAAhB,CAA0BD,UAApE;AACAjD,eAAe,CAACkD,SAAhB,CAA0B,cAA1B,IACIlD,eAAe,CAACkD,SAAhB,CAA0BwF,YAD9B;AAEA1I,eAAe,CAACkD,SAAhB,CAA0B,iBAA1B,IACIlD,eAAe,CAACkD,SAAhB,CAA0Be,eAD9B;AAEAjE,eAAe,CAACkD,SAAhB,CAA0B,eAA1B,IACIlD,eAAe,CAACkD,SAAhB,CAA0B6C,aAD9B;AAEA/F,eAAe,CAACkD,SAAhB,CAA0B,aAA1B,IACIlD,eAAe,CAACkD,SAAhB,CAA0BgE,WAD9B;AAEAlH,eAAe,CAACkD,SAAhB,CAA0B,mBAA1B,IACIlD,eAAe,CAACkD,SAAhB,CAA0BoE,iBAD9B;AAEAtH,eAAe,CAACkD,SAAhB,CAA0B,QAA1B,IAAsClD,eAAe,CAACkD,SAAhB,CAA0B+D,MAAhE;AACAjH,eAAe,CAACkD,SAAhB,CAA0B,YAA1B,IAA0ClD,eAAe,CAACkD,SAAhB,CAA0BiB,UAApE;AACAnE,eAAe,CAACkD,SAAhB,CAA0B,YAA1B,IAA0ClD,eAAe,CAACkD,SAAhB,CAA0B+B,UAApE;AACAjF,eAAe,CAACkD,SAAhB,CAA0B,mBAA1B,IAAiDlD,eAAe,CAACkD,SAAhB,CAA0BgC,iBAA3E;AACAlF,eAAe,CAACkD,SAAhB,CAA0B,WAA1B,IAAyClD,eAAe,CAACkD,SAAhB,CAA0ByB,SAAnE;AACA3E,eAAe,CAACkD,SAAhB,CAA0B,kBAA1B,IACIlD,eAAe,CAACkD,SAAhB,CAA0B6D,gBAD9B;AAEA/G,eAAe,CAACkD,SAAhB,CAA0B,iBAA1B,IACIlD,eAAe,CAACkD,SAAhB,CAA0B4B,eAD9B;AAEA9E,eAAe,CAACkD,SAAhB,CAA0B,QAA1B,IAAsClD,eAAe,CAACkD,SAAhB,CAA0BH,MAAhE;AACA/C,eAAe,CAACkD,SAAhB,CAA0B,cAA1B,IACIlD,eAAe,CAACkD,SAAhB,CAA0BuD,YAD9B;AAEAzG,eAAe,CAACkD,SAAhB,CAA0B,eAA1B,IACIlD,eAAe,CAACkD,SAAhB,CAA0ByD,aAD9B;AAEA3G,eAAe,CAACkD,SAAhB,CAA0B,eAA1B,IACIlD,eAAe,CAACkD,SAAhB,CAA0BJ,aAD9B;AAEA9C,eAAe,CAACkD,SAAhB,CAA0B,SAA1B,IACIlD,eAAe,CAACkD,SAAhB,CAA0BiD,OAD9B;AAEAnG,eAAe,CAACkD,SAAhB,CAA0B,eAA1B,IACIlD,eAAe,CAACkD,SAAhB,CAA0B2C,aAD9B;AAEA7F,eAAe,CAACkD,SAAhB,CAA0B,aAA1B,IACIlD,eAAe,CAACkD,SAAhB,CAA0BiE,WAD9B;AAEAnH,eAAe,CAACkD,SAAhB,CAA0B,YAA1B,IACIlD,eAAe,CAACkD,SAAhB,CAA0B6B,UAD9B;AAEA/E,eAAe,CAACkD,SAAhB,CAA0B,OAA1B,IAAqClD,eAAe,CAACkD,SAAhB,CAA0BM,KAA/D;AACAxD,eAAe,CAACkD,SAAhB,CAA0B,MAA1B,IAAoClD,eAAe,CAACkD,SAAhB,CAA0BQ,IAA9D;AAEA8G,OAAO,CAACtH,SAAR,CAAkB,WAAlB,IAAiCsH,OAAO,CAACtH,SAAR,CAAkBoH,SAAnD;AACAE,OAAO,CAACtH,SAAR,CAAkB,SAAlB,IAA+BsH,OAAO,CAACtH,SAAR,CAAkBsI,OAAjD;AACAhB,OAAO,CAACtH,SAAR,CAAkB,YAAlB,IAAkCsH,OAAO,CAACtH,SAAR,CAAkBiB,UAApD;AAEA8G,WAAW,CAAC/H,SAAZ,CAAsB,OAAtB,IAAiC+H,WAAW,CAAC/H,SAAZ,CAAsBM,KAAvD;AACAyH,WAAW,CAAC/H,SAAZ,CAAsB,MAAtB,IAAgC+H,WAAW,CAAC/H,SAAZ,CAAsBQ,IAAtD;AACAuH,WAAW,CAAC/H,SAAZ,CAAsB,UAAtB,IAAoC+H,WAAW,CAAC/H,SAAZ,CAAsBmL,QAA1D,C;;;;;;;;;;;ACt+CAqB,CAAC,CAAC/C,QAAD,CAAD,CAAY9F,KAAZ,CAAkB,YAAY;AAC1B,MAAI8I,GAAG,GAAGhD,QAAQ,CAACiD,cAAT,CAAwB,UAAxB,CAAV;;AACA,MAAID,GAAG,IAAI,IAAX,EAAiB;AACbD,KAAC,CAACC,GAAD,CAAD,CAAOE,YAAP,CAAoB;AAChBC,yBAAmB,EAAE,+BADL;AAEhBC,kBAAY,EAAE,CAAC;AAAEC,cAAM,EAAEC;AAAV,OAAD,CAFE;AAGhBC,YAAM,EAAE;AACJlC,YAAI,EAAE,EADF;AAEJ3D,cAAM,EAAE,EAFJ;AAGJ8F,aAAK,EAAE;AAHH,OAHQ;AAQhBC,oBAAc,EAAE,KARA;AAShBC,mBAAa,EAAE,GATC;AAUhBC,iBAAW,EAAE,gBAVG;AAWhBC,WAAK,EAAE;AACHC,sBAAc,EAAE;AACZC,cAAI,EAAE,UADM;AAEZC,oBAAU,EAAE,MAFA;AAGZC,uBAAa,EAAE;AAAEC,iBAAK,EAAE;AAAT,WAHH;AAIZC,sBAAY,EAAE;AAAEC,kBAAM,EAAE;AAAV,WAJF;AAKZC,sBAAY,EAAE,sBAAUC,WAAV,EAAuB;AACjC,mBAAO;AACHC,mBAAK,EAAE,IAAIC,IAAJ,CAASF,WAAW,CAACG,IAAZ,EAAT,EAA6B,CAA7B,EAAgC,CAAhC,CADJ;AAEHC,iBAAG,EAAE,IAAIF,IAAJ,CAASF,WAAW,CAACG,IAAZ,EAAT,EAA6B,EAA7B,EAAiC,EAAjC;AAFF,aAAP;AAIH;AAVW;AADb;AAXS,KAApB;AA0BH;AACJ,CA9BD,E;;;;;;;;;;;ACAAzB,CAAC,CAAC/C,QAAD,CAAD,CAAY9F,KAAZ,CAAkB,YAAY;AAC1B,MAAIwK,KAAK,GAAG3B,CAAC,CAAC,QAAD,CAAb;;AACA,MAAI2B,KAAK,CAACrO,MAAN,IAAgB,CAApB,EAAuB;AACnB,QAAIa,GAAG,GAAGwN,KAAK,CAACpB,IAAN,CAAW,KAAX,CAAV;AACAP,KAAC,CAAC4B,OAAF,CAAU,8BAAV,EAA0C;AAAEzN,SAAG,EAAEA;AAAP,KAA1C,EAAwD,UAAU0N,IAAV,EAAgB;AACpEF,WAAK,GAAGG,QAAQ,CAACC,SAAT,CAAmB,OAAnB,EAA4B;AAChChB,YAAI,EAAE,QAD0B;AAEhCiB,aAAK,EAAE,OAFyB;AAGhCC,oBAAY,EAAEJ,IAHkB;AAIhCK,qBAAa,EAAE,MAJiB;AAKhCC,uBAAe,EAAE,IALe;AAMhCC,mBAAW,EAAE;AACTC,wBAAc,EAAE,IADP;AAETC,wBAAc,EAAE,IAFP;AAGTC,mCAAyB,EAAE,cAHlB;AAITC,8BAAoB,EAAE;AAJb,SANmB;AAYhCC,kBAAU,EAAE;AACRC,iBAAO,EAAE;AADD,SAZoB;AAehCC,eAAO,EAAE;AACLC,2BAAiB,EAAE,IADd;AAELC,yBAAe,EAAE,CAFZ;AAGLC,sBAAY,EAAE,CAHT;AAILC,mBAAS,EAAE,SAJN;AAKLC,eAAK,EAAE;AALF,SAfuB;AAsBhCC,oBAAY,EAAE;AACVC,mBAAS,EAAE,CADD;AAEVC,oBAAU,EAAE,IAFF;AAGVC,uBAAa,EAAE;AAHL,SAtBkB;AA2BhCC,iBAAS,EAAE,CACP;AACIC,YAAE,EAAE,IADR;AAEIC,kBAAQ,EAAE,MAFd;AAGIC,eAAK,EAAE;AAHX,SADO,CAMP;AACA;AACA;AACA;AACA;AAVO,SA3BqB;AAuChCC,cAAM,EAAE,CACJ;AACI1C,cAAI,EAAE,MADV;AAEI2C,mBAAS,EAAE,IAFf;AAGIF,eAAK,EAAE,WAHX;AAIIG,oBAAU,EAAE,WAJhB;AAKIC,mBAAS,EAAE,SALf;AAMIC,uBAAa,EAAE;AANnB,SADI,CASJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhBI,SAvCwB;AAyDhCC,cAAM,EAAE;AACJpB,iBAAO,EAAE;AADL;AAzDwB,OAA5B,CAAR;AA6DH,KA9DD;AA+DH;AACJ,CApED,E;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;AAiBAqB,MAAM,CAACC,OAAP,GAAiB,UAAUC,QAAV,EAAoBxS,OAApB,EAA6B;AAC1C,MAAIwC,CAAJ;AAAA,MAAOiQ,CAAP;AAAA,MAAUC,CAAV;AAAA,MAAaC,CAAb;AAAA,MAAgB/P,MAAhB;AAAA,MAAwBgQ,SAAS,GAAG,EAApC;AAAA,MAAwCC,YAAxC;AAEA,MAAIC,OAAO,GAAG9S,OAAO,CAAC8S,OAAR,IAAmB,CAAjC;AACA,MAAIC,cAAc,GAAG/S,OAAO,CAAC+S,cAA7B;AACA,MAAIC,WAAW,GAAGhT,OAAO,CAACiT,kBAAR,IAA+BF,cAAc,GAAG,CAAlE;AACA,MAAI,CAACA,cAAD,IAAmBA,cAAc,IAAI,CAAzC,EAA4C,MAAM,IAAIG,KAAJ,CAAU,yBAAV,CAAN,CANF,CAQ1C;;AACA,MAAIC,MAAJ;AACA,MAAIC,OAAO,GAAG,EAAd;AACA,MAAIC,UAAU,GAAG,EAAjB;;AACA,OAAK7Q,CAAC,GAAG,CAAJ,EAAOmQ,CAAC,GAAGH,QAAQ,CAAC3Q,MAAzB,EAAiCW,CAAC,GAAGmQ,CAArC,EAAwCnQ,CAAC,EAAzC,EAA6C;AACzC2Q,UAAM,GAAGX,QAAQ,CAAChQ,CAAD,CAAR,CAAY8Q,OAAZ,CAAoBzQ,KAApB,GAA4B2P,QAAQ,CAAChQ,CAAD,CAAR,CAAY8Q,OAAZ,CAAoB1Q,MAAzD;AACAwQ,WAAO,CAACzQ,IAAR,CAAawQ,MAAb;AACAE,cAAU,CAAC1Q,IAAX,CAAgB4B,IAAI,CAACgP,KAAL,CAAWJ,MAAM,GAAG,GAApB,CAAhB;AACH,GAhByC,CAkB1C;;;AACA,MAAIK,WAAW,GAAG,CAAlB;;AACA,OAAKhR,CAAC,GAAG,CAAJ,EAAOmQ,CAAC,GAAGS,OAAO,CAACvR,MAAxB,EAAgCW,CAAC,GAAGmQ,CAApC,EAAuCnQ,CAAC,EAAxC,EAA4C;AACxCgR,eAAW,IAAIJ,OAAO,CAAC5Q,CAAD,CAAP,GAAawQ,WAA5B;AACH,GAtByC,CAwB1C;;;AACA,MAAIS,UAAU,GAAGlP,IAAI,CAACgP,KAAL,CAAWC,WAAW,GAAGT,cAAzB,CAAjB,CAzB0C,CA2B1C;;AACA,MAAIU,UAAU,GAAG,CAAjB,EAAoB;AAChB;AACA,QAAIC,IAAI,GAAG,CAAX;AAAA,QAAc7Q,KAAd;AACAgQ,gBAAY,GAAGL,QAAQ,CAAC3Q,MAAxB;AAEA,QAAI8R,OAAO,GAAG,CAAd;;AACA,QAAI3T,OAAO,CAAC4T,KAAR,KAAkB,QAAtB,EAAgC;AAC5B,UAAIC,WAAW,GAAG,CAAChB,YAAY,GAAG,CAAhB,IAAqBC,OAAvC;;AACA,WAAK,IAAItQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqQ,YAApB,EAAkCrQ,CAAC,EAAnC,EAAuC;AACnCqR,mBAAW,IAAItP,IAAI,CAACgP,KAAL,CAAWP,WAAW,GAAGI,OAAO,CAAC5Q,CAAD,CAAhC,IAAwCsQ,OAAO,IAAID,YAAY,GAAG,CAAnB,CAAP,GAA+BA,YAAtF;AACH;;AACDc,aAAO,GAAGpP,IAAI,CAACuP,KAAL,CAAW,CAACf,cAAc,GAAGc,WAAlB,IAAiC,CAA5C,CAAV;AACH;;AAED,SAAK,IAAIrR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqQ,YAApB,EAAkCrQ,CAAC,EAAnC,EAAuC;AACnCK,WAAK,GAAG0B,IAAI,CAACgP,KAAL,CAAWP,WAAW,GAAGI,OAAO,CAAC5Q,CAAD,CAAhC,IAAwCsQ,OAAO,IAAID,YAAY,GAAG,CAAnB,CAAP,GAA+BA,YAA/E;AACAD,eAAS,CAACjQ,IAAV,CAAe;AACXqE,SAAC,EAAE,CADQ;AAEXD,SAAC,EAAE4M,OAAO,GAAGD,IAFF;AAGX7Q,aAAK,EAAEA,KAHI;AAIXD,cAAM,EAAEoQ;AAJG,OAAf;AAMAU,UAAI,IAAI7Q,KAAR;;AACA,UAAIL,CAAC,KAAKmQ,CAAC,GAAG,CAAd,EAAiB;AACbe,YAAI,IAAIZ,OAAR;AACH;AACJ;;AACDiB,QAAI,GAAGf,WAAP;AACH,GA5BD,MA4BO;AACH;AACA,QAAIgB,UAAU,GAAGC,gBAAgB,CAACZ,UAAD,EAAaI,UAAb,CAAjC;AACA,QAAItP,KAAK,GAAG,CAAZ;AACA,QAAI4P,IAAI,GAAG,CAAX;AAAA,QAAcL,IAAd;;AACA,SAAKlR,CAAC,GAAG,CAAJ,EAAOmQ,CAAC,GAAGqB,UAAU,CAACnS,MAA3B,EAAmCW,CAAC,GAAGmQ,CAAvC,EAA0CnQ,CAAC,EAA3C,EAA+C;AAC3C,UAAI0R,aAAa,GAAG/P,KAApB;AACA,UAAIgQ,YAAY,GAAG,CAAnB;;AACA,WAAK1B,CAAC,GAAG,CAAJ,EAAOC,CAAC,GAAGsB,UAAU,CAACxR,CAAD,CAAV,CAAcX,MAA9B,EAAsC4Q,CAAC,GAAGC,CAA1C,EAA6CD,CAAC,EAA9C,EAAkD;AAC9C0B,oBAAY,IAAIf,OAAO,CAACc,aAAa,GAAGzB,CAAjB,CAAvB;AACAtO,aAAK;AACR;;AAEDuP,UAAI,GAAG,CAAP;AACA9Q,YAAM,GAAG2B,IAAI,CAACgP,KAAL,CAAWR,cAAc,GAAGoB,YAA5B,CAAT;AACAtB,kBAAY,GAAGmB,UAAU,CAACxR,CAAD,CAAV,CAAcX,MAA7B;;AACA,WAAK4Q,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGI,YAAhB,EAA8BJ,CAAC,EAA/B,EAAmC;AAC/B5P,aAAK,GAAG0B,IAAI,CAACgP,KAAL,CAAW,CAACR,cAAc,GAAG,CAACF,YAAY,GAAG,CAAhB,IAAqBC,OAAvC,IAAkDqB,YAAlD,GAAiEf,OAAO,CAACc,aAAa,GAAGzB,CAAjB,CAAnF,CAAR;AACAG,iBAAS,CAACjQ,IAAV,CAAe;AACXqE,WAAC,EAAE+M,IADQ;AAEXhN,WAAC,EAAE2M,IAFQ;AAGX7Q,eAAK,EAAEA,KAHI;AAIXD,gBAAM,EAAEA;AAJG,SAAf;AAMA8Q,YAAI,IAAI7Q,KAAR;;AACA,YAAI4P,CAAC,KAAKI,YAAY,GAAG,CAAzB,EAA4B;AACxBa,cAAI,IAAIZ,OAAR;AACH;AACJ;;AACDiB,UAAI,IAAInR,MAAR;;AACA,UAAIJ,CAAC,KAAKmQ,CAAC,GAAG,CAAd,EAAiB;AACboB,YAAI,IAAIjB,OAAR;AACH;AACJ;AACJ;;AAED,SAAO;AACHjQ,SAAK,EAAEkQ,cADJ;AAEHnQ,UAAM,EAAEmR,IAFL;AAGHnB,aAAS,EAAEA;AAHR,GAAP;AAKH,CAjGD;AAmGA;;;;;;;;;;;AASA,IAAIqB,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAUG,GAAV,EAAe1B,CAAf,EAAkB;AACrC,MAAI2B,GAAJ,EAAS7R,CAAT,EAAYiQ,CAAZ,EAAerN,CAAf,EAAkBuN,CAAlB,EAAqB2B,QAArB,EAA+BC,KAA/B,EAAsCxN,CAAtC,EAAyCC,CAAzC,EAA4CwN,EAA5C,EAAgDC,EAAhD,EAAoDC,EAApD,EAAwDC,EAAxD;;AACA,MAAIC,EAAJ,EAAQC,GAAR;;AAEAlC,GAAC,GAAGyB,GAAG,CAACvS,MAAR;;AACA,MAAI6Q,CAAC,IAAI,CAAT,EAAY;AACR,WAAO,EAAP;AACH;;AACD,MAAIA,CAAC,GAAGC,CAAR,EAAW;AACP,WAAOyB,GAAG,CAACtV,GAAJ,CAAQ,UAAUiI,CAAV,EAAa;AACxB,aAAO,CAACA,CAAD,CAAP;AACH,KAFM,CAAP;AAGH;;AACDwN,OAAK,GAAI,YAAY;AACjB,QAAIC,EAAJ,EAAQM,QAAR;;AACAA,YAAQ,GAAG,EAAX;;AACA,SAAK9N,CAAC,GAAGwN,EAAE,GAAG,CAAd,EAAiB,KAAK7B,CAAL,GAAS6B,EAAE,GAAG7B,CAAd,GAAkB6B,EAAE,GAAG7B,CAAxC,EAA2C3L,CAAC,GAAG,KAAK2L,CAAL,GAAS,EAAE6B,EAAX,GAAgB,EAAEA,EAAjE,EAAqE;AACjEM,cAAQ,CAACnS,IAAT,CAAe,YAAY;AACvB,YAAI8R,EAAJ,EAAQM,SAAR;;AACAA,iBAAS,GAAG,EAAZ;;AACA,aAAKhO,CAAC,GAAG0N,EAAE,GAAG,CAAd,EAAiB,KAAK/B,CAAL,GAAS+B,EAAE,GAAG/B,CAAd,GAAkB+B,EAAE,GAAG/B,CAAxC,EAA2C3L,CAAC,GAAG,KAAK2L,CAAL,GAAS,EAAE+B,EAAX,GAAgB,EAAEA,EAAjE,EAAqE;AACjEM,mBAAS,CAACpS,IAAV,CAAe,CAAf;AACH;;AACD,eAAOoS,SAAP;AACH,OAPa,EAAd;AAQH;;AACD,WAAOD,QAAP;AACH,GAdO,EAAR;;AAeAR,UAAQ,GAAI,YAAY;AACpB,QAAIE,EAAJ,EAAQQ,IAAR,EAAcF,QAAd;;AACAA,YAAQ,GAAG,EAAX;;AACA,SAAK9N,CAAC,GAAGwN,EAAE,GAAG,CAAT,EAAYQ,IAAI,GAAGrC,CAAC,GAAG,CAA5B,EAA+B,KAAKqC,IAAL,GAAYR,EAAE,GAAGQ,IAAjB,GAAwBR,EAAE,GAAGQ,IAA5D,EAAkEhO,CAAC,GAAG,KAAKgO,IAAL,GAAY,EAAER,EAAd,GAAmB,EAAEA,EAA3F,EAA+F;AAC3FM,cAAQ,CAACnS,IAAT,CAAe,YAAY;AACvB,YAAI8R,EAAJ,EAAQQ,KAAR,EAAeF,SAAf;;AACAA,iBAAS,GAAG,EAAZ;;AACA,aAAKhO,CAAC,GAAG0N,EAAE,GAAG,CAAT,EAAYQ,KAAK,GAAGvC,CAAC,GAAG,CAA7B,EAAgC,KAAKuC,KAAL,GAAaR,EAAE,GAAGQ,KAAlB,GAA0BR,EAAE,GAAGQ,KAA/D,EAAsElO,CAAC,GAAG,KAAKkO,KAAL,GAAa,EAAER,EAAf,GAAoB,EAAEA,EAAhG,EAAoG;AAChGM,mBAAS,CAACpS,IAAV,CAAe,CAAf;AACH;;AACD,eAAOoS,SAAP;AACH,OAPa,EAAd;AAQH;;AACD,WAAOD,QAAP;AACH,GAdU,EAAX;;AAeA,OAAKtS,CAAC,GAAGgS,EAAE,GAAG,CAAd,EAAiB,KAAK7B,CAAL,GAAS6B,EAAE,GAAG7B,CAAd,GAAkB6B,EAAE,GAAG7B,CAAxC,EAA2CnQ,CAAC,GAAG,KAAKmQ,CAAL,GAAS,EAAE6B,EAAX,GAAgB,EAAEA,EAAjE,EAAqE;AACjED,SAAK,CAAC/R,CAAD,CAAL,CAAS,CAAT,IAAc4R,GAAG,CAAC5R,CAAD,CAAH,IAAUA,CAAC,GAAG+R,KAAK,CAAC/R,CAAC,GAAG,CAAL,CAAL,CAAa,CAAb,CAAH,GAAqB,CAAhC,CAAd;AACH;;AACD,OAAKiQ,CAAC,GAAGgC,EAAE,GAAG,CAAd,EAAiB,KAAK/B,CAAL,GAAS+B,EAAE,GAAG/B,CAAd,GAAkB+B,EAAE,GAAG/B,CAAxC,EAA2CD,CAAC,GAAG,KAAKC,CAAL,GAAS,EAAE+B,EAAX,GAAgB,EAAEA,EAAjE,EAAqE;AACjEF,SAAK,CAAC,CAAD,CAAL,CAAS9B,CAAT,IAAc2B,GAAG,CAAC,CAAD,CAAjB;AACH;;AACD,OAAK5R,CAAC,GAAGkS,EAAE,GAAG,CAAd,EAAiB,KAAK/B,CAAL,GAAS+B,EAAE,GAAG/B,CAAd,GAAkB+B,EAAE,GAAG/B,CAAxC,EAA2CnQ,CAAC,GAAG,KAAKmQ,CAAL,GAAS,EAAE+B,EAAX,GAAgB,EAAEA,EAAjE,EAAqE;AACjE,SAAKjC,CAAC,GAAGkC,EAAE,GAAG,CAAd,EAAiB,KAAKjC,CAAL,GAASiC,EAAE,GAAGjC,CAAd,GAAkBiC,EAAE,GAAGjC,CAAxC,EAA2CD,CAAC,GAAG,KAAKC,CAAL,GAAS,EAAEiC,EAAX,GAAgB,EAAEA,EAAjE,EAAqE;AAEjEvP,OAAC,GAAG,EAAJ;;AACA,WAAK2B,CAAC,GAAG6N,EAAE,GAAG,CAAd,EAAiB,KAAKpS,CAAL,GAASoS,EAAE,GAAGpS,CAAd,GAAkBoS,EAAE,GAAGpS,CAAxC,EAA2CuE,CAAC,GAAG,KAAKvE,CAAL,GAAS,EAAEoS,EAAX,GAAgB,EAAEA,EAAjE,EAAqE;AACjExP,SAAC,CAACzC,IAAF,CAAO,CAAC4B,IAAI,CAACkJ,GAAL,CAAS8G,KAAK,CAACxN,CAAD,CAAL,CAAS0L,CAAC,GAAG,CAAb,CAAT,EAA0B8B,KAAK,CAAC/R,CAAD,CAAL,CAAS,CAAT,IAAc+R,KAAK,CAACxN,CAAD,CAAL,CAAS,CAAT,CAAxC,CAAD,EAAuDA,CAAvD,CAAP;AACH;;AAED,UAAImO,QAAJ;AAAA,UAAcC,QAAQ,GAAG,KAAzB;;AACA,WAAKP,EAAE,GAAG,CAAL,EAAQC,GAAG,GAAGzP,CAAC,CAACvD,MAArB,EAA6B+S,EAAE,GAAGC,GAAlC,EAAuCD,EAAE,EAAzC,EAA6C;AACzC,YAAIA,EAAE,KAAK,CAAP,IAAYxP,CAAC,CAACwP,EAAD,CAAD,CAAM,CAAN,IAAWM,QAA3B,EAAqC;AACjCA,kBAAQ,GAAG9P,CAAC,CAACwP,EAAD,CAAD,CAAM,CAAN,CAAX;AACAO,kBAAQ,GAAGP,EAAX;AACH;AACJ;;AAEDxP,OAAC,GAAGA,CAAC,CAAC+P,QAAD,CAAL;AACAZ,WAAK,CAAC/R,CAAD,CAAL,CAASiQ,CAAT,IAAcrN,CAAC,CAAC,CAAD,CAAf;AACAkP,cAAQ,CAAC9R,CAAC,GAAG,CAAL,CAAR,CAAgBiQ,CAAC,GAAG,CAApB,IAAyBrN,CAAC,CAAC,CAAD,CAA1B;AACH;AACJ;;AACDuN,GAAC,GAAGA,CAAC,GAAG,CAAR;AACAD,GAAC,GAAGA,CAAC,GAAG,CAAR;AACA2B,KAAG,GAAG,EAAN;;AACA,SAAO3B,CAAC,IAAI,CAAZ,EAAe;AACX2B,OAAG,GAAG,CACD,YAAY;AACT,UAAIO,EAAJ,EAAQI,IAAR,EAAcC,KAAd,EAAqBH,QAArB;;AACAA,cAAQ,GAAG,EAAX;;AACA,WAAKtS,CAAC,GAAGoS,EAAE,GAAGI,IAAI,GAAGV,QAAQ,CAAC3B,CAAC,GAAG,CAAL,CAAR,CAAgBD,CAAhB,IAAqB,CAArC,EAAwCuC,KAAK,GAAGtC,CAAC,GAAG,CAAzD,EAA4DqC,IAAI,IAAIC,KAAR,GAAgBL,EAAE,GAAGK,KAArB,GAA6BL,EAAE,GAAGK,KAA9F,EAAqGzS,CAAC,GAAGwS,IAAI,IAAIC,KAAR,GAAgB,EAAEL,EAAlB,GAAuB,EAAEA,EAAlI,EAAsI;AAClIE,gBAAQ,CAACnS,IAAT,CAAcyR,GAAG,CAAC5R,CAAD,CAAjB;AACH;;AACD,aAAOsS,QAAP;AACH,KAPD,EADE,EASJM,MATI,CASGf,GATH,CAAN;AAUA1B,KAAC,GAAG2B,QAAQ,CAAC3B,CAAC,GAAG,CAAL,CAAR,CAAgBD,CAAhB,CAAJ;AACAA,KAAC,GAAGA,CAAC,GAAG,CAAR;AACA,QAAIC,CAAC,KAAK,CAAV,EAAa;AAChB;;AACD,SAAO,CACF,YAAY;AACT,QAAIiC,EAAJ,EAAQI,IAAR,EAAcF,QAAd;;AACAA,YAAQ,GAAG,EAAX;;AACA,SAAKtS,CAAC,GAAGoS,EAAE,GAAG,CAAT,EAAYI,IAAI,GAAGrC,CAAC,GAAG,CAA5B,EAA+B,KAAKqC,IAAL,GAAYJ,EAAE,GAAGI,IAAjB,GAAwBJ,EAAE,GAAGI,IAA5D,EAAkExS,CAAC,GAAG,KAAKwS,IAAL,GAAY,EAAEJ,EAAd,GAAmB,EAAEA,EAA3F,EAA+F;AAC3FE,cAAQ,CAACnS,IAAT,CAAcyR,GAAG,CAAC5R,CAAD,CAAjB;AACH;;AACD,WAAOsS,QAAP;AACH,GAPD,EADG,EASLM,MATK,CASEf,GATF,CAAP;AAUH,CAlGD,C;;;;;;;;;;;AC7HA9F,CAAC,CAAC/C,QAAD,CAAD,CAAY9F,KAAZ,CAAkB,YAAY;AAE1B,MAAIwD,MAAM,GAAG,IAAIhK,MAAM,CAACC,IAAP,CAAYoH,MAAhB,CAAuB,SAAvB,EAAkC,CAAC,QAAnC,CAAb;AAEA,MAAI8O,KAAK,GAAG7J,QAAQ,CAAC8J,sBAAT,CAAgC,mBAAhC,CAAZ;;AACA,MAAID,KAAK,CAACxT,MAAN,IAAgB,CAApB,EAAuB;AACnB,QAAI/C,GAAG,GAAG,IAAII,MAAM,CAACC,IAAP,CAAYoW,GAAhB,CAAoBF,KAAK,CAAC,CAAD,CAAzB,EAA8B;AACpC3T,UAAI,EAAE,EAD8B;AAEpCwH,YAAM,EAAEA,MAF4B;AAGpCsM,uBAAiB,EAAE,KAHiB;AAIpCC,qBAAe,EAAE,QAJmB;AAKpCC,eAAS,EAAExW,MAAM,CAACC,IAAP,CAAYwW,SAAZ,CAAsBC;AALG,KAA9B,CAAV;AAQA1W,UAAM,CAACC,IAAP,CAAYqC,KAAZ,CAAkBC,WAAlB,CAA8B3C,GAA9B,EAAmC,MAAnC,EAA2C,YAAY;AACnD,UAAImE,MAAM,GAAGnE,GAAG,CAACyK,SAAJ,GAAgBsM,QAAhB,EAAb;AACAtH,OAAC,CAACuH,GAAF,CAAM,4BAAN,EAAoC;AAAE7S,cAAM,EAAEA;AAAV,OAApC,EAAwD,UAAU8S,QAAV,EAAoB;AACxExH,SAAC,CAAC,iCAAD,CAAD,CAAqCyH,IAArC,CAA0CD,QAAQ,CAACE,IAAnD;AACA,YAAIlT,OAAO,GAAG,EAAd;AACA,YAAImT,MAAM,GAAGC,IAAI,CAACC,KAAL,CAAWL,QAAQ,CAAChT,OAApB,CAAb;;AACA,aAAK,IAAIP,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0T,MAAM,CAACrU,MAA3B,EAAmCW,CAAC,EAApC,EAAwC;AACpC,cAAI6T,IAAI,GAAGH,MAAM,CAAC1T,CAAD,CAAjB;AACA,cAAI8T,MAAM,GAAG,IAAIpX,MAAM,CAACC,IAAP,CAAYoH,MAAhB,CACT8P,IAAI,CAACE,KAAL,CAAWC,GADF,EAETH,IAAI,CAACE,KAAL,CAAWE,GAFF,CAAb;AAIA,cAAItT,MAAM,GAAG,IAAIjE,MAAM,CAACC,IAAP,CAAYuX,MAAhB,CAAuB;AAChC5E,oBAAQ,EAAEwE,MADsB;AAEhCK,gBAAI,EAAE;AACFC,kBAAI,EAAE,0GADJ;AAEFtF,uBAAS,EAAE,SAFT;AAGFuF,yBAAW,EAAE,CAHX;AAIFC,oBAAM,EAAE,IAAI5X,MAAM,CAACC,IAAP,CAAYoX,KAAhB,CAAsB,CAAtB,EAAyB,CAAzB,CAJN;AAKFQ,0BAAY,EAAE,CALZ;AAMFC,yBAAW,EAAE,SANX;AAOFC,mBAAK,EAAE;AAPL,aAF0B;AAWhCpF,cAAE,EAAEwE,IAAI,CAACa;AAXuB,WAAvB,CAAb;AAaAhY,gBAAM,CAACC,IAAP,CAAYqC,KAAZ,CAAkBC,WAAlB,CAA8B0B,MAA9B,EAAsC,OAAtC,EAA+C,YAAY;AACvD,gBAAIgU,GAAG,8CAAuC,KAAKtF,EAA5C,MAAP;AACA,gBAAIuF,KAAK,GAAG7I,CAAC,CAAC4I,GAAD,CAAb;AACAC,iBAAK,CAACrL,QAAN,CAAe,WAAf;AACAlE,kBAAM,CAACC,UAAP,CAAkB,YAAY;AAC1BsP,mBAAK,CAACC,WAAN,CAAkB,WAAlB;AACH,aAFD,EAEG,IAFH;AAGH,WAPD;AASAtU,iBAAO,CAACJ,IAAR,CAAaQ,MAAb;AACH;;AACD,YAAImU,aAAa,GAAG,IAAIzY,eAAJ,CAAoBC,GAApB,EAAyBiE,OAAzB,EAChB;AAAEwU,mBAAS,EAAE;AAAb,SADgB,CAApB;AAIA1P,cAAM,CAAC2P,UAAP;AACA3P,cAAM,CAAC4P,QAAP,CAAgBC,MAAhB;AACA7P,cAAM,CAAC8P,WAAP;AACH,OAzCD;AA0CH,KA5CD;AA8CH;AACJ,CA7DD,E;;;;;;;;;;;ACAA,IAAIC,MAAM,GAAGC,mBAAO,CAAC,wDAAD,CAApB;;AAEAtJ,CAAC,CAAC/C,QAAD,CAAD,CAAY9F,KAAZ,CAAkB,YAAY;AAE1B6I,GAAC,CAAC1G,MAAD,CAAD,CAAUiQ,EAAV,CAAa,QAAb,EAAuBjQ,MAAM,CAACkQ,QAAP,CAAgB,YAAY;AAC/CC,mBAAe;AAClB,GAFsB,EAEpB,EAFoB,CAAvB;AAIAzJ,GAAC,CAAC1G,MAAD,CAAD,CAAUiQ,EAAV,CAAa,QAAb,EAAuBjQ,MAAM,CAACkQ,QAAP,CAAgB,YAAY;AAC/CE,mBAAe;AAClB,GAFsB,EAEpB,GAFoB,CAAvB;AAIApQ,QAAM,CAACqQ,WAAP,CAAmBD,eAAnB,EAAoC,IAApC;AAEA1J,GAAC,CAAC,mBAAD,CAAD,CAAuB4J,KAAvB,CAA6B,UAAUC,CAAV,EAAa;AACtCA,KAAC,CAACC,cAAF;AACA9J,KAAC,CAAC,IAAD,CAAD,CAAQ+J,MAAR,GAAiBC,QAAjB,GAA4BC,QAA5B,CAAqC,SAArC,EAAgDnB,WAAhD,CAA4D,MAA5D;AACA9I,KAAC,CAAC,IAAD,CAAD,CAAQgK,QAAR,CAAiB,IAAjB,EAAuBE,WAAvB,CAAmC,MAAnC;AACH,GAJD;AAMAlK,GAAC,CAAC,uBAAD,CAAD,CAA2B4J,KAA3B,CAAiC,YAAY;AACzC5J,KAAC,CAAC,YAAD,CAAD,CAAgBkK,WAAhB,CAA4B,WAA5B;AACAlK,KAAC,CAAC,mBAAD,CAAD,CAAuBkK,WAAvB,CAAmC,MAAnC;AACAlK,KAAC,CAAC,WAAD,CAAD,CAAekK,WAAf,CAA2B,IAA3B;AACH,GAJD;AAMAlK,GAAC,CAAC,eAAD,CAAD,CAAmBmK,aAAnB,CAAiC;AAC7BpJ,QAAI,EAAE;AADuB,GAAjC;AAIAf,GAAC,CAAC,qCAAD,CAAD,CAAyC4J,KAAzC,CAA+C,YAAY;AACvD,QAAItG,EAAE,GAAGtD,CAAC,CAAC,IAAD,CAAD,CAAQO,IAAR,CAAa,IAAb,CAAT;AACAP,KAAC,+CAAwCsD,EAAxC,OAAD,CAAgDwF,WAAhD,CAA4D,MAA5D;AACA9I,KAAC,8CAAuCsD,EAAvC,OAAD,CAA+C4G,WAA/C,CAA2D,MAA3D;AACH,GAJD;AAMAlK,GAAC,CAAC,8BAAD,CAAD,CAAkC4J,KAAlC,CAAwC,YAAY;AAChD5J,KAAC,CAAC,oCAAD,CAAD,CAAwC8I,WAAxC,CAAoD,MAApD;AACA9I,KAAC,CAAC,IAAD,CAAD,CAAQgK,QAAR,CAAiB,OAAjB,EAA0BlB,WAA1B,CAAsC,MAAtC;AACA9I,KAAC,CAAC,IAAD,CAAD,CAAQkK,WAAR,CAAoB,MAApB;AACH,GAJD;AAKAlK,GAAC,CAAC,oCAAD,CAAD,CAAwC4J,KAAxC,CAA8C,YAAY;AACtD5J,KAAC,CAAC,oCAAD,CAAD,CAAwCkK,WAAxC,CAAoD,MAApD;AACAlK,KAAC,CAAC,8BAAD,CAAD,CAAkC8I,WAAlC,CAA8C,MAA9C;AACH,GAHD;AAIA9I,GAAC,CAAC,0CAAD,CAAD,CAA8C4J,KAA9C,CAAoD,YAAY;AAC5D,QAAIQ,GAAG,GAAGpK,CAAC,CAAC,IAAD,CAAD,CAAQO,IAAR,CAAa,OAAb,CAAV;AACAP,KAAC,CAAC,eAAD,CAAD,CAAmBqK,GAAnB,CAAuBD,GAAvB;AACApK,KAAC,CAAC,eAAD,CAAD,CAAmB,CAAnB,EAAsBsK,IAAtB,CAA2BC,MAA3B;AACH,GAJD;AAMAjR,QAAM,CAAC8P,WAAP;AAEA9P,QAAM,CAAC2P,UAAP;AAEAuB,aAAW;AAEd,CAvDD;;AA0DA,SAASA,WAAT,GAAuB;AACnB,MAAIC,IAAI,GAAGzK,CAAC,CAAC,eAAD,CAAZ;;AACA,MAAIyK,IAAI,CAACnX,MAAL,IAAe,CAAnB,EAAsB;AAClBmX,QAAI,CAACC,IAAL,CAAU,UAAV,EAAsBvR,MAAtB;AACA6G,KAAC,CAACuH,GAAF,CAAM,+BAAN,EAAuC,UAAUC,QAAV,EAAoB;AACvD,WAAK,IAAIvT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuT,QAAQ,CAAClU,MAA7B,EAAqCW,CAAC,EAAtC,EAA0C;AACtC,YAAI0W,GAAG,GAAGnD,QAAQ,CAACvT,CAAD,CAAlB;AACA,YAAI8D,EAAE,iEACQ4S,GAAG,CAACC,KADZ,gDAEQD,GAAG,CAACE,IAFZ,gDAGQF,GAAG,CAACG,SAHZ,gDAIQH,GAAG,CAACI,UAJZ,gDAKQJ,GAAG,CAACK,YALZ,gDAMQL,GAAG,CAACM,YANZ,gDAOQN,GAAG,CAACO,YAPZ,gDAQQP,GAAG,CAACQ,WARZ,kDAUQR,GAAG,CAACS,QAVZ,gDAWQT,GAAG,CAACU,UAXZ,gDAYQV,GAAG,CAACW,WAZZ,gDAaQX,GAAG,CAACY,OAbZ,gDAcQZ,GAAG,CAACa,OAdZ,gDAeQb,GAAG,CAACc,YAfZ,gDAgBQd,GAAG,CAACe,SAhBZ,gDAiBQf,GAAG,CAACgB,MAjBZ,gDAkBQhB,GAAG,CAACiB,OAlBZ,gDAmBQjB,GAAG,CAACkB,MAnBZ,gDAoBQlB,GAAG,CAACmB,aApBZ,gDAqBQnB,GAAG,CAACoB,SArBZ,gDAsBQpB,GAAG,CAACqB,UAtBZ,gDAuBQrB,GAAG,CAACsB,aAvBZ,gDAwBQtB,GAAG,CAACuB,cAxBZ,gDAyBQvB,GAAG,CAACwB,UAzBZ,gDA0BQxB,GAAG,CAACyB,OA1BZ,gDA2BQzB,GAAG,CAAC0B,OA3BZ,gDA4BQ1B,GAAG,CAAC2B,WA5BZ,gDA6BQ3B,GAAG,CAAC4B,QA7BZ,gDA8BQ5B,GAAG,CAAC6B,QA9BZ,kDAgCQ7B,GAAG,CAAC8B,SAhCZ,gDAiCQ9B,GAAG,CAAC+B,cAjCZ,gDAkCQ/B,GAAG,CAACgC,YAlCZ,gDAmCQhC,GAAG,CAACiC,UAnCZ,gDAoCQjC,GAAG,CAACkC,UApCZ,mFAqCwClC,GAAG,CAACC,KArC5C,4BAqCiED,GAAG,CAACE,IArCrE,8CAAN;AAuCA7K,SAAC,CAAC,2BAAD,CAAD,CAA+B8M,MAA/B,CAAsC/U,EAAtC;AACH;;AACDiI,OAAC,CAAC,6BAAD,CAAD,CAAiC4J,KAAjC,CAAuC,YAAY;AAC/C,YAAImD,KAAK,GAAG/M,CAAC,CAAC,IAAD,CAAD,CAAQO,IAAR,CAAa,OAAb,CAAZ;AACA,YAAIkB,IAAI,GAAGzB,CAAC,CAAC,IAAD,CAAD,CAAQO,IAAR,CAAa,MAAb,CAAX;AACAP,SAAC,CAACgN,IAAF,CAAO,kCAAP,EAA2C;AAAED,eAAK,EAAEA,KAAT;AAAgBtL,cAAI,EAAEA;AAAtB,SAA3C,EAAyE,YAAY;AACjF+I,qBAAW;AACd,SAFD;AAGH,OAND;AAOH,KAnDD;AAoDH;AACJ;;AAED,SAASd,eAAT,GAA2B;AACvB,MAAIuD,KAAK,GAAGjN,CAAC,CAAC,QAAD,CAAb;;AACA,MAAIA,CAAC,CAAC1G,MAAD,CAAD,CAAU4T,SAAV,MAAyB,EAA7B,EAAiC;AAC7BD,SAAK,CAACzP,QAAN,CAAe,UAAf;AACH,GAFD,MAEO,IAAIwC,CAAC,CAAC1G,MAAD,CAAD,CAAU4T,SAAV,MAAyB,EAA7B,EAAiC;AACpCD,SAAK,CAACnE,WAAN,CAAkB,UAAlB;AACH;AACJ;;AAGD,SAASW,eAAT,GAA2B;AACvBnQ,QAAM,CAAC2P,UAAP;AACH;;AAGD3P,MAAM,CAAC8P,WAAP,GAAqB,YAAY;AAC7BpJ,GAAC,CAAC,4BAAD,CAAD,CAAgCmN,MAAhC;AAEAnN,GAAC,CAAC,gCAAD,CAAD,CAAoC4J,KAApC,CAA0C,YAAY;AAClD,QAAIwD,IAAI,GAAGpN,CAAC,CAAC,IAAD,CAAZ;AACA,QAAIsD,EAAE,GAAGtD,CAAC,CAAC,IAAD,CAAD,CAAQO,IAAR,CAAa,IAAb,CAAT;AACAP,KAAC,CAACuH,GAAF,CAAM,gCAAN,EAAwC;AAAEjE,QAAE,EAAEA;AAAN,KAAxC,EAAoD,UAAUkE,QAAV,EAAoB;AACpE4F,UAAI,CAACtE,WAAL,CAAiB,KAAjB;AACAsE,UAAI,CAAC5P,QAAL,CAAc,QAAd;AACA4P,UAAI,CAACnD,QAAL,CAAc,GAAd,EAAmBnB,WAAnB,CAA+B,SAA/B;AACAsE,UAAI,CAACnD,QAAL,CAAc,GAAd,EAAmBzM,QAAnB,CAA4B,UAA5B;AACAlE,YAAM,CAAC8P,WAAP;AACH,KAND;AAOH,GAVD;AAYApJ,GAAC,CAAC,mCAAD,CAAD,CAAuC4J,KAAvC,CAA6C,YAAY;AACrD,QAAIwD,IAAI,GAAGpN,CAAC,CAAC,IAAD,CAAZ;AACA,QAAIsD,EAAE,GAAGtD,CAAC,CAAC,IAAD,CAAD,CAAQO,IAAR,CAAa,IAAb,CAAT;AACAP,KAAC,CAACuH,GAAF,CAAM,mCAAN,EAA2C;AAAEjE,QAAE,EAAEA;AAAN,KAA3C,EAAuD,UAAUkE,QAAV,EAAoB;AACvE,UAAI4F,IAAI,CAACC,OAAL,CAAa,SAAb,EAAwB/Z,MAAxB,GAAiC,CAArC,EAAwC;AACpC8Z,YAAI,CAACC,OAAL,CAAa,0BAAb,EAAyClU,MAAzC;AACAG,cAAM,CAAC2P,UAAP;AACH,OAHD,MAGO;AACHmE,YAAI,CAACtE,WAAL,CAAiB,QAAjB;AACAsE,YAAI,CAAC5P,QAAL,CAAc,KAAd;AACA4P,YAAI,CAACnD,QAAL,CAAc,GAAd,EAAmBnB,WAAnB,CAA+B,UAA/B;AACAsE,YAAI,CAACnD,QAAL,CAAc,GAAd,EAAmBzM,QAAnB,CAA4B,SAA5B;AACAlE,cAAM,CAAC8P,WAAP;AACH;AACJ,KAXD;AAYH,GAfD;AAiBApJ,GAAC,CAAC,iCAAD,CAAD,CAAqCmK,aAArC,CAAmD;AAC/CpJ,QAAI,EAAE;AADyC,GAAnD;AAGH,CAnCD;;AAsCAzH,MAAM,CAAC2P,UAAP,GAAoB,YAAY;AAC5B,MAAIqE,SAAS,GAAGtN,CAAC,CAAC,8BAAD,CAAjB;;AACA,MAAIsN,SAAS,CAACha,MAAV,GAAmB,CAAvB,EAA0B;AACtB,QAAIe,MAAM,GAAGiZ,SAAS,CAACha,MAAV,IAAoB,CAApB,GAAyBgG,MAAM,CAACiU,WAAP,GAAqB,CAA9C,GAAoDjU,MAAM,CAACiU,WAAP,GAAqB,GAAtF;AACA,QAAIjZ,KAAK,GAAG0B,IAAI,CAACuP,KAAL,CAAWvF,CAAC,CAAC,qBAAD,CAAD,CAAyB1L,KAAzB,EAAX,CAAZ;AACA,QAAIkZ,IAAI,GAAGnE,MAAM,CAACiE,SAAD,EAAY;AACzB9I,oBAAc,EAAElQ,KADS;AAEzBoQ,wBAAkB,EAAErQ,MAFK;AAGzBkQ,aAAO,EAAE;AAHgB,KAAZ,CAAjB;;AAKA,SAAK,IAAItQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqZ,SAAS,CAACha,MAA9B,EAAsCW,CAAC,EAAvC,EAA2C;AACvC,UAAIuZ,IAAI,CAACnJ,SAAL,CAAepQ,CAAf,EAAkBK,KAAlB,GAA0B,CAA9B,EAAiC;AAC7B0L,SAAC,CAACsN,SAAS,CAACrZ,CAAD,CAAV,CAAD,CAAgBwZ,GAAhB,CAAoB,OAApB,EAA6BD,IAAI,CAACnJ,SAAL,CAAepQ,CAAf,EAAkBK,KAA/C;AACA0L,SAAC,CAACsN,SAAS,CAACrZ,CAAD,CAAV,CAAD,CAAgBwZ,GAAhB,CAAoB,QAApB,EAA8BD,IAAI,CAACnJ,SAAL,CAAepQ,CAAf,EAAkBI,MAAhD;AACH;AACJ;AACJ;AACJ,CAjBD;;AAoBAiF,MAAM,CAAC4P,QAAP,GAAkB,IAAIA,QAAJ,CAAa;AAC3BwE,mBAAiB,EAAE,OADQ;AAE3BC,gBAAc,EAAE,wBAAUC,EAAV,EAAc;AAC1B,QAAIA,EAAE,CAACC,OAAH,KAAe,KAAnB,EAA0B;AACtB,UAAIC,GAAG,GAAG7Q,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAV;AACA8C,OAAC,CAAC8N,GAAD,CAAD,CAAOC,IAAP,CAAY,KAAZ,EAAmB/N,CAAC,CAAC4N,EAAD,CAAD,CAAMrN,IAAN,CAAW,KAAX,CAAnB;AACAP,OAAC,CAAC8N,GAAD,CAAD,CAAOvE,EAAP,CAAU,MAAV,EAAkB,YAAY;AAC1BvJ,SAAC,CAAC4N,EAAD,CAAD,CAAMpQ,QAAN,CAAe,QAAf;AACH,OAFD;AAGH;AACJ;AAV0B,CAAb,CAAlB;;AAcAlE,MAAM,CAACkQ,QAAP,GAAkB,UAAUwE,IAAV,EAAgBC,IAAhB,EAAsBC,SAAtB,EAAiC;AAC/C,MAAIC,OAAJ;AACA,SAAO,YAAY;AACf,QAAIC,OAAO,GAAG,IAAd;AAAA,QAAoBC,IAAI,GAAGC,SAA3B;;AACA,QAAIC,KAAK,GAAG,SAARA,KAAQ,GAAY;AACpBJ,aAAO,GAAG,IAAV;AACA,UAAI,CAACD,SAAL,EAAgBF,IAAI,CAACna,KAAL,CAAWua,OAAX,EAAoBC,IAApB;AACnB,KAHD;;AAIA,QAAIG,OAAO,GAAGN,SAAS,IAAI,CAACC,OAA5B;AACAM,gBAAY,CAACN,OAAD,CAAZ;AACAA,WAAO,GAAG5U,UAAU,CAACgV,KAAD,EAAQN,IAAR,CAApB;AACA,QAAIO,OAAJ,EAAaR,IAAI,CAACna,KAAL,CAAWua,OAAX,EAAoBC,IAApB;AAChB,GAVD;AAWH,CAbD;;AAgBA/U,MAAM,CAACoV,uBAAP,GAAiC,UAAUva,GAAV,EAAewa,GAAf,EAAoBC,KAApB,EAA2B;AACxD,MAAIC,WAAW,GAAG,IAAIC,MAAJ,iBAAqBH,GAArB,WAAlB;AACA,MAAII,QAAQ,GAAGJ,GAAG,GAAG,GAAN,GAAYC,KAA3B;AACAza,KAAG,GAAGA,GAAG,CAAC6a,OAAJ,CAAYH,WAAZ,EAAyB,OAAOE,QAAhC,CAAN;AACA,SAAO5a,GAAP;AACH,CALD,C;;;;;;;;;;;AC9NA,uC;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA","file":"main.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./local/site.js\");\n","function MarkerClusterer(map, opt_markers, opt_options) {\r\n // MarkerClusterer implements google.maps.OverlayView interface. We use the\r\n // extend function to extend MarkerClusterer with google.maps.OverlayView\r\n // because it might not always be available when the code is defined so we\r\n // look for it at the last possible moment. If it doesn't exist now then\r\n // there is no point going ahead :)\r\n this.extend(MarkerClusterer, google.maps.OverlayView);\r\n this.map_ = map;\r\n\r\n /**\r\n * @type {Array.}\r\n * @private\r\n */\r\n this.markers_ = [];\r\n\r\n /**\r\n * @type {Array.}\r\n */\r\n this.clusters_ = [];\r\n\r\n /**\r\n * @type {Object} holding information about every markers cluster\r\n */\r\n this.markersCluster_ = {};\r\n\r\n /**\r\n * @type {Number} Unique markers ID\r\n */\r\n this.markersUniqueID = 1;\r\n\r\n this.sizes = [53, 56, 66, 78, 90];\r\n\r\n /**\r\n * @private\r\n */\r\n this.styles_ = [];\r\n\r\n /**\r\n * @private\r\n */\r\n this.cssClass_ = '';\r\n\r\n /**\r\n * @private\r\n * @type {string} Set a default Cluster Class\r\n */\r\n this.cssDefaultClass_ = 'cluster';\r\n\r\n /**\r\n * @private\r\n */\r\n this.setIndex_ = 0;\r\n\r\n /**\r\n * @type {boolean}\r\n * @private\r\n */\r\n this.ready_ = false;\r\n\r\n var options = opt_options || {};\r\n\r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.gridSize_ = (options['gridSize'] !== undefined) ? options['gridSize'] : 60;\r\n\r\n /**\r\n * @private\r\n */\r\n this.minClusterSize_ = options['minimumClusterSize'] || 2;\r\n\r\n /**\r\n * @type {boolean}\r\n * @private\r\n */\r\n this.ignoreHiddenMarkers_ = options['ignoreHiddenMarkers'] || false;\r\n\r\n /**\r\n * @type {?number}\r\n * @private\r\n */\r\n this.maxZoom_ = options['maxZoom'] || null;\r\n\r\n this.styles_ = options['styles'] || [];\r\n\r\n this.cssClass_ = options['cssClass'] || null;\r\n\r\n /**\r\n * @type {string}\r\n * @private\r\n */\r\n this.imagePath_ = options['imagePath'] ||\r\n this.MARKER_CLUSTER_IMAGE_PATH_;\r\n\r\n /**\r\n * @type {string}\r\n * @private\r\n */\r\n this.imageExtension_ = options['imageExtension'] ||\r\n this.MARKER_CLUSTER_IMAGE_EXTENSION_;\r\n\r\n /**\r\n * @type {boolean}\r\n * @private\r\n */\r\n this.zoomOnClick_ = true;\r\n\r\n if (options['zoomOnClick'] != undefined) {\r\n this.zoomOnClick_ = options['zoomOnClick'];\r\n }\r\n\r\n /**\r\n * @type {boolean}\r\n * @private\r\n */\r\n this.averageCenter_ = false;\r\n\r\n if (options['averageCenter'] != undefined) {\r\n this.averageCenter_ = options['averageCenter'];\r\n }\r\n\r\n /**\r\n * @type {function}\r\n * @private\r\n */\r\n this.onMouseoverCluster_ = options['onMouseoverCluster'];\r\n\r\n /**\r\n * @type {function}\r\n * @private\r\n */\r\n this.onMouseoutCluster_ = options['onMouseoutCluster'];\r\n\r\n /**\r\n * @type {function}\r\n * @private\r\n */\r\n this.drawCluster_ = options['drawCluster'];\r\n\r\n /**\r\n * @type {function}\r\n * @private\r\n */\r\n this.hideCluster_ = options['hideCluster'];\r\n\r\n /**\r\n * @type {function}\r\n * @private\r\n */\r\n this.showCluster_ = options['showCluster'];\r\n\r\n /**\r\n * @type {function}\r\n * @private\r\n */\r\n this.onAddCluster_ = options['onAddCluster'];\r\n\r\n /**\r\n * @type {function}\r\n * @private\r\n */\r\n this.onRemoveCluster_ = options['onRemoveCluster'];\r\n\r\n this.setupStyles_();\r\n\r\n this.setMap(map);\r\n\r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.prevZoom_ = this.map_.getZoom();\r\n\r\n // Add the map event listeners\r\n var that = this;\r\n google.maps.event.addListener(this.map_, 'zoom_changed', function () {\r\n var zoom = that.map_.getZoom();\r\n\r\n if (that.prevZoom_ != zoom) {\r\n that.prevZoom_ = zoom;\r\n that.resetViewport();\r\n }\r\n });\r\n\r\n google.maps.event.addListener(this.map_, 'idle', function () {\r\n that.redraw();\r\n });\r\n\r\n // Finally, add the markers\r\n if (opt_markers && opt_markers.length) {\r\n this.addMarkers(opt_markers, false);\r\n }\r\n}\r\n\r\n\r\n/**\r\n * The marker cluster image path.\r\n *\r\n * @type {string}\r\n * @private\r\n */\r\nMarkerClusterer.prototype.MARKER_CLUSTER_IMAGE_PATH_ = 'https://raw.githubusercontent.com/gmaps-marker-clusterer/gmaps-marker-clusterer/master/images/m';\r\n\r\n\r\n/**\r\n * The marker cluster image path.\r\n *\r\n * @type {string}\r\n * @private\r\n */\r\nMarkerClusterer.prototype.MARKER_CLUSTER_IMAGE_EXTENSION_ = 'png';\r\n\r\n\r\n/**\r\n * Extends a objects prototype by anothers.\r\n *\r\n * @param {Object} obj1 The object to be extended.\r\n * @param {Object} obj2 The object to extend with.\r\n * @return {Object} The new extended object.\r\n * @ignore\r\n */\r\nMarkerClusterer.prototype.extend = function (obj1, obj2) {\r\n return (function (object) {\r\n for (var property in object.prototype) {\r\n this.prototype[property] = object.prototype[property];\r\n }\r\n return this;\r\n }).apply(obj1, [obj2]);\r\n};\r\n\r\n\r\n/**\r\n * Implementaion of the interface method.\r\n * @ignore\r\n */\r\nMarkerClusterer.prototype.onAdd = function () {\r\n this.setReady_(true);\r\n};\r\n\r\n/**\r\n * Implementaion of the interface method.\r\n * @ignore\r\n */\r\nMarkerClusterer.prototype.draw = function () { };\r\n\r\n/**\r\n * Sets up the styles object.\r\n *\r\n * @private\r\n */\r\nMarkerClusterer.prototype.setupStyles_ = function () {\r\n if (this.styles_.length) {\r\n return;\r\n }\r\n\r\n for (var i = 0, size; size = this.sizes[i]; i++) {\r\n var url = '';\r\n if (typeof this.imagePath_ === 'function') {\r\n url = this.imagePath_(i, size);\r\n } else {\r\n url = this.imagePath_ + (i + 1) + '.' + this.imageExtension_;\r\n }\r\n this.styles_.push({\r\n url: url,\r\n height: size,\r\n width: size\r\n });\r\n }\r\n};\r\n\r\n/**\r\n * Fit the map to the bounds of the markers in the clusterer.\r\n */\r\nMarkerClusterer.prototype.fitMapToMarkers = function () {\r\n var markers = this.getMarkers();\r\n var bounds = new google.maps.LatLngBounds();\r\n for (var i = 0, marker; marker = markers[i]; i++) {\r\n bounds.extend(marker.getPosition());\r\n }\r\n\r\n this.map_.fitBounds(bounds);\r\n};\r\n\r\n\r\n/**\r\n * Sets the styles.\r\n *\r\n * @param {Object} styles The style to set.\r\n */\r\nMarkerClusterer.prototype.setStyles = function (styles) {\r\n this.styles_ = styles;\r\n};\r\n\r\n\r\n/**\r\n * Gets the styles.\r\n *\r\n * @return {Object} The styles object.\r\n */\r\nMarkerClusterer.prototype.getStyles = function () {\r\n return this.styles_;\r\n};\r\n\r\n\r\n/**\r\n * Whether zoom on click is set.\r\n *\r\n * @return {boolean} True if zoomOnClick_ is set.\r\n */\r\nMarkerClusterer.prototype.isZoomOnClick = function () {\r\n return this.zoomOnClick_;\r\n};\r\n\r\n/**\r\n * Whether average center is set.\r\n *\r\n * @return {boolean} True if averageCenter_ is set.\r\n */\r\nMarkerClusterer.prototype.isAverageCenter = function () {\r\n return this.averageCenter_;\r\n};\r\n\r\n\r\n/**\r\n * Returns the array of markers in the clusterer.\r\n *\r\n * @return {Array.} The markers.\r\n */\r\nMarkerClusterer.prototype.getMarkers = function () {\r\n return this.markers_;\r\n};\r\n\r\n\r\n/**\r\n * Returns the number of markers in the clusterer\r\n *\r\n * @return {Number} The number of markers.\r\n */\r\nMarkerClusterer.prototype.getTotalMarkers = function () {\r\n return this.markers_.length;\r\n};\r\n\r\n\r\n/**\r\n * Sets the max zoom for the clusterer.\r\n *\r\n * @param {number} maxZoom The max zoom level.\r\n */\r\nMarkerClusterer.prototype.setMaxZoom = function (maxZoom) {\r\n this.maxZoom_ = maxZoom;\r\n};\r\n\r\n\r\n/**\r\n * Gets the max zoom for the clusterer.\r\n *\r\n * @return {number} The max zoom level.\r\n */\r\nMarkerClusterer.prototype.getMaxZoom = function () {\r\n return this.maxZoom_;\r\n};\r\n\r\n/**\r\n * Gets marker's cluster object based on given marker\r\n *\r\n * @param {google.maps.Marker} marker\r\n *\r\n * @return {Cluster}\r\n */\r\nMarkerClusterer.prototype.getMarkersCluster = function (marker) {\r\n return this.clusters_[this.markersCluster_[marker.uniqueID]];\r\n};\r\n\r\n/**\r\n * The function for calculating the cluster icon image.\r\n *\r\n * @param {Array.} markers The markers in the clusterer.\r\n * @param {number} numStyles The number of styles available.\r\n * @return {Object} A object properties: 'text' (string) and 'index' (number).\r\n * @private\r\n */\r\nMarkerClusterer.prototype.calculator_ = function (markers, numStyles) {\r\n var index = 0;\r\n var count = markers.length;\r\n var dv = count;\r\n while (dv !== 0) {\r\n dv = parseInt(dv / 10, 10);\r\n index++;\r\n }\r\n\r\n index = Math.min(index, numStyles);\r\n\r\n return {\r\n text: count,\r\n index: index\r\n };\r\n};\r\n\r\n\r\n/**\r\n * Set the calculator function.\r\n *\r\n * @param {function(Array, number)} calculator The function to set as the\r\n * calculator. The function should return a object properties:\r\n * 'text' (string) and 'index' (number).\r\n *\r\n */\r\nMarkerClusterer.prototype.setCalculator = function (calculator) {\r\n this.calculator_ = calculator;\r\n};\r\n\r\n\r\n/**\r\n * Get the calculator function.\r\n *\r\n * @return {function(Array, number)} the calculator function.\r\n */\r\nMarkerClusterer.prototype.getCalculator = function () {\r\n return this.calculator_;\r\n};\r\n\r\n\r\n/**\r\n * Add an array of markers to the clusterer.\r\n *\r\n * @param {Array.} markers The markers to add.\r\n * @param {boolean=} opt_nodraw Whether to redraw the clusters.\r\n */\r\nMarkerClusterer.prototype.addMarkers = function (markers, opt_nodraw) {\r\n for (var i = 0, marker; marker = markers[i]; i++) {\r\n this.pushMarkerTo_(marker);\r\n }\r\n if (!opt_nodraw) {\r\n this.redraw();\r\n }\r\n};\r\n\r\n\r\n/**\r\n * Pushes a marker to the clusterer.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @private\r\n */\r\nMarkerClusterer.prototype.pushMarkerTo_ = function (marker) {\r\n marker.isAdded = false;\r\n if (marker['draggable']) {\r\n // If the marker is draggable add a listener so we update the clusters on\r\n // the drag end.\r\n var that = this;\r\n google.maps.event.addListener(marker, 'dragend', function () {\r\n marker.isAdded = false;\r\n that.repaint();\r\n });\r\n }\r\n marker.uniqueID = this.markersUniqueID;\r\n this.markersUniqueID++;\r\n this.markers_.push(marker);\r\n};\r\n\r\n\r\n/**\r\n * Adds a marker to the clusterer and redraws if needed.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @param {boolean=} opt_nodraw Whether to redraw the clusters.\r\n */\r\nMarkerClusterer.prototype.addMarker = function (marker, opt_nodraw) {\r\n this.pushMarkerTo_(marker);\r\n if (!opt_nodraw) {\r\n this.redraw();\r\n }\r\n};\r\n\r\n\r\n/**\r\n * Removes a marker and returns true if removed, false if not\r\n *\r\n * @param {google.maps.Marker} marker The marker to remove\r\n * @return {boolean} Whether the marker was removed or not\r\n * @private\r\n */\r\nMarkerClusterer.prototype.removeMarker_ = function (marker) {\r\n var index = -1;\r\n if (this.markers_.indexOf) {\r\n index = this.markers_.indexOf(marker);\r\n } else {\r\n for (var i = 0, m; m = this.markers_[i]; i++) {\r\n if (m == marker) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (index == -1) {\r\n // Marker is not in our list of markers.\r\n return false;\r\n }\r\n\r\n marker.setMap(null);\r\n\r\n this.markers_.splice(index, 1);\r\n delete this.markersCluster_[marker.uniqueID];\r\n\r\n return true;\r\n};\r\n\r\n\r\n/**\r\n * Remove a marker from the cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to remove.\r\n * @param {boolean=} opt_nodraw Optional boolean to force no redraw.\r\n * @return {boolean} True if the marker was removed.\r\n */\r\nMarkerClusterer.prototype.removeMarker = function (marker, opt_nodraw) {\r\n var removed = this.removeMarker_(marker);\r\n\r\n if (!opt_nodraw && removed) {\r\n this.resetViewport();\r\n this.redraw();\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\n\r\n/**\r\n * Removes an array of markers from the cluster.\r\n *\r\n * @param {Array.} markers The markers to remove.\r\n * @param {boolean=} opt_nodraw Optional boolean to force no redraw.\r\n */\r\nMarkerClusterer.prototype.removeMarkers = function (markers, opt_nodraw) {\r\n var removed = false;\r\n\r\n for (var i = markers.length; i >= 0; i--) {\r\n var marker = markers[i];\r\n var r = this.removeMarker_(marker);\r\n removed = removed || r;\r\n }\r\n\r\n if (!opt_nodraw && removed) {\r\n this.resetViewport();\r\n this.redraw();\r\n return true;\r\n }\r\n};\r\n\r\n\r\n/**\r\n * Sets the clusterer's ready state.\r\n *\r\n * @param {boolean} ready The state.\r\n * @private\r\n */\r\nMarkerClusterer.prototype.setReady_ = function (ready) {\r\n if (!this.ready_) {\r\n this.ready_ = ready;\r\n this.createClusters_();\r\n }\r\n};\r\n\r\n\r\n/**\r\n * Returns the number of clusters in the clusterer.\r\n *\r\n * @return {number} The number of clusters.\r\n */\r\nMarkerClusterer.prototype.getTotalClusters = function () {\r\n return this.clusters_.length;\r\n};\r\n\r\n\r\n/**\r\n * Returns the list of clusters in the clusterer\r\n *\r\n * @return {Array.} The list of clusters.\r\n */\r\nMarkerClusterer.prototype.getClusters = function () {\r\n return this.clusters_;\r\n};\r\n\r\n\r\n/**\r\n * Returns the google map that the clusterer is associated with.\r\n *\r\n * @return {google.maps.Map} The map.\r\n */\r\nMarkerClusterer.prototype.getMap = function () {\r\n return this.map_;\r\n};\r\n\r\n\r\n/**\r\n * Sets the google map that the clusterer is associated with.\r\n *\r\n * @param {google.maps.Map} map The map.\r\n */\r\nMarkerClusterer.prototype.setMap = function (map) {\r\n this.map_ = map;\r\n};\r\n\r\n\r\n/**\r\n * Returns the size of the grid.\r\n *\r\n * @return {number} The grid size.\r\n */\r\nMarkerClusterer.prototype.getGridSize = function () {\r\n return this.gridSize_;\r\n};\r\n\r\n\r\n/**\r\n * Sets the size of the grid.\r\n *\r\n * @param {number} size The grid size.\r\n */\r\nMarkerClusterer.prototype.setGridSize = function (size) {\r\n this.gridSize_ = size;\r\n};\r\n\r\n\r\n/**\r\n * Returns the min cluster size.\r\n *\r\n * @return {number} The grid size.\r\n */\r\nMarkerClusterer.prototype.getMinClusterSize = function () {\r\n return this.minClusterSize_;\r\n};\r\n\r\n/**\r\n * Sets the min cluster size.\r\n *\r\n * @param {number} size The grid size.\r\n */\r\nMarkerClusterer.prototype.setMinClusterSize = function (size) {\r\n this.minClusterSize_ = size;\r\n};\r\n\r\n\r\n/**\r\n * Extends a bounds object by the grid size.\r\n *\r\n * @param {google.maps.LatLngBounds} bounds The bounds to extend.\r\n * @return {google.maps.LatLngBounds} The extended bounds.\r\n */\r\nMarkerClusterer.prototype.getExtendedBounds = function (bounds) {\r\n var projection = this.getProjection();\r\n\r\n // Turn the bounds into latlng.\r\n var tr = new google.maps.LatLng(bounds.getNorthEast().lat(),\r\n bounds.getNorthEast().lng());\r\n var bl = new google.maps.LatLng(bounds.getSouthWest().lat(),\r\n bounds.getSouthWest().lng());\r\n\r\n // Convert the points to pixels and the extend out by the grid size.\r\n var trPix = projection.fromLatLngToDivPixel(tr);\r\n trPix.x += this.gridSize_;\r\n trPix.y -= this.gridSize_;\r\n\r\n var blPix = projection.fromLatLngToDivPixel(bl);\r\n blPix.x -= this.gridSize_;\r\n blPix.y += this.gridSize_;\r\n\r\n // Convert the pixel points back to LatLng\r\n var ne = projection.fromDivPixelToLatLng(trPix);\r\n var sw = projection.fromDivPixelToLatLng(blPix);\r\n\r\n // Extend the bounds to contain the new bounds.\r\n bounds.extend(ne);\r\n bounds.extend(sw);\r\n\r\n return bounds;\r\n};\r\n\r\n\r\n/**\r\n * Determins if a marker is contained in a bounds.\r\n *\r\n * @param {google.maps.Marker} marker The marker to check.\r\n * @param {google.maps.LatLngBounds} bounds The bounds to check against.\r\n * @return {boolean} True if the marker is in the bounds.\r\n * @private\r\n */\r\nMarkerClusterer.prototype.isMarkerInBounds_ = function (marker, bounds) {\r\n return bounds.contains(marker.getPosition());\r\n};\r\n\r\n\r\n/**\r\n * Clears all clusters and markers from the clusterer.\r\n */\r\nMarkerClusterer.prototype.clearMarkers = function () {\r\n this.resetViewport(true);\r\n\r\n // Set the markers a empty array.\r\n this.markers_ = [];\r\n this.markersCluster_ = {};\r\n this.markersUniqueID = 1;\r\n};\r\n\r\n\r\n/**\r\n * Clears all existing clusters and recreates them.\r\n * @param {boolean} opt_hide To also hide the marker.\r\n */\r\nMarkerClusterer.prototype.resetViewport = function (opt_hide) {\r\n // Remove all the clusters\r\n for (var i = 0, cluster; cluster = this.clusters_[i]; i++) {\r\n cluster.remove();\r\n }\r\n\r\n // Reset the markers to not be added and to be invisible.\r\n for (var i = 0, marker; marker = this.markers_[i]; i++) {\r\n marker.isAdded = false;\r\n if (opt_hide) {\r\n marker.setMap(null);\r\n }\r\n }\r\n\r\n this.clusters_ = [];\r\n this.markersCluster_ = {};\r\n this.markersUniqueID = 1;\r\n};\r\n\r\n/**\r\n *\r\n */\r\nMarkerClusterer.prototype.repaint = function () {\r\n var oldClusters = this.clusters_.slice();\r\n this.clusters_.length = 0;\r\n this.resetViewport();\r\n this.redraw();\r\n\r\n // Remove the old clusters.\r\n // Do it in a timeout so the other clusters have been drawn first.\r\n window.setTimeout(function () {\r\n for (var i = 0, cluster; cluster = oldClusters[i]; i++) {\r\n cluster.remove();\r\n }\r\n }, 0);\r\n};\r\n\r\n\r\n/**\r\n * Redraws the clusters.\r\n */\r\nMarkerClusterer.prototype.redraw = function () {\r\n this.createClusters_();\r\n};\r\n\r\n\r\n/**\r\n * Calculates the distance between two latlng locations in km.\r\n * @see http://www.movable-type.co.uk/scripts/latlong.html\r\n *\r\n * @param {google.maps.LatLng} p1 The first lat lng point.\r\n * @param {google.maps.LatLng} p2 The second lat lng point.\r\n * @return {number} The distance between the two points in km.\r\n * @private\r\n */\r\nMarkerClusterer.prototype.distanceBetweenPoints_ = function (p1, p2) {\r\n if (!p1 || !p2) {\r\n return 0;\r\n }\r\n\r\n var R = 6371; // Radius of the Earth in km\r\n var dLat = (p2.lat() - p1.lat()) * Math.PI / 180;\r\n var dLon = (p2.lng() - p1.lng()) * Math.PI / 180;\r\n var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +\r\n Math.cos(p1.lat() * Math.PI / 180) * Math.cos(p2.lat() * Math.PI / 180) *\r\n Math.sin(dLon / 2) * Math.sin(dLon / 2);\r\n var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n var d = R * c;\r\n return d;\r\n};\r\n\r\n\r\n/**\r\n * Add a marker to a cluster, or creates a new cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @private\r\n */\r\nMarkerClusterer.prototype.addToClosestCluster_ = function (marker) {\r\n var distance = 40000; // Some large number\r\n var clusterToAddTo = null;\r\n var pos = marker.getPosition();\r\n var clusterIndex = null;\r\n for (var i = 0, cluster; cluster = this.clusters_[i]; i++) {\r\n var center = cluster.getCenter();\r\n if (center) {\r\n var d = this.distanceBetweenPoints_(center, marker.getPosition());\r\n if (d < distance) {\r\n distance = d;\r\n clusterToAddTo = cluster;\r\n clusterIndex = i;\r\n }\r\n }\r\n }\r\n\r\n if (clusterToAddTo && clusterToAddTo.isMarkerInClusterBounds(marker)) {\r\n clusterToAddTo.addMarker(marker);\r\n } else {\r\n var cluster = new Cluster(this);\r\n cluster.addMarker(marker);\r\n this.clusters_.push(cluster);\r\n clusterIndex = this.clusters_.length - 1;\r\n }\r\n\r\n if (marker.isAdded) {\r\n this.markersCluster_[marker.uniqueID] = clusterIndex;\r\n }\r\n};\r\n\r\n\r\n/**\r\n * Creates the clusters.\r\n *\r\n * @private\r\n */\r\nMarkerClusterer.prototype.createClusters_ = function () {\r\n if (!this.ready_) {\r\n return;\r\n }\r\n\r\n // Get our current map view bounds.\r\n // Create a new bounds object so we don't affect the map.\r\n var mapBounds = new google.maps.LatLngBounds(this.map_.getBounds().getSouthWest(),\r\n this.map_.getBounds().getNorthEast());\r\n var bounds = this.getExtendedBounds(mapBounds);\r\n\r\n for (var i = 0, marker; marker = this.markers_[i]; i++) {\r\n if (!marker.isAdded && this.isMarkerInBounds_(marker, bounds) && (!this.ignoreHiddenMarkers_ || marker.getVisible())) {\r\n this.addToClosestCluster_(marker);\r\n }\r\n }\r\n};\r\n\r\n\r\n/**\r\n * A cluster that contains markers.\r\n *\r\n * @param {MarkerClusterer} markerClusterer The markerclusterer that this\r\n * cluster is associated with.\r\n * @constructor\r\n * @ignore\r\n */\r\nfunction Cluster(markerClusterer) {\r\n this.markerClusterer_ = markerClusterer;\r\n this.map_ = markerClusterer.getMap();\r\n this.gridSize_ = markerClusterer.getGridSize();\r\n this.minClusterSize_ = markerClusterer.getMinClusterSize();\r\n this.averageCenter_ = markerClusterer.isAverageCenter();\r\n this.center_ = null;\r\n this.markers_ = [];\r\n this.bounds_ = null;\r\n this.clusterIcon_ = new ClusterIcon(this, markerClusterer.getStyles(),\r\n markerClusterer.getGridSize());\r\n}\r\n\r\n/**\r\n * Determins if a marker is already added to the cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to check.\r\n * @return {boolean} True if the marker is already added.\r\n */\r\nCluster.prototype.isMarkerAlreadyAdded = function (marker) {\r\n if (this.markers_.indexOf) {\r\n return this.markers_.indexOf(marker) != -1;\r\n } else {\r\n for (var i = 0, m; m = this.markers_[i]; i++) {\r\n if (m == marker) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n};\r\n\r\n\r\n/**\r\n * Add a marker the cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @return {boolean} True if the marker was added.\r\n */\r\nCluster.prototype.addMarker = function (marker) {\r\n if (this.isMarkerAlreadyAdded(marker)) {\r\n return false;\r\n }\r\n\r\n if (!this.center_) {\r\n this.center_ = marker.getPosition();\r\n this.calculateBounds_();\r\n } else {\r\n if (this.averageCenter_) {\r\n var l = this.markers_.length + 1;\r\n var lat = (this.center_.lat() * (l - 1) + marker.getPosition().lat()) / l;\r\n var lng = (this.center_.lng() * (l - 1) + marker.getPosition().lng()) / l;\r\n this.center_ = new google.maps.LatLng(lat, lng);\r\n this.calculateBounds_();\r\n }\r\n }\r\n\r\n marker.isAdded = true;\r\n this.markers_.push(marker);\r\n\r\n var len = this.markers_.length;\r\n if (len < this.minClusterSize_ && marker.getMap() != this.map_) {\r\n // Min cluster size not reached so show the marker.\r\n marker.setMap(this.map_);\r\n }\r\n\r\n if (len == this.minClusterSize_) {\r\n // Hide the markers that were showing.\r\n for (var i = 0; i < len; i++) {\r\n this.markers_[i].setMap(null);\r\n }\r\n }\r\n\r\n if (len >= this.minClusterSize_) {\r\n marker.setMap(null);\r\n }\r\n\r\n this.updateIcon();\r\n return true;\r\n};\r\n\r\n\r\n/**\r\n * Returns the marker clusterer that the cluster is associated with.\r\n *\r\n * @return {MarkerClusterer} The associated marker clusterer.\r\n */\r\nCluster.prototype.getMarkerClusterer = function () {\r\n return this.markerClusterer_;\r\n};\r\n\r\n\r\n/**\r\n * Returns the bounds of the cluster.\r\n *\r\n * @return {google.maps.LatLngBounds} the cluster bounds.\r\n */\r\nCluster.prototype.getBounds = function () {\r\n var bounds = new google.maps.LatLngBounds(this.center_, this.center_);\r\n var markers = this.getMarkers();\r\n for (var i = 0, marker; marker = markers[i]; i++) {\r\n bounds.extend(marker.getPosition());\r\n }\r\n return bounds;\r\n};\r\n\r\n\r\n/**\r\n * Removes the cluster\r\n */\r\nCluster.prototype.remove = function () {\r\n this.clusterIcon_.remove();\r\n this.markers_.length = 0;\r\n delete this.markers_;\r\n};\r\n\r\n\r\n/**\r\n * Returns the center of the cluster.\r\n *\r\n * @return {number} The cluster center.\r\n */\r\nCluster.prototype.getSize = function () {\r\n return this.markers_.length;\r\n};\r\n\r\n\r\n/**\r\n * Returns the center of the cluster.\r\n *\r\n * @return {Array.} The cluster center.\r\n */\r\nCluster.prototype.getMarkers = function () {\r\n return this.markers_;\r\n};\r\n\r\n\r\n/**\r\n * Returns the center of the cluster.\r\n *\r\n * @return {google.maps.LatLng} The cluster center.\r\n */\r\nCluster.prototype.getCenter = function () {\r\n return this.center_;\r\n};\r\n\r\n\r\n/**\r\n * Calculated the extended bounds of the cluster with the grid.\r\n *\r\n * @private\r\n */\r\nCluster.prototype.calculateBounds_ = function () {\r\n var bounds = new google.maps.LatLngBounds(this.center_, this.center_);\r\n this.bounds_ = this.markerClusterer_.getExtendedBounds(bounds);\r\n};\r\n\r\n\r\n/**\r\n * Determines if a marker lies in the clusters bounds.\r\n *\r\n * @param {google.maps.Marker} marker The marker to check.\r\n * @return {boolean} True if the marker lies in the bounds.\r\n */\r\nCluster.prototype.isMarkerInClusterBounds = function (marker) {\r\n return this.bounds_.contains(marker.getPosition());\r\n};\r\n\r\n\r\n/**\r\n * Returns the map that the cluster is associated with.\r\n *\r\n * @return {google.maps.Map} The map.\r\n */\r\nCluster.prototype.getMap = function () {\r\n return this.map_;\r\n};\r\n\r\n\r\n/**\r\n * Updates the cluster icon\r\n */\r\nCluster.prototype.updateIcon = function () {\r\n var zoom = this.map_.getZoom();\r\n var mz = this.markerClusterer_.getMaxZoom();\r\n\r\n if (mz && zoom > mz) {\r\n // The zoom is greater than our max zoom so show all the markers in cluster.\r\n for (var i = 0, marker; marker = this.markers_[i]; i++) {\r\n marker.setMap(this.map_);\r\n }\r\n return;\r\n }\r\n\r\n if (this.markers_.length < this.minClusterSize_) {\r\n // Min cluster size not yet reached.\r\n this.clusterIcon_.hide();\r\n return;\r\n }\r\n\r\n var numStyles = this.markerClusterer_.getStyles().length;\r\n var sums = this.markerClusterer_.getCalculator()(this.markers_, numStyles);\r\n this.clusterIcon_.setCenter(this.center_);\r\n this.clusterIcon_.setSums(sums);\r\n this.clusterIcon_.show();\r\n};\r\n\r\n\r\n/**\r\n * A cluster icon\r\n *\r\n * @param {Cluster} cluster The cluster to be associated with.\r\n * @param {Object} styles An object that has style properties:\r\n * 'url': (string) The image url.\r\n * 'height': (number) The image height.\r\n * 'width': (number) The image width.\r\n * 'anchor': (Array) The anchor position of the label text.\r\n * 'textColor': (string) The text color.\r\n * 'textSize': (number) The text size.\r\n * 'backgroundPosition: (string) The background postition x, y.\r\n * @param {number=} opt_padding Optional padding to apply to the cluster icon.\r\n * @constructor\r\n * @extends google.maps.OverlayView\r\n * @ignore\r\n */\r\nfunction ClusterIcon(cluster, styles, opt_padding) {\r\n cluster.getMarkerClusterer().extend(ClusterIcon, google.maps.OverlayView);\r\n\r\n this.styles_ = styles;\r\n this.padding_ = opt_padding || 0;\r\n this.cluster_ = cluster;\r\n this.center_ = null;\r\n this.map_ = cluster.getMap();\r\n this.div_ = null;\r\n this.sums_ = null;\r\n this.visible_ = false;\r\n\r\n this.setMap(this.map_);\r\n}\r\n\r\n/**\r\n * Triggers the clusterclick event and zoom's if the option is set.\r\n *\r\n * @param {google.maps.MouseEvent} event The event to propagate\r\n */\r\nClusterIcon.prototype.triggerClusterClick = function (event) {\r\n var markerClusterer = this.cluster_.getMarkerClusterer();\r\n\r\n // Trigger the clusterclick event.\r\n google.maps.event.trigger(markerClusterer, 'clusterclick', this.cluster_, event);\r\n\r\n if (markerClusterer.isZoomOnClick()) {\r\n // Zoom into the cluster.\r\n this.map_.fitBounds(this.cluster_.getBounds());\r\n }\r\n};\r\n\r\n/**\r\n * Triggers the clustermouseover event.\r\n * @param {google.maps.MouseEvent} event The event to propagate\r\n */\r\nClusterIcon.prototype.triggerClusterMouseover = function (event) {\r\n var markerClusterer = this.cluster_.getMarkerClusterer();\r\n\r\n // Trigger the clustermouseover event.\r\n google.maps.event.trigger(markerClusterer, 'clustermouseover', this.cluster_, event);\r\n\r\n if (typeof this.cluster_.markerClusterer_.onMouseoverCluster_ === 'function') {\r\n this.cluster_.markerClusterer_.onMouseoverCluster_(this, event);\r\n }\r\n};\r\n\r\n/**\r\n * Triggers the clustermouseout event.\r\n * @param {google.maps.MouseEvent} event The event to propagate\r\n */\r\nClusterIcon.prototype.triggerClusterMouseout = function (event) {\r\n var markerClusterer = this.cluster_.getMarkerClusterer();\r\n\r\n // Trigger the clustermouseout event.\r\n google.maps.event.trigger(markerClusterer, 'clustermouseout', this.cluster_, event);\r\n\r\n if (typeof this.cluster_.markerClusterer_.onMouseoutCluster_ === 'function') {\r\n this.cluster_.markerClusterer_.onMouseoutCluster_(this, event);\r\n }\r\n};\r\n\r\n/**\r\n * Adding the cluster icon to the dom.\r\n * @ignore\r\n */\r\nClusterIcon.prototype.onAdd = function () {\r\n if (typeof this.cluster_.markerClusterer_.onAddCluster_ === 'function') {\r\n this.cluster_.markerClusterer_.onAddCluster_(this);\r\n }\r\n else {\r\n defaultClusterOnAdd(this);\r\n }\r\n};\r\n\r\n/**\r\n * Default onAdd function\r\n * @ignore\r\n */\r\nfunction defaultClusterOnAdd(clusterIcon) {\r\n clusterIcon.div_ = document.createElement('DIV');\r\n if (clusterIcon.visible_) {\r\n var pos = clusterIcon.getPosFromLatLng_(clusterIcon.center_);\r\n clusterIcon.div_.style.cssText = clusterIcon.createCss(pos);\r\n clusterIcon.div_.innerHTML = clusterIcon.sums_.text;\r\n clusterIcon.addClass();\r\n }\r\n\r\n var panes = clusterIcon.getPanes();\r\n\r\n panes.overlayMouseTarget.appendChild(clusterIcon.div_);\r\n\r\n var isDragging = false;\r\n var isMouseDown = false;\r\n\r\n google.maps.event.addDomListener(clusterIcon.div_, 'click', function (event) {\r\n // Only perform click when not preceded by a drag\r\n if (!isDragging) {\r\n clusterIcon.triggerClusterClick(event);\r\n }\r\n });\r\n\r\n google.maps.event.addDomListener(clusterIcon.div_, 'mousedown', function () {\r\n isDragging = false;\r\n isMouseDown = true;\r\n });\r\n\r\n google.maps.event.addDomListener(clusterIcon.div_, 'mouseup', function () {\r\n isDragging = false;\r\n isMouseDown = false;\r\n });\r\n\r\n google.maps.event.addDomListener(clusterIcon.div_, 'mousemove', function () {\r\n if (isMouseDown) {\r\n isDragging = true;\r\n }\r\n });\r\n\r\n google.maps.event.addDomListener(clusterIcon.div_, 'mouseover', function (event) {\r\n clusterIcon.triggerClusterMouseover(event);\r\n });\r\n\r\n google.maps.event.addDomListener(clusterIcon.div_, 'mouseout', function (event) {\r\n clusterIcon.triggerClusterMouseout(event);\r\n });\r\n}\r\n\r\n/**\r\n * Returns the position to place the div dending on the latlng.\r\n *\r\n * @param {google.maps.LatLng} latlng The position in latlng.\r\n * @return {google.maps.Point} The position in pixels.\r\n * @private\r\n */\r\nClusterIcon.prototype.getPosFromLatLng_ = function (latlng) {\r\n var pos = this.getProjection().fromLatLngToDivPixel(latlng);\r\n\r\n if (typeof this.iconAnchor_ === 'object' && this.iconAnchor_.length === 2) {\r\n pos.x -= this.iconAnchor_[0];\r\n pos.y -= this.iconAnchor_[1];\r\n } else {\r\n pos.x -= parseInt(this.width_ / 2, 10);\r\n pos.y -= parseInt(this.height_ / 2, 10);\r\n }\r\n return pos;\r\n};\r\n\r\n\r\n/**\r\n * Draw the icon.\r\n * @ignore\r\n */\r\nClusterIcon.prototype.draw = function () {\r\n if (typeof this.cluster_.markerClusterer_.drawCluster_ === 'function') {\r\n this.cluster_.markerClusterer_.drawCluster_(this);\r\n }\r\n else {\r\n defaultClusterDraw(this);\r\n }\r\n};\r\n\r\n/**\r\n * Default draw function\r\n * @ignore\r\n */\r\nfunction defaultClusterDraw(clusterIcon) {\r\n if (clusterIcon.visible_) {\r\n var pos = clusterIcon.getPosFromLatLng_(clusterIcon.center_);\r\n clusterIcon.div_.style.top = pos.y + 'px';\r\n clusterIcon.div_.style.left = pos.x + 'px';\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Hide the icon.\r\n */\r\nClusterIcon.prototype.hide = function () {\r\n if (typeof this.cluster_.markerClusterer_.hideCluster_ === 'function') {\r\n this.cluster_.markerClusterer_.hideCluster_(this);\r\n }\r\n else {\r\n defaultClusterHide(this);\r\n }\r\n};\r\n\r\n\r\n/**\r\n * Default hide function\r\n * @ignore\r\n */\r\nfunction defaultClusterHide(clusterIcon) {\r\n if (clusterIcon.div_) {\r\n clusterIcon.div_.style.display = 'none';\r\n clusterIcon.div_.className = '';\r\n }\r\n clusterIcon.visible_ = false;\r\n}\r\n\r\n\r\n/**\r\n * Position and show the icon.\r\n */\r\nClusterIcon.prototype.show = function () {\r\n if (typeof this.cluster_.markerClusterer_.showCluster_ === 'function') {\r\n this.cluster_.markerClusterer_.showCluster_(this);\r\n }\r\n else {\r\n defaultClusterShow(this);\r\n }\r\n};\r\n\r\n/**\r\n * Default show function\r\n * @ignore\r\n */\r\nfunction defaultClusterShow(clusterIcon) {\r\n if (clusterIcon.div_) {\r\n var pos = clusterIcon.getPosFromLatLng_(clusterIcon.center_);\r\n clusterIcon.div_.style.cssText = clusterIcon.createCss(pos);\r\n clusterIcon.div_.style.display = '';\r\n clusterIcon.addClass();\r\n }\r\n clusterIcon.visible_ = true;\r\n}\r\n\r\n\r\n/**\r\n * Remove the icon from the map\r\n */\r\nClusterIcon.prototype.remove = function () {\r\n this.setMap(null);\r\n};\r\n\r\n\r\n/**\r\n * Implementation of the onRemove interface.\r\n * @ignore\r\n */\r\nClusterIcon.prototype.onRemove = function () {\r\n if (typeof this.cluster_.markerClusterer_.onRemoveCluster_ === 'function') {\r\n this.cluster_.markerClusterer_.onRemoveCluster_(this);\r\n }\r\n else {\r\n defaultClusterOnRemove(this);\r\n }\r\n};\r\n\r\n/**\r\n * Default onRemove function\r\n * @ignore\r\n */\r\nfunction defaultClusterOnRemove(clusterIcon) {\r\n if (clusterIcon.div_ && clusterIcon.div_.parentNode) {\r\n clusterIcon.hide();\r\n clusterIcon.div_.parentNode.removeChild(clusterIcon.div_);\r\n clusterIcon.div_ = null;\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Set the sums of the icon.\r\n *\r\n * @param {Object} sums The sums containing:\r\n * 'text': (string) The text to display in the icon.\r\n * 'index': (number) The style index of the icon.\r\n */\r\nClusterIcon.prototype.setSums = function (sums) {\r\n this.sums_ = sums;\r\n this.text_ = sums.text;\r\n this.index_ = sums.index;\r\n if (this.div_) {\r\n this.div_.innerHTML = sums.text;\r\n }\r\n\r\n this.useStyle();\r\n};\r\n\r\n\r\n/**\r\n * Sets the icon to the the styles.\r\n */\r\nClusterIcon.prototype.useStyle = function () {\r\n var index = Math.max(0, this.sums_.index - 1);\r\n index = Math.min(this.styles_.length - 1, index);\r\n var style = this.styles_[index];\r\n this.url_ = style['url'];\r\n this.height_ = style['height'];\r\n this.width_ = style['width'];\r\n this.textColor_ = style['textColor'];\r\n this.anchor_ = style['anchor'];\r\n this.textSize_ = style['textSize'];\r\n this.fontFamily_ = style['fontFamily'];\r\n this.fontWeight_ = style['fontWeight'];\r\n this.backgroundPosition_ = style['backgroundPosition'];\r\n this.iconAnchor_ = style['iconAnchor'];\r\n this.setIndex_ = index;\r\n};\r\n\r\n\r\n/**\r\n * Sets the center of the icon.\r\n *\r\n * @param {google.maps.LatLng} center The latlng to set as the center.\r\n */\r\nClusterIcon.prototype.setCenter = function (center) {\r\n this.center_ = center;\r\n};\r\n\r\n\r\n/**\r\n * Create the css text based on the position of the icon.\r\n *\r\n * @param {google.maps.Point} pos The position.\r\n * @return {string} The css style text.\r\n */\r\nClusterIcon.prototype.createCss = function (pos) {\r\n var style = [];\r\n var markerClusterer = this.cluster_.getMarkerClusterer();\r\n\r\n if (!markerClusterer.cssClass_) {\r\n style.push('background-image:url(' + this.url_ + ');');\r\n var backgroundPosition = this.backgroundPosition_ ? this.backgroundPosition_ : '0 0';\r\n style.push('background-position:' + backgroundPosition + ';');\r\n\r\n if (typeof this.anchor_ === 'object') {\r\n if (typeof this.anchor_[0] === 'number' && this.anchor_[0] > 0 &&\r\n this.anchor_[0] < this.height_) {\r\n style.push('height:' + (this.height_ - this.anchor_[0]) +\r\n 'px; padding-top:' + this.anchor_[0] + 'px;');\r\n } else if (typeof this.anchor_[0] === 'number' && this.anchor_[0] < 0 &&\r\n -this.anchor_[0] < this.height_) {\r\n style.push('height:' + this.height_ + 'px; line-height:' + (this.height_ + this.anchor_[0]) +\r\n 'px;');\r\n } else {\r\n style.push('height:' + this.height_ + 'px; line-height:' + this.height_ +\r\n 'px;');\r\n }\r\n if (typeof this.anchor_[1] === 'number' && this.anchor_[1] > 0 &&\r\n this.anchor_[1] < this.width_) {\r\n style.push('width:' + (this.width_ - this.anchor_[1]) +\r\n 'px; padding-left:' + this.anchor_[1] + 'px;');\r\n } else {\r\n style.push('width:' + this.width_ + 'px; text-align:center;');\r\n }\r\n } else {\r\n style.push('height:' + this.height_ + 'px; line-height:' +\r\n this.height_ + 'px; width:' + this.width_ + 'px; text-align:center;');\r\n }\r\n\r\n var txtColor = this.textColor_ ? this.textColor_ : 'black';\r\n var txtSize = this.textSize_ ? this.textSize_ : 11;\r\n var fontFamily = this.fontFamily_ ? this.fontFamily_ : \"Arial,sans-serif\";\r\n var fontWeight = this.fontWeight_ ? this.fontWeight_ : \"bold\";\r\n\r\n style.push('cursor:pointer; top:' + pos.y + 'px; left:' +\r\n pos.x + 'px; color:' + txtColor + '; position:absolute; font-size:' +\r\n txtSize + 'px; font-family:' + fontFamily + '; font-weight:' + fontWeight);\r\n\r\n } else {\r\n style.push('top:' + pos.y + 'px; left:' + pos.x + 'px;');\r\n }\r\n\r\n return style.join('');\r\n};\r\n\r\n/**\r\n * Set the class for the cluster icon\r\n * @ignore\r\n */\r\nClusterIcon.prototype.addClass = function () {\r\n var markerClusterer = this.cluster_.getMarkerClusterer();\r\n\r\n if (markerClusterer.cssClass_) {\r\n this.div_.className = markerClusterer.cssClass_ + ' ' + markerClusterer.cssDefaultClass_ + this.setIndex_;\r\n } else {\r\n this.div_.className = markerClusterer.cssDefaultClass_ + this.setIndex_;\r\n }\r\n}\r\n\r\n\r\n// Export Symbols for Closure\r\n// If you are not going to compile with closure then you can remove the\r\n// code below.\r\nwindow['MarkerClusterer'] = MarkerClusterer;\r\nMarkerClusterer.prototype['addMarker'] = MarkerClusterer.prototype.addMarker;\r\nMarkerClusterer.prototype['addMarkers'] = MarkerClusterer.prototype.addMarkers;\r\nMarkerClusterer.prototype['clearMarkers'] =\r\n MarkerClusterer.prototype.clearMarkers;\r\nMarkerClusterer.prototype['fitMapToMarkers'] =\r\n MarkerClusterer.prototype.fitMapToMarkers;\r\nMarkerClusterer.prototype['getCalculator'] =\r\n MarkerClusterer.prototype.getCalculator;\r\nMarkerClusterer.prototype['getGridSize'] =\r\n MarkerClusterer.prototype.getGridSize;\r\nMarkerClusterer.prototype['getExtendedBounds'] =\r\n MarkerClusterer.prototype.getExtendedBounds;\r\nMarkerClusterer.prototype['getMap'] = MarkerClusterer.prototype.getMap;\r\nMarkerClusterer.prototype['getMarkers'] = MarkerClusterer.prototype.getMarkers;\r\nMarkerClusterer.prototype['getMaxZoom'] = MarkerClusterer.prototype.getMaxZoom;\r\nMarkerClusterer.prototype['getMarkersCluster'] = MarkerClusterer.prototype.getMarkersCluster;\r\nMarkerClusterer.prototype['getStyles'] = MarkerClusterer.prototype.getStyles;\r\nMarkerClusterer.prototype['getTotalClusters'] =\r\n MarkerClusterer.prototype.getTotalClusters;\r\nMarkerClusterer.prototype['getTotalMarkers'] =\r\n MarkerClusterer.prototype.getTotalMarkers;\r\nMarkerClusterer.prototype['redraw'] = MarkerClusterer.prototype.redraw;\r\nMarkerClusterer.prototype['removeMarker'] =\r\n MarkerClusterer.prototype.removeMarker;\r\nMarkerClusterer.prototype['removeMarkers'] =\r\n MarkerClusterer.prototype.removeMarkers;\r\nMarkerClusterer.prototype['resetViewport'] =\r\n MarkerClusterer.prototype.resetViewport;\r\nMarkerClusterer.prototype['repaint'] =\r\n MarkerClusterer.prototype.repaint;\r\nMarkerClusterer.prototype['setCalculator'] =\r\n MarkerClusterer.prototype.setCalculator;\r\nMarkerClusterer.prototype['setGridSize'] =\r\n MarkerClusterer.prototype.setGridSize;\r\nMarkerClusterer.prototype['setMaxZoom'] =\r\n MarkerClusterer.prototype.setMaxZoom;\r\nMarkerClusterer.prototype['onAdd'] = MarkerClusterer.prototype.onAdd;\r\nMarkerClusterer.prototype['draw'] = MarkerClusterer.prototype.draw;\r\n\r\nCluster.prototype['getCenter'] = Cluster.prototype.getCenter;\r\nCluster.prototype['getSize'] = Cluster.prototype.getSize;\r\nCluster.prototype['getMarkers'] = Cluster.prototype.getMarkers;\r\n\r\nClusterIcon.prototype['onAdd'] = ClusterIcon.prototype.onAdd;\r\nClusterIcon.prototype['draw'] = ClusterIcon.prototype.draw;\r\nClusterIcon.prototype['onRemove'] = ClusterIcon.prototype.onRemove;","$(document).ready(function () {\r\n var cal = document.getElementById('calendar')\r\n if (cal != null) {\r\n $(cal).fullCalendar({\r\n schedulerLicenseKey: 'GPL-My-Project-Is-Open-Source',\r\n eventSources: [{ events: data, }],\r\n header: {\r\n left: '',\r\n center: '',\r\n right: '',\r\n },\r\n fixedWeekCount: false,\r\n contentHeight: 200,\r\n defaultView: 'timelineCustom',\r\n views: {\r\n timelineCustom: {\r\n type: 'timeline',\r\n buttonText: 'Year',\r\n dateIncrement: { years: 1 },\r\n slotDuration: { months: 1 },\r\n visibleRange: function (currentDate) {\r\n return {\r\n start: new Date(currentDate.year(), 0, 1),\r\n end: new Date(currentDate.year(), 12, 31)\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }\r\n})","$(document).ready(function () {\r\n var chart = $('#chart')\r\n if (chart.length == 1) {\r\n var url = chart.data('url')\r\n $.getJSON('/umbraco/surface/ga/getgraph', { url: url }, function (json) {\r\n chart = AmCharts.makeChart('chart', {\r\n type: 'serial',\r\n theme: 'light',\r\n dataProvider: json,\r\n categoryField: 'Date',\r\n synchronizeGrid: true,\r\n chartCursor: {\r\n bulletsEnabled: true,\r\n oneBalloonOnly: true,\r\n categoryBalloonDateFormat: 'EEE D MMM YY',\r\n categoryBalloonColor: \"#41BBD9\"\r\n },\r\n responsive: {\r\n enabled: true\r\n },\r\n balloon: {\r\n adjustBorderColor: true,\r\n borderThickness: 0,\r\n borderRadius: 5,\r\n fillColor: '#eeeeee',\r\n color: '#000000',\r\n },\r\n categoryAxis: {\r\n gridAlpha: 0,\r\n parseDates: true,\r\n labelsEnabled: true\r\n },\r\n valueAxes: [\r\n {\r\n id: 'v1',\r\n position: 'left',\r\n title: 'Pageviews',\r\n },\r\n //{\r\n // id: 'v2',\r\n // position: 'right',\r\n // title: 'Session Duration',\r\n //}\r\n ],\r\n graphs: [\r\n {\r\n type: 'line',\r\n valueAxis: 'v1',\r\n title: 'Pageviews',\r\n valueField: 'Pageviews',\r\n lineColor: '#ED6A5E',\r\n lineThickness: 1,\r\n },\r\n //{\r\n // type: 'line',\r\n // valueAxis: 'v2',\r\n // title: 'Session Duration',\r\n // valueField: 'Duration',\r\n // lineColor: '#41BBD9',\r\n // lineThickness: 1,\r\n //},\r\n ],\r\n legend: {\r\n enabled: false\r\n }\r\n })\r\n })\r\n }\r\n})","/**\r\n * Algorithm: fixed-partition\r\n *\r\n * The algorithm outlined by Johannes Treitz in \"The algorithm\r\n * for a perfectly balanced photo gallery\" (see url below).\r\n *\r\n * Options:\r\n * - containerWidth Width of the parent container (in pixels)\r\n * - idealElementHeight Ideal element height (in pixels)\r\n * - spacing Spacing between items (in pixels)\r\n *\r\n * @throws\r\n * @see https://www.crispymtn.com/stories/the-algorithm-for-a-perfectly-balanced-photo-gallery\r\n * @param {object[]} elements\r\n * @param {object} options\r\n * @return {object}\r\n */\r\nmodule.exports = function (elements, options) {\r\n var i, j, k, n, height, positions = [], elementCount;\r\n\r\n var spacing = options.spacing || 0;\r\n var containerWidth = options.containerWidth;\r\n var idealHeight = options.idealElementHeight || (containerWidth / 3);\r\n if (!containerWidth || containerWidth == 0) throw new Error('Invalid container width');\r\n\r\n // calculate aspect ratio of all photos\r\n var aspect;\r\n var aspects = [];\r\n var aspects100 = [];\r\n for (i = 0, n = elements.length; i < n; i++) {\r\n aspect = elements[i].dataset.width / elements[i].dataset.height;\r\n aspects.push(aspect);\r\n aspects100.push(Math.round(aspect * 100));\r\n }\r\n\r\n // calculate total width of all photos\r\n var summedWidth = 0;\r\n for (i = 0, n = aspects.length; i < n; i++) {\r\n summedWidth += aspects[i] * idealHeight;\r\n }\r\n\r\n // calculate rows needed\r\n var rowsNeeded = Math.round(summedWidth / containerWidth)\r\n\r\n // adjust photo sizes\r\n if (rowsNeeded < 1) {\r\n // (2a) Fallback to just standard size\r\n var xSum = 0, width;\r\n elementCount = elements.length;\r\n\r\n var padLeft = 0;\r\n if (options.align === 'center') {\r\n var spaceNeeded = (elementCount - 1) * spacing;\r\n for (var i = 0; i < elementCount; i++) {\r\n spaceNeeded += Math.round(idealHeight * aspects[i]) - (spacing * (elementCount - 1) / elementCount);\r\n }\r\n padLeft = Math.floor((containerWidth - spaceNeeded) / 2);\r\n }\r\n\r\n for (var i = 0; i < elementCount; i++) {\r\n width = Math.round(idealHeight * aspects[i]) - (spacing * (elementCount - 1) / elementCount);\r\n positions.push({\r\n y: 0,\r\n x: padLeft + xSum,\r\n width: width,\r\n height: idealHeight\r\n });\r\n xSum += width;\r\n if (i !== n - 1) {\r\n xSum += spacing;\r\n }\r\n }\r\n ySum = idealHeight;\r\n } else {\r\n // (2b) Distribute photos over rows using the aspect ratio as weight\r\n var partitions = linear_partition(aspects100, rowsNeeded);\r\n var index = 0;\r\n var ySum = 0, xSum;\r\n for (i = 0, n = partitions.length; i < n; i++) {\r\n var element_index = index;\r\n var summedRatios = 0;\r\n for (j = 0, k = partitions[i].length; j < k; j++) {\r\n summedRatios += aspects[element_index + j];\r\n index++;\r\n }\r\n\r\n xSum = 0;\r\n height = Math.round(containerWidth / summedRatios);\r\n elementCount = partitions[i].length;\r\n for (j = 0; j < elementCount; j++) {\r\n width = Math.round((containerWidth - (elementCount - 1) * spacing) / summedRatios * aspects[element_index + j]);\r\n positions.push({\r\n y: ySum,\r\n x: xSum,\r\n width: width,\r\n height: height\r\n });\r\n xSum += width;\r\n if (j !== elementCount - 1) {\r\n xSum += spacing;\r\n }\r\n }\r\n ySum += height;\r\n if (i !== n - 1) {\r\n ySum += spacing;\r\n }\r\n }\r\n }\r\n\r\n return {\r\n width: containerWidth,\r\n height: ySum,\r\n positions: positions\r\n };\r\n};\r\n\r\n/**\r\n * Partitions elements into rows.\r\n *\r\n * @author Johannes Treitz \r\n * @see https://www.crispymtn.com/stories/the-algorithm-for-a-perfectly-balanced-photo-gallery\r\n * @param {int[]} seq\r\n * @param {int} k\r\n * @return {int[][]}\r\n */\r\nvar linear_partition = function (seq, k) {\r\n var ans, i, j, m, n, solution, table, x, y, _i, _j, _k, _l;\r\n var _m, _nn;\r\n\r\n n = seq.length;\r\n if (k <= 0) {\r\n return [];\r\n }\r\n if (k > n) {\r\n return seq.map(function (x) {\r\n return [x];\r\n });\r\n }\r\n table = (function () {\r\n var _i, _results;\r\n _results = [];\r\n for (y = _i = 0; 0 <= n ? _i < n : _i > n; y = 0 <= n ? ++_i : --_i) {\r\n _results.push((function () {\r\n var _j, _results1;\r\n _results1 = [];\r\n for (x = _j = 0; 0 <= k ? _j < k : _j > k; x = 0 <= k ? ++_j : --_j) {\r\n _results1.push(0);\r\n }\r\n return _results1;\r\n })());\r\n }\r\n return _results;\r\n })();\r\n solution = (function () {\r\n var _i, _ref, _results;\r\n _results = [];\r\n for (y = _i = 0, _ref = n - 1; 0 <= _ref ? _i < _ref : _i > _ref; y = 0 <= _ref ? ++_i : --_i) {\r\n _results.push((function () {\r\n var _j, _ref1, _results1;\r\n _results1 = [];\r\n for (x = _j = 0, _ref1 = k - 1; 0 <= _ref1 ? _j < _ref1 : _j > _ref1; x = 0 <= _ref1 ? ++_j : --_j) {\r\n _results1.push(0);\r\n }\r\n return _results1;\r\n })());\r\n }\r\n return _results;\r\n })();\r\n for (i = _i = 0; 0 <= n ? _i < n : _i > n; i = 0 <= n ? ++_i : --_i) {\r\n table[i][0] = seq[i] + (i ? table[i - 1][0] : 0);\r\n }\r\n for (j = _j = 0; 0 <= k ? _j < k : _j > k; j = 0 <= k ? ++_j : --_j) {\r\n table[0][j] = seq[0];\r\n }\r\n for (i = _k = 1; 1 <= n ? _k < n : _k > n; i = 1 <= n ? ++_k : --_k) {\r\n for (j = _l = 1; 1 <= k ? _l < k : _l > k; j = 1 <= k ? ++_l : --_l) {\r\n\r\n m = [];\r\n for (x = _m = 0; 0 <= i ? _m < i : _m > i; x = 0 <= i ? ++_m : --_m) {\r\n m.push([Math.max(table[x][j - 1], table[i][0] - table[x][0]), x]);\r\n }\r\n\r\n var minValue, minIndex = false;\r\n for (_m = 0, _nn = m.length; _m < _nn; _m++) {\r\n if (_m === 0 || m[_m][0] < minValue) {\r\n minValue = m[_m][0];\r\n minIndex = _m;\r\n }\r\n }\r\n\r\n m = m[minIndex];\r\n table[i][j] = m[0];\r\n solution[i - 1][j - 1] = m[1];\r\n }\r\n }\r\n n = n - 1;\r\n k = k - 2;\r\n ans = [];\r\n while (k >= 0) {\r\n ans = [\r\n (function () {\r\n var _m, _ref, _ref1, _results;\r\n _results = [];\r\n for (i = _m = _ref = solution[n - 1][k] + 1, _ref1 = n + 1; _ref <= _ref1 ? _m < _ref1 : _m > _ref1; i = _ref <= _ref1 ? ++_m : --_m) {\r\n _results.push(seq[i]);\r\n }\r\n return _results;\r\n })()\r\n ].concat(ans);\r\n n = solution[n - 1][k];\r\n k = k - 1;\r\n if (n === 0) break;\r\n }\r\n return [\r\n (function () {\r\n var _m, _ref, _results;\r\n _results = [];\r\n for (i = _m = 0, _ref = n + 1; 0 <= _ref ? _m < _ref : _m > _ref; i = 0 <= _ref ? ++_m : --_m) {\r\n _results.push(seq[i]);\r\n }\r\n return _results;\r\n })()\r\n ].concat(ans);\r\n};","$(document).ready(function () {\r\n\r\n var center = new google.maps.LatLng(49.455392, -2.534503)\r\n\r\n var elems = document.getElementsByClassName('map-page-map-gmap')\r\n if (elems.length == 1) {\r\n var map = new google.maps.Map(elems[0], {\r\n zoom: 10,\r\n center: center,\r\n streetViewControl: false,\r\n gestureHandling: 'greedy',\r\n mapTypeId: google.maps.MapTypeId.ROADMAP\r\n })\r\n\r\n google.maps.event.addListener(map, 'idle', function () {\r\n var bounds = map.getBounds().toString()\r\n $.get('/umbraco/surface/media/map', { bounds: bounds }, function (response) {\r\n $('.map-page-content-inner-results').html(response.view)\r\n var markers = []\r\n var result = JSON.parse(response.markers)\r\n for (var i = 0; i < result.length; i++) {\r\n var item = result[i]\r\n var latLng = new google.maps.LatLng(\r\n item.Point.Lat,\r\n item.Point.Lon\r\n )\r\n var marker = new google.maps.Marker({\r\n position: latLng,\r\n icon: {\r\n path: 'M0-48c-9.8 0-17.7 7.8-17.7 17.4 0 15.5 17.7 30.6 17.7 30.6s17.7-15.4 17.7-30.6c0-9.6-7.9-17.4-17.7-17.4z',\r\n fillColor: '#DE7264',\r\n fillOpacity: 1,\r\n anchor: new google.maps.Point(0, 0),\r\n strokeWeight: 1,\r\n strokeColor: '#DE7264',\r\n scale: .5,\r\n },\r\n id: item.Id\r\n })\r\n google.maps.event.addListener(marker, 'click', function () {\r\n var sel = `.media-library-grid-item[data-id=${this.id}]`\r\n var $item = $(sel)\r\n $item.addClass('highlight')\r\n window.setTimeout(function () {\r\n $item.removeClass('highlight')\r\n }, 1100)\r\n })\r\n\r\n markers.push(marker)\r\n }\r\n var markerCluster = new MarkerClusterer(map, markers,\r\n { imagePath: '/public/img/cluster/' }\r\n )\r\n\r\n window.updateGrid()\r\n window.LazyLoad.update()\r\n window.bindGallery()\r\n })\r\n })\r\n\r\n }\r\n})","var layout = require('./fixed-partition')\r\n\r\n$(document).ready(function () {\r\n\r\n $(window).on('resize', window.debounce(function () {\r\n debouncedResize()\r\n }, 50))\r\n\r\n $(window).on('scroll', window.debounce(function () {\r\n debouncedScroll()\r\n }, 100))\r\n\r\n window.setInterval(debouncedScroll, 1000)\r\n\r\n $('ul.perm li a.drop').click(function (e) {\r\n e.preventDefault()\r\n $(this).parent().siblings().children('ul.open').removeClass('open')\r\n $(this).siblings('ul').toggleClass('open')\r\n })\r\n\r\n $('.hamburger, .bodyfade').click(function () {\r\n $('.hamburger').toggleClass('is-active')\r\n $('.hamburger-drawer').toggleClass('open')\r\n $('.bodyfade').toggleClass('on')\r\n })\r\n\r\n $('.video-poster').magnificPopup({\r\n type: 'iframe'\r\n })\r\n\r\n $('.hamburger-drawer ul li span.toggle').click(function () {\r\n var id = $(this).data('id')\r\n $(`.hamburger-drawer ul li ul[data-id!=${id}]`).removeClass('open')\r\n $(`.hamburger-drawer ul li ul[data-id=${id}]`).toggleClass('open')\r\n })\r\n\r\n $('.media-library-search-button').click(function () {\r\n $('.media-library-search-color-picker').removeClass('open')\r\n $(this).siblings('.open').removeClass('open')\r\n $(this).toggleClass('open')\r\n })\r\n $('.media-library-search-color-swatch').click(function () {\r\n $('.media-library-search-color-picker').toggleClass('open')\r\n $('.media-library-search-button').removeClass('open')\r\n })\r\n $('.media-library-search-color-picker ul li').click(function () {\r\n var col = $(this).data('color')\r\n $('input[name=c]').val(col)\r\n $('input[name=c]')[0].form.submit()\r\n })\r\n\r\n window.bindGallery()\r\n\r\n window.updateGrid()\r\n\r\n GetTourData()\r\n\r\n})\r\n\r\n\r\nfunction GetTourData() {\r\n var $div = $('.account-data')\r\n if ($div.length == 1) {\r\n $div.find('.dynamic').remove()\r\n $.get('/umbraco/surface/data/getdata', function (response) {\r\n for (var i = 0; i < response.length; i++) {\r\n var row = response[i]\r\n var tr = `\r\n ${row.Month}\r\n ${row.Year}\r\n ${row.Bednights}\r\n ${row.Passengers}\r\n ${row.Bookings_0_3}\r\n ${row.Bookings_4_6}\r\n ${row.Bookings_7_9}\r\n ${row.Bookings_10}\r\n\r\n ${row.Alderney}\r\n ${row.Birmingham}\r\n ${row.Bournemouth}\r\n ${row.Bristol}\r\n ${row.Cardiff}\r\n ${row.EastMidlands}\r\n ${row.Edinburgh}\r\n ${row.Exeter}\r\n ${row.Glasgow}\r\n ${row.Jersey}\r\n ${row.LeedsBradford}\r\n ${row.Liverpool}\r\n ${row.LondonCity}\r\n ${row.LondonGatwick}\r\n ${row.LondonHeathrow}\r\n ${row.Manchester}\r\n ${row.Newquay}\r\n ${row.Norwich}\r\n ${row.Southampton}\r\n ${row.Southend}\r\n ${row.Stansted}\r\n\r\n ${row.Sea_Poole}\r\n ${row.Sea_Portsmouth}\r\n ${row.Sea_Weymouth}\r\n ${row.Sea_Jersey}\r\n ${row.Sea_StMalo}\r\n \r\n `\r\n $('.account-data table tbody').append(tr)\r\n }\r\n $('.account-data tbody tr td i').click(function () {\r\n var month = $(this).data('month')\r\n var year = $(this).data('year')\r\n $.post('/umbraco/surface/data/deletedata', { month: month, year: year }, function () {\r\n GetTourData()\r\n })\r\n })\r\n })\r\n }\r\n}\r\n\r\nfunction debouncedScroll() {\r\n var $head = $('header')\r\n if ($(window).scrollTop() >= 40) {\r\n $head.addClass('scrolled')\r\n } else if ($(window).scrollTop() <= 30) {\r\n $head.removeClass('scrolled')\r\n }\r\n}\r\n\r\n\r\nfunction debouncedResize() {\r\n window.updateGrid()\r\n}\r\n\r\n\r\nwindow.bindGallery = function () {\r\n $('.media-library-grid-item a').unbind()\r\n\r\n $('.media-library-grid-item a.add').click(function () {\r\n var $btn = $(this)\r\n var id = $(this).data('id')\r\n $.get('/umbraco/surface/media/addfave', { id: id }, function (response) {\r\n $btn.removeClass('add')\r\n $btn.addClass('remove')\r\n $btn.children('i').removeClass('ss-plus')\r\n $btn.children('i').addClass('ss-trash')\r\n window.bindGallery()\r\n })\r\n })\r\n\r\n $('.media-library-grid-item a.remove').click(function () {\r\n var $btn = $(this)\r\n var id = $(this).data('id')\r\n $.get('/umbraco/surface/media/removefave', { id: id }, function (response) {\r\n if ($btn.parents('.remove').length > 0) {\r\n $btn.parents('.media-library-grid-item').remove()\r\n window.updateGrid()\r\n } else {\r\n $btn.removeClass('remove')\r\n $btn.addClass('add')\r\n $btn.children('i').removeClass('ss-trash')\r\n $btn.children('i').addClass('ss-plus')\r\n window.bindGallery()\r\n }\r\n })\r\n })\r\n\r\n $('.media-library-grid-item a.view').magnificPopup({\r\n type: 'inline'\r\n })\r\n}\r\n\r\n\r\nwindow.updateGrid = function () {\r\n var gridItems = $('.media-library-grid-item img')\r\n if (gridItems.length > 0) {\r\n var height = gridItems.length >= 5 ? (window.innerHeight / 4) : (window.innerHeight / 1.5)\r\n var width = Math.floor($('.media-library-grid').width())\r\n var grid = layout(gridItems, {\r\n containerWidth: width,\r\n idealElementHeight: height,\r\n spacing: 10\r\n })\r\n for (var i = 0; i < gridItems.length; i++) {\r\n if (grid.positions[i].width > 0) {\r\n $(gridItems[i]).css('width', grid.positions[i].width)\r\n $(gridItems[i]).css('height', grid.positions[i].height)\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\nwindow.LazyLoad = new LazyLoad({\r\n elements_selector: '.lazy',\r\n callback_enter: function (el) {\r\n if (el.tagName !== 'IMG') {\r\n var img = document.createElement('img')\r\n $(img).attr('src', $(el).data('src'))\r\n $(img).on('load', function () {\r\n $(el).addClass('loaded')\r\n })\r\n }\r\n }\r\n})\r\n\r\n\r\nwindow.debounce = function (func, wait, immediate) {\r\n var timeout\r\n return function () {\r\n var context = this, args = arguments\r\n var later = function () {\r\n timeout = null\r\n if (!immediate) func.apply(context, args)\r\n }\r\n var callNow = immediate && !timeout\r\n clearTimeout(timeout)\r\n timeout = setTimeout(later, wait)\r\n if (callNow) func.apply(context, args)\r\n }\r\n}\r\n\r\n\r\nwindow.replaceQueryStringParam = function (url, key, value) {\r\n var updateRegex = new RegExp(`([\\?&])${key}[^&]*`)\r\n var newParam = key + '=' + value\r\n url = url.replace(updateRegex, \"$1\" + newParam)\r\n return url\r\n}","// extracted by mini-css-extract-plugin","import './js/MarkerClusterer'\r\n\r\nimport './scss/site.scss'\r\n\r\nimport './js/ui'\r\nimport './js/map'\r\nimport './js/chart'\r\nimport './js/calendar'"],"sourceRoot":""}