Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(216)

Side by Side Diff: appengine/swarming/ui/build/elements.html

Issue 2558633009: Make old version bots show up yellow on botlist (Closed)
Patch Set: Make classes additive Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | appengine/swarming/ui/res/imp/botlist/bot-list.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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"&amp;";case"<":return"&lt;" ;case">":return"&gt;";case'"':return"&quot;";case" ":return"&nbsp;"}}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"&amp;";case"<":return"&lt;" ;case">":return"&gt;";case'"':return"&quot;";case" ":return"&nbsp;"}}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,"&comma;").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(/&comma;/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,"&comma;").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(/&comma;/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) {
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 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);
344 this.set("busy", false); 344 this.set("busy", false);
345 }.bind(this)); 345 }.bind(this));
346 }, 346 },
347 347
348 _noMore: function(cursor) { 348 _noMore: function(cursor) {
349 return cursor === END; 349 return cursor === END;
350 } 350 }
351 }); 351 });
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">&nbsp;</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="[&quot ;id&quot;,&quot;os&quot;,&quot;task&quot;,&quot;status&quot;]" 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 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">&nbsp;</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="[&quot ;id&quot;,&quot;os&quot;,&quot;task&quot;,&quot;status&quot;]" 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
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(){ 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}.old_version{background-color:#ffd}.bad-devic e,.quarantined{background-color:#fdd}.dead{background-color:#ccc}.alt{background -color:#f8f8f8}.bot-list th>span{padding-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}}" s erver_details="{{_server_details}}" busy="[[_or(_busy1,_busy2,_busy3)]]" name="S warming 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]]" primary_map="[[_primary_map]]" prim ary_arr="[[_primary_arr]]" special_columns="[[_specialColumns]]" columns="{{_col umns}}" query_params="{{_query_params}}" filter="{{_filter}}" verbose="{{_verbos e}}"> </bot-filters> <bot-list-summary auth_headers="[[_auth_headers]]" busy="{{ _busy3}}" columns="[[_columns]]" count_params="[[_query_params]]" fleet="[[_flee t]]" filtered_bots="[[_filteredSortedItems]]" sort="[[_sortstr]]" verbose="[[_ve rbose]]"> </bot-list-summary> </div> <bot-list-data id="data" auth_headers="[[_a uth_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> <sort-toggle name="id" current="[[ _sort]]"> </sort-toggle> </th> <th hidden$="[[_hide('cloud_console_link', _colum ns.*)]]"> <span>Bot in Cloud Console</span> <sort-toggle name="cloud_console_lin k" current="[[_sort]]"> </sort-toggle> </th> <th hidden$="[[_hide('mp_lease_id', _columns.*)]]"> <span>Machine Provider Lease Id</span> <sort-toggle name="mp_le ase_id" current="[[_sort]]"> </sort-toggle> </th> <th hidden$="[[_hide('task', _ columns.*)]]"> <span>Current Task</span> <sort-toggle name="task" current="[[_so rt]]"> </sort-toggle> </th> <template is="dom-repeat" items="[[_plainColumns]]" as="c"> <th hidden$="[[_hide(c)]]"> <span>[[_header(c)]]</span> <sort-toggle nam e="[[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$="[[_botClass(bot,_server_details.bot_ve rsion)]]"> <td> <a class="center" href$="[[_botLink(bot.bot_id)]]" target="_blan k" rel="noopener"> [[bot.bot_id]] </a> </td> <td hidden$="[[_hide('cloud_console _link', _columns.*)]]"> <a href$="[[_ccLink(bot)]]">[[_ccText(bot)]]</a> </td> < td hidden$="[[_hide('mp_lease_id', _columns.*)]]"> <a href$="[[_mpLink(bot, _ser ver_details.machine_provider_template)]]"> [[_column('mp_lease_id', bot,_verbose )]] </a> </td> <td hidden$="[[_hide('task', _columns.*)]]"> <a href$="[[_taskLin k(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)]]" a s="device"> <tr hidden$="[[_hide('android_devices', _columns.*)]]" class$="[[_de viceClass(device,index)]]"> <td></td> <td hidden$="[[_hide('cloud_console_link', _columns.*)]]"></td> <td hidden$="[[_hide('mp_lease_id', _columns.*)]]"></td> < td hidden$="[[_hide('task', _columns.*)]]"></td> <template is="dom-repeat" items ="[[_plainColumns]]" as="c"> <td hidden$="[[_hide(c)]]"> [[_deviceColumn(c, devi ce, _verbose)]] </td> </template> </tr> </template> </template> </tbody> </table > <pageable-data id="page_bots" busy="{{_busy2}}" label="Show more bots" output= "{{_items}}" parse="[[_parseBots]]"> </pageable-data> </div> </swarming-app> </t emplate> <script> (function(){
354 var UNKNOWN = "unknown"; 354 var UNKNOWN = "unknown";
355 // see dynamic-table for more information on specialColumns, headerMap, 355 // see dynamic-table for more information on specialColumns, headerMap,
356 // columnMap, and specialSort 356 // columnMap, and specialSort
357 var specialColumns = ["id", "cloud_console_link", "mp_lease_id", "task"]; 357 var specialColumns = ["id", "cloud_console_link", "mp_lease_id", "task"];
358 358
359 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"];
360 360
361 var headerMap = { 361 var headerMap = {
362 // "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
363 // headers hard-coded above. 363 // headers hard-coded above.
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 "_checkDeviceColumns(_columns.*)" 693 "_checkDeviceColumns(_columns.*)"
694 ], 694 ],
695 695
696 _androidAliasDevice: function(device) { 696 _androidAliasDevice: function(device) {
697 if (device.notReady) { 697 if (device.notReady) {
698 return UNAUTHENTICATED.toUpperCase(); 698 return UNAUTHENTICATED.toUpperCase();
699 } 699 }
700 return swarming.alias.android(this._deviceType(device)); 700 return swarming.alias.android(this._deviceType(device));
701 }, 701 },
702 702
703 _botClass: function(bot) { 703 _botClass: function(bot, serverVersion) {
704 var classes = "";
704 if (bot.is_dead) { 705 if (bot.is_dead) {
705 return "dead"; 706 classes += "dead ";
706 } 707 }
707 if (bot.quarantined) { 708 if (bot.quarantined) {
708 return "quarantined"; 709 classes += "quarantined ";
709 } 710 }
710 return ""; 711 if (bot.version !== serverVersion) {
712 classes += "old_version";
713 }
714 return classes;
711 }, 715 },
712 716
713 _ccLink: function(bot){ 717 _ccLink: function(bot){
714 var z = this._attribute(bot, "zone")[0]; 718 var z = this._attribute(bot, "zone")[0];
715 if (z === "unknown") { 719 if (z === "unknown") {
716 return undefined; 720 return undefined;
717 } 721 }
718 return this._cloudConsoleLink(z, bot.bot_id); 722 return this._cloudConsoleLink(z, bot.bot_id);
719 }, 723 },
720 724
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
770 774
771 _reload: function() { 775 _reload: function() {
772 if (!this._auth_headers || !this._query_params) { 776 if (!this._auth_headers || !this._query_params) {
773 return; 777 return;
774 } 778 }
775 var url = "/api/swarming/v1/bots/list?" + sk.query.fromParamSet(this._qu ery_params); 779 var url = "/api/swarming/v1/bots/list?" + sk.query.fromParamSet(this._qu ery_params);
776 this.$.page_bots.load(url,this._auth_headers); 780 this.$.page_bots.load(url,this._auth_headers);
777 } 781 }
778 782
779 }); 783 });
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="[&quot;name&quot;,&quot;state&quot;,&quot;c reated_ts&quot;,&quot;user&quot;]" 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(){ 784 })(); </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="[&quot;name&quot;,&quot;state&quot;,&quot;c reated_ts&quot;,&quot;user&quot;,&quot;bot&quot;]" multi=""> </url-param> <url-p aram name="q" value="{{_query}}" default_value=""> </url-param> <url-param name= "l" default_value="50" value="{{_limit}}"> </url-param> <div class="container ho rizontal layout"> <div class="narrow-down-selector"> <div> <iron-a11y-keys targe t="[[_filter_input]]" keys="enter" on-keys-pressed="_manuallyAddFilter"></iron-a 11y-keys> <paper-input id="filter" label="Search columns and filters or supply a filter and press enter" placeholder="gpu nvidia pool:Chrome" value="{{_query::i nput}}"> </paper-input> </div> <div class="wide selector side-by-side" title="Th is shows all task tags and other interesting 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 lay out" label="[[item]]"> <span>[[_beforeBold(item,_query)]]<span class="bold">[[_b old(item,_query)]]</span>[[_afterBold(item,_query)]]</span> <span class="flex">< /span> <paper-checkbox noink="" disabled$="[[_cantToggleColumn(item)]]" checked= "[[_columnState(item,columns.*)]]" on-change="_toggleColumn"> </paper-checkbox> </div> </template> </iron-selector> </div> <div class="selector side-by-side" ti tle="These are most of the options (if any) that the task list can be filtered o n. This list is all that have been seen recently, augmented with the ones return ed by the current query. There may be others."> <template is="dom-repeat" id="se condaryList" items="[[_secondaryItems]]" as="item"> <div class="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="[[_cantAdd Filter(_primarySelected,item,_filters.*)]]" on-tap="_addFilter"> </iron-icon> </ div> </template> <template is="dom-if" if="[[_secondaryItems.length]]"> <div cla ss="pointable item" title="There may be more valid options than just the ones sh own.">...</div> </template> <template is="dom-if" if="[[_showTagMessage(_primary Selected,_secondaryItems.length)]]"> <div class="item">Only tags can be used for filtering. <i>"[[_primarySelected]]"</i> is informational only.</div> </templat e> </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 horizontal layout" label="[[fil]]"> <span>[[fil]] </span> <span class="flex"></span> <iron-icon class="icons" icon="icons:remove-c ircle-outline" hidden="[[_cantRemoveFilter(fil,_filters.*)]]" on-tap="_removeFil ter"> </iron-icon> </div> </template> </div> <div class="side-by-side"> <paper-i nput id="_limit" label="Limit Results" auto-validate="" min="0" max="1000" patte rn="[0-9]+" value="{{_limit}}"> </paper-input> <a href$="[[_matchingBotsLink(que ry_params,dimensions.*)]]">View Matching Bots</a> </div> </div> </div> </templat e> <script>!function(){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.PEND ING||r===this.RUNNING;var s=this._attribute(t,"failure",!1)[0];if("COMPLETED_SUC CESS"===i)return r===this.COMPLETED&&!s;if("COMPLETED_FAILURE"===i)return r===th is.COMPLETED&&s;var n=this._attribute(t,"try_number","-1")[0];return"DEDUPED"=== i?r===this.COMPLETED&&"0"===n:void 0}};Polymer({is:"task-filters",behaviors:[Swa rmingBehaviors.QueryColumnFilter,SwarmingBehaviors.TaskBehavior],properties:{col umns:{type:Array,notify:!0},query_params:{type:Object,computed:"_extractQueryPar ams(_filters.*, _limit)",notify:!0},_filterMap:{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},_extractQueryParams:function(){var t={},i=[];t his._filters.forEach(function(r){var s=r.split(this.FILTER_SEP,1),n=s[0],e=r.sub string(n.length+this.FILTER_SEP.length);"state"===n?t.state=[e]:("user"===n&&"no ne"===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(1e3,r),t.limit=[r],this._limit!=r&&this.set("_limit",r)),t},_matc hingBotsLink:function(t){var i=["id","os","task","status"];if(!t.tags||!this.dim ensions)return this._botListLink([],i);var r=t.tags.filter(function(t){var i=t.s plit(this.FILTER_SEP,1)[0];return this.dimensions.indexOf(i)!==-1}.bind(this));r eturn r.forEach(function(t){var r=t.split(this.FILTER_SEP,1)[0];i.indexOf(r)===- 1&&i.push(r)}.bind(this)),this._botListLink(r,i)},_showTagMessage:function(t,i){ return t&&"name"!==t&&!i}})}()</script> </dom-module><dom-module id="task-list-d ata" assetpath="/res/imp/tasklist/"> <script>!function(){var t=["abandoned_ts"," completed_ts","created_ts","modified_ts","started_ts"],s=["quarantined","error"] ;Polymer({is:"task-list-data",behaviors:[SwarmingBehaviors.CommonBehavior,Swarmi ngBehaviors.TaskBehavior],properties:{auth_headers:{type:Object,observer:"signIn "},query_params:{type:Object},tasks:{type:Array},busy:{type:Boolean,computed:"_o r(_busy2,_busy1)",notify:!0},dimensions:{type:Array,computed:"_makeArray(_dimens ions)",notify:!0},primary_map:{type:Object,computed:"_primaryMap(_tags,_dimensio ns,tasks.*)",notify:!0},primary_arr:{type:Array,computed:"_primaryArr(primary_ma p)",notify:!0},_busy2:{type:Boolean,value:!1},_busy1:{type:Boolean,value:!1},_di mensions:{type:Object},_list:{type:Object},_tags:{type:Object}},signIn:function( ){this._getJsonAsync("_tags","/api/swarming/v1/tasks/tags","_busy2",this.auth_he aders),this._getJsonAsync("_dimensions","/api/swarming/v1/bots/dimensions","_bus y1",this.auth_headers)},_makeArray:function(t){if(!t||!t.bots_dimensions)return[ ];var a=[];return 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.key s(t);return s.sort(),s},_primaryMap:function(s,a){s=s&&s.tasks_tags||[],a=a&&a.b ots_dimensions||[],tasks=this.tasks||[];var e={};s.forEach(function(t){e[t.key]| |(e[t.key]={});var s=t.value||[];s.forEach(function(s){e[t.key][s]=!0})}),a.forE ach(function(t){var s=t.value;e[t.key]||(e[t.key]={}),s.forEach(function(s){e[t. key][s]=!0})}),tasks.forEach(function(t){Object.keys(t.tagMap).forEach(function( s){var a=t.tagMap[s];e[s]||(e[s]={}),e[s][a]=!0})}),e.user&&(delete e.user[""],e .user.none=!0);var r={};for(key in e){var n=Object.keys(e[key]);if(swarming.alia s.DIMENSIONS_WITH_ALIASES.indexOf(key)===-1)r[key]=n;else{var i=[];n.forEach(fun ction(t){i.push(swarming.alias.apply(t,key))}),r[key]=i}}return r.name=[],r.stat e=[this.PENDING,this.RUNNING,"PENDING_RUNNING",this.COMPLETED,"COMPLETED_SUCCESS ","COMPLETED_FAILURE",this.EXPIRED,this.TIMED_OUT,this.BOT_DIED,this.CANCELED,"D EDUPED","ALL"],r.costs_usd=[],r.deduped_from=[],r.duration=[],r.server_versions= [],r.bot=[],t.forEach(function(t){r[t]=[]}),r},parseTasks:function(s){if(!s||!s. items)return[];var a=new Date;return s.items.forEach(function(s){var e={};s.tags =s.tags||[],s.tags.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._humanDuration(s.duration))}.bind(this)),s.items}})}()</script> </dom-modul e> <dom-module id="task-list" assetpath="/res/imp/tasklist/"> <template> <style include="iron-flex iron-flex-alignment iron-positioning swarming-app-style dynam ic-table-style task-style">task-filters{margin-bottom:8px;margin-right:10px}.tas k-list th>span{padding-right:30px}</style> <url-param name="s" value="{{_sortstr }}" default_value="created_ts:desc"> </url-param> <swarming-app client_id="[[cli ent_id]]" auth_headers="{{_auth_headers}}" permissions="{{_permissions}}" signed _in="{{_signed_in}}" busy="[[_or(_busy1,_busy2)]]" name="Swarming Task List"> <h 2 hidden$="[[_signed_in]]">You must sign in to see anything useful.</h2> <div hi dden$="[[_not(_signed_in)]]"> <task-list-data id="data" auth_headers="[[_auth_he aders]]" query_params="[[_query_params]]" tasks="[[_items]]" busy="{{_busy1)}}" dimensions="{{_dimensions}}" primary_map="{{_primary_map}}" primary_arr="{{_prim ary_arr}}"> </task-list-data> <div class="horizontal layout"> <task-filters dime nsions="[[_dimensions]]" primary_map="[[_primary_map]]" primary_arr="[[_primary_ arr]]" special_columns="[[_specialColumns]]" columns="{{_columns}}" query_params ="{{_query_params}}" filter="{{_filter}}"> </task-filters> </div> <table class=" task-list"> <thead on-sort_change="_sortChange"> <tr> <th> <span>Task Name</span > <sort-toggle name="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]]"> </s ort-toggle> </th> <th hidden$="[[_hide('deduped_from', _columns.*)]]"> <span>Ded uped from</span> <sort-toggle name="deduped_from" current="[[_sort]]"> </sort-to ggle> </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 h idden$="[[_hide(c)]]"> <span>[[_header(c)]]</span> <sort-toggle name="[[c]]" cur rent="[[_sort]]"> </sort-toggle> </th> </template> </tr> </thead> <tbody> <templ ate id="tasks_table" is="dom-repeat" items="[[_filteredSortedItems]]" as="task" initial-count="50"> <tr class$="[[_taskClass(task)]]"> <td> <a class="center" hr ef$="[[_taskLink(task.task_id)]]" target="_blank"> [[task.name]] </a> </td> <td hidden$="[[_hide('state', _columns.*)]]"> [[_column('state', task)]] <paper-butt on raised="" hidden$="[[_cannotCancel(task,_permissions)]]" on-tap="_promptCance l"> Cancel </paper-button> </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 cla ss="center" href$="[[_taskLink(task.deduped_from)]]" target="_blank"> [[_column( 'deduped_from',task)]] </a> </td> <td hidden$="[[_hide('source_revision', _colum ns.*)]]"> <a class="center" href$="[[_sourceLink(task)]]" target="_blank"> [[_co lumn('source_revision',task)]] </a> </td> <template is="dom-repeat" items="[[_pl ainColumns]]" as="c"> <td hidden$="[[_hide(c)]]"> [[_column(c, task)]] </td> </t emplate> </tr> </template> </tbody> </table> <pageable-data id="page_tasks" busy ="{{_busy2}}" label="Show 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 y ou want to [[_dialogPrompt]]?</div> <div class="buttons"> <paper-button dialog-d ismiss="" autofocus="">No</paper-button> <paper-button dialog-confirm="">Yes</pa per-button> </div> </paper-dialog> </template> <script>!function(){function t(t) {return function(e){return this._attribute(e,"human_"+t)[0]}}function e(t){retur n 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]},completed_ts:t("completed_ts"),costs_usd:function(t){return this._attri bute(t,"costs_usd",0)[0]},created_ts:t("created_ts"),duration:t("duration"),modi fied_ts:t("modified_ts"),source_revision:function(t){var e=this._attribute(t,"so urce_revision")[0];return e.substring(0,8)},started_ts:t("started_ts"),state:fun ction(t){var e=this._attribute(t,"state")[0];if("COMPLETED"===e){if(this._attrib ute(t,"failure",!1)[0])return"COMPLETED (FAILURE)";var a=this._attribute(t,"try_ number","-1")[0];return"0"===a?"COMPLETED (DEDUPED)":"COMPLETED (SUCCESS)"}retur n e}},r={abandoned_ts:"Abandoned On",completed_ts:"Completed On",created_ts:"Cre ated On",duration:"Duration",modified_ts:"Last Modified",started_ts:"Started Wor king On",user:"Requesting 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:[ SwarmingBehaviors.DynamicTableBehavior,SwarmingBehaviors.TaskBehavior],propertie s:{client_id:{type:String},_busy1:{type:Boolean,value:!1},_busy2:{type:Boolean,v alue:!1},_parseTasks:{type:Function,value:function(){return this.$.data.parseTas ks.bind(this)}},_toCancel:{type:String},_columnMap:{type:Object,value:function() {var t=this._commonColumns();for(var e in s)t[e]=s[e];return t}},_headerMap:{typ e:Object,value:r},_specialColumns:{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.isAr ray(s)?s:[s]},_cannotCancel:function(t,e){return!(e&&e.cancel_task&&"PENDING"=== this._column("state",t))},_cancelTask:function(){var t="/api/swarming/v1/task/"+ this._toCancel+"/cancel";swarming.postWithToast(t,"Canceling task "+this._toCanc el,this._auth_headers),this.set("_toCancel","")},_promptClosed:function(t){t.det ail.confirmed&&this._cancelTask()},_promptCancel:function(t){var e=t.model.task; return e&&e.task_id?(this.set("_toCancel",e.task_id),this.set("_dialogPrompt",'c ancel task "'+e.name+'"'),void this.$.prompt.open()):void console.log("Missing t ask info",e)},reload: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._att ribute(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]},_taskClass:function(t){return this.stateClass(this._column("state",t ))}})}()</script> </dom-module> <dom-module id="iron-collapse" assetpath="/res/i mp/bower_components/iron-collapse/"> <template> <style>:host{display:block;trans ition-duration:var(--iron-collapse-transition-duration,300ms);overflow:visible}: host(.iron-collapse-closed){display:none}:host(:not(.iron-collapse-opened)){over flow:hidden}</style> <content></content> </template> </dom-module> <script>Polym er({is:"iron-collapse",behaviors:[Polymer.IronResizableBehavior],properties:{hor izontal:{type:Boolean,value:!1,observer:"_horizontalChanged"},opened:{type:Boole an,value:!1,notify:!0,observer:"_openedChanged"},noAnimation:{type:Boolean},_des iredSize:{type:String,value:""}},get dimension(){return this.horizontal?"width": "height"},get _dimensionMax(){return this.horizontal?"maxWidth":"maxHeight"},get _dimensionMaxCss(){return this.horizontal?"max-width":"max-height"},hostAttribu tes:{role:"group","aria-hidden":"true","aria-expanded":"false"},listeners:{trans itionend:"_transitionEnd"},attached:function(){this._transitionEnd()},toggle:fun ction(){this.opened=!this.opened},show:function(){this.opened=!0},hide:function( ){this.opened=!1},updateSize:function(i,t){if(i="auto"===i?"":i,this._desiredSiz e!==i){this._desiredSize=i,this._updateTransition(!1);var e=t&&!this.noAnimation &&this._isDisplayed;if(e){var n=this._calcSize();""===i&&(this.style[this._dimen sionMax]="",i=this._calcSize()),this.style[this._dimensionMax]=n,this.scrollTop= this.scrollTop,this._updateTransition(!0),e=i!==n}this.style[this._dimensionMax] =i,e||this._transitionEnd()}},enableTransition:function(i){Polymer.Base._warn("` enableTransition()` is deprecated, use `noAnimation` instead."),this.noAnimation =!i},_updateTransition:function(i){this.style.transitionDuration=i&&!this.noAnim ation?"":"0s"},_horizontalChanged:function(){this.style.transitionProperty=this. _dimensionMaxCss;var i="maxWidth"===this._dimensionMax?"maxHeight":"maxWidth";th is.style[i]="",this.updateSize(this.opened?"auto":"0px",!1)},_openedChanged:func tion(){this.setAttribute("aria-expanded",this.opened),this.setAttribute("aria-hi dden",!this.opened),this.toggleClass("iron-collapse-closed",!1),this.toggleClass ("iron-collapse-opened",!1),this.updateSize(this.opened?"auto":"0px",!0),this.op ened&&this.focus()},_transitionEnd:function(){this.style[this._dimensionMax]=thi s._desiredSize,this.toggleClass("iron-collapse-closed",!this.opened),this.toggle Class("iron-collapse-opened",this.opened),this._updateTransition(!1),this.notify Resize()},get _isDisplayed(){var i=this.getBoundingClientRect();for(var t in i)i f(0!==i[t])return!0;return!1},_calcSize:function(){return this.getBoundingClient Rect()[this.dimension]+"px"}})</script> <script>Polymer.IronMenubarBehaviorImpl= {hostAttributes:{role:"menubar"},keyBindings:{left:"_onLeftKey",right:"_onRightK ey"},_onUpKey:function(e){this.focusedItem.click(),e.detail.keyboardEvent.preven tDefault()},_onDownKey:function(e){this.focusedItem.click(),e.detail.keyboardEve nt.preventDefault()},get _isRTL(){return"rtl"===window.getComputedStyle(this).di rection},_onLeftKey:function(e){this._isRTL?this._focusNext():this._focusPreviou s(),e.detail.keyboardEvent.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._focusWithKeyboardEvent(e)}},Polymer.IronMenubarBehavior=[Polymer.IronM enuBehavior,Polymer.IronMenubarBehaviorImpl]</script> <iron-iconset-svg name="pa per-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.58 4.59L10 18l6-6z"></path></g> </defs></svg> </iron-iconse t-svg> <dom-module id="paper-tab" assetpath="/res/imp/bower_components/paper-tab s/"> <template> <style>:host{@apply(--layout-inline);@apply(--layout-center);@ap ply(--layout-center-justified);@apply(--layout-flex-auto);position:relative;padd ing:0 12px;overflow:hidden;cursor:pointer;vertical-align:middle;@apply(--paper-f ont-common-base);@apply(--paper-tab)}:host(:focus){outline:0}:host([link]){paddi ng:0}.tab-content{height:100%;transform:translateZ(0);-webkit-transform:translat eZ(0);transition:opacity .1s cubic-bezier(.4,0,1,1);@apply(--layout-horizontal); @apply(--layout-center-center);@apply(--layout-flex-auto);@apply(--paper-tab-con tent)}:host(:not(.iron-selected))>.tab-content{opacity:.8;@apply(--paper-tab-con tent-unselected)}:host(:focus) .tab-content{opacity:1;font-weight:700}paper-ripp le{color:var(--paper-tab-ink,--paper-yellow-a100)}.tab-content>::content>a{@appl y(--layout-flex-auto);height:100%}</style> <div class="tab-content"> <content></ content> </div> </template> <script>Polymer({is:"paper-tab",behaviors:[Polymer.I ronControlState,Polymer.IronButtonState,Polymer.PaperRippleBehavior],properties: {link:{type:Boolean,value:!1,reflectToAttribute:!0}},hostAttributes:{role:"tab"} ,listeners:{down:"_updateNoink",tap:"_onTap"},attached:function(){this._updateNo ink()},get _parentNoink(){var t=Polymer.dom(this).parentNode;return!!t&&!!t.noin k},_updateNoink:function(){this.noink=!!this.noink||!!this._parentNoink},_onTap: function(t){if(this.link){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);@apply(--layout-center);height:48px;font-size:14px;font-weight :500;overflow:hidden;-moz-user-select:none;-ms-user-select:none;-webkit-user-sel ect:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-tap-hi ghlight-color:transparent;@apply(--paper-tabs)}:host-context([dir=rtl]){@apply(- -layout-horizontal-reverse)}#tabsContainer{position:relative;height:100%;white-s pace:nowrap;overflow:hidden;@apply(--layout-flex-auto)}#tabsContent{height:100%; -moz-flex-basis:auto;-ms-flex-basis:auto;flex-basis:auto}#tabsContent.scrollable {position:absolute;white-space:nowrap}#tabsContent.scrollable.fit-container,#tab sContent:not(.scrollable){@apply(--layout-horizontal)}#tabsContent.scrollable.fi t-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-vis ible{opacity:0;cursor:default}paper-icon-button{width:48px;height:48px;padding:1 2px;margin:0 4px}#selectionBar{position:absolute;height:2px;bottom:0;left:0;righ t:0;background-color:var(--paper-tabs-selection-bar-color,--paper-yellow-a100);- webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:left cente r;transform-origin:left center;transition:-webkit-transform;transition:transform ;@apply(--paper-tabs-selection-bar)}#selectionBar.align-bottom{top:0;bottom:auto }#selectionBar.expand{transition-duration:.15s;transition-timing-function:cubic- bezier(.4,0,1,1)}#selectionBar.contract{transition-duration:.18s;transition-timi ng-function:cubic-bezier(0,0,.2,1)}#tabsContent>::content>:not(#selectionBar){he ight:100%}</style> <paper-icon-button icon="paper-tabs:chevron-left" class$="[[_ computeScrollButtonClass(_leftHidden, scrollable, hideScrollButtons)]]" on-up="_ onScrollButtonUp" on-down="_onLeftScrollButtonDown" tabindex="-1"></paper-icon-b utton> <div id="tabsContainer" on-track="_scroll" on-down="_down"> <div id="tabs Content" class$="[[_computeTabsContentClass(scrollable, fitContainer)]]"> <div i d="selectionBar" class$="[[_computeSelectionBarClass(noBar, alignBottom)]]" on-t ransitionend="_onBarTransitionEnd"></div> <content select="*"></content> </div> </div> <paper-icon-button icon="paper-tabs:chevron-right" class$="[[_computeScro llButtonClass(_rightHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollBu ttonUp" on-down="_onRightScrollButtonDown" tabindex="-1"></paper-icon-button> </ template> <script>Polymer({is:"paper-tabs",behaviors:[Polymer.IronResizableBehav ior,Polymer.IronMenubarBehavior],properties:{noink:{type:Boolean,value:!1,observ er:"_noinkChanged"},noBar:{type:Boolean,value:!1},noSlide:{type:Boolean,value:!1 },scrollable:{type:Boolean,value:!1},fitContainer:{type:Boolean,value:!1},disabl eDrag:{type:Boolean,value:!1},hideScrollButtons:{type:Boolean,value:!1},alignBot tom:{type:Boolean,value:!1},selectable:{type:String,value:"paper-tab"},autoselec t:{type:Boolean,value:!1},autoselectDelay:{type:Number,value:0},_step:{type:Numb er,value:10},_holdDelay:{type:Number,value:1},_leftHidden:{type:Boolean,value:!1 },_rightHidden:{type:Boolean,value:!1},_previousTab:{type:Object}},hostAttribute s:{role:"tablist"},listeners:{"iron-resize":"_onTabSizingChanged","iron-items-ch anged":"_onTabSizingChanged","iron-select":"_onIronSelect","iron-deselect":"_onI ronDeselect"},keyBindings:{"left:keyup right:keyup":"_onArrowKeyup"},created:fun ction(){this._holdJob=null,this._pendingActivationItem=void 0,this._pendingActiv ationTimeout=void 0,this._bindDelayedActivationHandler=this._delayedActivationHa ndler.bind(this),this.addEventListener("blur",this._onBlurCapture.bind(this),!0) },ready:function(){this.setScrollDirection("y",this.$.tabsContainer)},detached:f unction(){this._cancelPendingActivation()},_noinkChanged:function(t){var e=Polym er.dom(this).querySelectorAll("paper-tab");e.forEach(t?this._setNoinkAttribute:t his._removeNoinkAttribute)},_setNoinkAttribute:function(t){t.setAttribute("noink ","")},_removeNoinkAttribute:function(t){t.removeAttribute("noink")},_computeScr ollButtonClass:function(t,e,i){return!e||i?"hidden":t?"not-visible":""},_compute TabsContentClass:function(t,e){return t?"scrollable"+(e?" fit-container":""):" f it-container"},_computeSelectionBarClass:function(t,e){return t?"hidden":e?"alig n-bottom":""},_onTabSizingChanged:function(){this.debounce("_onTabSizingChanged" ,function(){this._scroll(),this._tabChanged(this.selectedItem)},10)},_onIronSele ct:function(t){this._tabChanged(t.detail.item,this._previousTab),this._previousT ab=t.detail.item,this.cancelDebouncer("tab-changed")},_onIronDeselect:function(t ){this.debounce("tab-changed",function(){this._tabChanged(null,this._previousTab ),this._previousTab=null},1)},_activateHandler:function(){this._cancelPendingAct ivation(),Polymer.IronMenuBehaviorImpl._activateHandler.apply(this,arguments)},_ scheduleActivation:function(t,e){this._pendingActivationItem=t,this._pendingActi vationTimeout=this.async(this._bindDelayedActivationHandler,e)},_delayedActivati onHandler:function(){var t=this._pendingActivationItem;this._pendingActivationIt em=void 0,this._pendingActivationTimeout=void 0,t.fire(this.activateEvent,null,{ bubbles:!0,cancelable:!0})},_cancelPendingActivation:function(){void 0!==this._p endingActivationTimeout&&(this.cancelAsync(this._pendingActivationTimeout),this. _pendingActivationItem=void 0,this._pendingActivationTimeout=void 0)},_onArrowKe yup:function(t){this.autoselect&&this._scheduleActivation(this.focusedItem,this. autoselectDelay)},_onBlurCapture:function(t){t.target===this._pendingActivationI tem&&this._cancelPendingActivation()},get _tabContainerScrollSize(){return Math. max(0,this.$.tabsContainer.scrollWidth-this.$.tabsContainer.offsetWidth)},_scrol l:function(t,e){if(this.scrollable){var i=e&&-e.ddx||0;this._affectScroll(i)}},_ down:function(t){this.async(function(){this._defaultFocusAsync&&(this.cancelAsyn c(this._defaultFocusAsync),this._defaultFocusAsync=null)},1)},_affectScroll:func tion(t){this.$.tabsContainer.scrollLeft+=t;var e=this.$.tabsContainer.scrollLeft ;this._leftHidden=0===e,this._rightHidden=e===this._tabContainerScrollSize},_onL eftScrollButtonDown:function(){this._scrollToLeft(),this._holdJob=setInterval(th is._scrollToLeft.bind(this),this._holdDelay)},_onRightScrollButtonDown:function( ){this._scrollToRight(),this._holdJob=setInterval(this._scrollToRight.bind(this) ,this._holdDelay)},_onScrollButtonUp:function(){clearInterval(this._holdJob),thi s._holdJob=null},_scrollToLeft:function(){this._affectScroll(-this._step)},_scro llToRight:function(){this._affectScroll(this._step)},_tabChanged:function(t,e){i f(!t)return this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.c lassList.remove("contract"),void this._positionBar(0,0);var i=this.$.tabsContent .getBoundingClientRect(),n=i.width,o=t.getBoundingClientRect(),s=o.left-i.left;i f(this._pos={width:this._calcPercent(o.width,n),left:this._calcPercent(s,n)},thi s.noSlide||null==e)return 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;this.$.selectionBar.classList.add("expand");var h=l<c,d=thi s._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,t his._calcPercent(s,n)+r),this.scrollable&&this._scrollToSelectedIfNeeded(o.width ,s)},_scrollToSelectedIfNeeded:function(t,e){var i=e-this.$.tabsContainer.scroll Left;i<0?this.$.tabsContainer.scrollLeft+=i:(i+=t-this.$.tabsContainer.offsetWid th,i>0&&(this.$.tabsContainer.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,th is.transform("translateX("+e+"%) scaleX("+t/100+")",this.$.selectionBar)},_onBar TransitionEnd: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-modul e> <dom-module id="single-page-style" assetpath="/res/imp/common/"> <template> < style>.header{max-width:800px}.title{font-size:1.5em;font-weight:700;margin:5px} .id_input{margin-left:5px;--paper-input-container-input:{font-size:2em};}.refres h{max-width:40px;max-height:40px;width:initial;height:initial}button{min-width:4 em;max-height:55px}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-ta b{background-color:#A6CEE3;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>!fun ction(){SwarmingBehaviors.BotPageBehavior=[SwarmingBehaviors.CommonBehavior,{}]} ()</script> <dom-module id="bot-page-data" assetpath="/res/imp/botpage/"> <scrip t>!function(){function t(t){if(!s){var e=t.toString();s=e.substring(e.indexOf("( "))}return t.toLocaleString()+" "+s}var e,s,i=400,n=["first_seen_ts","last_seen_ ts","lease_expiration_ts"],a=["started_ts","completed_ts","abandoned_ts","modifi ed_ts"];Polymer({is:"bot-page-data",behaviors:[SwarmingBehaviors.BotPageBehavior ],properties:{auth_headers:{type:Object},bot_id:{type:String},busy:{type:Boolean ,computed:"_or(_busy1)",notify:!0},bot:{type:Object,computed:"_parseBot(_bot)",n otify:!0},bot_exists:{type:Boolean,value:!0,notify:!0},_busy1:{type:Boolean,valu e:!1},_bot:{type:Object},_events:{type:Object},_tasks:{type:Object}},observers:[ "request(auth_headers,bot_id)"],request:function(){this.bot_id&&this.auth_header s&&(e&&this.cancelAsync(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_he aders);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.response)}.bind(this)),this.fire("reload",{id:this.bot_id})}, i))},_parseBot:function(e){if(!e)return{};e.state=e.state||"{}",e.state=JSON.par se(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.s ort(function(t,e){return e.mb-t.mb})}else e.disks=[{id:"unknown",mb:0}];return e .dimensions=e.dimensions||[],e.dimensions.forEach(function(t){swarming.alias.DIM ENSIONS_WITH_ALIASES.indexOf(t.key)!==-1&&t.value.forEach(function(e,s){t.value[ s]=swarming.alias.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.forEac h(function(s){e[s]&&(e[s]=new Date(e[s]),e["human_"+s]=t(e[s]))}),e.duration)e.h uman_duration=this._humanDuration(e.duration);else{var s=e.completed_ts||e.aband oned_ts||e.modified_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","COMP LETED"===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-mo dule> <dom-module id="bot-page-summary" assetpath="/res/imp/botpage/"> <template > <style include="single-page-style">.wrapper{display:table;margin-left:auto;mar gin-bottom:10px;margin-right:5px}paper-checkbox{margin-left:5px}.thick{border-to p-style:solid}</style> <url-param name="show_full_names" value="{{_show_full_nam es}}"> </url-param> <url-param name="show_all_tasks" value="{{_show_all_tasks}}" > </url-param> <url-param name="sort_stats" value="{{_sortstr}}" default_value=" total:desc"> </url-param> <div class="wrapper"> <table> <thead on-sort_change="_ sortChange"> <tr> <th> <span>Name</span> <sort-toggle name="full_name" current=" [[_sort]]"> </sort-toggle> </th> <th> <span>Total</span> <sort-toggle name="tota l" current="[[_sort]]"> </sort-toggle> </th> <th> <span>Success</span> <sort-tog gle name="success" current="[[_sort]]"> </sort-toggle> </th> <th> <span>Failed</ span> <sort-toggle name="failed" current="[[_sort]]"> </sort-toggle> </th> <th> <span>Died</span> <sort-toggle name="bot_died" current="[[_sort]]"> </sort-toggl e> </th> <th> <span>Average Duration</span> <sort-toggle name="avg_duration" cur rent="[[_sort]]"> </sort-toggle> </th> <th> <span>Total Duration</span> <sort-to ggle name="total_time" current="[[_sort]]"> </sort-toggle> </th> <th>Percent of Total</th> </tr> </thead> <tbody> <template is="dom-repeat" items="[[_tasksToSho w]]" as="task"> <tr> <td hidden$="[[_truthy(_show_full_names)]]" title="[[task.f ull_name]]">[[task.name]]</td> <td hidden$="[[_not(_show_full_names)]]" title="[ [task.full_name]]">[[task.full_name]]</td> <td>[[task.total]]</td> <td>[[task.su ccess]]</td> <td>[[task.failed]]</td> <td>[[task.bot_died]]</td> <td>[[_humanDur ation(task.avg_duration)]]</td> <td>[[_humanDuration(task.total_time)]]</td> <td >[[task.total_time_percent]]%</td> </tr> </template> </tbody> <tbody><tr class=" thick"> <td>Total</td> <td>[[_totalStats.total]]</td> <td>[[_totalStats.success] ]</td> <td>[[_totalStats.failed]]</td> <td>[[_totalStats.bot_died]]</td> <td>[[_ humanDuration(_totalStats.avg_duration)]]</td> <td>[[_humanDuration(_totalStats. total_time)]]</td> <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 wit h a task."> Wall Time Utilization </th> </tr> </thead> <tbody> <tr> <td>[[_human Duration(_totalStats.wall_time)]]</td> <td>[[_totalStats.wall_time_utilization]] %</td> </tr> </tbody> </table> <paper-checkbox checked="{{_show_full_names}}"> S how Full Names </paper-checkbox> <paper-checkbox hidden$="[[_cannotExpand]]" che cked="{{_show_all_tasks}}"> Show All Tasks </paper-checkbox> </div> </div> </tem plate> <script>!function(){var t=15;Polymer({is:"bot-page-summary",behaviors:[Sw armingBehaviors.BotPageBehavior],properties:{tasks:{type:Array},_cannotExpand:{t ype:Boolean,computed:"_countTasks(_taskStats.*)"},_show_all_tasks:{type:Boolean} ,_show_full_names:{type:Boolean},_sortstr:{type:String},_sort:{type:Object,compu ted:"_makeSortObject(_sortstr)"},_taskStats:{type:Array},_tasksToShow:{type:Arra y,computed:"_sortAndLimitTasks(_taskStats.*,_sort.*,_show_all_tasks)"},_totalSta ts:{type:Object}},observers:["_aggregate(tasks.*)"],_aggregate:function(){if(thi s.tasks&&this.tasks.length){var t=new Date(1e3*sk.now()),a={},e={total:this.task s.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.trim(),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_ti me:0}),a[s].total++,t.failure?(e.failed++,a[s].failed++):t.internal_failure?(e.b ot_died++,a[s].bot_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_u tilization=(100*e.total_time/e.wall_time).toFixed(1),this.set("_totalStats",e);v ar 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),minL ength:6});o.build(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._sort.direction&&(e=-1),e*swarming.naturalCompare(t[this._sort.nam e],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",direction:"asc"}:{name:a[0],direction:a[1]}}},_sortAndLimitTasks:func tion(){swarming.stableSort(this._taskStats,this._compare.bind(this));var a=this. _taskStats.length;return!this._show_all_tasks&&this._taskStats.length>t&&(a=t),t his._taskStats.slice(0,a)},_sortChange:function(t){t&&t.detail&&t.detail.name&&( t.preventDefault(),t.stopPropagation(),this.set("_sortstr",t.detail.name+":"+t.d etail.direction))}})}()</script> </dom-module><dom-module id="bot-page" assetpat h="/res/imp/botpage/"> <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:mon ospace;margin-bottom:10px}.events_table,.tasks_table{border:3px solid #1F78B4}.o ld_version{background-color:#ffd}.stats{min-width:700px;flex-grow:2}#collapse{ma x-width:700px}.cloud{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;paddi ng:3px}paper-dialog{border-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-p aram name="show_state" value="{{_show_state}}"> </url-param> <swarming-app clien t_id="[[client_id]]" auth_headers="{{_auth_headers}}" permissions="{{_permission s}}" 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 see anything useful.</h2> <div hidden$="[[_not(_signed_in)] ]"> <bot-page-data id="data" auth_headers="[[_auth_headers]]" bot_id="[[bot_id]] " bot="{{_bot}}" bot_exists="{{_bot_exists}}" busy="{{_busy1}}" events="{{_event s}}" tasks="{{_tasks}}" on-reload="_clearAndReload"> </bot-page-data> <div class ="header horizontal layout"> <paper-input class="id_input" label="Bot id" value= "{{bot_id}}"></paper-input> <template is="dom-if" if="[[_ccLink(_bot)]]"> <div c lass="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_ex ists]]">Bot not found.</h2> <div hidden$="[[_not(_bot_exists)]]"> <div class="ho rizontal wrap layout"> <div class="flex"> <table> <tbody><tr class$="[[_isDead(_ bot)]]" title="Last time the bot contacted the server."> <td>Last Seen</td> <td title="[[_bot.human_last_seen_ts]]"> [[_timeDiffExact(_bot.last_seen_ts)]] ago</ td> <td> <template is="dom-if" if="[[_canShutdown(_bot,_permissions)]]"> <button class="raised" on-click="_promptShutdown"> Shut Down Gracefully </button> </tem plate> <template is="dom-if" if="[[_canDelete(_bot,_permissions)]]"> <button cla ss="raised" on-click="_promptDelete"> Delete </button> </template> </td> </tr> < template is="dom-if" if="[[_bot.quarantined]]"> <tr class="quarantined"> <td>Qua rantined</td> <td colspan="2" class="message">[[_quarantineMessage(_bot)]]</td> </tr> </template> <tr> <td>Current Task</td> <td> <a target="_blank" rel="noopen er" href$="[[_taskLink(_bot.task_id)]]"> [[_task(_bot)]] </a> </td> <td> </td> < /tr> <tr> <td rowspan$="[[_numRows(_bot.dimensions)]]"> <a href$="[[_siblingBots Link(_bot.dimensions)]]" title="The list of bots that also matches these dimensi ons (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 connecti on from."> <td>External IP</td> <td><a href$="[[_bot.external_ip]]">[[_bot.exter nal_ip]]</a></td> <td></td> </tr> <tr class$="[[_classVersion(_server_details.bo t_version,_bot.version)]]" title="Version is based on the content of swarming_bo t.zip which is the swarming bot code. The bot won't update if quarantined, dead, or busy."> <td>Bot Version</td> <td>[[_shorten(_bot.version,'8')]]</td> <td></t d> </tr> <tr title="The version the server expects the bot to be using."> <td>Ex pected 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 serve r."> <td>First seen</td> <td title="[[_bot.human_first_seen_ts]]"> [[_timeDiffAp prox(_bot.first_seen_ts)]] ago </td> <td></td> </tr> <tr title="How the bot is a uthenticated by the server."> <td>Authenticated as</td> <td colspan="2">[[_bot.a uthenticated_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,_se rver_details.machine_provider_template)]]"> [[_bot.lease_id]] </a> </td> </tr> < tr> <td>Machine Provider Lease Expires</td> <td colspan="2">[[_bot.human_lease_e xpiration_ts]]</td> </tr> </template> </tbody></table> <span class="title">State </span> <template is="dom-if" if="[[_not(_show_state)]]"> <button on-click="_tog gleState"> <iron-icon icon="icons:add-circle-outline"></iron-icon> </button> </t emplate> <template is="dom-if" if="[[_show_state]]"> <button on-click="_toggleSt ate"> <iron-icon icon="icons:remove-circle-outline"></iron-icon> </button> </tem plate> <iron-collapse id="collapse" opened="[[_show_state]]"> <div class="bot_st ate">[[_prettyPrint(_bot.state)]]</div> </iron-collapse> </div> <div class="stat s flex"> <bot-page-summary tasks="[[_tasks]]"> </bot-page-summary> </div> </div> <div class="tabs"> <paper-tabs selected="{{_selected}}" no-bar=""> <paper-tab>T asks</paper-tab> <paper-tab>Events</paper-tab> </paper-tabs> <template is="dom-i f" if="[[_showEvents]]"> <paper-checkbox checked="{{_show_all}}"> Show all event s </paper-checkbox> </template> </div> <template is="dom-if" if="[[_not(_showEve nts)]]"> <table class="tasks_table"> <thead> <tr> <th>Task</th> <th>Started</th> <th>Duration</th> <th>Result</th> </tr> </thead> <tbody> <template is="dom-repe at" items="{{_tasks}}" as="task"> <tr class$="[[_taskClass(task)]]"> <td> <a tar get="_blank" rel="noopener" href$="[[_taskLink(task.task_id)]]"> [[task.name]] < /a> </td> <td>[[task.human_started_ts]]</td> <td title="[[task.human_completed_t s]]">[[task.human_duration]]</td> <td>[[task.state]]</td> </tr> </template> </tb ody> </table> </template> <template is="dom-if" if="[[_showEvents]]"> <table cla ss="events_table"> <thead> <tr> <th>Message</th> <th>Type</th> <th>Timestamp</th > <th>Task ID</th> <th>Version</th> </tr> </thead> <tbody> <template is="dom-rep eat" items="{{_eventList(_show_all,_events.*)}}" as="event"> <tr> <td class="mes sage">[[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_details.bot _version,event.version)]]"> [[_shorten(event.version,'8')]] </td> </tr> </templa te> </tbody> </table> </template> <pageable-data id="page_tasks" hidden$="[[_sho wEvents]]" busy="{{_busy2}}" label="Show more tasks" output="{{_tasks}}" parse=" [[_parseTasks]]"> </pageable-data> <pageable-data id="page_events" hidden$="[[_n ot(_showEvents)]]" busy="{{_busy3}}" label="Show more events" output="{{_events} }" parse="[[_parseEvents]]"> </pageable-data> </div> </swarming-app> <paper-dial og id="prompt" modal="" on-iron-overlay-closed="_promptClosed"> <h2>Are you sure ?</h2> <div>Are you sure you want to [[_dialogPrompt]]?</div> <div class="button s"> <paper-button dialog-dismiss="" autofocus="">No</paper-button> <paper-button dialog-confirm="">Yes</paper-button> </div> </paper-dialog> </template> <script > (function(){
781 785
782 Polymer({ 786 Polymer({
783 is: 'bot-page', 787 is: 'bot-page',
784 788
785 behaviors: [ 789 behaviors: [
786 SwarmingBehaviors.BotPageBehavior, 790 SwarmingBehaviors.BotPageBehavior,
787 ], 791 ],
788 792
789 properties: { 793 properties: {
790 bot_id: { 794 bot_id: {
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
1018 } 1022 }
1019 return ""; 1023 return "";
1020 }, 1024 },
1021 1025
1022 _toggleState: function() { 1026 _toggleState: function() {
1023 this.set("_show_state", !this._show_state); 1027 this.set("_show_state", !this._show_state);
1024 } 1028 }
1025 1029
1026 }); 1030 });
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> <t d class$="[[_stateClass(_result)]]">[[state(_result)]]</td> </tr> <tr> <td>Creat ed</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> </ template> <template is="dom-if" if="[[_wasNotPickedUp(_result)]]"> <tr> <td>Expi res</td> <td>[[_expires(_request)]]</td> </tr> </template> <template is="dom-if" if="[[_result.human_completed_ts]]"> <tr> <td>Completed</td> <td title$="[[_res ult.completed_ts]]">[[_result.human_completed_ts]]</td> </tr> </template> <templ ate is="dom-if" if="[[_result.human_abandoned_ts]]"> <tr> <td>Abandoned</td> <td title$="[[_result.abandoned_ts]]">[[_result.human_abandoned_ts]]</td> </tr> </t emplate> <tr> <td>Last Updated</td> <td title$="[[_result.modified_ts]]">[[_resu lt.human_modified_ts]]</td> </tr> <template is="dom-if" if="[[_result.deduped_fr om]]"> <tr> <td><b>Deduped from</b></td> <td> <a href$="[[_taskLink(_result.dedu ped_from)]]"> [[_result.deduped_from]] </a> </td> </tr> </template> <tr> <td>Pen ding Time</td> <td>[[_pending(_result)]]</td> </tr> <tr> <td>Duration</td> <td>[ [_result.human_duration]]</td> </tr> <tr> <td>Priority</td> <td>[[_request.prior ity]]</td> </tr> <tr> <td>User</td> <td>[[_request.user]]</td> </tr> <tr> <td>Au thenticated</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.p roperties.secret_bytes]]"> <tr> <td>Secret Bytes</td> <td>[[_request.properties. secret_bytes]]</td> </tr> </template> <template is="dom-if" if="[[_request.paren t_task_id]]"> <tr> <td>Parent Task</td> <td> <a href$="[[_taskLink(_request.pare nt_task_id)]]">[[_request.parent_task_id]]</a> </td> </tr> </template> <tr> <td rowspan$="[[_rowspan(_request.properties.dimensions)]]"> <a title="The list of b ots that matches the list of dimensions" href$="[[_botListLink(_request.properti es.dimensions)]]"> Requested Dimensions </a> </td> </tr> <template is="dom-repea t" items="{{_request.properties.dimensions}}" as="dimension"> <tr> <td><b>[[dime nsion.key]]:</b> [[_alias(dimension)]]</td> </tr> </template> <tr> <td>Isolated Inputs</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(_req uest.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-ico n 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> </tbody> <tbody id="more_detail s" hidden$="[[!_request_detail]]"> <tr> <td>Extra Args</td> <td class="code brea k-all">[[_extraArgs(_request)]]</td> </tr> <tr> <td>Command</td> <td class="code break-all">[[_command(_request)]]</td> </tr> <tr> <td>Idempotent</td> <td>[[_re quest.properties.idempotent]]</td> </tr> <tr> <td rowspan$="[[_rowspan(_request. tags)]]">Tags</td> </tr> <template is="dom-repeat" items="{{_request.tags}}" as= "tag"> <tr> <td class="break-all">[[tag]]</td> </tr> </template> <tr> <td>Execut ion timeout</td> <td>[[_humanDuration(_request.properties.execution_timeout_secs )]]</td> </tr> <tr> <td>I/O timeout</td> <td>[[_humanDuration(_request.propertie s.io_timeout_secs)]]</td> </tr> <tr> <td>Grace period</td> <td>[[_humanDuration( _request.properties.grace_period_secs)]]</td> </tr> <tr> <td>CIPD server</td> <t d> <a href$="[[_request.properties.cipd_input.server]]"> [[_request.properties.c ipd_input.server]] </a> </td> </tr> <tr> <td>CIPD version</td> <td class="break- all">[[_request.properties.cipd_input.client_package.version]]</td> </tr> <templ ate 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(_request.properties.cipd_input)]]"> <td rowspan$="[[_cipdRowspa n(_request,_result)]]">CIPD packages</td> </tr> <template is="dom-repeat" items= "[[_cipdPackages(_request,_result)]]" as="cipd"> <tr> <td>[[cipd.path]]/</td> </ tr> <tr> <td class="break-all"> <span class="cipd-header">Requested: </span>[[ci pd.requested]] </td> </tr> <tr hidden$="[[!_hasActualCIPDPackages(_result)]]"> < td class="break-all"> <span class="cipd-header">Actual: </span>[[cipd.actual]] < /td> </tr> </template> <tr hidden$="[[_empty(_request.properties.caches)]]"> <td rowspan$="[[_rowspan(_request.properties.caches)]]">Named caches</td> </tr> <te mplate is="dom-repeat" items="[[_request.properties.caches]]" as="cache"> <tr> < td><span>[[cache.name]]</span>:<span>[[cache.path]]</span></td> </tr> </template > </tbody> </table> <div class="title" hidden$="[[_not(_task_exists)]]">Task Exe cution</div> <template is="dom-if" if="[[_wasPickedUp(_result)]]"> <table hidden $="[[_not(_task_exists)]]"> <tbody><tr> <td>Bot assigned to task</td> <td><a hre f$="[[_botLink(_result.bot_id)]]">[[_result.bot_id]]</a></td> </tr> <tr> <td row span$="[[_rowspan(_result.bot_dimensions)]]"> <a>Bot Dimensions</a> </td> </tr> <template is="dom-repeat" items="[[_result.bot_dimensions]]" as="dimension"> <tr > <td><b>[[dimension.key]]:</b> [[_alias(dimension)]]</td> </tr> </template> <tr > <td>Exit code</td> <td>[[_result.exit_code]]</td> </tr> <tr> <td>Try number</t d> <td>[[_result.try_number]]</td> </tr> <tr> <td>Failure</td> <td class$="[[_fa ilureClass(_result.failure)]]">[[_result.failure]]</td> </tr> <tr> <td>Internal Failure</td> <td class$="[[_internalClass(_result.internal_failure)]]">[[_result .internal_failure]]</td> </tr> <tr> <td>Isolated Outputs</td> <td> <a href$="[[_ isolateLink(_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> </template> <template is="dom-if" if="[[_wasNotPickedUp(_result)]]"> This space left blank until a bot is assigned to the task. </template> <template is="dom-i f" if="[[_result.performance_stats]]"> <div class="title">Performance Stats</div > <table> <tbody><tr> <td title="This includes time taken to download inputs, is olate outputs, and setup CIPD">Total Overhead</td> <td>[[_humanDuration(_result. performance_stats.bot_overhead)]]</td> </tr> <tr> <td>Downloading Inputs From Is olate</td> <td>[[_humanDuration(_result.performance_stats.isolated_download.dura tion)]]</td> </tr> <tr> <td>Uploading Outputs To Isolate</td> <td>[[_humanDurati on(_result.performance_stats.isolated_upload.duration)]]</td> </tr> <tr hidden$= "[[!_result.performance_stats.isolated_download.initial_size]]"> <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> 1031 })(); </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> <t d class$="[[_stateClass(_result)]]">[[state(_result)]]</td> </tr> <tr> <td>Creat ed</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> </ template> <template is="dom-if" if="[[_wasNotPickedUp(_result)]]"> <tr> <td>Expi res</td> <td>[[_expires(_request)]]</td> </tr> </template> <template is="dom-if" if="[[_result.human_completed_ts]]"> <tr> <td>Completed</td> <td title$="[[_res ult.completed_ts]]">[[_result.human_completed_ts]]</td> </tr> </template> <templ ate is="dom-if" if="[[_result.human_abandoned_ts]]"> <tr> <td>Abandoned</td> <td title$="[[_result.abandoned_ts]]">[[_result.human_abandoned_ts]]</td> </tr> </t emplate> <tr> <td>Last Updated</td> <td title$="[[_result.modified_ts]]">[[_resu lt.human_modified_ts]]</td> </tr> <template is="dom-if" if="[[_result.deduped_fr om]]"> <tr> <td><b>Deduped from</b></td> <td> <a href$="[[_taskLink(_result.dedu ped_from)]]"> [[_result.deduped_from]] </a> </td> </tr> </template> <tr> <td>Pen ding Time</td> <td>[[_pending(_result)]]</td> </tr> <tr> <td>Duration</td> <td>[ [_result.human_duration]]</td> </tr> <tr> <td>Priority</td> <td>[[_request.prior ity]]</td> </tr> <tr> <td>User</td> <td>[[_request.user]]</td> </tr> <tr> <td>Au thenticated</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.p roperties.secret_bytes]]"> <tr> <td>Secret Bytes</td> <td>[[_request.properties. secret_bytes]]</td> </tr> </template> <template is="dom-if" if="[[_request.paren t_task_id]]"> <tr> <td>Parent Task</td> <td> <a href$="[[_taskLink(_request.pare nt_task_id)]]">[[_request.parent_task_id]]</a> </td> </tr> </template> <tr> <td rowspan$="[[_rowspan(_request.properties.dimensions)]]"> <a title="The list of b ots that matches the list of dimensions" href$="[[_botListLink(_request.properti es.dimensions)]]"> Requested Dimensions </a> </td> </tr> <template is="dom-repea t" items="{{_request.properties.dimensions}}" as="dimension"> <tr> <td><b>[[dime nsion.key]]:</b> [[_alias(dimension)]]</td> </tr> </template> <tr> <td>Isolated Inputs</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(_req uest.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-ico n 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> </tbody> <tbody id="more_detail s" hidden$="[[!_request_detail]]"> <tr> <td>Extra Args</td> <td class="code brea k-all">[[_extraArgs(_request)]]</td> </tr> <tr> <td>Command</td> <td class="code break-all">[[_command(_request)]]</td> </tr> <tr> <td>Idempotent</td> <td>[[_re quest.properties.idempotent]]</td> </tr> <tr> <td rowspan$="[[_rowspan(_request. tags)]]">Tags</td> </tr> <template is="dom-repeat" items="{{_request.tags}}" as= "tag"> <tr> <td class="break-all">[[tag]]</td> </tr> </template> <tr> <td>Execut ion timeout</td> <td>[[_humanDuration(_request.properties.execution_timeout_secs )]]</td> </tr> <tr> <td>I/O timeout</td> <td>[[_humanDuration(_request.propertie s.io_timeout_secs)]]</td> </tr> <tr> <td>Grace period</td> <td>[[_humanDuration( _request.properties.grace_period_secs)]]</td> </tr> <tr> <td>CIPD server</td> <t d> <a href$="[[_request.properties.cipd_input.server]]"> [[_request.properties.c ipd_input.server]] </a> </td> </tr> <tr> <td>CIPD version</td> <td class="break- all">[[_request.properties.cipd_input.client_package.version]]</td> </tr> <templ ate 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(_request.properties.cipd_input)]]"> <td rowspan$="[[_cipdRowspa n(_request,_result)]]">CIPD packages</td> </tr> <template is="dom-repeat" items= "[[_cipdPackages(_request,_result)]]" as="cipd"> <tr> <td>[[cipd.path]]/</td> </ tr> <tr> <td class="break-all"> <span class="cipd-header">Requested: </span>[[ci pd.requested]] </td> </tr> <tr hidden$="[[!_hasActualCIPDPackages(_result)]]"> < td class="break-all"> <span class="cipd-header">Actual: </span>[[cipd.actual]] < /td> </tr> </template> <tr hidden$="[[_empty(_request.properties.caches)]]"> <td rowspan$="[[_rowspan(_request.properties.caches)]]">Named caches</td> </tr> <te mplate is="dom-repeat" items="[[_request.properties.caches]]" as="cache"> <tr> < td><span>[[cache.name]]</span>:<span>[[cache.path]]</span></td> </tr> </template > </tbody> </table> <div class="title" hidden$="[[_not(_task_exists)]]">Task Exe cution</div> <template is="dom-if" if="[[_wasPickedUp(_result)]]"> <table hidden $="[[_not(_task_exists)]]"> <tbody><tr> <td>Bot assigned to task</td> <td><a hre f$="[[_botLink(_result.bot_id)]]">[[_result.bot_id]]</a></td> </tr> <tr> <td row span$="[[_rowspan(_result.bot_dimensions)]]"> <a>Bot Dimensions</a> </td> </tr> <template is="dom-repeat" items="[[_result.bot_dimensions]]" as="dimension"> <tr > <td><b>[[dimension.key]]:</b> [[_alias(dimension)]]</td> </tr> </template> <tr > <td>Exit code</td> <td>[[_result.exit_code]]</td> </tr> <tr> <td>Try number</t d> <td>[[_result.try_number]]</td> </tr> <tr> <td>Failure</td> <td class$="[[_fa ilureClass(_result.failure)]]">[[_result.failure]]</td> </tr> <tr> <td>Internal Failure</td> <td class$="[[_internalClass(_result.internal_failure)]]">[[_result .internal_failure]]</td> </tr> <tr> <td>Isolated Outputs</td> <td> <a href$="[[_ isolateLink(_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> </template> <template is="dom-if" if="[[_wasNotPickedUp(_result)]]"> This space left blank until a bot is assigned to the task. </template> <template is="dom-i f" if="[[_result.performance_stats]]"> <div class="title">Performance Stats</div > <table> <tbody><tr> <td title="This includes time taken to download inputs, is olate outputs, and setup CIPD">Total Overhead</td> <td>[[_humanDuration(_result. performance_stats.bot_overhead)]]</td> </tr> <tr> <td>Downloading Inputs From Is olate</td> <td>[[_humanDuration(_result.performance_stats.isolated_download.dura tion)]]</td> </tr> <tr> <td>Uploading Outputs To Isolate</td> <td>[[_humanDurati on(_result.performance_stats.isolated_upload.duration)]]</td> </tr> <tr hidden$= "[[!_result.performance_stats.isolated_download.initial_size]]"> <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>
OLDNEW
« no previous file with comments | « no previous file | appengine/swarming/ui/res/imp/botlist/bot-list.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698