| OLD | NEW |
| 1 <!DOCTYPE html><html><head><meta charset="UTF-8"> </head><body><div hidden="" by
-vulcanize=""><script>!function(){function e(){document.body.removeAttribute("un
resolved")}window.WebComponents?addEventListener("WebComponentsReady",e):"intera
ctive"===document.readyState||"complete"===document.readyState?e():addEventListe
ner("DOMContentLoaded",e)}(),window.Polymer={Settings:function(){var e=window.Po
lymer||{};if(!e.noUrlSettings)for(var t,r=location.search.slice(1).split("&"),i=
0;i<r.length&&(t=r[i]);i++)t=t.split("="),t[0]&&(e[t[0]]=t[1]||!0);return e.want
Shadow="shadow"===e.dom,e.hasShadow=Boolean(Element.prototype.createShadowRoot),
e.nativeShadow=e.hasShadow&&!window.ShadowDOMPolyfill,e.useShadow=e.wantShadow&&
e.hasShadow,e.hasNativeImports=Boolean("import"in document.createElement("link")
),e.useNativeImports=e.hasNativeImports,e.useNativeCustomElements=!window.Custom
Elements||window.CustomElements.useNative,e.useNativeShadow=e.useShadow&&e.nativ
eShadow,e.usePolyfillProto=!e.useNativeCustomElements&&!Object.__proto__,e.hasNa
tiveCSSProperties=!navigator.userAgent.match("AppleWebKit/601")&&window.CSS&&CSS
.supports&&CSS.supports("box-shadow","0 0 0 var(--foo)"),e.useNativeCSSPropertie
s=e.hasNativeCSSProperties&&e.lazyRegister&&e.useNativeCSSProperties,e}()},funct
ion(){var e=window.Polymer;window.Polymer=function(e){"function"==typeof e&&(e=e
.prototype),e||(e={});var r=t(e);e=r.prototype;var i={prototype:e};return e.exte
nds&&(i.extends=e.extends),Polymer.telemetry._registrate(e),document.registerEle
ment(e.is,i),r};var t=function(e){var t=Polymer.Base;return e.extends&&(t=Polyme
r.Base._getExtendedPrototype(e.extends)),e=Polymer.Base.chainObject(e,t),e.regis
terCallback(),e.constructor};if(e)for(var r in e)Polymer[r]=e[r];Polymer.Class=t
}(),Polymer.telemetry={registrations:[],_regLog:function(e){console.log("["+e.is
+"]: registered")},_registrate:function(e){this.registrations.push(e),Polymer.lo
g&&this._regLog(e)},dumpRegistrations:function(){this.registrations.forEach(this
._regLog)}},Object.defineProperty(window,"currentImport",{enumerable:!0,configur
able:!0,get:function(){return(document._currentScript||document.currentScript).o
wnerDocument}}),Polymer.RenderStatus={_ready:!1,_callbacks:[],whenReady:function
(e){this._ready?e():this._callbacks.push(e)},_makeReady:function(){this._ready=!
0;for(var e=0;e<this._callbacks.length;e++)this._callbacks[e]();this._callbacks=
[]},_catchFirstRender:function(){requestAnimationFrame(function(){Polymer.Render
Status._makeReady()})},_afterNextRenderQueue:[],_waitingNextRender:!1,afterNextR
ender:function(e,t,r){this._watchNextRender(),this._afterNextRenderQueue.push([e
,t,r])},hasRendered:function(){return this._ready},_watchNextRender:function(){i
f(!this._waitingNextRender){this._waitingNextRender=!0;var e=function(){Polymer.
RenderStatus._flushNextRender()};this._ready?requestAnimationFrame(e):this.whenR
eady(e)}},_flushNextRender:function(){var e=this;setTimeout(function(){e._flushR
enderCallbacks(e._afterNextRenderQueue),e._afterNextRenderQueue=[],e._waitingNex
tRender=!1})},_flushRenderCallbacks:function(e){for(var t,r=0;r<e.length;r++)t=e
[r],t[1].apply(t[0],t[2]||Polymer.nar)}},window.HTMLImports?HTMLImports.whenRead
y(function(){Polymer.RenderStatus._catchFirstRender()}):Polymer.RenderStatus._ca
tchFirstRender(),Polymer.ImportStatus=Polymer.RenderStatus,Polymer.ImportStatus.
whenLoaded=Polymer.ImportStatus.whenReady,function(){"use strict";var e=Polymer.
Settings;Polymer.Base={__isPolymerInstance__:!0,_addFeature:function(e){this.ext
end(this,e)},registerCallback:function(){"max"===e.lazyRegister?this.beforeRegis
ter&&this.beforeRegister():(this._desugarBehaviors(),this._doBehavior("beforeReg
ister")),this._registerFeatures(),e.lazyRegister||this.ensureRegisterFinished()}
,createdCallback:function(){this.__hasRegisterFinished||this._ensureRegisterFini
shed(this.__proto__),Polymer.telemetry.instanceCount++,this.root=this,this._doBe
havior("created"),this._initFeatures()},ensureRegisterFinished:function(){this._
ensureRegisterFinished(this)},_ensureRegisterFinished:function(t){t.__hasRegiste
rFinished===t.is&&t.is||("max"===e.lazyRegister&&(t._desugarBehaviors(),t._doBeh
aviorOnly("beforeRegister")),t.__hasRegisterFinished=t.is,t._finishRegisterFeatu
res&&t._finishRegisterFeatures(),t._doBehavior("registered"),e.usePolyfillProto&
&t!==this&&t.extend(this,t))},attachedCallback:function(){var e=this;Polymer.Ren
derStatus.whenReady(function(){e.isAttached=!0,e._doBehavior("attached")})},deta
chedCallback:function(){var e=this;Polymer.RenderStatus.whenReady(function(){e.i
sAttached=!1,e._doBehavior("detached")})},attributeChangedCallback:function(e,t,
r){this._attributeChangedImpl(e),this._doBehavior("attributeChanged",[e,t,r])},_
attributeChangedImpl:function(e){this._setAttributeToProperty(this,e)},extend:fu
nction(e,t){if(e&&t)for(var r,i=Object.getOwnPropertyNames(t),o=0;o<i.length&&(r
=i[o]);o++)this.copyOwnProperty(r,t,e);return e||t},mixin:function(e,t){for(var
r in t)e[r]=t[r];return e},copyOwnProperty:function(e,t,r){var i=Object.getOwnPr
opertyDescriptor(t,e);i&&Object.defineProperty(r,e,i)},_logger:function(e,t){swi
tch(1===t.length&&Array.isArray(t[0])&&(t=t[0]),e){case"log":case"warn":case"err
or":console[e].apply(console,t)}},_log:function(){var e=Array.prototype.slice.ca
ll(arguments,0);this._logger("log",e)},_warn:function(){var e=Array.prototype.sl
ice.call(arguments,0);this._logger("warn",e)},_error:function(){var e=Array.prot
otype.slice.call(arguments,0);this._logger("error",e)},_logf:function(){return t
his._logPrefix.concat(this.is).concat(Array.prototype.slice.call(arguments,0))}}
,Polymer.Base._logPrefix=function(){var e=window.chrome&&!/edge/i.test(navigator
.userAgent)||/firefox/i.test(navigator.userAgent);return e?["%c[%s::%s]:","font-
weight: bold; background-color:#EEEE00;"]:["[%s::%s]:"]}(),Polymer.Base.chainObj
ect=function(e,t){return e&&t&&e!==t&&(Object.__proto__||(e=Polymer.Base.extend(
Object.create(t),e)),e.__proto__=t),e},Polymer.Base=Polymer.Base.chainObject(Pol
ymer.Base,HTMLElement.prototype),window.CustomElements?Polymer.instanceof=Custom
Elements.instanceof:Polymer.instanceof=function(e,t){return e instanceof t},Poly
mer.isInstance=function(e){return Boolean(e&&e.__isPolymerInstance__)},Polymer.t
elemetry.instanceCount=0}(),function(){function e(){if(s)for(var e,t=document._c
urrentScript||document.currentScript,r=t&&t.ownerDocument||document,i=r.querySel
ectorAll("dom-module"),o=i.length-1;o>=0&&(e=i[o]);o--){if(e.__upgraded__)return
;CustomElements.upgrade(e)}}var t={},r={},i=function(e){return t[e]||r[e.toLower
Case()]},o=function(){return document.createElement("dom-module")};o.prototype=O
bject.create(HTMLElement.prototype),Polymer.Base.extend(o.prototype,{constructor
:o,createdCallback:function(){this.register()},register:function(e){e=e||this.id
||this.getAttribute("name")||this.getAttribute("is"),e&&(this.id=e,t[e]=this,r[e
.toLowerCase()]=this)},import:function(t,r){if(t){var o=i(t);return o||(e(),o=i(
t)),o&&r&&(o=o.querySelector(r)),o}}});var s=window.CustomElements&&!CustomEleme
nts.useNative;document.registerElement("dom-module",o)}(),Polymer.Base._addFeatu
re({_prepIs:function(){if(!this.is){var e=(document._currentScript||document.cur
rentScript).parentNode;if("dom-module"===e.localName){var t=e.id||e.getAttribute
("name")||e.getAttribute("is");this.is=t}}this.is&&(this.is=this.is.toLowerCase(
))}}),Polymer.Base._addFeature({behaviors:[],_desugarBehaviors:function(){this.b
ehaviors.length&&(this.behaviors=this._desugarSomeBehaviors(this.behaviors))},_d
esugarSomeBehaviors:function(e){var t=[];e=this._flattenBehaviorsList(e);for(var
r=e.length-1;r>=0;r--){var i=e[r];t.indexOf(i)===-1&&(this._mixinBehavior(i),t.
unshift(i))}return t},_flattenBehaviorsList:function(e){for(var t=[],r=0;r<e.len
gth;r++){var i=e[r];i instanceof Array?t=t.concat(this._flattenBehaviorsList(i))
:i?t.push(i):this._warn(this._logf("_flattenBehaviorsList","behavior is null, ch
eck for missing or 404 import"))}return t},_mixinBehavior:function(e){for(var t,
r=Object.getOwnPropertyNames(e),i=0;i<r.length&&(t=r[i]);i++)Polymer.Base._behav
iorProperties[t]||this.hasOwnProperty(t)||this.copyOwnProperty(t,e,this)},_prepB
ehaviors:function(){this._prepFlattenedBehaviors(this.behaviors)},_prepFlattened
Behaviors:function(e){for(var t=0,r=e.length;t<r;t++)this._prepBehavior(e[t]);th
is._prepBehavior(this)},_doBehavior:function(e,t){for(var r=0;r<this.behaviors.l
ength;r++)this._invokeBehavior(this.behaviors[r],e,t);this._invokeBehavior(this,
e,t)},_doBehaviorOnly:function(e,t){for(var r=0;r<this.behaviors.length;r++)this
._invokeBehavior(this.behaviors[r],e,t)},_invokeBehavior:function(e,t,r){var i=e
[t];i&&i.apply(this,r||Polymer.nar)},_marshalBehaviors:function(){for(var e=0;e<
this.behaviors.length;e++)this._marshalBehavior(this.behaviors[e]);this._marshal
Behavior(this)}}),Polymer.Base._behaviorProperties={hostAttributes:!0,beforeRegi
ster:!0,registered:!0,properties:!0,observers:!0,listeners:!0,created:!0,attache
d:!0,detached:!0,attributeChanged:!0,ready:!0},Polymer.Base._addFeature({_getExt
endedPrototype:function(e){return this._getExtendedNativePrototype(e)},_nativePr
ototypes:{},_getExtendedNativePrototype:function(e){var t=this._nativePrototypes
[e];if(!t){var r=this.getNativePrototype(e);t=this.extend(Object.create(r),Polym
er.Base),this._nativePrototypes[e]=t}return t},getNativePrototype:function(e){re
turn Object.getPrototypeOf(document.createElement(e))}}),Polymer.Base._addFeatur
e({_prepConstructor:function(){this._factoryArgs=this.extends?[this.extends,this
.is]:[this.is];var e=function(){return this._factory(arguments)};this.hasOwnProp
erty("extends")&&(e.extends=this.extends),Object.defineProperty(this,"constructo
r",{value:e,writable:!0,configurable:!0}),e.prototype=this},_factory:function(e)
{var t=document.createElement.apply(document,this._factoryArgs);return this.fact
oryImpl&&this.factoryImpl.apply(t,e),t}}),Polymer.nob=Object.create(null),Polyme
r.Base._addFeature({properties:{},getPropertyInfo:function(e){var t=this._getPro
pertyInfo(e,this.properties);if(!t)for(var r=0;r<this.behaviors.length;r++)if(t=
this._getPropertyInfo(e,this.behaviors[r].properties))return t;return t||Polymer
.nob},_getPropertyInfo:function(e,t){var r=t&&t[e];return"function"==typeof r&&(
r=t[e]={type:r}),r&&(r.defined=!0),r},_prepPropertyInfo:function(){this._propert
yInfo={};for(var e=0;e<this.behaviors.length;e++)this._addPropertyInfo(this._pro
pertyInfo,this.behaviors[e].properties);this._addPropertyInfo(this._propertyInfo
,this.properties),this._addPropertyInfo(this._propertyInfo,this._propertyEffects
)},_addPropertyInfo:function(e,t){if(t){var r,i;for(var o in t)r=e[o],i=t[o],("_
"!==o[0]||i.readOnly)&&(e[o]?(r.type||(r.type=i.type),r.readOnly||(r.readOnly=i.
readOnly)):e[o]={type:"function"==typeof i?i:i.type,readOnly:i.readOnly,attribut
e:Polymer.CaseMap.camelToDashCase(o)})}}}),Polymer.CaseMap={_caseMap:{},_rx:{das
hToCamel:/-[a-z]/g,camelToDash:/([A-Z])/g},dashToCamelCase:function(e){return th
is._caseMap[e]||(this._caseMap[e]=e.indexOf("-")<0?e:e.replace(this._rx.dashToCa
mel,function(e){return e[1].toUpperCase()}))},camelToDashCase:function(e){return
this._caseMap[e]||(this._caseMap[e]=e.replace(this._rx.camelToDash,"-$1").toLow
erCase())}},Polymer.Base._addFeature({_addHostAttributes:function(e){this._aggre
gatedAttributes||(this._aggregatedAttributes={}),e&&this.mixin(this._aggregatedA
ttributes,e)},_marshalHostAttributes:function(){this._aggregatedAttributes&&this
._applyAttributes(this,this._aggregatedAttributes)},_applyAttributes:function(e,
t){for(var r in t)if(!this.hasAttribute(r)&&"class"!==r){var i=t[r];this.seriali
zeValueToAttribute(i,r,this)}},_marshalAttributes:function(){this._takeAttribute
sToModel(this)},_takeAttributesToModel:function(e){if(this.hasAttributes())for(v
ar t in this._propertyInfo){var r=this._propertyInfo[t];this.hasAttribute(r.attr
ibute)&&this._setAttributeToProperty(e,r.attribute,t,r)}},_setAttributeToPropert
y:function(e,t,r,i){if(!this._serializing&&(r=r||Polymer.CaseMap.dashToCamelCase
(t),i=i||this._propertyInfo&&this._propertyInfo[r],i&&!i.readOnly)){var o=this.g
etAttribute(t);e[r]=this.deserialize(o,i.type)}},_serializing:!1,reflectProperty
ToAttribute:function(e,t,r){this._serializing=!0,r=void 0===r?this[e]:r,this.ser
ializeValueToAttribute(r,t||Polymer.CaseMap.camelToDashCase(e)),this._serializin
g=!1},serializeValueToAttribute:function(e,t,r){var i=this.serialize(e);r=r||thi
s,void 0===i?r.removeAttribute(t):r.setAttribute(t,i)},deserialize:function(e,t)
{switch(t){case Number:e=Number(e);break;case Boolean:e=null!=e;break;case Objec
t:try{e=JSON.parse(e)}catch(e){}break;case Array:try{e=JSON.parse(e)}catch(t){e=
null,console.warn("Polymer::Attributes: couldn`t decode Array as JSON")}break;ca
se Date:e=new Date(e);break;case String:}return e},serialize:function(e){switch(
typeof e){case"boolean":return e?"":void 0;case"object":if(e instanceof Date)ret
urn e.toString();if(e)try{return JSON.stringify(e)}catch(e){return""}default:ret
urn null!=e?e:void 0}}}),Polymer.version="1.7.0",Polymer.Base._addFeature({_regi
sterFeatures:function(){this._prepIs(),this._prepBehaviors(),this._prepConstruct
or(),this._prepPropertyInfo()},_prepBehavior:function(e){this._addHostAttributes
(e.hostAttributes)},_marshalBehavior:function(e){},_initFeatures:function(){this
._marshalHostAttributes(),this._marshalBehaviors()}})</script> <script>Polymer.B
ase._addFeature({_prepTemplate:function(){void 0===this._template&&(this._templa
te=Polymer.DomModule.import(this.is,"template")),this._template&&this._template.
hasAttribute("is")&&this._warn(this._logf("_prepTemplate","top-level Polymer tem
plate must not be a type-extension, found",this._template,"Move inside simple <t
emplate>.")),this._template&&!this._template.content&&window.HTMLTemplateElement
&&HTMLTemplateElement.decorate&&HTMLTemplateElement.decorate(this._template)},_s
tampTemplate:function(){this._template&&(this.root=this.instanceTemplate(this._t
emplate))},instanceTemplate:function(e){var t=document.importNode(e._content||e.
content,!0);return t}}),function(){var e=Polymer.Base.attachedCallback;Polymer.B
ase._addFeature({_hostStack:[],ready:function(){},_registerHost:function(e){this
.dataHost=e=e||Polymer.Base._hostStack[Polymer.Base._hostStack.length-1],e&&e._c
lients&&e._clients.push(this),this._clients=null,this._clientsReadied=!1},_begin
Hosting:function(){Polymer.Base._hostStack.push(this),this._clients||(this._clie
nts=[])},_endHosting:function(){Polymer.Base._hostStack.pop()},_tryReady:functio
n(){this._readied=!1,this._canReady()&&this._ready()},_canReady:function(){retur
n!this.dataHost||this.dataHost._clientsReadied},_ready:function(){this._beforeCl
ientsReady(),this._template&&(this._setupRoot(),this._readyClients()),this._clie
ntsReadied=!0,this._clients=null,this._afterClientsReady(),this._readySelf()},_r
eadyClients:function(){this._beginDistribute();var e=this._clients;if(e)for(var
t,o=0,i=e.length;o<i&&(t=e[o]);o++)t._ready();this._finishDistribute()},_readySe
lf:function(){this._doBehavior("ready"),this._readied=!0,this._attachedPending&&
(this._attachedPending=!1,this.attachedCallback())},_beforeClientsReady:function
(){},_afterClientsReady:function(){},_beforeAttached:function(){},attachedCallba
ck:function(){this._readied?(this._beforeAttached(),e.call(this)):this._attached
Pending=!0}})}(),Polymer.ArraySplice=function(){function e(e,t,o){return{index:e
,removed:t,addedCount:o}}function t(){}var o=0,i=1,n=2,s=3;return t.prototype={c
alcEditDistances:function(e,t,o,i,n,s){for(var r=s-n+1,d=o-t+1,a=new Array(r),l=
0;l<r;l++)a[l]=new Array(d),a[l][0]=l;for(var h=0;h<d;h++)a[0][h]=h;for(l=1;l<r;
l++)for(h=1;h<d;h++)if(this.equals(e[t+h-1],i[n+l-1]))a[l][h]=a[l-1][h-1];else{v
ar u=a[l-1][h]+1,c=a[l][h-1]+1;a[l][h]=u<c?u:c}return a},spliceOperationsFromEdi
tDistances:function(e){for(var t=e.length-1,r=e[0].length-1,d=e[t][r],a=[];t>0||
r>0;)if(0!=t)if(0!=r){var l,h=e[t-1][r-1],u=e[t-1][r],c=e[t][r-1];l=u<c?u<h?u:h:
c<h?c:h,l==h?(h==d?a.push(o):(a.push(i),d=h),t--,r--):l==u?(a.push(s),t--,d=u):(
a.push(n),r--,d=c)}else a.push(s),t--;else a.push(n),r--;return a.reverse(),a},c
alcSplices:function(t,r,d,a,l,h){var u=0,c=0,_=Math.min(d-r,h-l);if(0==r&&0==l&&
(u=this.sharedPrefix(t,a,_)),d==t.length&&h==a.length&&(c=this.sharedSuffix(t,a,
_-u)),r+=u,l+=u,d-=c,h-=c,d-r==0&&h-l==0)return[];if(r==d){for(var f=e(r,[],0);l
<h;)f.removed.push(a[l++]);return[f]}if(l==h)return[e(r,[],d-r)];var m=this.spli
ceOperationsFromEditDistances(this.calcEditDistances(t,r,d,a,l,h));f=void 0;for(
var p=[],v=r,g=l,b=0;b<m.length;b++)switch(m[b]){case o:f&&(p.push(f),f=void 0),
v++,g++;break;case i:f||(f=e(v,[],0)),f.addedCount++,v++,f.removed.push(a[g]),g+
+;break;case n:f||(f=e(v,[],0)),f.addedCount++,v++;break;case s:f||(f=e(v,[],0))
,f.removed.push(a[g]),g++}return f&&p.push(f),p},sharedPrefix:function(e,t,o){fo
r(var i=0;i<o;i++)if(!this.equals(e[i],t[i]))return i;return o},sharedSuffix:fun
ction(e,t,o){for(var i=e.length,n=t.length,s=0;s<o&&this.equals(e[--i],t[--n]);)
s++;return s},calculateSplices:function(e,t){return this.calcSplices(e,0,e.lengt
h,t,0,t.length)},equals:function(e,t){return e===t}},new t}(),Polymer.domInnerHT
ML=function(){function e(e){switch(e){case"&":return"&";case"<":return"<"
;case">":return">";case'"':return""";case" ":return" "}}function t(
t){return t.replace(r,e)}function o(t){return t.replace(d,e)}function i(e){for(v
ar t={},o=0;o<e.length;o++)t[e[o]]=!0;return t}function n(e,i,n){switch(e.nodeTy
pe){case Node.ELEMENT_NODE:for(var r,d=e.localName,h="<"+d,u=e.attributes,c=0;r=
u[c];c++)h+=" "+r.name+'="'+t(r.value)+'"';return h+=">",a[d]?h:h+s(e,n)+"</"+d+
">";case Node.TEXT_NODE:var _=e.data;return i&&l[i.localName]?_:o(_);case Node.C
OMMENT_NODE:return"\x3c!--"+e.data+"--\x3e";default:throw console.error(e),new E
rror("not implemented")}}function s(e,t){e instanceof HTMLTemplateElement&&(e=e.
content);for(var o,i="",s=Polymer.dom(e).childNodes,r=0,d=s.length;r<d&&(o=s[r])
;r++)i+=n(o,e,t);return i}var r=/[&\u00A0"]/g,d=/[&\u00A0<>]/g,a=i(["area","base
","br","col","command","embed","hr","img","input","keygen","link","meta","param"
,"source","track","wbr"]),l=i(["style","script","xmp","iframe","noembed","nofram
es","plaintext","noscript"]);return{getInnerHTML:s}}(),function(){"use strict";v
ar e=Element.prototype.insertBefore,t=Element.prototype.appendChild,o=Element.pr
ototype.removeChild;Polymer.TreeApi={arrayCopyChildNodes:function(e){for(var t=[
],o=0,i=e.firstChild;i;i=i.nextSibling)t[o++]=i;return t},arrayCopyChildren:func
tion(e){for(var t=[],o=0,i=e.firstElementChild;i;i=i.nextElementSibling)t[o++]=i
;return t},arrayCopy:function(e){for(var t=e.length,o=new Array(t),i=0;i<t;i++)o
[i]=e[i];return o}},Polymer.TreeApi.Logical={hasParentNode:function(e){return Bo
olean(e.__dom&&e.__dom.parentNode)},hasChildNodes:function(e){return Boolean(e._
_dom&&void 0!==e.__dom.childNodes)},getChildNodes:function(e){return this.hasChi
ldNodes(e)?this._getChildNodes(e):e.childNodes},_getChildNodes:function(e){if(!e
.__dom.childNodes){e.__dom.childNodes=[];for(var t=e.__dom.firstChild;t;t=t.__do
m.nextSibling)e.__dom.childNodes.push(t)}return e.__dom.childNodes},getParentNod
e:function(e){return e.__dom&&void 0!==e.__dom.parentNode?e.__dom.parentNode:e.p
arentNode},getFirstChild:function(e){return e.__dom&&void 0!==e.__dom.firstChild
?e.__dom.firstChild:e.firstChild},getLastChild:function(e){return e.__dom&&void
0!==e.__dom.lastChild?e.__dom.lastChild:e.lastChild},getNextSibling:function(e){
return e.__dom&&void 0!==e.__dom.nextSibling?e.__dom.nextSibling:e.nextSibling},
getPreviousSibling:function(e){return e.__dom&&void 0!==e.__dom.previousSibling?
e.__dom.previousSibling:e.previousSibling},getFirstElementChild:function(e){retu
rn e.__dom&&void 0!==e.__dom.firstChild?this._getFirstElementChild(e):e.firstEle
mentChild},_getFirstElementChild:function(e){for(var t=e.__dom.firstChild;t&&t.n
odeType!==Node.ELEMENT_NODE;)t=t.__dom.nextSibling;return t},getLastElementChild
:function(e){return e.__dom&&void 0!==e.__dom.lastChild?this._getLastElementChil
d(e):e.lastElementChild},_getLastElementChild:function(e){for(var t=e.__dom.last
Child;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.previousSibling;return t},get
NextElementSibling:function(e){return e.__dom&&void 0!==e.__dom.nextSibling?this
._getNextElementSibling(e):e.nextElementSibling},_getNextElementSibling:function
(e){for(var t=e.__dom.nextSibling;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.n
extSibling;return t},getPreviousElementSibling:function(e){return e.__dom&&void
0!==e.__dom.previousSibling?this._getPreviousElementSibling(e):e.previousElement
Sibling},_getPreviousElementSibling:function(e){for(var t=e.__dom.previousSiblin
g;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.previousSibling;return t},saveChi
ldNodes:function(e){if(!this.hasChildNodes(e)){e.__dom=e.__dom||{},e.__dom.first
Child=e.firstChild,e.__dom.lastChild=e.lastChild,e.__dom.childNodes=[];for(var t
=e.firstChild;t;t=t.nextSibling)t.__dom=t.__dom||{},t.__dom.parentNode=e,e.__dom
.childNodes.push(t),t.__dom.nextSibling=t.nextSibling,t.__dom.previousSibling=t.
previousSibling}},recordInsertBefore:function(e,t,o){if(t.__dom.childNodes=null,
e.nodeType===Node.DOCUMENT_FRAGMENT_NODE)for(var i=e.firstChild;i;i=i.nextSiblin
g)this._linkNode(i,t,o);else this._linkNode(e,t,o)},_linkNode:function(e,t,o){e.
__dom=e.__dom||{},t.__dom=t.__dom||{},o&&(o.__dom=o.__dom||{}),e.__dom.previousS
ibling=o?o.__dom.previousSibling:t.__dom.lastChild,e.__dom.previousSibling&&(e._
_dom.previousSibling.__dom.nextSibling=e),e.__dom.nextSibling=o||null,e.__dom.ne
xtSibling&&(e.__dom.nextSibling.__dom.previousSibling=e),e.__dom.parentNode=t,o?
o===t.__dom.firstChild&&(t.__dom.firstChild=e):(t.__dom.lastChild=e,t.__dom.firs
tChild||(t.__dom.firstChild=e)),t.__dom.childNodes=null},recordRemoveChild:funct
ion(e,t){e.__dom=e.__dom||{},t.__dom=t.__dom||{},e===t.__dom.firstChild&&(t.__do
m.firstChild=e.__dom.nextSibling),e===t.__dom.lastChild&&(t.__dom.lastChild=e.__
dom.previousSibling);var o=e.__dom.previousSibling,i=e.__dom.nextSibling;o&&(o._
_dom.nextSibling=i),i&&(i.__dom.previousSibling=o),e.__dom.parentNode=e.__dom.pr
eviousSibling=e.__dom.nextSibling=void 0,t.__dom.childNodes=null}},Polymer.TreeA
pi.Composed={getChildNodes:function(e){return Polymer.TreeApi.arrayCopyChildNode
s(e)},getParentNode:function(e){return e.parentNode},clearChildNodes:function(e)
{e.textContent=""},insertBefore:function(t,o,i){return e.call(t,o,i||null)},appe
ndChild:function(e,o){return t.call(e,o)},removeChild:function(e,t){return o.cal
l(e,t)}}}(),Polymer.DomApi=function(){"use strict";var e=Polymer.Settings,t=Poly
mer.TreeApi,o=function(e){this.node=i?o.wrap(e):e},i=e.hasShadow&&!e.nativeShado
w;o.wrap=window.wrap?window.wrap:function(e){return e},o.prototype={flush:functi
on(){Polymer.dom.flush()},deepContains:function(e){if(this.node.contains(e))retu
rn!0;for(var t=e,o=e.ownerDocument;t&&t!==o&&t!==this.node;)t=Polymer.dom(t).par
entNode||t.host;return t===this.node},queryDistributedElements:function(e){for(v
ar t,i=this.getEffectiveChildNodes(),n=[],s=0,r=i.length;s<r&&(t=i[s]);s++)t.nod
eType===Node.ELEMENT_NODE&&o.matchesSelector.call(t,e)&&n.push(t);return n},getE
ffectiveChildNodes:function(){for(var e,t=[],o=this.childNodes,i=0,r=o.length;i<
r&&(e=o[i]);i++)if(e.localName===n)for(var d=s(e).getDistributedNodes(),a=0;a<d.
length;a++)t.push(d[a]);else t.push(e);return t},observeNodes:function(e){if(e)r
eturn this.observer||(this.observer=this.node.localName===n?new o.DistributedNod
esObserver(this):new o.EffectiveNodesObserver(this)),this.observer.addListener(e
)},unobserveNodes:function(e){this.observer&&this.observer.removeListener(e)},no
tifyObserver:function(){this.observer&&this.observer.notify()},_query:function(e
,o,i){o=o||this.node;var n=[];return this._queryElements(t.Logical.getChildNodes
(o),e,i,n),n},_queryElements:function(e,t,o,i){for(var n,s=0,r=e.length;s<r&&(n=
e[s]);s++)if(n.nodeType===Node.ELEMENT_NODE&&this._queryElement(n,t,o,i))return!
0},_queryElement:function(e,o,i,n){var s=o(e);return s&&n.push(e),i&&i(s)?s:void
this._queryElements(t.Logical.getChildNodes(e),o,i,n)}};var n=o.CONTENT="conten
t",s=o.factory=function(e){return e=e||document,e.__domApi||(e.__domApi=new o.ct
or(e)),e.__domApi};o.hasApi=function(e){return Boolean(e.__domApi)},o.ctor=o,Pol
ymer.dom=function(e,t){return e instanceof Event?Polymer.EventApi.factory(e):o.f
actory(e,t)};var r=Element.prototype;return o.matchesSelector=r.matches||r.match
esSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.web
kitMatchesSelector,o}(),function(){"use strict";var e=Polymer.Settings,t=Polymer
.DomApi,o=t.factory,i=Polymer.TreeApi,n=Polymer.domInnerHTML.getInnerHTML,s=t.CO
NTENT;if(!e.useShadow){var r=Element.prototype.cloneNode,d=Document.prototype.im
portNode;Polymer.Base.extend(t.prototype,{_lazyDistribute:function(e){e.shadyRoo
t&&e.shadyRoot._distributionClean&&(e.shadyRoot._distributionClean=!1,Polymer.do
m.addDebouncer(e.debounce("_distribute",e._distributeContent)))},appendChild:fun
ction(e){return this.insertBefore(e)},insertBefore:function(e,n){if(n&&i.Logical
.getParentNode(n)!==this.node)throw Error("The ref_node to be inserted before is
not a child of this node");if(e.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var r=i
.Logical.getParentNode(e);r?(t.hasApi(r)&&o(r).notifyObserver(),this._removeNode
(e)):this._removeOwnerShadyRoot(e)}if(!this._addNode(e,n)){n&&(n=n.localName===s
?this._firstComposedNode(n):n);var d=this.node._isShadyRoot?this.node.host:this.
node;n?i.Composed.insertBefore(d,e,n):i.Composed.appendChild(d,e)}return this.no
tifyObserver(),e},_addNode:function(e,t){var o=this.getOwnerRoot();if(o){var n=t
his._maybeAddInsertionPoint(e,this.node);o._invalidInsertionPoints||(o._invalidI
nsertionPoints=n),this._addNodeToHost(o.host,e)}i.Logical.hasChildNodes(this.nod
e)&&i.Logical.recordInsertBefore(e,this.node,t);var s=this._maybeDistribute(e)||
this.node.shadyRoot;if(s)if(e.nodeType===Node.DOCUMENT_FRAGMENT_NODE)for(;e.firs
tChild;)i.Composed.removeChild(e,e.firstChild);else{var r=i.Composed.getParentNo
de(e);r&&i.Composed.removeChild(r,e)}return s},removeChild:function(e){if(i.Logi
cal.getParentNode(e)!==this.node)throw Error("The node to be removed is not a ch
ild of this node: "+e);if(!this._removeNode(e)){var t=this.node._isShadyRoot?thi
s.node.host:this.node,o=i.Composed.getParentNode(e);t===o&&i.Composed.removeChil
d(t,e)}return this.notifyObserver(),e},_removeNode:function(e){var t,n=i.Logical
.hasParentNode(e)&&i.Logical.getParentNode(e),s=this._ownerShadyRootForNode(e);r
eturn n&&(t=o(e)._maybeDistributeParent(),i.Logical.recordRemoveChild(e,n),s&&th
is._removeDistributedChildren(s,e)&&(s._invalidInsertionPoints=!0,this._lazyDist
ribute(s.host))),this._removeOwnerShadyRoot(e),s&&this._removeNodeFromHost(s.hos
t,e),t},replaceChild:function(e,t){return this.insertBefore(e,t),this.removeChil
d(t),e},_hasCachedOwnerRoot:function(e){return Boolean(void 0!==e._ownerShadyRoo
t)},getOwnerRoot:function(){return this._ownerShadyRootForNode(this.node)},_owne
rShadyRootForNode:function(e){if(e){var t=e._ownerShadyRoot;if(void 0===t){if(e.
_isShadyRoot)t=e;else{var o=i.Logical.getParentNode(e);t=o?o._isShadyRoot?o:this
._ownerShadyRootForNode(o):null}(t||document.documentElement.contains(e))&&(e._o
wnerShadyRoot=t)}return t}},_maybeDistribute:function(e){var t=e.nodeType===Node
.DOCUMENT_FRAGMENT_NODE&&!e.__noContent&&o(e).querySelector(s),n=t&&i.Logical.ge
tParentNode(t).nodeType!==Node.DOCUMENT_FRAGMENT_NODE,r=t||e.localName===s;if(r)
{var d=this.getOwnerRoot();d&&this._lazyDistribute(d.host)}var a=this._nodeNeeds
Distribution(this.node);return a&&this._lazyDistribute(this.node),a||r&&!n},_may
beAddInsertionPoint:function(e,t){var n;if(e.nodeType!==Node.DOCUMENT_FRAGMENT_N
ODE||e.__noContent)e.localName===s&&(i.Logical.saveChildNodes(t),i.Logical.saveC
hildNodes(e),n=!0);else for(var r,d,a,l=o(e).querySelectorAll(s),h=0;h<l.length&
&(r=l[h]);h++)d=i.Logical.getParentNode(r),d===e&&(d=t),a=this._maybeAddInsertio
nPoint(r,d),n=n||a;return n},_updateInsertionPoints:function(e){for(var t,n=e.sh
adyRoot._insertionPoints=o(e.shadyRoot).querySelectorAll(s),r=0;r<n.length;r++)t
=n[r],i.Logical.saveChildNodes(t),i.Logical.saveChildNodes(i.Logical.getParentNo
de(t))},_nodeNeedsDistribution:function(e){return e&&e.shadyRoot&&t.hasInsertion
Point(e.shadyRoot)},_addNodeToHost:function(e,t){e._elementAdd&&e._elementAdd(t)
},_removeNodeFromHost:function(e,t){e._elementRemove&&e._elementRemove(t)},_remo
veDistributedChildren:function(e,t){for(var n,s=e._insertionPoints,r=0;r<s.lengt
h;r++){var d=s[r];if(this._contains(t,d))for(var a=o(d).getDistributedNodes(),l=
0;l<a.length;l++){n=!0;var h=a[l],u=i.Composed.getParentNode(h);u&&i.Composed.re
moveChild(u,h)}}return n},_contains:function(e,t){for(;t;){if(t==e)return!0;t=i.
Logical.getParentNode(t)}},_removeOwnerShadyRoot:function(e){if(this._hasCachedO
wnerRoot(e))for(var t,o=i.Logical.getChildNodes(e),n=0,s=o.length;n<s&&(t=o[n]);
n++)this._removeOwnerShadyRoot(t);e._ownerShadyRoot=void 0},_firstComposedNode:f
unction(e){for(var t,i,n=o(e).getDistributedNodes(),s=0,r=n.length;s<r&&(t=n[s])
;s++)if(i=o(t).getDestinationInsertionPoints(),i[i.length-1]===e)return t},query
Selector:function(e){var o=this._query(function(o){return t.matchesSelector.call
(o,e)},this.node,function(e){return Boolean(e)})[0];return o||null},querySelecto
rAll:function(e){return this._query(function(o){return t.matchesSelector.call(o,
e)},this.node)},getDestinationInsertionPoints:function(){return this.node._desti
nationInsertionPoints||[]},getDistributedNodes:function(){return this.node._dist
ributedNodes||[]},_clear:function(){for(;this.childNodes.length;)this.removeChil
d(this.childNodes[0])},setAttribute:function(e,t){this.node.setAttribute(e,t),th
is._maybeDistributeParent()},removeAttribute:function(e){this.node.removeAttribu
te(e),this._maybeDistributeParent()},_maybeDistributeParent:function(){if(this._
nodeNeedsDistribution(this.parentNode))return this._lazyDistribute(this.parentNo
de),!0},cloneNode:function(e){var t=r.call(this.node,!1);if(e)for(var i,n=this.c
hildNodes,s=o(t),d=0;d<n.length;d++)i=o(n[d]).cloneNode(!0),s.appendChild(i);ret
urn t},importNode:function(e,t){var n=this.node instanceof Document?this.node:th
is.node.ownerDocument,s=d.call(n,e,!1);if(t)for(var r,a=i.Logical.getChildNodes(
e),l=o(s),h=0;h<a.length;h++)r=o(n).importNode(a[h],!0),l.appendChild(r);return
s},_getComposedInnerHTML:function(){return n(this.node,!0)}}),Object.definePrope
rties(t.prototype,{activeElement:{get:function(){var e=document.activeElement;if
(!e)return null;var t=!!this.node._isShadyRoot;if(this.node!==document){if(!t)re
turn null;if(this.node.host===e||!this.node.host.contains(e))return null}for(var
i=o(e).getOwnerRoot();i&&i!==this.node;)e=i.host,i=o(e).getOwnerRoot();return t
his.node===document?i?null:e:i===this.node?e:null},configurable:!0},childNodes:{
get:function(){var e=i.Logical.getChildNodes(this.node);return Array.isArray(e)?
e:i.arrayCopyChildNodes(this.node)},configurable:!0},children:{get:function(){re
turn i.Logical.hasChildNodes(this.node)?Array.prototype.filter.call(this.childNo
des,function(e){return e.nodeType===Node.ELEMENT_NODE}):i.arrayCopyChildren(this
.node)},configurable:!0},parentNode:{get:function(){return i.Logical.getParentNo
de(this.node)},configurable:!0},firstChild:{get:function(){return i.Logical.getF
irstChild(this.node)},configurable:!0},lastChild:{get:function(){return i.Logica
l.getLastChild(this.node)},configurable:!0},nextSibling:{get:function(){return i
.Logical.getNextSibling(this.node)},configurable:!0},previousSibling:{get:functi
on(){return i.Logical.getPreviousSibling(this.node)},configurable:!0},firstEleme
ntChild:{get:function(){return i.Logical.getFirstElementChild(this.node)},config
urable:!0},lastElementChild:{get:function(){return i.Logical.getLastElementChild
(this.node)},configurable:!0},nextElementSibling:{get:function(){return i.Logica
l.getNextElementSibling(this.node)},configurable:!0},previousElementSibling:{get
:function(){return i.Logical.getPreviousElementSibling(this.node)},configurable:
!0},textContent:{get:function(){var e=this.node.nodeType;if(e===Node.TEXT_NODE||
e===Node.COMMENT_NODE)return this.node.textContent;for(var t,o=[],i=0,n=this.chi
ldNodes;t=n[i];i++)t.nodeType!==Node.COMMENT_NODE&&o.push(t.textContent);return
o.join("")},set:function(e){var t=this.node.nodeType;t===Node.TEXT_NODE||t===Nod
e.COMMENT_NODE?this.node.textContent=e:(this._clear(),e&&this.appendChild(docume
nt.createTextNode(e)))},configurable:!0},innerHTML:{get:function(){var e=this.no
de.nodeType;return e===Node.TEXT_NODE||e===Node.COMMENT_NODE?null:n(this.node)},
set:function(e){var t=this.node.nodeType;if(t!==Node.TEXT_NODE||t!==Node.COMMENT
_NODE){this._clear();var o=document.createElement("div");o.innerHTML=e;for(var n
=i.arrayCopyChildNodes(o),s=0;s<n.length;s++)this.appendChild(n[s])}},configurab
le:!0}}),t.hasInsertionPoint=function(e){return Boolean(e&&e._insertionPoints.le
ngth)}}}(),function(){"use strict";var e=Polymer.Settings,t=Polymer.TreeApi,o=Po
lymer.DomApi;if(e.useShadow){Polymer.Base.extend(o.prototype,{querySelectorAll:f
unction(e){return t.arrayCopy(this.node.querySelectorAll(e))},getOwnerRoot:funct
ion(){for(var e=this.node;e;){if(e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.hos
t)return e;e=e.parentNode}},importNode:function(e,t){var o=this.node instanceof
Document?this.node:this.node.ownerDocument;return o.importNode(e,t)},getDestinat
ionInsertionPoints:function(){var e=this.node.getDestinationInsertionPoints&&thi
s.node.getDestinationInsertionPoints();return e?t.arrayCopy(e):[]},getDistribute
dNodes:function(){var e=this.node.getDistributedNodes&&this.node.getDistributedN
odes();return e?t.arrayCopy(e):[]}}),Object.defineProperties(o.prototype,{active
Element:{get:function(){var e=o.wrap(this.node),t=e.activeElement;return e.conta
ins(t)?t:null},configurable:!0},childNodes:{get:function(){return t.arrayCopyChi
ldNodes(this.node)},configurable:!0},children:{get:function(){return t.arrayCopy
Children(this.node)},configurable:!0},textContent:{get:function(){return this.no
de.textContent},set:function(e){return this.node.textContent=e},configurable:!0}
,innerHTML:{get:function(){return this.node.innerHTML},set:function(e){return th
is.node.innerHTML=e},configurable:!0}});var i=function(e){for(var t=0;t<e.length
;t++)n(e[t])},n=function(e){o.prototype[e]=function(){return this.node[e].apply(
this.node,arguments)}};i(["cloneNode","appendChild","insertBefore","removeChild"
,"replaceChild","setAttribute","removeAttribute","querySelector"]);var s=functio
n(e){for(var t=0;t<e.length;t++)r(e[t])},r=function(e){Object.defineProperty(o.p
rototype,e,{get:function(){return this.node[e]},configurable:!0})};s(["parentNod
e","firstChild","lastChild","nextSibling","previousSibling","firstElementChild",
"lastElementChild","nextElementSibling","previousElementSibling"])}}(),Polymer.B
ase.extend(Polymer.dom,{_flushGuard:0,_FLUSH_MAX:100,_needsTakeRecords:!Polymer.
Settings.useNativeCustomElements,_debouncers:[],_staticFlushList:[],_finishDebou
ncer:null,flush:function(){for(this._flushGuard=0,this._prepareFlush();this._deb
ouncers.length&&this._flushGuard<this._FLUSH_MAX;){for(;this._debouncers.length;
)this._debouncers.shift().complete();this._finishDebouncer&&this._finishDebounce
r.complete(),this._prepareFlush(),this._flushGuard++}this._flushGuard>=this._FLU
SH_MAX&&console.warn("Polymer.dom.flush aborted. Flush may not be complete.")},_
prepareFlush:function(){this._needsTakeRecords&&CustomElements.takeRecords();for
(var e=0;e<this._staticFlushList.length;e++)this._staticFlushList[e]()},addStati
cFlush:function(e){this._staticFlushList.push(e)},removeStaticFlush:function(e){
var t=this._staticFlushList.indexOf(e);t>=0&&this._staticFlushList.splice(t,1)},
addDebouncer:function(e){this._debouncers.push(e),this._finishDebouncer=Polymer.
Debounce(this._finishDebouncer,this._finishFlush)},_finishFlush:function(){Polym
er.dom._debouncers=[]}}),Polymer.EventApi=function(){"use strict";var e=Polymer.
DomApi.ctor,t=Polymer.Settings;e.Event=function(e){this.event=e},t.useShadow?e.E
vent.prototype={get rootTarget(){return this.event.path[0]},get localTarget(){re
turn this.event.target},get path(){var e=this.event.path;return Array.isArray(e)
||(e=Array.prototype.slice.call(e)),e}}:e.Event.prototype={get rootTarget(){retu
rn this.event.target},get localTarget(){for(var e=this.event.currentTarget,t=e&&
Polymer.dom(e).getOwnerRoot(),o=this.path,i=0;i<o.length;i++)if(Polymer.dom(o[i]
).getOwnerRoot()===t)return o[i]},get path(){if(!this.event._path){for(var e=[],
t=this.rootTarget;t;){e.push(t);var o=Polymer.dom(t).getDestinationInsertionPoin
ts();if(o.length){for(var i=0;i<o.length-1;i++)e.push(o[i]);t=o[o.length-1]}else
t=Polymer.dom(t).parentNode||t.host}e.push(window),this.event._path=e}return th
is.event._path}};var o=function(t){return t.__eventApi||(t.__eventApi=new e.Even
t(t)),t.__eventApi};return{factory:o}}(),function(){"use strict";var e=Polymer.D
omApi.ctor,t=Polymer.Settings.useShadow;Object.defineProperty(e.prototype,"class
List",{get:function(){return this._classList||(this._classList=new e.ClassList(t
his)),this._classList},configurable:!0}),e.ClassList=function(e){this.domApi=e,t
his.node=e.node},e.ClassList.prototype={add:function(){this.node.classList.add.a
pply(this.node.classList,arguments),this._distributeParent()},remove:function(){
this.node.classList.remove.apply(this.node.classList,arguments),this._distribute
Parent()},toggle:function(){this.node.classList.toggle.apply(this.node.classList
,arguments),this._distributeParent()},_distributeParent:function(){t||this.domAp
i._maybeDistributeParent()},contains:function(){return this.node.classList.conta
ins.apply(this.node.classList,arguments)}}}(),function(){"use strict";var e=Poly
mer.DomApi.ctor,t=Polymer.Settings;if(e.EffectiveNodesObserver=function(e){this.
domApi=e,this.node=this.domApi.node,this._listeners=[]},e.EffectiveNodesObserver
.prototype={addListener:function(e){this._isSetup||(this._setup(),this._isSetup=
!0);var t={fn:e,_nodes:[]};return this._listeners.push(t),this._scheduleNotify()
,t},removeListener:function(e){var t=this._listeners.indexOf(e);t>=0&&(this._lis
teners.splice(t,1),e._nodes=[]),this._hasListeners()||(this._cleanup(),this._isS
etup=!1)},_setup:function(){this._observeContentElements(this.domApi.childNodes)
},_cleanup:function(){this._unobserveContentElements(this.domApi.childNodes)},_h
asListeners:function(){return Boolean(this._listeners.length)},_scheduleNotify:f
unction(){this._debouncer&&this._debouncer.stop(),this._debouncer=Polymer.Deboun
ce(this._debouncer,this._notify),this._debouncer.context=this,Polymer.dom.addDeb
ouncer(this._debouncer)},notify:function(){this._hasListeners()&&this._scheduleN
otify()},_notify:function(){this._beforeCallListeners(),this._callListeners()},_
beforeCallListeners:function(){this._updateContentElements()},_updateContentElem
ents:function(){this._observeContentElements(this.domApi.childNodes)},_observeCo
ntentElements:function(e){for(var t,o=0;o<e.length&&(t=e[o]);o++)this._isContent
(t)&&(t.__observeNodesMap=t.__observeNodesMap||new WeakMap,t.__observeNodesMap.h
as(this)||t.__observeNodesMap.set(this,this._observeContent(t)))},_observeConten
t:function(e){var t=this,o=Polymer.dom(e).observeNodes(function(){t._scheduleNot
ify()});return o._avoidChangeCalculation=!0,o},_unobserveContentElements:functio
n(e){for(var t,o,i=0;i<e.length&&(t=e[i]);i++)this._isContent(t)&&(o=t.__observe
NodesMap.get(this),o&&(Polymer.dom(t).unobserveNodes(o),t.__observeNodesMap.dele
te(this)))},_isContent:function(e){return"content"===e.localName},_callListeners
:function(){for(var e,t=this._listeners,o=this._getEffectiveNodes(),i=0;i<t.leng
th&&(e=t[i]);i++){var n=this._generateListenerInfo(e,o);(n||e._alwaysNotify)&&th
is._callListener(e,n)}},_getEffectiveNodes:function(){return this.domApi.getEffe
ctiveChildNodes()},_generateListenerInfo:function(e,t){if(e._avoidChangeCalculat
ion)return!0;for(var o,i=e._nodes,n={target:this.node,addedNodes:[],removedNodes
:[]},s=Polymer.ArraySplice.calculateSplices(t,i),r=0;r<s.length&&(o=s[r]);r++)fo
r(var d,a=0;a<o.removed.length&&(d=o.removed[a]);a++)n.removedNodes.push(d);for(
r=0,o;r<s.length&&(o=s[r]);r++)for(a=o.index;a<o.index+o.addedCount;a++)n.addedN
odes.push(t[a]);return e._nodes=t,n.addedNodes.length||n.removedNodes.length?n:v
oid 0},_callListener:function(e,t){return e.fn.call(this.node,t)},enableShadowAt
tributeTracking:function(){}},t.useShadow){var o=e.EffectiveNodesObserver.protot
ype._setup,i=e.EffectiveNodesObserver.prototype._cleanup;Polymer.Base.extend(e.E
ffectiveNodesObserver.prototype,{_setup:function(){if(!this._observer){var e=thi
s;this._mutationHandler=function(t){t&&t.length&&e._scheduleNotify()},this._obse
rver=new MutationObserver(this._mutationHandler),this._boundFlush=function(){e._
flush()},Polymer.dom.addStaticFlush(this._boundFlush),this._observer.observe(thi
s.node,{childList:!0})}o.call(this)},_cleanup:function(){this._observer.disconne
ct(),this._observer=null,this._mutationHandler=null,Polymer.dom.removeStaticFlus
h(this._boundFlush),i.call(this)},_flush:function(){this._observer&&this._mutati
onHandler(this._observer.takeRecords())},enableShadowAttributeTracking:function(
){if(this._observer){this._makeContentListenersAlwaysNotify(),this._observer.dis
connect(),this._observer.observe(this.node,{childList:!0,attributes:!0,subtree:!
0});var e=this.domApi.getOwnerRoot(),t=e&&e.host;t&&Polymer.dom(t).observer&&Pol
ymer.dom(t).observer.enableShadowAttributeTracking()}},_makeContentListenersAlwa
ysNotify:function(){for(var e,t=0;t<this._listeners.length;t++)e=this._listeners
[t],e._alwaysNotify=e._isContentListener}})}}(),function(){"use strict";var e=Po
lymer.DomApi.ctor,t=Polymer.Settings;e.DistributedNodesObserver=function(t){e.Ef
fectiveNodesObserver.call(this,t)},e.DistributedNodesObserver.prototype=Object.c
reate(e.EffectiveNodesObserver.prototype),Polymer.Base.extend(e.DistributedNodes
Observer.prototype,{_setup:function(){},_cleanup:function(){},_beforeCallListene
rs:function(){},_getEffectiveNodes:function(){return this.domApi.getDistributedN
odes()}}),t.useShadow&&Polymer.Base.extend(e.DistributedNodesObserver.prototype,
{_setup:function(){if(!this._observer){var e=this.domApi.getOwnerRoot(),t=e&&e.h
ost;if(t){var o=this;this._observer=Polymer.dom(t).observeNodes(function(){o._sc
heduleNotify()}),this._observer._isContentListener=!0,this._hasAttrSelect()&&Pol
ymer.dom(t).observer.enableShadowAttributeTracking()}}},_hasAttrSelect:function(
){var e=this.node.getAttribute("select");return e&&e.match(/[[.]+/)},_cleanup:fu
nction(){var e=this.domApi.getOwnerRoot(),t=e&&e.host;t&&Polymer.dom(t).unobserv
eNodes(this._observer),this._observer=null}})}(),function(){function e(e,t){t._d
istributedNodes.push(e);var o=e._destinationInsertionPoints;o?o.push(t):e._desti
nationInsertionPoints=[t]}function t(e){var t=e._distributedNodes;if(t)for(var o
=0;o<t.length;o++){var i=t[o]._destinationInsertionPoints;i&&i.splice(i.indexOf(
e)+1,i.length)}}function o(e,t){var o=u.Logical.getParentNode(e);o&&o.shadyRoot&
&h.hasInsertionPoint(o.shadyRoot)&&o.shadyRoot._distributionClean&&(o.shadyRoot.
_distributionClean=!1,t.shadyRoot._dirtyRoots.push(o))}function i(e,t){var o=t._
destinationInsertionPoints;return o&&o[o.length-1]===e}function n(e){return"cont
ent"==e.localName}function s(e){for(;e&&r(e);)e=e.domHost;return e}function r(e)
{for(var t,o=u.Logical.getChildNodes(e),i=0;i<o.length;i++)if(t=o[i],t.localName
&&"content"===t.localName)return e.domHost}function d(e){for(var t,o=0;o<e._inse
rtionPoints.length;o++)t=e._insertionPoints[o],h.hasApi(t)&&Polymer.dom(t).notif
yObserver()}function a(e){h.hasApi(e)&&Polymer.dom(e).notifyObserver()}function
l(e){if(c&&e)for(var t=0;t<e.length;t++)CustomElements.upgrade(e[t])}var h=Polym
er.DomApi,u=Polymer.TreeApi;Polymer.Base._addFeature({_prepShady:function(){this
._useContent=this._useContent||Boolean(this._template)},_setupShady:function(){t
his.shadyRoot=null,this.__domApi||(this.__domApi=null),this.__dom||(this.__dom=n
ull),this._ownerShadyRoot||(this._ownerShadyRoot=void 0)},_poolContent:function(
){this._useContent&&u.Logical.saveChildNodes(this)},_setupRoot:function(){this._
useContent&&(this._createLocalRoot(),this.dataHost||l(u.Logical.getChildNodes(th
is)))},_createLocalRoot:function(){this.shadyRoot=this.root,this.shadyRoot._dist
ributionClean=!1,this.shadyRoot._hasDistributed=!1,this.shadyRoot._isShadyRoot=!
0,this.shadyRoot._dirtyRoots=[];var e=this.shadyRoot._insertionPoints=!this._not
es||this._notes._hasContent?this.shadyRoot.querySelectorAll("content"):[];u.Logi
cal.saveChildNodes(this.shadyRoot);for(var t,o=0;o<e.length;o++)t=e[o],u.Logical
.saveChildNodes(t),u.Logical.saveChildNodes(t.parentNode);this.shadyRoot.host=th
is},get domHost(){var e=Polymer.dom(this).getOwnerRoot();return e&&e.host},distr
ibuteContent:function(e){if(this.shadyRoot){this.shadyRoot._invalidInsertionPoin
ts=this.shadyRoot._invalidInsertionPoints||e;var t=s(this);Polymer.dom(this)._la
zyDistribute(t)}},_distributeContent:function(){this._useContent&&!this.shadyRoo
t._distributionClean&&(this.shadyRoot._invalidInsertionPoints&&(Polymer.dom(this
)._updateInsertionPoints(this),this.shadyRoot._invalidInsertionPoints=!1),this._
beginDistribute(),this._distributeDirtyRoots(),this._finishDistribute())},_begin
Distribute:function(){this._useContent&&h.hasInsertionPoint(this.shadyRoot)&&(th
is._resetDistribution(),this._distributePool(this.shadyRoot,this._collectPool())
); | 1 <!DOCTYPE html><html><head><meta charset="UTF-8"> </head><body><div hidden="" by
-vulcanize=""><script>!function(){function e(){document.body.removeAttribute("un
resolved")}window.WebComponents?addEventListener("WebComponentsReady",e):"intera
ctive"===document.readyState||"complete"===document.readyState?e():addEventListe
ner("DOMContentLoaded",e)}(),window.Polymer={Settings:function(){var e=window.Po
lymer||{};if(!e.noUrlSettings)for(var t,r=location.search.slice(1).split("&"),i=
0;i<r.length&&(t=r[i]);i++)t=t.split("="),t[0]&&(e[t[0]]=t[1]||!0);return e.want
Shadow="shadow"===e.dom,e.hasShadow=Boolean(Element.prototype.createShadowRoot),
e.nativeShadow=e.hasShadow&&!window.ShadowDOMPolyfill,e.useShadow=e.wantShadow&&
e.hasShadow,e.hasNativeImports=Boolean("import"in document.createElement("link")
),e.useNativeImports=e.hasNativeImports,e.useNativeCustomElements=!window.Custom
Elements||window.CustomElements.useNative,e.useNativeShadow=e.useShadow&&e.nativ
eShadow,e.usePolyfillProto=!e.useNativeCustomElements&&!Object.__proto__,e.hasNa
tiveCSSProperties=!navigator.userAgent.match("AppleWebKit/601")&&window.CSS&&CSS
.supports&&CSS.supports("box-shadow","0 0 0 var(--foo)"),e.useNativeCSSPropertie
s=e.hasNativeCSSProperties&&e.lazyRegister&&e.useNativeCSSProperties,e}()},funct
ion(){var e=window.Polymer;window.Polymer=function(e){"function"==typeof e&&(e=e
.prototype),e||(e={});var r=t(e);e=r.prototype;var i={prototype:e};return e.exte
nds&&(i.extends=e.extends),Polymer.telemetry._registrate(e),document.registerEle
ment(e.is,i),r};var t=function(e){var t=Polymer.Base;return e.extends&&(t=Polyme
r.Base._getExtendedPrototype(e.extends)),e=Polymer.Base.chainObject(e,t),e.regis
terCallback(),e.constructor};if(e)for(var r in e)Polymer[r]=e[r];Polymer.Class=t
}(),Polymer.telemetry={registrations:[],_regLog:function(e){console.log("["+e.is
+"]: registered")},_registrate:function(e){this.registrations.push(e),Polymer.lo
g&&this._regLog(e)},dumpRegistrations:function(){this.registrations.forEach(this
._regLog)}},Object.defineProperty(window,"currentImport",{enumerable:!0,configur
able:!0,get:function(){return(document._currentScript||document.currentScript).o
wnerDocument}}),Polymer.RenderStatus={_ready:!1,_callbacks:[],whenReady:function
(e){this._ready?e():this._callbacks.push(e)},_makeReady:function(){this._ready=!
0;for(var e=0;e<this._callbacks.length;e++)this._callbacks[e]();this._callbacks=
[]},_catchFirstRender:function(){requestAnimationFrame(function(){Polymer.Render
Status._makeReady()})},_afterNextRenderQueue:[],_waitingNextRender:!1,afterNextR
ender:function(e,t,r){this._watchNextRender(),this._afterNextRenderQueue.push([e
,t,r])},hasRendered:function(){return this._ready},_watchNextRender:function(){i
f(!this._waitingNextRender){this._waitingNextRender=!0;var e=function(){Polymer.
RenderStatus._flushNextRender()};this._ready?requestAnimationFrame(e):this.whenR
eady(e)}},_flushNextRender:function(){var e=this;setTimeout(function(){e._flushR
enderCallbacks(e._afterNextRenderQueue),e._afterNextRenderQueue=[],e._waitingNex
tRender=!1})},_flushRenderCallbacks:function(e){for(var t,r=0;r<e.length;r++)t=e
[r],t[1].apply(t[0],t[2]||Polymer.nar)}},window.HTMLImports?HTMLImports.whenRead
y(function(){Polymer.RenderStatus._catchFirstRender()}):Polymer.RenderStatus._ca
tchFirstRender(),Polymer.ImportStatus=Polymer.RenderStatus,Polymer.ImportStatus.
whenLoaded=Polymer.ImportStatus.whenReady,function(){"use strict";var e=Polymer.
Settings;Polymer.Base={__isPolymerInstance__:!0,_addFeature:function(e){this.ext
end(this,e)},registerCallback:function(){"max"===e.lazyRegister?this.beforeRegis
ter&&this.beforeRegister():(this._desugarBehaviors(),this._doBehavior("beforeReg
ister")),this._registerFeatures(),e.lazyRegister||this.ensureRegisterFinished()}
,createdCallback:function(){this.__hasRegisterFinished||this._ensureRegisterFini
shed(this.__proto__),Polymer.telemetry.instanceCount++,this.root=this,this._doBe
havior("created"),this._initFeatures()},ensureRegisterFinished:function(){this._
ensureRegisterFinished(this)},_ensureRegisterFinished:function(t){t.__hasRegiste
rFinished===t.is&&t.is||("max"===e.lazyRegister&&(t._desugarBehaviors(),t._doBeh
aviorOnly("beforeRegister")),t.__hasRegisterFinished=t.is,t._finishRegisterFeatu
res&&t._finishRegisterFeatures(),t._doBehavior("registered"),e.usePolyfillProto&
&t!==this&&t.extend(this,t))},attachedCallback:function(){var e=this;Polymer.Ren
derStatus.whenReady(function(){e.isAttached=!0,e._doBehavior("attached")})},deta
chedCallback:function(){var e=this;Polymer.RenderStatus.whenReady(function(){e.i
sAttached=!1,e._doBehavior("detached")})},attributeChangedCallback:function(e,t,
r){this._attributeChangedImpl(e),this._doBehavior("attributeChanged",[e,t,r])},_
attributeChangedImpl:function(e){this._setAttributeToProperty(this,e)},extend:fu
nction(e,t){if(e&&t)for(var r,i=Object.getOwnPropertyNames(t),o=0;o<i.length&&(r
=i[o]);o++)this.copyOwnProperty(r,t,e);return e||t},mixin:function(e,t){for(var
r in t)e[r]=t[r];return e},copyOwnProperty:function(e,t,r){var i=Object.getOwnPr
opertyDescriptor(t,e);i&&Object.defineProperty(r,e,i)},_logger:function(e,t){swi
tch(1===t.length&&Array.isArray(t[0])&&(t=t[0]),e){case"log":case"warn":case"err
or":console[e].apply(console,t)}},_log:function(){var e=Array.prototype.slice.ca
ll(arguments,0);this._logger("log",e)},_warn:function(){var e=Array.prototype.sl
ice.call(arguments,0);this._logger("warn",e)},_error:function(){var e=Array.prot
otype.slice.call(arguments,0);this._logger("error",e)},_logf:function(){return t
his._logPrefix.concat(this.is).concat(Array.prototype.slice.call(arguments,0))}}
,Polymer.Base._logPrefix=function(){var e=window.chrome&&!/edge/i.test(navigator
.userAgent)||/firefox/i.test(navigator.userAgent);return e?["%c[%s::%s]:","font-
weight: bold; background-color:#EEEE00;"]:["[%s::%s]:"]}(),Polymer.Base.chainObj
ect=function(e,t){return e&&t&&e!==t&&(Object.__proto__||(e=Polymer.Base.extend(
Object.create(t),e)),e.__proto__=t),e},Polymer.Base=Polymer.Base.chainObject(Pol
ymer.Base,HTMLElement.prototype),window.CustomElements?Polymer.instanceof=Custom
Elements.instanceof:Polymer.instanceof=function(e,t){return e instanceof t},Poly
mer.isInstance=function(e){return Boolean(e&&e.__isPolymerInstance__)},Polymer.t
elemetry.instanceCount=0}(),function(){function e(){if(s)for(var e,t=document._c
urrentScript||document.currentScript,r=t&&t.ownerDocument||document,i=r.querySel
ectorAll("dom-module"),o=i.length-1;o>=0&&(e=i[o]);o--){if(e.__upgraded__)return
;CustomElements.upgrade(e)}}var t={},r={},i=function(e){return t[e]||r[e.toLower
Case()]},o=function(){return document.createElement("dom-module")};o.prototype=O
bject.create(HTMLElement.prototype),Polymer.Base.extend(o.prototype,{constructor
:o,createdCallback:function(){this.register()},register:function(e){e=e||this.id
||this.getAttribute("name")||this.getAttribute("is"),e&&(this.id=e,t[e]=this,r[e
.toLowerCase()]=this)},import:function(t,r){if(t){var o=i(t);return o||(e(),o=i(
t)),o&&r&&(o=o.querySelector(r)),o}}});var s=window.CustomElements&&!CustomEleme
nts.useNative;document.registerElement("dom-module",o)}(),Polymer.Base._addFeatu
re({_prepIs:function(){if(!this.is){var e=(document._currentScript||document.cur
rentScript).parentNode;if("dom-module"===e.localName){var t=e.id||e.getAttribute
("name")||e.getAttribute("is");this.is=t}}this.is&&(this.is=this.is.toLowerCase(
))}}),Polymer.Base._addFeature({behaviors:[],_desugarBehaviors:function(){this.b
ehaviors.length&&(this.behaviors=this._desugarSomeBehaviors(this.behaviors))},_d
esugarSomeBehaviors:function(e){var t=[];e=this._flattenBehaviorsList(e);for(var
r=e.length-1;r>=0;r--){var i=e[r];t.indexOf(i)===-1&&(this._mixinBehavior(i),t.
unshift(i))}return t},_flattenBehaviorsList:function(e){for(var t=[],r=0;r<e.len
gth;r++){var i=e[r];i instanceof Array?t=t.concat(this._flattenBehaviorsList(i))
:i?t.push(i):this._warn(this._logf("_flattenBehaviorsList","behavior is null, ch
eck for missing or 404 import"))}return t},_mixinBehavior:function(e){for(var t,
r=Object.getOwnPropertyNames(e),i=0;i<r.length&&(t=r[i]);i++)Polymer.Base._behav
iorProperties[t]||this.hasOwnProperty(t)||this.copyOwnProperty(t,e,this)},_prepB
ehaviors:function(){this._prepFlattenedBehaviors(this.behaviors)},_prepFlattened
Behaviors:function(e){for(var t=0,r=e.length;t<r;t++)this._prepBehavior(e[t]);th
is._prepBehavior(this)},_doBehavior:function(e,t){for(var r=0;r<this.behaviors.l
ength;r++)this._invokeBehavior(this.behaviors[r],e,t);this._invokeBehavior(this,
e,t)},_doBehaviorOnly:function(e,t){for(var r=0;r<this.behaviors.length;r++)this
._invokeBehavior(this.behaviors[r],e,t)},_invokeBehavior:function(e,t,r){var i=e
[t];i&&i.apply(this,r||Polymer.nar)},_marshalBehaviors:function(){for(var e=0;e<
this.behaviors.length;e++)this._marshalBehavior(this.behaviors[e]);this._marshal
Behavior(this)}}),Polymer.Base._behaviorProperties={hostAttributes:!0,beforeRegi
ster:!0,registered:!0,properties:!0,observers:!0,listeners:!0,created:!0,attache
d:!0,detached:!0,attributeChanged:!0,ready:!0},Polymer.Base._addFeature({_getExt
endedPrototype:function(e){return this._getExtendedNativePrototype(e)},_nativePr
ototypes:{},_getExtendedNativePrototype:function(e){var t=this._nativePrototypes
[e];if(!t){var r=this.getNativePrototype(e);t=this.extend(Object.create(r),Polym
er.Base),this._nativePrototypes[e]=t}return t},getNativePrototype:function(e){re
turn Object.getPrototypeOf(document.createElement(e))}}),Polymer.Base._addFeatur
e({_prepConstructor:function(){this._factoryArgs=this.extends?[this.extends,this
.is]:[this.is];var e=function(){return this._factory(arguments)};this.hasOwnProp
erty("extends")&&(e.extends=this.extends),Object.defineProperty(this,"constructo
r",{value:e,writable:!0,configurable:!0}),e.prototype=this},_factory:function(e)
{var t=document.createElement.apply(document,this._factoryArgs);return this.fact
oryImpl&&this.factoryImpl.apply(t,e),t}}),Polymer.nob=Object.create(null),Polyme
r.Base._addFeature({properties:{},getPropertyInfo:function(e){var t=this._getPro
pertyInfo(e,this.properties);if(!t)for(var r=0;r<this.behaviors.length;r++)if(t=
this._getPropertyInfo(e,this.behaviors[r].properties))return t;return t||Polymer
.nob},_getPropertyInfo:function(e,t){var r=t&&t[e];return"function"==typeof r&&(
r=t[e]={type:r}),r&&(r.defined=!0),r},_prepPropertyInfo:function(){this._propert
yInfo={};for(var e=0;e<this.behaviors.length;e++)this._addPropertyInfo(this._pro
pertyInfo,this.behaviors[e].properties);this._addPropertyInfo(this._propertyInfo
,this.properties),this._addPropertyInfo(this._propertyInfo,this._propertyEffects
)},_addPropertyInfo:function(e,t){if(t){var r,i;for(var o in t)r=e[o],i=t[o],("_
"!==o[0]||i.readOnly)&&(e[o]?(r.type||(r.type=i.type),r.readOnly||(r.readOnly=i.
readOnly)):e[o]={type:"function"==typeof i?i:i.type,readOnly:i.readOnly,attribut
e:Polymer.CaseMap.camelToDashCase(o)})}}}),Polymer.CaseMap={_caseMap:{},_rx:{das
hToCamel:/-[a-z]/g,camelToDash:/([A-Z])/g},dashToCamelCase:function(e){return th
is._caseMap[e]||(this._caseMap[e]=e.indexOf("-")<0?e:e.replace(this._rx.dashToCa
mel,function(e){return e[1].toUpperCase()}))},camelToDashCase:function(e){return
this._caseMap[e]||(this._caseMap[e]=e.replace(this._rx.camelToDash,"-$1").toLow
erCase())}},Polymer.Base._addFeature({_addHostAttributes:function(e){this._aggre
gatedAttributes||(this._aggregatedAttributes={}),e&&this.mixin(this._aggregatedA
ttributes,e)},_marshalHostAttributes:function(){this._aggregatedAttributes&&this
._applyAttributes(this,this._aggregatedAttributes)},_applyAttributes:function(e,
t){for(var r in t)if(!this.hasAttribute(r)&&"class"!==r){var i=t[r];this.seriali
zeValueToAttribute(i,r,this)}},_marshalAttributes:function(){this._takeAttribute
sToModel(this)},_takeAttributesToModel:function(e){if(this.hasAttributes())for(v
ar t in this._propertyInfo){var r=this._propertyInfo[t];this.hasAttribute(r.attr
ibute)&&this._setAttributeToProperty(e,r.attribute,t,r)}},_setAttributeToPropert
y:function(e,t,r,i){if(!this._serializing&&(r=r||Polymer.CaseMap.dashToCamelCase
(t),i=i||this._propertyInfo&&this._propertyInfo[r],i&&!i.readOnly)){var o=this.g
etAttribute(t);e[r]=this.deserialize(o,i.type)}},_serializing:!1,reflectProperty
ToAttribute:function(e,t,r){this._serializing=!0,r=void 0===r?this[e]:r,this.ser
ializeValueToAttribute(r,t||Polymer.CaseMap.camelToDashCase(e)),this._serializin
g=!1},serializeValueToAttribute:function(e,t,r){var i=this.serialize(e);r=r||thi
s,void 0===i?r.removeAttribute(t):r.setAttribute(t,i)},deserialize:function(e,t)
{switch(t){case Number:e=Number(e);break;case Boolean:e=null!=e;break;case Objec
t:try{e=JSON.parse(e)}catch(e){}break;case Array:try{e=JSON.parse(e)}catch(t){e=
null,console.warn("Polymer::Attributes: couldn`t decode Array as JSON")}break;ca
se Date:e=new Date(e);break;case String:}return e},serialize:function(e){switch(
typeof e){case"boolean":return e?"":void 0;case"object":if(e instanceof Date)ret
urn e.toString();if(e)try{return JSON.stringify(e)}catch(e){return""}default:ret
urn null!=e?e:void 0}}}),Polymer.version="1.7.0",Polymer.Base._addFeature({_regi
sterFeatures:function(){this._prepIs(),this._prepBehaviors(),this._prepConstruct
or(),this._prepPropertyInfo()},_prepBehavior:function(e){this._addHostAttributes
(e.hostAttributes)},_marshalBehavior:function(e){},_initFeatures:function(){this
._marshalHostAttributes(),this._marshalBehaviors()}})</script> <script>Polymer.B
ase._addFeature({_prepTemplate:function(){void 0===this._template&&(this._templa
te=Polymer.DomModule.import(this.is,"template")),this._template&&this._template.
hasAttribute("is")&&this._warn(this._logf("_prepTemplate","top-level Polymer tem
plate must not be a type-extension, found",this._template,"Move inside simple <t
emplate>.")),this._template&&!this._template.content&&window.HTMLTemplateElement
&&HTMLTemplateElement.decorate&&HTMLTemplateElement.decorate(this._template)},_s
tampTemplate:function(){this._template&&(this.root=this.instanceTemplate(this._t
emplate))},instanceTemplate:function(e){var t=document.importNode(e._content||e.
content,!0);return t}}),function(){var e=Polymer.Base.attachedCallback;Polymer.B
ase._addFeature({_hostStack:[],ready:function(){},_registerHost:function(e){this
.dataHost=e=e||Polymer.Base._hostStack[Polymer.Base._hostStack.length-1],e&&e._c
lients&&e._clients.push(this),this._clients=null,this._clientsReadied=!1},_begin
Hosting:function(){Polymer.Base._hostStack.push(this),this._clients||(this._clie
nts=[])},_endHosting:function(){Polymer.Base._hostStack.pop()},_tryReady:functio
n(){this._readied=!1,this._canReady()&&this._ready()},_canReady:function(){retur
n!this.dataHost||this.dataHost._clientsReadied},_ready:function(){this._beforeCl
ientsReady(),this._template&&(this._setupRoot(),this._readyClients()),this._clie
ntsReadied=!0,this._clients=null,this._afterClientsReady(),this._readySelf()},_r
eadyClients:function(){this._beginDistribute();var e=this._clients;if(e)for(var
t,o=0,i=e.length;o<i&&(t=e[o]);o++)t._ready();this._finishDistribute()},_readySe
lf:function(){this._doBehavior("ready"),this._readied=!0,this._attachedPending&&
(this._attachedPending=!1,this.attachedCallback())},_beforeClientsReady:function
(){},_afterClientsReady:function(){},_beforeAttached:function(){},attachedCallba
ck:function(){this._readied?(this._beforeAttached(),e.call(this)):this._attached
Pending=!0}})}(),Polymer.ArraySplice=function(){function e(e,t,o){return{index:e
,removed:t,addedCount:o}}function t(){}var o=0,i=1,n=2,s=3;return t.prototype={c
alcEditDistances:function(e,t,o,i,n,s){for(var r=s-n+1,d=o-t+1,a=new Array(r),l=
0;l<r;l++)a[l]=new Array(d),a[l][0]=l;for(var h=0;h<d;h++)a[0][h]=h;for(l=1;l<r;
l++)for(h=1;h<d;h++)if(this.equals(e[t+h-1],i[n+l-1]))a[l][h]=a[l-1][h-1];else{v
ar u=a[l-1][h]+1,c=a[l][h-1]+1;a[l][h]=u<c?u:c}return a},spliceOperationsFromEdi
tDistances:function(e){for(var t=e.length-1,r=e[0].length-1,d=e[t][r],a=[];t>0||
r>0;)if(0!=t)if(0!=r){var l,h=e[t-1][r-1],u=e[t-1][r],c=e[t][r-1];l=u<c?u<h?u:h:
c<h?c:h,l==h?(h==d?a.push(o):(a.push(i),d=h),t--,r--):l==u?(a.push(s),t--,d=u):(
a.push(n),r--,d=c)}else a.push(s),t--;else a.push(n),r--;return a.reverse(),a},c
alcSplices:function(t,r,d,a,l,h){var u=0,c=0,_=Math.min(d-r,h-l);if(0==r&&0==l&&
(u=this.sharedPrefix(t,a,_)),d==t.length&&h==a.length&&(c=this.sharedSuffix(t,a,
_-u)),r+=u,l+=u,d-=c,h-=c,d-r==0&&h-l==0)return[];if(r==d){for(var f=e(r,[],0);l
<h;)f.removed.push(a[l++]);return[f]}if(l==h)return[e(r,[],d-r)];var m=this.spli
ceOperationsFromEditDistances(this.calcEditDistances(t,r,d,a,l,h));f=void 0;for(
var p=[],v=r,g=l,b=0;b<m.length;b++)switch(m[b]){case o:f&&(p.push(f),f=void 0),
v++,g++;break;case i:f||(f=e(v,[],0)),f.addedCount++,v++,f.removed.push(a[g]),g+
+;break;case n:f||(f=e(v,[],0)),f.addedCount++,v++;break;case s:f||(f=e(v,[],0))
,f.removed.push(a[g]),g++}return f&&p.push(f),p},sharedPrefix:function(e,t,o){fo
r(var i=0;i<o;i++)if(!this.equals(e[i],t[i]))return i;return o},sharedSuffix:fun
ction(e,t,o){for(var i=e.length,n=t.length,s=0;s<o&&this.equals(e[--i],t[--n]);)
s++;return s},calculateSplices:function(e,t){return this.calcSplices(e,0,e.lengt
h,t,0,t.length)},equals:function(e,t){return e===t}},new t}(),Polymer.domInnerHT
ML=function(){function e(e){switch(e){case"&":return"&";case"<":return"<"
;case">":return">";case'"':return""";case" ":return" "}}function t(
t){return t.replace(r,e)}function o(t){return t.replace(d,e)}function i(e){for(v
ar t={},o=0;o<e.length;o++)t[e[o]]=!0;return t}function n(e,i,n){switch(e.nodeTy
pe){case Node.ELEMENT_NODE:for(var r,d=e.localName,h="<"+d,u=e.attributes,c=0;r=
u[c];c++)h+=" "+r.name+'="'+t(r.value)+'"';return h+=">",a[d]?h:h+s(e,n)+"</"+d+
">";case Node.TEXT_NODE:var _=e.data;return i&&l[i.localName]?_:o(_);case Node.C
OMMENT_NODE:return"\x3c!--"+e.data+"--\x3e";default:throw console.error(e),new E
rror("not implemented")}}function s(e,t){e instanceof HTMLTemplateElement&&(e=e.
content);for(var o,i="",s=Polymer.dom(e).childNodes,r=0,d=s.length;r<d&&(o=s[r])
;r++)i+=n(o,e,t);return i}var r=/[&\u00A0"]/g,d=/[&\u00A0<>]/g,a=i(["area","base
","br","col","command","embed","hr","img","input","keygen","link","meta","param"
,"source","track","wbr"]),l=i(["style","script","xmp","iframe","noembed","nofram
es","plaintext","noscript"]);return{getInnerHTML:s}}(),function(){"use strict";v
ar e=Element.prototype.insertBefore,t=Element.prototype.appendChild,o=Element.pr
ototype.removeChild;Polymer.TreeApi={arrayCopyChildNodes:function(e){for(var t=[
],o=0,i=e.firstChild;i;i=i.nextSibling)t[o++]=i;return t},arrayCopyChildren:func
tion(e){for(var t=[],o=0,i=e.firstElementChild;i;i=i.nextElementSibling)t[o++]=i
;return t},arrayCopy:function(e){for(var t=e.length,o=new Array(t),i=0;i<t;i++)o
[i]=e[i];return o}},Polymer.TreeApi.Logical={hasParentNode:function(e){return Bo
olean(e.__dom&&e.__dom.parentNode)},hasChildNodes:function(e){return Boolean(e._
_dom&&void 0!==e.__dom.childNodes)},getChildNodes:function(e){return this.hasChi
ldNodes(e)?this._getChildNodes(e):e.childNodes},_getChildNodes:function(e){if(!e
.__dom.childNodes){e.__dom.childNodes=[];for(var t=e.__dom.firstChild;t;t=t.__do
m.nextSibling)e.__dom.childNodes.push(t)}return e.__dom.childNodes},getParentNod
e:function(e){return e.__dom&&void 0!==e.__dom.parentNode?e.__dom.parentNode:e.p
arentNode},getFirstChild:function(e){return e.__dom&&void 0!==e.__dom.firstChild
?e.__dom.firstChild:e.firstChild},getLastChild:function(e){return e.__dom&&void
0!==e.__dom.lastChild?e.__dom.lastChild:e.lastChild},getNextSibling:function(e){
return e.__dom&&void 0!==e.__dom.nextSibling?e.__dom.nextSibling:e.nextSibling},
getPreviousSibling:function(e){return e.__dom&&void 0!==e.__dom.previousSibling?
e.__dom.previousSibling:e.previousSibling},getFirstElementChild:function(e){retu
rn e.__dom&&void 0!==e.__dom.firstChild?this._getFirstElementChild(e):e.firstEle
mentChild},_getFirstElementChild:function(e){for(var t=e.__dom.firstChild;t&&t.n
odeType!==Node.ELEMENT_NODE;)t=t.__dom.nextSibling;return t},getLastElementChild
:function(e){return e.__dom&&void 0!==e.__dom.lastChild?this._getLastElementChil
d(e):e.lastElementChild},_getLastElementChild:function(e){for(var t=e.__dom.last
Child;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.previousSibling;return t},get
NextElementSibling:function(e){return e.__dom&&void 0!==e.__dom.nextSibling?this
._getNextElementSibling(e):e.nextElementSibling},_getNextElementSibling:function
(e){for(var t=e.__dom.nextSibling;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.n
extSibling;return t},getPreviousElementSibling:function(e){return e.__dom&&void
0!==e.__dom.previousSibling?this._getPreviousElementSibling(e):e.previousElement
Sibling},_getPreviousElementSibling:function(e){for(var t=e.__dom.previousSiblin
g;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.previousSibling;return t},saveChi
ldNodes:function(e){if(!this.hasChildNodes(e)){e.__dom=e.__dom||{},e.__dom.first
Child=e.firstChild,e.__dom.lastChild=e.lastChild,e.__dom.childNodes=[];for(var t
=e.firstChild;t;t=t.nextSibling)t.__dom=t.__dom||{},t.__dom.parentNode=e,e.__dom
.childNodes.push(t),t.__dom.nextSibling=t.nextSibling,t.__dom.previousSibling=t.
previousSibling}},recordInsertBefore:function(e,t,o){if(t.__dom.childNodes=null,
e.nodeType===Node.DOCUMENT_FRAGMENT_NODE)for(var i=e.firstChild;i;i=i.nextSiblin
g)this._linkNode(i,t,o);else this._linkNode(e,t,o)},_linkNode:function(e,t,o){e.
__dom=e.__dom||{},t.__dom=t.__dom||{},o&&(o.__dom=o.__dom||{}),e.__dom.previousS
ibling=o?o.__dom.previousSibling:t.__dom.lastChild,e.__dom.previousSibling&&(e._
_dom.previousSibling.__dom.nextSibling=e),e.__dom.nextSibling=o||null,e.__dom.ne
xtSibling&&(e.__dom.nextSibling.__dom.previousSibling=e),e.__dom.parentNode=t,o?
o===t.__dom.firstChild&&(t.__dom.firstChild=e):(t.__dom.lastChild=e,t.__dom.firs
tChild||(t.__dom.firstChild=e)),t.__dom.childNodes=null},recordRemoveChild:funct
ion(e,t){e.__dom=e.__dom||{},t.__dom=t.__dom||{},e===t.__dom.firstChild&&(t.__do
m.firstChild=e.__dom.nextSibling),e===t.__dom.lastChild&&(t.__dom.lastChild=e.__
dom.previousSibling);var o=e.__dom.previousSibling,i=e.__dom.nextSibling;o&&(o._
_dom.nextSibling=i),i&&(i.__dom.previousSibling=o),e.__dom.parentNode=e.__dom.pr
eviousSibling=e.__dom.nextSibling=void 0,t.__dom.childNodes=null}},Polymer.TreeA
pi.Composed={getChildNodes:function(e){return Polymer.TreeApi.arrayCopyChildNode
s(e)},getParentNode:function(e){return e.parentNode},clearChildNodes:function(e)
{e.textContent=""},insertBefore:function(t,o,i){return e.call(t,o,i||null)},appe
ndChild:function(e,o){return t.call(e,o)},removeChild:function(e,t){return o.cal
l(e,t)}}}(),Polymer.DomApi=function(){"use strict";var e=Polymer.Settings,t=Poly
mer.TreeApi,o=function(e){this.node=i?o.wrap(e):e},i=e.hasShadow&&!e.nativeShado
w;o.wrap=window.wrap?window.wrap:function(e){return e},o.prototype={flush:functi
on(){Polymer.dom.flush()},deepContains:function(e){if(this.node.contains(e))retu
rn!0;for(var t=e,o=e.ownerDocument;t&&t!==o&&t!==this.node;)t=Polymer.dom(t).par
entNode||t.host;return t===this.node},queryDistributedElements:function(e){for(v
ar t,i=this.getEffectiveChildNodes(),n=[],s=0,r=i.length;s<r&&(t=i[s]);s++)t.nod
eType===Node.ELEMENT_NODE&&o.matchesSelector.call(t,e)&&n.push(t);return n},getE
ffectiveChildNodes:function(){for(var e,t=[],o=this.childNodes,i=0,r=o.length;i<
r&&(e=o[i]);i++)if(e.localName===n)for(var d=s(e).getDistributedNodes(),a=0;a<d.
length;a++)t.push(d[a]);else t.push(e);return t},observeNodes:function(e){if(e)r
eturn this.observer||(this.observer=this.node.localName===n?new o.DistributedNod
esObserver(this):new o.EffectiveNodesObserver(this)),this.observer.addListener(e
)},unobserveNodes:function(e){this.observer&&this.observer.removeListener(e)},no
tifyObserver:function(){this.observer&&this.observer.notify()},_query:function(e
,o,i){o=o||this.node;var n=[];return this._queryElements(t.Logical.getChildNodes
(o),e,i,n),n},_queryElements:function(e,t,o,i){for(var n,s=0,r=e.length;s<r&&(n=
e[s]);s++)if(n.nodeType===Node.ELEMENT_NODE&&this._queryElement(n,t,o,i))return!
0},_queryElement:function(e,o,i,n){var s=o(e);return s&&n.push(e),i&&i(s)?s:void
this._queryElements(t.Logical.getChildNodes(e),o,i,n)}};var n=o.CONTENT="conten
t",s=o.factory=function(e){return e=e||document,e.__domApi||(e.__domApi=new o.ct
or(e)),e.__domApi};o.hasApi=function(e){return Boolean(e.__domApi)},o.ctor=o,Pol
ymer.dom=function(e,t){return e instanceof Event?Polymer.EventApi.factory(e):o.f
actory(e,t)};var r=Element.prototype;return o.matchesSelector=r.matches||r.match
esSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.web
kitMatchesSelector,o}(),function(){"use strict";var e=Polymer.Settings,t=Polymer
.DomApi,o=t.factory,i=Polymer.TreeApi,n=Polymer.domInnerHTML.getInnerHTML,s=t.CO
NTENT;if(!e.useShadow){var r=Element.prototype.cloneNode,d=Document.prototype.im
portNode;Polymer.Base.extend(t.prototype,{_lazyDistribute:function(e){e.shadyRoo
t&&e.shadyRoot._distributionClean&&(e.shadyRoot._distributionClean=!1,Polymer.do
m.addDebouncer(e.debounce("_distribute",e._distributeContent)))},appendChild:fun
ction(e){return this.insertBefore(e)},insertBefore:function(e,n){if(n&&i.Logical
.getParentNode(n)!==this.node)throw Error("The ref_node to be inserted before is
not a child of this node");if(e.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var r=i
.Logical.getParentNode(e);r?(t.hasApi(r)&&o(r).notifyObserver(),this._removeNode
(e)):this._removeOwnerShadyRoot(e)}if(!this._addNode(e,n)){n&&(n=n.localName===s
?this._firstComposedNode(n):n);var d=this.node._isShadyRoot?this.node.host:this.
node;n?i.Composed.insertBefore(d,e,n):i.Composed.appendChild(d,e)}return this.no
tifyObserver(),e},_addNode:function(e,t){var o=this.getOwnerRoot();if(o){var n=t
his._maybeAddInsertionPoint(e,this.node);o._invalidInsertionPoints||(o._invalidI
nsertionPoints=n),this._addNodeToHost(o.host,e)}i.Logical.hasChildNodes(this.nod
e)&&i.Logical.recordInsertBefore(e,this.node,t);var s=this._maybeDistribute(e)||
this.node.shadyRoot;if(s)if(e.nodeType===Node.DOCUMENT_FRAGMENT_NODE)for(;e.firs
tChild;)i.Composed.removeChild(e,e.firstChild);else{var r=i.Composed.getParentNo
de(e);r&&i.Composed.removeChild(r,e)}return s},removeChild:function(e){if(i.Logi
cal.getParentNode(e)!==this.node)throw Error("The node to be removed is not a ch
ild of this node: "+e);if(!this._removeNode(e)){var t=this.node._isShadyRoot?thi
s.node.host:this.node,o=i.Composed.getParentNode(e);t===o&&i.Composed.removeChil
d(t,e)}return this.notifyObserver(),e},_removeNode:function(e){var t,n=i.Logical
.hasParentNode(e)&&i.Logical.getParentNode(e),s=this._ownerShadyRootForNode(e);r
eturn n&&(t=o(e)._maybeDistributeParent(),i.Logical.recordRemoveChild(e,n),s&&th
is._removeDistributedChildren(s,e)&&(s._invalidInsertionPoints=!0,this._lazyDist
ribute(s.host))),this._removeOwnerShadyRoot(e),s&&this._removeNodeFromHost(s.hos
t,e),t},replaceChild:function(e,t){return this.insertBefore(e,t),this.removeChil
d(t),e},_hasCachedOwnerRoot:function(e){return Boolean(void 0!==e._ownerShadyRoo
t)},getOwnerRoot:function(){return this._ownerShadyRootForNode(this.node)},_owne
rShadyRootForNode:function(e){if(e){var t=e._ownerShadyRoot;if(void 0===t){if(e.
_isShadyRoot)t=e;else{var o=i.Logical.getParentNode(e);t=o?o._isShadyRoot?o:this
._ownerShadyRootForNode(o):null}(t||document.documentElement.contains(e))&&(e._o
wnerShadyRoot=t)}return t}},_maybeDistribute:function(e){var t=e.nodeType===Node
.DOCUMENT_FRAGMENT_NODE&&!e.__noContent&&o(e).querySelector(s),n=t&&i.Logical.ge
tParentNode(t).nodeType!==Node.DOCUMENT_FRAGMENT_NODE,r=t||e.localName===s;if(r)
{var d=this.getOwnerRoot();d&&this._lazyDistribute(d.host)}var a=this._nodeNeeds
Distribution(this.node);return a&&this._lazyDistribute(this.node),a||r&&!n},_may
beAddInsertionPoint:function(e,t){var n;if(e.nodeType!==Node.DOCUMENT_FRAGMENT_N
ODE||e.__noContent)e.localName===s&&(i.Logical.saveChildNodes(t),i.Logical.saveC
hildNodes(e),n=!0);else for(var r,d,a,l=o(e).querySelectorAll(s),h=0;h<l.length&
&(r=l[h]);h++)d=i.Logical.getParentNode(r),d===e&&(d=t),a=this._maybeAddInsertio
nPoint(r,d),n=n||a;return n},_updateInsertionPoints:function(e){for(var t,n=e.sh
adyRoot._insertionPoints=o(e.shadyRoot).querySelectorAll(s),r=0;r<n.length;r++)t
=n[r],i.Logical.saveChildNodes(t),i.Logical.saveChildNodes(i.Logical.getParentNo
de(t))},_nodeNeedsDistribution:function(e){return e&&e.shadyRoot&&t.hasInsertion
Point(e.shadyRoot)},_addNodeToHost:function(e,t){e._elementAdd&&e._elementAdd(t)
},_removeNodeFromHost:function(e,t){e._elementRemove&&e._elementRemove(t)},_remo
veDistributedChildren:function(e,t){for(var n,s=e._insertionPoints,r=0;r<s.lengt
h;r++){var d=s[r];if(this._contains(t,d))for(var a=o(d).getDistributedNodes(),l=
0;l<a.length;l++){n=!0;var h=a[l],u=i.Composed.getParentNode(h);u&&i.Composed.re
moveChild(u,h)}}return n},_contains:function(e,t){for(;t;){if(t==e)return!0;t=i.
Logical.getParentNode(t)}},_removeOwnerShadyRoot:function(e){if(this._hasCachedO
wnerRoot(e))for(var t,o=i.Logical.getChildNodes(e),n=0,s=o.length;n<s&&(t=o[n]);
n++)this._removeOwnerShadyRoot(t);e._ownerShadyRoot=void 0},_firstComposedNode:f
unction(e){for(var t,i,n=o(e).getDistributedNodes(),s=0,r=n.length;s<r&&(t=n[s])
;s++)if(i=o(t).getDestinationInsertionPoints(),i[i.length-1]===e)return t},query
Selector:function(e){var o=this._query(function(o){return t.matchesSelector.call
(o,e)},this.node,function(e){return Boolean(e)})[0];return o||null},querySelecto
rAll:function(e){return this._query(function(o){return t.matchesSelector.call(o,
e)},this.node)},getDestinationInsertionPoints:function(){return this.node._desti
nationInsertionPoints||[]},getDistributedNodes:function(){return this.node._dist
ributedNodes||[]},_clear:function(){for(;this.childNodes.length;)this.removeChil
d(this.childNodes[0])},setAttribute:function(e,t){this.node.setAttribute(e,t),th
is._maybeDistributeParent()},removeAttribute:function(e){this.node.removeAttribu
te(e),this._maybeDistributeParent()},_maybeDistributeParent:function(){if(this._
nodeNeedsDistribution(this.parentNode))return this._lazyDistribute(this.parentNo
de),!0},cloneNode:function(e){var t=r.call(this.node,!1);if(e)for(var i,n=this.c
hildNodes,s=o(t),d=0;d<n.length;d++)i=o(n[d]).cloneNode(!0),s.appendChild(i);ret
urn t},importNode:function(e,t){var n=this.node instanceof Document?this.node:th
is.node.ownerDocument,s=d.call(n,e,!1);if(t)for(var r,a=i.Logical.getChildNodes(
e),l=o(s),h=0;h<a.length;h++)r=o(n).importNode(a[h],!0),l.appendChild(r);return
s},_getComposedInnerHTML:function(){return n(this.node,!0)}}),Object.definePrope
rties(t.prototype,{activeElement:{get:function(){var e=document.activeElement;if
(!e)return null;var t=!!this.node._isShadyRoot;if(this.node!==document){if(!t)re
turn null;if(this.node.host===e||!this.node.host.contains(e))return null}for(var
i=o(e).getOwnerRoot();i&&i!==this.node;)e=i.host,i=o(e).getOwnerRoot();return t
his.node===document?i?null:e:i===this.node?e:null},configurable:!0},childNodes:{
get:function(){var e=i.Logical.getChildNodes(this.node);return Array.isArray(e)?
e:i.arrayCopyChildNodes(this.node)},configurable:!0},children:{get:function(){re
turn i.Logical.hasChildNodes(this.node)?Array.prototype.filter.call(this.childNo
des,function(e){return e.nodeType===Node.ELEMENT_NODE}):i.arrayCopyChildren(this
.node)},configurable:!0},parentNode:{get:function(){return i.Logical.getParentNo
de(this.node)},configurable:!0},firstChild:{get:function(){return i.Logical.getF
irstChild(this.node)},configurable:!0},lastChild:{get:function(){return i.Logica
l.getLastChild(this.node)},configurable:!0},nextSibling:{get:function(){return i
.Logical.getNextSibling(this.node)},configurable:!0},previousSibling:{get:functi
on(){return i.Logical.getPreviousSibling(this.node)},configurable:!0},firstEleme
ntChild:{get:function(){return i.Logical.getFirstElementChild(this.node)},config
urable:!0},lastElementChild:{get:function(){return i.Logical.getLastElementChild
(this.node)},configurable:!0},nextElementSibling:{get:function(){return i.Logica
l.getNextElementSibling(this.node)},configurable:!0},previousElementSibling:{get
:function(){return i.Logical.getPreviousElementSibling(this.node)},configurable:
!0},textContent:{get:function(){var e=this.node.nodeType;if(e===Node.TEXT_NODE||
e===Node.COMMENT_NODE)return this.node.textContent;for(var t,o=[],i=0,n=this.chi
ldNodes;t=n[i];i++)t.nodeType!==Node.COMMENT_NODE&&o.push(t.textContent);return
o.join("")},set:function(e){var t=this.node.nodeType;t===Node.TEXT_NODE||t===Nod
e.COMMENT_NODE?this.node.textContent=e:(this._clear(),e&&this.appendChild(docume
nt.createTextNode(e)))},configurable:!0},innerHTML:{get:function(){var e=this.no
de.nodeType;return e===Node.TEXT_NODE||e===Node.COMMENT_NODE?null:n(this.node)},
set:function(e){var t=this.node.nodeType;if(t!==Node.TEXT_NODE||t!==Node.COMMENT
_NODE){this._clear();var o=document.createElement("div");o.innerHTML=e;for(var n
=i.arrayCopyChildNodes(o),s=0;s<n.length;s++)this.appendChild(n[s])}},configurab
le:!0}}),t.hasInsertionPoint=function(e){return Boolean(e&&e._insertionPoints.le
ngth)}}}(),function(){"use strict";var e=Polymer.Settings,t=Polymer.TreeApi,o=Po
lymer.DomApi;if(e.useShadow){Polymer.Base.extend(o.prototype,{querySelectorAll:f
unction(e){return t.arrayCopy(this.node.querySelectorAll(e))},getOwnerRoot:funct
ion(){for(var e=this.node;e;){if(e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.hos
t)return e;e=e.parentNode}},importNode:function(e,t){var o=this.node instanceof
Document?this.node:this.node.ownerDocument;return o.importNode(e,t)},getDestinat
ionInsertionPoints:function(){var e=this.node.getDestinationInsertionPoints&&thi
s.node.getDestinationInsertionPoints();return e?t.arrayCopy(e):[]},getDistribute
dNodes:function(){var e=this.node.getDistributedNodes&&this.node.getDistributedN
odes();return e?t.arrayCopy(e):[]}}),Object.defineProperties(o.prototype,{active
Element:{get:function(){var e=o.wrap(this.node),t=e.activeElement;return e.conta
ins(t)?t:null},configurable:!0},childNodes:{get:function(){return t.arrayCopyChi
ldNodes(this.node)},configurable:!0},children:{get:function(){return t.arrayCopy
Children(this.node)},configurable:!0},textContent:{get:function(){return this.no
de.textContent},set:function(e){return this.node.textContent=e},configurable:!0}
,innerHTML:{get:function(){return this.node.innerHTML},set:function(e){return th
is.node.innerHTML=e},configurable:!0}});var i=function(e){for(var t=0;t<e.length
;t++)n(e[t])},n=function(e){o.prototype[e]=function(){return this.node[e].apply(
this.node,arguments)}};i(["cloneNode","appendChild","insertBefore","removeChild"
,"replaceChild","setAttribute","removeAttribute","querySelector"]);var s=functio
n(e){for(var t=0;t<e.length;t++)r(e[t])},r=function(e){Object.defineProperty(o.p
rototype,e,{get:function(){return this.node[e]},configurable:!0})};s(["parentNod
e","firstChild","lastChild","nextSibling","previousSibling","firstElementChild",
"lastElementChild","nextElementSibling","previousElementSibling"])}}(),Polymer.B
ase.extend(Polymer.dom,{_flushGuard:0,_FLUSH_MAX:100,_needsTakeRecords:!Polymer.
Settings.useNativeCustomElements,_debouncers:[],_staticFlushList:[],_finishDebou
ncer:null,flush:function(){for(this._flushGuard=0,this._prepareFlush();this._deb
ouncers.length&&this._flushGuard<this._FLUSH_MAX;){for(;this._debouncers.length;
)this._debouncers.shift().complete();this._finishDebouncer&&this._finishDebounce
r.complete(),this._prepareFlush(),this._flushGuard++}this._flushGuard>=this._FLU
SH_MAX&&console.warn("Polymer.dom.flush aborted. Flush may not be complete.")},_
prepareFlush:function(){this._needsTakeRecords&&CustomElements.takeRecords();for
(var e=0;e<this._staticFlushList.length;e++)this._staticFlushList[e]()},addStati
cFlush:function(e){this._staticFlushList.push(e)},removeStaticFlush:function(e){
var t=this._staticFlushList.indexOf(e);t>=0&&this._staticFlushList.splice(t,1)},
addDebouncer:function(e){this._debouncers.push(e),this._finishDebouncer=Polymer.
Debounce(this._finishDebouncer,this._finishFlush)},_finishFlush:function(){Polym
er.dom._debouncers=[]}}),Polymer.EventApi=function(){"use strict";var e=Polymer.
DomApi.ctor,t=Polymer.Settings;e.Event=function(e){this.event=e},t.useShadow?e.E
vent.prototype={get rootTarget(){return this.event.path[0]},get localTarget(){re
turn this.event.target},get path(){var e=this.event.path;return Array.isArray(e)
||(e=Array.prototype.slice.call(e)),e}}:e.Event.prototype={get rootTarget(){retu
rn this.event.target},get localTarget(){for(var e=this.event.currentTarget,t=e&&
Polymer.dom(e).getOwnerRoot(),o=this.path,i=0;i<o.length;i++)if(Polymer.dom(o[i]
).getOwnerRoot()===t)return o[i]},get path(){if(!this.event._path){for(var e=[],
t=this.rootTarget;t;){e.push(t);var o=Polymer.dom(t).getDestinationInsertionPoin
ts();if(o.length){for(var i=0;i<o.length-1;i++)e.push(o[i]);t=o[o.length-1]}else
t=Polymer.dom(t).parentNode||t.host}e.push(window),this.event._path=e}return th
is.event._path}};var o=function(t){return t.__eventApi||(t.__eventApi=new e.Even
t(t)),t.__eventApi};return{factory:o}}(),function(){"use strict";var e=Polymer.D
omApi.ctor,t=Polymer.Settings.useShadow;Object.defineProperty(e.prototype,"class
List",{get:function(){return this._classList||(this._classList=new e.ClassList(t
his)),this._classList},configurable:!0}),e.ClassList=function(e){this.domApi=e,t
his.node=e.node},e.ClassList.prototype={add:function(){this.node.classList.add.a
pply(this.node.classList,arguments),this._distributeParent()},remove:function(){
this.node.classList.remove.apply(this.node.classList,arguments),this._distribute
Parent()},toggle:function(){this.node.classList.toggle.apply(this.node.classList
,arguments),this._distributeParent()},_distributeParent:function(){t||this.domAp
i._maybeDistributeParent()},contains:function(){return this.node.classList.conta
ins.apply(this.node.classList,arguments)}}}(),function(){"use strict";var e=Poly
mer.DomApi.ctor,t=Polymer.Settings;if(e.EffectiveNodesObserver=function(e){this.
domApi=e,this.node=this.domApi.node,this._listeners=[]},e.EffectiveNodesObserver
.prototype={addListener:function(e){this._isSetup||(this._setup(),this._isSetup=
!0);var t={fn:e,_nodes:[]};return this._listeners.push(t),this._scheduleNotify()
,t},removeListener:function(e){var t=this._listeners.indexOf(e);t>=0&&(this._lis
teners.splice(t,1),e._nodes=[]),this._hasListeners()||(this._cleanup(),this._isS
etup=!1)},_setup:function(){this._observeContentElements(this.domApi.childNodes)
},_cleanup:function(){this._unobserveContentElements(this.domApi.childNodes)},_h
asListeners:function(){return Boolean(this._listeners.length)},_scheduleNotify:f
unction(){this._debouncer&&this._debouncer.stop(),this._debouncer=Polymer.Deboun
ce(this._debouncer,this._notify),this._debouncer.context=this,Polymer.dom.addDeb
ouncer(this._debouncer)},notify:function(){this._hasListeners()&&this._scheduleN
otify()},_notify:function(){this._beforeCallListeners(),this._callListeners()},_
beforeCallListeners:function(){this._updateContentElements()},_updateContentElem
ents:function(){this._observeContentElements(this.domApi.childNodes)},_observeCo
ntentElements:function(e){for(var t,o=0;o<e.length&&(t=e[o]);o++)this._isContent
(t)&&(t.__observeNodesMap=t.__observeNodesMap||new WeakMap,t.__observeNodesMap.h
as(this)||t.__observeNodesMap.set(this,this._observeContent(t)))},_observeConten
t:function(e){var t=this,o=Polymer.dom(e).observeNodes(function(){t._scheduleNot
ify()});return o._avoidChangeCalculation=!0,o},_unobserveContentElements:functio
n(e){for(var t,o,i=0;i<e.length&&(t=e[i]);i++)this._isContent(t)&&(o=t.__observe
NodesMap.get(this),o&&(Polymer.dom(t).unobserveNodes(o),t.__observeNodesMap.dele
te(this)))},_isContent:function(e){return"content"===e.localName},_callListeners
:function(){for(var e,t=this._listeners,o=this._getEffectiveNodes(),i=0;i<t.leng
th&&(e=t[i]);i++){var n=this._generateListenerInfo(e,o);(n||e._alwaysNotify)&&th
is._callListener(e,n)}},_getEffectiveNodes:function(){return this.domApi.getEffe
ctiveChildNodes()},_generateListenerInfo:function(e,t){if(e._avoidChangeCalculat
ion)return!0;for(var o,i=e._nodes,n={target:this.node,addedNodes:[],removedNodes
:[]},s=Polymer.ArraySplice.calculateSplices(t,i),r=0;r<s.length&&(o=s[r]);r++)fo
r(var d,a=0;a<o.removed.length&&(d=o.removed[a]);a++)n.removedNodes.push(d);for(
r=0,o;r<s.length&&(o=s[r]);r++)for(a=o.index;a<o.index+o.addedCount;a++)n.addedN
odes.push(t[a]);return e._nodes=t,n.addedNodes.length||n.removedNodes.length?n:v
oid 0},_callListener:function(e,t){return e.fn.call(this.node,t)},enableShadowAt
tributeTracking:function(){}},t.useShadow){var o=e.EffectiveNodesObserver.protot
ype._setup,i=e.EffectiveNodesObserver.prototype._cleanup;Polymer.Base.extend(e.E
ffectiveNodesObserver.prototype,{_setup:function(){if(!this._observer){var e=thi
s;this._mutationHandler=function(t){t&&t.length&&e._scheduleNotify()},this._obse
rver=new MutationObserver(this._mutationHandler),this._boundFlush=function(){e._
flush()},Polymer.dom.addStaticFlush(this._boundFlush),this._observer.observe(thi
s.node,{childList:!0})}o.call(this)},_cleanup:function(){this._observer.disconne
ct(),this._observer=null,this._mutationHandler=null,Polymer.dom.removeStaticFlus
h(this._boundFlush),i.call(this)},_flush:function(){this._observer&&this._mutati
onHandler(this._observer.takeRecords())},enableShadowAttributeTracking:function(
){if(this._observer){this._makeContentListenersAlwaysNotify(),this._observer.dis
connect(),this._observer.observe(this.node,{childList:!0,attributes:!0,subtree:!
0});var e=this.domApi.getOwnerRoot(),t=e&&e.host;t&&Polymer.dom(t).observer&&Pol
ymer.dom(t).observer.enableShadowAttributeTracking()}},_makeContentListenersAlwa
ysNotify:function(){for(var e,t=0;t<this._listeners.length;t++)e=this._listeners
[t],e._alwaysNotify=e._isContentListener}})}}(),function(){"use strict";var e=Po
lymer.DomApi.ctor,t=Polymer.Settings;e.DistributedNodesObserver=function(t){e.Ef
fectiveNodesObserver.call(this,t)},e.DistributedNodesObserver.prototype=Object.c
reate(e.EffectiveNodesObserver.prototype),Polymer.Base.extend(e.DistributedNodes
Observer.prototype,{_setup:function(){},_cleanup:function(){},_beforeCallListene
rs:function(){},_getEffectiveNodes:function(){return this.domApi.getDistributedN
odes()}}),t.useShadow&&Polymer.Base.extend(e.DistributedNodesObserver.prototype,
{_setup:function(){if(!this._observer){var e=this.domApi.getOwnerRoot(),t=e&&e.h
ost;if(t){var o=this;this._observer=Polymer.dom(t).observeNodes(function(){o._sc
heduleNotify()}),this._observer._isContentListener=!0,this._hasAttrSelect()&&Pol
ymer.dom(t).observer.enableShadowAttributeTracking()}}},_hasAttrSelect:function(
){var e=this.node.getAttribute("select");return e&&e.match(/[[.]+/)},_cleanup:fu
nction(){var e=this.domApi.getOwnerRoot(),t=e&&e.host;t&&Polymer.dom(t).unobserv
eNodes(this._observer),this._observer=null}})}(),function(){function e(e,t){t._d
istributedNodes.push(e);var o=e._destinationInsertionPoints;o?o.push(t):e._desti
nationInsertionPoints=[t]}function t(e){var t=e._distributedNodes;if(t)for(var o
=0;o<t.length;o++){var i=t[o]._destinationInsertionPoints;i&&i.splice(i.indexOf(
e)+1,i.length)}}function o(e,t){var o=u.Logical.getParentNode(e);o&&o.shadyRoot&
&h.hasInsertionPoint(o.shadyRoot)&&o.shadyRoot._distributionClean&&(o.shadyRoot.
_distributionClean=!1,t.shadyRoot._dirtyRoots.push(o))}function i(e,t){var o=t._
destinationInsertionPoints;return o&&o[o.length-1]===e}function n(e){return"cont
ent"==e.localName}function s(e){for(;e&&r(e);)e=e.domHost;return e}function r(e)
{for(var t,o=u.Logical.getChildNodes(e),i=0;i<o.length;i++)if(t=o[i],t.localName
&&"content"===t.localName)return e.domHost}function d(e){for(var t,o=0;o<e._inse
rtionPoints.length;o++)t=e._insertionPoints[o],h.hasApi(t)&&Polymer.dom(t).notif
yObserver()}function a(e){h.hasApi(e)&&Polymer.dom(e).notifyObserver()}function
l(e){if(c&&e)for(var t=0;t<e.length;t++)CustomElements.upgrade(e[t])}var h=Polym
er.DomApi,u=Polymer.TreeApi;Polymer.Base._addFeature({_prepShady:function(){this
._useContent=this._useContent||Boolean(this._template)},_setupShady:function(){t
his.shadyRoot=null,this.__domApi||(this.__domApi=null),this.__dom||(this.__dom=n
ull),this._ownerShadyRoot||(this._ownerShadyRoot=void 0)},_poolContent:function(
){this._useContent&&u.Logical.saveChildNodes(this)},_setupRoot:function(){this._
useContent&&(this._createLocalRoot(),this.dataHost||l(u.Logical.getChildNodes(th
is)))},_createLocalRoot:function(){this.shadyRoot=this.root,this.shadyRoot._dist
ributionClean=!1,this.shadyRoot._hasDistributed=!1,this.shadyRoot._isShadyRoot=!
0,this.shadyRoot._dirtyRoots=[];var e=this.shadyRoot._insertionPoints=!this._not
es||this._notes._hasContent?this.shadyRoot.querySelectorAll("content"):[];u.Logi
cal.saveChildNodes(this.shadyRoot);for(var t,o=0;o<e.length;o++)t=e[o],u.Logical
.saveChildNodes(t),u.Logical.saveChildNodes(t.parentNode);this.shadyRoot.host=th
is},get domHost(){var e=Polymer.dom(this).getOwnerRoot();return e&&e.host},distr
ibuteContent:function(e){if(this.shadyRoot){this.shadyRoot._invalidInsertionPoin
ts=this.shadyRoot._invalidInsertionPoints||e;var t=s(this);Polymer.dom(this)._la
zyDistribute(t)}},_distributeContent:function(){this._useContent&&!this.shadyRoo
t._distributionClean&&(this.shadyRoot._invalidInsertionPoints&&(Polymer.dom(this
)._updateInsertionPoints(this),this.shadyRoot._invalidInsertionPoints=!1),this._
beginDistribute(),this._distributeDirtyRoots(),this._finishDistribute())},_begin
Distribute:function(){this._useContent&&h.hasInsertionPoint(this.shadyRoot)&&(th
is._resetDistribution(),this._distributePool(this.shadyRoot,this._collectPool())
); |
| 2 },_distributeDirtyRoots:function(){for(var e,t=this.shadyRoot._dirtyRoots,o=0,i=
t.length;o<i&&(e=t[o]);o++)e._distributeContent();this.shadyRoot._dirtyRoots=[]}
,_finishDistribute:function(){if(this._useContent){if(this.shadyRoot._distributi
onClean=!0,h.hasInsertionPoint(this.shadyRoot))this._composeTree(),d(this.shadyR
oot);else if(this.shadyRoot._hasDistributed){var e=this._composeNode(this);this.
_updateChildNodes(this,e)}else u.Composed.clearChildNodes(this),this.appendChild
(this.shadyRoot);this.shadyRoot._hasDistributed||a(this),this.shadyRoot._hasDist
ributed=!0}},elementMatches:function(e,t){return t=t||this,h.matchesSelector.cal
l(t,e)},_resetDistribution:function(){for(var e=u.Logical.getChildNodes(this),o=
0;o<e.length;o++){var i=e[o];i._destinationInsertionPoints&&(i._destinationInser
tionPoints=void 0),n(i)&&t(i)}for(var s=this.shadyRoot,r=s._insertionPoints,d=0;
d<r.length;d++)r[d]._distributedNodes=[]},_collectPool:function(){for(var e=[],t
=u.Logical.getChildNodes(this),o=0;o<t.length;o++){var i=t[o];n(i)?e.push.apply(
e,i._distributedNodes):e.push(i)}return e},_distributePool:function(e,t){for(var
i,n=e._insertionPoints,s=0,r=n.length;s<r&&(i=n[s]);s++)this._distributeInserti
onPoint(i,t),o(i,this)},_distributeInsertionPoint:function(t,o){for(var i,n=!1,s
=0,r=o.length;s<r;s++)i=o[s],i&&this._matchesContentSelect(i,t)&&(e(i,t),o[s]=vo
id 0,n=!0);if(!n)for(var d=u.Logical.getChildNodes(t),a=0;a<d.length;a++)e(d[a],
t)},_composeTree:function(){this._updateChildNodes(this,this._composeNode(this))
;for(var e,t,o=this.shadyRoot._insertionPoints,i=0,n=o.length;i<n&&(e=o[i]);i++)
t=u.Logical.getParentNode(e),t._useContent||t===this||t===this.shadyRoot||this._
updateChildNodes(t,this._composeNode(t))},_composeNode:function(e){for(var t=[],
o=u.Logical.getChildNodes(e.shadyRoot||e),s=0;s<o.length;s++){var r=o[s];if(n(r)
)for(var d=r._distributedNodes,a=0;a<d.length;a++){var l=d[a];i(r,l)&&t.push(l)}
else t.push(r)}return t},_updateChildNodes:function(e,t){for(var o,i=u.Composed.
getChildNodes(e),n=Polymer.ArraySplice.calculateSplices(t,i),s=0,r=0;s<n.length&
&(o=n[s]);s++){for(var d,a=0;a<o.removed.length&&(d=o.removed[a]);a++)u.Composed
.getParentNode(d)===e&&u.Composed.removeChild(e,d),i.splice(o.index+r,1);r-=o.ad
dedCount}for(var o,l,s=0;s<n.length&&(o=n[s]);s++)for(l=i[o.index],a=o.index,d;a
<o.index+o.addedCount;a++)d=t[a],u.Composed.insertBefore(e,d,l),i.splice(a,0,d)}
,_matchesContentSelect:function(e,t){var o=t.getAttribute("select");if(!o)return
!0;if(o=o.trim(),!o)return!0;if(!(e instanceof Element))return!1;var i=/^(:not\(
)?[*.#[a-zA-Z_|]/;return!!i.test(o)&&this.elementMatches(o,e)},_elementAdd:funct
ion(){},_elementRemove:function(){}});var c=window.CustomElements&&!CustomElemen
ts.useNative}(),Polymer.Settings.useShadow&&Polymer.Base._addFeature({_poolConte
nt:function(){},_beginDistribute:function(){},distributeContent:function(){},_di
stributeContent:function(){},_finishDistribute:function(){},_createLocalRoot:fun
ction(){this.createShadowRoot(),this.shadowRoot.appendChild(this.root),this.root
=this.shadowRoot}}),Polymer.Async={_currVal:0,_lastVal:0,_callbacks:[],_twiddleC
ontent:0,_twiddle:document.createTextNode(""),run:function(e,t){return t>0?~setT
imeout(e,t):(this._twiddle.textContent=this._twiddleContent++,this._callbacks.pu
sh(e),this._currVal++)},cancel:function(e){if(e<0)clearTimeout(~e);else{var t=e-
this._lastVal;if(t>=0){if(!this._callbacks[t])throw"invalid async handle: "+e;th
is._callbacks[t]=null}}},_atEndOfMicrotask:function(){for(var e=this._callbacks.
length,t=0;t<e;t++){var o=this._callbacks[t];if(o)try{o()}catch(e){throw t++,thi
s._callbacks.splice(0,t),this._lastVal+=t,this._twiddle.textContent=this._twiddl
eContent++,e}}this._callbacks.splice(0,e),this._lastVal+=e}},new window.Mutation
Observer(function(){Polymer.Async._atEndOfMicrotask()}).observe(Polymer.Async._t
widdle,{characterData:!0}),Polymer.Debounce=function(){function e(e,t,i){return
e?e.stop():e=new o(this),e.go(t,i),e}var t=Polymer.Async,o=function(e){this.cont
ext=e;var t=this;this.boundComplete=function(){t.complete()}};return o.prototype
={go:function(e,o){var i;this.finish=function(){t.cancel(i)},i=t.run(this.boundC
omplete,o),this.callback=e},stop:function(){this.finish&&(this.finish(),this.fin
ish=null,this.callback=null)},complete:function(){if(this.finish){var e=this.cal
lback;this.stop(),e.call(this.context)}}},e}(),Polymer.Base._addFeature({_setupD
ebouncers:function(){this._debouncers={}},debounce:function(e,t,o){return this._
debouncers[e]=Polymer.Debounce.call(this,this._debouncers[e],t,o)},isDebouncerAc
tive:function(e){var t=this._debouncers[e];return!(!t||!t.finish)},flushDebounce
r:function(e){var t=this._debouncers[e];t&&t.complete()},cancelDebouncer:functio
n(e){var t=this._debouncers[e];t&&t.stop()}}),Polymer.DomModule=document.createE
lement("dom-module"),Polymer.Base._addFeature({_registerFeatures:function(){this
._prepIs(),this._prepBehaviors(),this._prepConstructor(),this._prepTemplate(),th
is._prepShady(),this._prepPropertyInfo()},_prepBehavior:function(e){this._addHos
tAttributes(e.hostAttributes)},_initFeatures:function(){this._registerHost(),thi
s._template&&(this._poolContent(),this._beginHosting(),this._stampTemplate(),thi
s._endHosting()),this._marshalHostAttributes(),this._setupDebouncers(),this._mar
shalBehaviors(),this._tryReady()},_marshalBehavior:function(e){}})</script> <scr
ipt>Polymer.nar=[],Polymer.Annotations={parseAnnotations:function(e){var t=[],n=
e._content||e.content;return this._parseNodeAnnotations(n,t,e.hasAttribute("stri
p-whitespace")),t},_parseNodeAnnotations:function(e,t,n){return e.nodeType===Nod
e.TEXT_NODE?this._parseTextNodeAnnotation(e,t):this._parseElementAnnotations(e,t
,n)},_bindingRegex:function(){var e="(?:[a-zA-Z_$][\\w.:$\\-*]*)",t="(?:[-+]?[0-
9]*\\.?[0-9]+(?:[eE][-+]?[0-9]+)?)",n="(?:'(?:[^'\\\\]|\\\\.)*')",r='(?:"(?:[^"\
\\\]|\\\\.)*")',s="(?:"+n+"|"+r+")",i="(?:"+e+"|"+t+"|"+s+"\\s*)",o="(?:"+i+"(?:
,\\s*"+i+")*)",a="(?:\\(\\s*(?:"+o+"?)\\)\\s*)",l="("+e+"\\s*"+a+"?)",c="(\\[\\[
|{{)\\s*",h="(?:]]|}})",u="(?:(!)\\s*)?",f=c+u+l+h;return new RegExp(f,"g")}(),_
parseBindings:function(e){for(var t,n=this._bindingRegex,r=[],s=0;null!==(t=n.ex
ec(e));){t.index>s&&r.push({literal:e.slice(s,t.index)});var i,o,a,l=t[1][0],c=B
oolean(t[2]),h=t[3].trim();"{"==l&&(a=h.indexOf("::"))>0&&(o=h.substring(a+2),h=
h.substring(0,a),i=!0),r.push({compoundIndex:r.length,value:h,mode:l,negate:c,ev
ent:o,customEvent:i}),s=n.lastIndex}if(s&&s<e.length){var u=e.substring(s);u&&r.
push({literal:u})}if(r.length)return r},_literalFromParts:function(e){for(var t=
"",n=0;n<e.length;n++){var r=e[n].literal;t+=r||""}return t},_parseTextNodeAnnot
ation:function(e,t){var n=this._parseBindings(e.textContent);if(n){e.textContent
=this._literalFromParts(n)||" ";var r={bindings:[{kind:"text",name:"textContent"
,parts:n,isCompound:1!==n.length}]};return t.push(r),r}},_parseElementAnnotation
s:function(e,t,n){var r={bindings:[],events:[]};return"content"===e.localName&&(
t._hasContent=!0),this._parseChildNodesAnnotations(e,r,t,n),e.attributes&&(this.
_parseNodeAttributeAnnotations(e,r,t),this.prepElement&&this.prepElement(e)),(r.
bindings.length||r.events.length||r.id)&&t.push(r),r},_parseChildNodesAnnotation
s:function(e,t,n,r){if(e.firstChild)for(var s=e.firstChild,i=0;s;){var o=s.nextS
ibling;if("template"!==s.localName||s.hasAttribute("preserve-content")||this._pa
rseTemplate(s,i,n,t),"slot"==s.localName&&(s=this._replaceSlotWithContent(s)),s.
nodeType===Node.TEXT_NODE){for(var a=o;a&&a.nodeType===Node.TEXT_NODE;)s.textCon
tent+=a.textContent,o=a.nextSibling,e.removeChild(a),a=o;r&&!s.textContent.trim(
)&&(e.removeChild(s),i--)}if(s.parentNode){var l=this._parseNodeAnnotations(s,n,
r);l&&(l.parent=t,l.index=i)}s=o,i++}},_replaceSlotWithContent:function(e){for(v
ar t=e.ownerDocument.createElement("content");e.firstChild;)t.appendChild(e.firs
tChild);for(var n=e.attributes,r=0;r<n.length;r++){var s=n[r];t.setAttribute(s.n
ame,s.value)}var i=e.getAttribute("name"),o=i?"[slot='"+i+"']":":not([slot])";re
turn t.setAttribute("select",o),e.parentNode.replaceChild(t,e),t},_parseTemplate
:function(e,t,n,r){var s=document.createDocumentFragment();s._notes=this.parseAn
notations(e),s.appendChild(e.content),n.push({bindings:Polymer.nar,events:Polyme
r.nar,templateContent:s,parent:r,index:t})},_parseNodeAttributeAnnotations:funct
ion(e,t){for(var n,r=Array.prototype.slice.call(e.attributes),s=r.length-1;n=r[s
];s--){var i,o=n.name,a=n.value;"on-"===o.slice(0,3)?(e.removeAttribute(o),t.eve
nts.push({name:o.slice(3),value:a})):(i=this._parseNodeAttributeAnnotation(e,o,a
))?t.bindings.push(i):"id"===o&&(t.id=a)}},_parseNodeAttributeAnnotation:functio
n(e,t,n){var r=this._parseBindings(n);if(r){var s=t,i="property";"$"==t[t.length
-1]&&(t=t.slice(0,-1),i="attribute");var o=this._literalFromParts(r);o&&"attribu
te"==i&&e.setAttribute(t,o),"input"===e.localName&&"value"===s&&e.setAttribute(s
,""),e.removeAttribute(s);var a=Polymer.CaseMap.dashToCamelCase(t);return"proper
ty"===i&&(t=a),{kind:i,name:t,propertyName:a,parts:r,literal:o,isCompound:1!==r.
length}}},findAnnotatedNode:function(e,t){var n=t.parent&&Polymer.Annotations.fi
ndAnnotatedNode(e,t.parent);if(!n)return e;for(var r=n.firstChild,s=0;r;r=r.next
Sibling)if(t.index===s++)return r}},function(){function e(e,t){return e.replace(
a,function(e,r,s,i){return r+"'"+n(s.replace(/["']/g,""),t)+"'"+i})}function t(t
,r){for(var s in l)for(var i,o,a,c=l[s],u=0,f=c.length;u<f&&(i=c[u]);u++)"*"!==s
&&t.localName!==s||(o=t.attributes[i],a=o&&o.value,a&&a.search(h)<0&&(o.value="s
tyle"===i?e(a,r):n(a,r)))}function n(e,t){if(e&&c.test(e))return e;var n=s(t);re
turn n.href=e,n.href||e}function r(e,t){return i||(i=document.implementation.cre
ateHTMLDocument("temp"),o=i.createElement("base"),i.head.appendChild(o)),o.href=
t,n(e,i)}function s(e){return e.__urlResolver||(e.__urlResolver=e.createElement(
"a"))}var i,o,a=/(url\()([^)]*)(\))/g,l={"*":["href","src","style","url"],form:[
"action"]},c=/(^\/)|(^#)|(^[\w-\d]*:)/,h=/\{\{|\[\[/;Polymer.ResolveUrl={resolve
Css:e,resolveAttrs:t,resolveUrl:r}}(),Polymer.Path={root:function(e){var t=e.ind
exOf(".");return t===-1?e:e.slice(0,t)},isDeep:function(e){return e.indexOf(".")
!==-1},isAncestor:function(e,t){return 0===e.indexOf(t+".")},isDescendant:functi
on(e,t){return 0===t.indexOf(e+".")},translate:function(e,t,n){return t+n.slice(
e.length)},matches:function(e,t,n){return e===n||this.isAncestor(e,n)||Boolean(t
)&&this.isDescendant(e,n)}},Polymer.Base._addFeature({_prepAnnotations:function(
){if(this._template){var e=this;Polymer.Annotations.prepElement=function(t){e._p
repElement(t)},this._template._content&&this._template._content._notes?this._not
es=this._template._content._notes:(this._notes=Polymer.Annotations.parseAnnotati
ons(this._template),this._processAnnotations(this._notes)),Polymer.Annotations.p
repElement=null}else this._notes=[]},_processAnnotations:function(e){for(var t=0
;t<e.length;t++){for(var n=e[t],r=0;r<n.bindings.length;r++)for(var s=n.bindings
[r],i=0;i<s.parts.length;i++){var o=s.parts[i];if(!o.literal){var a=this._parseM
ethod(o.value);a?o.signature=a:o.model=Polymer.Path.root(o.value)}}if(n.template
Content){this._processAnnotations(n.templateContent._notes);var l=n.templateCont
ent._parentProps=this._discoverTemplateParentProps(n.templateContent._notes),c=[
];for(var h in l){var u="_parent_"+h;c.push({index:n.index,kind:"property",name:
u,propertyName:u,parts:[{mode:"{",model:h,value:h}]})}n.bindings=n.bindings.conc
at(c)}}},_discoverTemplateParentProps:function(e){for(var t,n={},r=0;r<e.length&
&(t=e[r]);r++){for(var s,i=0,o=t.bindings;i<o.length&&(s=o[i]);i++)for(var a,l=0
,c=s.parts;l<c.length&&(a=c[l]);l++)if(a.signature){for(var h=a.signature.args,u
=0;u<h.length;u++){var f=h[u].model;f&&(n[f]=!0)}a.signature.dynamicFn&&(n[a.sig
nature.method]=!0)}else a.model&&(n[a.model]=!0);if(t.templateContent){var p=t.t
emplateContent._parentProps;Polymer.Base.mixin(n,p)}}return n},_prepElement:func
tion(e){Polymer.ResolveUrl.resolveAttrs(e,this._template.ownerDocument)},_findAn
notatedNode:Polymer.Annotations.findAnnotatedNode,_marshalAnnotationReferences:f
unction(){this._template&&(this._marshalIdNodes(),this._marshalAnnotatedNodes(),
this._marshalAnnotatedListeners())},_configureAnnotationReferences:function(){fo
r(var e=this._notes,t=this._nodes,n=0;n<e.length;n++){var r=e[n],s=t[n];this._co
nfigureTemplateContent(r,s),this._configureCompoundBindings(r,s)}},_configureTem
plateContent:function(e,t){e.templateContent&&(t._content=e.templateContent)},_c
onfigureCompoundBindings:function(e,t){for(var n=e.bindings,r=0;r<n.length;r++){
var s=n[r];if(s.isCompound){for(var i=t.__compoundStorage__||(t.__compoundStorag
e__={}),o=s.parts,a=new Array(o.length),l=0;l<o.length;l++)a[l]=o[l].literal;var
c=s.name;i[c]=a,s.literal&&"property"==s.kind&&(t._configValue?t._configValue(c
,s.literal):t[c]=s.literal)}}},_marshalIdNodes:function(){this.$={};for(var e,t=
0,n=this._notes.length;t<n&&(e=this._notes[t]);t++)e.id&&(this.$[e.id]=this._fin
dAnnotatedNode(this.root,e))},_marshalAnnotatedNodes:function(){if(this._notes&&
this._notes.length){for(var e=new Array(this._notes.length),t=0;t<this._notes.le
ngth;t++)e[t]=this._findAnnotatedNode(this.root,this._notes[t]);this._nodes=e}},
_marshalAnnotatedListeners:function(){for(var e,t=0,n=this._notes.length;t<n&&(e
=this._notes[t]);t++)if(e.events&&e.events.length)for(var r,s=this._findAnnotate
dNode(this.root,e),i=0,o=e.events;i<o.length&&(r=o[i]);i++)this.listen(s,r.name,
r.value)}}),Polymer.Base._addFeature({listeners:{},_listenListeners:function(e){
var t,n,r;for(r in e)r.indexOf(".")<0?(t=this,n=r):(n=r.split("."),t=this.$[n[0]
],n=n[1]),this.listen(t,n,e[r])},listen:function(e,t,n){var r=this._recallEventH
andler(this,t,e,n);r||(r=this._createEventHandler(e,t,n)),r._listening||(this._l
isten(e,t,r),r._listening=!0)},_boundListenerKey:function(e,t){return e+":"+t},_
recordEventHandler:function(e,t,n,r,s){var i=e.__boundListeners;i||(i=e.__boundL
isteners=new WeakMap);var o=i.get(n);o||(o={},i.set(n,o));var a=this._boundListe
nerKey(t,r);o[a]=s},_recallEventHandler:function(e,t,n,r){var s=e.__boundListene
rs;if(s){var i=s.get(n);if(i){var o=this._boundListenerKey(t,r);return i[o]}}},_
createEventHandler:function(e,t,n){var r=this,s=function(e){r[n]?r[n](e,e.detail
):r._warn(r._logf("_createEventHandler","listener method `"+n+"` not defined"))}
;return s._listening=!1,this._recordEventHandler(r,t,e,n,s),s},unlisten:function
(e,t,n){var r=this._recallEventHandler(this,t,e,n);r&&(this._unlisten(e,t,r),r._
listening=!1)},_listen:function(e,t,n){e.addEventListener(t,n)},_unlisten:functi
on(e,t,n){e.removeEventListener(t,n)}}),function(){"use strict";function e(e){fo
r(var t,n=g?["click"]:m,r=0;r<n.length;r++)t=n[r],e?document.addEventListener(t,
P,!0):document.removeEventListener(t,P,!0)}function t(){S.mouse.mouseIgnoreJob||
e(!0);var t=function(){e(),S.mouse.target=null,S.mouse.mouseIgnoreJob=null};S.mo
use.mouseIgnoreJob=Polymer.Debounce(S.mouse.mouseIgnoreJob,t,d)}function n(e){va
r t=e.type;if(m.indexOf(t)===-1)return!1;if("mousemove"===t){var n=void 0===e.bu
ttons?1:e.buttons;return e instanceof window.MouseEvent&&!v&&(n=y[e.which]||0),B
oolean(1&n)}var r=void 0===e.button?0:e.button;return 0===r}function r(e){if("cl
ick"===e.type){if(0===e.detail)return!0;var t=C.findOriginalTarget(e),n=t.getBou
ndingClientRect(),r=e.pageX,s=e.pageY;return!(r>=n.left&&r<=n.right&&s>=n.top&&s
<=n.bottom)}return!1}function s(e){for(var t,n=Polymer.dom(e).path,r="auto",s=0;
s<n.length;s++)if(t=n[s],t[u]){r=t[u];break}return r}function i(e,t,n){e.movefn=
t,e.upfn=n,document.addEventListener("mousemove",t),document.addEventListener("m
ouseup",n)}function o(e){document.removeEventListener("mousemove",e.movefn),docu
ment.removeEventListener("mouseup",e.upfn),e.movefn=null,e.upfn=null}var a=Polym
er.DomApi.wrap,l="string"==typeof document.head.style.touchAction,c="__polymerGe
stures",h="__polymerGesturesHandled",u="__polymerGesturesTouchAction",f=25,p=5,_
=2,d=2500,m=["mousedown","mousemove","mouseup","click"],y=[0,1,4,2],v=function()
{try{return 1===new MouseEvent("test",{buttons:1}).buttons}catch(e){return!1}}()
,g=navigator.userAgent.match(/iP(?:[oa]d|hone)|Android/),P=function(e){var t=e.s
ourceCapabilities;if((!t||t.firesTouchEvents)&&(e[h]={skip:!0},"click"===e.type)
){for(var n=Polymer.dom(e).path,r=0;r<n.length;r++)if(n[r]===S.mouse.target)retu
rn;e.preventDefault(),e.stopPropagation()}},S={mouse:{target:null,mouseIgnoreJob
:null},touch:{x:0,y:0,id:-1,scrollDecided:!1}},C={gestures:{},recognizers:[],dee
pTargetFind:function(e,t){for(var n=document.elementFromPoint(e,t),r=n;r&&r.shad
owRoot;)r=r.shadowRoot.elementFromPoint(e,t),r&&(n=r);return n},findOriginalTarg
et:function(e){return e.path?e.path[0]:e.target},handleNative:function(e){var n,
r=e.type,s=a(e.currentTarget),i=s[c];if(i){var o=i[r];if(o){if(!e[h]&&(e[h]={},"
touch"===r.slice(0,5))){var u=e.changedTouches[0];if("touchstart"===r&&1===e.tou
ches.length&&(S.touch.id=u.identifier),S.touch.id!==u.identifier)return;l||"touc
hstart"!==r&&"touchmove"!==r||C.handleTouchAction(e),"touchend"===r&&(S.mouse.ta
rget=Polymer.dom(e).rootTarget,t())}if(n=e[h],!n.skip){for(var f,p=C.recognizers
,_=0;_<p.length;_++)f=p[_],o[f.name]&&!n[f.name]&&f.flow&&f.flow.start.indexOf(e
.type)>-1&&f.reset&&f.reset();for(_=0,f;_<p.length;_++)f=p[_],o[f.name]&&!n[f.na
me]&&(n[f.name]=!0,f[r](e))}}}},handleTouchAction:function(e){var t=e.changedTou
ches[0],n=e.type;if("touchstart"===n)S.touch.x=t.clientX,S.touch.y=t.clientY,S.t
ouch.scrollDecided=!1;else if("touchmove"===n){if(S.touch.scrollDecided)return;S
.touch.scrollDecided=!0;var r=s(e),i=!1,o=Math.abs(S.touch.x-t.clientX),a=Math.a
bs(S.touch.y-t.clientY);e.cancelable&&("none"===r?i=!0:"pan-x"===r?i=a>o:"pan-y"
===r&&(i=o>a)),i?e.preventDefault():C.prevent("track")}},add:function(e,t,n){e=a
(e);var r=this.gestures[t],s=r.deps,i=r.name,o=e[c];o||(e[c]=o={});for(var l,h,u
=0;u<s.length;u++)l=s[u],g&&m.indexOf(l)>-1&&"click"!==l||(h=o[l],h||(o[l]=h={_c
ount:0}),0===h._count&&e.addEventListener(l,this.handleNative),h[i]=(h[i]||0)+1,
h._count=(h._count||0)+1);e.addEventListener(t,n),r.touchAction&&this.setTouchAc
tion(e,r.touchAction)},remove:function(e,t,n){e=a(e);var r=this.gestures[t],s=r.
deps,i=r.name,o=e[c];if(o)for(var l,h,u=0;u<s.length;u++)l=s[u],h=o[l],h&&h[i]&&
(h[i]=(h[i]||1)-1,h._count=(h._count||1)-1,0===h._count&&e.removeEventListener(l
,this.handleNative));e.removeEventListener(t,n)},register:function(e){this.recog
nizers.push(e);for(var t=0;t<e.emits.length;t++)this.gestures[e.emits[t]]=e},fin
dRecognizerByEvent:function(e){for(var t,n=0;n<this.recognizers.length;n++){t=th
is.recognizers[n];for(var r,s=0;s<t.emits.length;s++)if(r=t.emits[s],r===e)retur
n t}return null},setTouchAction:function(e,t){l&&(e.style.touchAction=t),e[u]=t}
,fire:function(e,t,n){var r=Polymer.Base.fire(t,n,{node:e,bubbles:!0,cancelable:
!0});if(r.defaultPrevented){var s=n.preventer||n.sourceEvent;s&&s.preventDefault
&&s.preventDefault()}},prevent:function(e){var t=this.findRecognizerByEvent(e);t
.info&&(t.info.prevent=!0)},resetMouseCanceller:function(){S.mouse.mouseIgnoreJo
b&&S.mouse.mouseIgnoreJob.complete()}};C.register({name:"downup",deps:["mousedow
n","touchstart","touchend"],flow:{start:["mousedown","touchstart"],end:["mouseup
","touchend"]},emits:["down","up"],info:{movefn:null,upfn:null},reset:function()
{o(this.info)},mousedown:function(e){if(n(e)){var t=C.findOriginalTarget(e),r=th
is,s=function(e){n(e)||(r.fire("up",t,e),o(r.info))},a=function(e){n(e)&&r.fire(
"up",t,e),o(r.info)};i(this.info,s,a),this.fire("down",t,e)}},touchstart:functio
n(e){this.fire("down",C.findOriginalTarget(e),e.changedTouches[0],e)},touchend:f
unction(e){this.fire("up",C.findOriginalTarget(e),e.changedTouches[0],e)},fire:f
unction(e,t,n,r){C.fire(t,e,{x:n.clientX,y:n.clientY,sourceEvent:n,preventer:r,p
revent:function(e){return C.prevent(e)}})}}),C.register({name:"track",touchActio
n:"none",deps:["mousedown","touchstart","touchmove","touchend"],flow:{start:["mo
usedown","touchstart"],end:["mouseup","touchend"]},emits:["track"],info:{x:0,y:0
,state:"start",started:!1,moves:[],addMove:function(e){this.moves.length>_&&this
.moves.shift(),this.moves.push(e)},movefn:null,upfn:null,prevent:!1},reset:funct
ion(){this.info.state="start",this.info.started=!1,this.info.moves=[],this.info.
x=0,this.info.y=0,this.info.prevent=!1,o(this.info)},hasMovedEnough:function(e,t
){if(this.info.prevent)return!1;if(this.info.started)return!0;var n=Math.abs(thi
s.info.x-e),r=Math.abs(this.info.y-t);return n>=p||r>=p},mousedown:function(e){i
f(n(e)){var t=C.findOriginalTarget(e),r=this,s=function(e){var s=e.clientX,i=e.c
lientY;r.hasMovedEnough(s,i)&&(r.info.state=r.info.started?"mouseup"===e.type?"e
nd":"track":"start","start"===r.info.state&&C.prevent("tap"),r.info.addMove({x:s
,y:i}),n(e)||(r.info.state="end",o(r.info)),r.fire(t,e),r.info.started=!0)},a=fu
nction(e){r.info.started&&s(e),o(r.info)};i(this.info,s,a),this.info.x=e.clientX
,this.info.y=e.clientY}},touchstart:function(e){var t=e.changedTouches[0];this.i
nfo.x=t.clientX,this.info.y=t.clientY},touchmove:function(e){var t=C.findOrigina
lTarget(e),n=e.changedTouches[0],r=n.clientX,s=n.clientY;this.hasMovedEnough(r,s
)&&("start"===this.info.state&&C.prevent("tap"),this.info.addMove({x:r,y:s}),thi
s.fire(t,n),this.info.state="track",this.info.started=!0)},touchend:function(e){
var t=C.findOriginalTarget(e),n=e.changedTouches[0];this.info.started&&(this.inf
o.state="end",this.info.addMove({x:n.clientX,y:n.clientY}),this.fire(t,n,e))},fi
re:function(e,t,n){var r,s=this.info.moves[this.info.moves.length-2],i=this.info
.moves[this.info.moves.length-1],o=i.x-this.info.x,a=i.y-this.info.y,l=0;return
s&&(r=i.x-s.x,l=i.y-s.y),C.fire(e,"track",{state:this.info.state,x:t.clientX,y:t
.clientY,dx:o,dy:a,ddx:r,ddy:l,sourceEvent:t,preventer:n,hover:function(){return
C.deepTargetFind(t.clientX,t.clientY)}})}}),C.register({name:"tap",deps:["mouse
down","click","touchstart","touchend"],flow:{start:["mousedown","touchstart"],en
d:["click","touchend"]},emits:["tap"],info:{x:NaN,y:NaN,prevent:!1},reset:functi
on(){this.info.x=NaN,this.info.y=NaN,this.info.prevent=!1},save:function(e){this
.info.x=e.clientX,this.info.y=e.clientY},mousedown:function(e){n(e)&&this.save(e
)},click:function(e){n(e)&&this.forward(e)},touchstart:function(e){this.save(e.c
hangedTouches[0],e)},touchend:function(e){this.forward(e.changedTouches[0],e)},f
orward:function(e,t){var n=Math.abs(e.clientX-this.info.x),s=Math.abs(e.clientY-
this.info.y),i=C.findOriginalTarget(e);(isNaN(n)||isNaN(s)||n<=f&&s<=f||r(e))&&(
this.info.prevent||C.fire(i,"tap",{x:e.clientX,y:e.clientY,sourceEvent:e,prevent
er:t}))}});var E={x:"pan-x",y:"pan-y",none:"none",all:"auto"};Polymer.Base._addF
eature({_setupGestures:function(){this.__polymerGestures=null},_listen:function(
e,t,n){C.gestures[t]?C.add(e,t,n):e.addEventListener(t,n)},_unlisten:function(e,
t,n){C.gestures[t]?C.remove(e,t,n):e.removeEventListener(t,n)},setScrollDirectio
n:function(e,t){t=t||this,C.setTouchAction(t,E[e]||"auto")}}),Polymer.Gestures=C
}(),function(){"use strict";if(Polymer.Base._addFeature({$$:function(e){return P
olymer.dom(this.root).querySelector(e)},toggleClass:function(e,t,n){n=n||this,1=
=arguments.length&&(t=!n.classList.contains(e)),t?Polymer.dom(n).classList.add(e
):Polymer.dom(n).classList.remove(e)},toggleAttribute:function(e,t,n){n=n||this,
1==arguments.length&&(t=!n.hasAttribute(e)),t?Polymer.dom(n).setAttribute(e,""):
Polymer.dom(n).removeAttribute(e)},classFollows:function(e,t,n){n&&Polymer.dom(n
).classList.remove(e),t&&Polymer.dom(t).classList.add(e)},attributeFollows:funct
ion(e,t,n){n&&Polymer.dom(n).removeAttribute(e),t&&Polymer.dom(t).setAttribute(e
,"")},getEffectiveChildNodes:function(){return Polymer.dom(this).getEffectiveChi
ldNodes()},getEffectiveChildren:function(){var e=Polymer.dom(this).getEffectiveC
hildNodes();return e.filter(function(e){return e.nodeType===Node.ELEMENT_NODE})}
,getEffectiveTextContent:function(){for(var e,t=this.getEffectiveChildNodes(),n=
[],r=0;e=t[r];r++)e.nodeType!==Node.COMMENT_NODE&&n.push(Polymer.dom(e).textCont
ent);return n.join("")},queryEffectiveChildren:function(e){var t=Polymer.dom(thi
s).queryDistributedElements(e);return t&&t[0]},queryAllEffectiveChildren:functio
n(e){return Polymer.dom(this).queryDistributedElements(e)},getContentChildNodes:
function(e){var t=Polymer.dom(this.root).querySelector(e||"content");return t?Po
lymer.dom(t).getDistributedNodes():[]},getContentChildren:function(e){return thi
s.getContentChildNodes(e).filter(function(e){return e.nodeType===Node.ELEMENT_NO
DE})},fire:function(e,t,n){n=n||Polymer.nob;var r=n.node||this;t=null===t||void
0===t?{}:t;var s=void 0===n.bubbles||n.bubbles,i=Boolean(n.cancelable),o=n._useC
ache,a=this._getEvent(e,s,i,o);return a.detail=t,o&&(this.__eventCache[e]=null),
r.dispatchEvent(a),o&&(this.__eventCache[e]=a),a},__eventCache:{},_getEvent:func
tion(e,t,n,r){var s=r&&this.__eventCache[e];return s&&s.bubbles==t&&s.cancelable
==n||(s=new Event(e,{bubbles:Boolean(t),cancelable:n})),s},async:function(e,t){v
ar n=this;return Polymer.Async.run(function(){e.call(n)},t)},cancelAsync:functio
n(e){Polymer.Async.cancel(e)},arrayDelete:function(e,t){var n;if(Array.isArray(e
)){if(n=e.indexOf(t),n>=0)return e.splice(n,1)}else{var r=this._get(e);if(n=r.in
dexOf(t),n>=0)return this.splice(e,n,1)}},transform:function(e,t){t=t||this,t.st
yle.webkitTransform=e,t.style.transform=e},translate3d:function(e,t,n,r){r=r||th
is,this.transform("translate3d("+e+","+t+","+n+")",r)},importHref:function(e,t,n
,r){var s=document.createElement("link");s.rel="import",s.href=e;var i=Polymer.B
ase.importHref.imported=Polymer.Base.importHref.imported||{},o=i[s.href],a=o||s,
l=this;if(t){var c=function(e){return e.target.__firedLoad=!0,e.target.removeEve
ntListener("load",c),t.call(l,e)};a.addEventListener("load",c)}if(n){var h=funct
ion(e){return e.target.__firedError=!0,e.target.removeEventListener("error",h),n
.call(l,e)};a.addEventListener("error",h)}return o?(o.__firedLoad&&o.dispatchEve
nt(new Event("load")),o.__firedError&&o.dispatchEvent(new Event("error"))):(i[s.
href]=s,r=Boolean(r),r&&s.setAttribute("async",""),document.head.appendChild(s))
,a},create:function(e,t){var n=document.createElement(e);if(t)for(var r in t)n[r
]=t[r];return n},isLightDescendant:function(e){return this!==e&&this.contains(e)
&&Polymer.dom(this).getOwnerRoot()===Polymer.dom(e).getOwnerRoot()},isLocalDesce
ndant:function(e){return this.root===Polymer.dom(e).getOwnerRoot()}}),!Polymer.S
ettings.useNativeCustomElements){var e=Polymer.Base.importHref;Polymer.Base.impo
rtHref=function(t,n,r,s){CustomElements.ready=!1;var i=function(e){if(CustomElem
ents.upgradeDocumentTree(document),CustomElements.ready=!0,n)return n.call(this,
e)};return e.call(this,t,i,r,s)}}}(),Polymer.Bind={prepareModel:function(e){Poly
mer.Base.mixin(e,this._modelApi)},_modelApi:{_notifyChange:function(e,t,n){n=voi
d 0===n?this[e]:n,t=t||Polymer.CaseMap.camelToDashCase(e)+"-changed",this.fire(t
,{value:n},{bubbles:!1,cancelable:!1,_useCache:!0})},_propertySetter:function(e,
t,n,r){var s=this.__data__[e];return s===t||s!==s&&t!==t||(this.__data__[e]=t,"o
bject"==typeof t&&this._clearPath(e),this._propertyChanged&&this._propertyChange
d(e,t,s),n&&this._effectEffects(e,t,n,s,r)),s},__setProperty:function(e,t,n,r){r
=r||this;var s=r._propertyEffects&&r._propertyEffects[e];s?r._propertySetter(e,t
,s,n):r[e]!==t&&(r[e]=t)},_effectEffects:function(e,t,n,r,s){for(var i,o=0,a=n.l
ength;o<a&&(i=n[o]);o++)i.fn.call(this,e,this[e],i.effect,r,s)},_clearPath:funct
ion(e){for(var t in this.__data__)Polymer.Path.isDescendant(e,t)&&(this.__data__
[t]=void 0)}},ensurePropertyEffects:function(e,t){e._propertyEffects||(e._proper
tyEffects={});var n=e._propertyEffects[t];return n||(n=e._propertyEffects[t]=[])
,n},addPropertyEffect:function(e,t,n,r){var s=this.ensurePropertyEffects(e,t),i=
{kind:n,effect:r,fn:Polymer.Bind["_"+n+"Effect"]};return s.push(i),i},createBind
ings:function(e){var t=e._propertyEffects;if(t)for(var n in t){var r=t[n];r.sort
(this._sortPropertyEffects),this._createAccessors(e,n,r)}},_sortPropertyEffects:
function(){var e={compute:0,annotation:1,annotatedComputation:2,reflect:3,notify
:4,observer:5,complexObserver:6,function:7};return function(t,n){return e[t.kind
]-e[n.kind]}}(),_createAccessors:function(e,t,n){var r={get:function(){return th
is.__data__[t]}},s=function(e){this._propertySetter(t,e,n)},i=e.getPropertyInfo&
&e.getPropertyInfo(t);i&&i.readOnly?i.computed||(e["_set"+this.upper(t)]=s):r.se
t=s,Object.defineProperty(e,t,r)},upper:function(e){return e[0].toUpperCase()+e.
substring(1)},_addAnnotatedListener:function(e,t,n,r,s,i){e._bindListeners||(e._
bindListeners=[]);var o=this._notedListenerFactory(n,r,Polymer.Path.isDeep(r),i)
,a=s||Polymer.CaseMap.camelToDashCase(n)+"-changed";e._bindListeners.push({index
:t,property:n,path:r,changedFn:o,event:a})},_isEventBogus:function(e,t){return e
.path&&e.path[0]!==t},_notedListenerFactory:function(e,t,n,r){return function(s,
i,o){if(o){var a=Polymer.Path.translate(e,t,o);this._notifyPath(a,i)}else i=s[e]
,r&&(i=!i),n?this.__data__[t]!=i&&this.set(t,i):this[t]=i}},prepareInstance:func
tion(e){e.__data__=Object.create(null)},setupBindListeners:function(e){for(var t
,n=e._bindListeners,r=0,s=n.length;r<s&&(t=n[r]);r++){var i=e._nodes[t.index];th
is._addNotifyListener(i,e,t.event,t.changedFn)}},_addNotifyListener:function(e,t
,n,r){e.addEventListener(n,function(e){return t._notifyListener(r,e)})}},Polymer
.Base.extend(Polymer.Bind,{_shouldAddListener:function(e){return e.name&&"attrib
ute"!=e.kind&&"text"!=e.kind&&!e.isCompound&&"{"===e.parts[0].mode},_annotationE
ffect:function(e,t,n){e!=n.value&&(t=this._get(n.value),this.__data__[n.value]=t
),this._applyEffectValue(n,t)},_reflectEffect:function(e,t,n){this.reflectProper
tyToAttribute(e,n.attribute,t)},_notifyEffect:function(e,t,n,r,s){s||this._notif
yChange(e,n.event,t)},_functionEffect:function(e,t,n,r,s){n.call(this,e,t,r,s)},
_observerEffect:function(e,t,n,r){var s=this[n.method];s?s.call(this,t,r):this._
warn(this._logf("_observerEffect","observer method `"+n.method+"` not defined"))
},_complexObserverEffect:function(e,t,n){var r=this[n.method];if(r){var s=Polyme
r.Bind._marshalArgs(this.__data__,n,e,t);s&&r.apply(this,s)}else n.dynamicFn||th
is._warn(this._logf("_complexObserverEffect","observer method `"+n.method+"` not
defined"))},_computeEffect:function(e,t,n){var r=this[n.method];if(r){var s=Pol
ymer.Bind._marshalArgs(this.__data__,n,e,t);if(s){var i=r.apply(this,s);this.__s
etProperty(n.name,i)}}else n.dynamicFn||this._warn(this._logf("_computeEffect","
compute method `"+n.method+"` not defined"))},_annotatedComputationEffect:functi
on(e,t,n){var r=this._rootDataHost||this,s=r[n.method];if(s){var i=Polymer.Bind.
_marshalArgs(this.__data__,n,e,t);if(i){var o=s.apply(r,i);this._applyEffectValu
e(n,o)}}else n.dynamicFn||r._warn(r._logf("_annotatedComputationEffect","compute
method `"+n.method+"` not defined"))},_marshalArgs:function(e,t,n,r){for(var s=
[],i=t.args,o=i.length>1||t.dynamicFn,a=0,l=i.length;a<l;a++){var c,h=i[a],u=h.n
ame;if(h.literal?c=h.value:n===u?c=r:(c=e[u],void 0===c&&h.structured&&(c=Polyme
r.Base._get(u,e))),o&&void 0===c)return;if(h.wildcard){var f=Polymer.Path.isAnce
stor(n,u);s[a]={path:f?n:u,value:f?r:c,base:c}}else s[a]=c}return s}}),Polymer.B
ase._addFeature({_addPropertyEffect:function(e,t,n){var r=Polymer.Bind.addProper
tyEffect(this,e,t,n);r.pathFn=this["_"+r.kind+"PathEffect"]},_prepEffects:functi
on(){Polymer.Bind.prepareModel(this),this._addAnnotationEffects(this._notes)},_p
repBindings:function(){Polymer.Bind.createBindings(this)},_addPropertyEffects:fu
nction(e){if(e)for(var t in e){var n=e[t];if(n.observer&&this._addObserverEffect
(t,n.observer),n.computed&&(n.readOnly=!0,this._addComputedEffect(t,n.computed))
,n.notify&&this._addPropertyEffect(t,"notify",{event:Polymer.CaseMap.camelToDash
Case(t)+"-changed"}),n.reflectToAttribute){var r=Polymer.CaseMap.camelToDashCase
(t);"-"===r[0]?this._warn(this._logf("_addPropertyEffects","Property "+t+" canno
t be reflected to attribute "+r+' because "-" is not a valid starting attribute
name. Use a lowercase first letter for the property instead.')):this._addPropert
yEffect(t,"reflect",{attribute:r})}n.readOnly&&Polymer.Bind.ensurePropertyEffect
s(this,t)}},_addComputedEffect:function(e,t){for(var n,r=this._parseMethod(t),s=
r.dynamicFn,i=0;i<r.args.length&&(n=r.args[i]);i++)this._addPropertyEffect(n.mod
el,"compute",{method:r.method,args:r.args,trigger:n,name:e,dynamicFn:s});s&&this
._addPropertyEffect(r.method,"compute",{method:r.method,args:r.args,trigger:null
,name:e,dynamicFn:s})},_addObserverEffect:function(e,t){this._addPropertyEffect(
e,"observer",{method:t,property:e})},_addComplexObserverEffects:function(e){if(e
)for(var t,n=0;n<e.length&&(t=e[n]);n++)this._addComplexObserverEffect(t)},_addC
omplexObserverEffect:function(e){var t=this._parseMethod(e);if(!t)throw new Erro
r("Malformed observer expression '"+e+"'");for(var n,r=t.dynamicFn,s=0;s<t.args.
length&&(n=t.args[s]);s++)this._addPropertyEffect(n.model,"complexObserver",{met
hod:t.method,args:t.args,trigger:n,dynamicFn:r});r&&this._addPropertyEffect(t.me
thod,"complexObserver",{method:t.method,args:t.args,trigger:null,dynamicFn:r})},
_addAnnotationEffects:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++)for(var
r,s=t.bindings,i=0;i<s.length&&(r=s[i]);i++)this._addAnnotationEffect(r,n)},_ad
dAnnotationEffect:function(e,t){Polymer.Bind._shouldAddListener(e)&&Polymer.Bind
._addAnnotatedListener(this,t,e.name,e.parts[0].value,e.parts[0].event,e.parts[0
].negate);for(var n=0;n<e.parts.length;n++){var r=e.parts[n];r.signature?this._a
ddAnnotatedComputationEffect(e,r,t):r.literal||("attribute"===e.kind&&"-"===e.na
me[0]?this._warn(this._logf("_addAnnotationEffect","Cannot set attribute "+e.nam
e+' because "-" is not a valid attribute starting character')):this._addProperty
Effect(r.model,"annotation",{kind:e.kind,index:t,name:e.name,propertyName:e.prop
ertyName,value:r.value,isCompound:e.isCompound,compoundIndex:r.compoundIndex,eve
nt:r.event,customEvent:r.customEvent,negate:r.negate}))}},_addAnnotatedComputati
onEffect:function(e,t,n){var r=t.signature;if(r.static)this.__addAnnotatedComput
ationEffect("__static__",n,e,t,null);else{for(var s,i=0;i<r.args.length&&(s=r.ar
gs[i]);i++)s.literal||this.__addAnnotatedComputationEffect(s.model,n,e,t,s);r.dy
namicFn&&this.__addAnnotatedComputationEffect(r.method,n,e,t,null)}},__addAnnota
tedComputationEffect:function(e,t,n,r,s){this._addPropertyEffect(e,"annotatedCom
putation",{index:t,isCompound:n.isCompound,compoundIndex:r.compoundIndex,kind:n.
kind,name:n.name,negate:r.negate,method:r.signature.method,args:r.signature.args
,trigger:s,dynamicFn:r.signature.dynamicFn})},_parseMethod:function(e){var t=e.m
atch(/([^\s]+?)\(([\s\S]*)\)/);if(t){var n={method:t[1],static:!0};if(this.getPr
opertyInfo(n.method)!==Polymer.nob&&(n.static=!1,n.dynamicFn=!0),t[2].trim()){va
r r=t[2].replace(/\\,/g,",").split(",");return this._parseArgs(r,n)}return
n.args=Polymer.nar,n}},_parseArgs:function(e,t){return t.args=e.map(function(e)
{var n=this._parseArg(e);return n.literal||(t.static=!1),n},this),t},_parseArg:f
unction(e){var t=e.trim().replace(/,/g,",").replace(/\\(.)/g,"$1"),n={name
:t},r=t[0];switch("-"===r&&(r=t[1]),r>="0"&&r<="9"&&(r="#"),r){case"'":case'"':n
.value=t.slice(1,-1),n.literal=!0;break;case"#":n.value=Number(t),n.literal=!0}r
eturn n.literal||(n.model=Polymer.Path.root(t),n.structured=Polymer.Path.isDeep(
t),n.structured&&(n.wildcard=".*"==t.slice(-2),n.wildcard&&(n.name=t.slice(0,-2)
))),n},_marshalInstanceEffects:function(){Polymer.Bind.prepareInstance(this),thi
s._bindListeners&&Polymer.Bind.setupBindListeners(this)},_applyEffectValue:funct
ion(e,t){var n=this._nodes[e.index],r=e.name;if(t=this._computeFinalAnnotationVa
lue(n,r,t,e),"attribute"==e.kind)this.serializeValueToAttribute(t,r,n);else{var
s=n._propertyInfo&&n._propertyInfo[r];if(s&&s.readOnly)return;this.__setProperty
(r,t,!1,n)}},_computeFinalAnnotationValue:function(e,t,n,r){if(r.negate&&(n=!n),
r.isCompound){var s=e.__compoundStorage__[t];s[r.compoundIndex]=n,n=s.join("")}r
eturn"attribute"!==r.kind&&("className"===t&&(n=this._scopeElementClass(e,n)),("
textContent"===t||"input"==e.localName&&"value"==t)&&(n=void 0==n?"":n)),n},_exe
cuteStaticEffects:function(){this._propertyEffects&&this._propertyEffects.__stat
ic__&&this._effectEffects("__static__",null,this._propertyEffects.__static__)}})
,function(){var e=Polymer.Settings.usePolyfillProto;Polymer.Base._addFeature({_s
etupConfigure:function(e){if(this._config={},this._handlers=[],this._aboveConfig
=null,e)for(var t in e)void 0!==e[t]&&(this._config[t]=e[t])},_marshalAttributes
:function(){this._takeAttributesToModel(this._config)},_attributeChangedImpl:fun
ction(e){var t=this._clientsReadied?this:this._config;this._setAttributeToProper
ty(t,e)},_configValue:function(e,t){var n=this._propertyInfo[e];n&&n.readOnly||(
this._config[e]=t)},_beforeClientsReady:function(){this._configure()},_configure
:function(){this._configureAnnotationReferences(),this._configureInstancePropert
ies(),this._aboveConfig=this.mixin({},this._config);for(var e={},t=0;t<this.beha
viors.length;t++)this._configureProperties(this.behaviors[t].properties,e);this.
_configureProperties(this.properties,e),this.mixin(e,this._aboveConfig),this._co
nfig=e,this._clients&&this._clients.length&&this._distributeConfig(this._config)
},_configureInstanceProperties:function(){for(var t in this._propertyEffects)!e&
&this.hasOwnProperty(t)&&(this._configValue(t,this[t]), | 2 },_distributeDirtyRoots:function(){for(var e,t=this.shadyRoot._dirtyRoots,o=0,i=
t.length;o<i&&(e=t[o]);o++)e._distributeContent();this.shadyRoot._dirtyRoots=[]}
,_finishDistribute:function(){if(this._useContent){if(this.shadyRoot._distributi
onClean=!0,h.hasInsertionPoint(this.shadyRoot))this._composeTree(),d(this.shadyR
oot);else if(this.shadyRoot._hasDistributed){var e=this._composeNode(this);this.
_updateChildNodes(this,e)}else u.Composed.clearChildNodes(this),this.appendChild
(this.shadyRoot);this.shadyRoot._hasDistributed||a(this),this.shadyRoot._hasDist
ributed=!0}},elementMatches:function(e,t){return t=t||this,h.matchesSelector.cal
l(t,e)},_resetDistribution:function(){for(var e=u.Logical.getChildNodes(this),o=
0;o<e.length;o++){var i=e[o];i._destinationInsertionPoints&&(i._destinationInser
tionPoints=void 0),n(i)&&t(i)}for(var s=this.shadyRoot,r=s._insertionPoints,d=0;
d<r.length;d++)r[d]._distributedNodes=[]},_collectPool:function(){for(var e=[],t
=u.Logical.getChildNodes(this),o=0;o<t.length;o++){var i=t[o];n(i)?e.push.apply(
e,i._distributedNodes):e.push(i)}return e},_distributePool:function(e,t){for(var
i,n=e._insertionPoints,s=0,r=n.length;s<r&&(i=n[s]);s++)this._distributeInserti
onPoint(i,t),o(i,this)},_distributeInsertionPoint:function(t,o){for(var i,n=!1,s
=0,r=o.length;s<r;s++)i=o[s],i&&this._matchesContentSelect(i,t)&&(e(i,t),o[s]=vo
id 0,n=!0);if(!n)for(var d=u.Logical.getChildNodes(t),a=0;a<d.length;a++)e(d[a],
t)},_composeTree:function(){this._updateChildNodes(this,this._composeNode(this))
;for(var e,t,o=this.shadyRoot._insertionPoints,i=0,n=o.length;i<n&&(e=o[i]);i++)
t=u.Logical.getParentNode(e),t._useContent||t===this||t===this.shadyRoot||this._
updateChildNodes(t,this._composeNode(t))},_composeNode:function(e){for(var t=[],
o=u.Logical.getChildNodes(e.shadyRoot||e),s=0;s<o.length;s++){var r=o[s];if(n(r)
)for(var d=r._distributedNodes,a=0;a<d.length;a++){var l=d[a];i(r,l)&&t.push(l)}
else t.push(r)}return t},_updateChildNodes:function(e,t){for(var o,i=u.Composed.
getChildNodes(e),n=Polymer.ArraySplice.calculateSplices(t,i),s=0,r=0;s<n.length&
&(o=n[s]);s++){for(var d,a=0;a<o.removed.length&&(d=o.removed[a]);a++)u.Composed
.getParentNode(d)===e&&u.Composed.removeChild(e,d),i.splice(o.index+r,1);r-=o.ad
dedCount}for(var o,l,s=0;s<n.length&&(o=n[s]);s++)for(l=i[o.index],a=o.index,d;a
<o.index+o.addedCount;a++)d=t[a],u.Composed.insertBefore(e,d,l),i.splice(a,0,d)}
,_matchesContentSelect:function(e,t){var o=t.getAttribute("select");if(!o)return
!0;if(o=o.trim(),!o)return!0;if(!(e instanceof Element))return!1;var i=/^(:not\(
)?[*.#[a-zA-Z_|]/;return!!i.test(o)&&this.elementMatches(o,e)},_elementAdd:funct
ion(){},_elementRemove:function(){}});var c=window.CustomElements&&!CustomElemen
ts.useNative}(),Polymer.Settings.useShadow&&Polymer.Base._addFeature({_poolConte
nt:function(){},_beginDistribute:function(){},distributeContent:function(){},_di
stributeContent:function(){},_finishDistribute:function(){},_createLocalRoot:fun
ction(){this.createShadowRoot(),this.shadowRoot.appendChild(this.root),this.root
=this.shadowRoot}}),Polymer.Async={_currVal:0,_lastVal:0,_callbacks:[],_twiddleC
ontent:0,_twiddle:document.createTextNode(""),run:function(e,t){return t>0?~setT
imeout(e,t):(this._twiddle.textContent=this._twiddleContent++,this._callbacks.pu
sh(e),this._currVal++)},cancel:function(e){if(e<0)clearTimeout(~e);else{var t=e-
this._lastVal;if(t>=0){if(!this._callbacks[t])throw"invalid async handle: "+e;th
is._callbacks[t]=null}}},_atEndOfMicrotask:function(){for(var e=this._callbacks.
length,t=0;t<e;t++){var o=this._callbacks[t];if(o)try{o()}catch(e){throw t++,thi
s._callbacks.splice(0,t),this._lastVal+=t,this._twiddle.textContent=this._twiddl
eContent++,e}}this._callbacks.splice(0,e),this._lastVal+=e}},new window.Mutation
Observer(function(){Polymer.Async._atEndOfMicrotask()}).observe(Polymer.Async._t
widdle,{characterData:!0}),Polymer.Debounce=function(){function e(e,t,i){return
e?e.stop():e=new o(this),e.go(t,i),e}var t=Polymer.Async,o=function(e){this.cont
ext=e;var t=this;this.boundComplete=function(){t.complete()}};return o.prototype
={go:function(e,o){var i;this.finish=function(){t.cancel(i)},i=t.run(this.boundC
omplete,o),this.callback=e},stop:function(){this.finish&&(this.finish(),this.fin
ish=null,this.callback=null)},complete:function(){if(this.finish){var e=this.cal
lback;this.stop(),e.call(this.context)}}},e}(),Polymer.Base._addFeature({_setupD
ebouncers:function(){this._debouncers={}},debounce:function(e,t,o){return this._
debouncers[e]=Polymer.Debounce.call(this,this._debouncers[e],t,o)},isDebouncerAc
tive:function(e){var t=this._debouncers[e];return!(!t||!t.finish)},flushDebounce
r:function(e){var t=this._debouncers[e];t&&t.complete()},cancelDebouncer:functio
n(e){var t=this._debouncers[e];t&&t.stop()}}),Polymer.DomModule=document.createE
lement("dom-module"),Polymer.Base._addFeature({_registerFeatures:function(){this
._prepIs(),this._prepBehaviors(),this._prepConstructor(),this._prepTemplate(),th
is._prepShady(),this._prepPropertyInfo()},_prepBehavior:function(e){this._addHos
tAttributes(e.hostAttributes)},_initFeatures:function(){this._registerHost(),thi
s._template&&(this._poolContent(),this._beginHosting(),this._stampTemplate(),thi
s._endHosting()),this._marshalHostAttributes(),this._setupDebouncers(),this._mar
shalBehaviors(),this._tryReady()},_marshalBehavior:function(e){}})</script> <scr
ipt>Polymer.nar=[],Polymer.Annotations={parseAnnotations:function(e){var t=[],n=
e._content||e.content;return this._parseNodeAnnotations(n,t,e.hasAttribute("stri
p-whitespace")),t},_parseNodeAnnotations:function(e,t,n){return e.nodeType===Nod
e.TEXT_NODE?this._parseTextNodeAnnotation(e,t):this._parseElementAnnotations(e,t
,n)},_bindingRegex:function(){var e="(?:[a-zA-Z_$][\\w.:$\\-*]*)",t="(?:[-+]?[0-
9]*\\.?[0-9]+(?:[eE][-+]?[0-9]+)?)",n="(?:'(?:[^'\\\\]|\\\\.)*')",r='(?:"(?:[^"\
\\\]|\\\\.)*")',s="(?:"+n+"|"+r+")",i="(?:"+e+"|"+t+"|"+s+"\\s*)",o="(?:"+i+"(?:
,\\s*"+i+")*)",a="(?:\\(\\s*(?:"+o+"?)\\)\\s*)",l="("+e+"\\s*"+a+"?)",c="(\\[\\[
|{{)\\s*",h="(?:]]|}})",u="(?:(!)\\s*)?",f=c+u+l+h;return new RegExp(f,"g")}(),_
parseBindings:function(e){for(var t,n=this._bindingRegex,r=[],s=0;null!==(t=n.ex
ec(e));){t.index>s&&r.push({literal:e.slice(s,t.index)});var i,o,a,l=t[1][0],c=B
oolean(t[2]),h=t[3].trim();"{"==l&&(a=h.indexOf("::"))>0&&(o=h.substring(a+2),h=
h.substring(0,a),i=!0),r.push({compoundIndex:r.length,value:h,mode:l,negate:c,ev
ent:o,customEvent:i}),s=n.lastIndex}if(s&&s<e.length){var u=e.substring(s);u&&r.
push({literal:u})}if(r.length)return r},_literalFromParts:function(e){for(var t=
"",n=0;n<e.length;n++){var r=e[n].literal;t+=r||""}return t},_parseTextNodeAnnot
ation:function(e,t){var n=this._parseBindings(e.textContent);if(n){e.textContent
=this._literalFromParts(n)||" ";var r={bindings:[{kind:"text",name:"textContent"
,parts:n,isCompound:1!==n.length}]};return t.push(r),r}},_parseElementAnnotation
s:function(e,t,n){var r={bindings:[],events:[]};return"content"===e.localName&&(
t._hasContent=!0),this._parseChildNodesAnnotations(e,r,t,n),e.attributes&&(this.
_parseNodeAttributeAnnotations(e,r,t),this.prepElement&&this.prepElement(e)),(r.
bindings.length||r.events.length||r.id)&&t.push(r),r},_parseChildNodesAnnotation
s:function(e,t,n,r){if(e.firstChild)for(var s=e.firstChild,i=0;s;){var o=s.nextS
ibling;if("template"!==s.localName||s.hasAttribute("preserve-content")||this._pa
rseTemplate(s,i,n,t),"slot"==s.localName&&(s=this._replaceSlotWithContent(s)),s.
nodeType===Node.TEXT_NODE){for(var a=o;a&&a.nodeType===Node.TEXT_NODE;)s.textCon
tent+=a.textContent,o=a.nextSibling,e.removeChild(a),a=o;r&&!s.textContent.trim(
)&&(e.removeChild(s),i--)}if(s.parentNode){var l=this._parseNodeAnnotations(s,n,
r);l&&(l.parent=t,l.index=i)}s=o,i++}},_replaceSlotWithContent:function(e){for(v
ar t=e.ownerDocument.createElement("content");e.firstChild;)t.appendChild(e.firs
tChild);for(var n=e.attributes,r=0;r<n.length;r++){var s=n[r];t.setAttribute(s.n
ame,s.value)}var i=e.getAttribute("name"),o=i?"[slot='"+i+"']":":not([slot])";re
turn t.setAttribute("select",o),e.parentNode.replaceChild(t,e),t},_parseTemplate
:function(e,t,n,r){var s=document.createDocumentFragment();s._notes=this.parseAn
notations(e),s.appendChild(e.content),n.push({bindings:Polymer.nar,events:Polyme
r.nar,templateContent:s,parent:r,index:t})},_parseNodeAttributeAnnotations:funct
ion(e,t){for(var n,r=Array.prototype.slice.call(e.attributes),s=r.length-1;n=r[s
];s--){var i,o=n.name,a=n.value;"on-"===o.slice(0,3)?(e.removeAttribute(o),t.eve
nts.push({name:o.slice(3),value:a})):(i=this._parseNodeAttributeAnnotation(e,o,a
))?t.bindings.push(i):"id"===o&&(t.id=a)}},_parseNodeAttributeAnnotation:functio
n(e,t,n){var r=this._parseBindings(n);if(r){var s=t,i="property";"$"==t[t.length
-1]&&(t=t.slice(0,-1),i="attribute");var o=this._literalFromParts(r);o&&"attribu
te"==i&&e.setAttribute(t,o),"input"===e.localName&&"value"===s&&e.setAttribute(s
,""),e.removeAttribute(s);var a=Polymer.CaseMap.dashToCamelCase(t);return"proper
ty"===i&&(t=a),{kind:i,name:t,propertyName:a,parts:r,literal:o,isCompound:1!==r.
length}}},findAnnotatedNode:function(e,t){var n=t.parent&&Polymer.Annotations.fi
ndAnnotatedNode(e,t.parent);if(!n)return e;for(var r=n.firstChild,s=0;r;r=r.next
Sibling)if(t.index===s++)return r}},function(){function e(e,t){return e.replace(
a,function(e,r,s,i){return r+"'"+n(s.replace(/["']/g,""),t)+"'"+i})}function t(t
,r){for(var s in l)for(var i,o,a,c=l[s],u=0,f=c.length;u<f&&(i=c[u]);u++)"*"!==s
&&t.localName!==s||(o=t.attributes[i],a=o&&o.value,a&&a.search(h)<0&&(o.value="s
tyle"===i?e(a,r):n(a,r)))}function n(e,t){if(e&&c.test(e))return e;var n=s(t);re
turn n.href=e,n.href||e}function r(e,t){return i||(i=document.implementation.cre
ateHTMLDocument("temp"),o=i.createElement("base"),i.head.appendChild(o)),o.href=
t,n(e,i)}function s(e){return e.__urlResolver||(e.__urlResolver=e.createElement(
"a"))}var i,o,a=/(url\()([^)]*)(\))/g,l={"*":["href","src","style","url"],form:[
"action"]},c=/(^\/)|(^#)|(^[\w-\d]*:)/,h=/\{\{|\[\[/;Polymer.ResolveUrl={resolve
Css:e,resolveAttrs:t,resolveUrl:r}}(),Polymer.Path={root:function(e){var t=e.ind
exOf(".");return t===-1?e:e.slice(0,t)},isDeep:function(e){return e.indexOf(".")
!==-1},isAncestor:function(e,t){return 0===e.indexOf(t+".")},isDescendant:functi
on(e,t){return 0===t.indexOf(e+".")},translate:function(e,t,n){return t+n.slice(
e.length)},matches:function(e,t,n){return e===n||this.isAncestor(e,n)||Boolean(t
)&&this.isDescendant(e,n)}},Polymer.Base._addFeature({_prepAnnotations:function(
){if(this._template){var e=this;Polymer.Annotations.prepElement=function(t){e._p
repElement(t)},this._template._content&&this._template._content._notes?this._not
es=this._template._content._notes:(this._notes=Polymer.Annotations.parseAnnotati
ons(this._template),this._processAnnotations(this._notes)),Polymer.Annotations.p
repElement=null}else this._notes=[]},_processAnnotations:function(e){for(var t=0
;t<e.length;t++){for(var n=e[t],r=0;r<n.bindings.length;r++)for(var s=n.bindings
[r],i=0;i<s.parts.length;i++){var o=s.parts[i];if(!o.literal){var a=this._parseM
ethod(o.value);a?o.signature=a:o.model=Polymer.Path.root(o.value)}}if(n.template
Content){this._processAnnotations(n.templateContent._notes);var l=n.templateCont
ent._parentProps=this._discoverTemplateParentProps(n.templateContent._notes),c=[
];for(var h in l){var u="_parent_"+h;c.push({index:n.index,kind:"property",name:
u,propertyName:u,parts:[{mode:"{",model:h,value:h}]})}n.bindings=n.bindings.conc
at(c)}}},_discoverTemplateParentProps:function(e){for(var t,n={},r=0;r<e.length&
&(t=e[r]);r++){for(var s,i=0,o=t.bindings;i<o.length&&(s=o[i]);i++)for(var a,l=0
,c=s.parts;l<c.length&&(a=c[l]);l++)if(a.signature){for(var h=a.signature.args,u
=0;u<h.length;u++){var f=h[u].model;f&&(n[f]=!0)}a.signature.dynamicFn&&(n[a.sig
nature.method]=!0)}else a.model&&(n[a.model]=!0);if(t.templateContent){var p=t.t
emplateContent._parentProps;Polymer.Base.mixin(n,p)}}return n},_prepElement:func
tion(e){Polymer.ResolveUrl.resolveAttrs(e,this._template.ownerDocument)},_findAn
notatedNode:Polymer.Annotations.findAnnotatedNode,_marshalAnnotationReferences:f
unction(){this._template&&(this._marshalIdNodes(),this._marshalAnnotatedNodes(),
this._marshalAnnotatedListeners())},_configureAnnotationReferences:function(){fo
r(var e=this._notes,t=this._nodes,n=0;n<e.length;n++){var r=e[n],s=t[n];this._co
nfigureTemplateContent(r,s),this._configureCompoundBindings(r,s)}},_configureTem
plateContent:function(e,t){e.templateContent&&(t._content=e.templateContent)},_c
onfigureCompoundBindings:function(e,t){for(var n=e.bindings,r=0;r<n.length;r++){
var s=n[r];if(s.isCompound){for(var i=t.__compoundStorage__||(t.__compoundStorag
e__={}),o=s.parts,a=new Array(o.length),l=0;l<o.length;l++)a[l]=o[l].literal;var
c=s.name;i[c]=a,s.literal&&"property"==s.kind&&(t._configValue?t._configValue(c
,s.literal):t[c]=s.literal)}}},_marshalIdNodes:function(){this.$={};for(var e,t=
0,n=this._notes.length;t<n&&(e=this._notes[t]);t++)e.id&&(this.$[e.id]=this._fin
dAnnotatedNode(this.root,e))},_marshalAnnotatedNodes:function(){if(this._notes&&
this._notes.length){for(var e=new Array(this._notes.length),t=0;t<this._notes.le
ngth;t++)e[t]=this._findAnnotatedNode(this.root,this._notes[t]);this._nodes=e}},
_marshalAnnotatedListeners:function(){for(var e,t=0,n=this._notes.length;t<n&&(e
=this._notes[t]);t++)if(e.events&&e.events.length)for(var r,s=this._findAnnotate
dNode(this.root,e),i=0,o=e.events;i<o.length&&(r=o[i]);i++)this.listen(s,r.name,
r.value)}}),Polymer.Base._addFeature({listeners:{},_listenListeners:function(e){
var t,n,r;for(r in e)r.indexOf(".")<0?(t=this,n=r):(n=r.split("."),t=this.$[n[0]
],n=n[1]),this.listen(t,n,e[r])},listen:function(e,t,n){var r=this._recallEventH
andler(this,t,e,n);r||(r=this._createEventHandler(e,t,n)),r._listening||(this._l
isten(e,t,r),r._listening=!0)},_boundListenerKey:function(e,t){return e+":"+t},_
recordEventHandler:function(e,t,n,r,s){var i=e.__boundListeners;i||(i=e.__boundL
isteners=new WeakMap);var o=i.get(n);o||(o={},i.set(n,o));var a=this._boundListe
nerKey(t,r);o[a]=s},_recallEventHandler:function(e,t,n,r){var s=e.__boundListene
rs;if(s){var i=s.get(n);if(i){var o=this._boundListenerKey(t,r);return i[o]}}},_
createEventHandler:function(e,t,n){var r=this,s=function(e){r[n]?r[n](e,e.detail
):r._warn(r._logf("_createEventHandler","listener method `"+n+"` not defined"))}
;return s._listening=!1,this._recordEventHandler(r,t,e,n,s),s},unlisten:function
(e,t,n){var r=this._recallEventHandler(this,t,e,n);r&&(this._unlisten(e,t,r),r._
listening=!1)},_listen:function(e,t,n){e.addEventListener(t,n)},_unlisten:functi
on(e,t,n){e.removeEventListener(t,n)}}),function(){"use strict";function e(e){fo
r(var t,n=g?["click"]:m,r=0;r<n.length;r++)t=n[r],e?document.addEventListener(t,
P,!0):document.removeEventListener(t,P,!0)}function t(){S.mouse.mouseIgnoreJob||
e(!0);var t=function(){e(),S.mouse.target=null,S.mouse.mouseIgnoreJob=null};S.mo
use.mouseIgnoreJob=Polymer.Debounce(S.mouse.mouseIgnoreJob,t,d)}function n(e){va
r t=e.type;if(m.indexOf(t)===-1)return!1;if("mousemove"===t){var n=void 0===e.bu
ttons?1:e.buttons;return e instanceof window.MouseEvent&&!v&&(n=y[e.which]||0),B
oolean(1&n)}var r=void 0===e.button?0:e.button;return 0===r}function r(e){if("cl
ick"===e.type){if(0===e.detail)return!0;var t=C.findOriginalTarget(e),n=t.getBou
ndingClientRect(),r=e.pageX,s=e.pageY;return!(r>=n.left&&r<=n.right&&s>=n.top&&s
<=n.bottom)}return!1}function s(e){for(var t,n=Polymer.dom(e).path,r="auto",s=0;
s<n.length;s++)if(t=n[s],t[u]){r=t[u];break}return r}function i(e,t,n){e.movefn=
t,e.upfn=n,document.addEventListener("mousemove",t),document.addEventListener("m
ouseup",n)}function o(e){document.removeEventListener("mousemove",e.movefn),docu
ment.removeEventListener("mouseup",e.upfn),e.movefn=null,e.upfn=null}var a=Polym
er.DomApi.wrap,l="string"==typeof document.head.style.touchAction,c="__polymerGe
stures",h="__polymerGesturesHandled",u="__polymerGesturesTouchAction",f=25,p=5,_
=2,d=2500,m=["mousedown","mousemove","mouseup","click"],y=[0,1,4,2],v=function()
{try{return 1===new MouseEvent("test",{buttons:1}).buttons}catch(e){return!1}}()
,g=navigator.userAgent.match(/iP(?:[oa]d|hone)|Android/),P=function(e){var t=e.s
ourceCapabilities;if((!t||t.firesTouchEvents)&&(e[h]={skip:!0},"click"===e.type)
){for(var n=Polymer.dom(e).path,r=0;r<n.length;r++)if(n[r]===S.mouse.target)retu
rn;e.preventDefault(),e.stopPropagation()}},S={mouse:{target:null,mouseIgnoreJob
:null},touch:{x:0,y:0,id:-1,scrollDecided:!1}},C={gestures:{},recognizers:[],dee
pTargetFind:function(e,t){for(var n=document.elementFromPoint(e,t),r=n;r&&r.shad
owRoot;)r=r.shadowRoot.elementFromPoint(e,t),r&&(n=r);return n},findOriginalTarg
et:function(e){return e.path?e.path[0]:e.target},handleNative:function(e){var n,
r=e.type,s=a(e.currentTarget),i=s[c];if(i){var o=i[r];if(o){if(!e[h]&&(e[h]={},"
touch"===r.slice(0,5))){var u=e.changedTouches[0];if("touchstart"===r&&1===e.tou
ches.length&&(S.touch.id=u.identifier),S.touch.id!==u.identifier)return;l||"touc
hstart"!==r&&"touchmove"!==r||C.handleTouchAction(e),"touchend"===r&&(S.mouse.ta
rget=Polymer.dom(e).rootTarget,t())}if(n=e[h],!n.skip){for(var f,p=C.recognizers
,_=0;_<p.length;_++)f=p[_],o[f.name]&&!n[f.name]&&f.flow&&f.flow.start.indexOf(e
.type)>-1&&f.reset&&f.reset();for(_=0,f;_<p.length;_++)f=p[_],o[f.name]&&!n[f.na
me]&&(n[f.name]=!0,f[r](e))}}}},handleTouchAction:function(e){var t=e.changedTou
ches[0],n=e.type;if("touchstart"===n)S.touch.x=t.clientX,S.touch.y=t.clientY,S.t
ouch.scrollDecided=!1;else if("touchmove"===n){if(S.touch.scrollDecided)return;S
.touch.scrollDecided=!0;var r=s(e),i=!1,o=Math.abs(S.touch.x-t.clientX),a=Math.a
bs(S.touch.y-t.clientY);e.cancelable&&("none"===r?i=!0:"pan-x"===r?i=a>o:"pan-y"
===r&&(i=o>a)),i?e.preventDefault():C.prevent("track")}},add:function(e,t,n){e=a
(e);var r=this.gestures[t],s=r.deps,i=r.name,o=e[c];o||(e[c]=o={});for(var l,h,u
=0;u<s.length;u++)l=s[u],g&&m.indexOf(l)>-1&&"click"!==l||(h=o[l],h||(o[l]=h={_c
ount:0}),0===h._count&&e.addEventListener(l,this.handleNative),h[i]=(h[i]||0)+1,
h._count=(h._count||0)+1);e.addEventListener(t,n),r.touchAction&&this.setTouchAc
tion(e,r.touchAction)},remove:function(e,t,n){e=a(e);var r=this.gestures[t],s=r.
deps,i=r.name,o=e[c];if(o)for(var l,h,u=0;u<s.length;u++)l=s[u],h=o[l],h&&h[i]&&
(h[i]=(h[i]||1)-1,h._count=(h._count||1)-1,0===h._count&&e.removeEventListener(l
,this.handleNative));e.removeEventListener(t,n)},register:function(e){this.recog
nizers.push(e);for(var t=0;t<e.emits.length;t++)this.gestures[e.emits[t]]=e},fin
dRecognizerByEvent:function(e){for(var t,n=0;n<this.recognizers.length;n++){t=th
is.recognizers[n];for(var r,s=0;s<t.emits.length;s++)if(r=t.emits[s],r===e)retur
n t}return null},setTouchAction:function(e,t){l&&(e.style.touchAction=t),e[u]=t}
,fire:function(e,t,n){var r=Polymer.Base.fire(t,n,{node:e,bubbles:!0,cancelable:
!0});if(r.defaultPrevented){var s=n.preventer||n.sourceEvent;s&&s.preventDefault
&&s.preventDefault()}},prevent:function(e){var t=this.findRecognizerByEvent(e);t
.info&&(t.info.prevent=!0)},resetMouseCanceller:function(){S.mouse.mouseIgnoreJo
b&&S.mouse.mouseIgnoreJob.complete()}};C.register({name:"downup",deps:["mousedow
n","touchstart","touchend"],flow:{start:["mousedown","touchstart"],end:["mouseup
","touchend"]},emits:["down","up"],info:{movefn:null,upfn:null},reset:function()
{o(this.info)},mousedown:function(e){if(n(e)){var t=C.findOriginalTarget(e),r=th
is,s=function(e){n(e)||(r.fire("up",t,e),o(r.info))},a=function(e){n(e)&&r.fire(
"up",t,e),o(r.info)};i(this.info,s,a),this.fire("down",t,e)}},touchstart:functio
n(e){this.fire("down",C.findOriginalTarget(e),e.changedTouches[0],e)},touchend:f
unction(e){this.fire("up",C.findOriginalTarget(e),e.changedTouches[0],e)},fire:f
unction(e,t,n,r){C.fire(t,e,{x:n.clientX,y:n.clientY,sourceEvent:n,preventer:r,p
revent:function(e){return C.prevent(e)}})}}),C.register({name:"track",touchActio
n:"none",deps:["mousedown","touchstart","touchmove","touchend"],flow:{start:["mo
usedown","touchstart"],end:["mouseup","touchend"]},emits:["track"],info:{x:0,y:0
,state:"start",started:!1,moves:[],addMove:function(e){this.moves.length>_&&this
.moves.shift(),this.moves.push(e)},movefn:null,upfn:null,prevent:!1},reset:funct
ion(){this.info.state="start",this.info.started=!1,this.info.moves=[],this.info.
x=0,this.info.y=0,this.info.prevent=!1,o(this.info)},hasMovedEnough:function(e,t
){if(this.info.prevent)return!1;if(this.info.started)return!0;var n=Math.abs(thi
s.info.x-e),r=Math.abs(this.info.y-t);return n>=p||r>=p},mousedown:function(e){i
f(n(e)){var t=C.findOriginalTarget(e),r=this,s=function(e){var s=e.clientX,i=e.c
lientY;r.hasMovedEnough(s,i)&&(r.info.state=r.info.started?"mouseup"===e.type?"e
nd":"track":"start","start"===r.info.state&&C.prevent("tap"),r.info.addMove({x:s
,y:i}),n(e)||(r.info.state="end",o(r.info)),r.fire(t,e),r.info.started=!0)},a=fu
nction(e){r.info.started&&s(e),o(r.info)};i(this.info,s,a),this.info.x=e.clientX
,this.info.y=e.clientY}},touchstart:function(e){var t=e.changedTouches[0];this.i
nfo.x=t.clientX,this.info.y=t.clientY},touchmove:function(e){var t=C.findOrigina
lTarget(e),n=e.changedTouches[0],r=n.clientX,s=n.clientY;this.hasMovedEnough(r,s
)&&("start"===this.info.state&&C.prevent("tap"),this.info.addMove({x:r,y:s}),thi
s.fire(t,n),this.info.state="track",this.info.started=!0)},touchend:function(e){
var t=C.findOriginalTarget(e),n=e.changedTouches[0];this.info.started&&(this.inf
o.state="end",this.info.addMove({x:n.clientX,y:n.clientY}),this.fire(t,n,e))},fi
re:function(e,t,n){var r,s=this.info.moves[this.info.moves.length-2],i=this.info
.moves[this.info.moves.length-1],o=i.x-this.info.x,a=i.y-this.info.y,l=0;return
s&&(r=i.x-s.x,l=i.y-s.y),C.fire(e,"track",{state:this.info.state,x:t.clientX,y:t
.clientY,dx:o,dy:a,ddx:r,ddy:l,sourceEvent:t,preventer:n,hover:function(){return
C.deepTargetFind(t.clientX,t.clientY)}})}}),C.register({name:"tap",deps:["mouse
down","click","touchstart","touchend"],flow:{start:["mousedown","touchstart"],en
d:["click","touchend"]},emits:["tap"],info:{x:NaN,y:NaN,prevent:!1},reset:functi
on(){this.info.x=NaN,this.info.y=NaN,this.info.prevent=!1},save:function(e){this
.info.x=e.clientX,this.info.y=e.clientY},mousedown:function(e){n(e)&&this.save(e
)},click:function(e){n(e)&&this.forward(e)},touchstart:function(e){this.save(e.c
hangedTouches[0],e)},touchend:function(e){this.forward(e.changedTouches[0],e)},f
orward:function(e,t){var n=Math.abs(e.clientX-this.info.x),s=Math.abs(e.clientY-
this.info.y),i=C.findOriginalTarget(e);(isNaN(n)||isNaN(s)||n<=f&&s<=f||r(e))&&(
this.info.prevent||C.fire(i,"tap",{x:e.clientX,y:e.clientY,sourceEvent:e,prevent
er:t}))}});var E={x:"pan-x",y:"pan-y",none:"none",all:"auto"};Polymer.Base._addF
eature({_setupGestures:function(){this.__polymerGestures=null},_listen:function(
e,t,n){C.gestures[t]?C.add(e,t,n):e.addEventListener(t,n)},_unlisten:function(e,
t,n){C.gestures[t]?C.remove(e,t,n):e.removeEventListener(t,n)},setScrollDirectio
n:function(e,t){t=t||this,C.setTouchAction(t,E[e]||"auto")}}),Polymer.Gestures=C
}(),function(){"use strict";if(Polymer.Base._addFeature({$$:function(e){return P
olymer.dom(this.root).querySelector(e)},toggleClass:function(e,t,n){n=n||this,1=
=arguments.length&&(t=!n.classList.contains(e)),t?Polymer.dom(n).classList.add(e
):Polymer.dom(n).classList.remove(e)},toggleAttribute:function(e,t,n){n=n||this,
1==arguments.length&&(t=!n.hasAttribute(e)),t?Polymer.dom(n).setAttribute(e,""):
Polymer.dom(n).removeAttribute(e)},classFollows:function(e,t,n){n&&Polymer.dom(n
).classList.remove(e),t&&Polymer.dom(t).classList.add(e)},attributeFollows:funct
ion(e,t,n){n&&Polymer.dom(n).removeAttribute(e),t&&Polymer.dom(t).setAttribute(e
,"")},getEffectiveChildNodes:function(){return Polymer.dom(this).getEffectiveChi
ldNodes()},getEffectiveChildren:function(){var e=Polymer.dom(this).getEffectiveC
hildNodes();return e.filter(function(e){return e.nodeType===Node.ELEMENT_NODE})}
,getEffectiveTextContent:function(){for(var e,t=this.getEffectiveChildNodes(),n=
[],r=0;e=t[r];r++)e.nodeType!==Node.COMMENT_NODE&&n.push(Polymer.dom(e).textCont
ent);return n.join("")},queryEffectiveChildren:function(e){var t=Polymer.dom(thi
s).queryDistributedElements(e);return t&&t[0]},queryAllEffectiveChildren:functio
n(e){return Polymer.dom(this).queryDistributedElements(e)},getContentChildNodes:
function(e){var t=Polymer.dom(this.root).querySelector(e||"content");return t?Po
lymer.dom(t).getDistributedNodes():[]},getContentChildren:function(e){return thi
s.getContentChildNodes(e).filter(function(e){return e.nodeType===Node.ELEMENT_NO
DE})},fire:function(e,t,n){n=n||Polymer.nob;var r=n.node||this;t=null===t||void
0===t?{}:t;var s=void 0===n.bubbles||n.bubbles,i=Boolean(n.cancelable),o=n._useC
ache,a=this._getEvent(e,s,i,o);return a.detail=t,o&&(this.__eventCache[e]=null),
r.dispatchEvent(a),o&&(this.__eventCache[e]=a),a},__eventCache:{},_getEvent:func
tion(e,t,n,r){var s=r&&this.__eventCache[e];return s&&s.bubbles==t&&s.cancelable
==n||(s=new Event(e,{bubbles:Boolean(t),cancelable:n})),s},async:function(e,t){v
ar n=this;return Polymer.Async.run(function(){e.call(n)},t)},cancelAsync:functio
n(e){Polymer.Async.cancel(e)},arrayDelete:function(e,t){var n;if(Array.isArray(e
)){if(n=e.indexOf(t),n>=0)return e.splice(n,1)}else{var r=this._get(e);if(n=r.in
dexOf(t),n>=0)return this.splice(e,n,1)}},transform:function(e,t){t=t||this,t.st
yle.webkitTransform=e,t.style.transform=e},translate3d:function(e,t,n,r){r=r||th
is,this.transform("translate3d("+e+","+t+","+n+")",r)},importHref:function(e,t,n
,r){var s=document.createElement("link");s.rel="import",s.href=e;var i=Polymer.B
ase.importHref.imported=Polymer.Base.importHref.imported||{},o=i[s.href],a=o||s,
l=this;if(t){var c=function(e){return e.target.__firedLoad=!0,e.target.removeEve
ntListener("load",c),t.call(l,e)};a.addEventListener("load",c)}if(n){var h=funct
ion(e){return e.target.__firedError=!0,e.target.removeEventListener("error",h),n
.call(l,e)};a.addEventListener("error",h)}return o?(o.__firedLoad&&o.dispatchEve
nt(new Event("load")),o.__firedError&&o.dispatchEvent(new Event("error"))):(i[s.
href]=s,r=Boolean(r),r&&s.setAttribute("async",""),document.head.appendChild(s))
,a},create:function(e,t){var n=document.createElement(e);if(t)for(var r in t)n[r
]=t[r];return n},isLightDescendant:function(e){return this!==e&&this.contains(e)
&&Polymer.dom(this).getOwnerRoot()===Polymer.dom(e).getOwnerRoot()},isLocalDesce
ndant:function(e){return this.root===Polymer.dom(e).getOwnerRoot()}}),!Polymer.S
ettings.useNativeCustomElements){var e=Polymer.Base.importHref;Polymer.Base.impo
rtHref=function(t,n,r,s){CustomElements.ready=!1;var i=function(e){if(CustomElem
ents.upgradeDocumentTree(document),CustomElements.ready=!0,n)return n.call(this,
e)};return e.call(this,t,i,r,s)}}}(),Polymer.Bind={prepareModel:function(e){Poly
mer.Base.mixin(e,this._modelApi)},_modelApi:{_notifyChange:function(e,t,n){n=voi
d 0===n?this[e]:n,t=t||Polymer.CaseMap.camelToDashCase(e)+"-changed",this.fire(t
,{value:n},{bubbles:!1,cancelable:!1,_useCache:!0})},_propertySetter:function(e,
t,n,r){var s=this.__data__[e];return s===t||s!==s&&t!==t||(this.__data__[e]=t,"o
bject"==typeof t&&this._clearPath(e),this._propertyChanged&&this._propertyChange
d(e,t,s),n&&this._effectEffects(e,t,n,s,r)),s},__setProperty:function(e,t,n,r){r
=r||this;var s=r._propertyEffects&&r._propertyEffects[e];s?r._propertySetter(e,t
,s,n):r[e]!==t&&(r[e]=t)},_effectEffects:function(e,t,n,r,s){for(var i,o=0,a=n.l
ength;o<a&&(i=n[o]);o++)i.fn.call(this,e,this[e],i.effect,r,s)},_clearPath:funct
ion(e){for(var t in this.__data__)Polymer.Path.isDescendant(e,t)&&(this.__data__
[t]=void 0)}},ensurePropertyEffects:function(e,t){e._propertyEffects||(e._proper
tyEffects={});var n=e._propertyEffects[t];return n||(n=e._propertyEffects[t]=[])
,n},addPropertyEffect:function(e,t,n,r){var s=this.ensurePropertyEffects(e,t),i=
{kind:n,effect:r,fn:Polymer.Bind["_"+n+"Effect"]};return s.push(i),i},createBind
ings:function(e){var t=e._propertyEffects;if(t)for(var n in t){var r=t[n];r.sort
(this._sortPropertyEffects),this._createAccessors(e,n,r)}},_sortPropertyEffects:
function(){var e={compute:0,annotation:1,annotatedComputation:2,reflect:3,notify
:4,observer:5,complexObserver:6,function:7};return function(t,n){return e[t.kind
]-e[n.kind]}}(),_createAccessors:function(e,t,n){var r={get:function(){return th
is.__data__[t]}},s=function(e){this._propertySetter(t,e,n)},i=e.getPropertyInfo&
&e.getPropertyInfo(t);i&&i.readOnly?i.computed||(e["_set"+this.upper(t)]=s):r.se
t=s,Object.defineProperty(e,t,r)},upper:function(e){return e[0].toUpperCase()+e.
substring(1)},_addAnnotatedListener:function(e,t,n,r,s,i){e._bindListeners||(e._
bindListeners=[]);var o=this._notedListenerFactory(n,r,Polymer.Path.isDeep(r),i)
,a=s||Polymer.CaseMap.camelToDashCase(n)+"-changed";e._bindListeners.push({index
:t,property:n,path:r,changedFn:o,event:a})},_isEventBogus:function(e,t){return e
.path&&e.path[0]!==t},_notedListenerFactory:function(e,t,n,r){return function(s,
i,o){if(o){var a=Polymer.Path.translate(e,t,o);this._notifyPath(a,i)}else i=s[e]
,r&&(i=!i),n?this.__data__[t]!=i&&this.set(t,i):this[t]=i}},prepareInstance:func
tion(e){e.__data__=Object.create(null)},setupBindListeners:function(e){for(var t
,n=e._bindListeners,r=0,s=n.length;r<s&&(t=n[r]);r++){var i=e._nodes[t.index];th
is._addNotifyListener(i,e,t.event,t.changedFn)}},_addNotifyListener:function(e,t
,n,r){e.addEventListener(n,function(e){return t._notifyListener(r,e)})}},Polymer
.Base.extend(Polymer.Bind,{_shouldAddListener:function(e){return e.name&&"attrib
ute"!=e.kind&&"text"!=e.kind&&!e.isCompound&&"{"===e.parts[0].mode},_annotationE
ffect:function(e,t,n){e!=n.value&&(t=this._get(n.value),this.__data__[n.value]=t
),this._applyEffectValue(n,t)},_reflectEffect:function(e,t,n){this.reflectProper
tyToAttribute(e,n.attribute,t)},_notifyEffect:function(e,t,n,r,s){s||this._notif
yChange(e,n.event,t)},_functionEffect:function(e,t,n,r,s){n.call(this,e,t,r,s)},
_observerEffect:function(e,t,n,r){var s=this[n.method];s?s.call(this,t,r):this._
warn(this._logf("_observerEffect","observer method `"+n.method+"` not defined"))
},_complexObserverEffect:function(e,t,n){var r=this[n.method];if(r){var s=Polyme
r.Bind._marshalArgs(this.__data__,n,e,t);s&&r.apply(this,s)}else n.dynamicFn||th
is._warn(this._logf("_complexObserverEffect","observer method `"+n.method+"` not
defined"))},_computeEffect:function(e,t,n){var r=this[n.method];if(r){var s=Pol
ymer.Bind._marshalArgs(this.__data__,n,e,t);if(s){var i=r.apply(this,s);this.__s
etProperty(n.name,i)}}else n.dynamicFn||this._warn(this._logf("_computeEffect","
compute method `"+n.method+"` not defined"))},_annotatedComputationEffect:functi
on(e,t,n){var r=this._rootDataHost||this,s=r[n.method];if(s){var i=Polymer.Bind.
_marshalArgs(this.__data__,n,e,t);if(i){var o=s.apply(r,i);this._applyEffectValu
e(n,o)}}else n.dynamicFn||r._warn(r._logf("_annotatedComputationEffect","compute
method `"+n.method+"` not defined"))},_marshalArgs:function(e,t,n,r){for(var s=
[],i=t.args,o=i.length>1||t.dynamicFn,a=0,l=i.length;a<l;a++){var c,h=i[a],u=h.n
ame;if(h.literal?c=h.value:n===u?c=r:(c=e[u],void 0===c&&h.structured&&(c=Polyme
r.Base._get(u,e))),o&&void 0===c)return;if(h.wildcard){var f=Polymer.Path.isAnce
stor(n,u);s[a]={path:f?n:u,value:f?r:c,base:c}}else s[a]=c}return s}}),Polymer.B
ase._addFeature({_addPropertyEffect:function(e,t,n){var r=Polymer.Bind.addProper
tyEffect(this,e,t,n);r.pathFn=this["_"+r.kind+"PathEffect"]},_prepEffects:functi
on(){Polymer.Bind.prepareModel(this),this._addAnnotationEffects(this._notes)},_p
repBindings:function(){Polymer.Bind.createBindings(this)},_addPropertyEffects:fu
nction(e){if(e)for(var t in e){var n=e[t];if(n.observer&&this._addObserverEffect
(t,n.observer),n.computed&&(n.readOnly=!0,this._addComputedEffect(t,n.computed))
,n.notify&&this._addPropertyEffect(t,"notify",{event:Polymer.CaseMap.camelToDash
Case(t)+"-changed"}),n.reflectToAttribute){var r=Polymer.CaseMap.camelToDashCase
(t);"-"===r[0]?this._warn(this._logf("_addPropertyEffects","Property "+t+" canno
t be reflected to attribute "+r+' because "-" is not a valid starting attribute
name. Use a lowercase first letter for the property instead.')):this._addPropert
yEffect(t,"reflect",{attribute:r})}n.readOnly&&Polymer.Bind.ensurePropertyEffect
s(this,t)}},_addComputedEffect:function(e,t){for(var n,r=this._parseMethod(t),s=
r.dynamicFn,i=0;i<r.args.length&&(n=r.args[i]);i++)this._addPropertyEffect(n.mod
el,"compute",{method:r.method,args:r.args,trigger:n,name:e,dynamicFn:s});s&&this
._addPropertyEffect(r.method,"compute",{method:r.method,args:r.args,trigger:null
,name:e,dynamicFn:s})},_addObserverEffect:function(e,t){this._addPropertyEffect(
e,"observer",{method:t,property:e})},_addComplexObserverEffects:function(e){if(e
)for(var t,n=0;n<e.length&&(t=e[n]);n++)this._addComplexObserverEffect(t)},_addC
omplexObserverEffect:function(e){var t=this._parseMethod(e);if(!t)throw new Erro
r("Malformed observer expression '"+e+"'");for(var n,r=t.dynamicFn,s=0;s<t.args.
length&&(n=t.args[s]);s++)this._addPropertyEffect(n.model,"complexObserver",{met
hod:t.method,args:t.args,trigger:n,dynamicFn:r});r&&this._addPropertyEffect(t.me
thod,"complexObserver",{method:t.method,args:t.args,trigger:null,dynamicFn:r})},
_addAnnotationEffects:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++)for(var
r,s=t.bindings,i=0;i<s.length&&(r=s[i]);i++)this._addAnnotationEffect(r,n)},_ad
dAnnotationEffect:function(e,t){Polymer.Bind._shouldAddListener(e)&&Polymer.Bind
._addAnnotatedListener(this,t,e.name,e.parts[0].value,e.parts[0].event,e.parts[0
].negate);for(var n=0;n<e.parts.length;n++){var r=e.parts[n];r.signature?this._a
ddAnnotatedComputationEffect(e,r,t):r.literal||("attribute"===e.kind&&"-"===e.na
me[0]?this._warn(this._logf("_addAnnotationEffect","Cannot set attribute "+e.nam
e+' because "-" is not a valid attribute starting character')):this._addProperty
Effect(r.model,"annotation",{kind:e.kind,index:t,name:e.name,propertyName:e.prop
ertyName,value:r.value,isCompound:e.isCompound,compoundIndex:r.compoundIndex,eve
nt:r.event,customEvent:r.customEvent,negate:r.negate}))}},_addAnnotatedComputati
onEffect:function(e,t,n){var r=t.signature;if(r.static)this.__addAnnotatedComput
ationEffect("__static__",n,e,t,null);else{for(var s,i=0;i<r.args.length&&(s=r.ar
gs[i]);i++)s.literal||this.__addAnnotatedComputationEffect(s.model,n,e,t,s);r.dy
namicFn&&this.__addAnnotatedComputationEffect(r.method,n,e,t,null)}},__addAnnota
tedComputationEffect:function(e,t,n,r,s){this._addPropertyEffect(e,"annotatedCom
putation",{index:t,isCompound:n.isCompound,compoundIndex:r.compoundIndex,kind:n.
kind,name:n.name,negate:r.negate,method:r.signature.method,args:r.signature.args
,trigger:s,dynamicFn:r.signature.dynamicFn})},_parseMethod:function(e){var t=e.m
atch(/([^\s]+?)\(([\s\S]*)\)/);if(t){var n={method:t[1],static:!0};if(this.getPr
opertyInfo(n.method)!==Polymer.nob&&(n.static=!1,n.dynamicFn=!0),t[2].trim()){va
r r=t[2].replace(/\\,/g,",").split(",");return this._parseArgs(r,n)}return
n.args=Polymer.nar,n}},_parseArgs:function(e,t){return t.args=e.map(function(e)
{var n=this._parseArg(e);return n.literal||(t.static=!1),n},this),t},_parseArg:f
unction(e){var t=e.trim().replace(/,/g,",").replace(/\\(.)/g,"$1"),n={name
:t},r=t[0];switch("-"===r&&(r=t[1]),r>="0"&&r<="9"&&(r="#"),r){case"'":case'"':n
.value=t.slice(1,-1),n.literal=!0;break;case"#":n.value=Number(t),n.literal=!0}r
eturn n.literal||(n.model=Polymer.Path.root(t),n.structured=Polymer.Path.isDeep(
t),n.structured&&(n.wildcard=".*"==t.slice(-2),n.wildcard&&(n.name=t.slice(0,-2)
))),n},_marshalInstanceEffects:function(){Polymer.Bind.prepareInstance(this),thi
s._bindListeners&&Polymer.Bind.setupBindListeners(this)},_applyEffectValue:funct
ion(e,t){var n=this._nodes[e.index],r=e.name;if(t=this._computeFinalAnnotationVa
lue(n,r,t,e),"attribute"==e.kind)this.serializeValueToAttribute(t,r,n);else{var
s=n._propertyInfo&&n._propertyInfo[r];if(s&&s.readOnly)return;this.__setProperty
(r,t,!1,n)}},_computeFinalAnnotationValue:function(e,t,n,r){if(r.negate&&(n=!n),
r.isCompound){var s=e.__compoundStorage__[t];s[r.compoundIndex]=n,n=s.join("")}r
eturn"attribute"!==r.kind&&("className"===t&&(n=this._scopeElementClass(e,n)),("
textContent"===t||"input"==e.localName&&"value"==t)&&(n=void 0==n?"":n)),n},_exe
cuteStaticEffects:function(){this._propertyEffects&&this._propertyEffects.__stat
ic__&&this._effectEffects("__static__",null,this._propertyEffects.__static__)}})
,function(){var e=Polymer.Settings.usePolyfillProto;Polymer.Base._addFeature({_s
etupConfigure:function(e){if(this._config={},this._handlers=[],this._aboveConfig
=null,e)for(var t in e)void 0!==e[t]&&(this._config[t]=e[t])},_marshalAttributes
:function(){this._takeAttributesToModel(this._config)},_attributeChangedImpl:fun
ction(e){var t=this._clientsReadied?this:this._config;this._setAttributeToProper
ty(t,e)},_configValue:function(e,t){var n=this._propertyInfo[e];n&&n.readOnly||(
this._config[e]=t)},_beforeClientsReady:function(){this._configure()},_configure
:function(){this._configureAnnotationReferences(),this._configureInstancePropert
ies(),this._aboveConfig=this.mixin({},this._config);for(var e={},t=0;t<this.beha
viors.length;t++)this._configureProperties(this.behaviors[t].properties,e);this.
_configureProperties(this.properties,e),this.mixin(e,this._aboveConfig),this._co
nfig=e,this._clients&&this._clients.length&&this._distributeConfig(this._config)
},_configureInstanceProperties:function(){for(var t in this._propertyEffects)!e&
&this.hasOwnProperty(t)&&(this._configValue(t,this[t]), |
| 3 delete this[t])},_configureProperties:function(e,t){for(var n in e){var r=e[n];i
f(void 0!==r.value){var s=r.value;"function"==typeof s&&(s=s.call(this,this._con
fig)),t[n]=s}}},_distributeConfig:function(e){var t=this._propertyEffects;if(t)f
or(var n in e){var r=t[n];if(r)for(var s,i=0,o=r.length;i<o&&(s=r[i]);i++)if("an
notation"===s.kind){var a=this._nodes[s.effect.index],l=s.effect.propertyName,c=
"attribute"==s.effect.kind,h=a._propertyEffects&&a._propertyEffects[l];if(a._con
figValue&&(h||!c)){var u=n===s.effect.value?e[n]:this._get(s.effect.value,e);u=t
his._computeFinalAnnotationValue(a,l,u,s.effect),c&&(u=a.deserialize(this.serial
ize(u),a._propertyInfo[l].type)),a._configValue(l,u)}}}},_afterClientsReady:func
tion(){this._executeStaticEffects(),this._applyConfig(this._config,this._aboveCo
nfig),this._flushHandlers()},_applyConfig:function(e,t){for(var n in e)void 0===
this[n]&&this.__setProperty(n,e[n],n in t)},_notifyListener:function(e,t){if(!Po
lymer.Bind._isEventBogus(t,t.target)){var n,r;if(t.detail&&(n=t.detail.value,r=t
.detail.path),this._clientsReadied)return e.call(this,t.target,n,r);this._queueH
andler([e,t.target,n,r])}},_queueHandler:function(e){this._handlers.push(e)},_fl
ushHandlers:function(){for(var e,t=this._handlers,n=0,r=t.length;n<r&&(e=t[n]);n
++)e[0].call(this,e[1],e[2],e[3]);this._handlers=[]}})}(),function(){"use strict
";var e=Polymer.Path;Polymer.Base._addFeature({notifyPath:function(e,t,n){var r=
{},s=this._get(e,this,r);1===arguments.length&&(t=s),r.path&&this._notifyPath(r.
path,t,n)},_notifyPath:function(e,t,n){var r=this._propertySetter(e,t);if(r!==t&
&(r===r||t===t))return this._pathEffector(e,t),n||this._notifyPathUp(e,t),!0},_g
etPathParts:function(e){if(Array.isArray(e)){for(var t=[],n=0;n<e.length;n++)for
(var r=e[n].toString().split("."),s=0;s<r.length;s++)t.push(r[s]);return t}retur
n e.toString().split(".")},set:function(e,t,n){var r,s=n||this,i=this._getPathPa
rts(e),o=i[i.length-1];if(i.length>1){for(var a=0;a<i.length-1;a++){var l=i[a];i
f(r&&"#"==l[0]?s=Polymer.Collection.get(r).getItem(l):(s=s[l],r&&parseInt(l,10)=
=l&&(i[a]=Polymer.Collection.get(r).getKey(s))),!s)return;r=Array.isArray(s)?s:n
ull}if(r){var c,h,u=Polymer.Collection.get(r);"#"==o[0]?(h=o,c=u.getItem(h),o=r.
indexOf(c),u.setItem(h,t)):parseInt(o,10)==o&&(c=s[o],h=u.getKey(c),i[a]=h,u.set
Item(h,t))}s[o]=t,n||this._notifyPath(i.join("."),t)}else s[e]=t},get:function(e
,t){return this._get(e,t)},_get:function(e,t,n){for(var r,s=t||this,i=this._getP
athParts(e),o=0;o<i.length;o++){if(!s)return;var a=i[o];r&&"#"==a[0]?s=Polymer.C
ollection.get(r).getItem(a):(s=s[a],n&&r&&parseInt(a,10)==a&&(i[o]=Polymer.Colle
ction.get(r).getKey(s))),r=Array.isArray(s)?s:null}return n&&(n.path=i.join(".")
),s},_pathEffector:function(t,n){var r=e.root(t),s=this._propertyEffects&&this._
propertyEffects[r];if(s)for(var i,o=0;o<s.length&&(i=s[o]);o++){var a=i.pathFn;a
&&a.call(this,t,n,i.effect)}this._boundPaths&&this._notifyBoundPaths(t,n)},_anno
tationPathEffect:function(t,n,r){if(e.matches(r.value,!1,t))Polymer.Bind._annota
tionEffect.call(this,t,n,r);else if(!r.negate&&e.isDescendant(r.value,t)){var s=
this._nodes[r.index];if(s&&s._notifyPath){var i=e.translate(r.value,r.name,t);s.
_notifyPath(i,n,!0)}}},_complexObserverPathEffect:function(t,n,r){e.matches(r.tr
igger.name,r.trigger.wildcard,t)&&Polymer.Bind._complexObserverEffect.call(this,
t,n,r)},_computePathEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wi
ldcard,t)&&Polymer.Bind._computeEffect.call(this,t,n,r)},_annotatedComputationPa
thEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wildcard,t)&&Polymer
.Bind._annotatedComputationEffect.call(this,t,n,r)},linkPaths:function(e,t){this
._boundPaths=this._boundPaths||{},t?this._boundPaths[e]=t:this.unlinkPaths(e)},u
nlinkPaths:function(e){this._boundPaths&&delete this._boundPaths[e]},_notifyBoun
dPaths:function(t,n){for(var r in this._boundPaths){var s=this._boundPaths[r];e.
isDescendant(r,t)?this._notifyPath(e.translate(r,s,t),n):e.isDescendant(s,t)&&th
is._notifyPath(e.translate(s,r,t),n)}},_notifyPathUp:function(t,n){var r=e.root(
t),s=Polymer.CaseMap.camelToDashCase(r),i=s+this._EVENT_CHANGED;this.fire(i,{pat
h:t,value:n},{bubbles:!1,_useCache:!0})},_EVENT_CHANGED:"-changed",notifySplices
:function(e,t){var n={},r=this._get(e,this,n);this._notifySplices(r,n.path,t)},_
notifySplices:function(e,t,n){var r={keySplices:Polymer.Collection.applySplices(
e,n),indexSplices:n},s=t+".splices";this._notifyPath(s,r),this._notifyPath(t+".l
ength",e.length),this.__data__[s]={keySplices:null,indexSplices:null}},_notifySp
lice:function(e,t,n,r,s){this._notifySplices(e,t,[{index:n,addedCount:r,removed:
s,object:e,type:"splice"}])},push:function(e){var t={},n=this._get(e,this,t),r=A
rray.prototype.slice.call(arguments,1),s=n.length,i=n.push.apply(n,r);return r.l
ength&&this._notifySplice(n,t.path,s,r.length,[]),i},pop:function(e){var t={},n=
this._get(e,this,t),r=Boolean(n.length),s=Array.prototype.slice.call(arguments,1
),i=n.pop.apply(n,s);return r&&this._notifySplice(n,t.path,n.length,0,[i]),i},sp
lice:function(e,t){var n={},r=this._get(e,this,n);t=t<0?r.length-Math.floor(-t):
Math.floor(t),t||(t=0);var s=Array.prototype.slice.call(arguments,1),i=r.splice.
apply(r,s),o=Math.max(s.length-2,0);return(o||i.length)&&this._notifySplice(r,n.
path,t,o,i),i},shift:function(e){var t={},n=this._get(e,this,t),r=Boolean(n.leng
th),s=Array.prototype.slice.call(arguments,1),i=n.shift.apply(n,s);return r&&thi
s._notifySplice(n,t.path,0,0,[i]),i},unshift:function(e){var t={},n=this._get(e,
this,t),r=Array.prototype.slice.call(arguments,1),s=n.unshift.apply(n,r);return
r.length&&this._notifySplice(n,t.path,0,r.length,[]),s},prepareModelNotifyPath:f
unction(e){this.mixin(e,{fire:Polymer.Base.fire,_getEvent:Polymer.Base._getEvent
,__eventCache:Polymer.Base.__eventCache,notifyPath:Polymer.Base.notifyPath,_get:
Polymer.Base._get,_EVENT_CHANGED:Polymer.Base._EVENT_CHANGED,_notifyPath:Polymer
.Base._notifyPath,_notifyPathUp:Polymer.Base._notifyPathUp,_pathEffector:Polymer
.Base._pathEffector,_annotationPathEffect:Polymer.Base._annotationPathEffect,_co
mplexObserverPathEffect:Polymer.Base._complexObserverPathEffect,_annotatedComput
ationPathEffect:Polymer.Base._annotatedComputationPathEffect,_computePathEffect:
Polymer.Base._computePathEffect,_notifyBoundPaths:Polymer.Base._notifyBoundPaths
,_getPathParts:Polymer.Base._getPathParts})}})}(),Polymer.Base._addFeature({reso
lveUrl:function(e){var t=Polymer.DomModule.import(this.is),n="";if(t){var r=t.ge
tAttribute("assetpath")||"";n=Polymer.ResolveUrl.resolveUrl(r,t.ownerDocument.ba
seURI)}return Polymer.ResolveUrl.resolveUrl(e,n)}}),Polymer.CssParse=function(){
return{parse:function(e){return e=this._clean(e),this._parseCss(this._lex(e),e)}
,_clean:function(e){return e.replace(this._rx.comments,"").replace(this._rx.port
,"")},_lex:function(e){for(var t={start:0,end:e.length},n=t,r=0,s=e.length;r<s;r
++)switch(e[r]){case this.OPEN_BRACE:n.rules||(n.rules=[]);var i=n,o=i.rules[i.r
ules.length-1];n={start:r+1,parent:i,previous:o},i.rules.push(n);break;case this
.CLOSE_BRACE:n.end=r+1,n=n.parent||t}return t},_parseCss:function(e,t){var n=t.s
ubstring(e.start,e.end-1);if(e.parsedCssText=e.cssText=n.trim(),e.parent){var r=
e.previous?e.previous.end:e.parent.start;n=t.substring(r,e.start-1),n=this._expa
ndUnicodeEscapes(n),n=n.replace(this._rx.multipleSpaces," "),n=n.substring(n.las
tIndexOf(";")+1);var s=e.parsedSelector=e.selector=n.trim();e.atRule=0===s.index
Of(this.AT_START),e.atRule?0===s.indexOf(this.MEDIA_START)?e.type=this.types.MED
IA_RULE:s.match(this._rx.keyframesRule)&&(e.type=this.types.KEYFRAMES_RULE,e.key
framesName=e.selector.split(this._rx.multipleSpaces).pop()):0===s.indexOf(this.V
AR_START)?e.type=this.types.MIXIN_RULE:e.type=this.types.STYLE_RULE}var i=e.rule
s;if(i)for(var o,a=0,l=i.length;a<l&&(o=i[a]);a++)this._parseCss(o,t);return e},
_expandUnicodeEscapes:function(e){return e.replace(/\\([0-9a-f]{1,6})\s/gi,funct
ion(){for(var e=arguments[1],t=6-e.length;t--;)e="0"+e;return"\\"+e})},stringify
:function(e,t,n){n=n||"";var r="";if(e.cssText||e.rules){var s=e.rules;if(s&&!th
is._hasMixinRules(s))for(var i,o=0,a=s.length;o<a&&(i=s[o]);o++)r=this.stringify
(i,t,r);else r=t?e.cssText:this.removeCustomProps(e.cssText),r=r.trim(),r&&(r="
"+r+"\n")}return r&&(e.selector&&(n+=e.selector+" "+this.OPEN_BRACE+"\n"),n+=r,
e.selector&&(n+=this.CLOSE_BRACE+"\n\n")),n},_hasMixinRules:function(e){return 0
===e[0].selector.indexOf(this.VAR_START)},removeCustomProps:function(e){return e
=this.removeCustomPropAssignment(e),this.removeCustomPropApply(e)},removeCustomP
ropAssignment:function(e){return e.replace(this._rx.customProp,"").replace(this.
_rx.mixinProp,"")},removeCustomPropApply:function(e){return e.replace(this._rx.m
ixinApply,"").replace(this._rx.varApply,"")},types:{STYLE_RULE:1,KEYFRAMES_RULE:
7,MEDIA_RULE:4,MIXIN_RULE:1e3},OPEN_BRACE:"{",CLOSE_BRACE:"}",_rx:{comments:/\/\
*[^*]*\*+([^\/*][^*]*\*+)*\//gim,port:/@import[^;]*;/gim,customProp:/(?:^[^;\-\s
}]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,mixinProp:/(?:^[^;\-\s}]+)?--[^;{}]*?:[^
{};]*?{[^}]*?}(?:[;\n]|$)?/gim,mixinApply:/@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/
gim,varApply:/[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,keyframesRule:/^@[^\s]*
keyframes/,multipleSpaces:/\s+/g},VAR_START:"--",MEDIA_START:"@media",AT_START:"
@"}}(),Polymer.StyleUtil=function(){var e=Polymer.Settings;return{NATIVE_VARIABL
ES:Polymer.Settings.useNativeCSSProperties,MODULE_STYLES_SELECTOR:"style, link[r
el=import][type~=css], template",INCLUDE_ATTR:"include",toCssText:function(e,t){
return"string"==typeof e&&(e=this.parser.parse(e)),t&&this.forEachRule(e,t),this
.parser.stringify(e,this.NATIVE_VARIABLES)},forRulesInStyles:function(e,t,n){if(
e)for(var r,s=0,i=e.length;s<i&&(r=e[s]);s++)this.forEachRuleInStyle(r,t,n)},for
ActiveRulesInStyles:function(e,t,n){if(e)for(var r,s=0,i=e.length;s<i&&(r=e[s]);
s++)this.forEachRuleInStyle(r,t,n,!0)},rulesForStyle:function(e){return!e.__cssR
ules&&e.textContent&&(e.__cssRules=this.parser.parse(e.textContent)),e.__cssRule
s},isKeyframesSelector:function(e){return e.parent&&e.parent.type===this.ruleTyp
es.KEYFRAMES_RULE},forEachRuleInStyle:function(e,t,n,r){var s,i,o=this.rulesForS
tyle(e);t&&(s=function(n){t(n,e)}),n&&(i=function(t){n(t,e)}),this.forEachRule(o
,s,i,r)},forEachRule:function(e,t,n,r){if(e){var s=!1;if(r&&e.type===this.ruleTy
pes.MEDIA_RULE){var i=e.selector.match(this.rx.MEDIA_MATCH);i&&(window.matchMedi
a(i[1]).matches||(s=!0))}e.type===this.ruleTypes.STYLE_RULE?t(e):n&&e.type===thi
s.ruleTypes.KEYFRAMES_RULE?n(e):e.type===this.ruleTypes.MIXIN_RULE&&(s=!0);var o
=e.rules;if(o&&!s)for(var a,l=0,c=o.length;l<c&&(a=o[l]);l++)this.forEachRule(a,
t,n,r)}},applyCss:function(e,t,n,r){var s=this.createScopeStyle(e,t);return this
.applyStyle(s,n,r)},applyStyle:function(e,t,n){t=t||document.head;var r=n&&n.nex
tSibling||t.firstChild;return this.__lastHeadApplyNode=e,t.insertBefore(e,r)},cr
eateScopeStyle:function(e,t){var n=document.createElement("style");return t&&n.s
etAttribute("scope",t),n.textContent=e,n},__lastHeadApplyNode:null,applyStylePla
ceHolder:function(e){var t=document.createComment(" Shady DOM styles for "+e+" "
),n=this.__lastHeadApplyNode?this.__lastHeadApplyNode.nextSibling:null,r=documen
t.head;return r.insertBefore(t,n||r.firstChild),this.__lastHeadApplyNode=t,t},cs
sFromModules:function(e,t){for(var n=e.trim().split(" "),r="",s=0;s<n.length;s++
)r+=this.cssFromModule(n[s],t);return r},cssFromModule:function(e,t){var n=Polym
er.DomModule.import(e);return n&&!n._cssText&&(n._cssText=this.cssFromElement(n)
),!n&&t&&console.warn("Could not find style data in module named",e),n&&n._cssTe
xt||""},cssFromElement:function(e){for(var t,n="",r=e.content||e,s=Polymer.TreeA
pi.arrayCopy(r.querySelectorAll(this.MODULE_STYLES_SELECTOR)),i=0;i<s.length;i++
)if(t=s[i],"template"===t.localName)t.hasAttribute("preserve-content")||(n+=this
.cssFromElement(t));else if("style"===t.localName){var o=t.getAttribute(this.INC
LUDE_ATTR);o&&(n+=this.cssFromModules(o,!0)),t=t.__appliedElement||t,t.parentNod
e.removeChild(t),n+=this.resolveCss(t.textContent,e.ownerDocument)}else t.import
&&t.import.body&&(n+=this.resolveCss(t.import.body.textContent,t.import));return
n},isTargetedBuild:function(t){return e.useNativeShadow?"shadow"===t:"shady"===
t},cssBuildTypeForModule:function(e){var t=Polymer.DomModule.import(e);if(t)retu
rn this.getCssBuildType(t)},getCssBuildType:function(e){return e.getAttribute("c
ss-build")},_findMatchingParen:function(e,t){for(var n=0,r=t,s=e.length;r<s;r++)
switch(e[r]){case"(":n++;break;case")":if(0===--n)return r}return-1},processVari
ableAndFallback:function(e,t){var n=e.indexOf("var(");if(n===-1)return t(e,"",""
,"");var r=this._findMatchingParen(e,n+3),s=e.substring(n+4,r),i=e.substring(0,n
),o=this.processVariableAndFallback(e.substring(r+1),t),a=s.indexOf(",");if(a===
-1)return t(i,s.trim(),"",o);var l=s.substring(0,a).trim(),c=s.substring(a+1).tr
im();return t(i,l,c,o)},rx:{VAR_ASSIGN:/(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:([^;
{]*)|{([^}]*)})(?:(?=[;\s}])|$)/gi,MIXIN_MATCH:/(?:^|\W+)@apply\s*\(?([^);\n]*)\
)?/gi,VAR_CONSUMED:/(--[\w-]+)\s*([:,;)]|$)/gi,ANIMATION_MATCH:/(animation\s*:)|
(animation-name\s*:)/,MEDIA_MATCH:/@media[^(]*(\([^)]*\))/,IS_VAR:/^--/,BRACKETE
D:/\{[^}]*\}/g,HOST_PREFIX:"(?:^|[^.#[:])",HOST_SUFFIX:"($|[.:[\\s>+~])"},resolv
eCss:Polymer.ResolveUrl.resolveCss,parser:Polymer.CssParse,ruleTypes:Polymer.Css
Parse.types}}(),Polymer.StyleTransformer=function(){var e=Polymer.StyleUtil,t=Po
lymer.Settings,n={dom:function(e,t,n,r){this._transformDom(e,t||"",n,r)},_transf
ormDom:function(e,t,n,r){e.setAttribute&&this.element(e,t,n,r);for(var s=Polymer
.dom(e).childNodes,i=0;i<s.length;i++)this._transformDom(s[i],t,n,r)},element:fu
nction(e,t,n,s){if(n)s?e.removeAttribute(r):e.setAttribute(r,t);else if(t)if(e.c
lassList)s?(e.classList.remove(r),e.classList.remove(t)):(e.classList.add(r),e.c
lassList.add(t));else if(e.getAttribute){var i=e.getAttribute(g);s?i&&e.setAttri
bute(g,i.replace(r,"").replace(t,"")):e.setAttribute(g,(i?i+" ":"")+r+" "+t)}},e
lementStyles:function(n,r){var s,i=n._styles,o="",a=n.__cssBuild,l=t.useNativeSh
adow||"shady"===a;if(l){var h=this;s=function(e){e.selector=h._slottedToContent(
e.selector),e.selector=e.selector.replace(c,":host > *"),r&&r(e)}}for(var u,f=0,
p=i.length;f<p&&(u=i[f]);f++){var _=e.rulesForStyle(u);o+=l?e.toCssText(_,s):thi
s.css(_,n.is,n.extends,r,n._scopeCssViaAttr)+"\n\n"}return o.trim()},css:functio
n(t,n,r,s,i){var o=this._calcHostScope(n,r);n=this._calcElementScope(n,i);var a=
this;return e.toCssText(t,function(e){e.isScoped||(a.rule(e,n,o),e.isScoped=!0),
s&&s(e,n,o)})},_calcElementScope:function(e,t){return e?t?m+e+y:d+e:""},_calcHos
tScope:function(e,t){return t?"[is="+e+"]":e},rule:function(e,t,n){this._transfo
rmRule(e,this._transformComplexSelector,t,n)},_transformRule:function(e,t,n,r){e
.selector=e.transformedSelector=this._transformRuleCss(e,t,n,r)},_transformRuleC
ss:function(t,n,r,s){var o=t.selector.split(i);if(!e.isKeyframesSelector(t))for(
var a,l=0,c=o.length;l<c&&(a=o[l]);l++)o[l]=n.call(this,a,r,s);return o.join(i)}
,_transformComplexSelector:function(e,t,n){var r=!1,s=!1,a=this;return e=e.trim(
),e=this._slottedToContent(e),e=e.replace(c,":host > *"),e=e.replace(P,l+" $1"),
e=e.replace(o,function(e,i,o){if(r)o=o.replace(_," ");else{var l=a._transformCom
poundSelector(o,i,t,n);r=r||l.stop,s=s||l.hostContext,i=l.combinator,o=l.value}r
eturn i+o}),s&&(e=e.replace(f,function(e,t,r,s){return t+r+" "+n+s+i+" "+t+n+r+s
})),e},_transformCompoundSelector:function(e,t,n,r){var s=e.search(_),i=!1;e.ind
exOf(u)>=0?i=!0:e.indexOf(l)>=0?e=this._transformHostSelector(e,r):0!==s&&(e=n?t
his._transformSimpleSelector(e,n):e),e.indexOf(p)>=0&&(t="");var o;return s>=0&&
(e=e.replace(_," "),o=!0),{value:e,combinator:t,stop:o,hostContext:i}},_transfor
mSimpleSelector:function(e,t){var n=e.split(v);return n[0]+=t,n.join(v)},_transf
ormHostSelector:function(e,t){var n=e.match(h),r=n&&n[2].trim()||"";if(r){if(r[0
].match(a))return e.replace(h,function(e,n,r){return t+r});var s=r.split(a)[0];r
eturn s===t?r:S}return e.replace(l,t)},documentRule:function(e){e.selector=e.par
sedSelector,this.normalizeRootSelector(e),t.useNativeShadow||this._transformRule
(e,this._transformDocumentSelector)},normalizeRootSelector:function(e){e.selecto
r=e.selector.replace(c,"html")},_transformDocumentSelector:function(e){return e.
match(_)?this._transformComplexSelector(e,s):this._transformSimpleSelector(e.tri
m(),s)},_slottedToContent:function(e){return e.replace(C,p+"> $1")},SCOPE_NAME:"
style-scope"},r=n.SCOPE_NAME,s=":not(["+r+"]):not(."+r+")",i=",",o=/(^|[\s>+~]+)
((?:\[.+?\]|[^\s>+~=\[])+)/g,a=/[[.:#*]/,l=":host",c=":root",h=/(:host)(?:\(((?:
\([^)(]*\)|[^)(]*)+?)\))/,u=":host-context",f=/(.*)(?::host-context)(?:\(((?:\([
^)(]*\)|[^)(]*)+?)\))(.*)/,p="::content",_=/::content|::shadow|\/deep\//,d=".",m
="["+r+"~=",y="]",v=":",g="class",P=new RegExp("^("+p+")"),S="should_not_match",
C=/(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/g;return n}(),Polymer.StyleExt
ends=function(){var e=Polymer.StyleUtil;return{hasExtends:function(e){return Boo
lean(e.match(this.rx.EXTEND))},transform:function(t){var n=e.rulesForStyle(t),r=
this;return e.forEachRule(n,function(e){if(r._mapRuleOntoParent(e),e.parent)for(
var t;t=r.rx.EXTEND.exec(e.cssText);){var n=t[1],s=r._findExtendor(n,e);s&&r._ex
tendRule(e,s)}e.cssText=e.cssText.replace(r.rx.EXTEND,"")}),e.toCssText(n,functi
on(e){e.selector.match(r.rx.STRIP)&&(e.cssText="")},!0)},_mapRuleOntoParent:func
tion(e){if(e.parent){for(var t,n=e.parent.map||(e.parent.map={}),r=e.selector.sp
lit(","),s=0;s<r.length;s++)t=r[s],n[t.trim()]=e;return n}},_findExtendor:functi
on(e,t){return t.parent&&t.parent.map&&t.parent.map[e]||this._findExtendor(e,t.p
arent)},_extendRule:function(e,t){e.parent!==t.parent&&this._cloneAndAddRuleToPa
rent(t,e.parent),e.extends=e.extends||[],e.extends.push(t),t.selector=t.selector
.replace(this.rx.STRIP,""),t.selector=(t.selector&&t.selector+",\n")+e.selector,
t.extends&&t.extends.forEach(function(t){this._extendRule(e,t)},this)},_cloneAnd
AddRuleToParent:function(e,t){e=Object.create(e),e.parent=t,e.extends&&(e.extend
s=e.extends.slice()),t.rules.push(e)},rx:{EXTEND:/@extends\(([^)]*)\)\s*?;/gim,S
TRIP:/%[^,]*$/}}}(),Polymer.ApplyShim=function(){"use strict";function e(e,t){e=
e.trim(),m[e]={properties:t,dependants:{}}}function t(e){return e=e.trim(),m[e]}
function n(e,t){var n=_.exec(t);return n&&(t=n[1]?y._getInitialValueForProperty(
e):"apply-shim-inherit"),t}function r(e){for(var t,r,s,i,o=e.split(";"),a={},l=0
;l<o.length;l++)s=o[l],s&&(i=s.split(":"),i.length>1&&(t=i[0].trim(),r=n(t,i.sli
ce(1).join(":")),a[t]=r));return a}function s(e){var t=y.__currentElementProto,n
=t&&t.is;for(var r in e.dependants)r!==n&&(e.dependants[r].__applyShimInvalid=!0
)}function i(n,i,o,a){if(o&&c.processVariableAndFallback(o,function(e,n){n&&t(n)
&&(a="@apply "+n+";")}),!a)return n;var h=l(a),u=n.slice(0,n.indexOf("--")),f=r(
h),p=f,_=t(i),m=_&&_.properties;m?(p=Object.create(m),p=Polymer.Base.mixin(p,f))
:e(i,p);var y,v,g=[],P=!1;for(y in p)v=f[y],void 0===v&&(v="initial"),!m||y in m
||(P=!0),g.push(i+d+y+": "+v);return P&&s(_),_&&(_.properties=p),o&&(u=n+";"+u),
u+g.join("; ")+";"}function o(e,t,n){return"var("+t+",var("+n+"))"}function a(n,
r){n=n.replace(p,"");var s=[],i=t(n);if(i||(e(n,{}),i=t(n)),i){var o=y.__current
ElementProto;o&&(i.dependants[o.is]=o);var a,l,c;for(a in i.properties)c=r&&r[a]
,l=[a,": var(",n,d,a],c&&l.push(",",c),l.push(")"),s.push(l.join(""))}return s.j
oin("; ")}function l(e){for(var t;t=h.exec(e);){var n=t[0],s=t[1],i=t.index,o=i+
n.indexOf("@apply"),l=i+n.length,c=e.slice(0,o),u=e.slice(l),f=r(c),p=a(s,f);e=[
c,p,u].join(""),h.lastIndex=i+p.length}return e}var c=Polymer.StyleUtil,h=c.rx.M
IXIN_MATCH,u=c.rx.VAR_ASSIGN,f=/var\(\s*(--[^,]*),\s*(--[^)]*)\)/g,p=/;\s*/m,_=/
^\s*(initial)|(inherit)\s*$/,d="_-_",m={},y={_measureElement:null,_map:m,_separa
tor:d,transform:function(e,t){this.__currentElementProto=t,c.forRulesInStyles(e,
this._boundFindDefinitions),c.forRulesInStyles(e,this._boundFindApplications),t&
&(t.__applyShimInvalid=!1),this.__currentElementProto=null},_findDefinitions:fun
ction(e){var t=e.parsedCssText;t=t.replace(f,o),t=t.replace(u,i),e.cssText=t,":r
oot"===e.selector&&(e.selector=":host > *")},_findApplications:function(e){e.css
Text=l(e.cssText)},transformRule:function(e){this._findDefinitions(e),this._find
Applications(e)},_getInitialValueForProperty:function(e){return this._measureEle
ment||(this._measureElement=document.createElement("meta"),this._measureElement.
style.all="initial",document.head.appendChild(this._measureElement)),window.getC
omputedStyle(this._measureElement).getPropertyValue(e)}};return y._boundTransfor
mRule=y.transformRule.bind(y),y._boundFindDefinitions=y._findDefinitions.bind(y)
,y._boundFindApplications=y._findApplications.bind(y),y}(),function(){var e=Poly
mer.Base._prepElement,t=Polymer.Settings.useNativeShadow,n=Polymer.StyleUtil,r=P
olymer.StyleTransformer,s=Polymer.StyleExtends,i=Polymer.ApplyShim,o=Polymer.Set
tings;Polymer.Base._addFeature({_prepElement:function(t){this._encapsulateStyle&
&"shady"!==this.__cssBuild&&r.element(t,this.is,this._scopeCssViaAttr),e.call(th
is,t)},_prepStyles:function(){void 0===this._encapsulateStyle&&(this._encapsulat
eStyle=!t),t||(this._scopeStyle=n.applyStylePlaceHolder(this.is)),this.__cssBuil
d=n.cssBuildTypeForModule(this.is)},_prepShimStyles:function(){if(this._template
){var e=n.isTargetedBuild(this.__cssBuild);if(o.useNativeCSSProperties&&"shadow"
===this.__cssBuild&&e)return;this._styles=this._styles||this._collectStyles(),o.
useNativeCSSProperties&&!this.__cssBuild&&i.transform(this._styles,this);var s=o
.useNativeCSSProperties&&e?this._styles.length&&this._styles[0].textContent.trim
():r.elementStyles(this);this._prepStyleProperties(),!this._needsStyleProperties
()&&s&&n.applyCss(s,this.is,t?this._template.content:null,this._scopeStyle)}else
this._styles=[]},_collectStyles:function(){var e=[],t="",r=this.styleModules;if
(r)for(var i,o=0,a=r.length;o<a&&(i=r[o]);o++)t+=n.cssFromModule(i);t+=n.cssFrom
Module(this.is);var l=this._template&&this._template.parentNode;if(!this._templa
te||l&&l.id.toLowerCase()===this.is||(t+=n.cssFromElement(this._template)),t){va
r c=document.createElement("style");c.textContent=t,s.hasExtends(c.textContent)&
&(t=s.transform(c)),e.push(c)}return e},_elementAdd:function(e){this._encapsulat
eStyle&&(e.__styleScoped?e.__styleScoped=!1:r.dom(e,this.is,this._scopeCssViaAtt
r))},_elementRemove:function(e){this._encapsulateStyle&&r.dom(e,this.is,this._sc
opeCssViaAttr,!0)},scopeSubtree:function(e,n){if(!t){var r=this,s=function(e){if
(e.nodeType===Node.ELEMENT_NODE){var t=e.getAttribute("class");e.setAttribute("c
lass",r._scopeElementClass(e,t));for(var n,s=e.querySelectorAll("*"),i=0;i<s.len
gth&&(n=s[i]);i++)t=n.getAttribute("class"),n.setAttribute("class",r._scopeEleme
ntClass(n,t))}};if(s(e),n){var i=new MutationObserver(function(e){for(var t,n=0;
n<e.length&&(t=e[n]);n++)if(t.addedNodes)for(var r=0;r<t.addedNodes.length;r++)s
(t.addedNodes[r])});return i.observe(e,{childList:!0,subtree:!0}),i}}}})}(),Poly
mer.StyleProperties=function(){"use strict";function e(e,t){var n=parseInt(e/32)
,r=1<<e%32;t[n]=(t[n]||0)|r}var t=Polymer.DomApi.matchesSelector,n=Polymer.Style
Util,r=Polymer.StyleTransformer,s=navigator.userAgent.match("Trident"),i=Polymer
.Settings;return{decorateStyles:function(e,t){var s=this,i={},o=[],a=0,l=r._calc
HostScope(t.is,t.extends);n.forRulesInStyles(e,function(e,r){s.decorateRule(e),e
.index=a++,s.whenHostOrRootRule(t,e,r,function(r){if(e.parent.type===n.ruleTypes
.MEDIA_RULE&&(t.__notStyleScopeCacheable=!0),r.isHost){var s=r.selector.split("
").some(function(e){return 0===e.indexOf(l)&&e.length!==l.length});t.__notStyleS
copeCacheable=t.__notStyleScopeCacheable||s}}),s.collectPropertiesInCssText(e.pr
opertyInfo.cssText,i)},function(e){o.push(e)}),e._keyframes=o;var c=[];for(var h
in i)c.push(h);return c},decorateRule:function(e){if(e.propertyInfo)return e.pr
opertyInfo;var t={},n={},r=this.collectProperties(e,n);return r&&(t.properties=n
,e.rules=null),t.cssText=this.collectCssText(e),e.propertyInfo=t,t},collectPrope
rties:function(e,t){var n=e.propertyInfo;if(!n){for(var r,s,i,o=this.rx.VAR_ASSI
GN,a=e.parsedCssText;r=o.exec(a);)s=(r[2]||r[3]).trim(),"inherit"!==s&&(t[r[1].t
rim()]=s),i=!0;return i}if(n.properties)return Polymer.Base.mixin(t,n.properties
),!0},collectCssText:function(e){return this.collectConsumingCssText(e.parsedCss
Text)},collectConsumingCssText:function(e){return e.replace(this.rx.BRACKETED,""
).replace(this.rx.VAR_ASSIGN,"")},collectPropertiesInCssText:function(e,t){for(v
ar n;n=this.rx.VAR_CONSUMED.exec(e);){var r=n[1];":"!==n[2]&&(t[r]=!0)}},reify:f
unction(e){for(var t,n=Object.getOwnPropertyNames(e),r=0;r<n.length;r++)t=n[r],e
[t]=this.valueForProperty(e[t],e)},valueForProperty:function(e,t){if(e)if(e.inde
xOf(";")>=0)e=this.valueForProperties(e,t);else{var r=this,s=function(e,n,s,i){v
ar o=r.valueForProperty(t[n],t);return o&&"initial"!==o?"apply-shim-inherit"===o
&&(o="inherit"):o=r.valueForProperty(t[s]||s,t)||s,e+(o||"")+i};e=n.processVaria
bleAndFallback(e,s)}return e&&e.trim()||""},valueForProperties:function(e,t){for
(var n,r,s=e.split(";"),i=0;i<s.length;i++)if(n=s[i]){if(this.rx.MIXIN_MATCH.las
tIndex=0,r=this.rx.MIXIN_MATCH.exec(n))n=this.valueForProperty(t[r[1]],t);else{v
ar o=n.indexOf(":");if(o!==-1){var a=n.substring(o);a=a.trim(),a=this.valueForPr
operty(a,t)||a,n=n.substring(0,o)+a}}s[i]=n&&n.lastIndexOf(";")===n.length-1?n.s
lice(0,-1):n||""}return s.join(";")},applyProperties:function(e,t){var n="";e.pr
opertyInfo||this.decorateRule(e),e.propertyInfo.cssText&&(n=this.valueForPropert
ies(e.propertyInfo.cssText,t)),e.cssText=n},applyKeyframeTransforms:function(e,t
){var n=e.cssText,r=e.cssText;if(null==e.hasAnimations&&(e.hasAnimations=this.rx
.ANIMATION_MATCH.test(n)),e.hasAnimations){var s;if(null==e.keyframeNamesToTrans
form){e.keyframeNamesToTransform=[];for(var i in t)s=t[i],r=s(n),n!==r&&(n=r,e.k
eyframeNamesToTransform.push(i))}else{for(var o=0;o<e.keyframeNamesToTransform.l
ength;++o)s=t[e.keyframeNamesToTransform[o]],n=s(n);r=n}}e.cssText=r},propertyDa
taFromStyles:function(r,s){var i={},o=this,a=[];return n.forActiveRulesInStyles(
r,function(n){n.propertyInfo||o.decorateRule(n);var r=n.transformedSelector||n.p
arsedSelector;s&&n.propertyInfo.properties&&r&&t.call(s,r)&&(o.collectProperties
(n,i),e(n.index,a))}),{properties:i,key:a}},_rootSelector:/:root|:host\s*>\s*\*/
,_checkRoot:function(e,t){return Boolean(t.match(this._rootSelector))||"html"===
e&&t.indexOf("html")>-1},whenHostOrRootRule:function(e,t,n,s){if(t.propertyInfo|
|self.decorateRule(t),t.propertyInfo.properties){var o=e.is?r._calcHostScope(e.i
s,e.extends):"html",a=t.parsedSelector,l=this._checkRoot(o,a),c=!l&&0===a.indexO
f(":host"),h=e.__cssBuild||n.__cssBuild;if("shady"===h&&(l=a===o+" > *."+o||a.in
dexOf("html")>-1,c=!l&&0===a.indexOf(o)),l||c){var u=o;c&&(i.useNativeShadow&&!t
.transformedSelector&&(t.transformedSelector=r._transformRuleCss(t,r._transformC
omplexSelector,e.is,o)),u=t.transformedSelector||t.parsedSelector),l&&"html"===o
&&(u=t.transformedSelector||t.parsedSelector),s({selector:u,isHost:c,isRoot:l})}
}},hostAndRootPropertiesForScope:function(e){var r={},s={},i=this;return n.forAc
tiveRulesInStyles(e._styles,function(n,o){i.whenHostOrRootRule(e,n,o,function(o)
{var a=e._element||e;t.call(a,o.selector)&&(o.isHost?i.collectProperties(n,r):i.
collectProperties(n,s))})}),{rootProps:s,hostProps:r}},transformStyles:function(
e,t,n){var s=this,o=r._calcHostScope(e.is,e.extends),a=e.extends?"\\"+o.slice(0,
-1)+"\\]":o,l=new RegExp(this.rx.HOST_PREFIX+a+this.rx.HOST_SUFFIX),c=this._elem
entKeyframeTransforms(e,n);return r.elementStyles(e,function(r){s.applyPropertie
s(r,t),i.useNativeShadow||Polymer.StyleUtil.isKeyframesSelector(r)||!r.cssText||
(s.applyKeyframeTransforms(r,c),s._scopeSelector(r,l,o,e._scopeCssViaAttr,n))})}
,_elementKeyframeTransforms:function(e,t){var n=e._styles._keyframes,r={};if(!i.
useNativeShadow&&n)for(var s=0,o=n[s];s<n.length;o=n[++s])this._scopeKeyframes(o
,t),r[o.keyframesName]=this._keyframesRuleTransformer(o);return r},_keyframesRul
eTransformer:function(e){return function(t){return t.replace(e.keyframesNameRx,e
.transformedKeyframesName)}},_scopeKeyframes:function(e,t){e.keyframesNameRx=new
RegExp(e.keyframesName,"g"),e.transformedKeyframesName=e.keyframesName+"-"+t,e.
transformedSelector=e.transformedSelector||e.selector,e.selector=e.transformedSe
lector.replace(e.keyframesName,e.transformedKeyframesName)},_scopeSelector:funct
ion(e,t,n,s,i){e.transformedSelector=e.transformedSelector||e.selector;for(var o
,a=e.transformedSelector,l=s?"["+r.SCOPE_NAME+"~="+i+"]":"."+i,c=a.split(","),h=
0,u=c.length;h<u&&(o=c[h]);h++)c[h]=o.match(t)?o.replace(n,l):l+" "+o;e.selector
=c.join(",")},applyElementScopeSelector:function(e,t,n,s){var i=s?e.getAttribute
(r.SCOPE_NAME):e.getAttribute("class")||"",o=n?i.replace(n,t):(i?i+" ":"")+this.
XSCOPE_NAME+" "+t;i!==o&&(s?e.setAttribute(r.SCOPE_NAME,o):e.setAttribute("class
",o))},applyElementStyle:function(e,t,r,o){var a=o?o.textContent||"":this.transf
ormStyles(e,t,r),l=e._customStyle;return l&&!i.useNativeShadow&&l!==o&&(l._useCo
unt--,l._useCount<=0&&l.parentNode&&l.parentNode.removeChild(l)),i.useNativeShad
ow?e._customStyle?(e._customStyle.textContent=a,o=e._customStyle):a&&(o=n.applyC
ss(a,r,e.root,e._scopeStyle)):o?o.parentNode||(s&&a.indexOf("@media")>-1&&(o.tex
tContent=a),n.applyStyle(o,null,e._scopeStyle)):a&&(o=n.applyCss(a,r,null,e._sco
peStyle)),o&&(o._useCount=o._useCount||0,e._customStyle!=o&&o._useCount++,e._cus
tomStyle=o),o},mixinCustomStyle:function(e,t){var n;for(var r in t)n=t[r],(n||0=
==n)&&(e[r]=n)},updateNativeStyleProperties:function(e,t){var n=e.__customStyleP
roperties;if(n)for(var r=0;r<n.length;r++)e.style.removeProperty(n[r]);var s=[];
for(var i in t)null!==t[i]&&(e.style.setProperty(i,t[i]),s.push(i));e.__customSt
yleProperties=s},rx:n.rx,XSCOPE_NAME:"x-scope"}}(),function(){Polymer.StyleCache
=function(){this.cache={}},Polymer.StyleCache.prototype={MAX:100,store:function(
e,t,n,r){t.keyValues=n,t.styles=r;var s=this.cache[e]=this.cache[e]||[];s.push(t
),s.length>this.MAX&&s.shift()},retrieve:function(e,t,n){var r=this.cache[e];if(
r)for(var s,i=r.length-1;i>=0;i--)if(s=r[i],n===s.styles&&this._objectsEqual(t,s
.keyValues))return s},clear:function(){this.cache={}},_objectsEqual:function(e,t
){var n,r;for(var s in e)if(n=e[s],r=t[s],!("object"==typeof n&&n?this._objectsS
trictlyEqual(n,r):n===r))return!1;return!Array.isArray(e)||e.length===t.length},
_objectsStrictlyEqual:function(e,t){return this._objectsEqual(e,t)&&this._object
sEqual(t,e)}}}(),Polymer.StyleDefaults=function(){var e=Polymer.StyleProperties,
t=Polymer.StyleCache,n=Polymer.Settings.useNativeCSSProperties,r={_styles:[],_pr
operties:null,customStyle:{},_styleCache:new t,_element:Polymer.DomApi.wrap(docu
ment.documentElement),addStyle:function(e){this._styles.push(e),this._properties
=null},get _styleProperties(){return this._properties||(e.decorateStyles(this._s
tyles,this),this._styles._scopeStyleProperties=null,this._properties=e.hostAndRo
otPropertiesForScope(this).rootProps,e.mixinCustomStyle(this._properties,this.cu
stomStyle),e.reify(this._properties)),this._properties},hasStyleProperties:funct
ion(){return Boolean(this._properties)},_needsStyleProperties:function(){},_comp
uteStyleProperties:function(){return this._styleProperties},updateStyles:functio
n(t){this._properties=null,t&&Polymer.Base.mixin(this.customStyle,t),this._style
Cache.clear();for(var r,s=0;s<this._styles.length;s++)r=this._styles[s],r=r.__im
portElement||r,r._apply();n&&e.updateNativeStyleProperties(document.documentElem
ent,this.customStyle)}};return r}(),function(){"use strict";var e=Polymer.Base.s
erializeValueToAttribute,t=Polymer.StyleProperties,n=Polymer.StyleTransformer,r=
Polymer.StyleDefaults,s=Polymer.Settings.useNativeShadow,i=Polymer.Settings.useN
ativeCSSProperties;Polymer.Base._addFeature({_prepStyleProperties:function(){i||
(this._ownStylePropertyNames=this._styles&&this._styles.length?t.decorateStyles(
this._styles,this):null); | 3 delete this[t])},_configureProperties:function(e,t){for(var n in e){var r=e[n];i
f(void 0!==r.value){var s=r.value;"function"==typeof s&&(s=s.call(this,this._con
fig)),t[n]=s}}},_distributeConfig:function(e){var t=this._propertyEffects;if(t)f
or(var n in e){var r=t[n];if(r)for(var s,i=0,o=r.length;i<o&&(s=r[i]);i++)if("an
notation"===s.kind){var a=this._nodes[s.effect.index],l=s.effect.propertyName,c=
"attribute"==s.effect.kind,h=a._propertyEffects&&a._propertyEffects[l];if(a._con
figValue&&(h||!c)){var u=n===s.effect.value?e[n]:this._get(s.effect.value,e);u=t
his._computeFinalAnnotationValue(a,l,u,s.effect),c&&(u=a.deserialize(this.serial
ize(u),a._propertyInfo[l].type)),a._configValue(l,u)}}}},_afterClientsReady:func
tion(){this._executeStaticEffects(),this._applyConfig(this._config,this._aboveCo
nfig),this._flushHandlers()},_applyConfig:function(e,t){for(var n in e)void 0===
this[n]&&this.__setProperty(n,e[n],n in t)},_notifyListener:function(e,t){if(!Po
lymer.Bind._isEventBogus(t,t.target)){var n,r;if(t.detail&&(n=t.detail.value,r=t
.detail.path),this._clientsReadied)return e.call(this,t.target,n,r);this._queueH
andler([e,t.target,n,r])}},_queueHandler:function(e){this._handlers.push(e)},_fl
ushHandlers:function(){for(var e,t=this._handlers,n=0,r=t.length;n<r&&(e=t[n]);n
++)e[0].call(this,e[1],e[2],e[3]);this._handlers=[]}})}(),function(){"use strict
";var e=Polymer.Path;Polymer.Base._addFeature({notifyPath:function(e,t,n){var r=
{},s=this._get(e,this,r);1===arguments.length&&(t=s),r.path&&this._notifyPath(r.
path,t,n)},_notifyPath:function(e,t,n){var r=this._propertySetter(e,t);if(r!==t&
&(r===r||t===t))return this._pathEffector(e,t),n||this._notifyPathUp(e,t),!0},_g
etPathParts:function(e){if(Array.isArray(e)){for(var t=[],n=0;n<e.length;n++)for
(var r=e[n].toString().split("."),s=0;s<r.length;s++)t.push(r[s]);return t}retur
n e.toString().split(".")},set:function(e,t,n){var r,s=n||this,i=this._getPathPa
rts(e),o=i[i.length-1];if(i.length>1){for(var a=0;a<i.length-1;a++){var l=i[a];i
f(r&&"#"==l[0]?s=Polymer.Collection.get(r).getItem(l):(s=s[l],r&&parseInt(l,10)=
=l&&(i[a]=Polymer.Collection.get(r).getKey(s))),!s)return;r=Array.isArray(s)?s:n
ull}if(r){var c,h,u=Polymer.Collection.get(r);"#"==o[0]?(h=o,c=u.getItem(h),o=r.
indexOf(c),u.setItem(h,t)):parseInt(o,10)==o&&(c=s[o],h=u.getKey(c),i[a]=h,u.set
Item(h,t))}s[o]=t,n||this._notifyPath(i.join("."),t)}else s[e]=t},get:function(e
,t){return this._get(e,t)},_get:function(e,t,n){for(var r,s=t||this,i=this._getP
athParts(e),o=0;o<i.length;o++){if(!s)return;var a=i[o];r&&"#"==a[0]?s=Polymer.C
ollection.get(r).getItem(a):(s=s[a],n&&r&&parseInt(a,10)==a&&(i[o]=Polymer.Colle
ction.get(r).getKey(s))),r=Array.isArray(s)?s:null}return n&&(n.path=i.join(".")
),s},_pathEffector:function(t,n){var r=e.root(t),s=this._propertyEffects&&this._
propertyEffects[r];if(s)for(var i,o=0;o<s.length&&(i=s[o]);o++){var a=i.pathFn;a
&&a.call(this,t,n,i.effect)}this._boundPaths&&this._notifyBoundPaths(t,n)},_anno
tationPathEffect:function(t,n,r){if(e.matches(r.value,!1,t))Polymer.Bind._annota
tionEffect.call(this,t,n,r);else if(!r.negate&&e.isDescendant(r.value,t)){var s=
this._nodes[r.index];if(s&&s._notifyPath){var i=e.translate(r.value,r.name,t);s.
_notifyPath(i,n,!0)}}},_complexObserverPathEffect:function(t,n,r){e.matches(r.tr
igger.name,r.trigger.wildcard,t)&&Polymer.Bind._complexObserverEffect.call(this,
t,n,r)},_computePathEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wi
ldcard,t)&&Polymer.Bind._computeEffect.call(this,t,n,r)},_annotatedComputationPa
thEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wildcard,t)&&Polymer
.Bind._annotatedComputationEffect.call(this,t,n,r)},linkPaths:function(e,t){this
._boundPaths=this._boundPaths||{},t?this._boundPaths[e]=t:this.unlinkPaths(e)},u
nlinkPaths:function(e){this._boundPaths&&delete this._boundPaths[e]},_notifyBoun
dPaths:function(t,n){for(var r in this._boundPaths){var s=this._boundPaths[r];e.
isDescendant(r,t)?this._notifyPath(e.translate(r,s,t),n):e.isDescendant(s,t)&&th
is._notifyPath(e.translate(s,r,t),n)}},_notifyPathUp:function(t,n){var r=e.root(
t),s=Polymer.CaseMap.camelToDashCase(r),i=s+this._EVENT_CHANGED;this.fire(i,{pat
h:t,value:n},{bubbles:!1,_useCache:!0})},_EVENT_CHANGED:"-changed",notifySplices
:function(e,t){var n={},r=this._get(e,this,n);this._notifySplices(r,n.path,t)},_
notifySplices:function(e,t,n){var r={keySplices:Polymer.Collection.applySplices(
e,n),indexSplices:n},s=t+".splices";this._notifyPath(s,r),this._notifyPath(t+".l
ength",e.length),this.__data__[s]={keySplices:null,indexSplices:null}},_notifySp
lice:function(e,t,n,r,s){this._notifySplices(e,t,[{index:n,addedCount:r,removed:
s,object:e,type:"splice"}])},push:function(e){var t={},n=this._get(e,this,t),r=A
rray.prototype.slice.call(arguments,1),s=n.length,i=n.push.apply(n,r);return r.l
ength&&this._notifySplice(n,t.path,s,r.length,[]),i},pop:function(e){var t={},n=
this._get(e,this,t),r=Boolean(n.length),s=Array.prototype.slice.call(arguments,1
),i=n.pop.apply(n,s);return r&&this._notifySplice(n,t.path,n.length,0,[i]),i},sp
lice:function(e,t){var n={},r=this._get(e,this,n);t=t<0?r.length-Math.floor(-t):
Math.floor(t),t||(t=0);var s=Array.prototype.slice.call(arguments,1),i=r.splice.
apply(r,s),o=Math.max(s.length-2,0);return(o||i.length)&&this._notifySplice(r,n.
path,t,o,i),i},shift:function(e){var t={},n=this._get(e,this,t),r=Boolean(n.leng
th),s=Array.prototype.slice.call(arguments,1),i=n.shift.apply(n,s);return r&&thi
s._notifySplice(n,t.path,0,0,[i]),i},unshift:function(e){var t={},n=this._get(e,
this,t),r=Array.prototype.slice.call(arguments,1),s=n.unshift.apply(n,r);return
r.length&&this._notifySplice(n,t.path,0,r.length,[]),s},prepareModelNotifyPath:f
unction(e){this.mixin(e,{fire:Polymer.Base.fire,_getEvent:Polymer.Base._getEvent
,__eventCache:Polymer.Base.__eventCache,notifyPath:Polymer.Base.notifyPath,_get:
Polymer.Base._get,_EVENT_CHANGED:Polymer.Base._EVENT_CHANGED,_notifyPath:Polymer
.Base._notifyPath,_notifyPathUp:Polymer.Base._notifyPathUp,_pathEffector:Polymer
.Base._pathEffector,_annotationPathEffect:Polymer.Base._annotationPathEffect,_co
mplexObserverPathEffect:Polymer.Base._complexObserverPathEffect,_annotatedComput
ationPathEffect:Polymer.Base._annotatedComputationPathEffect,_computePathEffect:
Polymer.Base._computePathEffect,_notifyBoundPaths:Polymer.Base._notifyBoundPaths
,_getPathParts:Polymer.Base._getPathParts})}})}(),Polymer.Base._addFeature({reso
lveUrl:function(e){var t=Polymer.DomModule.import(this.is),n="";if(t){var r=t.ge
tAttribute("assetpath")||"";n=Polymer.ResolveUrl.resolveUrl(r,t.ownerDocument.ba
seURI)}return Polymer.ResolveUrl.resolveUrl(e,n)}}),Polymer.CssParse=function(){
return{parse:function(e){return e=this._clean(e),this._parseCss(this._lex(e),e)}
,_clean:function(e){return e.replace(this._rx.comments,"").replace(this._rx.port
,"")},_lex:function(e){for(var t={start:0,end:e.length},n=t,r=0,s=e.length;r<s;r
++)switch(e[r]){case this.OPEN_BRACE:n.rules||(n.rules=[]);var i=n,o=i.rules[i.r
ules.length-1];n={start:r+1,parent:i,previous:o},i.rules.push(n);break;case this
.CLOSE_BRACE:n.end=r+1,n=n.parent||t}return t},_parseCss:function(e,t){var n=t.s
ubstring(e.start,e.end-1);if(e.parsedCssText=e.cssText=n.trim(),e.parent){var r=
e.previous?e.previous.end:e.parent.start;n=t.substring(r,e.start-1),n=this._expa
ndUnicodeEscapes(n),n=n.replace(this._rx.multipleSpaces," "),n=n.substring(n.las
tIndexOf(";")+1);var s=e.parsedSelector=e.selector=n.trim();e.atRule=0===s.index
Of(this.AT_START),e.atRule?0===s.indexOf(this.MEDIA_START)?e.type=this.types.MED
IA_RULE:s.match(this._rx.keyframesRule)&&(e.type=this.types.KEYFRAMES_RULE,e.key
framesName=e.selector.split(this._rx.multipleSpaces).pop()):0===s.indexOf(this.V
AR_START)?e.type=this.types.MIXIN_RULE:e.type=this.types.STYLE_RULE}var i=e.rule
s;if(i)for(var o,a=0,l=i.length;a<l&&(o=i[a]);a++)this._parseCss(o,t);return e},
_expandUnicodeEscapes:function(e){return e.replace(/\\([0-9a-f]{1,6})\s/gi,funct
ion(){for(var e=arguments[1],t=6-e.length;t--;)e="0"+e;return"\\"+e})},stringify
:function(e,t,n){n=n||"";var r="";if(e.cssText||e.rules){var s=e.rules;if(s&&!th
is._hasMixinRules(s))for(var i,o=0,a=s.length;o<a&&(i=s[o]);o++)r=this.stringify
(i,t,r);else r=t?e.cssText:this.removeCustomProps(e.cssText),r=r.trim(),r&&(r="
"+r+"\n")}return r&&(e.selector&&(n+=e.selector+" "+this.OPEN_BRACE+"\n"),n+=r,
e.selector&&(n+=this.CLOSE_BRACE+"\n\n")),n},_hasMixinRules:function(e){return 0
===e[0].selector.indexOf(this.VAR_START)},removeCustomProps:function(e){return e
=this.removeCustomPropAssignment(e),this.removeCustomPropApply(e)},removeCustomP
ropAssignment:function(e){return e.replace(this._rx.customProp,"").replace(this.
_rx.mixinProp,"")},removeCustomPropApply:function(e){return e.replace(this._rx.m
ixinApply,"").replace(this._rx.varApply,"")},types:{STYLE_RULE:1,KEYFRAMES_RULE:
7,MEDIA_RULE:4,MIXIN_RULE:1e3},OPEN_BRACE:"{",CLOSE_BRACE:"}",_rx:{comments:/\/\
*[^*]*\*+([^\/*][^*]*\*+)*\//gim,port:/@import[^;]*;/gim,customProp:/(?:^[^;\-\s
}]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,mixinProp:/(?:^[^;\-\s}]+)?--[^;{}]*?:[^
{};]*?{[^}]*?}(?:[;\n]|$)?/gim,mixinApply:/@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/
gim,varApply:/[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,keyframesRule:/^@[^\s]*
keyframes/,multipleSpaces:/\s+/g},VAR_START:"--",MEDIA_START:"@media",AT_START:"
@"}}(),Polymer.StyleUtil=function(){var e=Polymer.Settings;return{NATIVE_VARIABL
ES:Polymer.Settings.useNativeCSSProperties,MODULE_STYLES_SELECTOR:"style, link[r
el=import][type~=css], template",INCLUDE_ATTR:"include",toCssText:function(e,t){
return"string"==typeof e&&(e=this.parser.parse(e)),t&&this.forEachRule(e,t),this
.parser.stringify(e,this.NATIVE_VARIABLES)},forRulesInStyles:function(e,t,n){if(
e)for(var r,s=0,i=e.length;s<i&&(r=e[s]);s++)this.forEachRuleInStyle(r,t,n)},for
ActiveRulesInStyles:function(e,t,n){if(e)for(var r,s=0,i=e.length;s<i&&(r=e[s]);
s++)this.forEachRuleInStyle(r,t,n,!0)},rulesForStyle:function(e){return!e.__cssR
ules&&e.textContent&&(e.__cssRules=this.parser.parse(e.textContent)),e.__cssRule
s},isKeyframesSelector:function(e){return e.parent&&e.parent.type===this.ruleTyp
es.KEYFRAMES_RULE},forEachRuleInStyle:function(e,t,n,r){var s,i,o=this.rulesForS
tyle(e);t&&(s=function(n){t(n,e)}),n&&(i=function(t){n(t,e)}),this.forEachRule(o
,s,i,r)},forEachRule:function(e,t,n,r){if(e){var s=!1;if(r&&e.type===this.ruleTy
pes.MEDIA_RULE){var i=e.selector.match(this.rx.MEDIA_MATCH);i&&(window.matchMedi
a(i[1]).matches||(s=!0))}e.type===this.ruleTypes.STYLE_RULE?t(e):n&&e.type===thi
s.ruleTypes.KEYFRAMES_RULE?n(e):e.type===this.ruleTypes.MIXIN_RULE&&(s=!0);var o
=e.rules;if(o&&!s)for(var a,l=0,c=o.length;l<c&&(a=o[l]);l++)this.forEachRule(a,
t,n,r)}},applyCss:function(e,t,n,r){var s=this.createScopeStyle(e,t);return this
.applyStyle(s,n,r)},applyStyle:function(e,t,n){t=t||document.head;var r=n&&n.nex
tSibling||t.firstChild;return this.__lastHeadApplyNode=e,t.insertBefore(e,r)},cr
eateScopeStyle:function(e,t){var n=document.createElement("style");return t&&n.s
etAttribute("scope",t),n.textContent=e,n},__lastHeadApplyNode:null,applyStylePla
ceHolder:function(e){var t=document.createComment(" Shady DOM styles for "+e+" "
),n=this.__lastHeadApplyNode?this.__lastHeadApplyNode.nextSibling:null,r=documen
t.head;return r.insertBefore(t,n||r.firstChild),this.__lastHeadApplyNode=t,t},cs
sFromModules:function(e,t){for(var n=e.trim().split(" "),r="",s=0;s<n.length;s++
)r+=this.cssFromModule(n[s],t);return r},cssFromModule:function(e,t){var n=Polym
er.DomModule.import(e);return n&&!n._cssText&&(n._cssText=this.cssFromElement(n)
),!n&&t&&console.warn("Could not find style data in module named",e),n&&n._cssTe
xt||""},cssFromElement:function(e){for(var t,n="",r=e.content||e,s=Polymer.TreeA
pi.arrayCopy(r.querySelectorAll(this.MODULE_STYLES_SELECTOR)),i=0;i<s.length;i++
)if(t=s[i],"template"===t.localName)t.hasAttribute("preserve-content")||(n+=this
.cssFromElement(t));else if("style"===t.localName){var o=t.getAttribute(this.INC
LUDE_ATTR);o&&(n+=this.cssFromModules(o,!0)),t=t.__appliedElement||t,t.parentNod
e.removeChild(t),n+=this.resolveCss(t.textContent,e.ownerDocument)}else t.import
&&t.import.body&&(n+=this.resolveCss(t.import.body.textContent,t.import));return
n},isTargetedBuild:function(t){return e.useNativeShadow?"shadow"===t:"shady"===
t},cssBuildTypeForModule:function(e){var t=Polymer.DomModule.import(e);if(t)retu
rn this.getCssBuildType(t)},getCssBuildType:function(e){return e.getAttribute("c
ss-build")},_findMatchingParen:function(e,t){for(var n=0,r=t,s=e.length;r<s;r++)
switch(e[r]){case"(":n++;break;case")":if(0===--n)return r}return-1},processVari
ableAndFallback:function(e,t){var n=e.indexOf("var(");if(n===-1)return t(e,"",""
,"");var r=this._findMatchingParen(e,n+3),s=e.substring(n+4,r),i=e.substring(0,n
),o=this.processVariableAndFallback(e.substring(r+1),t),a=s.indexOf(",");if(a===
-1)return t(i,s.trim(),"",o);var l=s.substring(0,a).trim(),c=s.substring(a+1).tr
im();return t(i,l,c,o)},rx:{VAR_ASSIGN:/(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:([^;
{]*)|{([^}]*)})(?:(?=[;\s}])|$)/gi,MIXIN_MATCH:/(?:^|\W+)@apply\s*\(?([^);\n]*)\
)?/gi,VAR_CONSUMED:/(--[\w-]+)\s*([:,;)]|$)/gi,ANIMATION_MATCH:/(animation\s*:)|
(animation-name\s*:)/,MEDIA_MATCH:/@media[^(]*(\([^)]*\))/,IS_VAR:/^--/,BRACKETE
D:/\{[^}]*\}/g,HOST_PREFIX:"(?:^|[^.#[:])",HOST_SUFFIX:"($|[.:[\\s>+~])"},resolv
eCss:Polymer.ResolveUrl.resolveCss,parser:Polymer.CssParse,ruleTypes:Polymer.Css
Parse.types}}(),Polymer.StyleTransformer=function(){var e=Polymer.StyleUtil,t=Po
lymer.Settings,n={dom:function(e,t,n,r){this._transformDom(e,t||"",n,r)},_transf
ormDom:function(e,t,n,r){e.setAttribute&&this.element(e,t,n,r);for(var s=Polymer
.dom(e).childNodes,i=0;i<s.length;i++)this._transformDom(s[i],t,n,r)},element:fu
nction(e,t,n,s){if(n)s?e.removeAttribute(r):e.setAttribute(r,t);else if(t)if(e.c
lassList)s?(e.classList.remove(r),e.classList.remove(t)):(e.classList.add(r),e.c
lassList.add(t));else if(e.getAttribute){var i=e.getAttribute(g);s?i&&e.setAttri
bute(g,i.replace(r,"").replace(t,"")):e.setAttribute(g,(i?i+" ":"")+r+" "+t)}},e
lementStyles:function(n,r){var s,i=n._styles,o="",a=n.__cssBuild,l=t.useNativeSh
adow||"shady"===a;if(l){var h=this;s=function(e){e.selector=h._slottedToContent(
e.selector),e.selector=e.selector.replace(c,":host > *"),r&&r(e)}}for(var u,f=0,
p=i.length;f<p&&(u=i[f]);f++){var _=e.rulesForStyle(u);o+=l?e.toCssText(_,s):thi
s.css(_,n.is,n.extends,r,n._scopeCssViaAttr)+"\n\n"}return o.trim()},css:functio
n(t,n,r,s,i){var o=this._calcHostScope(n,r);n=this._calcElementScope(n,i);var a=
this;return e.toCssText(t,function(e){e.isScoped||(a.rule(e,n,o),e.isScoped=!0),
s&&s(e,n,o)})},_calcElementScope:function(e,t){return e?t?m+e+y:d+e:""},_calcHos
tScope:function(e,t){return t?"[is="+e+"]":e},rule:function(e,t,n){this._transfo
rmRule(e,this._transformComplexSelector,t,n)},_transformRule:function(e,t,n,r){e
.selector=e.transformedSelector=this._transformRuleCss(e,t,n,r)},_transformRuleC
ss:function(t,n,r,s){var o=t.selector.split(i);if(!e.isKeyframesSelector(t))for(
var a,l=0,c=o.length;l<c&&(a=o[l]);l++)o[l]=n.call(this,a,r,s);return o.join(i)}
,_transformComplexSelector:function(e,t,n){var r=!1,s=!1,a=this;return e=e.trim(
),e=this._slottedToContent(e),e=e.replace(c,":host > *"),e=e.replace(P,l+" $1"),
e=e.replace(o,function(e,i,o){if(r)o=o.replace(_," ");else{var l=a._transformCom
poundSelector(o,i,t,n);r=r||l.stop,s=s||l.hostContext,i=l.combinator,o=l.value}r
eturn i+o}),s&&(e=e.replace(f,function(e,t,r,s){return t+r+" "+n+s+i+" "+t+n+r+s
})),e},_transformCompoundSelector:function(e,t,n,r){var s=e.search(_),i=!1;e.ind
exOf(u)>=0?i=!0:e.indexOf(l)>=0?e=this._transformHostSelector(e,r):0!==s&&(e=n?t
his._transformSimpleSelector(e,n):e),e.indexOf(p)>=0&&(t="");var o;return s>=0&&
(e=e.replace(_," "),o=!0),{value:e,combinator:t,stop:o,hostContext:i}},_transfor
mSimpleSelector:function(e,t){var n=e.split(v);return n[0]+=t,n.join(v)},_transf
ormHostSelector:function(e,t){var n=e.match(h),r=n&&n[2].trim()||"";if(r){if(r[0
].match(a))return e.replace(h,function(e,n,r){return t+r});var s=r.split(a)[0];r
eturn s===t?r:S}return e.replace(l,t)},documentRule:function(e){e.selector=e.par
sedSelector,this.normalizeRootSelector(e),t.useNativeShadow||this._transformRule
(e,this._transformDocumentSelector)},normalizeRootSelector:function(e){e.selecto
r=e.selector.replace(c,"html")},_transformDocumentSelector:function(e){return e.
match(_)?this._transformComplexSelector(e,s):this._transformSimpleSelector(e.tri
m(),s)},_slottedToContent:function(e){return e.replace(C,p+"> $1")},SCOPE_NAME:"
style-scope"},r=n.SCOPE_NAME,s=":not(["+r+"]):not(."+r+")",i=",",o=/(^|[\s>+~]+)
((?:\[.+?\]|[^\s>+~=\[])+)/g,a=/[[.:#*]/,l=":host",c=":root",h=/(:host)(?:\(((?:
\([^)(]*\)|[^)(]*)+?)\))/,u=":host-context",f=/(.*)(?::host-context)(?:\(((?:\([
^)(]*\)|[^)(]*)+?)\))(.*)/,p="::content",_=/::content|::shadow|\/deep\//,d=".",m
="["+r+"~=",y="]",v=":",g="class",P=new RegExp("^("+p+")"),S="should_not_match",
C=/(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/g;return n}(),Polymer.StyleExt
ends=function(){var e=Polymer.StyleUtil;return{hasExtends:function(e){return Boo
lean(e.match(this.rx.EXTEND))},transform:function(t){var n=e.rulesForStyle(t),r=
this;return e.forEachRule(n,function(e){if(r._mapRuleOntoParent(e),e.parent)for(
var t;t=r.rx.EXTEND.exec(e.cssText);){var n=t[1],s=r._findExtendor(n,e);s&&r._ex
tendRule(e,s)}e.cssText=e.cssText.replace(r.rx.EXTEND,"")}),e.toCssText(n,functi
on(e){e.selector.match(r.rx.STRIP)&&(e.cssText="")},!0)},_mapRuleOntoParent:func
tion(e){if(e.parent){for(var t,n=e.parent.map||(e.parent.map={}),r=e.selector.sp
lit(","),s=0;s<r.length;s++)t=r[s],n[t.trim()]=e;return n}},_findExtendor:functi
on(e,t){return t.parent&&t.parent.map&&t.parent.map[e]||this._findExtendor(e,t.p
arent)},_extendRule:function(e,t){e.parent!==t.parent&&this._cloneAndAddRuleToPa
rent(t,e.parent),e.extends=e.extends||[],e.extends.push(t),t.selector=t.selector
.replace(this.rx.STRIP,""),t.selector=(t.selector&&t.selector+",\n")+e.selector,
t.extends&&t.extends.forEach(function(t){this._extendRule(e,t)},this)},_cloneAnd
AddRuleToParent:function(e,t){e=Object.create(e),e.parent=t,e.extends&&(e.extend
s=e.extends.slice()),t.rules.push(e)},rx:{EXTEND:/@extends\(([^)]*)\)\s*?;/gim,S
TRIP:/%[^,]*$/}}}(),Polymer.ApplyShim=function(){"use strict";function e(e,t){e=
e.trim(),m[e]={properties:t,dependants:{}}}function t(e){return e=e.trim(),m[e]}
function n(e,t){var n=_.exec(t);return n&&(t=n[1]?y._getInitialValueForProperty(
e):"apply-shim-inherit"),t}function r(e){for(var t,r,s,i,o=e.split(";"),a={},l=0
;l<o.length;l++)s=o[l],s&&(i=s.split(":"),i.length>1&&(t=i[0].trim(),r=n(t,i.sli
ce(1).join(":")),a[t]=r));return a}function s(e){var t=y.__currentElementProto,n
=t&&t.is;for(var r in e.dependants)r!==n&&(e.dependants[r].__applyShimInvalid=!0
)}function i(n,i,o,a){if(o&&c.processVariableAndFallback(o,function(e,n){n&&t(n)
&&(a="@apply "+n+";")}),!a)return n;var h=l(a),u=n.slice(0,n.indexOf("--")),f=r(
h),p=f,_=t(i),m=_&&_.properties;m?(p=Object.create(m),p=Polymer.Base.mixin(p,f))
:e(i,p);var y,v,g=[],P=!1;for(y in p)v=f[y],void 0===v&&(v="initial"),!m||y in m
||(P=!0),g.push(i+d+y+": "+v);return P&&s(_),_&&(_.properties=p),o&&(u=n+";"+u),
u+g.join("; ")+";"}function o(e,t,n){return"var("+t+",var("+n+"))"}function a(n,
r){n=n.replace(p,"");var s=[],i=t(n);if(i||(e(n,{}),i=t(n)),i){var o=y.__current
ElementProto;o&&(i.dependants[o.is]=o);var a,l,c;for(a in i.properties)c=r&&r[a]
,l=[a,": var(",n,d,a],c&&l.push(",",c),l.push(")"),s.push(l.join(""))}return s.j
oin("; ")}function l(e){for(var t;t=h.exec(e);){var n=t[0],s=t[1],i=t.index,o=i+
n.indexOf("@apply"),l=i+n.length,c=e.slice(0,o),u=e.slice(l),f=r(c),p=a(s,f);e=[
c,p,u].join(""),h.lastIndex=i+p.length}return e}var c=Polymer.StyleUtil,h=c.rx.M
IXIN_MATCH,u=c.rx.VAR_ASSIGN,f=/var\(\s*(--[^,]*),\s*(--[^)]*)\)/g,p=/;\s*/m,_=/
^\s*(initial)|(inherit)\s*$/,d="_-_",m={},y={_measureElement:null,_map:m,_separa
tor:d,transform:function(e,t){this.__currentElementProto=t,c.forRulesInStyles(e,
this._boundFindDefinitions),c.forRulesInStyles(e,this._boundFindApplications),t&
&(t.__applyShimInvalid=!1),this.__currentElementProto=null},_findDefinitions:fun
ction(e){var t=e.parsedCssText;t=t.replace(f,o),t=t.replace(u,i),e.cssText=t,":r
oot"===e.selector&&(e.selector=":host > *")},_findApplications:function(e){e.css
Text=l(e.cssText)},transformRule:function(e){this._findDefinitions(e),this._find
Applications(e)},_getInitialValueForProperty:function(e){return this._measureEle
ment||(this._measureElement=document.createElement("meta"),this._measureElement.
style.all="initial",document.head.appendChild(this._measureElement)),window.getC
omputedStyle(this._measureElement).getPropertyValue(e)}};return y._boundTransfor
mRule=y.transformRule.bind(y),y._boundFindDefinitions=y._findDefinitions.bind(y)
,y._boundFindApplications=y._findApplications.bind(y),y}(),function(){var e=Poly
mer.Base._prepElement,t=Polymer.Settings.useNativeShadow,n=Polymer.StyleUtil,r=P
olymer.StyleTransformer,s=Polymer.StyleExtends,i=Polymer.ApplyShim,o=Polymer.Set
tings;Polymer.Base._addFeature({_prepElement:function(t){this._encapsulateStyle&
&"shady"!==this.__cssBuild&&r.element(t,this.is,this._scopeCssViaAttr),e.call(th
is,t)},_prepStyles:function(){void 0===this._encapsulateStyle&&(this._encapsulat
eStyle=!t),t||(this._scopeStyle=n.applyStylePlaceHolder(this.is)),this.__cssBuil
d=n.cssBuildTypeForModule(this.is)},_prepShimStyles:function(){if(this._template
){var e=n.isTargetedBuild(this.__cssBuild);if(o.useNativeCSSProperties&&"shadow"
===this.__cssBuild&&e)return;this._styles=this._styles||this._collectStyles(),o.
useNativeCSSProperties&&!this.__cssBuild&&i.transform(this._styles,this);var s=o
.useNativeCSSProperties&&e?this._styles.length&&this._styles[0].textContent.trim
():r.elementStyles(this);this._prepStyleProperties(),!this._needsStyleProperties
()&&s&&n.applyCss(s,this.is,t?this._template.content:null,this._scopeStyle)}else
this._styles=[]},_collectStyles:function(){var e=[],t="",r=this.styleModules;if
(r)for(var i,o=0,a=r.length;o<a&&(i=r[o]);o++)t+=n.cssFromModule(i);t+=n.cssFrom
Module(this.is);var l=this._template&&this._template.parentNode;if(!this._templa
te||l&&l.id.toLowerCase()===this.is||(t+=n.cssFromElement(this._template)),t){va
r c=document.createElement("style");c.textContent=t,s.hasExtends(c.textContent)&
&(t=s.transform(c)),e.push(c)}return e},_elementAdd:function(e){this._encapsulat
eStyle&&(e.__styleScoped?e.__styleScoped=!1:r.dom(e,this.is,this._scopeCssViaAtt
r))},_elementRemove:function(e){this._encapsulateStyle&&r.dom(e,this.is,this._sc
opeCssViaAttr,!0)},scopeSubtree:function(e,n){if(!t){var r=this,s=function(e){if
(e.nodeType===Node.ELEMENT_NODE){var t=e.getAttribute("class");e.setAttribute("c
lass",r._scopeElementClass(e,t));for(var n,s=e.querySelectorAll("*"),i=0;i<s.len
gth&&(n=s[i]);i++)t=n.getAttribute("class"),n.setAttribute("class",r._scopeEleme
ntClass(n,t))}};if(s(e),n){var i=new MutationObserver(function(e){for(var t,n=0;
n<e.length&&(t=e[n]);n++)if(t.addedNodes)for(var r=0;r<t.addedNodes.length;r++)s
(t.addedNodes[r])});return i.observe(e,{childList:!0,subtree:!0}),i}}}})}(),Poly
mer.StyleProperties=function(){"use strict";function e(e,t){var n=parseInt(e/32)
,r=1<<e%32;t[n]=(t[n]||0)|r}var t=Polymer.DomApi.matchesSelector,n=Polymer.Style
Util,r=Polymer.StyleTransformer,s=navigator.userAgent.match("Trident"),i=Polymer
.Settings;return{decorateStyles:function(e,t){var s=this,i={},o=[],a=0,l=r._calc
HostScope(t.is,t.extends);n.forRulesInStyles(e,function(e,r){s.decorateRule(e),e
.index=a++,s.whenHostOrRootRule(t,e,r,function(r){if(e.parent.type===n.ruleTypes
.MEDIA_RULE&&(t.__notStyleScopeCacheable=!0),r.isHost){var s=r.selector.split("
").some(function(e){return 0===e.indexOf(l)&&e.length!==l.length});t.__notStyleS
copeCacheable=t.__notStyleScopeCacheable||s}}),s.collectPropertiesInCssText(e.pr
opertyInfo.cssText,i)},function(e){o.push(e)}),e._keyframes=o;var c=[];for(var h
in i)c.push(h);return c},decorateRule:function(e){if(e.propertyInfo)return e.pr
opertyInfo;var t={},n={},r=this.collectProperties(e,n);return r&&(t.properties=n
,e.rules=null),t.cssText=this.collectCssText(e),e.propertyInfo=t,t},collectPrope
rties:function(e,t){var n=e.propertyInfo;if(!n){for(var r,s,i,o=this.rx.VAR_ASSI
GN,a=e.parsedCssText;r=o.exec(a);)s=(r[2]||r[3]).trim(),"inherit"!==s&&(t[r[1].t
rim()]=s),i=!0;return i}if(n.properties)return Polymer.Base.mixin(t,n.properties
),!0},collectCssText:function(e){return this.collectConsumingCssText(e.parsedCss
Text)},collectConsumingCssText:function(e){return e.replace(this.rx.BRACKETED,""
).replace(this.rx.VAR_ASSIGN,"")},collectPropertiesInCssText:function(e,t){for(v
ar n;n=this.rx.VAR_CONSUMED.exec(e);){var r=n[1];":"!==n[2]&&(t[r]=!0)}},reify:f
unction(e){for(var t,n=Object.getOwnPropertyNames(e),r=0;r<n.length;r++)t=n[r],e
[t]=this.valueForProperty(e[t],e)},valueForProperty:function(e,t){if(e)if(e.inde
xOf(";")>=0)e=this.valueForProperties(e,t);else{var r=this,s=function(e,n,s,i){v
ar o=r.valueForProperty(t[n],t);return o&&"initial"!==o?"apply-shim-inherit"===o
&&(o="inherit"):o=r.valueForProperty(t[s]||s,t)||s,e+(o||"")+i};e=n.processVaria
bleAndFallback(e,s)}return e&&e.trim()||""},valueForProperties:function(e,t){for
(var n,r,s=e.split(";"),i=0;i<s.length;i++)if(n=s[i]){if(this.rx.MIXIN_MATCH.las
tIndex=0,r=this.rx.MIXIN_MATCH.exec(n))n=this.valueForProperty(t[r[1]],t);else{v
ar o=n.indexOf(":");if(o!==-1){var a=n.substring(o);a=a.trim(),a=this.valueForPr
operty(a,t)||a,n=n.substring(0,o)+a}}s[i]=n&&n.lastIndexOf(";")===n.length-1?n.s
lice(0,-1):n||""}return s.join(";")},applyProperties:function(e,t){var n="";e.pr
opertyInfo||this.decorateRule(e),e.propertyInfo.cssText&&(n=this.valueForPropert
ies(e.propertyInfo.cssText,t)),e.cssText=n},applyKeyframeTransforms:function(e,t
){var n=e.cssText,r=e.cssText;if(null==e.hasAnimations&&(e.hasAnimations=this.rx
.ANIMATION_MATCH.test(n)),e.hasAnimations){var s;if(null==e.keyframeNamesToTrans
form){e.keyframeNamesToTransform=[];for(var i in t)s=t[i],r=s(n),n!==r&&(n=r,e.k
eyframeNamesToTransform.push(i))}else{for(var o=0;o<e.keyframeNamesToTransform.l
ength;++o)s=t[e.keyframeNamesToTransform[o]],n=s(n);r=n}}e.cssText=r},propertyDa
taFromStyles:function(r,s){var i={},o=this,a=[];return n.forActiveRulesInStyles(
r,function(n){n.propertyInfo||o.decorateRule(n);var r=n.transformedSelector||n.p
arsedSelector;s&&n.propertyInfo.properties&&r&&t.call(s,r)&&(o.collectProperties
(n,i),e(n.index,a))}),{properties:i,key:a}},_rootSelector:/:root|:host\s*>\s*\*/
,_checkRoot:function(e,t){return Boolean(t.match(this._rootSelector))||"html"===
e&&t.indexOf("html")>-1},whenHostOrRootRule:function(e,t,n,s){if(t.propertyInfo|
|self.decorateRule(t),t.propertyInfo.properties){var o=e.is?r._calcHostScope(e.i
s,e.extends):"html",a=t.parsedSelector,l=this._checkRoot(o,a),c=!l&&0===a.indexO
f(":host"),h=e.__cssBuild||n.__cssBuild;if("shady"===h&&(l=a===o+" > *."+o||a.in
dexOf("html")>-1,c=!l&&0===a.indexOf(o)),l||c){var u=o;c&&(i.useNativeShadow&&!t
.transformedSelector&&(t.transformedSelector=r._transformRuleCss(t,r._transformC
omplexSelector,e.is,o)),u=t.transformedSelector||t.parsedSelector),l&&"html"===o
&&(u=t.transformedSelector||t.parsedSelector),s({selector:u,isHost:c,isRoot:l})}
}},hostAndRootPropertiesForScope:function(e){var r={},s={},i=this;return n.forAc
tiveRulesInStyles(e._styles,function(n,o){i.whenHostOrRootRule(e,n,o,function(o)
{var a=e._element||e;t.call(a,o.selector)&&(o.isHost?i.collectProperties(n,r):i.
collectProperties(n,s))})}),{rootProps:s,hostProps:r}},transformStyles:function(
e,t,n){var s=this,o=r._calcHostScope(e.is,e.extends),a=e.extends?"\\"+o.slice(0,
-1)+"\\]":o,l=new RegExp(this.rx.HOST_PREFIX+a+this.rx.HOST_SUFFIX),c=this._elem
entKeyframeTransforms(e,n);return r.elementStyles(e,function(r){s.applyPropertie
s(r,t),i.useNativeShadow||Polymer.StyleUtil.isKeyframesSelector(r)||!r.cssText||
(s.applyKeyframeTransforms(r,c),s._scopeSelector(r,l,o,e._scopeCssViaAttr,n))})}
,_elementKeyframeTransforms:function(e,t){var n=e._styles._keyframes,r={};if(!i.
useNativeShadow&&n)for(var s=0,o=n[s];s<n.length;o=n[++s])this._scopeKeyframes(o
,t),r[o.keyframesName]=this._keyframesRuleTransformer(o);return r},_keyframesRul
eTransformer:function(e){return function(t){return t.replace(e.keyframesNameRx,e
.transformedKeyframesName)}},_scopeKeyframes:function(e,t){e.keyframesNameRx=new
RegExp(e.keyframesName,"g"),e.transformedKeyframesName=e.keyframesName+"-"+t,e.
transformedSelector=e.transformedSelector||e.selector,e.selector=e.transformedSe
lector.replace(e.keyframesName,e.transformedKeyframesName)},_scopeSelector:funct
ion(e,t,n,s,i){e.transformedSelector=e.transformedSelector||e.selector;for(var o
,a=e.transformedSelector,l=s?"["+r.SCOPE_NAME+"~="+i+"]":"."+i,c=a.split(","),h=
0,u=c.length;h<u&&(o=c[h]);h++)c[h]=o.match(t)?o.replace(n,l):l+" "+o;e.selector
=c.join(",")},applyElementScopeSelector:function(e,t,n,s){var i=s?e.getAttribute
(r.SCOPE_NAME):e.getAttribute("class")||"",o=n?i.replace(n,t):(i?i+" ":"")+this.
XSCOPE_NAME+" "+t;i!==o&&(s?e.setAttribute(r.SCOPE_NAME,o):e.setAttribute("class
",o))},applyElementStyle:function(e,t,r,o){var a=o?o.textContent||"":this.transf
ormStyles(e,t,r),l=e._customStyle;return l&&!i.useNativeShadow&&l!==o&&(l._useCo
unt--,l._useCount<=0&&l.parentNode&&l.parentNode.removeChild(l)),i.useNativeShad
ow?e._customStyle?(e._customStyle.textContent=a,o=e._customStyle):a&&(o=n.applyC
ss(a,r,e.root,e._scopeStyle)):o?o.parentNode||(s&&a.indexOf("@media")>-1&&(o.tex
tContent=a),n.applyStyle(o,null,e._scopeStyle)):a&&(o=n.applyCss(a,r,null,e._sco
peStyle)),o&&(o._useCount=o._useCount||0,e._customStyle!=o&&o._useCount++,e._cus
tomStyle=o),o},mixinCustomStyle:function(e,t){var n;for(var r in t)n=t[r],(n||0=
==n)&&(e[r]=n)},updateNativeStyleProperties:function(e,t){var n=e.__customStyleP
roperties;if(n)for(var r=0;r<n.length;r++)e.style.removeProperty(n[r]);var s=[];
for(var i in t)null!==t[i]&&(e.style.setProperty(i,t[i]),s.push(i));e.__customSt
yleProperties=s},rx:n.rx,XSCOPE_NAME:"x-scope"}}(),function(){Polymer.StyleCache
=function(){this.cache={}},Polymer.StyleCache.prototype={MAX:100,store:function(
e,t,n,r){t.keyValues=n,t.styles=r;var s=this.cache[e]=this.cache[e]||[];s.push(t
),s.length>this.MAX&&s.shift()},retrieve:function(e,t,n){var r=this.cache[e];if(
r)for(var s,i=r.length-1;i>=0;i--)if(s=r[i],n===s.styles&&this._objectsEqual(t,s
.keyValues))return s},clear:function(){this.cache={}},_objectsEqual:function(e,t
){var n,r;for(var s in e)if(n=e[s],r=t[s],!("object"==typeof n&&n?this._objectsS
trictlyEqual(n,r):n===r))return!1;return!Array.isArray(e)||e.length===t.length},
_objectsStrictlyEqual:function(e,t){return this._objectsEqual(e,t)&&this._object
sEqual(t,e)}}}(),Polymer.StyleDefaults=function(){var e=Polymer.StyleProperties,
t=Polymer.StyleCache,n=Polymer.Settings.useNativeCSSProperties,r={_styles:[],_pr
operties:null,customStyle:{},_styleCache:new t,_element:Polymer.DomApi.wrap(docu
ment.documentElement),addStyle:function(e){this._styles.push(e),this._properties
=null},get _styleProperties(){return this._properties||(e.decorateStyles(this._s
tyles,this),this._styles._scopeStyleProperties=null,this._properties=e.hostAndRo
otPropertiesForScope(this).rootProps,e.mixinCustomStyle(this._properties,this.cu
stomStyle),e.reify(this._properties)),this._properties},hasStyleProperties:funct
ion(){return Boolean(this._properties)},_needsStyleProperties:function(){},_comp
uteStyleProperties:function(){return this._styleProperties},updateStyles:functio
n(t){this._properties=null,t&&Polymer.Base.mixin(this.customStyle,t),this._style
Cache.clear();for(var r,s=0;s<this._styles.length;s++)r=this._styles[s],r=r.__im
portElement||r,r._apply();n&&e.updateNativeStyleProperties(document.documentElem
ent,this.customStyle)}};return r}(),function(){"use strict";var e=Polymer.Base.s
erializeValueToAttribute,t=Polymer.StyleProperties,n=Polymer.StyleTransformer,r=
Polymer.StyleDefaults,s=Polymer.Settings.useNativeShadow,i=Polymer.Settings.useN
ativeCSSProperties;Polymer.Base._addFeature({_prepStyleProperties:function(){i||
(this._ownStylePropertyNames=this._styles&&this._styles.length?t.decorateStyles(
this._styles,this):null); |
| 4 },customStyle:null,getComputedStyleValue:function(e){return!i&&this._styleProper
ties&&this._styleProperties[e]||getComputedStyle(this).getPropertyValue(e)},_set
upStyleProperties:function(){this.customStyle={},this._styleCache=null,this._sty
leProperties=null,this._scopeSelector=null,this._ownStyleProperties=null,this._c
ustomStyle=null},_needsStyleProperties:function(){return Boolean(!i&&this._ownSt
ylePropertyNames&&this._ownStylePropertyNames.length)},_validateApplyShim:functi
on(){if(this.__applyShimInvalid){Polymer.ApplyShim.transform(this._styles,this._
_proto__);var e=n.elementStyles(this);if(s){var t=this._template.content.querySe
lector("style");t&&(t.textContent=e)}else{var r=this._scopeStyle&&this._scopeSty
le.nextSibling;r&&(r.textContent=e)}}},_beforeAttached:function(){this._scopeSel
ector&&!this.__stylePropertiesInvalid||!this._needsStyleProperties()||(this.__st
ylePropertiesInvalid=!1,this._updateStyleProperties())},_findStyleHost:function(
){for(var e,t=this;e=Polymer.dom(t).getOwnerRoot();){if(Polymer.isInstance(e.hos
t))return e.host;t=e.host}return r},_updateStyleProperties:function(){var e,n=th
is._findStyleHost();n._styleProperties||n._computeStyleProperties(),n._styleCach
e||(n._styleCache=new Polymer.StyleCache);var r=t.propertyDataFromStyles(n._styl
es,this),i=!this.__notStyleScopeCacheable;i&&(r.key.customStyle=this.customStyle
,e=n._styleCache.retrieve(this.is,r.key,this._styles));var a=Boolean(e);a?this._
styleProperties=e._styleProperties:this._computeStyleProperties(r.properties),th
is._computeOwnStyleProperties(),a||(e=o.retrieve(this.is,this._ownStylePropertie
s,this._styles));var l=Boolean(e)&&!a,c=this._applyStyleProperties(e);a||(c=c&&s
?c.cloneNode(!0):c,e={style:c,_scopeSelector:this._scopeSelector,_stylePropertie
s:this._styleProperties},i&&(r.key.customStyle={},this.mixin(r.key.customStyle,t
his.customStyle),n._styleCache.store(this.is,e,r.key,this._styles)),l||o.store(t
his.is,Object.create(e),this._ownStyleProperties,this._styles))},_computeStylePr
operties:function(e){var n=this._findStyleHost();n._styleProperties||n._computeS
tyleProperties();var r=Object.create(n._styleProperties),s=t.hostAndRootProperti
esForScope(this);this.mixin(r,s.hostProps),e=e||t.propertyDataFromStyles(n._styl
es,this).properties,this.mixin(r,e),this.mixin(r,s.rootProps),t.mixinCustomStyle
(r,this.customStyle),t.reify(r),this._styleProperties=r},_computeOwnStylePropert
ies:function(){for(var e,t={},n=0;n<this._ownStylePropertyNames.length;n++)e=thi
s._ownStylePropertyNames[n],t[e]=this._styleProperties[e];this._ownStyleProperti
es=t},_scopeCount:0,_applyStyleProperties:function(e){var n=this._scopeSelector;
this._scopeSelector=e?e._scopeSelector:this.is+"-"+this.__proto__._scopeCount++;
var r=t.applyElementStyle(this,this._styleProperties,this._scopeSelector,e&&e.st
yle);return s||t.applyElementScopeSelector(this,this._scopeSelector,n,this._scop
eCssViaAttr),r},serializeValueToAttribute:function(t,n,r){if(r=r||this,"class"==
=n&&!s){var i=r===this?this.domHost||this.dataHost:this;i&&(t=i._scopeElementCla
ss(r,t))}r=this.shadyRoot&&this.shadyRoot._hasDistributed?Polymer.dom(r):r,e.cal
l(this,t,n,r)},_scopeElementClass:function(e,t){return s||this._scopeCssViaAttr|
|(t=(t?t+" ":"")+a+" "+this.is+(e._scopeSelector?" "+l+" "+e._scopeSelector:""))
,t},updateStyles:function(e){e&&this.mixin(this.customStyle,e),i?t.updateNativeS
tyleProperties(this,this.customStyle):(this.isAttached?this._needsStylePropertie
s()?this._updateStyleProperties():this._styleProperties=null:this.__stylePropert
iesInvalid=!0,this._styleCache&&this._styleCache.clear(),this._updateRootStyles(
))},_updateRootStyles:function(e){e=e||this.root;for(var t,n=Polymer.dom(e)._que
ry(function(e){return e.shadyRoot||e.shadowRoot}),r=0,s=n.length;r<s&&(t=n[r]);r
++)t.updateStyles&&t.updateStyles()}}),Polymer.updateStyles=function(e){r.update
Styles(e),Polymer.Base._updateRootStyles(document)};var o=new Polymer.StyleCache
;Polymer.customStyleCache=o;var a=n.SCOPE_NAME,l=t.XSCOPE_NAME}(),Polymer.Base._
addFeature({_registerFeatures:function(){this._prepIs(),this._prepConstructor(),
this._prepStyles()},_finishRegisterFeatures:function(){this._prepTemplate(),this
._prepShimStyles(),this._prepAnnotations(),this._prepEffects(),this._prepBehavio
rs(),this._prepPropertyInfo(),this._prepBindings(),this._prepShady()},_prepBehav
ior:function(e){this._addPropertyEffects(e.properties),this._addComplexObserverE
ffects(e.observers),this._addHostAttributes(e.hostAttributes)},_initFeatures:fun
ction(){this._setupGestures(),this._setupConfigure(),this._setupStyleProperties(
),this._setupDebouncers(),this._setupShady(),this._registerHost(),this._template
&&(this._validateApplyShim(),this._poolContent(),this._beginHosting(),this._stam
pTemplate(),this._endHosting(),this._marshalAnnotationReferences()),this._marsha
lInstanceEffects(),this._marshalBehaviors(),this._marshalHostAttributes(),this._
marshalAttributes(),this._tryReady()},_marshalBehavior:function(e){e.listeners&&
this._listenListeners(e.listeners)}}),function(){var e,t=Polymer.StyleProperties
,n=Polymer.StyleUtil,r=Polymer.CssParse,s=Polymer.StyleDefaults,i=Polymer.StyleT
ransformer,o=Polymer.ApplyShim,a=Polymer.Debounce,l=Polymer.Settings;Polymer({is
:"custom-style",extends:"style",_template:null,properties:{include:String},ready
:function(){this.__appliedElement=this.__appliedElement||this,this.__cssBuild=n.
getCssBuildType(this),this.__appliedElement!==this&&(this.__appliedElement.__css
Build=this.__cssBuild),this._tryApply()},attached:function(){this._tryApply()},_
tryApply:function(){if(!this._appliesToDocument&&this.parentNode&&"dom-module"!=
=this.parentNode.localName){this._appliesToDocument=!0;var e=this.__appliedEleme
nt;if(l.useNativeCSSProperties||(this.__needsUpdateStyles=s.hasStyleProperties()
,s.addStyle(e)),e.textContent||this.include)this._apply(!0);else{var t=this,n=ne
w MutationObserver(function(){n.disconnect(),t._apply(!0)});n.observe(e,{childLi
st:!0})}}},_updateStyles:function(){Polymer.updateStyles()},_apply:function(e){v
ar t=this.__appliedElement;if(this.include&&(t.textContent=n.cssFromModules(this
.include,!0)+t.textContent),t.textContent){var r=this.__cssBuild,s=n.isTargetedB
uild(r);if(!l.useNativeCSSProperties||!s){var a=n.rulesForStyle(t);if(s||(n.forE
achRule(a,function(e){i.documentRule(e)}),l.useNativeCSSProperties&&!r&&o.transf
orm([t])),l.useNativeCSSProperties)t.textContent=n.toCssText(a);else{var c=this,
h=function(){c._flushCustomProperties()};e?Polymer.RenderStatus.whenReady(h):h()
}}}},_flushCustomProperties:function(){this.__needsUpdateStyles?(this.__needsUpd
ateStyles=!1,e=a(e,this._updateStyles)):this._applyCustomProperties()},_applyCus
tomProperties:function(){var e=this.__appliedElement;this._computeStylePropertie
s();var s=this._styleProperties,i=n.rulesForStyle(e);i&&(e.textContent=n.toCssTe
xt(i,function(e){var n=e.cssText=e.parsedCssText;e.propertyInfo&&e.propertyInfo.
cssText&&(n=r.removeCustomPropAssignment(n),e.cssText=t.valueForProperties(n,s))
}))}})}(),Polymer.Templatizer={properties:{__hideTemplateChildren__:{observer:"_
showHideChildren"}},_instanceProps:Polymer.nob,_parentPropPrefix:"_parent_",temp
latize:function(e){if(this._templatized=e,e._content||(e._content=e.content),e._
content._ctor)return this.ctor=e._content._ctor,void this._prepParentProperties(
this.ctor.prototype,e);var t=Object.create(Polymer.Base);this._customPrepAnnotat
ions(t,e),this._prepParentProperties(t,e),t._prepEffects(),this._customPrepEffec
ts(t),t._prepBehaviors(),t._prepPropertyInfo(),t._prepBindings(),t._notifyPathUp
=this._notifyPathUpImpl,t._scopeElementClass=this._scopeElementClassImpl,t.liste
n=this._listenImpl,t._showHideChildren=this._showHideChildrenImpl,t.__setPropert
yOrig=this.__setProperty,t.__setProperty=this.__setPropertyImpl;var n=this._cons
tructorImpl,r=function(e,t){n.call(this,e,t)};r.prototype=t,t.constructor=r,e._c
ontent._ctor=r,this.ctor=r},_getRootDataHost:function(){return this.dataHost&&th
is.dataHost._rootDataHost||this.dataHost},_showHideChildrenImpl:function(e){for(
var t=this._children,n=0;n<t.length;n++){var r=t[n];Boolean(e)!=Boolean(r.__hide
TemplateChildren__)&&(r.nodeType===Node.TEXT_NODE?e?(r.__polymerTextContent__=r.
textContent,r.textContent=""):r.textContent=r.__polymerTextContent__:r.style&&(e
?(r.__polymerDisplay__=r.style.display,r.style.display="none"):r.style.display=r
.__polymerDisplay__)),r.__hideTemplateChildren__=e}},__setPropertyImpl:function(
e,t,n,r){r&&r.__hideTemplateChildren__&&"textContent"==e&&(e="__polymerTextConte
nt__"),this.__setPropertyOrig(e,t,n,r)},_debounceTemplate:function(e){Polymer.do
m.addDebouncer(this.debounce("_debounceTemplate",e))},_flushTemplates:function()
{Polymer.dom.flush()},_customPrepEffects:function(e){var t=e._parentProps;for(va
r n in t)e._addPropertyEffect(n,"function",this._createHostPropEffector(n));for(
n in this._instanceProps)e._addPropertyEffect(n,"function",this._createInstanceP
ropEffector(n))},_customPrepAnnotations:function(e,t){e._template=t;var n=t._con
tent;if(!n._notes){var r=e._rootDataHost;r&&(Polymer.Annotations.prepElement=fun
ction(){r._prepElement()}),n._notes=Polymer.Annotations.parseAnnotations(t),Poly
mer.Annotations.prepElement=null,this._processAnnotations(n._notes)}e._notes=n._
notes,e._parentProps=n._parentProps},_prepParentProperties:function(e,t){var n=t
his._parentProps=e._parentProps;if(this._forwardParentProp&&n){var r,s=e._parent
PropProto;if(!s){for(r in this._instanceProps)delete n[r];s=e._parentPropProto=O
bject.create(null),t!=this&&(Polymer.Bind.prepareModel(s),Polymer.Base.prepareMo
delNotifyPath(s));for(r in n){var i=this._parentPropPrefix+r,o=[{kind:"function"
,effect:this._createForwardPropEffector(r),fn:Polymer.Bind._functionEffect},{kin
d:"notify",fn:Polymer.Bind._notifyEffect,effect:{event:Polymer.CaseMap.camelToDa
shCase(i)+"-changed"}}];Polymer.Bind._createAccessors(s,i,o)}}var a=this;t!=this
&&(Polymer.Bind.prepareInstance(t),t._forwardParentProp=function(e,t){a._forward
ParentProp(e,t)}),this._extendTemplate(t,s),t._pathEffector=function(e,t,n){retu
rn a._pathEffectorImpl(e,t,n)}}},_createForwardPropEffector:function(e){return f
unction(t,n){this._forwardParentProp(e,n)}},_createHostPropEffector:function(e){
var t=this._parentPropPrefix;return function(n,r){this.dataHost._templatized[t+e
]=r}},_createInstancePropEffector:function(e){return function(t,n,r,s){s||this.d
ataHost._forwardInstanceProp(this,e,n)}},_extendTemplate:function(e,t){var n=Obj
ect.getOwnPropertyNames(t);t._propertySetter&&(e._propertySetter=t._propertySett
er);for(var r,s=0;s<n.length&&(r=n[s]);s++){var i=e[r],o=Object.getOwnPropertyDe
scriptor(t,r);Object.defineProperty(e,r,o),void 0!==i&&e._propertySetter(r,i)}},
_showHideChildren:function(e){},_forwardInstancePath:function(e,t,n){},_forwardI
nstanceProp:function(e,t,n){},_notifyPathUpImpl:function(e,t){var n=this.dataHos
t,r=Polymer.Path.root(e);n._forwardInstancePath.call(n,this,e,t),r in n._parentP
rops&&n._templatized._notifyPath(n._parentPropPrefix+e,t)},_pathEffectorImpl:fun
ction(e,t,n){if(this._forwardParentPath&&0===e.indexOf(this._parentPropPrefix)){
var r=e.substring(this._parentPropPrefix.length),s=Polymer.Path.root(r);s in thi
s._parentProps&&this._forwardParentPath(r,t)}Polymer.Base._pathEffector.call(thi
s._templatized,e,t,n)},_constructorImpl:function(e,t){this._rootDataHost=t._getR
ootDataHost(),this._setupConfigure(e),this._registerHost(t),this._beginHosting()
,this.root=this.instanceTemplate(this._template),this.root.__noContent=!this._no
tes._hasContent,this.root.__styleScoped=!0,this._endHosting(),this._marshalAnnot
atedNodes(),this._marshalInstanceEffects(),this._marshalAnnotatedListeners();for
(var n=[],r=this.root.firstChild;r;r=r.nextSibling)n.push(r),r._templateInstance
=this;this._children=n,t.__hideTemplateChildren__&&this._showHideChildren(!0),th
is._tryReady()},_listenImpl:function(e,t,n){var r=this,s=this._rootDataHost,i=s.
_createEventHandler(e,t,n),o=function(e){e.model=r,i(e)};s._listen(e,t,o)},_scop
eElementClassImpl:function(e,t){var n=this._rootDataHost;return n?n._scopeElemen
tClass(e,t):t},stamp:function(e){if(e=e||{},this._parentProps){var t=this._templ
atized;for(var n in this._parentProps)void 0===e[n]&&(e[n]=t[this._parentPropPre
fix+n])}return new this.ctor(e,this)},modelForElement:function(e){for(var t;e;)i
f(t=e._templateInstance){if(t.dataHost==this)return t;e=t.dataHost}else e=e.pare
ntNode}},Polymer({is:"dom-template",extends:"template",_template:null,behaviors:
[Polymer.Templatizer],ready:function(){this.templatize(this)}}),Polymer._collect
ions=new WeakMap,Polymer.Collection=function(e){Polymer._collections.set(e,this)
,this.userArray=e,this.store=e.slice(),this.initMap()},Polymer.Collection.protot
ype={constructor:Polymer.Collection,initMap:function(){for(var e=this.omap=new W
eakMap,t=this.pmap={},n=this.store,r=0;r<n.length;r++){var s=n[r];s&&"object"==t
ypeof s?e.set(s,r):t[s]=r}},add:function(e){var t=this.store.push(e)-1;return e&
&"object"==typeof e?this.omap.set(e,t):this.pmap[e]=t,"#"+t},removeKey:function(
e){(e=this._parseKey(e))&&(this._removeFromMap(this.store[e]),delete this.store[
e])},_removeFromMap:function(e){e&&"object"==typeof e?this.omap.delete(e):delete
this.pmap[e]},remove:function(e){var t=this.getKey(e);return this.removeKey(t),
t},getKey:function(e){var t;if(t=e&&"object"==typeof e?this.omap.get(e):this.pma
p[e],void 0!=t)return"#"+t},getKeys:function(){return Object.keys(this.store).ma
p(function(e){return"#"+e})},_parseKey:function(e){if(e&&"#"==e[0])return e.slic
e(1)},setItem:function(e,t){if(e=this._parseKey(e)){var n=this.store[e];n&&this.
_removeFromMap(n),t&&"object"==typeof t?this.omap.set(t,e):this.pmap[t]=e,this.s
tore[e]=t}},getItem:function(e){if(e=this._parseKey(e))return this.store[e]},get
Items:function(){var e=[],t=this.store;for(var n in t)e.push(t[n]);return e},_ap
plySplices:function(e){for(var t,n,r={},s=0;s<e.length&&(n=e[s]);s++){n.addedKey
s=[];for(var i=0;i<n.removed.length;i++)t=this.getKey(n.removed[i]),r[t]=r[t]?nu
ll:-1;for(i=0;i<n.addedCount;i++){var o=this.userArray[n.index+i];t=this.getKey(
o),t=void 0===t?this.add(o):t,r[t]=r[t]?null:1,n.addedKeys.push(t)}}var a=[],l=[
];for(t in r)r[t]<0&&(this.removeKey(t),a.push(t)),r[t]>0&&l.push(t);return[{rem
oved:a,added:l}]}},Polymer.Collection.get=function(e){return Polymer._collection
s.get(e)||new Polymer.Collection(e)},Polymer.Collection.applySplices=function(e,
t){var n=Polymer._collections.get(e);return n?n._applySplices(t):null},Polymer({
is:"dom-repeat",extends:"template",_template:null,properties:{items:{type:Array}
,as:{type:String,value:"item"},indexAs:{type:String,value:"index"},sort:{type:Fu
nction,observer:"_sortChanged"},filter:{type:Function,observer:"_filterChanged"}
,observe:{type:String,observer:"_observeChanged"},delay:Number,renderedItemCount
:{type:Number,notify:!0,readOnly:!0},initialCount:{type:Number,observer:"_initia
lizeChunking"},targetFramerate:{type:Number,value:20},_targetFrameTime:{type:Num
ber,computed:"_computeFrameTime(targetFramerate)"}},behaviors:[Polymer.Templatiz
er],observers:["_itemsChanged(items.*)"],created:function(){this._instances=[],t
his._pool=[],this._limit=1/0;var e=this;this._boundRenderChunk=function(){e._ren
derChunk()}},detached:function(){this.__isDetached=!0;for(var e=0;e<this._instan
ces.length;e++)this._detachInstance(e)},attached:function(){if(this.__isDetached
){this.__isDetached=!1;for(var e=Polymer.dom(Polymer.dom(this).parentNode),t=0;t
<this._instances.length;t++)this._attachInstance(t,e)}},ready:function(){this._i
nstanceProps={__key__:!0},this._instanceProps[this.as]=!0,this._instanceProps[th
is.indexAs]=!0,this.ctor||this.templatize(this)},_sortChanged:function(e){var t=
this._getRootDataHost();this._sortFn=e&&("function"==typeof e?e:function(){retur
n t[e].apply(t,arguments)}),this._needFullRefresh=!0,this.items&&this._debounceT
emplate(this._render)},_filterChanged:function(e){var t=this._getRootDataHost();
this._filterFn=e&&("function"==typeof e?e:function(){return t[e].apply(t,argumen
ts)}),this._needFullRefresh=!0,this.items&&this._debounceTemplate(this._render)}
,_computeFrameTime:function(e){return Math.ceil(1e3/e)},_initializeChunking:func
tion(){this.initialCount&&(this._limit=this.initialCount,this._chunkCount=this.i
nitialCount,this._lastChunkTime=performance.now())},_tryRenderChunk:function(){t
his.items&&this._limit<this.items.length&&this.debounce("renderChunk",this._requ
estRenderChunk)},_requestRenderChunk:function(){requestAnimationFrame(this._boun
dRenderChunk)},_renderChunk:function(){var e=performance.now(),t=this._targetFra
meTime/(e-this._lastChunkTime);this._chunkCount=Math.round(this._chunkCount*t)||
1,this._limit+=this._chunkCount,this._lastChunkTime=e,this._debounceTemplate(thi
s._render)},_observeChanged:function(){this._observePaths=this.observe&&this.obs
erve.replace(".*",".").split(" ")},_itemsChanged:function(e){if("items"==e.path)
Array.isArray(this.items)?this.collection=Polymer.Collection.get(this.items):thi
s.items?this._error(this._logf("dom-repeat","expected array for `items`, found",
this.items)):this.collection=null,this._keySplices=[],this._indexSplices=[],this
._needFullRefresh=!0,this._initializeChunking(),this._debounceTemplate(this._ren
der);else if("items.splices"==e.path)this._keySplices=this._keySplices.concat(e.
value.keySplices),this._indexSplices=this._indexSplices.concat(e.value.indexSpli
ces),this._debounceTemplate(this._render);else{var t=e.path.slice(6);this._forwa
rdItemPath(t,e.value),this._checkObservedPaths(t)}},_checkObservedPaths:function
(e){if(this._observePaths){e=e.substring(e.indexOf(".")+1);for(var t=this._obser
vePaths,n=0;n<t.length;n++)if(0===e.indexOf(t[n]))return this._needFullRefresh=!
0,void(this.delay?this.debounce("render",this._render,this.delay):this._debounce
Template(this._render))}},render:function(){this._needFullRefresh=!0,this._debou
nceTemplate(this._render),this._flushTemplates()},_render:function(){this._needF
ullRefresh?(this._applyFullRefresh(),this._needFullRefresh=!1):this._keySplices.
length&&(this._sortFn?this._applySplicesUserSort(this._keySplices):this._filterF
n?this._applyFullRefresh():this._applySplicesArrayOrder(this._indexSplices)),thi
s._keySplices=[],this._indexSplices=[];for(var e=this._keyToInstIdx={},t=this._i
nstances.length-1;t>=0;t--){var n=this._instances[t];n.isPlaceholder&&t<this._li
mit?n=this._insertInstance(t,n.__key__):!n.isPlaceholder&&t>=this._limit&&(n=thi
s._downgradeInstance(t,n.__key__)),e[n.__key__]=t,n.isPlaceholder||n.__setProper
ty(this.indexAs,t,!0)}this._pool.length=0,this._setRenderedItemCount(this._insta
nces.length),this.fire("dom-change"),this._tryRenderChunk()},_applyFullRefresh:f
unction(){var e,t=this.collection;if(this._sortFn)e=t?t.getKeys():[];else{e=[];v
ar n=this.items;if(n)for(var r=0;r<n.length;r++)e.push(t.getKey(n[r]))}var s=thi
s;for(this._filterFn&&(e=e.filter(function(e){return s._filterFn(t.getItem(e))})
),this._sortFn&&e.sort(function(e,n){return s._sortFn(t.getItem(e),t.getItem(n))
}),r=0;r<e.length;r++){var i=e[r],o=this._instances[r];o?(o.__key__=i,!o.isPlace
holder&&r<this._limit&&o.__setProperty(this.as,t.getItem(i),!0)):r<this._limit?t
his._insertInstance(r,i):this._insertPlaceholder(r,i)}for(var a=this._instances.
length-1;a>=r;a--)this._detachAndRemoveInstance(a)},_numericSort:function(e,t){r
eturn e-t},_applySplicesUserSort:function(e){for(var t,n,r=this.collection,s={},
i=0;i<e.length&&(n=e[i]);i++){for(var o=0;o<n.removed.length;o++)t=n.removed[o],
s[t]=s[t]?null:-1;for(o=0;o<n.added.length;o++)t=n.added[o],s[t]=s[t]?null:1}var
a=[],l=[];for(t in s)s[t]===-1&&a.push(this._keyToInstIdx[t]),1===s[t]&&l.push(
t);if(a.length)for(a.sort(this._numericSort),i=a.length-1;i>=0;i--){var c=a[i];v
oid 0!==c&&this._detachAndRemoveInstance(c)}var h=this;if(l.length){this._filter
Fn&&(l=l.filter(function(e){return h._filterFn(r.getItem(e))})),l.sort(function(
e,t){return h._sortFn(r.getItem(e),r.getItem(t))});var u=0;for(i=0;i<l.length;i+
+)u=this._insertRowUserSort(u,l[i])}},_insertRowUserSort:function(e,t){for(var n
=this.collection,r=n.getItem(t),s=this._instances.length-1,i=-1;e<=s;){var o=e+s
>>1,a=this._instances[o].__key__,l=this._sortFn(n.getItem(a),r);if(l<0)e=o+1;els
e{if(!(l>0)){i=o;break}s=o-1}}return i<0&&(i=s+1),this._insertPlaceholder(i,t),i
},_applySplicesArrayOrder:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++){fo
r(var r=0;r<t.removed.length;r++)this._detachAndRemoveInstance(t.index);for(r=0;
r<t.addedKeys.length;r++)this._insertPlaceholder(t.index+r,t.addedKeys[r])}},_de
tachInstance:function(e){var t=this._instances[e];if(!t.isPlaceholder){for(var n
=0;n<t._children.length;n++){var r=t._children[n];Polymer.dom(t.root).appendChil
d(r)}return t}},_attachInstance:function(e,t){var n=this._instances[e];n.isPlace
holder||t.insertBefore(n.root,this)},_detachAndRemoveInstance:function(e){var t=
this._detachInstance(e);t&&this._pool.push(t),this._instances.splice(e,1)},_inse
rtPlaceholder:function(e,t){this._instances.splice(e,0,{isPlaceholder:!0,__key__
:t})},_stampInstance:function(e,t){var n={__key__:t};return n[this.as]=this.coll
ection.getItem(t),n[this.indexAs]=e,this.stamp(n)},_insertInstance:function(e,t)
{var n=this._pool.pop();n?(n.__setProperty(this.as,this.collection.getItem(t),!0
),n.__setProperty("__key__",t,!0)):n=this._stampInstance(e,t);var r=this._instan
ces[e+1],s=r&&!r.isPlaceholder?r._children[0]:this,i=Polymer.dom(this).parentNod
e;return Polymer.dom(i).insertBefore(n.root,s),this._instances[e]=n,n},_downgrad
eInstance:function(e,t){var n=this._detachInstance(e);return n&&this._pool.push(
n),n={isPlaceholder:!0,__key__:t},this._instances[e]=n,n},_showHideChildren:func
tion(e){for(var t=0;t<this._instances.length;t++)this._instances[t]._showHideChi
ldren(e)},_forwardInstanceProp:function(e,t,n){if(t==this.as){var r;r=this._sort
Fn||this._filterFn?this.items.indexOf(this.collection.getItem(e.__key__)):e[this
.indexAs],this.set("items."+r,n)}},_forwardInstancePath:function(e,t,n){0===t.in
dexOf(this.as+".")&&this._notifyPath("items."+e.__key__+"."+t.slice(this.as.leng
th+1),n)},_forwardParentProp:function(e,t){for(var n,r=this._instances,s=0;s<r.l
ength&&(n=r[s]);s++)n.isPlaceholder||n.__setProperty(e,t,!0)},_forwardParentPath
:function(e,t){for(var n,r=this._instances,s=0;s<r.length&&(n=r[s]);s++)n.isPlac
eholder||n._notifyPath(e,t,!0)},_forwardItemPath:function(e,t){if(this._keyToIns
tIdx){var n=e.indexOf("."),r=e.substring(0,n<0?e.length:n),s=this._keyToInstIdx[
r],i=this._instances[s];i&&!i.isPlaceholder&&(n>=0?(e=this.as+"."+e.substring(n+
1),i._notifyPath(e,t,!0)):i.__setProperty(this.as,t,!0))}},itemForElement:functi
on(e){var t=this.modelForElement(e);return t&&t[this.as]},keyForElement:function
(e){var t=this.modelForElement(e);return t&&t.__key__},indexForElement:function(
e){var t=this.modelForElement(e);return t&&t[this.indexAs]}}),Polymer({is:"array
-selector",_template:null,properties:{items:{type:Array,observer:"clearSelection
"},multi:{type:Boolean,value:!1,observer:"clearSelection"},selected:{type:Object
,notify:!0},selectedItem:{type:Object,notify:!0},toggle:{type:Boolean,value:!1}}
,clearSelection:function(){if(Array.isArray(this.selected))for(var e=0;e<this.se
lected.length;e++)this.unlinkPaths("selected."+e);else this.unlinkPaths("selecte
d"),this.unlinkPaths("selectedItem");this.multi?this.selected&&!this.selected.le
ngth||(this.selected=[],this._selectedColl=Polymer.Collection.get(this.selected)
):(this.selected=null,this._selectedColl=null),this.selectedItem=null},isSelecte
d:function(e){return this.multi?void 0!==this._selectedColl.getKey(e):this.selec
ted==e},deselect:function(e){if(this.multi){if(this.isSelected(e)){var t=this._s
electedColl.getKey(e);this.arrayDelete("selected",e),this.unlinkPaths("selected.
"+t)}}else this.selected=null,this.selectedItem=null,this.unlinkPaths("selected"
),this.unlinkPaths("selectedItem")},select:function(e){var t=Polymer.Collection.
get(this.items),n=t.getKey(e);if(this.multi)if(this.isSelected(e))this.toggle&&t
his.deselect(e);else{this.push("selected",e);var r=this._selectedColl.getKey(e);
this.linkPaths("selected."+r,"items."+n)}else this.toggle&&e==this.selected?this
.deselect():(this.selected=e,this.selectedItem=e,this.linkPaths("selected","item
s."+n),this.linkPaths("selectedItem","items."+n))}}),Polymer({is:"dom-if",extend
s:"template",_template:null,properties:{if:{type:Boolean,value:!1,observer:"_que
ueRender"},restamp:{type:Boolean,value:!1,observer:"_queueRender"}},behaviors:[P
olymer.Templatizer],_queueRender:function(){this._debounceTemplate(this._render)
},detached:function(){this.parentNode&&(this.parentNode.nodeType!=Node.DOCUMENT_
FRAGMENT_NODE||Polymer.Settings.hasShadow&&this.parentNode instanceof ShadowRoot
)||this._teardownInstance()},attached:function(){this.if&&this.ctor&&this.async(
this._ensureInstance)},render:function(){this._flushTemplates()},_render:functio
n(){this.if?(this.ctor||this.templatize(this),this._ensureInstance(),this._showH
ideChildren()):this.restamp&&this._teardownInstance(),!this.restamp&&this._insta
nce&&this._showHideChildren(),this.if!=this._lastIf&&(this.fire("dom-change"),th
is._lastIf=this.if)},_ensureInstance:function(){var e=Polymer.dom(this).parentNo
de;if(e){var t=Polymer.dom(e);if(this._instance){var n=this._instance._children;
if(n&&n.length){var r=Polymer.dom(this).previousSibling;if(r!==n[n.length-1])for
(var s,i=0;i<n.length&&(s=n[i]);i++)t.insertBefore(s,this)}}else{this._instance=
this.stamp();var o=this._instance.root;t.insertBefore(o,this)}}},_teardownInstan
ce:function(){if(this._instance){var e=this._instance._children;if(e&&e.length)f
or(var t,n=Polymer.dom(Polymer.dom(e[0]).parentNode),r=0;r<e.length&&(t=e[r]);r+
+)n.removeChild(t);this._instance=null}},_showHideChildren:function(){var e=this
.__hideTemplateChildren__||!this.if;this._instance&&this._instance._showHideChil
dren(e)},_forwardParentProp:function(e,t){this._instance&&this._instance.__setPr
operty(e,t,!0)},_forwardParentPath:function(e,t){this._instance&&this._instance.
_notifyPath(e,t,!0)}}),Polymer({is:"dom-bind",extends:"template",_template:null,
created:function(){var e=this;Polymer.RenderStatus.whenReady(function(){"loading
"==document.readyState?document.addEventListener("DOMContentLoaded",function(){e
._markImportsReady()}):e._markImportsReady()})},_ensureReady:function(){this._re
adied||this._readySelf()},_markImportsReady:function(){this._importsReady=!0,thi
s._ensureReady()},_registerFeatures:function(){this._prepConstructor()},_insertC
hildren:function(){var e=Polymer.dom(Polymer.dom(this).parentNode);e.insertBefor
e(this.root,this)},_removeChildren:function(){if(this._children)for(var e=0;e<th
is._children.length;e++)this.root.appendChild(this._children[e])},_initFeatures:
function(){},_scopeElementClass:function(e,t){return this.dataHost?this.dataHost
._scopeElementClass(e,t):t},_configureInstanceProperties:function(){},_prepConfi
gure:function(){var e={};for(var t in this._propertyEffects)e[t]=this[t];var n=t
his._setupConfigure;this._setupConfigure=function(){n.call(this,e)}},attached:fu
nction(){this._importsReady&&this.render()},detached:function(){this._removeChil
dren()},render:function(){this._ensureReady(),this._children||(this._template=th
is,this._prepAnnotations(),this._prepEffects(),this._prepBehaviors(),this._prepC
onfigure(),this._prepBindings(),this._prepPropertyInfo(),Polymer.Base._initFeatu
res.call(this),this._children=Polymer.TreeApi.arrayCopyChildNodes(this.root)),th
is._insertChildren(),this.fire("dom-change")}})</script> <script> window.Swarmin
gBehaviors = window.SwarmingBehaviors || {}; | 4 },customStyle:null,getComputedStyleValue:function(e){return!i&&this._styleProper
ties&&this._styleProperties[e]||getComputedStyle(this).getPropertyValue(e)},_set
upStyleProperties:function(){this.customStyle={},this._styleCache=null,this._sty
leProperties=null,this._scopeSelector=null,this._ownStyleProperties=null,this._c
ustomStyle=null},_needsStyleProperties:function(){return Boolean(!i&&this._ownSt
ylePropertyNames&&this._ownStylePropertyNames.length)},_validateApplyShim:functi
on(){if(this.__applyShimInvalid){Polymer.ApplyShim.transform(this._styles,this._
_proto__);var e=n.elementStyles(this);if(s){var t=this._template.content.querySe
lector("style");t&&(t.textContent=e)}else{var r=this._scopeStyle&&this._scopeSty
le.nextSibling;r&&(r.textContent=e)}}},_beforeAttached:function(){this._scopeSel
ector&&!this.__stylePropertiesInvalid||!this._needsStyleProperties()||(this.__st
ylePropertiesInvalid=!1,this._updateStyleProperties())},_findStyleHost:function(
){for(var e,t=this;e=Polymer.dom(t).getOwnerRoot();){if(Polymer.isInstance(e.hos
t))return e.host;t=e.host}return r},_updateStyleProperties:function(){var e,n=th
is._findStyleHost();n._styleProperties||n._computeStyleProperties(),n._styleCach
e||(n._styleCache=new Polymer.StyleCache);var r=t.propertyDataFromStyles(n._styl
es,this),i=!this.__notStyleScopeCacheable;i&&(r.key.customStyle=this.customStyle
,e=n._styleCache.retrieve(this.is,r.key,this._styles));var a=Boolean(e);a?this._
styleProperties=e._styleProperties:this._computeStyleProperties(r.properties),th
is._computeOwnStyleProperties(),a||(e=o.retrieve(this.is,this._ownStylePropertie
s,this._styles));var l=Boolean(e)&&!a,c=this._applyStyleProperties(e);a||(c=c&&s
?c.cloneNode(!0):c,e={style:c,_scopeSelector:this._scopeSelector,_stylePropertie
s:this._styleProperties},i&&(r.key.customStyle={},this.mixin(r.key.customStyle,t
his.customStyle),n._styleCache.store(this.is,e,r.key,this._styles)),l||o.store(t
his.is,Object.create(e),this._ownStyleProperties,this._styles))},_computeStylePr
operties:function(e){var n=this._findStyleHost();n._styleProperties||n._computeS
tyleProperties();var r=Object.create(n._styleProperties),s=t.hostAndRootProperti
esForScope(this);this.mixin(r,s.hostProps),e=e||t.propertyDataFromStyles(n._styl
es,this).properties,this.mixin(r,e),this.mixin(r,s.rootProps),t.mixinCustomStyle
(r,this.customStyle),t.reify(r),this._styleProperties=r},_computeOwnStylePropert
ies:function(){for(var e,t={},n=0;n<this._ownStylePropertyNames.length;n++)e=thi
s._ownStylePropertyNames[n],t[e]=this._styleProperties[e];this._ownStyleProperti
es=t},_scopeCount:0,_applyStyleProperties:function(e){var n=this._scopeSelector;
this._scopeSelector=e?e._scopeSelector:this.is+"-"+this.__proto__._scopeCount++;
var r=t.applyElementStyle(this,this._styleProperties,this._scopeSelector,e&&e.st
yle);return s||t.applyElementScopeSelector(this,this._scopeSelector,n,this._scop
eCssViaAttr),r},serializeValueToAttribute:function(t,n,r){if(r=r||this,"class"==
=n&&!s){var i=r===this?this.domHost||this.dataHost:this;i&&(t=i._scopeElementCla
ss(r,t))}r=this.shadyRoot&&this.shadyRoot._hasDistributed?Polymer.dom(r):r,e.cal
l(this,t,n,r)},_scopeElementClass:function(e,t){return s||this._scopeCssViaAttr|
|(t=(t?t+" ":"")+a+" "+this.is+(e._scopeSelector?" "+l+" "+e._scopeSelector:""))
,t},updateStyles:function(e){e&&this.mixin(this.customStyle,e),i?t.updateNativeS
tyleProperties(this,this.customStyle):(this.isAttached?this._needsStylePropertie
s()?this._updateStyleProperties():this._styleProperties=null:this.__stylePropert
iesInvalid=!0,this._styleCache&&this._styleCache.clear(),this._updateRootStyles(
))},_updateRootStyles:function(e){e=e||this.root;for(var t,n=Polymer.dom(e)._que
ry(function(e){return e.shadyRoot||e.shadowRoot}),r=0,s=n.length;r<s&&(t=n[r]);r
++)t.updateStyles&&t.updateStyles()}}),Polymer.updateStyles=function(e){r.update
Styles(e),Polymer.Base._updateRootStyles(document)};var o=new Polymer.StyleCache
;Polymer.customStyleCache=o;var a=n.SCOPE_NAME,l=t.XSCOPE_NAME}(),Polymer.Base._
addFeature({_registerFeatures:function(){this._prepIs(),this._prepConstructor(),
this._prepStyles()},_finishRegisterFeatures:function(){this._prepTemplate(),this
._prepShimStyles(),this._prepAnnotations(),this._prepEffects(),this._prepBehavio
rs(),this._prepPropertyInfo(),this._prepBindings(),this._prepShady()},_prepBehav
ior:function(e){this._addPropertyEffects(e.properties),this._addComplexObserverE
ffects(e.observers),this._addHostAttributes(e.hostAttributes)},_initFeatures:fun
ction(){this._setupGestures(),this._setupConfigure(),this._setupStyleProperties(
),this._setupDebouncers(),this._setupShady(),this._registerHost(),this._template
&&(this._validateApplyShim(),this._poolContent(),this._beginHosting(),this._stam
pTemplate(),this._endHosting(),this._marshalAnnotationReferences()),this._marsha
lInstanceEffects(),this._marshalBehaviors(),this._marshalHostAttributes(),this._
marshalAttributes(),this._tryReady()},_marshalBehavior:function(e){e.listeners&&
this._listenListeners(e.listeners)}}),function(){var e,t=Polymer.StyleProperties
,n=Polymer.StyleUtil,r=Polymer.CssParse,s=Polymer.StyleDefaults,i=Polymer.StyleT
ransformer,o=Polymer.ApplyShim,a=Polymer.Debounce,l=Polymer.Settings;Polymer({is
:"custom-style",extends:"style",_template:null,properties:{include:String},ready
:function(){this.__appliedElement=this.__appliedElement||this,this.__cssBuild=n.
getCssBuildType(this),this.__appliedElement!==this&&(this.__appliedElement.__css
Build=this.__cssBuild),this._tryApply()},attached:function(){this._tryApply()},_
tryApply:function(){if(!this._appliesToDocument&&this.parentNode&&"dom-module"!=
=this.parentNode.localName){this._appliesToDocument=!0;var e=this.__appliedEleme
nt;if(l.useNativeCSSProperties||(this.__needsUpdateStyles=s.hasStyleProperties()
,s.addStyle(e)),e.textContent||this.include)this._apply(!0);else{var t=this,n=ne
w MutationObserver(function(){n.disconnect(),t._apply(!0)});n.observe(e,{childLi
st:!0})}}},_updateStyles:function(){Polymer.updateStyles()},_apply:function(e){v
ar t=this.__appliedElement;if(this.include&&(t.textContent=n.cssFromModules(this
.include,!0)+t.textContent),t.textContent){var r=this.__cssBuild,s=n.isTargetedB
uild(r);if(!l.useNativeCSSProperties||!s){var a=n.rulesForStyle(t);if(s||(n.forE
achRule(a,function(e){i.documentRule(e)}),l.useNativeCSSProperties&&!r&&o.transf
orm([t])),l.useNativeCSSProperties)t.textContent=n.toCssText(a);else{var c=this,
h=function(){c._flushCustomProperties()};e?Polymer.RenderStatus.whenReady(h):h()
}}}},_flushCustomProperties:function(){this.__needsUpdateStyles?(this.__needsUpd
ateStyles=!1,e=a(e,this._updateStyles)):this._applyCustomProperties()},_applyCus
tomProperties:function(){var e=this.__appliedElement;this._computeStylePropertie
s();var s=this._styleProperties,i=n.rulesForStyle(e);i&&(e.textContent=n.toCssTe
xt(i,function(e){var n=e.cssText=e.parsedCssText;e.propertyInfo&&e.propertyInfo.
cssText&&(n=r.removeCustomPropAssignment(n),e.cssText=t.valueForProperties(n,s))
}))}})}(),Polymer.Templatizer={properties:{__hideTemplateChildren__:{observer:"_
showHideChildren"}},_instanceProps:Polymer.nob,_parentPropPrefix:"_parent_",temp
latize:function(e){if(this._templatized=e,e._content||(e._content=e.content),e._
content._ctor)return this.ctor=e._content._ctor,void this._prepParentProperties(
this.ctor.prototype,e);var t=Object.create(Polymer.Base);this._customPrepAnnotat
ions(t,e),this._prepParentProperties(t,e),t._prepEffects(),this._customPrepEffec
ts(t),t._prepBehaviors(),t._prepPropertyInfo(),t._prepBindings(),t._notifyPathUp
=this._notifyPathUpImpl,t._scopeElementClass=this._scopeElementClassImpl,t.liste
n=this._listenImpl,t._showHideChildren=this._showHideChildrenImpl,t.__setPropert
yOrig=this.__setProperty,t.__setProperty=this.__setPropertyImpl;var n=this._cons
tructorImpl,r=function(e,t){n.call(this,e,t)};r.prototype=t,t.constructor=r,e._c
ontent._ctor=r,this.ctor=r},_getRootDataHost:function(){return this.dataHost&&th
is.dataHost._rootDataHost||this.dataHost},_showHideChildrenImpl:function(e){for(
var t=this._children,n=0;n<t.length;n++){var r=t[n];Boolean(e)!=Boolean(r.__hide
TemplateChildren__)&&(r.nodeType===Node.TEXT_NODE?e?(r.__polymerTextContent__=r.
textContent,r.textContent=""):r.textContent=r.__polymerTextContent__:r.style&&(e
?(r.__polymerDisplay__=r.style.display,r.style.display="none"):r.style.display=r
.__polymerDisplay__)),r.__hideTemplateChildren__=e}},__setPropertyImpl:function(
e,t,n,r){r&&r.__hideTemplateChildren__&&"textContent"==e&&(e="__polymerTextConte
nt__"),this.__setPropertyOrig(e,t,n,r)},_debounceTemplate:function(e){Polymer.do
m.addDebouncer(this.debounce("_debounceTemplate",e))},_flushTemplates:function()
{Polymer.dom.flush()},_customPrepEffects:function(e){var t=e._parentProps;for(va
r n in t)e._addPropertyEffect(n,"function",this._createHostPropEffector(n));for(
n in this._instanceProps)e._addPropertyEffect(n,"function",this._createInstanceP
ropEffector(n))},_customPrepAnnotations:function(e,t){e._template=t;var n=t._con
tent;if(!n._notes){var r=e._rootDataHost;r&&(Polymer.Annotations.prepElement=fun
ction(){r._prepElement()}),n._notes=Polymer.Annotations.parseAnnotations(t),Poly
mer.Annotations.prepElement=null,this._processAnnotations(n._notes)}e._notes=n._
notes,e._parentProps=n._parentProps},_prepParentProperties:function(e,t){var n=t
his._parentProps=e._parentProps;if(this._forwardParentProp&&n){var r,s=e._parent
PropProto;if(!s){for(r in this._instanceProps)delete n[r];s=e._parentPropProto=O
bject.create(null),t!=this&&(Polymer.Bind.prepareModel(s),Polymer.Base.prepareMo
delNotifyPath(s));for(r in n){var i=this._parentPropPrefix+r,o=[{kind:"function"
,effect:this._createForwardPropEffector(r),fn:Polymer.Bind._functionEffect},{kin
d:"notify",fn:Polymer.Bind._notifyEffect,effect:{event:Polymer.CaseMap.camelToDa
shCase(i)+"-changed"}}];Polymer.Bind._createAccessors(s,i,o)}}var a=this;t!=this
&&(Polymer.Bind.prepareInstance(t),t._forwardParentProp=function(e,t){a._forward
ParentProp(e,t)}),this._extendTemplate(t,s),t._pathEffector=function(e,t,n){retu
rn a._pathEffectorImpl(e,t,n)}}},_createForwardPropEffector:function(e){return f
unction(t,n){this._forwardParentProp(e,n)}},_createHostPropEffector:function(e){
var t=this._parentPropPrefix;return function(n,r){this.dataHost._templatized[t+e
]=r}},_createInstancePropEffector:function(e){return function(t,n,r,s){s||this.d
ataHost._forwardInstanceProp(this,e,n)}},_extendTemplate:function(e,t){var n=Obj
ect.getOwnPropertyNames(t);t._propertySetter&&(e._propertySetter=t._propertySett
er);for(var r,s=0;s<n.length&&(r=n[s]);s++){var i=e[r],o=Object.getOwnPropertyDe
scriptor(t,r);Object.defineProperty(e,r,o),void 0!==i&&e._propertySetter(r,i)}},
_showHideChildren:function(e){},_forwardInstancePath:function(e,t,n){},_forwardI
nstanceProp:function(e,t,n){},_notifyPathUpImpl:function(e,t){var n=this.dataHos
t,r=Polymer.Path.root(e);n._forwardInstancePath.call(n,this,e,t),r in n._parentP
rops&&n._templatized._notifyPath(n._parentPropPrefix+e,t)},_pathEffectorImpl:fun
ction(e,t,n){if(this._forwardParentPath&&0===e.indexOf(this._parentPropPrefix)){
var r=e.substring(this._parentPropPrefix.length),s=Polymer.Path.root(r);s in thi
s._parentProps&&this._forwardParentPath(r,t)}Polymer.Base._pathEffector.call(thi
s._templatized,e,t,n)},_constructorImpl:function(e,t){this._rootDataHost=t._getR
ootDataHost(),this._setupConfigure(e),this._registerHost(t),this._beginHosting()
,this.root=this.instanceTemplate(this._template),this.root.__noContent=!this._no
tes._hasContent,this.root.__styleScoped=!0,this._endHosting(),this._marshalAnnot
atedNodes(),this._marshalInstanceEffects(),this._marshalAnnotatedListeners();for
(var n=[],r=this.root.firstChild;r;r=r.nextSibling)n.push(r),r._templateInstance
=this;this._children=n,t.__hideTemplateChildren__&&this._showHideChildren(!0),th
is._tryReady()},_listenImpl:function(e,t,n){var r=this,s=this._rootDataHost,i=s.
_createEventHandler(e,t,n),o=function(e){e.model=r,i(e)};s._listen(e,t,o)},_scop
eElementClassImpl:function(e,t){var n=this._rootDataHost;return n?n._scopeElemen
tClass(e,t):t},stamp:function(e){if(e=e||{},this._parentProps){var t=this._templ
atized;for(var n in this._parentProps)void 0===e[n]&&(e[n]=t[this._parentPropPre
fix+n])}return new this.ctor(e,this)},modelForElement:function(e){for(var t;e;)i
f(t=e._templateInstance){if(t.dataHost==this)return t;e=t.dataHost}else e=e.pare
ntNode}},Polymer({is:"dom-template",extends:"template",_template:null,behaviors:
[Polymer.Templatizer],ready:function(){this.templatize(this)}}),Polymer._collect
ions=new WeakMap,Polymer.Collection=function(e){Polymer._collections.set(e,this)
,this.userArray=e,this.store=e.slice(),this.initMap()},Polymer.Collection.protot
ype={constructor:Polymer.Collection,initMap:function(){for(var e=this.omap=new W
eakMap,t=this.pmap={},n=this.store,r=0;r<n.length;r++){var s=n[r];s&&"object"==t
ypeof s?e.set(s,r):t[s]=r}},add:function(e){var t=this.store.push(e)-1;return e&
&"object"==typeof e?this.omap.set(e,t):this.pmap[e]=t,"#"+t},removeKey:function(
e){(e=this._parseKey(e))&&(this._removeFromMap(this.store[e]),delete this.store[
e])},_removeFromMap:function(e){e&&"object"==typeof e?this.omap.delete(e):delete
this.pmap[e]},remove:function(e){var t=this.getKey(e);return this.removeKey(t),
t},getKey:function(e){var t;if(t=e&&"object"==typeof e?this.omap.get(e):this.pma
p[e],void 0!=t)return"#"+t},getKeys:function(){return Object.keys(this.store).ma
p(function(e){return"#"+e})},_parseKey:function(e){if(e&&"#"==e[0])return e.slic
e(1)},setItem:function(e,t){if(e=this._parseKey(e)){var n=this.store[e];n&&this.
_removeFromMap(n),t&&"object"==typeof t?this.omap.set(t,e):this.pmap[t]=e,this.s
tore[e]=t}},getItem:function(e){if(e=this._parseKey(e))return this.store[e]},get
Items:function(){var e=[],t=this.store;for(var n in t)e.push(t[n]);return e},_ap
plySplices:function(e){for(var t,n,r={},s=0;s<e.length&&(n=e[s]);s++){n.addedKey
s=[];for(var i=0;i<n.removed.length;i++)t=this.getKey(n.removed[i]),r[t]=r[t]?nu
ll:-1;for(i=0;i<n.addedCount;i++){var o=this.userArray[n.index+i];t=this.getKey(
o),t=void 0===t?this.add(o):t,r[t]=r[t]?null:1,n.addedKeys.push(t)}}var a=[],l=[
];for(t in r)r[t]<0&&(this.removeKey(t),a.push(t)),r[t]>0&&l.push(t);return[{rem
oved:a,added:l}]}},Polymer.Collection.get=function(e){return Polymer._collection
s.get(e)||new Polymer.Collection(e)},Polymer.Collection.applySplices=function(e,
t){var n=Polymer._collections.get(e);return n?n._applySplices(t):null},Polymer({
is:"dom-repeat",extends:"template",_template:null,properties:{items:{type:Array}
,as:{type:String,value:"item"},indexAs:{type:String,value:"index"},sort:{type:Fu
nction,observer:"_sortChanged"},filter:{type:Function,observer:"_filterChanged"}
,observe:{type:String,observer:"_observeChanged"},delay:Number,renderedItemCount
:{type:Number,notify:!0,readOnly:!0},initialCount:{type:Number,observer:"_initia
lizeChunking"},targetFramerate:{type:Number,value:20},_targetFrameTime:{type:Num
ber,computed:"_computeFrameTime(targetFramerate)"}},behaviors:[Polymer.Templatiz
er],observers:["_itemsChanged(items.*)"],created:function(){this._instances=[],t
his._pool=[],this._limit=1/0;var e=this;this._boundRenderChunk=function(){e._ren
derChunk()}},detached:function(){this.__isDetached=!0;for(var e=0;e<this._instan
ces.length;e++)this._detachInstance(e)},attached:function(){if(this.__isDetached
){this.__isDetached=!1;for(var e=Polymer.dom(Polymer.dom(this).parentNode),t=0;t
<this._instances.length;t++)this._attachInstance(t,e)}},ready:function(){this._i
nstanceProps={__key__:!0},this._instanceProps[this.as]=!0,this._instanceProps[th
is.indexAs]=!0,this.ctor||this.templatize(this)},_sortChanged:function(e){var t=
this._getRootDataHost();this._sortFn=e&&("function"==typeof e?e:function(){retur
n t[e].apply(t,arguments)}),this._needFullRefresh=!0,this.items&&this._debounceT
emplate(this._render)},_filterChanged:function(e){var t=this._getRootDataHost();
this._filterFn=e&&("function"==typeof e?e:function(){return t[e].apply(t,argumen
ts)}),this._needFullRefresh=!0,this.items&&this._debounceTemplate(this._render)}
,_computeFrameTime:function(e){return Math.ceil(1e3/e)},_initializeChunking:func
tion(){this.initialCount&&(this._limit=this.initialCount,this._chunkCount=this.i
nitialCount,this._lastChunkTime=performance.now())},_tryRenderChunk:function(){t
his.items&&this._limit<this.items.length&&this.debounce("renderChunk",this._requ
estRenderChunk)},_requestRenderChunk:function(){requestAnimationFrame(this._boun
dRenderChunk)},_renderChunk:function(){var e=performance.now(),t=this._targetFra
meTime/(e-this._lastChunkTime);this._chunkCount=Math.round(this._chunkCount*t)||
1,this._limit+=this._chunkCount,this._lastChunkTime=e,this._debounceTemplate(thi
s._render)},_observeChanged:function(){this._observePaths=this.observe&&this.obs
erve.replace(".*",".").split(" ")},_itemsChanged:function(e){if("items"==e.path)
Array.isArray(this.items)?this.collection=Polymer.Collection.get(this.items):thi
s.items?this._error(this._logf("dom-repeat","expected array for `items`, found",
this.items)):this.collection=null,this._keySplices=[],this._indexSplices=[],this
._needFullRefresh=!0,this._initializeChunking(),this._debounceTemplate(this._ren
der);else if("items.splices"==e.path)this._keySplices=this._keySplices.concat(e.
value.keySplices),this._indexSplices=this._indexSplices.concat(e.value.indexSpli
ces),this._debounceTemplate(this._render);else{var t=e.path.slice(6);this._forwa
rdItemPath(t,e.value),this._checkObservedPaths(t)}},_checkObservedPaths:function
(e){if(this._observePaths){e=e.substring(e.indexOf(".")+1);for(var t=this._obser
vePaths,n=0;n<t.length;n++)if(0===e.indexOf(t[n]))return this._needFullRefresh=!
0,void(this.delay?this.debounce("render",this._render,this.delay):this._debounce
Template(this._render))}},render:function(){this._needFullRefresh=!0,this._debou
nceTemplate(this._render),this._flushTemplates()},_render:function(){this._needF
ullRefresh?(this._applyFullRefresh(),this._needFullRefresh=!1):this._keySplices.
length&&(this._sortFn?this._applySplicesUserSort(this._keySplices):this._filterF
n?this._applyFullRefresh():this._applySplicesArrayOrder(this._indexSplices)),thi
s._keySplices=[],this._indexSplices=[];for(var e=this._keyToInstIdx={},t=this._i
nstances.length-1;t>=0;t--){var n=this._instances[t];n.isPlaceholder&&t<this._li
mit?n=this._insertInstance(t,n.__key__):!n.isPlaceholder&&t>=this._limit&&(n=thi
s._downgradeInstance(t,n.__key__)),e[n.__key__]=t,n.isPlaceholder||n.__setProper
ty(this.indexAs,t,!0)}this._pool.length=0,this._setRenderedItemCount(this._insta
nces.length),this.fire("dom-change"),this._tryRenderChunk()},_applyFullRefresh:f
unction(){var e,t=this.collection;if(this._sortFn)e=t?t.getKeys():[];else{e=[];v
ar n=this.items;if(n)for(var r=0;r<n.length;r++)e.push(t.getKey(n[r]))}var s=thi
s;for(this._filterFn&&(e=e.filter(function(e){return s._filterFn(t.getItem(e))})
),this._sortFn&&e.sort(function(e,n){return s._sortFn(t.getItem(e),t.getItem(n))
}),r=0;r<e.length;r++){var i=e[r],o=this._instances[r];o?(o.__key__=i,!o.isPlace
holder&&r<this._limit&&o.__setProperty(this.as,t.getItem(i),!0)):r<this._limit?t
his._insertInstance(r,i):this._insertPlaceholder(r,i)}for(var a=this._instances.
length-1;a>=r;a--)this._detachAndRemoveInstance(a)},_numericSort:function(e,t){r
eturn e-t},_applySplicesUserSort:function(e){for(var t,n,r=this.collection,s={},
i=0;i<e.length&&(n=e[i]);i++){for(var o=0;o<n.removed.length;o++)t=n.removed[o],
s[t]=s[t]?null:-1;for(o=0;o<n.added.length;o++)t=n.added[o],s[t]=s[t]?null:1}var
a=[],l=[];for(t in s)s[t]===-1&&a.push(this._keyToInstIdx[t]),1===s[t]&&l.push(
t);if(a.length)for(a.sort(this._numericSort),i=a.length-1;i>=0;i--){var c=a[i];v
oid 0!==c&&this._detachAndRemoveInstance(c)}var h=this;if(l.length){this._filter
Fn&&(l=l.filter(function(e){return h._filterFn(r.getItem(e))})),l.sort(function(
e,t){return h._sortFn(r.getItem(e),r.getItem(t))});var u=0;for(i=0;i<l.length;i+
+)u=this._insertRowUserSort(u,l[i])}},_insertRowUserSort:function(e,t){for(var n
=this.collection,r=n.getItem(t),s=this._instances.length-1,i=-1;e<=s;){var o=e+s
>>1,a=this._instances[o].__key__,l=this._sortFn(n.getItem(a),r);if(l<0)e=o+1;els
e{if(!(l>0)){i=o;break}s=o-1}}return i<0&&(i=s+1),this._insertPlaceholder(i,t),i
},_applySplicesArrayOrder:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++){fo
r(var r=0;r<t.removed.length;r++)this._detachAndRemoveInstance(t.index);for(r=0;
r<t.addedKeys.length;r++)this._insertPlaceholder(t.index+r,t.addedKeys[r])}},_de
tachInstance:function(e){var t=this._instances[e];if(!t.isPlaceholder){for(var n
=0;n<t._children.length;n++){var r=t._children[n];Polymer.dom(t.root).appendChil
d(r)}return t}},_attachInstance:function(e,t){var n=this._instances[e];n.isPlace
holder||t.insertBefore(n.root,this)},_detachAndRemoveInstance:function(e){var t=
this._detachInstance(e);t&&this._pool.push(t),this._instances.splice(e,1)},_inse
rtPlaceholder:function(e,t){this._instances.splice(e,0,{isPlaceholder:!0,__key__
:t})},_stampInstance:function(e,t){var n={__key__:t};return n[this.as]=this.coll
ection.getItem(t),n[this.indexAs]=e,this.stamp(n)},_insertInstance:function(e,t)
{var n=this._pool.pop();n?(n.__setProperty(this.as,this.collection.getItem(t),!0
),n.__setProperty("__key__",t,!0)):n=this._stampInstance(e,t);var r=this._instan
ces[e+1],s=r&&!r.isPlaceholder?r._children[0]:this,i=Polymer.dom(this).parentNod
e;return Polymer.dom(i).insertBefore(n.root,s),this._instances[e]=n,n},_downgrad
eInstance:function(e,t){var n=this._detachInstance(e);return n&&this._pool.push(
n),n={isPlaceholder:!0,__key__:t},this._instances[e]=n,n},_showHideChildren:func
tion(e){for(var t=0;t<this._instances.length;t++)this._instances[t]._showHideChi
ldren(e)},_forwardInstanceProp:function(e,t,n){if(t==this.as){var r;r=this._sort
Fn||this._filterFn?this.items.indexOf(this.collection.getItem(e.__key__)):e[this
.indexAs],this.set("items."+r,n)}},_forwardInstancePath:function(e,t,n){0===t.in
dexOf(this.as+".")&&this._notifyPath("items."+e.__key__+"."+t.slice(this.as.leng
th+1),n)},_forwardParentProp:function(e,t){for(var n,r=this._instances,s=0;s<r.l
ength&&(n=r[s]);s++)n.isPlaceholder||n.__setProperty(e,t,!0)},_forwardParentPath
:function(e,t){for(var n,r=this._instances,s=0;s<r.length&&(n=r[s]);s++)n.isPlac
eholder||n._notifyPath(e,t,!0)},_forwardItemPath:function(e,t){if(this._keyToIns
tIdx){var n=e.indexOf("."),r=e.substring(0,n<0?e.length:n),s=this._keyToInstIdx[
r],i=this._instances[s];i&&!i.isPlaceholder&&(n>=0?(e=this.as+"."+e.substring(n+
1),i._notifyPath(e,t,!0)):i.__setProperty(this.as,t,!0))}},itemForElement:functi
on(e){var t=this.modelForElement(e);return t&&t[this.as]},keyForElement:function
(e){var t=this.modelForElement(e);return t&&t.__key__},indexForElement:function(
e){var t=this.modelForElement(e);return t&&t[this.indexAs]}}),Polymer({is:"array
-selector",_template:null,properties:{items:{type:Array,observer:"clearSelection
"},multi:{type:Boolean,value:!1,observer:"clearSelection"},selected:{type:Object
,notify:!0},selectedItem:{type:Object,notify:!0},toggle:{type:Boolean,value:!1}}
,clearSelection:function(){if(Array.isArray(this.selected))for(var e=0;e<this.se
lected.length;e++)this.unlinkPaths("selected."+e);else this.unlinkPaths("selecte
d"),this.unlinkPaths("selectedItem");this.multi?this.selected&&!this.selected.le
ngth||(this.selected=[],this._selectedColl=Polymer.Collection.get(this.selected)
):(this.selected=null,this._selectedColl=null),this.selectedItem=null},isSelecte
d:function(e){return this.multi?void 0!==this._selectedColl.getKey(e):this.selec
ted==e},deselect:function(e){if(this.multi){if(this.isSelected(e)){var t=this._s
electedColl.getKey(e);this.arrayDelete("selected",e),this.unlinkPaths("selected.
"+t)}}else this.selected=null,this.selectedItem=null,this.unlinkPaths("selected"
),this.unlinkPaths("selectedItem")},select:function(e){var t=Polymer.Collection.
get(this.items),n=t.getKey(e);if(this.multi)if(this.isSelected(e))this.toggle&&t
his.deselect(e);else{this.push("selected",e);var r=this._selectedColl.getKey(e);
this.linkPaths("selected."+r,"items."+n)}else this.toggle&&e==this.selected?this
.deselect():(this.selected=e,this.selectedItem=e,this.linkPaths("selected","item
s."+n),this.linkPaths("selectedItem","items."+n))}}),Polymer({is:"dom-if",extend
s:"template",_template:null,properties:{if:{type:Boolean,value:!1,observer:"_que
ueRender"},restamp:{type:Boolean,value:!1,observer:"_queueRender"}},behaviors:[P
olymer.Templatizer],_queueRender:function(){this._debounceTemplate(this._render)
},detached:function(){this.parentNode&&(this.parentNode.nodeType!=Node.DOCUMENT_
FRAGMENT_NODE||Polymer.Settings.hasShadow&&this.parentNode instanceof ShadowRoot
)||this._teardownInstance()},attached:function(){this.if&&this.ctor&&this.async(
this._ensureInstance)},render:function(){this._flushTemplates()},_render:functio
n(){this.if?(this.ctor||this.templatize(this),this._ensureInstance(),this._showH
ideChildren()):this.restamp&&this._teardownInstance(),!this.restamp&&this._insta
nce&&this._showHideChildren(),this.if!=this._lastIf&&(this.fire("dom-change"),th
is._lastIf=this.if)},_ensureInstance:function(){var e=Polymer.dom(this).parentNo
de;if(e){var t=Polymer.dom(e);if(this._instance){var n=this._instance._children;
if(n&&n.length){var r=Polymer.dom(this).previousSibling;if(r!==n[n.length-1])for
(var s,i=0;i<n.length&&(s=n[i]);i++)t.insertBefore(s,this)}}else{this._instance=
this.stamp();var o=this._instance.root;t.insertBefore(o,this)}}},_teardownInstan
ce:function(){if(this._instance){var e=this._instance._children;if(e&&e.length)f
or(var t,n=Polymer.dom(Polymer.dom(e[0]).parentNode),r=0;r<e.length&&(t=e[r]);r+
+)n.removeChild(t);this._instance=null}},_showHideChildren:function(){var e=this
.__hideTemplateChildren__||!this.if;this._instance&&this._instance._showHideChil
dren(e)},_forwardParentProp:function(e,t){this._instance&&this._instance.__setPr
operty(e,t,!0)},_forwardParentPath:function(e,t){this._instance&&this._instance.
_notifyPath(e,t,!0)}}),Polymer({is:"dom-bind",extends:"template",_template:null,
created:function(){var e=this;Polymer.RenderStatus.whenReady(function(){"loading
"==document.readyState?document.addEventListener("DOMContentLoaded",function(){e
._markImportsReady()}):e._markImportsReady()})},_ensureReady:function(){this._re
adied||this._readySelf()},_markImportsReady:function(){this._importsReady=!0,thi
s._ensureReady()},_registerFeatures:function(){this._prepConstructor()},_insertC
hildren:function(){var e=Polymer.dom(Polymer.dom(this).parentNode);e.insertBefor
e(this.root,this)},_removeChildren:function(){if(this._children)for(var e=0;e<th
is._children.length;e++)this.root.appendChild(this._children[e])},_initFeatures:
function(){},_scopeElementClass:function(e,t){return this.dataHost?this.dataHost
._scopeElementClass(e,t):t},_configureInstanceProperties:function(){},_prepConfi
gure:function(){var e={};for(var t in this._propertyEffects)e[t]=this[t];var n=t
his._setupConfigure;this._setupConfigure=function(){n.call(this,e)}},attached:fu
nction(){this._importsReady&&this.render()},detached:function(){this._removeChil
dren()},render:function(){this._ensureReady(),this._children||(this._template=th
is,this._prepAnnotations(),this._prepEffects(),this._prepBehaviors(),this._prepC
onfigure(),this._prepBindings(),this._prepPropertyInfo(),Polymer.Base._initFeatu
res.call(this),this._children=Polymer.TreeApi.arrayCopyChildNodes(this.root)),th
is._insertChildren(),this.fire("dom-change")}})</script> <script> window.Swarmin
gBehaviors = window.SwarmingBehaviors || {}; |
| 5 (function(){ | 5 (function(){ |
| 6 // This behavior wraps up all the shared swarming functionality. | 6 // This behavior wraps up all the shared swarming functionality. |
| 7 SwarmingBehaviors.CommonBehavior = { | 7 SwarmingBehaviors.CommonBehavior = { |
| 8 | 8 |
| 9 _botLink: function(bot_id) { | 9 _botLink: function(bot_id) { |
| 10 if (!bot_id) { | 10 if (!bot_id) { |
| 11 return undefined; | 11 return undefined; |
| 12 } | 12 } |
| 13 return "/bot?id=" + bot_id; | 13 return "/bot?id=" + bot_id; |
| 14 }, | 14 }, |
| 15 | 15 |
| 16 // Create a link to a bot list with the preloaded filters and columns. | 16 // Create a link to a bot list with the preloaded filters and columns. |
| 17 // filters should be an array of {key:String, value:String} and | 17 // filters - Array<Object> or Array<String>. If Array<Object>, Object |
| 18 // columns should be an array of Strings. | 18 // should be {key:String, value:String} or |
| 19 // {key:String, value:Array<String>}. If Array<String>, the Strings |
| 20 // should be valid filters (e.g. "foo:bar"). |
| 21 // columns - Array<String> , the the column names that should be shown. |
| 19 _botListLink: function(filters, columns) { | 22 _botListLink: function(filters, columns) { |
| 20 filters = filters || []; | 23 filters = filters || []; |
| 21 columns = columns || []; | 24 columns = columns || []; |
| 22 var fArr = []; | 25 var fArr = []; |
| 23 filters.forEach(function(f){ | 26 filters.forEach(function(f){ |
| 24 fArr.push(f.key + ":" + f.value); | 27 if (f.key && f.value) { |
| 28 if (Array.isArray(f.value)) { |
| 29 f.value.forEach(function(v) { |
| 30 fArr.push(f.key + ":" + v); |
| 31 }); |
| 32 } else { |
| 33 fArr.push(f.key + ":" + f.value); |
| 34 } |
| 35 } else { |
| 36 fArr.push(f); |
| 37 } |
| 25 }); | 38 }); |
| 26 var obj = { | 39 var obj = { |
| 27 f: fArr, | 40 f: fArr, |
| 28 c: columns, | 41 c: columns, |
| 29 } | 42 } |
| 30 return "/botlist?" + sk.query.fromParamSet(obj); | 43 return "/botlist?" + sk.query.fromParamSet(obj); |
| 31 }, | 44 }, |
| 32 | 45 |
| 33 // Create a link to a bot in Google Cloud Console. Cloud console will try | 46 // Create a link to a bot in Google Cloud Console. Cloud console will try |
| 34 // to find the bot in the last project the user was logged in as, which | 47 // to find the bot in the last project the user was logged in as, which |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 // task abcefgh0 is the "canonical" task id. The first try has the id | 172 // task abcefgh0 is the "canonical" task id. The first try has the id |
| 160 // abcefgh1. If there is a second (transparent retry), it will be | 173 // abcefgh1. If there is a second (transparent retry), it will be |
| 161 // abcefgh2. We almost always want to link to the canonical one, | 174 // abcefgh2. We almost always want to link to the canonical one, |
| 162 // because the milo output (if any) will only be generated for | 175 // because the milo output (if any) will only be generated for |
| 163 // abcefgh0, not abcefgh1 or abcefgh2. | 176 // abcefgh0, not abcefgh1 or abcefgh2. |
| 164 taskId = taskId.substring(0, taskId.length - 1) + "0"; | 177 taskId = taskId.substring(0, taskId.length - 1) + "0"; |
| 165 } | 178 } |
| 166 return "/task?id=" + taskId; | 179 return "/task?id=" + taskId; |
| 167 }, | 180 }, |
| 168 | 181 |
| 182 // Create a link to a task list with the preloaded filters and columns. |
| 183 // filters - Array<Object> or Array<String>. If Array<Object>, Object |
| 184 // should be {key:String, value:String} or |
| 185 // {key:String, value:Array<String>}. If Array<String>, the Strings |
| 186 // should be valid filters (e.g. "foo:bar"). |
| 187 // columns - Array<String> , the the column names that should be shown. |
| 188 _taskListLink: function(filters, columns) { |
| 189 filters = filters || []; |
| 190 columns = columns || []; |
| 191 var fArr = []; |
| 192 filters.forEach(function(f){ |
| 193 if (f.key && f.value) { |
| 194 if (Array.isArray(f.value)) { |
| 195 f.value.forEach(function(v) { |
| 196 fArr.push(f.key + ":" + v); |
| 197 }); |
| 198 } else { |
| 199 fArr.push(f.key + ":" + f.value); |
| 200 } |
| 201 } else { |
| 202 fArr.push(f); |
| 203 } |
| 204 }); |
| 205 var obj = { |
| 206 f: fArr, |
| 207 c: columns, |
| 208 } |
| 209 return "/tasklist?" + sk.query.fromParamSet(obj); |
| 210 }, |
| 211 |
| 169 // _timeDiffApprox returns the approximate difference between now and | 212 // _timeDiffApprox returns the approximate difference between now and |
| 170 // the specified date. | 213 // the specified date. |
| 171 _timeDiffApprox: function(date){ | 214 _timeDiffApprox: function(date){ |
| 172 if (!date) { | 215 if (!date) { |
| 173 return "eons"; | 216 return "eons"; |
| 174 } | 217 } |
| 175 return sk.human.diffDate(date.getTime()); | 218 return sk.human.diffDate(date.getTime()); |
| 176 }, | 219 }, |
| 177 | 220 |
| 178 // timeDiffExact returns the exact difference between the two specified | 221 // timeDiffExact returns the exact difference between the two specified |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 console.log("Reason for failure of request to " + this._url, reason); | 342 console.log("Reason for failure of request to " + this._url, reason); |
| 300 sk.errorMessage("Could not get next set of results. Try reloading the
page?", 0); | 343 sk.errorMessage("Could not get next set of results. Try reloading the
page?", 0); |
| 301 this.set("busy", false); | 344 this.set("busy", false); |
| 302 }.bind(this)); | 345 }.bind(this)); |
| 303 }, | 346 }, |
| 304 | 347 |
| 305 _noMore: function(cursor) { | 348 _noMore: function(cursor) { |
| 306 return cursor === END; | 349 return cursor === END; |
| 307 } | 350 } |
| 308 }); | 351 }); |
| 309 })(); </script> </dom-module><script>Polymer({is:"iron-a11y-keys",behaviors:[P
olymer.IronA11yKeysBehavior],properties:{target:{type:Object,observer:"_targetCh
anged"},keys:{type:String,reflectToAttribute:!0,observer:"_keysChanged"}},attach
ed:function(){this.target||(this.target=this.parentNode)},_targetChanged:functio
n(e){this.keyEventTarget=e},_keysChanged:function(){this.removeOwnKeyBindings(),
this.addOwnKeyBinding(this.keys,"_fireKeysPressed")},_fireKeysPressed:function(e
){this.fire("keys-pressed",e.detail,{})}})</script> <script>Polymer({is:"iron-se
lector",behaviors:[Polymer.IronMultiSelectableBehavior]})</script> <script>Polym
er.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties:
{validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,v
alue:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validato
r"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers
:["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehav
iorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){thi
s.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-in
valid")},hasValidator:function(){return null!=this._validator},validate:function
(a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:functi
on(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidato
r:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatable
BehaviorMeta.byKey(this.validator)}}</script> <script>Polymer.IronFormElementBeh
avior={properties:{name:{type:String},value:{notify:!0,type:String},required:{ty
pe:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("i
ron-form-element-register")},detached:function(){this._parentForm&&this._parentF
orm.fire("iron-form-element-unregister",{target:this})}}</script> <script>Polyme
r.IronCheckedElementBehaviorImpl={properties:{checked:{type:Boolean,value:!1,ref
lectToAttribute:!0,notify:!0,observer:"_checkedChanged"},toggles:{type:Boolean,v
alue:!0,reflectToAttribute:!0},value:{type:String,value:"on",observer:"_valueCha
nged"}},observers:["_requiredChanged(required)"],created:function(){this._hasIro
nCheckedElementBehavior=!0},_getValidity:function(e){return this.disabled||!this
.required||this.checked},_requiredChanged:function(){this.required?this.setAttri
bute("aria-required","true"):this.removeAttribute("aria-required")},_checkedChan
ged:function(){this.active=this.checked,this.fire("iron-change")},_valueChanged:
function(){void 0!==this.value&&null!==this.value||(this.value="on")}},Polymer.I
ronCheckedElementBehavior=[Polymer.IronFormElementBehavior,Polymer.IronValidatab
leBehavior,Polymer.IronCheckedElementBehaviorImpl]</script> <script>Polymer.Pape
rCheckedElementBehaviorImpl={_checkedChanged:function(){Polymer.IronCheckedEleme
ntBehaviorImpl._checkedChanged.call(this),this.hasRipple()&&(this.checked?this._
ripple.setAttribute("checked",""):this._ripple.removeAttribute("checked"))},_but
tonStateChanged:function(){Polymer.PaperRippleBehavior._buttonStateChanged.call(
this),this.disabled||this.isAttached&&(this.checked=this.active)}},Polymer.Paper
CheckedElementBehavior=[Polymer.PaperInkyFocusBehavior,Polymer.IronCheckedElemen
tBehavior,Polymer.PaperCheckedElementBehaviorImpl]</script> <dom-module id="pape
r-checkbox" assetpath="/res/imp/bower_components/paper-checkbox/"> <template str
ip-whitespace=""> <style>:host{display:inline-block;white-space:nowrap;cursor:po
inter;--calculated-paper-checkbox-size:var(--paper-checkbox-size, 18px);--calcul
ated-paper-checkbox-ink-size:var(--paper-checkbox-ink-size, -1px);@apply(--paper
-font-common-base);line-height:0;-webkit-tap-highlight-color:transparent}:host([
hidden]){display:none!important}:host(:focus){outline:0}.hidden{display:none}#ch
eckboxContainer{display:inline-block;position:relative;width:var(--calculated-pa
per-checkbox-size);height:var(--calculated-paper-checkbox-size);min-width:var(--
calculated-paper-checkbox-size);margin:var(--paper-checkbox-margin,initial);vert
ical-align:var(--paper-checkbox-vertical-align,middle);background-color:var(--pa
per-checkbox-unchecked-background-color,transparent)}#ink{position:absolute;top:
calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-c
heckbox-size))/ 2);left:calc(0px - (var(--calculated-paper-checkbox-ink-size) -
var(--calculated-paper-checkbox-size))/ 2);width:var(--calculated-paper-checkbox
-ink-size);height:var(--calculated-paper-checkbox-ink-size);color:var(--paper-ch
eckbox-unchecked-ink-color,var(--primary-text-color));opacity:.6;pointer-events:
none}:host-context([dir=rtl]) #ink{right:calc(0px - (var(--calculated-paper-chec
kbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);left:auto}#ink[check
ed]{color:var(--paper-checkbox-checked-ink-color,var(--primary-color))}#checkbox
{position:relative;box-sizing:border-box;height:100%;border:solid 2px;border-col
or:var(--paper-checkbox-unchecked-color,var(--primary-text-color));border-radius
:2px;pointer-events:none;-webkit-transition:background-color 140ms,border-color
140ms;transition:background-color 140ms,border-color 140ms}#checkbox.checked #ch
eckmark{-webkit-animation:checkmark-expand 140ms ease-out forwards;animation:che
ckmark-expand 140ms ease-out forwards}@-webkit-keyframes checkmark-expand{0%{-we
bkit-transform:scale(0,0) rotate(45deg)}100%{-webkit-transform:scale(1,1) rotate
(45deg)}}@keyframes checkmark-expand{0%{transform:scale(0,0) rotate(45deg)}100%{
transform:scale(1,1) rotate(45deg)}}#checkbox.checked{background-color:var(--pap
er-checkbox-checked-color,var(--primary-color));border-color:var(--paper-checkbo
x-checked-color,var(--primary-color))}#checkmark{position:absolute;width:36%;hei
ght:70%;border-style:solid;border-top:none;border-left:none;border-right-width:c
alc(2/15 * var(--calculated-paper-checkbox-size));border-bottom-width:calc(2/15
* var(--calculated-paper-checkbox-size));border-color:var(--paper-checkbox-check
mark-color,#fff);-webkit-transform-origin:97% 86%;transform-origin:97% 86%;box-s
izing:content-box}:host-context([dir=rtl]) #checkmark{-webkit-transform-origin:5
0% 14%;transform-origin:50% 14%}#checkboxLabel{position:relative;display:inline-
block;vertical-align:middle;padding-left:var(--paper-checkbox-label-spacing,8px)
;white-space:normal;line-height:normal;color:var(--paper-checkbox-label-color,va
r(--primary-text-color));@apply(--paper-checkbox-label)}:host([checked]) #checkb
oxLabel{color:var(--paper-checkbox-label-checked-color,var(--paper-checkbox-labe
l-color,var(--primary-text-color)));@apply(--paper-checkbox-label-checked)}:host
-context([dir=rtl]) #checkboxLabel{padding-right:var(--paper-checkbox-label-spac
ing,8px);padding-left:0}#checkboxLabel[hidden]{display:none}:host([disabled]) #c
heckbox{opacity:.5;border-color:var(--paper-checkbox-unchecked-color,var(--prima
ry-text-color))}:host([disabled][checked]) #checkbox{background-color:var(--pape
r-checkbox-unchecked-color,var(--primary-text-color));opacity:.5}:host([disabled
]) #checkboxLabel{opacity:.65}#checkbox.invalid:not(.checked){border-color:var(-
-paper-checkbox-error-color,var(--error-color))}</style> <div id="checkboxContai
ner"> <div id="checkbox" class$="[[_computeCheckboxClass(checked, invalid)]]"> <
div id="checkmark" class$="[[_computeCheckmarkClass(checked)]]"></div> </div> </
div> <div id="checkboxLabel"><content></content></div> </template> <script>Polym
er({is:"paper-checkbox",behaviors:[Polymer.PaperCheckedElementBehavior],hostAttr
ibutes:{role:"checkbox","aria-checked":!1,tabindex:0},properties:{ariaActiveAttr
ibute:{type:String,value:"aria-checked"}},attached:function(){var e=this.getComp
utedStyleValue("--calculated-paper-checkbox-ink-size");if("-1px"===e){var t=pars
eFloat(this.getComputedStyleValue("--calculated-paper-checkbox-size")),a=Math.fl
oor(8/3*t);a%2!==t%2&&a++,this.customStyle["--paper-checkbox-ink-size"]=a+"px",t
his.updateStyles()}},_computeCheckboxClass:function(e,t){var a="";return e&&(a+=
"checked "),t&&(a+="invalid"),a},_computeCheckmarkClass:function(e){return e?"":
"hidden"},_createRipple:function(){return this._rippleContainer=this.$.checkboxC
ontainer,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)}})</script>
</dom-module> <script>Polymer({is:"iron-input",extends:"input",behaviors:[Polym
er.IronValidatableBehavior],properties:{bindValue:{observer:"_bindValueChanged",
type:String},preventInvalidInput:{type:Boolean},allowedPattern:{type:String,obse
rver:"_allowedPatternChanged"},_previousValidInput:{type:String,value:""},_patte
rnAlreadyChecked:{type:Boolean,value:!1}},listeners:{input:"_onInput",keypress:"
_onKeypress"},registered:function(){this._canDispatchEventOnDisabled()||(this._o
rigDispatchEvent=this.dispatchEvent,this.dispatchEvent=this._dispatchEventFirefo
xIE)},created:function(){Polymer.IronA11yAnnouncer.requestAvailability()},_canDi
spatchEventOnDisabled:function(){var e=document.createElement("input"),t=!1;e.di
sabled=!0,e.addEventListener("feature-check-dispatch-event",function(){t=!0});tr
y{e.dispatchEvent(new Event("feature-check-dispatch-event"))}catch(e){}return t}
,_dispatchEventFirefoxIE:function(){var e=this.disabled;this.disabled=!1,this._o
rigDispatchEvent.apply(this,arguments),this.disabled=e},get _patternRegExp(){var
e;if(this.allowedPattern)e=new RegExp(this.allowedPattern);else switch(this.typ
e){case"number":e=/[0-9.,e-]/}return e},ready:function(){this.bindValue=this.val
ue},_bindValueChanged:function(){this.value!==this.bindValue&&(this.value=this.b
indValue||0===this.bindValue||this.bindValue===!1?this.bindValue:""),this.fire("
bind-value-changed",{value:this.bindValue})},_allowedPatternChanged:function(){t
his.preventInvalidInput=!!this.allowedPattern},_onInput:function(){if(this.preve
ntInvalidInput&&!this._patternAlreadyChecked){var e=this._checkPatternValidity()
;e||(this._announceInvalidCharacter("Invalid string of characters not entered.")
,this.value=this._previousValidInput)}this.bindValue=this.value,this._previousVa
lidInput=this.value,this._patternAlreadyChecked=!1},_isPrintable:function(e){var
t=8==e.keyCode||9==e.keyCode||13==e.keyCode||27==e.keyCode,i=19==e.keyCode||20=
=e.keyCode||45==e.keyCode||46==e.keyCode||144==e.keyCode||145==e.keyCode||e.keyC
ode>32&&e.keyCode<41||e.keyCode>111&&e.keyCode<124;return!(t||0==e.charCode&&i)}
,_onKeypress:function(e){if(this.preventInvalidInput||"number"===this.type){var
t=this._patternRegExp;if(t&&!(e.metaKey||e.ctrlKey||e.altKey)){this._patternAlre
adyChecked=!0;var i=String.fromCharCode(e.charCode);this._isPrintable(e)&&!t.tes
t(i)&&(e.preventDefault(),this._announceInvalidCharacter("Invalid character "+i+
" not entered."))}}},_checkPatternValidity:function(){var e=this._patternRegExp;
if(!e)return!0;for(var t=0;t<this.value.length;t++)if(!e.test(this.value[t]))ret
urn!1;return!0},validate:function(){var e=this.checkValidity();return e&&(this.r
equired&&""===this.value?e=!1:this.hasValidator()&&(e=Polymer.IronValidatableBeh
avior.validate.call(this,this.value))),this.invalid=!e,this.fire("iron-input-val
idate"),e},_announceInvalidCharacter:function(e){this.fire("iron-announce",{text
:e})}})</script> <script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.Ne
xtLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImp
l={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type:
Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput:
{type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String
},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:Stri
ng},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alw
aysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},valid
ator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolea
n,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number},
maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},n
ame:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,valu
e:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{
type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{ty
pe:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_aria
LabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached
"},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex:
0},get inputElement(){return this.$.input},get _focusableElement(){return this.i
nputElement},registered:function(){this._typesThatHaveText=["date","datetime","d
atetime-local","month","time","week","file"]},attached:function(){this._updateAr
iaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElem
ent.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t)
{return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.tar
get;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribe
dBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID+
+;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy
,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler
:function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focuse
d&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:funct
ion(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttr
ibute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),thi
s._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&thi
s.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElemen
t.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputEleme
nt.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t)
{return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).quer
ySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id:
(t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ari
aLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEv
ent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged
:function(){if(this.autofocus&&this._focusableElement){var e=document.activeElem
ent,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElem
ent;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.Iro
nControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</scri
pt> <script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attach
ed:function(){this.fire("addon-attached")},update:function(t){}}</script> <dom-m
odule id="paper-input-char-counter" assetpath="/res/imp/bower_components/paper-i
nput/"> <template> <style>:host{display:inline-block;float:right;@apply(--paper-
font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!im
portant}:host-context([dir=rtl]){float:left}</style> <span>[[_charCounterStr]]</
span> </template> </dom-module> <script>Polymer({is:"paper-input-char-counter",b
ehaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:Str
ing,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e=
t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&(
e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</scr
ipt> <dom-module id="paper-input-container" assetpath="/res/imp/bower_components
/paper-input/"> <template> <style>:host{display:block;padding:8px 0;@apply(--pap
er-input-container)}:host([inline]){display:inline-block}:host([disabled]){point
er-events:none;opacity:.33;@apply(--paper-input-container-disabled)}:host([hidde
n]){display:none!important}.floated-label-placeholder{@apply(--paper-font-captio
n)}.underline{position:relative}.focused-line{@apply(--layout-fit);background:va
r(--paper-input-container-focus-color,--primary-color);height:2px;-webkit-transf
orm-origin:center center;transform-origin:center center;-webkit-transform:scale3
d(0,1,1);transform:scale3d(0,1,1);@apply(--paper-input-container-underline-focus
)}.underline.is-highlighted .focused-line{-webkit-transform:none;transform:none;
-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(--pap
er-transition-easing)}.underline.is-invalid .focused-line{background:var(--paper
-input-container-invalid-color,--error-color);-webkit-transform:none;transform:n
one;-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(-
-paper-transition-easing)}.unfocused-line{@apply(--layout-fit);background:var(--
paper-input-container-color,--secondary-text-color);height:1px;@apply(--paper-in
put-container-underline)}:host([disabled]) .unfocused-line{border-bottom:1px das
hed;border-color:var(--paper-input-container-color,--secondary-text-color);backg
round:0 0;@apply(--paper-input-container-underline-disabled)}.label-and-input-co
ntainer{@apply(--layout-flex-auto);@apply(--layout-relative);width:100%;max-widt
h:100%}.input-content{@apply(--layout-horizontal);@apply(--layout-center);positi
on:relative}.input-content ::content .paper-input-label,.input-content ::content
label{position:absolute;top:0;right:0;left:0;width:100%;font:inherit;color:var(
--paper-input-container-color,--secondary-text-color);-webkit-transition:-webkit
-transform .25s,width .25s;transition:transform .25s,width .25s;-webkit-transfor
m-origin:left top;transform-origin:left top;@apply(--paper-font-common-nowrap);@
apply(--paper-font-subhead);@apply(--paper-input-container-label);@apply(--paper
-transition-easing)}.input-content.label-is-floating ::content .paper-input-labe
l,.input-content.label-is-floating ::content label{-webkit-transform:translateY(
-75%) scale(.75);transform:translateY(-75%) scale(.75);width:133%;@apply(--paper
-input-container-label-floating)}:host-context([dir=rtl]) .input-content.label-i
s-floating ::content .paper-input-label,:host-context([dir=rtl]) .input-content.
label-is-floating ::content label{width:100%;-webkit-transform-origin:right top;
transform-origin:right top}.input-content.label-is-highlighted ::content .paper-
input-label,.input-content.label-is-highlighted ::content label{color:var(--pape
r-input-container-focus-color,--primary-color);@apply(--paper-input-container-la
bel-focus)}.input-content.is-invalid ::content .paper-input-label,.input-content
.is-invalid ::content label{color:var(--paper-input-container-invalid-color,--er
ror-color)}.input-content.label-is-hidden ::content .paper-input-label,.input-co
ntent.label-is-hidden ::content label{visibility:hidden}.input-content ::content
.paper-input-input,.input-content ::content input,.input-content ::content iron
-autogrow-textarea,.input-content ::content textarea{position:relative;outline:0
;box-shadow:none;padding:0;width:100%;max-width:100%;background:0 0;border:none;
color:var(--paper-input-container-input-color,--primary-text-color);-webkit-appe
arance:none;text-align:inherit;vertical-align:bottom;@apply(--paper-font-subhead
);@apply(--paper-input-container-input)}::content [prefix]{@apply(--paper-font-s
ubhead);@apply(--paper-input-prefix);@apply(--layout-flex-none)}::content [suffi
x]{@apply(--paper-font-subhead);@apply(--paper-input-suffix);@apply(--layout-fle
x-none)}.input-content ::content input{min-width:0}.input-content ::content text
area{resize:none}.add-on-content{position:relative}.add-on-content.is-invalid ::
content *{color:var(--paper-input-container-invalid-color,--error-color)}.add-on
-content.is-highlighted ::content *{color:var(--paper-input-container-focus-colo
r,--primary-color)}</style> <template is="dom-if" if="[[!noLabelFloat]]"> <div c
lass="floated-label-placeholder" aria-hidden="true"> </div> </template> <di
v class$="[[_computeInputContentClass(noLabelFloat,alwaysFloatLabel,focused,inva
lid,_inputHasContent)]]"> <content select="[prefix]" id="prefix"></content> <div
class="label-and-input-container" id="labelAndInputContainer"> <content select=
":not([add-on]):not([prefix]):not([suffix])"></content> </div> <content select="
[suffix]"></content> </div> <div class$="[[_computeUnderlineClass(focused,invali
d)]]"> <div class="unfocused-line"></div> <div class="focused-line"></div> </div
> <div class$="[[_computeAddOnContentClass(focused,invalid)]]"> <content id="add
OnContent" select="[add-on]"></content> </div> </template> </dom-module> <script
>Polymer({is:"paper-input-container",properties:{noLabelFloat:{type:Boolean,valu
e:!1},alwaysFloatLabel:{type:Boolean,value:!1},attrForValue:{type:String,value:"
bind-value"},autoValidate:{type:Boolean,value:!1},invalid:{observer:"_invalidCha
nged",type:Boolean,value:!1},focused:{readOnly:!0,type:Boolean,value:!1,notify:!
0},_addons:{type:Array},_inputHasContent:{type:Boolean,value:!1},_inputSelector:
{type:String,value:"input,textarea,.paper-input-input"},_boundOnFocus:{type:Func
tion,value:function(){return this._onFocus.bind(this)}},_boundOnBlur:{type:Funct
ion,value:function(){return this._onBlur.bind(this)}},_boundOnInput:{type:Functi
on,value:function(){return this._onInput.bind(this)}},_boundValueChanged:{type:F
unction,value:function(){return this._onValueChanged.bind(this)}}},listeners:{"a
ddon-attached":"_onAddonAttached","iron-input-validate":"_onIronInputValidate"},
get _valueChangedEvent(){return this.attrForValue+"-changed"},get _propertyForVa
lue(){return Polymer.CaseMap.dashToCamelCase(this.attrForValue)},get _inputEleme
nt(){return Polymer.dom(this).querySelector(this._inputSelector)},get _inputElem
entValue(){return this._inputElement[this._propertyForValue]||this._inputElement
.value},ready:function(){this._addons||(this._addons=[]),this.addEventListener("
focus",this._boundOnFocus,!0),this.addEventListener("blur",this._boundOnBlur,!0)
},attached:function(){this.attrForValue?this._inputElement.addEventListener(this
._valueChangedEvent,this._boundValueChanged):this.addEventListener("input",this.
_onInput),""!=this._inputElementValue?this._handleValueAndAutoValidate(this._inp
utElement):this._handleValue(this._inputElement)},_onAddonAttached:function(t){t
his._addons||(this._addons=[]);var n=t.target;this._addons.indexOf(n)===-1&&(thi
s._addons.push(n),this.isAttached&&this._handleValue(this._inputElement))},_onFo
cus:function(){this._setFocused(!0)},_onBlur:function(){this._setFocused(!1),thi
s._handleValueAndAutoValidate(this._inputElement)},_onInput:function(t){this._ha
ndleValueAndAutoValidate(t.target)},_onValueChanged:function(t){this._handleValu
eAndAutoValidate(t.target)},_handleValue:function(t){var n=this._inputElementVal
ue;n||0===n||"number"===t.type&&!t.checkValidity()?this._inputHasContent=!0:this
._inputHasContent=!1,this.updateAddons({inputElement:t,value:n,invalid:this.inva
lid})},_handleValueAndAutoValidate:function(t){if(this.autoValidate){var n;n=t.v
alidate?t.validate(this._inputElementValue):t.checkValidity(),this.invalid=!n}th
is._handleValue(t)},_onIronInputValidate:function(t){this.invalid=this._inputEle
ment.invalid},_invalidChanged:function(){this._addons&&this.updateAddons({invali
d:this.invalid})},updateAddons:function(t){for(var n,e=0;n=this._addons[e];e++)n
.update(t)},_computeInputContentClass:function(t,n,e,i,a){var u="input-content";
if(t)a&&(u+=" label-is-hidden");else{var o=this.querySelector("label");n||a?(u+=
" label-is-floating",this.$.labelAndInputContainer.style.position="static",i?u+=
" is-invalid":e&&(u+=" label-is-highlighted")):o&&(this.$.labelAndInputContainer
.style.position="relative")}return u},_computeUnderlineClass:function(t,n){var e
="underline";return n?e+=" is-invalid":t&&(e+=" is-highlighted"),e},_computeAddO
nContentClass:function(t,n){var e="add-on-content";return n?e+=" is-invalid":t&&
(e+=" is-highlighted"),e}})</script> <dom-module id="paper-input-error" assetpat
h="/res/imp/bower_components/paper-input/"> <template> <style>:host{display:inli
ne-block;visibility:hidden;color:var(--paper-input-container-invalid-color,--err
or-color);@apply(--paper-font-caption);@apply(--paper-input-error);position:abso
lute;left:0;right:0}:host([invalid]){visibility:visible};</style> <content></con
tent> </template> </dom-module> <script>Polymer({is:"paper-input-error",behavior
s:[Polymer.PaperInputAddonBehavior],properties:{invalid:{readOnly:!0,reflectToAt
tribute:!0,type:Boolean}},update:function(e){this._setInvalid(e.invalid)}})</scr
ipt> <dom-module id="paper-input" assetpath="/res/imp/bower_components/paper-inp
ut/"> <template> <style>:host{display:block}:host([focused]){outline:0}:host([hi
dden]){display:none!important}input::-webkit-input-placeholder{color:var(--paper
-input-container-color,--secondary-text-color)}input:-moz-placeholder{color:var(
--paper-input-container-color,--secondary-text-color)}input::-moz-placeholder{co
lor:var(--paper-input-container-color,--secondary-text-color)}input:-ms-input-pl
aceholder{color:var(--paper-input-container-color,--secondary-text-color)}label{
pointer-events:none}</style> <paper-input-container no-label-float="[[noLabelFlo
at]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholde
r)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[inva
lid]]"> <content select="[prefix]"></content> <label hidden$="[[!label]]" aria-h
idden="true" for="input">[[label]]</label> <input is="iron-input" id="input" ari
a-labelledby$="[[_ariaLabelledBy]]" aria-describedby$="[[_ariaDescribedBy]]" dis
abled$="[[disabled]]" title$="[[title]]" bind-value="{{value}}" invalid="{{inval
id}}" prevent-invalid-input="[[preventInvalidInput]]" allowed-pattern="[[allowed
Pattern]]" validator="[[validator]]" type$="[[type]]" pattern$="[[pattern]]" req
uired$="[[required]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]
" inputmode$="[[inputmode]]" minlength$="[[minlength]]" maxlength$="[[maxlength]
]" min$="[[min]]" max$="[[max]]" step$="[[step]]" name$="[[name]]" placeholder$=
"[[placeholder]]" readonly$="[[readonly]]" list$="[[list]]" size$="[[size]]" aut
ocapitalize$="[[autocapitalize]]" autocorrect$="[[autocorrect]]" on-change="_onC
hange" tabindex$="[[tabindex]]" autosave$="[[autosave]]" results$="[[results]]"
accept$="[[accept]]" multiple$="[[multiple]]"> <content select="[suffix]"></cont
ent> <template is="dom-if" if="[[errorMessage]]"> <paper-input-error aria-live="
assertive">[[errorMessage]]</paper-input-error> </template> <template is="dom-if
" if="[[charCounter]]"> <paper-input-char-counter></paper-input-char-counter> </
template> </paper-input-container> </template> </dom-module> <script>Polymer({is
:"paper-input",behaviors:[Polymer.IronFormElementBehavior,Polymer.PaperInputBeha
vior]})</script> <dom-module id="query-column-filter-style" assetpath="/res/imp/
common/"> <template> <style>:host{display:block;font-family:sans-serif}#filter{m
argin:0 5px}.container{min-height:120px;width:100%}.item{border-bottom:1px solid
#EEE;max-width:250px;min-height:1em;min-width:100px;padding:.1em .2em;line-heig
ht:1.5em}.header{height:2em;padding:.25em;line-height:2em}.selector{border:1px s
olid #000;margin:0 5px;max-height:200px;min-height:130px;min-width:275px;overflo
w-y:auto}.pointable,.selectable{cursor:pointer}.selectable:hover{background-colo
r:#A6CEE3}.iron-selected{background-color:#1F78B4;color:#fff}.icons{cursor:point
er;height:20px;margin:2px;width:20px;flex-shrink:0}.side-by-side{display:inline-
block;vertical-align:top}.bold{font-weight:700}paper-checkbox{max-height:2em;mar
gin:2px;--paper-checkbox-checked-color:black;--paper-checkbox-checked-ink-color:
black;--paper-checkbox-unchecked-color:black;--paper-checkbox-unchecked-ink-colo
r:black;--paper-checkbox-label-color:black}</style> </template> </dom-module> <s
cript>!function(){var r=":",t=function(r,t){if(!t)return{idx:0,part:""};if(!r)re
turn{idx:-1};t=t.trim().toLocaleLowerCase(),r=r.toLocaleLowerCase();for(var i=t.
split(" "),e=0;e<i.length;e++){var n=r.indexOf(i[e]);if(n!==-1)return{idx:n,part
:i[e]}}return{idx:-1}},i=function(t,i,e){if(!i)return!0;if(!t)return!1;if(t=t.to
LocaleLowerCase(),i=i.trim().toLocaleLowerCase(),i.indexOf(" ")!==-1||i.indexOf(
":")===-1)return!1;var n=i.split(r,1)[0],a=i.substring(n.length+r.length);return
e?t===n:t.startsWith(a)};SwarmingBehaviors.QueryColumnFilter=[SwarmingBehaviors
.CommonBehavior,{properties:{dimensions:{type:Array},primary_map:{type:Object},p
rimary_arr:{type:Array},special_columns:{type:Array,value:function(){return[]}},
filter:{type:Function,computed:"_makeFilter(_filters.*)",notify:!0},FILTER_SEP:{
type:String,value:r},_filters:{type:Array},_limit:{type:Number},_primaryItems:{t
ype:Array,computed:"_primary(_query, primary_map, primary_arr, columns.*)"},_pri
marySelected:{type:String,value:""},_query:{type:String},_secondaryItems:{type:A
rray,computed:"_secondary(_primarySelected, _query, primary_map)"}},_addFilter:f
unction(r){var t=r.model.item;if(!this._cantAddFilter(this._primarySelected,t)){
var i=this._primarySelected+this.FILTER_SEP+t;this.push("_filters",i)}},_removeF
ilter:function(r){var t=r.model.fil;if(!this._cantRemoveFilter(t)){var i=this._f
ilters.indexOf(t);i!==-1&&this.splice("_filters",i,1)}},_cantAddFilter:function(
r,t){if(!r||!t)return!0;var i=r+this.FILTER_SEP+t;return this._filters.indexOf(i
)!==-1},_cantRemoveFilter:function(r){return!r||this._filters.indexOf(r)===-1},_
makeFilter:function(){var r={};this._filters.forEach(function(t){var i=t.indexOf
(this.FILTER_SEP),e=t.slice(0,i),n=t.slice(i+this.FILTER_SEP.length),a=r[e]||[];
a.push(n),r[e]=a}.bind(this));var t=this._filterMap||{};return function(i){var e
=!0;for(primary in r){var n=r[primary],a=t[primary];a||(a=function(r,t){var i=th
is._attribute(r,primary);return i.indexOf(t)!==-1}.bind(this)),a&&n.forEach(func
tion(r){e=e&&a.bind(this)(i,r)}.bind(this))}return e}},_manuallyAddFilter:functi
on(){var r=this._query.trim().split(":");if(2!=r.length)return void sk.errorMess
age('Invalid filter. Should be like "foo:bar"',5e3);var t=r.join(":");return th
is._filters.indexOf(t)!==-1?void sk.errorMessage('Filter "'+t+'" is already acti
ve',5e3):(this.push("_filters",t),void this.set("_query",""))},_toggleColumn:fun
ction(r){var t=r.model.item;if(!this._cantToggleColumn(t)){if(this._columnState(
t)){var i=this.columns.indexOf(t);return void(i!==-1&&this.splice("columns",i,1)
)}this.push("columns",t)}},_cantToggleColumn:function(r){return!1},_columnState:
function(r){return!!r&&this.columns.indexOf(r)!==-1},_primary:function(r,e,n){va
r a=this.primary_arr.filter(function(n){if(i(n,r,!0))return!0;if(t(n,r).idx!==-1
)return!0;for(var a=e[n]||[],u=0;u<a.length;u++)if(t(a[u],r).idx!==-1)return!0;r
eturn!1});return r&&a.length>0&&a.indexOf(this._primarySelected)===-1&&this.set(
"_primarySelected",a[0]),a.sort(function(r,t){var i=this._columnState(r),e=this.
_columnState(t);if(i&&!e)return-1;if(e&&!i)return 1;if(i&&e){if(i=this.special_c
olumns.indexOf(r),e=this.special_columns.indexOf(t),i!==-1&&e===-1)return-1;if(i
===-1&&e!==-1)return 1;if(i!==-1&&e!==-1)return i-e}return swarming.naturalCompa
re(r,t)}.bind(this)),a},_secondary:function(r,e,n){if(requestAnimationFrame(func
tion(){this.$.secondaryList.render()}.bind(this)),!r)return[];var a=n[r]||[];ret
urn i(r,e,!0)?a.sort(function(r,t){var n=i(r,e,!1),a=i(t,e,!1);return n===a?swar
ming.naturalCompare(r,t):a-n}):t(r,e).idx!==-1?a.sort(function(r,i){var n=t(r,e)
.idx!==-1,a=t(i,e).idx!==-1;return n===a?swarming.naturalCompare(r,i):a-n}):a.fi
lter(function(r){return t(r,e).idx!==-1})},_beforeBold:function(r,i){var e=t(r,i
.replace(":"," "));return e.idx===-1?r:r.substring(0,e.idx)},_bold:function(r,i)
{var e=t(r,i.replace(":"," "));return e.idx===-1?"":r.substring(e.idx,e.idx+e.pa
rt.length)},_afterBold:function(r,i){var e=t(r,i.replace(":"," "));return e.idx=
==-1?"":r.substring(e.idx+e.part.length)},_commonFilters:function(){return{andro
id_devices:function(r,t){var i=this._attribute(r,"android_devices","0");return i
.indexOf(t)!==-1},device_os:function(r,t){var i=this._attribute(r,"device_os","n
one");return i.indexOf(t)!==-1},device_type:function(r,t){var i=this._attribute(
r,"device_type","none");return i.indexOf(swarming.alias.unapply(t))!==-1},gpu:fu
nction(r,t){var i=this._attribute(r,"gpu","none");return i.indexOf(swarming.alia
s.unapply(t))!==-1}}}}]}()</script> <script>!function(){var e="unknown";Swarming
Behaviors.BotListBehavior=[SwarmingBehaviors.CommonBehavior,{properties:{BOT_PRO
PERTIES:{type:Array,value:function(){return["disk_space","uptime","running_time"
,"task","status","version","external_ip","internal_ip","cloud_console_link","mp_
lease_id","mp_lease_expires","last_seen","first_seen","battery_level","battery_v
oltage","battery_temperature","battery_status","battery_health","bot_temperature
","device_temperature"]}}},_attribute:function(t,i,n){return n=n||e,this._dimens
ion(t,i)||this._state(t,i)||[n]},_devices:function(e){return e.state.devices},_d
eviceType:function(e){return e.device_type.toLowerCase()},_dimension:function(e,
t){if(e&&e.dimensions&&t)for(var i=0;i<e.dimensions.length;i++)if(e.dimensions[i
].key===t)return e.dimensions[i].value},_state:function(e,t){if(e&&e.state&&e.st
ate[t]){var i=e.state[t];return Array.isArray(i)?i:[i]}},_taskId:function(e){ret
urn e&&e.task_id?e.task_id:"idle"}}]}()</script> <dom-module id="bot-filters" as
setpath="/res/imp/botlist/"> <template> <style is="custom-style" include="iron-f
lex iron-flex-alignment iron-positioning query-column-filter-style"></style> <ur
l-param name="f" value="{{_filters}}" default_values="[]" multi=""> </url-param>
<url-param name="c" value="{{columns}}" default_values="["id","o
s","task","status"]" multi=""> </url-param> <url-param
name="q" value="{{_query}}" default_value=""> </url-param> <url-param name="v" v
alue="{{verbose}}"> </url-param> <url-param name="l" default_value="100" value="
{{_limit}}"> </url-param> <div class="container horizontal layout"> <div class="
narrow-down-selector"> <div> <iron-a11y-keys target="[[_filter_input]]" keys="en
ter" on-keys-pressed="_manuallyAddFilter"></iron-a11y-keys> <paper-input id="fil
ter" label="Search columns and filters or supply a filter and press enter" place
holder="gpu nvidia pool:Chrome" value="{{_query::input}}"> </paper-input> </div>
<div class="selector side-by-side" title="This shows all bot dimension names an
d other interesting bot properties. Mark the check box to add as a column. Selec
t the row to see filter options."> <iron-selector attr-for-selected="label" sele
cted="{{_primarySelected}}"> <template is="dom-repeat" items="[[_primaryItems]]"
as="item"> <div class="selectable item horizontal layout" label="[[item]]"> <sp
an>[[_beforeBold(item,_query)]]<span class="bold">[[_bold(item,_query)]]</span>[
[_afterBold(item,_query)]]</span> <span class="flex"></span> <paper-checkbox noi
nk="" disabled$="[[_cantToggleColumn(item)]]" checked="[[_columnState(item,colum
ns.*)]]" on-change="_toggleColumn"> </paper-checkbox> </div> </template> </iron-
selector> </div> <div class="selector side-by-side" title="These are all options
(if any) that the bot list can be filtered on."> <template is="dom-repeat" id="
secondaryList" items="[[_secondaryItems]]" as="item"> <div class="item horizonta
l layout" label="[[item]]"> <span>[[_beforeBold(item,_query)]]<span class="bold"
>[[_bold(item,_query)]]</span>[[_afterBold(item,_query)]]</span> <span class="fl
ex"></span> <iron-icon class="icons" icon="icons:arrow-forward" hidden="[[_cantA
ddFilter(_primarySelected,item,_filters.*)]]" on-tap="_addFilter"> </iron-icon>
</div> </template> <template is="dom-if" if="[[_showDimensionMessage(_primarySel
ected,_secondaryItems.length)]]"> <div class="item"> Only dimensions can be used
for filtering. <i>"[[_primarySelected]]"</i> is a part of the bot's state and i
s informational only. </div> </template> </div> <div class="selector side-by-sid
e" title="These filters are AND'd together and applied to all bots in | 352 })(); </script> </dom-module><script>Polymer({is:"iron-a11y-keys",behaviors:[P
olymer.IronA11yKeysBehavior],properties:{target:{type:Object,observer:"_targetCh
anged"},keys:{type:String,reflectToAttribute:!0,observer:"_keysChanged"}},attach
ed:function(){this.target||(this.target=this.parentNode)},_targetChanged:functio
n(e){this.keyEventTarget=e},_keysChanged:function(){this.removeOwnKeyBindings(),
this.addOwnKeyBinding(this.keys,"_fireKeysPressed")},_fireKeysPressed:function(e
){this.fire("keys-pressed",e.detail,{})}})</script> <script>Polymer({is:"iron-se
lector",behaviors:[Polymer.IronMultiSelectableBehavior]})</script> <script>Polym
er.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties:
{validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,v
alue:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validato
r"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers
:["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehav
iorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){thi
s.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-in
valid")},hasValidator:function(){return null!=this._validator},validate:function
(a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:functi
on(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidato
r:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatable
BehaviorMeta.byKey(this.validator)}}</script> <script>Polymer.IronFormElementBeh
avior={properties:{name:{type:String},value:{notify:!0,type:String},required:{ty
pe:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("i
ron-form-element-register")},detached:function(){this._parentForm&&this._parentF
orm.fire("iron-form-element-unregister",{target:this})}}</script> <script>Polyme
r.IronCheckedElementBehaviorImpl={properties:{checked:{type:Boolean,value:!1,ref
lectToAttribute:!0,notify:!0,observer:"_checkedChanged"},toggles:{type:Boolean,v
alue:!0,reflectToAttribute:!0},value:{type:String,value:"on",observer:"_valueCha
nged"}},observers:["_requiredChanged(required)"],created:function(){this._hasIro
nCheckedElementBehavior=!0},_getValidity:function(e){return this.disabled||!this
.required||this.checked},_requiredChanged:function(){this.required?this.setAttri
bute("aria-required","true"):this.removeAttribute("aria-required")},_checkedChan
ged:function(){this.active=this.checked,this.fire("iron-change")},_valueChanged:
function(){void 0!==this.value&&null!==this.value||(this.value="on")}},Polymer.I
ronCheckedElementBehavior=[Polymer.IronFormElementBehavior,Polymer.IronValidatab
leBehavior,Polymer.IronCheckedElementBehaviorImpl]</script> <script>Polymer.Pape
rCheckedElementBehaviorImpl={_checkedChanged:function(){Polymer.IronCheckedEleme
ntBehaviorImpl._checkedChanged.call(this),this.hasRipple()&&(this.checked?this._
ripple.setAttribute("checked",""):this._ripple.removeAttribute("checked"))},_but
tonStateChanged:function(){Polymer.PaperRippleBehavior._buttonStateChanged.call(
this),this.disabled||this.isAttached&&(this.checked=this.active)}},Polymer.Paper
CheckedElementBehavior=[Polymer.PaperInkyFocusBehavior,Polymer.IronCheckedElemen
tBehavior,Polymer.PaperCheckedElementBehaviorImpl]</script> <dom-module id="pape
r-checkbox" assetpath="/res/imp/bower_components/paper-checkbox/"> <template str
ip-whitespace=""> <style>:host{display:inline-block;white-space:nowrap;cursor:po
inter;--calculated-paper-checkbox-size:var(--paper-checkbox-size, 18px);--calcul
ated-paper-checkbox-ink-size:var(--paper-checkbox-ink-size, -1px);@apply(--paper
-font-common-base);line-height:0;-webkit-tap-highlight-color:transparent}:host([
hidden]){display:none!important}:host(:focus){outline:0}.hidden{display:none}#ch
eckboxContainer{display:inline-block;position:relative;width:var(--calculated-pa
per-checkbox-size);height:var(--calculated-paper-checkbox-size);min-width:var(--
calculated-paper-checkbox-size);margin:var(--paper-checkbox-margin,initial);vert
ical-align:var(--paper-checkbox-vertical-align,middle);background-color:var(--pa
per-checkbox-unchecked-background-color,transparent)}#ink{position:absolute;top:
calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-c
heckbox-size))/ 2);left:calc(0px - (var(--calculated-paper-checkbox-ink-size) -
var(--calculated-paper-checkbox-size))/ 2);width:var(--calculated-paper-checkbox
-ink-size);height:var(--calculated-paper-checkbox-ink-size);color:var(--paper-ch
eckbox-unchecked-ink-color,var(--primary-text-color));opacity:.6;pointer-events:
none}:host-context([dir=rtl]) #ink{right:calc(0px - (var(--calculated-paper-chec
kbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);left:auto}#ink[check
ed]{color:var(--paper-checkbox-checked-ink-color,var(--primary-color))}#checkbox
{position:relative;box-sizing:border-box;height:100%;border:solid 2px;border-col
or:var(--paper-checkbox-unchecked-color,var(--primary-text-color));border-radius
:2px;pointer-events:none;-webkit-transition:background-color 140ms,border-color
140ms;transition:background-color 140ms,border-color 140ms}#checkbox.checked #ch
eckmark{-webkit-animation:checkmark-expand 140ms ease-out forwards;animation:che
ckmark-expand 140ms ease-out forwards}@-webkit-keyframes checkmark-expand{0%{-we
bkit-transform:scale(0,0) rotate(45deg)}100%{-webkit-transform:scale(1,1) rotate
(45deg)}}@keyframes checkmark-expand{0%{transform:scale(0,0) rotate(45deg)}100%{
transform:scale(1,1) rotate(45deg)}}#checkbox.checked{background-color:var(--pap
er-checkbox-checked-color,var(--primary-color));border-color:var(--paper-checkbo
x-checked-color,var(--primary-color))}#checkmark{position:absolute;width:36%;hei
ght:70%;border-style:solid;border-top:none;border-left:none;border-right-width:c
alc(2/15 * var(--calculated-paper-checkbox-size));border-bottom-width:calc(2/15
* var(--calculated-paper-checkbox-size));border-color:var(--paper-checkbox-check
mark-color,#fff);-webkit-transform-origin:97% 86%;transform-origin:97% 86%;box-s
izing:content-box}:host-context([dir=rtl]) #checkmark{-webkit-transform-origin:5
0% 14%;transform-origin:50% 14%}#checkboxLabel{position:relative;display:inline-
block;vertical-align:middle;padding-left:var(--paper-checkbox-label-spacing,8px)
;white-space:normal;line-height:normal;color:var(--paper-checkbox-label-color,va
r(--primary-text-color));@apply(--paper-checkbox-label)}:host([checked]) #checkb
oxLabel{color:var(--paper-checkbox-label-checked-color,var(--paper-checkbox-labe
l-color,var(--primary-text-color)));@apply(--paper-checkbox-label-checked)}:host
-context([dir=rtl]) #checkboxLabel{padding-right:var(--paper-checkbox-label-spac
ing,8px);padding-left:0}#checkboxLabel[hidden]{display:none}:host([disabled]) #c
heckbox{opacity:.5;border-color:var(--paper-checkbox-unchecked-color,var(--prima
ry-text-color))}:host([disabled][checked]) #checkbox{background-color:var(--pape
r-checkbox-unchecked-color,var(--primary-text-color));opacity:.5}:host([disabled
]) #checkboxLabel{opacity:.65}#checkbox.invalid:not(.checked){border-color:var(-
-paper-checkbox-error-color,var(--error-color))}</style> <div id="checkboxContai
ner"> <div id="checkbox" class$="[[_computeCheckboxClass(checked, invalid)]]"> <
div id="checkmark" class$="[[_computeCheckmarkClass(checked)]]"></div> </div> </
div> <div id="checkboxLabel"><content></content></div> </template> <script>Polym
er({is:"paper-checkbox",behaviors:[Polymer.PaperCheckedElementBehavior],hostAttr
ibutes:{role:"checkbox","aria-checked":!1,tabindex:0},properties:{ariaActiveAttr
ibute:{type:String,value:"aria-checked"}},attached:function(){var e=this.getComp
utedStyleValue("--calculated-paper-checkbox-ink-size");if("-1px"===e){var t=pars
eFloat(this.getComputedStyleValue("--calculated-paper-checkbox-size")),a=Math.fl
oor(8/3*t);a%2!==t%2&&a++,this.customStyle["--paper-checkbox-ink-size"]=a+"px",t
his.updateStyles()}},_computeCheckboxClass:function(e,t){var a="";return e&&(a+=
"checked "),t&&(a+="invalid"),a},_computeCheckmarkClass:function(e){return e?"":
"hidden"},_createRipple:function(){return this._rippleContainer=this.$.checkboxC
ontainer,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)}})</script>
</dom-module> <script>Polymer({is:"iron-input",extends:"input",behaviors:[Polym
er.IronValidatableBehavior],properties:{bindValue:{observer:"_bindValueChanged",
type:String},preventInvalidInput:{type:Boolean},allowedPattern:{type:String,obse
rver:"_allowedPatternChanged"},_previousValidInput:{type:String,value:""},_patte
rnAlreadyChecked:{type:Boolean,value:!1}},listeners:{input:"_onInput",keypress:"
_onKeypress"},registered:function(){this._canDispatchEventOnDisabled()||(this._o
rigDispatchEvent=this.dispatchEvent,this.dispatchEvent=this._dispatchEventFirefo
xIE)},created:function(){Polymer.IronA11yAnnouncer.requestAvailability()},_canDi
spatchEventOnDisabled:function(){var e=document.createElement("input"),t=!1;e.di
sabled=!0,e.addEventListener("feature-check-dispatch-event",function(){t=!0});tr
y{e.dispatchEvent(new Event("feature-check-dispatch-event"))}catch(e){}return t}
,_dispatchEventFirefoxIE:function(){var e=this.disabled;this.disabled=!1,this._o
rigDispatchEvent.apply(this,arguments),this.disabled=e},get _patternRegExp(){var
e;if(this.allowedPattern)e=new RegExp(this.allowedPattern);else switch(this.typ
e){case"number":e=/[0-9.,e-]/}return e},ready:function(){this.bindValue=this.val
ue},_bindValueChanged:function(){this.value!==this.bindValue&&(this.value=this.b
indValue||0===this.bindValue||this.bindValue===!1?this.bindValue:""),this.fire("
bind-value-changed",{value:this.bindValue})},_allowedPatternChanged:function(){t
his.preventInvalidInput=!!this.allowedPattern},_onInput:function(){if(this.preve
ntInvalidInput&&!this._patternAlreadyChecked){var e=this._checkPatternValidity()
;e||(this._announceInvalidCharacter("Invalid string of characters not entered.")
,this.value=this._previousValidInput)}this.bindValue=this.value,this._previousVa
lidInput=this.value,this._patternAlreadyChecked=!1},_isPrintable:function(e){var
t=8==e.keyCode||9==e.keyCode||13==e.keyCode||27==e.keyCode,i=19==e.keyCode||20=
=e.keyCode||45==e.keyCode||46==e.keyCode||144==e.keyCode||145==e.keyCode||e.keyC
ode>32&&e.keyCode<41||e.keyCode>111&&e.keyCode<124;return!(t||0==e.charCode&&i)}
,_onKeypress:function(e){if(this.preventInvalidInput||"number"===this.type){var
t=this._patternRegExp;if(t&&!(e.metaKey||e.ctrlKey||e.altKey)){this._patternAlre
adyChecked=!0;var i=String.fromCharCode(e.charCode);this._isPrintable(e)&&!t.tes
t(i)&&(e.preventDefault(),this._announceInvalidCharacter("Invalid character "+i+
" not entered."))}}},_checkPatternValidity:function(){var e=this._patternRegExp;
if(!e)return!0;for(var t=0;t<this.value.length;t++)if(!e.test(this.value[t]))ret
urn!1;return!0},validate:function(){var e=this.checkValidity();return e&&(this.r
equired&&""===this.value?e=!1:this.hasValidator()&&(e=Polymer.IronValidatableBeh
avior.validate.call(this,this.value))),this.invalid=!e,this.fire("iron-input-val
idate"),e},_announceInvalidCharacter:function(e){this.fire("iron-announce",{text
:e})}})</script> <script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.Ne
xtLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImp
l={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type:
Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput:
{type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String
},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:Stri
ng},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alw
aysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},valid
ator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolea
n,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number},
maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},n
ame:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,valu
e:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{
type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{ty
pe:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_aria
LabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached
"},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex:
0},get inputElement(){return this.$.input},get _focusableElement(){return this.i
nputElement},registered:function(){this._typesThatHaveText=["date","datetime","d
atetime-local","month","time","week","file"]},attached:function(){this._updateAr
iaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElem
ent.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t)
{return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.tar
get;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribe
dBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID+
+;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy
,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler
:function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focuse
d&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:funct
ion(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttr
ibute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),thi
s._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&thi
s.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElemen
t.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputEleme
nt.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t)
{return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).quer
ySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id:
(t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ari
aLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEv
ent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged
:function(){if(this.autofocus&&this._focusableElement){var e=document.activeElem
ent,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElem
ent;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.Iro
nControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</scri
pt> <script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attach
ed:function(){this.fire("addon-attached")},update:function(t){}}</script> <dom-m
odule id="paper-input-char-counter" assetpath="/res/imp/bower_components/paper-i
nput/"> <template> <style>:host{display:inline-block;float:right;@apply(--paper-
font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!im
portant}:host-context([dir=rtl]){float:left}</style> <span>[[_charCounterStr]]</
span> </template> </dom-module> <script>Polymer({is:"paper-input-char-counter",b
ehaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:Str
ing,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e=
t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&(
e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</scr
ipt> <dom-module id="paper-input-container" assetpath="/res/imp/bower_components
/paper-input/"> <template> <style>:host{display:block;padding:8px 0;@apply(--pap
er-input-container)}:host([inline]){display:inline-block}:host([disabled]){point
er-events:none;opacity:.33;@apply(--paper-input-container-disabled)}:host([hidde
n]){display:none!important}.floated-label-placeholder{@apply(--paper-font-captio
n)}.underline{position:relative}.focused-line{@apply(--layout-fit);background:va
r(--paper-input-container-focus-color,--primary-color);height:2px;-webkit-transf
orm-origin:center center;transform-origin:center center;-webkit-transform:scale3
d(0,1,1);transform:scale3d(0,1,1);@apply(--paper-input-container-underline-focus
)}.underline.is-highlighted .focused-line{-webkit-transform:none;transform:none;
-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(--pap
er-transition-easing)}.underline.is-invalid .focused-line{background:var(--paper
-input-container-invalid-color,--error-color);-webkit-transform:none;transform:n
one;-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(-
-paper-transition-easing)}.unfocused-line{@apply(--layout-fit);background:var(--
paper-input-container-color,--secondary-text-color);height:1px;@apply(--paper-in
put-container-underline)}:host([disabled]) .unfocused-line{border-bottom:1px das
hed;border-color:var(--paper-input-container-color,--secondary-text-color);backg
round:0 0;@apply(--paper-input-container-underline-disabled)}.label-and-input-co
ntainer{@apply(--layout-flex-auto);@apply(--layout-relative);width:100%;max-widt
h:100%}.input-content{@apply(--layout-horizontal);@apply(--layout-center);positi
on:relative}.input-content ::content .paper-input-label,.input-content ::content
label{position:absolute;top:0;right:0;left:0;width:100%;font:inherit;color:var(
--paper-input-container-color,--secondary-text-color);-webkit-transition:-webkit
-transform .25s,width .25s;transition:transform .25s,width .25s;-webkit-transfor
m-origin:left top;transform-origin:left top;@apply(--paper-font-common-nowrap);@
apply(--paper-font-subhead);@apply(--paper-input-container-label);@apply(--paper
-transition-easing)}.input-content.label-is-floating ::content .paper-input-labe
l,.input-content.label-is-floating ::content label{-webkit-transform:translateY(
-75%) scale(.75);transform:translateY(-75%) scale(.75);width:133%;@apply(--paper
-input-container-label-floating)}:host-context([dir=rtl]) .input-content.label-i
s-floating ::content .paper-input-label,:host-context([dir=rtl]) .input-content.
label-is-floating ::content label{width:100%;-webkit-transform-origin:right top;
transform-origin:right top}.input-content.label-is-highlighted ::content .paper-
input-label,.input-content.label-is-highlighted ::content label{color:var(--pape
r-input-container-focus-color,--primary-color);@apply(--paper-input-container-la
bel-focus)}.input-content.is-invalid ::content .paper-input-label,.input-content
.is-invalid ::content label{color:var(--paper-input-container-invalid-color,--er
ror-color)}.input-content.label-is-hidden ::content .paper-input-label,.input-co
ntent.label-is-hidden ::content label{visibility:hidden}.input-content ::content
.paper-input-input,.input-content ::content input,.input-content ::content iron
-autogrow-textarea,.input-content ::content textarea{position:relative;outline:0
;box-shadow:none;padding:0;width:100%;max-width:100%;background:0 0;border:none;
color:var(--paper-input-container-input-color,--primary-text-color);-webkit-appe
arance:none;text-align:inherit;vertical-align:bottom;@apply(--paper-font-subhead
);@apply(--paper-input-container-input)}::content [prefix]{@apply(--paper-font-s
ubhead);@apply(--paper-input-prefix);@apply(--layout-flex-none)}::content [suffi
x]{@apply(--paper-font-subhead);@apply(--paper-input-suffix);@apply(--layout-fle
x-none)}.input-content ::content input{min-width:0}.input-content ::content text
area{resize:none}.add-on-content{position:relative}.add-on-content.is-invalid ::
content *{color:var(--paper-input-container-invalid-color,--error-color)}.add-on
-content.is-highlighted ::content *{color:var(--paper-input-container-focus-colo
r,--primary-color)}</style> <template is="dom-if" if="[[!noLabelFloat]]"> <div c
lass="floated-label-placeholder" aria-hidden="true"> </div> </template> <di
v class$="[[_computeInputContentClass(noLabelFloat,alwaysFloatLabel,focused,inva
lid,_inputHasContent)]]"> <content select="[prefix]" id="prefix"></content> <div
class="label-and-input-container" id="labelAndInputContainer"> <content select=
":not([add-on]):not([prefix]):not([suffix])"></content> </div> <content select="
[suffix]"></content> </div> <div class$="[[_computeUnderlineClass(focused,invali
d)]]"> <div class="unfocused-line"></div> <div class="focused-line"></div> </div
> <div class$="[[_computeAddOnContentClass(focused,invalid)]]"> <content id="add
OnContent" select="[add-on]"></content> </div> </template> </dom-module> <script
>Polymer({is:"paper-input-container",properties:{noLabelFloat:{type:Boolean,valu
e:!1},alwaysFloatLabel:{type:Boolean,value:!1},attrForValue:{type:String,value:"
bind-value"},autoValidate:{type:Boolean,value:!1},invalid:{observer:"_invalidCha
nged",type:Boolean,value:!1},focused:{readOnly:!0,type:Boolean,value:!1,notify:!
0},_addons:{type:Array},_inputHasContent:{type:Boolean,value:!1},_inputSelector:
{type:String,value:"input,textarea,.paper-input-input"},_boundOnFocus:{type:Func
tion,value:function(){return this._onFocus.bind(this)}},_boundOnBlur:{type:Funct
ion,value:function(){return this._onBlur.bind(this)}},_boundOnInput:{type:Functi
on,value:function(){return this._onInput.bind(this)}},_boundValueChanged:{type:F
unction,value:function(){return this._onValueChanged.bind(this)}}},listeners:{"a
ddon-attached":"_onAddonAttached","iron-input-validate":"_onIronInputValidate"},
get _valueChangedEvent(){return this.attrForValue+"-changed"},get _propertyForVa
lue(){return Polymer.CaseMap.dashToCamelCase(this.attrForValue)},get _inputEleme
nt(){return Polymer.dom(this).querySelector(this._inputSelector)},get _inputElem
entValue(){return this._inputElement[this._propertyForValue]||this._inputElement
.value},ready:function(){this._addons||(this._addons=[]),this.addEventListener("
focus",this._boundOnFocus,!0),this.addEventListener("blur",this._boundOnBlur,!0)
},attached:function(){this.attrForValue?this._inputElement.addEventListener(this
._valueChangedEvent,this._boundValueChanged):this.addEventListener("input",this.
_onInput),""!=this._inputElementValue?this._handleValueAndAutoValidate(this._inp
utElement):this._handleValue(this._inputElement)},_onAddonAttached:function(t){t
his._addons||(this._addons=[]);var n=t.target;this._addons.indexOf(n)===-1&&(thi
s._addons.push(n),this.isAttached&&this._handleValue(this._inputElement))},_onFo
cus:function(){this._setFocused(!0)},_onBlur:function(){this._setFocused(!1),thi
s._handleValueAndAutoValidate(this._inputElement)},_onInput:function(t){this._ha
ndleValueAndAutoValidate(t.target)},_onValueChanged:function(t){this._handleValu
eAndAutoValidate(t.target)},_handleValue:function(t){var n=this._inputElementVal
ue;n||0===n||"number"===t.type&&!t.checkValidity()?this._inputHasContent=!0:this
._inputHasContent=!1,this.updateAddons({inputElement:t,value:n,invalid:this.inva
lid})},_handleValueAndAutoValidate:function(t){if(this.autoValidate){var n;n=t.v
alidate?t.validate(this._inputElementValue):t.checkValidity(),this.invalid=!n}th
is._handleValue(t)},_onIronInputValidate:function(t){this.invalid=this._inputEle
ment.invalid},_invalidChanged:function(){this._addons&&this.updateAddons({invali
d:this.invalid})},updateAddons:function(t){for(var n,e=0;n=this._addons[e];e++)n
.update(t)},_computeInputContentClass:function(t,n,e,i,a){var u="input-content";
if(t)a&&(u+=" label-is-hidden");else{var o=this.querySelector("label");n||a?(u+=
" label-is-floating",this.$.labelAndInputContainer.style.position="static",i?u+=
" is-invalid":e&&(u+=" label-is-highlighted")):o&&(this.$.labelAndInputContainer
.style.position="relative")}return u},_computeUnderlineClass:function(t,n){var e
="underline";return n?e+=" is-invalid":t&&(e+=" is-highlighted"),e},_computeAddO
nContentClass:function(t,n){var e="add-on-content";return n?e+=" is-invalid":t&&
(e+=" is-highlighted"),e}})</script> <dom-module id="paper-input-error" assetpat
h="/res/imp/bower_components/paper-input/"> <template> <style>:host{display:inli
ne-block;visibility:hidden;color:var(--paper-input-container-invalid-color,--err
or-color);@apply(--paper-font-caption);@apply(--paper-input-error);position:abso
lute;left:0;right:0}:host([invalid]){visibility:visible};</style> <content></con
tent> </template> </dom-module> <script>Polymer({is:"paper-input-error",behavior
s:[Polymer.PaperInputAddonBehavior],properties:{invalid:{readOnly:!0,reflectToAt
tribute:!0,type:Boolean}},update:function(e){this._setInvalid(e.invalid)}})</scr
ipt> <dom-module id="paper-input" assetpath="/res/imp/bower_components/paper-inp
ut/"> <template> <style>:host{display:block}:host([focused]){outline:0}:host([hi
dden]){display:none!important}input::-webkit-input-placeholder{color:var(--paper
-input-container-color,--secondary-text-color)}input:-moz-placeholder{color:var(
--paper-input-container-color,--secondary-text-color)}input::-moz-placeholder{co
lor:var(--paper-input-container-color,--secondary-text-color)}input:-ms-input-pl
aceholder{color:var(--paper-input-container-color,--secondary-text-color)}label{
pointer-events:none}</style> <paper-input-container no-label-float="[[noLabelFlo
at]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholde
r)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[inva
lid]]"> <content select="[prefix]"></content> <label hidden$="[[!label]]" aria-h
idden="true" for="input">[[label]]</label> <input is="iron-input" id="input" ari
a-labelledby$="[[_ariaLabelledBy]]" aria-describedby$="[[_ariaDescribedBy]]" dis
abled$="[[disabled]]" title$="[[title]]" bind-value="{{value}}" invalid="{{inval
id}}" prevent-invalid-input="[[preventInvalidInput]]" allowed-pattern="[[allowed
Pattern]]" validator="[[validator]]" type$="[[type]]" pattern$="[[pattern]]" req
uired$="[[required]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]
" inputmode$="[[inputmode]]" minlength$="[[minlength]]" maxlength$="[[maxlength]
]" min$="[[min]]" max$="[[max]]" step$="[[step]]" name$="[[name]]" placeholder$=
"[[placeholder]]" readonly$="[[readonly]]" list$="[[list]]" size$="[[size]]" aut
ocapitalize$="[[autocapitalize]]" autocorrect$="[[autocorrect]]" on-change="_onC
hange" tabindex$="[[tabindex]]" autosave$="[[autosave]]" results$="[[results]]"
accept$="[[accept]]" multiple$="[[multiple]]"> <content select="[suffix]"></cont
ent> <template is="dom-if" if="[[errorMessage]]"> <paper-input-error aria-live="
assertive">[[errorMessage]]</paper-input-error> </template> <template is="dom-if
" if="[[charCounter]]"> <paper-input-char-counter></paper-input-char-counter> </
template> </paper-input-container> </template> </dom-module> <script>Polymer({is
:"paper-input",behaviors:[Polymer.IronFormElementBehavior,Polymer.PaperInputBeha
vior]})</script> <dom-module id="query-column-filter-style" assetpath="/res/imp/
common/"> <template> <style>:host{display:block;font-family:sans-serif}#filter{m
argin:0 5px}.container{min-height:120px;width:100%}.item{border-bottom:1px solid
#EEE;max-width:250px;min-height:1em;min-width:100px;padding:.1em .2em;line-heig
ht:1.5em}.header{height:2em;padding:.25em;line-height:2em}.selector{border:1px s
olid #000;margin:0 5px;max-height:200px;min-height:130px;min-width:275px;overflo
w-y:auto}.pointable,.selectable{cursor:pointer}.selectable:hover{background-colo
r:#A6CEE3}.iron-selected{background-color:#1F78B4;color:#fff}.icons{cursor:point
er;height:20px;margin:2px;width:20px;flex-shrink:0}.side-by-side{display:inline-
block;vertical-align:top}.bold{font-weight:700}paper-checkbox{max-height:2em;mar
gin:2px;--paper-checkbox-checked-color:black;--paper-checkbox-checked-ink-color:
black;--paper-checkbox-unchecked-color:black;--paper-checkbox-unchecked-ink-colo
r:black;--paper-checkbox-label-color:black}</style> </template> </dom-module> <s
cript>!function(){var r=":",i=function(r,i){if(!i)return{idx:0,part:""};if(!r)re
turn{idx:-1};i=i.trim().toLocaleLowerCase(),r=r.toLocaleLowerCase();for(var t=i.
split(" "),e=0;e<t.length;e++){var n=r.indexOf(t[e]);if(n!==-1)return{idx:n,part
:t[e]}}return{idx:-1}},t=function(i,t,e){if(!t)return!0;if(!i)return!1;if(i=i.to
LocaleLowerCase(),t=t.trim().toLocaleLowerCase(),t.indexOf(" ")!==-1||t.indexOf(
":")===-1)return!1;var n=t.split(r,1)[0],a=t.substring(n.length+r.length);return
e?i===n:i.startsWith(a)};SwarmingBehaviors.QueryColumnFilter=[SwarmingBehaviors
.CommonBehavior,{properties:{dimensions:{type:Array},primary_map:{type:Object},p
rimary_arr:{type:Array},special_columns:{type:Array,value:function(){return[]}},
filter:{type:Function,computed:"_makeFilter(_filters.*)",notify:!0},FILTER_SEP:{
type:String,value:r},_filters:{type:Array},_limit:{type:Number},_primaryItems:{t
ype:Array,computed:"_primary(_query, primary_map, primary_arr, columns.*)"},_pri
marySelected:{type:String,value:""},_query:{type:String},_secondaryItems:{type:A
rray,computed:"_secondary(_primarySelected, _query, primary_map)"}},_addFilter:f
unction(r){var i=r.model.item;if(!this._cantAddFilter(this._primarySelected,i)){
var t=this._primarySelected+this.FILTER_SEP+i;this.push("_filters",t)}},_removeF
ilter:function(r){var i=r.model.fil;if(!this._cantRemoveFilter(i)){var t=this._f
ilters.indexOf(i);t!==-1&&this.splice("_filters",t,1)}},_cantAddFilter:function(
r,i){if(!r||!i)return!0;var t=r+this.FILTER_SEP+i;return this._filters.indexOf(t
)!==-1},_cantRemoveFilter:function(r){return!r||this._filters.indexOf(r)===-1},_
makeFilter:function(){var r={};this._filters.forEach(function(i){var t=i.indexOf
(this.FILTER_SEP),e=i.slice(0,t),n=i.slice(t+this.FILTER_SEP.length),a=r[e]||[];
a.push(n),r[e]=a}.bind(this));var i=this._filterMap||{};return function(t){var e
=!0;for(primary in r){var n=r[primary],a=i[primary];a||(a=function(r,i){var t=th
is._attribute(r,primary);return t.indexOf(i)!==-1}.bind(this)),a&&n.forEach(func
tion(r){e=e&&a.bind(this)(t,r)}.bind(this))}return e}},_manuallyAddFilter:functi
on(){var r=this._query.trim(),i=r.indexOf(this.FILTER_SEP);if(i===-1)return void
sk.errorMessage('Invalid filter. Should be like "foo:bar"',5e3);var t=r.slice(
0,i),e=r.slice(i+this.FILTER_SEP.length);return swarming.alias.DIMENSIONS_WITH_A
LIASES.indexOf(t)!==-1&&(e=swarming.alias.apply(e,t)),r=t+this.FILTER_SEP+e,this
._filters.indexOf(r)!==-1?void sk.errorMessage('Filter "'+r+'" is already active
',5e3):(this.push("_filters",r),void this.set("_query",""))},_toggleColumn:funct
ion(r){var i=r.model.item;if(!this._cantToggleColumn(i)){if(this._columnState(i)
){var t=this.columns.indexOf(i);return void(t!==-1&&this.splice("columns",t,1))}
this.push("columns",i)}},_cantToggleColumn:function(r){return!1},_columnState:fu
nction(r){return!!r&&this.columns.indexOf(r)!==-1},_primary:function(r,e,n){var
a=this.primary_arr.filter(function(n){if(t(n,r,!0))return!0;if(i(n,r).idx!==-1)r
eturn!0;for(var a=e[n]||[],s=0;s<a.length;s++)if(i(a[s],r).idx!==-1)return!0;ret
urn!1});return r&&a.length>0&&a.indexOf(this._primarySelected)===-1&&this.set("_
primarySelected",a[0]),a.sort(function(r,i){var t=this._columnState(r),e=this._c
olumnState(i);if(t&&!e)return-1;if(e&&!t)return 1;if(t&&e){if(t=this.special_col
umns.indexOf(r),e=this.special_columns.indexOf(i),t!==-1&&e===-1)return-1;if(t==
=-1&&e!==-1)return 1;if(t!==-1&&e!==-1)return t-e}return swarming.naturalCompare
(r,i)}.bind(this)),a},_secondary:function(r,e,n){if(requestAnimationFrame(functi
on(){this.$.secondaryList.render()}.bind(this)),!r)return[];var a=n[r]||[];retur
n t(r,e,!0)?a.sort(function(r,i){var n=t(r,e,!1),a=t(i,e,!1);return n===a?swarmi
ng.naturalCompare(r,i):a-n}):i(r,e).idx!==-1?a.sort(function(r,t){var n=i(r,e).i
dx!==-1,a=i(t,e).idx!==-1;return n===a?swarming.naturalCompare(r,t):a-n}):a.filt
er(function(r){return i(r,e).idx!==-1})},_beforeBold:function(r,t){var e=i(r,t.r
eplace(":"," "));return e.idx===-1?r:r.substring(0,e.idx)},_bold:function(r,t){v
ar e=i(r,t.replace(":"," "));return e.idx===-1?"":r.substring(e.idx,e.idx+e.part
.length)},_afterBold:function(r,t){var e=i(r,t.replace(":"," "));return e.idx===
-1?"":r.substring(e.idx+e.part.length)},_commonFilters:function(){return{android
_devices:function(r,i){var t=this._attribute(r,"android_devices","0");return t.i
ndexOf(i)!==-1},device_os:function(r,i){var t=this._attribute(r,"device_os","non
e");return t.indexOf(i)!==-1},device_type:function(r,i){var t=this._attribute(r,
"device_type","none");return t.indexOf(swarming.alias.unapply(i))!==-1},gpu:func
tion(r,i){var t=this._attribute(r,"gpu","none");return t.indexOf(swarming.alias.
unapply(i))!==-1}}}}]}()</script> <script>!function(){var e="unknown";SwarmingBe
haviors.BotListBehavior=[SwarmingBehaviors.CommonBehavior,{properties:{BOT_PROPE
RTIES:{type:Array,value:function(){return["disk_space","uptime","running_time","
task","status","version","external_ip","internal_ip","cloud_console_link","mp_le
ase_id","mp_lease_expires","last_seen","first_seen","battery_level","battery_vol
tage","battery_temperature","battery_status","battery_health","bot_temperature",
"device_temperature"]}}},_attribute:function(t,i,n){return n=n||e,this._dimensio
n(t,i)||this._state(t,i)||[n]},_devices:function(e){return e.state.devices},_dev
iceType:function(e){return e.device_type.toLowerCase()},_dimension:function(e,t)
{if(e&&e.dimensions&&t)for(var i=0;i<e.dimensions.length;i++)if(e.dimensions[i].
key===t)return e.dimensions[i].value},_state:function(e,t){if(e&&e.state&&e.stat
e[t]){var i=e.state[t];return Array.isArray(i)?i:[i]}},_taskId:function(e){retur
n e&&e.task_id?e.task_id:"idle"}}]}()</script> <dom-module id="bot-filters" asse
tpath="/res/imp/botlist/"> <template> <style is="custom-style" include="iron-fle
x iron-flex-alignment iron-positioning query-column-filter-style swarming-app-st
yle"></style> <url-param name="f" value="{{_filters}}" default_values="[]" multi
=""> </url-param> <url-param name="c" value="{{columns}}" default_values="["
;id","os","task","status"]" multi=""> </url-p
aram> <url-param name="q" value="{{_query}}" default_value=""> </url-param> <url
-param name="v" value="{{verbose}}"> </url-param> <url-param name="l" default_va
lue="100" value="{{_limit}}"> </url-param> <div class="container horizontal layo
ut"> <div class="narrow-down-selector"> <div> <iron-a11y-keys target="[[_filter_
input]]" keys="enter" on-keys-pressed="_manuallyAddFilter"></iron-a11y-keys> <pa
per-input id="filter" label="Search columns and filters or supply a filter and p
ress enter" placeholder="gpu nvidia pool:Chrome" value="{{_query::input}}"> </pa
per-input> </div> <div class="selector side-by-side" title="This shows all bot d
imension names and other interesting bot properties. Mark the check box to add a
s a column. Select the row to see filter options."> <iron-selector attr-for-sele
cted="label" selected="{{_primarySelected}}"> <template is="dom-repeat" items="[
[_primaryItems]]" as="item"> <div class="selectable item horizontal layout" labe
l="[[item]]"> <span>[[_beforeBold(item,_query)]]<span class="bold">[[_bold(item,
_query)]]</span>[[_afterBold(item,_query)]]</span> <span class="flex"></span> <p
aper-checkbox noink="" disabled$="[[_cantToggleColumn(item)]]" checked="[[_colum
nState(item,columns.*)]]" on-change="_toggleColumn"> </paper-checkbox> </div> </
template> </iron-selector> </div> <div class="selector side-by-side" title="Thes
e are all options (if any) that the bot list can be filtered on."> <template is=
"dom-repeat" id="secondaryList" items="[[_secondaryItems]]" as="item"> <div clas
s="item horizontal layout" label="[[item]]"> <span>[[_beforeBold(item,_query)]]<
span class="bold">[[_bold(item,_query)]]</span>[[_afterBold(item,_query)]]</span
> <span class="flex"></span> <iron-icon class="icons" icon="icons:arrow-forward"
hidden="[[_cantAddFilter(_primarySelected,item,_filters.*)]]" on-tap="_addFilte
r"> </iron-icon> </div> </template> <template is="dom-if" if="[[_showDimensionMe
ssage(_primarySelected,_secondaryItems.length)]]"> <div class="item"> Only dimen
sions can be used for filtering. <i>"[[_primarySelected]]"</i> is a part of the
bot's state and is informational only. </div> </template> </div> <div class="sel
ector side-by-side" title="These filters are AND'd together and applied to all b
ots in |
| 310 the fleet."> <template is="dom-repeat" items="[[_filters]]" as="fil"> <div class
="item horizontal layout" label="[[fil]]"> <span>[[fil]]</span> <span class="fle
x"></span> <iron-icon class="icons" icon="icons:remove-circle-outline" hidden="[
[_cantRemoveFilter(fil,_filters.*)]]" on-tap="_removeFilter"> </iron-icon> </div
> </template> </div> <div class="side-by-side"> <paper-checkbox checked="{{verbo
se}}">Verbose Entries</paper-checkbox> <paper-input id="_limit" label="Limit Res
ults" auto-validate="" min="0" max="1000" pattern="[0-9]+" value="{{_limit}}"> <
/paper-input> </div> </div> </div> </template> <script>!function(){var i={disk_s
pace:function(i,t){return!0},id:function(i,t){return!0},status:function(i,t){ret
urn"quarantined"===t?i.quarantined:"dead"===t?i.is_dead:!i.quarantined&&!i.is_de
ad},task:function(i,t){return"idle"===t?"idle"===this._taskId(i):"idle"!==this._
taskId(i)}};Polymer({is:"bot-filters",behaviors:[SwarmingBehaviors.BotListBehavi
or,SwarmingBehaviors.QueryColumnFilter],properties:{columns:{type:Array,notify:!
0},query_params:{type:Object,computed:"_extractQueryParams(dimensions.*,_filters
.*, _limit)",notify:!0},verbose:{type:Boolean,notify:!0},_filter_input:{type:Obj
ect,value:function(){return this.$.filter}},_filterMap:{type:Object,value:functi
on(){var t=this._commonFilters();for(var e in i)t[e]=i[e];return t}}},_cantToggl
eColumn:function(i){return!i||"id"===i},_extractQueryParams:function(){var i={},
t=[];this._filters.forEach(function(e){var n=e.split(this.FILTER_SEP,1),r=n[0];i
f(this.dimensions.indexOf(r)!==-1){var s=e.substring(r.length+this.FILTER_SEP.le
ngth);t.push(r+this.FILTER_SEP+swarming.alias.unapply(s))}else if("status"===r){
var s=e.substring(r.length+this.FILTER_SEP.length);"alive"===s?(i.is_dead=["FALS
E"],i.quarantined=["FALSE"]):"quarantined"===s?i.quarantined=["TRUE"]:"dead"===s
&&(i.is_dead=["TRUE"])}}.bind(this)),i.dimensions=t;var e=parseInt(this._limit);
return Number.isInteger(e)&&(e=Math.max(e,1),e=Math.min(1e3,e),i.limit=[e],this.
_limit!=e&&this.set("_limit",e)),i},_showDimensionMessage:function(i,t){return i
&&"id"!==i&&!t}})}()</script> </dom-module><dom-module id="bot-list-data" assetp
ath="/res/imp/botlist/"> <script>!function(){function e(e){if(!e)return{};var t=
[],s=0;for(k in e)t.push(k+": "+e[k]),s+=e[k];return s/=t.length,s=s?s.toFixed(1
):"unknown",{average:s,zones:t.join(" | ")||"unknown"}}var t="available",s=["qua
rantined","error"];Polymer({is:"bot-list-data",behaviors:[SwarmingBehaviors.BotL
istBehavior],properties:{auth_headers:{type:Object,observer:"signIn"},bots:{type
:Array,computed:"parseBots(_list)",notify:!0},busy:{type:Boolean,computed:"_or(_
busy2,_busy1)",notify:!0},dimensions:{type:Array,computed:"_makeArray(_dimension
s)",notify:!0},fleet:{type:Object,computed:"_fleet(_count)",notify:!0},primary_m
ap:{type:Object,computed:"_primaryMap(_dimensions)",notify:!0},primary_arr:{type
:Array,computed:"_primaryArr(dimensions, BOT_PROPERTIES)",notify:!0},_busy1:{typ
e:Boolean,value:!1},_busy2:{type:Boolean,value:!1},_count:{type:Object},_dimensi
ons:{type:Object},_list:{type:Object}},signIn:function(){this._getJsonAsync("_co
unt","/api/swarming/v1/bots/count","_busy2",this.auth_headers),this._getJsonAsyn
c("_dimensions","/api/swarming/v1/bots/dimensions","_busy1",this.auth_headers)},
parseBots:function(s){return s&&s.items?(s.items.forEach(function(s){s.state=s.s
tate||"{}",s.state=JSON.parse(s.state)||{};var n=s.state.disks||{},i=Object.keys
(n);if(i.length){s.disks=[];for(var a=0;a<i.length;a++)s.disks.push({id:i[a],mb:
n[i[a]].free_mb});s.disks.sort(function(e,t){return t.mb-e.mb})}else s.disks=[{i
d:"unknown",mb:0}];s.state.temp=e(s.state.temp);var o=[],r=s&&s.state&&s.state.d
evices||{};for(key in r){var u=r[key];u.serial=key,u.okay=u.state===t;var _=this
._dimension(s,"device_type")||["unknown"];u.device_type=_[0],u.temp=e(u.temp),o.
push(u)}s.state.devices=o,s.last_seen_ts&&(s.last_seen_ts=new Date(s.last_seen_t
s)),s.first_seen_ts&&(s.first_seen_ts=new Date(s.first_seen_ts)),s.lease_expirat
ion_ts&&(s.lease_expiration_ts=new Date(s.lease_expiration_ts))}.bind(this)),s.i
tems):[]},_fleet:function(){return this._count?{all:this._count.count||-1,alive:
this._count.count-this._count.dead||-1,busy:this._count.busy||-1,idle:this._coun
t.count-this._count.busy||-1,dead:this._count.dead||-1,quarantined:this._count.q
uarantined||-1}:{}},_makeArray:function(e){if(!e||!e.bots_dimensions)return[];va
r t=[];return e.bots_dimensions.forEach(function(e){s.indexOf(e.key)===-1&&t.pus
h(e.key)}),t.push("id"),t.sort(),t},_primaryArr:function(e,t){return e.concat(t)
},_primaryMap:function(e){e=e.bots_dimensions||[];var t={};return e.forEach(func
tion(e){if(swarming.alias.DIMENSIONS_WITH_ALIASES.indexOf(e.key)===-1)t[e.key]=e
.value;else{var s=[];e.value.forEach(function(t){s.push(swarming.alias.apply(t,e
.key))}),t[e.key]=s}}),t.android_devices&&t.android_devices.push("0"),t.device_o
s&&t.device_os.push("none"),t.device_type&&t.device_type.push("none"),t.id=[],t.
disk_space=[],t.task=["busy","idle"],t.status=["alive","dead","quarantined"],t}}
)}()</script> </dom-module><dom-module id="bot-list-summary" assetpath="/res/imp
/botlist/"> <template> <style include="swarming-app-style">:host{display:block;b
order-left:1px solid #000;padding:5px 5px;font-family:sans-serif}.header{font-si
ze:1.2em;font-weight:700}.header.buffer{margin-top:5px}.right{text-align:right}.
left{text-align:left}</style> <div class="header">Fleet</div> <table> <tbody><tr
> <td class="right"> <a href$="[[_makeURL('','',columns.*,filtered_bots.*,sort,v
erbose)]]">All</a>: </td> <td class="left">[[fleet.all]]</td> </tr> <tr> <td cla
ss="right"> <a href$="[[_makeURL('alive','',columns.*,filtered_bots.*,sort,verbo
se)]]">Alive</a>: </td> <td class="left">[[fleet.alive]]</td> </tr> <tr> <td cla
ss="right"> <a href$="[[_makeURL('busy','',columns.*,filtered_bots.*,sort,verbos
e)]]">Busy</a>: </td> <td class="left">[[fleet.busy]]</td> </tr> <tr> <td class=
"right"> <a href$="[[_makeURL('idle','',columns.*,filtered_bots.*,sort,verbose)]
]">Idle</a>: </td> <td class="left">[[fleet.idle]]</td> </tr> <tr> <td class="ri
ght"> <a href$="[[_makeURL('dead','',columns.*,filtered_bots.*,sort,verbose)]]">
Dead</a>: </td> <td class="left">[[fleet.dead]]</td> </tr> <tr> <td class="right
"> <a href$="[[_makeURL('quarantined','',columns.*,filtered_bots.*,sort,verbose)
]]">Quarantined</a>: </td> <td class="left">[[fleet.quarantined]]</td> </tr> </t
body></table> <div class="header buffer">Selected</div> <table> <tbody><tr> <td
class="right"> Displayed: </td> <td class="left">[[_currentlyDisplayed(filtered_
bots.*)]]</td> </tr> <tr> <td class="right"> All: </td> <td class="left">[[_coun
t_query.count]]</td> </tr> <tr> <td class="right"> <a href$="[[_makeURL('alive',
'true',columns.*,filtered_bots.*,sort,verbose)]]">Alive</a>: </td> <td class="le
ft">[[_computeAlive(_count_query.*)]]</td> </tr> <tr> <td class="right"> <a href
$="[[_makeURL('busy','true',columns.*,filtered_bots.*,sort,verbose)]]">Busy</a>:
</td> <td class="left">[[_count_query.busy]]</td> </tr> <tr> <td class="right">
<a href$="[[_makeURL('idle','true',columns.*,filtered_bots.*,sort,verbose)]]">I
dle</a>: </td> <td class="left">[[_computeIdle(_count_query.*)]]</td> </tr> <tr>
<td class="right"> <a href$="[[_makeURL('dead','true',columns.*,filtered_bots.*
,sort,verbose)]]">Dead</a>: </td> <td class="left">[[_count_query.dead]]</td> </
tr> <tr> <td class="right"> <a href$="[[_makeURL('quarantined','true',columns.*,
filtered_bots.*,sort,verbose)]]">Quarantined</a>: </td> <td class="left">[[_coun
t_query.quarantined]]</td> </tr> </tbody></table> </template> <script>Polymer({i
s:"bot-list-summary",behaviors:[SwarmingBehaviors.BotListBehavior],properties:{a
uth_headers:{type:Object},busy:{type:Boolean,value:!1,notify:!0},columns:{type:A
rray},count_params:{type:Object},filtered_bots:{type:Array},fleet:{type:Object},
sort:{type:String},verbose:{type:Boolean},_count_query:{type:Object}},observers:
["_recountTotal(auth_headers.*,count_params.*)"],_computeAlive:function(){return
this._count_query.count-this._count_query.dead},_computeIdle:function(){return
this._count_query.count-this._count_query.busy},_currentlyDisplayed:function(){r
eturn this.filtered_bots&&this.filtered_bots.length},_getFilterStr:function(t){r
eturn t?"alive"===t||"dead"===t||"quarantined"===t?"status:"+t:"task:"+t:""},_ma
keURL:function(t,e){if(!e){var r={s:[this.sort],c:this.columns,v:[this.verbose]}
;return t&&(r.f=[this._getFilterStr(t)]),window.location.href.split("?")[0]+"?"+
sk.query.fromParamSet(r)}var o=encodeURIComponent(this._getFilterStr(t));if(wind
ow.location.href.indexOf(o)===-1)return window.location.href+"&f="+o},_recountTo
tal:function(){this.auth_headers&&this.count_params&&this._getJsonAsync("_count_
query","/api/swarming/v1/bots/count","busy",this.auth_headers,this.count_params)
}})</script> </dom-module><dom-module id="bot-list" assetpath="/res/imp/botlist/
"> <template> <style include="iron-flex iron-flex-alignment iron-positioning swa
rming-app-style dynamic-table-style">bot-filters,bot-list-summary{margin-bottom:
8px;margin-right:10px}.bad-device,.quarantined{background-color:#fdd}.dead{backg
round-color:#ccc}.alt{background-color:#f8f8f8}.bot-list th>span{padding-right:3
0px}</style> <url-param name="s" value="{{_sortstr}}" default_value="id:asc"> </
url-param> <swarming-app client_id="[[client_id]]" auth_headers="{{_auth_headers
}}" signed_in="{{_signed_in}}" server_details="{{_server_details}}" busy="[[_or(
_busy1,_busy2,_busy3)]]" name="Swarming Bot List"> <h2 hidden$="[[_signed_in]]">
You must sign in to see anything useful.</h2> <div hidden$="[[_not(_signed_in)]]
"> <div class="horizontal layout"> <bot-filters dimensions="[[_dimensions]]" pri
mary_map="[[_primary_map]]" primary_arr="[[_primary_arr]]" special_columns="[[_s
pecialColumns]]" columns="{{_columns}}" query_params="{{_query_params}}" filter=
"{{_filter}}" verbose="{{_verbose}}"> </bot-filters> <bot-list-summary auth_head
ers="[[_auth_headers]]" busy="{{_busy3}}" columns="[[_columns]]" count_params="[
[_query_params]]" fleet="[[_fleet]]" filtered_bots="[[_filteredSortedItems]]" so
rt="[[_sortstr]]" verbose="[[_verbose]]"> </bot-list-summary> </div> <bot-list-d
ata id="data" auth_headers="[[_auth_headers]]" query_params="[[_query_params]]"
busy="{{_busy1}}" dimensions="{{_dimensions}}" fleet="{{_fleet}}" primary_map="{
{_primary_map}}" primary_arr="{{_primary_arr}}"> </bot-list-data> <table class="
bot-list"> <thead on-sort_change="_sortChange"> <tr> <th> <span>Bot Id</span> <s
ort-toggle name="id" current="[[_sort]]"> </sort-toggle> </th> <th hidden$="[[_h
ide('cloud_console_link', _columns.*)]]"> <span>Bot in Cloud Console</span> <sor
t-toggle name="cloud_console_link" current="[[_sort]]"> </sort-toggle> </th> <th
hidden$="[[_hide('mp_lease_id', _columns.*)]]"> <span>Machine Provider Lease Id
</span> <sort-toggle name="mp_lease_id" current="[[_sort]]"> </sort-toggle> </th
> <th hidden$="[[_hide('task', _columns.*)]]"> <span>Current Task</span> <sort-t
oggle name="task" current="[[_sort]]"> </sort-toggle> </th> <template is="dom-re
peat" items="[[_plainColumns]]" as="c"> <th hidden$="[[_hide(c)]]"> <span>[[_hea
der(c)]]</span> <sort-toggle name="[[c]]" current="[[_sort]]"> </sort-toggle> </
th> </template> </tr> </thead> <tbody> <template id="bot_table" is="dom-repeat"
items="[[_filteredSortedItems]]" as="bot" initial-count="50"> <tr class$="[[_bot
Class(bot)]]"> <td> <a class="center" href$="[[_botLink(bot.bot_id)]]" target="_
blank" rel="noopener"> [[bot.bot_id]] </a> </td> <td hidden$="[[_hide('cloud_con
sole_link', _columns.*)]]"> <a href$="[[_ccLink(bot)]]">[[_ccText(bot)]]</a> </t
d> <td hidden$="[[_hide('mp_lease_id', _columns.*)]]"> <a href$="[[_mpLink(bot,
_server_details.machine_provider_template)]]"> [[_column('mp_lease_id', bot,_ver
bose)]] </a> </td> <td hidden$="[[_hide('task', _columns.*)]]"> <a href$="[[_tas
kLink(bot.task_id)]]">[[_taskId(bot)]]</a> </td> <template is="dom-repeat" items
="[[_plainColumns]]" as="c"> <td hidden$="[[_hide(c)]]"> [[_column(c, bot, _verb
ose)]] </td> </template> </tr> <template is="dom-repeat" items="[[_devices(bot)]
]" as="device"> <tr hidden$="[[_hide('android_devices', _columns.*)]]" class$="[
[_deviceClass(device,index)]]"> <td></td> <td hidden$="[[_hide('cloud_console_li
nk', _columns.*)]]"></td> <td hidden$="[[_hide('mp_lease_id', _columns.*)]]"></t
d> <td hidden$="[[_hide('task', _columns.*)]]"></td> <template is="dom-repeat" i
tems="[[_plainColumns]]" as="c"> <td hidden$="[[_hide(c)]]"> [[_deviceColumn(c,
device, _verbose)]] </td> </template> </tr> </template> </template> </tbody> </t
able> <pageable-data id="page_bots" busy="{{_busy2}}" label="Show more bots" out
put="{{_items}}" parse="[[_parseBots]]"> </pageable-data> </div> </swarming-app>
</template> <script> (function(){ | 353 the fleet."> <template is="dom-repeat" items="[[_filters]]" as="fil"> <div class
="item horizontal layout" label="[[fil]]"> <span>[[fil]]</span> <span class="fle
x"></span> <iron-icon class="icons" icon="icons:remove-circle-outline" hidden="[
[_cantRemoveFilter(fil,_filters.*)]]" on-tap="_removeFilter"> </iron-icon> </div
> </template> </div> <div class="side-by-side"> <paper-checkbox checked="{{verbo
se}}">Verbose Entries</paper-checkbox> <paper-input id="_limit" label="Limit Res
ults" auto-validate="" min="0" max="1000" pattern="[0-9]+" value="{{_limit}}"> <
/paper-input> <a href$="[[_matchingTasksLink(query_params)]]">View Matching Task
s</a> </div> </div> </div> </template> <script>!function(){var i={disk_space:fun
ction(i,t){return!0},id:function(i,t){return!0},status:function(i,t){return"quar
antined"===t?i.quarantined:"dead"===t?i.is_dead:!i.quarantined&&!i.is_dead},task
:function(i,t){return"idle"===t?"idle"===this._taskId(i):"idle"!==this._taskId(i
)}};Polymer({is:"bot-filters",behaviors:[SwarmingBehaviors.BotListBehavior,Swarm
ingBehaviors.QueryColumnFilter],properties:{columns:{type:Array,notify:!0},query
_params:{type:Object,computed:"_extractQueryParams(dimensions.*,_filters.*, _lim
it)",notify:!0},verbose:{type:Boolean,notify:!0},_filter_input:{type:Object,valu
e:function(){return this.$.filter}},_filterMap:{type:Object,value:function(){var
t=this._commonFilters();for(var n in i)t[n]=i[n];return t}}},_cantToggleColumn:
function(i){return!i||"id"===i},_extractQueryParams:function(){var i={},t=[];thi
s._filters.forEach(function(n){var e=n.split(this.FILTER_SEP,1),s=e[0];if(this.d
imensions.indexOf(s)!==-1){var r=n.substring(s.length+this.FILTER_SEP.length);t.
push(s+this.FILTER_SEP+swarming.alias.unapply(r))}else if("status"===s){var r=n.
substring(s.length+this.FILTER_SEP.length);"alive"===r?(i.is_dead=["FALSE"],i.qu
arantined=["FALSE"]):"quarantined"===r?i.quarantined=["TRUE"]:"dead"===r&&(i.is_
dead=["TRUE"])}}.bind(this)),i.dimensions=t;var n=parseInt(this._limit);return N
umber.isInteger(n)&&(n=Math.max(n,1),n=Math.min(1e3,n),i.limit=[n],this._limit!=
n&&this.set("_limit",n)),i},_matchingTasksLink:function(i){var t=["name","state"
,"created_ts"];return i.dimensions?(i.dimensions.forEach(function(i){var n=i.spl
it(this.FILTER_SEP,1)[0];t.indexOf(n)===-1&&t.push(n)}.bind(this)),this._taskLis
tLink(i.dimensions,t)):this._taskListLink([],t)},_showDimensionMessage:function(
i,t){return i&&"id"!==i&&!t}})}()</script> </dom-module><dom-module id="bot-list
-data" assetpath="/res/imp/botlist/"> <script>!function(){function e(e){if(!e)re
turn{};var t=[],s=0;for(k in e)t.push(k+": "+e[k]),s+=e[k];return s/=t.length,s=
s?s.toFixed(1):"unknown",{average:s,zones:t.join(" | ")||"unknown"}}var t="avail
able",s=["quarantined","error"];Polymer({is:"bot-list-data",behaviors:[SwarmingB
ehaviors.BotListBehavior],properties:{auth_headers:{type:Object,observer:"signIn
"},bots:{type:Array,computed:"parseBots(_list)",notify:!0},busy:{type:Boolean,co
mputed:"_or(_busy2,_busy1)",notify:!0},dimensions:{type:Array,computed:"_makeArr
ay(_dimensions)",notify:!0},fleet:{type:Object,computed:"_fleet(_count)",notify:
!0},primary_map:{type:Object,computed:"_primaryMap(_dimensions)",notify:!0},prim
ary_arr:{type:Array,computed:"_primaryArr(dimensions, BOT_PROPERTIES)",notify:!0
},_busy1:{type:Boolean,value:!1},_busy2:{type:Boolean,value:!1},_count:{type:Obj
ect},_dimensions:{type:Object},_list:{type:Object}},signIn:function(){this._getJ
sonAsync("_count","/api/swarming/v1/bots/count","_busy2",this.auth_headers),this
._getJsonAsync("_dimensions","/api/swarming/v1/bots/dimensions","_busy1",this.au
th_headers)},parseBots:function(s){return s&&s.items?(s.items.forEach(function(s
){s.state=s.state||"{}",s.state=JSON.parse(s.state)||{};var n=s.state.disks||{},
i=Object.keys(n);if(i.length){s.disks=[];for(var a=0;a<i.length;a++)s.disks.push
({id:i[a],mb:n[i[a]].free_mb});s.disks.sort(function(e,t){return t.mb-e.mb})}els
e s.disks=[{id:"unknown",mb:0}];s.state.temp=e(s.state.temp);var o=[],r=s&&s.sta
te&&s.state.devices||{};for(key in r){var u=r[key];u.serial=key,u.okay=u.state==
=t;var _=this._dimension(s,"device_type")||["unknown"];u.device_type=_[0],u.temp
=e(u.temp),o.push(u)}s.state.devices=o,s.last_seen_ts&&(s.last_seen_ts=new Date(
s.last_seen_ts)),s.first_seen_ts&&(s.first_seen_ts=new Date(s.first_seen_ts)),s.
lease_expiration_ts&&(s.lease_expiration_ts=new Date(s.lease_expiration_ts))}.bi
nd(this)),s.items):[]},_fleet:function(){return this._count?{all:this._count.cou
nt||-1,alive:this._count.count-this._count.dead||-1,busy:this._count.busy||-1,id
le:this._count.count-this._count.busy||-1,dead:this._count.dead||-1,quarantined:
this._count.quarantined||-1}:{}},_makeArray:function(e){if(!e||!e.bots_dimension
s)return[];var t=[];return e.bots_dimensions.forEach(function(e){s.indexOf(e.key
)===-1&&t.push(e.key)}),t.push("id"),t.sort(),t},_primaryArr:function(e,t){retur
n e.concat(t)},_primaryMap:function(e){e=e.bots_dimensions||[];var t={};return e
.forEach(function(e){if(swarming.alias.DIMENSIONS_WITH_ALIASES.indexOf(e.key)===
-1)t[e.key]=e.value;else{var s=[];e.value.forEach(function(t){s.push(swarming.al
ias.apply(t,e.key))}),t[e.key]=s}}),t.android_devices&&t.android_devices.push("0
"),t.device_os&&t.device_os.push("none"),t.device_type&&t.device_type.push("none
"),t.id=[],t.disk_space=[],t.task=["busy","idle"],t.status=["alive","dead","quar
antined"],t}})}()</script> </dom-module><dom-module id="bot-list-summary" assetp
ath="/res/imp/botlist/"> <template> <style include="swarming-app-style">:host{di
splay:block;border-left:1px solid #000;padding:5px 5px;font-family:sans-serif}.h
eader{font-size:1.2em;font-weight:700}.header.buffer{margin-top:5px}.right{text-
align:right}.left{text-align:left}</style> <div class="header">Fleet</div> <tabl
e> <tbody><tr> <td class="right"> <a href$="[[_makeURL('','',columns.*,filtered_
bots.*,sort,verbose)]]">All</a>: </td> <td class="left">[[fleet.all]]</td> </tr>
<tr> <td class="right"> <a href$="[[_makeURL('alive','',columns.*,filtered_bots
.*,sort,verbose)]]">Alive</a>: </td> <td class="left">[[fleet.alive]]</td> </tr>
<tr> <td class="right"> <a href$="[[_makeURL('busy','',columns.*,filtered_bots.
*,sort,verbose)]]">Busy</a>: </td> <td class="left">[[fleet.busy]]</td> </tr> <t
r> <td class="right"> <a href$="[[_makeURL('idle','',columns.*,filtered_bots.*,s
ort,verbose)]]">Idle</a>: </td> <td class="left">[[fleet.idle]]</td> </tr> <tr>
<td class="right"> <a href$="[[_makeURL('dead','',columns.*,filtered_bots.*,sort
,verbose)]]">Dead</a>: </td> <td class="left">[[fleet.dead]]</td> </tr> <tr> <td
class="right"> <a href$="[[_makeURL('quarantined','',columns.*,filtered_bots.*,
sort,verbose)]]">Quarantined</a>: </td> <td class="left">[[fleet.quarantined]]</
td> </tr> </tbody></table> <div class="header buffer">Selected</div> <table> <tb
ody><tr> <td class="right"> Displayed: </td> <td class="left">[[_currentlyDispla
yed(filtered_bots.*)]]</td> </tr> <tr> <td class="right"> All: </td> <td class="
left">[[_count_query.count]]</td> </tr> <tr> <td class="right"> <a href$="[[_mak
eURL('alive','true',columns.*,filtered_bots.*,sort,verbose)]]">Alive</a>: </td>
<td class="left">[[_computeAlive(_count_query.*)]]</td> </tr> <tr> <td class="ri
ght"> <a href$="[[_makeURL('busy','true',columns.*,filtered_bots.*,sort,verbose)
]]">Busy</a>: </td> <td class="left">[[_count_query.busy]]</td> </tr> <tr> <td c
lass="right"> <a href$="[[_makeURL('idle','true',columns.*,filtered_bots.*,sort,
verbose)]]">Idle</a>: </td> <td class="left">[[_computeIdle(_count_query.*)]]</t
d> </tr> <tr> <td class="right"> <a href$="[[_makeURL('dead','true',columns.*,fi
ltered_bots.*,sort,verbose)]]">Dead</a>: </td> <td class="left">[[_count_query.d
ead]]</td> </tr> <tr> <td class="right"> <a href$="[[_makeURL('quarantined','tru
e',columns.*,filtered_bots.*,sort,verbose)]]">Quarantined</a>: </td> <td class="
left">[[_count_query.quarantined]]</td> </tr> </tbody></table> </template> <scri
pt>Polymer({is:"bot-list-summary",behaviors:[SwarmingBehaviors.BotListBehavior],
properties:{auth_headers:{type:Object},busy:{type:Boolean,value:!1,notify:!0},co
lumns:{type:Array},count_params:{type:Object},filtered_bots:{type:Array},fleet:{
type:Object},sort:{type:String},verbose:{type:Boolean},_count_query:{type:Object
}},observers:["_recountTotal(auth_headers.*,count_params.*)"],_computeAlive:func
tion(){return this._count_query.count-this._count_query.dead},_computeIdle:funct
ion(){return this._count_query.count-this._count_query.busy},_currentlyDisplayed
:function(){return this.filtered_bots&&this.filtered_bots.length},_getFilterStr:
function(t){return t?"alive"===t||"dead"===t||"quarantined"===t?"status:"+t:"tas
k:"+t:""},_makeURL:function(t,e){if(!e){var r={s:[this.sort],c:this.columns,v:[t
his.verbose]};return t&&(r.f=[this._getFilterStr(t)]),window.location.href.split
("?")[0]+"?"+sk.query.fromParamSet(r)}var o=encodeURIComponent(this._getFilterSt
r(t));if(window.location.href.indexOf(o)===-1)return window.location.href+"&f="+
o},_recountTotal:function(){this.auth_headers&&this.count_params&&this._getJsonA
sync("_count_query","/api/swarming/v1/bots/count","busy",this.auth_headers,this.
count_params)}})</script> </dom-module><dom-module id="bot-list" assetpath="/res
/imp/botlist/"> <template> <style include="iron-flex iron-flex-alignment iron-po
sitioning swarming-app-style dynamic-table-style">bot-filters,bot-list-summary{m
argin-bottom:8px;margin-right:10px}.bad-device,.quarantined{background-color:#fd
d}.dead{background-color:#ccc}.alt{background-color:#f8f8f8}.bot-list th>span{pa
dding-right:30px}</style> <url-param name="s" value="{{_sortstr}}" default_value
="id:asc"> </url-param> <swarming-app client_id="[[client_id]]" auth_headers="{{
_auth_headers}}" signed_in="{{_signed_in}}" server_details="{{_server_details}}"
busy="[[_or(_busy1,_busy2,_busy3)]]" name="Swarming Bot List"> <h2 hidden$="[[_
signed_in]]">You must sign in to see anything useful.</h2> <div hidden$="[[_not(
_signed_in)]]"> <div class="horizontal layout"> <bot-filters dimensions="[[_dime
nsions]]" primary_map="[[_primary_map]]" primary_arr="[[_primary_arr]]" special_
columns="[[_specialColumns]]" columns="{{_columns}}" query_params="{{_query_para
ms}}" filter="{{_filter}}" verbose="{{_verbose}}"> </bot-filters> <bot-list-summ
ary auth_headers="[[_auth_headers]]" busy="{{_busy3}}" columns="[[_columns]]" co
unt_params="[[_query_params]]" fleet="[[_fleet]]" filtered_bots="[[_filteredSort
edItems]]" sort="[[_sortstr]]" verbose="[[_verbose]]"> </bot-list-summary> </div
> <bot-list-data id="data" auth_headers="[[_auth_headers]]" query_params="[[_que
ry_params]]" busy="{{_busy1}}" dimensions="{{_dimensions}}" fleet="{{_fleet}}" p
rimary_map="{{_primary_map}}" primary_arr="{{_primary_arr}}"> </bot-list-data> <
table class="bot-list"> <thead on-sort_change="_sortChange"> <tr> <th> <span>Bot
Id</span> <sort-toggle name="id" current="[[_sort]]"> </sort-toggle> </th> <th
hidden$="[[_hide('cloud_console_link', _columns.*)]]"> <span>Bot in Cloud Consol
e</span> <sort-toggle name="cloud_console_link" current="[[_sort]]"> </sort-togg
le> </th> <th hidden$="[[_hide('mp_lease_id', _columns.*)]]"> <span>Machine Prov
ider Lease Id</span> <sort-toggle name="mp_lease_id" current="[[_sort]]"> </sort
-toggle> </th> <th hidden$="[[_hide('task', _columns.*)]]"> <span>Current Task</
span> <sort-toggle name="task" current="[[_sort]]"> </sort-toggle> </th> <templa
te is="dom-repeat" items="[[_plainColumns]]" as="c"> <th hidden$="[[_hide(c)]]">
<span>[[_header(c)]]</span> <sort-toggle name="[[c]]" current="[[_sort]]"> </so
rt-toggle> </th> </template> </tr> </thead> <tbody> <template id="bot_table" is=
"dom-repeat" items="[[_filteredSortedItems]]" as="bot" initial-count="50"> <tr c
lass$="[[_botClass(bot)]]"> <td> <a class="center" href$="[[_botLink(bot.bot_id)
]]" target="_blank" rel="noopener"> [[bot.bot_id]] </a> </td> <td hidden$="[[_hi
de('cloud_console_link', _columns.*)]]"> <a href$="[[_ccLink(bot)]]">[[_ccText(b
ot)]]</a> </td> <td hidden$="[[_hide('mp_lease_id', _columns.*)]]"> <a href$="[[
_mpLink(bot, _server_details.machine_provider_template)]]"> [[_column('mp_lease_
id', bot,_verbose)]] </a> </td> <td hidden$="[[_hide('task', _columns.*)]]"> <a
href$="[[_taskLink(bot.task_id)]]">[[_taskId(bot)]]</a> </td> <template is="dom-
repeat" items="[[_plainColumns]]" as="c"> <td hidden$="[[_hide(c)]]"> [[_column(
c, bot, _verbose)]] </td> </template> </tr> <template is="dom-repeat" items="[[_
devices(bot)]]" as="device"> <tr hidden$="[[_hide('android_devices', _columns.*)
]]" class$="[[_deviceClass(device,index)]]"> <td></td> <td hidden$="[[_hide('clo
ud_console_link', _columns.*)]]"></td> <td hidden$="[[_hide('mp_lease_id', _colu
mns.*)]]"></td> <td hidden$="[[_hide('task', _columns.*)]]"></td> <template is="
dom-repeat" items="[[_plainColumns]]" as="c"> <td hidden$="[[_hide(c)]]"> [[_dev
iceColumn(c, device, _verbose)]] </td> </template> </tr> </template> </template>
</tbody> </table> <pageable-data id="page_bots" busy="{{_busy2}}" label="Show m
ore bots" output="{{_items}}" parse="[[_parseBots]]"> </pageable-data> </div> </
swarming-app> </template> <script> (function(){ |
| 311 var UNKNOWN = "unknown"; | 354 var UNKNOWN = "unknown"; |
| 312 // see dynamic-table for more information on specialColumns, headerMap, | 355 // see dynamic-table for more information on specialColumns, headerMap, |
| 313 // columnMap, and specialSort | 356 // columnMap, and specialSort |
| 314 var specialColumns = ["id", "cloud_console_link", "mp_lease_id", "task"]; | 357 var specialColumns = ["id", "cloud_console_link", "mp_lease_id", "task"]; |
| 315 | 358 |
| 316 var deviceColumns = ["battery_health", "battery_level", "battery_status", "b
attery_temperature", "battery_voltage", "device_temperature"]; | 359 var deviceColumns = ["battery_health", "battery_level", "battery_status", "b
attery_temperature", "battery_voltage", "device_temperature"]; |
| 317 | 360 |
| 318 var headerMap = { | 361 var headerMap = { |
| 319 // "id", "task" and other special columns don't go here. They have their | 362 // "id", "task" and other special columns don't go here. They have their |
| 320 // headers hard-coded above. | 363 // headers hard-coded above. |
| (...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 727 | 770 |
| 728 _reload: function() { | 771 _reload: function() { |
| 729 if (!this._auth_headers || !this._query_params) { | 772 if (!this._auth_headers || !this._query_params) { |
| 730 return; | 773 return; |
| 731 } | 774 } |
| 732 var url = "/api/swarming/v1/bots/list?" + sk.query.fromParamSet(this._qu
ery_params); | 775 var url = "/api/swarming/v1/bots/list?" + sk.query.fromParamSet(this._qu
ery_params); |
| 733 this.$.page_bots.load(url,this._auth_headers); | 776 this.$.page_bots.load(url,this._auth_headers); |
| 734 } | 777 } |
| 735 | 778 |
| 736 }); | 779 }); |
| 737 })(); </script> </dom-module> <dom-module id="paper-button" assetpath="/res/im
p/bower_components/paper-button/"> <template strip-whitespace=""> <style include
="paper-material-shared-styles">:host{@apply(--layout-inline);@apply(--layout-ce
nter-center);position:relative;box-sizing:border-box;min-width:5.14em;margin:0 .
29em;background:0 0;-webkit-tap-highlight-color:transparent;-webkit-tap-highligh
t-color:transparent;font:inherit;text-transform:uppercase;outline-width:0;border
-radius:3px;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;
user-select:none;cursor:pointer;z-index:0;padding:.7em .57em;@apply(--paper-font
-common-base);@apply(--paper-button)}:host([hidden]){display:none!important}:hos
t([raised].keyboard-focus){font-weight:700;@apply(--paper-button-raised-keyboard
-focus)}:host(:not([raised]).keyboard-focus){font-weight:700;@apply(--paper-butt
on-flat-keyboard-focus)}:host([disabled]){background:#eaeaea;color:#a8a8a8;curso
r:auto;pointer-events:none;@apply(--paper-button-disabled)}:host([animated]){@ap
ply(--shadow-transition)}paper-ripple{color:var(--paper-button-ink-color)}</styl
e> <content></content> </template> <script>Polymer({is:"paper-button",behaviors:
[Polymer.PaperButtonBehavior],properties:{raised:{type:Boolean,reflectToAttribut
e:!0,value:!1,observer:"_calculateElevation"}},_calculateElevation:function(){th
is.raised?Polymer.PaperButtonBehaviorImpl._calculateElevation.apply(this):this._
setElevation(0)}})</script> </dom-module> <script>Polymer.NeonAnimatableBehavior
={properties:{animationConfig:{type:Object},entryAnimation:{observer:"_entryAnim
ationChanged",type:String},exitAnimation:{observer:"_exitAnimationChanged",type:
String}},_entryAnimationChanged:function(){this.animationConfig=this.animationCo
nfig||{},this.animationConfig.entry=[{name:this.entryAnimation,node:this}]},_exi
tAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this.
animationConfig.exit=[{name:this.exitAnimation,node:this}]},_copyProperties:func
tion(i,n){for(var t in n)i[t]=n[t]},_cloneConfig:function(i){var n={isClone:!0};
return this._copyProperties(n,i),n},_getAnimationConfigRecursive:function(i,n,t)
{if(this.animationConfig){if(this.animationConfig.value&&"function"==typeof this
.animationConfig.value)return void this._warn(this._logf("playAnimation","Please
put 'animationConfig' inside of your components 'properties' object instead of
outside of it."));var o;if(o=i?this.animationConfig[i]:this.animationConfig,Arra
y.isArray(o)||(o=[o]),o)for(var e,a=0;e=o[a];a++)if(e.animatable)e.animatable._g
etAnimationConfigRecursive(e.type||i,n,t);else if(e.id){var r=n[e.id];r?(r.isClo
ne||(n[e.id]=this._cloneConfig(r),r=n[e.id]),this._copyProperties(r,e)):n[e.id]=
e}else t.push(e)}},getAnimationConfig:function(i){var n={},t=[];this._getAnimati
onConfigRecursive(i,n,t);for(var o in n)t.push(n[o]);return t}}</script> <script
>Polymer.NeonAnimationRunnerBehaviorImpl={_configureAnimations:function(n){var i
=[];if(n.length>0)for(var e,t=0;e=n[t];t++){var o=document.createElement(e.name)
;if(o.isNeonAnimation){var a=null;try{a=o.configure(e),"function"!=typeof a.canc
el&&(a=document.timeline.play(a))}catch(n){a=null,console.warn("Couldnt play","(
",e.name,").",n)}a&&i.push({neonAnimation:o,config:e,animation:a})}else console.
warn(this.is+":",e.name,"not found!")}return i},_shouldComplete:function(n){for(
var i=!0,e=0;e<n.length;e++)if("finished"!=n[e].animation.playState){i=!1;break}
return i},_complete:function(n){for(var i=0;i<n.length;i++)n[i].neonAnimation.co
mplete(n[i].config);for(var i=0;i<n.length;i++)n[i].animation.cancel()},playAnim
ation:function(n,i){var e=this.getAnimationConfig(n);if(e){this._active=this._ac
tive||{},this._active[n]&&(this._complete(this._active[n]),delete this._active[n
]);var t=this._configureAnimations(e);if(0==t.length)return void this.fire("neon
-animation-finish",i,{bubbles:!1});this._active[n]=t;for(var o=0;o<t.length;o++)
t[o].animation.onfinish=function(){this._shouldComplete(t)&&(this._complete(t),d
elete this._active[n],this.fire("neon-animation-finish",i,{bubbles:!1}))}.bind(t
his)}},cancelAnimation:function(){for(var n in this._animations)this._animations
[n].cancel();this._animations={}}},Polymer.NeonAnimationRunnerBehavior=[Polymer.
NeonAnimatableBehavior,Polymer.NeonAnimationRunnerBehaviorImpl]</script> <script
>Polymer.PaperDialogBehaviorImpl={hostAttributes:{role:"dialog",tabindex:"-1"},p
roperties:{modal:{type:Boolean,value:!1}},observers:["_modalChanged(modal, _read
ied)"],listeners:{tap:"_onDialogClick"},ready:function(){this.__prevNoCancelOnOu
tsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancel
OnEscKey,this.__prevWithBackdrop=this.withBackdrop},_modalChanged:function(i,e){
e&&(i?(this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prev
NoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop
,this.noCancelOnOutsideClick=!0,this.noCancelOnEscKey=!0,this.withBackdrop=!0):(
this.noCancelOnOutsideClick=this.noCancelOnOutsideClick&&this.__prevNoCancelOnOu
tsideClick,this.noCancelOnEscKey=this.noCancelOnEscKey&&this.__prevNoCancelOnEsc
Key,this.withBackdrop=this.withBackdrop&&this.__prevWithBackdrop))},_updateClosi
ngReasonConfirmed:function(i){this.closingReason=this.closingReason||{},this.clo
singReason.confirmed=i},_onDialogClick:function(i){for(var e=Polymer.dom(i).path
,o=0;o<e.indexOf(this);o++){var t=e[o];if(t.hasAttribute&&(t.hasAttribute("dialo
g-dismiss")||t.hasAttribute("dialog-confirm"))){this._updateClosingReasonConfirm
ed(t.hasAttribute("dialog-confirm")),this.close(),i.stopPropagation();break}}}},
Polymer.PaperDialogBehavior=[Polymer.IronOverlayBehavior,Polymer.PaperDialogBeha
viorImpl]</script> <dom-module id="paper-dialog-shared-styles" assetpath="/res/i
mp/bower_components/paper-dialog-behavior/"> <template> <style>:host{display:blo
ck;margin:24px 40px;background:var(--paper-dialog-background-color,--primary-bac
kground-color);color:var(--paper-dialog-color,--primary-text-color);@apply(--pap
er-font-body1);@apply(--shadow-elevation-16dp);@apply(--paper-dialog)}:host>::co
ntent>*{margin-top:20px;padding:0 24px}:host>::content>.no-padding{padding:0}:ho
st>::content>:first-child{margin-top:24px}:host>::content>:last-child{margin-bot
tom:24px}:host>::content h2{position:relative;margin:0;@apply(--paper-font-title
);@apply(--paper-dialog-title)}:host>::content .buttons{position:relative;paddin
g:8px 8px 8px 24px;margin:0;color:var(--paper-dialog-button-color,--primary-colo
r);@apply(--layout-horizontal);@apply(--layout-end-justified)}</style> </templat
e> </dom-module> <dom-module id="paper-dialog" assetpath="/res/imp/bower_compone
nts/paper-dialog/"> <template> <style include="paper-dialog-shared-styles"></sty
le> <content></content> </template> </dom-module> <script>!function(){Polymer({i
s:"paper-dialog",behaviors:[Polymer.PaperDialogBehavior,Polymer.NeonAnimationRun
nerBehavior],listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},_rende
rOpened:function(){this.cancelAnimation(),this.playAnimation("entry")},_renderCl
osed:function(){this.cancelAnimation(),this.playAnimation("exit")},_onNeonAnimat
ionFinish:function(){this.opened?this._finishRenderOpened():this._finishRenderCl
osed()}})}()</script> <script>window.SwarmingBehaviors=window.SwarmingBehaviors|
|{},function(){SwarmingBehaviors.TaskBehavior={properties:{BOT_DIED:{type:String
,value:"BOT_DIED"},CANCELED:{type:String,value:"CANCELED"},COMPLETED:{type:Strin
g,value:"COMPLETED"},COMPLETED_DEDUPED:{type:String,value:"COMPLETED (DEDUPED)"}
,COMPLETED_FAILURE:{type:String,value:"COMPLETED (FAILURE)"},COMPLETED_SUCCESS:{
type:String,value:"COMPLETED (SUCCESS)"},EXPIRED:{type:String,value:"EXPIRED"},P
ENDING:{type:String,value:"PENDING"},RUNNING:{type:String,value:"RUNNING"},TIMED
_OUT:{type:String,value:"TIMED_OUT"}},stateClass:function(t){return t===this.CAN
CELED||t===this.TIMED_OUT||t===this.EXPIRED?"exception":t===this.BOT_DIED?"bot_d
ied":t===this.COMPLETED_FAILURE?"failed_task":t===this.RUNNING||t===this.PENDING
?"pending_task":""},state:function(t){return t?t.state===this.COMPLETED?t.failur
e?this.COMPLETED_FAILURE:"0"===t.try_number?this.COMPLETED_DEDUPED:this.COMPLETE
D_SUCCESS:t.state:""},_stateClass:function(t){return this.stateClass(this.state(
t))}}}()</script> <dom-module id="task-style" assetpath="/res/imp/common/"> <tem
plate> <style>.failed_task{background-color:#fdd}.bot_died{background-color:#ccc
}.exception{background-color:#edd2ff}.pending_task{background-color:#fffc6c}</st
yle> </template> </dom-module><dom-module id="task-filters" assetpath="/res/imp/
tasklist/"> <template> <style is="custom-style" include="iron-flex iron-flex-ali
gnment iron-positioning query-column-filter-style">.item.wide{max-width:400px}.s
elector.wide{min-width:275px}</style> <url-param name="f" value="{{_filters}}" d
efault_values="[]" multi=""> </url-param> <url-param name="c" value="{{columns}}
" default_values="["name","state","created_ts",&qu
ot;user"]" multi=""> </url-param> <url-param name="q" value="{{_query}}" de
fault_value=""> </url-param> <url-param name="l" default_value="50" value="{{_li
mit}}"> </url-param> <div class="container horizontal layout"> <div class="narro
w-down-selector"> <div> <iron-a11y-keys target="[[_filter_input]]" keys="enter"
on-keys-pressed="_manuallyAddFilter"></iron-a11y-keys> <paper-input id="filter"
label="Search columns and filters or supply a filter and press enter" placeholde
r="gpu nvidia pool:Chrome" value="{{_query::input}}"> </paper-input> </div> <div
class="wide selector side-by-side" title="This shows all task tags and other in
teresting task properties. Mark the check box to add as a column. Select the row
to see filter options."> <iron-selector attr-for-selected="label" selected="{{_
primarySelected}}"> <template is="dom-repeat" items="[[_primaryItems]]" as="item
"> <div class="selectable item horizontal layout" label="[[item]]"> <span>[[_bef
oreBold(item,_query)]]<span class="bold">[[_bold(item,_query)]]</span>[[_afterBo
ld(item,_query)]]</span> <span class="flex"></span> <paper-checkbox noink="" dis
abled$="[[_cantToggleColumn(item)]]" checked="[[_columnState(item,columns.*)]]"
on-change="_toggleColumn"> </paper-checkbox> </div> </template> </iron-selector>
</div> <div class="selector side-by-side" title="These are most of the options
(if any) that the task list can be filtered on. This list is all that have been
seen recently, augmented with the ones returned by the current query. There may
be others."> <template is="dom-repeat" id="secondaryList" items="[[_secondaryIte
ms]]" as="item"> <div class="item horizontal layout" label="[[item]]"> <span>[[_
beforeBold(item,_query)]]<span class="bold">[[_bold(item,_query)]]</span>[[_afte
rBold(item,_query)]]</span> <span class="flex"></span> <iron-icon class="icons"
icon="icons:arrow-forward" hidden="[[_cantAddFilter(_primarySelected,item,_filte
rs.*)]]" on-tap="_addFilter"> </iron-icon> </div> </template> <template is="dom-
if" if="[[_secondaryItems.length]]"> <div class="pointable item" title="There ma
y be more valid options than just the ones shown.">...</div> </template> <templa
te is="dom-if" if="[[_showTagMessage(_primarySelected,_secondaryItems.length)]]"
> <div class="item">Only tags can be used for filtering. <i>"[[_primarySelected]
]"</i> is informational only.</div> </template> </div> <div class="selector side
-by-side" title="These tag filters are AND'd together and applied to all tasks."
> <template is="dom-repeat" items="[[_filters]]" as="fil"> <div class="item hori
zontal layout" label="[[fil]]"> <span>[[fil]]</span> <span class="flex"></span>
<iron-icon class="icons" icon="icons:remove-circle-outline" hidden="[[_cantRemov
eFilter(fil,_filters.*)]]" on-tap="_removeFilter"> </iron-icon> </div> </templat
e> </div> <div class="side-by-side"> <paper-input id="_limit" label="Limit Resul
ts" auto-validate="" min="0" max="1000" pattern="[0-9]+" value="{{_limit}}"> </p
aper-input> </div> </div> </div> </template> <script>!function(){var t={state:fu
nction(t,i){var r=this._attribute(t,"state")[0];if(i===r||"ALL"===i)return!0;if(
"PENDING_RUNNING"===i)return r===this.PENDING||r===this.RUNNING;var e=this._attr
ibute(t,"failure",!1)[0];if("COMPLETED_SUCCESS"===i)return r===this.COMPLETED&&!
e;if("COMPLETED_FAILURE"===i)return r===this.COMPLETED&&e;var a=this._attribute(
t,"try_number","-1")[0];return"DEDUPED"===i?r===this.COMPLETED&&"0"===a:void 0}}
;Polymer({is:"task-filters",behaviors:[SwarmingBehaviors.QueryColumnFilter,Swarm
ingBehaviors.TaskBehavior],properties:{columns:{type:Array,notify:!0},query_para
ms:{type:Object,computed:"_extractQueryParams(_filters.*, _limit)",notify:!0},_f
ilterMap:{type:Object,value:function(){var i=this._commonFilters();for(var r in
t)i[r]=t[r];return i}}},_cantToggleColumn:function(t){return!t||"name"===t},_ext
ractQueryParams:function(){var t={},i=[];this._filters.forEach(function(r){var e
=r.split(this.FILTER_SEP,1),a=e[0],s=r.substring(a.length+this.FILTER_SEP.length
);"state"===a?t.state=[s]:("user"===a&&"none"===s&&(s=""),i.push(a+this.FILTER_S
EP+swarming.alias.unapply(s)))}.bind(this)),t.tags=i;var r=parseInt(this._limit)
;return Number.isInteger(r)&&(r=Math.max(r,1),r=Math.min(1e3,r),t.limit=[r],this
._limit!=r&&this.set("_limit",r)),t},_showTagMessage:function(t,i){return t&&"na
me"!==t&&!i}})}()</script> </dom-module><dom-module id="task-list-data" assetpat
h="/res/imp/tasklist/"> <script>!function(){var t=["abandoned_ts","completed_ts"
,"created_ts","modified_ts","started_ts"];Polymer({is:"task-list-data",behaviors
:[SwarmingBehaviors.CommonBehavior,SwarmingBehaviors.TaskBehavior],properties:{a
uth_headers:{type:Object,observer:"signIn"},query_params:{type:Object},tasks:{ty
pe:Array},busy:{type:Boolean,computed:"_or(_busy2,_busy1)",notify:!0},primary_ma
p:{type:Object,computed:"_primaryMap(_tags,_dimensions,tasks.*)",notify:!0},prim
ary_arr:{type:Array,computed:"_primaryArr(primary_map)",notify:!0},_busy2:{type:
Boolean,value:!1},_busy1:{type:Boolean,value:!1},_dimensions:{type:Object},_list
:{type:Object},_tags:{type:Object}},signIn:function(){this._getJsonAsync("_tags"
,"/api/swarming/v1/tasks/tags","_busy2",this.auth_headers),this._getJsonAsync("_
dimensions","/api/swarming/v1/bots/dimensions","_busy1",this.auth_headers)},_pri
maryArr:function(t){var a=Object.keys(t);return a.sort(),a},_primaryMap:function
(a,s){a=a&&a.tasks_tags||[],s=s&&s.bots_dimensions||[],tasks=this.tasks||[];var
e={};a.forEach(function(t){e[t.key]||(e[t.key]={});var a=t.value||[];a.forEach(f
unction(a){e[t.key][a]=!0})}),s.forEach(function(t){var a=t.value;e[t.key]||(e[t
.key]={}),a.forEach(function(a){e[t.key][a]=!0})}),tasks.forEach(function(t){Obj
ect.keys(t.tagMap).forEach(function(a){var s=t.tagMap[a];e[a]||(e[a]={}),e[a][s]
=!0})}),e.user&&(delete e.user[""],e.user.none=!0);var r={};for(key in e){var i=
Object.keys(e[key]);if(swarming.alias.DIMENSIONS_WITH_ALIASES.indexOf(key)===-1)
r[key]=i;else{var n=[];i.forEach(function(t){n.push(swarming.alias.apply(t,key))
}),r[key]=n}}return r.name=[],r.state=[this.PENDING,this.RUNNING,"PENDING_RUNNIN
G",this.COMPLETED,"COMPLETED_SUCCESS","COMPLETED_FAILURE",this.EXPIRED,this.TIME
D_OUT,this.BOT_DIED,this.CANCELED,"DEDUPED","ALL"],r.costs_usd=[],r.deduped_from
=[],r.duration=[],r.server_versions=[],r.bot=[],t.forEach(function(t){r[t]=[]}),
r},parseTasks:function(a){if(!a||!a.items)return[];var s=new Date;return a.items
.forEach(function(a){var e={};a.tags=a.tags||[],a.tags.forEach(function(t){var a
=t.split(":",1),s=a[0],r=t.substring(s.length+1);e[s]=r}),a.tagMap=e,t.forEach(f
unction(t){a[t]&&(a[t]=new Date(a[t]),a["human_"+t]=sk.human.localeTime(a[t]))})
,!a.duration&&a.state===this.RUNNING&&a.started_ts&&(a.duration=(s-a.started_ts)
/1e3),a.duration&&(a.human_duration=this._humanDuration(a.duration))}.bind(this)
),a.items}})}()</script> </dom-module> <dom-module id="task-list" assetpath="/re
s/imp/tasklist/"> <template> <style include="iron-flex iron-flex-alignment iron-
positioning swarming-app-style dynamic-table-style task-style">task-filters{marg
in-bottom:8px;margin-right:10px}.task-list th>span{padding-right:30px}</style> <
url-param name="s" value="{{_sortstr}}" default_value="created_ts:desc"> </url-p
aram> <swarming-app client_id="[[client_id]]" auth_headers="{{_auth_headers}}" p
ermissions="{{_permissions}}" signed_in="{{_signed_in}}" busy="[[_or(_busy1,_bus
y2)]]" name="Swarming Task List"> <h2 hidden$="[[_signed_in]]">You must sign in
to see anything useful.</h2> <div hidden$="[[_not(_signed_in)]]"> <task-list-dat
a id="data" auth_headers="[[_auth_headers]]" query_params="[[_query_params]]" ta
sks="[[_items]]" busy="{{_busy1)}}" primary_map="{{_primary_map}}" primary_arr="
{{_primary_arr}}"> </task-list-data> <div class="horizontal layout"> <task-filte
rs primary_map="[[_primary_map]]" primary_arr="[[_primary_arr]]" special_columns
="[[_specialColumns]]" columns="{{_columns}}" query_params="{{_query_params}}" f
ilter="{{_filter}}"> </task-filters> </div> <table class="task-list"> <thead on-
sort_change="_sortChange"> <tr> <th> <span>Task Name</span> <sort-toggle name="n
ame" current="[[_sort]]"> </sort-toggle> </th> <th hidden$="[[_hide('state', _co
lumns.*)]]"> <span>State</span> <sort-toggle name="state" current="[[_sort]]"> <
/sort-toggle> </th> <th hidden$="[[_hide('bot', _columns.*)]]"> <span>Bot Assign
ed</span> <sort-toggle name="bot" current="[[_sort]]"> </sort-toggle> </th> <th
hidden$="[[_hide('deduped_from', _columns.*)]]"> <span>Deduped from</span> <sort
-toggle name="deduped_from" current="[[_sort]]"> </sort-toggle> </th> <th hidden
$="[[_hide('source_revision', _columns.*)]]"> <span>Source Revision</span> <sort
-toggle name="source_revision" current="[[_sort]]"> </sort-toggle> </th> <templa
te is="dom-repeat" items="[[_plainColumns]]" as="c"> <th hidden$="[[_hide(c)]]">
<span>[[_header(c)]]</span> <sort-toggle name="[[c]]" current="[[_sort]]"> </so
rt-toggle> </th> </template> </tr> </thead> <tbody> <template id="tasks_table" i
s="dom-repeat" items="[[_filteredSortedItems]]" as="task" initial-count="50"> <t
r class$="[[_taskClass(task)]]"> <td> <a class="center" href$="[[_taskLink(task.
task_id)]]" target="_blank"> [[task.name]] </a> </td> <td hidden$="[[_hide('stat
e', _columns.*)]]"> [[_column('state', task)]] <paper-button raised="" hidden$="
[[_cannotCancel(task,_permissions)]]" on-tap="_promptCancel"> Cancel </paper-but
ton> </td> <td hidden$="[[_hide('bot', _columns.*)]]"> <a class="center" href$="
[[_botLink(task.bot_id)]]" target="_blank"> [[_column('bot',task)]] </a> </td> <
td hidden$="[[_hide('deduped_from', _columns.*)]]"> <a class="center" href$="[[_
taskLink(task.deduped_from)]]" target="_blank"> [[_column('deduped_from',task)]]
</a> </td> <td hidden$="[[_hide('source_revision', _columns.*)]]"> <a class="ce
nter" href$="[[_sourceLink(task)]]" target="_blank"> [[_column('source_revision'
,task)]] </a> </td> <template is="dom-repeat" items="[[_plainColumns]]" as="c">
<td hidden$="[[_hide(c)]]"> [[_column(c, task)]] </td> </template> </tr> </templ
ate> </tbody> </table> <pageable-data id="page_tasks" busy="{{_busy2}}" label="S
how more tasks" output="{{_items}}" parse="[[_parseTasks]]"> </pageable-data> </
div> </swarming-app> <paper-dialog id="prompt" modal="" on-iron-overlay-closed="
_promptClosed"> <h2>Are you sure?</h2> <div>Are you sure you want to [[_dialogPr
ompt]]?</div> <div class="buttons"> <paper-button dialog-dismiss="" autofocus=""
>No</paper-button> <paper-button dialog-confirm="">Yes</paper-button> </div> </p
aper-dialog> </template> <script>!function(){function t(t){return function(e){re
turn this._attribute(e,"human_"+t)[0]}}function e(t){return function(e,a,s){var
r=this._attribute(a,t,"0")[0],n=this._attribute(s,t,"0")[0];return e*(r-n)}}var
a=["deduped_from","name","state","bot","source_revision"],s={abandoned_ts:t("aba
ndoned_ts"),bot:function(t){return this._attribute(t,"bot_id")[0]},completed_ts:
t("completed_ts"),costs_usd:function(t){return this._attribute(t,"costs_usd",0)[
0]},created_ts:t("created_ts"),duration:t("duration"),modified_ts:t("modified_ts
"),source_revision:function(t){var e=this._attribute(t,"source_revision")[0];ret
urn e.substring(0,8)},started_ts:t("started_ts"),state:function(t){var e=this._a
ttribute(t,"state")[0];if("COMPLETED"===e){if(this._attribute(t,"failure",!1)[0]
)return"COMPLETED (FAILURE)";var a=this._attribute(t,"try_number","-1")[0];retur
n"0"===a?"COMPLETED (DEDUPED)":"COMPLETED (SUCCESS)"}return e}},r={abandoned_ts:
"Abandoned On",completed_ts:"Completed On",created_ts:"Created On",duration:"Dur
ation",modified_ts:"Last Modified",started_ts:"Started Working On",user:"Request
ing User"},n={abandoned_ts:e("abandoned_ts"),completed_ts:e("completed_ts"),crea
ted_ts:e("created_ts"),duration:e("duration"),modified_ts:e("modified_ts"),start
ed_ts:e("started_ts")};Polymer({is:"task-list",behaviors:[SwarmingBehaviors.Dyna
micTableBehavior,SwarmingBehaviors.TaskBehavior],properties:{client_id:{type:Str
ing},_busy1:{type:Boolean,value:!1},_busy2:{type:Boolean,value:!1},_parseTasks:{
type:Function,value:function(){return this.$.data.parseTasks.bind(this)}},_toCan
cel:{type:String},_columnMap:{type:Object,value:function(){var t=this._commonCol
umns();for(var e in s)t[e]=s[e];return t}},_headerMap:{type:Object,value:r},_spe
cialColumns:{type:Array,value:a},_specialSort:{type:Object,value:n}},observers:[
"reload(_query_params,_auth_headers)"],_attribute:function(t,e,a){void 0===a&&(a
="none");var s=this._tag(t,e)||t[e]||[a];return Array.isArray(s)?s:[s]},_cannotC
ancel:function(t,e){return!(e&&e.cancel_task&&"PENDING"===this._column("state",t
))},_cancelTask:function(){var t="/api/swarming/v1/task/"+this._toCancel+"/cance
l";swarming.postWithToast(t,"Canceling task "+this._toCancel,this._auth_headers)
,this.set("_toCancel","")},_promptClosed:function(t){t.detail.confirmed&&this._c
ancelTask()},_promptCancel:function(t){var e=t.model.task;return e&&e.task_id?(t
his.set("_toCancel",e.task_id),this.set("_dialogPrompt",'cancel task "'+e.name+'
"'),void this.$.prompt.open()):void console.log("Missing task info",e)},reload:f
unction(){if(this._auth_headers&&this._query_params){var t="/api/swarming/v1/tas
ks/list?"+sk.query.fromParamSet(this._query_params);this.$.page_tasks.load(t,thi
s._auth_headers)}},_sourceLink:function(t){var e=this._attribute(t,"source_revis
ion")[0],a=this._attribute(t,"source_repo")[0];return"none"!==e&&"none"!==a&&a.r
eplace("%s",e)},_tag:function(t,e){if(t&&t.tagMap)return t.tagMap[e]},_taskClass
:function(t){return this.stateClass(this._column("state",t))}})}()</script> </do
m-module> <dom-module id="iron-collapse" assetpath="/res/imp/bower_components/ir
on-collapse/"> <template> <style>:host{display:block;transition-duration:var(--i
ron-collapse-transition-duration,300ms);overflow:visible}:host(.iron-collapse-cl
osed){display:none}:host(:not(.iron-collapse-opened)){overflow:hidden}</style> <
content></content> </template> </dom-module> <script>Polymer({is:"iron-collapse"
,behaviors:[Polymer.IronResizableBehavior],properties:{horizontal:{type:Boolean,
value:!1,observer:"_horizontalChanged"},opened:{type:Boolean,value:!1,notify:!0,
observer:"_openedChanged"},noAnimation:{type:Boolean},_desiredSize:{type:String,
value:""}},get dimension(){return this.horizontal?"width":"height"},get _dimensi
onMax(){return this.horizontal?"maxWidth":"maxHeight"},get _dimensionMaxCss(){re
turn this.horizontal?"max-width":"max-height"},hostAttributes:{role:"group","ari
a-hidden":"true","aria-expanded":"false"},listeners:{transitionend:"_transitionE
nd"},attached:function(){this._transitionEnd()},toggle:function(){this.opened=!t
his.opened},show:function(){this.opened=!0},hide:function(){this.opened=!1},upda
teSize:function(i,t){if(i="auto"===i?"":i,this._desiredSize!==i){this._desiredSi
ze=i,this._updateTransition(!1);var e=t&&!this.noAnimation&&this._isDisplayed;if
(e){var n=this._calcSize();""===i&&(this.style[this._dimensionMax]="",i=this._ca
lcSize()),this.style[this._dimensionMax]=n,this.scrollTop=this.scrollTop,this._u
pdateTransition(!0),e=i!==n}this.style[this._dimensionMax]=i,e||this._transition
End()}},enableTransition:function(i){Polymer.Base._warn("`enableTransition()` is
deprecated, use `noAnimation` instead."),this.noAnimation=!i},_updateTransition
:function(i){this.style.transitionDuration=i&&!this.noAnimation?"":"0s"},_horizo
ntalChanged:function(){this.style.transitionProperty=this._dimensionMaxCss;var i
="maxWidth"===this._dimensionMax?"maxHeight":"maxWidth";this.style[i]="",this.up
dateSize(this.opened?"auto":"0px",!1)},_openedChanged:function(){this.setAttribu
te("aria-expanded",this.opened),this.setAttribute("aria-hidden",!this.opened),th
is.toggleClass("iron-collapse-closed",!1),this.toggleClass("iron-collapse-opened
",!1),this.updateSize(this.opened?"auto":"0px",!0),this.opened&&this.focus()},_t
ransitionEnd:function(){this.style[this._dimensionMax]=this._desiredSize,this.to
ggleClass("iron-collapse-closed",!this.opened),this.toggleClass("iron-collapse-o
pened",this.opened),this._updateTransition(!1),this.notifyResize()},get _isDispl
ayed(){var i=this.getBoundingClientRect();for(var t in i)if(0!==i[t])return!0;re
turn!1},_calcSize:function(){return this.getBoundingClientRect()[this.dimension]
+"px"}})</script> <script>Polymer.IronMenubarBehaviorImpl={hostAttributes:{role:
"menubar"},keyBindings:{left:"_onLeftKey",right:"_onRightKey"},_onUpKey:function
(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefault()},_onDownKey
:function(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefault()},g
et _isRTL(){return"rtl"===window.getComputedStyle(this).direction},_onLeftKey:fu
nction(e){this._isRTL?this._focusNext():this._focusPrevious(),e.detail.keyboardE
vent.preventDefault()},_onRightKey:function(e){this._isRTL?this._focusPrevious()
:this._focusNext(),e.detail.keyboardEvent.preventDefault()},_onKeydown:function(
e){this.keyboardEventMatchesKeys(e,"up down left right esc")||this._focusWithKey
boardEvent(e)}},Polymer.IronMenubarBehavior=[Polymer.IronMenuBehavior,Polymer.Ir
onMenubarBehaviorImpl]</script> <iron-iconset-svg name="paper-tabs" size="24"> <
svg><defs> <g id="chevron-left"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.
83 12z"></path></g> <g id="chevron-right"><path d="M10 6L8.59 7.41 13.17 12l-4.5
8 4.59L10 18l6-6z"></path></g> </defs></svg> </iron-iconset-svg> <dom-module id=
"paper-tab" assetpath="/res/imp/bower_components/paper-tabs/"> <template> <style
>:host{@apply(--layout-inline);@apply(--layout-center);@apply(--layout-center-ju
stified);@apply(--layout-flex-auto);position:relative;padding:0 12px;overflow:hi
dden;cursor:pointer;vertical-align:middle;@apply(--paper-font-common-base);@appl
y(--paper-tab)}:host(:focus){outline:0}:host([link]){padding:0}.tab-content{heig
ht:100%;transform:translateZ(0);-webkit-transform:translateZ(0);transition:opaci
ty .1s cubic-bezier(.4,0,1,1);@apply(--layout-horizontal);@apply(--layout-center
-center);@apply(--layout-flex-auto);@apply(--paper-tab-content)}:host(:not(.iron
-selected))>.tab-content{opacity:.8;@apply(--paper-tab-content-unselected)}:host
(:focus) .tab-content{opacity:1;font-weight:700}paper-ripple{color:var(--paper-t
ab-ink,--paper-yellow-a100)}.tab-content>::content>a{@apply(--layout-flex-auto);
height:100%}</style> <div class="tab-content"> <content></content> </div> </temp
late> <script>Polymer({is:"paper-tab",behaviors:[Polymer.IronControlState,Polyme
r.IronButtonState,Polymer.PaperRippleBehavior],properties:{link:{type:Boolean,va
lue:!1,reflectToAttribute:!0}},hostAttributes:{role:"tab"},listeners:{down:"_upd
ateNoink",tap:"_onTap"},attached:function(){this._updateNoink()},get _parentNoin
k(){var t=Polymer.dom(this).parentNode;return!!t&&!!t.noink},_updateNoink:functi
on(){this.noink=!!this.noink||!!this._parentNoink},_onTap:function(t){if(this.li
nk){var e=this.queryEffectiveChildren("a");if(!e)return;if(t.target===e)return;e
.click()}}})</script> </dom-module> <dom-module id="paper-tabs" assetpath="/res/
imp/bower_components/paper-tabs/"> <template> <style>:host{@apply(--layout);@app
ly(--layout-center);height:48px;font-size:14px;font-weight:500;overflow:hidden;-
moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:n
one;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transpar
ent;@apply(--paper-tabs)}:host-context([dir=rtl]){@apply(--layout-horizontal-rev
erse)}#tabsContainer{position:relative;height:100%;white-space:nowrap;overflow:h
idden;@apply(--layout-flex-auto)}#tabsContent{height:100%;-moz-flex-basis:auto;-
ms-flex-basis:auto;flex-basis:auto}#tabsContent.scrollable{position:absolute;whi
te-space:nowrap}#tabsContent.scrollable.fit-container,#tabsContent:not(.scrollab
le){@apply(--layout-horizontal)}#tabsContent.scrollable.fit-container{min-width:
100%}#tabsContent.scrollable.fit-container>::content>*{-ms-flex:1 0 auto;-webkit
-flex:1 0 auto;flex:1 0 auto}.hidden{display:none}.not-visible{opacity:0;cursor:
default}paper-icon-button{width:48px;height:48px;padding:12px;margin:0 4px}#sele
ctionBar{position:absolute;height:2px;bottom:0;left:0;right:0;background-color:v
ar(--paper-tabs-selection-bar-color,--paper-yellow-a100);-webkit-transform:scale
(0);transform:scale(0);-webkit-transform-origin:left center;transform-origin:lef
t center;transition:-webkit-transform;transition:transform;@apply(--paper-tabs-s
election-bar)}#selectionBar.align-bottom{top:0;bottom:auto}#selectionBar.expand{
transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,1,1)}#sele
ctionBar.contract{transition-duration:.18s;transition-timing-function:cubic-bezi
er(0,0,.2,1)}#tabsContent>::content>:not(#selectionBar){height:100%}</style> <pa
per-icon-button icon="paper-tabs:chevron-left" class$="[[_computeScrollButtonCla
ss(_leftHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-d
own="_onLeftScrollButtonDown" tabindex="-1"></paper-icon-button> <div id="tabsCo
ntainer" on-track="_scroll" on-down="_down"> <div id="tabsContent" class$="[[_co
mputeTabsContentClass(scrollable, fitContainer)]]"> <div id="selectionBar" class
$="[[_computeSelectionBarClass(noBar, alignBottom)]]" on-transitionend="_onBarTr
ansitionEnd"></div> <content select="*"></content> </div> </div> <paper-icon-but
ton icon="paper-tabs:chevron-right" class$="[[_computeScrollButtonClass(_rightHi
dden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down="_onRi
ghtScrollButtonDown" tabindex="-1"></paper-icon-button> </template> <script>Poly
mer({is:"paper-tabs",behaviors:[Polymer.IronResizableBehavior,Polymer.IronMenuba
rBehavior],properties:{noink:{type:Boolean,value:!1,observer:"_noinkChanged"},no
Bar:{type:Boolean,value:!1},noSlide:{type:Boolean,value:!1},scrollable:{type:Boo
lean,value:!1},fitContainer:{type:Boolean,value:!1},disableDrag:{type:Boolean,va
lue:!1},hideScrollButtons:{type:Boolean,value:!1},alignBottom:{type:Boolean,valu
e:!1},selectable:{type:String,value:"paper-tab"},autoselect:{type:Boolean,value:
!1},autoselectDelay:{type:Number,value:0},_step:{type:Number,value:10},_holdDela
y:{type:Number,value:1},_leftHidden:{type:Boolean,value:!1},_rightHidden:{type:B
oolean,value:!1},_previousTab:{type:Object}},hostAttributes:{role:"tablist"},lis
teners:{"iron-resize":"_onTabSizingChanged","iron-items-changed":"_onTabSizingCh
anged","iron-select":"_onIronSelect","iron-deselect":"_onIronDeselect"},keyBindi
ngs:{"left:keyup right:keyup":"_onArrowKeyup"},created:function(){this._holdJob=
null,this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0,th
is._bindDelayedActivationHandler=this._delayedActivationHandler.bind(this),this.
addEventListener("blur",this._onBlurCapture.bind(this),!0)},ready:function(){thi
s.setScrollDirection("y",this.$.tabsContainer)},detached:function(){this._cancel
PendingActivation()},_noinkChanged:function(t){var e=Polymer.dom(this).querySele
ctorAll("paper-tab");e.forEach(t?this._setNoinkAttribute:this._removeNoinkAttrib
ute)},_setNoinkAttribute:function(t){t.setAttribute("noink","")},_removeNoinkAtt
ribute:function(t){t.removeAttribute("noink")},_computeScrollButtonClass:functio
n(t,e,i){return!e||i?"hidden":t?"not-visible":""},_computeTabsContentClass:funct
ion(t,e){return t?"scrollable"+(e?" fit-container":""):" fit-container"},_comput
eSelectionBarClass:function(t,e){return t?"hidden":e?"align-bottom":""},_onTabSi
zingChanged:function(){this.debounce("_onTabSizingChanged",function(){this._scro
ll(),this._tabChanged(this.selectedItem)},10)},_onIronSelect:function(t){this._t
abChanged(t.detail.item,this._previousTab),this._previousTab=t.detail.item,this.
cancelDebouncer("tab-changed")},_onIronDeselect:function(t){this.debounce("tab-c
hanged",function(){this._tabChanged(null,this._previousTab),this._previousTab=nu
ll},1)},_activateHandler:function(){this._cancelPendingActivation(),Polymer.Iron
MenuBehaviorImpl._activateHandler.apply(this,arguments)},_scheduleActivation:fun
ction(t,e){this._pendingActivationItem=t,this._pendingActivationTimeout=this.asy
nc(this._bindDelayedActivationHandler,e)},_delayedActivationHandler:function(){v
ar t=this._pendingActivationItem;this._pendingActivationItem=void 0,this._pendin
gActivationTimeout=void 0,t.fire(this.activateEvent,null,{bubbles:!0,cancelable:
!0})},_cancelPendingActivation:function(){void 0!==this._pendingActivationTimeou
t&&(this.cancelAsync(this._pendingActivationTimeout),this._pendingActivationItem
=void 0,this._pendingActivationTimeout=void 0)},_onArrowKeyup:function(t){this.a
utoselect&&this._scheduleActivation(this.focusedItem,this.autoselectDelay)},_onB
lurCapture:function(t){t.target===this._pendingActivationItem&&this._cancelPendi
ngActivation()},get _tabContainerScrollSize(){return Math.max(0,this.$.tabsConta
iner.scrollWidth-this.$.tabsContainer.offsetWidth)},_scroll:function(t,e){if(thi
s.scrollable){var i=e&&-e.ddx||0;this._affectScroll(i)}},_down:function(t){this.
async(function(){this._defaultFocusAsync&&(this.cancelAsync(this._defaultFocusAs
ync),this._defaultFocusAsync=null)},1)},_affectScroll:function(t){this.$.tabsCon
tainer.scrollLeft+=t;var e=this.$.tabsContainer.scrollLeft;this._leftHidden=0===
e,this._rightHidden=e===this._tabContainerScrollSize},_onLeftScrollButtonDown:fu
nction(){this._scrollToLeft(),this._holdJob=setInterval(this._scrollToLeft.bind(
this),this._holdDelay)},_onRightScrollButtonDown:function(){this._scrollToRight(
),this._holdJob=setInterval(this._scrollToRight.bind(this),this._holdDelay)},_on
ScrollButtonUp:function(){clearInterval(this._holdJob),this._holdJob=null},_scro
llToLeft:function(){this._affectScroll(-this._step)},_scrollToRight:function(){t
his._affectScroll(this._step)},_tabChanged:function(t,e){if(!t)return this.$.sel
ectionBar.classList.remove("expand"),this.$.selectionBar.classList.remove("contr
act"),void this._positionBar(0,0);var i=this.$.tabsContent.getBoundingClientRect
(),n=i.width,o=t.getBoundingClientRect(),s=o.left-i.left;if(this._pos={width:thi
s._calcPercent(o.width,n),left:this._calcPercent(s,n)},this.noSlide||null==e)ret
urn this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.classList
.remove("contract"),void this._positionBar(this._pos.width,this._pos.left);var a
=e.getBoundingClientRect(),l=this.items.indexOf(e),c=this.items.indexOf(t),r=5;t
his.$.selectionBar.classList.add("expand");var h=l<c,d=this._isRTL;d&&(h=!h),h?t
his._positionBar(this._calcPercent(o.left+o.width-a.left,n)-r,this._left):this._
positionBar(this._calcPercent(a.left+a.width-o.left,n)-r,this._calcPercent(s,n)+
r),this.scrollable&&this._scrollToSelectedIfNeeded(o.width,s)},_scrollToSelected
IfNeeded:function(t,e){var i=e-this.$.tabsContainer.scrollLeft;i<0?this.$.tabsCo
ntainer.scrollLeft+=i:(i+=t-this.$.tabsContainer.offsetWidth,i>0&&(this.$.tabsCo
ntainer.scrollLeft+=i))},_calcPercent:function(t,e){return 100*t/e},_positionBar
:function(t,e){t=t||0,e=e||0,this._width=t,this._left=e,this.transform("translat
eX("+e+"%) scaleX("+t/100+")",this.$.selectionBar)},_onBarTransitionEnd:function
(t){var e=this.$.selectionBar.classList;e.contains("expand")?(e.remove("expand")
,e.add("contract"),this._positionBar(this._pos.width,this._pos.left)):e.contains
("contract")&&e.remove("contract")}})</script> </dom-module> <dom-module id="sin
gle-page-style" assetpath="/res/imp/common/"> <template> <style>.header{max-widt
h:800px}.title{font-size:1.5em;font-weight:700;margin:5px}.id_input{margin-left:
5px;--paper-input-container-input:{font-size:2em};}.refresh{max-width:40px;max-h
eight:40px;width:initial;height:initial}button{min-width:4em;max-height:55px}tab
le{border-collapse:collapse;margin-left:5px;margin-bottom:8px}td,th{border:1px s
olid #BBB;padding:5px}.tabs{background-color:#1F78B4;color:#fff;max-width:600px;
margin-left:5px;--paper-checkbox-label-color:#fff}paper-tab{background-color:#A6
CEE3;color:#000}paper-tab.iron-selected{background-color:#1F78B4;color:#fff;font
-weight:700;text-decoration:underline}paper-tab[disabled]{background-color:#AAA;
text-decoration:line-through}.quarantined{background-color:#fdd}.dead{background
-color:#ccc}</style> </template> </dom-module><script>!function(){SwarmingBehavi
ors.BotPageBehavior=[SwarmingBehaviors.CommonBehavior,{}]}()</script> <dom-modul
e id="bot-page-data" assetpath="/res/imp/botpage/"> <script>!function(){function
t(t){if(!s){var e=t.toString();s=e.substring(e.indexOf("("))}return t.toLocaleS
tring()+" "+s}var e,s,i=400,n=["first_seen_ts","last_seen_ts","lease_expiration_
ts"],a=["started_ts","completed_ts","abandoned_ts","modified_ts"];Polymer({is:"b
ot-page-data",behaviors:[SwarmingBehaviors.BotPageBehavior],properties:{auth_hea
ders:{type:Object},bot_id:{type:String},busy:{type:Boolean,computed:"_or(_busy1)
",notify:!0},bot:{type:Object,computed:"_parseBot(_bot)",notify:!0},bot_exists:{
type:Boolean,value:!0,notify:!0},_busy1:{type:Boolean,value:!1},_bot:{type:Objec
t},_events:{type:Object},_tasks:{type:Object}},observers:["request(auth_headers,
bot_id)"],request:function(){this.bot_id&&this.auth_headers&&(e&&this.cancelAsyn
c(e),e=this.async(function(){e=void 0;var t="/api/swarming/v1/bot/"+this.bot_id,
s=this._getJsonAsync("_bot",t+"/get","_busy1",this.auth_headers);s.then(function
(){this.set("bot_exists",!0)}.bind(this)).catch(function(t){404===t.status?this.
set("bot_exists",!1):sk.errorMessage("Http response: "+(t.status||" ")+" "+t.res
ponse)}.bind(this)),this.fire("reload",{id:this.bot_id})},i))},_parseBot:functio
n(e){if(!e)return{};e.state=e.state||"{}",e.state=JSON.parse(e.state)||{};var s=
e.state.disks||{},i=Object.keys(s);if(i.length){e.disks=[];for(var a=0;a<i.lengt
h;a++)e.disks.push({id:i[a],mb:s[i[a]].free_mb});e.disks.sort(function(t,e){retu
rn e.mb-t.mb})}else e.disks=[{id:"unknown",mb:0}];return e.dimensions=e.dimensio
ns||[],e.dimensions.forEach(function(t){swarming.alias.DIMENSIONS_WITH_ALIASES.i
ndexOf(t.key)!==-1&&t.value.forEach(function(e,s){t.value[s]=swarming.alias.appl
y(e,t.key)})}),n.forEach(function(s){e[s]&&(e[s]=new Date(e[s]),e["human_"+s]=t(
e[s]))}),e},parseEvents:function(e){if(!e||!e.items)return[];var e=e.items;retur
n e.forEach(function(e){e.ts&&(e.ts=new Date(e.ts),e.human_ts=t(e.ts))}),e.sort(
function(t,e){return e.ts-t.ts}),e},parseTasks:function(e){if(!e||!e.items)retur
n[];var e=e.items;return e.forEach(function(e){if(a.forEach(function(s){e[s]&&(e
[s]=new Date(e[s]),e["human_"+s]=t(e[s]))}),e.duration)e.human_duration=this._hu
manDuration(e.duration);else{var s=e.completed_ts||e.abandoned_ts||e.modified_ts
||new Date;e.human_duration=this._timeDiffExact(e.started_ts,s),e.duration=(s.ge
tTime()-e.started_ts)/1e3}e.state=e.state||"UNKNOWN","COMPLETED"===e.state&&(e.f
ailure?e.state="FAILURE":e.state="SUCCESS")}.bind(this)),e.sort(function(t,e){re
turn e.started_ts-t.started_ts}),e}})}()</script> </dom-module> <dom-module id="
bot-page-summary" assetpath="/res/imp/botpage/"> <template> <style include="sing
le-page-style">.wrapper{display:table;margin-left:auto;margin-bottom:10px;margin
-right:5px}paper-checkbox{margin-left:5px}.thick{border-top-style:solid}</style>
<url-param name="show_full_names" value="{{_show_full_names}}"> </url-param> <u
rl-param name="show_all_tasks" value="{{_show_all_tasks}}"> </url-param> <url-pa
ram name="sort_stats" value="{{_sortstr}}" default_value="total:desc"> </url-par
am> <div class="wrapper"> <table> <thead on-sort_change="_sortChange"> <tr> <th>
<span>Name</span> <sort-toggle name="full_name" current="[[_sort]]"> </sort-tog
gle> </th> <th> <span>Total</span> <sort-toggle name="total" current="[[_sort]]"
> </sort-toggle> </th> <th> <span>Success</span> <sort-toggle name="success" cur
rent="[[_sort]]"> </sort-toggle> </th> <th> <span>Failed</span> <sort-toggle nam
e="failed" current="[[_sort]]"> </sort-toggle> </th> <th> <span>Died</span> <sor
t-toggle name="bot_died" current="[[_sort]]"> </sort-toggle> </th> <th> <span>Av
erage Duration</span> <sort-toggle name="avg_duration" current="[[_sort]]"> </so
rt-toggle> </th> <th> <span>Total Duration</span> <sort-toggle name="total_time"
current="[[_sort]]"> </sort-toggle> </th> <th>Percent of Total</th> </tr> </the
ad> <tbody> <template is="dom-repeat" items="[[_tasksToShow]]" as="task"> <tr> <
td hidden$="[[_truthy(_show_full_names)]]" title="[[task.full_name]]">[[task.nam
e]]</td> <td hidden$="[[_not(_show_full_names)]]" title="[[task.full_name]]">[[t
ask.full_name]]</td> <td>[[task.total]]</td> <td>[[task.success]]</td> <td>[[tas
k.failed]]</td> <td>[[task.bot_died]]</td> <td>[[_humanDuration(task.avg_duratio
n)]]</td> <td>[[_humanDuration(task.total_time)]]</td> <td>[[task.total_time_per
cent]]%</td> </tr> </template> </tbody> <tbody><tr class="thick"> <td>Total</td>
<td>[[_totalStats.total]]</td> <td>[[_totalStats.success]]</td> <td>[[_totalSta
ts.failed]]</td> <td>[[_totalStats.bot_died]]</td> <td>[[_humanDuration(_totalSt
ats.avg_duration)]]</td> <td>[[_humanDuration(_totalStats.total_time)]]</td> <td
>100.0%</td> </tr> </tbody></table> <div> <table> <thead> <tr> <th title="How mu
ch time passed between the oldest task fetched and now."> Total Wall Time </th>
<th title="How much of the wall time this bot was busy with a task."> Wall Time
Utilization </th> </tr> </thead> <tbody> <tr> <td>[[_humanDuration(_totalStats.w
all_time)]]</td> <td>[[_totalStats.wall_time_utilization]]%</td> </tr> </tbody>
</table> <paper-checkbox checked="{{_show_full_names}}"> Show Full Names </paper
-checkbox> <paper-checkbox hidden$="[[_cannotExpand]]" checked="{{_show_all_task
s}}"> Show All Tasks </paper-checkbox> </div> </div> </template> <script>!functi
on(){var t=15;Polymer({is:"bot-page-summary",behaviors:[SwarmingBehaviors.BotPag
eBehavior],properties:{tasks:{type:Array},_cannotExpand:{type:Boolean,computed:"
_countTasks(_taskStats.*)"},_show_all_tasks:{type:Boolean},_show_full_names:{typ
e:Boolean},_sortstr:{type:String},_sort:{type:Object,computed:"_makeSortObject(_
sortstr)"},_taskStats:{type:Array},_tasksToShow:{type:Array,computed:"_sortAndLi
mitTasks(_taskStats.*,_sort.*,_show_all_tasks)"},_totalStats:{type:Object}},obse
rvers:["_aggregate(tasks.*)"],_aggregate:function(){if(this.tasks&&this.tasks.le
ngth){var t=new Date(1e3*sk.now()),a={},e={total:this.tasks.length,success:0,fai
led:0,bot_died:0,avg_duration:0,total_time:0,wall_time:(t-this.tasks[this.tasks.
length-1].started_ts)/1e3};this.tasks.forEach(function(t){var s=t.name.trim(),i=
s.split("/");5===i.length&&(s=i[0]+"/"+i[3]),a[s]||(a[s]={full_name:s,name:s,tot
al:0,success:0,failed:0,bot_died:0,avg_duration:0,total_time:0}),a[s].total++,t.
failure?(e.failed++,a[s].failed++):t.internal_failure?(e.bot_died++,a[s].bot_die
d++):(e.success++,a[s].success++),e.total_time+=t.duration,a[s].total_time+=t.du
ration}),e.avg_duration=e.total_time/e.total,e.wall_time_utilization=(100*e.tota
l_time/e.wall_time).toFixed(1),this.set("_totalStats",e);var s=Object.keys(a),i=
[];s.forEach(function(t){a[t].avg_duration=a[t].total_time/a[t].total,a[t].total
_time_percent=(100*a[t].total_time/e.total_time).toFixed(1),i.push(a[t])});var o
=new Substrings({minOccurrence:Math.max(2,s.length-1),minLength:6});o.build(s);v
ar n=o.weighByAverage()||[];n.length&&n[0].source.forEach(function(t){var a=i[t]
.full_name;i[t].name=a.replace(n[0].name,"...")}),this.set("_taskStats",i)}},_co
mpare:function(t,a){if(!this._sort)return 0;var e=1;return"desc"===this._sort.di
rection&&(e=-1),e*swarming.naturalCompare(t[this._sort.name],a[this._sort.name])
},_countTasks:function(){return this._taskStats.length<=t},_makeSortObject:funct
ion(t){if(t){var a=t.split(":");return 2!=a.length?{name:"full_name",direction:"
asc"}:{name:a[0],direction:a[1]}}},_sortAndLimitTasks:function(){swarming.stable
Sort(this._taskStats,this._compare.bind(this));var a=this._taskStats.length;retu
rn!this._show_all_tasks&&this._taskStats.length>t&&(a=t),this._taskStats.slice(0
,a)},_sortChange:function(t){t&&t.detail&&t.detail.name&&(t.preventDefault(),t.s
topPropagation(),this.set("_sortstr",t.detail.name+":"+t.detail.direction))}})}(
)</script> </dom-module><dom-module id="bot-page" assetpath="/res/imp/botpage/">
<template> <style include="iron-flex iron-flex-alignment iron-positioning swarm
ing-app-style single-page-style task-style">.message{white-space:pre-line;font-f
amily:monospace}.bot_state{white-space:pre;font-family:monospace;margin-bottom:1
0px}.events_table,.tasks_table{border:3px solid #1F78B4}.old_version{background-
color:#ffd}.stats{min-width:700px;flex-grow:2}#collapse{max-width:700px}.cloud{w
hite-space:nowrap;margin-bottom:5px;margin-top:auto}paper-checkbox{--paper-check
box-label-color:#fff;--paper-checkbox-checked-color:#fff;--paper-checkbox-checkm
ark-color:#000;--paper-checkbox-unchecked-color:#fff;padding:3px}paper-dialog{bo
rder-radius:6px}</style> <url-param name="id" value="{{bot_id}}"> </url-param> <
url-param name="show_all_events" value="{{_show_all}}"> </url-param> <url-param
name="selected" value="{{_selected}}"> </url-param> <url-param name="show_state"
value="{{_show_state}}"> </url-param> <swarming-app client_id="[[client_id]]" a
uth_headers="{{_auth_headers}}" permissions="{{_permissions}}" server_details="{
{_server_details}}" signed_in="{{_signed_in}}" busy="[[_or(_busy1,_busy2,_busy3)
]]" name="Swarming Bot Page"> <h2 hidden$="[[_signed_in]]">You must sign in to s
ee anything useful.</h2> <div hidden$="[[_not(_signed_in)]]"> <bot-page-data id=
"data" auth_headers="[[_auth_headers]]" bot_id="[[bot_id]]" bot="{{_bot}}" bot_e
xists="{{_bot_exists}}" busy="{{_busy1}}" events="{{_events}}" tasks="{{_tasks}}
" on-reload="_clearAndReload"> </bot-page-data> <div class="header horizontal la
yout"> <paper-input class="id_input" label="Bot id" value="{{bot_id}}"></paper-i
nput> <template is="dom-if" if="[[_ccLink(_bot)]]"> <div class="vertical layout"
> <a href$="[[_ccLink(_bot)]]" class="cloud">Cloud Console</a> </div> </template
> <button on-click="_refresh"> <iron-icon class="refresh" icon="icons:refresh"><
/iron-icon> </button> </div> </div> <h2 hidden$="[[_bot_exists]]">Bot not found.
</h2> <div hidden$="[[_not(_bot_exists)]]"> <div class="horizontal wrap layout">
<div class="flex"> <table> <tbody><tr class$="[[_isDead(_bot)]]" title="Last ti
me the bot contacted the server."> <td>Last Seen</td> <td title="[[_bot.human_la
st_seen_ts]]"> [[_timeDiffExact(_bot.last_seen_ts)]] ago</td> <td> <template is=
"dom-if" if="[[_canShutdown(_bot,_permissions)]]"> <button class="raised" on-cli
ck="_promptShutdown"> Shut Down Gracefully </button> </template> <template is="d
om-if" if="[[_canDelete(_bot,_permissions)]]"> <button class="raised" on-click="
_promptDelete"> Delete </button> </template> </td> </tr> <template is="dom-if" i
f="[[_bot.quarantined]]"> <tr class="quarantined"> <td>Quarantined</td> <td cols
pan="2" class="message">[[_quarantineMessage(_bot)]]</td> </tr> </template> <tr>
<td>Current Task</td> <td> <a target="_blank" rel="noopener" href$="[[_taskLink
(_bot.task_id)]]"> [[_task(_bot)]] </a> </td> <td> </td> </tr> <tr> <td rowspan$
="[[_numRows(_bot.dimensions)]]">Dimensions</td> </tr> <template is="dom-repeat"
items="[[_bot.dimensions]]" as="dim"> <tr> <td>[[dim.key]]</td> <td>[[_concat(d
im.value)]]</td> </tr> </template> <tr title="IP address that the server saw the
connection from."> <td>External IP</td> <td><a href$="[[_bot.external_ip]]">[[_
bot.external_ip]]</a></td> <td></td> </tr> <tr class$="[[_classVersion(_server_d
etails.bot_version,_bot.version)]]" title="Version is based on the content of sw
arming_bot.zip which is the swarming bot code. The bot won't update if quarantin
ed, dead, or busy."> <td>Bot Version</td> <td>[[_shorten(_bot.version,'8')]]</td
> <td></td> </tr> <tr title="The version the server expects the bot to be using.
"> <td>Expected Bot Version</td> <td>[[_shorten(_server_details.bot_version,'8')
]]</td> <td></td> </tr> <tr title="First time ever a bot with this id contacted
the server."> <td>First seen</td> <td title="[[_bot.human_first_seen_ts]]"> [[_t
imeDiffApprox(_bot.first_seen_ts)]] ago </td> <td></td> </tr> <tr title="How the
bot is authenticated by the server."> <td>Authenticated as</td> <td colspan="2"
>[[_bot.authenticated_as]]</td> </tr> <template is="dom-if" if="[[_bot.lease_id]
]"> <tr> <td>Machine Provider Lease ID</td> <td colspan="2"> <a href$="[[_mpLink
(_bot,_server_details.machine_provider_template)]]"> [[_bot.lease_id]] </a> </td
> </tr> <tr> <td>Machine Provider Lease Expires</td> <td colspan="2">[[_bot.huma
n_lease_expiration_ts]]</td> </tr> </template> </tbody></table> <span class="tit
le">State</span> <template is="dom-if" if="[[_not(_show_state)]]"> <button on-cl
ick="_toggleState"> <iron-icon icon="icons:add-circle-outline"></iron-icon> </bu
tton> </template> <template is="dom-if" if="[[_show_state]]"> <button on-click="
_toggleState"> <iron-icon icon="icons:remove-circle-outline"></iron-icon> </butt
on> </template> <iron-collapse id="collapse" opened="[[_show_state]]"> <div clas
s="bot_state">[[_prettyPrint(_bot.state)]]</div> </iron-collapse> </div> <div cl
ass="stats flex"> <bot-page-summary tasks="[[_tasks]]"> </bot-page-summary> </di
v> </div> <div class="tabs"> <paper-tabs selected="{{_selected}}" no-bar=""> <pa
per-tab>Tasks</paper-tab> <paper-tab>Events</paper-tab> </paper-tabs> <template
is="dom-if" if="[[_showEvents]]"> <paper-checkbox checked="{{_show_all}}"> Show
all events </paper-checkbox> </template> </div> <template is="dom-if" if="[[_not
(_showEvents)]]"> <table class="tasks_table"> <thead> <tr> <th>Task</th> <th>Sta
rted</th> <th>Duration</th> <th>Result</th> </tr> </thead> <tbody> <template is=
"dom-repeat" items="{{_tasks}}" as="task"> <tr class$="[[_taskClass(task)]]"> <t
d> <a target="_blank" rel="noopener" href$="[[_taskLink(task.task_id)]]"> [[task
.name]] </a> </td> <td>[[task.human_started_ts]]</td> <td title="[[task.human_co
mpleted_ts]]">[[task.human_duration]]</td> <td>[[task.state]]</td> </tr> </templ
ate> </tbody> </table> </template> <template is="dom-if" if="[[_showEvents]]"> <
table class="events_table"> <thead> <tr> <th>Message</th> <th>Type</th> <th>Time
stamp</th> <th>Task ID</th> <th>Version</th> </tr> </thead> <tbody> <template is
="dom-repeat" items="{{_eventList(_show_all,_events.*)}}" as="event"> <tr> <td c
lass="message">[[event.message]]</td> <td>[[event.event_type]]</td> <td>[[event.
human_ts]]</td> <td> <a target="_blank" rel="noopener" href$="[[_taskLink(event.
task_id)]]"> [[event.task_id]] </a> </td> <td class$="[[_classVersion(_server_de
tails.bot_version,event.version)]]"> [[_shorten(event.version,'8')]] </td> </tr>
</template> </tbody> </table> </template> <pageable-data id="page_tasks" hidden
$="[[_showEvents]]" busy="{{_busy2}}" label="Show more tasks" output="{{_tasks}}
" parse="[[_parseTasks]]"> </pageable-data> <pageable-data id="page_events" hidd
en$="[[_not(_showEvents)]]" busy="{{_busy3}}" label="Show more events" output="{
{_events}}" parse="[[_parseEvents]]"> </pageable-data> </div> </swarming-app> <p
aper-dialog id="prompt" modal="" on-iron-overlay-closed="_promptClosed"> <h2>Are
you sure?</h2> <div>Are you sure you want to [[_dialogPrompt]]?</div> <div clas
s="buttons"> <paper-button dialog-dismiss="" autofocus="">No</paper-button> <pap
er-button dialog-confirm="">Yes</paper-button> </div> </paper-dialog> </template
> <script> (function(){ | 780 })(); </script> </dom-module> <dom-module id="paper-button" assetpath="/res/im
p/bower_components/paper-button/"> <template strip-whitespace=""> <style include
="paper-material-shared-styles">:host{@apply(--layout-inline);@apply(--layout-ce
nter-center);position:relative;box-sizing:border-box;min-width:5.14em;margin:0 .
29em;background:0 0;-webkit-tap-highlight-color:transparent;-webkit-tap-highligh
t-color:transparent;font:inherit;text-transform:uppercase;outline-width:0;border
-radius:3px;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;
user-select:none;cursor:pointer;z-index:0;padding:.7em .57em;@apply(--paper-font
-common-base);@apply(--paper-button)}:host([hidden]){display:none!important}:hos
t([raised].keyboard-focus){font-weight:700;@apply(--paper-button-raised-keyboard
-focus)}:host(:not([raised]).keyboard-focus){font-weight:700;@apply(--paper-butt
on-flat-keyboard-focus)}:host([disabled]){background:#eaeaea;color:#a8a8a8;curso
r:auto;pointer-events:none;@apply(--paper-button-disabled)}:host([animated]){@ap
ply(--shadow-transition)}paper-ripple{color:var(--paper-button-ink-color)}</styl
e> <content></content> </template> <script>Polymer({is:"paper-button",behaviors:
[Polymer.PaperButtonBehavior],properties:{raised:{type:Boolean,reflectToAttribut
e:!0,value:!1,observer:"_calculateElevation"}},_calculateElevation:function(){th
is.raised?Polymer.PaperButtonBehaviorImpl._calculateElevation.apply(this):this._
setElevation(0)}})</script> </dom-module> <script>Polymer.NeonAnimatableBehavior
={properties:{animationConfig:{type:Object},entryAnimation:{observer:"_entryAnim
ationChanged",type:String},exitAnimation:{observer:"_exitAnimationChanged",type:
String}},_entryAnimationChanged:function(){this.animationConfig=this.animationCo
nfig||{},this.animationConfig.entry=[{name:this.entryAnimation,node:this}]},_exi
tAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this.
animationConfig.exit=[{name:this.exitAnimation,node:this}]},_copyProperties:func
tion(i,n){for(var t in n)i[t]=n[t]},_cloneConfig:function(i){var n={isClone:!0};
return this._copyProperties(n,i),n},_getAnimationConfigRecursive:function(i,n,t)
{if(this.animationConfig){if(this.animationConfig.value&&"function"==typeof this
.animationConfig.value)return void this._warn(this._logf("playAnimation","Please
put 'animationConfig' inside of your components 'properties' object instead of
outside of it."));var o;if(o=i?this.animationConfig[i]:this.animationConfig,Arra
y.isArray(o)||(o=[o]),o)for(var e,a=0;e=o[a];a++)if(e.animatable)e.animatable._g
etAnimationConfigRecursive(e.type||i,n,t);else if(e.id){var r=n[e.id];r?(r.isClo
ne||(n[e.id]=this._cloneConfig(r),r=n[e.id]),this._copyProperties(r,e)):n[e.id]=
e}else t.push(e)}},getAnimationConfig:function(i){var n={},t=[];this._getAnimati
onConfigRecursive(i,n,t);for(var o in n)t.push(n[o]);return t}}</script> <script
>Polymer.NeonAnimationRunnerBehaviorImpl={_configureAnimations:function(n){var i
=[];if(n.length>0)for(var e,t=0;e=n[t];t++){var o=document.createElement(e.name)
;if(o.isNeonAnimation){var a=null;try{a=o.configure(e),"function"!=typeof a.canc
el&&(a=document.timeline.play(a))}catch(n){a=null,console.warn("Couldnt play","(
",e.name,").",n)}a&&i.push({neonAnimation:o,config:e,animation:a})}else console.
warn(this.is+":",e.name,"not found!")}return i},_shouldComplete:function(n){for(
var i=!0,e=0;e<n.length;e++)if("finished"!=n[e].animation.playState){i=!1;break}
return i},_complete:function(n){for(var i=0;i<n.length;i++)n[i].neonAnimation.co
mplete(n[i].config);for(var i=0;i<n.length;i++)n[i].animation.cancel()},playAnim
ation:function(n,i){var e=this.getAnimationConfig(n);if(e){this._active=this._ac
tive||{},this._active[n]&&(this._complete(this._active[n]),delete this._active[n
]);var t=this._configureAnimations(e);if(0==t.length)return void this.fire("neon
-animation-finish",i,{bubbles:!1});this._active[n]=t;for(var o=0;o<t.length;o++)
t[o].animation.onfinish=function(){this._shouldComplete(t)&&(this._complete(t),d
elete this._active[n],this.fire("neon-animation-finish",i,{bubbles:!1}))}.bind(t
his)}},cancelAnimation:function(){for(var n in this._animations)this._animations
[n].cancel();this._animations={}}},Polymer.NeonAnimationRunnerBehavior=[Polymer.
NeonAnimatableBehavior,Polymer.NeonAnimationRunnerBehaviorImpl]</script> <script
>Polymer.PaperDialogBehaviorImpl={hostAttributes:{role:"dialog",tabindex:"-1"},p
roperties:{modal:{type:Boolean,value:!1}},observers:["_modalChanged(modal, _read
ied)"],listeners:{tap:"_onDialogClick"},ready:function(){this.__prevNoCancelOnOu
tsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancel
OnEscKey,this.__prevWithBackdrop=this.withBackdrop},_modalChanged:function(i,e){
e&&(i?(this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prev
NoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop
,this.noCancelOnOutsideClick=!0,this.noCancelOnEscKey=!0,this.withBackdrop=!0):(
this.noCancelOnOutsideClick=this.noCancelOnOutsideClick&&this.__prevNoCancelOnOu
tsideClick,this.noCancelOnEscKey=this.noCancelOnEscKey&&this.__prevNoCancelOnEsc
Key,this.withBackdrop=this.withBackdrop&&this.__prevWithBackdrop))},_updateClosi
ngReasonConfirmed:function(i){this.closingReason=this.closingReason||{},this.clo
singReason.confirmed=i},_onDialogClick:function(i){for(var e=Polymer.dom(i).path
,o=0;o<e.indexOf(this);o++){var t=e[o];if(t.hasAttribute&&(t.hasAttribute("dialo
g-dismiss")||t.hasAttribute("dialog-confirm"))){this._updateClosingReasonConfirm
ed(t.hasAttribute("dialog-confirm")),this.close(),i.stopPropagation();break}}}},
Polymer.PaperDialogBehavior=[Polymer.IronOverlayBehavior,Polymer.PaperDialogBeha
viorImpl]</script> <dom-module id="paper-dialog-shared-styles" assetpath="/res/i
mp/bower_components/paper-dialog-behavior/"> <template> <style>:host{display:blo
ck;margin:24px 40px;background:var(--paper-dialog-background-color,--primary-bac
kground-color);color:var(--paper-dialog-color,--primary-text-color);@apply(--pap
er-font-body1);@apply(--shadow-elevation-16dp);@apply(--paper-dialog)}:host>::co
ntent>*{margin-top:20px;padding:0 24px}:host>::content>.no-padding{padding:0}:ho
st>::content>:first-child{margin-top:24px}:host>::content>:last-child{margin-bot
tom:24px}:host>::content h2{position:relative;margin:0;@apply(--paper-font-title
);@apply(--paper-dialog-title)}:host>::content .buttons{position:relative;paddin
g:8px 8px 8px 24px;margin:0;color:var(--paper-dialog-button-color,--primary-colo
r);@apply(--layout-horizontal);@apply(--layout-end-justified)}</style> </templat
e> </dom-module> <dom-module id="paper-dialog" assetpath="/res/imp/bower_compone
nts/paper-dialog/"> <template> <style include="paper-dialog-shared-styles"></sty
le> <content></content> </template> </dom-module> <script>!function(){Polymer({i
s:"paper-dialog",behaviors:[Polymer.PaperDialogBehavior,Polymer.NeonAnimationRun
nerBehavior],listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},_rende
rOpened:function(){this.cancelAnimation(),this.playAnimation("entry")},_renderCl
osed:function(){this.cancelAnimation(),this.playAnimation("exit")},_onNeonAnimat
ionFinish:function(){this.opened?this._finishRenderOpened():this._finishRenderCl
osed()}})}()</script> <script>window.SwarmingBehaviors=window.SwarmingBehaviors|
|{},function(){SwarmingBehaviors.TaskBehavior={properties:{BOT_DIED:{type:String
,value:"BOT_DIED"},CANCELED:{type:String,value:"CANCELED"},COMPLETED:{type:Strin
g,value:"COMPLETED"},COMPLETED_DEDUPED:{type:String,value:"COMPLETED (DEDUPED)"}
,COMPLETED_FAILURE:{type:String,value:"COMPLETED (FAILURE)"},COMPLETED_SUCCESS:{
type:String,value:"COMPLETED (SUCCESS)"},EXPIRED:{type:String,value:"EXPIRED"},P
ENDING:{type:String,value:"PENDING"},RUNNING:{type:String,value:"RUNNING"},TIMED
_OUT:{type:String,value:"TIMED_OUT"}},stateClass:function(t){return t===this.CAN
CELED||t===this.TIMED_OUT||t===this.EXPIRED?"exception":t===this.BOT_DIED?"bot_d
ied":t===this.COMPLETED_FAILURE?"failed_task":t===this.RUNNING||t===this.PENDING
?"pending_task":""},state:function(t){return t?t.state===this.COMPLETED?t.failur
e?this.COMPLETED_FAILURE:"0"===t.try_number?this.COMPLETED_DEDUPED:this.COMPLETE
D_SUCCESS:t.state:""},_stateClass:function(t){return this.stateClass(this.state(
t))}}}()</script> <dom-module id="task-style" assetpath="/res/imp/common/"> <tem
plate> <style>.failed_task{background-color:#fdd}.bot_died{background-color:#ccc
}.exception{background-color:#edd2ff}.pending_task{background-color:#fffc6c}</st
yle> </template> </dom-module><dom-module id="task-filters" assetpath="/res/imp/
tasklist/"> <template> <style is="custom-style" include="iron-flex iron-flex-ali
gnment iron-positioning query-column-filter-style swarming-app-style">.item.wide
{max-width:400px}.selector.wide{min-width:275px}</style> <url-param name="f" val
ue="{{_filters}}" default_values="[]" multi=""> </url-param> <url-param name="c"
value="{{columns}}" default_values="["name","state","c
reated_ts","user"]" multi=""> </url-param> <url-param name="q" va
lue="{{_query}}" default_value=""> </url-param> <url-param name="l" default_valu
e="50" value="{{_limit}}"> </url-param> <div class="container horizontal layout"
> <div class="narrow-down-selector"> <div> <iron-a11y-keys target="[[_filter_inp
ut]]" keys="enter" on-keys-pressed="_manuallyAddFilter"></iron-a11y-keys> <paper
-input id="filter" label="Search columns and filters or supply a filter and pres
s enter" placeholder="gpu nvidia pool:Chrome" value="{{_query::input}}"> </paper
-input> </div> <div class="wide selector side-by-side" title="This shows all tas
k tags and other interesting task properties. Mark the check box to add as a col
umn. Select the row to see filter options."> <iron-selector attr-for-selected="l
abel" selected="{{_primarySelected}}"> <template is="dom-repeat" items="[[_prima
ryItems]]" as="item"> <div class="selectable item horizontal layout" label="[[it
em]]"> <span>[[_beforeBold(item,_query)]]<span class="bold">[[_bold(item,_query)
]]</span>[[_afterBold(item,_query)]]</span> <span class="flex"></span> <paper-ch
eckbox noink="" disabled$="[[_cantToggleColumn(item)]]" checked="[[_columnState(
item,columns.*)]]" on-change="_toggleColumn"> </paper-checkbox> </div> </templat
e> </iron-selector> </div> <div class="selector side-by-side" title="These are m
ost of the options (if any) that the task list can be filtered on. This list is
all that have been seen recently, augmented with the ones returned by the curren
t query. There may be others."> <template is="dom-repeat" id="secondaryList" ite
ms="[[_secondaryItems]]" as="item"> <div class="item horizontal layout" label="[
[item]]"> <span>[[_beforeBold(item,_query)]]<span class="bold">[[_bold(item,_que
ry)]]</span>[[_afterBold(item,_query)]]</span> <span class="flex"></span> <iron-
icon class="icons" icon="icons:arrow-forward" hidden="[[_cantAddFilter(_primaryS
elected,item,_filters.*)]]" on-tap="_addFilter"> </iron-icon> </div> </template>
<template is="dom-if" if="[[_secondaryItems.length]]"> <div class="pointable it
em" title="There may be more valid options than just the ones shown.">...</div>
</template> <template is="dom-if" if="[[_showTagMessage(_primarySelected,_second
aryItems.length)]]"> <div class="item">Only tags can be used for filtering. <i>"
[[_primarySelected]]"</i> is informational only.</div> </template> </div> <div c
lass="selector side-by-side" title="These tag filters are AND'd together and app
lied to all tasks."> <template is="dom-repeat" items="[[_filters]]" as="fil"> <d
iv class="item horizontal layout" label="[[fil]]"> <span>[[fil]]</span> <span cl
ass="flex"></span> <iron-icon class="icons" icon="icons:remove-circle-outline" h
idden="[[_cantRemoveFilter(fil,_filters.*)]]" on-tap="_removeFilter"> </iron-ico
n> </div> </template> </div> <div class="side-by-side"> <paper-input id="_limit"
label="Limit Results" auto-validate="" min="0" max="1000" pattern="[0-9]+" valu
e="{{_limit}}"> </paper-input> <a href$="[[_matchingBotsLink(query_params,dimens
ions.*)]]">View Matching Bots</a> </div> </div> </div> </template> <script>!func
tion(){var t={state:function(t,i){var r=this._attribute(t,"state")[0];if(i===r||
"ALL"===i)return!0;if("PENDING_RUNNING"===i)return r===this.PENDING||r===this.RU
NNING;var s=this._attribute(t,"failure",!1)[0];if("COMPLETED_SUCCESS"===i)return
r===this.COMPLETED&&!s;if("COMPLETED_FAILURE"===i)return r===this.COMPLETED&&s;
var n=this._attribute(t,"try_number","-1")[0];return"DEDUPED"===i?r===this.COMPL
ETED&&"0"===n:void 0}};Polymer({is:"task-filters",behaviors:[SwarmingBehaviors.Q
ueryColumnFilter,SwarmingBehaviors.TaskBehavior],properties:{columns:{type:Array
,notify:!0},query_params:{type:Object,computed:"_extractQueryParams(_filters.*,
_limit)",notify:!0},_filterMap:{type:Object,value:function(){var i=this._commonF
ilters();for(var r in t)i[r]=t[r];return i}}},_cantToggleColumn:function(t){retu
rn!t||"name"===t},_extractQueryParams:function(){var t={},i=[];this._filters.for
Each(function(r){var s=r.split(this.FILTER_SEP,1),n=s[0],e=r.substring(n.length+
this.FILTER_SEP.length);"state"===n?t.state=[e]:("user"===n&&"none"===e&&(e=""),
i.push(n+this.FILTER_SEP+swarming.alias.unapply(e)))}.bind(this)),t.tags=i;var r
=parseInt(this._limit);return Number.isInteger(r)&&(r=Math.max(r,1),r=Math.min(1
e3,r),t.limit=[r],this._limit!=r&&this.set("_limit",r)),t},_matchingBotsLink:fun
ction(t){var i=["id","os","task","status"];if(!t.tags||!this.dimensions)return t
his._botListLink([],i);var r=t.tags.filter(function(t){var i=t.split(this.FILTER
_SEP,1)[0];return this.dimensions.indexOf(i)!==-1}.bind(this));return r.forEach(
function(t){var r=t.split(this.FILTER_SEP,1)[0];i.indexOf(r)===-1&&i.push(r)}.bi
nd(this)),this._botListLink(r,i)},_showTagMessage:function(t,i){return t&&"name"
!==t&&!i}})}()</script> </dom-module><dom-module id="task-list-data" assetpath="
/res/imp/tasklist/"> <script>!function(){var t=["abandoned_ts","completed_ts","c
reated_ts","modified_ts","started_ts"],s=["quarantined","error"];Polymer({is:"ta
sk-list-data",behaviors:[SwarmingBehaviors.CommonBehavior,SwarmingBehaviors.Task
Behavior],properties:{auth_headers:{type:Object,observer:"signIn"},query_params:
{type:Object},tasks:{type:Array},busy:{type:Boolean,computed:"_or(_busy2,_busy1)
",notify:!0},dimensions:{type:Array,computed:"_makeArray(_dimensions)",notify:!0
},primary_map:{type:Object,computed:"_primaryMap(_tags,_dimensions,tasks.*)",not
ify:!0},primary_arr:{type:Array,computed:"_primaryArr(primary_map)",notify:!0},_
busy2:{type:Boolean,value:!1},_busy1:{type:Boolean,value:!1},_dimensions:{type:O
bject},_list:{type:Object},_tags:{type:Object}},signIn:function(){this._getJsonA
sync("_tags","/api/swarming/v1/tasks/tags","_busy2",this.auth_headers),this._get
JsonAsync("_dimensions","/api/swarming/v1/bots/dimensions","_busy1",this.auth_he
aders)},_makeArray:function(t){if(!t||!t.bots_dimensions)return[];var a=[];retur
n t.bots_dimensions.forEach(function(t){s.indexOf(t.key)===-1&&a.push(t.key)}),a
.push("id"),a.sort(),a},_primaryArr:function(t){var s=Object.keys(t);return s.so
rt(),s},_primaryMap:function(s,a){s=s&&s.tasks_tags||[],a=a&&a.bots_dimensions||
[],tasks=this.tasks||[];var e={};s.forEach(function(t){e[t.key]||(e[t.key]={});v
ar s=t.value||[];s.forEach(function(s){e[t.key][s]=!0})}),a.forEach(function(t){
var s=t.value;e[t.key]||(e[t.key]={}),s.forEach(function(s){e[t.key][s]=!0})}),t
asks.forEach(function(t){Object.keys(t.tagMap).forEach(function(s){var a=t.tagMa
p[s];e[s]||(e[s]={}),e[s][a]=!0})}),e.user&&(delete e.user[""],e.user.none=!0);v
ar r={};for(key in e){var n=Object.keys(e[key]);if(swarming.alias.DIMENSIONS_WIT
H_ALIASES.indexOf(key)===-1)r[key]=n;else{var i=[];n.forEach(function(t){i.push(
swarming.alias.apply(t,key))}),r[key]=i}}return r.name=[],r.state=[this.PENDING,
this.RUNNING,"PENDING_RUNNING",this.COMPLETED,"COMPLETED_SUCCESS","COMPLETED_FAI
LURE",this.EXPIRED,this.TIMED_OUT,this.BOT_DIED,this.CANCELED,"DEDUPED","ALL"],r
.costs_usd=[],r.deduped_from=[],r.duration=[],r.server_versions=[],r.bot=[],t.fo
rEach(function(t){r[t]=[]}),r},parseTasks:function(s){if(!s||!s.items)return[];v
ar a=new Date;return s.items.forEach(function(s){var e={};s.tags=s.tags||[],s.ta
gs.forEach(function(t){var s=t.split(":",1),a=s[0],r=t.substring(a.length+1);e[a
]=r}),s.tagMap=e,t.forEach(function(t){s[t]&&(s[t]=new Date(s[t]),s["human_"+t]=
sk.human.localeTime(s[t]))}),!s.duration&&s.state===this.RUNNING&&s.started_ts&&
(s.duration=(a-s.started_ts)/1e3),s.duration&&(s.human_duration=this._humanDurat
ion(s.duration))}.bind(this)),s.items}})}()</script> </dom-module> <dom-module i
d="task-list" assetpath="/res/imp/tasklist/"> <template> <style include="iron-fl
ex iron-flex-alignment iron-positioning swarming-app-style dynamic-table-style t
ask-style">task-filters{margin-bottom:8px;margin-right:10px}.task-list th>span{p
adding-right:30px}</style> <url-param name="s" value="{{_sortstr}}" default_valu
e="created_ts:desc"> </url-param> <swarming-app client_id="[[client_id]]" auth_h
eaders="{{_auth_headers}}" permissions="{{_permissions}}" signed_in="{{_signed_i
n}}" busy="[[_or(_busy1,_busy2)]]" name="Swarming Task List"> <h2 hidden$="[[_si
gned_in]]">You must sign in to see anything useful.</h2> <div hidden$="[[_not(_s
igned_in)]]"> <task-list-data id="data" auth_headers="[[_auth_headers]]" query_p
arams="[[_query_params]]" tasks="[[_items]]" busy="{{_busy1)}}" dimensions="{{_d
imensions}}" primary_map="{{_primary_map}}" primary_arr="{{_primary_arr}}"> </ta
sk-list-data> <div class="horizontal layout"> <task-filters dimensions="[[_dimen
sions]]" primary_map="[[_primary_map]]" primary_arr="[[_primary_arr]]" special_c
olumns="[[_specialColumns]]" columns="{{_columns}}" query_params="{{_query_param
s}}" filter="{{_filter}}"> </task-filters> </div> <table class="task-list"> <the
ad on-sort_change="_sortChange"> <tr> <th> <span>Task Name</span> <sort-toggle n
ame="name" current="[[_sort]]"> </sort-toggle> </th> <th hidden$="[[_hide('state
', _columns.*)]]"> <span>State</span> <sort-toggle name="state" current="[[_sort
]]"> </sort-toggle> </th> <th hidden$="[[_hide('bot', _columns.*)]]"> <span>Bot
Assigned</span> <sort-toggle name="bot" current="[[_sort]]"> </sort-toggle> </th
> <th hidden$="[[_hide('deduped_from', _columns.*)]]"> <span>Deduped from</span>
<sort-toggle name="deduped_from" current="[[_sort]]"> </sort-toggle> </th> <th
hidden$="[[_hide('source_revision', _columns.*)]]"> <span>Source Revision</span>
<sort-toggle name="source_revision" current="[[_sort]]"> </sort-toggle> </th> <
template is="dom-repeat" items="[[_plainColumns]]" as="c"> <th hidden$="[[_hide(
c)]]"> <span>[[_header(c)]]</span> <sort-toggle name="[[c]]" current="[[_sort]]"
> </sort-toggle> </th> </template> </tr> </thead> <tbody> <template id="tasks_ta
ble" is="dom-repeat" items="[[_filteredSortedItems]]" as="task" initial-count="5
0"> <tr class$="[[_taskClass(task)]]"> <td> <a class="center" href$="[[_taskLink
(task.task_id)]]" target="_blank"> [[task.name]] </a> </td> <td hidden$="[[_hide
('state', _columns.*)]]"> [[_column('state', task)]] <paper-button raised="" hid
den$="[[_cannotCancel(task,_permissions)]]" on-tap="_promptCancel"> Cancel </pap
er-button> </td> <td hidden$="[[_hide('bot', _columns.*)]]"> <a class="center" h
ref$="[[_botLink(task.bot_id)]]" target="_blank"> [[_column('bot',task)]] </a> <
/td> <td hidden$="[[_hide('deduped_from', _columns.*)]]"> <a class="center" href
$="[[_taskLink(task.deduped_from)]]" target="_blank"> [[_column('deduped_from',t
ask)]] </a> </td> <td hidden$="[[_hide('source_revision', _columns.*)]]"> <a cla
ss="center" href$="[[_sourceLink(task)]]" target="_blank"> [[_column('source_rev
ision',task)]] </a> </td> <template is="dom-repeat" items="[[_plainColumns]]" as
="c"> <td hidden$="[[_hide(c)]]"> [[_column(c, task)]] </td> </template> </tr> <
/template> </tbody> </table> <pageable-data id="page_tasks" busy="{{_busy2}}" la
bel="Show more tasks" output="{{_items}}" parse="[[_parseTasks]]"> </pageable-da
ta> </div> </swarming-app> <paper-dialog id="prompt" modal="" on-iron-overlay-cl
osed="_promptClosed"> <h2>Are you sure?</h2> <div>Are you sure you want to [[_di
alogPrompt]]?</div> <div class="buttons"> <paper-button dialog-dismiss="" autofo
cus="">No</paper-button> <paper-button dialog-confirm="">Yes</paper-button> </di
v> </paper-dialog> </template> <script>!function(){function t(t){return function
(e){return this._attribute(e,"human_"+t)[0]}}function e(t){return function(e,a,s
){var r=this._attribute(a,t,"0")[0],n=this._attribute(s,t,"0")[0];return e*(r-n)
}}var a=["deduped_from","name","state","bot","source_revision"],s={abandoned_ts:
t("abandoned_ts"),bot:function(t){return this._attribute(t,"bot_id")[0]},complet
ed_ts:t("completed_ts"),costs_usd:function(t){return this._attribute(t,"costs_us
d",0)[0]},created_ts:t("created_ts"),duration:t("duration"),modified_ts:t("modif
ied_ts"),source_revision:function(t){var e=this._attribute(t,"source_revision")[
0];return e.substring(0,8)},started_ts:t("started_ts"),state:function(t){var e=t
his._attribute(t,"state")[0];if("COMPLETED"===e){if(this._attribute(t,"failure",
!1)[0])return"COMPLETED (FAILURE)";var a=this._attribute(t,"try_number","-1")[0]
;return"0"===a?"COMPLETED (DEDUPED)":"COMPLETED (SUCCESS)"}return e}},r={abandon
ed_ts:"Abandoned On",completed_ts:"Completed On",created_ts:"Created On",duratio
n:"Duration",modified_ts:"Last Modified",started_ts:"Started Working On",user:"R
equesting User"},n={abandoned_ts:e("abandoned_ts"),completed_ts:e("completed_ts"
),created_ts:e("created_ts"),duration:e("duration"),modified_ts:e("modified_ts")
,started_ts:e("started_ts")};Polymer({is:"task-list",behaviors:[SwarmingBehavior
s.DynamicTableBehavior,SwarmingBehaviors.TaskBehavior],properties:{client_id:{ty
pe:String},_busy1:{type:Boolean,value:!1},_busy2:{type:Boolean,value:!1},_parseT
asks:{type:Function,value:function(){return this.$.data.parseTasks.bind(this)}},
_toCancel:{type:String},_columnMap:{type:Object,value:function(){var t=this._com
monColumns();for(var e in s)t[e]=s[e];return t}},_headerMap:{type:Object,value:r
},_specialColumns:{type:Array,value:a},_specialSort:{type:Object,value:n}},obser
vers:["reload(_query_params,_auth_headers)"],_attribute:function(t,e,a){void 0==
=a&&(a="none");var s=this._tag(t,e)||t[e]||[a];return Array.isArray(s)?s:[s]},_c
annotCancel:function(t,e){return!(e&&e.cancel_task&&"PENDING"===this._column("st
ate",t))},_cancelTask:function(){var t="/api/swarming/v1/task/"+this._toCancel+"
/cancel";swarming.postWithToast(t,"Canceling task "+this._toCancel,this._auth_he
aders),this.set("_toCancel","")},_promptClosed:function(t){t.detail.confirmed&&t
his._cancelTask()},_promptCancel:function(t){var e=t.model.task;return e&&e.task
_id?(this.set("_toCancel",e.task_id),this.set("_dialogPrompt",'cancel task "'+e.
name+'"'),void this.$.prompt.open()):void console.log("Missing task info",e)},re
load:function(){if(this._auth_headers&&this._query_params){var t="/api/swarming/
v1/tasks/list?"+sk.query.fromParamSet(this._query_params);this.$.page_tasks.load
(t,this._auth_headers)}},_sourceLink:function(t){var e=this._attribute(t,"source
_revision")[0],a=this._attribute(t,"source_repo")[0];return"none"!==e&&"none"!==
a&&a.replace("%s",e)},_tag:function(t,e){if(t&&t.tagMap)return t.tagMap[e]},_tas
kClass:function(t){return this.stateClass(this._column("state",t))}})}()</script
> </dom-module> <dom-module id="iron-collapse" assetpath="/res/imp/bower_compone
nts/iron-collapse/"> <template> <style>:host{display:block;transition-duration:v
ar(--iron-collapse-transition-duration,300ms);overflow:visible}:host(.iron-colla
pse-closed){display:none}:host(:not(.iron-collapse-opened)){overflow:hidden}</st
yle> <content></content> </template> </dom-module> <script>Polymer({is:"iron-col
lapse",behaviors:[Polymer.IronResizableBehavior],properties:{horizontal:{type:Bo
olean,value:!1,observer:"_horizontalChanged"},opened:{type:Boolean,value:!1,noti
fy:!0,observer:"_openedChanged"},noAnimation:{type:Boolean},_desiredSize:{type:S
tring,value:""}},get dimension(){return this.horizontal?"width":"height"},get _d
imensionMax(){return this.horizontal?"maxWidth":"maxHeight"},get _dimensionMaxCs
s(){return this.horizontal?"max-width":"max-height"},hostAttributes:{role:"group
","aria-hidden":"true","aria-expanded":"false"},listeners:{transitionend:"_trans
itionEnd"},attached:function(){this._transitionEnd()},toggle:function(){this.ope
ned=!this.opened},show:function(){this.opened=!0},hide:function(){this.opened=!1
},updateSize:function(i,t){if(i="auto"===i?"":i,this._desiredSize!==i){this._des
iredSize=i,this._updateTransition(!1);var e=t&&!this.noAnimation&&this._isDispla
yed;if(e){var n=this._calcSize();""===i&&(this.style[this._dimensionMax]="",i=th
is._calcSize()),this.style[this._dimensionMax]=n,this.scrollTop=this.scrollTop,t
his._updateTransition(!0),e=i!==n}this.style[this._dimensionMax]=i,e||this._tran
sitionEnd()}},enableTransition:function(i){Polymer.Base._warn("`enableTransition
()` is deprecated, use `noAnimation` instead."),this.noAnimation=!i},_updateTran
sition:function(i){this.style.transitionDuration=i&&!this.noAnimation?"":"0s"},_
horizontalChanged:function(){this.style.transitionProperty=this._dimensionMaxCss
;var i="maxWidth"===this._dimensionMax?"maxHeight":"maxWidth";this.style[i]="",t
his.updateSize(this.opened?"auto":"0px",!1)},_openedChanged:function(){this.setA
ttribute("aria-expanded",this.opened),this.setAttribute("aria-hidden",!this.open
ed),this.toggleClass("iron-collapse-closed",!1),this.toggleClass("iron-collapse-
opened",!1),this.updateSize(this.opened?"auto":"0px",!0),this.opened&&this.focus
()},_transitionEnd:function(){this.style[this._dimensionMax]=this._desiredSize,t
his.toggleClass("iron-collapse-closed",!this.opened),this.toggleClass("iron-coll
apse-opened",this.opened),this._updateTransition(!1),this.notifyResize()},get _i
sDisplayed(){var i=this.getBoundingClientRect();for(var t in i)if(0!==i[t])retur
n!0;return!1},_calcSize:function(){return this.getBoundingClientRect()[this.dime
nsion]+"px"}})</script> <script>Polymer.IronMenubarBehaviorImpl={hostAttributes:
{role:"menubar"},keyBindings:{left:"_onLeftKey",right:"_onRightKey"},_onUpKey:fu
nction(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefault()},_onD
ownKey:function(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefaul
t()},get _isRTL(){return"rtl"===window.getComputedStyle(this).direction},_onLeft
Key:function(e){this._isRTL?this._focusNext():this._focusPrevious(),e.detail.key
boardEvent.preventDefault()},_onRightKey:function(e){this._isRTL?this._focusPrev
ious():this._focusNext(),e.detail.keyboardEvent.preventDefault()},_onKeydown:fun
ction(e){this.keyboardEventMatchesKeys(e,"up down left right esc")||this._focusW
ithKeyboardEvent(e)}},Polymer.IronMenubarBehavior=[Polymer.IronMenuBehavior,Poly
mer.IronMenubarBehaviorImpl]</script> <iron-iconset-svg name="paper-tabs" size="
24"> <svg><defs> <g id="chevron-left"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.
41L10.83 12z"></path></g> <g id="chevron-right"><path d="M10 6L8.59 7.41 13.17 1
2l-4.58 4.59L10 18l6-6z"></path></g> </defs></svg> </iron-iconset-svg> <dom-modu
le id="paper-tab" assetpath="/res/imp/bower_components/paper-tabs/"> <template>
<style>:host{@apply(--layout-inline);@apply(--layout-center);@apply(--layout-cen
ter-justified);@apply(--layout-flex-auto);position:relative;padding:0 12px;overf
low:hidden;cursor:pointer;vertical-align:middle;@apply(--paper-font-common-base)
;@apply(--paper-tab)}:host(:focus){outline:0}:host([link]){padding:0}.tab-conten
t{height:100%;transform:translateZ(0);-webkit-transform:translateZ(0);transition
:opacity .1s cubic-bezier(.4,0,1,1);@apply(--layout-horizontal);@apply(--layout-
center-center);@apply(--layout-flex-auto);@apply(--paper-tab-content)}:host(:not
(.iron-selected))>.tab-content{opacity:.8;@apply(--paper-tab-content-unselected)
}:host(:focus) .tab-content{opacity:1;font-weight:700}paper-ripple{color:var(--p
aper-tab-ink,--paper-yellow-a100)}.tab-content>::content>a{@apply(--layout-flex-
auto);height:100%}</style> <div class="tab-content"> <content></content> </div>
</template> <script>Polymer({is:"paper-tab",behaviors:[Polymer.IronControlState,
Polymer.IronButtonState,Polymer.PaperRippleBehavior],properties:{link:{type:Bool
ean,value:!1,reflectToAttribute:!0}},hostAttributes:{role:"tab"},listeners:{down
:"_updateNoink",tap:"_onTap"},attached:function(){this._updateNoink()},get _pare
ntNoink(){var t=Polymer.dom(this).parentNode;return!!t&&!!t.noink},_updateNoink:
function(){this.noink=!!this.noink||!!this._parentNoink},_onTap:function(t){if(t
his.link){var e=this.queryEffectiveChildren("a");if(!e)return;if(t.target===e)re
turn;e.click()}}})</script> </dom-module> <dom-module id="paper-tabs" assetpath=
"/res/imp/bower_components/paper-tabs/"> <template> <style>:host{@apply(--layout
);@apply(--layout-center);height:48px;font-size:14px;font-weight:500;overflow:hi
dden;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-se
lect:none;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:tr
ansparent;@apply(--paper-tabs)}:host-context([dir=rtl]){@apply(--layout-horizont
al-reverse)}#tabsContainer{position:relative;height:100%;white-space:nowrap;over
flow:hidden;@apply(--layout-flex-auto)}#tabsContent{height:100%;-moz-flex-basis:
auto;-ms-flex-basis:auto;flex-basis:auto}#tabsContent.scrollable{position:absolu
te;white-space:nowrap}#tabsContent.scrollable.fit-container,#tabsContent:not(.sc
rollable){@apply(--layout-horizontal)}#tabsContent.scrollable.fit-container{min-
width:100%}#tabsContent.scrollable.fit-container>::content>*{-ms-flex:1 0 auto;-
webkit-flex:1 0 auto;flex:1 0 auto}.hidden{display:none}.not-visible{opacity:0;c
ursor:default}paper-icon-button{width:48px;height:48px;padding:12px;margin:0 4px
}#selectionBar{position:absolute;height:2px;bottom:0;left:0;right:0;background-c
olor:var(--paper-tabs-selection-bar-color,--paper-yellow-a100);-webkit-transform
:scale(0);transform:scale(0);-webkit-transform-origin:left center;transform-orig
in:left center;transition:-webkit-transform;transition:transform;@apply(--paper-
tabs-selection-bar)}#selectionBar.align-bottom{top:0;bottom:auto}#selectionBar.e
xpand{transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,1,1)
}#selectionBar.contract{transition-duration:.18s;transition-timing-function:cubi
c-bezier(0,0,.2,1)}#tabsContent>::content>:not(#selectionBar){height:100%}</styl
e> <paper-icon-button icon="paper-tabs:chevron-left" class$="[[_computeScrollBut
tonClass(_leftHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp
" on-down="_onLeftScrollButtonDown" tabindex="-1"></paper-icon-button> <div id="
tabsContainer" on-track="_scroll" on-down="_down"> <div id="tabsContent" class$=
"[[_computeTabsContentClass(scrollable, fitContainer)]]"> <div id="selectionBar"
class$="[[_computeSelectionBarClass(noBar, alignBottom)]]" on-transitionend="_o
nBarTransitionEnd"></div> <content select="*"></content> </div> </div> <paper-ic
on-button icon="paper-tabs:chevron-right" class$="[[_computeScrollButtonClass(_r
ightHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down=
"_onRightScrollButtonDown" tabindex="-1"></paper-icon-button> </template> <scrip
t>Polymer({is:"paper-tabs",behaviors:[Polymer.IronResizableBehavior,Polymer.Iron
MenubarBehavior],properties:{noink:{type:Boolean,value:!1,observer:"_noinkChange
d"},noBar:{type:Boolean,value:!1},noSlide:{type:Boolean,value:!1},scrollable:{ty
pe:Boolean,value:!1},fitContainer:{type:Boolean,value:!1},disableDrag:{type:Bool
ean,value:!1},hideScrollButtons:{type:Boolean,value:!1},alignBottom:{type:Boolea
n,value:!1},selectable:{type:String,value:"paper-tab"},autoselect:{type:Boolean,
value:!1},autoselectDelay:{type:Number,value:0},_step:{type:Number,value:10},_ho
ldDelay:{type:Number,value:1},_leftHidden:{type:Boolean,value:!1},_rightHidden:{
type:Boolean,value:!1},_previousTab:{type:Object}},hostAttributes:{role:"tablist
"},listeners:{"iron-resize":"_onTabSizingChanged","iron-items-changed":"_onTabSi
zingChanged","iron-select":"_onIronSelect","iron-deselect":"_onIronDeselect"},ke
yBindings:{"left:keyup right:keyup":"_onArrowKeyup"},created:function(){this._ho
ldJob=null,this._pendingActivationItem=void 0,this._pendingActivationTimeout=voi
d 0,this._bindDelayedActivationHandler=this._delayedActivationHandler.bind(this)
,this.addEventListener("blur",this._onBlurCapture.bind(this),!0)},ready:function
(){this.setScrollDirection("y",this.$.tabsContainer)},detached:function(){this._
cancelPendingActivation()},_noinkChanged:function(t){var e=Polymer.dom(this).que
rySelectorAll("paper-tab");e.forEach(t?this._setNoinkAttribute:this._removeNoink
Attribute)},_setNoinkAttribute:function(t){t.setAttribute("noink","")},_removeNo
inkAttribute:function(t){t.removeAttribute("noink")},_computeScrollButtonClass:f
unction(t,e,i){return!e||i?"hidden":t?"not-visible":""},_computeTabsContentClass
:function(t,e){return t?"scrollable"+(e?" fit-container":""):" fit-container"},_
computeSelectionBarClass:function(t,e){return t?"hidden":e?"align-bottom":""},_o
nTabSizingChanged:function(){this.debounce("_onTabSizingChanged",function(){this
._scroll(),this._tabChanged(this.selectedItem)},10)},_onIronSelect:function(t){t
his._tabChanged(t.detail.item,this._previousTab),this._previousTab=t.detail.item
,this.cancelDebouncer("tab-changed")},_onIronDeselect:function(t){this.debounce(
"tab-changed",function(){this._tabChanged(null,this._previousTab),this._previous
Tab=null},1)},_activateHandler:function(){this._cancelPendingActivation(),Polyme
r.IronMenuBehaviorImpl._activateHandler.apply(this,arguments)},_scheduleActivati
on:function(t,e){this._pendingActivationItem=t,this._pendingActivationTimeout=th
is.async(this._bindDelayedActivationHandler,e)},_delayedActivationHandler:functi
on(){var t=this._pendingActivationItem;this._pendingActivationItem=void 0,this._
pendingActivationTimeout=void 0,t.fire(this.activateEvent,null,{bubbles:!0,cance
lable:!0})},_cancelPendingActivation:function(){void 0!==this._pendingActivation
Timeout&&(this.cancelAsync(this._pendingActivationTimeout),this._pendingActivati
onItem=void 0,this._pendingActivationTimeout=void 0)},_onArrowKeyup:function(t){
this.autoselect&&this._scheduleActivation(this.focusedItem,this.autoselectDelay)
},_onBlurCapture:function(t){t.target===this._pendingActivationItem&&this._cance
lPendingActivation()},get _tabContainerScrollSize(){return Math.max(0,this.$.tab
sContainer.scrollWidth-this.$.tabsContainer.offsetWidth)},_scroll:function(t,e){
if(this.scrollable){var i=e&&-e.ddx||0;this._affectScroll(i)}},_down:function(t)
{this.async(function(){this._defaultFocusAsync&&(this.cancelAsync(this._defaultF
ocusAsync),this._defaultFocusAsync=null)},1)},_affectScroll:function(t){this.$.t
absContainer.scrollLeft+=t;var e=this.$.tabsContainer.scrollLeft;this._leftHidde
n=0===e,this._rightHidden=e===this._tabContainerScrollSize},_onLeftScrollButtonD
own:function(){this._scrollToLeft(),this._holdJob=setInterval(this._scrollToLeft
.bind(this),this._holdDelay)},_onRightScrollButtonDown:function(){this._scrollTo
Right(),this._holdJob=setInterval(this._scrollToRight.bind(this),this._holdDelay
)},_onScrollButtonUp:function(){clearInterval(this._holdJob),this._holdJob=null}
,_scrollToLeft:function(){this._affectScroll(-this._step)},_scrollToRight:functi
on(){this._affectScroll(this._step)},_tabChanged:function(t,e){if(!t)return this
.$.selectionBar.classList.remove("expand"),this.$.selectionBar.classList.remove(
"contract"),void this._positionBar(0,0);var i=this.$.tabsContent.getBoundingClie
ntRect(),n=i.width,o=t.getBoundingClientRect(),s=o.left-i.left;if(this._pos={wid
th:this._calcPercent(o.width,n),left:this._calcPercent(s,n)},this.noSlide||null=
=e)return this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.cla
ssList.remove("contract"),void this._positionBar(this._pos.width,this._pos.left)
;var a=e.getBoundingClientRect(),l=this.items.indexOf(e),c=this.items.indexOf(t)
,r=5;this.$.selectionBar.classList.add("expand");var h=l<c,d=this._isRTL;d&&(h=!
h),h?this._positionBar(this._calcPercent(o.left+o.width-a.left,n)-r,this._left):
this._positionBar(this._calcPercent(a.left+a.width-o.left,n)-r,this._calcPercent
(s,n)+r),this.scrollable&&this._scrollToSelectedIfNeeded(o.width,s)},_scrollToSe
lectedIfNeeded:function(t,e){var i=e-this.$.tabsContainer.scrollLeft;i<0?this.$.
tabsContainer.scrollLeft+=i:(i+=t-this.$.tabsContainer.offsetWidth,i>0&&(this.$.
tabsContainer.scrollLeft+=i))},_calcPercent:function(t,e){return 100*t/e},_posit
ionBar:function(t,e){t=t||0,e=e||0,this._width=t,this._left=e,this.transform("tr
anslateX("+e+"%) scaleX("+t/100+")",this.$.selectionBar)},_onBarTransitionEnd:fu
nction(t){var e=this.$.selectionBar.classList;e.contains("expand")?(e.remove("ex
pand"),e.add("contract"),this._positionBar(this._pos.width,this._pos.left)):e.co
ntains("contract")&&e.remove("contract")}})</script> </dom-module> <dom-module i
d="single-page-style" assetpath="/res/imp/common/"> <template> <style>.header{ma
x-width:800px}.title{font-size:1.5em;font-weight:700;margin:5px}.id_input{margin
-left:5px;--paper-input-container-input:{font-size:2em};}.refresh{max-width:40px
;max-height:40px;width:initial;height:initial}button{min-width:4em;max-height:55
px}table{border-collapse:collapse;margin-left:5px;margin-bottom:8px}td,th{border
:1px solid #BBB;padding:5px}.tabs{background-color:#1F78B4;color:#fff;max-width:
600px;margin-left:5px;--paper-checkbox-label-color:#fff}paper-tab{background-col
or:#A6CEE3;color:#000}paper-tab.iron-selected{background-color:#1F78B4;color:#ff
f;font-weight:700;text-decoration:underline}paper-tab[disabled]{background-color
:#AAA;text-decoration:line-through}.quarantined{background-color:#fdd}.dead{back
ground-color:#ccc}</style> </template> </dom-module><script>!function(){Swarming
Behaviors.BotPageBehavior=[SwarmingBehaviors.CommonBehavior,{}]}()</script> <dom
-module id="bot-page-data" assetpath="/res/imp/botpage/"> <script>!function(){fu
nction t(t){if(!s){var e=t.toString();s=e.substring(e.indexOf("("))}return t.toL
ocaleString()+" "+s}var e,s,i=400,n=["first_seen_ts","last_seen_ts","lease_expir
ation_ts"],a=["started_ts","completed_ts","abandoned_ts","modified_ts"];Polymer(
{is:"bot-page-data",behaviors:[SwarmingBehaviors.BotPageBehavior],properties:{au
th_headers:{type:Object},bot_id:{type:String},busy:{type:Boolean,computed:"_or(_
busy1)",notify:!0},bot:{type:Object,computed:"_parseBot(_bot)",notify:!0},bot_ex
ists:{type:Boolean,value:!0,notify:!0},_busy1:{type:Boolean,value:!1},_bot:{type
:Object},_events:{type:Object},_tasks:{type:Object}},observers:["request(auth_he
aders,bot_id)"],request:function(){this.bot_id&&this.auth_headers&&(e&&this.canc
elAsync(e),e=this.async(function(){e=void 0;var t="/api/swarming/v1/bot/"+this.b
ot_id,s=this._getJsonAsync("_bot",t+"/get","_busy1",this.auth_headers);s.then(fu
nction(){this.set("bot_exists",!0)}.bind(this)).catch(function(t){404===t.status
?this.set("bot_exists",!1):sk.errorMessage("Http response: "+(t.status||" ")+" "
+t.response)}.bind(this)),this.fire("reload",{id:this.bot_id})},i))},_parseBot:f
unction(e){if(!e)return{};e.state=e.state||"{}",e.state=JSON.parse(e.state)||{};
var s=e.state.disks||{},i=Object.keys(s);if(i.length){e.disks=[];for(var a=0;a<i
.length;a++)e.disks.push({id:i[a],mb:s[i[a]].free_mb});e.disks.sort(function(t,e
){return e.mb-t.mb})}else e.disks=[{id:"unknown",mb:0}];return e.dimensions=e.di
mensions||[],e.dimensions.forEach(function(t){swarming.alias.DIMENSIONS_WITH_ALI
ASES.indexOf(t.key)!==-1&&t.value.forEach(function(e,s){t.value[s]=swarming.alia
s.apply(e,t.key)})}),n.forEach(function(s){e[s]&&(e[s]=new Date(e[s]),e["human_"
+s]=t(e[s]))}),e},parseEvents:function(e){if(!e||!e.items)return[];var e=e.items
;return e.forEach(function(e){e.ts&&(e.ts=new Date(e.ts),e.human_ts=t(e.ts))}),e
.sort(function(t,e){return e.ts-t.ts}),e},parseTasks:function(e){if(!e||!e.items
)return[];var e=e.items;return e.forEach(function(e){if(a.forEach(function(s){e[
s]&&(e[s]=new Date(e[s]),e["human_"+s]=t(e[s]))}),e.duration)e.human_duration=th
is._humanDuration(e.duration);else{var s=e.completed_ts||e.abandoned_ts||e.modif
ied_ts||new Date;e.human_duration=this._timeDiffExact(e.started_ts,s),e.duration
=(s.getTime()-e.started_ts)/1e3}e.state=e.state||"UNKNOWN","COMPLETED"===e.state
&&(e.failure?e.state="FAILURE":e.state="SUCCESS")}.bind(this)),e.sort(function(t
,e){return e.started_ts-t.started_ts}),e}})}()</script> </dom-module> <dom-modul
e id="bot-page-summary" assetpath="/res/imp/botpage/"> <template> <style include
="single-page-style">.wrapper{display:table;margin-left:auto;margin-bottom:10px;
margin-right:5px}paper-checkbox{margin-left:5px}.thick{border-top-style:solid}</
style> <url-param name="show_full_names" value="{{_show_full_names}}"> </url-par
am> <url-param name="show_all_tasks" value="{{_show_all_tasks}}"> </url-param> <
url-param name="sort_stats" value="{{_sortstr}}" default_value="total:desc"> </u
rl-param> <div class="wrapper"> <table> <thead on-sort_change="_sortChange"> <tr
> <th> <span>Name</span> <sort-toggle name="full_name" current="[[_sort]]"> </so
rt-toggle> </th> <th> <span>Total</span> <sort-toggle name="total" current="[[_s
ort]]"> </sort-toggle> </th> <th> <span>Success</span> <sort-toggle name="succes
s" current="[[_sort]]"> </sort-toggle> </th> <th> <span>Failed</span> <sort-togg
le name="failed" current="[[_sort]]"> </sort-toggle> </th> <th> <span>Died</span
> <sort-toggle name="bot_died" current="[[_sort]]"> </sort-toggle> </th> <th> <s
pan>Average Duration</span> <sort-toggle name="avg_duration" current="[[_sort]]"
> </sort-toggle> </th> <th> <span>Total Duration</span> <sort-toggle name="total
_time" current="[[_sort]]"> </sort-toggle> </th> <th>Percent of Total</th> </tr>
</thead> <tbody> <template is="dom-repeat" items="[[_tasksToShow]]" as="task">
<tr> <td hidden$="[[_truthy(_show_full_names)]]" title="[[task.full_name]]">[[ta
sk.name]]</td> <td hidden$="[[_not(_show_full_names)]]" title="[[task.full_name]
]">[[task.full_name]]</td> <td>[[task.total]]</td> <td>[[task.success]]</td> <td
>[[task.failed]]</td> <td>[[task.bot_died]]</td> <td>[[_humanDuration(task.avg_d
uration)]]</td> <td>[[_humanDuration(task.total_time)]]</td> <td>[[task.total_ti
me_percent]]%</td> </tr> </template> </tbody> <tbody><tr class="thick"> <td>Tota
l</td> <td>[[_totalStats.total]]</td> <td>[[_totalStats.success]]</td> <td>[[_to
talStats.failed]]</td> <td>[[_totalStats.bot_died]]</td> <td>[[_humanDuration(_t
otalStats.avg_duration)]]</td> <td>[[_humanDuration(_totalStats.total_time)]]</t
d> <td>100.0%</td> </tr> </tbody></table> <div> <table> <thead> <tr> <th title="
How much time passed between the oldest task fetched and now."> Total Wall Time
</th> <th title="How much of the wall time this bot was busy with a task."> Wall
Time Utilization </th> </tr> </thead> <tbody> <tr> <td>[[_humanDuration(_totalS
tats.wall_time)]]</td> <td>[[_totalStats.wall_time_utilization]]%</td> </tr> </t
body> </table> <paper-checkbox checked="{{_show_full_names}}"> Show Full Names <
/paper-checkbox> <paper-checkbox hidden$="[[_cannotExpand]]" checked="{{_show_al
l_tasks}}"> Show All Tasks </paper-checkbox> </div> </div> </template> <script>!
function(){var t=15;Polymer({is:"bot-page-summary",behaviors:[SwarmingBehaviors.
BotPageBehavior],properties:{tasks:{type:Array},_cannotExpand:{type:Boolean,comp
uted:"_countTasks(_taskStats.*)"},_show_all_tasks:{type:Boolean},_show_full_name
s:{type:Boolean},_sortstr:{type:String},_sort:{type:Object,computed:"_makeSortOb
ject(_sortstr)"},_taskStats:{type:Array},_tasksToShow:{type:Array,computed:"_sor
tAndLimitTasks(_taskStats.*,_sort.*,_show_all_tasks)"},_totalStats:{type:Object}
},observers:["_aggregate(tasks.*)"],_aggregate:function(){if(this.tasks&&this.ta
sks.length){var t=new Date(1e3*sk.now()),a={},e={total:this.tasks.length,success
:0,failed:0,bot_died:0,avg_duration:0,total_time:0,wall_time:(t-this.tasks[this.
tasks.length-1].started_ts)/1e3};this.tasks.forEach(function(t){var s=t.name.tri
m(),i=s.split("/");5===i.length&&(s=i[0]+"/"+i[3]),a[s]||(a[s]={full_name:s,name
:s,total:0,success:0,failed:0,bot_died:0,avg_duration:0,total_time:0}),a[s].tota
l++,t.failure?(e.failed++,a[s].failed++):t.internal_failure?(e.bot_died++,a[s].b
ot_died++):(e.success++,a[s].success++),e.total_time+=t.duration,a[s].total_time
+=t.duration}),e.avg_duration=e.total_time/e.total,e.wall_time_utilization=(100*
e.total_time/e.wall_time).toFixed(1),this.set("_totalStats",e);var s=Object.keys
(a),i=[];s.forEach(function(t){a[t].avg_duration=a[t].total_time/a[t].total,a[t]
.total_time_percent=(100*a[t].total_time/e.total_time).toFixed(1),i.push(a[t])})
;var o=new Substrings({minOccurrence:Math.max(2,s.length-1),minLength:6});o.buil
d(s);var n=o.weighByAverage()||[];n.length&&n[0].source.forEach(function(t){var
a=i[t].full_name;i[t].name=a.replace(n[0].name,"...")}),this.set("_taskStats",i)
}},_compare:function(t,a){if(!this._sort)return 0;var e=1;return"desc"===this._s
ort.direction&&(e=-1),e*swarming.naturalCompare(t[this._sort.name],a[this._sort.
name])},_countTasks:function(){return this._taskStats.length<=t},_makeSortObject
:function(t){if(t){var a=t.split(":");return 2!=a.length?{name:"full_name",direc
tion:"asc"}:{name:a[0],direction:a[1]}}},_sortAndLimitTasks:function(){swarming.
stableSort(this._taskStats,this._compare.bind(this));var a=this._taskStats.lengt
h;return!this._show_all_tasks&&this._taskStats.length>t&&(a=t),this._taskStats.s
lice(0,a)},_sortChange:function(t){t&&t.detail&&t.detail.name&&(t.preventDefault
(),t.stopPropagation(),this.set("_sortstr",t.detail.name+":"+t.detail.direction)
)}})}()</script> </dom-module><dom-module id="bot-page" assetpath="/res/imp/botp
age/"> <template> <style include="iron-flex iron-flex-alignment iron-positioning
swarming-app-style single-page-style task-style">.message{white-space:pre-line;
font-family:monospace}.bot_state{white-space:pre;font-family:monospace;margin-bo
ttom:10px}.events_table,.tasks_table{border:3px solid #1F78B4}.old_version{backg
round-color:#ffd}.stats{min-width:700px;flex-grow:2}#collapse{max-width:700px}.c
loud{white-space:nowrap;margin-bottom:5px;margin-top:auto}paper-checkbox{--paper
-checkbox-label-color:#fff;--paper-checkbox-checked-color:#fff;--paper-checkbox-
checkmark-color:#000;--paper-checkbox-unchecked-color:#fff;padding:3px}paper-dia
log{border-radius:6px}</style> <url-param name="id" value="{{bot_id}}"> </url-pa
ram> <url-param name="show_all_events" value="{{_show_all}}"> </url-param> <url-
param name="selected" value="{{_selected}}"> </url-param> <url-param name="show_
state" value="{{_show_state}}"> </url-param> <swarming-app client_id="[[client_i
d]]" auth_headers="{{_auth_headers}}" permissions="{{_permissions}}" server_deta
ils="{{_server_details}}" signed_in="{{_signed_in}}" busy="[[_or(_busy1,_busy2,_
busy3)]]" name="Swarming Bot Page"> <h2 hidden$="[[_signed_in]]">You must sign i
n to see anything useful.</h2> <div hidden$="[[_not(_signed_in)]]"> <bot-page-da
ta id="data" auth_headers="[[_auth_headers]]" bot_id="[[bot_id]]" bot="{{_bot}}"
bot_exists="{{_bot_exists}}" busy="{{_busy1}}" events="{{_events}}" tasks="{{_t
asks}}" on-reload="_clearAndReload"> </bot-page-data> <div class="header horizon
tal layout"> <paper-input class="id_input" label="Bot id" value="{{bot_id}}"></p
aper-input> <template is="dom-if" if="[[_ccLink(_bot)]]"> <div class="vertical l
ayout"> <a href$="[[_ccLink(_bot)]]" class="cloud">Cloud Console</a> </div> </te
mplate> <button on-click="_refresh"> <iron-icon class="refresh" icon="icons:refr
esh"></iron-icon> </button> </div> </div> <h2 hidden$="[[_bot_exists]]">Bot not
found.</h2> <div hidden$="[[_not(_bot_exists)]]"> <div class="horizontal wrap la
yout"> <div class="flex"> <table> <tbody><tr class$="[[_isDead(_bot)]]" title="L
ast time the bot contacted the server."> <td>Last Seen</td> <td title="[[_bot.hu
man_last_seen_ts]]"> [[_timeDiffExact(_bot.last_seen_ts)]] ago</td> <td> <templa
te is="dom-if" if="[[_canShutdown(_bot,_permissions)]]"> <button class="raised"
on-click="_promptShutdown"> Shut Down Gracefully </button> </template> <template
is="dom-if" if="[[_canDelete(_bot,_permissions)]]"> <button class="raised" on-c
lick="_promptDelete"> Delete </button> </template> </td> </tr> <template is="dom
-if" if="[[_bot.quarantined]]"> <tr class="quarantined"> <td>Quarantined</td> <t
d colspan="2" class="message">[[_quarantineMessage(_bot)]]</td> </tr> </template
> <tr> <td>Current Task</td> <td> <a target="_blank" rel="noopener" href$="[[_ta
skLink(_bot.task_id)]]"> [[_task(_bot)]] </a> </td> <td> </td> </tr> <tr> <td ro
wspan$="[[_numRows(_bot.dimensions)]]"> <a href$="[[_siblingBotsLink(_bot.dimens
ions)]]" title="The list of bots that also matches these dimensions (except id).
"> Dimensions</a> </td> </tr> <template is="dom-repeat" items="[[_bot.dimensions
]]" as="dim"> <tr> <td>[[dim.key]]</td> <td>[[_concat(dim.value)]]</td> </tr> </
template> <tr title="IP address that the server saw the connection from."> <td>E
xternal IP</td> <td><a href$="[[_bot.external_ip]]">[[_bot.external_ip]]</a></td
> <td></td> </tr> <tr class$="[[_classVersion(_server_details.bot_version,_bot.v
ersion)]]" title="Version is based on the content of swarming_bot.zip which is t
he swarming bot code. The bot won't update if quarantined, dead, or busy."> <td>
Bot Version</td> <td>[[_shorten(_bot.version,'8')]]</td> <td></td> </tr> <tr tit
le="The version the server expects the bot to be using."> <td>Expected Bot Versi
on</td> <td>[[_shorten(_server_details.bot_version,'8')]]</td> <td></td> </tr> <
tr title="First time ever a bot with this id contacted the server."> <td>First s
een</td> <td title="[[_bot.human_first_seen_ts]]"> [[_timeDiffApprox(_bot.first_
seen_ts)]] ago </td> <td></td> </tr> <tr title="How the bot is authenticated by
the server."> <td>Authenticated as</td> <td colspan="2">[[_bot.authenticated_as]
]</td> </tr> <template is="dom-if" if="[[_bot.lease_id]]"> <tr> <td>Machine Prov
ider Lease ID</td> <td colspan="2"> <a href$="[[_mpLink(_bot,_server_details.mac
hine_provider_template)]]"> [[_bot.lease_id]] </a> </td> </tr> <tr> <td>Machine
Provider Lease Expires</td> <td colspan="2">[[_bot.human_lease_expiration_ts]]</
td> </tr> </template> </tbody></table> <span class="title">State</span> <templat
e is="dom-if" if="[[_not(_show_state)]]"> <button on-click="_toggleState"> <iron
-icon icon="icons:add-circle-outline"></iron-icon> </button> </template> <templa
te is="dom-if" if="[[_show_state]]"> <button on-click="_toggleState"> <iron-icon
icon="icons:remove-circle-outline"></iron-icon> </button> </template> <iron-col
lapse id="collapse" opened="[[_show_state]]"> <div class="bot_state">[[_prettyPr
int(_bot.state)]]</div> </iron-collapse> </div> <div class="stats flex"> <bot-pa
ge-summary tasks="[[_tasks]]"> </bot-page-summary> </div> </div> <div class="tab
s"> <paper-tabs selected="{{_selected}}" no-bar=""> <paper-tab>Tasks</paper-tab>
<paper-tab>Events</paper-tab> </paper-tabs> <template is="dom-if" if="[[_showEv
ents]]"> <paper-checkbox checked="{{_show_all}}"> Show all events </paper-checkb
ox> </template> </div> <template is="dom-if" if="[[_not(_showEvents)]]"> <table
class="tasks_table"> <thead> <tr> <th>Task</th> <th>Started</th> <th>Duration</t
h> <th>Result</th> </tr> </thead> <tbody> <template is="dom-repeat" items="{{_ta
sks}}" as="task"> <tr class$="[[_taskClass(task)]]"> <td> <a target="_blank" rel
="noopener" href$="[[_taskLink(task.task_id)]]"> [[task.name]] </a> </td> <td>[[
task.human_started_ts]]</td> <td title="[[task.human_completed_ts]]">[[task.huma
n_duration]]</td> <td>[[task.state]]</td> </tr> </template> </tbody> </table> </
template> <template is="dom-if" if="[[_showEvents]]"> <table class="events_table
"> <thead> <tr> <th>Message</th> <th>Type</th> <th>Timestamp</th> <th>Task ID</t
h> <th>Version</th> </tr> </thead> <tbody> <template is="dom-repeat" items="{{_e
ventList(_show_all,_events.*)}}" as="event"> <tr> <td class="message">[[event.me
ssage]]</td> <td>[[event.event_type]]</td> <td>[[event.human_ts]]</td> <td> <a t
arget="_blank" rel="noopener" href$="[[_taskLink(event.task_id)]]"> [[event.task
_id]] </a> </td> <td class$="[[_classVersion(_server_details.bot_version,event.v
ersion)]]"> [[_shorten(event.version,'8')]] </td> </tr> </template> </tbody> </t
able> </template> <pageable-data id="page_tasks" hidden$="[[_showEvents]]" busy=
"{{_busy2}}" label="Show more tasks" output="{{_tasks}}" parse="[[_parseTasks]]"
> </pageable-data> <pageable-data id="page_events" hidden$="[[_not(_showEvents)]
]" busy="{{_busy3}}" label="Show more events" output="{{_events}}" parse="[[_par
seEvents]]"> </pageable-data> </div> </swarming-app> <paper-dialog id="prompt" m
odal="" on-iron-overlay-closed="_promptClosed"> <h2>Are you sure?</h2> <div>Are
you sure you want to [[_dialogPrompt]]?</div> <div class="buttons"> <paper-butto
n dialog-dismiss="" autofocus="">No</paper-button> <paper-button dialog-confirm=
"">Yes</paper-button> </div> </paper-dialog> </template> <script> (function(){ |
| 738 | 781 |
| 739 Polymer({ | 782 Polymer({ |
| 740 is: 'bot-page', | 783 is: 'bot-page', |
| 741 | 784 |
| 742 behaviors: [ | 785 behaviors: [ |
| 743 SwarmingBehaviors.BotPageBehavior, | 786 SwarmingBehaviors.BotPageBehavior, |
| 744 ], | 787 ], |
| 745 | 788 |
| 746 properties: { | 789 properties: { |
| 747 bot_id: { | 790 bot_id: { |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 936 return ""; | 979 return ""; |
| 937 } | 980 } |
| 938 return str.substring(0, length); | 981 return str.substring(0, length); |
| 939 }, | 982 }, |
| 940 | 983 |
| 941 _shutdownBot: function() { | 984 _shutdownBot: function() { |
| 942 swarming.postWithToast("/api/swarming/v1/bot/"+this.bot_id+"/terminate", | 985 swarming.postWithToast("/api/swarming/v1/bot/"+this.bot_id+"/terminate", |
| 943 "Shutting down "+this.bot_id, this._auth_headers); | 986 "Shutting down "+this.bot_id, this._auth_headers); |
| 944 }, | 987 }, |
| 945 | 988 |
| 989 _siblingBotsLink(dimensions) { |
| 990 var cols = ["id", "os", "task", "status"]; |
| 991 if (!dimensions) { |
| 992 return this._botListLink([], cols); |
| 993 } |
| 994 |
| 995 dimensions = dimensions.filter(function(f){ |
| 996 return f.key !== "id"; |
| 997 }); |
| 998 |
| 999 dimensions.forEach(function(f) { |
| 1000 if (cols.indexOf(f.key) === -1) { |
| 1001 cols.push(f.key); |
| 1002 } |
| 1003 }.bind(this)); |
| 1004 |
| 1005 return this._botListLink(dimensions, cols); |
| 1006 }, |
| 1007 |
| 946 _task: function(bot) { | 1008 _task: function(bot) { |
| 947 return (bot && bot.task_id) || "idle"; | 1009 return (bot && bot.task_id) || "idle"; |
| 948 }, | 1010 }, |
| 949 | 1011 |
| 950 _taskClass: function(task) { | 1012 _taskClass: function(task) { |
| 951 if (task && task.internal_failure) { | 1013 if (task && task.internal_failure) { |
| 952 return "bot_died"; | 1014 return "bot_died"; |
| 953 } | 1015 } |
| 954 if (task && task.failure) { | 1016 if (task && task.failure) { |
| 955 return "failed_task"; | 1017 return "failed_task"; |
| 956 } | 1018 } |
| 957 return ""; | 1019 return ""; |
| 958 }, | 1020 }, |
| 959 | 1021 |
| 960 _toggleState: function() { | 1022 _toggleState: function() { |
| 961 this.set("_show_state", !this._show_state); | 1023 this.set("_show_state", !this._show_state); |
| 962 } | 1024 } |
| 963 | 1025 |
| 964 }); | 1026 }); |
| 965 })(); </script> </dom-module><dom-module id="interval-timer" assetpath="/res/i
mp/common/"> <script>!function(){Polymer({is:"interval-timer",properties:{period
:{type:Number,value:-1,observer:"_periodChanged"}},_periodChanged:function(e){th
is._timeout&&window.clearTimeout(this._timeout),e>0&&(this._timeout=window.setTi
meout(function(){this.fire("trigger"),this._periodChanged(e)}.bind(this),1e3*e))
}})}()</script> </dom-module> <dom-module id="task-page-data" assetpath="/res/im
p/taskpage/"> <script>!function(){var t,e=400,s=["abandoned_ts","completed_ts","
created_ts","modified_ts","started_ts"];Polymer({is:"task-page-data",behaviors:[
SwarmingBehaviors.CommonBehavior,SwarmingBehaviors.TaskBehavior],properties:{aut
h_headers:{type:Object},task_id:{type:String},busy:{type:Boolean,computed:"_or(_
busy1,_busy2,_busy3)",notify:!0},request:{type:Object,computed:"_parseRequest(_r
equest)",notify:!0},result:{type:Object,computed:"_parseResult(_result)",notify:
!0},stdout:{type:String,computed:"_parseStdout(_stdout)",notify:!0},task_exists:
{type:Boolean,value:!0,notify:!0},_busy1:{type:Boolean,value:!1},_busy2:{type:Bo
olean,value:!1},_busy3:{type:Boolean,value:!1},_request:{type:Object},_result:{t
ype:Object},_stdout:{type:Object}},observers:["reload(auth_headers,task_id)"],re
load:function(){if(!this.task_id||!this.auth_headers)return void console.log("ta
sk_id and auth_headers can't be empty");t&&this.cancelAsync(t);var s="/api/swarm
ing/v1/task/"+this.task_id;t=this.async(function(){t=void 0;var e=this._getJsonA
sync("_request",s+"/request","_busy1",this.auth_headers);e.then(function(){this.
set("task_exists",!0)}.bind(this)).catch(function(t){404===t.status?this.set("ta
sk_exists",!1):sk.errorMessage("Http response: "+(t.status||" ")+" "+t.response)
}.bind(this)),this._getJsonAsync("_result",s+"/result?include_performance_stats=
true","_busy2",this.auth_headers),this.reloadStdout()},e)},_parseRequest:functio
n(t){return t?(t.tagMap={},t.tags=t.tags||[],t.tags.forEach(function(e){var s=e.
split(":",1),a=s[0],u=e.substring(a.length+1);t.tagMap[a]=u}),s.forEach(function
(e){t[e]&&(t[e]=new Date(t[e]),t["human_"+e]=sk.human.localeTime(t[e]))}),t):{}}
,_parseResult:function(t){if(!t)return{};var e=new Date;return s.forEach(functio
n(e){t[e]&&(t[e]=new Date(t[e]),t["human_"+e]=sk.human.localeTime(t[e]))}),!t.du
ration&&t.state===this.RUNNING&&t.started_ts&&(t.duration=(e-t.started_ts)/1e3),
t.duration&&(t.human_duration=this._humanDuration(t.duration)),t},_parseStdout:f
unction(t){return t&&t.output?t.output:""},reloadStdout:function(){this._getJson
Async("_stdout","/api/swarming/v1/task/"+this.task_id+"/stdout","_busy3",this.au
th_headers)}})}()</script> </dom-module><dom-module id="task-disambiguation" ass
etpath="/res/imp/taskpage/"> <template> <style include="swarming-app-style singl
e-page-style task-style"></style> <table> <thead> <tr> <th>Try ID</th> <th>Bot I
D</th> <th>Status</th> </tr> </thead> <tbody> <template id="result_list" is="dom
-repeat" items="[[_results]]" as="result" observe="task_id bot_id state"> <tr> <
td> <a href$="[[_taskLink(result.task_id,'true')]]"> [[result.task_id]] </a> </t
d> <td> <a href$="[[_botLink(result.bot_id)]]"> [[result.bot_id]] </a> </td> <td
class$="[[_stateClass(result)]]">[[state(result)]]</td> </tr> </template> </tbo
dy> </table> </template> <script>Polymer({is:"task-disambiguation",behaviors:[Sw
armingBehaviors.CommonBehavior,SwarmingBehaviors.TaskBehavior],properties:{auth_
headers:{type:Object},summary_result:{type:Object},task_id:{type:String},busy:{t
ype:Boolean,value:!1,notify:!0},_busyArr:{type:Array,value:function(){return[]}}
,_results:{type:Array,value:function(){return[]}}},observers:["_fetchRest(auth_h
eaders,task_id,summary_result)","_computeBusy(_busyArr.*)"],_computeBusy:functio
n(){for(var s=0;s<this._busyArr.length;s++)if(this._busyArr[s].status)return!0;r
eturn!1},_fetchRest:function(s,r,t){if(s&&r&&t){var e=t.try_number;this.set("_bu
syArr",[]),this.set("_results",[]);for(var u=r.substring(0,r.length-1),i="/api/s
warming/v1/task/",a=0;a<e-1;a++){var n=u+(a+1);this.splice("_busyArr",a,0,{}),th
is.splice("_results",a,0,{task_id:n}),this._getJsonAsyncArr(a,"_results",i+n+"/r
esult","_busyArr",s)}t.task_id=u+e,this.splice("_results",e-1,1,t)}}})</script>
</dom-module><dom-module id="task-page" assetpath="/res/imp/taskpage/"> <templat
e> <style include="iron-flex iron-flex-alignment swarming-app-style single-page-
style task-style">.milo{width:calc(100% - 11px);height:2000px}.right{margin-top:
8px}.break-all{word-break:break-all}.expand{min-width:3em;vertical-align:middle;
padding:.5em}.code{font-family:monospace}.stdout{white-space:pre-line;padding:2p
x}.refresh_input{padding:0 5px}.reproduce{margin-left:5px}.tabbed{border:3px sol
id #1F78B4;margin-left:5px;min-height:80vh;min-width:550px}.task-info{min-width:
500px}.cipd-header{-moz-user-select:none;-webkit-user-select:none;-ms-user-selec
t:none;user-select:none;font-weight:700;margin-left:8px}</style> <url-param name
="id" value="{{task_id}}"> </url-param> <url-param name="try_detail" value="{{_t
ry_detail}}"> </url-param> <url-param name="request_detail" value="{{_request_de
tail}}"> </url-param> <url-param name="show_raw" value="{{_show_raw}}"> </url-pa
ram> <url-param name="refresh" value="{{_refresh_interval}}" default_value="10">
</url-param> <swarming-app client_id="[[client_id]]" auth_headers="{{_auth_head
ers}}" permissions="{{_permissions}}" profile="{{_profile}}" server_details="{{_
server_details}}" signed_in="{{_signed_in}}" busy="[[_or(_busy1,busy2)]]" name="
Swarming Task Page"> <h2 hidden$="[[_signed_in]]">You must sign in to see anythi
ng useful.</h2> <div hidden$="[[_not(_signed_in)]]"> <task-page-data id="data" a
uth_headers="[[_auth_headers]]" task_id="[[task_id]]" busy="{{_busy1}}" request=
"{{_request}}" result="{{_result}}" stdout="{{_stdout}}" task_exists="{{_task_ex
ists}}"> </task-page-data> <div class="horizontal layout wrap"> <div class="left
flex"> <div class="horizontal layout"> <paper-input class="id_input" label="Tas
k id" value="{{task_id}}"></paper-input> <button on-click="_refresh"> <iron-icon
class="refresh" icon="icons:refresh"></iron-icon> </button> <button on-click="_
promptRetry">Retry</button> <template is="dom-if" if="[[_canCancelTask(_result,_
permissions)]]"> <button on-click="_promptCancel">Cancel</button> </template> </
div> <h2 hidden$="[[_task_exists]]">Task not found.</h2> <template is="dom-if" i
f="[[_disambiguate(task_id,_result)]]"> <h2>Displaying a summary for a task with
multiple tries</h2> <task-disambiguation busy="{{busy2}}" auth_headers="[[_auth
_headers]]" task_id="[[task_id]]" summary_result="[[_result]]"> </task-disambigu
ation> </template> <table class="task-info" hidden$="[[_not(_task_exists)]]"> <t
body><tr> <td>Name</td> <td>[[_request.name]]</td> </tr> <tr> <td>State</td> <td
class$="[[_stateClass(_result)]]">[[state(_result)]]</td> </tr> <tr> <td>Create
d</td> <td title$="[[_request.created_ts]]">[[_request.human_created_ts]]</td> <
/tr> <template is="dom-if" if="[[_wasPickedUp(_result)]]"> <tr> <td>Started</td>
<td title$="[[_result.started_ts]]">[[_result.human_started_ts]]</td> </tr> </t
emplate> <template is="dom-if" if="[[_wasNotPickedUp(_result)]]"> <tr> <td>Expir
es</td> <td>[[_expires(_request)]]</td> </tr> </template> <template is="dom-if"
if="[[_result.human_completed_ts]]"> <tr> <td>Completed</td> <td title$="[[_resu
lt.completed_ts]]">[[_result.human_completed_ts]]</td> </tr> </template> <templa
te is="dom-if" if="[[_result.human_abandoned_ts]]"> <tr> <td>Abandoned</td> <td
title$="[[_result.abandoned_ts]]">[[_result.human_abandoned_ts]]</td> </tr> </te
mplate> <tr> <td>Last Updated</td> <td title$="[[_result.modified_ts]]">[[_resul
t.human_modified_ts]]</td> </tr> <template is="dom-if" if="[[_result.deduped_fro
m]]"> <tr> <td><b>Deduped from</b></td> <td> <a href$="[[_taskLink(_result.dedup
ed_from)]]"> [[_result.deduped_from]] </a> </td> </tr> </template> <tr> <td>Pend
ing Time</td> <td>[[_pending(_result)]]</td> </tr> <tr> <td>Duration</td> <td>[[
_result.human_duration]]</td> </tr> <tr> <td>Priority</td> <td>[[_request.priori
ty]]</td> </tr> <tr> <td>User</td> <td>[[_request.user]]</td> </tr> <tr> <td>Aut
henticated</td> <td>[[_request.authenticated]]</td> </tr> <template is="dom-if"
if="[[_request.service_account]]"> <tr> <td>Service Account</td> <td>[[_request.
service_account]]</td> </tr> </template> <template is="dom-if" if="[[_request.pr
operties.secret_bytes]]"> <tr> <td>Secret Bytes</td> <td>[[_request.properties.s
ecret_bytes]]</td> </tr> </template> <template is="dom-if" if="[[_request.parent
_task_id]]"> <tr> <td>Parent Task</td> <td> <a href$="[[_taskLink(_request.paren
t_task_id)]]">[[_request.parent_task_id]]</a> </td> </tr> </template> <tr> <td r
owspan$="[[_rowspan(_request.properties.dimensions)]]"> <a title="The list of bo
ts that matches the list of dimensions" href$="[[_botListLink(_request.propertie
s.dimensions)]]"> Requested Dimensions </a> </td> </tr> <template is="dom-repeat
" items="{{_request.properties.dimensions}}" as="dimension"> <tr> <td><b>[[dimen
sion.key]]:</b> [[_alias(dimension)]]</td> </tr> </template> <tr> <td>Isolated I
nputs</td> <td> <a href$="[[_isolateLink(_request.properties.inputs_ref)]]"> [[_
request.properties.inputs_ref.isolated]] </a> </td> </tr> <template is="dom-if"
if="[[_request.properties.outputs.length]]"> <tr> <td rowspan$="[[_rowspan(_requ
est.properties.outputs)]]">Expected outputs</td> </tr> <template is="dom-repeat"
items="{{_request.properties.outputs}}" as="output"> <tr> <td>[[output]]</td> <
/tr> </template> </template> <template is="dom-if" if="[[_not(_request_detail)]]
"> <tr> <td>More Details</td> <td> <button on-click="_toggleDetails"> <iron-icon
icon="icons:add-circle-outline"></iron-icon> </button> </td> </tr> </template>
<template is="dom-if" if="[[_request_detail]]"> <tr> <td>Hide Details</td> <td>
<button on-click="_toggleDetails"> <iron-icon icon="icons:remove-circle-outline"
></iron-icon> </button> </td> </tr> </template> <template is="dom-if" if="[[_req
uest_detail]]"> <tr> <td>Extra Args</td> <td class="code break-all">[[_extraArgs
(_request)]]</td> </tr> <tr> <td>Command</td> <td class="code break-all">[[_comm
and(_request)]]</td> </tr> <tr> <td>Idempotent</td> <td>[[_request.properties.id
empotent]]</td> </tr> <tr> <td rowspan$="[[_rowspan(_request.tags)]]">Tags</td>
</tr> <template is="dom-repeat" items="{{_request.tags}}" as="tag"> <tr> <td cla
ss="break-all">[[tag]]</td> </tr> </template> <tr> <td>Execution timeout</td> <t
d>[[_humanDuration(_request.properties.execution_timeout_secs)]]</td> </tr> <tr>
<td>I/O timeout</td> <td>[[_humanDuration(_request.properties.io_timeout_secs)]
]</td> </tr> <tr> <td>Grace period</td> <td>[[_humanDuration(_request.properties
.grace_period_secs)]]</td> </tr> <tr> <td>CIPD server</td> <td> <a href$="[[_req
uest.properties.cipd_input.server]]"> [[_request.properties.cipd_input.server]]
</a> </td> </tr> <tr> <td>CIPD version</td> <td class="break-all">[[_request.pro
perties.cipd_input.client_package.version]]</td> </tr> <template is="dom-if" if=
"[[_wasPickedUp(_result)]]"> <tr> <td>CIPD package name</td> <td>[[_result.cipd_
pins.client_package.package_name]]</td> </tr> </template> <tr hidden$="[[_not(_r
equest.properties.cipd_input)]]"> <td rowspan$="[[_cipdRowspan(_request,_result)
]]">CIPD packages</td> </tr> <template is="dom-repeat" items="[[_cipdPackages(_r
equest,_result)]]" as="cipd"> <tr> <td>[[cipd.path]]/</td> </tr> <tr> <td class=
"break-all"> <span class="cipd-header">Requested: </span>[[cipd.requested]] </td
> </tr> <tr hidden$="[[!_hasActualCIPDPackages(_result)]]"> <td class="break-all
"> <span class="cipd-header">Actual: </span>[[cipd.actual]] </td> </tr> </templa
te> <tr hidden$="[[_empty(_request.properties.caches)]]"> <td rowspan$="[[_rowsp
an(_request.properties.caches)]]">Named caches</td> </tr> <template is="dom-repe
at" items="[[_request.properties.caches]]" as="cache"> <tr> <td><span>[[cache.na
me]]</span>:<span>[[cache.path]]</span></td> </tr> </template> </template> </tbo
dy></table> <div class="title" hidden$="[[_not(_task_exists)]]">Task Execution</
div> <template is="dom-if" if="[[_wasPickedUp(_result)]]"> <table hidden$="[[_no
t(_task_exists)]]"> <tbody><tr> <td>Bot assigned to task</td> <td><a href$="[[_b
otLink(_result.bot_id)]]">[[_result.bot_id]]</a></td> </tr> <tr> <td rowspan$="[
[_rowspan(_result.bot_dimensions)]]"> <a>Bot Dimensions</a> </td> </tr> <templat
e is="dom-repeat" items="[[_result.bot_dimensions]]" as="dimension"> <tr> <td><b
>[[dimension.key]]:</b> [[_alias(dimension)]]</td> </tr> </template> <tr> <td>Ex
it code</td> <td>[[_result.exit_code]]</td> </tr> <tr> <td>Try number</td> <td>[
[_result.try_number]]</td> </tr> <tr> <td>Failure</td> <td class$="[[_failureCla
ss(_result.failure)]]">[[_result.failure]]</td> </tr> <tr> <td>Internal Failure<
/td> <td class$="[[_internalClass(_result.internal_failure)]]">[[_result.interna
l_failure]]</td> </tr> <tr> <td>Isolated Outputs</td> <td> <a href$="[[_isolateL
ink(_result.outputs_ref)]]"> [[_result.outputs_ref.isolated]] </a> </td> </tr> <
tr> <td>Bot version</td> <td>[[_result.bot_version]]</td> </tr> <tr> <td>Server
version</td> <td>[[_result.server_versions]]</td> </tr> </tbody></table> </templ
ate> <template is="dom-if" if="[[_wasNotPickedUp(_result)]]"> This space left bl
ank until a bot is assigned to the task. </template> <template is="dom-if" if="[
[_result.performance_stats]]"> <div class="title">Performance Stats</div> <table
> <tbody><tr> <td title="This includes time taken to download inputs, isolate ou
tputs, and setup CIPD">Total Overhead</td> <td>[[_humanDuration(_result.performa
nce_stats.bot_overhead)]]</td> </tr> <tr> <td>Downloading Inputs From Isolate</t
d> <td>[[_humanDuration(_result.performance_stats.isolated_download.duration)]]<
/td> </tr> <tr> <td>Uploading Outputs To Isolate</td> <td>[[_humanDuration(_resu
lt.performance_stats.isolated_upload.duration)]]</td> </tr> <tr> <td>Initial bot
cache</td> <td>[[_result.performance_stats.isolated_download.initial_number_ite
ms]] items; [[_bytes(_result.performance_stats.isolated_download.initial_size)]]
</td> </tr> </tbody></table> </template> <div hidden$="[[_not(_task_exists)]]">
<div class="title">Reproducing the task locally</div> <div class="reproduce"> <d
iv>Download inputs files into directory <i>foo</i>:</div> <div class="code"> pyt
hon isolateserver.py download -I [[_request.properties.inputs_ref.isolatedserver
]] --namespace [[_request.properties.inputs_ref.namespace]] -s [[_request.proper
ties.inputs_ref.isolated]] --target foo</div> <br> <div>Run this task locally:</
div> <div class="code"> python swarming.py reproduce -S [[_host_url]] [[task_id]
]</div> <br> <div>Download output results into directory <i>foo</i>:</div> <div
class="code"> python swarming.py collect -S [[_host_url]] --task-output-dir=foo
[[task_id]]</div> <br> <div>Looking for <i>swarming.py</i>?</div> <div class="co
de"> git clone https://github.com/luci/client-py</div> </div> </div> </div> <div
class="flex right" hidden$="[[_not(_task_exists)]]"> <div class="horizontal lay
out"> <div class="tabs"> <paper-tabs selected="{{_show_raw}}" no-bar=""> <paper-
tab disabled$="[[_noMilo(_request)]]">Milo Output</paper-tab> <paper-tab>Raw Out
put</paper-tab> </paper-tabs> </div> <paper-input class="refresh_input" label="R
efresh Interval (seconds)" value="{{_refresh_interval}}" title="How often to ref
resh all information about the task" auto-validate="" min="1" max="1000" pattern
="[0-9]+"> </paper-input> </div> <template is="dom-if" if="[[_supportsMilo(_requ
est,_show_raw)]]"> <div class="milo tabbed" hidden$="[[_isSummaryLink(task_id)]]
"> Milo results are only generated for task summaires, that is, tasks whose ids
end in 0. Tasks ending in 1 or 2 represent possible retries of tasks. See <a hre
f="//goo.gl/LE4rwV">the docs</a> for more. </div> <iframe id="miloFrame" class="
milo tabbed" src$="[[_getDisplayServerLink(_server_details.display_server_url_te
mplate,task_id)]]"></iframe> </template> <template is="dom-if" if="[[_show_raw]]
"> <div class="code stdout tabbed break-all">[[_rawOutput(_stdout,_result)]]</di
v> </template> </div> </div> </div> </swarming-app> <paper-dialog id="prompt" mo
dal="" on-iron-overlay-closed="_promptClosed"> <h2>Are you sure?</h2> <div>Are y
ou sure you want to [[_dialog_prompt]]?</div> <div class="buttons"> <paper-butto
n dialog-dismiss="" autofocus="">No</paper-button> <paper-button dialog-confirm=
"">Yes</paper-button> </div> </paper-dialog> <interval-timer period="[[_refresh_
interval]]" on-trigger="_softRefresh"> </interval-timer> </template> <script>!fu
nction(){Polymer({is:"task-page",behaviors:[SwarmingBehaviors.CommonBehavior,Swa
rmingBehaviors.TaskBehavior],properties:{task_id:{type:String},client_id:{type:S
tring},_dialog_prompt:{type:String,value:""},_host_url:{type:String,value:functi
on(){return window.location.hostname}},_refresh_interval:{type:Number},_request:
{type:Object,observer:"_requestUpdated"},_request_detail:{type:Boolean},_result:
{type:Object},_server_details:{type:Object},_stdout:{type:String}},_alias:functi
on(t){var e=t.value;return Array.isArray(e)||(e=[e]),swarming.alias.has(t.key)&&
e.forEach(function(i,s){e[s]=swarming.alias.apply(i,t.key)}),e.join(" | ")},_byt
es:function(t){return sk.human.bytes(t)},_canCancelTask:function(t,e){return t&&
"PENDING"===t.state&&e.cancel_task},_cancelTask:function(){var t="/api/swarming/
v1/task/"+this.task_id+"/cancel";swarming.postWithToast(t,"Canceling task "+this
.task_id,this._auth_headers)},_cipdRowspan:function(t,e){if(!t||!t.properties||!
t.properties.cipd_input)return 0;var i=(t.properties.cipd_input.packages||[]).le
ngth;return i*=this._hasActualCIPDPackages(e)?3:2,i+1},_cipdPackages:function(t,
e){if(!t||!t.properties||!t.properties.cipd_input)return[];var i=t.properties.ci
pd_input.packages||[],s=e&&e.cipd_pins&&e.cipd_pins.packages||[];return i.forEac
h(function(t){t.requested=t.package_name+":"+t.version,s.forEach(function(e){e.p
ath===t.path&&(t.actual=e.package_name+":"+e.version)})}),i},_command:function(t
){if(!t||!t.properties)return"";var e=t.properties.command||[];return e.join(" "
)},_disambiguate:function(t,e){return!(!t.endsWith("0")||!e)&&e.try_number>1},_e
mpty:function(t){return!t||0==t.length},_expires:function(t){var e=parseInt(t.ex
piration_secs);return e?sk.human.localeTime(new Date(t.created_ts.getTime()+1e3*
e)):t.expiration_secs+" seconds from created time"},_extraArgs:function(t){if(!t
||!t.properties)return"";var e=t.properties.extra_args||[];return e.join(" ")},_
failureClass:function(t){return t?"failed_task":""},_getDisplayServerLink:functi
on(t,e){if(t)return t.replace("%s",e)},_hasActualCIPDPackages:function(t){return
t&&t.cipd_pins&&t.cipd_pins.packages},_internalClass:function(t){return t?"exce
ption":""},_isolateLink:function(t){if(t&&t.isolatedserver)return t.isolatedserv
er+"/browse?namespace="+t.namespace+"&hash="+t.isolated},_isSummaryLink:function
(t){return t&&t.endsWith(0)},_noMilo:function(t){return!this._tag(t,"allow_milo"
)},_pending:function(t){if(!t.created_ts)return"";var e=t.started_ts||t.abandone
d_ts||new Date;return e<=t.created_ts?"0s":this._timeDiffExact(t.created_ts,e)},
_promptClosed:function(t){t.detail.confirmed&&(this._dialog_prompt.startsWith("c
ancel")?this._cancelTask():this._retryTask())},_promptCancel:function(){this.set
("_dialog_prompt","cancel task "+this.task_id),this.$.prompt.open()},_promptRetr
y:function(){this.set("_dialog_prompt","retry task "+this.task_id),this.$.prompt
.open()},_rawOutput:function(t,e){return t?t:"PENDING"===e.state||"RUNNING"===e.
state?"[No output yet]":"[No output received]"},_refresh:function(){this.$.data.
reload()},_requestUpdated:function(t){this._noMilo(t)&&this.set("_show_raw",1)},
_softRefresh:function(){if(!this._result||"RUNNING"===this._result.state||"PENDI
NG"===this._result.state){this.$.data.reload();var t=this.$$("iframe");t&&(t.src
=this._getDisplayServerLink(this._server_details.display_server_url_template,thi
s.task_id))}},_retryTask:function(){if(!this._request)return void sk.errorMessag
e("Task not yet loaded",3e3);var t={expiration_secs:this._request.expiration_sec
s,name:this._request.name+" (retry)",parent_task_id:this._request.parent_task_id
,priority:this._request.priority,properties:this._request.properties,tags:this._
request.tags,user:this._profile.email,service_account:this._request.service_acco
unt};t.properties.idempotent=!1,swarming.postWithToast("/api/swarming/v1/tasks/n
ew","Retrying task "+this.task_id,this._auth_headers,t).then(function(t){if(t=JS
ON.parse(t),t&&t.task_id){var e={id:this.task_id};history.pushState(e,"Task Page
"),this.set("task_id",t.task_id)}}.bind(this),function(t){console.log("Task coul
d not be retried",t)})},_rowspan:function(t){return t=t||[],t.length+1},_support
sMilo:function(t,e){return!e&&t&&this._tag(t,"allow_milo")},_toggleDetails:funct
ion(){this.set("_request_detail",!this._request_detail)},_tag:function(t,e){if(t
&&t.tagMap)return t.tagMap[e]},_wasPickedUp:function(t){return t&&t.state!==this
.PENDING&&t.state!==this.CANCELED&&t.state!=this.EXPIRED},_wasNotPickedUp:functi
on(t){return t&&!this._wasPickedUp(t)}})}()</script> </dom-module> </div></body>
</html> | 1027 })(); </script> </dom-module><dom-module id="interval-timer" assetpath="/res/i
mp/common/"> <script>!function(){Polymer({is:"interval-timer",properties:{period
:{type:Number,value:-1,observer:"_periodChanged"}},_periodChanged:function(e){th
is._timeout&&window.clearTimeout(this._timeout),e>0&&(this._timeout=window.setTi
meout(function(){this.fire("trigger"),this._periodChanged(e)}.bind(this),1e3*e))
}})}()</script> </dom-module> <dom-module id="task-page-data" assetpath="/res/im
p/taskpage/"> <script>!function(){var t,e=400,s=["abandoned_ts","completed_ts","
created_ts","modified_ts","started_ts"];Polymer({is:"task-page-data",behaviors:[
SwarmingBehaviors.CommonBehavior,SwarmingBehaviors.TaskBehavior],properties:{aut
h_headers:{type:Object},task_id:{type:String},busy:{type:Boolean,computed:"_or(_
busy1,_busy2,_busy3)",notify:!0},request:{type:Object,computed:"_parseRequest(_r
equest)",notify:!0},result:{type:Object,computed:"_parseResult(_result)",notify:
!0},stdout:{type:String,computed:"_parseStdout(_stdout)",notify:!0},task_exists:
{type:Boolean,value:!0,notify:!0},_busy1:{type:Boolean,value:!1},_busy2:{type:Bo
olean,value:!1},_busy3:{type:Boolean,value:!1},_request:{type:Object},_result:{t
ype:Object},_stdout:{type:Object}},observers:["reload(auth_headers,task_id)"],re
load:function(){if(!this.task_id||!this.auth_headers)return void console.log("ta
sk_id and auth_headers can't be empty");t&&this.cancelAsync(t);var s="/api/swarm
ing/v1/task/"+this.task_id;t=this.async(function(){t=void 0;var e=this._getJsonA
sync("_request",s+"/request","_busy1",this.auth_headers);e.then(function(){this.
set("task_exists",!0)}.bind(this)).catch(function(t){404===t.status?this.set("ta
sk_exists",!1):sk.errorMessage("Http response: "+(t.status||" ")+" "+t.response)
}.bind(this)),this._getJsonAsync("_result",s+"/result?include_performance_stats=
true","_busy2",this.auth_headers),this.reloadStdout()},e)},_parseRequest:functio
n(t){return t?(t.tagMap={},t.tags=t.tags||[],t.tags.forEach(function(e){var s=e.
split(":",1),a=s[0],u=e.substring(a.length+1);t.tagMap[a]=u}),s.forEach(function
(e){t[e]&&(t[e]=new Date(t[e]),t["human_"+e]=sk.human.localeTime(t[e]))}),t):{}}
,_parseResult:function(t){if(!t)return{};var e=new Date;return s.forEach(functio
n(e){t[e]&&(t[e]=new Date(t[e]),t["human_"+e]=sk.human.localeTime(t[e]))}),!t.du
ration&&t.state===this.RUNNING&&t.started_ts&&(t.duration=(e-t.started_ts)/1e3),
t.duration&&(t.human_duration=this._humanDuration(t.duration)),t},_parseStdout:f
unction(t){return t&&t.output?t.output:""},reloadStdout:function(){this._getJson
Async("_stdout","/api/swarming/v1/task/"+this.task_id+"/stdout","_busy3",this.au
th_headers)}})}()</script> </dom-module><dom-module id="task-disambiguation" ass
etpath="/res/imp/taskpage/"> <template> <style include="swarming-app-style singl
e-page-style task-style"></style> <table> <thead> <tr> <th>Try ID</th> <th>Bot I
D</th> <th>Status</th> </tr> </thead> <tbody> <template id="result_list" is="dom
-repeat" items="[[_results]]" as="result" observe="task_id bot_id state"> <tr> <
td> <a href$="[[_taskLink(result.task_id,'true')]]"> [[result.task_id]] </a> </t
d> <td> <a href$="[[_botLink(result.bot_id)]]"> [[result.bot_id]] </a> </td> <td
class$="[[_stateClass(result)]]">[[state(result)]]</td> </tr> </template> </tbo
dy> </table> </template> <script>Polymer({is:"task-disambiguation",behaviors:[Sw
armingBehaviors.CommonBehavior,SwarmingBehaviors.TaskBehavior],properties:{auth_
headers:{type:Object},summary_result:{type:Object},task_id:{type:String},busy:{t
ype:Boolean,value:!1,notify:!0},_busyArr:{type:Array,value:function(){return[]}}
,_results:{type:Array,value:function(){return[]}}},observers:["_fetchRest(auth_h
eaders,task_id,summary_result)","_computeBusy(_busyArr.*)"],_computeBusy:functio
n(){for(var s=0;s<this._busyArr.length;s++)if(this._busyArr[s].status)return!0;r
eturn!1},_fetchRest:function(s,r,t){if(s&&r&&t){var e=t.try_number;this.set("_bu
syArr",[]),this.set("_results",[]);for(var u=r.substring(0,r.length-1),i="/api/s
warming/v1/task/",a=0;a<e-1;a++){var n=u+(a+1);this.splice("_busyArr",a,0,{}),th
is.splice("_results",a,0,{task_id:n}),this._getJsonAsyncArr(a,"_results",i+n+"/r
esult","_busyArr",s)}t.task_id=u+e,this.splice("_results",e-1,1,t)}}})</script>
</dom-module><dom-module id="task-page" assetpath="/res/imp/taskpage/"> <templat
e> <style include="iron-flex iron-flex-alignment swarming-app-style single-page-
style task-style">.milo{width:calc(100% - 11px);height:2000px}.right{margin-top:
8px}.break-all{word-break:break-all}.expand{min-width:3em;vertical-align:middle;
padding:.5em}.code{font-family:monospace}.stdout{white-space:pre-line;padding:2p
x}.refresh_input{padding:0 5px}.reproduce{margin-left:5px}.tabbed{border:3px sol
id #1F78B4;margin-left:5px;min-height:80vh;min-width:550px}.task-info{min-width:
500px}.cipd-header{-moz-user-select:none;-webkit-user-select:none;-ms-user-selec
t:none;user-select:none;font-weight:700;margin-left:8px}</style> <url-param name
="id" value="{{task_id}}"> </url-param> <url-param name="try_detail" value="{{_t
ry_detail}}"> </url-param> <url-param name="request_detail" value="{{_request_de
tail}}"> </url-param> <url-param name="show_raw" value="{{_show_raw}}"> </url-pa
ram> <url-param name="refresh" value="{{_refresh_interval}}" default_value="10">
</url-param> <swarming-app client_id="[[client_id]]" auth_headers="{{_auth_head
ers}}" permissions="{{_permissions}}" profile="{{_profile}}" server_details="{{_
server_details}}" signed_in="{{_signed_in}}" busy="[[_or(_busy1,busy2)]]" name="
Swarming Task Page"> <h2 hidden$="[[_signed_in]]">You must sign in to see anythi
ng useful.</h2> <div hidden$="[[_not(_signed_in)]]"> <task-page-data id="data" a
uth_headers="[[_auth_headers]]" task_id="[[task_id]]" busy="{{_busy1}}" request=
"{{_request}}" result="{{_result}}" stdout="{{_stdout}}" task_exists="{{_task_ex
ists}}"> </task-page-data> <div class="horizontal layout wrap"> <div class="left
flex"> <div class="horizontal layout"> <paper-input class="id_input" label="Tas
k id" value="{{task_id}}"></paper-input> <button on-click="_refresh"> <iron-icon
class="refresh" icon="icons:refresh"></iron-icon> </button> <button on-click="_
promptRetry">Retry</button> <template is="dom-if" if="[[_canCancelTask(_result,_
permissions)]]"> <button on-click="_promptCancel">Cancel</button> </template> </
div> <h2 hidden$="[[_task_exists]]">Task not found.</h2> <template is="dom-if" i
f="[[_disambiguate(task_id,_result)]]"> <h2>Displaying a summary for a task with
multiple tries</h2> <task-disambiguation busy="{{busy2}}" auth_headers="[[_auth
_headers]]" task_id="[[task_id]]" summary_result="[[_result]]"> </task-disambigu
ation> </template> <table class="task-info" hidden$="[[_not(_task_exists)]]"> <t
body><tr> <td>Name</td> <td>[[_request.name]]</td> </tr> <tr> <td>State</td> <td
class$="[[_stateClass(_result)]]">[[state(_result)]]</td> </tr> <tr> <td>Create
d</td> <td title$="[[_request.created_ts]]">[[_request.human_created_ts]]</td> <
/tr> <template is="dom-if" if="[[_wasPickedUp(_result)]]"> <tr> <td>Started</td>
<td title$="[[_result.started_ts]]">[[_result.human_started_ts]]</td> </tr> </t
emplate> <template is="dom-if" if="[[_wasNotPickedUp(_result)]]"> <tr> <td>Expir
es</td> <td>[[_expires(_request)]]</td> </tr> </template> <template is="dom-if"
if="[[_result.human_completed_ts]]"> <tr> <td>Completed</td> <td title$="[[_resu
lt.completed_ts]]">[[_result.human_completed_ts]]</td> </tr> </template> <templa
te is="dom-if" if="[[_result.human_abandoned_ts]]"> <tr> <td>Abandoned</td> <td
title$="[[_result.abandoned_ts]]">[[_result.human_abandoned_ts]]</td> </tr> </te
mplate> <tr> <td>Last Updated</td> <td title$="[[_result.modified_ts]]">[[_resul
t.human_modified_ts]]</td> </tr> <template is="dom-if" if="[[_result.deduped_fro
m]]"> <tr> <td><b>Deduped from</b></td> <td> <a href$="[[_taskLink(_result.dedup
ed_from)]]"> [[_result.deduped_from]] </a> </td> </tr> </template> <tr> <td>Pend
ing Time</td> <td>[[_pending(_result)]]</td> </tr> <tr> <td>Duration</td> <td>[[
_result.human_duration]]</td> </tr> <tr> <td>Priority</td> <td>[[_request.priori
ty]]</td> </tr> <tr> <td>User</td> <td>[[_request.user]]</td> </tr> <tr> <td>Aut
henticated</td> <td>[[_request.authenticated]]</td> </tr> <template is="dom-if"
if="[[_request.service_account]]"> <tr> <td>Service Account</td> <td>[[_request.
service_account]]</td> </tr> </template> <template is="dom-if" if="[[_request.pr
operties.secret_bytes]]"> <tr> <td>Secret Bytes</td> <td>[[_request.properties.s
ecret_bytes]]</td> </tr> </template> <template is="dom-if" if="[[_request.parent
_task_id]]"> <tr> <td>Parent Task</td> <td> <a href$="[[_taskLink(_request.paren
t_task_id)]]">[[_request.parent_task_id]]</a> </td> </tr> </template> <tr> <td r
owspan$="[[_rowspan(_request.properties.dimensions)]]"> <a title="The list of bo
ts that matches the list of dimensions" href$="[[_botListLink(_request.propertie
s.dimensions)]]"> Requested Dimensions </a> </td> </tr> <template is="dom-repeat
" items="{{_request.properties.dimensions}}" as="dimension"> <tr> <td><b>[[dimen
sion.key]]:</b> [[_alias(dimension)]]</td> </tr> </template> <tr> <td>Isolated I
nputs</td> <td> <a href$="[[_isolateLink(_request.properties.inputs_ref)]]"> [[_
request.properties.inputs_ref.isolated]] </a> </td> </tr> <template is="dom-if"
if="[[_request.properties.outputs.length]]"> <tr> <td rowspan$="[[_rowspan(_requ
est.properties.outputs)]]">Expected outputs</td> </tr> <template is="dom-repeat"
items="{{_request.properties.outputs}}" as="output"> <tr> <td>[[output]]</td> <
/tr> </template> </template> <template is="dom-if" if="[[_not(_request_detail)]]
"> <tr> <td>More Details</td> <td> <button on-click="_toggleDetails"> <iron-icon
icon="icons:add-circle-outline"></iron-icon> </button> </td> </tr> </template>
<template is="dom-if" if="[[_request_detail]]"> <tr> <td>Hide Details</td> <td>
<button on-click="_toggleDetails"> <iron-icon icon="icons:remove-circle-outline"
></iron-icon> </button> </td> </tr> </template> <template is="dom-if" if="[[_req
uest_detail]]"> <tr> <td>Extra Args</td> <td class="code break-all">[[_extraArgs
(_request)]]</td> </tr> <tr> <td>Command</td> <td class="code break-all">[[_comm
and(_request)]]</td> </tr> <tr> <td>Idempotent</td> <td>[[_request.properties.id
empotent]]</td> </tr> <tr> <td rowspan$="[[_rowspan(_request.tags)]]">Tags</td>
</tr> <template is="dom-repeat" items="{{_request.tags}}" as="tag"> <tr> <td cla
ss="break-all">[[tag]]</td> </tr> </template> <tr> <td>Execution timeout</td> <t
d>[[_humanDuration(_request.properties.execution_timeout_secs)]]</td> </tr> <tr>
<td>I/O timeout</td> <td>[[_humanDuration(_request.properties.io_timeout_secs)]
]</td> </tr> <tr> <td>Grace period</td> <td>[[_humanDuration(_request.properties
.grace_period_secs)]]</td> </tr> <tr> <td>CIPD server</td> <td> <a href$="[[_req
uest.properties.cipd_input.server]]"> [[_request.properties.cipd_input.server]]
</a> </td> </tr> <tr> <td>CIPD version</td> <td class="break-all">[[_request.pro
perties.cipd_input.client_package.version]]</td> </tr> <template is="dom-if" if=
"[[_wasPickedUp(_result)]]"> <tr> <td>CIPD package name</td> <td>[[_result.cipd_
pins.client_package.package_name]]</td> </tr> </template> <tr hidden$="[[_not(_r
equest.properties.cipd_input)]]"> <td rowspan$="[[_cipdRowspan(_request,_result)
]]">CIPD packages</td> </tr> <template is="dom-repeat" items="[[_cipdPackages(_r
equest,_result)]]" as="cipd"> <tr> <td>[[cipd.path]]/</td> </tr> <tr> <td class=
"break-all"> <span class="cipd-header">Requested: </span>[[cipd.requested]] </td
> </tr> <tr hidden$="[[!_hasActualCIPDPackages(_result)]]"> <td class="break-all
"> <span class="cipd-header">Actual: </span>[[cipd.actual]] </td> </tr> </templa
te> <tr hidden$="[[_empty(_request.properties.caches)]]"> <td rowspan$="[[_rowsp
an(_request.properties.caches)]]">Named caches</td> </tr> <template is="dom-repe
at" items="[[_request.properties.caches]]" as="cache"> <tr> <td><span>[[cache.na
me]]</span>:<span>[[cache.path]]</span></td> </tr> </template> </template> </tbo
dy></table> <div class="title" hidden$="[[_not(_task_exists)]]">Task Execution</
div> <template is="dom-if" if="[[_wasPickedUp(_result)]]"> <table hidden$="[[_no
t(_task_exists)]]"> <tbody><tr> <td>Bot assigned to task</td> <td><a href$="[[_b
otLink(_result.bot_id)]]">[[_result.bot_id]]</a></td> </tr> <tr> <td rowspan$="[
[_rowspan(_result.bot_dimensions)]]"> <a>Bot Dimensions</a> </td> </tr> <templat
e is="dom-repeat" items="[[_result.bot_dimensions]]" as="dimension"> <tr> <td><b
>[[dimension.key]]:</b> [[_alias(dimension)]]</td> </tr> </template> <tr> <td>Ex
it code</td> <td>[[_result.exit_code]]</td> </tr> <tr> <td>Try number</td> <td>[
[_result.try_number]]</td> </tr> <tr> <td>Failure</td> <td class$="[[_failureCla
ss(_result.failure)]]">[[_result.failure]]</td> </tr> <tr> <td>Internal Failure<
/td> <td class$="[[_internalClass(_result.internal_failure)]]">[[_result.interna
l_failure]]</td> </tr> <tr> <td>Isolated Outputs</td> <td> <a href$="[[_isolateL
ink(_result.outputs_ref)]]"> [[_result.outputs_ref.isolated]] </a> </td> </tr> <
tr> <td>Bot version</td> <td>[[_result.bot_version]]</td> </tr> <tr> <td>Server
version</td> <td>[[_result.server_versions]]</td> </tr> </tbody></table> </templ
ate> <template is="dom-if" if="[[_wasNotPickedUp(_result)]]"> This space left bl
ank until a bot is assigned to the task. </template> <template is="dom-if" if="[
[_result.performance_stats]]"> <div class="title">Performance Stats</div> <table
> <tbody><tr> <td title="This includes time taken to download inputs, isolate ou
tputs, and setup CIPD">Total Overhead</td> <td>[[_humanDuration(_result.performa
nce_stats.bot_overhead)]]</td> </tr> <tr> <td>Downloading Inputs From Isolate</t
d> <td>[[_humanDuration(_result.performance_stats.isolated_download.duration)]]<
/td> </tr> <tr> <td>Uploading Outputs To Isolate</td> <td>[[_humanDuration(_resu
lt.performance_stats.isolated_upload.duration)]]</td> </tr> <tr hidden$="[[!_res
ult.performance_stats.isolated_download.initial_size]]"> <td>Initial bot cache</
td> <td>[[_result.performance_stats.isolated_download.initial_number_items]] ite
ms; [[_bytes(_result.performance_stats.isolated_download.initial_size)]]</td> </
tr> </tbody></table> </template> <div hidden$="[[_not(_task_exists)]]"> <div cla
ss="title">Reproducing the task locally</div> <div class="reproduce"> <div>Downl
oad inputs files into directory <i>foo</i>:</div> <div class="code"> python isol
ateserver.py download -I [[_request.properties.inputs_ref.isolatedserver]] --nam
espace [[_request.properties.inputs_ref.namespace]] -s [[_request.properties.inp
uts_ref.isolated]] --target foo</div> <br> <div>Run this task locally:</div> <di
v class="code"> python swarming.py reproduce -S [[_host_url]] [[task_id]]</div>
<br> <div>Download output results into directory <i>foo</i>:</div> <div class="c
ode"> python swarming.py collect -S [[_host_url]] --task-output-dir=foo [[task_i
d]]</div> <br> <div>Looking for <i>swarming.py</i>?</div> <div class="code"> git
clone https://github.com/luci/client-py</div> </div> </div> </div> <div class="
flex right" hidden$="[[_not(_task_exists)]]"> <div class="horizontal layout"> <d
iv class="tabs"> <paper-tabs selected="{{_show_raw}}" no-bar=""> <paper-tab disa
bled$="[[_noMilo(_request)]]">Milo Output</paper-tab> <paper-tab>Raw Output</pap
er-tab> </paper-tabs> </div> <paper-input class="refresh_input" label="Refresh I
nterval (seconds)" value="{{_refresh_interval}}" title="How often to refresh all
information about the task" auto-validate="" min="1" max="1000" pattern="[0-9]+
"> </paper-input> </div> <template is="dom-if" if="[[_supportsMilo(_request,_sho
w_raw)]]"> <div class="milo tabbed" hidden$="[[_isSummaryLink(task_id)]]"> Milo
results are only generated for task summaires, that is, tasks whose ids end in 0
. Tasks ending in 1 or 2 represent possible retries of tasks. See <a href="//goo
.gl/LE4rwV">the docs</a> for more. </div> <iframe id="miloFrame" class="milo tab
bed" src$="[[_getDisplayServerLink(_server_details.display_server_url_template,t
ask_id)]]"></iframe> </template> <template is="dom-if" if="[[_show_raw]]"> <div
class="code stdout tabbed break-all">[[_rawOutput(_stdout,_result)]]</div> </tem
plate> </div> </div> </div> </swarming-app> <paper-dialog id="prompt" modal="" o
n-iron-overlay-closed="_promptClosed"> <h2>Are you sure?</h2> <div>Are you sure
you want to [[_dialog_prompt]]?</div> <div class="buttons"> <paper-button dialog
-dismiss="" autofocus="">No</paper-button> <paper-button dialog-confirm="">Yes</
paper-button> </div> </paper-dialog> <interval-timer period="[[_refresh_interval
]]" on-trigger="_softRefresh"> </interval-timer> </template> <script>!function()
{Polymer({is:"task-page",behaviors:[SwarmingBehaviors.CommonBehavior,SwarmingBeh
aviors.TaskBehavior],properties:{task_id:{type:String},client_id:{type:String},_
dialog_prompt:{type:String,value:""},_host_url:{type:String,value:function(){ret
urn window.location.hostname}},_refresh_interval:{type:Number},_request:{type:Ob
ject,observer:"_requestUpdated"},_request_detail:{type:Boolean},_result:{type:Ob
ject},_server_details:{type:Object},_stdout:{type:String}},_alias:function(t){va
r e=t.value;return Array.isArray(e)||(e=[e]),swarming.alias.has(t.key)&&e.forEac
h(function(i,s){e[s]=swarming.alias.apply(i,t.key)}),e.join(" | ")},_bytes:funct
ion(t){return sk.human.bytes(t)},_canCancelTask:function(t,e){return t&&"PENDING
"===t.state&&e.cancel_task},_cancelTask:function(){var t="/api/swarming/v1/task/
"+this.task_id+"/cancel";swarming.postWithToast(t,"Canceling task "+this.task_id
,this._auth_headers)},_cipdRowspan:function(t,e){if(!t||!t.properties||!t.proper
ties.cipd_input)return 0;var i=(t.properties.cipd_input.packages||[]).length;ret
urn i*=this._hasActualCIPDPackages(e)?3:2,i+1},_cipdPackages:function(t,e){if(!t
||!t.properties||!t.properties.cipd_input)return[];var i=t.properties.cipd_input
.packages||[],s=e&&e.cipd_pins&&e.cipd_pins.packages||[];return i.forEach(functi
on(t){t.requested=t.package_name+":"+t.version,s.forEach(function(e){e.path===t.
path&&(t.actual=e.package_name+":"+e.version)})}),i},_command:function(t){if(!t|
|!t.properties)return"";var e=t.properties.command||[];return e.join(" ")},_disa
mbiguate:function(t,e){return!(!t.endsWith("0")||!e)&&e.try_number>1},_empty:fun
ction(t){return!t||0==t.length},_expires:function(t){var e=parseInt(t.expiration
_secs);return e?sk.human.localeTime(new Date(t.created_ts.getTime()+1e3*e)):t.ex
piration_secs+" seconds from created time"},_extraArgs:function(t){if(!t||!t.pro
perties)return"";var e=t.properties.extra_args||[];return e.join(" ")},_failureC
lass:function(t){return t?"failed_task":""},_getDisplayServerLink:function(t,e){
if(t)return t.replace("%s",e)},_hasActualCIPDPackages:function(t){return t&&t.ci
pd_pins&&t.cipd_pins.packages},_internalClass:function(t){return t?"exception":"
"},_isolateLink:function(t){if(t&&t.isolatedserver)return t.isolatedserver+"/bro
wse?namespace="+t.namespace+"&hash="+t.isolated},_isSummaryLink:function(t){retu
rn t&&t.endsWith(0)},_noMilo:function(t){return!this._tag(t,"allow_milo")},_pend
ing:function(t){if(!t.created_ts)return"";var e=t.started_ts||t.abandoned_ts||ne
w Date;return e<=t.created_ts?"0s":this._timeDiffExact(t.created_ts,e)},_promptC
losed:function(t){t.detail.confirmed&&(this._dialog_prompt.startsWith("cancel")?
this._cancelTask():this._retryTask())},_promptCancel:function(){this.set("_dialo
g_prompt","cancel task "+this.task_id),this.$.prompt.open()},_promptRetry:functi
on(){this.set("_dialog_prompt","retry task "+this.task_id),this.$.prompt.open()}
,_rawOutput:function(t,e){return t?t:"PENDING"===e.state||"RUNNING"===e.state?"[
No output yet]":"[No output received]"},_refresh:function(){this.$.data.reload()
},_requestUpdated:function(t){this._noMilo(t)&&this.set("_show_raw",1)},_softRef
resh:function(){if(!this._result||"RUNNING"===this._result.state||"PENDING"===th
is._result.state){this.$.data.reload();var t=this.$$("iframe");t&&(t.src=this._g
etDisplayServerLink(this._server_details.display_server_url_template,this.task_i
d))}},_retryTask:function(){if(!this._request)return void sk.errorMessage("Task
not yet loaded",3e3);var t={expiration_secs:this._request.expiration_secs,name:t
his._request.name+" (retry)",parent_task_id:this._request.parent_task_id,priorit
y:this._request.priority,properties:this._request.properties,tags:this._request.
tags,user:this._profile.email,service_account:this._request.service_account};t.p
roperties.idempotent=!1,swarming.postWithToast("/api/swarming/v1/tasks/new","Ret
rying task "+this.task_id,this._auth_headers,t).then(function(t){if(t=JSON.parse
(t),t&&t.task_id){var e={id:this.task_id};history.pushState(e,"Task Page"),this.
set("task_id",t.task_id)}}.bind(this),function(t){console.log("Task could not be
retried",t)})},_rowspan:function(t){return t=t||[],t.length+1},_supportsMilo:fu
nction(t,e){return!e&&t&&this._tag(t,"allow_milo")},_toggleDetails:function(){th
is.set("_request_detail",!this._request_detail)},_tag:function(t,e){if(t&&t.tagM
ap)return t.tagMap[e]},_wasPickedUp:function(t){return t&&t.state!==this.PENDING
&&t.state!==this.CANCELED&&t.state!=this.EXPIRED},_wasNotPickedUp:function(t){re
turn t&&!this._wasPickedUp(t)}})}()</script> </dom-module> </div></body></html> |
| OLD | NEW |