{"version":3,"sources":["admin.js","backbone.stickit.js","admin-bindings.js","tinycolor.js","jquery.colorpickersliders.js","ajax.js","util.js","jquery.fontselect.js"],"names":["factory","define","amd","exports","module","window","FF_Cookie","extend","i","result","arguments","length","attributes","key","init","converter","api","value","path","defaults","expires","Date","setMilliseconds","getMilliseconds","JSON","stringify","test","e","write","encodeURIComponent","String","replace","decodeURIComponent","escape","document","cookie","toUTCString","domain","secure","join","cookies","split","rdecode","parts","name","slice","charAt","read","this","json","parse","get","set","getJSON","apply","call","remove","withConverter","jQuery","$","validateLicense","data","$licenseCont","activated","val","fname","lname","email","subscribe","prop","code","isX","licenseValid","dfd","Deferred","removeClass","hide","addClass","initEmail","initCode","resolve","promise","action","url","post","response","regexTest","laim_localize","ajaxurl","error","item_id","show","trigger","traversePages","pages","res","each","el","t","is","showLoadingView","hideLoadingView","isScrolledIntoView","$elem","elemTop","elemBottom","rule","docViewTop","$win","scrollTop","docViewBottom","height","updateMenuMap","map","$list","find","$t","locationData","term_id","trim","text","loc","isDef","$storageInput","openLocPopup","$item","$locPopup","populatePopup","$def","setTimeout","$body","on","closeLocPopup","closest","force","target","off","location","current","cat","ids","after","id","wrap","ind","cl","scl","bg","cc","hover","parent","append","before","prepend","change","end","options","flag","preventDefault","$form","p","hidden","user","desktop","mobile","resulted","everyone","loggedin","loggedout","yes","no","include","exclude","cposts","cats","taxes","langs","wp_pages","done","click","file","reader","FileReader","files","onload","er","alert","console","log","confirm","dataType","reload","fail","readAsText","state","$tabs","$subtabs","$or","scroll","offset","top","css","width","left","resize","not","animate","submit","file_frame","attachment","$input","parents","eq","open","wp","media","frames","multiple","first","toJSON","html","sizes","full","$popup","$clone","$select","clone","attr","_for","curr","sf_menus","$selected","$curr","require","_","Backbone","Stickit","_handlers","addHandler","handlers","flatten","handler","updateModel","updateView","updateMethod","concat","ViewMixin","_modelBindings","unstickit","model","bindingSelector","isObject","v","selector","models","destroyFns","reject","binding","config","event","fn","push","_destroy","invoke","uniq","cid","$el","stickit","optionalModel","optionalBindingsConfig","bindings","addBinding","stickitWrapped","ret","namespace","isString","observe","isFunction","getConfiguration","modelAttr","view","bindId","uniqueId","stickitChange","setOptions","applyViewFn","destroy","initializeAttributes","initializeVisible","initializeClasses","events","type","eventName","sel","bind","getVal","evaluateBoolean","setAttr","observeModelEvent","m","currentVal","getAttr","updateViewBindEl","initialize","View","prototype","evaluatePath","obj","reduce","memo","reference","isBoolean","last","onSet","isArray","attribute","index","has","retrieveVal","field","sanitizeVal","onGet","update","opts","filter","visible","props","attrConfig","lastClass","observed","updateAttr","updateType","contains","classes","classConfig","updateClass","toggleClass","visibleCb","visibleFn","isVisible","toggle","isInitializing","afterUpdate","checkbox","checkboxVal","checked","some","item","boxval","optList","selectConfig","selectOptions","list","collection","undefined","isMultiple","getList","option","dataVal","label","opt_labels","valuePath","labelPath","disabledPath","addSelectOptions","fieldVal","disabled","optionVal","fillOption","isEqual","context","indexOf","Collection","refreshSelectOptions","removeCollectionListeners","removeAllListeners","once","viewCid","defaultOption","$group","opt","sortBy","comparator","selected","SuperflyView","render","close","tinycolor","color","hasOwnProperty","rgb","inputToRGB","r","g","b","a","roundA","mathRound","format","ok","_tc_id","tinyCounter","alpha","getAlpha","setAlpha","boundAlpha","toHsv","hsv","rgbToHsv","h","s","toHsvString","toHsl","hsl","rgbToHsl","l","toHslString","toHex","allow3Char","rgbToHex","toHexString","toRgb","toRgbString","toPercentageRgb","bound01","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex","secondHex","alphaHex","Math","round","parseFloat","toString","secondAlphaHex","gradientType","pad2","formatSet","formattedString","formatWithAlpha","stringInputToObject","rgbToRgb","substr","convertToPercentage","hsvToRgb","hslToRgb","mathMin","mathMax","max","min","d","hue2rgb","q","math","floor","f","mod","isNaN","n","isOnePointZero","processPercent","isPercentage","parseInt","abs","clamp01","parseHex","c","trimLeft","trimRight","toLowerCase","named","names","match","matchers","exec","rgba","hsla","hex6","hex3","mathRandom","random","fromRatio","newColor","equals","color1","color2","desaturate","amount","saturate","greyscale","lighten","darken","complement","triad","tetrad","splitcomplement","analogous","results","slices","part","monochromatic","modification","readability","brightnessA","brightnessB","colorDiff","brightness","readable","mostReadable","baseColor","colorList","bestColor","bestScore","bestIsReadable","score","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","o","flipped","flip","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","RegExp","ColorPickerSliders","alreadyinitialized","_initSettings","_buildHtml","_initElements","triggerelement","tiny","settings","cielch","rgb2lch","_renderSwatches","_bindEvents","_updateAllElements","updateColor","newcolor","disableinputupdate","updatedcolor","container","showPopup","popuporiginalwidth","viewportwidth","outerWidth","outerHeight","hidePopup","swatches","customswatches","connectedinput","flat","disableautopopup","updateinterval","previewontriggerelement","previewcontrasttreshold","previewformat","erroneousciecolormarkers","invalidcolorsopacity","finercierangeedges","titleswatchesadd","titleswatchesremove","titleswatchesreset","order","labels","onchange","opacity","cie","preview","hslhue","hslsaturation","hsllightness","rgbred","rgbgreen","rgbblue","cielightness","ciechroma","ciehue","gradientSupported","sliders","color_picker_html","insertAfter","appendTo","add","elements","actualswatch","swatchescontainer","swatches_add","swatches_remove","swatches_reset","all_sliders","hue","hue_marker","saturation","saturation_marker","lightness","lightness_marker","opacity_marker","red_marker","green_marker","blue_marker","cielightness_marker","ciechroma_marker","ciehue_marker","destroyColorPicker","resetColorPicker","ev","stopPropagation","_addCurrentColorToSwatches","_removeActualColorFromSwatches","_resetSwatches","which","_updateColorsProperty","_updateMarkerPosition","dragTarget","percent","MAXLIGHT","MAXVALIDCHROMA","select","_parseCustomSwatches","localStorage","getItem","err","Array","_findActualColorsSwatch","found","swatchcolor","currentswatch","_storeSwatches","setItem","unshift","splice","property","lch2rgb","isok","slidername","calculateEventPositionPercentage","_updateAllElementsTimer","updateAllElementsTimeout","clearTimeout","now","lastUpdateTime","_renderOpacity","_renderHue","_renderSaturation","_renderLightness","_renderRed","_renderGreen","_renderBlue","_renderCieLightness","_renderCieChroma","_renderCieHue","_renderPreview","_updateConnectedInput","element","$element","setGradient","getScaledGradientStops","_extendCieGradientStops","gradientstops","sort","position","tmparray","steps","extendedgradientstops","rawcolor","j","merge","csscolor","colorstring","getEventCoordinates","pageX","originalEvent","pageY","touches","containerElement","xsize","testelement","createElement","style","backgroundImage","scalableproperty","minvalue","maxvalue","minposition","maxposition","gradientStops","diff","currentstage","modifiedcolor","modifyColor","stagergb","gradientstring","oldwebkitgradientstring","noprefix","webkit","oldwebkit","isGoodRgb","lch","CIELab2CIELCH","XYZ2CIELab","rgb2XYZ","XYZ2rgb","CIELab2XYZ","CIELCH2CIELab","tmp","lastbadchroma","lastgoodchroma","loops","$return","tmpcolor","XYZ","pow","x","y","z","CIELab","X","Y","Z","CIELCH","sqrt","atan2","PI","cos","sin","AwesomeAjax","prefix","self","load_model","model_name","callback_success","callback_error","ajax","success_handler","error_handler","publish_model","delete_model","args","security","success","responseArray","wpAjax","parseAjaxResponse","errors","responses","success_error_handler","AwesomeUtil","detect_os","os_name","navigator","appVersion","toObject","arr","rv","find_in_array_of_objects","array","hex_to_rgb","calc_size","raw","endsWith","clean_number","get_keys","find_key_by_value","needle","haystack","find_index_by_value","keys","start_with","regex","replace_all","capitalize","toUpperCase","windowScrollTopView","fontselect","__bind","me","fonts","empty","placeholder","lookahead","Fontselect","original","$original","active","setupHtml","getVisibleFonts","bindEvents","font","updateSelected","addFontLink","$results","selectFont","mouseenter","activateFont","mouseleave","deactivateFont","toggleDrop","$arrow","$drop","clearInterval","visibleInterval","moveToSelected","setInterval","$li","currentTarget","toReadable","font-family","toStyle","class","fontsAsHtml","font-weight","link"],"mappings":"CAOC,SAAUA,GACe,mBAAXC,QAAyBA,OAAOC,IACvCD,OAAOD,GACmB,iBAAZG,QACdC,OAAOD,QAAUH,IAQjBK,OAAOC,UAAYN,IAZ3B,CAcE,WACE,SAASO,IAGL,IAFA,IAAIC,EAAI,EACJC,KACGD,EAAIE,UAAUC,OAAQH,IAAK,CAC9B,IAAII,EAAaF,UAAWF,GAC5B,IAAK,IAAIK,KAAOD,EACZH,EAAOI,GAAOD,EAAWC,GAGjC,OAAOJ,EAGX,SAASK,EAAMC,GACX,SAASC,EAAKH,EAAKI,EAAOL,GACtB,IAAIH,EAIJ,GAAIC,UAAUC,OAAS,EAAG,CAKtB,GAAkC,iBAJlCC,EAAaL,GACTW,KAAM,KACPF,EAAIG,SAAUP,IAEKQ,QAAsB,CACxC,IAAIA,EAAU,IAAIC,KAClBD,EAAQE,gBAAgBF,EAAQG,kBAAyC,MAArBX,EAAWQ,SAC/DR,EAAWQ,QAAUA,EAGzB,IACIX,EAASe,KAAKC,UAAUR,GACpB,UAAUS,KAAKjB,KACfQ,EAAQR,GAEd,MAAOkB,IAaT,OAPIV,EAJCF,EAAUa,MAIHb,EAAUa,MAAMX,EAAOJ,GAHvBgB,mBAAmBC,OAAOb,IAC7Bc,QAAQ,4DAA6DC,oBAK9EnB,EAAMgB,mBAAmBC,OAAOjB,IAChCA,EAAMA,EAAIkB,QAAQ,2BAA4BC,oBAC9CnB,EAAMA,EAAIkB,QAAQ,UAAWE,QAErBC,SAASC,QACbtB,EAAK,IAAKI,EACVL,EAAWQ,SAAW,aAAeR,EAAWQ,QAAQgB,cACxDxB,EAAWM,MAAW,UAAYN,EAAWM,KAC7CN,EAAWyB,QAAW,YAAczB,EAAWyB,OAC/CzB,EAAW0B,OAAS,WAAa,IACnCC,KAAK,IAKN1B,IACDJ,MAUJ,IAJA,IAAI+B,EAAUN,SAASC,OAASD,SAASC,OAAOM,MAAM,SAClDC,EAAU,mBACVlC,EAAI,EAEDA,EAAIgC,EAAQ7B,OAAQH,IAAK,CAC5B,IAAImC,EAAQH,EAAQhC,GAAGiC,MAAM,KACzBG,EAAOD,EAAM,GAAGZ,QAAQW,EAASV,oBACjCG,EAASQ,EAAME,MAAM,GAAGN,KAAK,KAER,MAArBJ,EAAOW,OAAO,KACdX,EAASA,EAAOU,MAAM,GAAI,IAG9B,IAKI,GAJAV,EAASpB,EAAUgC,KACfhC,EAAUgC,KAAKZ,EAAQS,GAAQ7B,EAAUoB,EAAQS,IACrDT,EAAOJ,QAAQW,EAASV,oBAEpBgB,KAAKC,KACL,IACId,EAASX,KAAK0B,MAAMf,GACtB,MAAOR,IAGb,GAAId,IAAQ+B,EAAM,CACdnC,EAAS0B,EACT,MAGCtB,IACDJ,EAAOmC,GAAQT,GAErB,MAAOR,KAGb,OAAOlB,EAmBX,OAhBAO,EAAImC,IAAMnC,EAAIoC,IAAMpC,EACpBA,EAAIqC,QAAU,WACV,OAAOrC,EAAIsC,OACPL,MAAM,MACJJ,MAAMU,KAAK7C,aAErBM,EAAIG,YAEJH,EAAIwC,OAAS,SAAU3C,EAAKD,GACxBI,EAAIH,EAAK,GAAIN,EAAOK,GAChBQ,SAAU,MAIlBJ,EAAIyC,cAAgB3C,EAEbE,EAGX,OAAOF,EAAK,gBAGhB4C,OAAO,SAAUC,GAoGb,SAASC,IACL,IAUIC,EAVAC,EAAeH,EAAE,eACjBI,EAAYJ,EAAE,oBAAqBG,GAAcE,MACjDC,EAAQN,EAAE,oBAAqBG,GAAcE,MAC7CE,EAAQP,EAAE,oBAAqBG,GAAcE,MAC7CG,EAAQR,EAAE,oBAAqBG,GAAcE,MAC7CI,EAAYT,EAAE,wBAAyBG,GAAcO,KAAK,WAC1DC,EAAOX,EAAE,mBAAoBG,GAAcnD,OAAS,EAAIgD,EAAE,mBAAoBG,GAAcE,MAAQ,GACpGO,EAAMZ,EAAE,mBAAoBG,GAAcD,KAAK,KAC/CW,GAAe,EACfC,EAAMd,EAAEe,WA8BZ,GA3BAf,EAAE,oBAAqBG,GAAca,YAAY,oBACjDhB,EAAE,mBAAoBG,GAAca,YAAY,oBAChDhB,EAAE,6BAA8BG,GAAcc,OAelC,IAATT,GAAuB,IAARG,GAAeC,IAC7BZ,EAAE,oBAAqBG,GAAce,SAAS,oBAC9CL,GAAe,GAQfT,GAAaI,GAASW,GAAaR,GAAQS,EAE3C,OADAN,EAAIO,QAAQjB,GACLU,EAAIQ,UAGf,GAAa,IAATd,EACA,GAAK,2CAA2CzC,KAAKyC,GAG9C,CACAR,EAAE,mBAAoBG,GAAcnD,OAGvCkD,GACIqB,OAAQ,SACRf,MAAOA,EACPF,MAAOA,EACPC,MAAOA,GAEX,IAAIiB,EAAM,yDAGVxB,EAAEyB,KAAKD,EAAKtB,EAAM,SAAUwB,MACxBjB,IACAP,EAAKqB,OAAS,YAEdvB,EAAEyB,KAAKD,EAAKtB,EAAM,SAAUwB,YAnBhC1B,EAAE,oBAAqBG,GAAce,SAAS,oBAC9CL,GAAe,EAuBvB,GAAY,IAARF,EAAY,CACZ,IAAIgB,EAAY,0DAA0D5D,KAAK4C,GAE1EgB,GAMDzB,GACIqB,OAAQ,6BACRZ,KAAMA,GAGVX,EAAEyB,KAAKG,cAAcC,QAAS3B,EAAM,SAAUwB,IACzB,GAAbA,EACAb,GAAe,EAEXa,EAASI,OAA8B,YAArBJ,EAASK,SAC3BlB,GAAe,EACfb,EAAE,mBAAoBG,GAAce,SAAS,oBAC7ClB,EAAE,6BAA8BG,GAAc6B,OAC9ChC,EAAE,mBAAmBiC,QAAQ,UAE7BjC,EAAE,oBAAqBG,GAAcE,IAAI,KAGjDS,EAAIO,QAAQR,OAvBhBb,EAAE,mBAAoBG,GAAce,SAAS,oBAC7CL,EAAec,EACfb,EAAIO,QAAQR,GACZb,EAAE,mBAAmBiC,QAAQ,eAwBjCnB,EAAIO,QAAQR,GAGhB,OAAOC,EAAIQ,UAuIf,SAASY,EAAcC,GACnB,IAAIC,KAQJ,OANAD,EAAME,KAAK,SAAUxF,EAAGyF,GACpB,IAAIC,EAAIvC,EAAEsC,GACNjC,EAAMkC,EAAElC,MACRkC,EAAEC,GAAG,cAAaJ,EAAI/B,GAAO,KAG9B+B,EAGX,SAASK,IACLzC,EAAE,iBAAiBkB,SAAS,WAGhC,SAASwB,IACL1C,EAAE,iBAAiBgB,YAAY,WAInC,SAAS2B,EAAmBC,EAAOC,EAASC,EAAYC,GACpD,IAAIC,EAAaC,EAAKC,YAClBC,EAAgBH,EAAaC,EAAKG,SAEtC,MAAgB,UAATL,EAAmBI,EAAgBL,EAAa,GAAMA,GAAcK,GAAiBN,GAAWG,EAAa,IAAQF,EAAaK,GAAiBN,EAAUG,EAAa,GA+QrL,SAASK,IACL,IACIC,KADSC,EAAMC,KAAK,kBAEjBnB,KAAK,WACR,IAAIoB,EAAKzD,EAAEX,MACPqE,EAAeD,EAAGvD,KAAK,gBAE3BoD,EAAIG,EAAGvD,KAAK,QACRyD,QAASF,EAAGvD,KAAK,MACjBjB,KAAMe,EAAE4D,KAAKH,EAAGI,QAChBC,IAAKJ,EACLK,MAAON,EAAGvD,KAAK,YAGvB8D,EAAc3D,IAAIxC,KAAKC,UAAUwF,IAGrC,SAASW,EAAaC,GAElB,IAAIR,EAAeQ,EAAMhE,KAAK,YAC9BiE,EAAUjE,KAAK,cAAegE,GAG9BC,EAAUX,KAAK,YAAY9C,KAAK,WAAW,GAC3CyD,EAAUX,KAAK,SAASnD,IAAI,IAExBqD,GACAU,EAAcV,EAAcQ,GAGhCG,EAAK3D,KAAK,UAAWwD,EAAMhE,KAAK,UAC7BgE,EAAMhE,KAAK,SACVF,EAAE,iBAAkBmE,GAAWlD,OAE/BjB,EAAE,iBAAkBmE,GAAWnC,OAGnCsC,WAAW,WACPC,EAAMC,GAAG,QAASC,IACnB,GAGHP,EAAMQ,QAAQ,mBAAmBxD,SAAS,2BAG9C,SAASuD,EAAczG,EAAG2G,GACtB,IAAIlB,EAAKzD,EAAEhC,EAAE4G,UACRnB,EAAGiB,QAAQP,GAAWnH,QAAUyG,EAAGjB,GAAG,4BAA8BmC,KACrE3E,EAAE,mBAAmBgB,YAAY,2BACjCuD,EAAMM,IAAI,QAASJ,IAI3B,SAASL,EAAcU,EAAUC,GAC7B,IAAIrE,EAAMsE,EAEV,IAAMtE,KAAQoE,EAAW,CACrBE,EAAMF,EAAUpE,GAChB,IAAM,IAAIzB,KAAQ+F,EACdb,EAAUX,KAAK,YAAc9C,EAAKtC,QAAQ,KAAM,IAAM,IAAMa,EAAO,UAAUyB,KAAK,UAAWoE,EAASpE,IAIzGoE,EAASG,KAAMd,EAAUX,KAAK,sBAAsBnD,IAAIyE,EAASG,IAAIrG,KAAK,MAzrBnF,IAAIqE,EAAOjD,EAAEtD,QACT6H,EAAQvE,EAAE,QAIdA,EAAE,YAAYkF,MAAMlF,EAAE,0BAA0BkF,MAAMlF,EAAE,4BAA4BkF,MAAMlF,EAAE,0BAA0BkF,MAAMlF,EAAE,kBAE9HA,EAAE,cAAckF,MAAMlF,EAAE,wBAAwBkF,MAAMlF,EAAE,yBAAyBkF,MAAMlF,EAAE,aAEzFA,EAAE,YAAYkF,MAAM,uDACpBlF,EAAE,iBAAiBkF,MAAM,uDAEzBlF,EAAE,YAAYwD,KAAK,WAAW3D,SAC9BG,EAAE,cAAcwD,KAAK,WAAW3D,SAEhCG,EAAE,aAAaqC,KAAK,WAChBrC,EAAEX,MAAM6F,MAAM,4BAGlBlF,EAAE,mBAAmBqC,KAAK,WACtB,IAAI8C,EAAK9F,KAAK8F,GACdnF,EAAEX,MAAM+F,KAAK,mCAAqCD,EAAK,sBAG3DnF,EAAE,yBAAyBqC,KAAK,WAC5B,IAAIgD,EAAMhG,KAAK8F,GAAG/G,QAAQ,kBAAmB,IACzCkH,EAAKtF,EAAE,mBAAqBqF,GAC5BE,EAAMvF,EAAE,oBAAsBqF,GAC9BG,EAAKxF,EAAE,sBAAwBqF,GAC/BI,EAAKzF,EAAE,eAAiBqF,GACxBK,EAAQ1F,EAAE,mBAAqBqF,GACnCrF,EAAEX,MAAMsG,SAASC,OAAOJ,GAAII,OAAON,GAAIM,OAAOL,GAAKK,OAAOH,GAAIG,OAAOF,GACrEF,EAAGK,OAAO,2BACVP,EAAGO,OAAO,qBACVN,EAAIM,OAAO,4BACXH,EAAMG,OAAO,4BACbJ,EAAGI,OAAO,0BAYd,GANA7F,EAAE,WAAW8F,QAAS9F,EAFX,igBAMKtD,OAAOC,UAAU6C,IAAI,iBAKjC,GAAKQ,EAAE,yBAAyBU,KAAK,WAAa,CAE9C,IAAIP,EAAeH,EAAE,eACjBM,EAAQN,EAAE,oBAAqBG,GAAcE,MAC7CE,EAAQP,EAAE,oBAAqBG,GAAcE,MAG7CH,GACAqB,OAAQ,YACRf,MAJQR,EAAE,oBAAqBG,GAAcE,MAK7CC,MAAOA,EACPC,MAAOA,GAKXP,EAAEyB,KAFQ,yDAEEvB,EAAM,SAAUwB,MAE5BhF,OAAOC,UAAU8C,IAAI,UAAW,aAAehC,QAAS,MAMhEuC,EAAE,qBAAqB+F,OAAO,WAC1B,IAAI1F,EAAML,EAAEX,MAAMgB,MACTL,EAAEX,MAAMqF,QAAQ,sBAEtBlB,KAAK,iBAAiBvC,OAAO+E,MAAMxC,KAAK,gBAAkBnD,EAAM,KAAK2B,OAC5D,WAAR3B,EACAL,EAAE,eAAegC,OAEjBhC,EAAE,eAAeiB,OAGT,SAARZ,GACAL,EAAE,oBAAoBiB,OACtBjB,EAAE,iBAAiBgC,SAEnBhC,EAAE,oBAAoBgC,OACtBhC,EAAE,iBAAiBiB,UAExB8E,SAEH,IAAI5E,EAAYnB,EAAE,iCAAiCK,MAC/Ce,EAAWpB,EAAE,gCAAgCK,MA8GjDL,EAAE,oBAAoBwE,GAAG,QAAS,SAAUxG,EAAGiI,GAC3CjG,EAAE,qBAAqBK,IAAI,IAC3BL,EAAEX,MAAM2B,YAAY,wBAGxBhB,EAAE,qBAAqBwE,GAAG,QAAS,SAAUxG,EAAGiI,MAIhDjG,EAAE,yBAAyBwE,GAAG,SAAU,SAAUxG,EAAGiI,MAIrDjG,EAAE,yBAAyBwE,GAAG,SAAU,SAAUxG,EAAGiI,IACjDA,EAAUA,OAEGC,MACTlI,EAAEmI,iBAGN,IAAIC,EAAQpG,EAAEX,MACVgH,EAAIrG,EAAE,eACN+E,EAAUsB,EAAE7C,KAAK,cACjB8C,EAASD,EAAE7C,KAAK,gBAChB+C,EAAOxB,EAAQvB,KAAK,2BAA2BnD,MAE/CmG,GADOzB,EAAQvB,KAAK,4BAA4BnD,MACtC0E,EAAQvB,KAAK,+BAA+BnD,OACtDoG,EAAS1B,EAAQvB,KAAK,8BAA8BnD,MACpD4E,EAAMF,EAAQvB,KAAK,qBAAqBnD,MAExCqG,GACAH,MACII,SAAqB,aAATJ,EAAsB,EAAI,EACtCK,SAAqB,aAATL,EAAsB,EAAI,EACtCM,UAAsB,cAATN,EAAuB,EAAI,GAE5CC,SACIM,IAAmB,QAAZN,EAAoB,EAAI,EAC/BO,GAAkB,OAAZP,EAAmB,EAAI,GAEjCC,QACIK,IAAkB,QAAXL,EAAmB,EAAI,EAC9BM,GAAiB,OAAXN,EAAkB,EAAI,GAGhC1D,MAGIiE,QAAW,EACXC,QAAW,GAEfnC,UACI3C,MAASD,EAAc6C,EAAQvB,KAAK,4BACpC0D,OAAUhF,EAAc6C,EAAQvB,KAAK,6BACrC2D,KAAQjF,EAAc6C,EAAQvB,KAAK,2BACnC4D,SACAC,MAASnF,EAAc6C,EAAQvB,KAAK,4BACpC8D,SAAYpF,EAAc6C,EAAQvB,KAAK,+BACvCyB,IAAOA,EAAInG,MAAM,OAGzBwH,EAAOjG,IAAIxC,KAAKC,UAAU4I,IAC1BjE,IAEKwD,EAAQC,MACTjG,IAAkBsH,KAAK,SAAUrH,GACzBA,GACAuC,IACA2D,EAAMnE,QAAQ,UAAWiE,MAAM,MAE/BxD,IACA1E,EAAEmI,sBASlBnG,EAAG,kBAAmBwH,MAAO,WACdxH,EAAG,aACTwH,UAGTxH,EAAG,aAAc+F,OAAQ,WACrB,IAAI0B,EACAC,EAAS,IAAIC,WAEXtI,KAAKuI,MAILvI,KAAKuI,MAAM,IAKjBH,EAAOpI,KAAKuI,MAAM,GAElBF,EAAOG,OACI,SAAU7J,GACb,IAAIsB,EAEJ,IACIA,EAAOzB,KAAK0B,MAAOvB,EAAE4G,OAAO9H,QAC9B,MAAQgL,GACNC,MAAM,kCAAoCD,GAG9CE,QAAQC,IAAK3I,GAER4I,QAAQ,qFACTlI,EAAEyB,KAAM,4BACJF,OAAQ,qBACRrB,KAAMZ,EACN6I,SAAU,SACXZ,KAAM,SAAWrH,GAChB8H,QAAQC,IAAK/H,GACb4E,SAASsD,WACVC,KAAM,WACLN,MAAO,oBAMvBL,EAAOY,WAAYb,IAjCfM,MAAO,oBAJPA,MAAO,mDAsEf,IAAIQ,EAAQ,KACRC,EAAQxI,EAAE,cACVyI,EAAWzI,EAAE,uBACb0I,EAAM1I,EAAE,SACRoG,EAAQpG,EAAE,yBAEdiD,EAAK0F,OAAO,WAER,IAAI9F,EAAU2F,EAAMI,SAASC,IAEzBlG,EAAmB6F,EAAO3F,EADbA,EAAU2F,EAAMpF,SACkB,MACjC,OAAVmF,IACAA,EAAQ,KACRG,EAAI1H,YAAY,iBAEhBuD,EAAMvD,YAAY,aAClB0H,EAAII,KAAKC,MAAS,GAAIC,KAAM,MAIlB,QAAVT,IACAA,EAAQ,MACRhE,EAAMrD,SAAS,aACfwH,EAAII,KAAKC,MAASP,EAAMO,QAASC,KAAM5C,EAAMwC,SAASI,OACtDP,EAASK,KAAKC,MAASP,EAAMO,QAASC,KAAM5C,EAAMwC,SAASI,OAE3DN,EAAIxH,SAAS,oBAOzB+B,EAAKgG,OAAO,WACJ1E,EAAM/B,GAAG,eACTkG,EAAII,KAAKC,MAASP,EAAMO,QAASC,KAAM5C,EAAMwC,SAASI,SAI9DN,EAAIlF,KAAK,MAAM0F,IAAI,aAAa1B,MAAM,WAClCxH,EAAE,aAAamJ,SACXjG,UAAW,GACZ,OAGPuF,EAASjB,MAAM,WACXxH,EAAE,aAAamJ,SACXjG,UAAW,GACZ,OAGPlD,EAAE,aAAawH,MAAM,WACjBxH,EAAEX,MAAMqF,QAAQ,QAAQ0E,WAG5BpJ,EAAE,aAAawH,MAAM,cAIrB,IAAI6B,EAAYC,EAAYC,EAE5BvJ,EAAE,oBAAoBwH,MAAM,WACxB,IAAI/D,EAAKzD,EAAEX,MACXkK,EAAS9F,EAAG+F,QAAQ,sBAAsBC,GAAG,GAAGjG,KAAK,SACjD6F,EACAA,EAAWK,SAKfL,EAAaM,GAAGC,MAAMC,OAAOR,WAAaM,GAAGC,OACzCE,UAAU,KAIHtF,GAAG,SAAU,WAGpB8E,EAAaD,EAAWd,QAAQ/I,IAAI,aAAauK,QAAQC,SACzDhK,EAAE,kBAAkBiK,KAAK,aAAeX,EAAW9H,IAAM,OACpDxB,EAAE,oBAAoBhD,QAAQyG,EAAGkC,SAAST,MAAM,gEACrDqE,EAAOlJ,IAAIiJ,EAAWY,MAAMC,KAAK3I,KACjC+H,EAAO7E,QAAQ,QAAQ0E,WAK3BC,EAAWK,UAGf1J,EAAEzB,UAAUiG,GAAG,QAAS,mBAAoB,WACxC,IAAIf,EAAKzD,EAAEX,OACXkK,EAAS9F,EAAG+F,QAAQ,sBAAsBC,GAAG,GAAGjG,KAAK,UAC9CnD,IAAI,IACXL,EAAEX,MAAMqF,QAAQ,QAAQ0E,WAM5B,IACIgB,EAAQjG,EAAWkG,EAAQhG,EAD3BiG,EAAUtK,EAAE,6BAEZgE,EAAgBhE,EAAE,yBAClBuD,EAAQvD,EAAE,kBAGdsK,EAAQlF,KAAK,8CACbgF,EAASpK,EAAE,2BACJ4F,OAAO,yKAEdyE,EAASrK,EAAE,oBAAoBuK,SAExB/G,KAAK,cAAc3D,SAE1BwK,EAAO7G,KAAK,QAAQnB,KAAK,WACrB,IAAI8C,EAAKnF,EAAEX,MAAMmL,KAAK,MACtBxK,EAAEX,MAAMmL,KAAK,KAAMrF,EAAK,YAE5BkF,EAAO7G,KAAK,SAASnB,KAAK,WACtB,IAAIoI,EAAOzK,EAAEX,MAAMmL,KAAK,OACxBxK,EAAEX,MAAMmL,KAAK,MAAOC,EAAO,YAG/BJ,EAAOnJ,SAAS,sBAAsB4E,QAAQ,uZAS9C9F,EAAE,iBAAkBqK,GAAQvE,QAAQ,6IAIpCuE,EAAOnJ,SAAS,sBAAsB0E,OAAO,qGAE7CwE,EAAOlF,MAAMmF,GAEbrK,EAAEzB,UAAUiG,GAAG,QAAS,8BAA+B,WACnDxE,EAAE,4EAA4EU,KAAK,WAAW,KAElGV,EAAEzB,UAAUiG,GAAG,QAAS,+BAAgC,WACpDxE,EAAE,4EAA4EU,KAAK,WAAW,KAElGV,EAAEzB,UAAUiG,GAAG,SAAU,gCAAiC,SAAUxG,GAChEgC,EAAE,sCAAsCgC,OACrChC,EAAEX,MAAMqB,KAAK,YACZV,EAAE,sCAAsCiB,SAIhDkD,EAAYnE,EAAE,uBACdqE,EAAOF,EAAUX,KAAK,+BAItBD,EAAMC,KAAK,kBAAkBnB,KAAK,WAC9B,IAEIyC,EAFArB,EAAKzD,EAAEX,MACP8F,EAAK1B,EAAGvD,KAAK,MAEbwK,EAAOhO,OAAOiO,SAASxF,GACvBuF,IACA5F,EAAW4F,EAAU,IACrBjH,EAAGvD,KAAK,WAAY4E,GACpBrB,EAAGvD,KAAK,QAASwK,EAAY,UAIrC1K,EAAE,iBAAiBwH,MAAM,WACrBxH,EAAEX,MAAMqF,QAAQ,mBAAmBxD,SAAS,+BAGhDlB,EAAE,qBAAqBwH,MAAM,WACzB,IAGItD,EAHA7D,EAAMiK,EAAQ9G,KAAK,UAAUnD,MAC7BuK,EAAYN,EAAQ9G,KAAK,aAM7B,GAHAwE,QAAQC,IAAI5H,GAGRkD,EAAMC,KAAK,YAAcnD,EAAM,KAAKrD,OACpC+K,MAAM,sBADV,CAWA,GANA7D,EAAQlE,EAAE,sCAAwCK,EAAM,KAAOuK,EAAU/G,OAAS,uCAClFN,EAAMqC,OAAO1B,GAGbb,IAE4C,IAAxCE,EAAMC,KAAK,kBAAkBxG,OAK7B,OAJAiH,EAAaC,GACbC,EAAUX,KAAK,aAAa9C,KAAK,WAAW,GAC5CyD,EAAUX,KAAK,0BAA0BgE,aACzC/C,GAAeG,OAAQ,OAAO,GAGlC5E,EAAEX,MAAMqF,QAAQ,QAAQ0E,YAK5BpJ,EAAE,wBAAwBwH,MAAM,WAC5BxH,EAAEX,MAAMqF,QAAQ,mBAAmB1D,YAAY,+BAGnDuC,EAAMiB,GAAG,QAAS,iBAAkB,SAAUxG,GAC1C,IAAIyF,EAAKzD,EAAEhC,EAAE4G,QACTwB,EAAQ3C,EAAGiB,QAAQ,QAEvB,GAAIjB,EAAGjB,GAAG,mBAIN,OAHAiB,EAAGiB,QAAQ,kBAAkB7E,SAC7BwD,SACA+C,EAAM1B,QAAQ,QAAQ0E,SAI1BpB,QAAQC,IAAI,kBACZhE,EAAaR,EAAGiB,QAAQ,qBAG5BP,EAAUK,GAAG,QAAS,yBAA0B,WAC5C,IAAIO,EAAUZ,EACVc,EAAMF,EAAQvB,KAAK,qBAAqBnD,MACxC6D,EAAQC,EAAUjE,KAAK,eAEvB4E,GACA3C,MAASD,EAAc6C,EAAQvB,KAAK,4BACpC0D,OAAUhF,EAAc6C,EAAQvB,KAAK,6BACrC2D,KAAQjF,EAAc6C,EAAQvB,KAAK,2BACnC4D,SACAC,MAASnF,EAAc6C,EAAQvB,KAAK,4BACpC8D,SAAYpF,EAAc6C,EAAQvB,KAAK,+BACvCyB,IAAOA,EAAInG,MAAM,MAGrBoF,EAAMhE,KAAK,WAAY4E,GACvBZ,EAAMhE,KAAK,QAASmE,EAAK7B,GAAG,aAE5Ba,IAEA0B,EAAQL,QAAQ,QAAQ0E,WAI5B/E,EAAKG,GAAG,SAAU,SAAUxG,GACxB,IAAI6M,EAUJ,GAPAtH,EAAMC,KAAK,kBAAkBnB,KAAK,WAC9B,IAAIoB,EAAKzD,EAAEX,MACPoE,EAAGvD,KAAK,WACR2K,EAAQpH,KAIZoH,GAASA,EAAM3K,KAAK,OAASiE,EAAUjE,KAAK,eAAeA,KAAK,MAGhE,OAFAmE,EAAKmG,KAAK,WAAW,GACrBzC,MAAM,2FACC,IAIf5D,EAAUK,GAAG,QAAS,0BAA2BC,GAoEjDF,EAAMrD,SAAS;CC90BlB,SAAU7E,GAGa,mBAAXC,QAAyBA,OAAOC,IACzCD,QAAQ,aAAc,WAAY,WAAYD,GAGpB,iBAAZG,QACdH,EAAQyO,QAAQ,cAAeA,QAAQ,YAAatO,SAIpDH,EAAQ0O,EAAGC,aAZf,CAcE,SAAUD,EAAGC,EAAUC,GAMvBD,EAASC,QAAUA,EAEnBA,EAAQC,aAERD,EAAQE,WAAa,SAASC,GAE5BA,EAAWL,EAAEzH,IAAIyH,EAAEM,SAASD,IAAY,SAASE,GAC/C,OAAOP,EAAEvN,YAAa8N,GACpBC,aAAa,EACbC,YAAY,EACZC,aAAc,WAGlBpM,KAAK6L,UAAY7L,KAAK6L,UAAUQ,OAAON,IAMzCH,EAAQU,WAINC,eAAgB,KAKhBC,UAAW,SAASC,EAAOC,GAGzB,GAAIhB,EAAEiB,SAASD,GACbhB,EAAE1I,KAAK0J,EAAiB,SAASE,EAAGC,GAClC7M,KAAKwM,UAAUC,EAAOI,IACrB7M,UAHL,CAOA,IAAI8M,KAAaC,KACjB/M,KAAKuM,eAAiBb,EAAEsB,OAAOhN,KAAKuM,eAAgB,SAASU,GAC3D,KAAIR,GAASQ,EAAQR,QAAUA,GAC3BC,GAAmBO,EAAQC,OAAOL,UAAYH,GAKlD,OAHAO,EAAQR,MAAMjH,IAAIyH,EAAQE,MAAOF,EAAQG,IACzCL,EAAWM,KAAKJ,EAAQC,OAAOI,UAC/BR,EAAOO,KAAKJ,EAAQR,QACb,IAITf,EAAE6B,OAAO7B,EAAE8B,KAAKV,GAAS,UAAW,kBAAmB9M,KAAKyN,KAG5D/B,EAAE1I,KAAK0I,EAAE8B,KAAKT,GAAa,SAASK,GAAMA,EAAG7M,KAAKP,OAAUA,MAE5DA,KAAK0N,IAAIlI,IAAI,YAAciH,EAAQ,IAAMA,EAAMgB,IAAM,IAAKf,KAM5DiB,QAAS,SAASC,EAAeC,GAC/B,IAAIpB,EAAQmB,GAAiB5N,KAAKyM,MAC9BqB,EAAWD,GAA0BnC,EAAEjO,OAAOuC,KAAM,gBAExDA,KAAKuM,iBAAmBvM,KAAKuM,mBAG7BvM,KAAK+N,WAAWtB,EAAOqB,GAGvB,IAAItN,EAASR,KAAKQ,OAUlB,OATKA,EAAOwN,iBACVhO,KAAKQ,OAAS,WACZ,IAAIyN,EAAMjO,KAGV,OAFAA,KAAKwM,YACDhM,IAAQyN,EAAMzN,EAAOF,MAAMN,KAAMtC,YAC9BuQ,IAGXjO,KAAKQ,OAAOwN,gBAAiB,EACtBhO,MAKT+N,WAAY,SAASH,EAAef,EAAUI,GAC5C,IAAIR,EAAQmB,GAAiB5N,KAAKyM,MAC9ByB,EAAY,YAAczB,EAAMgB,IAKpC,GAHAR,EAAUA,MAGNvB,EAAEiB,SAASE,GAAf,CACE,IAAIiB,EAAWjB,EACfnB,EAAE1I,KAAK8K,EAAU,SAAS9M,EAAKnD,GAC7BmC,KAAK+N,WAAWtB,EAAO5O,EAAKmD,IAC3BhB,UAJL,CASA,IAAI0N,EAAmB,QAAbb,EAAqB7M,KAAK0N,IAAM1N,KAAKW,EAAEkM,GAMjD,GAHA7M,KAAKwM,UAAUC,EAAOI,GAGjBa,EAAI/P,OAAT,CAGI+N,EAAEyC,SAASlB,KAAUA,GAAWmB,QAASnB,IAGzCvB,EAAE2C,WAAWpB,EAAQmB,WAAUnB,EAAQmB,QAAUnB,EAAQmB,QAAQ7N,KAAKP,OAI1E,IAAIkN,EAASoB,EAAiBZ,EAAKT,GAG/BsB,EAAYrB,EAAOkB,QAGvBlB,EAAOL,SAAWA,EAClBK,EAAOsB,KAAOxO,KAId,IAAIyO,EAASvB,EAAOuB,OAAS/C,EAAEgD,WAG3B9H,EAAU8E,EAAEnO,QAAQoR,cAAezB,GAASA,EAAO0B,YAYvD,GARA1B,EAAOI,SAAW,WAChBuB,EAAYtO,KAAKP,KAAMkN,EAAO4B,QAASpB,EAAKjB,EAAOS,IAGrD6B,EAAqBrB,EAAKR,EAAQT,EAAO8B,GACzCS,EAAkBtB,EAAKR,EAAQT,EAAO8B,GACtCU,EAAkBvB,EAAKR,EAAQT,EAAO8B,GAElCA,EAAW,CAEb7C,EAAE1I,KAAKkK,EAAOgC,OAAQ,SAASC,GAC7B,IAAIC,EAAYD,EAAOjB,EAQnBmB,EAAmB,QAAbxC,EAAoB,GAAKA,EACnC7M,KAAK0N,IAAIvI,GAAGiK,EAAWC,EAAK3D,EAAE4D,KARf,SAASnC,GACtB,IAAInM,EAAM6N,EAAYtO,KAAKP,KAAMkN,EAAOqC,OAAQ7B,EAAKP,EAAOD,EAAQrN,EAAMU,KAAK7C,UAAW,IAGzE8R,EAAgBtC,EAAOhB,YAAalL,EAAKmM,EAAOD,IACjDuC,EAAQhD,EAAO8B,EAAWvN,EAAK4F,EAASsG,IAGblN,QAC5CA,MAIH0L,EAAE1I,KAAK0I,EAAEM,SAASuC,IAAa,SAASpD,GACtCuE,EAAkBjD,EAAO,UAAYtB,EAAM+B,EAAQ,SAASyC,EAAG3O,EAAK4F,GAElE,IADeA,GAAWA,EAAQ+H,eAAiB/H,EAAQ+H,cAAcF,UACxDA,EAAQ,CACvB,IAAImB,EAAaC,EAAQpD,EAAO8B,EAAWrB,GAC3C4C,EAAiBpC,EAAKR,EAAQ0C,EAAYnD,QAKhD,IAAImD,EAAaC,EAAQpD,EAAO8B,EAAWrB,GAC3C4C,EAAiBpC,EAAKR,EAAQ0C,EAAYnD,GAAO,GAInDoC,EAAYtO,KAAKP,KAAMkN,EAAO6C,WAAYrC,EAAKjB,EAAOS,OAI1DxB,EAAEnO,OAAOoO,EAASqE,KAAKC,UAAWrE,EAAQU,WAK1C,IAAIzM,KAAWA,MAIXqQ,EAAe,SAASC,EAAKjS,GAC/B,IAAIyB,GAASzB,GAAQ,IAAIuB,MAAM,KAC3BhC,EAASiO,EAAE0E,OAAOzQ,EAAO,SAAS0Q,EAAM7S,GAAK,OAAO6S,EAAK7S,IAAO2S,GACpE,OAAiB,MAAV1S,EAAiB0S,EAAM1S,GAK5BoR,EAAc,SAASzB,GAEzB,GADAA,EAAK1B,EAAEyC,SAASf,GAAM8C,EAAalQ,KAAMoN,GAAMA,EACvC,OAAO,EAAK9M,MAAMN,KAAMH,EAAMU,KAAK7C,UAAW,KAOpD8R,EAAkB,SAASc,EAAWtP,EAAKkM,GAC7C,GAAIxB,EAAE6E,UAAUD,GACd,OAAOA,EACF,GAAI5E,EAAE2C,WAAWiC,IAAc5E,EAAEyC,SAASmC,GAAY,CAC3D,IAAI9B,EAAO9C,EAAE8E,KAAK9S,WAAW8Q,KAC7B,OAAOK,EAAYvO,MAAMkO,EAAM9Q,WAEjC,OAAO,GAKLgS,EAAoB,SAASjD,EAAOU,EAAOD,EAAQE,GACrD,IAAIoB,EAAOtB,EAAOsB,KAClB/B,EAAMtH,GAAGgI,EAAOC,EAAIoB,GACpBA,EAAKjC,eAAec,MAAMZ,MAAMA,EAAOU,MAAMA,EAAOC,GAAGA,EAAIF,OAAOA,KAIhEuC,EAAU,SAAShD,EAAOtB,EAAMnK,EAAK4F,EAASsG,GAChD,IAAIjP,KAAYuQ,EAAOtB,EAAOsB,KAC1BtB,EAAOuD,QACTzP,EAAM6N,EAAYtO,KAAKiO,EAAMtB,EAAOuD,MAAOzP,EAAKkM,IAG9CA,EAAO9M,IACTyO,EAAYtO,KAAKiO,EAAMtB,EAAO9M,IAAK+K,EAAMnK,EAAK4F,EAASsG,IAEvDjP,EAAMkN,GAAQnK,EAGV0K,EAAEgF,QAAQvF,IAASO,EAAEgF,QAAQ1P,KAC/B/C,EAAQyN,EAAE0E,OAAOjF,EAAM,SAASkF,EAAMM,EAAWC,GAE/C,OADAP,EAAKM,GAAajF,EAAEmF,IAAI7P,EAAK4P,GAAS5P,EAAI4P,GAAS,KAC5CP,QAGX5D,EAAMrM,IAAInC,EAAO2I,KAOjBiJ,EAAU,SAASpD,EAAOtB,EAAM+B,GAClC,IAAIsB,EAAOtB,EAAOsB,KACdsC,EAAc,SAASC,GACzB,OAAOtE,EAAMS,EAAOjO,OAAS,SAAW,OAAO8R,IAE7CC,EAAc,SAAShQ,GACzB,OAAc,MAAPA,EAAc,GAAKA,GAExBA,EAAM0K,EAAEgF,QAAQvF,GAAQO,EAAEzH,IAAIkH,EAAM2F,GAAeA,EAAY3F,GAEnE,OADI+B,EAAO+D,QAAOjQ,EAAM6N,EAAYtO,KAAKiO,EAAMtB,EAAO+D,MAAOjQ,EAAKkM,IAC3DxB,EAAEgF,QAAQ1P,GAAO0K,EAAEzH,IAAIjD,EAAKgQ,GAAeA,EAAYhQ,IAM5DsN,EAAmB1C,EAAQ0C,iBAAmB,SAASZ,EAAKT,GAC9D,IAAIlB,IACFG,aAAa,EACbE,aAAc,OACd8E,OAAQ,SAASxD,EAAK1M,EAAK2O,EAAGwB,GAAYzD,EAAIyD,EAAK/E,eAAesB,EAAIyD,EAAK/E,cAAcpL,IACzFuO,OAAQ,SAAS7B,EAAK/O,EAAGwS,GAAQ,OAAOzD,EAAIyD,EAAK/E,oBAEnDL,EAAWA,EAASM,OAAOX,EAAE0F,OAAOxF,EAAQC,UAAW,SAASI,GAC9D,OAAOyB,EAAIvK,GAAG8I,EAAQY,cAEfQ,KAAKJ,GAGd,IAAIC,EAASxB,EAAEnO,OAAO+C,MAAMoL,EAAGK,GAK/B,OADKL,EAAEmF,IAAI3D,EAAQ,gBAAeA,EAAOf,YAAce,EAAOmE,SACvDnE,GAaL6B,EAAuB,SAASrB,EAAKR,EAAQT,EAAO8B,GACtD,IAAI+C,GAAS,YAAa,WAAY,QAAS,UAAW,WACxD,QAAS,WAAY,SAAU,gBAAiB,OAAQ,WACxD,OAAQ,WAAY,WAAY,SAAU,YAExC9C,EAAOtB,EAAOsB,KAElB9C,EAAE1I,KAAKkK,EAAOtP,eAAkB,SAAS2T,IACvCA,EAAa7F,EAAER,MAAMqG,IACV/C,KAAOA,EAElB,IAAIgD,EAAY,GACZC,EAAWF,EAAWnD,UAAYmD,EAAWnD,QAAUG,GACvDmD,EAAa,WACf,IAAIC,EAAajG,EAAEkG,SAASN,EAAOC,EAAW3R,MAAQ,OAAS,OAC3DoB,EAAM6O,EAAQpD,EAAOgF,EAAUF,GAGX,UAApBA,EAAW3R,MACb8N,EAAI/L,YAAY6P,GAAW3P,SAASb,GACpCwQ,EAAYxQ,GAEZ0M,EAAIiE,GAAYJ,EAAW3R,KAAMoB,IAIrC0K,EAAE1I,KAAK0I,EAAEM,SAASyF,IAAY,SAAStG,GACrCuE,EAAkBjD,EAAO,UAAYtB,EAAM+B,EAAQwE,KAIrDA,OAIAzC,EAAoB,SAASvB,EAAKR,EAAQT,EAAO8B,GACnD7C,EAAE1I,KAAKkK,EAAO2E,YAAe,SAASC,EAAalS,GAC7C8L,EAAEyC,SAAS2D,KAAcA,GAAe1D,QAAS0D,IACrDA,EAAYtD,KAAOtB,EAAOsB,KAE1B,IAAIiD,EAAWK,EAAY1D,QACvB2D,EAAc,WAChB,IAAI/Q,EAAM6O,EAAQpD,EAAOgF,EAAUK,GACnCpE,EAAIsE,YAAYpS,IAAQoB,IAG1B0K,EAAE1I,KAAK0I,EAAEM,SAASyF,IAAY,SAAStG,GACrCuE,EAAkBjD,EAAO,UAAYtB,EAAM+B,EAAQ6E,KAErDA,OAaA/C,EAAoB,SAAStB,EAAKR,EAAQT,EAAO8B,GACnD,GAAsB,MAAlBrB,EAAOmE,QAAX,CACA,IAAI7C,EAAOtB,EAAOsB,KAEdyD,EAAY,WACd,IAAIZ,EAAUnE,EAAOmE,QACjBa,EAAYhF,EAAOgF,UACnBlR,EAAM6O,EAAQpD,EAAO8B,EAAWrB,GAChCiF,IAAcnR,GAGd0K,EAAE2C,WAAWgD,IAAY3F,EAAEyC,SAASkD,MACtCc,IAActD,EAAYtO,KAAKiO,EAAM6C,EAASrQ,EAAKkM,IAIjDgF,EACFrD,EAAYtO,KAAKiO,EAAM0D,EAAWxE,EAAKyE,EAAWjF,GAElDQ,EAAI0E,OAAOD,IAIfzG,EAAE1I,KAAK0I,EAAEM,SAASuC,IAAa,SAASpD,GACtCuE,EAAkBjD,EAAO,UAAYtB,EAAM+B,EAAQ+E,KAGrDA,MAUEnC,EAAmB,SAASpC,EAAKR,EAAQlM,EAAKyL,EAAO4F,GACvD,IAAI7D,EAAOtB,EAAOsB,KACbgB,EAAgBtC,EAAOf,WAAYnL,EAAKkM,KAC7C2B,EAAYtO,KAAKiO,EAAMtB,EAAOgE,OAAQxD,EAAK1M,EAAKyL,EAAOS,GAClDmF,GAAgBxD,EAAYtO,KAAKiO,EAAMtB,EAAOoF,YAAa5E,EAAK1M,EAAKkM,KAmR5E,OA7QAtB,EAAQE,aACNe,SAAU,oBACVT,aAAc,OACd8C,QAAS,QAAS,YAElBrC,SAAU,QACVqC,QAAS,iBAAkB,QAAS,UACpCgC,OAAQ,SAASxD,EAAK1M,GAAO0M,EAAI1M,IAAIA,IACrCuO,OAAQ,SAAS7B,GACf,OAAOA,EAAI1M,SAGb6L,SAAU,WACVqC,QAAS,iBAAkB,QAAS,UACpCgC,OAAQ,SAASxD,EAAK1M,GAAO0M,EAAI1M,IAAIA,IACrCuO,OAAQ,SAAS7B,GAAO,OAAOA,EAAI1M,SAEnC6L,SAAU,sBACVqC,QAAS,UACTgC,OAAQ,SAASxD,EAAK1M,GACpB0M,EAAI0D,OAAO,WAAWpQ,EAAI,MAAMK,KAAK,WAAW,IAElDkO,OAAQ,SAAS7B,GACf,OAAOA,EAAI0D,OAAO,YAAYpQ,SAGhC6L,SAAU,yBACVqC,QAAS,UACTgC,OAAQ,SAASxD,EAAK1M,EAAKyL,EAAO7F,GAChC,GAAI8G,EAAI/P,OAAS,EAGfqD,IAAQA,MACR0M,EAAI1K,KAAK,SAASxF,EAAGyF,GACnB,IAAIsP,EAAW5G,EAAShL,EAAEsC,GACtBuP,EAAcD,EAASvR,MACvByR,EAAU/G,EAAEgH,KAAK1R,EAAK,SAAS2R,GAAQ,MAAO,GAAGA,IAASH,IAC9DD,EAASlR,KAAK,UAAWoR,SAEtB,CACL,IAAIA,EAAU/G,EAAE6E,UAAUvP,GAAOA,EAAM,GAAGA,IAAQ0M,EAAI1M,MACtD0M,EAAIrM,KAAK,UAAWoR,KAGxBlD,OAAQ,SAAS7B,GACf,IAAI1M,EACJ,GAAI0M,EAAI/P,OAAS,EACfqD,EAAM0K,EAAE0E,OAAO1C,EAAK,SAAS2C,EAAMpN,GACjC,IAAIsP,EAAW5G,EAAShL,EAAEsC,GAE1B,OADIsP,EAASlR,KAAK,YAAYgP,EAAKhD,KAAKkF,EAASvR,OAC1CqP,WAEJ,CACLrP,EAAM0M,EAAIrM,KAAK,WAGf,IAAIuR,EAASlF,EAAI1M,MACF,OAAX4R,GAA6B,MAAVA,IACrB5R,EAAMA,EAAM0M,EAAI1M,MAAQ,MAG5B,OAAOA,KAGT6L,SAAU,SACVqC,QAAS,UACTgC,OAAQ,SAASxD,EAAK1M,EAAKyL,EAAO7F,GAChC,IAAIiM,EACFC,EAAelM,EAAQmM,cACvBC,EAAOF,GAAgBA,EAAaG,iBAAcC,EAClDC,EAAazF,EAAIrM,KAAK,YAIxB,IAAKyR,EAAc,CACjBA,KACA,IAAIM,EAAU,SAAS1F,GACrB,OAAOA,EAAIzJ,IAAI,SAAS2M,EAAOyC,GAG7B,IAAIC,EAAU3H,EAAShL,EAAE0S,GAAQxS,KAAK,oBACtC,OACE5C,WAAmBiV,IAAZI,EAAwBA,EAAUD,EAAOpV,MAChDsV,MAAOF,EAAO7O,QAEfrE,OAEDuN,EAAIvJ,KAAK,YAAYxG,QACvBqV,GAAQQ,eAEJ9F,EAAIvJ,KAAK,YAAYxG,SACvBqV,EAAKQ,WAAWnG,UAAK6F,GACrBxH,EAAE1I,KAAK0K,EAAIvJ,KAAK,YAAa,SAASlB,GACpC+P,OAAKE,GAAaE,EAAQzH,EAAShL,EAAEsC,OAGzCyI,EAAE1I,KAAK0K,EAAIvJ,KAAK,YAAa,SAASlB,GACpC,IAAIsQ,EAAQ5H,EAAShL,EAAEsC,GAAIkI,KAAK,SAChC6H,EAAKQ,WAAWnG,KAAKkG,GACrBP,EAAKO,GAASH,EAAQzH,EAAShL,EAAEsC,GAAIkB,KAAK,cAG5C6O,EAAOI,EAAQ1F,EAAIvJ,KAAK,WAK5B2O,EAAaW,UAAYX,EAAaW,WAAa,QACnDX,EAAaY,UAAYZ,EAAaY,WAAa,QACnDZ,EAAaa,aAAeb,EAAaa,cAAgB,WAEzD,IAAIC,EAAmB,SAASf,EAASnF,EAAKmG,GAC5CnI,EAAE1I,KAAK6P,EAAS,SAAS1C,GACvB,IAYI3L,EAAMxD,EAAK8S,EAZXT,EAAS1H,EAAShL,EAAE,aAAcoT,EAAY5D,EAatC,gBAARA,GACF3L,EAAOqP,EAASN,MAChBvS,EAAM6S,EAAS5V,MACf6V,EAAWD,EAASC,WAEpBtP,EAAO0L,EAAaC,EAAK2C,EAAaY,WACtC1S,EAAMkP,EAAaC,EAAK2C,EAAaW,WACrCK,EAAW5D,EAAaC,EAAK2C,EAAaa,eAlB3B,SAASnP,EAAMxD,EAAK8S,GACnCT,EAAO7O,KAAKA,GACZuP,EAAY/S,EAEZqS,EAAOxS,KAAK,mBAAoBkT,GAC3BrI,EAAEgF,QAAQqD,IAAerI,EAAEiB,SAASoH,IAAYV,EAAOrS,IAAI+S,IAE/C,IAAbD,GAAmBT,EAAOhS,KAAK,WAAY,YAajD2S,CAAWxP,EAAMxD,EAAK8S,IAIfX,GAA2B,MAAbY,GAAiC,MAAZF,GAAoBE,IAAcF,MAE/DnI,EAAEiB,SAASkH,KAAanI,EAAEuI,QAAQF,EAAWF,IAOxDR,EAAOhS,KAAK,YAAY,GACf8R,GAAczH,EAAEgF,QAAQmD,IACjCnI,EAAE1I,KAAK6Q,EAAU,SAAS7S,GACpB0K,EAAEiB,SAAS3L,KAAMA,EAAMkP,EAAalP,EAAK8R,EAAaW,aACtDzS,IAAQ+S,GAAcrI,EAAEiB,SAAS3L,IAAQ0K,EAAEuI,QAAQF,EAAW/S,KAChEqS,EAAOhS,KAAK,YAAY,KAI9BqM,EAAInH,OAAO8M,MAQf,GAJA3F,EAAIvJ,KAAK,KAAK3D,SAIVkL,EAAEyC,SAAS6E,GAAO,CACpB,IAAIkB,EAAU7W,OACgB,IAA1B2V,EAAKmB,QAAQ,WAAgBD,EAAUlU,MAC3CgT,EAAOA,EAAKjU,QAAQ,iBAAkB,MACtC8T,EAAU3C,EAAagE,EAASlB,QAEhCH,EADSnH,EAAE2C,WAAW2E,GACZnE,EAAYtO,KAAKP,KAAMgT,EAAMtF,EAAK9G,GAElCoM,EAIZ,GAAIH,aAAmBlH,EAASyI,WAAY,CAC1C,IAAInB,EAAaJ,EACbwB,EAAuB,WACzB,IAAIzE,EAAaC,EAAQpD,EAAO7F,EAAQwH,QAASxH,GACjDiI,EAAYtO,KAAKP,KAAM4G,EAAQsK,OAAQxD,EAAKkC,EAAYnD,EAAO7F,IAI7D0N,EAA4B,WAC9BrB,EAAWzN,IAAI,wBAAyB6O,IAEtCE,EAAqB,WACvBD,IACArB,EAAWzN,IAAI,yBACfyN,EAAWzN,IAAI,gCACfiH,EAAMjH,IAAI,0BAEZyN,EAAWrQ,QAAQ,+BAAgC5C,KAAKyN,KAGxDwF,EAAWuB,KAAK,+BAAgC,SAASC,GACpDzU,KAAKyN,KAAOgH,GAEbxB,EAAWrQ,QAAQ,0BAEpB5C,MACHiT,EAAWuB,KAAK,wBAAyBF,EAA2BtU,MAGpEiT,EAAW9N,GAAG,wBAAyBkP,EAAsBrU,MAG7DyM,EAAM7J,QAAQ,yBACd6J,EAAM+H,KAAK,wBAAyB,WAClC/H,EAAMjH,IAAI,kBAAmB+O,KAG/B9H,EAAM+H,KAAK,kBAAmBD,EAAoBvU,MAClD6S,EAAUA,EAAQlI,SAGpB,GAAImI,EAAa4B,cAAe,CAC9B,IAAIrB,EAAS3H,EAAE2C,WAAWyE,EAAa4B,eACrC5B,EAAa4B,cAAcnU,KAAKP,KAAM0N,EAAK9G,GAC3CkM,EAAa4B,cACfd,GAAkB,eAAgBlG,EAAK2F,GAGzC,GAAI3H,EAAEgF,QAAQmC,GACZe,EAAiBf,EAASnF,EAAK1M,QAC1B,GAAI6R,EAAQW,WAUjB9H,EAAE1I,KAAK6P,EAAQW,WAAY,SAASD,GAClC,IAAIoB,EAAShJ,EAAShL,EAAE,eAAewK,KAAK,QAASoI,GACrDK,EAAiBf,EAAQU,GAAQoB,EAAQ3T,GACzC0M,EAAInH,OAAOoO,SAIR,CACL,IAAeC,EAAXzD,KACJ,IAAK,IAAI3T,KAAKqV,GACZ+B,MACI9B,EAAaW,WAAajW,EAC9BoX,EAAI9B,EAAaY,WAAab,EAAQrV,GACtC2T,EAAK9D,KAAKuH,GAEZzD,EAAOzF,EAAEmJ,OAAO1D,EAAM2B,EAAagC,YAAchC,EAAaY,WAC9DE,EAAiBzC,EAAMzD,EAAK1M,KAGhCuO,OAAQ,SAAS7B,GACf,IAAIqH,EAAWrH,EAAIvJ,KAAK,mBAExB,OAAIuJ,EAAIrM,KAAK,YACJqK,EAAEzH,IAAI8Q,EAAU,SAAS9R,GAC9B,OAAO0I,EAAShL,EAAEsC,GAAIpC,KAAK,sBAGtBkU,EAASlU,KAAK,wBAKpB+K;CC1rBT,SAAWjL,GACPtD,OAAO2X,aAAerJ,SAASqE,KAAKzS,QAChCuQ,SAAU,WACN,IAAIrQ,KAgZJ,OA9YAA,EAAO,wCAAoD,iBAC3DA,EAAO,6CAAoD,sBAC3DA,EAAO,sCAAoD,eAC3DA,EAAO,oCAAoD,aAE3DA,EAAO,0CAAoD,mBAC3DA,EAAO,8CAAoD,uBAC3DA,EAAO,wCAAoD,iBAC3DA,EAAO,sCAAoD,eAC3DA,EAAO,sCAAoD,eAC3DA,EAAO,yCAAoD,kBAC3DA,EAAO,qCAAoD,cAC3DA,EAAO,6CAAoD,sBAC3DA,EAAO,yCAAoD,kBAC3DA,EAAO,sCAAoD,eAC3DA,EAAO,qCAAoD,cAC3DA,EAAO,sCAAoD,eAC3DA,EAAO,mCAAoD,YAC3DA,EAAO,yCAAoD,kBAC3DA,EAAO,8CAAoD,uBAC3DA,EAAO,uCAAoD,gBAE3DA,EAAO,0CAAoD,mBAC3DA,EAAO,6CAAoD,sBAC3DA,EAAO,0CAAoD,mBAC3DA,EAAO,2CAAoD,oBAC3DA,EAAO,0CAAoD,mBAC3DA,EAAO,qCAAoD,cAC3DA,EAAO,0CAAoD,mBAC3DA,EAAO,6CAAoD,sBAC3DA,EAAO,0CAAoD,mBAC3DA,EAAO,2CAAoD,oBAC3DA,EAAO,0CAAoD,mBAC3DA,EAAO,0CAAoD,mBAC3DA,EAAO,6CAAoD,sBAC3DA,EAAO,0CAAoD,mBAC3DA,EAAO,2CAAoD,oBAC3DA,EAAO,0CAAoD,mBAC3DA,EAAO,0CAAoD,mBAC3DA,EAAO,6CAAoD,sBAC3DA,EAAO,0CAAoD,mBAC3DA,EAAO,2CAAoD,oBAC3DA,EAAO,0CAAoD,mBAC3DA,EAAO,sCAAoD,eAC3DA,EAAO,sCAAoD,eAC3DA,EAAO,sCAAoD,eAC3DA,EAAO,sCAAoD,eAE3DA,EAAO,qCAAoD,cAC3DA,EAAO,sCAAoD,eAC3DA,EAAO,uCAAoD,gBAC3DA,EAAO,qCAAoD,cAE3DA,EAAO,qCAAoD,cAC3DA,EAAO,qCAAoD,cAC3DA,EAAO,oCAAoD,aAC3DA,EAAO,oCAAoD,aAC3DA,EAAO,qCAAoD,cAC3DA,EAAO,kCAAoD,WAC3DA,EAAO,kCAAoD,WAC3DA,EAAO,uCAAoD,gBAC3DA,EAAO,sCAAoD,eAC3DA,EAAO,kCAAoD,WAC3DA,EAAO,sCAAoD,eAC3DA,EAAO,kCAAoD,WAC3DA,EAAO,mCAAoD,YAC3DA,EAAO,gCAAoD,SAE3DA,EAAO,yCAAoD,kBAC3DA,EAAO,yCAAoD,kBAC3DA,EAAO,yCAAoD,kBAE3DA,EAAO,mCAAoD,YAC3DA,EAAO,sCAAoD,eAC3DA,EAAO,iCAAoD,UAE3DA,EAAO,iCAAoD,UAC3DA,EAAO,sCAAoD,eAC3DA,EAAO,wCAAoD,iBAC3DA,EAAO,sCAAoD,eAC3DA,EAAO,sCAAoD,eAC3DA,EAAO,oCAAoD,aAC3DA,EAAO,mCAAoD,YAC3DA,EAAO,iCAAoD,UAC3DA,EAAO,qCAAoD,cAC3DA,EAAO,oCAAoD,aAE3DA,EAAO,oCAAoD,aAC3DA,EAAO,sCAAoD,eAC3DA,EAAO,sCAAoD,eAC3DA,EAAO,uCAAoD,gBAC3DA,EAAO,uCAAoD,gBAC3DA,EAAO,oCAAoD,aAC3DA,EAAO,gCAAoD,SAC3DA,EAAO,mCAAoD,YAC3DA,EAAO,kCAAoD,WAC3DA,EAAO,uCAAoD,gBAC3DA,EAAO,6CAAoD,sBAC3DA,EAAO,6CAAoD,sBAC3DA,EAAO,sCAAoD,eAC3DA,EAAO,wCAAoD,iBAC3DA,EAAO,6CAAoD,sBAE3DA,EAAO,sCAAoD,eAC3DA,EAAO,uCAAoD,gBAC3DA,EAAO,kCAAoD,WAC3DA,EAAO,oCAAoD,aAC3DA,EAAO,4CAAoD,qBAC3DA,EAAO,sCAAoD,eAC3DA,EAAO,6CAAoD,sBAC3DA,EAAO,wCAAoD,iBAE3DA,EAAO,uCAAoD,gBAC3DA,EAAO,uCAAoD,gBAC3DA,EAAO,wCAAoD,iBAC3DA,EAAO,wCAAoD,iBAC3DA,EAAO,uCAAoD,gBAC3DA,EAAO,wCAAoD,iBAC3DA,EAAO,6CAAoD,sBAC3DA,EAAO,uCAAoD,gBAC3DA,EAAO,6CAAoD,sBAE3DA,EAAO,gCAAoD,SAC3DA,EAAO,4CAAoD,qBAC3DA,EAAO,wCAAoD,iBAC3DA,EAAO,4CAAoD,qBAC3DA,EAAO,qCAAoD,cAC3DA,EAAO,gCAAoD,SAE3DA,EAAO,yCAAoD,kBAC3DA,EAAO,0CAAoD,mBAC3DA,EAAO,yCAAoD,kBAE3DA,EAAO,kCAAoD,uBAE3DA,EACI,ojBAmBA2Q,QAAS,eACT8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAI1K,KAAK,SAAUxF,EAAGmV,GAClBhS,EAAEgS,GAAM/Q,SAED,OAAPZ,GACA0M,EAAI1K,KAAK,SAAUxF,EAAGmV,GAClBhS,EAAEgS,GAAMhQ,WAMxBlF,EAAO,sBACH2Q,QAAS,mBACT8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GACpB,WAAP5F,EAAkByL,EAAMrM,IAAI,uBAAwB,UACxC,QAAPY,GACLyL,EAAMrM,IAAI,uBAAwB,WAK9C3C,EAAO,qBACH2Q,QAAS,mBACT8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAI9L,OACO,QAAPZ,GAAe0M,EAAI/K,SAG/BlF,EAAO,mBACH2Q,QAAS,mBACT8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAI9L,OACO,QAAPZ,GAAe0M,EAAI/K,SAI/BlF,EAAO,0BACH2Q,QAAS,mBACT8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAI9L,OACO,QAAPZ,GAAwB,QAAPA,GAAe0M,EAAIjE,IAAI,UAAW,kBAI/DhM,EAAO,kBACH2Q,QAAS,mBACT8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAI9L,OACO,QAAPZ,GAAe0M,EAAIjE,IAAI,UAAW,kBAI9ChM,EAAO,kBACH2Q,QAAS,mBACT8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAI9L,OACO,QAAPZ,GAAe0M,EAAIjE,IAAI,UAAW,kBAI9ChM,EAAO,0BACH2Q,QAAS,mBACT8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAIjE,IAAI,UAAW,gBACR,QAAPzI,GAAe0M,EAAI9L,SAI/BnE,EAAO,qBACH2Q,SACI,uBACA,oBAEJ8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAIjE,IAAI,UAAW,iBAEJ,UAAVzI,EAAI,IAA4B,QAAVA,EAAI,IACjB,QAAVA,EAAI,KACN0M,EAAI9L,SAIdnE,EAAO,yBACH2Q,SACI,oBAEJ8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAIjE,IAAI,UAAW,gBACR,QAAPzI,GAAe0M,EAAI9L,SAI/BnE,EAAO,qBACH2Q,SACI,uBACA,oBAEJ8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAIjE,IAAI,UAAW,iBAEJ,UAAVzI,EAAI,IAA4B,QAAVA,EAAI,IACjB,QAAVA,EAAI,KACP0M,EAAI9L,SAIbnE,EAAO,kBACH2Q,QAAS,mBACT8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAI9L,OACO,QAAPZ,GAAe0M,EAAIjE,IAAI,UAAW,kBAI9ChM,EAAO,iBACH2Q,QAAS,mBACT8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAI9L,OACO,QAAPZ,GAAe0M,EAAIjE,IAAI,UAAW,kBAI9ChM,EAAO,kBACH2Q,QAAS,mBACT8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAI9L,OACO,QAAPZ,GAAe0M,EAAIjE,IAAI,UAAW,kBAI9ChM,EAAO,eACH2Q,QAAS,mBACT8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAI9L,OACO,QAAPZ,GAAe0M,EAAIjE,IAAI,UAAW,kBAI9ChM,EAAO,iBACH2Q,QAAS,mBACT8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAIjE,IAAI,UAAW,gBACP,QAAPzI,GAAgB0M,EAAI9L,SAIjCnE,EAAO,yBACH2Q,QAAS,cACT8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAIjE,IAAI,UAAW,gBACR,UAAPzI,GAAiB0M,EAAI9L,SAIjCnE,EAAO,qBACH2Q,SACI,uBACA,oBAEJ8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAIjE,IAAI,UAAW,gBACJ,WAAVzI,EAAI,IAA6B,QAAVA,EAAI,IAC5B0M,EAAI9L,SAKhBnE,EAAO,cACH2Q,QAAS,SACT8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAI9L,OACM,IAAPZ,GAAW0M,EAAI/K,SAI1BlF,EAAO,eACH2Q,QAAS,SACT8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAI9L,OACM,IAAPZ,GAAW0M,EAAI/K,SAI1BlF,EAAO,yBACH2Q,QAAS,gBACT8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAI9L,OACM,IAAPZ,GAAW0M,EAAI/K,SAI1BlF,EAAO,yBACH2Q,QAAS,gBACT8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAI9L,OACM,IAAPZ,GAAW0M,EAAI/K,SAI1BlF,EAAO,yBACH2Q,SAAU,gBAAiB,gBAC3B8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAI9L,OACS,OAAVZ,EAAI,IAAyB,OAAVA,EAAI,IAAa0M,EAAIjE,IAAI,UAAW,kBAIlEhM,EAAO,oBACH2Q,SAAU,gBAAiB,gBAC3B8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAI9L,OACS,WAAVZ,EAAI,IAAmBA,EAAI,IAAgB,OAAVA,EAAI,IAAa0M,EAAI/K,SAIjElF,EAAO,mBACH2Q,SAAU,gBAAiB,gBAC3B8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAI9L,OACS,WAAVZ,EAAI,IAAmBA,EAAI,IAAgB,OAAVA,EAAI,IAAa0M,EAAI/K,SAIjElF,EAAO,mBACH2Q,SAAU,gBAAiB,gBAC3B8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B8G,EAAI9L,OACS,UAAVZ,EAAI,IAAkBA,EAAI,IAAgB,OAAVA,EAAI,IAAa0M,EAAI/K,SAIhElF,EAAO,uCACH2Q,SAAU,wBACV8C,OAAQ,SAAUxD,EAAK1M,EAAKyL,EAAO7F,GAC/B+B,QAAQC,IAAI,QACZ8E,EAAI/K,OACD3B,GACC0M,EAAI9L,SAITnE,GAEXwX,OAAQ,WAEJ,OADAjV,KAAK2N,UACE3N,MAEXkV,MAAO,WACHlV,KAAKwM,eA1ZjB,CA6ZG9L;CCzZH,WAWA,SAASyU,EAAWC,EAAOjE,GAMvB,GAJAiE,EAAQ,GAAkB,GAC1BjE,EAAOA,MAGa,iBAATiE,GAAqBA,EAAMC,eAAe,UAClD,OAAOD,EAGV,IAAIE,EAAMC,EAAWH,GACjBI,EAAIF,EAAIE,EACRC,EAAIH,EAAIG,EACRC,EAAIJ,EAAII,EACRC,EAAIL,EAAIK,EACRC,EAASC,EAAU,IAAIF,GAAK,IAC5BG,EAAS3E,EAAK2E,QAAUR,EAAIQ,OAUhC,OAJIN,EAAI,IAAKA,EAAIK,EAAUL,IACvBC,EAAI,IAAKA,EAAII,EAAUJ,IACvBC,EAAI,IAAKA,EAAIG,EAAUH,KAGvBK,GAAIT,EAAIS,GACRD,OAAQA,EACRE,OAAQC,IACRC,MAAOP,EACPQ,SAAU,WACN,OAAOR,GAEXS,SAAU,SAASnY,GACf0X,EAAIU,EAAWpY,GACf2X,EAASC,EAAU,IAAIF,GAAK,KAEhCW,MAAO,WACH,IAAIC,EAAMC,EAAShB,EAAGC,EAAGC,GACzB,OAASe,EAAW,IAARF,EAAIE,EAASC,EAAGH,EAAIG,EAAG9J,EAAG2J,EAAI3J,EAAG+I,EAAGA,IAEpDgB,YAAa,WACT,IAAIJ,EAAMC,EAAShB,EAAGC,EAAGC,GACrBe,EAAIZ,EAAkB,IAARU,EAAIE,GAAUC,EAAIb,EAAkB,IAARU,EAAIG,GAAU9J,EAAIiJ,EAAkB,IAARU,EAAI3J,GAC9E,OAAa,GAAL+I,EACN,OAAUc,EAAI,KAAOC,EAAI,MAAQ9J,EAAI,KACrC,QAAU6J,EAAI,KAAOC,EAAI,MAAQ9J,EAAI,MAAOgJ,EAAS,KAE3DgB,MAAO,WACH,IAAIC,EAAMC,EAAStB,EAAGC,EAAGC,GACzB,OAASe,EAAW,IAARI,EAAIJ,EAASC,EAAGG,EAAIH,EAAGK,EAAGF,EAAIE,EAAGpB,EAAGA,IAEpDqB,YAAa,WACT,IAAIH,EAAMC,EAAStB,EAAGC,EAAGC,GACrBe,EAAIZ,EAAkB,IAARgB,EAAIJ,GAAUC,EAAIb,EAAkB,IAARgB,EAAIH,GAAUK,EAAIlB,EAAkB,IAARgB,EAAIE,GAC9E,OAAa,GAALpB,EACN,OAAUc,EAAI,KAAOC,EAAI,MAAQK,EAAI,KACrC,QAAUN,EAAI,KAAOC,EAAI,MAAQK,EAAI,MAAOnB,EAAS,KAE3DqB,MAAO,SAASC,GACZ,OAAOC,EAAS3B,EAAGC,EAAGC,EAAGwB,IAE7BE,YAAa,SAASF,GAClB,MAAO,IAAMC,EAAS3B,EAAGC,EAAGC,EAAGwB,IAEnCG,MAAO,WACH,OAAS7B,EAAGK,EAAUL,GAAIC,EAAGI,EAAUJ,GAAIC,EAAGG,EAAUH,GAAIC,EAAGA,IAEnE2B,YAAa,WACT,OAAa,GAAL3B,EACN,OAAUE,EAAUL,GAAK,KAAOK,EAAUJ,GAAK,KAAOI,EAAUH,GAAK,IACrE,QAAUG,EAAUL,GAAK,KAAOK,EAAUJ,GAAK,KAAOI,EAAUH,GAAK,KAAOE,EAAS,KAE3F2B,gBAAiB,WACb,OAAS/B,EAAGK,EAA4B,IAAlB2B,EAAQhC,EAAG,MAAc,IAAKC,EAAGI,EAA4B,IAAlB2B,EAAQ/B,EAAG,MAAc,IAAKC,EAAGG,EAA4B,IAAlB2B,EAAQ9B,EAAG,MAAc,IAAKC,EAAGA,IAEjJ8B,sBAAuB,WACnB,OAAa,GAAL9B,EACN,OAAUE,EAA4B,IAAlB2B,EAAQhC,EAAG,MAAc,MAAQK,EAA4B,IAAlB2B,EAAQ/B,EAAG,MAAc,MAAQI,EAA4B,IAAlB2B,EAAQ9B,EAAG,MAAc,KACnI,QAAUG,EAA4B,IAAlB2B,EAAQhC,EAAG,MAAc,MAAQK,EAA4B,IAAlB2B,EAAQ/B,EAAG,MAAc,MAAQI,EAA4B,IAAlB2B,EAAQ9B,EAAG,MAAc,MAAQE,EAAS,KAE1J8B,OAAQ,WACJ,OAAU,IAAN/B,EACO,cAGJgC,EAASR,EAAS3B,EAAGC,EAAGC,GAAG,MAAU,GAEhDkC,SAAU,SAASC,GACf,IAAIC,EAAMX,EAAS3B,EAAGC,EAAGC,GACrBqC,EAAYD,EACZE,EAAWC,KAAKC,MAAsB,IAAhBC,WAAWxC,IAAUyC,SAAS,IACpDC,EAAiBL,EACjBM,EAAenH,GAAQA,EAAKmH,aAAe,qBAAuB,GAEtE,GAAIT,EAAa,CACb,IAAInB,EAAIvB,EAAU0C,GAClBE,EAAYrB,EAAEO,QACdoB,EAAiBJ,KAAKC,MAA4B,IAAtBC,WAAWzB,EAAER,QAAckC,SAAS,IAGpE,MAAO,8CAA8CE,EAAa,kBAAoBC,EAAKP,GAAYF,EAAM,iBAAmBS,EAAKF,GAAkBN,EAAY,KAEvKK,SAAU,SAAStC,GACf,IAAI0C,IAAc1C,EAClBA,EAASA,GAAU9V,KAAK8V,OAExB,IAAI2C,GAAkB,EAElBC,GAD2BF,GAAa7C,EAAI,GAAKA,EAAI,IACI,QAAXG,GAA+B,SAAXA,GAAgC,SAAXA,GAAgC,SAAXA,GAwBhH,MAtBe,QAAXA,IACA2C,EAAkBzY,KAAKsX,eAEZ,SAAXxB,IACA2C,EAAkBzY,KAAKyX,yBAEZ,QAAX3B,GAA+B,SAAXA,IACpB2C,EAAkBzY,KAAKoX,eAEZ,SAAXtB,IACA2C,EAAkBzY,KAAKoX,aAAY,IAExB,SAAXtB,IACA2C,EAAkBzY,KAAK0X,UAEZ,QAAX5B,IACA2C,EAAkBzY,KAAKgX,eAEZ,QAAXlB,IACA2C,EAAkBzY,KAAK2W,eAGvB+B,EACO1Y,KAAKsX,cAGTmB,GAAmBzY,KAAKoX,gBAwC3C,SAAS7B,EAAWH,GAEhB,IAAIE,GAAQE,EAAG,EAAGC,EAAG,EAAGC,EAAG,GACvBC,EAAI,EACJI,GAAK,EACLD,GAAS,EAkCb,MAhCoB,iBAATV,IACPA,EAAQuD,EAAoBvD,IAGZ,iBAATA,IACHA,EAAMC,eAAe,MAAQD,EAAMC,eAAe,MAAQD,EAAMC,eAAe,MAC/EC,EAAMsD,EAASxD,EAAMI,EAAGJ,EAAMK,EAAGL,EAAMM,GACvCK,GAAK,EACLD,EAAwC,MAA/BhX,OAAOsW,EAAMI,GAAGqD,QAAQ,GAAa,OAAS,OAElDzD,EAAMC,eAAe,MAAQD,EAAMC,eAAe,MAAQD,EAAMC,eAAe,MACpFD,EAAMsB,EAAIoC,EAAoB1D,EAAMsB,GACpCtB,EAAMxI,EAAIkM,EAAoB1D,EAAMxI,GACpC0I,EAAMyD,EAAS3D,EAAMqB,EAAGrB,EAAMsB,EAAGtB,EAAMxI,GACvCmJ,GAAK,EACLD,EAAS,OAEJV,EAAMC,eAAe,MAAQD,EAAMC,eAAe,MAAQD,EAAMC,eAAe,OACpFD,EAAMsB,EAAIoC,EAAoB1D,EAAMsB,GACpCtB,EAAM2B,EAAI+B,EAAoB1D,EAAM2B,GACpCzB,EAAM0D,EAAS5D,EAAMqB,EAAGrB,EAAMsB,EAAGtB,EAAM2B,GACvChB,GAAK,EACLD,EAAS,OAGTV,EAAMC,eAAe,OACrBM,EAAIP,EAAMO,IAIlBA,EAAIU,EAAWV,IAGXI,GAAIA,EACJD,OAAQV,EAAMU,QAAUA,EACxBN,EAAGyD,EAAQ,IAAKC,EAAQ5D,EAAIE,EAAG,IAC/BC,EAAGwD,EAAQ,IAAKC,EAAQ5D,EAAIG,EAAG,IAC/BC,EAAGuD,EAAQ,IAAKC,EAAQ5D,EAAII,EAAG,IAC/BC,EAAGA,GAgBX,SAASiD,EAASpD,EAAGC,EAAGC,GACpB,OACIF,EAAqB,IAAlBgC,EAAQhC,EAAG,KACdC,EAAqB,IAAlB+B,EAAQ/B,EAAG,KACdC,EAAqB,IAAlB8B,EAAQ9B,EAAG,MAQtB,SAASoB,EAAStB,EAAGC,EAAGC,GAEpBF,EAAIgC,EAAQhC,EAAG,KACfC,EAAI+B,EAAQ/B,EAAG,KACfC,EAAI8B,EAAQ9B,EAAG,KAEf,IACIe,EAAGC,EADHyC,EAAMD,EAAQ1D,EAAGC,EAAGC,GAAI0D,EAAMH,EAAQzD,EAAGC,EAAGC,GACtCqB,GAAKoC,EAAMC,GAAO,EAE5B,GAAGD,GAAOC,EACN3C,EAAIC,EAAI,MAEP,CACD,IAAI2C,EAAIF,EAAMC,EAEd,OADA1C,EAAIK,EAAI,GAAMsC,GAAK,EAAIF,EAAMC,GAAOC,GAAKF,EAAMC,GACxCD,GACH,KAAK3D,EAAGiB,GAAKhB,EAAIC,GAAK2D,GAAK5D,EAAIC,EAAI,EAAI,GAAI,MAC3C,KAAKD,EAAGgB,GAAKf,EAAIF,GAAK6D,EAAI,EAAG,MAC7B,KAAK3D,EAAGe,GAAKjB,EAAIC,GAAK4D,EAAI,EAG9B5C,GAAK,EAGT,OAASA,EAAGA,EAAGC,EAAGA,EAAGK,EAAGA,GAO5B,SAASiC,EAASvC,EAAGC,EAAGK,GAOpB,SAASuC,EAAQtS,EAAGuS,EAAGrW,GAGnB,OAFGA,EAAI,IAAGA,GAAK,GACZA,EAAI,IAAGA,GAAK,GACZA,EAAI,EAAE,EAAU8D,EAAc,GAATuS,EAAIvS,GAAS9D,EAClCA,EAAI,GAAYqW,EAChBrW,EAAI,EAAE,EAAU8D,GAAKuS,EAAIvS,IAAM,EAAE,EAAI9D,GAAK,EACtC8D,EAZX,IAAIwO,EAAGC,EAAGC,EAeV,GAbAe,EAAIe,EAAQf,EAAG,KACfC,EAAIc,EAAQd,EAAG,KACfK,EAAIS,EAAQT,EAAG,KAWN,IAANL,EACClB,EAAIC,EAAIC,EAAIqB,MAEX,CACD,IAAIwC,EAAIxC,EAAI,GAAMA,GAAK,EAAIL,GAAKK,EAAIL,EAAIK,EAAIL,EACxC1P,EAAI,EAAI+P,EAAIwC,EAChB/D,EAAI8D,EAAQtS,EAAGuS,EAAG9C,EAAI,EAAE,GACxBhB,EAAI6D,EAAQtS,EAAGuS,EAAG9C,GAClBf,EAAI4D,EAAQtS,EAAGuS,EAAG9C,EAAI,EAAE,GAG5B,OAASjB,EAAO,IAAJA,EAASC,EAAO,IAAJA,EAASC,EAAO,IAAJA,GAOxC,SAASc,EAAShB,EAAGC,EAAGC,GAEpBF,EAAIgC,EAAQhC,EAAG,KACfC,EAAI+B,EAAQ/B,EAAG,KACfC,EAAI8B,EAAQ9B,EAAG,KAEf,IACIe,EAAGC,EADHyC,EAAMD,EAAQ1D,EAAGC,EAAGC,GAAI0D,EAAMH,EAAQzD,EAAGC,EAAGC,GACtC9I,EAAIuM,EAEVE,EAAIF,EAAMC,EAGd,GAFA1C,EAAY,IAARyC,EAAY,EAAIE,EAAIF,EAErBA,GAAOC,EACN3C,EAAI,MAEH,CACD,OAAO0C,GACH,KAAK3D,EAAGiB,GAAKhB,EAAIC,GAAK2D,GAAK5D,EAAIC,EAAI,EAAI,GAAI,MAC3C,KAAKD,EAAGgB,GAAKf,EAAIF,GAAK6D,EAAI,EAAG,MAC7B,KAAK3D,EAAGe,GAAKjB,EAAIC,GAAK4D,EAAI,EAE9B5C,GAAK,EAET,OAASA,EAAGA,EAAGC,EAAGA,EAAG9J,EAAGA,GAO3B,SAASmM,EAAStC,EAAGC,EAAG9J,GAErB6J,EAAsB,EAAlBe,EAAQf,EAAG,KACfC,EAAIc,EAAQd,EAAG,KACf9J,EAAI4K,EAAQ5K,EAAG,KAEf,IAAIpP,EAAIgc,EAAKC,MAAMhD,GACfiD,EAAIjD,EAAIjZ,EACRwJ,EAAI4F,GAAK,EAAI8J,GACb6C,EAAI3M,GAAK,EAAI8M,EAAIhD,GACjBxT,EAAI0J,GAAK,GAAK,EAAI8M,GAAKhD,GACvBiD,EAAMnc,EAAI,EAKd,OAASgY,EAAO,KAJP5I,EAAG2M,EAAGvS,EAAGA,EAAG9D,EAAG0J,GAAG+M,GAINlE,EAAO,KAHnBvS,EAAG0J,EAAGA,EAAG2M,EAAGvS,EAAGA,GAAG2S,GAGMjE,EAAO,KAF/B1O,EAAGA,EAAG9D,EAAG0J,EAAGA,EAAG2M,GAAGI,IAS/B,SAASxC,EAAS3B,EAAGC,EAAGC,EAAGwB,GAEvB,IAAIY,GACAS,EAAK1C,EAAUL,GAAG4C,SAAS,KAC3BG,EAAK1C,EAAUJ,GAAG2C,SAAS,KAC3BG,EAAK1C,EAAUH,GAAG0C,SAAS,MAI/B,OAAIlB,GAAcY,EAAI,GAAGhY,OAAO,IAAMgY,EAAI,GAAGhY,OAAO,IAAMgY,EAAI,GAAGhY,OAAO,IAAMgY,EAAI,GAAGhY,OAAO,IAAMgY,EAAI,GAAGhY,OAAO,IAAMgY,EAAI,GAAGhY,OAAO,GACzHgY,EAAI,GAAGhY,OAAO,GAAKgY,EAAI,GAAGhY,OAAO,GAAKgY,EAAI,GAAGhY,OAAO,GAGxDgY,EAAIvY,KAAK,IA0WpB,SAAS8W,EAAWV,GAOhB,OANAA,EAAIwC,WAAWxC,IAEXiE,MAAMjE,IAAMA,EAAI,GAAKA,EAAI,KACzBA,EAAI,GAGDA,EAIX,SAAS6B,EAAQqC,EAAGV,GACZW,EAAeD,KAAMA,EAAI,QAE7B,IAAIE,EAAiBC,EAAaH,GASlC,OARAA,EAAIZ,EAAQE,EAAKD,EAAQ,EAAGf,WAAW0B,KAGnCE,IACAF,EAAII,SAASJ,EAAIV,EAAK,IAAM,KAI3BK,EAAKU,IAAIL,EAAIV,GAAO,KACd,EAIHU,EAAIV,EAAOhB,WAAWgB,GAIlC,SAASgB,EAAQnZ,GACb,OAAOiY,EAAQ,EAAGC,EAAQ,EAAGlY,IAIjC,SAASoZ,EAASpZ,GACd,OAAOiZ,SAASjZ,EAAK,IAKzB,SAAS8Y,EAAeD,GACpB,MAAmB,iBAALA,IAAoC,GAAnBA,EAAE1F,QAAQ,MAAgC,IAAlBgE,WAAW0B,GAItE,SAASG,EAAaH,GAClB,MAAoB,iBAANA,IAAqC,GAAnBA,EAAE1F,QAAQ,KAI9C,SAASoE,EAAK8B,GACV,OAAmB,GAAZA,EAAE1c,OAAc,IAAM0c,EAAI,GAAKA,EAI1C,SAASvB,EAAoBe,GAKzB,OAJIA,GAAK,IACLA,EAAS,IAAJA,EAAW,KAGbA,EAkCX,SAASlB,EAAoBvD,GAEzBA,EAAQA,EAAMrW,QAAQub,EAAS,IAAIvb,QAAQwb,EAAW,IAAIC,cAC1D,IAAIC,GAAQ,EACZ,GAAIC,EAAMtF,GACNA,EAAQsF,EAAMtF,GACdqF,GAAQ,OAEP,GAAa,eAATrF,EACL,OAASI,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGG,OAAQ,QAO7C,IAAI6E,EACJ,OAAKA,EAAQC,EAAStF,IAAIuF,KAAKzF,KAClBI,EAAGmF,EAAM,GAAIlF,EAAGkF,EAAM,GAAIjF,EAAGiF,EAAM,KAE3CA,EAAQC,EAASE,KAAKD,KAAKzF,KACnBI,EAAGmF,EAAM,GAAIlF,EAAGkF,EAAM,GAAIjF,EAAGiF,EAAM,GAAIhF,EAAGgF,EAAM,KAExDA,EAAQC,EAAS/D,IAAIgE,KAAKzF,KAClBqB,EAAGkE,EAAM,GAAIjE,EAAGiE,EAAM,GAAI5D,EAAG4D,EAAM,KAE3CA,EAAQC,EAASG,KAAKF,KAAKzF,KACnBqB,EAAGkE,EAAM,GAAIjE,EAAGiE,EAAM,GAAI5D,EAAG4D,EAAM,GAAIhF,EAAGgF,EAAM,KAExDA,EAAQC,EAASrE,IAAIsE,KAAKzF,KAClBqB,EAAGkE,EAAM,GAAIjE,EAAGiE,EAAM,GAAI/N,EAAG+N,EAAM,KAE3CA,EAAQC,EAASI,KAAKH,KAAKzF,KAExBI,EAAG4E,EAASO,EAAM,IAClBlF,EAAG2E,EAASO,EAAM,IAClBjF,EAAG0E,EAASO,EAAM,IAClB7E,OAAQ2E,EAAQ,OAAS,UAG5BE,EAAQC,EAASK,KAAKJ,KAAKzF,MAExBI,EAAG4E,EAASO,EAAM,GAAK,GAAKA,EAAM,IAClClF,EAAG2E,EAASO,EAAM,GAAK,GAAKA,EAAM,IAClCjF,EAAG0E,EAASO,EAAM,GAAK,GAAKA,EAAM,IAClC7E,OAAQ2E,EAAQ,OAAS,OA/3BrC,IAAIH,EAAW,WACXC,EAAY,OACZtE,EAAc,EACduD,EAAOvB,KACPpC,EAAY2D,EAAKtB,MACjBe,EAAUO,EAAKJ,IACfF,EAAUM,EAAKL,IACf+B,EAAa1B,EAAK2B,OAmJtBhG,EAAUiG,UAAY,SAAShG,EAAOjE,GAClC,GAAoB,iBAATiE,EAAmB,CAC1B,IAAIiG,KACJ,IAAK,IAAI7d,KAAK4X,EACNA,EAAMC,eAAe7X,KAEjB6d,EAAS7d,GADH,MAANA,EACc4X,EAAM5X,GAGNsb,EAAoB1D,EAAM5X,KAIpD4X,EAAQiG,EAGZ,OAAOlG,EAAUC,EAAOjE,IAkO5BgE,EAAUmG,OAAS,SAAUC,EAAQC,GACjC,SAAKD,IAAWC,IACTrG,EAAUoG,GAAQjE,eAAiBnC,EAAUqG,GAAQlE,eAEhEnC,EAAUgG,OAAS,WACf,OAAOhG,EAAUiG,WACb5F,EAAG0F,IACHzF,EAAGyF,IACHxF,EAAGwF,OAUX/F,EAAUsG,WAAa,SAAUrG,EAAOsG,GACpCA,EAAqB,IAAXA,EAAgB,EAAKA,GAAU,GACzC,IAAI7E,EAAM1B,EAAUC,GAAOwB,QAG3B,OAFAC,EAAIH,GAAKgF,EAAS,IAClB7E,EAAIH,EAAIyD,EAAQtD,EAAIH,GACbvB,EAAU0B,IAErB1B,EAAUwG,SAAW,SAAUvG,EAAOsG,GAClCA,EAAqB,IAAXA,EAAgB,EAAKA,GAAU,GACzC,IAAI7E,EAAM1B,EAAUC,GAAOwB,QAG3B,OAFAC,EAAIH,GAAKgF,EAAS,IAClB7E,EAAIH,EAAIyD,EAAQtD,EAAIH,GACbvB,EAAU0B,IAErB1B,EAAUyG,UAAY,SAASxG,GAC3B,OAAOD,EAAUsG,WAAWrG,EAAO,MAEvCD,EAAU0G,QAAU,SAASzG,EAAOsG,GAChCA,EAAqB,IAAXA,EAAgB,EAAKA,GAAU,GACzC,IAAI7E,EAAM1B,EAAUC,GAAOwB,QAG3B,OAFAC,EAAIE,GAAK2E,EAAS,IAClB7E,EAAIE,EAAIoD,EAAQtD,EAAIE,GACb5B,EAAU0B,IAErB1B,EAAU2G,OAAS,SAAU1G,EAAOsG,GAChCA,EAAqB,IAAXA,EAAgB,EAAKA,GAAU,GACzC,IAAI7E,EAAM1B,EAAUC,GAAOwB,QAG3B,OAFAC,EAAIE,GAAK2E,EAAS,IAClB7E,EAAIE,EAAIoD,EAAQtD,EAAIE,GACb5B,EAAU0B,IAErB1B,EAAU4G,WAAa,SAAS3G,GAC5B,IAAIyB,EAAM1B,EAAUC,GAAOwB,QAE3B,OADAC,EAAIJ,GAAKI,EAAIJ,EAAI,KAAO,IACjBtB,EAAU0B,IASrB1B,EAAU6G,MAAQ,SAAS5G,GACvB,IAAIyB,EAAM1B,EAAUC,GAAOwB,QACvBH,EAAII,EAAIJ,EACZ,OACItB,EAAUC,GACVD,GAAYsB,GAAIA,EAAI,KAAO,IAAKC,EAAGG,EAAIH,EAAGK,EAAGF,EAAIE,IACjD5B,GAAYsB,GAAIA,EAAI,KAAO,IAAKC,EAAGG,EAAIH,EAAGK,EAAGF,EAAIE,MAGzD5B,EAAU8G,OAAS,SAAS7G,GACxB,IAAIyB,EAAM1B,EAAUC,GAAOwB,QACvBH,EAAII,EAAIJ,EACZ,OACItB,EAAUC,GACVD,GAAYsB,GAAIA,EAAI,IAAM,IAAKC,EAAGG,EAAIH,EAAGK,EAAGF,EAAIE,IAChD5B,GAAYsB,GAAIA,EAAI,KAAO,IAAKC,EAAGG,EAAIH,EAAGK,EAAGF,EAAIE,IACjD5B,GAAYsB,GAAIA,EAAI,KAAO,IAAKC,EAAGG,EAAIH,EAAGK,EAAGF,EAAIE,MAGzD5B,EAAU+G,gBAAkB,SAAS9G,GACjC,IAAIyB,EAAM1B,EAAUC,GAAOwB,QACvBH,EAAII,EAAIJ,EACZ,OACItB,EAAUC,GACVD,GAAYsB,GAAIA,EAAI,IAAM,IAAKC,EAAGG,EAAIH,EAAGK,EAAGF,EAAIE,IAChD5B,GAAYsB,GAAIA,EAAI,KAAO,IAAKC,EAAGG,EAAIH,EAAGK,EAAGF,EAAIE,MAGzD5B,EAAUgH,UAAY,SAAS/G,EAAOgH,EAASC,GAC3CD,EAAUA,GAAW,EACrBC,EAASA,GAAU,GAEnB,IAAIxF,EAAM1B,EAAUC,GAAOwB,QACvB0F,EAAO,IAAMD,EACbpO,GAAOkH,EAAUC,IAErB,IAAKyB,EAAIJ,GAAMI,EAAIJ,GAAK6F,EAAOF,GAAW,GAAM,KAAO,MAAOA,GAC1DvF,EAAIJ,GAAKI,EAAIJ,EAAI6F,GAAQ,IACzBrO,EAAIZ,KAAK8H,EAAU0B,IAEvB,OAAO5I,GAEXkH,EAAUoH,cAAgB,SAASnH,EAAOgH,GACtCA,EAAUA,GAAW,EAMrB,IALA,IAAI7F,EAAMpB,EAAUC,GAAOkB,QACvBG,EAAIF,EAAIE,EAAGC,EAAIH,EAAIG,EAAG9J,EAAI2J,EAAI3J,EAC9BqB,KACAuO,EAAe,EAAIJ,EAEhBA,KACHnO,EAAIZ,KAAK8H,GAAYsB,EAAGA,EAAGC,EAAGA,EAAG9J,EAAGA,KACpCA,GAAKA,EAAI4P,GAAgB,EAG7B,OAAOvO,GAYXkH,EAAUsH,YAAc,SAASlB,EAAQC,GACrC,IAAI7F,EAAIR,EAAUoG,GAAQlE,QACtB3B,EAAIP,EAAUqG,GAAQnE,QACtBqF,GAAqB,IAAN/G,EAAEH,EAAgB,IAANG,EAAEF,EAAgB,IAANE,EAAED,GAAW,IACpDiH,GAAqB,IAANjH,EAAEF,EAAgB,IAANE,EAAED,EAAgB,IAANC,EAAEA,GAAW,IACpDkH,EACA3E,KAAKkB,IAAIxD,EAAEH,EAAGE,EAAEF,GAAKyC,KAAKmB,IAAIzD,EAAEH,EAAGE,EAAEF,GACrCyC,KAAKkB,IAAIxD,EAAEF,EAAGC,EAAED,GAAKwC,KAAKmB,IAAIzD,EAAEF,EAAGC,EAAED,GACrCwC,KAAKkB,IAAIxD,EAAED,EAAGA,EAAEA,GAAKuC,KAAKmB,IAAIzD,EAAED,EAAGA,EAAEA,GAGzC,OACImH,WAAY5E,KAAKiC,IAAIwC,EAAcC,GACnCvH,MAAOwH,IASfzH,EAAU2H,SAAW,SAASvB,EAAQC,GAClC,IAAIiB,EAActH,EAAUsH,YAAYlB,EAAQC,GAChD,OAAOiB,EAAYI,WAAa,KAAOJ,EAAYrH,MAAQ,KAQ/DD,EAAU4H,aAAe,SAASC,EAAWC,GAIzC,IAAK,IAHDC,EAAY,KACZC,EAAY,EACZC,GAAiB,EACZ5f,EAAE,EAAGA,EAAIyf,EAAUtf,OAAQH,IAAK,CAKrC,IAAIif,EAActH,EAAUsH,YAAYO,EAAWC,EAAUzf,IACzDsf,EAAWL,EAAYI,WAAa,KAAOJ,EAAYrH,MAAQ,IAC/DiI,EAAaZ,EAAYI,WAAa,IAA9B,EAAsCJ,EAAYrH,MAAQ,KAEjE0H,IAAcM,GACdN,GAAYM,GAAkBC,EAAQF,IACnCL,IAAgBM,GAAmBC,EAAQF,KAC/CC,EAAiBN,EACjBK,EAAYE,EACZH,EAAY/H,EAAU8H,EAAUzf,KAGxC,OAAO0f,GAOX,IAAIxC,EAAQvF,EAAUuF,OAClB4C,UAAW,SACXC,aAAc,SACdC,KAAM,MACNC,WAAY,SACZC,MAAO,SACPC,MAAO,SACPC,OAAQ,SACRC,MAAO,MACPC,eAAgB,SAChBC,KAAM,MACNC,WAAY,SACZC,MAAO,SACPC,UAAW,SACXC,YAAa,SACbC,UAAW,SACXC,WAAY,SACZC,UAAW,SACXC,MAAO,SACPC,eAAgB,SAChBC,SAAU,SACVC,QAAS,SACTC,KAAM,MACNC,SAAU,SACVC,SAAU,SACVC,cAAe,SACfC,SAAU,SACVC,UAAW,SACXC,SAAU,SACVC,UAAW,SACXC,YAAa,SACbC,eAAgB,SAChBC,WAAY,SACZC,WAAY,SACZC,QAAS,SACTC,WAAY,SACZC,aAAc,SACdC,cAAe,SACfC,cAAe,SACfC,cAAe,SACfC,cAAe,SACfC,WAAY,SACZC,SAAU,SACVC,YAAa,SACbC,QAAS,SACTC,QAAS,SACTC,WAAY,SACZC,UAAW,SACXC,YAAa,SACbC,YAAa,SACbC,QAAS,MACTC,UAAW,SACXC,WAAY,SACZC,KAAM,SACNC,UAAW,SACXC,KAAM,SACNC,MAAO,SACPC,YAAa,SACbC,KAAM,SACNC,SAAU,SACVC,QAAS,SACTC,UAAW,SACXC,OAAQ,SACRC,MAAO,SACPC,MAAO,SACPC,SAAU,SACVC,cAAe,SACfC,UAAW,SACXC,aAAc,SACdC,UAAW,SACXC,WAAY,SACZC,UAAW,SACXC,qBAAsB,SACtBC,UAAW,SACXC,WAAY,SACZC,UAAW,SACXC,UAAW,SACXC,YAAa,SACbC,cAAe,SACfC,aAAc,SACdC,eAAgB,MAChBC,eAAgB,MAChBC,eAAgB,SAChBC,YAAa,SACbC,KAAM,MACNC,UAAW,SACXC,MAAO,SACPC,QAAS,MACTC,OAAQ,SACRC,iBAAkB,SAClBC,WAAY,SACZC,aAAc,SACdC,aAAc,SACdC,eAAgB,SAChBC,gBAAiB,SACjBC,kBAAmB,SACnBC,gBAAiB,SACjBC,gBAAiB,SACjBC,aAAc,SACdC,UAAW,SACXC,UAAW,SACXC,SAAU,SACVC,YAAa,SACbC,KAAM,SACNC,QAAS,SACTC,MAAO,SACPC,UAAW,SACXC,OAAQ,SACRC,UAAW,SACXC,OAAQ,SACRC,cAAe,SACfC,UAAW,SACXC,cAAe,SACfC,cAAe,SACfC,WAAY,SACZC,UAAW,SACXC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,WAAY,SACZC,OAAQ,SACRC,IAAK,MACLC,UAAW,SACXC,UAAW,SACXC,YAAa,SACbC,OAAQ,SACRC,WAAY,SACZC,SAAU,SACVC,SAAU,SACVC,OAAQ,SACRC,OAAQ,SACRC,QAAS,SACTC,UAAW,SACXC,UAAW,SACXC,UAAW,SACXC,KAAM,SACNC,YAAa,SACbC,UAAW,SACXC,IAAK,SACLC,KAAM,SACNC,QAAS,SACTC,OAAQ,SACRC,UAAW,SACXC,OAAQ,SACRC,MAAO,SACPC,MAAO,MACPC,WAAY,SACZC,OAAQ,MACRC,YAAa,UAIb9O,EAAWxC,EAAUwC,SAOzB,SAAc+O,GACV,IAAIC,KACJ,IAAK,IAAInpB,KAAKkpB,EACNA,EAAErR,eAAe7X,KACjBmpB,EAAQD,EAAElpB,IAAMA,GAGxB,OAAOmpB,EAdyBC,CAAKlM,GAoFrCE,EAAW,WAGX,IAMIiM,EAAW,6CAKXC,EAAoB,cAAgBD,EAAW,aAAeA,EAAW,aAAeA,EAAW,YACnGE,EAAoB,cAAgBF,EAAW,aAAeA,EAAW,aAAeA,EAAW,aAAeA,EAAW,YAEjI,OACIvR,IAAK,IAAI0R,OAAO,MAAQF,GACxBhM,KAAM,IAAIkM,OAAO,OAASD,GAC1BlQ,IAAK,IAAImQ,OAAO,MAAQF,GACxB/L,KAAM,IAAIiM,OAAO,OAASD,GAC1BxQ,IAAK,IAAIyQ,OAAO,MAAQF,GACxB7L,KAAM,qDACND,KAAM,sDAxBC,GAoFO,oBAAX5d,QAA0BA,OAAOD,QACxCC,OAAOD,QAAUgY,EAGM,oBAAXlY,QAA0BA,OAAOC,IAC7CD,OAAO,WAAa,OAAOkY,IAI3B9X,OAAO8X,UAAYA,EAl5BvB;CCmCA,SAAUxU,GACN,aAEAA,EAAEyM,GAAG6Z,mBAAqB,SAASrgB,GAE/B,OAAO5G,KAAKgD,KAAK,WAqBb,SAASlF,IACDopB,IAIJA,GAAqB,EAErBC,IAEAC,IACAC,IAEIC,EAAenkB,GAAG,UAClBiS,EAAMmS,KAAOpS,UAAUmS,EAAetmB,OAEjCoU,EAAMmS,KAAKzR,SACZV,EAAMmS,KAAOpS,UAAUqS,EAASpS,SAIpCA,EAAMmS,KAAOpS,UAAUqS,EAASpS,OAGpCA,EAAM2F,KAAO3F,EAAMmS,KAAK3Q,QACxBxB,EAAM0F,KAAO1F,EAAMmS,KAAKlQ,QACxBjC,EAAMqS,OAAS9mB,EAAEyM,GAAG6Z,mBAAmBS,QAAQtS,EAAM0F,MAErD6M,IACAC,IAEAC,KAGJ,SAASC,EAAYC,EAAUC,GAC3B,IAAIC,EAAe9S,UAAU4S,GAE7B,QAAIE,EAAanS,SACboS,EAAUvmB,YAAY,8BAEtByT,EAAMmS,KAAOU,EACb7S,EAAM2F,KAAOkN,EAAarR,QAC1BxB,EAAM0F,KAAOmN,EAAa5Q,QAC1BjC,EAAMqS,OAAS9mB,EAAEyM,GAAG6Z,mBAAmBS,QAAQtS,EAAM0F,MAErD+M,EAAmBG,IAEZ,GAOf,SAASG,IACLxnB,EAAE,0BAA0BiB,OAE5B,IAEQwmB,EAFJC,EAAgB1nB,EAAEtD,QAAQqM,QACtBH,EAAS+d,EAAe/d,cAKE,KAFlC6e,EAAqBF,EAAUrnB,KAAK,2BAGhCunB,EAAqBF,EAAUI,aAC/BJ,EAAUrnB,KAAK,uBAAwBunB,IAGvC7e,EAAOI,KAAOye,EAAqB,IAAMC,EACzCH,EAAUze,IAAI,OAAQF,EAAOI,MAAMD,MAAM0e,GAEpCA,GAAsBC,EAC3BH,EAAUze,IAAI,OAAQ4e,EAAgBD,EAAqB,IAAI1e,MAAM0e,GAGrEF,EAAUze,IAAI,OAAQ,GAAGC,MAAM2e,EAAgB,IAGnDH,EAAUze,IAAI,MAAOF,EAAOC,IAAM8d,EAAeiB,eAAe5lB,OAGpE,SAAS6lB,IACLN,EAAUtmB,OAGd,SAASulB,IACLK,EAAW7mB,EAAEpD,QACT6X,MAAO,qBACPqT,UAAW,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UACjKC,eAAgB,sBAChBC,gBAAgB,EAChBC,MAAM,EACNC,kBAAkB,EAClBC,eAAgB,GAChBC,yBAAyB,EACzBC,wBAAyB,GACzBC,cAAe,MACfC,0BAA0B,EAC1BC,qBAAsB,EACtBC,oBAAoB,EACpBC,iBAAkB,wBAClBC,oBAAqB,6BACrBC,mBAAoB,4BACpBC,SACAC,UACAC,SAAU,cAEX9iB,GAECA,EAAQyO,eAAe,SACvBmS,EAASgC,MAAQ7oB,EAAEpD,QACfosB,SAAS,EACT9S,KAAK,EACLvB,KAAK,EACLsU,KAAK,EACLC,SAAS,GACVjjB,EAAQ4iB,OAGXhC,EAASgC,OACLG,QAAS,EACT9S,IAAK,EACLvB,IAAK,EACLsU,IAAK,EACLC,QAAS,GAIZjjB,EAAQyO,eAAe,YACxBzO,EAAQ6iB,WAGZjC,EAASiC,OAAS9oB,EAAEpD,QAChBusB,OAAQ,MACRC,cAAe,aACfC,aAAc,YACdC,OAAQ,UACRC,SAAU,YACVC,QAAS,WACTC,aAAc,gBACdC,UAAW,aACXC,OAAQ,UACRX,QAAS,UACTE,QAAS,WACVjjB,EAAQ6iB,QAGLjC,EAASgC,MAAMnU,eAAe,aAAyC,IAA3BmS,EAASgC,MAAMK,SAAuBlpB,EAAEyM,GAAG6Z,mBAAmBsD,sBAC5G/C,EAASgC,MAAMK,QAAU,IAIjC,SAASzC,IACL,IAAIoD,KACIC,EAAoB,IAEG,IAA3BjD,EAASgC,MAAMG,UACfa,EAAQhD,EAASgC,MAAMG,SAAW,2DAA6DnC,EAASiC,OAAOE,QAAU,+CAGlG,IAAvBnC,EAASgC,MAAM3S,MACf2T,EAAQhD,EAASgC,MAAM3S,KAAO,0DAA4D2Q,EAASiC,OAAOK,OAAS,2GAA6GtC,EAASiC,OAAOM,cAAgB,0GAA4GvC,EAASiC,OAAOO,aAAe,+CAGpX,IAAvBxC,EAASgC,MAAMlU,MACfkV,EAAQhD,EAASgC,MAAMlU,KAAO,0DAA4DkS,EAASiC,OAAOQ,OAAS,sGAAwGzC,EAASiC,OAAOS,SAAW,qGAAuG1C,EAASiC,OAAOU,QAAU,+CAGhW,IAAvB3C,EAASgC,MAAMI,MACfY,EAAQhD,EAASgC,MAAMI,KAAO,gEAAkEpC,EAASiC,OAAOW,aAAe,uGAAyG5C,EAASiC,OAAOY,UAAY,oGAAsG7C,EAASiC,OAAOa,OAAS,+CAGxW,IAA3B9C,EAASgC,MAAMK,UACfW,EAAQhD,EAASgC,MAAMK,SAAW,yFAGtCY,GAAqB,2BAErB,IAAK,IAAIjtB,EAAI,EAAGA,EAAIgtB,EAAQ7sB,OAAQH,SACN,IAAfgtB,EAAQhtB,KAInBitB,GAAqBD,EAAQhtB,IAGjCitB,GAAqB,SAEjBjD,EAASiB,WACTgC,GAAqB,qEAAuEjD,EAAS6B,iBAAmB,0DAA4D7B,EAAS8B,oBAAsB,yDAA2D9B,EAAS+B,mBAAqB,4DAG5S/B,EAASoB,KACLtB,EAAenkB,GAAG,SAClB+kB,EAAYvnB,EAAE,oCAAoC+pB,YAAYpD,IAG9DY,EAAYvnB,EAAE,oCACd2mB,EAAe/gB,OAAO2hB,IAI1BA,EAAYvnB,EAAE,oCAAoCgqB,SAAS,QAG/DzC,EAAU3hB,OAAOkkB,GAEbjD,EAASmB,0BAA0BjoB,OACnC8mB,EAASmB,eAAeiC,IAAItD,IAEK,IAA5BE,EAASmB,eACdnB,EAASmB,eAAiBrB,EAG1BE,EAASmB,eAAiBhoB,EAAE6mB,EAASmB,gBAAgBiC,IAAItD,GAGxDE,EAASoB,MACVV,EAAUrmB,SAAS,YAI3B,SAASwlB,IACLwD,GACIlC,gBAAgB,EAChBmC,cAAc,EACdC,kBAAmBpqB,EAAE,eAAgBunB,GACrCO,SAAU9nB,EAAE,kBAAmBunB,GAC/B8C,aAAcrqB,EAAE,0BAA2BunB,GAC3C+C,gBAAiBtqB,EAAE,6BAA8BunB,GACjDgD,eAAgBvqB,EAAE,4BAA6BunB,GAC/CiD,YAAaxqB,EAAE,iCAAkCunB,GACjDsC,SACIY,IAAKzqB,EAAE,kBAAmBunB,GAC1BmD,WAAY1qB,EAAE,wBAAyBunB,GACvCoD,WAAY3qB,EAAE,yBAA0BunB,GACxCqD,kBAAmB5qB,EAAE,+BAAgCunB,GACrDsD,UAAW7qB,EAAE,wBAAyBunB,GACtCuD,iBAAkB9qB,EAAE,8BAA+BunB,GACnDyB,QAAShpB,EAAE,mBAAoBunB,GAC/BwD,eAAgB/qB,EAAE,yBAA0BunB,GAC5CpD,IAAKnkB,EAAE,kBAAmBunB,GAC1ByD,WAAYhrB,EAAE,wBAAyBunB,GACvCrH,MAAOlgB,EAAE,oBAAqBunB,GAC9B0D,aAAcjrB,EAAE,0BAA2BunB,GAC3CnK,KAAMpd,EAAE,mBAAoBunB,GAC5B2D,YAAalrB,EAAE,yBAA0BunB,GACzCkC,aAAczpB,EAAE,wBAAyBunB,GACzC4D,oBAAqBnrB,EAAE,8BAA+BunB,GACtDmC,UAAW1pB,EAAE,qBAAsBunB,GACnC6D,iBAAkBprB,EAAE,2BAA4BunB,GAChDoC,OAAQ3pB,EAAE,kBAAmBunB,GAC7B8D,cAAerrB,EAAE,wBAAyBunB,GAC1C2B,QAASlpB,EAAE,oBAAqBunB,KAIpCV,EAASmB,iBACLnB,EAASmB,0BAA0BjoB,OACnCmqB,EAASlC,eAAiBnB,EAASmB,eAGnCkC,EAASlC,eAAiBhoB,EAAE6mB,EAASmB,iBAIxCnB,EAASkB,iBACVmC,EAASG,aAAappB,OACtBipB,EAASI,gBAAgBrpB,OACzBipB,EAASK,eAAetpB,QAIhC,SAAUqqB,IACF/D,aAAsBxnB,SACtB8nB,IACAN,EAAU1nB,SACV0mB,GAAqB,GAI7B,SAAUgF,IACNpuB,IAGJ,SAAS8pB,IACLN,EAAeniB,GAAG,6BAA8B,WAC5C8mB,MAGJ3E,EAAeniB,GAAG,2BAA4B,WAC1C+mB,MAGJ5E,EAAeniB,GAAG,iCAAkC,SAASxG,EAAGopB,GAC5DD,EAAYC,KAGhBT,EAAeniB,GAAG,+BAAgC,WAC9CgjB,MAGJb,EAAeniB,GAAG,+BAAgC,WAC9CqjB,MAGJ7nB,EAAEzB,UAAUiG,GAAG,oCAAqC,WAChDwiB,MAGCH,EAASoB,MAASpB,EAASqB,wBAEmB,IAApCvB,EAAenc,KAAK,aAC3Bmc,EAAenc,KAAK,YAAa,GAOhCmc,EAAenkB,GAAG,WACnBxC,EAAE2mB,GAAgBniB,GAAG,QAAS,SAASgnB,GACnChE,IAEAgE,EAAGC,oBAGPzrB,EAAEzB,UAAUiG,GAAG,QAAS,WACpBqjB,OAIR7nB,EAAE2mB,GAAgBniB,GAAG,QAAS,SAASgnB,GACnChE,IAEAgE,EAAGC,oBAGPzrB,EAAE2mB,GAAgBniB,GAAG,OAAQ,SAASgnB,GACrCxjB,QAAQC,IAAI,QACT4f,IAEA2D,EAAGC,oBAGPlE,EAAU/iB,GAAG,uBAAwB,SAASgnB,GAI1C,OAHAA,EAAGrlB,iBACHqlB,EAAGC,mBAEI,KAIflE,EAAU/iB,GAAG,cAAe,SAASgnB,GAEjC,OADAA,EAAGrlB,kBACI,IAGX+jB,EAASpC,SAAStjB,GAAG,QAAS,UAAW,SAASgnB,GAE9CrE,EADYnnB,EAAEX,MAAMyJ,IAAI,qBAExB0iB,EAAGrlB,mBAGP+jB,EAASG,aAAa7lB,GAAG,QAAS,SAASgnB,GACvCE,IACAF,EAAGrlB,mBAGP+jB,EAASI,gBAAgB9lB,GAAG,QAAS,SAASgnB,GAC1CG,IACAH,EAAGrlB,mBAGP+jB,EAASK,eAAe/lB,GAAG,QAAS,SAASgnB,GACzCI,IACAJ,EAAGrlB,mBAGP+jB,EAASL,QAAQY,IAAI9kB,SAASnB,GAAG,uBAAwB,SAASgnB,GAC9DA,EAAGrlB,iBAECqlB,EAAGK,MAAQ,IAQfC,EAAsB,OAAQ,IAAK,IAFrBC,EAFdC,EAAa,MAEmCR,IAIhDtE,OAGJgD,EAASL,QAAQc,WAAWhlB,SAASnB,GAAG,uBAAwB,SAASgnB,GACrEA,EAAGrlB,iBAECqlB,EAAGK,MAAQ,IAQfC,EAAsB,OAAQ,IAFhBC,EAFdC,EAAa,aAEmCR,GAEH,KAE7CtE,OAGJgD,EAASL,QAAQgB,UAAUllB,SAASnB,GAAG,uBAAwB,SAASgnB,GACpEA,EAAGrlB,iBAECqlB,EAAGK,MAAQ,IAQfC,EAAsB,OAAQ,IAFhBC,EAFdC,EAAa,YAEmCR,GAEH,KAE7CtE,OAGJgD,EAASL,QAAQb,QAAQrjB,SAASnB,GAAG,uBAAwB,SAASgnB,GAClEA,EAAGrlB,iBAECqlB,EAAGK,MAAQ,IAQfC,EAAsB,OAAQ,IAFhBC,EAFdC,EAAa,UAEmCR,GAEH,KAE7CtE,OAGJgD,EAASL,QAAQ1F,IAAIxe,SAASnB,GAAG,uBAAwB,SAASgnB,GAC9DA,EAAGrlB,iBAECqlB,EAAGK,MAAQ,IAQfC,EAAsB,OAAQ,IAAK,KAFrBC,EAFdC,EAAa,MAEmCR,IAIhDtE,OAGJgD,EAASL,QAAQ3J,MAAMva,SAASnB,GAAG,uBAAwB,SAASgnB,GAChEA,EAAGrlB,iBAECqlB,EAAGK,MAAQ,IAQfC,EAAsB,OAAQ,IAAK,KAFrBC,EAFdC,EAAa,QAEmCR,IAIhDtE,OAGJgD,EAASL,QAAQzM,KAAKzX,SAASnB,GAAG,uBAAwB,SAASgnB,GAC/DA,EAAGrlB,iBAECqlB,EAAGK,MAAQ,IAQfC,EAAsB,OAAQ,IAAK,KAFrBC,EAFdC,EAAa,OAEmCR,IAIhDtE,OAGJgD,EAASL,QAAQJ,aAAa9jB,SAASnB,GAAG,uBAAwB,SAASgnB,GAGvE,GAFAA,EAAGrlB,mBAECqlB,EAAGK,MAAQ,GAAf,CAMA,IAAII,EAAUF,EAFdC,EAAa,eAEmCR,GAEhDM,EAAsB,SAAU,IAAMI,EAAW,IAAOD,GAExD/E,OAGJgD,EAASL,QAAQH,UAAU/jB,SAASnB,GAAG,uBAAwB,SAASgnB,GAGpE,GAFAA,EAAGrlB,mBAECqlB,EAAGK,MAAQ,GAAf,CAMA,IAAII,EAAUF,EAFdC,EAAa,YAEmCR,GAEhDM,EAAsB,SAAU,IAAMK,EAAiB,IAAOF,GAE9D/E,OAGJgD,EAASL,QAAQF,OAAOhkB,SAASnB,GAAG,uBAAwB,SAASgnB,GACjEA,EAAGrlB,iBAECqlB,EAAGK,MAAQ,IAQfC,EAAsB,SAAU,IAAK,IAFvBC,EAFdC,EAAa,SAEmCR,IAIhDtE,OAGJgD,EAASL,QAAQX,QAAQ1kB,GAAG,QAAS,WACjCnF,KAAK+sB,WAGTpsB,EAAEzB,UAAUiG,GAAG,sBAAuB,SAASgnB,GAC3C,GAAKQ,EAAL,CAIA,IAAIC,EAAUF,EAAsBC,EAAYR,GAEhD,OAAQQ,GACJ,IAAK,MACDF,EAAsB,OAAQ,IAAK,IAAMG,GACzC,MACJ,IAAK,aACDH,EAAsB,OAAQ,IAAKG,EAAU,KAC7C,MACJ,IAAK,YACDH,EAAsB,OAAQ,IAAKG,EAAU,KAC7C,MACJ,IAAK,UACDH,EAAsB,OAAQ,IAAKG,EAAU,KAC7C,MACJ,IAAK,MACDH,EAAsB,OAAQ,IAAK,KAAOG,GAC1C,MACJ,IAAK,QACDH,EAAsB,OAAQ,IAAK,KAAOG,GAC1C,MACJ,IAAK,OACDH,EAAsB,OAAQ,IAAK,KAAOG,GAC1C,MACJ,IAAK,eACDH,EAAsB,SAAU,IAAMI,EAAW,IAAOD,GACxD,MACJ,IAAK,YACDH,EAAsB,SAAU,IAAMK,EAAiB,IAAOF,GAC9D,MACJ,IAAK,SACDH,EAAsB,SAAU,IAAK,IAAMG,GAInD/E,IAEAsE,EAAGrlB,oBAGPnG,EAAEzB,UAAUiG,GAAG,mBAAoB,SAASgnB,GACpCA,EAAGK,MAAQ,GAIXG,IACAA,GAAa,EACbR,EAAGrlB,oBAIP+jB,EAASlC,gBACTkC,EAASlC,eAAexjB,GAAG,eAAgB,WAGvC2iB,EAFannB,EAAEX,MAEIgB,OAAO,KAMtC,SAASgsB,IACLvE,KAEA,IAAK,IAAIjrB,EAAI,EAAGA,EAAIgqB,EAASiB,SAAS9qB,OAAQH,IAAK,CAC/C,IAAI4X,EAAQD,UAAUqS,EAASiB,SAASjrB,IAEpC4X,EAAMU,QACN2S,EAASpb,KAAK+H,EAAMkC,gBAKhC,SAASqQ,IACL,GAAKH,EAASiB,SAAd,CAIA,GAAIjB,EAASkB,eAAgB,CACzB,IAAIA,GAAiB,EAErB,IACIA,EAAiBlqB,KAAK0B,MAAM+sB,aAAaC,QAAQ,YAAc1F,EAASkB,iBAE5E,MAAOyE,IAGHzE,EACAD,EAAWC,EAGXsE,SAIJA,IAGJ,GAAIvE,aAAoB2E,MAAO,CAC3BvC,EAASpC,SAAS7d,KAAK,IACvB,IAAK,IAAIpN,EAAI,EAAGA,EAAIirB,EAAS9qB,OAAQH,IAAK,CACtC,IAAI4X,EAAQD,UAAUsT,EAASjrB,IAE3B4X,EAAMU,QACN+U,EAASpC,SAASliB,OAAO5F,EAAE,aAAa4F,OAAO5F,EAAE,iBAAiB8I,IAAI,mBAAoB2L,EAAMkC,kBAK5G+V,KAGJ,SAASA,IACL,IAAIC,GAAQ,EAEZ3sB,EAAE,OAAQkqB,EAASpC,UAAUrX,OAAO,WAChC,IAAImc,EAAc5sB,EAAEX,MAAMyJ,IAAI,oBAK9B,GAHA8jB,EAAcpY,UAAUoY,GACxBA,EAAYrX,MAAQ+B,KAAKC,MAA0B,IAApBqV,EAAYrX,OAAe,IAEtDqX,EAAYjW,gBAAkBlC,EAAMmS,KAAKjQ,cAAe,CACxDgW,GAAQ,EAER,IAAIE,EAAgB7sB,EAAEX,MAAMsG,SAEvBknB,EAAcrqB,GAAG0nB,EAASC,gBACvBD,EAASC,cACTD,EAASC,aAAanpB,YAAY,UAEtCkpB,EAASC,aAAe0C,EACxBA,EAAc3rB,SAAS,cAK9ByrB,GACGzC,EAASC,eACTD,EAASC,aAAanpB,YAAY,UAClCkpB,EAASC,cAAe,GAI5BD,EAASC,cACTD,EAASG,aAAa3pB,KAAK,YAAY,GACvCwpB,EAASI,gBAAgB5pB,KAAK,YAAY,KAG1CwpB,EAASG,aAAa3pB,KAAK,YAAY,GACvCwpB,EAASI,gBAAgB5pB,KAAK,YAAY,IAIlD,SAASosB,IACLR,aAAaS,QAAQ,YAAclG,EAASkB,eAAgBlqB,KAAKC,UAAUgqB,IAG/E,SAAS4D,IACL5D,EAASkF,QAAQvY,EAAMmS,KAAKjQ,eAC5BmW,IAEA9sB,EAAEzB,UAAU0D,QAAQ,qCAGxB,SAAS0pB,IACL,IAAI1b,EAAQ6X,EAAStU,QAAQiB,EAAMmS,KAAKjQ,gBAEzB,IAAX1G,IACA6X,EAASmF,OAAOhd,EAAO,GAEvB6c,IACA9sB,EAAEzB,UAAU0D,QAAQ,sCAI5B,SAAS2pB,IACD1jB,QAAQ,gFACRmkB,IAEAS,IAEA9sB,EAAEzB,UAAU0D,QAAQ,sCAI5B,SAAS6pB,EAAsB3W,EAAQ+X,EAAU5vB,GAC7C,OAAQ6X,GACJ,IAAK,OAEDV,EAAM2F,KAAK8S,GAAY5vB,EACvBmX,EAAMmS,KAAOpS,WAAWsB,EAAGrB,EAAM2F,KAAKtE,EAAGC,EAAGtB,EAAM2F,KAAKrE,EAAGK,EAAG3B,EAAM2F,KAAKhE,EAAGpB,EAAGP,EAAM2F,KAAKpF,IACzFP,EAAM0F,KAAO1F,EAAMmS,KAAKlQ,QACxBjC,EAAMqS,OAAS9mB,EAAEyM,GAAG6Z,mBAAmBS,QAAQtS,EAAM0F,MAErDoN,EAAUvmB,YAAY,8BAEtB,MAEJ,IAAK,OAEDyT,EAAM0F,KAAK+S,GAAY5vB,EACvBmX,EAAMmS,KAAOpS,WAAWK,EAAGJ,EAAM0F,KAAKtF,EAAGC,EAAGL,EAAM0F,KAAKrF,EAAGC,EAAGN,EAAM0F,KAAKpF,EAAGC,EAAGP,EAAM2F,KAAKpF,IACzFP,EAAM2F,KAAO3F,EAAMmS,KAAK3Q,QACxBxB,EAAMqS,OAAS9mB,EAAEyM,GAAG6Z,mBAAmBS,QAAQtS,EAAM0F,MAErDoN,EAAUvmB,YAAY,8BAEtB,MAEJ,IAAK,SAEDyT,EAAMqS,OAAOoG,GAAY5vB,EACzBmX,EAAM0F,KAAOna,EAAEyM,GAAG6Z,mBAAmB6G,QAAQ1Y,EAAMqS,QACnDrS,EAAMmS,KAAOpS,UAAUC,EAAM0F,MAC7B1F,EAAM2F,KAAO3F,EAAMmS,KAAK3Q,QAEpB4Q,EAAS0B,2BACL9T,EAAM0F,KAAKiT,KACX7F,EAAUvmB,YAAY,8BAGtBumB,EAAUrmB,SAAS,gCAQvC,SAAS6qB,EAAsBsB,EAAY7B,GACvC,IAAIS,EAAUjsB,EAAEyM,GAAG6Z,mBAAmBgH,iCAAiC9B,EAAItB,EAASL,QAAQwD,IAI5F,OAFAnD,EAASL,QAAQwD,EAAa,WAAWntB,KAAK,WAAY+rB,GAEnDA,EAKX,SAASsB,EAAwBlG,GAC7BmG,EAA2BlpB,WAAW,WAClC4iB,EAAmBG,IACpBR,EAASsB,gBAGhB,SAASjB,EAAmBG,GACxBoG,aAAaD,GAEbxtB,EAAEzB,UAAU0D,QAAQ,yCAEhBvE,KAAKgwB,MAAQC,EAAiB9G,EAASsB,eACvCoF,EAAwBlG,SAIM,IAAvBA,IACPA,GAAqB,GAGzBsG,EAAiBjwB,KAAKgwB,OAES,IAA3B7G,EAASgC,MAAMG,SACf4E,KAGuB,IAAvB/G,EAASgC,MAAM3S,MACf2X,IACAC,IACAC,MAGuB,IAAvBlH,EAASgC,MAAMlU,MACfqZ,IACAC,IACAC,MAGuB,IAAvBrH,EAASgC,MAAMI,MACfkF,IACAC,IACAC,MAG2B,IAA3BxH,EAASgC,MAAMK,SACfoF,IAGCjH,GACDkH,KAGC,IAAM9Z,EAAMqS,OAAO1Q,GAAK3B,EAAMqS,OAAO9R,EAAI6R,EAASwB,yBACnD6B,EAASM,YAAY1hB,IAAI,QAAS,QAC9B+d,EAASuB,yBACTzB,EAAe7d,IAAI,aAAc2L,EAAMmS,KAAKjQ,eAAe7N,IAAI,QAAS,UAI5EohB,EAASM,YAAY1hB,IAAI,QAAS,QAC9B+d,EAASuB,yBACTzB,EAAe7d,IAAI,aAAc2L,EAAMmS,KAAKjQ,eAAe7N,IAAI,QAAS,SAIhF4jB,IAEA7F,EAASkC,SAASxB,EAAW9S,IAGjC,SAAS8Z,IACDrE,EAASlC,gBACTkC,EAASlC,eAAe3lB,KAAK,SAAS4N,EAAOue,GACzC,IAAIC,EAAWzuB,EAAEwuB,GAEjB,OAAQC,EAASvuB,KAAK,iBAClB,IAAK,MACDuuB,EAASpuB,IAAIoU,EAAMmS,KAAKnQ,eACxB,MACJ,IAAK,MACDgY,EAASpuB,IAAIoU,EAAMmS,KAAKvQ,eACxB,MACJ,IAAK,MAEL,QACIoY,EAASpuB,IAAIoU,EAAMmS,KAAKjQ,kBAO5C,SAASkX,IACL7tB,EAAEyM,GAAG6Z,mBAAmBoI,YAAYxE,EAASL,QAAQY,IAAKzqB,EAAEyM,GAAG6Z,mBAAmBqI,uBAAuBla,EAAM2F,KAAM,IAAK,EAAG,IAAK,IAElI8P,EAASL,QAAQa,WAAW5hB,IAAI,OAAQ2L,EAAM2F,KAAKtE,EAAI,IAAM,IAAM,KAGvE,SAASgY,IACL9tB,EAAEyM,GAAG6Z,mBAAmBoI,YAAYxE,EAASL,QAAQc,WAAY3qB,EAAEyM,GAAG6Z,mBAAmBqI,uBAAuBla,EAAM2F,KAAM,IAAK,EAAG,EAAG,IAEvI8P,EAASL,QAAQe,kBAAkB9hB,IAAI,OAAuB,IAAf2L,EAAM2F,KAAKrE,EAAU,KAGxE,SAASgY,IACL/tB,EAAEyM,GAAG6Z,mBAAmBoI,YAAYxE,EAASL,QAAQgB,UAAW7qB,EAAEyM,GAAG6Z,mBAAmBqI,uBAAuBla,EAAM2F,KAAM,IAAK,EAAG,EAAG,IAEtI8P,EAASL,QAAQiB,iBAAiBhiB,IAAI,OAAuB,IAAf2L,EAAM2F,KAAKhE,EAAU,KAGvE,SAASwX,IACL5tB,EAAEyM,GAAG6Z,mBAAmBoI,YAAYxE,EAASL,QAAQb,QAAShpB,EAAEyM,GAAG6Z,mBAAmBqI,uBAAuBla,EAAM2F,KAAM,IAAK,EAAG,EAAG,IAEpI8P,EAASL,QAAQkB,eAAejiB,IAAI,OAAuB,IAAf2L,EAAM2F,KAAKpF,EAAU,KAGrE,SAASgZ,IACLhuB,EAAEyM,GAAG6Z,mBAAmBoI,YAAYxE,EAASL,QAAQ1F,IAAKnkB,EAAEyM,GAAG6Z,mBAAmBqI,uBAAuBla,EAAM0F,KAAM,IAAK,EAAG,IAAK,IAElI+P,EAASL,QAAQmB,WAAWliB,IAAI,OAAQ2L,EAAM0F,KAAKtF,EAAI,IAAM,IAAM,KAGvE,SAASoZ,IACLjuB,EAAEyM,GAAG6Z,mBAAmBoI,YAAYxE,EAASL,QAAQ3J,MAAOlgB,EAAEyM,GAAG6Z,mBAAmBqI,uBAAuBla,EAAM0F,KAAM,IAAK,EAAG,IAAK,IAEpI+P,EAASL,QAAQoB,aAAaniB,IAAI,OAAQ2L,EAAM0F,KAAKrF,EAAI,IAAM,IAAM,KAGzE,SAASoZ,IACLluB,EAAEyM,GAAG6Z,mBAAmBoI,YAAYxE,EAASL,QAAQzM,KAAMpd,EAAEyM,GAAG6Z,mBAAmBqI,uBAAuBla,EAAM0F,KAAM,IAAK,EAAG,IAAK,IAEnI+P,EAASL,QAAQqB,YAAYpiB,IAAI,OAAQ2L,EAAM0F,KAAKpF,EAAI,IAAM,IAAM,KAGxE,SAAS6Z,EAAwBC,EAAe3B,GAC5C,GAAsC,IAAlCrG,EAAS2B,uBAA+B3B,EAAS4B,mBACjD,OAAOoG,EAGXA,EAAcC,KAAK,SAAS9Z,EAAGD,GAC3B,OAAOC,EAAE+Z,SAAWha,EAAEga,WAK1B,IAAK,IAFDC,KAEKnyB,EAAI,EAAGA,EAAIgyB,EAAc7xB,OAAQH,IACtC,GAAIgyB,EAAchyB,GAAGuwB,OAASyB,EAAchyB,EAAI,GAAGuwB,KAI/C,IAAK,IAHD6B,EAAQ3X,KAAKC,MAAMsX,EAAchyB,GAAGkyB,UAAYzX,KAAKC,MAAMsX,EAAchyB,EAAI,GAAGkyB,UAC5EG,EAAwBlvB,EAAEyM,GAAG6Z,mBAAmBqI,uBAAuBE,EAAchyB,GAAGsyB,SAAUjC,EAAU2B,EAAchyB,EAAI,GAAGsyB,SAASjC,GAAW2B,EAAchyB,GAAGsyB,SAASjC,GAAW+B,EAAOpI,EAAS2B,qBAAsBqG,EAAchyB,EAAI,GAAGkyB,SAAUF,EAAchyB,GAAGkyB,UAE/QK,EAAI,EAAGA,EAAIF,EAAsBlyB,OAAQoyB,IAC9C,GAAIF,EAAsBE,GAAGhC,OAASyB,EAAchyB,EAAI,GAAGuwB,KAAM,CAC7D4B,EAAStiB,KAAKwiB,EAAsBE,IAEhCA,EAAI,GACJJ,EAAStiB,KAAKwiB,EAAsBE,EAAI,IAG5C,MAMhB,OAAOpvB,EAAEqvB,MAAML,EAAUH,GAG7B,SAASV,IACL,IAAIU,EAAgB7uB,EAAEyM,GAAG6Z,mBAAmBqI,uBAAuBla,EAAMqS,OAAQ,IAAK,EAAG,IAAK,GAAID,EAAS2B,sBAE3GqG,EAAgBD,EAAwBC,EAAe,KAEvD7uB,EAAEyM,GAAG6Z,mBAAmBoI,YAAYxE,EAASL,QAAQJ,aAAcoF,GAEnE3E,EAASL,QAAQsB,oBAAoBriB,IAAI,OAAQ2L,EAAMqS,OAAO1Q,EAAI8V,EAAW,IAAM,KAGvF,SAASkC,IACL,IAAIS,EAAgB7uB,EAAEyM,GAAG6Z,mBAAmBqI,uBAAuBla,EAAMqS,OAAQ,IAAK,EAAGqF,EAAgB,EAAGtF,EAAS2B,sBAErHqG,EAAgBD,EAAwBC,EAAe,KAEvD7uB,EAAEyM,GAAG6Z,mBAAmBoI,YAAYxE,EAASL,QAAQH,UAAWmF,GAEhE3E,EAASL,QAAQuB,iBAAiBtiB,IAAI,OAAQ2L,EAAMqS,OAAOpN,EAAIyS,EAAiB,IAAM,KAG1F,SAASkC,IACL,IAAIQ,EAAgB7uB,EAAEyM,GAAG6Z,mBAAmBqI,uBAAuBla,EAAMqS,OAAQ,IAAK,EAAG,IAAK,GAAID,EAAS2B,sBAE3GqG,EAAgBD,EAAwBC,EAAe,KAEvD7uB,EAAEyM,GAAG6Z,mBAAmBoI,YAAYxE,EAASL,QAAQF,OAAQkF,GAE7D3E,EAASL,QAAQwB,cAAcviB,IAAI,OAAQ2L,EAAMqS,OAAOhR,EAAI,IAAM,IAAM,KAG5E,SAASwY,IACLpE,EAASL,QAAQX,QAAQpgB,IAAI,aAAc9I,EAAEyM,GAAG6Z,mBAAmBgJ,SAAS7a,EAAM0F,OAElF,IAAIoV,EAEJ,OAAQ1I,EAASyB,eACb,IAAK,MACDiH,EAAc9a,EAAMmS,KAAKnQ,cACzB,MACJ,IAAK,MACD8Y,EAAc9a,EAAMmS,KAAKvQ,cACzB,MACJ,IAAK,MAEL,QACIkZ,EAAc9a,EAAMmS,KAAKjQ,cAIjCuT,EAASL,QAAQX,QAAQ7oB,IAAIkvB,GA7/BjC,IACQ1I,EAEAU,EACA2C,EACApC,EALJvB,GAAqB,EAEjBI,EAAiB3mB,EAAEX,MAInB6sB,EAAW,IACXF,GAAa,EACb2B,EAAiB,EACjBlZ,GACImS,KAAM,KACNxM,KAAM,KACND,KAAM,KACN2M,OAAQ,MAEpBqF,EAAiB,IAEjBhvB,IAkxBA,IAAIqwB,KAiOZxtB,EAAEyM,GAAG6Z,mBAAmBkJ,oBAAsB,SAAShE,GACnD,YAAwB,IAAbA,EAAGiE,OAENA,MAAOjE,EAAGkE,cAAcD,MACxBE,MAAOnE,EAAGkE,cAAcC,YAGa,IAA7BnE,EAAGkE,cAAcE,SAEzBH,MAAOjE,EAAGkE,cAAcE,QAAQ,GAAGH,MACnCE,MAAOnE,EAAGkE,cAAcE,QAAQ,GAAGD,YAHtC,GAQT3vB,EAAEyM,GAAG6Z,mBAAmBgH,iCAAmC,SAAS9B,EAAIqE,GACpE,IAAInW,EAAI1Z,EAAEyM,GAAG6Z,mBAAmBkJ,oBAAoBhE,GAEhDsE,EAAQD,EAAiB9mB,QAGzBkjB,GAFcvS,EAAE+V,MAAQI,EAAiBjnB,SAASI,MAE9B8mB,EAAQ,IAUhC,OARI7D,EAAU,IACVA,EAAU,GAGVA,EAAU,MACVA,EAAU,KAGPA,GAGXjsB,EAAEyM,GAAG6Z,mBAAmBsD,kBAAoB,WACxC,IAAImG,EAAcxxB,SAASyxB,cAAc,yBAAyBC,MASlE,OAPAF,EAAYG,gBAAkB,yCAC9BH,EAAYG,gBAAkB,4CAC9BH,EAAYG,gBAAkB,8CAC9BH,EAAYG,gBAAkB,iDAC9BH,EAAYG,gBAAkB,6CAC9BH,EAAYG,gBAAkB,2EAE2B,IAArDH,EAAYG,gBAAgB1c,QAAQ,aAQ5CxT,EAAEyM,GAAG6Z,mBAAmBqI,uBAAyB,SAASla,EAAO0b,EAAkBC,EAAUC,EAAUpB,EAAOzG,EAAsB8H,EAAaC,QACzG,IAAzB/H,IACPA,EAAuB,QAGA,IAAhB8H,IACPA,EAAc,QAGS,IAAhBC,IACPA,EAAc,KAOlB,IAAK,IAJDC,KACIC,EAAOJ,EAAWD,EAClBhD,GAAO,EAENvwB,EAAI,EAAGA,EAAIoyB,IAASpyB,EAAG,CAC5B,IAEQyyB,EAFJoB,EAAe7zB,GAAKoyB,EAAQ,GACxB0B,EAAgB3wB,EAAEyM,GAAG6Z,mBAAmBsK,YAAYnc,EAAO0b,EAAkBO,EAAeD,EAAOL,GAG3G,GAAI5H,EAAuB,EAAG,CAC1B,IAAIqI,EAAW7wB,EAAEyM,GAAG6Z,mBAAmB6G,QAAQwD,EAAenI,GAE9D4E,EAAOyD,EAASzD,KAChBkC,EAAWtvB,EAAEyM,GAAG6Z,mBAAmBgJ,SAASuB,EAAUrI,QAGtD8G,EAAWtvB,EAAEyM,GAAG6Z,mBAAmBgJ,SAASqB,EAAenI,GAG/DgI,EAAc3zB,IACV4X,MAAO6a,EACPP,SAAU2B,GAAgBH,EAAcD,GAAeA,EACvDlD,KAAMA,EACN+B,SAAUwB,GAIlB,OAAOH,GAGXxwB,EAAEyM,GAAG6Z,mBAAmBoI,YAAc,SAASF,EAASK,GACpDA,EAAcC,KAAK,SAAS9Z,EAAGD,GAC3B,OAAOC,EAAE+Z,SAAWha,EAAEga,WAU1B,IAAK,IAPD+B,EAAiB,GACbC,EAA0B,GAC1BC,EAAW,2BACXC,EAAS,+BACTC,EAAY,+CAGXr0B,EAAI,EAAGA,EAAIgyB,EAAc7xB,OAAQH,IAAK,CAC3C,IAAIyF,EAAKusB,EAAchyB,GAEvBi0B,GAAkB,IAAMxuB,EAAGmS,MAAQ,IAAMnS,EAAGysB,SAAW,IACvDgC,GAA2B,eAAiBzuB,EAAGysB,SAAW,KAAOzsB,EAAGmS,MAAQ,IAMhFyc,GAFAH,GAA2B,IAG3BE,GAJAH,GAAkB,IAKlBE,GAAYF,EAEZtC,EAAQ1lB,IAAI,aAAcooB,GAC1B1C,EAAQ1lB,IAAI,aAAcmoB,GAC1BzC,EAAQ1lB,IAAI,aAAckoB,IAG9BhxB,EAAEyM,GAAG6Z,mBAAmB6K,UAAY,SAASxc,GAMzC,QAAIA,EAAIE,EAHY,KAGSF,EAAIG,EAHb,KAGkCH,EAAII,EAHtC,KAG2DJ,EAAIE,GAF/D,GAEoFF,EAAIG,GAFxF,GAE6GH,EAAII,GAFjH,KAMhBJ,EAAIE,EAAIyC,KAAKmB,IAAI,IAAK9D,EAAIE,GAC1BF,EAAIG,EAAIwC,KAAKmB,IAAI,IAAK9D,EAAIG,GAC1BH,EAAII,EAAIuC,KAAKmB,IAAI,IAAK9D,EAAII,GAC1BJ,EAAIE,EAAIyC,KAAKkB,IAAI,EAAG7D,EAAIE,GACxBF,EAAIG,EAAIwC,KAAKkB,IAAI,EAAG7D,EAAIG,GACxBH,EAAII,EAAIuC,KAAKkB,IAAI,EAAG7D,EAAII,IAEjB,IAIf/U,EAAEyM,GAAG6Z,mBAAmBS,QAAU,SAASpS,GACvC,IAAIyc,EAAMpxB,EAAEyM,GAAG6Z,mBAAmB+K,cAAcrxB,EAAEyM,GAAG6Z,mBAAmBgL,WAAWtxB,EAAEyM,GAAG6Z,mBAAmBiL,QAAQ5c,KAMnH,OAJIA,EAAID,eAAe,OACnB0c,EAAIpc,EAAIL,EAAIK,GAGToc,GAGXpxB,EAAEyM,GAAG6Z,mBAAmB6G,QAAU,SAASiE,EAAK5I,QACR,IAAzBA,IACPA,EAAuB,GAG3B,IAAI7T,EAAM3U,EAAEyM,GAAG6Z,mBAAmBkL,QAAQxxB,EAAEyM,GAAG6Z,mBAAmBmL,WAAWzxB,EAAEyM,GAAG6Z,mBAAmBoL,cAAcN,KAEnH,GAAIpxB,EAAEyM,GAAG6Z,mBAAmB6K,UAAUxc,GAOlC,OANIyc,EAAI1c,eAAe,OACnBC,EAAIK,EAAIoc,EAAIpc,GAGhBL,EAAIyY,MAAO,EAEJzY,EAGX,IAAIgd,EAAM3xB,EAAEpD,UAAWw0B,GACfQ,EAAgBD,EAAIjY,EACpBmY,GAAkB,EAClBC,EAAQ,EAEhB,KACMA,EAEFH,EAAIjY,EAAImY,GAAmBD,EAAgBC,GAAkB,EAE7Dld,EAAM3U,EAAEyM,GAAG6Z,mBAAmBkL,QAAQxxB,EAAEyM,GAAG6Z,mBAAmBmL,WAAWzxB,EAAEyM,GAAG6Z,mBAAmBoL,cAAcC,KAE3G3xB,EAAEyM,GAAG6Z,mBAAmB6K,UAAUxc,GAClCkd,EAAiBF,EAAIjY,EAGrBkY,EAAgBD,EAAIjY,QAEnBpC,KAAKiC,IAAIqY,EAAgBC,GAAkB,IAAOC,EAAQ,KAyBnE,OAvBIV,EAAI1c,eAAe,OACnBC,EAAIK,EAAIoc,EAAIpc,GAGhBL,EAAIE,EAAIyC,KAAKkB,IAAI,EAAG7D,EAAIE,GACxBF,EAAIG,EAAIwC,KAAKkB,IAAI,EAAG7D,EAAIG,GACxBH,EAAII,EAAIuC,KAAKkB,IAAI,EAAG7D,EAAII,GAExBJ,EAAIE,EAAIyC,KAAKmB,IAAI,IAAK9D,EAAIE,GAC1BF,EAAIG,EAAIwC,KAAKmB,IAAI,IAAK9D,EAAIG,GAC1BH,EAAII,EAAIuC,KAAKmB,IAAI,IAAK9D,EAAII,GAEtByT,EAAuB,IACnB7T,EAAID,eAAe,KACnBC,EAAIK,EAAIL,EAAIK,EAAIwT,EAGhB7T,EAAIK,EAAIwT,GAIhB7T,EAAIyY,MAAO,EAEJzY,GAGX3U,EAAEyM,GAAG6Z,mBAAmBsK,YAAc,SAASnc,EAAOyY,EAAU5vB,GAC5D,IAAIqzB,EAAgB3wB,EAAEpD,UAAW6X,GAEjC,IAAKA,EAAMC,eAAewY,GACtB,KAAM,2BAA6BA,EAKvC,OAFAyD,EAAczD,GAAY5vB,EAEnBqzB,GAGX3wB,EAAEyM,GAAG6Z,mBAAmBgJ,SAAW,SAAS7a,EAAO+T,QACX,IAAzBA,IACPA,EAAuB,GAG3B,IAAIuJ,GAAU,EACNC,EAAWhyB,EAAEpD,UAAW6X,GAsBhC,OApBIud,EAAStd,eAAe,OAExBsd,EAAWhyB,EAAEyM,GAAG6Z,mBAAmB6G,QAAQ6E,EAAUxJ,IAGrDwJ,EAAStd,eAAe,OAExBqd,EAAU,QAAUC,EAASlc,EAAI,IAAmB,IAAbkc,EAASjc,EAAU,KAAoB,IAAbic,EAAS5b,EAAU,KAAO4b,EAAShd,EAAI,KAGxGgd,EAAStd,eAAe,OAGpBqd,EADAC,EAAShd,EAAI,EACH,QAAUsC,KAAKC,MAAMya,EAASnd,GAAK,IAAMyC,KAAKC,MAAMya,EAASld,GAAK,IAAMwC,KAAKC,MAAMya,EAASjd,GAAK,IAAMid,EAAShd,EAAI,IAGpH,OAASsC,KAAKC,MAAMya,EAASnd,GAAK,IAAMyC,KAAKC,MAAMya,EAASld,GAAK,IAAMwC,KAAKC,MAAMya,EAASjd,GAAK,KAI3Ggd,GAGX/xB,EAAEyM,GAAG6Z,mBAAmBiL,QAAU,SAAS5c,GACvC,IAAIsd,KAEApd,EAAKF,EAAIE,EAAI,IACbC,EAAKH,EAAIG,EAAI,IACbC,EAAKJ,EAAII,EAAI,IAgCjB,OA9BIF,EAAI,OACJA,EAAIyC,KAAK4a,KAAMrd,EAAI,MAAS,MAAQ,KAGpCA,GAAQ,MAGRC,EAAI,OACJA,EAAIwC,KAAK4a,KAAMpd,EAAI,MAAS,MAAQ,KAGpCA,GAAQ,MAGRC,EAAI,OACJA,EAAIuC,KAAK4a,KAAMnd,EAAI,MAAS,MAAQ,KAGpCA,GAAQ,MAGZF,GAAQ,IACRC,GAAQ,IACRC,GAAQ,IAGRkd,EAAIE,EAAQ,MAAJtd,EAAiB,MAAJC,EAAiB,MAAJC,EAClCkd,EAAIG,EAAQ,MAAJvd,EAAiB,MAAJC,EAAiB,MAAJC,EAClCkd,EAAII,EAAQ,MAAJxd,EAAiB,MAAJC,EAAiB,MAAJC,EAE3Bkd,GAGXjyB,EAAEyM,GAAG6Z,mBAAmBgL,WAAa,SAASW,GAC1C,IAAIK,KAGAC,EAAIN,EAAIE,EAAI,OACZK,EAAIP,EAAIG,EAAI,IACZK,EAAIR,EAAII,EAAI,QA2BhB,OAxBIE,EADAA,EAAI,QACAjb,KAAK4a,IAAIK,EAAG,YAGZ,MAAQA,EAAI,WAIhBC,EADAA,EAAI,QACAlb,KAAK4a,IAAIM,EAAG,YAGZ,MAAQA,EAAI,WAIhBC,EADAA,EAAI,QACAnb,KAAK4a,IAAIO,EAAG,YAGZ,MAAQA,EAAI,WAGpBH,EAAOlc,EAAK,IAAMoc,EAAK,GACvBF,EAAOtd,EAAI,KAAOud,EAAIC,GACtBF,EAAOvd,EAAI,KAAOyd,EAAIC,GAEfH,GAGXtyB,EAAEyM,GAAG6Z,mBAAmB+K,cAAgB,SAASiB,GAC7C,IAAII,KAcJ,OAZAA,EAAOtc,EAAIkc,EAAOlc,EAClBsc,EAAOhZ,EAAIpC,KAAKqb,KAAKrb,KAAK4a,IAAII,EAAOtd,EAAG,GAAKsC,KAAK4a,IAAII,EAAOvd,EAAG,IAEhE2d,EAAO5c,EAAIwB,KAAKsb,MAAMN,EAAOvd,EAAGud,EAAOtd,GAEnC0d,EAAO5c,EAAI,EACX4c,EAAO5c,EAAK4c,EAAO5c,EAAIwB,KAAKub,GAAM,IAGlCH,EAAO5c,EAAI,IAAOwB,KAAKiC,IAAImZ,EAAO5c,GAAKwB,KAAKub,GAAM,IAG/CH,GAGX1yB,EAAEyM,GAAG6Z,mBAAmBoL,cAAgB,SAASgB,GAC7C,IAAIJ,KAMJ,OAJAA,EAAOlc,EAAIsc,EAAOtc,EAClBkc,EAAOtd,EAAIsC,KAAKwb,IAAe,aAAXJ,EAAO5c,GAAqB4c,EAAOhZ,EACvD4Y,EAAOvd,EAAIuC,KAAKyb,IAAe,aAAXL,EAAO5c,GAAqB4c,EAAOhZ,EAEhD4Y,GAGXtyB,EAAEyM,GAAG6Z,mBAAmBmL,WAAa,SAASa,GAC1C,IAAIL,KAgCJ,OA9BAA,EAAIG,GAAKE,EAAOlc,EAAI,IAAM,IAC1B6b,EAAIE,EAAIG,EAAOtd,EAAI,IAAMid,EAAIG,EAC7BH,EAAII,EAAIJ,EAAIG,EAAIE,EAAOvd,EAAI,IAEvBuC,KAAK4a,IAAID,EAAIG,EAAG,GAAK,QACrBH,EAAIG,EAAI9a,KAAK4a,IAAID,EAAIG,EAAG,GAGxBH,EAAIG,GAAKH,EAAIG,EAAI,YAAe,MAGhC9a,KAAK4a,IAAID,EAAIE,EAAG,GAAK,QACrBF,EAAIE,EAAI7a,KAAK4a,IAAID,EAAIE,EAAG,GAGxBF,EAAIE,GAAKF,EAAIE,EAAI,YAAe,MAGhC7a,KAAK4a,IAAID,EAAII,EAAG,GAAK,QACrBJ,EAAII,EAAI/a,KAAK4a,IAAID,EAAII,EAAG,GAGxBJ,EAAII,GAAKJ,EAAII,EAAI,YAAe,MAIpCJ,EAAIE,EAAI,OAASF,EAAIE,EACrBF,EAAIG,EAAI,IAAUH,EAAIG,EACtBH,EAAII,EAAI,QAAUJ,EAAII,EAEfJ,GAGXjyB,EAAEyM,GAAG6Z,mBAAmBkL,QAAU,SAASS,GACvC,IAAItd,KAoCJ,OAjCAsd,EAAIE,EAAIF,EAAIE,EAAI,IAChBF,EAAIG,EAAIH,EAAIG,EAAI,IAChBH,EAAII,EAAIJ,EAAII,EAAI,IAEhB1d,EAAIE,EAAY,OAARod,EAAIE,GAAsB,OAATF,EAAIG,GAAuB,MAATH,EAAII,EAC/C1d,EAAIG,GAAa,MAATmd,EAAIE,EAAsB,OAARF,EAAIG,EAAqB,MAARH,EAAII,EAC/C1d,EAAII,EAAY,MAARkd,EAAIE,GAAsB,KAATF,EAAIG,EAAsB,MAARH,EAAII,EAE3C1d,EAAIE,EAAI,SACRF,EAAIE,EAAI,MAASyC,KAAK4a,IAAIvd,EAAIE,EAAG,WAAe,KAGhDF,EAAIE,EAAI,MAAQF,EAAIE,EAGpBF,EAAIG,EAAI,SACRH,EAAIG,EAAI,MAASwC,KAAK4a,IAAIvd,EAAIG,EAAG,WAAe,KAGhDH,EAAIG,EAAI,MAAQH,EAAIG,EAGpBH,EAAII,EAAI,SACRJ,EAAII,EAAI,MAASuC,KAAK4a,IAAIvd,EAAII,EAAG,WAAe,KAGhDJ,EAAII,EAAI,MAAQJ,EAAII,EAGxBJ,EAAIE,EAAIyC,KAAKC,MAAc,IAAR5C,EAAIE,GACvBF,EAAIG,EAAIwC,KAAKC,MAAc,IAAR5C,EAAIG,GACvBH,EAAII,EAAIuC,KAAKC,MAAc,IAAR5C,EAAII,GAEhBJ,GAn8Cf,CAs8CG5U;ACx+CH,IAAIizB,YAAc,SAASC,GACvB,aAEA,IAAIjzB,EAAID,OACJmzB,EAAO7zB,KACP4zB,EAASA,EAAS,IACtBC,EAAKp2B,UAKLo2B,EAAKC,WAAa,SAASC,EAAYrxB,EAASsxB,EAAkBC,GAC9D,OAAOJ,EAAKK,MACRhyB,OAAQ0xB,EAAS,OAASG,EAC1BlzB,MACIiF,GAAMpD,GAEVyxB,gBAAiBH,EACjBI,cAAeH,KAIvBJ,EAAKQ,cAAgB,SAAUvuB,EAAIkuB,EAAkBC,GACjD,OAAOJ,EAAKK,MACRhyB,OAAQ0xB,EAAS,gBACjB/yB,MACIiF,GAAMA,GAEVquB,gBAAiBH,EACjBI,cAAeH,KAKvBJ,EAAKS,aAAe,SAASxuB,EAAIiuB,GAC7B,OAAOF,EAAKK,MACRhyB,OAAQ0xB,EAAS,eACjB/yB,MACIiF,GAAMA,EACNiuB,WAAcA,GAElBI,gBAAiB,SAAU12B,GACvB,OAAOA,MAMnBo2B,EAAKK,KAAO,SAAUK,GAClB,OAAO5zB,EAAEuzB,MACL/xB,IAAK9E,OAAOu2B,EAAS,YAAqB,QAC1CzkB,KAAM,OACNtO,MACIqB,OAAQqyB,EAAKryB,OACbsyB,SAAUn3B,OAAOu2B,EAAS,YAAwB,WAClD/yB,KAAM0zB,EAAK1zB,UAEf4zB,QAAS,SAAU5zB,GACf,IAAI6zB,EAAgBC,OAAOC,kBAAkB/zB,GAC7C,GAAG6zB,EAAcG,OAAO,CACpB,IAAIA,EAAUH,EAAcI,UAAU,GAAGD,OACzCN,EAAKQ,sBAAsBF,OAC1B,CACD,IAAIp3B,EAASe,KAAK0B,MAAMw0B,EAAcI,UAAU,GAAGj0B,MACnD0zB,EAAKJ,gBAAgB12B,KAG7BgF,MAAO,SAAU5B,GACb0zB,EAAKH,cAAcvzB;ACtEnC,IAAIm0B,aAEAC,UAAW,WACP,IAAIC,EAAU,aAKd,OAJ4C,GAAxCC,UAAUC,WAAWjhB,QAAQ,SAAc+gB,EAAU,YACb,GAAxCC,UAAUC,WAAWjhB,QAAQ,SAAc+gB,EAAU,UACb,GAAxCC,UAAUC,WAAWjhB,QAAQ,SAAc+gB,EAAU,SACX,GAA1CC,UAAUC,WAAWjhB,QAAQ,WAAgB+gB,EAAU,SACpDA,GAIXG,SAAU,SAAUC,GAEhB,IAAK,IADDC,KACK/3B,EAAI,EAAGA,EAAI83B,EAAI33B,SAAUH,EACR,iBAAX83B,EAAI93B,GACX+3B,EAAG/3B,GAAKw3B,YAAYK,SAASC,EAAI93B,IAEjC+3B,EAAG/3B,GAAK83B,EAAI93B,GAGpB,OAAO+3B,GAIXC,yBAA0B,SAAUC,EAAO53B,EAAKI,GAC5C,IAAIR,GAAS,EAMb,OALAiD,OAAOsC,KAAKyyB,EAAO,SAAS7kB,EAAO+B,GAC5BA,EAAK0C,eAAexX,IAAQ8U,EAAK9U,IAAQI,IACxCR,GAAS,KAGVA,GAIXi4B,WAAY,SAAU5d,GAKlB,QAJAA,EAAMmC,SAASnC,EAAK,MACL,GACPA,GAAO,EAAI,IACL,IAANA,IAKZ6d,UAAW,SAAUC,GAEjB,OADAA,EAAM,GAAGA,GACFC,SAAS,MAAQD,EAAIC,SAAS,MAC1BD,EAEEA,EAAI72B,QAAQ,WAAY,IACrB,MAIpB+2B,aAAc,SAAUF,GACpB,OAAO3b,SAAS2b,EAAI72B,QAAQ,OAAQ,MAGxCg3B,SAAU,SAAU5lB,GAChB,IAAI1S,KACAD,EAAI,EASR,OARAkO,EAAE1I,KAAKmN,EAAK,SAAUlS,EAAOJ,EAAKmV,GAE1BvV,EAAOD,GADS,iBAAVS,EACM+2B,YAAYe,SAAS93B,GAErBJ,EAEhBL,MAEGC,GAGXu4B,kBAAmB,SAAUC,EAAQC,GACjC,IAAIz4B,EAaJ,OAZAiO,EAAEvH,KAAK+xB,EAAU,SAASj4B,EAAOJ,GAC7B,GAAoB,iBAAVI,EAGN,OAAIA,IAAUg4B,IACVx4B,EAASI,GACF,GAJXJ,EAASu3B,YAAYgB,kBAAkBC,EAAQh4B,KAUhDR,GAGX04B,oBAAqB,SAAUF,EAAQC,GACnC,IAAIE,EAAOpB,YAAYe,SAASG,GAC5Br4B,EAAMm3B,YAAYgB,kBAAkBC,EAAQC,GAGhD,OAFalB,YAAYgB,kBAAkBn4B,EAAKu4B,IAKpDz0B,YAAa,SAAUsB,EAAIozB,GACvB31B,OAAOuC,GAAItB,YAAa,SAAUiP,EAAOnH,GACrC,IAAI6sB,EAAQ,IAAItP,OAAO,UAAYqP,EAAa,OAAQ,KACxD,OAAQ5sB,EAAIkR,MAAO2b,QAAc/2B,KAAK,SAMlDT,OAAOmR,UAAUsmB,YAAc,SAASpyB,EAAMpF,GAC1C,OAAOiB,KAAKjB,QAAQ,IAAIioB,OAAO7iB,EAAM,KAAMpF,IAI/CD,OAAOmR,UAAUumB,WAAa,WAC1B,OAAOx2B,KAAKF,OAAO,GAAG22B,cAAgBz2B,KAAKH,MAAM,IAIrDf,OAAOmR,UAAU4lB,SAAW,SAASlvB,GACjC,OAAwD,IAAjD3G,KAAKmU,QAAQxN,EAAK3G,KAAKrC,OAASgJ,EAAIhJ,SAW/C,IAAIgD,EAAID,OAERC,EAAEyM,GAAG+E,UAAY,SAAU7L,GACvB,IACIowB,EADmC/1B,EAAd,cAAX2F,EAA2BA,EAAYjJ,QACnBwG,YAElC,OADclD,EAAEX,MAAM+D,UAEP2yB;CCnInB,SAAW/1B,GAEPA,EAAEyM,GAAGupB,WAAa,SAAU/vB,GAExB,IAAIgwB,EAAS,SAAUxpB,EAAIypB,GACvB,OAAO,WACH,OAAOzpB,EAAG9M,MAAMu2B,EAAIn5B,aAIxB8pB,GACAsP,OAAS,UAAU,OAAO,gBAAgB,WAAW,OAAO,QAAQ,UAAU,aAAa,kBAAkB,UAAU,SAAS,UAAU,OAAO,WAAW,cAAc,gBAAgB,mBAAmB,aAAa,gBAAgB,QAAQ,QAAQ,gBAAgB,QAAQ,UAAU,kBAAkB,SAAS,WAAW,mBAAmB,cAAc,WAAW,WAAW,YAAY,YAAY,QAAQ,QAAQ,UAAU,SAAS,SAAS,SAAS,2BAA2B,gBAAgB,QAAQ,eAAe,aAAa,QAAQ,SAAS,UAAU,eAAe,sBAAsB,gBAAgB,iBAAiB,QAAQ,WAAW,SAAS,WAAW,OAAO,OAAO,OAAO,OAAO,QAAQ,UAAU,OAAO,aAAa,SAAS,YAAY,aAAa,UAAU,eAAe,sBAAsB,eAAe,oBAAoB,qBAAqB,aAAa,YAAY,UAAU,QAAQ,aAAa,UAAU,QAAQ,WAAW,UAAU,YAAY,UAAU,kBAAkB,QAAQ,gBAAgB,cAAc,QAAQ,mBAAmB,UAAU,SAAS,gBAAgB,QAAQ,SAAS,WAAW,aAAa,gBAAgB,UAAU,aAAa,iBAAiB,cAAc,OAAO,UAAU,aAAa,iBAAiB,QAAQ,kBAAkB,eAAe,kBAAkB,aAAa,iBAAiB,SAAS,QAAQ,SAAS,YAAY,cAAc,cAAc,WAAW,QAAQ,QAAQ,iBAAiB,oBAAoB,aAAa,YAAY,SAAS,SAAS,eAAe,qBAAqB,cAAc,aAAa,SAAS,qBAAqB,YAAY,iBAAiB,SAAS,oBAAoB,eAAe,QAAQ,SAAS,QAAQ,WAAW,SAAS,oBAAoB,iBAAiB,OAAO,eAAe,WAAW,QAAQ,YAAY,cAAc,cAAc,YAAY,UAAU,eAAe,cAAc,SAAS,QAAQ,SAAS,YAAY,UAAU,WAAW,wBAAwB,eAAe,YAAY,cAAc,eAAe,gBAAgB,UAAU,SAAS,SAAS,cAAc,SAAS,iBAAiB,UAAU,uBAAuB,WAAW,QAAQ,SAAS,oBAAoB,iBAAiB,gBAAgB,WAAW,aAAa,WAAW,gBAAgB,YAAY,eAAe,SAAS,cAAc,aAAa,QAAQ,QAAQ,cAAc,aAAa,kBAAkB,cAAc,YAAY,YAAY,cAAc,aAAa,QAAQ,YAAY,QAAQ,WAAW,cAAc,QAAQ,mBAAmB,cAAc,eAAe,aAAa,YAAY,YAAY,YAAY,UAAU,kBAAkB,QAAQ,MAAM,QAAQ,gBAAgB,eAAe,YAAY,mBAAmB,aAAa,WAAW,YAAY,WAAW,SAAS,SAAS,QAAQ,eAAe,YAAY,YAAY,aAAa,YAAY,WAAW,UAAU,aAAa,mBAAmB,QAAQ,eAAe,eAAe,uBAAuB,cAAc,WAAW,SAAS,UAAU,UAAU,YAAY,YAAY,kBAAkB,WAAW,SAAS,WAAW,UAAU,gBAAgB,qBAAqB,MAAM,UAAU,eAAe,eAAe,SAAS,gBAAgB,iBAAiB,gBAAgB,SAAS,oBAAoB,aAAa,aAAa,WAAW,wBAAwB,WAAW,cAAc,eAAe,cAAc,SAAS,SAAS,QAAQ,WAAW,SAAS,SAAS,kBAAkB,UAAU,eAAe,UAAU,UAAU,eAAe,eAAe,cAAc,uBAAuB,OAAO,gBAAgB,gBAAgB,kBAAkB,iBAAiB,WAAW,kBAAkB,qBAAqB,sBAAsB,yBAAyB,kBAAkB,qBAAqB,uBAAuB,0BAA0B,uBAAuB,0BAA0B,UAAU,UAAU,UAAU,cAAc,QAAQ,eAAe,QAAQ,iBAAiB,eAAe,YAAY,WAAW,YAAY,OAAO,mBAAmB,0BAA0B,QAAQ,iBAAiB,aAAa,eAAe,eAAe,eAAe,WAAW,SAAS,QAAQ,kBAAkB,QAAQ,OAAO,oBAAoB,0BAA0B,QAAQ,QAAQ,UAAU,QAAQ,YAAY,QAAQ,QAAQ,iBAAiB,SAAS,aAAa,aAAa,aAAa,QAAQ,QAAQ,QAAQ,QAAQ,WAAW,UAAU,YAAY,SAAS,SAAS,QAAQ,SAAS,YAAY,SAAS,kBAAkB,QAAQ,cAAc,WAAW,SAAS,OAAO,gBAAgB,eAAe,SAAS,SAAS,QAAQ,oBAAoB,cAAc,aAAa,kBAAkB,YAAY,cAAc,UAAU,cAAc,mBAAmB,kBAAkB,kBAAkB,iBAAiB,OAAO,wBAAwB,oBAAoB,iBAAiB,eAAe,WAAW,UAAU,UAAU,qBAAqB,QAAQ,gBAAgB,OAAO,WAAW,UAAU,YAAY,eAAe,eAAe,YAAY,YAAY,WAAW,SAAS,cAAc,SAAS,OAAO,UAAU,YAAY,UAAU,SAAS,gBAAgB,aAAa,SAAS,cAAc,WAAW,eAAe,eAAe,oBAAoB,QAAQ,cAAc,eAAe,cAAc,WAAW,UAAU,YAAY,mBAAmB,UAAU,iBAAiB,QAAQ,iBAAiB,UAAU,QAAQ,QAAQ,WAAW,UAAU,uBAAuB,UAAU,SAAS,aAAa,wBAAwB,uBAAuB,OAAO,WAAW,yBAAyB,gBAAgB,aAAa,WAAW,iBAAiB,sBAAsB,gBAAgB,OAAO,gBAAgB,MAAM,SAAS,SAAS,aAAa,aAAa,UAAU,YAAY,SAAS,SAAS,UAAU,UAAU,uBAAuB,eAAe,YAAY,aAAa,WAAW,YAAY,YAAY,YAAY,aAAa,cAAc,YAAY,cAAc,SAAS,SAAS,iBAAiB,UAAU,kBAAkB,YAAY,cAAc,yBAAyB,YAAY,sBAAsB,cAAc,WAAW,UAAU,UAAU,kBAAkB,SAAS,mBAAmB,WAAW,cAAc,MAAM,SAAS,cAAc,UAAU,UAAU,kBAAkB,iBAAiB,WAAW,mBAAmB,WAAW,YAAY,iBAAiB,UAAU,aAAa,cAAc,cAAc,qBAAqB,eAAe,kBAAkB,YAAY,cAAc,UAAU,UAAU,mBAAmB,sBAAsB,UAAU,cAAc,SAAS,gBAAgB,aAAa,UAAU,OAAO,WAAW,mBAAmB,sBAAsB,UAAU,aAAa,aAAa,OAAO,WAAW,eAAe,UAAU,mBAAmB,mBAAmB,iBAAiB,QAAQ,cAAc,iBAAiB,iBAAiB,WAAW,aAAa,UAAU,eAAe,SAAS,WAAW,eAAe,oBAAoB,YAAY,YAAY,iBAAiB,UAAU,kBAAkB,SAAS,WAAW,UAAU,eAAe,aAAa,WAAW,SAAS,eAAe,WAAW,SAAS,QAAQ,YAAY,eAAe,YAAY,gBAAgB,UAAU,gBAAgB,SAAS,gBAAgB,YAAY,SAAS,SAAS,mBAAmB,cAAc,cAAc,YAAY,YAAY,UAAU,YAAY,YAAY,UAAU,WAAW,eAAe,YAAY,QAAQ,iBAAiB,YAAY,OAAO,SAAS,cAAc,SAAS,aAAa,iBAAiB,YAAY,SAAS,MAAM,aAAa,UAAU,OAAO,QAAQ,UAAU,WAAW,cAAc,SAAS,SAAS,WAAW,UAAU,QAAQ,eAAe,aAAa,iBAAiB,YAAY,cAAc,qBAAqB,yBAAyB,SAAS,QAAQ,aAAa,kBAAkB,YAAY,cAAc,WAAW,aAAa,UAAU,mBAAmB,YAAY,UAAU,gBAAgB,WAAW,UAAU,aAAa,aAAa,UAAU,SAAS,SAAS,UAAU,UAAU,gBAAgB,aAAa,QAAQ,aAAa,mBAAmB,kBAAkB,kBAAkB,mBAAmB,gBAAgB,aAAa,YAAY,SAAS,aAAa,uBAAuB,YAAY,gBAAgB,kBAAkB,wBAAwB,uBAAuB,QAAQ,SAAS,sBAAsB,SAAS,YAAY,mBAAmB,OAAO,UAAU,YAAY,cAAc,qBAAqB,YAAY,YAAY,SAAS,QAAQ,OAAO,QAAQ,qBAAqB,aAAa,cAAc,qBAAqB,SAAS,UAAU,UAAU,QAAQ,YAAY,gBAAgB,cAAc,UAAU,UAAU,UAAU,aAAa,SAAS,mBAAmB,cAAc,QAAQ,iBAAiB,WAAW,YAAY,iBAAiB,qBAAqB,UAAU,SAAS,OAAO,QAAQ,cAAc,SAAS,eAAe,cAAc,eAAe,QAAQ,WAAW,OAAO,QAAQ,UAAU,WAAW,WAAW,0BAA0B,WAAW,kBAAkB,SAAS,YAAY,YAAY,WAAW,YAAY,oBAAoB,cAAc,aAAa,aAAa,aAAa,UAC9pSC,MAAO,QACPnG,MAAO,cACPoG,YAAa,gBACbC,UAAW,EACXj5B,IAAK,sCAGLk5B,EAAa,WAEb,SAASA,EAAWC,EAAUzQ,GAC1B1mB,KAAKo3B,UAAYz2B,EAAEw2B,GACnBn3B,KAAK4G,QAAU8f,EACf1mB,KAAKq3B,QAAS,EACdr3B,KAAKs3B,YACLt3B,KAAKu3B,kBACLv3B,KAAKw3B,aAEL,IAAIC,EAAOz3B,KAAKo3B,UAAUp2B,MACtBy2B,GAAQA,IAASz3B,KAAK4G,QAAQmwB,QAC9B/2B,KAAK03B,iBACL13B,KAAK23B,YAAYF,IAgJzB,OA5IAP,EAAWjnB,UAAUunB,WAAa,WAE9B72B,EAAE,KAAMX,KAAK43B,UACRzvB,MAAMyuB,EAAO52B,KAAK63B,WAAY73B,OAC9B83B,WAAWlB,EAAO52B,KAAK+3B,aAAc/3B,OACrCg4B,WAAWpB,EAAO52B,KAAKi4B,eAAgBj4B,OAE5CW,EAAE,OAAQX,KAAKiL,SAAS9C,MAAMyuB,EAAO52B,KAAKk4B,WAAYl4B,OACtDA,KAAKm4B,OAAOhwB,MAAMyuB,EAAO52B,KAAKk4B,WAAYl4B,QAG9Ck3B,EAAWjnB,UAAUioB,WAAa,SAAU/L,GACpCnsB,KAAKq3B,QACLr3B,KAAKovB,SAASztB,YAAY,sBAC1B3B,KAAKo4B,MAAMx2B,OACXy2B,cAAcr4B,KAAKs4B,mBAEnBt4B,KAAKovB,SAASvtB,SAAS,sBACvB7B,KAAKo4B,MAAMz1B,OACX3C,KAAKu4B,iBACLv4B,KAAKs4B,gBAAkBE,YAAY5B,EAAO52B,KAAKu3B,gBAAiBv3B,MAAO,MAG3EA,KAAKq3B,QAAUr3B,KAAKq3B,QAGxBH,EAAWjnB,UAAU4nB,WAAa,WAC9B,IAAIJ,EAAO92B,EAAE,YAAaX,KAAK43B,UAAU/2B,KAAK,SAC9Cb,KAAKo3B,UAAUp2B,IAAIy2B,GAAM/wB,SACzB1G,KAAK03B,iBACL13B,KAAKk4B,cAGThB,EAAWjnB,UAAUsoB,eAAiB,WAClC,IAAIE,EAAKhB,EAAOz3B,KAAKo3B,UAAUp2B,MAG3By3B,EADAhB,EACM92B,EAAE,kBAAoB82B,EAAO,KAAMz3B,KAAK43B,UAExCj3B,EAAE,KAAMX,KAAK43B,UAAUltB,QAEjC1K,KAAK43B,SAAS/zB,UAAU,GAAGA,UAAU40B,EAAI52B,SAAS,UAAU6tB,WAAWlmB,MAG3E0tB,EAAWjnB,UAAU8nB,aAAe,SAAU5L,GAC1CxrB,EAAE,YAAaX,KAAK43B,UAAUj2B,YAAY,UAC1ChB,EAAEwrB,EAAGuM,eAAe72B,SAAS,WAGjCq1B,EAAWjnB,UAAUgoB,eAAiB,SAAU9L,GAE5CxrB,EAAEwrB,EAAGuM,eAAe/2B,YAAY,WAGpCu1B,EAAWjnB,UAAUynB,eAAiB,WAClC,IAAID,EAAOz3B,KAAKo3B,UAAUp2B,MACtBA,EAAMhB,KAAK24B,WAAWlB,IAASz3B,KAAK4G,QAAQmwB,MAAQ/2B,KAAK4G,QAAQowB,YAAch3B,KAAK24B,WAAWlB,GACnG92B,EAAE,OAAQX,KAAKovB,UAAU5qB,KAAKxD,GAAKyI,KAC/BmvB,cAAe,SAEfnB,IAASz3B,KAAK4G,QAAQmwB,QACtB/2B,KAAK23B,YAAYF,GACjB92B,EAAE,OAAQX,KAAKovB,UAAU3lB,IAAIzJ,KAAK64B,QAAQpB,MAIlDP,EAAWjnB,UAAUqnB,UAAY,WAC7Bt3B,KAAKo3B,UAAUL,QAAQn1B,OACvB5B,KAAKovB,SAAWzuB,EAAE,SAAUm4B,MAAS94B,KAAK4G,QAAQgqB,QAClD5wB,KAAKm4B,OAASx3B,EAAE,sBAChBX,KAAKiL,QAAUtK,EAAE,YAAcX,KAAK4G,QAAQowB,YAAc,eAC1Dh3B,KAAKo4B,MAAQz3B,EAAE,SAAUm4B,MAAS,YAClC94B,KAAK43B,SAAWj3B,EAAE,QAASm4B,MAAS,eACpC94B,KAAKo3B,UAAU5wB,OAAOxG,KAAKovB,SAAS7oB,OAAOvG,KAAKiL,QAAQ1E,OAAOvG,KAAKm4B,SAAS5xB,OAAOvG,KAAKo4B,QACzFp4B,KAAKo4B,MAAM7xB,OAAOvG,KAAK43B,SAASrxB,OAAOvG,KAAK+4B,gBAAgBn3B,QAGhEs1B,EAAWjnB,UAAU8oB,YAAc,WAE/B,IACIvjB,EADAuB,EAAI/W,KAAK4G,QAAQkwB,MAAMn5B,OACjB8Y,EAAI,GAEdA,GAAK,mBAAqBzW,KAAK4G,QAAQmwB,MAAQ,KAAO/2B,KAAK4G,QAAQowB,YAAc,QACjF,IAAK,IAAIx5B,EAAI,EAAGA,EAAIuZ,EAAGvZ,IACnBgY,EAAIxV,KAAK24B,WAAW34B,KAAK4G,QAAQkwB,MAAMt5B,IAGvCiZ,GAAK,mBAAqBzW,KAAK4G,QAAQkwB,MAAMt5B,GAAK,KAAOgY,EAAI,QAGjE,OAAOiB,GAGXygB,EAAWjnB,UAAU0oB,WAAa,SAAUlB,GACxC,OAAOA,EAAK14B,QAAQ,UAAW,MAGnCm4B,EAAWjnB,UAAU4oB,QAAU,SAAUpB,GACrC,IAAIv0B,EAAIu0B,EAAKh4B,MAAM,KACnB,OAAQm5B,cAAe54B,KAAK24B,WAAWz1B,EAAE,IAAK81B,cAAgB91B,EAAE,IAAM,MAG1Eg0B,EAAWjnB,UAAUsnB,gBAAkB,WAEnC,IAAIv3B,KAAK43B,SAASz0B,GAAG,WAArB,CAGUnD,KAAK43B,SAAS/zB,YACL7D,KAAK43B,SAAS7zB,SAE7B/D,KAAK4G,QAAQqwB,WACJt2B,EAAE,KAAMX,KAAK43B,UAAUltB,QAAQ3G,SACzB/D,KAAK4G,QAAQqwB,YAkBpCC,EAAWjnB,UAAU0nB,YAAc,SAAUF,GACzC,IAAIwB,EAAOj5B,KAAK4G,QAAQ5I,IAAMy5B,EAEiB,IAA3C92B,EAAE,eAAiB82B,EAAO,MAAM95B,QAChCgD,EAAE,aAAakF,MAAM,eAAiBozB,EAAO,uCAGjDt4B,EAAGzB,UAAW0D,QAAS,qBAAuB60B,EAAMwB,KAGjD/B,EA7JM,GAgKjB,OAAOl3B,KAAKgD,KAAK,WAGb,OADI4D,GAASjG,EAAEpD,OAAOiqB,EAAU5gB,GACzB,IAAIswB,EAAWl3B,KAAMwnB,MAtLxC,CA0LG9mB","file":"admin.min.js","sourcesContent":["/*!\n * JavaScript Cookie v2.0.4\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n /*var _OldCookies = window.Cookies;\n var api = window.Cookies = factory();\n api.noConflict = function () {\n window.Cookies = _OldCookies;\n return api;\n };*/\n window.FF_Cookie = factory();\n }\n}(function () {\n function extend () {\n var i = 0;\n var result = {};\n for (; i < arguments.length; i++) {\n var attributes = arguments[ i ];\n for (var key in attributes) {\n result[key] = attributes[key];\n }\n }\n return result;\n }\n\n function init (converter) {\n function api (key, value, attributes) {\n var result;\n\n // Write\n\n if (arguments.length > 1) {\n attributes = extend({\n path: '/'\n }, api.defaults, attributes);\n\n if (typeof attributes.expires === 'number') {\n var expires = new Date();\n expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\n attributes.expires = expires;\n }\n\n try {\n result = JSON.stringify(value);\n if (/^[\\{\\[]/.test(result)) {\n value = result;\n }\n } catch (e) {}\n\n if (!converter.write) {\n value = encodeURIComponent(String(value))\n .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n } else {\n value = converter.write(value, key);\n }\n\n key = encodeURIComponent(String(key));\n key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);\n key = key.replace(/[\\(\\)]/g, escape);\n\n return (document.cookie = [\n key, '=', value,\n attributes.expires && '; expires=' + attributes.expires.toUTCString(), // use expires attribute, max-age is not supported by IE\n attributes.path && '; path=' + attributes.path,\n attributes.domain && '; domain=' + attributes.domain,\n attributes.secure ? '; secure' : ''\n ].join(''));\n }\n\n // Read\n\n if (!key) {\n result = {};\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all. Also prevents odd result when\n // calling \"get()\"\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var rdecode = /(%[0-9A-Z]{2})+/g;\n var i = 0;\n\n for (; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var name = parts[0].replace(rdecode, decodeURIComponent);\n var cookie = parts.slice(1).join('=');\n\n if (cookie.charAt(0) === '\"') {\n cookie = cookie.slice(1, -1);\n }\n\n try {\n cookie = converter.read ?\n converter.read(cookie, name) : converter(cookie, name) ||\n cookie.replace(rdecode, decodeURIComponent);\n\n if (this.json) {\n try {\n cookie = JSON.parse(cookie);\n } catch (e) {}\n }\n\n if (key === name) {\n result = cookie;\n break;\n }\n\n if (!key) {\n result[name] = cookie;\n }\n } catch (e) {}\n }\n\n return result;\n }\n\n api.get = api.set = api;\n api.getJSON = function () {\n return api.apply({\n json: true\n }, [].slice.call(arguments));\n };\n api.defaults = {};\n\n api.remove = function (key, attributes) {\n api(key, '', extend(attributes, {\n expires: -1\n }));\n };\n\n api.withConverter = init;\n\n return api;\n }\n\n return init(function () {});\n}));\n\njQuery(function ($) {\n\n var $win = $(window);\n var $body = $('body');\n\n // DOM manipulations\n\n $('#sf_font').after($('#sf_uppercase_chooser')).after($('#sf_font_weight_chooser')).after($('#sf_alignment_chooser')).after($('#sf_font_size'))\n\n $('#sf_c_font').after($('#sf_c_trans_chooser')).after($('#sf_c_weight_chooser')).after($('#sf_c_fs'));\n\n $('#sf_c_fs').after('<span class=\"units\" style=\"top:-16px\">px</span><br>');\n $('#sf_font_size').after('<span class=\"units\" style=\"top:-16px\">px</span><br>');\n\n $('.sf_font').find('p:empty').remove();\n $('.sf_c_font').find('p:empty').remove();\n\n $('.switcher').each(function () {\n $(this).after('<div><div></div></div>')\n })\n\n $('.postbox select').each(function () {\n var id = this.id\n $(this).wrap('<div class=\"select-wrapper\" id=\"' + id + '-wrapper\"></div>')\n })\n\n $('[id*=sf_width_panel_]').each(function () {\n var ind = this.id.replace('sf_width_panel_', '');\n var cl = $('#sf_color_panel_' + ind);\n var scl = $('#sf_scolor_panel_' + ind);\n var bg = $('#sf_bg_color_panel_' + ind);\n var cc = $('#sf_chapter_' + ind);\n var hover = $('#sf_hover_panel_' + ind);\n $(this).parent().append(bg).append(cl).append(scl).append(cc).append(hover);\n bg.before('<span>Background</span>');\n cl.before('<span>Text</span>');\n scl.before('<span>Second line</span>');\n hover.before('<span>Hover color</span>');\n cc.before('<span>Section</span>');\n })\n\n // adding export / import button\n var html = '<div class=\"settings-form-row sf_export\"><p class=\"field-title \">EXPORT / IMPORT DESIGN SETTINGS</p><h6>Please notice that import action cannot be reverted. Export doesn\\'t include WP menus or any images, icons from this site</h6><p><a class=\"button-ui\" href=\"/wp-admin/admin-post.php?action=sf_export_settings&data=admin_only\">Export</a> <a href=\"#\" class=\"button-ui\" id=\"sf-import-btn\">Import</a> <input type=\"file\" id=\"sf_files\" accept=\".json,application/json\"></p></div>';\n\n $('.sf_css').prepend( $( html ) );\n\n // SUBSCRIPTION CHECK\n\n var subCookie = window.FF_Cookie.get('sfm_sub');\n\n if ( subCookie ) {\n\n } else {\n if ( $('#sf_license_subscribe').prop('checked') ) {\n\n var $licenseCont = $('#sf_license');\n var fname = $('#sf_license_fname', $licenseCont).val();\n var lname = $('#sf_license_lname', $licenseCont).val();\n var email = $('#sf_license_email', $licenseCont).val();\n\n var data = {\n action: 'subscribe',\n email: email,\n fname: fname,\n lname: lname\n }\n\n var url = 'https://looks-awesome.com/proxy/superfly-mailchimp.php';\n\n $.post(url, data, function (response) {});\n\n window.FF_Cookie.set('sfm_sub', 'attempted', { expires: 356 });\n }\n }\n\n // Events\n\n $('#sf_sidebar_style').change(function () {\n var val = $(this).val();\n var $w = $(this).closest('.settings-form-row');\n\n $w.find('[data-notice]').hide().end().find('[data-notice=' + val + ']').show();\n if (val === 'static') {\n $('.sf_iconbar').show()\n } else {\n $('.sf_iconbar').hide()\n }\n\n if (val === 'full') {\n $('.sf_fade_content').hide();\n $('.sf_fade_full').show();\n } else {\n $('.sf_fade_content').show();\n $('.sf_fade_full').hide();\n }\n }).change();\n\n var initEmail = $('#sf_license #sf_license_email').val();\n var initCode = $('#sf_license #sf_license_code').val();\n\n function validateLicense() {\n var $licenseCont = $('#sf_license');\n var activated = $('#sf_license_valid', $licenseCont).val();\n var fname = $('#sf_license_fname', $licenseCont).val();\n var lname = $('#sf_license_lname', $licenseCont).val();\n var email = $('#sf_license_email', $licenseCont).val();\n var subscribe = $('#sf_license_subscribe', $licenseCont).prop('checked');\n var code = $('#sf_license_code', $licenseCont).length > 0 ? $('#sf_license_code', $licenseCont).val() : '';\n var isX = $('#sf_license_code', $licenseCont).data('x');\n var licenseValid = true;\n var dfd = $.Deferred();\n var data;\n\n $('#sf_license_email', $licenseCont).removeClass('validation-error');\n $('#sf_license_code', $licenseCont).removeClass('validation-error');\n $('.purchase-code .code-error', $licenseCont).hide();\n\n /*if(fname !== '' || lname !== ''){\n licenseValid = false;\n\n if(email === ''){\n $('#sf_license_email', $licenseCont).addClass('validation-error');\n }\n\n if(code === ''){\n $('#sf_license_code', $licenseCont).addClass('validation-error');\n }\n }*/\n\n\n if(email == '' && code != '' && !isX){\n $('#sf_license_email', $licenseCont).addClass('validation-error');\n licenseValid = false;\n }\n\n /*if(email == '' && isX){\n $('#sf_license_email', $licenseCont).addClass('validation-error');\n licenseValid = false;\n }*/\n\n if (activated && email == initEmail && code == initCode) {\n dfd.resolve(activated);\n return dfd.promise();\n }\n\n if (email != '') {\n if (!/^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$/.test(email)) {\n $('#sf_license_email', $licenseCont).addClass('validation-error');\n licenseValid = false;\n } else {\n if($('#sf_license_code', $licenseCont).length === 0){\n\n }\n data = {\n action: 'always',\n email: email,\n fname: fname,\n lname: lname\n };\n var url = 'https://looks-awesome.com/proxy/superfly-mailchimp.php';\n\n // Subscribe to list (anyway)\n $.post(url, data, function (response) {});\n if (subscribe) {\n data.action = 'subscribe';\n // Subscribe to public list (only if checkbox selected)\n $.post(url, data, function (response) {});\n }\n }\n }\n\n if (code != '') {\n var regexTest = /^[a-z0-9]+\\-[a-z0-9]+\\-[a-z0-9]+\\-[a-z0-9]+\\-[a-z0-9]+$/.test(code);\n\n if (!regexTest) {\n $('#sf_license_code', $licenseCont).addClass('validation-error');\n licenseValid = regexTest;\n dfd.resolve(licenseValid);\n $('#for_sf_license').trigger('click');\n } else {\n data = {\n action: 'sf_validate_envato_license',\n code: code\n };\n\n $.post(laim_localize.ajaxurl, data, function (response) {\n if (response == -1) {\n licenseValid = false;\n } else {\n if (response.error || response.item_id !== \"8012790\") {\n licenseValid = false;\n $('#sf_license_code', $licenseCont).addClass('validation-error');\n $('.purchase-code .code-error', $licenseCont).show();\n $('#for_sf_license').trigger('click');\n } else {\n $('#sf_license_valid', $licenseCont).val('1');\n }\n }\n dfd.resolve(licenseValid);\n });\n }\n } else {\n dfd.resolve(licenseValid);\n }\n\n return dfd.promise();\n }\n\n $('#sf_license_code').on('input', function (e, options) {\n $('#sf_license_valid').val('');\n $(this).removeClass('validation-success');\n });\n\n $('#sf_license_email').on('input', function (e, options) {\n //$('#sf_license_valid').val('');\n });\n\n $('#sf_license_subscribe').on('change', function (e, options) {\n //$('#sf_license_valid').val('');\n });\n\n $('#sf-options-wrap form').on('submit', function (e, options) {\n options = options || {};\n\n if (!options.flag) {\n e.preventDefault();\n }\n\n var $form = $(this);\n var p = $('.sf_display');\n var current = p.find('.loc_popup')\n var hidden = p.find('input:hidden');\n var user = current.find('select[id*=user_status]').val();\n var rule = current.find('select[id*=display_rule]').val();\n var desktop = current.find('select[id*=display_desktop]').val();\n var mobile = current.find('select[id*=display_mobile]').val();\n var ids = current.find('[id*=display_ids]').val();\n\n var resulted = {\n 'user': {\n 'everyone': user === 'everyone' ? 1 : 0,\n 'loggedin': user === 'loggedin' ? 1 : 0,\n 'loggedout': user === 'loggedout' ? 1 : 0\n },\n 'desktop': {\n 'yes': desktop === 'yes' ? 1 : 0,\n 'no': desktop === 'no' ? 1 : 0\n },\n 'mobile': {\n 'yes': mobile === 'yes' ? 1 : 0,\n 'no': mobile === 'no' ? 1 : 0\n },\n\n 'rule': {\n // 'include': rule === 'include' ? 1 : 0,\n // 'exclude': rule === 'exclude' ? 1 : 0\n 'include': 0,\n 'exclude': 1\n },\n 'location': {\n 'pages': traversePages(current.find('input[id*=display_page]')),\n 'cposts': traversePages(current.find('input[id*=display_cpost]')),\n 'cats': traversePages(current.find('input[id*=display_cat]')),\n 'taxes': {},\n 'langs': traversePages(current.find('input[id*=display_lang]')),\n 'wp_pages': traversePages(current.find('input[id*=display_wp_page]')),\n 'ids': ids.split(',')\n }\n };\n hidden.val(JSON.stringify(resulted));\n showLoadingView();\n\n if (!options.flag) {\n validateLicense().done(function (data) {\n if (data) {\n showLoadingView();\n $form.trigger('submit', {flag: true});\n } else {\n hideLoadingView();\n e.preventDefault();\n }\n });\n }\n });\n \n \n // import \n \n $( '#sf-import-btn' ).click( function () {\n var $inp = $( '#sf_files' )\n $inp.click();\n })\n\n $( '#sf_files' ).change( function () {\n var file;\n var reader = new FileReader();\n\n if ( !this.files ) {\n alert( 'Sorry your browser does not support files API' );\n return;\n }\n if ( !this.files[0] ) {\n alert( 'No file selected' );\n return;\n }\n\n file = this.files[0];\n\n reader.onload = (function ( file ) {\n return function (e) {\n var json;\n\n try {\n json = JSON.parse( e.target.result) ;\n } catch ( er ) {\n alert('ex when trying to parse json = ' + er);\n }\n\n console.log( json );\n\n if ( confirm('Are you sure you want to apply imported settings? This action cannot be reverted')) {\n $.post( '/wp-admin/admin-post.php', {\n action: 'sf_import_settings',\n data: json,\n dataType: 'json'\n }).done( function ( data ) {\n console.log( data );\n location.reload( );\n }).fail( function () {\n alert( \"request error\" );\n })\n }\n }\n })( file );\n\n reader.readAsText( file );\n\n })\n\n\n function traversePages(pages) {\n var res = {};\n\n pages.each(function (i, el) {\n var t = $(el);\n var val = t.val();\n if (t.is(':checked')) res[val] = 1;\n });\n\n return res\n }\n\n function showLoadingView() {\n $('#fade-overlay').addClass('loading');\n }\n\n function hideLoadingView() {\n $('#fade-overlay').removeClass('loading');\n }\n\n\n function isScrolledIntoView($elem, elemTop, elemBottom, rule) {\n var docViewTop = $win.scrollTop();\n var docViewBottom = docViewTop + $win.height();\n\n return rule === 'after' ? docViewBottom > elemBottom + 50 : (elemBottom <= docViewBottom && elemTop >= docViewTop - 25) || (elemBottom > docViewBottom && elemTop < docViewTop - 25);\n }\n\n var state = 'in';\n var $tabs = $('#tabs-copy');\n var $subtabs = $('#sf_appearance_tabs');\n var $or = $('#tabs');\n var $form = $('#sf-options-wrap form')\n\n $win.scroll(function () {\n\n var elemTop = $tabs.offset().top;\n var elemBottom = elemTop + $tabs.height();\n if (isScrolledIntoView($tabs, elemTop, elemBottom, 'in')) {\n if (state !== 'in') {\n state = 'in';\n $or.removeClass('transition-in');\n //setTimeout(function () {\n $body.removeClass('fixed-nav');\n $or.css({'width': '', left: ''});\n //}, 50)\n }\n } else {\n if (state !== 'out') {\n state = 'out';\n $body.addClass('fixed-nav');\n $or.css({'width': $tabs.width(), left: $form.offset().left});\n $subtabs.css({'width': $tabs.width(), left: $form.offset().left});\n //setTimeout(function () {\n $or.addClass('transition-in');\n //}, 100)\n }\n }\n\n });\n\n $win.resize(function () {\n if ($body.is('.fixed-nav')) {\n $or.css({'width': $tabs.width(), left: $form.offset().left})\n }\n })\n\n $or.find('li').not('#save-tab').click(function () {\n $('html,body').animate({\n scrollTop: 0\n }, 300);\n });\n\n $subtabs.click(function () {\n $('html,body').animate({\n scrollTop: 0\n }, 300);\n });\n\n $('#save-tab').click(function () {\n $(this).closest('form').submit();\n })\n\n $('#form-tab').click(function () {\n\n })\n\n var file_frame, attachment, $input;\n\n $('.sf-choose-image').click(function () {\n var $t = $(this);\n $input = $t.parents('.settings-form-row').eq(0).find('input');\n if (file_frame) {\n file_frame.open();\n return;\n }\n\n // Create the media frame.\n file_frame = wp.media.frames.file_frame = wp.media({\n multiple: false // Set to true to allow multiple files to be selected\n });\n\n // When an image is selected, run a callback.\n file_frame.on('select', function () {\n // We set multiple to false so only get one image from the uploader\n\n attachment = file_frame.state().get('selection').first().toJSON();\n $('.image-preview').html('<img src=\"' + attachment.url + '\"/>');\n if (!$('.sf-remove-image').length) $t.parent().after(\"<div><span class='sf-remove-image'>Remove Image</span></div>\");\n $input.val(attachment.sizes.full.url);\n $input.closest('form').submit()\n// $currBtn = null;\n });\n\n // Finally, open the modal\n file_frame.open();\n })\n\n $(document).on('click', '.sf-remove-image', function () {\n var $t = $(this);\n $input = $t.parents('.settings-form-row').eq(0).find('input');\n $input.val('');\n $(this).closest('form').submit()\n })\n\n\n // multiple menus\n\n var $select = $('#sf-menu__select-wrapper ');\n var $popup, $locPopup, $clone, $def;\n var $storageInput = $('.sf_active_menu input');\n var $list = $('.sf-menu__list');\n\n // dom\n $select.wrap('<div class=\"sf-menu__select_popup\"></div>');\n $popup = $('.sf-menu__select_popup');\n $popup.append('<span class=\"sf-menu__btn sf-menu__btn__ok\"><i class=\"flaticon-plus\"></i></span><span class=\"sf-menu__btn sf-menu__btn__close\"><i class=\"flaticon-cross\"></i></span>');\n\n $clone = $('.loc_popup > div').clone();\n\n $clone.find('.rule_lang').remove();\n\n $clone.find('[id]').each(function () {\n var id = $(this).attr('id');\n $(this).attr('id', id + '_popup')\n });\n $clone.find('[for]').each(function () {\n var _for = $(this).attr('for');\n $(this).attr('for', _for + '_popup')\n });\n\n $clone.addClass('sf-menu__loc_popup').prepend('\\\n <div class=\"sf-menu__def_wrapper\"><p>Mark pages of your website to display this menu.</p>\\\n <p>\\\n <input class=\"checkbox\" type=\"checkbox\" value=\"yes\" id=\"display_default_menu_popup\" name=\"display_default_menu\">\\\n <label for=\"display_default_menu_popup\">Display everywhere by default. / General display rules may overwrite this setting</label>\\\n </p>\\\n </div>\\\n ');\n\n $('.dw_pages_wrap', $clone).prepend('\\\n <div><span class=\"sf-menu__loc_btn_check_all\">Check All</span> <span class=\"sf-menu__loc_btn_check_none\">Uncheck All</span></div>\\\n ')\n\n $clone.addClass('sf-menu__loc_popup').append('<span class=\"sf-menu__loc_btn_save\">Save</span> <span class=\"sf-menu__loc_btn_close\">Close</span>')\n\n $popup.after($clone);\n\n $(document).on('click', '.sf-menu__loc_btn_check_all', function () {\n $('.sf-menu__loc_popup input[type=\"checkbox\"][name!=\"display_default_menu\"]').prop('checked', true);\n });\n $(document).on('click', '.sf-menu__loc_btn_check_none', function () {\n $('.sf-menu__loc_popup input[type=\"checkbox\"][name!=\"display_default_menu\"]').prop('checked', false);\n });\n $(document).on('change', '[name=\"display_default_menu\"]', function (e) {\n $('.sf-menu__loc_popup .dw_pages_wrap').show();\n if($(this).prop('checked'))\n $('.sf-menu__loc_popup .dw_pages_wrap').hide();\n });\n\n\n $locPopup = $('.sf-menu__loc_popup');\n $def = $locPopup.find('#display_default_menu_popup');\n\n //$locPopup.find('#display_ids_popup').parent().hide();\n\n $list.find('.sf-menu__item').each(function () {\n var $t = $(this);\n var id = $t.data('id');\n var location;\n var curr = window.sf_menus[id];\n if (curr) {\n location = curr['loc'];\n $t.data('location', location);\n $t.data('isDef', curr['isDef']);\n }\n })\n\n $('.sf-menu__add').click(function () {\n $(this).closest('.sf_active_menu').addClass('sf_active_menu--selecting');\n })\n\n $('.sf-menu__btn__ok').click(function () {\n var val = $select.find('select').val();\n var $selected = $select.find(':selected');\n\n var $item;\n console.log(val);\n\n // check if added\n if ($list.find('[data-id=' + val + ']').length) {\n alert('Already added!');\n return;\n }\n\n $item = $('<li class=\"sf-menu__item\" data-id=\"' + val + '\">' + $selected.text() + '<i class=\"flaticon-cross\"></i></li>');\n $list.append($item);\n\n\n updateMenuMap();\n\n if ($list.find('.sf-menu__item').length === 1) { // single item\n openLocPopup($item);\n $locPopup.find(':checkbox').prop('checked', true)\n $locPopup.find('.sf-menu__loc_btn_save').click();\n closeLocPopup({target: null}, true);\n return;\n }\n $(this).closest('form').submit()\n\n\n })\n\n $('.sf-menu__btn__close').click(function () {\n $(this).closest('.sf_active_menu').removeClass('sf_active_menu--selecting');\n })\n\n $list.on('click', '.sf-menu__item', function (e) {\n var $t = $(e.target);\n var $form = $t.closest('form');\n\n if ($t.is('.flaticon-cross')) {\n $t.closest('.sf-menu__item').remove();\n updateMenuMap();\n $form.closest('form').submit();\n return;\n }\n\n console.log('open loc popup');\n openLocPopup($t.closest('.sf-menu__item'))\n })\n\n $locPopup.on('click', '.sf-menu__loc_btn_save', function () {\n var current = $locPopup;\n var ids = current.find('[id*=display_ids]').val();\n var $item = $locPopup.data('currentItem');\n\n var location = {\n 'pages': traversePages(current.find('input[id*=display_page]')),\n 'cposts': traversePages(current.find('input[id*=display_cpost]')),\n 'cats': traversePages(current.find('input[id*=display_cat]')),\n 'taxes': {},\n 'langs': traversePages(current.find('input[id*=display_lang]')),\n 'wp_pages': traversePages(current.find('input[id*=display_wp_page]')),\n 'ids': ids.split(',')\n };\n\n $item.data('location', location);\n $item.data('isDef', $def.is(':checked'));\n\n updateMenuMap();\n\n current.closest('form').submit()\n\n });\n\n $def.on('change', function (e) {\n var $curr;\n\n // check if already default is set\n $list.find('.sf-menu__item').each(function () {\n var $t = $(this);\n if ($t.data('isDef')) {\n $curr = $t;\n }\n });\n\n if ($curr && $curr.data('id') != $locPopup.data('currentItem').data('id')) {\n $def.attr('checked', false);\n alert('You already have default menu. Please edit this menu before and uncheck this property.');\n return false;\n }\n })\n\n $locPopup.on('click', '.sf-menu__loc_btn_close', closeLocPopup)\n\n function updateMenuMap() {\n var $items = $list.find('.sf-menu__item');\n var map = {};\n $items.each(function () {\n var $t = $(this);\n var locationData = $t.data('location') || {};\n\n map[$t.data('id')] = {\n term_id: $t.data('id'),\n name: $.trim($t.text()),\n loc: locationData,\n isDef: $t.data('isDef')\n }\n })\n $storageInput.val(JSON.stringify(map));\n }\n\n function openLocPopup($item) {\n // attempt to retrieve date\n var locationData = $item.data('location');\n $locPopup.data('currentItem', $item);\n\n // reset\n $locPopup.find(':checked').prop('checked', false)\n $locPopup.find(':text').val('');\n\n if (locationData) {\n populatePopup(locationData, $item);\n }\n\n $def.prop('checked', $item.data('isDef'))\n if($item.data('isDef')){\n $('.dw_pages_wrap', $locPopup).hide();\n }else{\n $('.dw_pages_wrap', $locPopup).show();\n }\n\n setTimeout(function () {\n $body.on('click', closeLocPopup)\n }, 0)\n\n\n $item.closest('.sf_active_menu').addClass('sf_active_menu--editing')\n }\n\n function closeLocPopup(e, force) {\n var $t = $(e.target);\n if (!$t.closest($locPopup).length || $t.is('.sf-menu__loc_btn_close') || force) {\n $('.sf_active_menu').removeClass('sf_active_menu--editing');\n $body.off('click', closeLocPopup)\n }\n }\n\n function populatePopup(location, current) {\n var prop, cat;\n\n for ( prop in location ) {\n cat = location[ prop ];\n for ( var name in cat ) {\n $locPopup.find('#display_' + prop.replace(/s$/, '') + '_' + name + '_popup').prop('checked', location[prop]);\n }\n }\n\n if ( location.ids ) $locPopup.find('#display_ids_popup').val(location.ids.join(','));\n }\n\n $body.addClass('page-loaded');\n\n})","// Backbone.Stickit v0.9.2, MIT Licensed\n// Copyright (c) 2012-2015 The New York Times, CMS Group, Matthew DeLambo <delambo@gmail.com>\n\n(function (factory) {\n\n // Set up Stickit appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd)\n define(['underscore', 'backbone', 'exports'], factory);\n\n // Next for Node.js or CommonJS.\n else if (typeof exports === 'object')\n factory(require('underscore'), require('backbone'), exports);\n\n // Finally, as a browser global.\n else\n factory(_, Backbone, {});\n\n}(function (_, Backbone, Stickit) {\n\n // Stickit Namespace\n // --------------------------\n\n // Export onto Backbone object\n Backbone.Stickit = Stickit;\n\n Stickit._handlers = [];\n\n Stickit.addHandler = function(handlers) {\n // Fill-in default values.\n handlers = _.map(_.flatten([handlers]), function(handler) {\n return _.defaults({}, handler, {\n updateModel: true,\n updateView: true,\n updateMethod: 'text'\n });\n });\n this._handlers = this._handlers.concat(handlers);\n };\n\n // Backbone.View Mixins\n // --------------------\n\n Stickit.ViewMixin = {\n\n // Collection of model event bindings.\n // [{model,event,fn,config}, ...]\n _modelBindings: null,\n\n // Unbind the model and event bindings from `this._modelBindings` and\n // `this.$el`. If the optional `model` parameter is defined, then only\n // delete bindings for the given `model` and its corresponding view events.\n unstickit: function(model, bindingSelector) {\n\n // Support passing a bindings hash in place of bindingSelector.\n if (_.isObject(bindingSelector)) {\n _.each(bindingSelector, function(v, selector) {\n this.unstickit(model, selector);\n }, this);\n return;\n }\n\n var models = [], destroyFns = [];\n this._modelBindings = _.reject(this._modelBindings, function(binding) {\n if (model && binding.model !== model) return;\n if (bindingSelector && binding.config.selector != bindingSelector) return;\n\n binding.model.off(binding.event, binding.fn);\n destroyFns.push(binding.config._destroy);\n models.push(binding.model);\n return true;\n });\n\n // Trigger an event for each model that was unbound.\n _.invoke(_.uniq(models), 'trigger', 'stickit:unstuck', this.cid);\n\n // Call `_destroy` on a unique list of the binding callbacks.\n _.each(_.uniq(destroyFns), function(fn) { fn.call(this); }, this);\n\n this.$el.off('.stickit' + (model ? '.' + model.cid : ''), bindingSelector);\n },\n\n // Initilize Stickit bindings for the view. Subsequent binding additions\n // can either call `stickit` with the new bindings, or add them directly\n // with `addBinding`. Both arguments to `stickit` are optional.\n stickit: function(optionalModel, optionalBindingsConfig) {\n var model = optionalModel || this.model,\n bindings = optionalBindingsConfig || _.result(this, \"bindings\") || {};\n\n this._modelBindings || (this._modelBindings = []);\n\n // Add bindings in bulk using `addBinding`.\n this.addBinding(model, bindings);\n\n // Wrap `view.remove` to unbind stickit model and dom events.\n var remove = this.remove;\n if (!remove.stickitWrapped) {\n this.remove = function() {\n var ret = this;\n this.unstickit();\n if (remove) ret = remove.apply(this, arguments);\n return ret;\n };\n }\n this.remove.stickitWrapped = true;\n return this;\n },\n\n // Add a single Stickit binding or a hash of bindings to the model. If\n // `optionalModel` is ommitted, will default to the view's `model` property.\n addBinding: function(optionalModel, selector, binding) {\n var model = optionalModel || this.model,\n namespace = '.stickit.' + model.cid;\n\n binding = binding || {};\n\n // Support jQuery-style {key: val} event maps.\n if (_.isObject(selector)) {\n var bindings = selector;\n _.each(bindings, function(val, key) {\n this.addBinding(model, key, val);\n }, this);\n return;\n }\n\n // Special case the ':el' selector to use the view's this.$el.\n var $el = selector === ':el' ? this.$el : this.$(selector);\n\n // Clear any previous matching bindings.\n this.unstickit(model, selector);\n\n // Fail fast if the selector didn't match an element.\n if (!$el.length) return;\n\n // Allow shorthand setting of model attributes - `'selector':'observe'`.\n if (_.isString(binding)) binding = {observe: binding};\n\n // Handle case where `observe` is in the form of a function.\n if (_.isFunction(binding.observe)) binding.observe = binding.observe.call(this);\n\n // Find all matching Stickit handlers that could apply to this element\n // and store in a config object.\n var config = getConfiguration($el, binding);\n\n // The attribute we're observing in our config.\n var modelAttr = config.observe;\n\n // Store needed properties for later.\n config.selector = selector;\n config.view = this;\n\n // Create the model set options with a unique `bindId` so that we\n // can avoid double-binding in the `change:attribute` event handler.\n var bindId = config.bindId = _.uniqueId();\n\n // Add a reference to the view for handlers of stickitChange events\n var options = _.extend({stickitChange: config}, config.setOptions);\n\n // Add a `_destroy` callback to the configuration, in case `destroy`\n // is a named function and we need a unique function when unsticking.\n config._destroy = function() {\n applyViewFn.call(this, config.destroy, $el, model, config);\n };\n\n initializeAttributes($el, config, model, modelAttr);\n initializeVisible($el, config, model, modelAttr);\n initializeClasses($el, config, model, modelAttr);\n\n if (modelAttr) {\n // Setup one-way (input element -> model) bindings.\n _.each(config.events, function(type) {\n var eventName = type + namespace;\n var listener = function(event) {\n var val = applyViewFn.call(this, config.getVal, $el, event, config, slice.call(arguments, 1));\n\n // Don't update the model if false is returned from the `updateModel` configuration.\n var currentVal = evaluateBoolean(config.updateModel, val, event, config);\n if (currentVal) setAttr(model, modelAttr, val, options, config);\n };\n var sel = selector === ':el'? '' : selector;\n this.$el.on(eventName, sel, _.bind(listener, this));\n }, this);\n\n // Setup a `change:modelAttr` observer to keep the view element in sync.\n // `modelAttr` may be an array of attributes or a single string value.\n _.each(_.flatten([modelAttr]), function(attr) {\n observeModelEvent(model, 'change:' + attr, config, function(m, val, options) {\n var changeId = options && options.stickitChange && options.stickitChange.bindId;\n if (changeId !== bindId) {\n var currentVal = getAttr(model, modelAttr, config);\n updateViewBindEl($el, config, currentVal, model);\n }\n });\n });\n\n var currentVal = getAttr(model, modelAttr, config);\n updateViewBindEl($el, config, currentVal, model, true);\n }\n\n // After each binding is setup, call the `initialize` callback.\n applyViewFn.call(this, config.initialize, $el, model, config);\n }\n };\n\n _.extend(Backbone.View.prototype, Stickit.ViewMixin);\n\n // Helpers\n // -------\n\n var slice = [].slice;\n\n // Evaluates the given `path` (in object/dot-notation) relative to the given\n // `obj`. If the path is null/undefined, then the given `obj` is returned.\n var evaluatePath = function(obj, path) {\n var parts = (path || '').split('.');\n var result = _.reduce(parts, function(memo, i) { return memo[i]; }, obj);\n return result == null ? obj : result;\n };\n\n // If the given `fn` is a string, then view[fn] is called, otherwise it is\n // a function that should be executed.\n var applyViewFn = function(fn) {\n fn = _.isString(fn) ? evaluatePath(this, fn) : fn;\n if (fn) return (fn).apply(this, slice.call(arguments, 1));\n };\n\n // Given a function, string (view function reference), or a boolean\n // value, returns the truthy result. Any other types evaluate as false.\n // The first argument must be `reference` and the last must be `config`, but\n // middle arguments can be variadic.\n var evaluateBoolean = function(reference, val, config) {\n if (_.isBoolean(reference)) {\n return reference;\n } else if (_.isFunction(reference) || _.isString(reference)) {\n var view = _.last(arguments).view;\n return applyViewFn.apply(view, arguments);\n }\n return false;\n };\n\n // Setup a model event binding with the given function, and track the event\n // in the view's _modelBindings.\n var observeModelEvent = function(model, event, config, fn) {\n var view = config.view;\n model.on(event, fn, view);\n view._modelBindings.push({model:model, event:event, fn:fn, config:config});\n };\n\n // Prepares the given `val`ue and sets it into the `model`.\n var setAttr = function(model, attr, val, options, config) {\n var value = {}, view = config.view;\n if (config.onSet) {\n val = applyViewFn.call(view, config.onSet, val, config);\n }\n\n if (config.set) {\n applyViewFn.call(view, config.set, attr, val, options, config);\n } else {\n value[attr] = val;\n // If `observe` is defined as an array and `onSet` returned\n // an array, then map attributes to their values.\n if (_.isArray(attr) && _.isArray(val)) {\n value = _.reduce(attr, function(memo, attribute, index) {\n memo[attribute] = _.has(val, index) ? val[index] : null;\n return memo;\n }, {});\n }\n model.set(value, options);\n }\n };\n\n // Returns the given `attr`'s value from the `model`, escaping and\n // formatting if necessary. If `attr` is an array, then an array of\n // respective values will be returned.\n var getAttr = function(model, attr, config) {\n var view = config.view;\n var retrieveVal = function(field) {\n return model[config.escape ? 'escape' : 'get'](field);\n };\n var sanitizeVal = function(val) {\n return val == null ? '' : val;\n };\n var val = _.isArray(attr) ? _.map(attr, retrieveVal) : retrieveVal(attr);\n if (config.onGet) val = applyViewFn.call(view, config.onGet, val, config);\n return _.isArray(val) ? _.map(val, sanitizeVal) : sanitizeVal(val);\n };\n\n // Find handlers in `Backbone.Stickit._handlers` with selectors that match\n // `$el` and generate a configuration by mixing them in the order that they\n // were found with the given `binding`.\n var getConfiguration = Stickit.getConfiguration = function($el, binding) {\n var handlers = [{\n updateModel: false,\n updateMethod: 'text',\n update: function($el, val, m, opts) { if ($el[opts.updateMethod]) $el[opts.updateMethod](val); },\n getVal: function($el, e, opts) { return $el[opts.updateMethod](); }\n }];\n handlers = handlers.concat(_.filter(Stickit._handlers, function(handler) {\n return $el.is(handler.selector);\n }));\n handlers.push(binding);\n\n // Merge handlers into a single config object. Last props in wins.\n var config = _.extend.apply(_, handlers);\n\n // `updateView` is defaulted to false for configutrations with\n // `visible`; otherwise, `updateView` is defaulted to true.\n if (!_.has(config, 'updateView')) config.updateView = !config.visible;\n return config;\n };\n\n // Setup the attributes configuration - a list that maps an attribute or\n // property `name`, to an `observe`d model attribute, using an optional\n // `onGet` formatter.\n //\n // attributes: [{\n // name: 'attributeOrPropertyName',\n // observe: 'modelAttrName'\n // onGet: function(modelAttrVal, modelAttrName) { ... }\n // }, ...]\n //\n var initializeAttributes = function($el, config, model, modelAttr) {\n var props = ['autofocus', 'autoplay', 'async', 'checked', 'controls',\n 'defer', 'disabled', 'hidden', 'indeterminate', 'loop', 'multiple',\n 'open', 'readonly', 'required', 'scoped', 'selected'];\n\n var view = config.view;\n\n _.each(config.attributes || [], function(attrConfig) {\n attrConfig = _.clone(attrConfig);\n attrConfig.view = view;\n\n var lastClass = '';\n var observed = attrConfig.observe || (attrConfig.observe = modelAttr);\n var updateAttr = function() {\n var updateType = _.contains(props, attrConfig.name) ? 'prop' : 'attr',\n val = getAttr(model, observed, attrConfig);\n\n // If it is a class then we need to remove the last value and add the new.\n if (attrConfig.name === 'class') {\n $el.removeClass(lastClass).addClass(val);\n lastClass = val;\n } else {\n $el[updateType](attrConfig.name, val);\n }\n };\n\n _.each(_.flatten([observed]), function(attr) {\n observeModelEvent(model, 'change:' + attr, config, updateAttr);\n });\n\n // Initialize the matched element's state.\n updateAttr();\n });\n };\n\n var initializeClasses = function($el, config, model, modelAttr) {\n _.each(config.classes || [], function(classConfig, name) {\n if (_.isString(classConfig)) classConfig = {observe: classConfig};\n classConfig.view = config.view;\n\n var observed = classConfig.observe;\n var updateClass = function() {\n var val = getAttr(model, observed, classConfig);\n $el.toggleClass(name, !!val);\n };\n\n _.each(_.flatten([observed]), function(attr) {\n observeModelEvent(model, 'change:' + attr, config, updateClass);\n });\n updateClass();\n });\n };\n\n // If `visible` is configured, then the view element will be shown/hidden\n // based on the truthiness of the modelattr's value or the result of the\n // given callback. If a `visibleFn` is also supplied, then that callback\n // will be executed to manually handle showing/hiding the view element.\n //\n // observe: 'isRight',\n // visible: true, // or function(val, options) {}\n // visibleFn: function($el, isVisible, options) {} // optional handler\n //\n var initializeVisible = function($el, config, model, modelAttr) {\n if (config.visible == null) return;\n var view = config.view;\n\n var visibleCb = function() {\n var visible = config.visible,\n visibleFn = config.visibleFn,\n val = getAttr(model, modelAttr, config),\n isVisible = !!val;\n\n // If `visible` is a function then it should return a boolean result to show/hide.\n if (_.isFunction(visible) || _.isString(visible)) {\n isVisible = !!applyViewFn.call(view, visible, val, config);\n }\n\n // Either use the custom `visibleFn`, if provided, or execute the standard show/hide.\n if (visibleFn) {\n applyViewFn.call(view, visibleFn, $el, isVisible, config);\n } else {\n $el.toggle(isVisible);\n }\n };\n\n _.each(_.flatten([modelAttr]), function(attr) {\n observeModelEvent(model, 'change:' + attr, config, visibleCb);\n });\n\n visibleCb();\n };\n\n // Update the value of `$el` using the given configuration and trigger the\n // `afterUpdate` callback. This action may be blocked by `config.updateView`.\n //\n // update: function($el, val, model, options) {}, // handler for updating\n // updateView: true, // defaults to true\n // afterUpdate: function($el, val, options) {} // optional callback\n //\n var updateViewBindEl = function($el, config, val, model, isInitializing) {\n var view = config.view;\n if (!evaluateBoolean(config.updateView, val, config)) return;\n applyViewFn.call(view, config.update, $el, val, model, config);\n if (!isInitializing) applyViewFn.call(view, config.afterUpdate, $el, val, config);\n };\n\n // Default Handlers\n // ----------------\n\n Stickit.addHandler([{\n selector: '[contenteditable]',\n updateMethod: 'html',\n events: ['input', 'change']\n }, {\n selector: 'input',\n events: ['propertychange', 'input', 'change'],\n update: function($el, val) { $el.val(val); },\n getVal: function($el) {\n return $el.val();\n }\n }, {\n selector: 'textarea',\n events: ['propertychange', 'input', 'change'],\n update: function($el, val) { $el.val(val); },\n getVal: function($el) { return $el.val(); }\n }, {\n selector: 'input[type=\"radio\"]',\n events: ['change'],\n update: function($el, val) {\n $el.filter('[value=\"'+val+'\"]').prop('checked', true);\n },\n getVal: function($el) {\n return $el.filter(':checked').val();\n }\n }, {\n selector: 'input[type=\"checkbox\"]',\n events: ['change'],\n update: function($el, val, model, options) {\n if ($el.length > 1) {\n // There are multiple checkboxes so we need to go through them and check\n // any that have value attributes that match what's in the array of `val`s.\n val || (val = []);\n $el.each(function(i, el) {\n var checkbox = Backbone.$(el);\n var checkboxVal = checkbox.val();\n var checked = _.some(val, function(item) { return ''+item === checkboxVal; });\n checkbox.prop('checked', checked);\n });\n } else {\n var checked = _.isBoolean(val) ? val : ''+val === $el.val();\n $el.prop('checked', checked);\n }\n },\n getVal: function($el) {\n var val;\n if ($el.length > 1) {\n val = _.reduce($el, function(memo, el) {\n var checkbox = Backbone.$(el);\n if (checkbox.prop('checked')) memo.push(checkbox.val());\n return memo;\n }, []);\n } else {\n val = $el.prop('checked');\n // If the checkbox has a value attribute defined, then\n // use that value. Most browsers use \"on\" as a default.\n var boxval = $el.val();\n if (boxval !== 'on' && boxval != null) {\n val = val ? $el.val() : null;\n }\n }\n return val;\n }\n }, {\n selector: 'select',\n events: ['change'],\n update: function($el, val, model, options) {\n var optList,\n selectConfig = options.selectOptions,\n list = selectConfig && selectConfig.collection || undefined,\n isMultiple = $el.prop('multiple');\n\n // If there are no `selectOptions` then we assume that the `<select>`\n // is pre-rendered and that we need to generate the collection.\n if (!selectConfig) {\n selectConfig = {};\n var getList = function($el) {\n return $el.map(function(index, option) {\n // Retrieve the text and value of the option, preferring \"stickit-bind-val\"\n // data attribute over value property.\n var dataVal = Backbone.$(option).data('stickit-bind-val');\n return {\n value: dataVal !== undefined ? dataVal : option.value,\n label: option.text\n };\n }).get();\n };\n if ($el.find('optgroup').length) {\n list = {opt_labels:[]};\n // Search for options without optgroup\n if ($el.find('> option').length) {\n list.opt_labels.push(undefined);\n _.each($el.find('> option'), function(el) {\n list[undefined] = getList(Backbone.$(el));\n });\n }\n _.each($el.find('optgroup'), function(el) {\n var label = Backbone.$(el).attr('label');\n list.opt_labels.push(label);\n list[label] = getList(Backbone.$(el).find('option'));\n });\n } else {\n list = getList($el.find('option'));\n }\n }\n\n // Fill in default label and path values.\n selectConfig.valuePath = selectConfig.valuePath || 'value';\n selectConfig.labelPath = selectConfig.labelPath || 'label';\n selectConfig.disabledPath = selectConfig.disabledPath || 'disabled';\n\n var addSelectOptions = function(optList, $el, fieldVal) {\n _.each(optList, function(obj) {\n var option = Backbone.$('<option/>'), optionVal = obj;\n\n var fillOption = function(text, val, disabled) {\n option.text(text);\n optionVal = val;\n // Save the option value as data so that we can reference it later.\n option.data('stickit-bind-val', optionVal);\n if (!_.isArray(optionVal) && !_.isObject(optionVal)) option.val(optionVal);\n\n if (disabled === true) option.prop('disabled', 'disabled');\n };\n\n var text, val, disabled;\n if (obj === '__default__') {\n text = fieldVal.label,\n val = fieldVal.value,\n disabled = fieldVal.disabled;\n } else {\n text = evaluatePath(obj, selectConfig.labelPath),\n val = evaluatePath(obj, selectConfig.valuePath),\n disabled = evaluatePath(obj, selectConfig.disabledPath);\n }\n fillOption(text, val, disabled);\n\n // Determine if this option is selected.\n var isSelected = function() {\n if (!isMultiple && optionVal != null && fieldVal != null && optionVal === fieldVal) {\n return true;\n } else if (_.isObject(fieldVal) && _.isEqual(optionVal, fieldVal)) {\n return true;\n }\n return false;\n };\n\n if (isSelected()) {\n option.prop('selected', true);\n } else if (isMultiple && _.isArray(fieldVal)) {\n _.each(fieldVal, function(val) {\n if (_.isObject(val)) val = evaluatePath(val, selectConfig.valuePath);\n if (val === optionVal || (_.isObject(val) && _.isEqual(optionVal, val)))\n option.prop('selected', true);\n });\n }\n\n $el.append(option);\n });\n };\n\n $el.find('*').remove();\n\n // The `list` configuration is a function that returns the options list or a string\n // which represents the path to the list relative to `window` or the view/`this`.\n if (_.isString(list)) {\n var context = window;\n if (list.indexOf('this.') === 0) context = this;\n list = list.replace(/^[a-z]*\\.(.+)$/, '$1');\n optList = evaluatePath(context, list);\n } else if (_.isFunction(list)) {\n optList = applyViewFn.call(this, list, $el, options);\n } else {\n optList = list;\n }\n\n // Support Backbone.Collection and deserialize.\n if (optList instanceof Backbone.Collection) {\n var collection = optList;\n var refreshSelectOptions = function() {\n var currentVal = getAttr(model, options.observe, options);\n applyViewFn.call(this, options.update, $el, currentVal, model, options);\n };\n // We need to call this function after unstickit and after an update so we don't end up\n // with multiple listeners doing the same thing\n var removeCollectionListeners = function() {\n collection.off('add remove reset sort', refreshSelectOptions);\n };\n var removeAllListeners = function() {\n removeCollectionListeners();\n collection.off('stickit:selectRefresh');\n collection.off('stickit:selectRefreshForView');\n model.off('stickit:selectRefresh');\n };\n collection.trigger('stickit:selectRefreshForView', this.cid);\n // Compare the view cid on the event to this.cid to ensure we don't\n // remove events from the collection that are tied to other views.\n collection.once('stickit:selectRefreshForView', function(viewCid) {\n if(this.cid == viewCid){\n // Remove previously set event listeners by triggering a custom event\n collection.trigger('stickit:selectRefresh');\n }\n }, this);\n collection.once('stickit:selectRefresh', removeCollectionListeners, this);\n\n // Listen to the collection and trigger an update of the select options\n collection.on('add remove reset sort', refreshSelectOptions, this);\n\n // Remove the previous model event listener\n model.trigger('stickit:selectRefresh');\n model.once('stickit:selectRefresh', function() {\n model.off('stickit:unstuck', removeAllListeners);\n });\n // Remove collection event listeners once this binding is unstuck\n model.once('stickit:unstuck', removeAllListeners, this);\n optList = optList.toJSON();\n }\n\n if (selectConfig.defaultOption) {\n var option = _.isFunction(selectConfig.defaultOption) ?\n selectConfig.defaultOption.call(this, $el, options) :\n selectConfig.defaultOption;\n addSelectOptions([\"__default__\"], $el, option);\n }\n\n if (_.isArray(optList)) {\n addSelectOptions(optList, $el, val);\n } else if (optList.opt_labels) {\n // To define a select with optgroups, format selectOptions.collection as an object\n // with an 'opt_labels' property, as in the following:\n //\n // {\n // 'opt_labels': ['Looney Tunes', 'Three Stooges'],\n // 'Looney Tunes': [{id: 1, name: 'Bugs Bunny'}, {id: 2, name: 'Donald Duck'}],\n // 'Three Stooges': [{id: 3, name : 'moe'}, {id: 4, name : 'larry'}, {id: 5, name : 'curly'}]\n // }\n //\n _.each(optList.opt_labels, function(label) {\n var $group = Backbone.$('<optgroup/>').attr('label', label);\n addSelectOptions(optList[label], $group, val);\n $el.append($group);\n });\n // With no 'opt_labels' parameter, the object is assumed to be a simple value-label map.\n // Pass a selectOptions.comparator to override the default order of alphabetical by label.\n } else {\n var opts = [], opt;\n for (var i in optList) {\n opt = {};\n opt[selectConfig.valuePath] = i;\n opt[selectConfig.labelPath] = optList[i];\n opts.push(opt);\n }\n opts = _.sortBy(opts, selectConfig.comparator || selectConfig.labelPath);\n addSelectOptions(opts, $el, val);\n }\n },\n getVal: function($el) {\n var selected = $el.find('option:selected');\n\n if ($el.prop('multiple')) {\n return _.map(selected, function(el) {\n return Backbone.$(el).data('stickit-bind-val');\n });\n } else {\n return selected.data('stickit-bind-val');\n }\n }\n }]);\n\n return Stickit;\n\n}));\n","(function ($) {\n window.SuperflyView = Backbone.View.extend({\n bindings: function () { // bindings for input fields\n var result = {};\n\n result['[name*=\"sf_options[sf_active_menu]\"]'] = 'sf_active_menu';\n result['[name*=\"sf_options[sf_alternative_menu]\"]'] = 'sf_alternative_menu';\n result['[name*=\"sf_options[sf_test_mode]\"]'] = 'sf_test_mode';\n result['[name*=\"sf_options[sf_display]\"]'] = 'sf_display';\n\n result['[name*=\"sf_options[sf_sidebar_style]\"]'] = 'sf_sidebar_style';\n result['[name*=\"sf_options[sf_sidebar_behaviour]\"]'] = 'sf_sidebar_behaviour';\n result['[name*=\"sf_options[sf_sidebar_pos]\"]'] = 'sf_sidebar_pos';\n result['[name*=\"sf_options[sf_skew_type]\"]'] = 'sf_skew_type';\n result['[name*=\"sf_options[sf_fs_layout]\"]'] = 'sf_fs_layout';\n result['[name*=\"sf_options[sf_opening_type]\"]'] = 'sf_opening_type';\n result['[name*=\"sf_options[sf_sub_type]\"]'] = 'sf_sub_type';\n result['[name*=\"sf_options[sf_sub_opening_type]\"]'] = 'sf_sub_opening_type';\n result['[name*=\"sf_options[sf_fade_content]\"]'] = 'sf_fade_content';\n result['[name*=\"sf_options[sf_fade_full]\"]'] = 'sf_fade_full';\n result['[name*=\"sf_options[sf_full_sec]\"]'] = 'sf_full_sec';\n result['[name*=\"sf_options[sf_full_head]\"]'] = 'sf_full_head';\n result['[name*=\"sf_options[sf_full_x]\"]'] = 'sf_full_x';\n result['[name*=\"sf_options[sf_blur_content]\"]'] = 'sf_blur_content';\n result['[name*=\"sf_options[sf_transparent_panel]\"]'] = 'sf_transparent_panel';\n result['[name*=\"sf_options[sf_transition]\"]'] = 'sf_transition';\n\n result['[name*=\"sf_options[sf_width_panel_1]\"]'] = 'sf_width_panel_1';\n result['[name*=\"sf_options[sf_bg_color_panel_1]\"]'] = 'sf_bg_color_panel_1';\n result['[name*=\"sf_options[sf_color_panel_1]\"]'] = 'sf_color_panel_1';\n result['[name*=\"sf_options[sf_scolor_panel_1]\"]'] = 'sf_scolor_panel_1';\n result['[name*=\"sf_options[sf_hover_panel_1]\"]'] = 'sf_hover_panel_1';\n result['[name*=\"sf_options[sf_image_bg]\"]'] = 'sf_image_bg';\n result['[name*=\"sf_options[sf_width_panel_2]\"]'] = 'sf_width_panel_2';\n result['[name*=\"sf_options[sf_bg_color_panel_2]\"]'] = 'sf_bg_color_panel_2';\n result['[name*=\"sf_options[sf_color_panel_2]\"]'] = 'sf_color_panel_2';\n result['[name*=\"sf_options[sf_scolor_panel_2]\"]'] = 'sf_scolor_panel_2';\n result['[name*=\"sf_options[sf_hover_panel_2]\"]'] = 'sf_hover_panel_2';\n result['[name*=\"sf_options[sf_width_panel_3]\"]'] = 'sf_width_panel_3';\n result['[name*=\"sf_options[sf_bg_color_panel_3]\"]'] = 'sf_bg_color_panel_3';\n result['[name*=\"sf_options[sf_color_panel_3]\"]'] = 'sf_color_panel_3';\n result['[name*=\"sf_options[sf_scolor_panel_3]\"]'] = 'sf_scolor_panel_3';\n result['[name*=\"sf_options[sf_hover_panel_3]\"]'] = 'sf_hover_panel_3';\n result['[name*=\"sf_options[sf_width_panel_4]\"]'] = 'sf_width_panel_4';\n result['[name*=\"sf_options[sf_bg_color_panel_4]\"]'] = 'sf_bg_color_panel_4';\n result['[name*=\"sf_options[sf_color_panel_4]\"]'] = 'sf_color_panel_4';\n result['[name*=\"sf_options[sf_scolor_panel_4]\"]'] = 'sf_scolor_panel_4';\n result['[name*=\"sf_options[sf_hover_panel_4]\"]'] = 'sf_hover_panel_4';\n result['[name*=\"sf_options[sf_chapter_1]\"]'] = 'sf_chapter_1';\n result['[name*=\"sf_options[sf_chapter_2]\"]'] = 'sf_chapter_2';\n result['[name*=\"sf_options[sf_chapter_3]\"]'] = 'sf_chapter_3';\n result['[name*=\"sf_options[sf_chapter_4]\"]'] = 'sf_chapter_4';\n\n result['[name*=\"sf_options[sf_tab_logo]\"]'] = 'sf_tab_logo';\n result['[name*=\"sf_options[sf_logo_size]\"]'] = 'sf_logo_size';\n result['[name*=\"sf_options[sf_first_line]\"]'] = 'sf_first_line';\n result['[name*=\"sf_options[sf_sec_line]\"]'] = 'sf_sec_line';\n\n result['[name*=\"sf_options[sf_facebook]\"]'] = 'sf_facebook';\n result['[name*=\"sf_options[sf_dribbble]\"]'] = 'sf_dribbble';\n result['[name*=\"sf_options[sf_twitter]\"]'] = 'sf_twitter';\n result['[name*=\"sf_options[sf_youtube]\"]'] = 'sf_youtube';\n result['[name*=\"sf_options[sf_linkedin]\"]'] = 'sf_linkedin';\n result['[name*=\"sf_options[sf_vimeo]\"]'] = 'sf_vimeo';\n result['[name*=\"sf_options[sf_gplus]\"]'] = 'sf_gplus';\n result['[name*=\"sf_options[sf_soundcloud]\"]'] = 'sf_soundcloud';\n result['[name*=\"sf_options[sf_instagram]\"]'] = 'sf_instagram';\n result['[name*=\"sf_options[sf_email]\"]'] = 'sf_email';\n result['[name*=\"sf_options[sf_pinterest]\"]'] = 'sf_pinterest';\n result['[name*=\"sf_options[sf_skype]\"]'] = 'sf_skype';\n result['[name*=\"sf_options[sf_flickr]\"]'] = 'sf_flickr';\n result['[name*=\"sf_options[sf_rss]\"]'] = 'sf_rss';\n\n result['[name*=\"sf_options[sf_social_style]\"]'] = 'sf_social_style';\n result['[name*=\"sf_options[sf_social_color]\"]'] = 'sf_social_color';\n result['[name*=\"sf_options[sf_social_align]\"]'] = 'sf_social_align';\n\n result['[name*=\"sf_options[sf_search]\"]'] = 'sf_search';\n result['[name*=\"sf_options[sf_search_bg]\"]'] = 'sf_search_bg';\n result['[name*=\"sf_options[sf_copy]\"]'] = 'sf_copy';\n\n result['[name*=\"sf_options[sf_font]\"]'] = 'sf_font';\n result['[name*=\"sf_options[sf_font_size]\"]'] = 'sf_font_size';\n result['[name*=\"sf_options[sf_font_weight]\"]'] = 'sf_font_weight';\n result['[name*=\"sf_options[sf_alignment]\"]'] = 'sf_alignment';\n result['[name*=\"sf_options[sf_uppercase]\"]'] = 'sf_uppercase';\n result['[name*=\"sf_options[sf_spacing]\"]'] = 'sf_spacing';\n result['[name*=\"sf_options[sf_c_font]\"]'] = 'sf_c_font';\n result['[name*=\"sf_options[sf_c_fs]\"]'] = 'sf_c_fs';\n result['[name*=\"sf_options[sf_c_weight]\"]'] = 'sf_c_weight';\n result['[name*=\"sf_options[sf_c_trans]\"]'] = 'sf_c_trans';\n\n result['[name*=\"sf_options[sf_padding]\"]'] = 'sf_padding';\n result['[name*=\"sf_options[sf_padding_h]\"]'] = 'sf_padding_h';\n result['[name*=\"sf_options[sf_icon_size]\"]'] = 'sf_icon_size';\n result['[name*=\"sf_options[sf_icon_color]\"]'] = 'sf_icon_color';\n result['[name*=\"sf_options[sf_fs_dynamic]\"]'] = 'sf_fs_dynamic';\n result['[name*=\"sf_options[sf_ordered]\"]'] = 'sf_ordered';\n result['[name*=\"sf_options[sf_ind]\"]'] = 'sf_ind';\n result['[name*=\"sf_options[sf_ind_st]\"]'] = 'sf_ind_st';\n result['[name*=\"sf_options[sf_ind_s]\"]'] = 'sf_ind_s';\n result['[name*=\"sf_options[sf_separators]\"]'] = 'sf_separators';\n result['[name*=\"sf_options[sf_separators_color]\"]'] = 'sf_separators_color';\n result['[name*=\"sf_options[sf_separators_width]\"]'] = 'sf_separators_width';\n result['[name*=\"sf_options[sf_highlight]\"]'] = 'sf_highlight';\n result['[name*=\"sf_options[sf_hover_style]\"]'] = 'sf_hover_style';\n result['[name*=\"sf_options[sf_highlight_active]\"]'] = 'sf_highlight_active';\n\n result['[name*=\"sf_options[sf_label_vis]\"]'] = 'sf_label_vis';\n result['[name*=\"sf_options[sf_label_type]\"]'] = 'sf_label_type';\n result['[name*=\"sf_options[sf_fixed]\"]'] = 'sf_fixed';\n result['[name*=\"sf_options[sf_mob_nav]\"]'] = 'sf_mob_nav';\n result['[name*=\"sf_options[sf_threshold_point]\"]'] = 'sf_threshold_point';\n result['[name*=\"sf_options[sf_label_top]\"]'] = 'sf_label_top';\n result['[name*=\"sf_options[sf_label_top_mobile]\"]'] = 'sf_label_top_mobile';\n result['[name*=\"sf_options[sf_label_shift]\"]'] = 'sf_label_shift';\n\n result['[name*=\"sf_options[sf_label_icon]\"]'] = 'sf_label_icon';\n result['[name*=\"sf_options[sf_label_size]\"]'] = 'sf_label_size';\n result['[name*=\"sf_options[sf_label_style]\"]'] = 'sf_label_style';\n result['[name*=\"sf_options[sf_label_width]\"]'] = 'sf_label_width';\n result['[name*=\"sf_options[sf_label_gaps]\"]'] = 'sf_label_gaps';\n result['[name*=\"sf_options[sf_label_color]\"]'] = 'sf_label_color';\n result['[name*=\"sf_options[sf_label_icon_color]\"]'] = 'sf_label_icon_color';\n result['[name*=\"sf_options[sf_label_text]\"]'] = 'sf_label_text';\n result['[name*=\"sf_options[sf_label_text_color]\"]'] = 'sf_label_text_color';\n\n result['[name*=\"sf_options[sf_css]\"]'] = 'sf_css';\n result['[name*=\"sf_options[sf_submenu_support]\"]'] = 'sf_submenu_support';\n result['[name*=\"sf_options[sf_submenu_mob]\"]'] = 'sf_submenu_mob';\n result['[name*=\"sf_options[sf_submenu_classes]\"]'] = 'sf_submenu_classes';\n result['[name*=\"sf_options[sf_togglers]\"]'] = 'sf_togglers';\n result['[name*=\"sf_options[sf_dev]\"]'] = 'sf_dev';\n\n result['[name*=\"sf_options[sf_license_name]\"]'] = 'sf_license_name';\n result['[name*=\"sf_options[sf_license_email]\"]'] = 'sf_license_email';\n result['[name*=\"sf_options[sf_license_code]\"]'] = 'sf_license_code';\n\n result['[name*=\"display_default_menu\"]'] = 'display_default_menu';\n\n result[\n '.sf_label_type,\\\n .sf_fixed,\\\n .sf_mob_nav,\\\n .sf_threshold_point,\\\n .sf_label_top,\\\n .sf_label_top_mobile,\\\n .sf_label_shift,\\\n .sf_label_shift_m,\\\n .sf_label_icon,\\\n .sf_label_size,\\\n .sf_label_style,\\\n .sf_label_width,\\\n .sf_label_gaps,\\\n .sf_label_color,\\\n .sf_label_icon_color,\\\n .sf_label_text,\\\n .sf_label_text_color,\\\n h1#stylings'\n ] = {\n observe: 'sf_label_vis',\n update: function ($el, val, model, options) {\n $el.each(function (i, item) {\n $(item).hide();\n });\n if (val == 'yes') {\n $el.each(function (i, item) {\n $(item).show();\n });\n }\n }\n }\n\n result['.sf_sidebar_style'] = {\n observe: 'sf_sidebar_style',\n update: function ($el, val, model, options) {\n if (val == 'toolbar') model.set('sf_sidebar_behaviour', 'always');\n else if (val == 'full') {\n model.set('sf_sidebar_behaviour', 'slide');\n }\n }\n };\n\n result['.skew-disclaimer'] = {\n observe: 'sf_sidebar_style',\n update: function ($el, val, model, options) {\n $el.hide();\n if (val == 'skew') $el.show();\n }\n };\n result['.fs-disclaimer'] = {\n observe: 'sf_sidebar_style',\n update: function ($el, val, model, options) {\n $el.hide();\n if (val == 'full') $el.show();\n }\n };\n\n result['.sf_sidebar_behaviour'] = {\n observe: 'sf_sidebar_style',\n update: function ($el, val, model, options) {\n $el.hide();\n if (val == 'side' || val == 'skew') $el.css('display', 'inline-block');\n }\n };\n\n result['.sf_skew_type'] = {\n observe: 'sf_sidebar_style',\n update: function ($el, val, model, options) {\n $el.hide();\n if (val == 'skew') $el.css('display', 'inline-block');\n }\n };\n\n result['.sf_fs_layout'] = {\n observe: 'sf_sidebar_style',\n update: function ($el, val, model, options) {\n $el.hide();\n if (val == 'full') $el.css('display', 'inline-block');\n }\n };\n\n result['.sf_transparent_panel'] = {\n observe: 'sf_sidebar_style',\n update: function ($el, val, model, options) {\n $el.css('display', 'inline-block');\n if (val == 'full') $el.hide();\n }\n };\n\n result['.sf_fade_content'] = {\n observe: [\n 'sf_sidebar_behaviour',\n 'sf_sidebar_style'\n ],\n update: function ($el, val, model, options) {\n $el.css('display', 'inline-block');\n if (\n (val[0] == 'always' && val[1] == 'skew') ||\n val[1] == 'full'\n ) $el.hide();\n }\n };\n\n result['.sf_sub_opening_type'] = {\n observe: [\n 'sf_sidebar_style'\n ],\n update: function ($el, val, model, options) {\n $el.css('display', 'inline-block');\n if (val == 'skew') $el.hide();\n }\n };\n\n result['.sf_blur_content'] = {\n observe: [\n 'sf_sidebar_behaviour',\n 'sf_sidebar_style'\n ],\n update: function ($el, val, model, options) {\n $el.css('display', 'inline-block');\n if (\n (val[0] == 'always' && val[1] == 'skew') ||\n val[1] == 'full'\n )$el.hide();\n }\n };\n\n result['.sf_fade_full'] = {\n observe: 'sf_sidebar_style',\n update: function ($el, val, model, options) {\n $el.hide();\n if (val == 'full') $el.css('display', 'inline-block');\n }\n };\n\n result['.sf_full_sec'] = {\n observe: 'sf_sidebar_style',\n update: function ($el, val, model, options) {\n $el.hide();\n if (val == 'full') $el.css('display', 'inline-block');\n }\n };\n\n result['.sf_full_head'] = {\n observe: 'sf_sidebar_style',\n update: function ($el, val, model, options) {\n $el.hide();\n if (val == 'full') $el.css('display', 'inline-block');\n }\n };\n\n result['.sf_full_x'] = {\n observe: 'sf_sidebar_style',\n update: function ($el, val, model, options) {\n $el.hide();\n if (val == 'full') $el.css('display', 'inline-block');\n }\n };\n\n result['.sf_sub_type'] = {\n observe: 'sf_sidebar_style',\n update: function ($el, val, model, options) {\n $el.css('display', 'inline-block');\n if ( val != 'side' ) $el.hide();\n }\n };\n\n result['.sf_sub_opening_type'] = {\n observe: 'sf_sub_type',\n update: function ($el, val, model, options) {\n $el.css('display', 'inline-block');\n if (val != 'flyout') $el.hide();\n }\n };\n\n result['.sf_opening_type'] = {\n observe: [\n 'sf_sidebar_behaviour',\n 'sf_sidebar_style'\n ],\n update: function ($el, val, model, options) {\n $el.css('display', 'inline-block');\n if ( val[1] == 'toolbar' || val[1] == 'full') {\n $el.hide();\n }\n }\n };\n\n result['.sf_ind_s'] = {\n observe: 'sf_ind',\n update: function ($el, val, model, options) {\n $el.hide();\n if(val != '') $el.show();\n }\n };\n\n result['.sf_ind_st'] = {\n observe: 'sf_ind',\n update: function ($el, val, model, options) {\n $el.hide();\n if(val != '') $el.show();\n }\n };\n\n result['.sf_separators_color'] = {\n observe: 'sf_separators',\n update: function ($el, val, model, options) {\n $el.hide();\n if(val != '') $el.show();\n }\n };\n\n result['.sf_separators_width'] = {\n observe: 'sf_separators',\n update: function ($el, val, model, options) {\n $el.hide();\n if(val != '') $el.show();\n }\n };\n\n result['.sf_label_text_field'] = {\n observe: ['sf_label_text', 'sf_label_vis'],\n update: function ($el, val, model, options) {\n $el.hide();\n if(val[0] == 'yes' && val[1] == 'yes') $el.css('display', 'inline-block');\n }\n };\n\n result['.sf_label_width'] = {\n observe: ['sf_label_type', 'sf_label_vis'],\n update: function ($el, val, model, options) {\n $el.hide();\n if(val[0] == 'default' && val[1] && val[1] == 'yes') $el.show();\n }\n };\n\n result['.sf_label_gaps'] = {\n observe: ['sf_label_type', 'sf_label_vis'],\n update: function ($el, val, model, options) {\n $el.hide();\n if(val[0] == 'default' && val[1] && val[1] == 'yes') $el.show();\n }\n };\n\n result['.sf_label_icon'] = {\n observe: ['sf_label_type', 'sf_label_vis'],\n update: function ($el, val, model, options) {\n $el.hide();\n if(val[0] == 'custom' && val[1] && val[1] == 'yes') $el.show();\n }\n };\n\n result['.sf-menu__loc_popup .dw_pages_wrap'] = {\n observe: ['display_default_menu'],\n update: function ($el, val, model, options) {\n console.log('fire');\n $el.show();\n if(val)\n $el.hide();\n }\n };\n\n return result;\n },\n render: function () {\n this.stickit();\n return this;\n },\n close: function () {\n this.unstickit();\n }\n });\n})(jQuery);","// TinyColor v0.9.16\n// https://github.com/bgrins/TinyColor\n// 2013-08-10, Brian Grinstead, MIT License\n\n(function() {\n\nvar trimLeft = /^[\\s,#]+/,\n trimRight = /\\s+$/,\n tinyCounter = 0,\n math = Math,\n mathRound = math.round,\n mathMin = math.min,\n mathMax = math.max,\n mathRandom = math.random;\n\nfunction tinycolor (color, opts) {\n\n color = (color) ? color : '';\n opts = opts || { };\n\n // If input is already a tinycolor, return itself\n if (typeof color == \"object\" && color.hasOwnProperty(\"_tc_id\")) {\n return color;\n }\n\n var rgb = inputToRGB(color);\n var r = rgb.r,\n g = rgb.g,\n b = rgb.b,\n a = rgb.a,\n roundA = mathRound(100*a) / 100,\n format = opts.format || rgb.format;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (r < 1) { r = mathRound(r); }\n if (g < 1) { g = mathRound(g); }\n if (b < 1) { b = mathRound(b); }\n\n return {\n ok: rgb.ok,\n format: format,\n _tc_id: tinyCounter++,\n alpha: a,\n getAlpha: function() {\n return a;\n },\n setAlpha: function(value) {\n a = boundAlpha(value);\n roundA = mathRound(100*a) / 100;\n },\n toHsv: function() {\n var hsv = rgbToHsv(r, g, b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: a };\n },\n toHsvString: function() {\n var hsv = rgbToHsv(r, g, b);\n var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n return (a == 1) ?\n \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" :\n \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ roundA + \")\";\n },\n toHsl: function() {\n var hsl = rgbToHsl(r, g, b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: a };\n },\n toHslString: function() {\n var hsl = rgbToHsl(r, g, b);\n var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n return (a == 1) ?\n \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" :\n \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ roundA + \")\";\n },\n toHex: function(allow3Char) {\n return rgbToHex(r, g, b, allow3Char);\n },\n toHexString: function(allow3Char) {\n return '#' + rgbToHex(r, g, b, allow3Char);\n },\n toRgb: function() {\n return { r: mathRound(r), g: mathRound(g), b: mathRound(b), a: a };\n },\n toRgbString: function() {\n return (a == 1) ?\n \"rgb(\" + mathRound(r) + \", \" + mathRound(g) + \", \" + mathRound(b) + \")\" :\n \"rgba(\" + mathRound(r) + \", \" + mathRound(g) + \", \" + mathRound(b) + \", \" + roundA + \")\";\n },\n toPercentageRgb: function() {\n return { r: mathRound(bound01(r, 255) * 100) + \"%\", g: mathRound(bound01(g, 255) * 100) + \"%\", b: mathRound(bound01(b, 255) * 100) + \"%\", a: a };\n },\n toPercentageRgbString: function() {\n return (a == 1) ?\n \"rgb(\" + mathRound(bound01(r, 255) * 100) + \"%, \" + mathRound(bound01(g, 255) * 100) + \"%, \" + mathRound(bound01(b, 255) * 100) + \"%)\" :\n \"rgba(\" + mathRound(bound01(r, 255) * 100) + \"%, \" + mathRound(bound01(g, 255) * 100) + \"%, \" + mathRound(bound01(b, 255) * 100) + \"%, \" + roundA + \")\";\n },\n toName: function() {\n if (a === 0) {\n return \"transparent\";\n }\n\n return hexNames[rgbToHex(r, g, b, true)] || false;\n },\n toFilter: function(secondColor) {\n var hex = rgbToHex(r, g, b);\n var secondHex = hex;\n var alphaHex = Math.round(parseFloat(a) * 255).toString(16);\n var secondAlphaHex = alphaHex;\n var gradientType = opts && opts.gradientType ? \"GradientType = 1, \" : \"\";\n\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex = s.toHex();\n secondAlphaHex = Math.round(parseFloat(s.alpha) * 255).toString(16);\n }\n\n return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=#\" + pad2(alphaHex) + hex + \",endColorstr=#\" + pad2(secondAlphaHex) + secondHex + \")\";\n },\n toString: function(format) {\n var formatSet = !!format;\n format = format || this.format;\n\n var formattedString = false;\n var hasAlphaAndFormatNotSet = !formatSet && a < 1 && a > 0;\n var formatWithAlpha = hasAlphaAndFormatNotSet && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"name\");\n\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n\n if (formatWithAlpha) {\n return this.toRgbString();\n }\n\n return formattedString || this.toHexString();\n }\n };\n}\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function(color, opts) {\n if (typeof color == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n }\n else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var ok = false;\n var format = false;\n\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n\n if (typeof color == \"object\") {\n if (color.hasOwnProperty(\"r\") && color.hasOwnProperty(\"g\") && color.hasOwnProperty(\"b\")) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n }\n else if (color.hasOwnProperty(\"h\") && color.hasOwnProperty(\"s\") && color.hasOwnProperty(\"v\")) {\n color.s = convertToPercentage(color.s);\n color.v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, color.s, color.v);\n ok = true;\n format = \"hsv\";\n }\n else if (color.hasOwnProperty(\"h\") && color.hasOwnProperty(\"s\") && color.hasOwnProperty(\"l\")) {\n color.s = convertToPercentage(color.s);\n color.l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, color.s, color.l);\n ok = true;\n format = \"hsl\";\n }\n\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n\n a = boundAlpha(a);\n\n return {\n ok: ok,\n format: color.format || format,\n r: mathMin(255, mathMax(rgb.r, 0)),\n g: mathMin(255, mathMax(rgb.g, 0)),\n b: mathMin(255, mathMax(rgb.b, 0)),\n a: a\n };\n}\n\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b){\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if(max == min) {\n h = s = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n\n h /= 6;\n }\n\n return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n\n function hue2rgb(p, q, t) {\n if(t < 0) t += 1;\n if(t > 1) t -= 1;\n if(t < 1/6) return p + (q - p) * 6 * t;\n if(t < 1/2) return q;\n if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n return p;\n }\n\n if(s === 0) {\n r = g = b = l; // achromatic\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, v = max;\n\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if(max == min) {\n h = 0; // achromatic\n }\n else {\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n\n var i = math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) { return false; }\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\ntinycolor.random = function() {\n return tinycolor.fromRatio({\n r: mathRandom(),\n g: mathRandom(),\n b: mathRandom()\n });\n};\n\n\n// Modification Functions\n// ----------------------\n// Thalm to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\ntinycolor.desaturate = function (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n};\ntinycolor.saturate = function (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n};\ntinycolor.greyscale = function(color) {\n return tinycolor.desaturate(color, 100);\n};\ntinycolor.lighten = function(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n};\ntinycolor.darken = function (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n};\ntinycolor.complement = function(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n};\n\n\n// Combination Functions\n// ---------------------\n// Thalm to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\ntinycolor.triad = function(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n ];\n};\ntinycolor.tetrad = function(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n ];\n};\ntinycolor.splitcomplement = function(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n ];\n};\ntinycolor.analogous = function(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n\n for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n};\ntinycolor.monochromatic = function(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h, s = hsv.s, v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n\n while (results--) {\n ret.push(tinycolor({ h: h, s: s, v: v}));\n v = (v + modification) % 1;\n }\n\n return ret;\n};\n\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/AERT#color-contrast>\n\n// `readability`\n// Analyze the 2 colors and returns an object with the following properties:\n// `brightness`: difference in brightness between the two colors\n// `color`: difference in color/hue between the two colors\ntinycolor.readability = function(color1, color2) {\n var a = tinycolor(color1).toRgb();\n var b = tinycolor(color2).toRgb();\n var brightnessA = (a.r * 299 + a.g * 587 + a.b * 114) / 1000;\n var brightnessB = (b.r * 299 + b.g * 587 + b.b * 114) / 1000;\n var colorDiff = (\n Math.max(a.r, b.r) - Math.min(a.r, b.r) +\n Math.max(a.g, b.g) - Math.min(a.g, b.g) +\n Math.max(a.b, b.b) - Math.min(a.b, b.b)\n );\n\n return {\n brightness: Math.abs(brightnessA - brightnessB),\n color: colorDiff\n };\n};\n\n// `readable`\n// http://www.w3.org/TR/AERT#color-contrast\n// Ensure that foreground and background color combinations provide sufficient contrast.\n// *Example*\n// tinycolor.readable(\"#000\", \"#111\") => false\ntinycolor.readable = function(color1, color2) {\n var readability = tinycolor.readability(color1, color2);\n return readability.brightness > 125 && readability.color > 500;\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// *Example*\n// tinycolor.mostReadable(\"#123\", [\"#fff\", \"#000\"]) => \"#000\"\ntinycolor.mostReadable = function(baseColor, colorList) {\n var bestColor = null;\n var bestScore = 0;\n var bestIsReadable = false;\n for (var i=0; i < colorList.length; i++) {\n\n // We normalize both around the \"acceptable\" breaking point,\n // but rank brightness constrast higher than hue.\n\n var readability = tinycolor.readability(baseColor, colorList[i]);\n var readable = readability.brightness > 125 && readability.color > 500;\n var score = 3 * (readability.brightness / 125) + (readability.color / 500);\n\n if ((readable && ! bestIsReadable) ||\n (readable && bestIsReadable && score > bestScore) ||\n ((! readable) && (! bestIsReadable) && score > bestScore)) {\n bestIsReadable = readable;\n bestScore = score;\n bestColor = tinycolor(colorList[i]);\n }\n }\n return bestColor;\n};\n\n\n// Big List of Colors\n// ------------------\n// <http://www.w3.org/TR/css3-color/#svg-color>\nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = { };\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) { n = \"100%\"; }\n\n var processPercent = isPercentage(n);\n n = mathMin(max, mathMax(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if ((math.abs(n - max) < 0.000001)) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return mathMin(1, mathMax(0, val));\n}\n\n// Parse an integer into hex\nfunction parseHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf('%') != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = (n * 100) + \"%\";\n }\n\n return n;\n}\n\nvar matchers = (function() {\n\n // <http://www.w3.org/TR/css3-values/#integers>\n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // <http://www.w3.org/TR/css3-values/#number-value>\n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n return {\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n})();\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n\n color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color == 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if ((match = matchers.rgb.exec(color))) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n if ((match = matchers.rgba.exec(color))) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n if ((match = matchers.hsl.exec(color))) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n if ((match = matchers.hsla.exec(color))) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n if ((match = matchers.hsv.exec(color))) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n if ((match = matchers.hex6.exec(color))) {\n return {\n r: parseHex(match[1]),\n g: parseHex(match[2]),\n b: parseHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if ((match = matchers.hex3.exec(color))) {\n return {\n r: parseHex(match[1] + '' + match[1]),\n g: parseHex(match[2] + '' + match[2]),\n b: parseHex(match[3] + '' + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n\n return false;\n}\n\n// Node: Export function\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports = tinycolor;\n}\n// AMD/requirejs: Define the module\nelse if (typeof define !== \"undefined\" && define.amd) {\n define(function () {return tinycolor;});\n}\n// Browser: Expose to window\nelse {\n window.tinycolor = tinycolor;\n}\n\n})();","/*jshint undef: true, unused:true, browser:true */\n/*global jQuery: true, tinycolor: false */\n\n/*!=========================================================================\n * jQuery Color Picker Sliders\n * v3.1.0\n *\n * An advanced responsive color selector with color swatches and support for\n * human perceived lightness. Works in all modern browsers and on touch devices.\n *\n * https://github.com/istvan-meszaros/css-colorpickersliders\n * http://www.virtuosoft.eu/code/css-colorpickersliders/\n *\n * Copyright 2013 István Ujj-Mészáros\n *\n * Thalm for the contributors:\n * imaguiraga - https://github.com/imaguiraga\n * balmasich - https://github.com/balmasich\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * Requirements:\n *\n * TinyColor: https://github.com/bgrins/TinyColor\n *\n * Using color math algorithms from EasyRGB Web site:\n * http://www.easyrgb.com/index.php?X=MATH\n * ====================================================================== */\n\n(function($) {\n \"use strict\";\n\n $.fn.ColorPickerSliders = function(options) {\n\n return this.each(function() {\n\n var alreadyinitialized = false,\n settings,\n triggerelement = $(this),\n container,\n elements,\n swatches,\n MAXLIGHT = 101, // 101 needed for bright colors (maybe due to rounding errors)\n dragTarget = false,\n lastUpdateTime = 0,\n color = {\n tiny: null,\n hsla: null,\n rgba: null,\n cielch: null\n },\n MAXVALIDCHROMA = 144; // maximum valid chroma value found convertible to rgb (blue)\n\n init();\n\n function init() {\n if (alreadyinitialized) {\n return;\n }\n\n alreadyinitialized = true;\n\n _initSettings();\n\n _buildHtml();\n _initElements();\n\n if (triggerelement.is(\"input\")) {\n color.tiny = tinycolor(triggerelement.val());\n\n if (!color.tiny.format) {\n color.tiny = tinycolor(settings.color);\n }\n }\n else {\n color.tiny = tinycolor(settings.color);\n }\n\n color.hsla = color.tiny.toHsl();\n color.rgba = color.tiny.toRgb();\n color.cielch = $.fn.ColorPickerSliders.rgb2lch(color.rgba);\n\n _renderSwatches();\n _bindEvents();\n\n _updateAllElements();\n }\n\n function updateColor(newcolor, disableinputupdate) {\n var updatedcolor = tinycolor(newcolor);\n\n if (updatedcolor.format) {\n container.removeClass(\"cp-unconvertible-cie-color\");\n\n color.tiny = updatedcolor;\n color.hsla = updatedcolor.toHsl();\n color.rgba = updatedcolor.toRgb();\n color.cielch = $.fn.ColorPickerSliders.rgb2lch(color.rgba);\n\n _updateAllElements(disableinputupdate);\n\n return true;\n }\n else {\n return false;\n }\n }\n\n function showPopup() {\n $('.cp-container.cp-popup').hide();\n\n var viewportwidth = $(window).width(),\n offset = triggerelement.offset(),\n popuporiginalwidth;\n\n popuporiginalwidth = container.data('popup-original-width');\n\n if (typeof popuporiginalwidth === \"undefined\") {\n popuporiginalwidth = container.outerWidth();\n container.data('popup-original-width', popuporiginalwidth);\n }\n\n if (offset.left + popuporiginalwidth + 12 <= viewportwidth) {\n container.css('left', offset.left).width(popuporiginalwidth);\n }\n else if (popuporiginalwidth <= viewportwidth) {\n container.css('left', viewportwidth - popuporiginalwidth - 12).width(popuporiginalwidth);\n }\n else {\n container.css('left', 0).width(viewportwidth - 12);\n }\n\n container.css('top', offset.top + triggerelement.outerHeight()).show();\n }\n\n function hidePopup() {\n container.hide();\n }\n\n function _initSettings() {\n settings = $.extend({\n color: 'hsl(342, 52%, 70%)',\n swatches: ['FFFFFF', 'C0C0C0', '808080', '000000', 'FF0000', '800000', 'FFFF00', '808000', '00FF00', '008000', '00FFFF', '008080', '0000FF', '000080', 'FF00FF', '800080'],\n customswatches: 'colorpickkersliders', // false or a grop name\n connectedinput: false, // can be a jquery object or a selector\n flat: false,\n disableautopopup: false,\n updateinterval: 30, // update interval of the sliders while in drag (ms)\n previewontriggerelement: true,\n previewcontrasttreshold: 15,\n previewformat: 'rgb', // rgb/hsl/hex\n erroneousciecolormarkers: true,\n invalidcolorsopacity: 1, // everything below 1 causes slightly slower responses\n finercierangeedges: true, // can be disabled for faster responses\n titleswatchesadd: \"Add color to swatches\",\n titleswatchesremove: \"Remove color from swatches\",\n titleswatchesreset: \"Reset to default swatches\",\n order: {},\n labels: {},\n onchange: function() {\n }\n }, options);\n\n if (options.hasOwnProperty('order')) {\n settings.order = $.extend({\n opacity: false,\n hsl: false,\n rgb: false,\n cie: false,\n preview: false\n }, options.order);\n }\n else {\n settings.order = {\n opacity: 0,\n hsl: 1,\n rgb: 2,\n cie: 3, // cie sliders can increase response time of all sliders!\n preview: 4\n };\n }\n\n if (!options.hasOwnProperty('labels')) {\n options.labels = {};\n }\n\n settings.labels = $.extend({\n hslhue: 'Hue',\n hslsaturation: 'Saturation',\n hsllightness: 'Lightness',\n rgbred: 'RGB-Red',\n rgbgreen: 'RGB-Green',\n rgbblue: 'RGB-Blue',\n cielightness: 'CIE-Lightness',\n ciechroma: 'CIE-Chroma',\n ciehue: 'CIE-hue',\n opacity: 'Opacity',\n preview: 'Preview'\n }, options.labels);\n\n // force preview when browser doesn't support css gradients\n if ((!settings.order.hasOwnProperty('preview') || settings.order.preview === false) && !$.fn.ColorPickerSliders.gradientSupported()) {\n settings.order.preview = 10;\n }\n }\n\n function _buildHtml() {\n var sliders = [],\n color_picker_html = '';\n\n if (settings.order.opacity !== false) {\n sliders[settings.order.opacity] = '<div class=\"cp-slider cp-opacity cp-transparency\"><span>' + settings.labels.opacity + '</span><div class=\"cp-marker\"></div></div>';\n }\n\n if (settings.order.hsl !== false) {\n sliders[settings.order.hsl] = '<div class=\"cp-slider cp-hslhue cp-transparency\"><span>' + settings.labels.hslhue + '</span><div class=\"cp-marker\"></div></div><div class=\"cp-slider cp-hslsaturation cp-transparency\"><span>' + settings.labels.hslsaturation + '</span><div class=\"cp-marker\"></div></div><div class=\"cp-slider cp-hsllightness cp-transparency\"><span>' + settings.labels.hsllightness + '</span><div class=\"cp-marker\"></div></div>';\n }\n\n if (settings.order.rgb !== false) {\n sliders[settings.order.rgb] = '<div class=\"cp-slider cp-rgbred cp-transparency\"><span>' + settings.labels.rgbred + '</span><div class=\"cp-marker\"></div></div><div class=\"cp-slider cp-rgbgreen cp-transparency\"><span>' + settings.labels.rgbgreen + '</span><div class=\"cp-marker\"></div></div><div class=\"cp-slider cp-rgbblue cp-transparency\"><span>' + settings.labels.rgbblue + '</span><div class=\"cp-marker\"></div></div>';\n }\n\n if (settings.order.cie !== false) {\n sliders[settings.order.cie] = '<div class=\"cp-slider cp-cielightness cp-transparency\"><span>' + settings.labels.cielightness + '</span><div class=\"cp-marker\"></div></div><div class=\"cp-slider cp-ciechroma cp-transparency\"><span>' + settings.labels.ciechroma + '</span><div class=\"cp-marker\"></div></div><div class=\"cp-slider cp-ciehue cp-transparency\"><span>' + settings.labels.ciehue + '</span><div class=\"cp-marker\"></div></div>';\n }\n\n if (settings.order.preview !== false) {\n sliders[settings.order.preview] = '<div class=\"cp-preview cp-transparency\"><input type=\"text\" readonly=\"readonly\"></div>';\n }\n\n color_picker_html += '<div class=\"cp-sliders\">';\n\n for (var i = 0; i < sliders.length; i++) {\n if (typeof sliders[i] === \"undefined\") {\n continue;\n }\n\n color_picker_html += sliders[i];\n }\n\n color_picker_html += '</div>';\n\n if (settings.swatches) {\n color_picker_html += '<div class=\"cp-swatches\"><button type=\"button\" class=\"add\" title=\"' + settings.titleswatchesadd + '\"></button><button type=\"button\" class=\"remove\" title=\"' + settings.titleswatchesremove + '\"></button><button type=\"button\" class=\"reset\" title=\"' + settings.titleswatchesreset + '\"></button><ul></ul><div style=\"clear:both\"></div></div>';\n }\n\n if (settings.flat) {\n if (triggerelement.is(\"input\")) {\n container = $('<div class=\"cp-container\"></div>').insertAfter(triggerelement);\n }\n else {\n container = $('<div class=\"cp-container\"></div>');\n triggerelement.append(container);\n }\n }\n else {\n container = $('<div class=\"cp-container\"></div>').appendTo('body');\n }\n\n container.append(color_picker_html);\n\n if (settings.connectedinput instanceof jQuery) {\n settings.connectedinput.add(triggerelement);\n }\n else if (settings.connectedinput === false) {\n settings.connectedinput = triggerelement;\n }\n else {\n settings.connectedinput = $(settings.connectedinput).add(triggerelement);\n }\n\n if (!settings.flat) {\n container.addClass('cp-popup');\n }\n }\n\n function _initElements() {\n elements = {\n connectedinput: false,\n actualswatch: false,\n swatchescontainer: $(\".cp-swatches\", container),\n swatches: $(\".cp-swatches ul\", container),\n swatches_add: $(\".cp-swatches button.add\", container),\n swatches_remove: $(\".cp-swatches button.remove\", container),\n swatches_reset: $(\".cp-swatches button.reset\", container),\n all_sliders: $(\".cp-sliders, .cp-preview input\", container),\n sliders: {\n hue: $(\".cp-hslhue span\", container),\n hue_marker: $(\".cp-hslhue .cp-marker\", container),\n saturation: $(\".cp-hslsaturation span\", container),\n saturation_marker: $(\".cp-hslsaturation .cp-marker\", container),\n lightness: $(\".cp-hsllightness span\", container),\n lightness_marker: $(\".cp-hsllightness .cp-marker\", container),\n opacity: $(\".cp-opacity span\", container),\n opacity_marker: $(\".cp-opacity .cp-marker\", container),\n red: $(\".cp-rgbred span\", container),\n red_marker: $(\".cp-rgbred .cp-marker\", container),\n green: $(\".cp-rgbgreen span\", container),\n green_marker: $(\".cp-rgbgreen .cp-marker\", container),\n blue: $(\".cp-rgbblue span\", container),\n blue_marker: $(\".cp-rgbblue .cp-marker\", container),\n cielightness: $(\".cp-cielightness span\", container),\n cielightness_marker: $(\".cp-cielightness .cp-marker\", container),\n ciechroma: $(\".cp-ciechroma span\", container),\n ciechroma_marker: $(\".cp-ciechroma .cp-marker\", container),\n ciehue: $(\".cp-ciehue span\", container),\n ciehue_marker: $(\".cp-ciehue .cp-marker\", container),\n preview: $(\".cp-preview input\", container)\n }\n };\n\n if (settings.connectedinput) {\n if (settings.connectedinput instanceof jQuery) {\n elements.connectedinput = settings.connectedinput;\n }\n else {\n elements.connectedinput = $(settings.connectedinput);\n }\n }\n\n if (!settings.customswatches) {\n elements.swatches_add.hide();\n elements.swatches_remove.hide();\n elements.swatches_reset.hide();\n }\n }\n\n function destroyColorPicker() {\n if (container instanceof jQuery) {\n hidePopup();\n container.remove();\n alreadyinitialized = false;\n }\n }\n\n function resetColorPicker() {\n init();\n }\n\n function _bindEvents() {\n triggerelement.on('colorpickersliders.destroy', function() {\n destroyColorPicker();\n });\n\n triggerelement.on('colorpickersliders.reset', function() {\n resetColorPicker();\n });\n\n triggerelement.on('colorpickersliders.updateColor', function(e, newcolor) {\n updateColor(newcolor);\n });\n\n triggerelement.on('colorpickersliders.showPopup', function() {\n showPopup();\n });\n\n triggerelement.on('colorpickersliders.hidePopup', function() {\n hidePopup();\n });\n\n $(document).on(\"colorpickersliders.changeswatches\", function() {\n _renderSwatches();\n });\n\n if (!settings.flat && !settings.disableautopopup) {\n // we need tabindex defined to be focusable\n if (typeof triggerelement.attr(\"tabindex\") === \"undefined\") {\n triggerelement.attr(\"tabindex\", -1);\n }\n\n // buttons doesn't get focus in webkit browsers\n // https://bugs.webkit.org/show_bug.cgi?id=22261\n // and only input and button are focusable on iPad\n // so it is safer to register click on any other than inputs\n if (!triggerelement.is(\"input\")) {\n $(triggerelement).on(\"click\", function(ev) {\n showPopup();\n\n ev.stopPropagation();\n });\n\n $(document).on(\"click\", function() {\n hidePopup();\n });\n }\n\n $(triggerelement).on(\"focus\", function(ev) {\n showPopup();\n\n ev.stopPropagation();\n });\n\n $(triggerelement).on(\"blur\", function(ev) {\n\t console.log('blur')\n hidePopup();\n\n ev.stopPropagation();\n });\n\n container.on(\"touchstart mousedown\", function(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n\n return false;\n });\n }\n\n container.on(\"contextmenu\", function(ev) {\n ev.preventDefault();\n return false;\n });\n\n elements.swatches.on(\"click\", \"li span\", function(ev) {\n var color = $(this).css(\"background-color\");\n updateColor(color);\n ev.preventDefault();\n });\n\n elements.swatches_add.on(\"click\", function(ev) {\n _addCurrentColorToSwatches();\n ev.preventDefault();\n });\n\n elements.swatches_remove.on(\"click\", function(ev) {\n _removeActualColorFromSwatches();\n ev.preventDefault();\n });\n\n elements.swatches_reset.on(\"click\", function(ev) {\n _resetSwatches();\n ev.preventDefault();\n });\n\n elements.sliders.hue.parent().on(\"touchstart mousedown\", function(ev) {\n ev.preventDefault();\n\n if (ev.which > 1) {\n return;\n }\n\n dragTarget = \"hue\";\n\n var percent = _updateMarkerPosition(dragTarget, ev);\n\n _updateColorsProperty('hsla', 'h', 3.6 * percent);\n\n _updateAllElements();\n });\n\n elements.sliders.saturation.parent().on(\"touchstart mousedown\", function(ev) {\n ev.preventDefault();\n\n if (ev.which > 1) {\n return;\n }\n\n dragTarget = \"saturation\";\n\n var percent = _updateMarkerPosition(dragTarget, ev);\n\n _updateColorsProperty('hsla', 's', percent / 100);\n\n _updateAllElements();\n });\n\n elements.sliders.lightness.parent().on(\"touchstart mousedown\", function(ev) {\n ev.preventDefault();\n\n if (ev.which > 1) {\n return;\n }\n\n dragTarget = \"lightness\";\n\n var percent = _updateMarkerPosition(dragTarget, ev);\n\n _updateColorsProperty('hsla', 'l', percent / 100);\n\n _updateAllElements();\n });\n\n elements.sliders.opacity.parent().on(\"touchstart mousedown\", function(ev) {\n ev.preventDefault();\n\n if (ev.which > 1) {\n return;\n }\n\n dragTarget = \"opacity\";\n\n var percent = _updateMarkerPosition(dragTarget, ev);\n\n _updateColorsProperty('hsla', 'a', percent / 100);\n\n _updateAllElements();\n });\n\n elements.sliders.red.parent().on(\"touchstart mousedown\", function(ev) {\n ev.preventDefault();\n\n if (ev.which > 1) {\n return;\n }\n\n dragTarget = \"red\";\n\n var percent = _updateMarkerPosition(dragTarget, ev);\n\n _updateColorsProperty('rgba', 'r', 2.55 * percent);\n\n _updateAllElements();\n });\n\n elements.sliders.green.parent().on(\"touchstart mousedown\", function(ev) {\n ev.preventDefault();\n\n if (ev.which > 1) {\n return;\n }\n\n dragTarget = \"green\";\n\n var percent = _updateMarkerPosition(dragTarget, ev);\n\n _updateColorsProperty('rgba', 'g', 2.55 * percent);\n\n _updateAllElements();\n });\n\n elements.sliders.blue.parent().on(\"touchstart mousedown\", function(ev) {\n ev.preventDefault();\n\n if (ev.which > 1) {\n return;\n }\n\n dragTarget = \"blue\";\n\n var percent = _updateMarkerPosition(dragTarget, ev);\n\n _updateColorsProperty('rgba', 'b', 2.55 * percent);\n\n _updateAllElements();\n });\n\n elements.sliders.cielightness.parent().on(\"touchstart mousedown\", function(ev) {\n ev.preventDefault();\n\n if (ev.which > 1) {\n return;\n }\n\n dragTarget = \"cielightness\";\n\n var percent = _updateMarkerPosition(dragTarget, ev);\n\n _updateColorsProperty('cielch', 'l', (MAXLIGHT / 100) * percent);\n\n _updateAllElements();\n });\n\n elements.sliders.ciechroma.parent().on(\"touchstart mousedown\", function(ev) {\n ev.preventDefault();\n\n if (ev.which > 1) {\n return;\n }\n\n dragTarget = \"ciechroma\";\n\n var percent = _updateMarkerPosition(dragTarget, ev);\n\n _updateColorsProperty('cielch', 'c', (MAXVALIDCHROMA / 100) * percent);\n\n _updateAllElements();\n });\n\n elements.sliders.ciehue.parent().on(\"touchstart mousedown\", function(ev) {\n ev.preventDefault();\n\n if (ev.which > 1) {\n return;\n }\n\n dragTarget = \"ciehue\";\n\n var percent = _updateMarkerPosition(dragTarget, ev);\n\n _updateColorsProperty('cielch', 'h', 3.6 * percent);\n\n _updateAllElements();\n });\n\n elements.sliders.preview.on(\"click\", function() {\n this.select();\n });\n\n $(document).on(\"touchmove mousemove\", function(ev) {\n if (!dragTarget) {\n return;\n }\n\n var percent = _updateMarkerPosition(dragTarget, ev);\n\n switch (dragTarget) {\n case \"hue\":\n _updateColorsProperty('hsla', 'h', 3.6 * percent);\n break;\n case \"saturation\":\n _updateColorsProperty('hsla', 's', percent / 100);\n break;\n case \"lightness\":\n _updateColorsProperty('hsla', 'l', percent / 100);\n break;\n case \"opacity\":\n _updateColorsProperty('hsla', 'a', percent / 100);\n break;\n case \"red\":\n _updateColorsProperty('rgba', 'r', 2.55 * percent);\n break;\n case \"green\":\n _updateColorsProperty('rgba', 'g', 2.55 * percent);\n break;\n case \"blue\":\n _updateColorsProperty('rgba', 'b', 2.55 * percent);\n break;\n case \"cielightness\":\n _updateColorsProperty('cielch', 'l', (MAXLIGHT / 100) * percent);\n break;\n case \"ciechroma\":\n _updateColorsProperty('cielch', 'c', (MAXVALIDCHROMA / 100) * percent);\n break;\n case \"ciehue\":\n _updateColorsProperty('cielch', 'h', 3.6 * percent);\n break;\n }\n\n _updateAllElements();\n\n ev.preventDefault();\n });\n\n $(document).on(\"touchend mouseup\", function(ev) {\n if (ev.which > 1) {\n return;\n }\n\n if (dragTarget) {\n dragTarget = false;\n ev.preventDefault();\n }\n });\n\n if (elements.connectedinput) {\n elements.connectedinput.on('keyup change', function() {\n var $input = $(this);\n\n updateColor($input.val(), true);\n });\n }\n\n }\n\n function _parseCustomSwatches() {\n swatches = [];\n\n for (var i = 0; i < settings.swatches.length; i++) {\n var color = tinycolor(settings.swatches[i]);\n\n if (color.format) {\n swatches.push(color.toRgbString());\n }\n }\n }\n\n function _renderSwatches() {\n if (!settings.swatches) {\n return;\n }\n\n if (settings.customswatches) {\n var customswatches = false;\n\n try {\n customswatches = JSON.parse(localStorage.getItem(\"swatches-\" + settings.customswatches));\n }\n catch (err) {\n }\n\n if (customswatches) {\n swatches = customswatches;\n }\n else {\n _parseCustomSwatches();\n }\n }\n else {\n _parseCustomSwatches();\n }\n\n if (swatches instanceof Array) {\n elements.swatches.html(\"\");\n for (var i = 0; i < swatches.length; i++) {\n var color = tinycolor(swatches[i]);\n\n if (color.format) {\n elements.swatches.append($(\"<li></li>\").append($(\"<span></span>\").css(\"background-color\", color.toRgbString())));\n }\n }\n }\n\n _findActualColorsSwatch();\n }\n\n function _findActualColorsSwatch() {\n var found = false;\n\n $(\"span\", elements.swatches).filter(function() {\n var swatchcolor = $(this).css('background-color');\n\n swatchcolor = tinycolor(swatchcolor);\n swatchcolor.alpha = Math.round(swatchcolor.alpha * 100) / 100;\n\n if (swatchcolor.toRgbString() === color.tiny.toRgbString()) {\n found = true;\n\n var currentswatch = $(this).parent();\n\n if (!currentswatch.is(elements.actualswatch)) {\n if (elements.actualswatch) {\n elements.actualswatch.removeClass(\"actual\");\n }\n elements.actualswatch = currentswatch;\n currentswatch.addClass(\"actual\");\n }\n }\n });\n\n if (!found) {\n if (elements.actualswatch) {\n elements.actualswatch.removeClass(\"actual\");\n elements.actualswatch = false;\n }\n }\n\n if (elements.actualswatch) {\n elements.swatches_add.prop(\"disabled\", true);\n elements.swatches_remove.prop(\"disabled\", false);\n }\n else {\n elements.swatches_add.prop(\"disabled\", false);\n elements.swatches_remove.prop(\"disabled\", true);\n }\n }\n\n function _storeSwatches() {\n localStorage.setItem(\"swatches-\" + settings.customswatches, JSON.stringify(swatches));\n }\n\n function _addCurrentColorToSwatches() {\n swatches.unshift(color.tiny.toRgbString());\n _storeSwatches();\n\n $(document).trigger(\"colorpickersliders.changeswatches\");\n }\n\n function _removeActualColorFromSwatches() {\n var index = swatches.indexOf(color.tiny.toRgbString());\n\n if (index !== -1) {\n swatches.splice(index, 1);\n\n _storeSwatches();\n $(document).trigger(\"colorpickersliders.changeswatches\");\n }\n }\n\n function _resetSwatches() {\n if (confirm(\"Do you really want to reset the swatches? All customizations will be lost!\")) {\n _parseCustomSwatches();\n\n _storeSwatches();\n\n $(document).trigger(\"colorpickersliders.changeswatches\");\n }\n }\n\n function _updateColorsProperty(format, property, value) {\n switch (format) {\n case 'hsla':\n\n color.hsla[property] = value;\n color.tiny = tinycolor({h: color.hsla.h, s: color.hsla.s, l: color.hsla.l, a: color.hsla.a});\n color.rgba = color.tiny.toRgb();\n color.cielch = $.fn.ColorPickerSliders.rgb2lch(color.rgba);\n\n container.removeClass(\"cp-unconvertible-cie-color\");\n\n break;\n\n case 'rgba':\n\n color.rgba[property] = value;\n color.tiny = tinycolor({r: color.rgba.r, g: color.rgba.g, b: color.rgba.b, a: color.hsla.a});\n color.hsla = color.tiny.toHsl();\n color.cielch = $.fn.ColorPickerSliders.rgb2lch(color.rgba);\n\n container.removeClass(\"cp-unconvertible-cie-color\");\n\n break;\n\n case 'cielch':\n\n color.cielch[property] = value;\n color.rgba = $.fn.ColorPickerSliders.lch2rgb(color.cielch);\n color.tiny = tinycolor(color.rgba);\n color.hsla = color.tiny.toHsl();\n\n if (settings.erroneousciecolormarkers) {\n if (color.rgba.isok) {\n container.removeClass(\"cp-unconvertible-cie-color\");\n }\n else {\n container.addClass(\"cp-unconvertible-cie-color\");\n }\n }\n\n break;\n }\n }\n\n function _updateMarkerPosition(slidername, ev) {\n var percent = $.fn.ColorPickerSliders.calculateEventPositionPercentage(ev, elements.sliders[slidername]);\n\n elements.sliders[slidername + '_marker'].data(\"position\", percent);\n\n return percent;\n }\n\n var updateAllElementsTimeout;\n\n function _updateAllElementsTimer(disableinputupdate) {\n updateAllElementsTimeout = setTimeout(function() {\n _updateAllElements(disableinputupdate);\n }, settings.updateinterval);\n }\n\n function _updateAllElements(disableinputupdate) {\n clearTimeout(updateAllElementsTimeout);\n\n $(document).trigger('colorpickersliders._updateAllElements');\n\n if (Date.now() - lastUpdateTime < settings.updateinterval) {\n _updateAllElementsTimer(disableinputupdate);\n return;\n }\n\n if (typeof disableinputupdate === \"undefined\") {\n disableinputupdate = false;\n }\n\n lastUpdateTime = Date.now();\n\n if (settings.order.opacity !== false) {\n _renderOpacity();\n }\n\n if (settings.order.hsl !== false) {\n _renderHue();\n _renderSaturation();\n _renderLightness();\n }\n\n if (settings.order.rgb !== false) {\n _renderRed();\n _renderGreen();\n _renderBlue();\n }\n\n if (settings.order.cie !== false) {\n _renderCieLightness();\n _renderCieChroma();\n _renderCieHue();\n }\n\n if (settings.order.preview !== false) {\n _renderPreview();\n }\n\n if (!disableinputupdate) {\n _updateConnectedInput();\n }\n\n if ((100 - color.cielch.l) * color.cielch.a < settings.previewcontrasttreshold) {\n elements.all_sliders.css('color', '#000');\n if (settings.previewontriggerelement) {\n triggerelement.css('background', color.tiny.toRgbString()).css('color', '#000');\n }\n }\n else {\n elements.all_sliders.css('color', '#fff');\n if (settings.previewontriggerelement) {\n triggerelement.css('background', color.tiny.toRgbString()).css('color', '#fff');\n }\n }\n\n _findActualColorsSwatch();\n\n settings.onchange(container, color);\n }\n\n function _updateConnectedInput() {\n if (elements.connectedinput) {\n elements.connectedinput.each(function(index, element) {\n var $element = $(element);\n\n switch ($element.data('color-format')) {\n case 'hex':\n $element.val(color.tiny.toHexString());\n break;\n case 'hsl':\n $element.val(color.tiny.toHslString());\n break;\n case 'rgb':\n /* falls through */\n default:\n $element.val(color.tiny.toRgbString());\n break;\n }\n });\n }\n }\n\n function _renderHue() {\n $.fn.ColorPickerSliders.setGradient(elements.sliders.hue, $.fn.ColorPickerSliders.getScaledGradientStops(color.hsla, \"h\", 0, 360, 7));\n\n elements.sliders.hue_marker.css(\"left\", color.hsla.h / 360 * 100 + \"%\");\n }\n\n function _renderSaturation() {\n $.fn.ColorPickerSliders.setGradient(elements.sliders.saturation, $.fn.ColorPickerSliders.getScaledGradientStops(color.hsla, \"s\", 0, 1, 2));\n\n elements.sliders.saturation_marker.css(\"left\", color.hsla.s * 100 + \"%\");\n }\n\n function _renderLightness() {\n $.fn.ColorPickerSliders.setGradient(elements.sliders.lightness, $.fn.ColorPickerSliders.getScaledGradientStops(color.hsla, \"l\", 0, 1, 3));\n\n elements.sliders.lightness_marker.css(\"left\", color.hsla.l * 100 + \"%\");\n }\n\n function _renderOpacity() {\n $.fn.ColorPickerSliders.setGradient(elements.sliders.opacity, $.fn.ColorPickerSliders.getScaledGradientStops(color.hsla, \"a\", 0, 1, 2));\n\n elements.sliders.opacity_marker.css(\"left\", color.hsla.a * 100 + \"%\");\n }\n\n function _renderRed() {\n $.fn.ColorPickerSliders.setGradient(elements.sliders.red, $.fn.ColorPickerSliders.getScaledGradientStops(color.rgba, \"r\", 0, 255, 2));\n\n elements.sliders.red_marker.css(\"left\", color.rgba.r / 255 * 100 + \"%\");\n }\n\n function _renderGreen() {\n $.fn.ColorPickerSliders.setGradient(elements.sliders.green, $.fn.ColorPickerSliders.getScaledGradientStops(color.rgba, \"g\", 0, 255, 2));\n\n elements.sliders.green_marker.css(\"left\", color.rgba.g / 255 * 100 + \"%\");\n }\n\n function _renderBlue() {\n $.fn.ColorPickerSliders.setGradient(elements.sliders.blue, $.fn.ColorPickerSliders.getScaledGradientStops(color.rgba, \"b\", 0, 255, 2));\n\n elements.sliders.blue_marker.css(\"left\", color.rgba.b / 255 * 100 + \"%\");\n }\n\n function _extendCieGradientStops(gradientstops, property) {\n if (settings.invalidcolorsopacity === 1 || !settings.finercierangeedges) {\n return gradientstops;\n }\n\n gradientstops.sort(function(a, b) {\n return a.position - b.position;\n });\n\n var tmparray = [];\n\n for (var i = 1; i < gradientstops.length; i++) {\n if (gradientstops[i].isok !== gradientstops[i - 1].isok) {\n var steps = Math.round(gradientstops[i].position) - Math.round(gradientstops[i - 1].position),\n extendedgradientstops = $.fn.ColorPickerSliders.getScaledGradientStops(gradientstops[i].rawcolor, property, gradientstops[i - 1].rawcolor[property], gradientstops[i].rawcolor[property], steps, settings.invalidcolorsopacity, gradientstops[i - 1].position, gradientstops[i].position);\n\n for (var j = 0; j < extendedgradientstops.length; j++) {\n if (extendedgradientstops[j].isok !== gradientstops[i - 1].isok) {\n tmparray.push(extendedgradientstops[j]);\n\n if (j > 0) {\n tmparray.push(extendedgradientstops[j - 1]);\n }\n\n break;\n }\n }\n }\n }\n\n return $.merge(tmparray, gradientstops);\n }\n\n function _renderCieLightness() {\n var gradientstops = $.fn.ColorPickerSliders.getScaledGradientStops(color.cielch, \"l\", 0, 100, 10, settings.invalidcolorsopacity);\n\n gradientstops = _extendCieGradientStops(gradientstops, \"l\");\n\n $.fn.ColorPickerSliders.setGradient(elements.sliders.cielightness, gradientstops);\n\n elements.sliders.cielightness_marker.css(\"left\", color.cielch.l / MAXLIGHT * 100 + \"%\");\n }\n\n function _renderCieChroma() {\n var gradientstops = $.fn.ColorPickerSliders.getScaledGradientStops(color.cielch, \"c\", 0, MAXVALIDCHROMA, 5, settings.invalidcolorsopacity);\n\n gradientstops = _extendCieGradientStops(gradientstops, \"c\");\n\n $.fn.ColorPickerSliders.setGradient(elements.sliders.ciechroma, gradientstops);\n\n elements.sliders.ciechroma_marker.css(\"left\", color.cielch.c / MAXVALIDCHROMA * 100 + \"%\");\n }\n\n function _renderCieHue() {\n var gradientstops = $.fn.ColorPickerSliders.getScaledGradientStops(color.cielch, \"h\", 0, 360, 28, settings.invalidcolorsopacity);\n\n gradientstops = _extendCieGradientStops(gradientstops, \"h\");\n\n $.fn.ColorPickerSliders.setGradient(elements.sliders.ciehue, gradientstops);\n\n elements.sliders.ciehue_marker.css(\"left\", color.cielch.h / 360 * 100 + \"%\");\n }\n\n function _renderPreview() {\n elements.sliders.preview.css(\"background\", $.fn.ColorPickerSliders.csscolor(color.rgba));\n\n var colorstring;\n\n switch (settings.previewformat) {\n case 'hex':\n colorstring = color.tiny.toHexString();\n break;\n case 'hsl':\n colorstring = color.tiny.toHslString();\n break;\n case 'rgb':\n /* falls through */\n default:\n colorstring = color.tiny.toRgbString();\n break;\n }\n\n elements.sliders.preview.val(colorstring);\n }\n\n });\n\n };\n\n $.fn.ColorPickerSliders.getEventCoordinates = function(ev) {\n if (typeof ev.pageX !== \"undefined\") {\n return {\n pageX: ev.originalEvent.pageX,\n pageY: ev.originalEvent.pageY\n };\n }\n else if (typeof ev.originalEvent.touches !== \"undefined\") {\n return {\n pageX: ev.originalEvent.touches[0].pageX,\n pageY: ev.originalEvent.touches[0].pageY\n };\n }\n };\n\n $.fn.ColorPickerSliders.calculateEventPositionPercentage = function(ev, containerElement) {\n var c = $.fn.ColorPickerSliders.getEventCoordinates(ev);\n\n var xsize = containerElement.width(),\n offsetX = c.pageX - containerElement.offset().left;\n\n var percent = offsetX / xsize * 100;\n\n if (percent < 0) {\n percent = 0;\n }\n\n if (percent > 100) {\n percent = 100;\n }\n\n return percent;\n };\n\n $.fn.ColorPickerSliders.gradientSupported = function() {\n var testelement = document.createElement('detectGradientSupport').style;\n\n testelement.backgroundImage = \"linear-gradient(left top, #9f9, white)\";\n testelement.backgroundImage = \"-o-linear-gradient(left top, #9f9, white)\";\n testelement.backgroundImage = \"-moz-linear-gradient(left top, #9f9, white)\";\n testelement.backgroundImage = \"-webkit-linear-gradient(left top, #9f9, white)\";\n testelement.backgroundImage = \"-ms-linear-gradient(left top, #9f9, white)\";\n testelement.backgroundImage = \"-webkit-gradient(linear, left top, right bottom, from(#9f9), to(white))\";\n\n if (testelement.backgroundImage.indexOf(\"gradient\") === -1) {\n return false;\n }\n else {\n return true;\n }\n };\n\n $.fn.ColorPickerSliders.getScaledGradientStops = function(color, scalableproperty, minvalue, maxvalue, steps, invalidcolorsopacity, minposition, maxposition) {\n if (typeof invalidcolorsopacity === \"undefined\") {\n invalidcolorsopacity = 1;\n }\n\n if (typeof minposition === \"undefined\") {\n minposition = 0;\n }\n\n if (typeof maxposition === \"undefined\") {\n maxposition = 100;\n }\n\n var gradientStops = [],\n diff = maxvalue - minvalue,\n isok = true;\n\n for (var i = 0; i < steps; ++i) {\n var currentstage = i / (steps - 1),\n modifiedcolor = $.fn.ColorPickerSliders.modifyColor(color, scalableproperty, currentstage * diff + minvalue),\n csscolor;\n\n if (invalidcolorsopacity < 1) {\n var stagergb = $.fn.ColorPickerSliders.lch2rgb(modifiedcolor, invalidcolorsopacity);\n\n isok = stagergb.isok;\n csscolor = $.fn.ColorPickerSliders.csscolor(stagergb, invalidcolorsopacity);\n }\n else {\n csscolor = $.fn.ColorPickerSliders.csscolor(modifiedcolor, invalidcolorsopacity);\n }\n\n gradientStops[i] = {\n color: csscolor,\n position: currentstage * (maxposition - minposition) + minposition,\n isok: isok,\n rawcolor: modifiedcolor\n };\n }\n\n return gradientStops;\n };\n\n $.fn.ColorPickerSliders.setGradient = function(element, gradientstops) {\n gradientstops.sort(function(a, b) {\n return a.position - b.position;\n });\n\n var gradientstring = \"\",\n oldwebkitgradientstring = \"\",\n noprefix = \"linear-gradient(to right\",\n webkit = \"-webkit-linear-gradient(left\",\n oldwebkit = \"-webkit-gradient(linear, left top, right top\";\n\n\n for (var i = 0; i < gradientstops.length; i++) {\n var el = gradientstops[i];\n\n gradientstring += \",\" + el.color + \" \" + el.position + \"%\";\n oldwebkitgradientstring += \",color-stop(\" + el.position + \"%,\" + el.color + \")\";\n }\n\n gradientstring += \")\";\n oldwebkitgradientstring += \")\";\n\n oldwebkit += oldwebkitgradientstring;\n webkit += gradientstring;\n noprefix += gradientstring;\n\n element.css(\"background\", oldwebkit);\n element.css(\"background\", webkit);\n element.css(\"background\", noprefix);\n };\n\n $.fn.ColorPickerSliders.isGoodRgb = function(rgb) {\n // the default acceptable values are out of 0..255 due to\n // rounding errors with yellow and blue colors (258, -1)\n var maxacceptable = 258;\n var minacceptable = -1;\n\n if (rgb.r > maxacceptable || rgb.g > maxacceptable || rgb.b > maxacceptable || rgb.r < minacceptable || rgb.g < minacceptable || rgb.b < minacceptable) {\n return false;\n }\n else {\n rgb.r = Math.min(255, rgb.r);\n rgb.g = Math.min(255, rgb.g);\n rgb.b = Math.min(255, rgb.b);\n rgb.r = Math.max(0, rgb.r);\n rgb.g = Math.max(0, rgb.g);\n rgb.b = Math.max(0, rgb.b);\n\n return true;\n }\n };\n\n $.fn.ColorPickerSliders.rgb2lch = function(rgb) {\n var lch = $.fn.ColorPickerSliders.CIELab2CIELCH($.fn.ColorPickerSliders.XYZ2CIELab($.fn.ColorPickerSliders.rgb2XYZ(rgb)));\n\n if (rgb.hasOwnProperty('a')) {\n lch.a = rgb.a;\n }\n\n return lch;\n };\n\n $.fn.ColorPickerSliders.lch2rgb = function(lch, invalidcolorsopacity) {\n if (typeof invalidcolorsopacity === \"undefined\") {\n invalidcolorsopacity = 1;\n }\n\n var rgb = $.fn.ColorPickerSliders.XYZ2rgb($.fn.ColorPickerSliders.CIELab2XYZ($.fn.ColorPickerSliders.CIELCH2CIELab(lch)));\n\n if ($.fn.ColorPickerSliders.isGoodRgb(rgb)) {\n if (lch.hasOwnProperty('a')) {\n rgb.a = lch.a;\n }\n\n rgb.isok = true;\n\n return rgb;\n }\n\n var tmp = $.extend({}, lch),\n lastbadchroma = tmp.c,\n lastgoodchroma = -1,\n loops = 0;\n\n do {\n ++loops;\n\n tmp.c = lastgoodchroma + ((lastbadchroma - lastgoodchroma) / 2);\n\n rgb = $.fn.ColorPickerSliders.XYZ2rgb($.fn.ColorPickerSliders.CIELab2XYZ($.fn.ColorPickerSliders.CIELCH2CIELab(tmp)));\n\n if ($.fn.ColorPickerSliders.isGoodRgb(rgb)) {\n lastgoodchroma = tmp.c;\n }\n else {\n lastbadchroma = tmp.c;\n }\n } while (Math.abs(lastbadchroma - lastgoodchroma) > 0.9 && loops < 100);\n\n if (lch.hasOwnProperty('a')) {\n rgb.a = lch.a;\n }\n\n rgb.r = Math.max(0, rgb.r);\n rgb.g = Math.max(0, rgb.g);\n rgb.b = Math.max(0, rgb.b);\n\n rgb.r = Math.min(255, rgb.r);\n rgb.g = Math.min(255, rgb.g);\n rgb.b = Math.min(255, rgb.b);\n\n if (invalidcolorsopacity < 1) {\n if (rgb.hasOwnProperty('a')) {\n rgb.a = rgb.a * invalidcolorsopacity;\n }\n else {\n rgb.a = invalidcolorsopacity;\n }\n }\n\n rgb.isok = false;\n\n return rgb;\n };\n\n $.fn.ColorPickerSliders.modifyColor = function(color, property, value) {\n var modifiedcolor = $.extend({}, color);\n\n if (!color.hasOwnProperty(property)) {\n throw(\"Missing color property: \" + property);\n }\n\n modifiedcolor[property] = value;\n\n return modifiedcolor;\n };\n\n $.fn.ColorPickerSliders.csscolor = function(color, invalidcolorsopacity) {\n if (typeof invalidcolorsopacity === \"undefined\") {\n invalidcolorsopacity = 1;\n }\n\n var $return = false,\n tmpcolor = $.extend({}, color);\n\n if (tmpcolor.hasOwnProperty('c')) {\n // CIE-LCh\n tmpcolor = $.fn.ColorPickerSliders.lch2rgb(tmpcolor, invalidcolorsopacity);\n }\n\n if (tmpcolor.hasOwnProperty('h')) {\n // HSL\n $return = \"hsla(\" + tmpcolor.h + \",\" + tmpcolor.s * 100 + \"%,\" + tmpcolor.l * 100 + \"%,\" + tmpcolor.a + \")\";\n }\n\n if (tmpcolor.hasOwnProperty('r')) {\n // RGB\n if (tmpcolor.a < 1) {\n $return = \"rgba(\" + Math.round(tmpcolor.r) + \",\" + Math.round(tmpcolor.g) + \",\" + Math.round(tmpcolor.b) + \",\" + tmpcolor.a + \")\";\n }\n else {\n $return = \"rgb(\" + Math.round(tmpcolor.r) + \",\" + Math.round(tmpcolor.g) + \",\" + Math.round(tmpcolor.b) + \")\";\n }\n }\n\n return $return;\n };\n\n $.fn.ColorPickerSliders.rgb2XYZ = function(rgb) {\n var XYZ = {};\n\n var r = (rgb.r / 255);\n var g = (rgb.g / 255);\n var b = (rgb.b / 255);\n\n if (r > 0.04045) {\n r = Math.pow(((r + 0.055) / 1.055), 2.4);\n }\n else {\n r = r / 12.92;\n }\n\n if (g > 0.04045) {\n g = Math.pow(((g + 0.055) / 1.055), 2.4);\n }\n else {\n g = g / 12.92;\n }\n\n if (b > 0.04045) {\n b = Math.pow(((b + 0.055) / 1.055), 2.4);\n }\n else {\n b = b / 12.92;\n }\n\n r = r * 100;\n g = g * 100;\n b = b * 100;\n\n // Observer = 2°, Illuminant = D65\n XYZ.x = r * 0.4124 + g * 0.3576 + b * 0.1805;\n XYZ.y = r * 0.2126 + g * 0.7152 + b * 0.0722;\n XYZ.z = r * 0.0193 + g * 0.1192 + b * 0.9505;\n\n return XYZ;\n };\n\n $.fn.ColorPickerSliders.XYZ2CIELab = function(XYZ) {\n var CIELab = {};\n\n // Observer = 2°, Illuminant = D65\n var X = XYZ.x / 95.047;\n var Y = XYZ.y / 100.000;\n var Z = XYZ.z / 108.883;\n\n if (X > 0.008856) {\n X = Math.pow(X, 0.333333333);\n }\n else {\n X = 7.787 * X + 0.137931034;\n }\n\n if (Y > 0.008856) {\n Y = Math.pow(Y, 0.333333333);\n }\n else {\n Y = 7.787 * Y + 0.137931034;\n }\n\n if (Z > 0.008856) {\n Z = Math.pow(Z, 0.333333333);\n }\n else {\n Z = 7.787 * Z + 0.137931034;\n }\n\n CIELab.l = (116 * Y) - 16;\n CIELab.a = 500 * (X - Y);\n CIELab.b = 200 * (Y - Z);\n\n return CIELab;\n };\n\n $.fn.ColorPickerSliders.CIELab2CIELCH = function(CIELab) {\n var CIELCH = {};\n\n CIELCH.l = CIELab.l;\n CIELCH.c = Math.sqrt(Math.pow(CIELab.a, 2) + Math.pow(CIELab.b, 2));\n\n CIELCH.h = Math.atan2(CIELab.b, CIELab.a); //Quadrant by signs\n\n if (CIELCH.h > 0) {\n CIELCH.h = (CIELCH.h / Math.PI) * 180;\n }\n else {\n CIELCH.h = 360 - (Math.abs(CIELCH.h) / Math.PI) * 180;\n }\n\n return CIELCH;\n };\n\n $.fn.ColorPickerSliders.CIELCH2CIELab = function(CIELCH) {\n var CIELab = {};\n\n CIELab.l = CIELCH.l;\n CIELab.a = Math.cos(CIELCH.h * 0.01745329251) * CIELCH.c;\n CIELab.b = Math.sin(CIELCH.h * 0.01745329251) * CIELCH.c;\n\n return CIELab;\n };\n\n $.fn.ColorPickerSliders.CIELab2XYZ = function(CIELab) {\n var XYZ = {};\n\n XYZ.y = (CIELab.l + 16) / 116;\n XYZ.x = CIELab.a / 500 + XYZ.y;\n XYZ.z = XYZ.y - CIELab.b / 200;\n\n if (Math.pow(XYZ.y, 3) > 0.008856) {\n XYZ.y = Math.pow(XYZ.y, 3);\n }\n else {\n XYZ.y = (XYZ.y - 0.137931034) / 7.787;\n }\n\n if (Math.pow(XYZ.x, 3) > 0.008856) {\n XYZ.x = Math.pow(XYZ.x, 3);\n }\n else {\n XYZ.x = (XYZ.x - 0.137931034) / 7.787;\n }\n\n if (Math.pow(XYZ.z, 3) > 0.008856) {\n XYZ.z = Math.pow(XYZ.z, 3);\n }\n else {\n XYZ.z = (XYZ.z - 0.137931034) / 7.787;\n }\n\n // Observer = 2°, Illuminant = D65\n XYZ.x = 95.047 * XYZ.x;\n XYZ.y = 100.000 * XYZ.y;\n XYZ.z = 108.883 * XYZ.z;\n\n return XYZ;\n };\n\n $.fn.ColorPickerSliders.XYZ2rgb = function(XYZ) {\n var rgb = {};\n\n // Observer = 2°, Illuminant = D65\n XYZ.x = XYZ.x / 100; // X from 0 to 95.047\n XYZ.y = XYZ.y / 100; // Y from 0 to 100.000\n XYZ.z = XYZ.z / 100; // Z from 0 to 108.883\n\n rgb.r = XYZ.x * 3.2406 + XYZ.y * -1.5372 + XYZ.z * -0.4986;\n rgb.g = XYZ.x * -0.9689 + XYZ.y * 1.8758 + XYZ.z * 0.0415;\n rgb.b = XYZ.x * 0.0557 + XYZ.y * -0.2040 + XYZ.z * 1.0570;\n\n if (rgb.r > 0.0031308) {\n rgb.r = 1.055 * (Math.pow(rgb.r, 0.41666667)) - 0.055;\n }\n else {\n rgb.r = 12.92 * rgb.r;\n }\n\n if (rgb.g > 0.0031308) {\n rgb.g = 1.055 * (Math.pow(rgb.g, 0.41666667)) - 0.055;\n }\n else {\n rgb.g = 12.92 * rgb.g;\n }\n\n if (rgb.b > 0.0031308) {\n rgb.b = 1.055 * (Math.pow(rgb.b, 0.41666667)) - 0.055;\n }\n else {\n rgb.b = 12.92 * rgb.b;\n }\n\n rgb.r = Math.round(rgb.r * 255);\n rgb.g = Math.round(rgb.g * 255);\n rgb.b = Math.round(rgb.b * 255);\n\n return rgb;\n };\n\n})(jQuery);\n","/**\n * Ajax functions, used in Panel\n */\n\n\nvar AwesomeAjax = function(prefix){\n 'use strict';\n\n var $ = jQuery; // enable jQuery\n var self = this;\n var prefix = prefix + '_';\n self.result = {};\n\n\n\n // Load model data from WP\n self.load_model = function(model_name, item_id, callback_success, callback_error){\n return self.ajax({\n action: prefix + 'get_' + model_name,\n data: {\n 'id': item_id\n },\n success_handler: callback_success,\n error_handler: callback_error\n });\n };\n\n self.publish_model = function (id, callback_success, callback_error) {\n return self.ajax({\n action: prefix + 'publish_model',\n data: {\n 'id': id\n },\n success_handler: callback_success,\n error_handler: callback_error\n });\n }\n\n // delete model by ID and model name\n self.delete_model = function(id, model_name){\n return self.ajax({\n action: prefix + 'delete_model',\n data: {\n 'id': id,\n 'model_name': model_name\n },\n success_handler: function (result) {\n return result;\n }\n });\n };\n\n // WP AJAX wrapper\n self.ajax = function (args) {\n return $.ajax({\n url: window[prefix + 'localize']['ajaxurl'],\n type: 'post',\n data: {\n action: args.action,\n security: window[prefix + 'localize']['ajax_nonce'],\n data: args.data || {}\n },\n success: function (data) {\n var responseArray = wpAjax.parseAjaxResponse(data);\n if(responseArray.errors){\n var errors = responseArray.responses[0].errors;\n args.success_error_handler(errors)\n }else{\n var result = JSON.parse(responseArray.responses[0].data);\n args.success_handler(result);\n }\n },\n error: function (data) {\n args.error_handler(data);\n }\n });\n }\n};","/**\n * System functions\n */\nvar AwesomeUtil = {\n // detect OS\n detect_os: function () {\n var os_name = \"Unknown OS\";\n if (navigator.appVersion.indexOf(\"Win\") != -1) os_name = \"Windows\";\n if (navigator.appVersion.indexOf(\"Mac\") != -1) os_name = \"MacOS\";\n if (navigator.appVersion.indexOf(\"X11\") != -1) os_name = \"UNIX\";\n if (navigator.appVersion.indexOf(\"Linux\") != -1) os_name = \"Linux\";\n return os_name;\n },\n\n // convert array to object\n toObject: function (arr) {\n var rv = {};\n for (var i = 0; i < arr.length; ++i) {\n if (typeof arr[i] === 'object') {\n rv[i] = AwesomeUtil.toObject(arr[i]);\n } else {\n rv[i] = arr[i];\n }\n }\n return rv;\n },\n\n // helper function to find some value in array of objects\n find_in_array_of_objects: function (array, key, value){\n var result = false;\n jQuery.each(array, function(index, item){\n if(item.hasOwnProperty(key) && item[key] == value){\n result = true;\n }\n });\n return result;\n },\n\n // convert HEX color to RGB color\n hex_to_rgb: function (hex){\n hex = parseInt(hex, 16);\n var r = hex >> 16;\n var g = hex >> 8 & 0xFF;\n var b = hex & 0xFF;\n return [r,g,b];\n },\n\n // calculate size properly\n calc_size: function (raw){\n raw = ''+raw;\n if(raw.endsWith('%') || raw.endsWith('px')){\n return raw;\n }\n var result = raw.replace('/[^0-9]/', '');\n return result + 'px';\n },\n\n // clean number from non-digit characters\n clean_number: function (raw) {\n return parseInt(raw.replace(/\\D+/g, ''));\n },\n\n get_keys: function (obj){\n var result = {};\n var i = 0;\n _.each(obj, function (value, key, list) {\n if(typeof value === 'object'){\n result[i] = AwesomeUtil.get_keys(value);\n }else{\n result[i] = key;\n }\n i++;\n });\n return result;\n },\n\n find_key_by_value: function (needle, haystack) {\n var result;\n _.find(haystack, function(value, key){\n if(typeof value === 'object'){\n result = AwesomeUtil.find_key_by_value(needle, value);\n }else{\n if (value === needle) {\n result = key;\n return true;\n }else{\n return false;\n }\n }\n });\n return result;\n },\n\n find_index_by_value: function (needle, haystack) {\n var keys = AwesomeUtil.get_keys(haystack);\n var key = AwesomeUtil.find_key_by_value(needle, haystack);\n var result = AwesomeUtil.find_key_by_value(key, keys);\n\n return result;\n },\n\n removeClass: function (el, start_with) {\n jQuery(el).removeClass (function (index, css) {\n var regex = new RegExp('(^|\\\\s)' + start_with + '\\\\S+', 'g');\n return (css.match (regex) || []).join(' ');\n });\n }\n};\n\n// smart replace for templates\nString.prototype.replace_all = function(find, replace){\n return this.replace(new RegExp(find, 'g'), replace);\n};\n\n// capitalize\nString.prototype.capitalize = function () {\n return this.charAt(0).toUpperCase() + this.slice(1);\n};\n\n// check string ends with special characters\nString.prototype.endsWith = function(end){\n return this.indexOf(end, this.length - end.length) !== -1;\n};\n\n// 10/19 removed due to conflict\n// Array last item\n/*if (!Array.prototype.last){\n Array.prototype.last = function(){\n return this[this.length - 1];\n };\n};*/\n\nvar $ = jQuery;\n// check if element visible on screen\n$.fn.isVisible = function (parent) {\n var $parent = parent !== 'undefined' ? $(parent) : $(window);\n var windowScrollTopView = $parent.scrollTop();\n var elemTop = $(this).height();\n return (\n elemTop >= windowScrollTopView\n );\n};","/*\n * jQuery.fontselect - A font selector for the Google Web Fonts api\n * Tom Moor, http://tommoor.com\n * Copyright (c) 2011 Tom Moor\n * MIT Licensed\n * @version 0.1\n */\n\n(function ($) {\n\n $.fn.fontselect = function (options) {\n\n var __bind = function (fn, me) {\n return function () {\n return fn.apply(me, arguments);\n };\n };\n\n var settings = {\n fonts : [\"ABeeZee\",\"Abel\",\"Abril Fatface\",\"Aclonica\",\"Acme\",\"Actor\",\"Adamina\",\"Advent Pro\",\"Aguafina Script\",\"Akronim\",\"Aladin\",\"Aldrich\",\"Alef\",\"Alegreya\",\"Alegreya SC\",\"Alegreya Sans\",\"Alegreya Sans SC\",\"Alex Brush\",\"Alfa Slab One\",\"Alice\",\"Alike\",\"Alike Angular\",\"Allan\",\"Allerta\",\"Allerta Stencil\",\"Allura\",\"Almendra\",\"Almendra Display\",\"Almendra SC\",\"Amarante\",\"Amaranth\",\"Amatic SC\",\"Amethysta\",\"Amiri\",\"Amita\",\"Anaheim\",\"Andada\",\"Andika\",\"Angkor\",\"Annie Use Your Telescope\",\"Anonymous Pro\",\"Antic\",\"Antic Didone\",\"Antic Slab\",\"Anton\",\"Arapey\",\"Arbutus\",\"Arbutus Slab\",\"Architects Daughter\",\"Archivo Black\",\"Archivo Narrow\",\"Arimo\",\"Arizonia\",\"Armata\",\"Artifika\",\"Arvo\",\"Arya\",\"Asap\",\"Asar\",\"Asset\",\"Astloch\",\"Asul\",\"Atomic Age\",\"Aubrey\",\"Audiowide\",\"Autour One\",\"Average\",\"Average Sans\",\"Averia Gruesa Libre\",\"Averia Libre\",\"Averia Sans Libre\",\"Averia Serif Libre\",\"Bad Script\",\"Balthazar\",\"Bangers\",\"Basic\",\"Battambang\",\"Baumans\",\"Bayon\",\"Belgrano\",\"Belleza\",\"BenchNine\",\"Bentham\",\"Berkshire Swash\",\"Bevan\",\"Bigelow Rules\",\"Bigshot One\",\"Bilbo\",\"Bilbo Swash Caps\",\"Biryani\",\"Bitter\",\"Black Ops One\",\"Bokor\",\"Bonbon\",\"Boogaloo\",\"Bowlby One\",\"Bowlby One SC\",\"Brawler\",\"Bree Serif\",\"Bubblegum Sans\",\"Bubbler One\",\"Buda\",\"Buenard\",\"Butcherman\",\"Butterfly Kids\",\"Cabin\",\"Cabin Condensed\",\"Cabin Sketch\",\"Caesar Dressing\",\"Cagliostro\",\"Calligraffitti\",\"Cambay\",\"Cambo\",\"Candal\",\"Cantarell\",\"Cantata One\",\"Cantora One\",\"Capriola\",\"Cardo\",\"Carme\",\"Carrois Gothic\",\"Carrois Gothic SC\",\"Carter One\",\"Catamaran\",\"Caudex\",\"Caveat\",\"Caveat Brush\",\"Cedarville Cursive\",\"Ceviche One\",\"Changa One\",\"Chango\",\"Chau Philomene One\",\"Chela One\",\"Chelsea Market\",\"Chenla\",\"Cherry Cream Soda\",\"Cherry Swash\",\"Chewy\",\"Chicle\",\"Chivo\",\"Chonburi\",\"Cinzel\",\"Cinzel Decorative\",\"Clicker Script\",\"Coda\",\"Coda Caption\",\"Codystar\",\"Combo\",\"Comfortaa\",\"Coming Soon\",\"Concert One\",\"Condiment\",\"Content\",\"Contrail One\",\"Convergence\",\"Cookie\",\"Copse\",\"Corben\",\"Courgette\",\"Cousine\",\"Coustard\",\"Covered By Your Grace\",\"Crafty Girls\",\"Creepster\",\"Crete Round\",\"Crimson Text\",\"Croissant One\",\"Crushed\",\"Cuprum\",\"Cutive\",\"Cutive Mono\",\"Damion\",\"Dancing Script\",\"Dangrek\",\"Dawning of a New Day\",\"Days One\",\"Dekko\",\"Delius\",\"Delius Swash Caps\",\"Delius Unicase\",\"Della Respira\",\"Denk One\",\"Devonshire\",\"Dhurjati\",\"Didact Gothic\",\"Diplomata\",\"Diplomata SC\",\"Domine\",\"Donegal One\",\"Doppio One\",\"Dorsa\",\"Dosis\",\"Dr Sugiyama\",\"Droid Sans\",\"Droid Sans Mono\",\"Droid Serif\",\"Duru Sans\",\"Dynalight\",\"EB Garamond\",\"Eagle Lake\",\"Eater\",\"Economica\",\"Eczar\",\"Ek Mukta\",\"Electrolize\",\"Elsie\",\"Elsie Swash Caps\",\"Emblema One\",\"Emilys Candy\",\"Engagement\",\"Englebert\",\"Enriqueta\",\"Erica One\",\"Esteban\",\"Euphoria Script\",\"Ewert\",\"Exo\",\"Exo 2\",\"Expletus Sans\",\"Fanwood Text\",\"Fascinate\",\"Fascinate Inline\",\"Faster One\",\"Fasthand\",\"Fauna One\",\"Federant\",\"Federo\",\"Felipa\",\"Fenix\",\"Finger Paint\",\"Fira Mono\",\"Fira Sans\",\"Fjalla One\",\"Fjord One\",\"Flamenco\",\"Flavors\",\"Fondamento\",\"Fontdiner Swanky\",\"Forum\",\"Francois One\",\"Freckle Face\",\"Fredericka the Great\",\"Fredoka One\",\"Freehand\",\"Fresca\",\"Frijole\",\"Fruktur\",\"Fugaz One\",\"GFS Didot\",\"GFS Neohellenic\",\"Gabriela\",\"Gafata\",\"Galdeano\",\"Galindo\",\"Gentium Basic\",\"Gentium Book Basic\",\"Geo\",\"Geostar\",\"Geostar Fill\",\"Germania One\",\"Gidugu\",\"Gilda Display\",\"Give You Glory\",\"Glass Antiqua\",\"Glegoo\",\"Gloria Hallelujah\",\"Goblin One\",\"Gochi Hand\",\"Gorditas\",\"Goudy Bookletter 1911\",\"Graduate\",\"Grand Hotel\",\"Gravitas One\",\"Great Vibes\",\"Griffy\",\"Gruppo\",\"Gudea\",\"Gurajada\",\"Habibi\",\"Halant\",\"Hammersmith One\",\"Hanalei\",\"Hanalei Fill\",\"Handlee\",\"Hanuman\",\"Happy Monkey\",\"Headland One\",\"Henny Penny\",\"Herr Von Muellerhoff\",\"Hind\",\"Hind Siliguri\",\"Hind Vadodara\",\"Holtwood One SC\",\"Homemade Apple\",\"Homenaje\",\"IM Fell DW Pica\",\"IM Fell DW Pica SC\",\"IM Fell Double Pica\",\"IM Fell Double Pica SC\",\"IM Fell English\",\"IM Fell English SC\",\"IM Fell French Canon\",\"IM Fell French Canon SC\",\"IM Fell Great Primer\",\"IM Fell Great Primer SC\",\"Iceberg\",\"Iceland\",\"Imprima\",\"Inconsolata\",\"Inder\",\"Indie Flower\",\"Inika\",\"Inknut Antiqua\",\"Irish Grover\",\"Istok Web\",\"Italiana\",\"Italianno\",\"Itim\",\"Jacques Francois\",\"Jacques Francois Shadow\",\"Jaldi\",\"Jim Nightshade\",\"Jockey One\",\"Jolly Lodger\",\"Josefin Sans\",\"Josefin Slab\",\"Joti One\",\"Judson\",\"Julee\",\"Julius Sans One\",\"Junge\",\"Jura\",\"Just Another Hand\",\"Just Me Again Down Here\",\"Kadwa\",\"Kalam\",\"Kameron\",\"Kanit\",\"Kantumruy\",\"Karla\",\"Karma\",\"Kaushan Script\",\"Kavoon\",\"Kdam Thmor\",\"Keania One\",\"Kelly Slab\",\"Kenia\",\"Khand\",\"Khmer\",\"Khula\",\"Kite One\",\"Knewave\",\"Kotta One\",\"Koulen\",\"Kranky\",\"Kreon\",\"Kristi\",\"Krona One\",\"Kurale\",\"La Belle Aurore\",\"Laila\",\"Lakki Reddy\",\"Lancelot\",\"Lateef\",\"Lato\",\"League Script\",\"Leckerli One\",\"Ledger\",\"Lekton\",\"Lemon\",\"Libre Baskerville\",\"Life Savers\",\"Lilita One\",\"Lily Script One\",\"Limelight\",\"Linden Hill\",\"Lobster\",\"Lobster Two\",\"Londrina Outline\",\"Londrina Shadow\",\"Londrina Sketch\",\"Londrina Solid\",\"Lora\",\"Love Ya Like A Sister\",\"Loved by the King\",\"Lovers Quarrel\",\"Luckiest Guy\",\"Lusitana\",\"Lustria\",\"Macondo\",\"Macondo Swash Caps\",\"Magra\",\"Maiden Orange\",\"Mako\",\"Mallanna\",\"Mandali\",\"Marcellus\",\"Marcellus SC\",\"Marck Script\",\"Margarine\",\"Marko One\",\"Marmelad\",\"Martel\",\"Martel Sans\",\"Marvel\",\"Mate\",\"Mate SC\",\"Maven Pro\",\"McLaren\",\"Meddon\",\"MedievalSharp\",\"Medula One\",\"Megrim\",\"Meie Script\",\"Merienda\",\"Merienda One\",\"Merriweather\",\"Merriweather Sans\",\"Metal\",\"Metal Mania\",\"Metamorphous\",\"Metrophobic\",\"Michroma\",\"Milonga\",\"Miltonian\",\"Miltonian Tattoo\",\"Miniver\",\"Miss Fajardose\",\"Modak\",\"Modern Antiqua\",\"Molengo\",\"Molle\",\"Monda\",\"Monofett\",\"Monoton\",\"Monsieur La Doulaise\",\"Montaga\",\"Montez\",\"Montserrat\",\"Montserrat Alternates\",\"Montserrat Subrayada\",\"Moul\",\"Moulpali\",\"Mountains of Christmas\",\"Mouse Memoirs\",\"Mr Bedfort\",\"Mr Dafoe\",\"Mr De Haviland\",\"Mrs Saint Delafield\",\"Mrs Sheppards\",\"Muli\",\"Mystery Quest\",\"NTR\",\"Neucha\",\"Neuton\",\"New Rocker\",\"News Cycle\",\"Niconne\",\"Nixie One\",\"Nobile\",\"Nokora\",\"Norican\",\"Nosifer\",\"Nothing You Could Do\",\"Noticia Text\",\"Noto Sans\",\"Noto Serif\",\"Nova Cut\",\"Nova Flat\",\"Nova Mono\",\"Nova Oval\",\"Nova Round\",\"Nova Script\",\"Nova Slim\",\"Nova Square\",\"Numans\",\"Nunito\",\"Odor Mean Chey\",\"Offside\",\"Old Standard TT\",\"Oldenburg\",\"Oleo Script\",\"Oleo Script Swash Caps\",\"Open Sans\",\"Open Sans Condensed\",\"Oranienbaum\",\"Orbitron\",\"Oregano\",\"Orienta\",\"Original Surfer\",\"Oswald\",\"Over the Rainbow\",\"Overlock\",\"Overlock SC\",\"Ovo\",\"Oxygen\",\"Oxygen Mono\",\"PT Mono\",\"PT Sans\",\"PT Sans Caption\",\"PT Sans Narrow\",\"PT Serif\",\"PT Serif Caption\",\"Pacifico\",\"Palanquin\",\"Palanquin Dark\",\"Paprika\",\"Parisienne\",\"Passero One\",\"Passion One\",\"Pathway Gothic One\",\"Patrick Hand\",\"Patrick Hand SC\",\"Patua One\",\"Paytone One\",\"Peddana\",\"Peralta\",\"Permanent Marker\",\"Petit Formal Script\",\"Petrona\",\"Philosopher\",\"Piedra\",\"Pinyon Script\",\"Pirata One\",\"Plaster\",\"Play\",\"Playball\",\"Playfair Display\",\"Playfair Display SC\",\"Podkova\",\"Poiret One\",\"Poller One\",\"Poly\",\"Pompiere\",\"Pontano Sans\",\"Poppins\",\"Port Lligat Sans\",\"Port Lligat Slab\",\"Pragati Narrow\",\"Prata\",\"Preahvihear\",\"Press Start 2P\",\"Princess Sofia\",\"Prociono\",\"Prosto One\",\"Puritan\",\"Purple Purse\",\"Quando\",\"Quantico\",\"Quattrocento\",\"Quattrocento Sans\",\"Questrial\",\"Quicksand\",\"Quintessential\",\"Qwigley\",\"Racing Sans One\",\"Radley\",\"Rajdhani\",\"Raleway\",\"Raleway Dots\",\"Ramabhadra\",\"Ramaraja\",\"Rambla\",\"Rammetto One\",\"Ranchers\",\"Rancho\",\"Ranga\",\"Rationale\",\"Ravi Prakash\",\"Redressed\",\"Reenie Beanie\",\"Revalia\",\"Rhodium Libre\",\"Ribeye\",\"Ribeye Marrow\",\"Righteous\",\"Risque\",\"Roboto\",\"Roboto Condensed\",\"Roboto Mono\",\"Roboto Slab\",\"Rochester\",\"Rock Salt\",\"Rokkitt\",\"Romanesco\",\"Ropa Sans\",\"Rosario\",\"Rosarivo\",\"Rouge Script\",\"Rozha One\",\"Rubik\",\"Rubik Mono One\",\"Rubik One\",\"Ruda\",\"Rufina\",\"Ruge Boogie\",\"Ruluko\",\"Rum Raisin\",\"Ruslan Display\",\"Russo One\",\"Ruthie\",\"Rye\",\"Sacramento\",\"Sahitya\",\"Sail\",\"Salsa\",\"Sanchez\",\"Sancreek\",\"Sansita One\",\"Sarala\",\"Sarina\",\"Sarpanch\",\"Satisfy\",\"Scada\",\"Scheherazade\",\"Schoolbell\",\"Seaweed Script\",\"Sevillana\",\"Seymour One\",\"Shadows Into Light\",\"Shadows Into Light Two\",\"Shanti\",\"Share\",\"Share Tech\",\"Share Tech Mono\",\"Shojumaru\",\"Short Stack\",\"Siemreap\",\"Sigmar One\",\"Signika\",\"Signika Negative\",\"Simonetta\",\"Sintony\",\"Sirin Stencil\",\"Six Caps\",\"Skranji\",\"Slabo 13px\",\"Slabo 27px\",\"Slackey\",\"Smokum\",\"Smythe\",\"Sniglet\",\"Snippet\",\"Snowburst One\",\"Sofadi One\",\"Sofia\",\"Sonsie One\",\"Sorts Mill Goudy\",\"Source Code Pro\",\"Source Sans Pro\",\"Source Serif Pro\",\"Special Elite\",\"Spicy Rice\",\"Spinnaker\",\"Spirax\",\"Squada One\",\"Sree Krushnadevaraya\",\"Stalemate\",\"Stalinist One\",\"Stardos Stencil\",\"Stint Ultra Condensed\",\"Stint Ultra Expanded\",\"Stoke\",\"Strait\",\"Sue Ellen Francisco\",\"Sumana\",\"Sunshiney\",\"Supermercado One\",\"Sura\",\"Suranna\",\"Suravaram\",\"Suwannaphum\",\"Swanky and Moo Moo\",\"Syncopate\",\"Tangerine\",\"Taprom\",\"Tauri\",\"Teko\",\"Telex\",\"Tenali Ramakrishna\",\"Tenor Sans\",\"Text Me One\",\"The Girl Next Door\",\"Tienne\",\"Tillana\",\"Timmana\",\"Tinos\",\"Titan One\",\"Titillium Web\",\"Trade Winds\",\"Trocchi\",\"Trochut\",\"Trykker\",\"Tulpen One\",\"Ubuntu\",\"Ubuntu Condensed\",\"Ubuntu Mono\",\"Ultra\",\"Uncial Antiqua\",\"Underdog\",\"Unica One\",\"UnifrakturCook\",\"UnifrakturMaguntia\",\"Unkempt\",\"Unlock\",\"Unna\",\"VT323\",\"Vampiro One\",\"Varela\",\"Varela Round\",\"Vast Shadow\",\"Vesper Libre\",\"Vibur\",\"Vidaloka\",\"Viga\",\"Voces\",\"Volkhov\",\"Vollkorn\",\"Voltaire\",\"Waiting for the Sunrise\",\"Wallpoet\",\"Walter Turncoat\",\"Warnes\",\"Wellfleet\",\"Wendy One\",\"Wire One\",\"Work Sans\",\"Yanone Kaffeesatz\",\"Yantramanav\",\"Yellowtail\",\"Yeseva One\",\"Yesteryear\",\"Zeyada\"],\n empty: 'empty',\n style: 'font-select',\n placeholder: 'Select a font',\n lookahead: 2,\n api: '//fonts.googleapis.com/css?family='\n };\n\n var Fontselect = (function () {\n\n function Fontselect(original, o) {\n this.$original = $(original);\n this.options = o;\n this.active = false;\n this.setupHtml();\n this.getVisibleFonts();\n this.bindEvents();\n\n var font = this.$original.val();\n if (font && font !== this.options.empty) {\n this.updateSelected();\n this.addFontLink(font);\n }\n }\n\n Fontselect.prototype.bindEvents = function () {\n\n $('li', this.$results)\n .click(__bind(this.selectFont, this))\n .mouseenter(__bind(this.activateFont, this))\n .mouseleave(__bind(this.deactivateFont, this));\n\n $('span', this.$select).click(__bind(this.toggleDrop, this));\n this.$arrow.click(__bind(this.toggleDrop, this));\n };\n\n Fontselect.prototype.toggleDrop = function (ev) {\n if (this.active) {\n this.$element.removeClass('font-select-active');\n this.$drop.hide();\n clearInterval(this.visibleInterval);\n } else {\n this.$element.addClass('font-select-active');\n this.$drop.show();\n this.moveToSelected();\n this.visibleInterval = setInterval(__bind(this.getVisibleFonts, this), 500);\n }\n\n this.active = !this.active;\n };\n\n Fontselect.prototype.selectFont = function () {\n var font = $('li.active', this.$results).data('value');\n this.$original.val(font).change();\n this.updateSelected();\n this.toggleDrop();\n };\n\n Fontselect.prototype.moveToSelected = function () {\n var $li, font = this.$original.val();\n\n if (font) {\n $li = $(\"li[data-value='\" + font + \"']\", this.$results);\n } else {\n $li = $(\"li\", this.$results).first();\n }\n this.$results.scrollTop(0).scrollTop($li.addClass('active').position().top);\n };\n\n Fontselect.prototype.activateFont = function (ev) {\n $('li.active', this.$results).removeClass('active');\n $(ev.currentTarget).addClass('active');\n };\n\n Fontselect.prototype.deactivateFont = function (ev) {\n\n $(ev.currentTarget).removeClass('active');\n };\n\n Fontselect.prototype.updateSelected = function () {\n var font = this.$original.val();\n var val = this.toReadable(font) == this.options.empty ? this.options.placeholder : this.toReadable(font);\n $('span', this.$element).text(val).css({\n 'font-family': 'Lato'\n });\n if (font !== this.options.empty) {\n this.addFontLink(font);\n $('span', this.$element).css(this.toStyle(font));\n }\n };\n\n Fontselect.prototype.setupHtml = function () {\n this.$original.empty().hide();\n this.$element = $('<div>', {'class': this.options.style});\n this.$arrow = $('<div><b></b></div>');\n this.$select = $('<a><span>' + this.options.placeholder + '</span></a>');\n this.$drop = $('<div>', {'class': 'fs-drop'});\n this.$results = $('<ul>', {'class': 'fs-results'});\n this.$original.before(this.$element.append(this.$select.append(this.$arrow)).append(this.$drop));\n this.$drop.append(this.$results.append(this.fontsAsHtml())).hide();\n };\n\n Fontselect.prototype.fontsAsHtml = function () {\n\n var l = this.options.fonts.length;\n var r, s, h = '';\n\n h += '<li data-value=\"' + this.options.empty + '\">' + this.options.placeholder + '</li>';\n for (var i = 0; i < l; i++) {\n r = this.toReadable(this.options.fonts[i]);\n //s = this.toStyle(fonts[i]);\n //h += '<li data-value=\"' + fonts[i] + '\" style=\"font-family: ' + s['font-family'] + '; font-weight: ' + s['font-weight'] + '\">' + r + '</li>';\n h += '<li data-value=\"' + this.options.fonts[i] + '\">' + r + '</li>';\n }\n\n return h;\n };\n\n Fontselect.prototype.toReadable = function (font) {\n return font.replace(/[\\+|:]/g, ' ');\n };\n\n Fontselect.prototype.toStyle = function (font) {\n var t = font.split(':');\n return {'font-family': this.toReadable(t[0]), 'font-weight': (t[1] || 400)};\n };\n\n Fontselect.prototype.getVisibleFonts = function () {\n\n if (this.$results.is(':hidden')) return;\n\n var fs = this;\n var top = this.$results.scrollTop();\n var bottom = top + this.$results.height();\n\n if (this.options.lookahead) {\n var li = $('li', this.$results).first().height();\n bottom += li * this.options.lookahead;\n }\n\n /*$('li', this.$results).each(function () {\n\n var ft = $(this).position().top + top;\n var fb = ft + $(this).height();\n\n if ((fb >= top) && (ft <= bottom)) {\n var font = $(this).data('value');\n if (font !== fs.options.empty) {\n fs.addFontLink(font);\n }\n }\n\n });*/\n };\n\n Fontselect.prototype.addFontLink = function (font) {\n var link = this.options.api + font;\n\n if ($(\"link[href*='\" + font + \"']\").length === 0) {\n $('link:last').after('<link href=\"' + link + '\" rel=\"stylesheet\" type=\"text/css\">');\n }\n\n $( document ).trigger( 'google-font-added', [ font, link ])\n };\n\n return Fontselect;\n })();\n\n return this.each(function () {\n // If options exist, lets merge them\n if (options) $.extend(settings, options);\n return new Fontselect(this, settings);\n });\n\n };\n})(jQuery);"]}