1 {"version":3,"file":"polymer.js","sources":["../src/polymer.js","../src/boot.js"
,"../src/lib/lang.js","../src/lib/job.js","../src/lib/dom.js","../src/lib/super.
js","../src/lib/deserialize.js","../src/api.js","../src/instance/utils.js","../s
rc/instance/events.js","../src/instance/attributes.js","../src/instance/properti
es.js","../src/instance/mdv.js","../src/instance/base.js","../src/instance/style
s.js","../src/declaration/polymer.js","../src/declaration/path.js","../src/decla
ration/styles.js","../src/declaration/events.js","../src/declaration/properties.
js","../src/declaration/attributes.js","../src/declaration/prototype.js","../src
/declaration/queue.js","../src/declaration/import.js","../src/declaration/polyme
r-element.js"],"names":["Polymer","window","scope","extend","prototype","api","O
bject","getOwnPropertyNames","forEach","n","pd","getOwnPropertyDescriptor","defi
neProperty","value","nom","job","callback","wait","stop","Job","this","go","inCo
ntext","context","boundComplete","complete","bind","h","setTimeout","handle","cl
earTimeout","requestAnimationFrame","cancelAnimationFrame","call","registry","HT
MLElement","register","tag","getPrototypeForTag","getPrototypeOf","document","cr
eateElement","originalStopPropagation","Event","stopPropagation","cancelBubble",
"apply","arguments","$super","arrayOfArgs","caller","_super","nameInThis","conso
le","warn","memoizeSuper","fn","nextSuper","proto","name","method","p","__proto_
_","n$","i","l","length","d","super","deserializeValue","currentValue","inferred
Type","Date","typeHandlers","string","date","parse","now","boolean","number","pa
rseFloat","parseInt","isNaN","object","JSON","replace","e","function","declarati
on","instance","publish","apis","utils","async","args","timeout","Platform","flu
sh","cancelAsync","fire","type","detail","onNode","bubbles","cancelable","node",
"event","CustomEvent","undefined","dispatchEvent","asyncFire","classFollows","an
ew","old","className","classList","remove","add","nop","nob","asyncMethod","log"
,"logFlags","EVENT_PREFIX","events","addHostListeners","eventDelegates","keys","
localName","bindable","eventName","self","PolymerExpressions","prepareEventBindi
ng","Path","get","resolveEventHandler","model","path","getValueFrom","dispatchMe
thod","obj","group","groupEnd","attributes","copyInstanceAttributes","a$","_inst
anceAttributes","k","hasAttribute","setAttribute","takeAttributes","_publishLC",
"a","attributeToProperty","propertyForAttribute","search","bindPattern","match",
"stringValue","serializeValue","reflectPropertyToAttribute","serializedValue","r
emoveAttribute","bindProperties","inA","inProperty","observable","LOG_BIND_PROPS
","inB","inPath","v","discardChanges","setValue","Observer","defineComputedPrope
rty","properties","observeProperties","_observeNames","pn$","_publishNames","o",
"_propertyObserver","CompoundObserver","registerObservers","addPath","observeArr
ayValue","observe","open","notifyPropertyChanges","newValues","oldValues","paths
","called","invokeMethod","callbackName","Array","isArray","closeNamedObserver",
"observer","ArrayObserver","registerNamedObserver","bindProperty","property","ob
servers","_observers","push","closeObservers","closeObserverArray","observerArra
y","close","o$","_namedObservers","closeNamedObservers","findEventController","p
arentNode","lightDomController","host","syntax","ctlr","mdv","instanceTemplate",
"template","dom","createInstance","bindings_","enableBindingsReflection","path_"
,"mixinSuper","asyncUnbindAll","_unbound","unbind","_unbindAllJob","unbindAll","
cancelUnbindAll","mustachePattern","isBase","hasOwnProperty","PolymerBase","base
","created","ready","createdCallback","templateInstance","prepareElement","_elem
entPrepared","shadowRoots","parseDeclarations","attachedCallback","attached","en
teredView","hasBeenAttached","domReady","detachedCallback","preventDispose","det
ached","leftView","enteredViewCallback","leftViewCallback","enteredDocumentCallb
ack","leftDocumentCallback","element","parseDeclaration","elementElement","fetch
Template","root","shadowFromTemplate","querySelector","createShadowRoot","append
Child","shadowRootReady","lightFromTemplate","refNode","insertBefore","marshalNo
deReferences","PointerGestures","$","querySelectorAll","id","attributeChangedCal
lback","getAttribute","attributeChanged","onMutation","listener","MutationObserv
er","mutations","disconnect","childList","subtree","constructor","Base","shimCss
Text","cssText","is","selector","ShadowCSS","makeScopeSelector","STYLE_SCOPE_ATT
RIBUTE","STYLE_CONTROLLER_SCOPE","styles","installControllerStyles","findStyleSc
ope","scopeHasNamedStyle","cssTextForScope","installScopeCssText","installScopeS
tyle","style","s","textContent","ShadowDOMPolyfill","cssTextToScopeStyle","apply
StyleToScope","_scopeStyles","script","_currentScript","getRegisteredPrototype",
"registerPrototype","notifyPrototype","waitingForPrototype","client","waitProtot
ype","registerWhenReady","prototypesByName","declarations","deliverDeclarations"
,"resolveElementPaths","urlResolver","resolveDom","addResolvePathApi","assetPath
","URL","ownerDocument","baseURI","resolvePath","urlPath","u","href","importRule
ForSheet","sheet","baseUrl","head","clone","createStyleElement","attr","firstEle
mentChild","s$","nextElementSibling","cssTextFromSheet","__resource","matchesSel
ector","inSelector","matches","STYLE_SELECTOR","STYLE_LOADABLE_MATCH","SHEET_SEL
ECTOR","STYLE_GLOBAL_SCOPE","SCOPE_ATTR","loadStyles","content","templateContent
","convertSheetsToStyles","findLoadableStyles","styleResolver","c","copySheetAtt
ributes","replaceChild","link","loadables","installSheets","cacheSheets","cacheS
tyles","installLocalSheets","installGlobalStyles","sheets","findNodes","removeCh
ild","filter","firstChild","matcher","nodes","array","templateNodes","concat","s
tyleForScope","scopeDescriptor","webkitMatchesSelector","mozMatchesSelector","pa
rseHostEvents","delegates","addAttributeDelegates","hasEventPrefix","removeEvent
Prefix","trim","slice","prefixLength","inferObservers","explodeObservers","explo
ded","ni","names","split","optimizePropertyMaps","publishProperties","requirePro
perties","lowerCaseMap","map","toLowerCase","ATTRIBUTES_ATTRIBUTE","ATTRIBUTES_R
EGEX","inheritAttributesObjects","inheritObject","publishAttributes","accumulate
InstanceAttributes","clonable","isInstanceAttribute","blackList","extends","nosc
ript","assetpath","cache-csstext","ensurePrototypeTraversal","ancestor","extende
eName","buildPrototype","publishConstructor","extension","generateBasePrototype"
,"desugarBeforeChaining","chainPrototypes","desugarAfterChaining","inheritMetaDa
ta","chained","chainObject","extendee","shimStyling","registerCallback","symbol"
,"ctor","extnds","findBasePrototype","ensureBaseApi","memoizedBases","extended",
"create","mixinMethod","source","info","typeExtension","findTypeExtension","regi
sterElement","indexOf","inherited","queueForElement","contains","mainQueue","imp
ortQueue","nextQueued","whenPolymerReady","queue","waitToReady","CustomElements"
,"HTMLImports","whenImportsReady","addReadyCallback","check","__check","__go","u
seNative","readied","shift","nextElement","canReady","isEmpty","upgradeDocumentT
ree","readyCallbacks","addEventListener","importElements","elementOrFragment","i
mportUrls","urls","url","frag","createDocumentFragment","rel","import","isRegist
ered","Boolean","isCustomTag","init","loadResources","registered","waitingForQue
ue","waitingForResources","_register","handleNoScript","_needsResources","body"]
,"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKAA,WCI8B,kBAAnBC,QAAOD,UAChBA,YCL
F,SAAUE,GAGR,QAASC,GAAOC,EAAWC,GAiBzB,MAhBID,IAAaC,GAEfC,OAAOC,oBAAoBF,GAAKG,QAA
Q,SAASC,GAE/C,GAAIC,GAAKJ,OAAOK,yBAAyBN,EAAKI,EAC1CC,KAEFJ,OAAOM,eAAeR,EAAWK,EAA
GC,GAEb,kBAAZA,GAAGG,QAEZH,EAAGG,MAAMC,IAAML,MAKhBL,EAKTF,EAAMC,OAASA,GAEdH,SC1B
H,SAAUE,GA6CR,QAASa,GAAIA,EAAKC,EAAUC,GAO1B,MANIF,GACFA,EAAIG,OAEJH,EAAM,GAAII,G
AAIC,MAEhBL,EAAIM,GAAGL,EAAUC,GACVF,EAzCT,GAAII,GAAM,SAASG,GACjBF,KAAKG,QAAUD,EA
CfF,KAAKI,cAAgBJ,KAAKK,SAASC,KAAKN,MAE1CD,GAAIf,WACFiB,GAAI,SAASL,EAAUC,GACrBG,K
AAKJ,SAAWA,CAChB,IAAIW,EACCV,IAMHU,EAAIC,WAAWR,KAAKI,cAAeP,GACnCG,KAAKS,OAAS,WAC
ZC,aAAaH,MAPfA,EAAII,sBAAsBX,KAAKI,eAC/BJ,KAAKS,OAAS,WACZG,qBAAqBL,MAS3BT,KAAM,W
ACAE,KAAKS,SACPT,KAAKS,SACLT,KAAKS,OAAS,OAGlBJ,SAAU,WACJL,KAAKS,SACPT,KAAKF,OACL
E,KAAKJ,SAASiB,KAAKb,KAAKG,YAiB9BrB,EAAMa,IAAMA,GAEXf,SC5DH,WAEE,GAAIkC,KAEJC,aA
AYC,SAAW,SAASC,EAAKjC,GACnC8B,EAASG,GAAOjC,GAIlB+B,YAAYG,mBAAqB,SAASD,GACxC,GAAI
jC,GAAaiC,EAA8BH,EAASG,GAAjCF,YAAY/B,SAEnC,OAAOA,IAAaE,OAAOiC,eAAeC,SAASC,cAAcJ,
IAInE,IAAIK,GAA0BC,MAAMvC,UAAUwC,eAC9CD,OAAMvC,UAAUwC,gBAAkB,WAChCxB,KAAKyB,cAAe
,EACpBH,EAAwBI,MAAM1B,KAAM2B,aASrC/C,SC5BF,SAAUE,GAgBP,QAAS8C,GAAOC,GAMd,GAAIC,G
AASF,EAAOE,OAEhBpC,EAAMoC,EAAOpC,IAEbqC,EAASD,EAAOC,MAYpB,IAXKA,IACErC,IACHA,EAA
MoC,EAAOpC,IAAMsC,EAAWnB,KAAKb,KAAM8B,IAEtCpC,GACHuC,QAAQC,KAAK,iFAIfH,EAASI,EAA
aL,EAAQpC,EAAKyB,EAAenB,QAE/C+B,EAGE,CAEL,GAAIK,GAAKL,EAAOrC,EAOhB,OALK0C,GAAGL,
QACNI,EAAaC,EAAI1C,EAAKqC,GAIjBK,EAAGV,MAAM1B,KAAM6B,QAI1B,QAASQ,GAAUC,EAAOC,EAA
MT,GAE9B,KAAOQ,GAAO,CACZ,GAAKA,EAAMC,KAAUT,GAAWQ,EAAMC,GACpC,MAAOD,EAETA,GAAQnB,
EAAemB,IAI3B,QAASH,GAAaK,EAAQD,EAAMD,GAUlC,MANAE,GAAOT,OAASM,EAAUC,EAAOC,EAAMC,G
ACnCA,EAAOT,SAGTS,EAAOT,OAAOQ,GAAM7C,IAAM6C,GAErBC,EAAOT,OAGhB,QAASC,GAAWvC,GAEl
B,IADA,GAAIgD,GAAIzC,KAAK0C,UACND,GAAKA,IAAM1B,YAAY/B,WAAW,CAGvC,IAAK,GAAsBK,GAD
vBsD,EAAKzD,OAAOC,oBAAoBsD,GAC3BG,EAAE,EAAGC,EAAEF,EAAGG,OAAaD,EAAFD,IAAQvD,EAAE
sD,EAAGC,IAAKA,IAAK,CACnD,GAAIG,GAAI7D,OAAOK,yBAAyBkD,EAAGpD,EAC3C,IAAuB,kBAAZ0D
,GAAEtD,OAAwBsD,EAAEtD,QAAUA,EAC/C,MAAOJ,GAGXoD,EAAIA,EAAEC,WAOV,QAASvB,GAAenC,G
ACtB,MAAOA,GAAU0D,UAkBnB5D,EAAMkE,MAAQpB,GAEfhD,SCnHH,SAAUE,GA8CR,QAASmE,GAAiBxD
,EAAOyD,GAE/B,GAAIC,SAAsBD,EAM1B,OAJIA,aAAwBE,QAC1BD,EAAe,QAGVE,EAAaF,GAAc1D,EAA
OyD,GApD3C,GAAIG,IACFC,OAAQ,SAAS7D,GACf,MAAOA,IAET8D,KAAM,SAAS9D,GACb,MAAO,IAAI2
D,MAAKA,KAAKI,MAAM/D,IAAU2D,KAAKK,QAE5CC,UAAS,SAASjE,GAChB,MAAc,KAAVA,GACK,EAEQ,
UAAVA,GAAoB,IAAUA,GAEvCkE,OAAQ,SAASlE,GACf,GAAIJ,GAAIuE,WAAWnE,EAKnB,OAHU,KAANJ,
IACFA,EAAIwE,SAASpE,IAERqE,MAAMzE,GAAKI,EAAQJ,GAK5B0E,OAAQ,SAAStE,EAAOyD,GACtB,G
AAqB,OAAjBA,EACF,MAAOzD,EAET,KAIE,MAAOuE,MAAKR,MAAM/D,EAAMwE,QAAQ,KAAM,MACtC,MAA
MC,GAEN,MAAOzE,KAIX0E,WAAY,SAAS1E,EAAOyD,GAC1B,MAAOA,IAiBXpE,GAAMmE,iBAAmBA,GAEx
BrE,SC9DH,SAAUE,GAIR,GAAIC,GAASD,EAAMC,OAIfE,IAEJA,GAAImF,eACJnF,EAAIoF,YAEJpF,E
AAIqF,QAAU,SAASC,EAAMvF,GAC3B,IAAK,GAAIK,KAAKkF,GACZxF,EAAOC,EAAWuF,EAAKlF,KAM3B
P,EAAMG,IAAMA,GAEXL,SCvBH,SAAUE,GAER,GAAI0F,IASFC,MAAO,SAASjC,EAAQkC,EAAMC,GAG5B
C,SAASC,QAETH,EAAQA,GAAQA,EAAK5B,OAAU4B,GAAQA,EAEvC,IAAItC,GAAK,YACNpC,KAAKwC,IA
AWA,GAAQd,MAAM1B,KAAM0E,IACrCpE,KAAKN,MAEHS,EAASkE,EAAUnE,WAAW4B,EAAIuC,GAClChE,
sBAAsByB,EAE1B,OAAOuC,GAAUlE,GAAUA,GAE7BqE,YAAa,SAASrE,GACP,EAATA,EACFG,sBAAsBH,
GAEtBC,aAAaD,IAWjBsE,KAAM,SAASC,EAAMC,EAAQC,EAAQC,EAASC,GAC5C,GAAIC,GAAOH,GAAUlF
,KACjBiF,EAASA,MACTK,EAAQ,GAAIC,aAAYP,GAC1BG,QAAsBK,SAAZL,EAAwBA,GAAU,EAC5CC,WAA
4BI,SAAfJ,EAA2BA,GAAa,EACrDH,OAAQA,GAGV,OADAI,GAAKI,cAAcH,GACZA,GASTI,UAAW,WACT1
F,KAAKyE,MAAM,OAAQ9C,YASrBgE,aAAc,SAASC,EAAMC,EAAKC,GAC5BD,GACFA,EAAIE,UAAUC,OAA
OF,GAEnBF,GACFA,EAAKG,UAAUE,IAAIH,KAMrBI,EAAM,aAGNC,IAIJ3B,GAAM4B,YAAc5B,EAAMC,M
AI1B3F,EAAMG,IAAIoF,SAASG,MAAQA,EAC3B1F,EAAMoH,IAAMA,EACZpH,EAAMqH,IAAMA,GAEXvH,
SC/FH,SAAUE,GAIR,GAAIuH,GAAMxH,OAAOyH,aACbC,EAAe,MAGfC,GAEFD,aAAcA,EAEdE,iBAAkB,
WAChB,GAAID,GAASxG,KAAK0G,cAClBL,GAAIG,QAAWtH,OAAOyH,KAAKH,GAAQ1D,OAAS,GAAMb,QAA
QoE,IAAI,yBAA0BrG,KAAK4G,UAAWJ,EAOxG,IAAiBK,GAAUC,EAAvBC,EAAO/G,IACX,KAAK,GAAIX,
KAAKmH,GACZM,EAAYP,EAAelH,GAC3BwH,EAAWG,mBAAmBC,oBAC5BC,KAAKC,IAAIX,EAAOnH,IAChB
yH,GAEEM,oBAAqB,SAASC,EAAOC,GACnC,GAAIlF,GAAKkF,EAAKC,aAAaR,EAC3B,OAAI3E,GACKA,E
AAG9B,KAAKyG,GADjB,WAMG/G,KAAMA,MAAM,IAIzBwH,eAAgB,SAASC,EAAKjF,EAAQkC,GACpC,GAA
I+C,EAAK,CACPpB,EAAIG,QAAUvE,QAAQyF,MAAM,qBAAsBD,EAAIb,UAAWpE,EACjE,IAAIJ,GAAuB,
kBAAXI,GAAwBA,EAASiF,EAAIjF,EACjDJ,IACFA,EAAGsC,EAAO,QAAU,QAAQ+C,EAAK/C,GAEnC2B,
EAAIG,QAAUvE,QAAQ0F,WACtB/C,SAASC,UAOf/F,GAAMG,IAAIoF,SAASmC,OAASA,GAE3B5H,SC1DH
,SAAUE,GAIR,GAAI8I,IACFC,uBAAwB,WACtB,GAAIC,GAAK9H,KAAK+H,mBACd,KAAK,GAAIC,KAAKF
,GACP9H,KAAKiI,aAAaD,IACrBhI,KAAKkI,aAAaF,EAAGF,EAAGE,KAK9BG,eAAgB,WAGd,GAAInI,K
AAKoI,WACP,IAAK,GAA0CC,GAAtCzF,EAAE,EAAGkF,EAAG9H,KAAK4H,WAAY/E,EAAEiF,EAAGhF,QA
AYuF,EAAEP,EAAGlF,KAASC,EAAFD,EAAKA,IAClE5C,KAAKsI,oBAAoBD,EAAE9F,KAAM8F,EAAE5I,
QAMzC6I,oBAAqB,SAAS/F,EAAM9C,GAGlC,GAAI8C,GAAOvC,KAAKuI,qBAAqBhG,EACrC,IAAIA,EAA
M,CAIR,GAAI9C,GAASA,EAAM+I,OAAO1J,EAAM2J,cAAgB,EAC9C,MAGF,IAAIvF,GAAelD,KAAKuC,G
AEpB9C,EAAQO,KAAKiD,iBAAiBxD,EAAOyD,EAErCzD,KAAUyD,IAEZlD,KAAKuC,GAAQ9C,KAKnB8I,
qBAAsB,SAAShG,GAC7B,GAAImG,GAAQ1I,KAAKoI,YAAcpI,KAAKoI,WAAW7F,EAE/C,OAAOmG,IAGTz
F,iBAAkB,SAAS0F,EAAazF,GACtC,MAAOpE,GAAMmE,iBAAiB0F,EAAazF,IAE7C0F,eAAgB,SAASnJ,
EAAO0D,GAC9B,MAAqB,YAAjBA,EACK1D,EAAQ,GAAK+F,OACM,WAAjBrC,GAA8C,aAAjBA,GACvBqC,S
AAV/F,EACEA,EAFF,QAKToJ,2BAA4B,SAAStG,GACnC,GAAIY,SAAsBnD,MAAKuC,GAE3BuG,EAAkB9I
,KAAK4I,eAAe5I,KAAKuC,GAAOY,EAE9BqC,UAApBsD,EACF9I,KAAKkI,aAAa3F,EAAMuG,GAME,YAA
jB3F,GACTnD,KAAK+I,gBAAgBxG,IAO3BzD,GAAMG,IAAIoF,SAASuD,WAAaA,GAE/BhJ,SCvFH,SAAU
E,GAqIR,QAASkK,GAAeC,EAAKC,EAAYC,GACvC9C,EAAI/F,MAAQ2B,QAAQoE,IAAI+C,EAAgBC,IAAI
zC,WAAa,SAAU0C,OAAQL,EAAIrC,UAAWsC,EAI1F,IAAIK,GAAIJ,EAAWK,gBAInB,QAHU,OAAND,GAA
oB/D,SAAN+D,IAChBJ,EAAWM,SAASR,EAAIC,IAEnBQ,SAASC,uBAAuBV,EAAKC,EAAYC,GA1I1D,GAA
I9C,GAAMxH,OAAOyH,aAUbsD,GACFC,kBAAmB,WACjB,GAAIlH,GAAK3C,KAAK8J,cAAeC,EAAM/J,KA
AKgK,aACxC,IAAKrH,GAAMA,EAAGG,QAAYiH,GAAOA,EAAIjH,OAAS,CAC5C,GACImH,GAAIjK,KAAKk
K,kBAAoB,GAAIC,iBAErCnK,MAAKoK,mBAAmBH,GACxB,KAAK,GAAsB5K,GAAlBuD,EAAE,EAAGC,EAA
EF,EAAGG,OAAcD,EAAFD,IAASvD,EAAEsD,EAAGC,IAAKA,IAAK,CACrDqH,EAAEI,QAAQrK,KAAMX,E
AEhB,IAAIC,GAAKJ,OAAOK,yBAAyBS,KAAK0C,UAAWrD,EACrDC,IAAMA,EAAGG,OACXO,KAAKsK,kBA
AkBjL,EAAGC,EAAGG,MAAO,MAGxC,IAAK,GAAuBJ,GAAnBuD,EAAE,EAAGC,EAAEkH,EAAIjH,OAAcD,
EAAFD,IAASvD,EAAE0K,EAAInH,IAAKA,IAC7C5C,KAAKuK,SAAgC/E,SAApBxF,KAAKuK,QAAQlL,IA
CjC4K,EAAEI,QAAQrK,KAAMX,EAGpB4K,GAAEO,KAAKxK,KAAKyK,sBAAuBzK,QAGvCyK,sBAAuB,SAA
SC,EAAWC,EAAWC,GACpD,GAAIrI,GAAMC,EAAQqI,IAClB,KAAK,GAAIjI,KAAK+H,GAEZpI,EAAOqI,
EAAM,EAAIhI,EAAI,GACM4C,SAAvBxF,KAAKsE,QAAQ/B,IACfvC,KAAK6I,2BAA2BtG,GAElCC,EAAS
xC,KAAKuK,QAAQhI,GAClBC,IACFxC,KAAKsK,kBAAkB/H,EAAMmI,EAAU9H,GAAI+H,EAAU/H,IAChD
iI,EAAOrI,KACVqI,EAAOrI,IAAU,EAEjBxC,KAAK8K,aAAatI,GAASmI,EAAU/H,GAAI8H,EAAU9H,G
AAIjB,eAK/D2I,kBAAmB,SAAS/H,EAAM9C,EAAOoG,GAEvC,GAAIkF,GAAe/K,KAAKuK,QAAQhI,EACh
C,IAAIwI,IAEEC,MAAMC,QAAQpF,KAChBQ,EAAIkE,SAAWtI,QAAQoE,IAAI,mDAAoDrG,KAAK4G,UAA
WrE,GAC/FvC,KAAKkL,mBAAmB3I,EAAO,YAG7ByI,MAAMC,QAAQxL,IAAQ,CACxB4G,EAAIkE,SAAWtI
,QAAQoE,IAAI,iDAAkDrG,KAAK4G,UAAWrE,EAAM9C,EACnG,IAAI0L,GAAW,GAAIC,eAAc3L,EACjC0
L,GAASX,KAAK,SAAS/K,EAAOoG,GAC5B7F,KAAK8K,aAAaC,GAAelF,KAChC7F,MACHA,KAAKqL,sBAA
sB9I,EAAO,UAAW4I,KAInDG,aAAc,SAASC,EAAUpC,GAE/B,MAAOH,GAAehJ,KAAMuL,EAAUpC,IAExC
2B,aAAc,SAAStI,EAAQkC,GAC7B,GAAItC,GAAKpC,KAAKwC,IAAWA,CACP,mBAAPJ,IACTA,EAAGV,M
AAM1B,KAAM0E,IAGnB0F,kBAAmB,SAASoB,GAC1BxL,KAAKyL,WAAWC,KAAKF,IAGvBG,eAAgB,WACd,
IAAK,GAAI/I,GAAE,EAAGC,EAAE7C,KAAKyL,WAAW3I,OAAUD,EAAFD,EAAKA,IAC3C5C,KAAK4L,mBA
AmB5L,KAAKyL,WAAW7I,GAE1C5C,MAAKyL,eAEPG,mBAAoB,SAASC,GAC3B,IAAK,GAAiC5B,GAA7BrH
,EAAE,EAAGC,EAAEgJ,EAAc/I,OAAaD,EAAFD,EAAKA,IAC5CqH,EAAI4B,EAAcjJ,GACdqH,GAAKA,E
AAE6B,OACT7B,EAAE6B,SAKRT,sBAAuB,SAAS9I,EAAM4I,GACpC,GAAIY,GAAK/L,KAAKgM,kBAAoBh
M,KAAKgM,mBACvCD,GAAGxJ,GAAQ4I,GAEbD,mBAAoB,SAAS3I,GAC3B,GAAIwJ,GAAK/L,KAAKgM,eA
Cd,OAAID,IAAMA,EAAGxJ,IACXwJ,EAAGxJ,GAAMuJ,QACTC,EAAGxJ,GAAQ,MACJ,GAHT,QAMF0J,oB
AAqB,WACnB,GAAIjM,KAAKgM,gBAAiB,CAExB,IAAK,GAAwBhE,GAAGiC,EAD5BtD,EAAKzH,OAAOyH,
KAAK3G,KAAKgM,iBACjBpJ,EAAE,EAAGC,EAAE8D,EAAK7D,OAAmBD,EAAJD,IAAWoF,EAAErB,EAAK/
D,IAAKA,IACzDqH,EAAIjK,KAAKgM,gBAAgBhE,GACzBiC,EAAE6B,OAEJ9L,MAAKgM,sBAwBP5C,EAA
iB,yCAIrBtK,GAAMG,IAAIoF,SAASuF,WAAaA,GAE/BhL,SC3JH,SAAUE,GAqBR,QAASoN,GAAoB7G,G
AC3B,KAAOA,EAAK8G,YAAY,CACtB,GAAI9G,EAAK+G,mBACP,MAAO/G,EAETA,GAAOA,EAAK8G,WAEd,
MAAO9G,GAAKgH,KAxBd,GAAIhG,GAAMxH,OAAOyH,UAAY,EAGzBgG,GAFSxN,EAAMG,IAAIoF,SAASmC
,OAEnB,GAAIQ,oBACjBsF,GAAOlF,oBAAsB,SAASC,EAAOC,EAAMjC,GACjD,GAAIkH,GAAOL,EAAoB7
G,EAC/B,IAAIkH,EAAM,CACR,GAAInK,GAAKkF,EAAKC,aAAagF,EAC3B,IAAInK,EACF,MAAOA,GAAG
9B,KAAKiM,IAoBrB,IAAIC,IACFF,OAAQA,EACRG,iBAAkB,SAASC,GACzB,GAAIC,GAAMD,EAASE,eA
Ae5M,KAAMA,KAAKsM,OAE7C,OADAtM,MAAKoK,kBAAkBuC,EAAIE,WACpBF,GAETrM,KAAM,SAASiC,E
AAM4G,GACnB,GAAIoC,GAAWvL,KAAKuI,qBAAqBhG,EACzC,IAAKgJ,EAIE,CAEL,GAAIJ,GAAWnL,KA
AKsL,aAAaC,EAAUpC,EAS3C,OARAnJ,MAAK6I,2BAA2B0C,GAG5B3G,SAASkI,2BACX3B,EAAS7D,KAA
O6B,EAAW4D,MAC3B/M,KAAK6M,UAAY7M,KAAK6M,cACtB7M,KAAK6M,UAAUtK,GAAQ4I,GAElBA,EAZP
,MAAOnL,MAAKgN,WAAWrL,YAkB3BsL,eAAgB,WACTjN,KAAKkN,WACR7G,EAAI8G,QAAUlL,QAAQoE,I
AAI,sBAAuBrG,KAAK4G,WACtD5G,KAAKoN,cAAgBpN,KAAKL,IAAIK,KAAKoN,cAAepN,KAAKqN,UAAW
,KAGtEA,UAAW,WACJrN,KAAKkN,WACRlN,KAAK2L,iBACL3L,KAAKiM,sBACLjM,KAAKkN,UAAW,IAGp
BI,gBAAiB,WACf,MAAItN,MAAKkN,cACP7G,EAAI8G,QAAUlL,QAAQC,KAAK,gDAAiDlC,KAAK4G,aAG
nFP,EAAI8G,QAAUlL,QAAQoE,IAAI,uBAAwBrG,KAAK4G,gBACnD5G,KAAKoN,gBACPpN,KAAKoN,cAA
gBpN,KAAKoN,cAActN,YAsB1CyN,EAAkB,gBAItBzO,GAAM2J,YAAc8E,EACpBzO,EAAMG,IAAIoF,SA
ASmI,IAAMA,GAExB5N,SChHH,SAAUE,GA0MR,QAAS0O,GAAOzJ,GACd,MAAOA,GAAO0J,eAAe,eAK/B,
QAASC,MA9MT,GAAIC,IACFD,aAAa,EACb/N,IAAK,SAASA,EAAKC,EAAUC,GAC3B,GAAmB,gBAARF,GA
IT,MAAOf,SAAQe,IAAIkB,KAAKb,KAAML,EAAKC,EAAUC,EAH7C,IAAIR,GAAI,MAAQM,CAChBK,MAAK
X,GAAKT,QAAQe,IAAIkB,KAAKb,KAAMA,KAAKX,GAAIO,EAAUC,IAKxDmD,QAAOpE,QAAQoE,MAEf4K,
QAAS,aAITC,MAAO,aAEPC,gBAAiB,WACX9N,KAAK+N,kBAAoB/N,KAAK+N,iBAAiB1G,OACjDpF,QAAQ
C,KAAK,iBAAmBlC,KAAK4G,UAAY,wGAInD5G,KAAK4N,UACL5N,KAAKgO,kBAGPA,eAAgB,WACdhO,KA
AKiO,kBAAmB,EAExBjO,KAAKkO,eAELlO,KAAKyL,cAELzL,KAAK6J,oBAEL7J,KAAK6H,yBAEL7H,KA
AKmI,iBAELnI,KAAKyG,mBAELzG,KAAKmO,kBAAkBnO,KAAK0C,WAI5B1C,KAAK+I,gBAAgB,cAErB/I
,KAAK6N,SAEPO,iBAAkB,WAChBpO,KAAKsN,kBAEDtN,KAAKqO,UACPrO,KAAKqO,WAGHrO,KAAKsO,a
ACPtO,KAAKsO,cAMFtO,KAAKuO,kBACRvO,KAAKuO,iBAAkB,EACnBvO,KAAKwO,UACPxO,KAAKyE,MA
AM,cAIjBgK,iBAAkB,WACXzO,KAAK0O,gBACR1O,KAAKiN,iBAGHjN,KAAK2O,UACP3O,KAAK2O,WAGH
3O,KAAK4O,UACP5O,KAAK4O,YAITC,oBAAqB,WACnB7O,KAAKoO,oBAGPU,iBAAkB,WAChB9O,KAAKyO
,oBAGPM,wBAAyB,WACvB/O,KAAKoO,oBAGPY,qBAAsB,WACpBhP,KAAKyO,oBAGPN,kBAAmB,SAAS1L,
GACtBA,GAAKA,EAAEwM,UACTjP,KAAKmO,kBAAkB1L,EAAEC,WACzBD,EAAEyM,iBAAiBrO,KAAKb,KA
AMyC,EAAEwM,WAIpCC,iBAAkB,SAASC,GACzB,GAAIzC,GAAW1M,KAAKoP,cAAcD,EAClC,IAAIzC,EA
AU,CACZ,GAAI2C,GAAOrP,KAAKsP,mBAAmB5C,EACnC1M,MAAKkO,YAAYiB,EAAe5M,MAAQ8M,IAI5CD
,cAAe,SAASD,GACtB,MAAOA,GAAeI,cAAc,aAGtCD,mBAAoB,SAAS5C,GAC3B,GAAIA,EAAU,CAEZ,GA
AI2C,GAAOrP,KAAKwP,mBAKZ7C,EAAM3M,KAAKyM,iBAAiBC,EAMhC,OAJA2C,GAAKI,YAAY9C,GAEjB
3M,KAAK0P,gBAAgBL,EAAM3C,GAEpB2C,IAIXM,kBAAmB,SAASjD,EAAUkD,GACpC,GAAIlD,EAAU,CA
KZ1M,KAAKoM,oBAAqB,CAK1B,IAAIO,GAAM3M,KAAKyM,iBAAiBC,EAUhC,OARIkD,GACF5P,KAAK6P,
aAAalD,EAAKiD,GAEvB5P,KAAKyP,YAAY9C,GAGnB3M,KAAK0P,gBAAgB1P,MAEd2M,IAGX+C,gBAAiB
,SAASL,GAExBrP,KAAK8P,sBAAsBT,GAE3BU,gBAAgB/O,SAASqO,IAG3BS,sBAAuB,SAAST,GAE9B,G
AAIW,GAAIhQ,KAAKgQ,EAAIhQ,KAAKgQ,KAEtB,IAAIX,EAEF,IAAK,GAAsBhQ,GADvBsD,EAAK0M,EA
AKY,iBAAiB,QACtBrN,EAAE,EAAGC,EAAEF,EAAGG,OAAcD,EAAFD,IAASvD,EAAEsD,EAAGC,IAAKA,
IAChDoN,EAAE3Q,EAAE6Q,IAAM7Q,GAIhB8Q,yBAA0B,SAAS5N,GAEpB,UAATA,GAA6B,UAATA,GACtB
vC,KAAKsI,oBAAoB/F,EAAMvC,KAAKoQ,aAAa7N,IAE/CvC,KAAKqQ,kBACPrQ,KAAKqQ,iBAAiB3O,M
AAM1B,KAAM2B,YAGtC2O,WAAY,SAASjL,EAAMkL,GACzB,GAAIpF,GAAW,GAAIqF,kBAAiB,SAASC,GA
C3CF,EAAS1P,KAAKb,KAAMmL,EAAUsF,GAC9BtF,EAASuF,cACTpQ,KAAKN,MACPmL,GAASZ,QAAQlF,
GAAOsL,WAAW,EAAMC,SAAS,KAYtDlD,GAAY1O,UAAY2O,EACxBA,EAAKkD,YAAcnD,EAInB5O,EAAMgS
,KAAOpD,EACb5O,EAAM0O,OAASA,EACf1O,EAAMG,IAAIoF,SAASsJ,KAAOA,GAEzB/O,SC1NH,SAAUE
,GA8ER,QAASqC,GAAenC,GACtB,MAAOA,GAAU0D,UAGnB,QAASqO,GAAYC,EAAS3E,GAC5B,GAAI9J,G
AAO,GAAI0O,GAAK,CAChB5E,KACF9J,EAAO8J,EAAKzF,UACZqK,EAAK5E,EAAKpE,aAAa,MAEzB,IAA
IiJ,GAAWtM,SAASuM,UAAUC,kBAAkB7O,EAAM0O,EAC1D,OAAOrM,UAASuM,UAAUJ,YAAYC,EAASE,GA
rFjD,GAIIG,IAJMxS,OAAOyH,aAIW,WACxBgL,EAAyB,aAEzBC,GACFF,sBAAuBA,EAMvBG,wBAAyB,W
AEvB,GAAI1S,GAAQkB,KAAKyR,gBACjB,IAAI3S,IAAUkB,KAAK0R,mBAAmB5S,EAAOkB,KAAK4G,WAA
Y,CAG5D,IADA,GAAItE,GAAQnB,EAAenB,MAAOgR,EAAU,GACrC1O,GAASA,EAAM2M,SACpB+B,GAAW1
O,EAAM2M,QAAQ0C,gBAAgBL,GACzChP,EAAQnB,EAAemB,EAErB0O,IACFhR,KAAK4R,oBAAoBZ,EAAS
lS,KAIxC+S,kBAAmB,SAASC,EAAOvP,EAAMzD,GACvC,GAAIA,GAAQA,GAASkB,KAAKyR,iBAAkBlP,E
AAOA,GAAQ,EAC3D,IAAIzD,IAAUkB,KAAK0R,mBAAmB5S,EAAOkB,KAAK4G,UAAYrE,GAAO,CACnE,GA
AIyO,GAAU,EACd,IAAIc,YAAiB9G,OACnB,IAAK,GAAyB+G,GAArBnP,EAAE,EAAGC,EAAEiP,EAAMhP
,OAAcD,EAAFD,IAASmP,EAAED,EAAMlP,IAAKA,IACtDoO,GAAWe,EAAEC,YAAc,WAG7BhB,GAAUc,EA
AME,WAElBhS,MAAK4R,oBAAoBZ,EAASlS,EAAOyD,KAG7CqP,oBAAqB,SAASZ,EAASlS,EAAOyD,GAG5
C,GAFAzD,EAAQA,GAASkB,KAAKyR,iBACtBlP,EAAOA,GAAQ,GACVzD,EAAL,CAGID,OAAOoT,oBACTj
B,EAAUD,EAAYC,EAASlS,EAAMuN,MAEvC,IAAIyF,GAAQ9R,KAAKiP,QAAQiD,oBAAoBlB,EACzCM,EA
CJ1S,SAAQuT,kBAAkBL,EAAOhT,GAEjCA,EAAMsT,aAAapS,KAAK4G,UAAYrE,IAAQ,IAE9CkP,eAAgB
,SAASpM,GAGvB,IADA,GAAIhG,GAAIgG,GAAQrF,KACTX,EAAE8M,YACP9M,EAAIA,EAAE8M,UAER,OA
AO9M,IAETqS,mBAAoB,SAAS5S,EAAOyD,GAElC,MADAzD,GAAMsT,aAAetT,EAAMsT,iBACpBtT,EAAM
sT,aAAa7P,IAsB9BzD,GAAMG,IAAIoF,SAASkN,OAASA,GAE3B3S,SChGH,SAAUE,GAUR,QAASmQ,GAA
Q1M,EAAMvD,GACrB,GAAyB,IAArB2C,UAAUmB,QAAwC,gBAAjBnB,WAAU,GAAiB,CAC9D3C,EAAYuD,C
ACZ,IAAI8P,GAASjR,SAASkR,cAGtB,IAFA/P,EAAO8P,GAAUA,EAAOlG,YAAckG,EAAOlG,WAAWiE,a
ACpDiC,EAAOlG,WAAWiE,aAAa,QAAU,IACxC7N,EACH,KAAM,sCAGV,GAAIgQ,EAAuBhQ,GACzB,KAAM
,sDAAwDA,CAGhEiQ,GAAkBjQ,EAAMvD,GAExByT,EAAgBlQ,GAKlB,QAASmQ,GAAoBnQ,EAAMoQ,GACj
CC,EAAcrQ,GAAQoQ,EAKxB,QAASF,GAAgBlQ,GACnBqQ,EAAcrQ,KAChBqQ,EAAcrQ,GAAMsQ,0BACbD
,GAAcrQ,IAgBzB,QAASiQ,GAAkBjQ,EAAMvD,GAC/B,MAAO8T,GAAiBvQ,GAAQvD,MAGlC,QAASuT,GA
AuBhQ,GAC9B,MAAOuQ,GAAiBvQ,GAzD1B,GAAIxD,GAASD,EAAMC,OA+Bf6T,GA9BM9T,EAAMG,QAiDZ
6T,IAYJhU,GAAMyT,uBAAyBA,EAC/BzT,EAAM4T,oBAAsBA,EAO5B7T,OAAOD,QAAUqQ,EAKjBlQ,EAA
OH,QAASE,EAOhB,IAAIiU,GAAenO,SAASoO,qBAC5B,IAAID,EACF,IAAK,GAAgChQ,GAA5BH,EAAE,E
AAGC,EAAEkQ,EAAajQ,OAAcD,EAAFD,IAASG,EAAEgQ,EAAanQ,IAAKA,IACpEqM,EAAQvN,MAAM,KAA
MqB,IAIvBnE,SC5FH,SAAUE,GAEV,GAAIwI,IACF2L,oBAAqB,SAAS5N,GAC5BT,SAASsO,YAAYC,WAA
W9N,IAElC+N,kBAAmB,WAEjB,GAAIC,GAAYrT,KAAKoQ,aAAa,cAAgB,GAC9Cf,EAAO,GAAIiE,KAAID
,EAAWrT,KAAKuT,cAAcC,QACjDxT,MAAKhB,UAAUyU,YAAc,SAASC,EAAS/F,GAC7C,GAAIgG,GAAI,G
AAIL,KAAII,EAAS/F,GAAQ0B,EACjC,OAAOsE,GAAEC,OAMf9U,GAAMG,IAAImF,YAAYkD,KAAOA,GAE
1B1I,SCrBH,SAAUE,GA2KR,QAAS+U,GAAmBC,EAAOC,GACjC,GAAIH,GAAO,GAAIN,KAAIQ,EAAM1D,a
AAa,QAAS2D,GAASH,IACxD,OAAO,YAAeA,EAAO,KAG/B,QAASzB,GAAkBL,EAAOhT,GAChC,GAAIgT,E
AAO,CACLhT,IAAUsC,WACZtC,EAAQsC,SAAS4S,MAEfnV,OAAOoT,oBACTnT,EAAQsC,SAAS4S,KAOnB
,IAAIC,GAAQC,EAAmBpC,EAAME,aACjCmC,EAAOrC,EAAM1B,aAAaiB,EAC1B8C,IACFF,EAAM/L,aAA
amJ,EAAuB8C,EAI5C,IAAIvE,GAAU9Q,EAAMsV,iBACpB,IAAItV,IAAUsC,SAAS4S,KAAM,CAC3B,GA
AI9C,GAAW,SAAWG,EAAwB,IAC9CgD,EAAKjT,SAAS4S,KAAK/D,iBAAiBiB,EACpCmD,GAAGvR,SACL8
M,EAAUyE,EAAGA,EAAGvR,OAAO,GAAGwR,oBAG9BxV,EAAM+Q,aAAaoE,EAAOrE,IAI9B,QAASsE,GAA
mBlD,EAASlS,GACnCA,EAAQA,GAASsC,SACjBtC,EAAQA,EAAMuC,cAAgBvC,EAAQA,EAAMyU,aAC5C,
IAAIzB,GAAQhT,EAAMuC,cAAc,QAEhC,OADAyQ,GAAME,YAAchB,EACbc,EAGT,QAASyC,GAAiBT,GAC
xB,MAAQA,IAASA,EAAMU,YAAe,GAGxC,QAASC,GAAgBpP,EAAMqP,GAC7B,MAAIC,GACKA,EAAQ9T,KA
AKwE,EAAMqP,GAD5B,OAzNF,GACIzV,IADMJ,OAAOyH,aACPxH,EAAMG,IAAIoF,SAASkN,QACzBF,EA
AwBpS,EAAIoS,sBAI5BuD,EAAiB,QACjBC,EAAuB,UACvBC,EAAiB,uBACjBC,EAAqB,SACrBC,EAAa,
gBAEbzD,GAEF0D,WAAY,SAASrV,GACnB,GAAIsV,GAAUlV,KAAKmV,iBACfD,IACFlV,KAAKoV,sBAAs
BF,EAE7B,IAAI3D,GAASvR,KAAKqV,mBAAmBH,EACjC3D,GAAOzO,OACT8B,SAAS0Q,cAAcL,WAAW1D,
EAAQ3R,GACjCA,GACTA,KAGJwV,sBAAuB,SAAS/F,GAE9B,IAAK,GAAsB0C,GAAGwD,EAD1BlB,EAAKh
F,EAAKY,iBAAiB6E,GACtBlS,EAAE,EAAGC,EAAEwR,EAAGvR,OAAiBD,EAAFD,IAASmP,EAAEsC,EAA
GzR,IAAKA,IACnD2S,EAAIrB,EAAmBL,EAAmB9B,EAAG/R,KAAKuT,cAAcC,SAC5DxT,KAAKuT,eACTv
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
AgB,mBAAoB7b,UAAWA,KAEvDJ","sourcesContent":["/*\n * Copyright 2013 The Polymer
Authors. All rights reserved.\n * Use of this source code is governed by a BSD-s
tyle\n * license that can be found in the LICENSE file.\n */\nPolymer = {};\n","
/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this
source code is governed by a BSD-style\n * license that can be found in the LICE
NSE file.\n */\n\n// TODO(sorvell): this ensures Polymer is an object and not a
function\n// Platform is currently defining it as a function to allow for async
loading\n// of polymer; once we refine the loading process this likely goes away
.\nif (typeof window.Polymer === 'function') {\n Polymer = {};\n}\n\n","/*\n *
Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source
code is governed by a BSD-style\n * license that can be found in the LICENSE fil
e.\n */\n(function(scope) {\n\n // copy own properties from 'api' to 'prototype
, with name hinting for 'super'\n function extend(prototype, api) {\n if (pr
ototype && api) {\n // use only own properties of 'api'\n Object.getOw
nPropertyNames(api).forEach(function(n) {\n // acquire property descripto
r\n var pd = Object.getOwnPropertyDescriptor(api, n);\n if (pd) {\
n // clone property via descriptor\n Object.defineProperty(pro
totype, n, pd);\n // cache name-of-method for 'super' engine\n
if (typeof pd.value == 'function') {\n // hint the 'super' engine\n
pd.value.nom = n;\n }\n }\n });\n }\n retu
rn prototype;\n }\n \n // exports\n\n scope.extend = extend;\n\n})(Polymer);
\n","/* \n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of
this source code is governed by a BSD-style\n * license that can be found in th
e LICENSE file.\n */\n\n(function(scope) {\n \n // usage\n \n // invoke cb.c
all(this) in 100ms, unless the job is re-registered,\n // which resets the time
r\n // \n // this.myJob = this.job(this.myJob, cb, 100)\n //\n // returns a
job handle which can be used to re-register a job\n\n var Job = function(inCont
ext) {\n this.context = inContext;\n this.boundComplete = this.complete.bi
nd(this)\n };\n Job.prototype = {\n go: function(callback, wait) {\n t
his.callback = callback;\n var h;\n if (!wait) {\n h = requestA
nimationFrame(this.boundComplete);\n this.handle = function() {\n
cancelAnimationFrame(h);\n }\n } else {\n h = setTimeout(th
is.boundComplete, wait);\n this.handle = function() {\n clearTim
eout(h);\n }\n }\n },\n stop: function() {\n if (this.han
dle) {\n this.handle();\n this.handle = null;\n }\n },\n
complete: function() {\n if (this.handle) {\n this.stop();\n
this.callback.call(this.context);\n }\n }\n };\n \n function job(jo
b, callback, wait) {\n if (job) {\n job.stop();\n } else {\n job
= new Job(this);\n }\n job.go(callback, wait);\n return job;\n }\n \
n // exports \n\n scope.job = job;\n \n})(Polymer);\n","/*\n * Copyright 2013
The Polymer Authors. All rights reserved.\n * Use of this source code is govern
ed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n(func
tion(scope) {\n\n var registry = {};\n\n HTMLElement.register = function(tag,
prototype) {\n registry[tag] = prototype;\n }\n\n // get prototype mapped t
o node <tag>\n HTMLElement.getPrototypeForTag = function(tag) {\n var protot
ype = !tag ? HTMLElement.prototype : registry[tag];\n // TODO(sjmiles): creat
ing <tag> is likely to have wasteful side-effects\n return prototype || Objec
t.getPrototypeOf(document.createElement(tag));\n };\n\n // we have to flag pro
pagation stoppage for the event dispatcher\n var originalStopPropagation = Even
t.prototype.stopPropagation;\n Event.prototype.stopPropagation = function() {\n
this.cancelBubble = true;\n originalStopPropagation.apply(this, arguments
);\n };\n \n // TODO(sorvell): remove when we're sure imports does not need\n
// to load stylesheets\n /*\n HTMLImports.importer.preloadSelectors += \n
', polymer-element link[rel=stylesheet]';\n */\n})(Polymer);\n","/*\n * Copy
right 2013 The Polymer Authors. All rights reserved.\n * Use of this source code
is governed by a BSD-style\n * license that can be found in the LICENSE file.\n
*/\n (function(scope) {\n // super\n\n // `arrayOfArgs` is an optional ar
ray of args like one might pass\n // to `Function.apply`\n\n // TODO(sjmil
es):\n // $super must be installed on an instance or prototype chain\n
// as `super`, and invoked via `this`, e.g.\n // `this.super();`\n\n
// will not work if function objects are not unique, for example,\n //
when using mixins.\n // The memoization strategy assumes each function
exists on only one \n // prototype chain i.e. we use the function object f
or memoizing)\n // perhaps we can bookkeep on the prototype itself instead
\n function $super(arrayOfArgs) {\n // since we are thunking a method ca
ll, performance is important here: \n // memoize all lookups, once memoized
the fast path calls no other \n // functions\n //\n // find the
caller (cannot be `strict` because of 'caller')\n var caller = $super.calle
r;\n // memoized 'name of method' \n var nom = caller.nom;\n // m
emoized next implementation prototype\n var _super = caller._super;\n
if (!_super) {\n if (!nom) {\n nom = caller.nom = nameInThis.cal
l(this, caller);\n }\n if (!nom) {\n console.warn('called
super() on a method not installed declaratively (has no .nom property)');\n
}\n // super prototype is either cached or we have to find it\n
// by searching __proto__ (at the 'top')\n _super = memoizeSuper(caller
, nom, getPrototypeOf(this));\n }\n if (!_super) {\n // if _sup
er is falsey, there is no super implementation\n //console.warn('called $
super(' + nom + ') where there is no super implementation');\n } else {\n
// our super function\n var fn = _super[nom];\n // memoize i
nformation so 'fn' can call 'super'\n if (!fn._super) {\n memoiz
eSuper(fn, nom, _super);\n }\n // invoke the inherited method\n
// if 'fn' is not function valued, this will throw\n return fn.apply
(this, arrayOfArgs || []);\n }\n }\n\n function nextSuper(proto, name
, caller) {\n // look for an inherited prototype that implements name\n
while (proto) {\n if ((proto[name] !== caller) && proto[name]) {\n
return proto;\n }\n proto = getPrototypeOf(proto);\n }\n
}\n\n function memoizeSuper(method, name, proto) {\n // find and cac
he next prototype containing `name`\n // we need the prototype so we can do
another lookup\n // from here\n method._super = nextSuper(proto, name
, method);\n if (method._super) {\n // _super is a prototype, the ac
tual method is _super[name]\n // tag super method with it's name for furt
her lookups\n method._super[name].nom = name;\n }\n return meth
od._super;\n }\n\n function nameInThis(value) {\n var p = this.__prot
o__;\n while (p && p !== HTMLElement.prototype) {\n // TODO(sjmiles)
: getOwnPropertyNames is absurdly expensive\n var n$ = Object.getOwnPrope
rtyNames(p);\n for (var i=0, l=n$.length, n; i<l && (n=n$[i]); i++) {\n
var d = Object.getOwnPropertyDescriptor(p, n);\n if (typeof d.v
alue === 'function' && d.value === value) {\n return n;\n }\
n }\n p = p.__proto__;\n }\n }\n\n // NOTE: In some pla
tforms (IE10) the prototype chain is faked via \n // __proto__. Therefore, al
ways get prototype via __proto__ instead of\n // the more standard Object.get
PrototypeOf.\n function getPrototypeOf(prototype) {\n return prototype._
_proto__;\n }\n\n // utility function to precompute name tags for function
s\n // in a (unchained) prototype\n function hintSuper(prototype) {\n
// tag functions with their prototype name to optimize\n // super call inv
ocations\n for (var n in prototype) {\n var pd = Object.getOwnProper
tyDescriptor(prototype, n);\n if (pd && typeof pd.value === 'function') {
\n pd.value.nom = n;\n }\n }\n }\n\n // exports\n\n
scope.super = $super;\n\n})(Polymer);\n","/* \n * Copyright 2013 The Polymer A
uthors. All rights reserved.\n * Use of this source code is governed by a BSD-st
yle\n * license that can be found in the LICENSE file.\n */\n\n(function(scope)
{\n\n var typeHandlers = {\n string: function(value) {\n return value;\
n },\n date: function(value) {\n return new Date(Date.parse(value) ||
Date.now());\n },\n boolean: function(value) {\n if (value === '') {
\n return true;\n }\n return value === 'false' ? false : !!valu
e;\n },\n number: function(value) {\n var n = parseFloat(value);\n
// hex values like \"0xFFFF\" parseFloat as 0\n if (n === 0) {\n
n = parseInt(value);\n }\n return isNaN(n) ? value : n;\n // this
code disabled because encoded values (like \"0xFFFF\")\n // do not round t
rip to their original format\n //return (String(floatVal) === value) ? floa
tVal : value;\n },\n object: function(value, currentValue) {\n if (cu
rrentValue === null) {\n return value;\n }\n try {\n //
If the string is an object, we can parse is with the JSON library.\n // i
nclude convenience replace for single-quotes. If the author omits\n // qu
otes altogether, parse will fail.\n return JSON.parse(value.replace(/'/g,
'\"'));\n } catch(e) {\n // The object isn't valid JSON, return the
raw value\n return value;\n }\n },\n // avoid deserialization
of functions\n 'function': function(value, currentValue) {\n return cur
rentValue;\n }\n };\n\n function deserializeValue(value, currentValue) {\n
// attempt to infer type from default value\n var inferredType = typeof cu
rrentValue;\n // invent 'date' type value for Date\n if (currentValue inst
anceof Date) {\n inferredType = 'date';\n }\n // delegate deserializa
tion via type string\n return typeHandlers[inferredType](value, currentValue)
;\n }\n\n // exports\n\n scope.deserializeValue = deserializeValue;\n\n})(Pol
ymer);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * U
se of this source code is governed by a BSD-style\n * license that can be found
in the LICENSE file.\n */\n(function(scope) {\n\n // imports\n\n var extend =
scope.extend;\n\n // module\n\n var api = {};\n\n api.declaration = {};\n ap
i.instance = {};\n\n api.publish = function(apis, prototype) {\n for (var n
in apis) {\n extend(prototype, apis[n]);\n }\n }\n\n // exports\n\n s
cope.api = api;\n\n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Authors. A
ll rights reserved.\n * Use of this source code is governed by a BSD-style\n * l
icense that can be found in the LICENSE file.\n */\n(function(scope) {\n\n var
utils = {\n /**\n * Invokes a function asynchronously. The context of th
e callback\n * function is bound to 'this' automatically.\n * @method
async\n * @param {Function|String} method\n * @param {any|Array} args\
n * @param {number} timeout\n */\n async: function(method, args, ti
meout) {\n // when polyfilling Object.observe, ensure changes \n // pr
opagate before executing the async method\n Platform.flush();\n // sec
ond argument to `apply` must be an array\n args = (args && args.length) ? a
rgs : [args];\n // function to invoke\n var fn = function() {\n
(this[method] || method).apply(this, args);\n }.bind(this);\n // exec
ute `fn` sooner or later\n var handle = timeout ? setTimeout(fn, timeout) :
\n requestAnimationFrame(fn);\n // NOTE: switch on inverting handl
e to determine which time is used.\n return timeout ? handle : ~handle;\n
},\n cancelAsync: function(handle) {\n if (handle < 0) {\n canc
elAnimationFrame(~handle);\n } else {\n clearTimeout(handle);\n
}\n },\n /**\n * Fire an event.\n * @method fire\n * @retu
rns {Object} event\n * @param {string} type An event name.\n * @param
{any} detail\n * @param {Node} onNode Target node.\n */\n fire: fun
ction(type, detail, onNode, bubbles, cancelable) {\n var node = onNode || t
his;\n var detail = detail || {};\n var event = new CustomEvent(type,
{\n bubbles: (bubbles !== undefined ? bubbles : true), \n cancelab
le: (cancelable !== undefined ? cancelable : true), \n detail: detail\n
});\n node.dispatchEvent(event);\n return event;\n },\n /**\
n * Fire an event asynchronously.\n * @method asyncFire\n * @para
m {string} type An event name.\n * @param detail\n * @param {Node} toN
ode Target node.\n */\n asyncFire: function(/*inType, inDetail*/) {\n
this.async(\"fire\", arguments);\n },\n /**\n * Remove class from
old, add class to anew, if they exist\n * @param classFollows\n * @par
am anew A node.\n * @param old A node\n * @param className\n */\n
classFollows: function(anew, old, className) {\n if (old) {\n ol
d.classList.remove(className);\n }\n if (anew) {\n anew.classLi
st.add(className);\n }\n }\n };\n\n // no-operation function for handy
stubs\n var nop = function() {};\n\n // null-object for handy stubs\n var no
b = {};\n\n // deprecated\n\n utils.asyncMethod = utils.async;\n\n // exports
\n\n scope.api.instance.utils = utils;\n scope.nop = nop;\n scope.nob = nob;\
n\n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserv
ed.\n * Use of this source code is governed by a BSD-style\n * license that can
be found in the LICENSE file.\n */\n\n(function(scope) {\n\n // imports\n\n va
r log = window.logFlags || {};\n var EVENT_PREFIX = 'on-';\n\n // instance eve
nts api\n var events = {\n // read-only\n EVENT_PREFIX: EVENT_PREFIX,\n
// event listeners on host\n addHostListeners: function() {\n var even
ts = this.eventDelegates;\n log.events && (Object.keys(events).length > 0)
&& console.log('[%s] addHostListeners:', this.localName, events);\n // NOTE
: host events look like bindings but really are not;\n // (1) we don't want
the attribute to be set and (2) we want to support\n // multiple event lis
teners ('host' and 'instance') and Node.bind\n // by default supports 1 thi
ng being bound.\n // We do, however, leverage the event hookup code in Poly
merExpressions\n // so that we have a common code path for handling declara
tive events.\n var self = this, bindable, eventName;\n for (var n in e
vents) {\n eventName = EVENT_PREFIX + n;\n bindable = PolymerExpre
ssions.prepareEventBinding(\n Path.get(events[n]),\n eventName
, \n {\n resolveEventHandler: function(model, path, node) {\
n var fn = path.getValueFrom(self);\n if (fn) {\n
return fn.bind(self);\n }\n }\n }\n
);\n bindable(this, this, false);\n }\n },\n // call 'm
ethod' or function method on 'obj' with 'args', if the method exists\n dispat
chMethod: function(obj, method, args) {\n if (obj) {\n log.events &&
console.group('[%s] dispatch [%s]', obj.localName, method);\n var fn = t
ypeof method === 'function' ? method : obj[method];\n if (fn) {\n
fn[args ? 'apply' : 'call'](obj, args);\n }\n log.events && cons
ole.groupEnd();\n Platform.flush();\n }\n }\n };\n\n // exports
\n\n scope.api.instance.events = events;\n\n})(Polymer);\n","/*\r\n * Copyright
2013 The Polymer Authors. All rights reserved.\r\n * Use of this source code is
governed by a BSD-style\r\n * license that can be found in the LICENSE file.\r\
n */\r\n(function(scope) {\r\n\r\n // instance api for attributes\r\n\r\n var
attributes = {\r\n copyInstanceAttributes: function () {\r\n var a$ = th
is._instanceAttributes;\r\n for (var k in a$) {\r\n if (!this.hasAtt
ribute(k)) {\r\n this.setAttribute(k, a$[k]);\r\n }\r\n }\r
\n },\r\n // for each attribute on this, deserialize value to property as
needed\r\n takeAttributes: function() {\r\n // if we have no publish loo
kup table, we have no attributes to take\r\n // TODO(sjmiles): ad hoc\r\n
if (this._publishLC) {\r\n for (var i=0, a$=this.attributes, l=a$.len
gth, a; (a=a$[i]) && i<l; i++) {\r\n this.attributeToProperty(a.name, a
.value);\r\n }\r\n }\r\n },\r\n // if attribute 'name' is mapp
ed to a property, deserialize\r\n // 'value' into that property\r\n attrib
uteToProperty: function(name, value) {\r\n // try to match this attribute t
o a property (attributes are\r\n // all lower-case, so this is case-insensi
tive search)\r\n var name = this.propertyForAttribute(name);\r\n if (n
ame) {\r\n // filter out 'mustached' values, these are to be\r\n /
/ replaced with bound-data and are not yet values\r\n // themselves\r\n
if (value && value.search(scope.bindPattern) >= 0) {\r\n return;\
r\n }\r\n // get original value\r\n var currentValue = this
[name];\r\n // deserialize Boolean or Number values from attribute\r\n
var value = this.deserializeValue(value, currentValue);\r\n // only
act if the value has changed\r\n if (value !== currentValue) {\r\n
// install new value (has side-effects)\r\n this[name] = value;\r\n
}\r\n }\r\n },\r\n // return the published property matching n
ame, or undefined\r\n propertyForAttribute: function(name) {\r\n var mat
ch = this._publishLC && this._publishLC[name];\r\n //console.log('propertyF
orAttribute:', name, 'matches', match);\r\n return match;\r\n },\r\n
// convert representation of 'stringValue' based on type of 'currentValue'\r\n
deserializeValue: function(stringValue, currentValue) {\r\n return scope.
deserializeValue(stringValue, currentValue);\r\n },\r\n serializeValue: fu
nction(value, inferredType) {\r\n if (inferredType === 'boolean') {\r\n
return value ? '' : undefined;\r\n } else if (inferredType !== 'object'
&& inferredType !== 'function'\r\n && value !== undefined) {\r\n
return value;\r\n }\r\n },\r\n reflectPropertyToAttribute: function
(name) {\r\n var inferredType = typeof this[name];\r\n // try to intel
ligently serialize property value\r\n var serializedValue = this.serializeV
alue(this[name], inferredType);\r\n // boolean properties must reflect as b
oolean attributes\r\n if (serializedValue !== undefined) {\r\n this.
setAttribute(name, serializedValue);\r\n // TODO(sorvell): we should remo
ve attr for all properties\r\n // that have undefined serialization; howe
ver, we will need to\r\n // refine the attr reflection system to achieve
this; pica, for example,\r\n // relies on having inferredType object prop
erties not removed as\r\n // attrs.\r\n } else if (inferredType ===
'boolean') {\r\n this.removeAttribute(name);\r\n }\r\n }\r\n };\
r\n\r\n // exports\r\n\r\n scope.api.instance.attributes = attributes;\r\n\r\n
})(Polymer);\r\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserve
d.\n * Use of this source code is governed by a BSD-style\n * license that can b
e found in the LICENSE file.\n */\n(function(scope) {\n\n // imports\n\n var l
og = window.logFlags || {};\n\n // magic words\n\n var OBSERVE_SUFFIX = 'Chang
ed';\n\n // element api\n\n var empty = [];\n\n var properties = {\n obser
veProperties: function() {\n var n$ = this._observeNames, pn$ = this._publi
shNames;\n if ((n$ && n$.length) || (pn$ && pn$.length)) {\n var sel
f = this;\n var o = this._propertyObserver = new CompoundObserver();\n
// keep track of property observer so we can shut it down\n this.reg
isterObservers([o]);\n for (var i=0, l=n$.length, n; (i<l) && (n=n$[i]);
i++) {\n o.addPath(this, n);\n // observer array properties\n
var pd = Object.getOwnPropertyDescriptor(this.__proto__, n);\n
if (pd && pd.value) {\n this.observeArrayValue(n, pd.value, null);\n
}\n }\n for (var i=0, l=pn$.length, n; (i<l) && (n=pn$[i
]); i++) {\n if (!this.observe || (this.observe[n] === undefined)) {\n
o.addPath(this, n);\n }\n }\n o.open(this.noti
fyPropertyChanges, this);\n }\n },\n notifyPropertyChanges: function(
newValues, oldValues, paths) {\n var name, method, called = {};\n for
(var i in oldValues) {\n // note: paths is of form [object, path, object,
path]\n name = paths[2 * i + 1];\n if (this.publish[name] !== und
efined) {\n this.reflectPropertyToAttribute(name);\n }\n
method = this.observe[name];\n if (method) {\n this.observeArray
Value(name, newValues[i], oldValues[i]);\n if (!called[method]) {\n
called[method] = true;\n // observes the value if it is an ar
ray\n this.invokeMethod(method, [oldValues[i], newValues[i], argument
s]);\n }\n }\n }\n },\n observeArrayValue: function(n
ame, value, old) {\n // we only care if there are registered side-effects\n
var callbackName = this.observe[name];\n if (callbackName) {\n
// if we are observing the previous value, stop\n if (Array.isArray(old)
) {\n log.observe && console.log('[%s] observeArrayValue: unregister ob
server [%s]', this.localName, name);\n this.closeNamedObserver(name + '
__array');\n }\n // if the new value is an array, being observing
it\n if (Array.isArray(value)) {\n log.observe && console.log('[
%s] observeArrayValue: register observer [%s]', this.localName, name, value);\n
var observer = new ArrayObserver(value);\n observer.open(funct
ion(value, old) {\n this.invokeMethod(callbackName, [old]);\n
}, this);\n this.registerNamedObserver(name + '__array', observer);\n
}\n }\n },\n bindProperty: function(property, observable) {\n
// apply Polymer two-way reference binding\n return bindProperties(th
is, property, observable);\n },\n invokeMethod: function(method, args) {\n
var fn = this[method] || method;\n if (typeof fn === 'function') {\n
fn.apply(this, args);\n }\n },\n registerObservers: function(o
bservers) {\n this._observers.push(observers);\n },\n // observer arr
ay items are arrays of observers.\n closeObservers: function() {\n for (
var i=0, l=this._observers.length; i<l; i++) {\n this.closeObserverArray(
this._observers[i]);\n }\n this._observers = [];\n },\n closeObs
erverArray: function(observerArray) {\n for (var i=0, l=observerArray.lengt
h, o; i<l; i++) {\n o = observerArray[i];\n if (o && o.close) {\n
o.close();\n }\n }\n },\n // bookkeeping observers fo
r memory management\n registerNamedObserver: function(name, observer) {\n
var o$ = this._namedObservers || (this._namedObservers = {});\n o$[name]
= observer;\n },\n closeNamedObserver: function(name) {\n var o$ = th
is._namedObservers;\n if (o$ && o$[name]) {\n o$[name].close();\n
o$[name] = null;\n return true;\n }\n },\n closeNamedObse
rvers: function() {\n if (this._namedObservers) {\n var keys=Object.
keys(this._namedObservers);\n for (var i=0, l=keys.length, k, o; (i < l)
&& (k=keys[i]); i++) {\n o = this._namedObservers[k];\n o.clos
e();\n }\n this._namedObservers = {};\n }\n }\n };\n\n /
/ property binding\n // bind a property in A to a path in B by converting A[pro
perty] to a\n // getter/setter pair that accesses B[...path...]\n function bin
dProperties(inA, inProperty, observable) {\n log.bind && console.log(LOG_BIND
_PROPS, inB.localName || 'object', inPath, inA.localName, inProperty);\n // c
apture A's value if B's value is null or undefined,\n // otherwise use B's va
lue\n // TODO(sorvell): need to review, can do with ObserverTransform\n va
r v = observable.discardChanges();\n if (v === null || v === undefined) {\n
observable.setValue(inA[inProperty]);\n }\n return Observer.defineComp
utedProperty(inA, inProperty, observable);\n }\n\n // logging\n var LOG_OBSER
VE = '[%s] watching [%s]';\n var LOG_OBSERVED = '[%s#%s] watch: [%s] now [%s] w
as [%s]';\n var LOG_CHANGED = '[%s#%s] propertyChanged: [%s] now [%s] was [%s]'
;\n var LOG_BIND_PROPS = \"[%s]: bindProperties: [%s] to [%s].[%s]\";\n\n // e
xports\n\n scope.api.instance.properties = properties;\n\n})(Polymer);\n","/*\n
* Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this sour
ce code is governed by a BSD-style\n * license that can be found in the LICENSE
file.\n */\n(function(scope) {\n\n // imports\n\n var log = window.logFlags ||
0;\n var events = scope.api.instance.events;\n\n var syntax = new PolymerExpr
essions();\n syntax.resolveEventHandler = function(model, path, node) {\n va
r ctlr = findEventController(node);\n if (ctlr) {\n var fn = path.getVal
ueFrom(ctlr);\n if (fn) {\n return fn.bind(ctlr);\n }\n }\n
}\n\n // An event controller is the host element for the shadowRoot in which \
n // the node exists, or the first ancestor with a 'lightDomController'\n // p
roperty.\n function findEventController(node) {\n while (node.parentNode) {\
n if (node.lightDomController) {\n return node;\n }\n node
= node.parentNode;\n }\n return node.host;\n };\n\n // element api supp
orting mdv\n\n var mdv = {\n syntax: syntax,\n instanceTemplate: function
(template) {\n var dom = template.createInstance(this, this.syntax);\n
this.registerObservers(dom.bindings_);\n return dom;\n },\n bind: fu
nction(name, observable, oneTime) {\n var property = this.propertyForAttrib
ute(name);\n if (!property) {\n // TODO(sjmiles): this mixin method
must use the special form\n // of `super` installed by `mixinMethod` in d
eclaration/prototype.js\n return this.mixinSuper(arguments);\n } els
e {\n // use n-way Polymer binding\n var observer = this.bindPrope
rty(property, observable);\n this.reflectPropertyToAttribute(property);\n
// NOTE: reflecting binding information is typically required only for\n
// tooling. It has a performance cost so it's opt-in in Node.bind.\n
if (Platform.enableBindingsReflection) {\n observer.path = observab
le.path_;\n this.bindings_ = this.bindings_ || {};\n this.bind
ings_[name] = observer;\n }\n return observer;\n }\n },\n
// TODO(sorvell): unbind/unbindAll has been removed, as public api, from\n
// TemplateBinding. We still need to close/dispose of observers but perhaps\n
// we should choose a more explicit name.\n asyncUnbindAll: function() {\n
if (!this._unbound) {\n log.unbind && console.log('[%s] asyncUnbindA
ll', this.localName);\n this._unbindAllJob = this.job(this._unbindAllJob,
this.unbindAll, 0);\n }\n },\n unbindAll: function() {\n if (!t
his._unbound) {\n this.closeObservers();\n this.closeNamedObserver
s();\n this._unbound = true;\n }\n },\n cancelUnbindAll: funct
ion() {\n if (this._unbound) {\n log.unbind && console.warn('[%s] al
ready unbound, cannot cancel unbindAll', this.localName);\n return;\n
}\n log.unbind && console.log('[%s] cancelUnbindAll', this.localName);\n
if (this._unbindAllJob) {\n this._unbindAllJob = this._unbindAllJob.
stop();\n }\n }\n };\n\n function unbindNodeTree(node) {\n forNodeT
ree(node, _nodeUnbindAll);\n }\n\n function _nodeUnbindAll(node) {\n node.u
nbindAll();\n }\n\n function forNodeTree(node, callback) {\n if (node) {\n
callback(node);\n for (var child = node.firstChild; child; child = chi
ld.nextSibling) {\n forNodeTree(child, callback);\n }\n }\n }\n\
n var mustachePattern = /\\{\\{([^{}]*)}}/;\n\n // exports\n\n scope.bindPatt
ern = mustachePattern;\n scope.api.instance.mdv = mdv;\n\n})(Polymer);\n","/*\n
* Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this sour
ce code is governed by a BSD-style\n * license that can be found in the LICENSE
file.\n */\n(function(scope) {\n\n var base = {\n PolymerBase: true,\n jo
b: function(job, callback, wait) {\n if (typeof job === 'string') {\n
var n = '___' + job;\n this[n] = Polymer.job.call(this, this[n], callba
ck, wait);\n } else {\n return Polymer.job.call(this, job, callback,
wait);\n }\n },\n super: Polymer.super,\n // user entry point for
element has had its createdCallback called\n created: function() {\n },\n
// user entry point for element has shadowRoot and is ready for\n // api
interaction\n ready: function() {\n },\n createdCallback: function() {\
n if (this.templateInstance && this.templateInstance.model) {\n cons
ole.warn('Attributes on ' + this.localName + ' were data bound ' +\n
'prior to Polymer upgrading the element. This may result in ' +\n 'in
correct binding types.');\n }\n this.created();\n this.prepareEle
ment();\n },\n // system entry point, do not override\n prepareElement:
function() {\n this._elementPrepared = true;\n // install shadowRoots
storage\n this.shadowRoots = {};\n // storage for closeable observers
.\n this._observers = [];\n // install property observers\n this.
observeProperties();\n // install boilerplate attributes\n this.copyIn
stanceAttributes();\n // process input attributes\n this.takeAttribute
s();\n // add event listeners\n this.addHostListeners();\n // pro
cess declarative resources\n this.parseDeclarations(this.__proto__);\n
// TODO(sorvell): CE polyfill uses unresolved attribute to simulate\n // :
unresolved; remove this attribute to be compatible with native\n // CE.\n
this.removeAttribute('unresolved');\n // user entry point\n this.r
eady();\n },\n attachedCallback: function() {\n this.cancelUnbindAll(
);\n // invoke user action\n if (this.attached) {\n this.attach
ed();\n }\n // TODO(sorvell): bc\n if (this.enteredView) {\n
this.enteredView();\n }\n // NOTE: domReady can be used to access e
lements in dom (descendants, \n // ancestors, siblings) such that the devel
oper is enured to upgrade\n // ordering. If the element definitions have lo
aded, domReady\n // can be used to access upgraded elements.\n if (!th
is.hasBeenAttached) {\n this.hasBeenAttached = true;\n if (this.do
mReady) {\n this.async('domReady');\n }\n }\n },\n de
tachedCallback: function() {\n if (!this.preventDispose) {\n this.as
yncUnbindAll();\n }\n // invoke user action\n if (this.detached)
{\n this.detached();\n }\n // TODO(sorvell): bc\n if (this
.leftView) {\n this.leftView();\n }\n },\n // TODO(sorvell): b
c\n enteredViewCallback: function() {\n this.attachedCallback();\n },
\n // TODO(sorvell): bc\n leftViewCallback: function() {\n this.detac
hedCallback();\n },\n // TODO(sorvell): bc\n enteredDocumentCallback: f
unction() {\n this.attachedCallback();\n },\n // TODO(sorvell): bc\n
leftDocumentCallback: function() {\n this.detachedCallback();\n },\n
// recursive ancestral <element> initialization, oldest first\n parseDecla
rations: function(p) {\n if (p && p.element) {\n this.parseDeclarati
ons(p.__proto__);\n p.parseDeclaration.call(this, p.element);\n }\n
},\n // parse input <element> as needed, override for custom behavior\n
parseDeclaration: function(elementElement) {\n var template = this.fetchTe
mplate(elementElement);\n if (template) {\n var root = this.shadowFr
omTemplate(template);\n this.shadowRoots[elementElement.name] = root;\n
}\n },\n // return a shadow-root template (if desired), override for c
ustom behavior\n fetchTemplate: function(elementElement) {\n return elem
entElement.querySelector('template');\n },\n // utility function that crea
tes a shadow root from a <template>\n shadowFromTemplate: function(template)
{\n if (template) {\n // make a shadow root\n var root = this
.createShadowRoot();\n // stamp template\n // which includes parsi
ng and applying MDV bindings before being \n // inserted (to avoid {{}} i
n attribute values)\n // e.g. to prevent <img src=\"images/{{icon}}\"> fr
om generating a 404.\n var dom = this.instanceTemplate(template);\n
// append to shadow dom\n root.appendChild(dom);\n // perform po
st-construction initialization tasks on shadow root\n this.shadowRootRead
y(root, template);\n // return the created shadow root\n return ro
ot;\n }\n },\n // utility function that stamps a <template> into ligh
t-dom\n lightFromTemplate: function(template, refNode) {\n if (template)
{\n // TODO(sorvell): mark this element as a lightDOMController so that\
n // event listeners on bound nodes inside it will be called on it.\n
// Note, the expectation here is that events on all descendants \n //
should be handled by this element.\n this.lightDomController = true;\n
// stamp template\n // which includes parsing and applying MDV bind
ings before being \n // inserted (to avoid {{}} in attribute values)\n
// e.g. to prevent <img src=\"images/{{icon}}\"> from generating a 404.\n
var dom = this.instanceTemplate(template);\n // append to shadow do
m\n if (refNode) {\n this.insertBefore(dom, refNode); \
n } else {\n this.appendChild(dom);\n }\n // perfo
rm post-construction initialization tasks on ahem, light root\n this.shad
owRootReady(this);\n // return the created shadow root\n return do
m;\n }\n },\n shadowRootReady: function(root) {\n // locate node
s with id and store references to them in this.$ hash\n this.marshalNodeRef
erences(root);\n // set up pointer gestures\n PointerGestures.register
(root);\n },\n // locate nodes with id and store references to them in thi
s.$ hash\n marshalNodeReferences: function(root) {\n // establish $ inst
ance variable\n var $ = this.$ = this.$ || {};\n // populate $ from no
des with ID from the LOCAL tree\n if (root) {\n var n$ = root.queryS
electorAll(\"[id]\");\n for (var i=0, l=n$.length, n; (i<l) && (n=n$[i]);
i++) {\n $[n.id] = n;\n };\n }\n },\n attributeChang
edCallback: function(name, oldValue) {\n // TODO(sjmiles): adhoc filter\n
if (name !== 'class' && name !== 'style') {\n this.attributeToPropert
y(name, this.getAttribute(name));\n }\n if (this.attributeChanged) {\n
this.attributeChanged.apply(this, arguments);\n }\n },\n onMu
tation: function(node, listener) {\n var observer = new MutationObserver(fu
nction(mutations) {\n listener.call(this, observer, mutations);\n
observer.disconnect();\n }.bind(this));\n observer.observe(node, {chil
dList: true, subtree: true});\n }\n };\n\n // true if object has own Polyme
rBase api\n function isBase(object) {\n return object.hasOwnProperty('Polyme
rBase') \n }\n\n // name a base constructor for dev tools\n\n function Polyme
rBase() {};\n PolymerBase.prototype = base;\n base.constructor = PolymerBase;\
n \n // exports\n\n scope.Base = PolymerBase;\n scope.isBase = isBase;\n sc
ope.api.instance.base = base;\n \n})(Polymer);\n","/*\n * Copyright 2013 The Po
lymer Authors. All rights reserved.\n * Use of this source code is governed by a
BSD-style\n * license that can be found in the LICENSE file.\n */\n(function(sc
ope) {\n\n // imports\n\n var log = window.logFlags || {};\n \n // magic wor
ds\n \n var STYLE_SCOPE_ATTRIBUTE = 'element';\n var STYLE_CONTROLLER_SCOPE =
'controller';\n \n var styles = {\n STYLE_SCOPE_ATTRIBUTE: STYLE_SCOPE_ATT
RIBUTE,\n /**\n * Installs external stylesheets and <style> elements with
the attribute \n * polymer-scope='controller' into the scope of element. Th
is is intended\n * to be a called during custom element construction.\n *
/\n installControllerStyles: function() {\n // apply controller styles,
but only if they are not yet applied\n var scope = this.findStyleScope();\n
if (scope && !this.scopeHasNamedStyle(scope, this.localName)) {\n /
/ allow inherited controller styles\n var proto = getPrototypeOf(this), c
ssText = '';\n while (proto && proto.element) {\n cssText += pro
to.element.cssTextForScope(STYLE_CONTROLLER_SCOPE);\n proto = getProtot
ypeOf(proto);\n }\n if (cssText) {\n this.installScopeCss
Text(cssText, scope);\n }\n }\n },\n installScopeStyle: functi
on(style, name, scope) {\n var scope = scope || this.findStyleScope(), name
= name || '';\n if (scope && !this.scopeHasNamedStyle(scope, this.localNam
e + name)) {\n var cssText = '';\n if (style instanceof Array) {\n
for (var i=0, l=style.length, s; (i<l) && (s=style[i]); i++) {\n
cssText += s.textContent + '\\n\\n';\n }\n } else {\n
cssText = style.textContent;\n }\n this.installScopeCssText(c
ssText, scope, name);\n }\n },\n installScopeCssText: function(cssTex
t, scope, name) {\n scope = scope || this.findStyleScope();\n name = n
ame || '';\n if (!scope) {\n return;\n }\n if (window.Shad
owDOMPolyfill) {\n cssText = shimCssText(cssText, scope.host);\n }\n
var style = this.element.cssTextToScopeStyle(cssText,\n STYLE_CON
TROLLER_SCOPE);\n Polymer.applyStyleToScope(style, scope);\n // cache
that this style has been applied\n scope._scopeStyles[this.localName + name
] = true;\n },\n findStyleScope: function(node) {\n // find the shado
w root that contains this element\n var n = node || this;\n while (n.p
arentNode) {\n n = n.parentNode;\n }\n return n;\n },\n s
copeHasNamedStyle: function(scope, name) {\n scope._scopeStyles = scope._sc
opeStyles || {};\n return scope._scopeStyles[name];\n }\n };\n \n //
NOTE: use raw prototype traversal so that we ensure correct traversal\n // on p
latforms where the protoype chain is simulated via __proto__ (IE10)\n function
getPrototypeOf(prototype) {\n return prototype.__proto__;\n }\n\n function
shimCssText(cssText, host) {\n var name = '', is = false;\n if (host) {\n
name = host.localName;\n is = host.hasAttribute('is');\n }\n var
selector = Platform.ShadowCSS.makeScopeSelector(name, is);\n return Platform
.ShadowCSS.shimCssText(cssText, selector);\n }\n\n // exports\n\n scope.api.i
nstance.styles = styles;\n \n})(Polymer);\n","/*\n * Copyright 2013 The Polymer
Authors. All rights reserved.\n * Use of this source code is governed by a BSD-
style\n * license that can be found in the LICENSE file.\n */\n(function(scope)
{\n\n // imports\n\n var extend = scope.extend;\n var api = scope.api;\n\n /
/ imperative implementation: Polymer()\n\n // specify an 'own' prototype for ta
g `name`\n function element(name, prototype) {\n if (arguments.length === 1
&& typeof arguments[0] !== 'string') {\n prototype = name;\n var scrip
t = document._currentScript;\n name = script && script.parentNode && script
.parentNode.getAttribute ?\n script.parentNode.getAttribute('name') : '
';\n if (!name) {\n throw 'Element name could not be inferred.';\n
}\n }\n if (getRegisteredPrototype[name]) {\n throw 'Already regi
stered (Polymer) prototype for element ' + name;\n }\n // cache the protot
ype\n registerPrototype(name, prototype);\n // notify the registrar waitin
g for 'name', if any\n notifyPrototype(name);\n }\n\n // async prototype so
urce\n\n function waitingForPrototype(name, client) {\n waitPrototype[name]
= client;\n }\n\n var waitPrototype = {};\n\n function notifyPrototype(name)
{\n if (waitPrototype[name]) {\n waitPrototype[name].registerWhenReady()
;\n delete waitPrototype[name];\n }\n }\n\n // utility and bookkeeping
\n\n // maps tag names to prototypes, as registered with\n // Polymer. Prototy
pes associated with a tag name\n // using document.registerElement are availabl
e from\n // HTMLElement.getPrototypeForTag().\n // If an element was fully reg
istered by Polymer, then\n // Polymer.getRegisteredPrototype(name) === \n //
HTMLElement.getPrototypeForTag(name)\n\n var prototypesByName = {};\n\n funct
ion registerPrototype(name, prototype) {\n return prototypesByName[name] = pr
ototype || {};\n }\n\n function getRegisteredPrototype(name) {\n return pro
totypesByName[name];\n }\n\n // exports\n\n scope.getRegisteredPrototype = ge
tRegisteredPrototype;\n scope.waitingForPrototype = waitingForPrototype;\n\n /
/ namespace shenanigans so we can expose our scope on the registration \n // fu
nction\n\n // make window.Polymer reference `element()`\n\n window.Polymer = e
lement;\n\n // TODO(sjmiles): find a way to do this that is less terrible\n //
copy window.Polymer properties onto `element()`\n\n extend(Polymer, scope);\n\
n // Under the HTMLImports polyfill, scripts in the main document\n // do not
block on imports; we want to allow calls to Polymer in the main\n // document.
Platform collects those calls until we can process them, which\n // we do here.
\n\n var declarations = Platform.deliverDeclarations();\n if (declarations) {\
n for (var i=0, l=declarations.length, d; (i<l) && (d=declarations[i]); i++)
{\n element.apply(null, d);\n }\n }\n\n})(Polymer);\n","/* \n * Copyrig
ht 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is
governed by a BSD-style\n * license that can be found in the LICENSE file.\n */
\n\n(function(scope) {\n\nvar path = {\n resolveElementPaths: function(node) {\
n Platform.urlResolver.resolveDom(node);\n },\n addResolvePathApi: function
() {\n // let assetpath attribute modify the resolve path\n var assetPath
= this.getAttribute('assetpath') || '';\n var root = new URL(assetPath, this.
ownerDocument.baseURI);\n this.prototype.resolvePath = function(urlPath, base
) {\n var u = new URL(urlPath, base || root);\n return u.href;\n };
\n }\n};\n\n// exports\nscope.api.declaration.path = path;\n\n})(Polymer);\n","
/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this
source code is governed by a BSD-style\n * license that can be found in the LICE
NSE file.\n */\n(function(scope) {\n\n // imports\n\n var log = window.logFlag
s || {};\n var api = scope.api.instance.styles;\n var STYLE_SCOPE_ATTRIBUTE =
api.STYLE_SCOPE_ATTRIBUTE;\n\n // magic words\n\n var STYLE_SELECTOR = 'style'
;\n var STYLE_LOADABLE_MATCH = '@import';\n var SHEET_SELECTOR = 'link[rel=sty
lesheet]';\n var STYLE_GLOBAL_SCOPE = 'global';\n var SCOPE_ATTR = 'polymer-sc
ope';\n\n var styles = {\n // returns true if resources are loading\n loa
dStyles: function(callback) {\n var content = this.templateContent();\n
if (content) {\n this.convertSheetsToStyles(content);\n }\n v
ar styles = this.findLoadableStyles(content);\n if (styles.length) {\n
Platform.styleResolver.loadStyles(styles, callback);\n } else if (callba
ck) {\n callback();\n }\n },\n convertSheetsToStyles: function
(root) {\n var s$ = root.querySelectorAll(SHEET_SELECTOR);\n for (var
i=0, l=s$.length, s, c; (i<l) && (s=s$[i]); i++) {\n c = createStyleEleme
nt(importRuleForSheet(s, this.ownerDocument.baseURI),\n this.ownerDoc
ument);\n this.copySheetAttributes(c, s);\n s.parentNode.replaceCh
ild(c, s);\n }\n },\n copySheetAttributes: function(style, link) {\n
for (var i=0, a$=link.attributes, l=a$.length, a; (a=a$[i]) && i<l; i++) {\
n if (a.name !== 'rel' && a.name !== 'href') {\n style.setAttrib
ute(a.name, a.value);\n }\n }\n },\n findLoadableStyles: funct
ion(root) {\n var loadables = [];\n if (root) {\n var s$ = root
.querySelectorAll(STYLE_SELECTOR);\n for (var i=0, l=s$.length, s; (i<l)
&& (s=s$[i]); i++) {\n if (s.textContent.match(STYLE_LOADABLE_MATCH)) {
\n loadables.push(s);\n }\n }\n }\n return
loadables;\n },\n /**\n * Install external stylesheets loaded in <poly
mer-element> elements into the \n * element's template.\n * @param eleme
ntElement The <element> element to style.\n */\n installSheets: function(
) {\n this.cacheSheets();\n this.cacheStyles();\n this.installLoc
alSheets();\n this.installGlobalStyles();\n },\n /**\n * Remove a
ll sheets from element and store for later use.\n */\n cacheSheets: funct
ion() {\n this.sheets = this.findNodes(SHEET_SELECTOR);\n this.sheets.
forEach(function(s) {\n if (s.parentNode) {\n s.parentNode.remov
eChild(s);\n }\n });\n },\n cacheStyles: function() {\n t
his.styles = this.findNodes(STYLE_SELECTOR + '[' + SCOPE_ATTR + ']');\n thi
s.styles.forEach(function(s) {\n if (s.parentNode) {\n s.parentN
ode.removeChild(s);\n }\n });\n },\n /**\n * Takes externa
l stylesheets loaded in an <element> element and moves\n * their content int
o a <style> element inside the <element>'s template.\n * The sheet is then r
emoved from the <element>. This is done only so \n * that if the element is
loaded in the main document, the sheet does\n * not become active.\n * N
ote, ignores sheets with the attribute 'polymer-scope'.\n * @param elementEl
ement The <element> element to style.\n */\n installLocalSheets: function
() {\n var sheets = this.sheets.filter(function(s) {\n return !s.ha
sAttribute(SCOPE_ATTR);\n });\n var content = this.templateContent();\
n if (content) {\n var cssText = '';\n sheets.forEach(functio
n(sheet) {\n cssText += cssTextFromSheet(sheet) + '\\n';\n });\n
if (cssText) {\n var style = createStyleElement(cssText, this.o
wnerDocument);\n content.insertBefore(style, content.firstChild);\n
}\n }\n },\n findNodes: function(selector, matcher) {\n var
nodes = this.querySelectorAll(selector).array();\n var content = this.templ
ateContent();\n if (content) {\n var templateNodes = content.querySe
lectorAll(selector).array();\n nodes = nodes.concat(templateNodes);\n
}\n return matcher ? nodes.filter(matcher) : nodes;\n },\n template
Content: function() {\n var template = this.querySelector('template');\n
return template && templateContent(template);\n },\n /**\n * Promot
es external stylesheets and <style> elements with the attribute \n * polymer
-scope='global' into global scope.\n * This is particularly useful for defin
ing @keyframe rules which \n * currently do not function in scoped or shadow
style elements.\n * (See wkb.ug/72462)\n * @param elementElement The <e
lement> element to style.\n */\n // TODO(sorvell): remove when wkb.ug/7246
2 is addressed.\n installGlobalStyles: function() {\n var style = this.s
tyleForScope(STYLE_GLOBAL_SCOPE);\n applyStyleToScope(style, document.head)
;\n },\n cssTextForScope: function(scopeDescriptor) {\n var cssText =
'';\n // handle stylesheets\n var selector = '[' + SCOPE_ATTR + '=' +
scopeDescriptor + ']';\n var matcher = function(s) {\n return match
esSelector(s, selector);\n };\n var sheets = this.sheets.filter(matche
r);\n sheets.forEach(function(sheet) {\n cssText += cssTextFromSheet
(sheet) + '\\n\\n';\n });\n // handle cached style elements\n var
styles = this.styles.filter(matcher);\n styles.forEach(function(style) {\n
cssText += style.textContent + '\\n\\n';\n });\n return cssTex
t;\n },\n styleForScope: function(scopeDescriptor) {\n var cssText =
this.cssTextForScope(scopeDescriptor);\n return this.cssTextToScopeStyle(cs
sText, scopeDescriptor);\n },\n cssTextToScopeStyle: function(cssText, sco
peDescriptor) {\n if (cssText) {\n var style = createStyleElement(cs
sText);\n style.setAttribute(STYLE_SCOPE_ATTRIBUTE, this.getAttribute('na
me') +\n '-' + scopeDescriptor);\n return style;\n }\n
}\n };\n\n function importRuleForSheet(sheet, baseUrl) {\n var href = new
URL(sheet.getAttribute('href'), baseUrl).href;\n return '@import \\'' + href
+ '\\';';\n }\n\n function applyStyleToScope(style, scope) {\n if (style) {
\n if (scope === document) {\n scope = document.head;\n }\n
if (window.ShadowDOMPolyfill) {\n scope = document.head;\n }\n
// TODO(sorvell): necessary for IE\n // see https://connect.microsoft.com
/IE/feedback/details/790212/\n // cloning-a-style-element-and-adding-to-doc
ument-produces\n // -unexpected-result#details\n // var clone = style.
cloneNode(true);\n var clone = createStyleElement(style.textContent);\n
var attr = style.getAttribute(STYLE_SCOPE_ATTRIBUTE);\n if (attr) {\n
clone.setAttribute(STYLE_SCOPE_ATTRIBUTE, attr);\n }\n // TODO(sor
vell): probably too brittle; try to figure out \n // where to put the eleme
nt.\n var refNode = scope.firstElementChild;\n if (scope === document.
head) {\n var selector = 'style[' + STYLE_SCOPE_ATTRIBUTE + ']';\n
var s$ = document.head.querySelectorAll(selector);\n if (s$.length) {\n
refNode = s$[s$.length-1].nextElementSibling;\n }\n }\n
scope.insertBefore(clone, refNode);\n }\n }\n\n function createStyleEleme
nt(cssText, scope) {\n scope = scope || document;\n scope = scope.createEl
ement ? scope : scope.ownerDocument;\n var style = scope.createElement('style
');\n style.textContent = cssText;\n return style;\n }\n\n function cssT
extFromSheet(sheet) {\n return (sheet && sheet.__resource) || '';\n }\n\n f
unction matchesSelector(node, inSelector) {\n if (matches) {\n return ma
tches.call(node, inSelector);\n }\n }\n var p = HTMLElement.prototype;\n v
ar matches = p.matches || p.matchesSelector || p.webkitMatchesSelector \n |
| p.mozMatchesSelector;\n \n // exports\n\n scope.api.declaration.styles = st
yles;\n scope.applyStyleToScope = applyStyleToScope;\n \n})(Polymer);\n","/*\n
* Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this sour
ce code is governed by a BSD-style\n * license that can be found in the LICENSE
file.\n */\n\n(function(scope) {\n\n // imports\n\n var log = window.logFlags
|| {};\n var api = scope.api.instance.events;\n var EVENT_PREFIX = api.EVENT_P
REFIX;\n // polymer-element declarative api: events feature\n\n var events = {
\n parseHostEvents: function() {\n // our delegates map\n var dele
gates = this.prototype.eventDelegates;\n // extract data from attributes in
to delegates\n this.addAttributeDelegates(delegates);\n },\n addAttri
buteDelegates: function(delegates) {\n // for each attribute\n for (va
r i=0, a; a=this.attributes[i]; i++) {\n // does it have magic marker ide
ntifying it as an event delegate?\n if (this.hasEventPrefix(a.name)) {\n
// if so, add the info to delegates\n delegates[this.removeEve
ntPrefix(a.name)] = a.value.replace('{{', '')\n .replace('}}', '').
trim();\n }\n }\n },\n // starts with 'on-'\n hasEventPrefi
x: function (n) {\n return n && (n[0] === 'o') && (n[1] === 'n') && (n[2] =
== '-');\n },\n removeEventPrefix: function(n) {\n return n.slice(pre
fixLength);\n }\n };\n\n var prefixLength = EVENT_PREFIX.length;\n\n // ex
ports\n scope.api.declaration.events = events;\n\n})(Polymer);","/*\r\n * Copyr
ight 2013 The Polymer Authors. All rights reserved.\r\n * Use of this source cod
e is governed by a BSD-style\r\n * license that can be found in the LICENSE file
.\r\n */\r\n(function(scope) {\r\n\r\n // element api\r\n\r\n var properties =
{\r\n inferObservers: function(prototype) {\r\n // called before protot
ype.observe is chained to inherited object\r\n var observe = prototype.obse
rve, property;\r\n for (var n in prototype) {\r\n if (n.slice(-7) ==
= 'Changed') {\r\n if (!observe) {\r\n observe = (prototype
.observe = {});\r\n }\r\n property = n.slice(0, -7)\r\n
observe[property] = observe[property] || n;\r\n }\r\n }\r\n },
\r\n explodeObservers: function(prototype) {\r\n // called before protot
ype.observe is chained to inherited object\r\n var o = prototype.observe;\r
\n if (o) {\r\n var exploded = {};\r\n for (var n in o) {\r\n
var names = n.split(' ');\r\n for (var i=0, ni; ni=names[i];
i++) {\r\n exploded[ni] = o[n];\r\n }\r\n }\r\n
prototype.observe = exploded;\r\n }\r\n },\r\n optimizePropertyMaps
: function(prototype) {\r\n if (prototype.observe) {\r\n // construc
t name list\r\n var a = prototype._observeNames = [];\r\n for (var
n in prototype.observe) {\r\n var names = n.split(' ');\r\n f
or (var i=0, ni; ni=names[i]; i++) {\r\n a.push(ni);\r\n }\r
\n }\r\n }\r\n if (prototype.publish) {\r\n // construct
name list\r\n var a = prototype._publishNames = [];\r\n for (var
n in prototype.publish) {\r\n a.push(n);\r\n }\r\n }\r\n
},\r\n publishProperties: function(prototype, base) {\r\n // if we have
any properties to publish\r\n var publish = prototype.publish;\r\n if
(publish) {\r\n // transcribe `publish` entries onto own prototype\r\n
this.requireProperties(publish, prototype, base);\r\n // construct
map of lower-cased property names\r\n prototype._publishLC = this.lowerCa
seMap(publish);\r\n }\r\n },\r\n requireProperties: function(properti
es, prototype, base) {\r\n // ensure a prototype value for each property\r\
n for (var n in properties) {\r\n if (prototype[n] === undefined &&
base[n] === undefined) {\r\n prototype[n] = properties[n];\r\n }
\r\n }\r\n },\r\n lowerCaseMap: function(properties) {\r\n var m
ap = {};\r\n for (var n in properties) {\r\n map[n.toLowerCase()] =
n;\r\n }\r\n return map;\r\n }\r\n };\r\n\r\n // exports\r\n\r\n
scope.api.declaration.properties = properties;\r\n\r\n})(Polymer);\r\n","/*\n *
Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source
code is governed by a BSD-style\n * license that can be found in the LICENSE fi
le.\n */\n(function(scope) {\n\n // magic words\n\n var ATTRIBUTES_ATTRIBUTE =
'attributes';\n var ATTRIBUTES_REGEX = /\\s|,/;\n\n // attributes api\n\n va
r attributes = {\n inheritAttributesObjects: function(prototype) {\n //
chain our lower-cased publish map to the inherited version\n this.inheritOb
ject(prototype, 'publishLC');\n // chain our instance attributes map to the
inherited version\n this.inheritObject(prototype, '_instanceAttributes');\
n },\n publishAttributes: function(prototype, base) {\n // merge name
s from 'attributes' attribute\n var attributes = this.getAttribute(ATTRIBUT
ES_ATTRIBUTE);\n if (attributes) {\n // get properties to publish\n
var publish = prototype.publish || (prototype.publish = {});\n //
names='a b c' or names='a,b,c'\n var names = attributes.split(ATTRIBUTES_
REGEX);\n // record each name for publishing\n for (var i=0, l=nam
es.length, n; i<l; i++) {\n // remove excess ws\n n = names[i]
.trim();\n // do not override explicit entries\n if (n && publ
ish[n] === undefined && base[n] === undefined) {\n publish[n] = null;
\n }\n }\n }\n },\n // record clonable attributes fro
m <element>\n accumulateInstanceAttributes: function() {\n // inherit in
stance attributes\n var clonable = this.prototype._instanceAttributes;\n
// merge attributes from element\n var a$ = this.attributes;\n for
(var i=0, l=a$.length, a; (i<l) && (a=a$[i]); i++) { \n if (this.isInsta
nceAttribute(a.name)) {\n clonable[a.name] = a.value;\n }\n
}\n },\n isInstanceAttribute: function(name) {\n return !this.blackL
ist[name] && name.slice(0,3) !== 'on-';\n },\n // do not clone these attri
butes onto instances\n blackList: {\n name: 1,\n 'extends': 1,\n
constructor: 1,\n noscript: 1,\n assetpath: 1,\n 'cache-csstex
t': 1\n }\n };\n\n // add ATTRIBUTES_ATTRIBUTE to the blacklist\n attribut
es.blackList[ATTRIBUTES_ATTRIBUTE] = 1;\n\n // exports\n\n scope.api.declarati
on.attributes = attributes;\n\n})(Polymer);\n","/*\n * Copyright 2013 The Polyme
r Authors. All rights reserved.\n * Use of this source code is governed by a BSD
-style\n * license that can be found in the LICENSE file.\n */\n(function(scope)
{\n\n // imports\n \n var api = scope.api;\n var isBase = scope.isBase;\n
var extend = scope.extend;\n\n // prototype api\n\n var prototype = {\n\n r
egister: function(name, extendeeName) {\n // build prototype combining exte
ndee, Polymer base, and named api\n this.buildPrototype(name, extendeeName)
;\n // register our custom element with the platform\n this.registerPr
ototype(name, extendeeName);\n // reference constructor in a global named b
y 'constructor' attribute\n this.publishConstructor();\n },\n\n build
Prototype: function(name, extendeeName) {\n // get our custom prototype (be
fore chaining)\n var extension = scope.getRegisteredPrototype(name);\n
// get basal prototype\n var base = this.generateBasePrototype(extendeeNam
e);\n // implement declarative features\n this.desugarBeforeChaining(e
xtension, base);\n // join prototypes\n this.prototype = this.chainPro
totypes(extension, base);\n // more declarative features\n this.desuga
rAfterChaining(name, extendeeName);\n },\n\n desugarBeforeChaining: functi
on(prototype, base) {\n // back reference declaration element\n // TOD
O(sjmiles): replace `element` with `elementElement` or `declaration`\n prot
otype.element = this;\n // transcribe `attributes` declarations onto own pr
ototype's `publish`\n this.publishAttributes(prototype, base);\n // `p
ublish` properties to the prototype and to attribute watch\n this.publishPr
operties(prototype, base);\n // infer observers for `observe` list based on
method names\n this.inferObservers(prototype);\n // desugar compound
observer syntax, e.g. 'a b c' \n this.explodeObservers(prototype);\n },\
n\n chainPrototypes: function(prototype, base) {\n // chain various meta
-data objects to inherited versions\n this.inheritMetaData(prototype, base)
;\n // chain custom api to inherited\n var chained = this.chainObject(
prototype, base);\n // x-platform fixup\n ensurePrototypeTraversal(cha
ined);\n return chained;\n },\n\n inheritMetaData: function(prototype
, base) {\n // chain observe object to inherited\n this.inheritObject(
'observe', prototype, base);\n // chain publish object to inherited\n
this.inheritObject('publish', prototype, base);\n // chain our lower-cased
publish map to the inherited version\n this.inheritObject('_publishLC', pro
totype, base);\n // chain our instance attributes map to the inherited vers
ion\n this.inheritObject('_instanceAttributes', prototype, base);\n //
chain our event delegates map to the inherited version\n this.inheritObjec
t('eventDelegates', prototype, base);\n },\n\n // implement various declar
ative features\n desugarAfterChaining: function(name, extendee) {\n // b
uild side-chained lists to optimize iterations\n this.optimizePropertyMaps(
this.prototype);\n // install external stylesheets as if they are inline\n
this.installSheets();\n // adjust any paths in dom from imports\n
this.resolveElementPaths(this);\n // compile list of attributes to copy to
instances\n this.accumulateInstanceAttributes();\n // parse on-* dele
gates declared on `this` element\n this.parseHostEvents();\n //\n
// install a helper method this.resolvePath to aid in \n // setting resour
ce urls. e.g.\n // this.$.image.src = this.resolvePath('images/foo.png')\n
this.addResolvePathApi();\n // under ShadowDOMPolyfill, transforms to
approximate missing CSS features\n if (window.ShadowDOMPolyfill) {\n
Platform.ShadowCSS.shimStyling(this.templateContent(), name, extendee);\n
}\n // allow custom element access to the declarative context\n if (th
is.prototype.registerCallback) {\n this.prototype.registerCallback(this);
\n }\n },\n\n // if a named constructor is requested in element, map
a reference\n // to the constructor to the given symbol\n publishConstruct
or: function() {\n var symbol = this.getAttribute('constructor');\n if
(symbol) {\n window[symbol] = this.ctor;\n }\n },\n\n // buil
d prototype combining extendee, Polymer base, and named api\n generateBasePro
totype: function(extnds) {\n var prototype = this.findBasePrototype(extnds)
;\n if (!prototype) {\n // create a prototype based on tag-name exte
nsion\n var prototype = HTMLElement.getPrototypeForTag(extnds);\n
// insert base api in inheritance chain (if needed)\n prototype = this.en
sureBaseApi(prototype);\n // memoize this base\n memoizedBases[ext
nds] = prototype;\n }\n return prototype;\n },\n\n findBaseProto
type: function(name) {\n return memoizedBases[name];\n },\n\n // inst
all Polymer instance api into prototype chain, as needed \n ensureBaseApi: fu
nction(prototype) {\n if (prototype.PolymerBase) {\n return prototyp
e;\n }\n var extended = Object.create(prototype);\n // we need a
unique copy of base api for each base prototype\n // therefore we 'extend'
here instead of simply chaining\n api.publish(api.instance, extended);\n
// TODO(sjmiles): sharing methods across prototype chains is\n // not su
pported by 'super' implementation which optimizes\n // by memoizing prototy
pe relationships.\n // Probably we should have a version of 'extend' that i
s \n // share-aware: it could study the text of each function,\n // lo
ok for usage of 'super', and wrap those functions in\n // closures.\n
// As of now, there is only one problematic method, so \n // we just patch
it manually.\n // To avoid re-entrancy problems, the special super method\n
// installed is called `mixinSuper` and the mixin method\n // must us
e this method instead of the default `super`.\n this.mixinMethod(extended,
prototype, api.instance.mdv, 'bind');\n // return buffed-up prototype\n
return extended;\n },\n\n mixinMethod: function(extended, prototype, api
, name) {\n var $super = function(args) {\n return prototype[name].a
pply(this, args);\n };\n extended[name] = function() {\n this.m
ixinSuper = $super;\n return api[name].apply(this, arguments);\n }\n
},\n\n // ensure prototype[name] inherits from a prototype.prototype[name
]\n inheritObject: function(name, prototype, base) {\n // require an obj
ect\n var source = prototype[name] || {};\n // chain inherited propert
ies onto a new object\n prototype[name] = this.chainObject(source, base[nam
e]);\n },\n\n // register 'prototype' to custom element 'name', store cons
tructor \n registerPrototype: function(name, extendee) { \n var info = {
\n prototype: this.prototype\n }\n // native element must be sp
ecified in extends\n var typeExtension = this.findTypeExtension(extendee);\
n if (typeExtension) {\n info.extends = typeExtension;\n }\n
// register the prototype with HTMLElement for name lookup\n HTMLElement
.register(name, this.prototype);\n // register the custom type\n this.
ctor = document.registerElement(name, info);\n },\n\n findTypeExtension: f
unction(name) {\n if (name && name.indexOf('-') < 0) {\n return name
;\n } else {\n var p = this.findBasePrototype(name);\n if (p.
element) {\n return this.findTypeExtension(p.element.extends);\n
}\n }\n }\n\n };\n\n // memoize base prototypes\n var memoizedBases
= {};\n\n // implementation of 'chainObject' depends on support for __proto__\n
if (Object.__proto__) {\n prototype.chainObject = function(object, inherite
d) {\n if (object && inherited && object !== inherited) {\n object._
_proto__ = inherited;\n }\n return object;\n }\n } else {\n pro
totype.chainObject = function(object, inherited) {\n if (object && inherite
d && object !== inherited) {\n var chained = Object.create(inherited);\n
object = extend(chained, object);\n }\n return object;\n }\n
}\n\n // On platforms that do not support __proto__ (versions of IE), the pro
totype\n // chain of a custom element is simulated via installation of __proto_
_.\n // Although custom elements manages this, we install it here so it's\n //
available during desugaring.\n function ensurePrototypeTraversal(prototype) {\
n if (!Object.__proto__) {\n var ancestor = Object.getPrototypeOf(protot
ype);\n prototype.__proto__ = ancestor;\n if (isBase(ancestor)) {\n
ancestor.__proto__ = Object.getPrototypeOf(ancestor);\n }\n }\n }\
n\n // exports\n\n api.declaration.prototype = prototype;\n\n})(Polymer);\n","
/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this
source code is governed by a BSD-style\n * license that can be found in the LICE
NSE file.\n */\n(function(scope) {\n\n var queue = {\n // tell the queue to
wait for an element to be ready\n wait: function(element, check, go) {\n
if (this.indexOf(element) === -1) {\n this.add(element);\n elemen
t.__check = check;\n element.__go = go;\n }\n return (this.inde
xOf(element) !== 0);\n },\n add: function(element) {\n //console.log(
'queueing', element.name);\n queueForElement(element).push(element);\n }
,\n indexOf: function(element) {\n var i = queueForElement(element).inde
xOf(element);\n if (i >= 0 && document.contains(element)) {\n i += (
HTMLImports.useNative || HTMLImports.ready) ? \n importQueue.length : 1
e9;\n }\n return i; \n },\n // tell the queue an element is rea
dy to be registered\n go: function(element) {\n var readied = this.remov
e(element);\n if (readied) {\n readied.__go.call(readied);\n
readied.__check = readied.__go = null;\n this.check();\n }\n },\n
remove: function(element) {\n var i = this.indexOf(element);\n if
(i !== 0) {\n //console.warn('queue order wrong', i);\n return;\n
}\n return queueForElement(element).shift();\n },\n check: funct
ion() {\n // next\n var element = this.nextElement();\n if (eleme
nt) {\n element.__check.call(element);\n }\n if (this.canReady(
)) {\n this.ready();\n return true;\n }\n },\n nextElem
ent: function() {\n return nextQueued();\n },\n canReady: function()
{\n return !this.waitToReady && this.isEmpty();\n },\n isEmpty: funct
ion() {\n return !importQueue.length && !mainQueue.length;\n },\n rea
dy: function() {\n // TODO(sorvell): As an optimization, turn off CE polyfi
ll upgrading\n // while registering. This way we avoid having to upgrade ea
ch document\n // piecemeal per registration and can instead register all el
ements\n // and upgrade once in a batch. Without this optimization, upgrade
time\n // degrades significantly when SD polyfill is used. This is mainly
because\n // querying the document tree for elements is slow under the SD p
olyfill.\n if (CustomElements.ready === false) {\n CustomElements.up
gradeDocumentTree(document);\n CustomElements.ready = true;\n }\n
if (readyCallbacks) {\n var fn;\n while (readyCallbacks.length)
{\n fn = readyCallbacks.shift();\n fn();\n }\n }\
n },\n addReadyCallback: function(callback) {\n if (callback) {\n
readyCallbacks.push(callback);\n }\n },\n waitToReady: true\n };
\n\n var importQueue = [];\n var mainQueue = [];\n var readyCallbacks = [];\n
\n function queueForElement(element) {\n return document.contains(element) ?
mainQueue : importQueue;\n }\n\n function nextQueued() {\n return importQu
eue.length ? importQueue[0] : mainQueue[0];\n }\n\n var polymerReadied = false
; \n\n document.addEventListener('WebComponentsReady', function() {\n Custom
Elements.ready = false;\n });\n \n function whenPolymerReady(callback) {\n
queue.waitToReady = true;\n CustomElements.ready = false;\n HTMLImports.w
henImportsReady(function() {\n queue.addReadyCallback(callback);\n que
ue.waitToReady = false;\n queue.check();\n });\n }\n\n // exports\n s
cope.queue = queue;\n scope.whenPolymerReady = whenPolymerReady;\n})(Polymer);\
n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of t
his source code is governed by a BSD-style\n * license that can be found in the
LICENSE file.\n */\n(function(scope) {\n\n var whenPolymerReady = scope.whenPol
ymerReady;\n\n function importElements(elementOrFragment, callback) {\n if (
elementOrFragment) {\n document.head.appendChild(elementOrFragment);\n
whenPolymerReady(callback);\n } else if (callback) {\n callback();\n
}\n }\n\n function importUrls(urls, callback) {\n if (urls && urls.length)
{\n var frag = document.createDocumentFragment();\n for (var i=0,
l=urls.length, url, link; (i<l) && (url=urls[i]); i++) {\n link = docu
ment.createElement('link');\n link.rel = 'import';\n link.href
= url;\n frag.appendChild(link);\n }\n importElements(fr
ag, callback);\n } else if (callback) {\n callback();\n }\n }\n\n /
/ exports\n scope.import = importUrls;\n scope.importElements = importElements
;\n\n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Authors. All rights rese
rved.\n * Use of this source code is governed by a BSD-style\n * license that ca
n be found in the LICENSE file.\n */\n(function(scope) {\n\n // imports\n\n va
r extend = scope.extend;\n var api = scope.api;\n var queue = scope.queue;\n
var whenPolymerReady = scope.whenPolymerReady;\n var getRegisteredPrototype = s
cope.getRegisteredPrototype;\n var waitingForPrototype = scope.waitingForProtot
ype;\n\n // declarative implementation: <polymer-element>\n\n var prototype =
extend(Object.create(HTMLElement.prototype), {\n\n createdCallback: function(
) {\n if (this.getAttribute('name')) {\n this.init();\n }\n
},\n\n init: function() {\n // fetch declared values\n this.name =
this.getAttribute('name');\n this.extends = this.getAttribute('extends');\n
// initiate any async resource fetches\n this.loadResources();\n
// register when all constraints are met\n this.registerWhenReady();\n
},\n\n registerWhenReady: function() {\n if (this.registered\n || t
his.waitingForPrototype(this.name)\n || this.waitingForQueue()\n ||
this.waitingForResources()) {\n return;\n }\n // TODO(sorvell
): ends up calling '_register' by virtue\n // of `waitingForQueue` (see bel
ow)\n queue.go(this);\n },\n\n // TODO(sorvell): refactor, this metho
d is private-ish, but it's being\n // called by the queue object.\n _regis
ter: function() {\n //console.log('registering', this.name);\n //conso
le.group('registering', this.name);\n // warn if extending from a custom el
ement not registered via Polymer\n if (isCustomTag(this.extends) && !isRegi
stered(this.extends)) {\n console.warn('%s is attempting to extend %s, an
unregistered element ' +\n 'or one that was not registered with Poly
mer.', this.name,\n this.extends);\n }\n this.register(this
.name, this.extends);\n this.registered = true;\n //console.groupEnd()
;\n },\n\n waitingForPrototype: function(name) {\n if (!getRegistered
Prototype(name)) {\n // then wait for a prototype\n waitingForProt
otype(name, this);\n // emulate script if user is not supplying one\n
this.handleNoScript(name);\n // prototype not ready yet\n retu
rn true;\n }\n },\n\n handleNoScript: function(name) {\n // if e
xplicitly marked as 'noscript'\n if (this.hasAttribute('noscript') && !this
.noscript) {\n this.noscript = true;\n // TODO(sorvell): CustomEle
ments polyfill awareness:\n // noscript elements should upgrade in logica
l order\n // script injection ensures this under native custom elements;\
n // under imports + ce polyfills, scripts run before upgrades.\n
// dependencies should be ready at upgrade time so register\n // prototyp
e at this time.\n if (window.CustomElements && !CustomElements.useNative)
{\n Polymer(name);\n } else {\n var script = document.
createElement('script');\n script.textContent = 'Polymer(\\'' + name +
'\\');';\n this.appendChild(script);\n }\n }\n },\n\n
waitingForResources: function() {\n return this._needsResources;\n },\n
\n // NOTE: Elements must be queued in proper order for inheritance/compositi
on\n // dependency resolution. Previously this was enforced for inheritance,\
n // and by rule for composition. It's now entirely by rule.\n waitingForQ
ueue: function() {\n return queue.wait(this, this.registerWhenReady, this._
register);\n },\n\n loadResources: function() {\n this._needsResource
s = true;\n this.loadStyles(function() {\n this._needsResources = fa
lse;\n this.registerWhenReady();\n }.bind(this));\n }\n\n });\n\
n // semi-pluggable APIs \n\n // TODO(sjmiles): should be fully pluggable (aka
decoupled, currently\n // the various plugins are allowed to depend on each ot
her directly)\n api.publish(api.declaration, prototype);\n\n // utility and bo
okkeeping\n\n function isRegistered(name) {\n return Boolean(HTMLElement.get
PrototypeForTag(name));\n }\n\n function isCustomTag(name) {\n return (name
&& name.indexOf('-') >= 0);\n }\n\n // exports\n\n scope.getRegisteredProtot
ype = getRegisteredPrototype;\n \n // boot tasks\n\n whenPolymerReady(functio
n() {\n document.body.removeAttribute('unresolved');\n document.dispatchEv
ent(\n new CustomEvent('polymer-ready', {bubbles: true})\n );\n });\n\n
// register polymer-element with document\n\n document.registerElement('polym
er-element', {prototype: prototype});\n\n})(Polymer);\n"]} | 1 {"version":3,"file":"polymer.js","sources":["../../polymer-gestures/src/scope.js
","../../polymer-gestures/src/targetfind.js","../../polymer-gestures/src/touch-a
ction.js","../../polymer-gestures/src/eventFactory.js","../../polymer-gestures/s
rc/pointermap.js","../../polymer-gestures/src/dispatcher.js","../../polymer-gest
ures/src/installer.js","../../polymer-gestures/src/mouse.js","../../polymer-gest
ures/src/touch.js","../../polymer-gestures/src/ms.js","../../polymer-gestures/sr
c/pointer.js","../../polymer-gestures/src/platform-events.js","../../polymer-ges
tures/src/track.js","../../polymer-gestures/src/hold.js","../../polymer-gestures
/src/tap.js","../../polymer-expressions/third_party/esprima/esprima.js","../../p
olymer-expressions/src/polymer-expressions.js","polymer-versioned.js","../src/bo
ot.js","../src/lib/lang.js","../src/lib/job.js","../src/lib/dom.js","../src/lib/
super.js","../src/lib/deserialize.js","../src/api.js","../src/instance/utils.js"
,"../src/instance/events.js","../src/instance/attributes.js","../src/instance/pr
operties.js","../src/instance/mdv.js","../src/instance/base.js","../src/instance
/styles.js","../src/declaration/polymer.js","../src/declaration/path.js","../src
/declaration/styles.js","../src/declaration/events.js","../src/declaration/prope
rties.js","../src/declaration/attributes.js","../src/declaration/mdv.js","../src
/declaration/prototype.js","../src/declaration/queue.js","../src/declaration/imp
ort.js","../src/declaration/polymer-element.js","../src/lib/auto-binding.js"],"n
ames":["window","PolymerGestures","scope","target","shadow","inEl","shadowRoot",
"webkitShadowRoot","canTarget","Boolean","elementFromPoint","targetingShadow","s
","this","olderShadow","os","olderShadowRoot","se","querySelector","allShadows",
"element","shadows","push","searchRoot","inRoot","x","y","st","sr","t","ssr","ow
ner","document","parentNode","nodeType","Node","DOCUMENT_NODE","DOCUMENT_FRAGMEN
T_NODE","findTarget","inEvent","clientX","clientY","LCA","a","b","contains","ade
pth","depth","bdepth","d","walk","n","u","i","host","deepContains","common","ins
ideNode","node","rect","getBoundingClientRect","left","right","top","bottom","ta
rgetFinding","bind","shadowSelector","v","selector","rule","attrib2css","selecto
rs","styles","hasTouchAction","head","style","touchAction","hasShadowRoot","Shad
owDOMPolyfill","createShadowRoot","forEach","r","String","map","el","createEleme
nt","textContent","appendChild","MOUSE_PROPS","MOUSE_DEFAULTS","NOP_FACTORY","ev
entFactory","preventTap","makeBaseEvent","inType","inDict","e","createEvent","in
itEvent","bubbles","cancelable","makeGestureEvent","Object","create","k","keys",
"length","makePointerEvent","p","buttons","pressure","pointerId","width","height
","tiltX","tiltY","pointerType","hwTimestamp","isPrimary","PointerMap","USE_MAP"
,"m","Map","pointers","POINTERS_FN","values","prototype","size","set","inId","in
dexOf","has","delete","splice","get","clear","callback","thisArg","call","CLONE_
PROPS","CLONE_DEFAULTS","HAS_SVG_INSTANCE","SVGElementInstance","wrap","wrapIfNe
eded","dispatcher","pointermap","eventMap","eventSources","eventSourceList","ges
tures","gestureQueue","registerSource","name","source","newEvents","events","reg
isterGesture","register","es","l","unregister","down","fireEvent","move","type",
"fillGestureQueue","up","cancel","tapPrevented","eventHandler","_handledByPG","f
n","listen","addEvent","unlisten","removeEvent","eventName","addEventListener_",
"boundHandler","addEventListener","removeEventListener_","removeEventListener","
makeEvent","preventDefault","_target","dispatchEvent","cloneEvent","eventCopy","
correspondingUseElement","clone","gestureTrigger","g","j","ev","requestAnimation
Frame","boundGestureTrigger","Installer","add","remove","changed","binder","addC
allback","removeCallback","changedCallback","MO","observer","mutationWatcher","A
rray","toArray","slice","filter","MutationObserver","WebKitMutationObserver","SE
LECTOR","OBSERVER_INIT","subtree","childList","attributes","attributeOldValue","
attributeFilter","watchSubtree","observe","enableOnSubtree","readyState","instal
lOnLoad","installNewSubtree","findElements","addElement","querySelectorAll","rem
oveElement","elementChanged","oldValue","concatLists","accum","list","concat","i
sElement","ELEMENT_NODE","flattenMutationTree","inNodes","tree","reduce","mutati
ons","mutationHandler","added","addedNodes","removed","removedNodes","console","
warn","DEDUP_DIST","WHICH_TO_BUTTONS","HAS_BUTTONS","MouseEvent","mouseEvents","
POINTER_ID","POINTER_TYPE","lastTouches","isEventSimulatedFromTouch","lts","dx",
"Math","abs","dy","prepareEvent","which","mousedown","mouseup","mousemove","rela
tedTarget","cleanupMouse","INSTALLER","DEDUP_TIMEOUT","CLICK_COUNT_TIMEOUT","ATT
RIB","HAS_TOUCH_ACTION","touchEvents","elementAdded","getAttribute","touchAction
ToScrollType","_scrollType","elementRemoved","undefined","oldSt","scrollTypes","
EMITTER","XSCROLLER","YSCROLLER","SCROLLER","exec","firstTouch","isPrimaryTouch"
,"inTouch","identifier","setPrimaryTouch","firstXY","X","Y","scrolling","cancelR
esetClickCount","removePrimaryPointer","inPointer","resetClickCount","clickCount
","resetId","setTimeout","clearTimeout","typeToButtons","ret","touch","id","curr
entTouchEvent","touchToPointer","cte","detail","webkitRadiusX","radiusX","webkit
RadiusY","radiusY","webkitForce","force","self","processTouches","inFunction","t
l","changedTouches","shouldScroll","scrollAxis","currentTarget","oa","da","doa",
"findTouch","inTL","vacuumTouches","touches","value","key","out","cancelOut","to
uchstart","dedupSynthMouse","touchmove","touchcancel","pointer","touchend","clea
nUpPointer","lt","HAS_BITMAP_TYPE","MSPointerEvent","MSPOINTER_TYPE_MOUSE","msEv
ents","POINTER_TYPES","cleanup","MSPointerDown","MSPointerMove","MSPointerUp","M
SPointerCancel","pointerEvents","pointerdown","pointermove","pointerup","pointer
cancel","PointerEvent","navigator","msPointerEnabled","ontouchstart","track","WI
GGLE_THRESHOLD","clampDir","inDelta","calcPositionDelta","inA","inB","pageX","pa
geY","fireTrack","inTrackingData","downEvent","dd","lastMoveEvent","xDirection",
"yDirection","ddx","ddy","screenX","screenY","trackInfo","downTarget","tracking"
,"hold","HOLD_DELAY","heldPointer","holdJob","pulse","Date","now","timeStamp","h
eld","fireHold","clearInterval","setInterval","inHoldTime","holdTime","tap","sho
uldTap","downState","start","altKey","ctrlKey","metaKey","shiftKey","global","as
sert","condition","message","Error","isDecimalDigit","ch","isWhiteSpace","fromCh
arCode","isLineTerminator","isIdentifierStart","isIdentifierPart","isKeyword","s
kipWhitespace","index","charCodeAt","getIdentifier","scanIdentifier","Token","Id
entifier","Keyword","NullLiteral","BooleanLiteral","range","scanPunctuator","cod
e2","ch2","code","ch1","Punctuator","throwError","Messages","UnexpectedToken","s
canNumericLiteral","number","NumericLiteral","parseFloat","scanStringLiteral","q
uote","str","octal","StringLiteral","isIdentifierName","token","advance","EOF","
lex","lookahead","peek","pos","messageFormat","error","args","arguments","msg","
replace","whole","description","throwUnexpected","expect","match","matchKeyword"
,"keyword","parseArrayInitialiser","elements","parseExpression","delegate","crea
teArrayExpression","parseObjectPropertyKey","createLiteral","createIdentifier","
parseObjectProperty","createProperty","parseObjectInitialiser","properties","cre
ateObjectExpression","parseGroupExpression","expr","parsePrimaryExpression","cre
ateThisExpression","parseArguments","parseNonComputedProperty","parseNonComputed
Member","parseComputedMember","parseLeftHandSideExpression","property","createMe
mberExpression","parseUnaryExpression","parsePostfixExpression","createUnaryExpr
ession","binaryPrecedence","prec","parseBinaryExpression","stack","operator","po
p","createBinaryExpression","parseConditionalExpression","consequent","alternate
","createConditionalExpression","parseFilter","createFilter","parseFilters","par
seTopLevel","Syntax","parseInExpression","parseAsExpression","createTopLevel","c
reateAsExpression","indexName","createInExpression","parse","inDelegate","state"
,"labelSet","TokenName","ArrayExpression","BinaryExpression","CallExpression","C
onditionalExpression","EmptyStatement","ExpressionStatement","Literal","LabeledS
tatement","LogicalExpression","MemberExpression","ObjectExpression","Program","P
roperty","ThisExpression","UnaryExpression","UnknownLabel","Redeclaration","espr
ima","prepareBinding","expressionText","filterRegistry","expression","getExpress
ion","scopeIdent","tagName","ex","model","oneTime","binding","getBinding","polym
erExpressionScopeIdent_","indexIdent","polymerExpressionIndexIdent_","expression
ParseCache","ASTDelegate","Expression","valueFn_","IdentPath","path","Path","obj
ect","accessor","dynamicDeps","valid","simplePath","getFn","Filter","notImplemen
ted","arg","valueFn","filters","deps","currentPath","ConstantObservable","value_
","convertStylePropertyName","c","toLowerCase","findScope","prop","parentScopeNa
me","hasOwnProperty","isLiteralExpression","pathString","isNaN","Number","Polyme
rExpressions","addPath","getValueFrom","setValue","newValue","setValueFrom",{"en
d":{"file":"../../polymer-expressions/src/polymer-expressions.js","comments_befo
re":[],"nlb":false,"endpos":3741,"pos":3733,"col":8,"line":123,"value":"fullPath
","type":"name"},"start":{"file":"../../polymer-expressions/src/polymer-expressi
ons.js","comments_before":[],"nlb":false,"endpos":3741,"pos":3733,"col":8,"line"
:123,"value":"fullPath","type":"name"},"name":"fullPath"},"fullPath","fullPath_"
,"last","context","propName","transform","toModelDirection","toModel","toDOM","a
pply","unaryOperators","+","-","!","binaryOperators","*","/","%","<",">","<=",">
=","==","!=","===","!==","&&","||","op","argument","test","ident","arr","kind","
obj","open","discardChanges","deliver","close","firstTime","firstValue","startRe
set","getValue","finishReset","setValueFn","CompoundObserver","ObserverTransform
","count","random","toString","styleObject","parts","join","tokenList","tokens",
"prepareInstancePositionChanged","template","templateInstance","PathObserver","p
repareInstanceModel","scopeName","parentScope","exposeGetExpression","getExpress
ion_","Polymer","version","extend","api","getOwnPropertyNames","pd","getOwnPrope
rtyDescriptor","defineProperty","nom","job","wait","stop","Job","go","inContext"
,"boundComplete","complete","h","handle","cancelAnimationFrame","registry","HTML
Element","tag","getPrototypeForTag","getPrototypeOf","originalStopPropagation","
Event","stopPropagation","cancelBubble","$super","arrayOfArgs","caller","_super"
,"nameInThis","memoizeSuper","__proto__","n$","method","proto","nextSuper","supe
r","deserializeValue","currentValue","inferredType","typeHandlers","string","dat
e","boolean","parseInt","JSON","function","declaration","instance","publish","ap
is","utils","async","timeout","Platform","flush","cancelAsync","fire","onNode","
event","CustomEvent","asyncFire","classFollows","anew","old","className","classL
ist","nop","nob","asyncMethod","log","logFlags","EVENT_PREFIX","addHostListeners
","eventDelegates","localName","methodName","getEventHandler","dispatchMethod","
group","groupEnd","copyInstanceAttributes","a$","_instanceAttributes","hasAttrib
ute","setAttribute","takeAttributes","_publishLC","attributeToProperty","propert
yForAttribute","search","bindPattern","stringValue","serializeValue","reflectPro
pertyToAttribute","serializedValue","removeAttribute","bindProperties","observab
le","Observer","bindToInstance","resolveBindingValue","createPropertyObserver","
_observeNames","o","_propertyObserver","registerObservers","observeArrayValue","
openPropertyObserver","notifyPropertyChanges","newValues","oldValues","paths","c
alled","ov","nv","invokeMethod","deliverChanges","propertyChanged_","reflect","c
allbackName","isArray","closeNamedObserver","ArrayObserver","registerNamedObserv
er","bindProperty","observers","_observers","closeObservers","closeObserverArray
","observerArray","o$","_namedObservers","closeNamedObservers","mdv","instanceTe
mplate","syntax","bindingDelegate","dom","createInstance","bindings_","enableBin
dingsReflection","path_","_recordBinding","mixinSuper","bindFinished","makeEleme
ntReady","asyncUnbindAll","_unbound","unbind","_unbindAllJob","unbindAll","cance
lUnbindAll","mustachePattern","isBase","PolymerBase","base","created","ready","c
reatedCallback","prepareElement","ownerDocument","isStagingDocument","_elementPr
epared","shadowRoots","_readied","parseDeclarations","attachedCallback","attache
d","enteredView","hasBeenAttached","domReady","detachedCallback","preventDispose
","detached","leftView","enteredViewCallback","leftViewCallback","enteredDocumen
tCallback","leftDocumentCallback","parseDeclaration","elementElement","fetchTemp
late","root","shadowFromTemplate","shadowRootReady","lightFromTemplate","refNode
","eventController","insertBefore","marshalNodeReferences","$","attributeChanged
Callback","attributeChanged","onMutation","listener","disconnect","constructor",
"Base","shimCssText","cssText","is","ShadowCSS","makeScopeSelector","STYLE_SCOPE
_ATTRIBUTE","STYLE_CONTROLLER_SCOPE","installControllerStyles","findStyleScope",
"scopeHasNamedStyle","cssTextForScope","installScopeCssText","installScopeStyle"
,"cssTextToScopeStyle","applyStyleToScope","_scopeStyles","script","_currentScri
pt","getRegisteredPrototype","registerPrototype","notifyPrototype","waitingForPr
ototype","client","waitPrototype","registerWhenReady","prototypesByName","declar
ations","deliverDeclarations","resolveElementPaths","urlResolver","resolveDom","
addResolvePathApi","assetPath","URL","baseURI","resolvePath","urlPath","href","i
mportRuleForSheet","sheet","baseUrl","createStyleElement","attr","firstElementCh
ild","s$","nextElementSibling","cssTextFromSheet","__resource","matchesSelector"
,"inSelector","matches","STYLE_SELECTOR","STYLE_LOADABLE_MATCH","SHEET_SELECTOR"
,"STYLE_GLOBAL_SCOPE","SCOPE_ATTR","loadStyles","content","templateContent","con
vertSheetsToStyles","findLoadableStyles","templateUrl","styleResolver","copyShee
tAttributes","replaceChild","link","loadables","installSheets","cacheSheets","ca
cheStyles","installLocalSheets","installGlobalStyles","sheets","findNodes","remo
veChild","firstChild","matcher","nodes","array","templateNodes","styleForScope",
"scopeDescriptor","webkitMatchesSelector","mozMatchesSelector","mixedCaseEventTy
pes","parseHostEvents","delegates","addAttributeDelegates","hasEventPrefix","rem
oveEventPrefix","trim","prefixLength","findController","controller","prepareEven
tBinding","eventType","bindingValue","handler","inferObservers","explodeObserver
s","exploded","ni","names","split","optimizePropertyMaps","_publishNames","publi
shProperties","requireProperties","lowerCaseMap","propertyDescriptors","property
Descriptor","reflects","reflectHintForDescriptor","valueForDescriptor","createPr
opertyAccessors","createBindablePrototypeAccessor","ATTRIBUTES_ATTRIBUTE","ATTRI
BUTES_REGEX","inheritAttributesObjects","inheritObject","publishAttributes","acc
umulateInstanceAttributes","clonable","isInstanceAttribute","blackList","extends
","noscript","assetpath","cache-csstext","installBindingDelegate","ensurePrototy
peTraversal","ancestor","extendeeName","buildPrototype","publishConstructor","ex
tension","generateBasePrototype","desugarBeforeChaining","chainPrototypes","desu
garAfterChaining","inheritMetaData","chained","chainObject","extendee","shimStyl
ing","registerCallback","symbol","ctor","extnds","findBasePrototype","ensureBase
Api","memoizedBases","extended","mixinMethod","info","typeExtension","findTypeEx
tension","registerElement","inherited","queueForElement","mainQueue","importQueu
e","nextQueued","whenPolymerReady","queue","waitToReady","CustomElements","HTMLI
mports","whenImportsReady","addReadyCallback","check","shouldAdd","flushQueue","
__check","__go","useNative","readied","addToFlushQueue","shift","nextElement","c
anReady","isEmpty","upgradeDocumentTree","flushReadyCallbacks","readyCallbacks",
"importElements","elementOrFragment","importUrls","urls","url","frag","createDoc
umentFragment","rel","import","isRegistered","isCustomTag","init","loadResources
","registered","waitingForQueue","waitingForResources","_register","handleNoScri
pt","_needsResources","body","makeSyntax"],"mappings":";;;;;;;;;;AASAA,OAAOC,mBC
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
K6X,YAAY1R,YAAczE,EAAQyE,UAAW,CACxE,GAAIvF,GAAIc,EAAQC,QAAU3B,KAAK6X,YAAYlW,QACv
Cd,EAAIa,EAAQE,QAAU5B,KAAK6X,YAAYjW,OACtChB,GAAIA,EAAIC,EAAIA,EAAKb,KAAKqW,kBACz
BrW,KAAK4J,WAIXwO,SAAU,SAASlT,EAAQqT,GACzB,GAAIvS,IACFT,SAAS,EACTC,YAAY,EACZgB,Y
AAaxG,KAAK6X,YAAYrR,YAC9BL,UAAWnG,KAAK6X,YAAY1R,UAC5BvF,EAAGZ,KAAK6X,YAAYlW,QACp
Bd,EAAGb,KAAK6X,YAAYjW,QAElB2W,KACFvS,EAAEwS,SAAWD,EAEf,IAAInT,GAAIL,EAAaU,iBAAi
BP,EAAQc,EAC9ChG,MAAKV,OAAOwL,cAAc1F,IAG9BiD,GAAWY,gBAAgB,OAAQ0O,IAClCxY,OAAOC,i
BCpFV,SAAUC,GACR,GAAIgJ,GAAahJ,EAAMgJ,WACnBtD,EAAe1F,EAAM0F,aACrBuD,EAAa,GAAIjJ,
GAAMsH,WACvB8R,GACFzP,QACE,OACA,MAEFM,KAAM,SAAS5H,GACTA,EAAQgF,YAAchF,EAAQmI,cAC
hCvB,EAAWlB,IAAI1F,EAAQyE,WACrB7G,OAAQoC,EAAQpC,OAChB2G,QAASvE,EAAQuE,QACjBrF,EA
AGc,EAAQC,QACXd,EAAGa,EAAQE,WAIjB8W,UAAW,SAAStT,EAAGuT,GACrB,MAAsB,UAAlBvT,EAAEo
B,YAEyB,IAAtBmS,EAAU1S,SAEXb,EAAEyE,cAEZF,GAAI,SAASjI,GACX,GAAIkX,GAAQtQ,EAAWZ,I
AAIhG,EAAQyE,UACnC,IAAIyS,GAAS5Y,KAAK0Y,UAAUhX,EAASkX,GAAQ,CAE3C,GAAI5X,GAAI3B,E
AAM+D,cAAcvB,IAAI+W,EAAMtZ,OAAQoC,EAAQwO,cACtD,IAAIlP,EAAG,CACL,GAAIoE,GAAIL,EAA
aU,iBAAiB,OACpCF,SAAS,EACTC,YAAY,EACZ5E,EAAGc,EAAQC,QACXd,EAAGa,EAAQE,QACXmR,OAA
QrR,EAAQqR,OAChBvM,YAAa9E,EAAQ8E,YACrBL,UAAWzE,EAAQyE,UACnB0S,OAAQnX,EAAQmX,OACh
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
AS,aACTC,MAAO,cAiBT5E,EAAWvb,WACTib,WAAY,SAASH,EAAON,EAAgBO,GAU1C,QAASsB,KAEP,GA
AI+D,EAEF,MADAA,IAAY,EACLC,CAGLjU,GAAK0P,aACP9W,EAASsb,YAEX,IAAInT,GAAQf,EAAKmU,
SAASzF,EACA1O,EAAK0P,YAAc9W,EAAW6E,OAC9B2Q,EAI1B,OAHIpO,GAAK0P,aACP9W,EAASwb,cAE
JrT,EAGT,QAASsT,GAAW/C,GAElB,MADAtR,GAAKqR,SAAS3C,EAAO4C,EAAUlD,GACxBkD,EA9BT,GA
AI3C,EACF,MAAOjiB,MAAKynB,SAASzF,EAAOjR,OAAW2Q,EAEzC,IAAIxV,GAAW,GAAI0b,kBAEfL,E
AAavnB,KAAKynB,SAASzF,EAAO9V,EAAUwV,GAC5C4F,GAAY,EACZhU,EAAOtT,IA0BX,OAAO,IAAI6n
B,mBAAkB3b,EAAUqX,EAASoE,GAAY,IAG9DF,SAAU,SAASzF,EAAO9V,EAAUwV,GAElC,IAAK,GADDrN
,GAAQ8O,EAAMnjB,KAAK2hB,YAAYK,EAAO9V,GACjC1J,EAAI,EAAGA,EAAIxC,KAAKwjB,QAAQ1d,OA
AQtD,IACvC6R,EAAQrU,KAAKwjB,QAAQhhB,GAAG4iB,UAAU/Q,GAAO,EAAOqN,EAAgBM,EAC9B9V,EA
GpC,OAAOmI,IAGTsQ,SAAU,SAAS3C,EAAO4C,EAAUlD,GAElC,IADA,GAAIoG,GAAQ9nB,KAAKwjB,QA
AUxjB,KAAKwjB,QAAQ1d,OAAS,EAC1CgiB,IAAU,GACflD,EAAW5kB,KAAKwjB,QAAQsE,GAAO1C,UAA
UR,GAAU,EAAMlD,EAChBM,EAG3C,OAAIhiB,MAAK2hB,WAAWgD,SACX3kB,KAAK2hB,WAAWgD,SAAS3C
,EAAO4C,GADzC,QAeJ,IAAIV,GAAkB,IAAMxU,KAAKqY,SAASC,SAAS,IAAI1b,MAAM,EAiC7DkY,GAA
mBtd,WAEjB+gB,YAAa,SAAS5T,GACpB,GAAI6T,KACJ,KAAK,GAAI5T,KAAOD,GACd6T,EAAMznB,KAA
KojB,EAAyBvP,GAAO,KAAOD,EAAMC,GAE1D,OAAO4T,GAAMC,KAAK,OAGpBC,UAAW,SAAS/T,GAClB,G
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
D,EAAUh4B,EAAWgiB,EAAKrgB,GAC9C,GAAI+hB,GAAS,SAASvO,GACpB,MAAOnV,GAAU2B,GAAM2c,M
AAMxlB,KAAMqc,GAErC6iB,GAASr2B,GAAQ,WAEf,MADA7I,MAAKmyB,WAAavH,EACX1B,EAAIrgB,GA
AM2c,MAAMxlB,KAAMsc,aAKjC2gB,cAAe,SAASp0B,EAAM3B,EAAW6rB,GAEvC,GAAIjqB,GAAS5B,EA
AU2B,MAEvB3B,GAAU2B,GAAQ7I,KAAKw+B,YAAY11B,EAAQiqB,EAAKlqB,KAIlDguB,kBAAmB,SAASh
uB,EAAM41B,GAChC,GAAIW,IACFl4B,UAAWlH,KAAKkH,WAGdm4B,EAAgBr/B,KAAKs/B,kBAAkBb,EA
CvCY,KACFD,EAAK7B,QAAU8B,GAGjBjV,YAAYlhB,SAASL,EAAM7I,KAAKkH,WAEhClH,KAAK6+B,KAA
O19B,SAASo+B,gBAAgB12B,EAAMu2B,IAG7CE,kBAAmB,SAASz2B,GAC1B,GAAIA,GAAQA,EAAKvB,QA
AQ,KAAO,EAC9B,MAAOuB,EAEP,IAAI7C,GAAIhG,KAAK++B,kBAAkBl2B,EAC/B,OAAI7C,GAAEzF,QA
CGP,KAAKs/B,kBAAkBt5B,EAAEzF,QAAQg9B,SAD1C,SASF0B,IAIF/3B,GAAUs3B,YADR94B,OAAOwl
B,UACe,SAASpI,EAAQ0c,GAIvC,MAHI1c,IAAU0c,GAAa1c,IAAW0c,IACpC1c,EAAOoI,UAAYsU,GAE
d1c,GAGe,SAASA,EAAQ0c,GACvC,GAAI1c,GAAU0c,GAAa1c,IAAW0c,EAAW,CAC/C,GAAIjB,GAAU74
B,OAAOC,OAAO65B,EAC5B1c,GAASmG,EAAOsV,EAASzb,GAE3B,MAAOA,IAoBXoG,EAAIgD,YAAYhlB,
UAAYA,GAE3B6hB,SClPH,SAAU1pB,GAoIR,QAASogC,GAAgBl/B,GACvB,MAAOY,UAASa,SAASzB,GAA
Wm/B,EAAYC,EAGlD,QAASC,KACP,MAAOD,GAAY75B,OAAS65B,EAAY,GAAKD,EAAU,GASzD,QAASG,GA
AiBj4B,GACxBk4B,EAAMC,aAAc,EACpBC,eAAe/M,OAAQ,EACvBgN,YAAYC,iBAAiB,WAC3BJ,EAAMK,
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"
,"sourcesContent":["/**\n * @license\n * Copyright (c) 2014 The Polymer Project
Authors. All rights reserved.\n * This code may only be used under the BSD style
license found at http://polymer.github.io/LICENSE.txt\n * The complete set of a
uthors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set
of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * C
ode distributed by Google as part of the polymer project is also\n * subject to
an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */
\nwindow.PolymerGestures = {};\n","/*\n * Copyright (c) 2014 The Polymer Project
Authors. All rights reserved.\n * This code may only be used under the BSD styl
e license found at http://polymer.github.io/LICENSE.txt\n * The complete set of
authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete se
t of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n *
Code distributed by Google as part of the polymer project is also\n * subject to
an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n *
/\n\n(function(scope) {\n var target = {\n shadow: function(inEl) {\n i
f (inEl) {\n return inEl.shadowRoot || inEl.webkitShadowRoot;\n }\n
},\n canTarget: function(shadow) {\n return shadow && Boolean(shadow.
elementFromPoint);\n },\n targetingShadow: function(inEl) {\n var s =
this.shadow(inEl);\n if (this.canTarget(s)) {\n return s;\n }\
n },\n olderShadow: function(shadow) {\n var os = shadow.olderShadowR
oot;\n if (!os) {\n var se = shadow.querySelector('shadow');\n
if (se) {\n os = se.olderShadowRoot;\n }\n }\n retur
n os;\n },\n allShadows: function(element) {\n var shadows = [], s =
this.shadow(element);\n while(s) {\n shadows.push(s);\n s = t
his.olderShadow(s);\n }\n return shadows;\n },\n searchRoot: fun
ction(inRoot, x, y) {\n if (inRoot) {\n var t = inRoot.elementFromPo
int(x, y);\n var st, sr, os;\n // is element a shadow host?\n
sr = this.targetingShadow(t);\n while (sr) {\n // find the th
e element inside the shadow root\n st = sr.elementFromPoint(x, y);\n
if (!st) {\n // check for older shadows\n sr = this
.olderShadow(sr);\n } else {\n // shadowed element may conta
in a shadow root\n var ssr = this.targetingShadow(st);\n r
eturn this.searchRoot(ssr, x, y) || st;\n }\n }\n // ligh
t dom element is the target\n return t;\n }\n },\n owner: func
tion(element) {\n if (!element) {\n return document;\n }\n
var s = element;\n // walk up until you hit the shadow root or document\n
while (s.parentNode) {\n s = s.parentNode;\n }\n // the ow
ner element is expected to be a Document or ShadowRoot\n if (s.nodeType !=
Node.DOCUMENT_NODE && s.nodeType != Node.DOCUMENT_FRAGMENT_NODE) {\n s =
document;\n }\n return s;\n },\n findTarget: function(inEvent) {
\n var x = inEvent.clientX, y = inEvent.clientY;\n // if the listener
is in the shadow root, it is much faster to start there\n var s = this.owne
r(inEvent.target);\n // if x, y is not in this root, fall back to document
search\n if (!s.elementFromPoint(x, y)) {\n s = document;\n }\n
return this.searchRoot(s, x, y);\n },\n LCA: function(a, b) {\n
if (a === b) {\n return a;\n }\n if (a && !b) {\n retur
n a;\n }\n if (b && !a) {\n return b;\n }\n if (!b &&
!a) {\n return document;\n }\n // fast case, a is a direct des
cendant of b or vice versa\n if (a.contains && a.contains(b)) {\n re
turn a;\n }\n if (b.contains && b.contains(a)) {\n return b;\n
}\n var adepth = this.depth(a);\n var bdepth = this.depth(b);\n
var d = adepth - bdepth;\n if (d > 0) {\n a = this.walk(a, d);\n
} else {\n b = this.walk(b, -d);\n }\n while(a && b && a
!== b) {\n a = this.walk(a, 1);\n b = this.walk(b, 1);\n }\n
return a;\n },\n walk: function(n, u) {\n for (var i = 0; n && (
i < u); i++) {\n n = n.parentNode || n.host;\n }\n return n;\n
},\n depth: function(n) {\n var d = 0;\n while(n) {\n d++
;\n n = n.parentNode || n.host;\n }\n return d;\n },\n de
epContains: function(a, b) {\n var common = this.LCA(a, b);\n // if a
is the common ancestor, it must \"deeply\" contain b\n return common === a;
\n },\n insideNode: function(node, x, y) {\n var rect = node.getBound
ingClientRect();\n return (rect.left <= x) && (x <= rect.right) && (rect.to
p <= y) && (y <= rect.bottom);\n }\n };\n scope.targetFinding = target;\n
/**\n * Given an event, finds the \"deepest\" node that could have been the or
iginal target before ShadowDOM retargetting\n *\n * @param {Event} Event An
event object with clientX and clientY properties\n * @return {Element} The pro
bable event origninator\n */\n scope.findTarget = target.findTarget.bind(targ
et);\n /**\n * Determines if the \"container\" node deeply contains the \"con
tainee\" node, including situations where the \"containee\" is contained by one
or more ShadowDOM\n * roots.\n *\n * @param {Node} container\n * @param
{Node} containee\n * @return {Boolean}\n */\n scope.deepContains = target.d
eepContains.bind(target);\n\n /**\n * Determines if the x/y position is insid
e the given node.\n *\n * Example:\n *\n * function upHandler(event)
{\n * var innode = PolymerGestures.insideNode(event.target, event.clien
tX, event.clientY);\n * if (innode) {\n * // wait for tap?\n
* } else {\n * // tap will never happen\n * }\n *
}\n *\n * @param {Node} node\n * @param {Number} x Screen X position\n
* @param {Number} y screen Y position\n * @return {Boolean}\n */\n scope.in
sideNode = target.insideNode;\n\n})(window.PolymerGestures);\n","/*\n *\n * Copy
right (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code m
ay only be used under the BSD style license found at http://polymer.github.io/LI
CENSE.txt\n * The complete set of authors may be found at http://polymer.github.
io/AUTHORS.txt\n * The complete set of contributors may be found at http://polym
er.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the poly
mer project is also\n * subject to an additional IP rights grant found at http:/
/polymer.github.io/PATENTS.txt\n */\n\n(function() {\n function shadowSelector(
v) {\n return 'body /deep/ ' + selector(v);\n }\n function selector(v) {\n
return '[touch-action=\"' + v + '\"]';\n }\n function rule(v) {\n return
'{ -ms-touch-action: ' + v + '; touch-action: ' + v + ';}';\n }\n var attrib2
css = [\n 'none',\n 'auto',\n 'pan-x',\n 'pan-y',\n {\n rule
: 'pan-x pan-y',\n selectors: [\n 'pan-x pan-y',\n 'pan-y pan
-x'\n ]\n }\n ];\n var styles = '';\n // only install stylesheet if t
he browser has touch action support\n var head = document.head;\n var hasTouch
Action = typeof document.head.style.touchAction === 'string';\n // only add sha
dow selectors if shadowdom is supported\n var hasShadowRoot = !window.ShadowDOM
Polyfill && document.head.createShadowRoot;\n\n if (hasTouchAction) {\n attr
ib2css.forEach(function(r) {\n if (String(r) === r) {\n styles += se
lector(r) + rule(r) + '\\n';\n if (hasShadowRoot) {\n styles +=
shadowSelector(r) + rule(r) + '\\n';\n }\n } else {\n styles
+= r.selectors.map(selector) + rule(r.rule) + '\\n';\n if (hasShadowRoot)
{\n styles += r.selectors.map(shadowSelector) + rule(r.rule) + '\\n';\
n }\n }\n });\n\n var el = document.createElement('style');\n
el.textContent = styles;\n document.head.appendChild(el);\n }\n})();\n","
/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n *
This code may only be used under the BSD style license found at http://polymer.g
ithub.io/LICENSE.txt\n * The complete set of authors may be found at http://poly
mer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at h
ttp://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part
of the polymer project is also\n * subject to an additional IP rights grant foun
d at http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * This is the constructo
r for new PointerEvents.\n *\n * New Pointer Events must be given a type, and an
optional dictionary of\n * initialization properties.\n *\n * Due to certain pl
atform requirements, events returned from the constructor\n * identify as MouseE
vents.\n *\n * @constructor\n * @param {String} inType The type of the event to
create.\n * @param {Object} [inDict] An optional dictionary of initial event pro
perties.\n * @return {Event} A new PointerEvent of type `inType` and initialized
with properties from `inDict`.\n */\n(function(scope) {\n\n var MOUSE_PROPS =
[\n 'bubbles',\n 'cancelable',\n 'view',\n 'detail',\n 'screenX',
\n 'screenY',\n 'clientX',\n 'clientY',\n 'ctrlKey',\n 'altKey',\
n 'shiftKey',\n 'metaKey',\n 'button',\n 'relatedTarget',\n 'page
X',\n 'pageY'\n ];\n\n var MOUSE_DEFAULTS = [\n false,\n false,\n
null,\n null,\n 0,\n 0,\n 0,\n 0,\n false,\n false,\n fa
lse,\n false,\n 0,\n null,\n 0,\n 0\n ];\n\n var NOP_FACTORY =
function(){ return function(){}; };\n\n var eventFactory = {\n // TODO(dfree
dm): this is overridden by tap recognizer, needs review\n preventTap: NOP_FAC
TORY,\n makeBaseEvent: function(inType, inDict) {\n var e = document.cre
ateEvent('Event');\n e.initEvent(inType, inDict.bubbles || false, inDict.ca
ncelable || false);\n e.preventTap = eventFactory.preventTap(e);\n ret
urn e;\n },\n makeGestureEvent: function(inType, inDict) {\n inDict =
inDict || Object.create(null);\n\n var e = this.makeBaseEvent(inType, inDi
ct);\n for (var i = 0, keys = Object.keys(inDict), k; i < keys.length; i++)
{\n k = keys[i];\n e[k] = inDict[k];\n }\n return e;\n
},\n makePointerEvent: function(inType, inDict) {\n inDict = inDict |
| Object.create(null);\n\n var e = this.makeBaseEvent(inType, inDict);\n
// define inherited MouseEvent properties\n for(var i = 0, p; i < MOUSE_
PROPS.length; i++) {\n p = MOUSE_PROPS[i];\n e[p] = inDict[p] || M
OUSE_DEFAULTS[i];\n }\n e.buttons = inDict.buttons || 0;\n\n // S
pec requires that pointers without pressure specified use 0.5 for down\n //
state and 0 for up state.\n var pressure = 0;\n if (inDict.pressure)
{\n pressure = inDict.pressure;\n } else {\n pressure = e.but
tons ? 0.5 : 0;\n }\n\n // add x/y properties aliased to clientX/Y\n
e.x = e.clientX;\n e.y = e.clientY;\n\n // define the properties o
f the PointerEvent interface\n e.pointerId = inDict.pointerId || 0;\n
e.width = inDict.width || 0;\n e.height = inDict.height || 0;\n e.pres
sure = pressure;\n e.tiltX = inDict.tiltX || 0;\n e.tiltY = inDict.til
tY || 0;\n e.pointerType = inDict.pointerType || '';\n e.hwTimestamp =
inDict.hwTimestamp || 0;\n e.isPrimary = inDict.isPrimary || false;\n
return e;\n }\n };\n\n scope.eventFactory = eventFactory;\n})(window.Polym
erGestures);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All righ
ts reserved.\n * This code may only be used under the BSD style license found at
http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be fou
nd at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors
may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed b
y Google as part of the polymer project is also\n * subject to an additional IP
rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * This
module implements an map of pointer states\n */\n(function(scope) {\n var USE_M
AP = window.Map && window.Map.prototype.forEach;\n var POINTERS_FN = function()
{ return this.size; };\n function PointerMap() {\n if (USE_MAP) {\n var
m = new Map();\n m.pointers = POINTERS_FN;\n return m;\n } else {\
n this.keys = [];\n this.values = [];\n }\n }\n\n PointerMap.prot
otype = {\n set: function(inId, inEvent) {\n var i = this.keys.indexOf(i
nId);\n if (i > -1) {\n this.values[i] = inEvent;\n } else {\n
this.keys.push(inId);\n this.values.push(inEvent);\n }\n }
,\n has: function(inId) {\n return this.keys.indexOf(inId) > -1;\n },
\n 'delete': function(inId) {\n var i = this.keys.indexOf(inId);\n
if (i > -1) {\n this.keys.splice(i, 1);\n this.values.splice(i, 1)
;\n }\n },\n get: function(inId) {\n var i = this.keys.indexOf(i
nId);\n return this.values[i];\n },\n clear: function() {\n this
.keys.length = 0;\n this.values.length = 0;\n },\n // return value, k
ey, map\n forEach: function(callback, thisArg) {\n this.values.forEach(f
unction(v, i) {\n callback.call(thisArg, v, this.keys[i], this);\n }
, this);\n },\n pointers: function() {\n return this.keys.length;\n
}\n };\n\n scope.PointerMap = PointerMap;\n})(window.PolymerGestures);\n","/
*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * T
his code may only be used under the BSD style license found at http://polymer.gi
thub.io/LICENSE.txt\n * The complete set of authors may be found at http://polym
er.github.io/AUTHORS.txt\n * The complete set of contributors may be found at ht
tp://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part o
f the polymer project is also\n * subject to an additional IP rights grant found
at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n var CLONE
_PROPS = [\n // MouseEvent\n 'bubbles',\n 'cancelable',\n 'view',\n
'detail',\n 'screenX',\n 'screenY',\n 'clientX',\n 'clientY',\n
'ctrlKey',\n 'altKey',\n 'shiftKey',\n 'metaKey',\n 'button',\n
'relatedTarget',\n // DOM Level 3\n 'buttons',\n // PointerEvent\n
'pointerId',\n 'width',\n 'height',\n 'pressure',\n 'tiltX',\n 't
iltY',\n 'pointerType',\n 'hwTimestamp',\n 'isPrimary',\n // event i
nstance\n 'type',\n 'target',\n 'currentTarget',\n 'which',\n 'pa
geX',\n 'pageY',\n 'timeStamp',\n // gesture addons\n 'preventTap',\
n 'tapPrevented'\n ];\n\n var CLONE_DEFAULTS = [\n // MouseEvent\n fa
lse,\n false,\n null,\n null,\n 0,\n 0,\n 0,\n 0,\n fals
e,\n false,\n false,\n false,\n 0,\n null,\n // DOM Level 3\n
0,\n // PointerEvent\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n
'',\n 0,\n false,\n // event instance\n '',\n null,\n null,\n
0,\n 0,\n 0,\n 0,\n function(){},\n false\n ];\n\n var HAS_S
VG_INSTANCE = (typeof SVGElementInstance !== 'undefined');\n\n var wrap = windo
w.ShadowDOMPolyfill && ShadowDOMPolyfill.wrapIfNeeded || function(e){ return e;
};\n\n var eventFactory = scope.eventFactory;\n /**\n * This module is for n
ormalizing events. Mouse and Touch events will be\n * collected here, and fire
PointerEvents that have the same semantics, no\n * matter the source.\n * E
vents fired:\n * - pointerdown: a pointing is added\n * - pointerup: a p
ointer is removed\n * - pointermove: a pointer is moved\n * - pointerove
r: a pointer crosses into an element\n * - pointerout: a pointer leaves an e
lement\n * - pointercancel: a pointer will no longer generate events\n */\
n var dispatcher = {\n pointermap: new scope.PointerMap(),\n eventMap: Ob
ject.create(null),\n // Scope objects for native events.\n // This exists
for ease of testing.\n eventSources: Object.create(null),\n eventSourceLis
t: [],\n gestures: [],\n gestureQueue: [],\n /**\n * Add a new even
t source that will generate pointer events.\n *\n * `inSource` must cont
ain an array of event names named `events`, and\n * functions with the names
specified in the `events` array.\n * @param {string} name A name for the ev
ent source\n * @param {Object} source A new source of platform events.\n
*/\n registerSource: function(name, source) {\n var s = source;\n
var newEvents = s.events;\n if (newEvents) {\n newEvents.forEach(fun
ction(e) {\n if (s[e]) {\n this.eventMap[e] = s[e].bind(s);\
n }\n }, this);\n this.eventSources[name] = s;\n t
his.eventSourceList.push(s);\n }\n },\n registerGesture: function(nam
e, source) {\n this.gestures.push(source);\n },\n register: function(
element) {\n // NOTE: Work around for #4, don't add listeners to individual
Polymer elmenets in SD Polyfill\n if (window.ShadowDOMPolyfill && element
!== document) {\n return;\n }\n var l = this.eventSourceList.le
ngth;\n for (var i = 0, es; (i < l) && (es = this.eventSourceList[i]); i++)
{\n // call eventsource register\n es.register.call(es, element);
\n }\n },\n unregister: function(element) {\n var l = this.event
SourceList.length;\n for (var i = 0, es; (i < l) && (es = this.eventSourceL
ist[i]); i++) {\n // call eventsource register\n es.unregister.cal
l(es, element);\n }\n },\n // EVENTS\n down: function(inEvent) {\n
this.fireEvent('down', inEvent);\n },\n move: function(inEvent) {\n
// pipe move events into gesture queue directly\n inEvent.type = 'move
';\n this.fillGestureQueue(inEvent);\n },\n up: function(inEvent) {\n
this.fireEvent('up', inEvent);\n },\n cancel: function(inEvent) {\n
inEvent.tapPrevented = true;\n this.fireEvent('up', inEvent);\n },\
n // LISTENER LOGIC\n eventHandler: function(inEvent) {\n // This is
used to prevent multiple dispatch of events from\n // platform events. This
can happen when two elements in different scopes\n // are set up to create
pointer events, which is relevant to Shadow DOM.\n if (inEvent._handledByP
G) {\n return;\n }\n var type = inEvent.type;\n var fn = t
his.eventMap && this.eventMap[type];\n if (fn) {\n fn(inEvent);\n
}\n inEvent._handledByPG = true;\n },\n // set up event listeners\
n listen: function(target, events) {\n events.forEach(function(e) {\n
this.addEvent(target, e);\n }, this);\n },\n // remove event lis
teners\n unlisten: function(target, events) {\n events.forEach(function(
e) {\n this.removeEvent(target, e);\n }, this);\n },\n addEven
t: function(target, eventName) {\n // NOTE: Work around for #4, use native
event listener in SD Polyfill\n if (window.ShadowDOMPolyfill) {\n ta
rget.addEventListener_(eventName, this.boundHandler);\n } else {\n t
arget.addEventListener(eventName, this.boundHandler);\n }\n },\n remo
veEvent: function(target, eventName) {\n // NOTE: Work around for #4, use n
ative event listener in SD Polyfill\n if (window.ShadowDOMPolyfill) {\n
target.removeEventListener_(eventName, this.boundHandler);\n } else {\n
target.removeEventListener(eventName, this.boundHandler);\n }\n
},\n // EVENT CREATION AND TRACKING\n /**\n * Creates a new Event of t
ype `inType`, based on the information in\n * `inEvent`.\n *\n * @pa
ram {string} inType A string representing the type of event to create\n * @p
aram {Event} inEvent A platform event with a target\n * @return {Event} A Po
interEvent of type `inType`\n */\n makeEvent: function(inType, inEvent) {
\n var e = eventFactory.makePointerEvent(inType, inEvent);\n e.prevent
Default = inEvent.preventDefault;\n e.tapPrevented = inEvent.tapPrevented;\
n e._target = e._target || inEvent.target;\n return e;\n },\n //
make and dispatch an event in one call\n fireEvent: function(inType, inEvent
) {\n var e = this.makeEvent(inType, inEvent);\n return this.dispatchE
vent(e);\n },\n /**\n * Returns a snapshot of inEvent, with writable p
roperties.\n *\n * @param {Event} inEvent An event that contains propert
ies to copy.\n * @return {Object} An object containing shallow copies of `in
Event`'s\n * properties.\n */\n cloneEvent: function(inEvent) {\n
var eventCopy = Object.create(null), p;\n for (var i = 0; i < CLONE_PR
OPS.length; i++) {\n p = CLONE_PROPS[i];\n eventCopy[p] = inEvent[
p] || CLONE_DEFAULTS[i];\n // Work around SVGInstanceElement shadow tree\
n // Return the <use> element that is represented by the instance for Saf
ari, Chrome, IE.\n // This is the behavior implemented by Firefox.\n
if (p === 'target' || p === 'relatedTarget') {\n if (HAS_SVG_INSTANC
E && eventCopy[p] instanceof SVGElementInstance) {\n eventCopy[p] = e
ventCopy[p].correspondingUseElement;\n }\n eventCopy[p] = wrap
(eventCopy[p]);\n }\n }\n // keep the semantics of preventDefau
lt\n eventCopy.preventDefault = inEvent.preventDefault;\n return event
Copy;\n },\n /**\n * Dispatches the event to its target.\n *\n
* @param {Event} inEvent The event to be dispatched.\n * @return {Boolean}
True if an event handler returns true, false otherwise.\n */\n dispatchEv
ent: function(inEvent) {\n var t = inEvent._target;\n if (t) {\n
t.dispatchEvent(inEvent);\n // clone the event for the gesture system t
o process\n // clone after dispatch to pick up gesture prevention code\n
var clone = this.cloneEvent(inEvent);\n clone.target = t;\n
this.fillGestureQueue(clone);\n }\n },\n gestureTrigger: function()
{\n // process the gesture queue\n for (var i = 0, e; i < this.gesture
Queue.length; i++) {\n e = this.gestureQueue[i];\n for (var j = 0,
g; j < this.gestures.length; j++) {\n g = this.gestures[j];\n
if (g.events.indexOf(e.type) >= 0) {\n g[e.type].call(g, e);\n
}\n }\n }\n this.gestureQueue.length = 0;\n },\n fill
GestureQueue: function(ev) {\n // only trigger the gesture queue once\n
if (!this.gestureQueue.length) {\n requestAnimationFrame(this.boundGest
ureTrigger);\n }\n this.gestureQueue.push(ev);\n }\n };\n dispatc
her.boundHandler = dispatcher.eventHandler.bind(dispatcher);\n dispatcher.bound
GestureTrigger = dispatcher.gestureTrigger.bind(dispatcher);\n scope.dispatcher
= dispatcher;\n scope.register = dispatcher.register.bind(dispatcher);\n scop
e.unregister = dispatcher.unregister.bind(dispatcher);\n})(window.PolymerGesture
s);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserv
ed.\n * This code may only be used under the BSD style license found at http://p
olymer.github.io/LICENSE.txt\n * The complete set of authors may be found at htt
p://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be fo
und at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google
as part of the polymer project is also\n * subject to an additional IP rights gr
ant found at http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * This module us
es Mutation Observers to dynamically adjust which nodes will\n * generate Pointe
r Events.\n *\n * All nodes that wish to generate Pointer Events must have the a
ttribute\n * `touch-action` set to `none`.\n */\n(function(scope) {\n var forEa
ch = Array.prototype.forEach.call.bind(Array.prototype.forEach);\n var map = Ar
ray.prototype.map.call.bind(Array.prototype.map);\n var toArray = Array.prototy
pe.slice.call.bind(Array.prototype.slice);\n var filter = Array.prototype.filte
r.call.bind(Array.prototype.filter);\n var MO = window.MutationObserver || wind
ow.WebKitMutationObserver;\n var SELECTOR = '[touch-action]';\n var OBSERVER_I
NIT = {\n subtree: true,\n childList: true,\n attributes: true,\n at
tributeOldValue: true,\n attributeFilter: ['touch-action']\n };\n\n functio
n Installer(add, remove, changed, binder) {\n this.addCallback = add.bind(bin
der);\n this.removeCallback = remove.bind(binder);\n this.changedCallback
= changed.bind(binder);\n if (MO) {\n this.observer = new MO(this.mutati
onWatcher.bind(this));\n }\n }\n\n Installer.prototype = {\n watchSubtre
e: function(target) {\n // Only watch scopes that can target find, as these
are top-level.\n // Otherwise we can see duplicate additions and removals
that add noise.\n //\n // TODO(dfreedman): For some instances with Sha
dowDOMPolyfill, we can see\n // a removal without an insertion when a node
is redistributed among\n // shadows. Since it all ends up correct in the do
cument, watching only\n // the document will yield the correct mutations to
watch.\n if (scope.targetFinding.canTarget(target)) {\n this.observ
er.observe(target, OBSERVER_INIT);\n }\n },\n enableOnSubtree: functi
on(target) {\n this.watchSubtree(target);\n if (target === document &&
document.readyState !== 'complete') {\n this.installOnLoad();\n } e
lse {\n this.installNewSubtree(target);\n }\n },\n installNewS
ubtree: function(target) {\n forEach(this.findElements(target), this.addEle
ment, this);\n },\n findElements: function(target) {\n if (target.que
rySelectorAll) {\n return target.querySelectorAll(SELECTOR);\n }\n
return [];\n },\n removeElement: function(el) {\n this.removeCall
back(el);\n },\n addElement: function(el) {\n this.addCallback(el);\n
},\n elementChanged: function(el, oldValue) {\n this.changedCallback
(el, oldValue);\n },\n concatLists: function(accum, list) {\n return
accum.concat(toArray(list));\n },\n // register all touch-action = none no
des on document load\n installOnLoad: function() {\n document.addEventLi
stener('readystatechange', function() {\n if (document.readyState === 'co
mplete') {\n this.installNewSubtree(document);\n }\n }.bind
(this));\n },\n isElement: function(n) {\n return n.nodeType === Node
.ELEMENT_NODE;\n },\n flattenMutationTree: function(inNodes) {\n // f
ind children with touch-action\n var tree = map(inNodes, this.findElements,
this);\n // make sure the added nodes are accounted for\n tree.push(f
ilter(inNodes, this.isElement));\n // flatten the list\n return tree.r
educe(this.concatLists, []);\n },\n mutationWatcher: function(mutations) {
\n mutations.forEach(this.mutationHandler, this);\n },\n mutationHand
ler: function(m) {\n if (m.type === 'childList') {\n var added = thi
s.flattenMutationTree(m.addedNodes);\n added.forEach(this.addElement, thi
s);\n var removed = this.flattenMutationTree(m.removedNodes);\n re
moved.forEach(this.removeElement, this);\n } else if (m.type === 'attribute
s') {\n this.elementChanged(m.target, m.oldValue);\n }\n }\n };\
n\n if (!MO) {\n Installer.prototype.watchSubtree = function(){\n conso
le.warn('PolymerGestures: MutationObservers not found, touch-action will not be
dynamically detected');\n };\n }\n\n scope.Installer = Installer;\n})(windo
w.PolymerGestures);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. A
ll rights reserved.\n * This code may only be used under the BSD style license f
ound at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may
be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contri
butors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distri
buted by Google as part of the polymer project is also\n * subject to an additio
nal IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n(funct
ion (scope) {\n var dispatcher = scope.dispatcher;\n var pointermap = dispatch
er.pointermap;\n // radius around touchend that swallows mouse events\n var DE
DUP_DIST = 25;\n\n var WHICH_TO_BUTTONS = [0, 1, 4, 2];\n\n var HAS_BUTTONS =
false;\n try {\n HAS_BUTTONS = new MouseEvent('test', {buttons: 1}).buttons
=== 1;\n } catch (e) {}\n\n // handler block for native mouse events\n var mo
useEvents = {\n POINTER_ID: 1,\n POINTER_TYPE: 'mouse',\n events: [\n
'mousedown',\n 'mousemove',\n 'mouseup',\n ],\n register: fu
nction(target) {\n dispatcher.listen(target, this.events);\n },\n unr
egister: function(target) {\n dispatcher.unlisten(target, this.events);\n
},\n lastTouches: [],\n // collide with the global mouse listener\n i
sEventSimulatedFromTouch: function(inEvent) {\n var lts = this.lastTouches;
\n var x = inEvent.clientX, y = inEvent.clientY;\n for (var i = 0, l =
lts.length, t; i < l && (t = lts[i]); i++) {\n // simulated mouse events
will be swallowed near a primary touchend\n var dx = Math.abs(x - t.x),
dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DIST && dy <= DEDUP_DIST) {\n
return true;\n }\n }\n },\n prepareEvent: function(inE
vent) {\n var e = dispatcher.cloneEvent(inEvent);\n e.pointerId = this
.POINTER_ID;\n e.isPrimary = true;\n e.pointerType = this.POINTER_TYPE
;\n if (!HAS_BUTTONS) {\n e.buttons = WHICH_TO_BUTTONS[e.which] || 0
;\n }\n return e;\n },\n mousedown: function(inEvent) {\n i
f (!this.isEventSimulatedFromTouch(inEvent)) {\n var p = pointermap.has(t
his.POINTER_ID);\n // TODO(dfreedman) workaround for some elements not se
nding mouseup\n // http://crbug/149091\n if (p) {\n this.
mouseup(inEvent);\n }\n var e = this.prepareEvent(inEvent);\n
pointermap.set(this.POINTER_ID, e.target);\n dispatcher.down(e);\n
}\n },\n mousemove: function(inEvent) {\n if (!this.isEventSimulate
dFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n e.t
arget = pointermap.get(this.POINTER_ID);\n dispatcher.move(e);\n }\n
},\n mouseup: function(inEvent) {\n if (!this.isEventSimulatedFromTo
uch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n e.relatedT
arget = e.target;\n e.target = pointermap.get(this.POINTER_ID);\n
dispatcher.up(e);\n this.cleanupMouse();\n }\n },\n cleanupMou
se: function() {\n pointermap['delete'](this.POINTER_ID);\n }\n };\n\n
scope.mouseEvents = mouseEvents;\n})(window.PolymerGestures);\n","/*\n * Copyri
ght (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may
only be used under the BSD style license found at http://polymer.github.io/LICE
NSE.txt\n * The complete set of authors may be found at http://polymer.github.io
/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer
.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polyme
r project is also\n * subject to an additional IP rights grant found at http://p
olymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n var dispatcher = scop
e.dispatcher;\n var allShadows = scope.targetFinding.allShadows.bind(scope.targ
etFinding);\n var pointermap = dispatcher.pointermap;\n var touchMap = Array.p
rototype.map.call.bind(Array.prototype.map);\n // This should be long enough to
ignore compat mouse events made by touch\n var DEDUP_TIMEOUT = 2500;\n var CL
ICK_COUNT_TIMEOUT = 200;\n var ATTRIB = 'touch-action';\n var INSTALLER;\n va
r HAS_TOUCH_ACTION = typeof document.head.style.touchAction === 'string';\n\n /
/ handler block for native touch events\n var touchEvents = {\n events: [\n
'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel'\n
],\n register: function(target) {\n if (HAS_TOUCH_ACTION) {\n
dispatcher.listen(target, this.events);\n } else {\n INSTALLER.enab
leOnSubtree(target);\n }\n },\n unregister: function(target) {\n
if (HAS_TOUCH_ACTION) {\n dispatcher.unlisten(target, this.events);\n
} else {\n // TODO(dfreedman): is it worth it to disconnect the MO?\n
}\n },\n elementAdded: function(el) {\n var a = el.getAttribute(
ATTRIB);\n var st = this.touchActionToScrollType(a);\n if (st) {\n
el._scrollType = st;\n dispatcher.listen(el, this.events);\n /
/ set touch-action on shadows as well\n allShadows(el).forEach(function(s
) {\n s._scrollType = st;\n dispatcher.listen(s, this.events);
\n }, this);\n }\n },\n elementRemoved: function(el) {\n
el._scrollType = undefined;\n dispatcher.unlisten(el, this.events);\n
// remove touch-action from shadow\n allShadows(el).forEach(function(s) {\n
s._scrollType = undefined;\n dispatcher.unlisten(s, this.events);
\n }, this);\n },\n elementChanged: function(el, oldValue) {\n v
ar a = el.getAttribute(ATTRIB);\n var st = this.touchActionToScrollType(a);
\n var oldSt = this.touchActionToScrollType(oldValue);\n // simply upd
ate scrollType if listeners are already established\n if (st && oldSt) {\n
el._scrollType = st;\n allShadows(el).forEach(function(s) {\n
s._scrollType = st;\n }, this);\n } else if (oldSt) {\n
this.elementRemoved(el);\n } else if (st) {\n this.elementAdded(el);
\n }\n },\n scrollTypes: {\n EMITTER: 'none',\n XSCROLLER:
'pan-x',\n YSCROLLER: 'pan-y',\n SCROLLER: /^(?:pan-x pan-y)|(?:pan-y
pan-x)|auto$/\n },\n touchActionToScrollType: function(touchAction) {\n
var t = touchAction;\n var st = this.scrollTypes;\n if (t === 'none
') {\n return 'none';\n } else if (t === st.XSCROLLER) {\n re
turn 'X';\n } else if (t === st.YSCROLLER) {\n return 'Y';\n }
else if (st.SCROLLER.exec(t)) {\n return 'XY';\n }\n },\n POIN
TER_TYPE: 'touch',\n firstTouch: null,\n isPrimaryTouch: function(inTouch)
{\n return this.firstTouch === inTouch.identifier;\n },\n setPrimary
Touch: function(inTouch) {\n // set primary touch if there no pointers, or
the only pointer is the mouse\n if (pointermap.pointers() === 0 || (pointer
map.pointers() === 1 && pointermap.has(1))) {\n this.firstTouch = inTouch
.identifier;\n this.firstXY = {X: inTouch.clientX, Y: inTouch.clientY};\n
this.scrolling = false;\n this.cancelResetClickCount();\n }\
n },\n removePrimaryPointer: function(inPointer) {\n if (inPointer.is
Primary) {\n this.firstTouch = null;\n this.firstXY = null;\n
this.resetClickCount();\n }\n },\n clickCount: 0,\n resetId: nu
ll,\n resetClickCount: function() {\n var fn = function() {\n thi
s.clickCount = 0;\n this.resetId = null;\n }.bind(this);\n this
.resetId = setTimeout(fn, CLICK_COUNT_TIMEOUT);\n },\n cancelResetClickCou
nt: function() {\n if (this.resetId) {\n clearTimeout(this.resetId);
\n }\n },\n typeToButtons: function(type) {\n var ret = 0;\n
if (type === 'touchstart' || type === 'touchmove') {\n ret = 1;\n
}\n return ret;\n },\n findTarget: function(touch, id) {\n if (t
his.currentTouchEvent.type === 'touchstart') {\n return scope.findTarget(
touch);\n }\n // reuse target we found in touchstart\n return poi
ntermap.get(id);\n },\n touchToPointer: function(inTouch) {\n var cte
= this.currentTouchEvent;\n var e = dispatcher.cloneEvent(inTouch);\n
// Spec specifies that pointerId 1 is reserved for Mouse.\n // Touch ident
ifiers can start at 0.\n // Add 2 to the touch identifier for compatibility
.\n var id = e.pointerId = inTouch.identifier + 2;\n e.target = this.f
indTarget(inTouch, id);\n e.bubbles = true;\n e.cancelable = true;\n
e.detail = this.clickCount;\n e.buttons = this.typeToButtons(cte.type);
\n e.width = inTouch.webkitRadiusX || inTouch.radiusX || 0;\n e.height
= inTouch.webkitRadiusY || inTouch.radiusY || 0;\n e.pressure = inTouch.we
bkitForce || inTouch.force || 0.5;\n e.isPrimary = this.isPrimaryTouch(inTo
uch);\n e.pointerType = this.POINTER_TYPE;\n // forward touch preventD
efaults\n var self = this;\n e.preventDefault = function() {\n
self.scrolling = false;\n self.firstXY = null;\n cte.preventDefaul
t();\n };\n return e;\n },\n processTouches: function(inEvent, i
nFunction) {\n var tl = inEvent.changedTouches;\n this.currentTouchEve
nt = inEvent;\n for (var i = 0, t; i < tl.length; i++) {\n t = tl[i]
;\n inFunction.call(this, this.touchToPointer(t));\n }\n },\n
// For single axis scrollers, determines whether the element should emit\n //
pointer events or behave as a scroller\n shouldScroll: function(inEvent) {\n
if (this.firstXY) {\n var ret;\n var scrollAxis = inEvent.cu
rrentTarget._scrollType;\n if (scrollAxis === 'none') {\n // thi
s element is a touch-action: none, should never scroll\n ret = false;\n
} else if (scrollAxis === 'XY') {\n // this element should alwa
ys scroll\n ret = true;\n } else {\n var t = inEvent.ch
angedTouches[0];\n // check the intended scroll axis, and other axis\n
var a = scrollAxis;\n var oa = scrollAxis === 'Y' ? 'X' : 'Y';
\n var da = Math.abs(t['client' + a] - this.firstXY[a]);\n var
doa = Math.abs(t['client' + oa] - this.firstXY[oa]);\n // if delta in
the scroll axis > delta other axis, scroll instead of\n // making event
s\n ret = da >= doa;\n }\n this.firstXY = null;\n
return ret;\n }\n },\n findTouch: function(inTL, inId) {\n for (
var i = 0, l = inTL.length, t; i < l && (t = inTL[i]); i++) {\n if (t.ide
ntifier === inId) {\n return true;\n }\n }\n },\n //
In some instances, a touchstart can happen without a touchend. This\n // leav
es the pointermap in a broken state.\n // Therefore, on every touchstart, we
remove the touches that did not fire a\n // touchend event.\n // To keep s
tate globally consistent, we fire a\n // pointercancel for this \"abandoned\"
touch\n vacuumTouches: function(inEvent) {\n var tl = inEvent.touches;\
n // pointermap.pointers() should be < tl.length here, as the touchstart ha
s not\n // been processed yet.\n if (pointermap.pointers() >= tl.lengt
h) {\n var d = [];\n pointermap.forEach(function(value, key) {\n
// Never remove pointerId == 1, which is mouse.\n // Touch iden
tifiers are 2 smaller than their pointerId, which is the\n // index in
pointermap.\n if (key !== 1 && !this.findTouch(tl, key - 2)) {\n
var p = value.out;\n d.push(p);\n }\n }, this);\
n d.forEach(this.cancelOut, this);\n }\n },\n touchstart: func
tion(inEvent) {\n this.vacuumTouches(inEvent);\n this.setPrimaryTouch(
inEvent.changedTouches[0]);\n this.dedupSynthMouse(inEvent);\n if (!th
is.scrolling) {\n this.clickCount++;\n this.processTouches(inEvent
, this.down);\n }\n },\n down: function(inPointer) {\n var p = p
ointermap.set(inPointer.pointerId, inPointer.target);\n dispatcher.down(inP
ointer);\n },\n touchmove: function(inEvent) {\n if (HAS_TOUCH_ACTION
) {\n this.processTouches(inEvent, this.move);\n } else {\n i
f (!this.scrolling) {\n if (this.shouldScroll(inEvent)) {\n
this.scrolling = true;\n this.touchcancel(inEvent);\n } else
{\n inEvent.preventDefault();\n this.processTouches(inEve
nt, this.move);\n }\n }\n }\n },\n move: function(inP
ointer) {\n var pointer = pointermap.get(inPointer.pointerId);\n // a
finger drifted off the screen, ignore it\n if (!pointer) {\n return;
\n }\n dispatcher.move(inPointer);\n },\n touchend: function(inE
vent) {\n this.dedupSynthMouse(inEvent);\n this.processTouches(inEvent
, this.up);\n },\n up: function(inPointer) {\n if (!this.scrolling) {
\n inPointer.relatedTarget = scope.findTarget(inPointer);\n dispat
cher.up(inPointer);\n }\n this.cleanUpPointer(inPointer);\n },\n
cancel: function(inPointer) {\n inPointer.relatedTarget = scope.findTarget
(inPointer);\n dispatcher.cancel(inPointer);\n this.cleanUpPointer(inP
ointer);\n },\n touchcancel: function(inEvent) {\n this.processTouche
s(inEvent, this.cancel);\n },\n cleanUpPointer: function(inPointer) {\n
pointermap['delete'](inPointer.pointerId);\n this.removePrimaryPointer(i
nPointer);\n },\n // prevent synth mouse events from creating pointer even
ts\n dedupSynthMouse: function(inEvent) {\n var lts = scope.mouseEvents.
lastTouches;\n var t = inEvent.changedTouches[0];\n // only the primar
y finger will synth mouse events\n if (this.isPrimaryTouch(t)) {\n /
/ remember x/y of last touch\n var lt = {x: t.clientX, y: t.clientY};\n
lts.push(lt);\n var fn = (function(lts, lt){\n var i = lts
.indexOf(lt);\n if (i > -1) {\n lts.splice(i, 1);\n
}\n }).bind(null, lts, lt);\n setTimeout(fn, DEDUP_TIMEOUT);\n
}\n }\n };\n\n if (!HAS_TOUCH_ACTION) {\n INSTALLER = new scope.Insta
ller(touchEvents.elementAdded, touchEvents.elementRemoved, touchEvents.elementCh
anged, touchEvents);\n }\n\n scope.touchEvents = touchEvents;\n})(window.Polym
erGestures);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All righ
ts reserved.\n * This code may only be used under the BSD style license found at
http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be fou
nd at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors
may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed b
y Google as part of the polymer project is also\n * subject to an additional IP
rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(sco
pe) {\n var dispatcher = scope.dispatcher;\n var pointermap = dispatcher.point
ermap;\n var HAS_BITMAP_TYPE = window.MSPointerEvent && typeof window.MSPointer
Event.MSPOINTER_TYPE_MOUSE === 'number';\n var msEvents = {\n events: [\n
'MSPointerDown',\n 'MSPointerMove',\n 'MSPointerUp',\n 'MSPoin
terCancel',\n ],\n register: function(target) {\n dispatcher.listen(t
arget, this.events);\n },\n unregister: function(target) {\n dispatch
er.unlisten(target, this.events);\n },\n POINTER_TYPES: [\n '',\n
'unavailable',\n 'touch',\n 'pen',\n 'mouse'\n ],\n prepa
reEvent: function(inEvent) {\n var e = inEvent;\n if (HAS_BITMAP_TYPE)
{\n e = dispatcher.cloneEvent(inEvent);\n e.pointerType = this.PO
INTER_TYPES[inEvent.pointerType];\n }\n return e;\n },\n cleanup
: function(id) {\n pointermap['delete'](id);\n },\n MSPointerDown: fu
nction(inEvent) {\n var e = this.prepareEvent(inEvent);\n pointermap.s
et(inEvent.pointerId, e.target);\n dispatcher.down(e);\n },\n MSPoint
erMove: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n e.
target = pointermap.get(e.pointerId);\n dispatcher.move(e);\n },\n MS
PointerUp: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n
e.relatedTarget = e.target;\n e.target = pointermap.get(e.pointerId);\n
dispatcher.up(e);\n this.cleanup(inEvent.pointerId);\n },\n MSPoin
terCancel: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n
e.relatedTarget = e.target;\n e.target = pointermap.get(e.pointerId);\n
dispatcher.cancel(e);\n this.cleanup(inEvent.pointerId);\n }\n };\n\
n scope.msEvents = msEvents;\n})(window.PolymerGestures);\n","/*\n * Copyright
(c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may onl
y be used under the BSD style license found at http://polymer.github.io/LICENSE.
txt\n * The complete set of authors may be found at http://polymer.github.io/AUT
HORS.txt\n * The complete set of contributors may be found at http://polymer.git
hub.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer pr
oject is also\n * subject to an additional IP rights grant found at http://polym
er.github.io/PATENTS.txt\n */\n\n(function(scope) {\n var dispatcher = scope.di
spatcher;\n var pointermap = dispatcher.pointermap;\n var pointerEvents = {\n
events: [\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n
'pointercancel'\n ],\n prepareEvent: function(inEvent) {\n return
dispatcher.cloneEvent(inEvent);\n },\n register: function(target) {\n
dispatcher.listen(target, this.events);\n },\n unregister: function(targ
et) {\n dispatcher.unlisten(target, this.events);\n },\n cleanup: fun
ction(id) {\n pointermap['delete'](id);\n },\n pointerdown: function(
inEvent) {\n var e = this.prepareEvent(inEvent);\n pointermap.set(e.po
interId, e.target);\n dispatcher.down(e);\n },\n pointermove: functio
n(inEvent) {\n var e = this.prepareEvent(inEvent);\n e.target = pointe
rmap.get(e.pointerId);\n dispatcher.move(e);\n },\n pointerup: functi
on(inEvent) {\n var e = this.prepareEvent(inEvent);\n e.relatedTarget
= e.target;\n e.target = pointermap.get(e.pointerId);\n dispatcher.up(
e);\n this.cleanup(inEvent.pointerId);\n },\n pointercancel: function
(inEvent) {\n var e = this.prepareEvent(inEvent);\n e.relatedTarget =
e.target;\n e.target = pointermap.get(e.pointerId);\n dispatcher.cance
l(e);\n this.cleanup(inEvent.pointerId);\n }\n };\n\n scope.pointerEve
nts = pointerEvents;\n})(window.PolymerGestures);\n","/*\n * Copyright (c) 2014
The Polymer Project Authors. All rights reserved.\n * This code may only be used
under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * T
he complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\
n * The complete set of contributors may be found at http://polymer.github.io/CO
NTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is
also\n * subject to an additional IP rights grant found at http://polymer.github
.io/PATENTS.txt\n */\n\n/**\n * This module contains the handlers for native pla
tform events.\n * From here, the dispatcher is called to create unified pointer
events.\n * Included are touch events (v1), mouse events, and MSPointerEvents.\n
*/\n(function(scope) {\n var dispatcher = scope.dispatcher;\n\n if (window.Po
interEvent) {\n dispatcher.registerSource('pointer', scope.pointerEvents);\n
} else if (window.navigator.msPointerEnabled) {\n dispatcher.registerSource(
'ms', scope.msEvents);\n } else {\n dispatcher.registerSource('mouse', scope
.mouseEvents);\n if (window.ontouchstart !== undefined) {\n dispatcher.r
egisterSource('touch', scope.touchEvents);\n }\n }\n\n dispatcher.register(
document);\n})(window.PolymerGestures);\n","/*\n * Copyright (c) 2014 The Polyme
r Project Authors. All rights reserved.\n * This code may only be used under the
BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complet
e set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The co
mplete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS
.txt\n * Code distributed by Google as part of the polymer project is also\n * s
ubject to an additional IP rights grant found at http://polymer.github.io/PATENT
S.txt\n */\n\n/**\n * This event denotes the beginning of a series of tracking e
vents.\n *\n * @module PointerGestures\n * @submodule Events\n * @class tracksta
rt\n */\n/**\n * Pixels moved in the x direction since trackstart.\n * @type Num
ber\n * @property dx\n */\n/**\n * Pixes moved in the y direction since tracksta
rt.\n * @type Number\n * @property dy\n */\n/**\n * Pixels moved in the x direct
ion since the last track.\n * @type Number\n * @property ddx\n */\n/**\n * Pixle
s moved in the y direction since the last track.\n * @type Number\n * @property
ddy\n */\n/**\n * The clientX position of the track gesture.\n * @type Number\n
* @property clientX\n */\n/**\n * The clientY position of the track gesture.\n *
@type Number\n * @property clientY\n */\n/**\n * The pageX position of the trac
k gesture.\n * @type Number\n * @property pageX\n */\n/**\n * The pageY position
of the track gesture.\n * @type Number\n * @property pageY\n */\n/**\n * The sc
reenX position of the track gesture.\n * @type Number\n * @property screenX\n */
\n/**\n * The screenY position of the track gesture.\n * @type Number\n * @prope
rty screenY\n */\n/**\n * The last x axis direction of the pointer.\n * @type Nu
mber\n * @property xDirection\n */\n/**\n * The last y axis direction of the poi
nter.\n * @type Number\n * @property yDirection\n */\n/**\n * A shared object be
tween all tracking events.\n * @type Object\n * @property trackInfo\n */\n/**\n
* The element currently under the pointer.\n * @type Element\n * @property relat
edTarget\n */\n/**\n * The type of pointer that make the track gesture.\n * @typ
e String\n * @property pointerType\n */\n/**\n *\n * This event fires for all po
inter movement being tracked.\n *\n * @class track\n * @extends trackstart\n */\
n/**\n * This event fires when the pointer is no longer being tracked.\n *\n * @
class trackend\n * @extends trackstart\n */\n\n (function(scope) {\n var dispa
tcher = scope.dispatcher;\n var eventFactory = scope.eventFactory;\n var poi
ntermap = new scope.PointerMap();\n var track = {\n events: [\n 'dow
n',\n 'move',\n 'up',\n ],\n WIGGLE_THRESHOLD: 4,\n clam
pDir: function(inDelta) {\n return inDelta > 0 ? 1 : -1;\n },\n ca
lcPositionDelta: function(inA, inB) {\n var x = 0, y = 0;\n if (inA
&& inB) {\n x = inB.pageX - inA.pageX;\n y = inB.pageY - inA.pag
eY;\n }\n return {x: x, y: y};\n },\n fireTrack: function(in
Type, inEvent, inTrackingData) {\n var t = inTrackingData;\n var d =
this.calcPositionDelta(t.downEvent, inEvent);\n var dd = this.calcPositio
nDelta(t.lastMoveEvent, inEvent);\n if (dd.x) {\n t.xDirection = t
his.clampDir(dd.x);\n }\n if (dd.y) {\n t.yDirection = this.
clampDir(dd.y);\n }\n var e = eventFactory.makeGestureEvent(inType,
{\n bubbles: true,\n cancelable: true,\n dx: d.x,\n
dy: d.y,\n ddx: dd.x,\n ddy: dd.y,\n x: inEvent.x,\n
y: inEvent.y,\n clientX: inEvent.clientX,\n clientY: in
Event.clientY,\n pageX: inEvent.pageX,\n pageY: inEvent.pageY,\n
screenX: inEvent.screenX,\n screenY: inEvent.screenY,\n
xDirection: t.xDirection,\n yDirection: t.yDirection,\n trackIn
fo: t.trackInfo,\n relatedTarget: inEvent.relatedTarget,\n point
erType: inEvent.pointerType,\n pointerId: inEvent.pointerId\n });\
n t.downTarget.dispatchEvent(e);\n },\n down: function(inEvent) {\
n if (inEvent.isPrimary && (inEvent.pointerType === 'mouse' ? inEvent.butt
ons === 1 : true)) {\n var p = {\n downEvent: inEvent,\n
downTarget: inEvent.target,\n trackInfo: {},\n lastMove
Event: null,\n xDirection: 0,\n yDirection: 0,\n t
racking: false\n };\n pointermap.set(inEvent.pointerId, p);\n
}\n },\n move: function(inEvent) {\n var p = pointermap.get(in
Event.pointerId);\n if (p) {\n if (!p.tracking) {\n var
d = this.calcPositionDelta(p.downEvent, inEvent);\n var move = d.x * d
.x + d.y * d.y;\n // start tracking only if finger moves more than WIG
GLE_THRESHOLD\n if (move > this.WIGGLE_THRESHOLD) {\n p.tr
acking = true;\n this.fireTrack('trackstart', p.downEvent, p);\n
this.fireTrack('track', inEvent, p);\n }\n } else {\n
this.fireTrack('track', inEvent, p);\n }\n p.lastMove
Event = inEvent;\n }\n },\n up: function(inEvent) {\n var p
= pointermap.get(inEvent.pointerId);\n if (p) {\n if (p.tracking)
{\n this.fireTrack('trackend', inEvent, p);\n }\n poin
termap.delete(inEvent.pointerId);\n }\n }\n };\n dispatcher.regist
erGesture('track', track);\n })(window.PolymerGestures);\n","/*\n * Copyright (c
) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only
be used under the BSD style license found at http://polymer.github.io/LICENSE.tx
t\n * The complete set of authors may be found at http://polymer.github.io/AUTHO
RS.txt\n * The complete set of contributors may be found at http://polymer.githu
b.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer proj
ect is also\n * subject to an additional IP rights grant found at http://polymer
.github.io/PATENTS.txt\n */\n\n/**\n * This event is fired when a pointer is hel
d down for 200ms.\n *\n * @module PointerGestures\n * @submodule Events\n * @cla
ss hold\n */\n/**\n * Type of pointer that made the holding event.\n * @type Str
ing\n * @property pointerType\n */\n/**\n * Screen X axis position of the held p
ointer\n * @type Number\n * @property clientX\n */\n/**\n * Screen Y axis positi
on of the held pointer\n * @type Number\n * @property clientY\n */\n/**\n * Type
of pointer that made the holding event.\n * @type String\n * @property pointerT
ype\n */\n/**\n * This event is fired every 200ms while a pointer is held down.\
n *\n * @class holdpulse\n * @extends hold\n */\n/**\n * Milliseconds pointer ha
s been held down.\n * @type Number\n * @property holdTime\n */\n/**\n * This eve
nt is fired when a held pointer is released or moved.\n *\n * @class released\n
*/\n\n(function(scope) {\n var dispatcher = scope.dispatcher;\n var eventFacto
ry = scope.eventFactory;\n var hold = {\n // wait at least HOLD_DELAY ms bet
ween hold and pulse events\n HOLD_DELAY: 200,\n // pointer can move WIGGLE
_THRESHOLD pixels before not counting as a hold\n WIGGLE_THRESHOLD: 16,\n
events: [\n 'down',\n 'move',\n 'up',\n ],\n heldPointer: n
ull,\n holdJob: null,\n pulse: function() {\n var hold = Date.now() -
this.heldPointer.timeStamp;\n var type = this.held ? 'holdpulse' : 'hold';
\n this.fireHold(type, hold);\n this.held = true;\n },\n cancel:
function() {\n clearInterval(this.holdJob);\n if (this.held) {\n
this.fireHold('release');\n }\n this.held = false;\n this.held
Pointer = null;\n this.target = null;\n this.holdJob = null;\n },\n
down: function(inEvent) {\n if (inEvent.isPrimary && !this.heldPointer)
{\n this.heldPointer = inEvent;\n this.target = inEvent.target;\n
this.holdJob = setInterval(this.pulse.bind(this), this.HOLD_DELAY);\n
}\n },\n up: function(inEvent) {\n if (this.heldPointer && this.he
ldPointer.pointerId === inEvent.pointerId) {\n this.cancel();\n }\n
},\n move: function(inEvent) {\n if (this.heldPointer && this.heldPoi
nter.pointerId === inEvent.pointerId) {\n var x = inEvent.clientX - this.
heldPointer.clientX;\n var y = inEvent.clientY - this.heldPointer.clientY
;\n if ((x * x + y * y) > this.WIGGLE_THRESHOLD) {\n this.cancel
();\n }\n }\n },\n fireHold: function(inType, inHoldTime) {\n
var p = {\n bubbles: true,\n cancelable: true,\n point
erType: this.heldPointer.pointerType,\n pointerId: this.heldPointer.point
erId,\n x: this.heldPointer.clientX,\n y: this.heldPointer.clientY
\n };\n if (inHoldTime) {\n p.holdTime = inHoldTime;\n }\n
var e = eventFactory.makeGestureEvent(inType, p);\n this.target.dispa
tchEvent(e);\n }\n };\n dispatcher.registerGesture('hold', hold);\n})(windo
w.PolymerGestures);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. A
ll rights reserved.\n * This code may only be used under the BSD style license f
ound at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may
be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contri
butors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distri
buted by Google as part of the polymer project is also\n * subject to an additio
nal IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n/**\n
* This event is fired when a pointer quickly goes down and up, and is used to\n
* denote activation.\n *\n * Any gesture event can prevent the tap event from be
ing created by calling\n * `event.preventTap`.\n *\n * Any pointer event can pre
vent the tap by setting the `tapPrevented` property\n * on itself.\n *\n * @modu
le PointerGestures\n * @submodule Events\n * @class tap\n */\n/**\n * X axis pos
ition of the tap.\n * @property x\n * @type Number\n */\n/**\n * Y axis position
of the tap.\n * @property y\n * @type Number\n */\n/**\n * Type of the pointer
that made the tap.\n * @property pointerType\n * @type String\n */\n(function(sc
ope) {\n var dispatcher = scope.dispatcher;\n var eventFactory = scope.eventFa
ctory;\n var pointermap = new scope.PointerMap();\n var tap = {\n events: [
\n 'down',\n 'up'\n ],\n down: function(inEvent) {\n if (in
Event.isPrimary && !inEvent.tapPrevented) {\n pointermap.set(inEvent.poin
terId, {\n target: inEvent.target,\n buttons: inEvent.buttons,
\n x: inEvent.clientX,\n y: inEvent.clientY\n });\n
}\n },\n shouldTap: function(e, downState) {\n if (e.pointerType ==
= 'mouse') {\n // only allow left click to tap for mouse\n return
downState.buttons === 1;\n }\n return !e.tapPrevented;\n },\n up
: function(inEvent) {\n var start = pointermap.get(inEvent.pointerId);\n
if (start && this.shouldTap(inEvent, start)) {\n // up.relatedTarget i
s target currently under finger\n var t = scope.targetFinding.LCA(start.t
arget, inEvent.relatedTarget);\n if (t) {\n var e = eventFactory
.makeGestureEvent('tap', {\n bubbles: true,\n cancelable:
true,\n x: inEvent.clientX,\n y: inEvent.clientY,\n
detail: inEvent.detail,\n pointerType: inEvent.pointerType,\n
pointerId: inEvent.pointerId,\n altKey: inEvent.altKey,\n
ctrlKey: inEvent.ctrlKey,\n metaKey: inEvent.metaKey,\n
shiftKey: inEvent.shiftKey\n });\n t.dispatchEvent(e);\
n }\n }\n pointermap.delete(inEvent.pointerId);\n }\n };\n
// patch eventFactory to remove id from tap's pointermap for preventTap calls\n
eventFactory.preventTap = function(e) {\n return function() {\n e.tapP
revented = true;\n pointermap.delete(e.pointerId);\n };\n };\n dispatc
her.registerGesture('tap', tap);\n})(window.PolymerGestures);\n","/*\n Copyrigh
t (C) 2013 Ariya Hidayat <ariya.hidayat@gmail.com>\n Copyright (C) 2013 Thaddee
Tyl <thaddee.tyl@gmail.com>\n Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@
gmail.com>\n Copyright (C) 2012 Mathias Bynens <mathias@qiwi.be>\n Copyright (
C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>\n Copyright (C) 2012 K
ris Kowal <kris.kowal@cixar.com>\n Copyright (C) 2012 Yusuke Suzuki <utatane.te
a@gmail.com>\n Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>\n
Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>\n\n Redistribution
and use in source and binary forms, with or without\n modification, are permitt
ed provided that the following conditions are met:\n\n * Redistributions of s
ource code must retain the above copyright\n notice, this list of condition
s and the following disclaimer.\n * Redistributions in binary form must repro
duce the above copyright\n notice, this list of conditions and the followin
g disclaimer in the\n documentation and/or other materials provided with th
e distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONT
RIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTI
CULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE
FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DA
MAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERV
ICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TO
RT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n(func
tion (global) {\n 'use strict';\n\n var Token,\n TokenName,\n
Syntax,\n Messages,\n source,\n index,\n length,\n
delegate,\n lookahead,\n state;\n\n Token = {\n
BooleanLiteral: 1,\n EOF: 2,\n Identifier: 3,\n Keyword: 4,
\n NullLiteral: 5,\n NumericLiteral: 6,\n Punctuator: 7,\n
StringLiteral: 8\n };\n\n TokenName = {};\n TokenName[Token.Bool
eanLiteral] = 'Boolean';\n TokenName[Token.EOF] = '<end>';\n TokenName[Tok
en.Identifier] = 'Identifier';\n TokenName[Token.Keyword] = 'Keyword';\n T
okenName[Token.NullLiteral] = 'Null';\n TokenName[Token.NumericLiteral] = 'Nu
meric';\n TokenName[Token.Punctuator] = 'Punctuator';\n TokenName[Token.St
ringLiteral] = 'String';\n\n Syntax = {\n ArrayExpression: 'ArrayExpre
ssion',\n BinaryExpression: 'BinaryExpression',\n CallExpression:
'CallExpression',\n ConditionalExpression: 'ConditionalExpression',\n
EmptyStatement: 'EmptyStatement',\n ExpressionStatement: 'ExpressionS
tatement',\n Identifier: 'Identifier',\n Literal: 'Literal',\n
LabeledStatement: 'LabeledStatement',\n LogicalExpression: 'LogicalEx
pression',\n MemberExpression: 'MemberExpression',\n ObjectExpress
ion: 'ObjectExpression',\n Program: 'Program',\n Property: 'Proper
ty',\n ThisExpression: 'ThisExpression',\n UnaryExpression: 'Unary
Expression'\n };\n\n // Error messages should be identical to V8.\n Mes
sages = {\n UnexpectedToken: 'Unexpected token %0',\n UnknownLabe
l: 'Undefined label \\'%0\\'',\n Redeclaration: '%0 \\'%1\\' has already
been declared'\n };\n\n // Ensure the condition is true, otherwise throw a
n error.\n // This is only to have a better contract semantic, i.e. another s
afety net\n // to catch a logic error. The condition shall be fulfilled in no
rmal case.\n // Do NOT use this to enforce a certain condition on any user in
put.\n\n function assert(condition, message) {\n if (!condition) {\n
throw new Error('ASSERT: ' + message);\n }\n }\n\n functi
on isDecimalDigit(ch) {\n return (ch >= 48 && ch <= 57); // 0..9\n }
\n\n\n // 7.2 White Space\n\n function isWhiteSpace(ch) {\n return
(ch === 32) || // space\n (ch === 9) || // tab\n (ch
=== 0xB) ||\n (ch === 0xC) ||\n (ch === 0xA0) ||\n
(ch >= 0x1680 && '\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\
\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\uFEFF'.indexOf(String.f
romCharCode(ch)) > 0);\n }\n\n // 7.3 Line Terminators\n\n function isL
ineTerminator(ch) {\n return (ch === 10) || (ch === 13) || (ch === 0x2028
) || (ch === 0x2029);\n }\n\n // 7.6 Identifier Names and Identifiers\n\n
function isIdentifierStart(ch) {\n return (ch === 36) || (ch === 95) |
| // $ (dollar) and _ (underscore)\n (ch >= 65 && ch <= 90) ||
// A..Z\n (ch >= 97 && ch <= 122); // a..z\n }\n\n
function isIdentifierPart(ch) {\n return (ch === 36) || (ch === 95) || /
/ $ (dollar) and _ (underscore)\n (ch >= 65 && ch <= 90) || /
/ A..Z\n (ch >= 97 && ch <= 122) || // a..z\n (ch >
= 48 && ch <= 57); // 0..9\n }\n\n // 7.6.1.1 Keywords\n\n fu
nction isKeyword(id) {\n return (id === 'this')\n }\n\n // 7.4 Comm
ents\n\n function skipWhitespace() {\n while (index < length && isWhit
eSpace(source.charCodeAt(index))) {\n ++index;\n }\n }\n\n
function getIdentifier() {\n var start, ch;\n\n start = index++;
\n while (index < length) {\n ch = source.charCodeAt(index);\n
if (isIdentifierPart(ch)) {\n ++index;\n }
else {\n break;\n }\n }\n\n return sour
ce.slice(start, index);\n }\n\n function scanIdentifier() {\n var s
tart, id, type;\n\n start = index;\n\n id = getIdentifier();\n\n
// There is no keyword or literal with only one character.\n // Thu
s, it must be an identifier.\n if (id.length === 1) {\n type =
Token.Identifier;\n } else if (isKeyword(id)) {\n type = Toke
n.Keyword;\n } else if (id === 'null') {\n type = Token.NullLi
teral;\n } else if (id === 'true' || id === 'false') {\n type
= Token.BooleanLiteral;\n } else {\n type = Token.Identifier;\
n }\n\n return {\n type: type,\n value: id,\
n range: [start, index]\n };\n }\n\n\n // 7.7 Punctuator
s\n\n function scanPunctuator() {\n var start = index,\n co
de = source.charCodeAt(index),\n code2,\n ch1 = source[ind
ex],\n ch2;\n\n switch (code) {\n\n // Check for most c
ommon single-character punctuators.\n case 46: // . dot\n case 4
0: // ( open bracket\n case 41: // ) close bracket\n case 59:
// ; semicolon\n case 44: // , comma\n case 123: // { open cu
rly brace\n case 125: // } close curly brace\n case 91: // [\n
case 93: // ]\n case 58: // :\n case 63: // ?\n
++index;\n return {\n type: Token.Punctuator,\n
value: String.fromCharCode(code),\n range: [start,
index]\n };\n\n default:\n code2 = source.charCode
At(index + 1);\n\n // '=' (char #61) marks an assignment or compariso
n operator.\n if (code2 === 61) {\n switch (code) {\n
case 37: // %\n case 38: // &\n c
ase 42: // *:\n case 43: // +\n case 45: // -\n
case 47: // /\n case 60: // <\n
case 62: // >\n case 124: // |\n index += 2;\
n return {\n type: Token.Punctuator,\n
value: String.fromCharCode(code) + String.fromCharCode(c
ode2),\n range: [start, index]\n };\n\
n case 33: // !\n case 61: // =\n
index += 2;\n\n // !== and ===\n if (so
urce.charCodeAt(index) === 61) {\n ++index;\n
}\n return {\n type: Token.Pun
ctuator,\n value: source.slice(start, index),\n
range: [start, index]\n };\n def
ault:\n break;\n }\n }\n
break;\n }\n\n // Peek more characters.\n\n ch2 = source[i
ndex + 1];\n\n // Other 2-character punctuators: && ||\n\n if (ch1
=== ch2 && ('&|'.indexOf(ch1) >= 0)) {\n index += 2;\n re
turn {\n type: Token.Punctuator,\n value: ch1 + ch
2,\n range: [start, index]\n };\n }\n\n
if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n ++index;\n retur
n {\n type: Token.Punctuator,\n value: ch1,\n
range: [start, index]\n };\n }\n\n throwErro
r({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n // 7.8.3 Numeric Liter
als\n function scanNumericLiteral() {\n var number, start, ch;\n\n
ch = source[index];\n assert(isDecimalDigit(ch.charCodeAt(0)) || (ch
=== '.'),\n 'Numeric literal must start with a decimal digit or a dec
imal point');\n\n start = index;\n number = '';\n if (ch !=
= '.') {\n number = source[index++];\n ch = source[index];
\n\n // Hex number starts with '0x'.\n // Octal number sta
rts with '0'.\n if (number === '0') {\n // decimal num
ber starts with '0' such as '09' is illegal.\n if (ch && isDecima
lDigit(ch.charCodeAt(0))) {\n throwError({}, Messages.Unexpec
tedToken, 'ILLEGAL');\n }\n }\n\n while (is
DecimalDigit(source.charCodeAt(index))) {\n number += source[inde
x++];\n }\n ch = source[index];\n }\n\n if (
ch === '.') {\n number += source[index++];\n while (isDeci
malDigit(source.charCodeAt(index))) {\n number += source[index++]
;\n }\n ch = source[index];\n }\n\n if (ch =
== 'e' || ch === 'E') {\n number += source[index++];\n\n c
h = source[index];\n if (ch === '+' || ch === '-') {\n
number += source[index++];\n }\n if (isDecimalDigit(sourc
e.charCodeAt(index))) {\n while (isDecimalDigit(source.charCodeAt
(index))) {\n number += source[index++];\n }\n
} else {\n throwError({}, Messages.UnexpectedToken, '
ILLEGAL');\n }\n }\n\n if (isIdentifierStart(source.cha
rCodeAt(index))) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGA
L');\n }\n\n return {\n type: Token.NumericLiteral,\n
value: parseFloat(number),\n range: [start, index]\n
};\n }\n\n // 7.8.4 String Literals\n\n function scanStringLiteral() {
\n var str = '', quote, start, ch, octal = false;\n\n quote = sour
ce[index];\n assert((quote === '\\'' || quote === '\"'),\n 'St
ring literal must starts with a quote');\n\n start = index;\n ++in
dex;\n\n while (index < length) {\n ch = source[index++];\n\n
if (ch === quote) {\n quote = '';\n bre
ak;\n } else if (ch === '\\\\') {\n ch = source[index+
+];\n if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n
switch (ch) {\n case 'n':\n
str += '\\n';\n break;\n case 'r':\n
str += '\\r';\n break;\n
case 't':\n str += '\\t';\n
break;\n case 'b':\n str += '\\b'
;\n break;\n case 'f':\n
str += '\\f';\n break;\n cas
e 'v':\n str += '\\x0B';\n break;\
n\n default:\n str += ch;\n
break;\n }\n } else {\n
if (ch === '\\r' && source[index] === '\\n') {\n
++index;\n }\n }\n } else if (is
LineTerminator(ch.charCodeAt(0))) {\n break;\n } else
{\n str += ch;\n }\n }\n\n if (quote !==
'') {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n
}\n\n return {\n type: Token.StringLiteral,\n val
ue: str,\n octal: octal,\n range: [start, index]\n
};\n }\n\n function isIdentifierName(token) {\n return token.type =
== Token.Identifier ||\n token.type === Token.Keyword ||\n
token.type === Token.BooleanLiteral ||\n token.type === Token.NullLi
teral;\n }\n\n function advance() {\n var ch;\n\n skipWhites
pace();\n\n if (index >= length) {\n return {\n
type: Token.EOF,\n range: [index, index]\n };\n
}\n\n ch = source.charCodeAt(index);\n\n // Very common: ( and )
and ;\n if (ch === 40 || ch === 41 || ch === 58) {\n return s
canPunctuator();\n }\n\n // String literal starts with single quot
e (#39) or double quote (#34).\n if (ch === 39 || ch === 34) {\n
return scanStringLiteral();\n }\n\n if (isIdentifierStart(ch))
{\n return scanIdentifier();\n }\n\n // Dot (.) char #4
6 can also start a floating-point number, hence the need\n // to check th
e next character.\n if (ch === 46) {\n if (isDecimalDigit(sour
ce.charCodeAt(index + 1))) {\n return scanNumericLiteral();\n
}\n return scanPunctuator();\n }\n\n if (isDeci
malDigit(ch)) {\n return scanNumericLiteral();\n }\n\n
return scanPunctuator();\n }\n\n function lex() {\n var token;\n\n
token = lookahead;\n index = token.range[1];\n\n lookahead
= advance();\n\n index = token.range[1];\n\n return token;\n }\
n\n function peek() {\n var pos;\n\n pos = index;\n look
ahead = advance();\n index = pos;\n }\n\n // Throw an exception\n\n
function throwError(token, messageFormat) {\n var error,\n
args = Array.prototype.slice.call(arguments, 2),\n msg = messageForm
at.replace(\n /%(\\d)/g,\n function (whole, index)
{\n assert(index < args.length, 'Message reference must be i
n range');\n return args[index];\n }\n
);\n\n error = new Error(msg);\n error.index = index;\n
error.description = msg;\n throw error;\n }\n\n // Throw an except
ion because of the token.\n\n function throwUnexpected(token) {\n thro
wError(token, Messages.UnexpectedToken, token.value);\n }\n\n // Expect th
e next token to match the specified punctuator.\n // If not, an exception wil
l be thrown.\n\n function expect(value) {\n var token = lex();\n
if (token.type !== Token.Punctuator || token.value !== value) {\n t
hrowUnexpected(token);\n }\n }\n\n // Return true if the next token
matches the specified punctuator.\n\n function match(value) {\n retur
n lookahead.type === Token.Punctuator && lookahead.value === value;\n }\n\n
// Return true if the next token matches the specified keyword\n\n function
matchKeyword(keyword) {\n return lookahead.type === Token.Keyword && loo
kahead.value === keyword;\n }\n\n function consumeSemicolon() {\n /
/ Catch the very common case first: immediately a semicolon (char #59).\n
if (source.charCodeAt(index) === 59) {\n lex();\n return;
\n }\n\n skipWhitespace();\n\n if (match(';')) {\n
lex();\n return;\n }\n\n if (lookahead.type !== Toke
n.EOF && !match('}')) {\n throwUnexpected(lookahead);\n }\n
}\n\n // 11.1.4 Array Initialiser\n\n function parseArrayInitialiser() {\
n var elements = [];\n\n expect('[');\n\n while (!match(']'
)) {\n if (match(',')) {\n lex();\n ele
ments.push(null);\n } else {\n elements.push(parseExpr
ession());\n\n if (!match(']')) {\n expect(','
);\n }\n }\n }\n\n expect(']');\n\n
return delegate.createArrayExpression(elements);\n }\n\n // 11.1.5 Obje
ct Initialiser\n\n function parseObjectPropertyKey() {\n var token;\n\
n skipWhitespace();\n token = lex();\n\n // Note: This func
tion is called only from parseObjectProperty(), where\n // EOF and Punctu
ator tokens are already filtered out.\n if (token.type === Token.StringLi
teral || token.type === Token.NumericLiteral) {\n return delegate.cre
ateLiteral(token);\n }\n\n return delegate.createIdentifier(token.
value);\n }\n\n function parseObjectProperty() {\n var token, key;\
n\n token = lookahead;\n skipWhitespace();\n\n if (token.ty
pe === Token.EOF || token.type === Token.Punctuator) {\n throwUnexpec
ted(token);\n }\n\n key = parseObjectPropertyKey();\n expec
t(':');\n return delegate.createProperty('init', key, parseExpression());
\n }\n\n function parseObjectInitialiser() {\n var properties = [];
\n\n expect('{');\n\n while (!match('}')) {\n propertie
s.push(parseObjectProperty());\n\n if (!match('}')) {\n
expect(',');\n }\n }\n\n expect('}');\n\n retu
rn delegate.createObjectExpression(properties);\n }\n\n // 11.1.6 The Grou
ping Operator\n\n function parseGroupExpression() {\n var expr;\n\n
expect('(');\n\n expr = parseExpression();\n\n expect(')');\n
\n return expr;\n }\n\n\n // 11.1 Primary Expressions\n\n functi
on parsePrimaryExpression() {\n var type, token, expr;\n\n if (mat
ch('(')) {\n return parseGroupExpression();\n }\n\n typ
e = lookahead.type;\n\n if (type === Token.Identifier) {\n exp
r = delegate.createIdentifier(lex().value);\n } else if (type === Token.S
tringLiteral || type === Token.NumericLiteral) {\n expr = delegate.cr
eateLiteral(lex());\n } else if (type === Token.Keyword) {\n i
f (matchKeyword('this')) {\n lex();\n expr = deleg
ate.createThisExpression();\n }\n } else if (type === Token.Bo
oleanLiteral) {\n token = lex();\n token.value = (token.va
lue === 'true');\n expr = delegate.createLiteral(token);\n } e
lse if (type === Token.NullLiteral) {\n token = lex();\n t
oken.value = null;\n expr = delegate.createLiteral(token);\n }
else if (match('[')) {\n expr = parseArrayInitialiser();\n }
else if (match('{')) {\n expr = parseObjectInitialiser();\n }\
n\n if (expr) {\n return expr;\n }\n\n throwUnex
pected(lex());\n }\n\n // 11.2 Left-Hand-Side Expressions\n\n function
parseArguments() {\n var args = [];\n\n expect('(');\n\n if
(!match(')')) {\n while (index < length) {\n args.pus
h(parseExpression());\n if (match(')')) {\n br
eak;\n }\n expect(',');\n }\n }\
n\n expect(')');\n\n return args;\n }\n\n function parseNonC
omputedProperty() {\n var token;\n\n token = lex();\n\n if
(!isIdentifierName(token)) {\n throwUnexpected(token);\n }\n\n
return delegate.createIdentifier(token.value);\n }\n\n function pa
rseNonComputedMember() {\n expect('.');\n\n return parseNonCompute
dProperty();\n }\n\n function parseComputedMember() {\n var expr;\n
\n expect('[');\n\n expr = parseExpression();\n\n expect(']
');\n\n return expr;\n }\n\n function parseLeftHandSideExpression()
{\n var expr, property;\n\n expr = parsePrimaryExpression();\n\n
while (match('.') || match('[')) {\n if (match('[')) {\n
property = parseComputedMember();\n expr = delegate.cre
ateMemberExpression('[', expr, property);\n } else {\n
property = parseNonComputedMember();\n expr = delegate.createMem
berExpression('.', expr, property);\n }\n }\n\n return
expr;\n }\n\n // 11.3 Postfix Expressions\n\n var parsePostfixExpressio
n = parseLeftHandSideExpression;\n\n // 11.4 Unary Operators\n\n function
parseUnaryExpression() {\n var token, expr;\n\n if (lookahead.type
!== Token.Punctuator && lookahead.type !== Token.Keyword) {\n expr =
parsePostfixExpression();\n } else if (match('+') || match('-') || match
('!')) {\n token = lex();\n expr = parseUnaryExpression();
\n expr = delegate.createUnaryExpression(token.value, expr);\n
} else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('type
of')) {\n throwError({}, Messages.UnexpectedToken);\n } else {
\n expr = parsePostfixExpression();\n }\n\n return expr
;\n }\n\n function binaryPrecedence(token) {\n var prec = 0;\n\n
if (token.type !== Token.Punctuator && token.type !== Token.Keyword) {\n
return 0;\n }\n\n switch (token.value) {\n case '|
|':\n prec = 1;\n break;\n\n case '&&':\n
prec = 2;\n break;\n\n case '==':\n case '!=':\n
case '===':\n case '!==':\n prec = 6;\n break;\n
\n case '<':\n case '>':\n case '<=':\n case '>=':\n
case 'instanceof':\n prec = 7;\n break;\n\n
case 'in':\n prec = 7;\n break;\n\n case '+':\n
case '-':\n prec = 9;\n break;\n\n case '*':\n
case '/':\n case '%':\n prec = 11;\n break;
\n\n default:\n break;\n }\n\n return prec;\n
}\n\n // 11.5 Multiplicative Operators\n // 11.6 Additive Operators\n
// 11.7 Bitwise Shift Operators\n // 11.8 Relational Operators\n // 11.9 E
quality Operators\n // 11.10 Binary Bitwise Operators\n // 11.11 Binary Lo
gical Operators\n\n function parseBinaryExpression() {\n var expr, tok
en, prec, stack, right, operator, left, i;\n\n left = parseUnaryExpressio
n();\n\n token = lookahead;\n prec = binaryPrecedence(token);\n
if (prec === 0) {\n return left;\n }\n token.prec
= prec;\n lex();\n\n right = parseUnaryExpression();\n\n st
ack = [left, token, right];\n\n while ((prec = binaryPrecedence(lookahead
)) > 0) {\n\n // Reduce: make a binary expression from the three topm
ost entries.\n while ((stack.length > 2) && (prec <= stack[stack.leng
th - 2].prec)) {\n right = stack.pop();\n operator
= stack.pop().value;\n left = stack.pop();\n expr
= delegate.createBinaryExpression(operator, left, right);\n stac
k.push(expr);\n }\n\n // Shift.\n token = lex()
;\n token.prec = prec;\n stack.push(token);\n e
xpr = parseUnaryExpression();\n stack.push(expr);\n }\n\n
// Final reduce to clean-up the stack.\n i = stack.length - 1;\n
expr = stack[i];\n while (i > 1) {\n expr = delegate.createB
inaryExpression(stack[i - 1].value, stack[i - 2], expr);\n i -= 2;\n
}\n\n return expr;\n }\n\n\n // 11.12 Conditional Operator\n
\n function parseConditionalExpression() {\n var expr, consequent, alt
ernate;\n\n expr = parseBinaryExpression();\n\n if (match('?')) {\
n lex();\n consequent = parseConditionalExpression();\n
expect(':');\n alternate = parseConditionalExpression();\n\n
expr = delegate.createConditionalExpression(expr, consequent, altern
ate);\n }\n\n return expr;\n }\n\n // Simplification since w
e do not support AssignmentExpression.\n var parseExpression = parseCondition
alExpression;\n\n // Polymer Syntax extensions\n\n // Filter ::\n //
Identifier\n // Identifier \"(\" \")\"\n // Identifier \"(\" FilterArg
uments \")\"\n\n function parseFilter() {\n var identifier, args;\n\n
identifier = lex();\n\n if (identifier.type !== Token.Identifier)
{\n throwUnexpected(identifier);\n }\n\n args = match('
(') ? parseArguments() : [];\n\n return delegate.createFilter(identifier.
value, args);\n }\n\n // Filters ::\n // \"|\" Filter\n // Filte
rs \"|\" Filter\n\n function parseFilters() {\n while (match('|')) {\n
lex();\n parseFilter();\n }\n }\n\n // TopLe
vel ::\n // LabelledExpressions\n // AsExpression\n // InExpressi
on\n // FilterExpression\n\n // AsExpression ::\n // FilterExpressi
on as Identifier\n\n // InExpression ::\n // Identifier, Identifier in F
ilterExpression\n // Identifier in FilterExpression\n\n // FilterExpress
ion ::\n // Expression\n // Expression Filters\n\n function parseTo
pLevel() {\n skipWhitespace();\n peek();\n\n var expr = par
seExpression();\n if (expr) {\n if (lookahead.value === ',' ||
lookahead.value == 'in' &&\n expr.type === Syntax.Identif
ier) {\n parseInExpression(expr);\n } else {\n
parseFilters();\n if (lookahead.value === 'as') {\n
parseAsExpression(expr);\n } else {\n
delegate.createTopLevel(expr);\n }\n }\n
}\n\n if (lookahead.type !== Token.EOF) {\n throwUnexpected(lo
okahead);\n }\n }\n\n function parseAsExpression(expr) {\n l
ex(); // as\n var identifier = lex().value;\n delegate.createAsEx
pression(expr, identifier);\n }\n\n function parseInExpression(identifier)
{\n var indexName;\n if (lookahead.value === ',') {\n
lex();\n if (lookahead.type !== Token.Identifier)\n th
rowUnexpected(lookahead);\n indexName = lex().value;\n }\n\n
lex(); // in\n var expr = parseExpression();\n parseFilters
();\n delegate.createInExpression(identifier.name, indexName, expr);\n
}\n\n function parse(code, inDelegate) {\n delegate = inDelegate;\n
source = code;\n index = 0;\n length = source.length;\n
lookahead = null;\n state = {\n labelSet: {}\n };\n\
n return parseTopLevel();\n }\n\n global.esprima = {\n parse
: parse\n };\n})(this);\n","// Copyright (c) 2014 The Polymer Project Authors
. All rights reserved.\n// This code may only be used under the BSD style licens
e found at http://polymer.github.io/LICENSE.txt\n// The complete set of authors
may be found at http://polymer.github.io/AUTHORS.txt\n// The complete set of con
tributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n// Code dis
tributed by Google as part of the polymer project is also\n// subject to an addi
tional IP rights grant found at http://polymer.github.io/PATENTS.txt\n\n(functio
n (global) {\n 'use strict';\n\n function prepareBinding(expressionText, name,
node, filterRegistry) {\n var expression;\n try {\n expression = get
Expression(expressionText);\n if (expression.scopeIdent &&\n (node
.nodeType !== Node.ELEMENT_NODE ||\n node.tagName !== 'TEMPLATE' ||\n
(name !== 'bind' && name !== 'repeat'))) {\n throw Error('as an
d in can only be used within <template bind/repeat>');\n }\n } catch (ex
) {\n console.error('Invalid expression syntax: ' + expressionText, ex);\n
return;\n }\n\n return function(model, node, oneTime) {\n var bi
nding = expression.getBinding(model, filterRegistry, oneTime);\n if (expres
sion.scopeIdent && binding) {\n node.polymerExpressionScopeIdent_ = expre
ssion.scopeIdent;\n if (expression.indexIdent)\n node.polymerExp
ressionIndexIdent_ = expression.indexIdent;\n }\n\n return binding;\n
}\n }\n\n // TODO(rafaelw): Implement simple LRU.\n var expressionParseCac
he = Object.create(null);\n\n function getExpression(expressionText) {\n var
expression = expressionParseCache[expressionText];\n if (!expression) {\n
var delegate = new ASTDelegate();\n esprima.parse(expressionText, delega
te);\n expression = new Expression(delegate);\n expressionParseCache[e
xpressionText] = expression;\n }\n return expression;\n }\n\n function L
iteral(value) {\n this.value = value;\n this.valueFn_ = undefined;\n }\n\
n Literal.prototype = {\n valueFn: function() {\n if (!this.valueFn_) {
\n var value = this.value;\n this.valueFn_ = function() {\n
return value;\n }\n }\n\n return this.valueFn_;\n }\n }\
n\n function IdentPath(name) {\n this.name = name;\n this.path = Path.get
(name);\n }\n\n IdentPath.prototype = {\n valueFn: function() {\n if (
!this.valueFn_) {\n var name = this.name;\n var path = this.path;\
n this.valueFn_ = function(model, observer) {\n if (observer)\n
observer.addPath(model, path);\n\n return path.getValueFrom(
model);\n }\n }\n\n return this.valueFn_;\n },\n\n setVal
ue: function(model, newValue) {\n if (this.path.length == 1);\n mode
l = findScope(model, this.path[0]);\n\n return this.path.setValueFrom(model
, newValue);\n }\n };\n\n function MemberExpression(object, property, acces
sor) {\n this.dynamicDeps = typeof object == 'function' ||\n
object.dynamicDeps ||\n (accessor == '[' && !(proper
ty instanceof Literal));\n\n // convert literal computed property access wher
e literal value is a value\n // path to ident dot-access.\n if (accessor =
= '[' &&\n property instanceof Literal &&\n Path.get(property.valu
e).valid) {\n accessor = '.';\n property = new IdentPath(property.valu
e);\n }\n\n this.simplePath =\n !this.dynamicDeps &&\n prope
rty instanceof IdentPath &&\n (object instanceof MemberExpression || obje
ct instanceof IdentPath);\n\n this.object = this.simplePath ? object : getFn(
object);\n this.property = accessor == '.' ? property : getFn(property);\n }
\n\n MemberExpression.prototype = {\n get fullPath() {\n if (!this.full
Path_) {\n var last = this.object instanceof IdentPath ?\n thi
s.object.name : this.object.fullPath;\n this.fullPath_ = Path.get(last +
'.' + this.property.name);\n }\n\n return this.fullPath_;\n },\n\n
valueFn: function() {\n if (!this.valueFn_) {\n var object = this
.object;\n\n if (this.simplePath) {\n var path = this.fullPath;\
n\n this.valueFn_ = function(model, observer) {\n if (observ
er)\n observer.addPath(model, path);\n\n return path.get
ValueFrom(model);\n };\n } else if (this.property instanceof Ide
ntPath) {\n var path = Path.get(this.property.name);\n\n this.
valueFn_ = function(model, observer) {\n var context = object(model,
observer);\n\n if (observer)\n observer.addPath(context,
path);\n\n return path.getValueFrom(context);\n }\n
} else {\n // Computed property.\n var property = this.propert
y;\n\n this.valueFn_ = function(model, observer) {\n var con
text = object(model, observer);\n var propName = property(model, obse
rver);\n if (observer)\n observer.addPath(context, propN
ame);\n\n return context ? context[propName] : undefined;\n
};\n }\n }\n return this.valueFn_;\n },\n\n setValue: fun
ction(model, newValue) {\n if (this.simplePath) {\n this.fullPath.se
tValueFrom(model, newValue);\n return newValue;\n }\n\n var obj
ect = this.object(model);\n var propName = this.property instanceof IdentPa
th ? this.property.name :\n this.property(model);\n return object[
propName] = newValue;\n }\n };\n\n function Filter(name, args) {\n this.
name = name;\n this.args = [];\n for (var i = 0; i < args.length; i++) {\n
this.args[i] = getFn(args[i]);\n }\n }\n\n Filter.prototype = {\n
transform: function(value, toModelDirection, filterRegistry, model,\n
observer) {\n var fn = filterRegistry[this.name];\n var c
ontext = model;\n if (fn) {\n context = undefined;\n } else {\n
fn = context[this.name];\n if (!fn) {\n console.error('C
annot find filter: ' + this.name);\n return;\n }\n }\n\n
// If toModelDirection is falsey, then the \"normal\" (dom-bound) direction\n
// is used. Otherwise, it looks for a 'toModel' property function on the\n
// object.\n if (toModelDirection) {\n fn = fn.toModel;\n
} else if (typeof fn.toDOM == 'function') {\n fn = fn.toDOM;\n }\n\
n if (typeof fn != 'function') {\n console.error('No ' + (toModelDir
ection ? 'toModel' : 'toDOM') +\n ' found on' + this.name);
\n return;\n }\n\n var args = [value];\n for (var i = 0; i
< this.args.length; i++) {\n args[i + 1] = getFn(this.args[i])(model, ob
server);\n }\n\n return fn.apply(context, args);\n }\n };\n\n fun
ction notImplemented() { throw Error('Not Implemented'); }\n\n var unaryOperato
rs = {\n '+': function(v) { return +v; },\n '-': function(v) { return -v;
},\n '!': function(v) { return !v; }\n };\n\n var binaryOperators = {\n
'+': function(l, r) { return l+r; },\n '-': function(l, r) { return l-r; },\n
'*': function(l, r) { return l*r; },\n '/': function(l, r) { return l/r;
},\n '%': function(l, r) { return l%r; },\n '<': function(l, r) { return l
<r; },\n '>': function(l, r) { return l>r; },\n '<=': function(l, r) { ret
urn l<=r; },\n '>=': function(l, r) { return l>=r; },\n '==': function(l,
r) { return l==r; },\n '!=': function(l, r) { return l!=r; },\n '===': fun
ction(l, r) { return l===r; },\n '!==': function(l, r) { return l!==r; },\n
'&&': function(l, r) { return l&&r; },\n '||': function(l, r) { return l||r
; },\n };\n\n function getFn(arg) {\n return typeof arg == 'function' ? arg
: arg.valueFn();\n }\n\n function ASTDelegate() {\n this.expression = null
;\n this.filters = [];\n this.deps = {};\n this.currentPath = undefined
;\n this.scopeIdent = undefined;\n this.indexIdent = undefined;\n this.
dynamicDeps = false;\n }\n\n ASTDelegate.prototype = {\n createUnaryExpress
ion: function(op, argument) {\n if (!unaryOperators[op])\n throw Err
or('Disallowed operator: ' + op);\n\n argument = getFn(argument);\n\n
return function(model, observer) {\n return unaryOperators[op](argument(m
odel, observer));\n };\n },\n\n createBinaryExpression: function(op,
left, right) {\n if (!binaryOperators[op])\n throw Error('Disallowed
operator: ' + op);\n\n left = getFn(left);\n right = getFn(right);\n\
n return function(model, observer) {\n return binaryOperators[op](le
ft(model, observer),\n right(model, observer))
;\n };\n },\n\n createConditionalExpression: function(test, consequen
t, alternate) {\n test = getFn(test);\n consequent = getFn(consequent)
;\n alternate = getFn(alternate);\n\n return function(model, observer)
{\n return test(model, observer) ?\n consequent(model, observ
er) : alternate(model, observer);\n }\n },\n\n createIdentifier: func
tion(name) {\n var ident = new IdentPath(name);\n ident.type = 'Identi
fier';\n return ident;\n },\n\n createMemberExpression: function(acce
ssor, object, property) {\n var ex = new MemberExpression(object, property,
accessor);\n if (ex.dynamicDeps)\n this.dynamicDeps = true;\n
return ex;\n },\n\n createLiteral: function(token) {\n return new Lit
eral(token.value);\n },\n\n createArrayExpression: function(elements) {\n
for (var i = 0; i < elements.length; i++)\n elements[i] = getFn(elem
ents[i]);\n\n return function(model, observer) {\n var arr = []\n
for (var i = 0; i < elements.length; i++)\n arr.push(elements[i](m
odel, observer));\n return arr;\n }\n },\n\n createProperty: f
unction(kind, key, value) {\n return {\n key: key instanceof IdentPa
th ? key.name : key.value,\n value: value\n };\n },\n\n create
ObjectExpression: function(properties) {\n for (var i = 0; i < properties.l
ength; i++)\n properties[i].value = getFn(properties[i].value);\n\n
return function(model, observer) {\n var obj = {};\n for (var i =
0; i < properties.length; i++)\n obj[properties[i].key] = properties[i]
.value(model, observer);\n return obj;\n }\n },\n\n createFilt
er: function(name, args) {\n this.filters.push(new Filter(name, args));\n
},\n\n createAsExpression: function(expression, scopeIdent) {\n this.e
xpression = expression;\n this.scopeIdent = scopeIdent;\n },\n\n crea
teInExpression: function(scopeIdent, indexIdent, expression) {\n this.expre
ssion = expression;\n this.scopeIdent = scopeIdent;\n this.indexIdent
= indexIdent;\n },\n\n createTopLevel: function(expression) {\n this.
expression = expression;\n },\n\n createThisExpression: notImplemented\n
}\n\n function ConstantObservable(value) {\n this.value_ = value;\n }\n\n
ConstantObservable.prototype = {\n open: function() { return this.value_; },\
n discardChanges: function() { return this.value_; },\n deliver: function(
) {},\n close: function() {},\n }\n\n function Expression(delegate) {\n
this.scopeIdent = delegate.scopeIdent;\n this.indexIdent = delegate.indexIden
t;\n\n if (!delegate.expression)\n throw Error('No expression found.');\
n\n this.expression = delegate.expression;\n getFn(this.expression); // fo
rces enumeration of path dependencies\n\n this.filters = delegate.filters;\n
this.dynamicDeps = delegate.dynamicDeps;\n }\n\n Expression.prototype = {\n
getBinding: function(model, filterRegistry, oneTime) {\n if (oneTime)\n
return this.getValue(model, undefined, filterRegistry);\n\n var obs
erver = new CompoundObserver();\n // captures deps.\n var firstValue =
this.getValue(model, observer, filterRegistry);\n var firstTime = true;\n
var self = this;\n\n function valueFn() {\n // deps cannot have
changed on first value retrieval.\n if (firstTime) {\n firstTim
e = false;\n return firstValue;\n }\n\n if (self.dynamicD
eps)\n observer.startReset();\n\n var value = self.getValue(mode
l,\n self.dynamicDeps ? observer : undefined,\n
filterRegistry);\n if (self.dynamicDeps
)\n observer.finishReset();\n\n return value;\n }\n\n
function setValueFn(newValue) {\n self.setValue(model, newValue, filterRe
gistry);\n return newValue;\n }\n\n return new ObserverTransfor
m(observer, valueFn, setValueFn, true);\n },\n\n getValue: function(model,
observer, filterRegistry) {\n var value = getFn(this.expression)(model, ob
server);\n for (var i = 0; i < this.filters.length; i++) {\n value =
this.filters[i].transform(value, false, filterRegistry, model,\n
observer);\n }\n\n return value;\n },\n\
n setValue: function(model, newValue, filterRegistry) {\n var count = th
is.filters ? this.filters.length : 0;\n while (count-- > 0) {\n newV
alue = this.filters[count].transform(newValue, true, filterRegistry,\n
model);\n }\n\n if (this.expres
sion.setValue)\n return this.expression.setValue(model, newValue);\n }
\n }\n\n /**\n * Converts a style property name to a css property name. For
example:\n * \"WebkitUserSelect\" to \"-webkit-user-select\"\n */\n functio
n convertStylePropertyName(name) {\n return String(name).replace(/[A-Z]/g, fu
nction(c) {\n return '-' + c.toLowerCase();\n });\n }\n\n var parentSc
opeName = '@' + Math.random().toString(36).slice(2);\n\n // Single ident paths
must bind directly to the appropriate scope object.\n // I.e. Pushed values in
two-bindings need to be assigned to the actual model\n // object.\n function f
indScope(model, prop) {\n while (model[parentScopeName] &&\n !Objec
t.prototype.hasOwnProperty.call(model, prop)) {\n model = model[parentScope
Name];\n }\n\n return model;\n }\n\n function isLiteralExpression(pathSt
ring) {\n switch (pathString) {\n case '':\n return false;\n\n
case 'false':\n case 'null':\n case 'true':\n return true;\n
}\n\n if (!isNaN(Number(pathString)))\n return true;\n\n return f
alse;\n };\n\n function PolymerExpressions() {}\n\n PolymerExpressions.protot
ype = {\n // \"built-in\" filters\n styleObject: function(value) {\n
var parts = [];\n for (var key in value) {\n parts.push(convertStyle
PropertyName(key) + ': ' + value[key]);\n }\n return parts.join('; ');
\n },\n\n tokenList: function(value) {\n var tokens = [];\n for
(var key in value) {\n if (value[key])\n tokens.push(key);\n
}\n return tokens.join(' ');\n },\n\n // binding delegate API\n
prepareInstancePositionChanged: function(template) {\n var indexIdent = tem
plate.polymerExpressionIndexIdent_;\n if (!indexIdent)\n return;\n\n
return function(templateInstance, index) {\n templateInstance.model
[indexIdent] = index;\n };\n },\n\n prepareBinding: function(pathStri
ng, name, node) {\n var path = Path.get(pathString);\n\n if (!isLitera
lExpression(pathString) && path.valid) {\n if (path.length == 1) {\n
return function(model, node, oneTime) {\n if (oneTime)\n
return path.getValueFrom(model);\n\n var scope = findScope(mode
l, path[0]);\n return new PathObserver(scope, path);\n };\n
}\n return; // bail out early if pathString is simple path.\n
}\n\n return prepareBinding(pathString, name, node, this);\n },\n\n
prepareInstanceModel: function(template) {\n var scopeName = template.polym
erExpressionScopeIdent_;\n if (!scopeName)\n return;\n\n var pa
rentScope = template.templateInstance ?\n template.templateInstance.mod
el :\n template.model;\n\n var indexName = template.polymerExpress
ionIndexIdent_;\n\n return function(model) {\n var scope = Object.cr
eate(parentScope);\n scope[scopeName] = model;\n scope[indexName]
= undefined;\n scope[parentScopeName] = parentScope;\n return scop
e;\n };\n }\n };\n\n global.PolymerExpressions = PolymerExpressions;\n
if (global.exposeGetExpression)\n global.getExpression_ = getExpression;\n\
n})(this);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights
reserved.\n * This code may only be used under the BSD style license found at h
ttp://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found
at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors ma
y be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by
Google as part of the polymer project is also\n * subject to an additional IP ri
ghts grant found at http://polymer.github.io/PATENTS.txt\n */\nPolymer = {\n ve
rsion: '0.3.1-604ba08'\n};\n","/*\n * Copyright (c) 2014 The Polymer Project Aut
hors. All rights reserved.\n * This code may only be used under the BSD style li
cense found at http://polymer.github.io/LICENSE.txt\n * The complete set of auth
ors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of
contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code
distributed by Google as part of the polymer project is also\n * subject to an
additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\
n// TODO(sorvell): this ensures Polymer is an object and not a function\n// Plat
form is currently defining it as a function to allow for async loading\n// of po
lymer; once we refine the loading process this likely goes away.\nif (typeof win
dow.Polymer === 'function') {\n Polymer = {};\n}\n\n","/*\n * Copyright (c) 201
4 The Polymer Project Authors. All rights reserved.\n * This code may only be us
ed under the BSD style license found at http://polymer.github.io/LICENSE.txt\n *
The complete set of authors may be found at http://polymer.github.io/AUTHORS.tx
t\n * The complete set of contributors may be found at http://polymer.github.io/
CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project i
s also\n * subject to an additional IP rights grant found at http://polymer.gith
ub.io/PATENTS.txt\n */\n\n(function(scope) {\n\n // copy own properties from 'a
pi' to 'prototype, with name hinting for 'super'\n function extend(prototype, a
pi) {\n if (prototype && api) {\n // use only own properties of 'api'\n
Object.getOwnPropertyNames(api).forEach(function(n) {\n // acquire p
roperty descriptor\n var pd = Object.getOwnPropertyDescriptor(api, n);\n
if (pd) {\n // clone property via descriptor\n Object.d
efineProperty(prototype, n, pd);\n // cache name-of-method for 'super'
engine\n if (typeof pd.value == 'function') {\n // hint the
'super' engine\n pd.value.nom = n;\n }\n }\n });
\n }\n return prototype;\n }\n \n // exports\n\n scope.extend = extend
;\n\n})(Polymer);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All
rights reserved.\n * This code may only be used under the BSD style license fou
nd at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may b
e found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contribu
tors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distribu
ted by Google as part of the polymer project is also\n * subject to an additiona
l IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n(functio
n(scope) {\n \n // usage\n \n // invoke cb.call(this) in 100ms, unless the j
ob is re-registered,\n // which resets the timer\n // \n // this.myJob = this
.job(this.myJob, cb, 100)\n //\n // returns a job handle which can be used to
re-register a job\n\n var Job = function(inContext) {\n this.context = inCon
text;\n this.boundComplete = this.complete.bind(this)\n };\n Job.prototype
= {\n go: function(callback, wait) {\n this.callback = callback;\n
var h;\n if (!wait) {\n h = requestAnimationFrame(this.boundComplete
);\n this.handle = function() {\n cancelAnimationFrame(h);\n
}\n } else {\n h = setTimeout(this.boundComplete, wait);\n
this.handle = function() {\n clearTimeout(h);\n }\n }\n
},\n stop: function() {\n if (this.handle) {\n this.handle();\n
this.handle = null;\n }\n },\n complete: function() {\n
if (this.handle) {\n this.stop();\n this.callback.call(this.contex
t);\n }\n }\n };\n \n function job(job, callback, wait) {\n if (jo
b) {\n job.stop();\n } else {\n job = new Job(this);\n }\n jo
b.go(callback, wait);\n return job;\n }\n \n // exports \n\n scope.job =
job;\n \n})(Polymer);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors
. All rights reserved.\n * This code may only be used under the BSD style licens
e found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors
may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of con
tributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code dis
tributed by Google as part of the polymer project is also\n * subject to an addi
tional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n(fu
nction(scope) {\n\n var registry = {};\n\n HTMLElement.register = function(tag
, prototype) {\n registry[tag] = prototype;\n }\n\n // get prototype mapped
to node <tag>\n HTMLElement.getPrototypeForTag = function(tag) {\n var prot
otype = !tag ? HTMLElement.prototype : registry[tag];\n // TODO(sjmiles): cre
ating <tag> is likely to have wasteful side-effects\n return prototype || Obj
ect.getPrototypeOf(document.createElement(tag));\n };\n\n // we have to flag p
ropagation stoppage for the event dispatcher\n var originalStopPropagation = Ev
ent.prototype.stopPropagation;\n Event.prototype.stopPropagation = function() {
\n this.cancelBubble = true;\n originalStopPropagation.apply(this, argumen
ts);\n };\n \n // TODO(sorvell): remove when we're sure imports does not need
\n // to load stylesheets\n /*\n HTMLImports.importer.preloadSelectors += \n
', polymer-element link[rel=stylesheet]';\n */\n})(Polymer);\n","/*\r\n *
Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\r\n * This
code may only be used under the BSD style license found at http://polymer.github
.io/LICENSE.txt\r\n * The complete set of authors may be found at http://polymer
.github.io/AUTHORS.txt\r\n * The complete set of contributors may be found at ht
tp://polymer.github.io/CONTRIBUTORS.txt\r\n * Code distributed by Google as part
of the polymer project is also\r\n * subject to an additional IP rights grant f
ound at http://polymer.github.io/PATENTS.txt\r\n */\r\n\r\n (function(scope) {\r
\n // super\r\n\r\n // `arrayOfArgs` is an optional array of args like one
might pass\r\n // to `Function.apply`\r\n\r\n // TODO(sjmiles):\r\n //
$super must be installed on an instance or prototype chain\r\n // as `
super`, and invoked via `this`, e.g.\r\n // `this.super();`\r\n\r\n /
/ will not work if function objects are not unique, for example,\r\n //
when using mixins.\r\n // The memoization strategy assumes each function
exists on only one \r\n // prototype chain i.e. we use the function object
for memoizing)\r\n // perhaps we can bookkeep on the prototype itself ins
tead\r\n function $super(arrayOfArgs) {\r\n // since we are thunking a m
ethod call, performance is important here: \r\n // memoize all lookups, onc
e memoized the fast path calls no other \r\n // functions\r\n //\r\n
// find the caller (cannot be `strict` because of 'caller')\r\n var cal
ler = $super.caller;\r\n // memoized 'name of method' \r\n var nom = c
aller.nom;\r\n // memoized next implementation prototype\r\n var _supe
r = caller._super;\r\n if (!_super) {\r\n if (!nom) {\r\n n
om = caller.nom = nameInThis.call(this, caller);\r\n }\r\n if (!no
m) {\r\n console.warn('called super() on a method not installed declara
tively (has no .nom property)');\r\n }\r\n // super prototype is e
ither cached or we have to find it\r\n // by searching __proto__ (at the
'top')\r\n // invariant: because we cache _super on fn below, we never re
ach \r\n // here from inside a series of calls to super(), so it's ok to
\r\n // start searching from the prototype of 'this' (at the 'top')\r\n
// we must never memoize a null super for this reason\r\n _super =
memoizeSuper(caller, nom, getPrototypeOf(this));\r\n }\r\n // our supe
r function\r\n var fn = _super[nom];\r\n if (fn) {\r\n // memoi
ze information so 'fn' can call 'super'\r\n if (!fn._super) {\r\n
// must not memoize null, or we lose our invariant above\r\n memoizeS
uper(fn, nom, _super);\r\n }\r\n // invoke the inherited method\r\
n // if 'fn' is not function valued, this will throw\r\n return fn
.apply(this, arrayOfArgs || []);\r\n }\r\n }\r\n\r\n function nameInT
his(value) {\r\n var p = this.__proto__;\r\n while (p && p !== HTMLEle
ment.prototype) {\r\n // TODO(sjmiles): getOwnPropertyNames is absurdly e
xpensive\r\n var n$ = Object.getOwnPropertyNames(p);\r\n for (var
i=0, l=n$.length, n; i<l && (n=n$[i]); i++) {\r\n var d = Object.getOwn
PropertyDescriptor(p, n);\r\n if (typeof d.value === 'function' && d.va
lue === value) {\r\n return n;\r\n }\r\n }\r\n
p = p.__proto__;\r\n }\r\n }\r\n\r\n function memoizeSuper(method, n
ame, proto) {\r\n // find and cache next prototype containing `name`\r\n
// we need the prototype so we can do another lookup\r\n // from here\r\
n var s = nextSuper(proto, name, method);\r\n if (s[name]) {\r\n
// `s` is a prototype, the actual method is `s[name]`\r\n // tag super
method with it's name for quicker lookups\r\n s[name].nom = name;\r\n
}\r\n return method._super = s;\r\n }\r\n\r\n function nextSuper(pr
oto, name, caller) {\r\n // look for an inherited prototype that implements
name\r\n while (proto) {\r\n if ((proto[name] !== caller) && proto[
name]) {\r\n return proto;\r\n }\r\n proto = getPrototype
Of(proto);\r\n }\r\n // must not return null, or we lose our invariant
above\r\n // in this case, a super() call was invoked where no superclass\
r\n // method exists\r\n // TODO(sjmiles): thow an exception?\r\n
return Object;\r\n }\r\n\r\n // NOTE: In some platforms (IE10) the protot
ype chain is faked via \r\n // __proto__. Therefore, always get prototype via
__proto__ instead of\r\n // the more standard Object.getPrototypeOf.\r\n
function getPrototypeOf(prototype) {\r\n return prototype.__proto__;\r\n
}\r\n\r\n // utility function to precompute name tags for functions\r\n /
/ in a (unchained) prototype\r\n function hintSuper(prototype) {\r\n //
tag functions with their prototype name to optimize\r\n // super call invoc
ations\r\n for (var n in prototype) {\r\n var pd = Object.getOwnProp
ertyDescriptor(prototype, n);\r\n if (pd && typeof pd.value === 'function
') {\r\n pd.value.nom = n;\r\n }\r\n }\r\n }\r\n\r\n
// exports\r\n\r\n scope.super = $super;\r\n\r\n})(Polymer);\r\n","/*\n * Cop
yright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code
may only be used under the BSD style license found at http://polymer.github.io/L
ICENSE.txt\n * The complete set of authors may be found at http://polymer.github
.io/AUTHORS.txt\n * The complete set of contributors may be found at http://poly
mer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the pol
ymer project is also\n * subject to an additional IP rights grant found at http:
//polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n var typeHandlers
= {\n string: function(value) {\n return value;\n },\n date: func
tion(value) {\n return new Date(Date.parse(value) || Date.now());\n },\n
boolean: function(value) {\n if (value === '') {\n return true;\
n }\n return value === 'false' ? false : !!value;\n },\n number:
function(value) {\n var n = parseFloat(value);\n // hex values like \
"0xFFFF\" parseFloat as 0\n if (n === 0) {\n n = parseInt(value);\n
}\n return isNaN(n) ? value : n;\n // this code disabled because
encoded values (like \"0xFFFF\")\n // do not round trip to their original f
ormat\n //return (String(floatVal) === value) ? floatVal : value;\n },\n
object: function(value, currentValue) {\n if (currentValue === null) {\
n return value;\n }\n try {\n // If the string is an obj
ect, we can parse is with the JSON library.\n // include convenience repl
ace for single-quotes. If the author omits\n // quotes altogether, parse
will fail.\n return JSON.parse(value.replace(/'/g, '\"'));\n } catch
(e) {\n // The object isn't valid JSON, return the raw value\n ret
urn value;\n }\n },\n // avoid deserialization of functions\n 'fun
ction': function(value, currentValue) {\n return currentValue;\n }\n };
\n\n function deserializeValue(value, currentValue) {\n // attempt to infer
type from default value\n var inferredType = typeof currentValue;\n // inv
ent 'date' type value for Date\n if (currentValue instanceof Date) {\n i
nferredType = 'date';\n }\n // delegate deserialization via type string\n
return typeHandlers[inferredType](value, currentValue);\n }\n\n // exports\
n\n scope.deserializeValue = deserializeValue;\n\n})(Polymer);\n","/*\n * Copyr
ight (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code ma
y only be used under the BSD style license found at http://polymer.github.io/LIC
ENSE.txt\n * The complete set of authors may be found at http://polymer.github.i
o/AUTHORS.txt\n * The complete set of contributors may be found at http://polyme
r.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polym
er project is also\n * subject to an additional IP rights grant found at http://
polymer.github.io/PATENTS.txt\n */\n(function(scope) {\n\n // imports\n\n var
extend = scope.extend;\n\n // module\n\n var api = {};\n\n api.declaration =
{};\n api.instance = {};\n\n api.publish = function(apis, prototype) {\n fo
r (var n in apis) {\n extend(prototype, apis[n]);\n }\n };\n\n // expo
rts\n\n scope.api = api;\n\n})(Polymer);\n","/*\n * Copyright (c) 2014 The Poly
mer Project Authors. All rights reserved.\n * This code may only be used under t
he BSD style license found at http://polymer.github.io/LICENSE.txt\n * The compl
ete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The
complete set of contributors may be found at http://polymer.github.io/CONTRIBUTO
RS.txt\n * Code distributed by Google as part of the polymer project is also\n *
subject to an additional IP rights grant found at http://polymer.github.io/PATE
NTS.txt\n */\n\n(function(scope) {\n\n var utils = {\n /**\n * Invokes
a function asynchronously. The context of the callback\n * function is boun
d to 'this' automatically.\n * @method async\n * @param {Function|Stri
ng} method\n * @param {any|Array} args\n * @param {number} timeout\n
*/\n async: function(method, args, timeout) {\n // when polyfilling
Object.observe, ensure changes \n // propagate before executing the async m
ethod\n Platform.flush();\n // second argument to `apply` must be an a
rray\n args = (args && args.length) ? args : [args];\n // function to
invoke\n var fn = function() {\n (this[method] || method).apply(this
, args);\n }.bind(this);\n // execute `fn` sooner or later\n var
handle = timeout ? setTimeout(fn, timeout) :\n requestAnimationFrame(fn
);\n // NOTE: switch on inverting handle to determine which time is used.\n
return timeout ? handle : ~handle;\n },\n cancelAsync: function(hand
le) {\n if (handle < 0) {\n cancelAnimationFrame(~handle);\n }
else {\n clearTimeout(handle);\n }\n },\n /**\n * Fire an
event.\n * @method fire\n * @returns {Object} event\n * @param {
string} type An event name.\n * @param {any} detail\n * @param {Node}
onNode Target node.\n */\n fire: function(type, detail, onNode, bubbles,
cancelable) {\n var node = onNode || this;\n var detail = detail || {
};\n var event = new CustomEvent(type, {\n bubbles: (bubbles !== und
efined ? bubbles : true), \n cancelable: (cancelable !== undefined ? canc
elable : true), \n detail: detail\n });\n node.dispatchEvent(ev
ent);\n return event;\n },\n /**\n * Fire an event asynchronousl
y.\n * @method asyncFire\n * @param {string} type An event name.\n
* @param detail\n * @param {Node} toNode Target node.\n */\n asyn
cFire: function(/*inType, inDetail*/) {\n this.async(\"fire\", arguments);\
n },\n /**\n * Remove class from old, add class to anew, if they exis
t\n * @param classFollows\n * @param anew A node.\n * @param old
A node\n * @param className\n */\n classFollows: function(anew, old
, className) {\n if (old) {\n old.classList.remove(className);\n
}\n if (anew) {\n anew.classList.add(className);\n }\n }\n
};\n\n // no-operation function for handy stubs\n var nop = function() {};\n
\n // null-object for handy stubs\n var nob = {};\n\n // deprecated\n\n util
s.asyncMethod = utils.async;\n\n // exports\n\n scope.api.instance.utils = uti
ls;\n scope.nop = nop;\n scope.nob = nob;\n\n})(Polymer);\n","/*\n * Copyright
(c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may on
ly be used under the BSD style license found at http://polymer.github.io/LICENSE
.txt\n * The complete set of authors may be found at http://polymer.github.io/AU
THORS.txt\n * The complete set of contributors may be found at http://polymer.gi
thub.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer p
roject is also\n * subject to an additional IP rights grant found at http://poly
mer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n // imports\n\n var lo
g = window.logFlags || {};\n var EVENT_PREFIX = 'on-';\n\n // instance events
api\n var events = {\n // read-only\n EVENT_PREFIX: EVENT_PREFIX,\n //
event listeners on host\n addHostListeners: function() {\n var events =
this.eventDelegates;\n log.events && (Object.keys(events).length > 0) && c
onsole.log('[%s] addHostListeners:', this.localName, events);\n // NOTE: ho
st events look like bindings but really are not;\n // (1) we don't want the
attribute to be set and (2) we want to support\n // multiple event listene
rs ('host' and 'instance') and Node.bind\n // by default supports 1 thing b
eing bound.\n for (var type in events) {\n var methodName = events[t
ype];\n this.addEventListener(type, this.element.getEventHandler(this, th
is,\n methodName
));\n }\n },\n // call 'method' or function method on 'obj' with 'arg
s', if the method exists\n dispatchMethod: function(obj, method, args) {\n
if (obj) {\n log.events && console.group('[%s] dispatch [%s]', obj.loc
alName, method);\n var fn = typeof method === 'function' ? method : obj[m
ethod];\n if (fn) {\n fn[args ? 'apply' : 'call'](obj, args);\n
}\n log.events && console.groupEnd();\n Platform.flush();\n
}\n }\n };\n\n // exports\n\n scope.api.instance.events = events;\n\
n})(Polymer);\n","/*\r\n * Copyright (c) 2014 The Polymer Project Authors. All r
ights reserved.\r\n * This code may only be used under the BSD style license fou
nd at http://polymer.github.io/LICENSE.txt\r\n * The complete set of authors may
be found at http://polymer.github.io/AUTHORS.txt\r\n * The complete set of cont
ributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\r\n * Code di
stributed by Google as part of the polymer project is also\r\n * subject to an a
dditional IP rights grant found at http://polymer.github.io/PATENTS.txt\r\n */\r
\n\r\n(function(scope) {\r\n\r\n // instance api for attributes\r\n\r\n var at
tributes = {\r\n copyInstanceAttributes: function () {\r\n var a$ = this
._instanceAttributes;\r\n for (var k in a$) {\r\n if (!this.hasAttri
bute(k)) {\r\n this.setAttribute(k, a$[k]);\r\n }\r\n }\r\n
},\r\n // for each attribute on this, deserialize value to property as ne
eded\r\n takeAttributes: function() {\r\n // if we have no publish looku
p table, we have no attributes to take\r\n // TODO(sjmiles): ad hoc\r\n
if (this._publishLC) {\r\n for (var i=0, a$=this.attributes, l=a$.lengt
h, a; (a=a$[i]) && i<l; i++) {\r\n this.attributeToProperty(a.name, a.v
alue);\r\n }\r\n }\r\n },\r\n // if attribute 'name' is mapped
to a property, deserialize\r\n // 'value' into that property\r\n attribut
eToProperty: function(name, value) {\r\n // try to match this attribute to
a property (attributes are\r\n // all lower-case, so this is case-insensiti
ve search)\r\n var name = this.propertyForAttribute(name);\r\n if (nam
e) {\r\n // filter out 'mustached' values, these are to be\r\n //
replaced with bound-data and are not yet values\r\n // themselves\r\n
if (value && value.search(scope.bindPattern) >= 0) {\r\n return;\r\
n }\r\n // get original value\r\n var currentValue = this[n
ame];\r\n // deserialize Boolean or Number values from attribute\r\n
var value = this.deserializeValue(value, currentValue);\r\n // only ac
t if the value has changed\r\n if (value !== currentValue) {\r\n
// install new value (has side-effects)\r\n this[name] = value;\r\n
}\r\n }\r\n },\r\n // return the published property matching nam
e, or undefined\r\n propertyForAttribute: function(name) {\r\n var match
= this._publishLC && this._publishLC[name];\r\n //console.log('propertyFor
Attribute:', name, 'matches', match);\r\n return match;\r\n },\r\n //
convert representation of 'stringValue' based on type of 'currentValue'\r\n
deserializeValue: function(stringValue, currentValue) {\r\n return scope.de
serializeValue(stringValue, currentValue);\r\n },\r\n serializeValue: func
tion(value, inferredType) {\r\n if (inferredType === 'boolean') {\r\n
return value ? '' : undefined;\r\n } else if (inferredType !== 'object' &
& inferredType !== 'function'\r\n && value !== undefined) {\r\n
return value;\r\n }\r\n },\r\n reflectPropertyToAttribute: function(n
ame) {\r\n var inferredType = typeof this[name];\r\n // try to intelli
gently serialize property value\r\n var serializedValue = this.serializeVal
ue(this[name], inferredType);\r\n // boolean properties must reflect as boo
lean attributes\r\n if (serializedValue !== undefined) {\r\n this.se
tAttribute(name, serializedValue);\r\n // TODO(sorvell): we should remove
attr for all properties\r\n // that have undefined serialization; howeve
r, we will need to\r\n // refine the attr reflection system to achieve th
is; pica, for example,\r\n // relies on having inferredType object proper
ties not removed as\r\n // attrs.\r\n } else if (inferredType === 'b
oolean') {\r\n this.removeAttribute(name);\r\n }\r\n }\r\n };\r\
n\r\n // exports\r\n\r\n scope.api.instance.attributes = attributes;\r\n\r\n})
(Polymer);\r\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All righ
ts reserved.\n * This code may only be used under the BSD style license found at
http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be fou
nd at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors
may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed b
y Google as part of the polymer project is also\n * subject to an additional IP
rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(sco
pe) {\n\n // imports\n\n var log = window.logFlags || {};\n\n // magic words\
n\n var OBSERVE_SUFFIX = 'Changed';\n\n // element api\n\n var empty = [];\n\
n var properties = {\n createPropertyObserver: function() {\n var n$ =
this._observeNames;\n if (n$ && n$.length) {\n var o = this._propert
yObserver = new CompoundObserver(true);\n this.registerObservers([o]);\n
// TODO(sorvell): may not be kosher to access the value here (this[n]);\n
// previously we looked at the descriptor on the prototype\n // t
his doesn't work for inheritance and not for accessors without \n // a va
lue property\n for (var i=0, l=n$.length, n; (i<l) && (n=n$[i]); i++) {\n
o.addPath(this, n);\n this.observeArrayValue(n, this[n], null
);\n }\n }\n },\n openPropertyObserver: function() {\n if
(this._propertyObserver) {\n this._propertyObserver.open(this.notifyProp
ertyChanges, this);\n }\n },\n notifyPropertyChanges: function(newVal
ues, oldValues, paths) {\n var name, method, called = {};\n for (var i
in oldValues) {\n // note: paths is of form [object, path, object, path]
\n name = paths[2 * i + 1];\n method = this.observe[name];\n
if (method) {\n var ov = oldValues[i], nv = newValues[i];\n
// observes the value if it is an array\n this.observeArrayValue(name,
nv, ov);\n if (!called[method]) {\n // only invoke change me
thod if one of ov or nv is not (undefined | null)\n if ((ov !== undef
ined && ov !== null) || (nv !== undefined && nv !== null)) {\n call
ed[method] = true;\n // TODO(sorvell): call method with the set of
values it's expecting;\n // e.g. 'foo bar': 'invalidate' expects th
e new and old values for\n // foo and bar. Currently we give only o
ne of these and then\n // deliver all the arguments.\n
this.invokeMethod(method, [ov, nv, arguments]);\n }\n }\n
}\n }\n },\n deliverChanges: function() {\n if (this._prop
ertyObserver) {\n this._propertyObserver.deliver();\n }\n },\n
propertyChanged_: function(name, value, oldValue) {\n if (this.reflect[nam
e]) {\n this.reflectPropertyToAttribute(name);\n }\n },\n obse
rveArrayValue: function(name, value, old) {\n // we only care if there are
registered side-effects\n var callbackName = this.observe[name];\n if
(callbackName) {\n // if we are observing the previous value, stop\n
if (Array.isArray(old)) {\n log.observe && console.log('[%s] observe
ArrayValue: unregister observer [%s]', this.localName, name);\n this.cl
oseNamedObserver(name + '__array');\n }\n // if the new value is a
n array, being observing it\n if (Array.isArray(value)) {\n log.
observe && console.log('[%s] observeArrayValue: register observer [%s]', this.lo
calName, name, value);\n var observer = new ArrayObserver(value);\n
observer.open(function(value, old) {\n this.invokeMethod(callba
ckName, [old]);\n }, this);\n this.registerNamedObserver(name
+ '__array', observer);\n }\n }\n },\n bindProperty: function(
property, observable, oneTime) {\n if (oneTime) {\n this[property] =
observable;\n return;\n }\n return bindProperties(this, proper
ty, observable);\n },\n invokeMethod: function(method, args) {\n var
fn = this[method] || method;\n if (typeof fn === 'function') {\n fn.
apply(this, args);\n }\n },\n registerObservers: function(observers)
{\n this._observers = this._observers || [];\n this._observers.push(ob
servers);\n },\n // observer array items are arrays of observers.\n clo
seObservers: function() {\n if (!this._observers) {\n return;\n
}\n for (var i=0, l=this._observers.length; i<l; i++) {\n this.clos
eObserverArray(this._observers[i]);\n }\n this._observers = [];\n }
,\n closeObserverArray: function(observerArray) {\n for (var i=0, l=obse
rverArray.length, o; i<l; i++) {\n o = observerArray[i];\n if (o &
& o.close) {\n o.close();\n }\n }\n },\n // bookkeepi
ng observers for memory management\n registerNamedObserver: function(name, ob
server) {\n var o$ = this._namedObservers || (this._namedObservers = {});\n
o$[name] = observer;\n },\n closeNamedObserver: function(name) {\n
var o$ = this._namedObservers;\n if (o$ && o$[name]) {\n o$[name
].close();\n o$[name] = null;\n return true;\n }\n },\n
closeNamedObservers: function() {\n if (this._namedObservers) {\n f
or (var i in this._namedObservers) {\n this.closeNamedObserver(i);\n
}\n this._namedObservers = {};\n }\n }\n };\n\n // propert
y binding\n // bind a property in A to a path in B by converting A[property] to
a\n // getter/setter pair that accesses B[...path...]\n function bindProperti
es(a, property, observable) {\n // apply Polymer two-way reference binding\n
return Observer.bindToInstance(a, property, observable, resolveBindingValue);
\n }\n\n // capture A's value if B's value is null or undefined,\n // otherwi
se use B's value\n function resolveBindingValue(oldValue, value) {\n if (val
ue === undefined && oldValue === null) {\n return value;\n }\n return
(value === null || value === undefined) ? oldValue : value;\n }\n\n // loggin
g\n var LOG_OBSERVE = '[%s] watching [%s]';\n var LOG_OBSERVED = '[%s#%s] watc
h: [%s] now [%s] was [%s]';\n var LOG_CHANGED = '[%s#%s] propertyChanged: [%s]
now [%s] was [%s]';\n\n // exports\n\n scope.api.instance.properties = propert
ies;\n\n})(Polymer);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors.
All rights reserved.\n * This code may only be used under the BSD style license
found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors ma
y be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contr
ibutors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distr
ibuted by Google as part of the polymer project is also\n * subject to an additi
onal IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n(func
tion(scope) {\n\n // imports\n\n var log = window.logFlags || 0;\n\n // eleme
nt api supporting mdv\n var mdv = {\n instanceTemplate: function(template) {
\n // ensure a default bindingDelegate\n var syntax = this.syntax || (
!template.bindingDelegate &&\n this.element.syntax);\n var dom = t
emplate.createInstance(this, syntax);\n this.registerObservers(dom.bindings
_);\n return dom;\n },\n bind: function(name, observable, oneTime) {\
n var property = this.propertyForAttribute(name);\n if (!property) {\n
// TODO(sjmiles): this mixin method must use the special form\n /
/ of `super` installed by `mixinMethod` in declaration/prototype.js\n ret
urn this.mixinSuper(arguments);\n } else {\n // use n-way Polymer bi
nding\n var observer = this.bindProperty(property, observable, oneTime);\
n // NOTE: reflecting binding information is typically required only for\
n // tooling. It has a performance cost so it's opt-in in Node.bind.\n
if (Platform.enableBindingsReflection && observer) {\n observer.pa
th = observable.path_;\n this._recordBinding(property, observer);\n
}\n if (this.reflect[property]) {\n this.reflectPropertyToAt
tribute(property);\n }\n return observer;\n }\n },\n bi
ndFinished: function() {\n this.makeElementReady();\n },\n _recordBin
ding: function(name, observer) {\n this.bindings_ = this.bindings_ || {};\n
this.bindings_[name] = observer;\n },\n // TODO(sorvell): unbind/unb
indAll has been removed, as public api, from\n // TemplateBinding. We still n
eed to close/dispose of observers but perhaps\n // we should choose a more ex
plicit name.\n asyncUnbindAll: function() {\n if (!this._unbound) {\n
log.unbind && console.log('[%s] asyncUnbindAll', this.localName);\n
this._unbindAllJob = this.job(this._unbindAllJob, this.unbindAll, 0);\n }\n
},\n unbindAll: function() {\n if (!this._unbound) {\n this.c
loseObservers();\n this.closeNamedObservers();\n this._unbound = t
rue;\n }\n },\n cancelUnbindAll: function() {\n if (this._unboun
d) {\n log.unbind && console.warn('[%s] already unbound, cannot cancel un
bindAll', this.localName);\n return;\n }\n log.unbind && consol
e.log('[%s] cancelUnbindAll', this.localName);\n if (this._unbindAllJob) {\
n this._unbindAllJob = this._unbindAllJob.stop();\n }\n }\n };\n
\n function unbindNodeTree(node) {\n forNodeTree(node, _nodeUnbindAll);\n }
\n\n function _nodeUnbindAll(node) {\n node.unbindAll();\n }\n\n function
forNodeTree(node, callback) {\n if (node) {\n callback(node);\n for
(var child = node.firstChild; child; child = child.nextSibling) {\n forN
odeTree(child, callback);\n }\n }\n }\n\n var mustachePattern = /\\{\\
{([^{}]*)}}/;\n\n // exports\n\n scope.bindPattern = mustachePattern;\n scope
.api.instance.mdv = mdv;\n\n})(Polymer);\n","/*\n * Copyright (c) 2014 The Polym
er Project Authors. All rights reserved.\n * This code may only be used under th
e BSD style license found at http://polymer.github.io/LICENSE.txt\n * The comple
te set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The c
omplete set of contributors may be found at http://polymer.github.io/CONTRIBUTOR
S.txt\n * Code distributed by Google as part of the polymer project is also\n *
subject to an additional IP rights grant found at http://polymer.github.io/PATEN
TS.txt\n */\n\n(function(scope) {\n\n var base = {\n PolymerBase: true,\n
job: function(job, callback, wait) {\n if (typeof job === 'string') {\n
var n = '___' + job;\n this[n] = Polymer.job.call(this, this[n], cal
lback, wait);\n } else {\n return Polymer.job.call(this, job, callba
ck, wait);\n }\n },\n super: Polymer.super,\n // user entry point
for element has had its createdCallback called\n created: function() {\n }
,\n // user entry point for element has shadowRoot and is ready for\n // a
pi interaction\n ready: function() {\n },\n createdCallback: function()
{\n if (this.templateInstance && this.templateInstance.model) {\n c
onsole.warn('Attributes on ' + this.localName + ' were data bound ' +\n
'prior to Polymer upgrading the element. This may result in ' +\n
'incorrect binding types.');\n }\n this.created();\n this.prepare
Element();\n // TODO(sorvell): replace when ShadowDOMPolyfill issue is corr
ected\n // https://github.com/Polymer/ShadowDOM/issues/420\n if (!this
.ownerDocument.isStagingDocument || window.ShadowDOMPolyfill) {\n this.ma
keElementReady();\n }\n },\n // system entry point, do not override\n
prepareElement: function() {\n if (this._elementPrepared) {\n co
nsole.warn('Element already prepared', this.localName);\n return;\n
}\n this._elementPrepared = true;\n // storage for shadowRoots info\n
this.shadowRoots = {};\n // install property observers\n this.cre
atePropertyObserver();\n // TODO (sorvell): temporarily open observer when
created\n this.openPropertyObserver();\n // install boilerplate attrib
utes\n this.copyInstanceAttributes();\n // process input attributes\n
this.takeAttributes();\n // add event listeners\n this.addHostLis
teners();\n },\n makeElementReady: function() {\n if (this._readied)
{\n return;\n }\n this._readied = true;\n // TODO(sorvell)
: We could create an entry point here\n // for the user to compute property
values.\n // process declarative resources\n this.parseDeclarations(t
his.__proto__);\n // TODO(sorvell): CE polyfill uses unresolved attribute t
o simulate\n // :unresolved; remove this attribute to be compatible with na
tive\n // CE.\n this.removeAttribute('unresolved');\n // user ent
ry point\n this.ready();\n // TODO (sorvell): temporarily open observe
r when created\n // turn on property observation and take any initial chang
es\n //this.openPropertyObserver();\n },\n attachedCallback: function
() {\n this.cancelUnbindAll();\n // invoke user action\n if (this
.attached) {\n this.attached();\n }\n // TODO(sorvell): bc\n
if (this.enteredView) {\n this.enteredView();\n }\n // NOTE:
domReady can be used to access elements in dom (descendants, \n // ancesto
rs, siblings) such that the developer is enured to upgrade\n // ordering. I
f the element definitions have loaded, domReady\n // can be used to access
upgraded elements.\n if (!this.hasBeenAttached) {\n this.hasBeenAtta
ched = true;\n if (this.domReady) {\n this.async('domReady');\n
}\n }\n },\n detachedCallback: function() {\n if (!this.p
reventDispose) {\n this.asyncUnbindAll();\n }\n // invoke user
action\n if (this.detached) {\n this.detached();\n }\n //
TODO(sorvell): bc\n if (this.leftView) {\n this.leftView();\n }
\n },\n // TODO(sorvell): bc\n enteredViewCallback: function() {\n
this.attachedCallback();\n },\n // TODO(sorvell): bc\n leftViewCallbac
k: function() {\n this.detachedCallback();\n },\n // TODO(sorvell): b
c\n enteredDocumentCallback: function() {\n this.attachedCallback();\n
},\n // TODO(sorvell): bc\n leftDocumentCallback: function() {\n th
is.detachedCallback();\n },\n // recursive ancestral <element> initializat
ion, oldest first\n parseDeclarations: function(p) {\n if (p && p.elemen
t) {\n this.parseDeclarations(p.__proto__);\n p.parseDeclaration.c
all(this, p.element);\n }\n },\n // parse input <element> as needed,
override for custom behavior\n parseDeclaration: function(elementElement) {\n
var template = this.fetchTemplate(elementElement);\n if (template) {\
n var root = this.shadowFromTemplate(template);\n this.shadowRoots
[elementElement.name] = root;\n }\n },\n // return a shadow-root temp
late (if desired), override for custom behavior\n fetchTemplate: function(ele
mentElement) {\n return elementElement.querySelector('template');\n },\n
// utility function that creates a shadow root from a <template>\n shadow
FromTemplate: function(template) {\n if (template) {\n // make a sha
dow root\n var root = this.createShadowRoot();\n // stamp template
\n // which includes parsing and applying MDV bindings before being \n
// inserted (to avoid {{}} in attribute values)\n // e.g. to prevent
<img src=\"images/{{icon}}\"> from generating a 404.\n var dom = this.in
stanceTemplate(template);\n // append to shadow dom\n root.appendC
hild(dom);\n // perform post-construction initialization tasks on shadow
root\n this.shadowRootReady(root, template);\n // return the creat
ed shadow root\n return root;\n }\n },\n // utility function t
hat stamps a <template> into light-dom\n lightFromTemplate: function(template
, refNode) {\n if (template) {\n // TODO(sorvell): mark this element
as an eventController so that\n // event listeners on bound nodes inside
it will be called on it.\n // Note, the expectation here is that events
on all descendants \n // should be handled by this element.\n this
.eventController = this;\n // stamp template\n // which includes p
arsing and applying MDV bindings before being \n // inserted (to avoid {{
}} in attribute values)\n // e.g. to prevent <img src=\"images/{{icon}}\"
> from generating a 404.\n var dom = this.instanceTemplate(template);\n
// append to shadow dom\n if (refNode) {\n this.insertBefo
re(dom, refNode); \n } else {\n this.appendChild(dom);\
n }\n // perform post-construction initialization tasks on ahem, l
ight root\n this.shadowRootReady(this);\n // return the created sh
adow root\n return dom;\n }\n },\n shadowRootReady: function(r
oot) {\n // locate nodes with id and store references to them in this.$ has
h\n this.marshalNodeReferences(root);\n // set up polymer gestures\n
PolymerGestures.register(root);\n },\n // locate nodes with id and sto
re references to them in this.$ hash\n marshalNodeReferences: function(root)
{\n // establish $ instance variable\n var $ = this.$ = this.$ || {};\
n // populate $ from nodes with ID from the LOCAL tree\n if (root) {\n
var n$ = root.querySelectorAll(\"[id]\");\n for (var i=0, l=n$.le
ngth, n; (i<l) && (n=n$[i]); i++) {\n $[n.id] = n;\n };\n }
\n },\n attributeChangedCallback: function(name, oldValue) {\n // TOD
O(sjmiles): adhoc filter\n if (name !== 'class' && name !== 'style') {\n
this.attributeToProperty(name, this.getAttribute(name));\n }\n if
(this.attributeChanged) {\n this.attributeChanged.apply(this, arguments)
;\n }\n },\n onMutation: function(node, listener) {\n var observ
er = new MutationObserver(function(mutations) {\n listener.call(this, obs
erver, mutations);\n observer.disconnect();\n }.bind(this));\n
observer.observe(node, {childList: true, subtree: true});\n }\n };\n\n // t
rue if object has own PolymerBase api\n function isBase(object) {\n return o
bject.hasOwnProperty('PolymerBase') \n }\n\n // name a base constructor for de
v tools\n\n function PolymerBase() {};\n PolymerBase.prototype = base;\n base
.constructor = PolymerBase;\n \n // exports\n\n scope.Base = PolymerBase;\n
scope.isBase = isBase;\n scope.api.instance.base = base;\n \n})(Polymer);\n","
/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n *
This code may only be used under the BSD style license found at http://polymer.g
ithub.io/LICENSE.txt\n * The complete set of authors may be found at http://poly
mer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at h
ttp://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part
of the polymer project is also\n * subject to an additional IP rights grant foun
d at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n // imp
orts\n\n var log = window.logFlags || {};\n \n // magic words\n \n var STYL
E_SCOPE_ATTRIBUTE = 'element';\n var STYLE_CONTROLLER_SCOPE = 'controller';\n
\n var styles = {\n STYLE_SCOPE_ATTRIBUTE: STYLE_SCOPE_ATTRIBUTE,\n /**\n
* Installs external stylesheets and <style> elements with the attribute \n
* polymer-scope='controller' into the scope of element. This is intended\n
* to be a called during custom element construction.\n */\n installCont
rollerStyles: function() {\n // apply controller styles, but only if they a
re not yet applied\n var scope = this.findStyleScope();\n if (scope &&
!this.scopeHasNamedStyle(scope, this.localName)) {\n // allow inherited
controller styles\n var proto = getPrototypeOf(this), cssText = '';\n
while (proto && proto.element) {\n cssText += proto.element.cssText
ForScope(STYLE_CONTROLLER_SCOPE);\n proto = getPrototypeOf(proto);\n
}\n if (cssText) {\n this.installScopeCssText(cssText, scop
e);\n }\n }\n },\n installScopeStyle: function(style, name, sc
ope) {\n var scope = scope || this.findStyleScope(), name = name || '';\n
if (scope && !this.scopeHasNamedStyle(scope, this.localName + name)) {\n
var cssText = '';\n if (style instanceof Array) {\n for (var
i=0, l=style.length, s; (i<l) && (s=style[i]); i++) {\n cssText += s
.textContent + '\\n\\n';\n }\n } else {\n cssText = sty
le.textContent;\n }\n this.installScopeCssText(cssText, scope, nam
e);\n }\n },\n installScopeCssText: function(cssText, scope, name) {\
n scope = scope || this.findStyleScope();\n name = name || '';\n
if (!scope) {\n return;\n }\n if (window.ShadowDOMPolyfill) {\n
cssText = shimCssText(cssText, scope.host);\n }\n var style =
this.element.cssTextToScopeStyle(cssText,\n STYLE_CONTROLLER_SCOPE);\n
Polymer.applyStyleToScope(style, scope);\n // cache that this style ha
s been applied\n scope._scopeStyles[this.localName + name] = true;\n },\
n findStyleScope: function(node) {\n // find the shadow root that contai
ns this element\n var n = node || this;\n while (n.parentNode) {\n
n = n.parentNode;\n }\n return n;\n },\n scopeHasNamedStyle:
function(scope, name) {\n scope._scopeStyles = scope._scopeStyles || {};\n
return scope._scopeStyles[name];\n }\n };\n \n // NOTE: use raw prot
otype traversal so that we ensure correct traversal\n // on platforms where the
protoype chain is simulated via __proto__ (IE10)\n function getPrototypeOf(pro
totype) {\n return prototype.__proto__;\n }\n\n function shimCssText(cssTex
t, host) {\n var name = '', is = false;\n if (host) {\n name = host.l
ocalName;\n is = host.hasAttribute('is');\n }\n var selector = Platfo
rm.ShadowCSS.makeScopeSelector(name, is);\n return Platform.ShadowCSS.shimCss
Text(cssText, selector);\n }\n\n // exports\n\n scope.api.instance.styles = s
tyles;\n \n})(Polymer);\n","/*\n * Copyright (c) 2014 The Polymer Project Autho
rs. All rights reserved.\n * This code may only be used under the BSD style lice
nse found at http://polymer.github.io/LICENSE.txt\n * The complete set of author
s may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of c
ontributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code d
istributed by Google as part of the polymer project is also\n * subject to an ad
ditional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n(
function(scope) {\n\n // imports\n\n var extend = scope.extend;\n var api = s
cope.api;\n\n // imperative implementation: Polymer()\n\n // specify an 'own'
prototype for tag `name`\n function element(name, prototype) {\n if (argumen
ts.length === 1 && typeof arguments[0] !== 'string') {\n prototype = name;\
n var script = document._currentScript;\n name = script && script.pare
ntNode && script.parentNode.getAttribute ?\n script.parentNode.getAttri
bute('name') : '';\n if (!name) {\n throw 'Element name could not be
inferred.';\n }\n }\n if (getRegisteredPrototype[name]) {\n thr
ow 'Already registered (Polymer) prototype for element ' + name;\n }\n //
cache the prototype\n registerPrototype(name, prototype);\n // notify the
registrar waiting for 'name', if any\n notifyPrototype(name);\n }\n\n // as
ync prototype source\n\n function waitingForPrototype(name, client) {\n wait
Prototype[name] = client;\n }\n\n var waitPrototype = {};\n\n function notify
Prototype(name) {\n if (waitPrototype[name]) {\n waitPrototype[name].reg
isterWhenReady();\n delete waitPrototype[name];\n }\n }\n\n // utility
and bookkeeping\n\n // maps tag names to prototypes, as registered with\n //
Polymer. Prototypes associated with a tag name\n // using document.registerElem
ent are available from\n // HTMLElement.getPrototypeForTag().\n // If an eleme
nt was fully registered by Polymer, then\n // Polymer.getRegisteredPrototype(na
me) === \n // HTMLElement.getPrototypeForTag(name)\n\n var prototypesByName
= {};\n\n function registerPrototype(name, prototype) {\n return prototypesB
yName[name] = prototype || {};\n }\n\n function getRegisteredPrototype(name) {
\n return prototypesByName[name];\n }\n\n // exports\n\n scope.getRegister
edPrototype = getRegisteredPrototype;\n scope.waitingForPrototype = waitingForP
rototype;\n\n // namespace shenanigans so we can expose our scope on the regist
ration \n // function\n\n // make window.Polymer reference `element()`\n\n wi
ndow.Polymer = element;\n\n // TODO(sjmiles): find a way to do this that is les
s terrible\n // copy window.Polymer properties onto `element()`\n\n extend(Pol
ymer, scope);\n\n // Under the HTMLImports polyfill, scripts in the main docume
nt\n // do not block on imports; we want to allow calls to Polymer in the main\
n // document. Platform collects those calls until we can process them, which\n
// we do here.\n\n var declarations = Platform.deliverDeclarations();\n if (
declarations) {\n for (var i=0, l=declarations.length, d; (i<l) && (d=declara
tions[i]); i++) {\n element.apply(null, d);\n }\n }\n\n})(Polymer);\n",
"/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n *
This code may only be used under the BSD style license found at http://polymer.
github.io/LICENSE.txt\n * The complete set of authors may be found at http://pol
ymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at
http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part
of the polymer project is also\n * subject to an additional IP rights grant fou
nd at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\nvar pat
h = {\n resolveElementPaths: function(node) {\n Platform.urlResolver.resolve
Dom(node);\n },\n addResolvePathApi: function() {\n // let assetpath attrib
ute modify the resolve path\n var assetPath = this.getAttribute('assetpath')
|| '';\n var root = new URL(assetPath, this.ownerDocument.baseURI);\n this
.prototype.resolvePath = function(urlPath, base) {\n var u = new URL(urlPat
h, base || root);\n return u.href;\n };\n }\n};\n\n// exports\nscope.ap
i.declaration.path = path;\n\n})(Polymer);\n","/*\n * Copyright (c) 2014 The Pol
ymer Project Authors. All rights reserved.\n * This code may only be used under
the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The comp
lete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The
complete set of contributors may be found at http://polymer.github.io/CONTRIBUT
ORS.txt\n * Code distributed by Google as part of the polymer project is also\n
* subject to an additional IP rights grant found at http://polymer.github.io/PAT
ENTS.txt\n */\n\n(function(scope) {\n\n // imports\n\n var log = window.logFla
gs || {};\n var api = scope.api.instance.styles;\n var STYLE_SCOPE_ATTRIBUTE =
api.STYLE_SCOPE_ATTRIBUTE;\n\n // magic words\n\n var STYLE_SELECTOR = 'style
';\n var STYLE_LOADABLE_MATCH = '@import';\n var SHEET_SELECTOR = 'link[rel=st
ylesheet]';\n var STYLE_GLOBAL_SCOPE = 'global';\n var SCOPE_ATTR = 'polymer-s
cope';\n\n var styles = {\n // returns true if resources are loading\n lo
adStyles: function(callback) {\n var template = this.fetchTemplate();\n
var content = template && this.templateContent();\n if (content) {\n
this.convertSheetsToStyles(content);\n var styles = this.findLoadableS
tyles(content);\n if (styles.length) {\n var templateUrl = templ
ate.ownerDocument.baseURI;\n return Platform.styleResolver.loadStyles(s
tyles, templateUrl, callback);\n }\n }\n if (callback) {\n
callback();\n }\n },\n convertSheetsToStyles: function(root) {\n
var s$ = root.querySelectorAll(SHEET_SELECTOR);\n for (var i=0, l=s$.le
ngth, s, c; (i<l) && (s=s$[i]); i++) {\n c = createStyleElement(importRul
eForSheet(s, this.ownerDocument.baseURI),\n this.ownerDocument);\n
this.copySheetAttributes(c, s);\n s.parentNode.replaceChild(c, s);\n
}\n },\n copySheetAttributes: function(style, link) {\n for (va
r i=0, a$=link.attributes, l=a$.length, a; (a=a$[i]) && i<l; i++) {\n if
(a.name !== 'rel' && a.name !== 'href') {\n style.setAttribute(a.name,
a.value);\n }\n }\n },\n findLoadableStyles: function(root) {\
n var loadables = [];\n if (root) {\n var s$ = root.querySelect
orAll(STYLE_SELECTOR);\n for (var i=0, l=s$.length, s; (i<l) && (s=s$[i])
; i++) {\n if (s.textContent.match(STYLE_LOADABLE_MATCH)) {\n
loadables.push(s);\n }\n }\n }\n return loadables;\n
},\n /**\n * Install external stylesheets loaded in <polymer-element>
elements into the \n * element's template.\n * @param elementElement Th
e <element> element to style.\n */\n installSheets: function() {\n t
his.cacheSheets();\n this.cacheStyles();\n this.installLocalSheets();\
n this.installGlobalStyles();\n },\n /**\n * Remove all sheets fr
om element and store for later use.\n */\n cacheSheets: function() {\n
this.sheets = this.findNodes(SHEET_SELECTOR);\n this.sheets.forEach(func
tion(s) {\n if (s.parentNode) {\n s.parentNode.removeChild(s);\n
}\n });\n },\n cacheStyles: function() {\n this.styles =
this.findNodes(STYLE_SELECTOR + '[' + SCOPE_ATTR + ']');\n this.styles.for
Each(function(s) {\n if (s.parentNode) {\n s.parentNode.removeCh
ild(s);\n }\n });\n },\n /**\n * Takes external stylesheet
s loaded in an <element> element and moves\n * their content into a <style>
element inside the <element>'s template.\n * The sheet is then removed from
the <element>. This is done only so \n * that if the element is loaded in th
e main document, the sheet does\n * not become active.\n * Note, ignores
sheets with the attribute 'polymer-scope'.\n * @param elementElement The <e
lement> element to style.\n */\n installLocalSheets: function () {\n
var sheets = this.sheets.filter(function(s) {\n return !s.hasAttribute(S
COPE_ATTR);\n });\n var content = this.templateContent();\n if (c
ontent) {\n var cssText = '';\n sheets.forEach(function(sheet) {\n
cssText += cssTextFromSheet(sheet) + '\\n';\n });\n if (
cssText) {\n var style = createStyleElement(cssText, this.ownerDocument
);\n content.insertBefore(style, content.firstChild);\n }\n
}\n },\n findNodes: function(selector, matcher) {\n var nodes = this
.querySelectorAll(selector).array();\n var content = this.templateContent()
;\n if (content) {\n var templateNodes = content.querySelectorAll(se
lector).array();\n nodes = nodes.concat(templateNodes);\n }\n r
eturn matcher ? nodes.filter(matcher) : nodes;\n },\n /**\n * Promotes
external stylesheets and <style> elements with the attribute \n * polymer-s
cope='global' into global scope.\n * This is particularly useful for definin
g @keyframe rules which \n * currently do not function in scoped or shadow s
tyle elements.\n * (See wkb.ug/72462)\n * @param elementElement The <ele
ment> element to style.\n */\n // TODO(sorvell): remove when wkb.ug/72462
is addressed.\n installGlobalStyles: function() {\n var style = this.sty
leForScope(STYLE_GLOBAL_SCOPE);\n applyStyleToScope(style, document.head);\
n },\n cssTextForScope: function(scopeDescriptor) {\n var cssText = '
';\n // handle stylesheets\n var selector = '[' + SCOPE_ATTR + '=' + s
copeDescriptor + ']';\n var matcher = function(s) {\n return matches
Selector(s, selector);\n };\n var sheets = this.sheets.filter(matcher)
;\n sheets.forEach(function(sheet) {\n cssText += cssTextFromSheet(s
heet) + '\\n\\n';\n });\n // handle cached style elements\n var s
tyles = this.styles.filter(matcher);\n styles.forEach(function(style) {\n
cssText += style.textContent + '\\n\\n';\n });\n return cssText;
\n },\n styleForScope: function(scopeDescriptor) {\n var cssText = th
is.cssTextForScope(scopeDescriptor);\n return this.cssTextToScopeStyle(cssT
ext, scopeDescriptor);\n },\n cssTextToScopeStyle: function(cssText, scope
Descriptor) {\n if (cssText) {\n var style = createStyleElement(cssT
ext);\n style.setAttribute(STYLE_SCOPE_ATTRIBUTE, this.getAttribute('name
') +\n '-' + scopeDescriptor);\n return style;\n }\n }
\n };\n\n function importRuleForSheet(sheet, baseUrl) {\n var href = new UR
L(sheet.getAttribute('href'), baseUrl).href;\n return '@import \\'' + href +
'\\';';\n }\n\n function applyStyleToScope(style, scope) {\n if (style) {\n
if (scope === document) {\n scope = document.head;\n }\n
if (window.ShadowDOMPolyfill) {\n scope = document.head;\n }\n
// TODO(sorvell): necessary for IE\n // see https://connect.microsoft.com/I
E/feedback/details/790212/\n // cloning-a-style-element-and-adding-to-docum
ent-produces\n // -unexpected-result#details\n // var clone = style.cl
oneNode(true);\n var clone = createStyleElement(style.textContent);\n
var attr = style.getAttribute(STYLE_SCOPE_ATTRIBUTE);\n if (attr) {\n
clone.setAttribute(STYLE_SCOPE_ATTRIBUTE, attr);\n }\n // TODO(sorve
ll): probably too brittle; try to figure out \n // where to put the element
.\n var refNode = scope.firstElementChild;\n if (scope === document.he
ad) {\n var selector = 'style[' + STYLE_SCOPE_ATTRIBUTE + ']';\n v
ar s$ = document.head.querySelectorAll(selector);\n if (s$.length) {\n
refNode = s$[s$.length-1].nextElementSibling;\n }\n }\n
scope.insertBefore(clone, refNode);\n }\n }\n\n function createStyleElement
(cssText, scope) {\n scope = scope || document;\n scope = scope.createElem
ent ? scope : scope.ownerDocument;\n var style = scope.createElement('style')
;\n style.textContent = cssText;\n return style;\n }\n\n function cssTex
tFromSheet(sheet) {\n return (sheet && sheet.__resource) || '';\n }\n\n fun
ction matchesSelector(node, inSelector) {\n if (matches) {\n return matc
hes.call(node, inSelector);\n }\n }\n var p = HTMLElement.prototype;\n var
matches = p.matches || p.matchesSelector || p.webkitMatchesSelector \n ||
p.mozMatchesSelector;\n \n // exports\n\n scope.api.declaration.styles = styl
es;\n scope.applyStyleToScope = applyStyleToScope;\n \n})(Polymer);\n","/*\n *
Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This c
ode may only be used under the BSD style license found at http://polymer.github.
io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.gi
thub.io/AUTHORS.txt\n * The complete set of contributors may be found at http://
polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the
polymer project is also\n * subject to an additional IP rights grant found at h
ttp://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n // imports\n
\n var log = window.logFlags || {};\n var api = scope.api.instance.events;\n
var EVENT_PREFIX = api.EVENT_PREFIX;\n // polymer-element declarative api: even
ts feature\n\n var mixedCaseEventTypes = {};\n [\n 'webkitAnimationStart',\
n 'webkitAnimationEnd',\n 'webkitTransitionEnd',\n 'DOMFocusOut',\n
'DOMFocusIn',\n 'DOMMouseScroll'\n ].forEach(function(e) {\n mixedCaseEve
ntTypes[e.toLowerCase()] = e;\n });\n\n var events = {\n parseHostEvents: f
unction() {\n // our delegates map\n var delegates = this.prototype.ev
entDelegates;\n // extract data from attributes into delegates\n this.
addAttributeDelegates(delegates);\n },\n addAttributeDelegates: function(d
elegates) {\n // for each attribute\n for (var i=0, a; a=this.attribut
es[i]; i++) {\n // does it have magic marker identifying it as an event d
elegate?\n if (this.hasEventPrefix(a.name)) {\n // if so, add th
e info to delegates\n delegates[this.removeEventPrefix(a.name)] = a.val
ue.replace('{{', '')\n .replace('}}', '').trim();\n }\n
}\n },\n // starts with 'on-'\n hasEventPrefix: function (n) {\n
return n && (n[0] === 'o') && (n[1] === 'n') && (n[2] === '-');\n },\n rem
oveEventPrefix: function(n) {\n return n.slice(prefixLength);\n },\n
findController: function(node) {\n while (node.parentNode) {\n if (n
ode.eventController) {\n return node.eventController;\n }\n
node = node.parentNode;\n }\n return node.host;\n },\n getEve
ntHandler: function(controller, target, method) {\n var events = this;\n
return function(e) {\n if (!controller || !controller.PolymerBase) {\n
controller = events.findController(target);\n }\n\n var
args = [e, e.detail, e.currentTarget];\n controller.dispatchMethod(contro
ller, method, args);\n };\n },\n prepareEventBinding: function(pathSt
ring, name, node) {\n if (!this.hasEventPrefix(name))\n return;\n\n
var eventType = this.removeEventPrefix(name);\n eventType = mixedCaseE
ventTypes[eventType] || eventType;\n\n var events = this;\n\n return f
unction(model, node, oneTime) {\n var handler = events.getEventHandler(un
defined, node, pathString);\n node.addEventListener(eventType, handler);\
n\n if (oneTime)\n return;\n\n // TODO(rafaelw): This is
really pointless work. Aside from the cost\n // of these allocations, Nod
eBind is going to setAttribute back to its\n // current value. Fixing thi
s would mean changing the TemplateBinding\n // binding delegate API.\n
function bindingValue() {\n return '{{ ' + pathString + ' }}';\n
}\n\n return {\n open: bindingValue,\n discardCha
nges: bindingValue,\n close: function() {\n node.removeEvent
Listener(eventType, handler);\n }\n };\n };\n }\n };\n\
n var prefixLength = EVENT_PREFIX.length;\n\n // exports\n scope.api.declarat
ion.events = events;\n\n})(Polymer);\n","/*\n * Copyright (c) 2014 The Polymer P
roject Authors. All rights reserved.\n * This code may only be used under the BS
D style license found at http://polymer.github.io/LICENSE.txt\n * The complete s
et of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The compl
ete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.tx
t\n * Code distributed by Google as part of the polymer project is also\n * subj
ect to an additional IP rights grant found at http://polymer.github.io/PATENTS.t
xt\n */\n\n(function(scope) {\n\n // element api\n\n var properties = {\n i
nferObservers: function(prototype) {\n // called before prototype.observe i
s chained to inherited object\n var observe = prototype.observe, property;\
n for (var n in prototype) {\n if (n.slice(-7) === 'Changed') {\n
if (!observe) {\n observe = (prototype.observe = {});\n
}\n property = n.slice(0, -7)\n observe[property] = observ
e[property] || n;\n }\n }\n },\n explodeObservers: function(pr
ototype) {\n // called before prototype.observe is chained to inherited obj
ect\n var o = prototype.observe;\n if (o) {\n var exploded = {}
;\n for (var n in o) {\n var names = n.split(' ');\n fo
r (var i=0, ni; ni=names[i]; i++) {\n exploded[ni] = o[n];\n
}\n }\n prototype.observe = exploded;\n }\n },\n optim
izePropertyMaps: function(prototype) {\n if (prototype.observe) {\n
// construct name list\n var a = prototype._observeNames = [];\n f
or (var n in prototype.observe) {\n var names = n.split(' ');\n
for (var i=0, ni; ni=names[i]; i++) {\n a.push(ni);\n }\n
}\n }\n if (prototype.publish) {\n // construct name lis
t\n var a = prototype._publishNames = [];\n for (var n in prototyp
e.publish) {\n a.push(n);\n }\n }\n },\n publishPrope
rties: function(prototype, base) {\n // if we have any properties to publis
h\n var publish = prototype.publish;\n if (publish) {\n // tran
scribe `publish` entries onto own prototype\n this.requireProperties(publ
ish, prototype, base);\n // construct map of lower-cased property names\n
prototype._publishLC = this.lowerCaseMap(publish);\n }\n },\n
// sync prototype to property descriptors; \n // desriptor format contains d
efault value and optionally a \n // hint for reflecting the property to an at
tribute.\n // e.g. {foo: 5, bar: {value: true, reflect: true}}\n // reflec
t: {foo: true} is also supported\n // \n requireProperties: function(prope
rtyDescriptors, prototype, base) {\n // reflected properties\n prototy
pe.reflect = prototype.reflect || {};\n // ensure a prototype value for eac
h property\n // and update the property's reflect to attribute status \n
for (var n in propertyDescriptors) {\n var propertyDescriptor = proper
tyDescriptors[n];\n var reflects = this.reflectHintForDescriptor(property
Descriptor);\n if (prototype.reflect[n] === undefined && reflects !== und
efined) {\n prototype.reflect[n] = reflects;\n }\n if (pr
ototype[n] === undefined) {\n prototype[n] = this.valueForDescriptor(pr
opertyDescriptor); \n }\n }\n },\n valueForDescriptor: functio
n(propertyDescriptor) {\n var value = typeof propertyDescriptor === 'object
' && \n propertyDescriptor ? propertyDescriptor.value : propertyDescrip
tor;\n return value !== undefined ? value : null;\n },\n // returns t
he value of the descriptor's 'reflect' property or undefined\n reflectHintFor
Descriptor: function(propertyDescriptor) {\n if (typeof propertyDescriptor
=== 'object' &&\n propertyDescriptor && propertyDescriptor.reflect !==
undefined) {\n return propertyDescriptor.reflect;\n }\n },\n l
owerCaseMap: function(properties) {\n var map = {};\n for (var n in pr
operties) {\n map[n.toLowerCase()] = n;\n }\n return map;\n
},\n createPropertyAccessors: function(prototype) {\n var n$ = prototype
._publishNames;\n if (n$ && n$.length) {\n for (var i=0, l=n$.length
, n, fn; (i<l) && (n=n$[i]); i++) {\n Observer.createBindablePrototypeA
ccessor(prototype, n);\n }\n }\n }\n };\n\n // exports\n\n sco
pe.api.declaration.properties = properties;\n\n})(Polymer);\n","/*\n * Copyright
(c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may on
ly be used under the BSD style license found at http://polymer.github.io/LICENSE
.txt\n * The complete set of authors may be found at http://polymer.github.io/AU
THORS.txt\n * The complete set of contributors may be found at http://polymer.gi
thub.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer p
roject is also\n * subject to an additional IP rights grant found at http://poly
mer.github.io/PATENTS.txt\n */\n(function(scope) {\n\n // magic words\n\n var
ATTRIBUTES_ATTRIBUTE = 'attributes';\n var ATTRIBUTES_REGEX = /\\s|,/;\n\n //
attributes api\n\n var attributes = {\n \n inheritAttributesObjects: func
tion(prototype) {\n // chain our lower-cased publish map to the inherited v
ersion\n this.inheritObject(prototype, 'publishLC');\n // chain our in
stance attributes map to the inherited version\n this.inheritObject(prototy
pe, '_instanceAttributes');\n },\n\n publishAttributes: function(prototype
, base) {\n // merge names from 'attributes' attribute\n var attribute
s = this.getAttribute(ATTRIBUTES_ATTRIBUTE);\n if (attributes) {\n /
/ get properties to publish\n var publish = prototype.publish || (prototy
pe.publish = {});\n // names='a b c' or names='a,b,c'\n var names
= attributes.split(ATTRIBUTES_REGEX);\n // record each name for publishin
g\n for (var i=0, l=names.length, n; i<l; i++) {\n // remove exc
ess ws\n n = names[i].trim();\n // do not override explicit en
tries\n if (n && publish[n] === undefined && base[n] === undefined) {\n
// supply an empty 'descriptor' object and let the publishProperties
\n // code determine a default\n publish[n] = Polymer.nob;
\n }\n }\n }\n },\n\n // record clonable attributes f
rom <element>\n accumulateInstanceAttributes: function() {\n // inherit
instance attributes\n var clonable = this.prototype._instanceAttributes;\n
// merge attributes from element\n var a$ = this.attributes;\n fo
r (var i=0, l=a$.length, a; (i<l) && (a=a$[i]); i++) { \n if (this.isIns
tanceAttribute(a.name)) {\n clonable[a.name] = a.value;\n }\n
}\n },\n\n isInstanceAttribute: function(name) {\n return !this.bl
ackList[name] && name.slice(0,3) !== 'on-';\n },\n\n // do not clone these
attributes onto instances\n blackList: {\n name: 1,\n 'extends': 1
,\n constructor: 1,\n noscript: 1,\n assetpath: 1,\n 'cache-
csstext': 1\n }\n \n };\n\n // add ATTRIBUTES_ATTRIBUTE to the blacklist
\n attributes.blackList[ATTRIBUTES_ATTRIBUTE] = 1;\n\n // exports\n\n scope.a
pi.declaration.attributes = attributes;\n\n})(Polymer);\n","/*\n * Copyright (c)
2014 The Polymer Project Authors. All rights reserved.\n * This code may only b
e used under the BSD style license found at http://polymer.github.io/LICENSE.txt
\n * The complete set of authors may be found at http://polymer.github.io/AUTHOR
S.txt\n * The complete set of contributors may be found at http://polymer.github
.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer proje
ct is also\n * subject to an additional IP rights grant found at http://polymer.
github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n // imports\n var events =
scope.api.declaration.events;\n\n var syntax = new PolymerExpressions();\n va
r prepareBinding = syntax.prepareBinding;\n\n // Polymer takes a first crack at
the binding to see if it's a declarative\n // event handler.\n syntax.prepare
Binding = function(pathString, name, node) {\n return events.prepareEventBind
ing(pathString, name, node) ||\n prepareBinding.call(syntax, pathStrin
g, name, node);\n };\n\n // declaration api supporting mdv\n var mdv = {\n
syntax: syntax,\n fetchTemplate: function() {\n return this.querySelect
or('template');\n },\n templateContent: function() {\n var template =
this.fetchTemplate();\n return template && Platform.templateContent(templa
te);\n },\n installBindingDelegate: function(template) {\n if (templa
te) {\n template.bindingDelegate = this.syntax;\n }\n }\n };\n\n
// exports\n scope.api.declaration.mdv = mdv;\n\n})(Polymer);\n","/*\n * Copy
right (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code m
ay only be used under the BSD style license found at http://polymer.github.io/LI
CENSE.txt\n * The complete set of authors may be found at http://polymer.github.
io/AUTHORS.txt\n * The complete set of contributors may be found at http://polym
er.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the poly
mer project is also\n * subject to an additional IP rights grant found at http:/
/polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n // imports\n \n
var api = scope.api;\n var isBase = scope.isBase;\n var extend = scope.extend
;\n\n // prototype api\n\n var prototype = {\n\n register: function(name, e
xtendeeName) {\n // build prototype combining extendee, Polymer base, and n
amed api\n this.buildPrototype(name, extendeeName);\n // register our
custom element with the platform\n this.registerPrototype(name, extendeeNam
e);\n // reference constructor in a global named by 'constructor' attribute
\n this.publishConstructor();\n },\n\n buildPrototype: function(name,
extendeeName) {\n // get our custom prototype (before chaining)\n var
extension = scope.getRegisteredPrototype(name);\n // get basal prototype\n
var base = this.generateBasePrototype(extendeeName);\n // implement d
eclarative features\n this.desugarBeforeChaining(extension, base);\n /
/ join prototypes\n this.prototype = this.chainPrototypes(extension, base);
\n // more declarative features\n this.desugarAfterChaining(name, exte
ndeeName);\n },\n\n desugarBeforeChaining: function(prototype, base) {\n
// back reference declaration element\n // TODO(sjmiles): replace `elem
ent` with `elementElement` or `declaration`\n prototype.element = this;\n
// transcribe `attributes` declarations onto own prototype's `publish`\n
this.publishAttributes(prototype, base);\n // `publish` properties to the
prototype and to attribute watch\n this.publishProperties(prototype, base)
;\n // infer observers for `observe` list based on method names\n this
.inferObservers(prototype);\n // desugar compound observer syntax, e.g. 'a
b c' \n this.explodeObservers(prototype);\n },\n\n chainPrototypes: f
unction(prototype, base) {\n // chain various meta-data objects to inherite
d versions\n this.inheritMetaData(prototype, base);\n // chain custom
api to inherited\n var chained = this.chainObject(prototype, base);\n
// x-platform fixup\n ensurePrototypeTraversal(chained);\n return chai
ned;\n },\n\n inheritMetaData: function(prototype, base) {\n // chain
observe object to inherited\n this.inheritObject('observe', prototype, bas
e);\n // chain publish object to inherited\n this.inheritObject('publi
sh', prototype, base);\n // chain reflect object to inherited\n this.i
nheritObject('reflect', prototype, base);\n // chain our lower-cased publis
h map to the inherited version\n this.inheritObject('_publishLC', prototype
, base);\n // chain our instance attributes map to the inherited version\n
this.inheritObject('_instanceAttributes', prototype, base);\n // chain
our event delegates map to the inherited version\n this.inheritObject('eve
ntDelegates', prototype, base);\n },\n\n // implement various declarative
features\n desugarAfterChaining: function(name, extendee) {\n // build s
ide-chained lists to optimize iterations\n this.optimizePropertyMaps(this.p
rototype);\n this.createPropertyAccessors(this.prototype);\n // instal
l mdv delegate on template\n this.installBindingDelegate(this.fetchTemplate
());\n // install external stylesheets as if they are inline\n this.in
stallSheets();\n // adjust any paths in dom from imports\n this.resolv
eElementPaths(this);\n // compile list of attributes to copy to instances\n
this.accumulateInstanceAttributes();\n // parse on-* delegates declar
ed on `this` element\n this.parseHostEvents();\n //\n // install
a helper method this.resolvePath to aid in \n // setting resource urls. e.g
.\n // this.$.image.src = this.resolvePath('images/foo.png')\n this.ad
dResolvePathApi();\n // under ShadowDOMPolyfill, transforms to approximate
missing CSS features\n if (window.ShadowDOMPolyfill) {\n Platform.Sh
adowCSS.shimStyling(this.templateContent(), name, extendee);\n }\n //
allow custom element access to the declarative context\n if (this.prototype
.registerCallback) {\n this.prototype.registerCallback(this);\n }\n
},\n\n // if a named constructor is requested in element, map a reference\
n // to the constructor to the given symbol\n publishConstructor: function
() {\n var symbol = this.getAttribute('constructor');\n if (symbol) {\
n window[symbol] = this.ctor;\n }\n },\n\n // build prototype
combining extendee, Polymer base, and named api\n generateBasePrototype: func
tion(extnds) {\n var prototype = this.findBasePrototype(extnds);\n if
(!prototype) {\n // create a prototype based on tag-name extension\n
var prototype = HTMLElement.getPrototypeForTag(extnds);\n // insert ba
se api in inheritance chain (if needed)\n prototype = this.ensureBaseApi(
prototype);\n // memoize this base\n memoizedBases[extnds] = proto
type;\n }\n return prototype;\n },\n\n findBasePrototype: functi
on(name) {\n return memoizedBases[name];\n },\n\n // install Polymer
instance api into prototype chain, as needed \n ensureBaseApi: function(proto
type) {\n if (prototype.PolymerBase) {\n return prototype;\n }\
n var extended = Object.create(prototype);\n // we need a unique copy
of base api for each base prototype\n // therefore we 'extend' here instead
of simply chaining\n api.publish(api.instance, extended);\n // TODO(s
jmiles): sharing methods across prototype chains is\n // not supported by '
super' implementation which optimizes\n // by memoizing prototype relations
hips.\n // Probably we should have a version of 'extend' that is \n //
share-aware: it could study the text of each function,\n // look for usage
of 'super', and wrap those functions in\n // closures.\n // As of now
, there is only one problematic method, so \n // we just patch it manually.
\n // To avoid re-entrancy problems, the special super method\n // ins
talled is called `mixinSuper` and the mixin method\n // must use this metho
d instead of the default `super`.\n this.mixinMethod(extended, prototype, a
pi.instance.mdv, 'bind');\n // return buffed-up prototype\n return ext
ended;\n },\n\n mixinMethod: function(extended, prototype, api, name) {\n
var $super = function(args) {\n return prototype[name].apply(this, a
rgs);\n };\n extended[name] = function() {\n this.mixinSuper =
$super;\n return api[name].apply(this, arguments);\n }\n },\n\n
// ensure prototype[name] inherits from a prototype.prototype[name]\n inher
itObject: function(name, prototype, base) {\n // require an object\n v
ar source = prototype[name] || {};\n // chain inherited properties onto a n
ew object\n prototype[name] = this.chainObject(source, base[name]);\n },
\n\n // register 'prototype' to custom element 'name', store constructor \n
registerPrototype: function(name, extendee) { \n var info = {\n pr
ototype: this.prototype\n }\n // native element must be specified in e
xtends\n var typeExtension = this.findTypeExtension(extendee);\n if (t
ypeExtension) {\n info.extends = typeExtension;\n }\n // regist
er the prototype with HTMLElement for name lookup\n HTMLElement.register(na
me, this.prototype);\n // register the custom type\n this.ctor = docum
ent.registerElement(name, info);\n },\n\n findTypeExtension: function(name
) {\n if (name && name.indexOf('-') < 0) {\n return name;\n } e
lse {\n var p = this.findBasePrototype(name);\n if (p.element) {\n
return this.findTypeExtension(p.element.extends);\n }\n }\
n }\n\n };\n\n // memoize base prototypes\n var memoizedBases = {};\n\n /
/ implementation of 'chainObject' depends on support for __proto__\n if (Object
.__proto__) {\n prototype.chainObject = function(object, inherited) {\n
if (object && inherited && object !== inherited) {\n object.__proto__ = i
nherited;\n }\n return object;\n }\n } else {\n prototype.chain
Object = function(object, inherited) {\n if (object && inherited && object
!== inherited) {\n var chained = Object.create(inherited);\n objec
t = extend(chained, object);\n }\n return object;\n }\n }\n\n //
On platforms that do not support __proto__ (versions of IE), the prototype\n //
chain of a custom element is simulated via installation of __proto__.\n // Alt
hough custom elements manages this, we install it here so it's\n // available d
uring desugaring.\n function ensurePrototypeTraversal(prototype) {\n if (!Ob
ject.__proto__) {\n var ancestor = Object.getPrototypeOf(prototype);\n
prototype.__proto__ = ancestor;\n if (isBase(ancestor)) {\n ancesto
r.__proto__ = Object.getPrototypeOf(ancestor);\n }\n }\n }\n\n // expo
rts\n\n api.declaration.prototype = prototype;\n\n})(Polymer);\n","/*\n * Copyr
ight (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code ma
y only be used under the BSD style license found at http://polymer.github.io/LIC
ENSE.txt\n * The complete set of authors may be found at http://polymer.github.i
o/AUTHORS.txt\n * The complete set of contributors may be found at http://polyme
r.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polym
er project is also\n * subject to an additional IP rights grant found at http://
polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n /*\n\n Elements
are added to a registration queue so that they register in \n the proper ord
er at the appropriate time. We do this for a few reasons:\n\n * to enable ele
ments to load resources (like stylesheets) \n asynchronously. We need to do t
his until the platform provides an efficient\n alternative. One issue is that
remote @import stylesheets are \n re-fetched whenever stamped into a shadowR
oot.\n\n * to ensure elements loaded 'at the same time' (e.g. via some set of
\n imports) are registered as a batch. This allows elements to be enured from
\n upgrade ordering as long as they query the dom tree 1 task after\n upgr
ade (aka domReady). This is a performance tradeoff. On the one hand,\n elemen
ts that could register while imports are loading are prevented from \n doing
so. On the other, grouping upgrades into a single task means less\n increment
al work (for example style recalcs), Also, we can ensure the \n document is
in a known state at the single quantum of time when \n elements upgrade.\n\n
*/\n var queue = {\n // tell the queue to wait for an element to be ready\n
wait: function(element, check, go) {\n var shouldAdd = (this.indexOf(el
ement) === -1 && \n flushQueue.indexOf(element) === -1);\n if (sho
uldAdd) {\n this.add(element);\n element.__check = check;\n
element.__go = go;\n }\n return (this.indexOf(element) !== 0);\n }
,\n add: function(element) {\n //console.log('queueing', element.name);\
n queueForElement(element).push(element);\n },\n indexOf: function(el
ement) {\n var i = queueForElement(element).indexOf(element);\n if (i
>= 0 && document.contains(element)) {\n i += (HTMLImports.useNative || HT
MLImports.ready) ? \n importQueue.length : 1e9;\n }\n return
i; \n },\n // tell the queue an element is ready to be registered\n go
: function(element) {\n var readied = this.remove(element);\n if (read
ied) {\n this.addToFlushQueue(readied);\n this.check();\n }\n
},\n remove: function(element) {\n var i = this.indexOf(element);\n
if (i !== 0) {\n //console.warn('queue order wrong', i);\n re
turn;\n }\n return queueForElement(element).shift();\n },\n chec
k: function() {\n // next\n var element = this.nextElement();\n i
f (element) {\n element.__check.call(element);\n }\n if (this.c
anReady()) {\n this.ready();\n return true;\n }\n },\n
nextElement: function() {\n return nextQueued();\n },\n canReady: fun
ction() {\n return !this.waitToReady && this.isEmpty();\n },\n isEmpt
y: function() {\n return !importQueue.length && !mainQueue.length;\n },\
n addToFlushQueue: function(element) {\n flushQueue.push(element); \n
},\n flush: function() {\n var element;\n while (flushQueue.lengt
h) {\n element = flushQueue.shift();\n element.__go.call(element);
\n element.__check = element.__go = null;\n }\n },\n ready: fu
nction() {\n this.flush();\n // TODO(sorvell): As an optimization, tur
n off CE polyfill upgrading\n // while registering. This way we avoid havin
g to upgrade each document\n // piecemeal per registration and can instead
register all elements\n // and upgrade once in a batch. Without this optimi
zation, upgrade time\n // degrades significantly when SD polyfill is used.
This is mainly because\n // querying the document tree for elements is slow
under the SD polyfill.\n if (CustomElements.ready === false) {\n Cu
stomElements.upgradeDocumentTree(document);\n CustomElements.ready = true
;\n }\n Platform.flush();\n requestAnimationFrame(this.flushReady
Callbacks);\n },\n addReadyCallback: function(callback) {\n if (callb
ack) {\n readyCallbacks.push(callback);\n }\n },\n flushReadyC
allbacks: function() {\n if (readyCallbacks) {\n var fn;\n wh
ile (readyCallbacks.length) {\n fn = readyCallbacks.shift();\n
fn();\n }\n }\n },\n waitToReady: true\n };\n\n var flushQu
eue = [];\n\n var importQueue = [];\n var mainQueue = [];\n var readyCallback
s = [];\n\n function queueForElement(element) {\n return document.contains(e
lement) ? mainQueue : importQueue;\n }\n\n function nextQueued() {\n return
importQueue.length ? importQueue[0] : mainQueue[0];\n }\n\n var polymerReadie
d = false; \n\n document.addEventListener('WebComponentsReady', function() {\n
CustomElements.ready = false;\n });\n \n function whenPolymerReady(callbac
k) {\n queue.waitToReady = true;\n CustomElements.ready = false;\n HTML
Imports.whenImportsReady(function() {\n queue.addReadyCallback(callback);\n
queue.waitToReady = false;\n queue.check();\n });\n }\n\n // exp
orts\n scope.queue = queue;\n scope.whenPolymerReady = whenPolymerReady;\n})(P
olymer);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights r
eserved.\n * This code may only be used under the BSD style license found at htt
p://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found a
t http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may
be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Go
ogle as part of the polymer project is also\n * subject to an additional IP righ
ts grant found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope)
{\n\n var whenPolymerReady = scope.whenPolymerReady;\n\n function importElemen
ts(elementOrFragment, callback) {\n if (elementOrFragment) {\n document.
head.appendChild(elementOrFragment);\n whenPolymerReady(callback);\n } e
lse if (callback) {\n callback();\n }\n }\n\n function importUrls(urls
, callback) {\n if (urls && urls.length) {\n var frag = document.creat
eDocumentFragment();\n for (var i=0, l=urls.length, url, link; (i<l) && (
url=urls[i]); i++) {\n link = document.createElement('link');\n
link.rel = 'import';\n link.href = url;\n frag.appendChild(l
ink);\n }\n importElements(frag, callback);\n } else if (callba
ck) {\n callback();\n }\n }\n\n // exports\n scope.import = importUrl
s;\n scope.importElements = importElements;\n\n})(Polymer);\n","/*\n * Copyrigh
t (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may o
nly be used under the BSD style license found at http://polymer.github.io/LICENS
E.txt\n * The complete set of authors may be found at http://polymer.github.io/A
UTHORS.txt\n * The complete set of contributors may be found at http://polymer.g
ithub.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer
project is also\n * subject to an additional IP rights grant found at http://pol
ymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n // imports\n\n var e
xtend = scope.extend;\n var api = scope.api;\n var queue = scope.queue;\n var
whenPolymerReady = scope.whenPolymerReady;\n var getRegisteredPrototype = scop
e.getRegisteredPrototype;\n var waitingForPrototype = scope.waitingForPrototype
;\n\n // declarative implementation: <polymer-element>\n\n var prototype = ext
end(Object.create(HTMLElement.prototype), {\n\n createdCallback: function() {
\n if (this.getAttribute('name')) {\n this.init();\n }\n },\
n\n init: function() {\n // fetch declared values\n this.name = thi
s.getAttribute('name');\n this.extends = this.getAttribute('extends');\n
// initiate any async resource fetches\n this.loadResources();\n //
register when all constraints are met\n this.registerWhenReady();\n },\
n\n registerWhenReady: function() {\n if (this.registered\n || this
.waitingForPrototype(this.name)\n || this.waitingForQueue()\n || thi
s.waitingForResources()) {\n return;\n }\n // TODO(sorvell):
ends up calling '_register' by virtue\n // of `waitingForQueue` (see below)
\n queue.go(this);\n },\n\n // TODO(sorvell): refactor, this method i
s private-ish, but it's being\n // called by the queue object.\n _register
: function() {\n //console.log('registering', this.name);\n //console.
group('registering', this.name);\n // warn if extending from a custom eleme
nt not registered via Polymer\n if (isCustomTag(this.extends) && !isRegiste
red(this.extends)) {\n console.warn('%s is attempting to extend %s, an un
registered element ' +\n 'or one that was not registered with Polymer
.', this.name,\n this.extends);\n }\n this.register(this.na
me, this.extends);\n this.registered = true;\n //console.groupEnd();\n
},\n\n waitingForPrototype: function(name) {\n if (!getRegisteredPro
totype(name)) {\n // then wait for a prototype\n waitingForPrototy
pe(name, this);\n // emulate script if user is not supplying one\n
this.handleNoScript(name);\n // prototype not ready yet\n return
true;\n }\n },\n\n handleNoScript: function(name) {\n // if expl
icitly marked as 'noscript'\n if (this.hasAttribute('noscript') && !this.no
script) {\n this.noscript = true;\n // TODO(sorvell): CustomElemen
ts polyfill awareness:\n // noscript elements should upgrade in logical o
rder\n // script injection ensures this under native custom elements;\n
// under imports + ce polyfills, scripts run before upgrades.\n //
dependencies should be ready at upgrade time so register\n // prototype a
t this time.\n if (window.CustomElements && !CustomElements.useNative) {\
n Polymer(name);\n } else {\n var script = document.cre
ateElement('script');\n script.textContent = 'Polymer(\\'' + name + '\\
');';\n this.appendChild(script);\n }\n }\n },\n\n wa
itingForResources: function() {\n return this._needsResources;\n },\n\n
// NOTE: Elements must be queued in proper order for inheritance/composition\
n // dependency resolution. Previously this was enforced for inheritance,\n
// and by rule for composition. It's now entirely by rule.\n waitingForQueu
e: function() {\n return queue.wait(this, this.registerWhenReady, this._reg
ister);\n },\n\n loadResources: function() {\n this._needsResources =
true;\n this.loadStyles(function() {\n this._needsResources = false
;\n this.registerWhenReady();\n }.bind(this));\n }\n\n });\n\n
// semi-pluggable APIs \n\n // TODO(sjmiles): should be fully pluggable (aka de
coupled, currently\n // the various plugins are allowed to depend on each other
directly)\n api.publish(api.declaration, prototype);\n\n // utility and bookk
eeping\n\n function isRegistered(name) {\n return Boolean(HTMLElement.getPro
totypeForTag(name));\n }\n\n function isCustomTag(name) {\n return (name &&
name.indexOf('-') >= 0);\n }\n\n // boot tasks\n\n whenPolymerReady(function
() {\n document.body.removeAttribute('unresolved');\n document.dispatchEve
nt(\n new CustomEvent('polymer-ready', {bubbles: true})\n );\n });\n\n
// register polymer-element with document\n\n document.registerElement('polyme
r-element', {prototype: prototype});\n\n})(Polymer);\n","/*\n * Copyright (c) 20
14 The Polymer Project Authors. All rights reserved.\n * This code may only be u
sed under the BSD style license found at http://polymer.github.io/LICENSE.txt\n
* The complete set of authors may be found at http://polymer.github.io/AUTHORS.t
xt\n * The complete set of contributors may be found at http://polymer.github.io
/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project
is also\n * subject to an additional IP rights grant found at http://polymer.git
hub.io/PATENTS.txt\n */\n\n/**\n * The `auto-binding` element extends the templa
te element. It provides a quick \n * and easy way to do data binding without the
need to setup a model. \n * The `auto-binding` element itself serves as the mod
el and controller for the \n * elements it contains. Both data and event handler
s can be bound. \n *\n * The `auto-binding` element acts just like a template th
at is bound to \n * a model. It stamps its content in the dom adjacent to itself
. When the \n * content is stamped, the `template-bound` event is fired.\n *\n *
Example:\n *\n * <template is=\"auto-binding\">\n * <div>Say somethin
g: <input value=\"{{value}}\"></div>\n * <div>You said: {{value}}</div>\n
* <button on-tap=\"{{buttonTap}}\">Tap me!</button>\n * </template>\n
* <script>\n * var template = document.querySelector('template');\n *
template.value = 'something';\n * template.buttonTap = function() {\
n * console.log('tap!');\n * };\n * </script>\n *\n * @module
Polymer\n * @status stable\n*/\n\n(function() {\n\n var element = document.crea
teElement('polymer-element');\n element.setAttribute('name', 'auto-binding');\n
element.setAttribute('extends', 'template');\n element.init();\n\n Polymer('
auto-binding', {\n\n createdCallback: function() {\n this.syntax = this.
bindingDelegate = this.makeSyntax();\n // delay stamping until polymer-read
y so that auto-binding is not\n // required to load last.\n Polymer.wh
enPolymerReady(function() {\n this.model = this;\n this.setAttribu
te('bind', '');\n // we don't bother with an explicit signal here, we cou
ld ust a MO\n // if necessary\n this.async(function() {\n
// note: this will marshall *all* the elements in the parentNode\n //
rather than just stamped ones. We'd need to use createInstance\n // to
fix this or something else fancier.\n this.marshalNodeReferences(this.p
arentNode);\n // template stamping is asynchronous so stamping isn't co
mplete\n // by polymer-ready; fire an event so users can use stamped el
ements\n this.fire('template-bound');\n });\n }.bind(this))
;\n },\n\n makeSyntax: function() {\n var events = Object.create(Poly
mer.api.declaration.events);\n var self = this;\n events.findControlle
r = function() { return self.model; };\n\n var syntax = new PolymerExpressi
ons();\n var prepareBinding = syntax.prepareBinding; \n syntax.prepar
eBinding = function(pathString, name, node) {\n return events.prepareEven
tBinding(pathString, name, node) ||\n prepareBinding.call(syntax,
pathString, name, node);\n };\n return syntax;\n }\n\n });\n\n})()
;\n"]} |