10 __coverage__['build/attribute-core/attribute-core.js'] = {"path":"build/attribute-core/attribute-core.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0,0],"37":[0,0],"38":[0,0],"39":[0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0],"45":[0,0],"46":[0,0],"47":[0,0],"48":[0,0],"49":[0,0],"50":[0,0],"51":[0,0],"52":[0,0],"53":[0,0],"54":[0,0],"55":[0,0],"56":[0,0,0],"57":[0,0],"58":[0,0,0],"59":[0,0,0],"60":[0,0],"61":[0,0],"62":[0,0],"63":[0,0],"64":[0,0],"65":[0,0],"66":[0,0],"67":[0,0],"68":[0,0],"69":[0,0],"70":[0,0],"71":[0,0],"72":[0,0],"73":[0,0],"74":[0,0],"75":[0,0],"76":[0,0,0],"77":[0,0],"78":[0,0],"79":[0,0],"80":[0,0],"81":[0,0],"82":[0,0],"83":[0,0],"84":[0,0],"85":[0,0],"86":[0,0],"87":[0,0],"88":[0,0],"89":[0,0],"90":[0,0],"91":[0,0],"92":[0,0],"93":[0,0],"94":[0,0],"95":[0,0],"96":[0,0],"97":[0,0],"98":[0,0],"99":[0,0],"100":[0,0],"101":[0,0],"102":[0,0],"103":[0,0],"104":[0,0,0,0],"105":[0,0],"106":[0,0],"107":[0,0,0],"108":[0,0],"109":[0,0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":26},"end":{"line":1,"column":45}}},"2":{"name":"(anonymous_2)","line":14,"loc":{"start":{"line":14,"column":14},"end":{"line":14,"column":25}}},"3":{"name":"(anonymous_3)","line":32,"loc":{"start":{"line":32,"column":13},"end":{"line":32,"column":38}}},"4":{"name":"(anonymous_4)","line":49,"loc":{"start":{"line":49,"column":16},"end":{"line":49,"column":36}}},"5":{"name":"(anonymous_5)","line":71,"loc":{"start":{"line":71,"column":16},"end":{"line":71,"column":36}}},"6":{"name":"(anonymous_6)","line":86,"loc":{"start":{"line":86,"column":19},"end":{"line":86,"column":39}}},"7":{"name":"(anonymous_7)","line":96,"loc":{"start":{"line":96,"column":28},"end":{"line":96,"column":49}}},"8":{"name":"(anonymous_8)","line":110,"loc":{"start":{"line":110,"column":13},"end":{"line":110,"column":33}}},"9":{"name":"(anonymous_9)","line":131,"loc":{"start":{"line":131,"column":17},"end":{"line":131,"column":43}}},"10":{"name":"AttributeCore","line":226,"loc":{"start":{"line":226,"column":4},"end":{"line":226,"column":48}}},"11":{"name":"(anonymous_11)","line":274,"loc":{"start":{"line":274,"column":33},"end":{"line":274,"column":50}}},"12":{"name":"(anonymous_12)","line":301,"loc":{"start":{"line":301,"column":24},"end":{"line":301,"column":54}}},"13":{"name":"(anonymous_13)","line":404,"loc":{"start":{"line":404,"column":18},"end":{"line":404,"column":47}}},"14":{"name":"(anonymous_14)","line":473,"loc":{"start":{"line":473,"column":19},"end":{"line":473,"column":34}}},"15":{"name":"(anonymous_15)","line":489,"loc":{"start":{"line":489,"column":14},"end":{"line":489,"column":29}}},"16":{"name":"(anonymous_16)","line":502,"loc":{"start":{"line":502,"column":21},"end":{"line":502,"column":36}}},"17":{"name":"(anonymous_17)","line":515,"loc":{"start":{"line":515,"column":22},"end":{"line":515,"column":46}}},"18":{"name":"(anonymous_18)","line":547,"loc":{"start":{"line":547,"column":14},"end":{"line":547,"column":40}}},"19":{"name":"(anonymous_19)","line":563,"loc":{"start":{"line":563,"column":15},"end":{"line":563,"column":41}}},"20":{"name":"(anonymous_20)","line":584,"loc":{"start":{"line":584,"column":19},"end":{"line":584,"column":53}}},"21":{"name":"(anonymous_21)","line":692,"loc":{"start":{"line":692,"column":25},"end":{"line":692,"column":45}}},"22":{"name":"(anonymous_22)","line":719,"loc":{"start":{"line":719,"column":19},"end":{"line":719,"column":34}}},"23":{"name":"(anonymous_23)","line":772,"loc":{"start":{"line":772,"column":23},"end":{"line":772,"column":43}}},"24":{"name":"(anonymous_24)","line":791,"loc":{"start":{"line":791,"column":23},"end":{"line":791,"column":45}}},"25":{"name":"(anonymous_25)","line":816,"loc":{"start":{"line":816,"column":22},"end":{"line":816,"column":86}}},"26":{"name":"(anonymous_26)","line":893,"loc":{"start":{"line":893,"column":19},"end":{"line":893,"column":41}}},"27":{"name":"(anonymous_27)","line":907,"loc":{"start":{"line":907,"column":20},"end":{"line":907,"column":42}}},"28":{"name":"(anonymous_28)","line":925,"loc":{"start":{"line":925,"column":19},"end":{"line":925,"column":35}}},"29":{"name":"(anonymous_29)","line":938,"loc":{"start":{"line":938,"column":20},"end":{"line":938,"column":36}}},"30":{"name":"(anonymous_30)","line":980,"loc":{"start":{"line":980,"column":19},"end":{"line":980,"column":48}}},"31":{"name":"(anonymous_31)","line":1008,"loc":{"start":{"line":1008,"column":20},"end":{"line":1008,"column":49}}},"32":{"name":"(anonymous_32)","line":1065,"loc":{"start":{"line":1065,"column":24},"end":{"line":1065,"column":44}}},"33":{"name":"(anonymous_33)","line":1115,"loc":{"start":{"line":1115,"column":26},"end":{"line":1115,"column":58}}},"34":{"name":"(anonymous_34)","line":1178,"loc":{"start":{"line":1178,"column":21},"end":{"line":1178,"column":51}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1196,"column":36}},"2":{"start":{"line":14,"column":4},"end":{"line":20,"column":6}},"3":{"start":{"line":19,"column":8},"end":{"line":19,"column":23}},"4":{"start":{"line":22,"column":4},"end":{"line":149,"column":6}},"5":{"start":{"line":33,"column":12},"end":{"line":33,"column":39}},"6":{"start":{"line":35,"column":12},"end":{"line":37,"column":13}},"7":{"start":{"line":36,"column":16},"end":{"line":36,"column":44}},"8":{"start":{"line":39,"column":12},"end":{"line":39,"column":28}},"9":{"start":{"line":50,"column":12},"end":{"line":51,"column":20}},"10":{"start":{"line":53,"column":12},"end":{"line":55,"column":13}},"11":{"start":{"line":54,"column":16},"end":{"line":54,"column":44}},"12":{"start":{"line":57,"column":12},"end":{"line":61,"column":13}},"13":{"start":{"line":58,"column":16},"end":{"line":60,"column":17}},"14":{"start":{"line":59,"column":20},"end":{"line":59,"column":41}},"15":{"start":{"line":72,"column":12},"end":{"line":72,"column":39}},"16":{"start":{"line":74,"column":12},"end":{"line":76,"column":13}},"17":{"start":{"line":75,"column":16},"end":{"line":75,"column":33}},"18":{"start":{"line":87,"column":12},"end":{"line":87,"column":21}},"19":{"start":{"line":89,"column":12},"end":{"line":99,"column":13}},"20":{"start":{"line":90,"column":16},"end":{"line":90,"column":33}},"21":{"start":{"line":92,"column":16},"end":{"line":94,"column":17}},"22":{"start":{"line":93,"column":20},"end":{"line":93,"column":38}},"23":{"start":{"line":96,"column":16},"end":{"line":98,"column":25}},"24":{"start":{"line":97,"column":20},"end":{"line":97,"column":77}},"25":{"start":{"line":111,"column":12},"end":{"line":111,"column":39}},"26":{"start":{"line":113,"column":12},"end":{"line":115,"column":13}},"27":{"start":{"line":114,"column":16},"end":{"line":114,"column":33}},"28":{"start":{"line":132,"column":12},"end":{"line":133,"column":25}},"29":{"start":{"line":135,"column":12},"end":{"line":145,"column":13}},"30":{"start":{"line":136,"column":16},"end":{"line":136,"column":27}},"31":{"start":{"line":137,"column":19},"end":{"line":145,"column":13}},"32":{"start":{"line":138,"column":16},"end":{"line":138,"column":25}},"33":{"start":{"line":140,"column":16},"end":{"line":144,"column":17}},"34":{"start":{"line":141,"column":20},"end":{"line":143,"column":21}},"35":{"start":{"line":142,"column":24},"end":{"line":142,"column":45}},"36":{"start":{"line":147,"column":12},"end":{"line":147,"column":23}},"37":{"start":{"line":171,"column":4},"end":{"line":193,"column":22}},"38":{"start":{"line":226,"column":4},"end":{"line":234,"column":5}},"39":{"start":{"line":231,"column":8},"end":{"line":231,"column":28}},"40":{"start":{"line":233,"column":8},"end":{"line":233,"column":48}},"41":{"start":{"line":248,"column":4},"end":{"line":248,"column":37}},"42":{"start":{"line":249,"column":4},"end":{"line":249,"column":48}},"43":{"start":{"line":263,"column":4},"end":{"line":263,"column":122}},"44":{"start":{"line":274,"column":4},"end":{"line":285,"column":6}},"45":{"start":{"line":275,"column":8},"end":{"line":282,"column":9}},"46":{"start":{"line":276,"column":12},"end":{"line":276,"column":35}},"47":{"start":{"line":277,"column":12},"end":{"line":281,"column":13}},"48":{"start":{"line":278,"column":16},"end":{"line":280,"column":17}},"49":{"start":{"line":279,"column":20},"end":{"line":279,"column":55}},"50":{"start":{"line":284,"column":8},"end":{"line":284,"column":21}},"51":{"start":{"line":287,"column":4},"end":{"line":1191,"column":6}},"52":{"start":{"line":302,"column":12},"end":{"line":302,"column":40}},"53":{"start":{"line":303,"column":12},"end":{"line":303,"column":49}},"54":{"start":{"line":407,"column":12},"end":{"line":412,"column":25}},"55":{"start":{"line":414,"column":12},"end":{"line":414,"column":34}},"56":{"start":{"line":416,"column":12},"end":{"line":418,"column":13}},"57":{"start":{"line":417,"column":16},"end":{"line":417,"column":40}},"58":{"start":{"line":420,"column":12},"end":{"line":420,"column":43}},"59":{"start":{"line":422,"column":12},"end":{"line":460,"column":13}},"60":{"start":{"line":423,"column":16},"end":{"line":426,"column":18}},"61":{"start":{"line":430,"column":16},"end":{"line":459,"column":17}},"62":{"start":{"line":432,"column":20},"end":{"line":432,"column":49}},"63":{"start":{"line":435,"column":20},"end":{"line":446,"column":21}},"64":{"start":{"line":444,"column":24},"end":{"line":444,"column":45}},"65":{"start":{"line":445,"column":24},"end":{"line":445,"column":49}},"66":{"start":{"line":448,"column":20},"end":{"line":448,"column":40}},"67":{"start":{"line":449,"column":20},"end":{"line":449,"column":47}},"68":{"start":{"line":451,"column":20},"end":{"line":451,"column":40}},"69":{"start":{"line":453,"column":20},"end":{"line":456,"column":21}},"70":{"start":{"line":455,"column":24},"end":{"line":455,"column":46}},"71":{"start":{"line":458,"column":20},"end":{"line":458,"column":48}},"72":{"start":{"line":462,"column":12},"end":{"line":462,"column":24}},"73":{"start":{"line":474,"column":12},"end":{"line":474,"column":52}},"74":{"start":{"line":490,"column":12},"end":{"line":490,"column":39}},"75":{"start":{"line":503,"column":12},"end":{"line":503,"column":47}},"76":{"start":{"line":516,"column":12},"end":{"line":516,"column":36}},"77":{"start":{"line":518,"column":12},"end":{"line":518,"column":55}},"78":{"start":{"line":520,"column":12},"end":{"line":531,"column":13}},"79":{"start":{"line":526,"column":16},"end":{"line":526,"column":50}},"80":{"start":{"line":528,"column":16},"end":{"line":528,"column":41}},"81":{"start":{"line":530,"column":16},"end":{"line":530,"column":44}},"82":{"start":{"line":548,"column":12},"end":{"line":548,"column":50}},"83":{"start":{"line":564,"column":12},"end":{"line":564,"column":56}},"84":{"start":{"line":585,"column":12},"end":{"line":595,"column":29}},"85":{"start":{"line":597,"column":12},"end":{"line":602,"column":13}},"86":{"start":{"line":598,"column":16},"end":{"line":598,"column":31}},"87":{"start":{"line":600,"column":16},"end":{"line":600,"column":39}},"88":{"start":{"line":601,"column":16},"end":{"line":601,"column":36}},"89":{"start":{"line":605,"column":12},"end":{"line":607,"column":13}},"90":{"start":{"line":606,"column":16},"end":{"line":606,"column":55}},"91":{"start":{"line":609,"column":12},"end":{"line":609,"column":41}},"92":{"start":{"line":611,"column":12},"end":{"line":614,"column":13}},"93":{"start":{"line":612,"column":16},"end":{"line":612,"column":31}},"94":{"start":{"line":613,"column":16},"end":{"line":613,"column":45}},"95":{"start":{"line":616,"column":12},"end":{"line":616,"column":51}},"96":{"start":{"line":618,"column":12},"end":{"line":621,"column":13}},"97":{"start":{"line":620,"column":16},"end":{"line":620,"column":35}},"98":{"start":{"line":623,"column":12},"end":{"line":623,"column":38}},"99":{"start":{"line":624,"column":12},"end":{"line":624,"column":44}},"100":{"start":{"line":626,"column":12},"end":{"line":635,"column":13}},"101":{"start":{"line":628,"column":16},"end":{"line":630,"column":17}},"102":{"start":{"line":629,"column":20},"end":{"line":629,"column":37}},"103":{"start":{"line":632,"column":16},"end":{"line":634,"column":17}},"104":{"start":{"line":633,"column":20},"end":{"line":633,"column":37}},"105":{"start":{"line":637,"column":12},"end":{"line":639,"column":13}},"106":{"start":{"line":638,"column":16},"end":{"line":638,"column":33}},"107":{"start":{"line":641,"column":12},"end":{"line":664,"column":13}},"108":{"start":{"line":643,"column":16},"end":{"line":645,"column":17}},"109":{"start":{"line":644,"column":20},"end":{"line":644,"column":46}},"110":{"start":{"line":647,"column":16},"end":{"line":653,"column":17}},"111":{"start":{"line":648,"column":19},"end":{"line":648,"column":65}},"112":{"start":{"line":650,"column":19},"end":{"line":652,"column":20}},"113":{"start":{"line":651,"column":23},"end":{"line":651,"column":40}},"114":{"start":{"line":655,"column":16},"end":{"line":663,"column":17}},"115":{"start":{"line":656,"column":20},"end":{"line":662,"column":21}},"116":{"start":{"line":657,"column":24},"end":{"line":657,"column":81}},"117":{"start":{"line":661,"column":24},"end":{"line":661,"column":85}},"118":{"start":{"line":666,"column":12},"end":{"line":666,"column":24}},"119":{"start":{"line":694,"column":12},"end":{"line":694,"column":27}},"120":{"start":{"line":695,"column":12},"end":{"line":695,"column":30}},"121":{"start":{"line":697,"column":12},"end":{"line":697,"column":37}},"122":{"start":{"line":703,"column":12},"end":{"line":703,"column":47}},"123":{"start":{"line":720,"column":12},"end":{"line":725,"column":24}},"124":{"start":{"line":727,"column":12},"end":{"line":730,"column":13}},"125":{"start":{"line":728,"column":16},"end":{"line":728,"column":39}},"126":{"start":{"line":729,"column":16},"end":{"line":729,"column":36}},"127":{"start":{"line":734,"column":12},"end":{"line":736,"column":13}},"128":{"start":{"line":735,"column":16},"end":{"line":735,"column":55}},"129":{"start":{"line":738,"column":12},"end":{"line":738,"column":51}},"130":{"start":{"line":741,"column":12},"end":{"line":744,"column":13}},"131":{"start":{"line":742,"column":16},"end":{"line":742,"column":39}},"132":{"start":{"line":743,"column":16},"end":{"line":743,"column":49}},"133":{"start":{"line":746,"column":12},"end":{"line":746,"column":51}},"134":{"start":{"line":748,"column":12},"end":{"line":748,"column":36}},"135":{"start":{"line":750,"column":12},"end":{"line":752,"column":13}},"136":{"start":{"line":751,"column":16},"end":{"line":751,"column":38}},"137":{"start":{"line":754,"column":12},"end":{"line":754,"column":68}},"138":{"start":{"line":755,"column":12},"end":{"line":755,"column":55}},"139":{"start":{"line":757,"column":12},"end":{"line":757,"column":23}},"140":{"start":{"line":773,"column":12},"end":{"line":773,"column":46}},"141":{"start":{"line":775,"column":12},"end":{"line":777,"column":13}},"142":{"start":{"line":776,"column":16},"end":{"line":776,"column":53}},"143":{"start":{"line":779,"column":12},"end":{"line":779,"column":110}},"144":{"start":{"line":792,"column":12},"end":{"line":792,"column":46}},"145":{"start":{"line":793,"column":12},"end":{"line":797,"column":13}},"146":{"start":{"line":794,"column":16},"end":{"line":794,"column":41}},"147":{"start":{"line":796,"column":16},"end":{"line":796,"column":52}},"148":{"start":{"line":818,"column":12},"end":{"line":827,"column":22}},"149":{"start":{"line":829,"column":12},"end":{"line":842,"column":13}},"150":{"start":{"line":830,"column":16},"end":{"line":833,"column":17}},"151":{"start":{"line":832,"column":20},"end":{"line":832,"column":48}},"152":{"start":{"line":834,"column":16},"end":{"line":841,"column":17}},"153":{"start":{"line":835,"column":20},"end":{"line":835,"column":69}},"154":{"start":{"line":837,"column":20},"end":{"line":840,"column":21}},"155":{"start":{"line":838,"column":24},"end":{"line":838,"column":50}},"156":{"start":{"line":839,"column":24},"end":{"line":839,"column":37}},"157":{"start":{"line":844,"column":12},"end":{"line":879,"column":13}},"158":{"start":{"line":845,"column":16},"end":{"line":863,"column":17}},"159":{"start":{"line":846,"column":20},"end":{"line":849,"column":21}},"160":{"start":{"line":848,"column":24},"end":{"line":848,"column":46}},"161":{"start":{"line":850,"column":20},"end":{"line":862,"column":21}},"162":{"start":{"line":851,"column":24},"end":{"line":851,"column":71}},"163":{"start":{"line":853,"column":24},"end":{"line":861,"column":25}},"164":{"start":{"line":854,"column":28},"end":{"line":858,"column":29}},"165":{"start":{"line":855,"column":32},"end":{"line":855,"column":58}},"166":{"start":{"line":857,"column":32},"end":{"line":857,"column":49}},"167":{"start":{"line":859,"column":31},"end":{"line":861,"column":25}},"168":{"start":{"line":860,"column":28},"end":{"line":860,"column":44}},"169":{"start":{"line":865,"column":16},"end":{"line":875,"column":17}},"170":{"start":{"line":866,"column":20},"end":{"line":874,"column":21}},"171":{"start":{"line":867,"column":24},"end":{"line":867,"column":41}},"172":{"start":{"line":870,"column":24},"end":{"line":872,"column":25}},"173":{"start":{"line":871,"column":28},"end":{"line":871,"column":51}},"174":{"start":{"line":873,"column":24},"end":{"line":873,"column":60}},"175":{"start":{"line":878,"column":16},"end":{"line":878,"column":33}},"176":{"start":{"line":881,"column":12},"end":{"line":881,"column":28}},"177":{"start":{"line":894,"column":12},"end":{"line":894,"column":47}},"178":{"start":{"line":908,"column":12},"end":{"line":908,"column":21}},"179":{"start":{"line":909,"column":12},"end":{"line":913,"column":13}},"180":{"start":{"line":910,"column":16},"end":{"line":912,"column":17}},"181":{"start":{"line":911,"column":20},"end":{"line":911,"column":54}},"182":{"start":{"line":914,"column":12},"end":{"line":914,"column":24}},"183":{"start":{"line":926,"column":12},"end":{"line":926,"column":41}},"184":{"start":{"line":939,"column":12},"end":{"line":941,"column":48}},"185":{"start":{"line":944,"column":12},"end":{"line":946,"column":13}},"186":{"start":{"line":945,"column":16},"end":{"line":945,"column":49}},"187":{"start":{"line":948,"column":12},"end":{"line":955,"column":13}},"188":{"start":{"line":949,"column":16},"end":{"line":949,"column":32}},"189":{"start":{"line":951,"column":16},"end":{"line":954,"column":17}},"190":{"start":{"line":953,"column":20},"end":{"line":953,"column":47}},"191":{"start":{"line":957,"column":12},"end":{"line":957,"column":23}},"192":{"start":{"line":981,"column":12},"end":{"line":986,"column":13}},"193":{"start":{"line":982,"column":16},"end":{"line":982,"column":35}},"194":{"start":{"line":983,"column":16},"end":{"line":983,"column":75}},"195":{"start":{"line":984,"column":16},"end":{"line":984,"column":56}},"196":{"start":{"line":985,"column":16},"end":{"line":985,"column":49}},"197":{"start":{"line":988,"column":12},"end":{"line":988,"column":24}},"198":{"start":{"line":1009,"column":12},"end":{"line":1013,"column":22}},"199":{"start":{"line":1015,"column":12},"end":{"line":1035,"column":13}},"200":{"start":{"line":1016,"column":16},"end":{"line":1034,"column":17}},"201":{"start":{"line":1019,"column":20},"end":{"line":1019,"column":41}},"202":{"start":{"line":1020,"column":20},"end":{"line":1020,"column":57}},"203":{"start":{"line":1023,"column":20},"end":{"line":1023,"column":71}},"204":{"start":{"line":1025,"column":20},"end":{"line":1027,"column":21}},"205":{"start":{"line":1026,"column":24},"end":{"line":1026,"column":46}},"206":{"start":{"line":1029,"column":20},"end":{"line":1031,"column":21}},"207":{"start":{"line":1030,"column":24},"end":{"line":1030,"column":48}},"208":{"start":{"line":1033,"column":20},"end":{"line":1033,"column":54}},"209":{"start":{"line":1066,"column":12},"end":{"line":1070,"column":21}},"210":{"start":{"line":1072,"column":12},"end":{"line":1074,"column":13}},"211":{"start":{"line":1073,"column":16},"end":{"line":1073,"column":28}},"212":{"start":{"line":1076,"column":12},"end":{"line":1076,"column":22}},"213":{"start":{"line":1078,"column":12},"end":{"line":1095,"column":13}},"214":{"start":{"line":1079,"column":16},"end":{"line":1094,"column":17}},"215":{"start":{"line":1080,"column":20},"end":{"line":1093,"column":21}},"216":{"start":{"line":1081,"column":24},"end":{"line":1081,"column":44}},"217":{"start":{"line":1082,"column":24},"end":{"line":1082,"column":44}},"218":{"start":{"line":1084,"column":24},"end":{"line":1084,"column":48}},"219":{"start":{"line":1086,"column":24},"end":{"line":1086,"column":64}},"220":{"start":{"line":1087,"column":24},"end":{"line":1090,"column":26}},"221":{"start":{"line":1092,"column":24},"end":{"line":1092,"column":47}},"222":{"start":{"line":1097,"column":12},"end":{"line":1097,"column":52}},"223":{"start":{"line":1116,"column":12},"end":{"line":1127,"column":24}},"224":{"start":{"line":1129,"column":12},"end":{"line":1136,"column":13}},"225":{"start":{"line":1131,"column":16},"end":{"line":1131,"column":43}},"226":{"start":{"line":1132,"column":16},"end":{"line":1135,"column":17}},"227":{"start":{"line":1133,"column":20},"end":{"line":1133,"column":39}},"228":{"start":{"line":1134,"column":20},"end":{"line":1134,"column":38}},"229":{"start":{"line":1138,"column":12},"end":{"line":1146,"column":13}},"230":{"start":{"line":1139,"column":16},"end":{"line":1141,"column":17}},"231":{"start":{"line":1140,"column":20},"end":{"line":1140,"column":40}},"232":{"start":{"line":1142,"column":16},"end":{"line":1145,"column":17}},"233":{"start":{"line":1143,"column":20},"end":{"line":1143,"column":52}},"234":{"start":{"line":1144,"column":20},"end":{"line":1144,"column":33}},"235":{"start":{"line":1148,"column":12},"end":{"line":1161,"column":13}},"236":{"start":{"line":1151,"column":16},"end":{"line":1151,"column":45}},"237":{"start":{"line":1153,"column":16},"end":{"line":1160,"column":17}},"238":{"start":{"line":1154,"column":20},"end":{"line":1154,"column":44}},"239":{"start":{"line":1155,"column":20},"end":{"line":1159,"column":21}},"240":{"start":{"line":1156,"column":24},"end":{"line":1156,"column":47}},"241":{"start":{"line":1157,"column":24},"end":{"line":1157,"column":50}},"242":{"start":{"line":1158,"column":24},"end":{"line":1158,"column":54}},"243":{"start":{"line":1163,"column":12},"end":{"line":1163,"column":23}},"244":{"start":{"line":1180,"column":12},"end":{"line":1180,"column":52}},"245":{"start":{"line":1182,"column":12},"end":{"line":1185,"column":87}},"246":{"start":{"line":1187,"column":12},"end":{"line":1189,"column":13}},"247":{"start":{"line":1188,"column":16},"end":{"line":1188,"column":81}},"248":{"start":{"line":1193,"column":4},"end":{"line":1193,"column":36}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":12},"end":{"line":35,"column":12}},{"start":{"line":35,"column":12},"end":{"line":35,"column":12}}]},"2":{"line":53,"type":"if","locations":[{"start":{"line":53,"column":12},"end":{"line":53,"column":12}},{"start":{"line":53,"column":12},"end":{"line":53,"column":12}}]},"3":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":16},"end":{"line":58,"column":16}},{"start":{"line":58,"column":16},"end":{"line":58,"column":16}}]},"4":{"line":74,"type":"if","locations":[{"start":{"line":74,"column":12},"end":{"line":74,"column":12}},{"start":{"line":74,"column":12},"end":{"line":74,"column":12}}]},"5":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":12},"end":{"line":89,"column":12}},{"start":{"line":89,"column":12},"end":{"line":89,"column":12}}]},"6":{"line":92,"type":"if","locations":[{"start":{"line":92,"column":16},"end":{"line":92,"column":16}},{"start":{"line":92,"column":16},"end":{"line":92,"column":16}}]},"7":{"line":97,"type":"cond-expr","locations":[{"start":{"line":97,"column":64},"end":{"line":97,"column":67}},{"start":{"line":97,"column":70},"end":{"line":97,"column":75}}]},"8":{"line":113,"type":"if","locations":[{"start":{"line":113,"column":12},"end":{"line":113,"column":12}},{"start":{"line":113,"column":12},"end":{"line":113,"column":12}}]},"9":{"line":135,"type":"if","locations":[{"start":{"line":135,"column":12},"end":{"line":135,"column":12}},{"start":{"line":135,"column":12},"end":{"line":135,"column":12}}]},"10":{"line":137,"type":"if","locations":[{"start":{"line":137,"column":19},"end":{"line":137,"column":19}},{"start":{"line":137,"column":19},"end":{"line":137,"column":19}}]},"11":{"line":141,"type":"if","locations":[{"start":{"line":141,"column":20},"end":{"line":141,"column":20}},{"start":{"line":141,"column":20},"end":{"line":141,"column":20}}]},"12":{"line":275,"type":"if","locations":[{"start":{"line":275,"column":8},"end":{"line":275,"column":8}},{"start":{"line":275,"column":8},"end":{"line":275,"column":8}}]},"13":{"line":278,"type":"if","locations":[{"start":{"line":278,"column":16},"end":{"line":278,"column":16}},{"start":{"line":278,"column":16},"end":{"line":278,"column":16}}]},"14":{"line":414,"type":"binary-expr","locations":[{"start":{"line":414,"column":21},"end":{"line":414,"column":27}},{"start":{"line":414,"column":31},"end":{"line":414,"column":33}}]},"15":{"line":416,"type":"if","locations":[{"start":{"line":416,"column":12},"end":{"line":416,"column":12}},{"start":{"line":416,"column":12},"end":{"line":416,"column":12}}]},"16":{"line":422,"type":"if","locations":[{"start":{"line":422,"column":12},"end":{"line":422,"column":12}},{"start":{"line":422,"column":12},"end":{"line":422,"column":12}}]},"17":{"line":422,"type":"binary-expr","locations":[{"start":{"line":422,"column":16},"end":{"line":422,"column":20}},{"start":{"line":422,"column":24},"end":{"line":422,"column":30}}]},"18":{"line":430,"type":"if","locations":[{"start":{"line":430,"column":16},"end":{"line":430,"column":16}},{"start":{"line":430,"column":16},"end":{"line":430,"column":16}}]},"19":{"line":430,"type":"binary-expr","locations":[{"start":{"line":430,"column":20},"end":{"line":430,"column":26}},{"start":{"line":430,"column":30},"end":{"line":430,"column":46}}]},"20":{"line":435,"type":"if","locations":[{"start":{"line":435,"column":20},"end":{"line":435,"column":20}},{"start":{"line":435,"column":20},"end":{"line":435,"column":20}}]},"21":{"line":453,"type":"if","locations":[{"start":{"line":453,"column":20},"end":{"line":453,"column":20}},{"start":{"line":453,"column":20},"end":{"line":453,"column":20}}]},"22":{"line":518,"type":"binary-expr","locations":[{"start":{"line":518,"column":22},"end":{"line":518,"column":29}},{"start":{"line":518,"column":33},"end":{"line":518,"column":54}}]},"23":{"line":520,"type":"if","locations":[{"start":{"line":520,"column":12},"end":{"line":520,"column":12}},{"start":{"line":520,"column":12},"end":{"line":520,"column":12}}]},"24":{"line":597,"type":"if","locations":[{"start":{"line":597,"column":12},"end":{"line":597,"column":12}},{"start":{"line":597,"column":12},"end":{"line":597,"column":12}}]},"25":{"line":605,"type":"if","locations":[{"start":{"line":605,"column":12},"end":{"line":605,"column":12}},{"start":{"line":605,"column":12},"end":{"line":605,"column":12}}]},"26":{"line":605,"type":"binary-expr","locations":[{"start":{"line":605,"column":16},"end":{"line":605,"column":21}},{"start":{"line":605,"column":25},"end":{"line":605,"column":36}}]},"27":{"line":609,"type":"binary-expr","locations":[{"start":{"line":609,"column":18},"end":{"line":609,"column":34}},{"start":{"line":609,"column":38},"end":{"line":609,"column":40}}]},"28":{"line":611,"type":"if","locations":[{"start":{"line":611,"column":12},"end":{"line":611,"column":12}},{"start":{"line":611,"column":12},"end":{"line":611,"column":12}}]},"29":{"line":618,"type":"if","locations":[{"start":{"line":618,"column":12},"end":{"line":618,"column":12}},{"start":{"line":618,"column":12},"end":{"line":618,"column":12}}]},"30":{"line":618,"type":"binary-expr","locations":[{"start":{"line":618,"column":16},"end":{"line":618,"column":26}},{"start":{"line":618,"column":30},"end":{"line":618,"column":48}},{"start":{"line":618,"column":52},"end":{"line":618,"column":69}}]},"31":{"line":626,"type":"if","locations":[{"start":{"line":626,"column":12},"end":{"line":626,"column":12}},{"start":{"line":626,"column":12},"end":{"line":626,"column":12}}]},"32":{"line":626,"type":"binary-expr","locations":[{"start":{"line":626,"column":16},"end":{"line":626,"column":27}},{"start":{"line":626,"column":31},"end":{"line":626,"column":37}}]},"33":{"line":628,"type":"if","locations":[{"start":{"line":628,"column":16},"end":{"line":628,"column":16}},{"start":{"line":628,"column":16},"end":{"line":628,"column":16}}]},"34":{"line":632,"type":"if","locations":[{"start":{"line":632,"column":16},"end":{"line":632,"column":16}},{"start":{"line":632,"column":16},"end":{"line":632,"column":16}}]},"35":{"line":637,"type":"if","locations":[{"start":{"line":637,"column":12},"end":{"line":637,"column":12}},{"start":{"line":637,"column":12},"end":{"line":637,"column":12}}]},"36":{"line":637,"type":"binary-expr","locations":[{"start":{"line":637,"column":16},"end":{"line":637,"column":29}},{"start":{"line":637,"column":33},"end":{"line":637,"column":39}},{"start":{"line":637,"column":43},"end":{"line":637,"column":66}}]},"37":{"line":641,"type":"if","locations":[{"start":{"line":641,"column":12},"end":{"line":641,"column":12}},{"start":{"line":641,"column":12},"end":{"line":641,"column":12}}]},"38":{"line":643,"type":"if","locations":[{"start":{"line":643,"column":16},"end":{"line":643,"column":16}},{"start":{"line":643,"column":16},"end":{"line":643,"column":16}}]},"39":{"line":647,"type":"if","locations":[{"start":{"line":647,"column":16},"end":{"line":647,"column":16}},{"start":{"line":647,"column":16},"end":{"line":647,"column":16}}]},"40":{"line":650,"type":"if","locations":[{"start":{"line":650,"column":19},"end":{"line":650,"column":19}},{"start":{"line":650,"column":19},"end":{"line":650,"column":19}}]},"41":{"line":655,"type":"if","locations":[{"start":{"line":655,"column":16},"end":{"line":655,"column":16}},{"start":{"line":655,"column":16},"end":{"line":655,"column":16}}]},"42":{"line":656,"type":"if","locations":[{"start":{"line":656,"column":20},"end":{"line":656,"column":20}},{"start":{"line":656,"column":20},"end":{"line":656,"column":20}}]},"43":{"line":656,"type":"binary-expr","locations":[{"start":{"line":656,"column":24},"end":{"line":656,"column":45}},{"start":{"line":656,"column":49},"end":{"line":656,"column":61}}]},"44":{"line":727,"type":"if","locations":[{"start":{"line":727,"column":12},"end":{"line":727,"column":12}},{"start":{"line":727,"column":12},"end":{"line":727,"column":12}}]},"45":{"line":734,"type":"if","locations":[{"start":{"line":734,"column":12},"end":{"line":734,"column":12}},{"start":{"line":734,"column":12},"end":{"line":734,"column":12}}]},"46":{"line":734,"type":"binary-expr","locations":[{"start":{"line":734,"column":16},"end":{"line":734,"column":21}},{"start":{"line":734,"column":25},"end":{"line":734,"column":36}}]},"47":{"line":738,"type":"binary-expr","locations":[{"start":{"line":738,"column":22},"end":{"line":738,"column":44}},{"start":{"line":738,"column":48},"end":{"line":738,"column":50}}]},"48":{"line":741,"type":"if","locations":[{"start":{"line":741,"column":12},"end":{"line":741,"column":12}},{"start":{"line":741,"column":12},"end":{"line":741,"column":12}}]},"49":{"line":750,"type":"if","locations":[{"start":{"line":750,"column":12},"end":{"line":750,"column":12}},{"start":{"line":750,"column":12},"end":{"line":750,"column":12}}]},"50":{"line":750,"type":"binary-expr","locations":[{"start":{"line":750,"column":16},"end":{"line":750,"column":22}},{"start":{"line":750,"column":26},"end":{"line":750,"column":38}}]},"51":{"line":754,"type":"cond-expr","locations":[{"start":{"line":754,"column":29},"end":{"line":754,"column":61}},{"start":{"line":754,"column":64},"end":{"line":754,"column":67}}]},"52":{"line":755,"type":"cond-expr","locations":[{"start":{"line":755,"column":27},"end":{"line":755,"column":48}},{"start":{"line":755,"column":51},"end":{"line":755,"column":54}}]},"53":{"line":775,"type":"if","locations":[{"start":{"line":775,"column":12},"end":{"line":775,"column":12}},{"start":{"line":775,"column":12},"end":{"line":775,"column":12}}]},"54":{"line":776,"type":"binary-expr","locations":[{"start":{"line":776,"column":22},"end":{"line":776,"column":46}},{"start":{"line":776,"column":50},"end":{"line":776,"column":52}}]},"55":{"line":779,"type":"cond-expr","locations":[{"start":{"line":779,"column":81},"end":{"line":779,"column":97}},{"start":{"line":779,"column":100},"end":{"line":779,"column":109}}]},"56":{"line":779,"type":"binary-expr","locations":[{"start":{"line":779,"column":20},"end":{"line":779,"column":30}},{"start":{"line":779,"column":35},"end":{"line":779,"column":53}},{"start":{"line":779,"column":58},"end":{"line":779,"column":77}}]},"57":{"line":793,"type":"if","locations":[{"start":{"line":793,"column":12},"end":{"line":793,"column":12}},{"start":{"line":793,"column":12},"end":{"line":793,"column":12}}]},"58":{"line":793,"type":"binary-expr","locations":[{"start":{"line":793,"column":16},"end":{"line":793,"column":26}},{"start":{"line":793,"column":31},"end":{"line":793,"column":49}},{"start":{"line":793,"column":54},"end":{"line":793,"column":90}}]},"59":{"line":820,"type":"binary-expr","locations":[{"start":{"line":820,"column":22},"end":{"line":820,"column":29}},{"start":{"line":820,"column":33},"end":{"line":820,"column":59}},{"start":{"line":820,"column":63},"end":{"line":820,"column":65}}]},"60":{"line":825,"type":"binary-expr","locations":[{"start":{"line":825,"column":23},"end":{"line":825,"column":34}},{"start":{"line":825,"column":38},"end":{"line":825,"column":46}}]},"61":{"line":829,"type":"if","locations":[{"start":{"line":829,"column":12},"end":{"line":829,"column":12}},{"start":{"line":829,"column":12},"end":{"line":829,"column":12}}]},"62":{"line":830,"type":"if","locations":[{"start":{"line":830,"column":16},"end":{"line":830,"column":16}},{"start":{"line":830,"column":16},"end":{"line":830,"column":16}}]},"63":{"line":834,"type":"if","locations":[{"start":{"line":834,"column":16},"end":{"line":834,"column":16}},{"start":{"line":834,"column":16},"end":{"line":834,"column":16}}]},"64":{"line":837,"type":"if","locations":[{"start":{"line":837,"column":20},"end":{"line":837,"column":20}},{"start":{"line":837,"column":20},"end":{"line":837,"column":20}}]},"65":{"line":837,"type":"binary-expr","locations":[{"start":{"line":837,"column":24},"end":{"line":837,"column":30}},{"start":{"line":837,"column":34},"end":{"line":837,"column":46}}]},"66":{"line":844,"type":"if","locations":[{"start":{"line":844,"column":12},"end":{"line":844,"column":12}},{"start":{"line":844,"column":12},"end":{"line":844,"column":12}}]},"67":{"line":844,"type":"binary-expr","locations":[{"start":{"line":844,"column":16},"end":{"line":844,"column":26}},{"start":{"line":844,"column":30},"end":{"line":844,"column":35}}]},"68":{"line":845,"type":"if","locations":[{"start":{"line":845,"column":16},"end":{"line":845,"column":16}},{"start":{"line":845,"column":16},"end":{"line":845,"column":16}}]},"69":{"line":846,"type":"if","locations":[{"start":{"line":846,"column":20},"end":{"line":846,"column":20}},{"start":{"line":846,"column":20},"end":{"line":846,"column":20}}]},"70":{"line":850,"type":"if","locations":[{"start":{"line":850,"column":20},"end":{"line":850,"column":20}},{"start":{"line":850,"column":20},"end":{"line":850,"column":20}}]},"71":{"line":853,"type":"if","locations":[{"start":{"line":853,"column":24},"end":{"line":853,"column":24}},{"start":{"line":853,"column":24},"end":{"line":853,"column":24}}]},"72":{"line":854,"type":"if","locations":[{"start":{"line":854,"column":28},"end":{"line":854,"column":28}},{"start":{"line":854,"column":28},"end":{"line":854,"column":28}}]},"73":{"line":859,"type":"if","locations":[{"start":{"line":859,"column":31},"end":{"line":859,"column":31}},{"start":{"line":859,"column":31},"end":{"line":859,"column":31}}]},"74":{"line":865,"type":"if","locations":[{"start":{"line":865,"column":16},"end":{"line":865,"column":16}},{"start":{"line":865,"column":16},"end":{"line":865,"column":16}}]},"75":{"line":866,"type":"if","locations":[{"start":{"line":866,"column":20},"end":{"line":866,"column":20}},{"start":{"line":866,"column":20},"end":{"line":866,"column":20}}]},"76":{"line":866,"type":"binary-expr","locations":[{"start":{"line":866,"column":23},"end":{"line":866,"column":35}},{"start":{"line":866,"column":40},"end":{"line":866,"column":61}},{"start":{"line":866,"column":66},"end":{"line":866,"column":88}}]},"77":{"line":870,"type":"if","locations":[{"start":{"line":870,"column":24},"end":{"line":870,"column":24}},{"start":{"line":870,"column":24},"end":{"line":870,"column":24}}]},"78":{"line":910,"type":"if","locations":[{"start":{"line":910,"column":16},"end":{"line":910,"column":16}},{"start":{"line":910,"column":16},"end":{"line":910,"column":16}}]},"79":{"line":944,"type":"if","locations":[{"start":{"line":944,"column":12},"end":{"line":944,"column":12}},{"start":{"line":944,"column":12},"end":{"line":944,"column":12}}]},"80":{"line":944,"type":"binary-expr","locations":[{"start":{"line":944,"column":16},"end":{"line":944,"column":22}},{"start":{"line":944,"column":26},"end":{"line":944,"column":38}}]},"81":{"line":951,"type":"if","locations":[{"start":{"line":951,"column":16},"end":{"line":951,"column":16}},{"start":{"line":951,"column":16},"end":{"line":951,"column":16}}]},"82":{"line":951,"type":"binary-expr","locations":[{"start":{"line":951,"column":20},"end":{"line":951,"column":33}},{"start":{"line":951,"column":37},"end":{"line":951,"column":97}}]},"83":{"line":981,"type":"if","locations":[{"start":{"line":981,"column":12},"end":{"line":981,"column":12}},{"start":{"line":981,"column":12},"end":{"line":981,"column":12}}]},"84":{"line":983,"type":"cond-expr","locations":[{"start":{"line":983,"column":41},"end":{"line":983,"column":67}},{"start":{"line":983,"column":70},"end":{"line":983,"column":74}}]},"85":{"line":1016,"type":"if","locations":[{"start":{"line":1016,"column":16},"end":{"line":1016,"column":16}},{"start":{"line":1016,"column":16},"end":{"line":1016,"column":16}}]},"86":{"line":1025,"type":"if","locations":[{"start":{"line":1025,"column":20},"end":{"line":1025,"column":20}},{"start":{"line":1025,"column":20},"end":{"line":1025,"column":20}}]},"87":{"line":1029,"type":"if","locations":[{"start":{"line":1029,"column":20},"end":{"line":1029,"column":20}},{"start":{"line":1029,"column":20},"end":{"line":1029,"column":20}}]},"88":{"line":1072,"type":"if","locations":[{"start":{"line":1072,"column":12},"end":{"line":1072,"column":12}},{"start":{"line":1072,"column":12},"end":{"line":1072,"column":12}}]},"89":{"line":1079,"type":"if","locations":[{"start":{"line":1079,"column":16},"end":{"line":1079,"column":16}},{"start":{"line":1079,"column":16},"end":{"line":1079,"column":16}}]},"90":{"line":1080,"type":"if","locations":[{"start":{"line":1080,"column":20},"end":{"line":1080,"column":20}},{"start":{"line":1080,"column":20},"end":{"line":1080,"column":20}}]},"91":{"line":1084,"type":"binary-expr","locations":[{"start":{"line":1084,"column":34},"end":{"line":1084,"column":41}},{"start":{"line":1084,"column":45},"end":{"line":1084,"column":47}}]},"92":{"line":1086,"type":"binary-expr","locations":[{"start":{"line":1086,"column":44},"end":{"line":1086,"column":57}},{"start":{"line":1086,"column":61},"end":{"line":1086,"column":63}}]},"93":{"line":1129,"type":"if","locations":[{"start":{"line":1129,"column":12},"end":{"line":1129,"column":12}},{"start":{"line":1129,"column":12},"end":{"line":1129,"column":12}}]},"94":{"line":1129,"type":"binary-expr","locations":[{"start":{"line":1129,"column":16},"end":{"line":1129,"column":25}},{"start":{"line":1129,"column":29},"end":{"line":1129,"column":39}}]},"95":{"line":1132,"type":"if","locations":[{"start":{"line":1132,"column":16},"end":{"line":1132,"column":16}},{"start":{"line":1132,"column":16},"end":{"line":1132,"column":16}}]},"96":{"line":1132,"type":"binary-expr","locations":[{"start":{"line":1132,"column":20},"end":{"line":1132,"column":26}},{"start":{"line":1132,"column":30},"end":{"line":1132,"column":57}}]},"97":{"line":1138,"type":"if","locations":[{"start":{"line":1138,"column":12},"end":{"line":1138,"column":12}},{"start":{"line":1138,"column":12},"end":{"line":1138,"column":12}}]},"98":{"line":1138,"type":"binary-expr","locations":[{"start":{"line":1138,"column":16},"end":{"line":1138,"column":21}},{"start":{"line":1138,"column":25},"end":{"line":1138,"column":36}}]},"99":{"line":1139,"type":"if","locations":[{"start":{"line":1139,"column":16},"end":{"line":1139,"column":16}},{"start":{"line":1139,"column":16},"end":{"line":1139,"column":16}}]},"100":{"line":1142,"type":"if","locations":[{"start":{"line":1142,"column":16},"end":{"line":1142,"column":16}},{"start":{"line":1142,"column":16},"end":{"line":1142,"column":16}}]},"101":{"line":1148,"type":"if","locations":[{"start":{"line":1148,"column":12},"end":{"line":1148,"column":12}},{"start":{"line":1148,"column":12},"end":{"line":1148,"column":12}}]},"102":{"line":1148,"type":"binary-expr","locations":[{"start":{"line":1148,"column":16},"end":{"line":1148,"column":25}},{"start":{"line":1148,"column":29},"end":{"line":1148,"column":39}}]},"103":{"line":1153,"type":"if","locations":[{"start":{"line":1153,"column":16},"end":{"line":1153,"column":16}},{"start":{"line":1153,"column":16},"end":{"line":1153,"column":16}}]},"104":{"line":1153,"type":"binary-expr","locations":[{"start":{"line":1153,"column":20},"end":{"line":1153,"column":27}},{"start":{"line":1153,"column":31},"end":{"line":1153,"column":59}},{"start":{"line":1153,"column":64},"end":{"line":1153,"column":81}},{"start":{"line":1153,"column":87},"end":{"line":1153,"column":99}}]},"105":{"line":1180,"type":"binary-expr","locations":[{"start":{"line":1180,"column":20},"end":{"line":1180,"column":25}},{"start":{"line":1180,"column":29},"end":{"line":1180,"column":51}}]},"106":{"line":1184,"type":"binary-expr","locations":[{"start":{"line":1184,"column":28},"end":{"line":1184,"column":32}},{"start":{"line":1184,"column":36},"end":{"line":1184,"column":60}}]},"107":{"line":1185,"type":"binary-expr","locations":[{"start":{"line":1185,"column":32},"end":{"line":1185,"column":41}},{"start":{"line":1185,"column":45},"end":{"line":1185,"column":53}},{"start":{"line":1185,"column":57},"end":{"line":1185,"column":85}}]},"108":{"line":1187,"type":"if","locations":[{"start":{"line":1187,"column":12},"end":{"line":1187,"column":12}},{"start":{"line":1187,"column":12},"end":{"line":1187,"column":12}}]},"109":{"line":1187,"type":"binary-expr","locations":[{"start":{"line":1187,"column":16},"end":{"line":1187,"column":21}},{"start":{"line":1187,"column":25},"end":{"line":1187,"column":34}},{"start":{"line":1187,"column":38},"end":{"line":1187,"column":51}}]}},"code":["(function () { YUI.add('attribute-core', function (Y, NAME) {",""," /**"," * The State class maintains state for a collection of named items, with"," * a varying number of properties defined."," *"," * It avoids the need to create a separate class for the item, and separate instances"," * of these classes for each item, by storing the state in a 2 level hash table,"," * improving performance when the number of items is likely to be large."," *"," * @constructor"," * @class State"," */"," Y.State = function() {"," /**"," * Hash of attributes"," * @property data"," */"," this.data = {};"," };",""," Y.State.prototype = {",""," /**"," * Adds a property to an item."," *"," * @method add"," * @param name {String} The name of the item."," * @param key {String} The name of the property."," * @param val {Any} The value of the property."," */"," add: function(name, key, val) {"," var item = this.data[name];",""," if (!item) {"," item = this.data[name] = {};"," }",""," item[key] = val;"," },",""," /**"," * Adds multiple properties to an item."," *"," * @method addAll"," * @param name {String} The name of the item."," * @param obj {Object} A hash of property/value pairs."," */"," addAll: function(name, obj) {"," var item = this.data[name],"," key;",""," if (!item) {"," item = this.data[name] = {};"," }",""," for (key in obj) {"," if (obj.hasOwnProperty(key)) {"," item[key] = obj[key];"," }"," }"," },",""," /**"," * Removes a property from an item."," *"," * @method remove"," * @param name {String} The name of the item."," * @param key {String} The property to remove."," */"," remove: function(name, key) {"," var item = this.data[name];",""," if (item) {"," delete item[key];"," }"," },",""," /**"," * Removes multiple properties from an item, or removes the item completely."," *"," * @method removeAll"," * @param name {String} The name of the item."," * @param obj {Object|Array} Collection of properties to delete. If not provided, the entire item is removed."," */"," removeAll: function(name, obj) {"," var data;",""," if (!obj) {"," data = this.data;",""," if (name in data) {"," delete data[name];"," }"," } else {"," Y.each(obj, function(value, key) {"," this.remove(name, typeof key === 'string' ? key : value);"," }, this);"," }"," },",""," /**"," * For a given item, returns the value of the property requested, or undefined if not found."," *"," * @method get"," * @param name {String} The name of the item"," * @param key {String} Optional. The property value to retrieve."," * @return {Any} The value of the supplied property."," */"," get: function(name, key) {"," var item = this.data[name];",""," if (item) {"," return item[key];"," }"," },",""," /**"," * For the given item, returns an object with all of the"," * item's property/value pairs. By default the object returned"," * is a shallow copy of the stored data, but passing in true"," * as the second parameter will return a reference to the stored"," * data."," *"," * @method getAll"," * @param name {String} The name of the item"," * @param reference {boolean} true, if you want a reference to the stored"," * object"," * @return {Object} An object with property/value pairs for the item."," */"," getAll : function(name, reference) {"," var item = this.data[name],"," key, obj;",""," if (reference) {"," obj = item;"," } else if (item) {"," obj = {};",""," for (key in item) {"," if (item.hasOwnProperty(key)) {"," obj[key] = item[key];"," }"," }"," }",""," return obj;"," }"," };"," /*For log lines*/"," /*jshint maxlen:200*/",""," /**"," * The attribute module provides an augmentable Attribute implementation, which"," * adds configurable attributes and attribute change events to the class being"," * augmented. It also provides a State class, which is used internally by Attribute,"," * but can also be used independently to provide a name/property/value data structure to"," * store state."," *"," * @module attribute"," */",""," /**"," * The attribute-core submodule provides the lightest level of attribute handling support"," * without Attribute change events, or lesser used methods such as reset(), modifyAttrs(),"," * and removeAttr()."," *"," * @module attribute"," * @submodule attribute-core"," */"," var O = Y.Object,"," Lang = Y.Lang,",""," DOT = \".\",",""," // Externally configurable props"," GETTER = \"getter\","," SETTER = \"setter\","," READ_ONLY = \"readOnly\","," WRITE_ONCE = \"writeOnce\","," INIT_ONLY = \"initOnly\","," VALIDATOR = \"validator\","," VALUE = \"value\","," VALUE_FN = \"valueFn\","," LAZY_ADD = \"lazyAdd\",",""," // Used for internal state management"," ADDED = \"added\","," BYPASS_PROXY = \"_bypassProxy\","," INIT_VALUE = \"initValue\","," LAZY = \"lazy\",",""," INVALID_VALUE;",""," /**"," * <p>"," * AttributeCore provides the lightest level of configurable attribute support. It is designed to be"," * augmented on to a host class, and provides the host with the ability to configure"," * attributes to store and retrieve state, <strong>but without support for attribute change events</strong>."," * </p>"," * <p>For example, attributes added to the host can be configured:</p>"," * <ul>"," * <li>As read only.</li>"," * <li>As write once.</li>"," * <li>With a setter function, which can be used to manipulate"," * values passed to Attribute's <a href=\"#method_set\">set</a> method, before they are stored.</li>"," * <li>With a getter function, which can be used to manipulate stored values,"," * before they are returned by Attribute's <a href=\"#method_get\">get</a> method.</li>"," * <li>With a validator function, to validate values before they are stored.</li>"," * </ul>"," *"," * <p>See the <a href=\"#method_addAttr\">addAttr</a> method, for the complete set of configuration"," * options available for attributes.</p>"," *"," * <p>Object/Classes based on AttributeCore can augment <a href=\"AttributeObservable.html\">AttributeObservable</a>"," * (with true for overwrite) and <a href=\"AttributeExtras.html\">AttributeExtras</a> to add attribute event and"," * additional, less commonly used attribute methods, such as `modifyAttr`, `removeAttr` and `reset`.</p>"," *"," * @class AttributeCore"," * @param attrs {Object} The attributes to add during construction (passed through to <a href=\"#method_addAttrs\">addAttrs</a>)."," * These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor."," * @param values {Object} The initial attribute values to apply (passed through to <a href=\"#method_addAttrs\">addAttrs</a>)."," * These are not merged/cloned. The caller is responsible for isolating user provided values if required."," * @param lazy {boolean} Whether or not to add attributes lazily (passed through to <a href=\"#method_addAttrs\">addAttrs</a>)."," */"," function AttributeCore(attrs, values, lazy) {"," // HACK: Fix #2531929"," // Complete hack, to make sure the first clone of a node value in IE doesn't doesn't hurt state - maintains 3.4.1 behavior."," // Too late in the release cycle to do anything about the core problem."," // The root issue is that cloning a Y.Node instance results in an object which barfs in IE, when you access it's properties (since 3.3.0)."," this._yuievt = null;",""," this._initAttrHost(attrs, values, lazy);"," }",""," /**"," * <p>The value to return from an attribute setter in order to prevent the set from going through.</p>"," *"," * <p>You can return this value from your setter if you wish to combine validator and setter"," * functionality into a single setter function, which either returns the massaged value to be stored or"," * AttributeCore.INVALID_VALUE to prevent invalid values from being stored.</p>"," *"," * @property INVALID_VALUE"," * @type Object"," * @static"," * @final"," */"," AttributeCore.INVALID_VALUE = {};"," INVALID_VALUE = AttributeCore.INVALID_VALUE;",""," /**"," * The list of properties which can be configured for"," * each attribute (e.g. setter, getter, writeOnce etc.)."," *"," * This property is used internally as a whitelist for faster"," * Y.mix operations."," *"," * @property _ATTR_CFG"," * @type Array"," * @static"," * @protected"," */"," AttributeCore._ATTR_CFG = [SETTER, GETTER, VALIDATOR, VALUE, VALUE_FN, WRITE_ONCE, READ_ONLY, LAZY_ADD, BYPASS_PROXY];",""," /**"," * Utility method to protect an attribute configuration hash, by merging the"," * entire object and the individual attr config objects."," *"," * @method protectAttrs"," * @static"," * @param {Object} attrs A hash of attribute to configuration object pairs."," * @return {Object} A protected version of the `attrs` argument."," */"," AttributeCore.protectAttrs = function (attrs) {"," if (attrs) {"," attrs = Y.merge(attrs);"," for (var attr in attrs) {"," if (attrs.hasOwnProperty(attr)) {"," attrs[attr] = Y.merge(attrs[attr]);"," }"," }"," }",""," return attrs;"," };",""," AttributeCore.prototype = {",""," /**"," * Constructor logic for attributes. Initializes the host state, and sets up the inital attributes passed to the"," * constructor."," *"," * @method _initAttrHost"," * @param attrs {Object} The attributes to add during construction (passed through to <a href=\"#method_addAttrs\">addAttrs</a>)."," * These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor."," * @param values {Object} The initial attribute values to apply (passed through to <a href=\"#method_addAttrs\">addAttrs</a>)."," * These are not merged/cloned. The caller is responsible for isolating user provided values if required."," * @param lazy {boolean} Whether or not to add attributes lazily (passed through to <a href=\"#method_addAttrs\">addAttrs</a>)."," * @private"," */"," _initAttrHost : function(attrs, values, lazy) {"," this._state = new Y.State();"," this._initAttrs(attrs, values, lazy);"," },",""," /**"," * <p>"," * Adds an attribute with the provided configuration to the host object."," * </p>"," * <p>"," * The config argument object supports the following properties:"," * </p>"," *"," * <dl>"," * <dt>value <Any></dt>"," * <dd>The initial value to set on the attribute</dd>"," *"," * <dt>valueFn <Function | String></dt>"," * <dd>"," * <p>A function, which will return the initial value to set on the attribute. This is useful"," * for cases where the attribute configuration is defined statically, but needs to"," * reference the host instance (\"this\") to obtain an initial value. If both the value and valueFn properties are defined,"," * the value returned by the valueFn has precedence over the value property, unless it returns undefined, in which"," * case the value property is used.</p>"," *"," * <p>valueFn can also be set to a string, representing the name of the instance method to be used to retrieve the value.</p>"," * </dd>"," *"," * <dt>readOnly <boolean></dt>"," * <dd>Whether or not the attribute is read only. Attributes having readOnly set to true"," * cannot be modified by invoking the set method.</dd>"," *"," * <dt>writeOnce <boolean> or <string></dt>"," * <dd>"," * Whether or not the attribute is \"write once\". Attributes having writeOnce set to true,"," * can only have their values set once, be it through the default configuration,"," * constructor configuration arguments, or by invoking set."," * <p>The writeOnce attribute can also be set to the string \"initOnly\","," * in which case the attribute can only be set during initialization"," * (when used with Base, this means it can only be set during construction)</p>"," * </dd>"," *"," * <dt>setter <Function | String></dt>"," * <dd>"," * <p>The setter function used to massage or normalize the value passed to the set method for the attribute."," * The value returned by the setter will be the final stored value. Returning"," * <a href=\"#property_Attribute.INVALID_VALUE\">Attribute.INVALID_VALUE</a>, from the setter will prevent"," * the value from being stored."," * </p>"," *"," * <p>setter can also be set to a string, representing the name of the instance method to be used as the setter function.</p>"," * </dd>"," *"," * <dt>getter <Function | String></dt>"," * <dd>"," * <p>"," * The getter function used to massage or normalize the value returned by the get method for the attribute."," * The value returned by the getter function is the value which will be returned to the user when they"," * invoke get."," * </p>"," *"," * <p>getter can also be set to a string, representing the name of the instance method to be used as the getter function.</p>"," * </dd>"," *"," * <dt>validator <Function | String></dt>"," * <dd>"," * <p>"," * The validator function invoked prior to setting the stored value. Returning"," * false from the validator function will prevent the value from being stored."," * </p>"," *"," * <p>validator can also be set to a string, representing the name of the instance method to be used as the validator function.</p>"," * </dd>"," *"," * <dt>lazyAdd <boolean></dt>"," * <dd>Whether or not to delay initialization of the attribute until the first call to get/set it."," * This flag can be used to over-ride lazy initialization on a per attribute basis, when adding multiple attributes through"," * the <a href=\"#method_addAttrs\">addAttrs</a> method.</dd>"," *"," * </dl>"," *"," * <p>The setter, getter and validator are invoked with the value and name passed in as the first and second arguments, and with"," * the context (\"this\") set to the host object.</p>"," *"," * <p>Configuration properties outside of the list mentioned above are considered private properties used internally by attribute,"," * and are not intended for public use.</p>"," *"," * @method addAttr"," *"," * @param {String} name The name of the attribute."," * @param {Object} config An object with attribute configuration property/value pairs, specifying the configuration for the attribute."," *"," * <p>"," * <strong>NOTE:</strong> The configuration object is modified when adding an attribute, so if you need"," * to protect the original values, you will need to merge the object."," * </p>"," *"," * @param {boolean} lazy (optional) Whether or not to add this attribute lazily (on the first call to get/set)."," *"," * @return {Object} A reference to the host object."," *"," * @chainable"," */"," addAttr : function(name, config, lazy) {","",""," var host = this, // help compression"," state = host._state,"," data = state.data,"," value,"," added,"," hasValue;",""," config = config || {};",""," if (LAZY_ADD in config) {"," lazy = config[LAZY_ADD];"," }",""," added = state.get(name, ADDED);",""," if (lazy && !added) {"," state.data[name] = {"," lazy : config,"," added : true"," };"," } else {","",""," if (!added || config.isLazyAdd) {",""," hasValue = (VALUE in config);","",""," if (hasValue) {",""," // We'll go through set, don't want to set value in config directly",""," // PERF TODO: VALIDATE: See if setting this to undefined is sufficient. We use to delete before."," // In certain code paths/use cases, undefined may not be the same as not present."," // If not, we can set it to some known fixed value (like INVALID_VALUE, say INITIALIZING_VALUE) for performance,"," // to avoid a delete which seems to help a lot.",""," value = config.value;"," config.value = undefined;"," }",""," config.added = true;"," config.initializing = true;",""," data[name] = config;",""," if (hasValue) {"," // Go through set, so that raw values get normalized/validated"," host.set(name, value);"," }",""," config.initializing = false;"," }"," }",""," return host;"," },",""," /**"," * Checks if the given attribute has been added to the host"," *"," * @method attrAdded"," * @param {String} name The name of the attribute to check."," * @return {boolean} true if an attribute with the given name has been added, false if it hasn't."," * This method will return true for lazily added attributes."," */"," attrAdded: function(name) {"," return !!(this._state.get(name, ADDED));"," },",""," /**"," * Returns the current value of the attribute. If the attribute"," * has been configured with a 'getter' function, this method will delegate"," * to the 'getter' to obtain the value of the attribute."," *"," * @method get"," *"," * @param {String} name The name of the attribute. If the value of the attribute is an Object,"," * dot notation can be used to obtain the value of a property of the object (e.g. <code>get(\"x.y.z\")</code>)"," *"," * @return {Any} The value of the attribute"," */"," get : function(name) {"," return this._getAttr(name);"," },",""," /**"," * Checks whether or not the attribute is one which has been"," * added lazily and still requires initialization."," *"," * @method _isLazyAttr"," * @private"," * @param {String} name The name of the attribute"," * @return {boolean} true if it's a lazily added attribute, false otherwise."," */"," _isLazyAttr: function(name) {"," return this._state.get(name, LAZY);"," },",""," /**"," * Finishes initializing an attribute which has been lazily added."," *"," * @method _addLazyAttr"," * @private"," * @param {Object} name The name of the attribute"," * @param {Object} [lazyCfg] Optional config hash for the attribute. This is added for performance"," * along the critical path, where the calling method has already obtained lazy config from state."," */"," _addLazyAttr: function(name, lazyCfg) {"," var state = this._state;",""," lazyCfg = lazyCfg || state.get(name, LAZY);",""," if (lazyCfg) {",""," // PERF TODO: For App's id override, otherwise wouldn't be"," // needed. It expects to find it in the cfg for it's"," // addAttr override. Would like to remove, once App override is"," // removed."," state.data[name].lazy = undefined;",""," lazyCfg.isLazyAdd = true;",""," this.addAttr(name, lazyCfg);"," }"," },",""," /**"," * Sets the value of an attribute."," *"," * @method set"," * @chainable"," *"," * @param {String} name The name of the attribute. If the"," * current value of the attribute is an Object, dot notation can be used"," * to set the value of a property within the object (e.g. <code>set(\"x.y.z\", 5)</code>)."," * @param {Any} value The value to set the attribute to."," * @param {Object} [opts] Optional data providing the circumstances for the change."," * @return {Object} A reference to the host object."," */"," set : function(name, val, opts) {"," return this._setAttr(name, val, opts);"," },",""," /**"," * Allows setting of readOnly/writeOnce attributes. See <a href=\"#method_set\">set</a> for argument details."," *"," * @method _set"," * @protected"," * @chainable"," *"," * @param {String} name The name of the attribute."," * @param {Any} val The value to set the attribute to."," * @param {Object} [opts] Optional data providing the circumstances for the change."," * @return {Object} A reference to the host object."," */"," _set : function(name, val, opts) {"," return this._setAttr(name, val, opts, true);"," },",""," /**"," * Provides the common implementation for the public set and protected _set methods."," *"," * See <a href=\"#method_set\">set</a> for argument details."," *"," * @method _setAttr"," * @protected"," * @chainable"," *"," * @param {String} name The name of the attribute."," * @param {Any} value The value to set the attribute to."," * @param {Object} [opts] Optional data providing the circumstances for the change."," * @param {boolean} force If true, allows the caller to set values for"," * readOnly or writeOnce attributes which have already been set."," *"," * @return {Object} A reference to the host object."," */"," _setAttr : function(name, val, opts, force) {"," var allowSet = true,"," state = this._state,"," stateProxy = this._stateProxy,"," tCfgs = this._tCfgs,"," cfg,"," initialSet,"," strPath,"," path,"," currVal,"," writeOnce,"," initializing;",""," if (name.indexOf(DOT) !== -1) {"," strPath = name;",""," path = name.split(DOT);"," name = path.shift();"," }",""," // On Demand - Should be rare - handles out of order valueFn, setter, getter references"," if (tCfgs && tCfgs[name]) {"," this._addOutOfOrder(name, tCfgs[name]);"," }",""," cfg = state.data[name] || {};",""," if (cfg.lazy) {"," cfg = cfg.lazy;"," this._addLazyAttr(name, cfg);"," }",""," initialSet = (cfg.value === undefined);",""," if (stateProxy && name in stateProxy && !cfg._bypassProxy) {"," // TODO: Value is always set for proxy. Can we do any better? Maybe take a snapshot as the initial value for the first call to set?"," initialSet = false;"," }",""," writeOnce = cfg.writeOnce;"," initializing = cfg.initializing;",""," if (!initialSet && !force) {",""," if (writeOnce) {"," allowSet = false;"," }",""," if (cfg.readOnly) {"," allowSet = false;"," }"," }",""," if (!initializing && !force && writeOnce === INIT_ONLY) {"," allowSet = false;"," }",""," if (allowSet) {"," // Don't need currVal if initialSet (might fail in custom getter if it always expects a non-undefined/non-null value)"," if (!initialSet) {"," currVal = this.get(name);"," }",""," if (path) {"," val = O.setValue(Y.clone(currVal), path, val);",""," if (val === undefined) {"," allowSet = false;"," }"," }",""," if (allowSet) {"," if (!this._fireAttrChange || initializing) {"," this._setAttrVal(name, strPath, currVal, val, opts, cfg);"," } else {"," // HACK - no real reason core needs to know about _fireAttrChange, but"," // it adds fn hops if we want to break it out. Not sure it's worth it for this critical path"," this._fireAttrChange(name, strPath, currVal, val, opts, cfg);"," }"," }"," }",""," return this;"," },",""," /**"," * Utility method used by get/set to add attributes"," * encountered out of order when calling addAttrs()."," *"," * For example, if:"," *"," * this.addAttrs({"," * foo: {"," * setter: function() {"," * // make sure this bar is available when foo is added"," * this.get(\"bar\");"," * }"," * },"," * bar: {"," * value: ..."," * }"," * });"," *"," * @method _addOutOfOrder"," * @private"," * @param name {String} attribute name"," * @param cfg {Object} attribute configuration"," */"," _addOutOfOrder : function(name, cfg) {",""," var attrs = {};"," attrs[name] = cfg;",""," delete this._tCfgs[name];",""," // TODO: The original code went through addAttrs, so"," // sticking with it for this pass. Seems like we could"," // just jump straight to _addAttr() and get some perf"," // improvement."," this._addAttrs(attrs, this._tVals);"," },",""," /**"," * Provides the common implementation for the public get method,"," * allowing Attribute hosts to over-ride either method."," *"," * See <a href=\"#method_get\">get</a> for argument details."," *"," * @method _getAttr"," * @protected"," * @chainable"," *"," * @param {String} name The name of the attribute."," * @return {Any} The value of the attribute."," */"," _getAttr : function(name) {"," var fullName = name,"," tCfgs = this._tCfgs,"," path,"," getter,"," val,"," attrCfg;",""," if (name.indexOf(DOT) !== -1) {"," path = name.split(DOT);"," name = path.shift();"," }",""," // On Demand - Should be rare - handles out of"," // order valueFn, setter, getter references"," if (tCfgs && tCfgs[name]) {"," this._addOutOfOrder(name, tCfgs[name]);"," }",""," attrCfg = this._state.data[name] || {};",""," // Lazy Init"," if (attrCfg.lazy) {"," attrCfg = attrCfg.lazy;"," this._addLazyAttr(name, attrCfg);"," }",""," val = this._getStateVal(name, attrCfg);",""," getter = attrCfg.getter;",""," if (getter && !getter.call) {"," getter = this[getter];"," }",""," val = (getter) ? getter.call(this, val, fullName) : val;"," val = (path) ? O.getValue(val, path) : val;",""," return val;"," },",""," /**"," * Gets the stored value for the attribute, from either the"," * internal state object, or the state proxy if it exits"," *"," * @method _getStateVal"," * @private"," * @param {String} name The name of the attribute"," * @param {Object} [cfg] Optional config hash for the attribute. This is added for performance along the critical path,"," * where the calling method has already obtained the config from state."," *"," * @return {Any} The stored value of the attribute"," */"," _getStateVal : function(name, cfg) {"," var stateProxy = this._stateProxy;",""," if (!cfg) {"," cfg = this._state.getAll(name) || {};"," }",""," return (stateProxy && (name in stateProxy) && !(cfg._bypassProxy)) ? stateProxy[name] : cfg.value;"," },",""," /**"," * Sets the stored value for the attribute, in either the"," * internal state object, or the state proxy if it exits"," *"," * @method _setStateVal"," * @private"," * @param {String} name The name of the attribute"," * @param {Any} value The value of the attribute"," */"," _setStateVal : function(name, value) {"," var stateProxy = this._stateProxy;"," if (stateProxy && (name in stateProxy) && !this._state.get(name, BYPASS_PROXY)) {"," stateProxy[name] = value;"," } else {"," this._state.add(name, VALUE, value);"," }"," },",""," /**"," * Updates the stored value of the attribute in the privately held State object,"," * if validation and setter passes."," *"," * @method _setAttrVal"," * @private"," * @param {String} attrName The attribute name."," * @param {String} subAttrName The sub-attribute name, if setting a sub-attribute property (\"x.y.z\")."," * @param {Any} prevVal The currently stored value of the attribute."," * @param {Any} newVal The value which is going to be stored."," * @param {Object} [opts] Optional data providing the circumstances for the change."," * @param {Object} [attrCfg] Optional config hash for the attribute. This is added for performance along the critical path,"," * where the calling method has already obtained the config from state."," *"," * @return {booolean} true if the new attribute value was stored, false if not."," */"," _setAttrVal : function(attrName, subAttrName, prevVal, newVal, opts, attrCfg) {",""," var host = this,"," allowSet = true,"," cfg = attrCfg || this._state.data[attrName] || {},"," validator = cfg.validator,"," setter = cfg.setter,"," initializing = cfg.initializing,"," prevRawVal = this._getStateVal(attrName, cfg),"," name = subAttrName || attrName,"," retVal,"," valid;",""," if (validator) {"," if (!validator.call) {"," // Assume string - trying to keep critical path tight, so avoiding Lang check"," validator = this[validator];"," }"," if (validator) {"," valid = validator.call(host, newVal, name, opts);",""," if (!valid && initializing) {"," newVal = cfg.defaultValue;"," valid = true; // Assume it's valid, for perf."," }"," }"," }",""," if (!validator || valid) {"," if (setter) {"," if (!setter.call) {"," // Assume string - trying to keep critical path tight, so avoiding Lang check"," setter = this[setter];"," }"," if (setter) {"," retVal = setter.call(host, newVal, name, opts);",""," if (retVal === INVALID_VALUE) {"," if (initializing) {"," newVal = cfg.defaultValue;"," } else {"," allowSet = false;"," }"," } else if (retVal !== undefined){"," newVal = retVal;"," }"," }"," }",""," if (allowSet) {"," if(!subAttrName && (newVal === prevRawVal) && !Lang.isObject(newVal)) {"," allowSet = false;"," } else {"," // Store value"," if (!(INIT_VALUE in cfg)) {"," cfg.initValue = newVal;"," }"," host._setStateVal(attrName, newVal);"," }"," }",""," } else {"," allowSet = false;"," }",""," return allowSet;"," },",""," /**"," * Sets multiple attribute values."," *"," * @method setAttrs"," * @param {Object} attrs An object with attributes name/value pairs."," * @param {Object} [opts] Optional data providing the circumstances for the change."," * @return {Object} A reference to the host object."," * @chainable"," */"," setAttrs : function(attrs, opts) {"," return this._setAttrs(attrs, opts);"," },",""," /**"," * Implementation behind the public setAttrs method, to set multiple attribute values."," *"," * @method _setAttrs"," * @protected"," * @param {Object} attrs An object with attributes name/value pairs."," * @param {Object} [opts] Optional data providing the circumstances for the change"," * @return {Object} A reference to the host object."," * @chainable"," */"," _setAttrs : function(attrs, opts) {"," var attr;"," for (attr in attrs) {"," if ( attrs.hasOwnProperty(attr) ) {"," this.set(attr, attrs[attr], opts);"," }"," }"," return this;"," },",""," /**"," * Gets multiple attribute values."," *"," * @method getAttrs"," * @param {Array | boolean} attrs Optional. An array of attribute names. If omitted, all attribute values are"," * returned. If set to true, all attributes modified from their initial values are returned."," * @return {Object} An object with attribute name/value pairs."," */"," getAttrs : function(attrs) {"," return this._getAttrs(attrs);"," },",""," /**"," * Implementation behind the public getAttrs method, to get multiple attribute values."," *"," * @method _getAttrs"," * @protected"," * @param {Array | boolean} attrs Optional. An array of attribute names. If omitted, all attribute values are"," * returned. If set to true, all attributes modified from their initial values are returned."," * @return {Object} An object with attribute name/value pairs."," */"," _getAttrs : function(attrs) {"," var obj = {},"," attr, i, len,"," modifiedOnly = (attrs === true);",""," // TODO - figure out how to get all \"added\""," if (!attrs || modifiedOnly) {"," attrs = O.keys(this._state.data);"," }",""," for (i = 0, len = attrs.length; i < len; i++) {"," attr = attrs[i];",""," if (!modifiedOnly || this._getStateVal(attr) != this._state.get(attr, INIT_VALUE)) {"," // Go through get, to honor cloning/normalization"," obj[attr] = this.get(attr);"," }"," }",""," return obj;"," },",""," /**"," * Configures a group of attributes, and sets initial values."," *"," * <p>"," * <strong>NOTE:</strong> This method does not isolate the configuration object by merging/cloning."," * The caller is responsible for merging/cloning the configuration object if required."," * </p>"," *"," * @method addAttrs"," * @chainable"," *"," * @param {Object} cfgs An object with attribute name/configuration pairs."," * @param {Object} values An object with attribute name/value pairs, defining the initial values to apply."," * Values defined in the cfgs argument will be over-written by values in this argument unless defined as read only."," * @param {boolean} lazy Whether or not to delay the intialization of these attributes until the first call to get/set."," * Individual attributes can over-ride this behavior by defining a lazyAdd configuration property in their configuration."," * See <a href=\"#method_addAttr\">addAttr</a>."," *"," * @return {Object} A reference to the host object."," */"," addAttrs : function(cfgs, values, lazy) {"," if (cfgs) {"," this._tCfgs = cfgs;"," this._tVals = (values) ? this._normAttrVals(values) : null;"," this._addAttrs(cfgs, this._tVals, lazy);"," this._tCfgs = this._tVals = null;"," }",""," return this;"," },",""," /**"," * Implementation behind the public addAttrs method."," *"," * This method is invoked directly by get if it encounters a scenario"," * in which an attribute's valueFn attempts to obtain the"," * value an attribute in the same group of attributes, which has not yet"," * been added (on demand initialization)."," *"," * @method _addAttrs"," * @private"," * @param {Object} cfgs An object with attribute name/configuration pairs."," * @param {Object} values An object with attribute name/value pairs, defining the initial values to apply."," * Values defined in the cfgs argument will be over-written by values in this argument unless defined as read only."," * @param {boolean} lazy Whether or not to delay the intialization of these attributes until the first call to get/set."," * Individual attributes can over-ride this behavior by defining a lazyAdd configuration property in their configuration."," * See <a href=\"#method_addAttr\">addAttr</a>."," */"," _addAttrs : function(cfgs, values, lazy) {"," var tCfgs = this._tCfgs,"," tVals = this._tVals,"," attr,"," attrCfg,"," value;",""," for (attr in cfgs) {"," if (cfgs.hasOwnProperty(attr)) {",""," // Not Merging. Caller is responsible for isolating configs"," attrCfg = cfgs[attr];"," attrCfg.defaultValue = attrCfg.value;",""," // Handle simple, complex and user values, accounting for read-only"," value = this._getAttrInitVal(attr, attrCfg, tVals);",""," if (value !== undefined) {"," attrCfg.value = value;"," }",""," if (tCfgs[attr]) {"," tCfgs[attr] = undefined;"," }",""," this.addAttr(attr, attrCfg, lazy);"," }"," }"," },",""," /**"," * Utility method to protect an attribute configuration"," * hash, by merging the entire object and the individual"," * attr config objects."," *"," * @method _protectAttrs"," * @protected"," * @param {Object} attrs A hash of attribute to configuration object pairs."," * @return {Object} A protected version of the attrs argument."," * @deprecated Use `AttributeCore.protectAttrs()` or"," * `Attribute.protectAttrs()` which are the same static utility method."," */"," _protectAttrs : AttributeCore.protectAttrs,",""," /**"," * Utility method to normalize attribute values. The base implementation"," * simply merges the hash to protect the original."," *"," * @method _normAttrVals"," * @param {Object} valueHash An object with attribute name/value pairs"," *"," * @return {Object} An object literal with 2 properties - \"simple\" and \"complex\","," * containing simple and complex attribute values respectively keyed"," * by the top level attribute name, or null, if valueHash is falsey."," *"," * @private"," */"," _normAttrVals : function(valueHash) {"," var vals,"," subvals,"," path,"," attr,"," v, k;",""," if (!valueHash) {"," return null;"," }",""," vals = {};",""," for (k in valueHash) {"," if (valueHash.hasOwnProperty(k)) {"," if (k.indexOf(DOT) !== -1) {"," path = k.split(DOT);"," attr = path.shift();",""," subvals = subvals || {};",""," v = subvals[attr] = subvals[attr] || [];"," v[v.length] = {"," path : path,"," value: valueHash[k]"," };"," } else {"," vals[k] = valueHash[k];"," }"," }"," }",""," return { simple:vals, complex:subvals };"," },",""," /**"," * Returns the initial value of the given attribute from"," * either the default configuration provided, or the"," * over-ridden value if it exists in the set of initValues"," * provided and the attribute is not read-only."," *"," * @param {String} attr The name of the attribute"," * @param {Object} cfg The attribute configuration object"," * @param {Object} initValues The object with simple and complex attribute name/value pairs returned from _normAttrVals"," *"," * @return {Any} The initial value of the attribute."," *"," * @method _getAttrInitVal"," * @private"," */"," _getAttrInitVal : function(attr, cfg, initValues) {"," var val = cfg.value,"," valFn = cfg.valueFn,"," tmpVal,"," initValSet = false,"," readOnly = cfg.readOnly,"," simple,"," complex,"," i,"," l,"," path,"," subval,"," subvals;",""," if (!readOnly && initValues) {"," // Simple Attributes"," simple = initValues.simple;"," if (simple && simple.hasOwnProperty(attr)) {"," val = simple[attr];"," initValSet = true;"," }"," }",""," if (valFn && !initValSet) {"," if (!valFn.call) {"," valFn = this[valFn];"," }"," if (valFn) {"," tmpVal = valFn.call(this, attr);"," val = tmpVal;"," }"," }",""," if (!readOnly && initValues) {",""," // Complex Attributes (complex values applied, after simple, in case both are set)"," complex = initValues.complex;",""," if (complex && complex.hasOwnProperty(attr) && (val !== undefined) && (val !== null)) {"," subvals = complex[attr];"," for (i = 0, l = subvals.length; i < l; ++i) {"," path = subvals[i].path;"," subval = subvals[i].value;"," O.setValue(val, path, subval);"," }"," }"," }",""," return val;"," },",""," /**"," * Utility method to set up initial attributes defined during construction,"," * either through the constructor.ATTRS property, or explicitly passed in."," *"," * @method _initAttrs"," * @protected"," * @param attrs {Object} The attributes to add during construction (passed through to <a href=\"#method_addAttrs\">addAttrs</a>)."," * These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor."," * @param values {Object} The initial attribute values to apply (passed through to <a href=\"#method_addAttrs\">addAttrs</a>)."," * These are not merged/cloned. The caller is responsible for isolating user provided values if required."," * @param lazy {boolean} Whether or not to add attributes lazily (passed through to <a href=\"#method_addAttrs\">addAttrs</a>)."," */"," _initAttrs : function(attrs, values, lazy) {"," // ATTRS support for Node, which is not Base based"," attrs = attrs || this.constructor.ATTRS;",""," var Base = Y.Base,"," BaseCore = Y.BaseCore,"," baseInst = (Base && Y.instanceOf(this, Base)),"," baseCoreInst = (!baseInst && BaseCore && Y.instanceOf(this, BaseCore));",""," if (attrs && !baseInst && !baseCoreInst) {"," this.addAttrs(Y.AttributeCore.protectAttrs(attrs), values, lazy);"," }"," }"," };",""," Y.AttributeCore = AttributeCore;","","","}, '3.13.0', {\"requires\": [\"oop\"]});","","}());"]};