EVOLUTION-MANAGER
Edit File: wit_tb_bin.html
<!doctype html><!-- @license Copyright 2019 The TensorFlow Authors. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <dom-module id="iron-meta"><template></template></dom-module> <dom-module id="iron-iconset-svg"><template></template></dom-module> <dom-module id="fade-in-animation"><template></template></dom-module> <dom-module id="paper-menu-grow-width-animation"><template></template></dom-module> <dom-module id="paper-menu-grow-height-animation"><template></template></dom-module> <dom-module id="paper-menu-shrink-width-animation"><template></template></dom-module> <dom-module id="paper-menu-shrink-height-animation"><template></template></dom-module> <dom-module id="fade-out-animation"><template></template></dom-module> <dom-module id="array-selector"><template></template></dom-module> <custom-style> <style is="custom-style"> [hidden] { display: none !important; } </style> </custom-style> <custom-style> <style is="custom-style"> html { --layout: { display: -ms-flexbox; display: -webkit-flex; display: flex; }; --layout-inline: { display: -ms-inline-flexbox; display: -webkit-inline-flex; display: inline-flex; }; --layout-horizontal: { @apply --layout; -ms-flex-direction: row; -webkit-flex-direction: row; flex-direction: row; }; --layout-horizontal-reverse: { @apply --layout; -ms-flex-direction: row-reverse; -webkit-flex-direction: row-reverse; flex-direction: row-reverse; }; --layout-vertical: { @apply --layout; -ms-flex-direction: column; -webkit-flex-direction: column; flex-direction: column; }; --layout-vertical-reverse: { @apply --layout; -ms-flex-direction: column-reverse; -webkit-flex-direction: column-reverse; flex-direction: column-reverse; }; --layout-wrap: { -ms-flex-wrap: wrap; -webkit-flex-wrap: wrap; flex-wrap: wrap; }; --layout-wrap-reverse: { -ms-flex-wrap: wrap-reverse; -webkit-flex-wrap: wrap-reverse; flex-wrap: wrap-reverse; }; --layout-flex-auto: { -ms-flex: 1 1 auto; -webkit-flex: 1 1 auto; flex: 1 1 auto; }; --layout-flex-none: { -ms-flex: none; -webkit-flex: none; flex: none; }; --layout-flex: { -ms-flex: 1 1 0.000000001px; -webkit-flex: 1; flex: 1; -webkit-flex-basis: 0.000000001px; flex-basis: 0.000000001px; }; --layout-flex-2: { -ms-flex: 2; -webkit-flex: 2; flex: 2; }; --layout-flex-3: { -ms-flex: 3; -webkit-flex: 3; flex: 3; }; --layout-flex-4: { -ms-flex: 4; -webkit-flex: 4; flex: 4; }; --layout-flex-5: { -ms-flex: 5; -webkit-flex: 5; flex: 5; }; --layout-flex-6: { -ms-flex: 6; -webkit-flex: 6; flex: 6; }; --layout-flex-7: { -ms-flex: 7; -webkit-flex: 7; flex: 7; }; --layout-flex-8: { -ms-flex: 8; -webkit-flex: 8; flex: 8; }; --layout-flex-9: { -ms-flex: 9; -webkit-flex: 9; flex: 9; }; --layout-flex-10: { -ms-flex: 10; -webkit-flex: 10; flex: 10; }; --layout-flex-11: { -ms-flex: 11; -webkit-flex: 11; flex: 11; }; --layout-flex-12: { -ms-flex: 12; -webkit-flex: 12; flex: 12; }; /* alignment in cross axis */ --layout-start: { -ms-flex-align: start; -webkit-align-items: flex-start; align-items: flex-start; }; --layout-center: { -ms-flex-align: center; -webkit-align-items: center; align-items: center; }; --layout-end: { -ms-flex-align: end; -webkit-align-items: flex-end; align-items: flex-end; }; --layout-baseline: { -ms-flex-align: baseline; -webkit-align-items: baseline; align-items: baseline; }; /* alignment in main axis */ --layout-start-justified: { -ms-flex-pack: start; -webkit-justify-content: flex-start; justify-content: flex-start; }; --layout-center-justified: { -ms-flex-pack: center; -webkit-justify-content: center; justify-content: center; }; --layout-end-justified: { -ms-flex-pack: end; -webkit-justify-content: flex-end; justify-content: flex-end; }; --layout-around-justified: { -ms-flex-pack: distribute; -webkit-justify-content: space-around; justify-content: space-around; }; --layout-justified: { -ms-flex-pack: justify; -webkit-justify-content: space-between; justify-content: space-between; }; --layout-center-center: { @apply --layout-center; @apply --layout-center-justified; }; /* self alignment */ --layout-self-start: { -ms-align-self: flex-start; -webkit-align-self: flex-start; align-self: flex-start; }; --layout-self-center: { -ms-align-self: center; -webkit-align-self: center; align-self: center; }; --layout-self-end: { -ms-align-self: flex-end; -webkit-align-self: flex-end; align-self: flex-end; }; --layout-self-stretch: { -ms-align-self: stretch; -webkit-align-self: stretch; align-self: stretch; }; --layout-self-baseline: { -ms-align-self: baseline; -webkit-align-self: baseline; align-self: baseline; }; /* multi-line alignment in main axis */ --layout-start-aligned: { -ms-flex-line-pack: start; /* IE10 */ -ms-align-content: flex-start; -webkit-align-content: flex-start; align-content: flex-start; }; --layout-end-aligned: { -ms-flex-line-pack: end; /* IE10 */ -ms-align-content: flex-end; -webkit-align-content: flex-end; align-content: flex-end; }; --layout-center-aligned: { -ms-flex-line-pack: center; /* IE10 */ -ms-align-content: center; -webkit-align-content: center; align-content: center; }; --layout-between-aligned: { -ms-flex-line-pack: justify; /* IE10 */ -ms-align-content: space-between; -webkit-align-content: space-between; align-content: space-between; }; --layout-around-aligned: { -ms-flex-line-pack: distribute; /* IE10 */ -ms-align-content: space-around; -webkit-align-content: space-around; align-content: space-around; }; /******************************* Other Layout *******************************/ --layout-block: { display: block; }; --layout-invisible: { visibility: hidden !important; }; --layout-relative: { position: relative; }; --layout-fit: { position: absolute; top: 0; right: 0; bottom: 0; left: 0; }; --layout-scroll: { -webkit-overflow-scrolling: touch; overflow: auto; }; --layout-fullbleed: { margin: 0; height: 100vh; }; /* fixed position */ --layout-fixed-top: { position: fixed; top: 0; left: 0; right: 0; }; --layout-fixed-right: { position: fixed; top: 0; right: 0; bottom: 0; }; --layout-fixed-bottom: { position: fixed; right: 0; bottom: 0; left: 0; }; --layout-fixed-left: { position: fixed; top: 0; bottom: 0; left: 0; }; } </style> </custom-style> <dom-module id="iron-icon"> <template> <style> :host { @apply --layout-inline; @apply --layout-center-center; position: relative; vertical-align: middle; fill: var(--iron-icon-fill-color, currentcolor); stroke: var(--iron-icon-stroke-color, none); width: var(--iron-icon-width, 24px); height: var(--iron-icon-height, 24px); @apply --iron-icon; } :host([hidden]) { display: none; } </style> </template> </dom-module> <iron-iconset-svg name="av" size="24"> <svg><defs> <g id="add-to-queue"><path d="M21 3H3c-1.11 0-2 .89-2 2v12c0 1.1.89 2 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5c0-1.11-.9-2-2-2zm0 14H3V5h18v12zm-5-7v2h-3v3h-2v-3H8v-2h3V7h2v3h3z" /></g> <g id="airplay"><path d="M6 22h12l-6-6zM21 3H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4v-2H3V5h18v12h-4v2h4c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" /></g> <g id="album"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 14.5c-2.49 0-4.5-2.01-4.5-4.5S9.51 7.5 12 7.5s4.5 2.01 4.5 4.5-2.01 4.5-4.5 4.5zm0-5.5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1z" /></g> <g id="art-track"><path d="M22 13h-8v-2h8v2zm0-6h-8v2h8V7zm-8 10h8v-2h-8v2zm-2-8v6c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V9c0-1.1.9-2 2-2h6c1.1 0 2 .9 2 2zm-1.5 6l-2.25-3-1.75 2.26-1.25-1.51L3.5 15h7z" /></g> <g id="av-timer"><path d="M11 17c0 .55.45 1 1 1s1-.45 1-1-.45-1-1-1-1 .45-1 1zm0-14v4h2V5.08c3.39.49 6 3.39 6 6.92 0 3.87-3.13 7-7 7s-7-3.13-7-7c0-1.68.59-3.22 1.58-4.42L12 13l1.41-1.41-6.8-6.8v.02C4.42 6.45 3 9.05 3 12c0 4.97 4.02 9 9 9 4.97 0 9-4.03 9-9s-4.03-9-9-9h-1zm7 9c0-.55-.45-1-1-1s-1 .45-1 1 .45 1 1 1 1-.45 1-1zM6 12c0 .55.45 1 1 1s1-.45 1-1-.45-1-1-1-1 .45-1 1z" /></g> <g id="branding-watermark"><path d="M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16h-9v-6h9v6z" /></g> <g id="call-to-action"><path d="M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3v-3h18v3z" /></g> <g id="closed-caption"><path d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 7H9.5v-.5h-2v3h2V13H11v1c0 .55-.45 1-1 1H7c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1zm7 0h-1.5v-.5h-2v3h2V13H18v1c0 .55-.45 1-1 1h-3c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1z" /></g> <g id="equalizer"><path d="M10 20h4V4h-4v16zm-6 0h4v-8H4v8zM16 9v11h4V9h-4z" /></g> <g id="explicit"><path d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-4 6h-4v2h4v2h-4v2h4v2H9V7h6v2z" /></g> <g id="fast-forward"><path d="M4 18l8.5-6L4 6v12zm9-12v12l8.5-6L13 6z" /></g> <g id="fast-rewind"><path d="M11 18V6l-8.5 6 8.5 6zm.5-6l8.5 6V6l-8.5 6z" /></g> <g id="featured-play-list"><path d="M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-9 8H3V9h9v2zm0-4H3V5h9v2z" /></g> <g id="featured-video"><path d="M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-9 9H3V5h9v7z" /></g> <g id="fiber-dvr"><path d="M17.5 10.5h2v1h-2zm-13 0h2v3h-2zM21 3H3c-1.11 0-2 .89-2 2v14c0 1.1.89 2 2 2h18c1.11 0 2-.9 2-2V5c0-1.11-.89-2-2-2zM8 13.5c0 .85-.65 1.5-1.5 1.5H3V9h3.5c.85 0 1.5.65 1.5 1.5v3zm4.62 1.5h-1.5L9.37 9h1.5l1 3.43 1-3.43h1.5l-1.75 6zM21 11.5c0 .6-.4 1.15-.9 1.4L21 15h-1.5l-.85-2H17.5v2H16V9h3.5c.85 0 1.5.65 1.5 1.5v1z" /></g> <g id="fiber-manual-record"><circle cx="12" cy="12" r="8" /></g> <g id="fiber-new"><path d="M20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zM8.5 15H7.3l-2.55-3.5V15H3.5V9h1.25l2.5 3.5V9H8.5v6zm5-4.74H11v1.12h2.5v1.26H11v1.11h2.5V15h-4V9h4v1.26zm7 3.74c0 .55-.45 1-1 1h-4c-.55 0-1-.45-1-1V9h1.25v4.51h1.13V9.99h1.25v3.51h1.12V9h1.25v5z" /></g> <g id="fiber-pin"><path d="M5.5 10.5h2v1h-2zM20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zM9 11.5c0 .85-.65 1.5-1.5 1.5h-2v2H4V9h3.5c.85 0 1.5.65 1.5 1.5v1zm3.5 3.5H11V9h1.5v6zm7.5 0h-1.2l-2.55-3.5V15H15V9h1.25l2.5 3.5V9H20v6z" /></g> <g id="fiber-smart-record"><g><circle cx="9" cy="12" r="8" /><path d="M17 4.26v2.09c2.33.82 4 3.04 4 5.65s-1.67 4.83-4 5.65v2.09c3.45-.89 6-4.01 6-7.74s-2.55-6.85-6-7.74z" /></g></g> <g id="forward-10"><path d="M4 13c0 4.4 3.6 8 8 8s8-3.6 8-8h-2c0 3.3-2.7 6-6 6s-6-2.7-6-6 2.7-6 6-6v4l5-5-5-5v4c-4.4 0-8 3.6-8 8zm6.8 3H10v-3.3L9 13v-.7l1.8-.6h.1V16zm4.3-1.8c0 .3 0 .6-.1.8l-.3.6s-.3.3-.5.3-.4.1-.6.1-.4 0-.6-.1-.3-.2-.5-.3-.2-.3-.3-.6-.1-.5-.1-.8v-.7c0-.3 0-.6.1-.8l.3-.6s.3-.3.5-.3.4-.1.6-.1.4 0 .6.1.3.2.5.3.2.3.3.6.1.5.1.8v.7zm-.8-.8v-.5s-.1-.2-.1-.3-.1-.1-.2-.2-.2-.1-.3-.1-.2 0-.3.1l-.2.2s-.1.2-.1.3v2s.1.2.1.3.1.1.2.2.2.1.3.1.2 0 .3-.1l.2-.2s.1-.2.1-.3v-1.5z" /></g> <g id="forward-30"><path d="M9.6 13.5h.4c.2 0 .4-.1.5-.2s.2-.2.2-.4v-.2s-.1-.1-.1-.2-.1-.1-.2-.1h-.5s-.1.1-.2.1-.1.1-.1.2v.2h-1c0-.2 0-.3.1-.5s.2-.3.3-.4.3-.2.4-.2.4-.1.5-.1c.2 0 .4 0 .6.1s.3.1.5.2.2.2.3.4.1.3.1.5v.3s-.1.2-.1.3-.1.2-.2.2-.2.1-.3.2c.2.1.4.2.5.4s.2.4.2.6c0 .2 0 .4-.1.5s-.2.3-.3.4-.3.2-.5.2-.4.1-.6.1c-.2 0-.4 0-.5-.1s-.3-.1-.5-.2-.2-.2-.3-.4-.1-.4-.1-.6h.8v.2s.1.1.1.2.1.1.2.1h.5s.1-.1.2-.1.1-.1.1-.2v-.5s-.1-.1-.1-.2-.1-.1-.2-.1h-.6v-.7zm5.7.7c0 .3 0 .6-.1.8l-.3.6s-.3.3-.5.3-.4.1-.6.1-.4 0-.6-.1-.3-.2-.5-.3-.2-.3-.3-.6-.1-.5-.1-.8v-.7c0-.3 0-.6.1-.8l.3-.6s.3-.3.5-.3.4-.1.6-.1.4 0 .6.1.3.2.5.3.2.3.3.6.1.5.1.8v.7zm-.9-.8v-.5s-.1-.2-.1-.3-.1-.1-.2-.2-.2-.1-.3-.1-.2 0-.3.1l-.2.2s-.1.2-.1.3v2s.1.2.1.3.1.1.2.2.2.1.3.1.2 0 .3-.1l.2-.2s.1-.2.1-.3v-1.5zM4 13c0 4.4 3.6 8 8 8s8-3.6 8-8h-2c0 3.3-2.7 6-6 6s-6-2.7-6-6 2.7-6 6-6v4l5-5-5-5v4c-4.4 0-8 3.6-8 8z" /></g> <g id="forward-5"><path d="M4 13c0 4.4 3.6 8 8 8s8-3.6 8-8h-2c0 3.3-2.7 6-6 6s-6-2.7-6-6 2.7-6 6-6v4l5-5-5-5v4c-4.4 0-8 3.6-8 8zm6.7.9l.2-2.2h2.4v.7h-1.7l-.1.9s.1 0 .1-.1.1 0 .1-.1.1 0 .2 0h.2c.2 0 .4 0 .5.1s.3.2.4.3.2.3.3.5.1.4.1.6c0 .2 0 .4-.1.5s-.1.3-.3.5-.3.2-.5.3-.4.1-.6.1c-.2 0-.4 0-.5-.1s-.3-.1-.5-.2-.2-.2-.3-.4-.1-.3-.1-.5h.8c0 .2.1.3.2.4s.2.1.4.1c.1 0 .2 0 .3-.1l.2-.2s.1-.2.1-.3v-.6l-.1-.2-.2-.2s-.2-.1-.3-.1h-.2s-.1 0-.2.1-.1 0-.1.1-.1.1-.1.1h-.6z" /></g> <g id="games"><path d="M15 7.5V2H9v5.5l3 3 3-3zM7.5 9H2v6h5.5l3-3-3-3zM9 16.5V22h6v-5.5l-3-3-3 3zM16.5 9l-3 3 3 3H22V9h-5.5z" /></g> <g id="hd"><path d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-8 12H9.5v-2h-2v2H6V9h1.5v2.5h2V9H11v6zm2-6h4c.55 0 1 .45 1 1v4c0 .55-.45 1-1 1h-4V9zm1.5 4.5h2v-3h-2v3z" /></g> <g id="hearing"><path d="M17 20c-.29 0-.56-.06-.76-.15-.71-.37-1.21-.88-1.71-2.38-.51-1.56-1.47-2.29-2.39-3-.79-.61-1.61-1.24-2.32-2.53C9.29 10.98 9 9.93 9 9c0-2.8 2.2-5 5-5s5 2.2 5 5h2c0-3.93-3.07-7-7-7S7 5.07 7 9c0 1.26.38 2.65 1.07 3.9.91 1.65 1.98 2.48 2.85 3.15.81.62 1.39 1.07 1.71 2.05.6 1.82 1.37 2.84 2.73 3.55.51.23 1.07.35 1.64.35 2.21 0 4-1.79 4-4h-2c0 1.1-.9 2-2 2zM7.64 2.64L6.22 1.22C4.23 3.21 3 5.96 3 9s1.23 5.79 3.22 7.78l1.41-1.41C6.01 13.74 5 11.49 5 9s1.01-4.74 2.64-6.36zM11.5 9c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5-1.12-2.5-2.5-2.5-2.5 1.12-2.5 2.5z" /></g> <g id="high-quality"><path d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 11H9.5v-2h-2v2H6V9h1.5v2.5h2V9H11v6zm7-1c0 .55-.45 1-1 1h-.75v1.5h-1.5V15H14c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v4zm-3.5-.5h2v-3h-2v3z" /></g> <g id="library-add"><path d="M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-1 9h-4v4h-2v-4H9V9h4V5h2v4h4v2z" /></g> <g id="library-books"><path d="M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-1 9H9V9h10v2zm-4 4H9v-2h6v2zm4-8H9V5h10v2z" /></g> <g id="library-music"><path d="M20 2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 5h-3v5.5c0 1.38-1.12 2.5-2.5 2.5S10 13.88 10 12.5s1.12-2.5 2.5-2.5c.57 0 1.08.19 1.5.51V5h4v2zM4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6z" /></g> <g id="loop"><path d="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z" /></g> <g id="mic"><path d="M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z" /></g> <g id="mic-none"><path d="M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm-1.2-9.1c0-.66.54-1.2 1.2-1.2.66 0 1.2.54 1.2 1.2l-.01 6.2c0 .66-.53 1.2-1.19 1.2-.66 0-1.2-.54-1.2-1.2V4.9zm6.5 6.1c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z" /></g> <g id="mic-off"><path d="M19 11h-1.7c0 .74-.16 1.43-.43 2.05l1.23 1.23c.56-.98.9-2.09.9-3.28zm-4.02.17c0-.06.02-.11.02-.17V5c0-1.66-1.34-3-3-3S9 3.34 9 5v.18l5.98 5.99zM4.27 3L3 4.27l6.01 6.01V11c0 1.66 1.33 3 2.99 3 .22 0 .44-.03.65-.08l1.66 1.66c-.71.33-1.5.52-2.31.52-2.76 0-5.3-2.1-5.3-5.1H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c.91-.13 1.77-.45 2.54-.9L19.73 21 21 19.73 4.27 3z" /></g> <g id="movie"><path d="M18 4l2 4h-3l-2-4h-2l2 4h-3l-2-4H8l2 4H7L5 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4h-4z" /></g> <g id="music-video"><path d="M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3V5h18v14zM8 15c0-1.66 1.34-3 3-3 .35 0 .69.07 1 .18V6h5v2h-3v7.03c-.02 1.64-1.35 2.97-3 2.97-1.66 0-3-1.34-3-3z" /></g> <g id="new-releases"><path d="M23 12l-2.44-2.78.34-3.68-3.61-.82-1.89-3.18L12 3 8.6 1.54 6.71 4.72l-3.61.81.34 3.68L1 12l2.44 2.78-.34 3.69 3.61.82 1.89 3.18L12 21l3.4 1.46 1.89-3.18 3.61-.82-.34-3.68L23 12zm-10 5h-2v-2h2v2zm0-4h-2V7h2v6z" /></g> <g id="not-interested"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8 0-1.85.63-3.55 1.69-4.9L16.9 18.31C15.55 19.37 13.85 20 12 20zm6.31-3.1L7.1 5.69C8.45 4.63 10.15 4 12 4c4.42 0 8 3.58 8 8 0 1.85-.63 3.55-1.69 4.9z" /></g> <g id="note"><path d="M22 10l-6-6H4c-1.1 0-2 .9-2 2v12.01c0 1.1.9 1.99 2 1.99l16-.01c1.1 0 2-.89 2-1.99v-8zm-7-4.5l5.5 5.5H15V5.5z" /></g> <g id="pause"><path d="M6 19h4V5H6v14zm8-14v14h4V5h-4z" /></g> <g id="pause-circle-filled"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 14H9V8h2v8zm4 0h-2V8h2v8z" /></g> <g id="pause-circle-outline"><path d="M9 16h2V8H9v8zm3-14C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm1-4h2V8h-2v8z" /></g> <g id="play-arrow"><path d="M8 5v14l11-7z" /></g> <g id="play-circle-filled"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 14.5v-9l6 4.5-6 4.5z" /></g> <g id="play-circle-outline"><path d="M10 16.5l6-4.5-6-4.5v9zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z" /></g> <g id="playlist-add"><path d="M14 10H2v2h12v-2zm0-4H2v2h12V6zm4 8v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zM2 16h8v-2H2v2z" /></g> <g id="playlist-add-check"><path d="M14 10H2v2h12v-2zm0-4H2v2h12V6zM2 16h8v-2H2v2zm19.5-4.5L23 13l-6.99 7-4.51-4.5L13 14l3.01 3 5.49-5.5z" /></g> <g id="playlist-play"><path d="M19 9H2v2h17V9zm0-4H2v2h17V5zM2 15h13v-2H2v2zm15-2v6l5-3-5-3z" /></g> <g id="queue"><path d="M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-1 9h-4v4h-2v-4H9V9h4V5h2v4h4v2z" /></g> <g id="queue-music"><path d="M15 6H3v2h12V6zm0 4H3v2h12v-2zM3 16h8v-2H3v2zM17 6v8.18c-.31-.11-.65-.18-1-.18-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3V8h3V6h-5z" /></g> <g id="queue-play-next"><path d="M21 3H3c-1.11 0-2 .89-2 2v12c0 1.1.89 2 2 2h5v2h8v-2h2v-2H3V5h18v8h2V5c0-1.11-.9-2-2-2zm-8 7V7h-2v3H8v2h3v3h2v-3h3v-2h-3zm11 8l-4.5 4.5L18 21l3-3-3-3 1.5-1.5L24 18z" /></g> <g id="radio"><path d="M3.24 6.15C2.51 6.43 2 7.17 2 8v12c0 1.1.89 2 2 2h16c1.11 0 2-.9 2-2V8c0-1.11-.89-2-2-2H8.3l8.26-3.34L15.88 1 3.24 6.15zM7 20c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm13-8h-2v-2h-2v2H4V8h16v4z" /></g> <g id="recent-actors"><path d="M21 5v14h2V5h-2zm-4 14h2V5h-2v14zM14 5H2c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zM8 7.75c1.24 0 2.25 1.01 2.25 2.25S9.24 12.25 8 12.25 5.75 11.24 5.75 10 6.76 7.75 8 7.75zM12.5 17h-9v-.75c0-1.5 3-2.25 4.5-2.25s4.5.75 4.5 2.25V17z" /></g> <g id="remove-from-queue"><path d="M21 3H3c-1.11 0-2 .89-2 2v12c0 1.1.89 2 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5c0-1.11-.9-2-2-2zm0 14H3V5h18v12zm-5-7v2H8v-2h8z" /></g> <g id="repeat"><path d="M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4z" /></g> <g id="repeat-one"><path d="M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4zm-4-2V9h-1l-2 1v1h1.5v4H13z" /></g> <g id="replay"><path d="M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z" /></g> <g id="replay-10"><path d="M12 5V1L7 6l5 5V7c3.3 0 6 2.7 6 6s-2.7 6-6 6-6-2.7-6-6H4c0 4.4 3.6 8 8 8s8-3.6 8-8-3.6-8-8-8zm-1.1 11H10v-3.3L9 13v-.7l1.8-.6h.1V16zm4.3-1.8c0 .3 0 .6-.1.8l-.3.6s-.3.3-.5.3-.4.1-.6.1-.4 0-.6-.1-.3-.2-.5-.3-.2-.3-.3-.6-.1-.5-.1-.8v-.7c0-.3 0-.6.1-.8l.3-.6s.3-.3.5-.3.4-.1.6-.1.4 0 .6.1c.2.1.3.2.5.3s.2.3.3.6.1.5.1.8v.7zm-.9-.8v-.5s-.1-.2-.1-.3-.1-.1-.2-.2-.2-.1-.3-.1-.2 0-.3.1l-.2.2s-.1.2-.1.3v2s.1.2.1.3.1.1.2.2.2.1.3.1.2 0 .3-.1l.2-.2s.1-.2.1-.3v-1.5z" /></g> <g id="replay-30"><path d="M12 5V1L7 6l5 5V7c3.3 0 6 2.7 6 6s-2.7 6-6 6-6-2.7-6-6H4c0 4.4 3.6 8 8 8s8-3.6 8-8-3.6-8-8-8zm-2.4 8.5h.4c.2 0 .4-.1.5-.2s.2-.2.2-.4v-.2s-.1-.1-.1-.2-.1-.1-.2-.1h-.5s-.1.1-.2.1-.1.1-.1.2v.2h-1c0-.2 0-.3.1-.5s.2-.3.3-.4.3-.2.4-.2.4-.1.5-.1c.2 0 .4 0 .6.1s.3.1.5.2.2.2.3.4.1.3.1.5v.3s-.1.2-.1.3-.1.2-.2.2-.2.1-.3.2c.2.1.4.2.5.4s.2.4.2.6c0 .2 0 .4-.1.5s-.2.3-.3.4-.3.2-.5.2-.4.1-.6.1c-.2 0-.4 0-.5-.1s-.3-.1-.5-.2-.2-.2-.3-.4-.1-.4-.1-.6h.8v.2s.1.1.1.2.1.1.2.1h.5s.1-.1.2-.1.1-.1.1-.2v-.5s-.1-.1-.1-.2-.1-.1-.2-.1h-.6v-.7zm5.7.7c0 .3 0 .6-.1.8l-.3.6s-.3.3-.5.3-.4.1-.6.1-.4 0-.6-.1-.3-.2-.5-.3-.2-.3-.3-.6-.1-.5-.1-.8v-.7c0-.3 0-.6.1-.8l.3-.6s.3-.3.5-.3.4-.1.6-.1.4 0 .6.1.3.2.5.3.2.3.3.6.1.5.1.8v.7zm-.8-.8v-.5c0-.1-.1-.2-.1-.3s-.1-.1-.2-.2-.2-.1-.3-.1-.2 0-.3.1l-.2.2s-.1.2-.1.3v2s.1.2.1.3.1.1.2.2.2.1.3.1.2 0 .3-.1l.2-.2s.1-.2.1-.3v-1.5z" /></g> <g id="replay-5"><path d="M12 5V1L7 6l5 5V7c3.3 0 6 2.7 6 6s-2.7 6-6 6-6-2.7-6-6H4c0 4.4 3.6 8 8 8s8-3.6 8-8-3.6-8-8-8zm-1.3 8.9l.2-2.2h2.4v.7h-1.7l-.1.9s.1 0 .1-.1.1 0 .1-.1.1 0 .2 0h.2c.2 0 .4 0 .5.1s.3.2.4.3.2.3.3.5.1.4.1.6c0 .2 0 .4-.1.5s-.1.3-.3.5-.3.2-.4.3-.4.1-.6.1c-.2 0-.4 0-.5-.1s-.3-.1-.5-.2-.2-.2-.3-.4-.1-.3-.1-.5h.8c0 .2.1.3.2.4s.2.1.4.1c.1 0 .2 0 .3-.1l.2-.2s.1-.2.1-.3v-.6l-.1-.2-.2-.2s-.2-.1-.3-.1h-.2s-.1 0-.2.1-.1 0-.1.1-.1.1-.1.1h-.7z" /></g> <g id="shuffle"><path d="M10.59 9.17L5.41 4 4 5.41l5.17 5.17 1.42-1.41zM14.5 4l2.04 2.04L4 18.59 5.41 20 17.96 7.46 20 9.5V4h-5.5zm.33 9.41l-1.41 1.41 3.13 3.13L14.5 20H20v-5.5l-2.04 2.04-3.13-3.13z" /></g> <g id="skip-next"><path d="M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z" /></g> <g id="skip-previous"><path d="M6 6h2v12H6zm3.5 6l8.5 6V6z" /></g> <g id="slow-motion-video"><path d="M13.05 9.79L10 7.5v9l3.05-2.29L16 12zm0 0L10 7.5v9l3.05-2.29L16 12zm0 0L10 7.5v9l3.05-2.29L16 12zM11 4.07V2.05c-2.01.2-3.84 1-5.32 2.21L7.1 5.69c1.11-.86 2.44-1.44 3.9-1.62zM5.69 7.1L4.26 5.68C3.05 7.16 2.25 8.99 2.05 11h2.02c.18-1.46.76-2.79 1.62-3.9zM4.07 13H2.05c.2 2.01 1 3.84 2.21 5.32l1.43-1.43c-.86-1.1-1.44-2.43-1.62-3.89zm1.61 6.74C7.16 20.95 9 21.75 11 21.95v-2.02c-1.46-.18-2.79-.76-3.9-1.62l-1.42 1.43zM22 12c0 5.16-3.92 9.42-8.95 9.95v-2.02C16.97 19.41 20 16.05 20 12s-3.03-7.41-6.95-7.93V2.05C18.08 2.58 22 6.84 22 12z" /></g> <g id="snooze"><path d="M7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7zm-3-9h3.63L9 15.2V17h6v-2h-3.63L15 10.8V9H9v2z" /></g> <g id="sort-by-alpha"><path d="M14.94 4.66h-4.72l2.36-2.36zm-4.69 14.71h4.66l-2.33 2.33zM6.1 6.27L1.6 17.73h1.84l.92-2.45h5.11l.92 2.45h1.84L7.74 6.27H6.1zm-1.13 7.37l1.94-5.18 1.94 5.18H4.97zm10.76 2.5h6.12v1.59h-8.53v-1.29l5.92-8.56h-5.88v-1.6h8.3v1.26l-5.93 8.6z" /></g> <g id="stop"><path d="M6 6h12v12H6z" /></g> <g id="subscriptions"><path d="M20 8H4V6h16v2zm-2-6H6v2h12V2zm4 10v8c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2v-8c0-1.1.9-2 2-2h16c1.1 0 2 .9 2 2zm-6 4l-6-3.27v6.53L16 16z" /></g> <g id="subtitles"><path d="M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM4 12h4v2H4v-2zm10 6H4v-2h10v2zm6 0h-4v-2h4v2zm0-4H10v-2h10v2z" /></g> <g id="surround-sound"><path d="M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM7.76 16.24l-1.41 1.41C4.78 16.1 4 14.05 4 12c0-2.05.78-4.1 2.34-5.66l1.41 1.41C6.59 8.93 6 10.46 6 12s.59 3.07 1.76 4.24zM12 16c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm5.66 1.66l-1.41-1.41C17.41 15.07 18 13.54 18 12s-.59-3.07-1.76-4.24l1.41-1.41C19.22 7.9 20 9.95 20 12c0 2.05-.78 4.1-2.34 5.66zM12 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" /></g> <g id="video-call"><path d="M17 10.5V7c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4zM14 13h-3v3H9v-3H6v-2h3V8h2v3h3v2z" /></g> <g id="video-label"><path d="M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 13H3V5h18v11z" /></g> <g id="video-library"><path d="M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-8 12.5v-9l6 4.5-6 4.5z" /></g> <g id="videocam"><path d="M17 10.5V7c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z" /></g> <g id="videocam-off"><path d="M21 6.5l-4 4V7c0-.55-.45-1-1-1H9.82L21 17.18V6.5zM3.27 2L2 3.27 4.73 6H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.21 0 .39-.08.54-.18L19.73 21 21 19.73 3.27 2z" /></g> <g id="volume-down"><path d="M18.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM5 9v6h4l5 5V4L9 9H5z" /></g> <g id="volume-mute"><path d="M7 9v6h4l5 5V4l-5 5H7z" /></g> <g id="volume-off"><path d="M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z" /></g> <g id="volume-up"><path d="M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z" /></g> <g id="web"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-5 14H4v-4h11v4zm0-5H4V9h11v4zm5 5h-4V9h4v9z" /></g> <g id="web-asset"><path d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.89-2-2-2zm0 14H5V8h14v10z" /></g> </defs></svg> </iron-iconset-svg> <iron-iconset-svg name="communication" size="24"> <svg><defs> <g id="business"><path d="M12 7V3H2v18h20V7H12zM6 19H4v-2h2v2zm0-4H4v-2h2v2zm0-4H4V9h2v2zm0-4H4V5h2v2zm4 12H8v-2h2v2zm0-4H8v-2h2v2zm0-4H8V9h2v2zm0-4H8V5h2v2zm10 12h-8v-2h2v-2h-2v-2h2v-2h-2V9h8v10zm-2-8h-2v2h2v-2zm0 4h-2v2h2v-2z" /></g> <g id="call"><path d="M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z" /></g> <g id="call-end"><path d="M12 9c-1.6 0-3.15.25-4.6.72v3.1c0 .39-.23.74-.56.9-.98.49-1.87 1.12-2.66 1.85-.18.18-.43.28-.7.28-.28 0-.53-.11-.71-.29L.29 13.08c-.18-.17-.29-.42-.29-.7 0-.28.11-.53.29-.71C3.34 8.78 7.46 7 12 7s8.66 1.78 11.71 4.67c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-2.48 2.48c-.18.18-.43.29-.71.29-.27 0-.52-.11-.7-.28-.79-.74-1.69-1.36-2.67-1.85-.33-.16-.56-.5-.56-.9v-3.1C15.15 9.25 13.6 9 12 9z" /></g> <g id="call-made"><path d="M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5z" /></g> <g id="call-merge"><path d="M17 20.41L18.41 19 15 15.59 13.59 17 17 20.41zM7.5 8H11v5.59L5.59 19 7 20.41l6-6V8h3.5L12 3.5 7.5 8z" /></g> <g id="call-missed"><path d="M19.59 7L12 14.59 6.41 9H11V7H3v8h2v-4.59l7 7 9-9z" /></g> <g id="call-missed-outgoing"><path d="M3 8.41l9 9 7-7V15h2V7h-8v2h4.59L12 14.59 4.41 7 3 8.41z" /></g> <g id="call-received"><path d="M20 5.41L18.59 4 7 15.59V9H5v10h10v-2H8.41z" /></g> <g id="call-split"><path d="M14 4l2.29 2.29-2.88 2.88 1.42 1.42 2.88-2.88L20 10V4zm-4 0H4v6l2.29-2.29 4.71 4.7V20h2v-8.41l-5.29-5.3z" /></g> <g id="chat"><path d="M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 9h12v2H6V9zm8 5H6v-2h8v2zm4-6H6V6h12v2z" /></g> <g id="chat-bubble"><path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z" /></g> <g id="chat-bubble-outline"><path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z" /></g> <g id="clear-all"><path d="M5 13h14v-2H5v2zm-2 4h14v-2H3v2zM7 7v2h14V7H7z" /></g> <g id="comment"><path d="M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4-.01-18zM18 14H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z" /></g> <g id="contact-mail"><path d="M21 8V7l-3 2-3-2v1l3 2 3-2zm1-5H2C.9 3 0 3.9 0 5v14c0 1.1.9 2 2 2h20c1.1 0 1.99-.9 1.99-2L24 5c0-1.1-.9-2-2-2zM8 6c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm6 12H2v-1c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1zm8-6h-8V6h8v6z" /></g> <g id="contact-phone"><path d="M22 3H2C.9 3 0 3.9 0 5v14c0 1.1.9 2 2 2h20c1.1 0 1.99-.9 1.99-2L24 5c0-1.1-.9-2-2-2zM8 6c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm6 12H2v-1c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1zm3.85-4h1.64L21 16l-1.99 1.99c-1.31-.98-2.28-2.38-2.73-3.99-.18-.64-.28-1.31-.28-2s.1-1.36.28-2c.45-1.62 1.42-3.01 2.73-3.99L21 8l-1.51 2h-1.64c-.22.63-.35 1.3-.35 2s.13 1.37.35 2z" /></g> <g id="contacts"><path d="M20 0H4v2h16V0zM4 24h16v-2H4v2zM20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 2.75c1.24 0 2.25 1.01 2.25 2.25s-1.01 2.25-2.25 2.25S9.75 10.24 9.75 9 10.76 6.75 12 6.75zM17 17H7v-1.5c0-1.67 3.33-2.5 5-2.5s5 .83 5 2.5V17z" /></g> <g id="dialer-sip"><path d="M17 3h-1v5h1V3zm-2 2h-2V4h2V3h-3v3h2v1h-2v1h3V5zm3-2v5h1V6h2V3h-3zm2 2h-1V4h1v1zm0 10.5c-1.25 0-2.45-.2-3.57-.57-.35-.11-.74-.03-1.01.24l-2.2 2.2c-2.83-1.44-5.15-3.75-6.59-6.59l2.2-2.21c.27-.26.35-.65.24-1C8.7 6.45 8.5 5.25 8.5 4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1z" /></g> <g id="dialpad"><path d="M12 19c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM6 1c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12-8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm-6 8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" /></g> <g id="email"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z" /></g> <g id="forum"><path d="M21 6h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1zm-4 6V3c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1z" /></g> <g id="import-contacts"><path d="M21 5c-1.11-.35-2.33-.5-3.5-.5-1.95 0-4.05.4-5.5 1.5-1.45-1.1-3.55-1.5-5.5-1.5S2.45 4.9 1 6v14.65c0 .25.25.5.5.5.1 0 .15-.05.25-.05C3.1 20.45 5.05 20 6.5 20c1.95 0 4.05.4 5.5 1.5 1.35-.85 3.8-1.5 5.5-1.5 1.65 0 3.35.3 4.75 1.05.1.05.15.05.25.05.25 0 .5-.25.5-.5V6c-.6-.45-1.25-.75-2-1zm0 13.5c-1.1-.35-2.3-.5-3.5-.5-1.7 0-4.15.65-5.5 1.5V8c1.35-.85 3.8-1.5 5.5-1.5 1.2 0 2.4.15 3.5.5v11.5z" /></g> <g id="import-export"><path d="M9 3L5 6.99h3V14h2V6.99h3L9 3zm7 14.01V10h-2v7.01h-3L15 21l4-3.99h-3z" /></g> <g id="invert-colors-off"><path d="M20.65 20.87l-2.35-2.35-6.3-6.29-3.56-3.57-1.42-1.41L4.27 4.5 3 5.77l2.78 2.78c-2.55 3.14-2.36 7.76.56 10.69C7.9 20.8 9.95 21.58 12 21.58c1.79 0 3.57-.59 5.03-1.78l2.7 2.7L21 21.23l-.35-.36zM12 19.59c-1.6 0-3.11-.62-4.24-1.76C6.62 16.69 6 15.19 6 13.59c0-1.32.43-2.57 1.21-3.6L12 14.77v4.82zM12 5.1v4.58l7.25 7.26c1.37-2.96.84-6.57-1.6-9.01L12 2.27l-3.7 3.7 1.41 1.41L12 5.1z" /></g> <g id="live-help"><path d="M19 2H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h4l3 3 3-3h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-6 16h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 11.9 13 12.5 13 14h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z" /></g> <g id="location-off"><path d="M12 6.5c1.38 0 2.5 1.12 2.5 2.5 0 .74-.33 1.39-.83 1.85l3.63 3.63c.98-1.86 1.7-3.8 1.7-5.48 0-3.87-3.13-7-7-7-1.98 0-3.76.83-5.04 2.15l3.19 3.19c.46-.52 1.11-.84 1.85-.84zm4.37 9.6l-4.63-4.63-.11-.11L3.27 3 2 4.27l3.18 3.18C5.07 7.95 5 8.47 5 9c0 5.25 7 13 7 13s1.67-1.85 3.38-4.35L18.73 21 20 19.73l-3.63-3.63z" /></g> <g id="location-on"><path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z" /></g> <g id="mail-outline"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 14H4V8l8 5 8-5v10zm-8-7L4 6h16l-8 5z" /></g> <g id="message"><path d="M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z" /></g> <g id="no-sim"><path d="M18.99 5c0-1.1-.89-2-1.99-2h-7L7.66 5.34 19 16.68 18.99 5zM3.65 3.88L2.38 5.15 5 7.77V19c0 1.1.9 2 2 2h10.01c.35 0 .67-.1.96-.26l1.88 1.88 1.27-1.27L3.65 3.88z" /></g> <g id="phone"><path d="M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z" /></g> <g id="phonelink-erase"><path d="M13 8.2l-1-1-4 4-4-4-1 1 4 4-4 4 1 1 4-4 4 4 1-1-4-4 4-4zM19 1H9c-1.1 0-2 .9-2 2v3h2V4h10v16H9v-2H7v3c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2z" /></g> <g id="phonelink-lock"><path d="M19 1H9c-1.1 0-2 .9-2 2v3h2V4h10v16H9v-2H7v3c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zm-8.2 10V9.5C10.8 8.1 9.4 7 8 7S5.2 8.1 5.2 9.5V11c-.6 0-1.2.6-1.2 1.2v3.5c0 .7.6 1.3 1.2 1.3h5.5c.7 0 1.3-.6 1.3-1.2v-3.5c0-.7-.6-1.3-1.2-1.3zm-1.3 0h-3V9.5c0-.8.7-1.3 1.5-1.3s1.5.5 1.5 1.3V11z" /></g> <g id="phonelink-ring"><path d="M20.1 7.7l-1 1c1.8 1.8 1.8 4.6 0 6.5l1 1c2.5-2.3 2.5-6.1 0-8.5zM18 9.8l-1 1c.5.7.5 1.6 0 2.3l1 1c1.2-1.2 1.2-3 0-4.3zM14 1H4c-1.1 0-2 .9-2 2v18c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zm0 19H4V4h10v16z" /></g> <g id="phonelink-setup"><path d="M11.8 12.5v-1l1.1-.8c.1-.1.1-.2.1-.3l-1-1.7c-.1-.1-.2-.2-.3-.1l-1.3.4c-.3-.2-.6-.4-.9-.5l-.2-1.3c0-.1-.1-.2-.3-.2H7c-.1 0-.2.1-.3.2l-.2 1.3c-.3.1-.6.3-.9.5l-1.3-.5c-.1 0-.2 0-.3.1l-1 1.7c-.1.1 0 .2.1.3l1.1.8v1l-1.1.8c-.1.2-.1.3-.1.4l1 1.7c.1.1.2.2.3.1l1.4-.4c.3.2.6.4.9.5l.2 1.3c-.1.1.1.2.2.2h2c.1 0 .2-.1.3-.2l.2-1.3c.3-.1.6-.3.9-.5l1.3.5c.1 0 .2 0 .3-.1l1-1.7c.1-.1 0-.2-.1-.3l-1.1-.9zM8 14c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM19 1H9c-1.1 0-2 .9-2 2v3h2V4h10v16H9v-2H7v3c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2z" /></g> <g id="portable-wifi-off"><path d="M17.56 14.24c.28-.69.44-1.45.44-2.24 0-3.31-2.69-6-6-6-.79 0-1.55.16-2.24.44l1.62 1.62c.2-.03.41-.06.62-.06 2.21 0 4 1.79 4 4 0 .21-.02.42-.05.63l1.61 1.61zM12 4c4.42 0 8 3.58 8 8 0 1.35-.35 2.62-.95 3.74l1.47 1.47C21.46 15.69 22 13.91 22 12c0-5.52-4.48-10-10-10-1.91 0-3.69.55-5.21 1.47l1.46 1.46C9.37 4.34 10.65 4 12 4zM3.27 2.5L2 3.77l2.1 2.1C2.79 7.57 2 9.69 2 12c0 3.7 2.01 6.92 4.99 8.65l1-1.73C5.61 17.53 4 14.96 4 12c0-1.76.57-3.38 1.53-4.69l1.43 1.44C6.36 9.68 6 10.8 6 12c0 2.22 1.21 4.15 3 5.19l1-1.74c-1.19-.7-2-1.97-2-3.45 0-.65.17-1.25.44-1.79l1.58 1.58L10 12c0 1.1.9 2 2 2l.21-.02.01.01 7.51 7.51L21 20.23 4.27 3.5l-1-1z" /></g> <g id="present-to-all"><path d="M21 3H3c-1.11 0-2 .89-2 2v14c0 1.11.89 2 2 2h18c1.11 0 2-.89 2-2V5c0-1.11-.89-2-2-2zm0 16.02H3V4.98h18v14.04zM10 12H8l4-4 4 4h-2v4h-4v-4z" /></g> <g id="ring-volume"><path d="M23.71 16.67C20.66 13.78 16.54 12 12 12 7.46 12 3.34 13.78.29 16.67c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l2.48 2.48c.18.18.43.29.71.29.27 0 .52-.11.7-.28.79-.74 1.69-1.36 2.66-1.85.33-.16.56-.5.56-.9v-3.1c1.45-.48 3-.73 4.6-.73s3.15.25 4.6.72v3.1c0 .39.23.74.56.9.98.49 1.87 1.12 2.66 1.85.18.18.43.28.7.28.28 0 .53-.11.71-.29l2.48-2.48c.18-.18.29-.43.29-.71 0-.27-.11-.52-.29-.7zM21.16 6.26l-1.41-1.41-3.56 3.55 1.41 1.41s3.45-3.52 3.56-3.55zM13 2h-2v5h2V2zM6.4 9.81L7.81 8.4 4.26 4.84 2.84 6.26c.11.03 3.56 3.55 3.56 3.55z" /></g> <g id="rss-feed"><circle cx="6.18" cy="17.82" r="2.18" /><path d="M4 4.44v2.83c7.03 0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56zm0 5.66v2.83c3.9 0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z" /></g> <g id="screen-share"><path d="M20 18c1.1 0 1.99-.9 1.99-2L22 6c0-1.11-.9-2-2-2H4c-1.11 0-2 .89-2 2v10c0 1.1.89 2 2 2H0v2h24v-2h-4zm-7-3.53v-2.19c-2.78 0-4.61.85-6 2.72.56-2.67 2.11-5.33 6-5.87V7l4 3.73-4 3.74z" /></g> <g id="speaker-phone"><path d="M7 7.07L8.43 8.5c.91-.91 2.18-1.48 3.57-1.48s2.66.57 3.57 1.48L17 7.07C15.72 5.79 13.95 5 12 5s-3.72.79-5 2.07zM12 1C8.98 1 6.24 2.23 4.25 4.21l1.41 1.41C7.28 4 9.53 3 12 3s4.72 1 6.34 2.62l1.41-1.41C17.76 2.23 15.02 1 12 1zm2.86 9.01L9.14 10C8.51 10 8 10.51 8 11.14v9.71c0 .63.51 1.14 1.14 1.14h5.71c.63 0 1.14-.51 1.14-1.14v-9.71c.01-.63-.5-1.13-1.13-1.13zM15 20H9v-8h6v8z" /></g> <g id="stay-current-landscape"><path d="M1.01 7L1 17c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2H3c-1.1 0-1.99.9-1.99 2zM19 7v10H5V7h14z" /></g> <g id="stay-current-portrait"><path d="M17 1.01L7 1c-1.1 0-1.99.9-1.99 2v18c0 1.1.89 2 1.99 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-1.99-2-1.99zM17 19H7V5h10v14z" /></g> <g id="stay-primary-landscape"><path d="M1.01 7L1 17c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2H3c-1.1 0-1.99.9-1.99 2zM19 7v10H5V7h14z" /></g> <g id="stay-primary-portrait"><path d="M17 1.01L7 1c-1.1 0-1.99.9-1.99 2v18c0 1.1.89 2 1.99 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-1.99-2-1.99zM17 19H7V5h10v14z" /></g> <g id="stop-screen-share"><path d="M21.22 18.02l2 2H24v-2h-2.78zm.77-2l.01-10c0-1.11-.9-2-2-2H7.22l5.23 5.23c.18-.04.36-.07.55-.1V7.02l4 3.73-1.58 1.47 5.54 5.54c.61-.33 1.03-.99 1.03-1.74zM2.39 1.73L1.11 3l1.54 1.54c-.4.36-.65.89-.65 1.48v10c0 1.1.89 2 2 2H0v2h18.13l2.71 2.71 1.27-1.27L2.39 1.73zM7 15.02c.31-1.48.92-2.95 2.07-4.06l1.59 1.59c-1.54.38-2.7 1.18-3.66 2.47z" /></g> <g id="swap-calls"><path d="M18 4l-4 4h3v7c0 1.1-.9 2-2 2s-2-.9-2-2V8c0-2.21-1.79-4-4-4S5 5.79 5 8v7H2l4 4 4-4H7V8c0-1.1.9-2 2-2s2 .9 2 2v7c0 2.21 1.79 4 4 4s4-1.79 4-4V8h3l-4-4z" /></g> <g id="textsms"><path d="M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM9 11H7V9h2v2zm4 0h-2V9h2v2zm4 0h-2V9h2v2z" /></g> <g id="voicemail"><path d="M18.5 6C15.46 6 13 8.46 13 11.5c0 1.33.47 2.55 1.26 3.5H9.74c.79-.95 1.26-2.17 1.26-3.5C11 8.46 8.54 6 5.5 6S0 8.46 0 11.5 2.46 17 5.5 17h13c3.04 0 5.5-2.46 5.5-5.5S21.54 6 18.5 6zm-13 9C3.57 15 2 13.43 2 11.5S3.57 8 5.5 8 9 9.57 9 11.5 7.43 15 5.5 15zm13 0c-1.93 0-3.5-1.57-3.5-3.5S16.57 8 18.5 8 22 9.57 22 11.5 20.43 15 18.5 15z" /></g> <g id="vpn-key"><path d="M12.65 10C11.83 7.67 9.61 6 7 6c-3.31 0-6 2.69-6 6s2.69 6 6 6c2.61 0 4.83-1.67 5.65-4H17v4h4v-4h2v-4H12.65zM7 14c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z" /></g> </defs></svg> </iron-iconset-svg> <dom-module id="iron-collapse"> <template> <style> :host { display: block; transition-duration: var(--iron-collapse-transition-duration, 300ms); /* Safari 10 needs this property prefixed to correctly apply the custom property */ -webkit-transition-duration: var(--iron-collapse-transition-duration, 300ms); overflow: visible; } :host(.iron-collapse-closed) { display: none; } :host(:not(.iron-collapse-opened)) { overflow: hidden; } </style> <slot></slot> </template> </dom-module> <iron-iconset-svg name="editor" size="24"> <svg><defs> <g id="attach-file"><path d="M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z" /></g> <g id="attach-money"><path d="M11.8 10.9c-2.27-.59-3-1.2-3-2.15 0-1.09 1.01-1.85 2.7-1.85 1.78 0 2.44.85 2.5 2.1h2.21c-.07-1.72-1.12-3.3-3.21-3.81V3h-3v2.16c-1.94.42-3.5 1.68-3.5 3.61 0 2.31 1.91 3.46 4.7 4.13 2.5.6 3 1.48 3 2.41 0 .69-.49 1.79-2.7 1.79-2.06 0-2.87-.92-2.98-2.1h-2.2c.12 2.19 1.76 3.42 3.68 3.83V21h3v-2.15c1.95-.37 3.5-1.5 3.5-3.55 0-2.84-2.43-3.81-4.7-4.4z" /></g> <g id="border-all"><path d="M3 3v18h18V3H3zm8 16H5v-6h6v6zm0-8H5V5h6v6zm8 8h-6v-6h6v6zm0-8h-6V5h6v6z" /></g> <g id="border-bottom"><path d="M9 11H7v2h2v-2zm4 4h-2v2h2v-2zM9 3H7v2h2V3zm4 8h-2v2h2v-2zM5 3H3v2h2V3zm8 4h-2v2h2V7zm4 4h-2v2h2v-2zm-4-8h-2v2h2V3zm4 0h-2v2h2V3zm2 10h2v-2h-2v2zm0 4h2v-2h-2v2zM5 7H3v2h2V7zm14-4v2h2V3h-2zm0 6h2V7h-2v2zM5 11H3v2h2v-2zM3 21h18v-2H3v2zm2-6H3v2h2v-2z" /></g> <g id="border-clear"><path d="M7 5h2V3H7v2zm0 8h2v-2H7v2zm0 8h2v-2H7v2zm4-4h2v-2h-2v2zm0 4h2v-2h-2v2zm-8 0h2v-2H3v2zm0-4h2v-2H3v2zm0-4h2v-2H3v2zm0-4h2V7H3v2zm0-4h2V3H3v2zm8 8h2v-2h-2v2zm8 4h2v-2h-2v2zm0-4h2v-2h-2v2zm0 8h2v-2h-2v2zm0-12h2V7h-2v2zm-8 0h2V7h-2v2zm8-6v2h2V3h-2zm-8 2h2V3h-2v2zm4 16h2v-2h-2v2zm0-8h2v-2h-2v2zm0-8h2V3h-2v2z" /></g> <g id="border-color"><path d="M17.75 7L14 3.25l-10 10V17h3.75l10-10zm2.96-2.96c.39-.39.39-1.02 0-1.41L18.37.29c-.39-.39-1.02-.39-1.41 0L15 2.25 18.75 6l1.96-1.96z" /><path fill-opacity=".36" d="M0 20h24v4H0z" /></g> <g id="border-horizontal"><path d="M3 21h2v-2H3v2zM5 7H3v2h2V7zM3 17h2v-2H3v2zm4 4h2v-2H7v2zM5 3H3v2h2V3zm4 0H7v2h2V3zm8 0h-2v2h2V3zm-4 4h-2v2h2V7zm0-4h-2v2h2V3zm6 14h2v-2h-2v2zm-8 4h2v-2h-2v2zm-8-8h18v-2H3v2zM19 3v2h2V3h-2zm0 6h2V7h-2v2zm-8 8h2v-2h-2v2zm4 4h2v-2h-2v2zm4 0h2v-2h-2v2z" /></g> <g id="border-inner"><path d="M3 21h2v-2H3v2zm4 0h2v-2H7v2zM5 7H3v2h2V7zM3 17h2v-2H3v2zM9 3H7v2h2V3zM5 3H3v2h2V3zm12 0h-2v2h2V3zm2 6h2V7h-2v2zm0-6v2h2V3h-2zm-4 18h2v-2h-2v2zM13 3h-2v8H3v2h8v8h2v-8h8v-2h-8V3zm6 18h2v-2h-2v2zm0-4h2v-2h-2v2z" /></g> <g id="border-left"><path d="M11 21h2v-2h-2v2zm0-4h2v-2h-2v2zm0-12h2V3h-2v2zm0 4h2V7h-2v2zm0 4h2v-2h-2v2zm-4 8h2v-2H7v2zM7 5h2V3H7v2zm0 8h2v-2H7v2zm-4 8h2V3H3v18zM19 9h2V7h-2v2zm-4 12h2v-2h-2v2zm4-4h2v-2h-2v2zm0-14v2h2V3h-2zm0 10h2v-2h-2v2zm0 8h2v-2h-2v2zm-4-8h2v-2h-2v2zm0-8h2V3h-2v2z" /></g> <g id="border-outer"><path d="M13 7h-2v2h2V7zm0 4h-2v2h2v-2zm4 0h-2v2h2v-2zM3 3v18h18V3H3zm16 16H5V5h14v14zm-6-4h-2v2h2v-2zm-4-4H7v2h2v-2z" /></g> <g id="border-right"><path d="M7 21h2v-2H7v2zM3 5h2V3H3v2zm4 0h2V3H7v2zm0 8h2v-2H7v2zm-4 8h2v-2H3v2zm8 0h2v-2h-2v2zm-8-8h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm8 8h2v-2h-2v2zm4-4h2v-2h-2v2zm4-10v18h2V3h-2zm-4 18h2v-2h-2v2zm0-16h2V3h-2v2zm-4 8h2v-2h-2v2zm0-8h2V3h-2v2zm0 4h2V7h-2v2z" /></g> <g id="border-style"><path d="M15 21h2v-2h-2v2zm4 0h2v-2h-2v2zM7 21h2v-2H7v2zm4 0h2v-2h-2v2zm8-4h2v-2h-2v2zm0-4h2v-2h-2v2zM3 3v18h2V5h16V3H3zm16 6h2V7h-2v2z" /></g> <g id="border-top"><path d="M7 21h2v-2H7v2zm0-8h2v-2H7v2zm4 0h2v-2h-2v2zm0 8h2v-2h-2v2zm-8-4h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2v-2H3v2zm0-4h2V7H3v2zm8 8h2v-2h-2v2zm8-8h2V7h-2v2zm0 4h2v-2h-2v2zM3 3v2h18V3H3zm16 14h2v-2h-2v2zm-4 4h2v-2h-2v2zM11 9h2V7h-2v2zm8 12h2v-2h-2v2zm-4-8h2v-2h-2v2z" /></g> <g id="border-vertical"><path d="M3 9h2V7H3v2zm0-4h2V3H3v2zm4 16h2v-2H7v2zm0-8h2v-2H7v2zm-4 0h2v-2H3v2zm0 8h2v-2H3v2zm0-4h2v-2H3v2zM7 5h2V3H7v2zm12 12h2v-2h-2v2zm-8 4h2V3h-2v18zm8 0h2v-2h-2v2zm0-8h2v-2h-2v2zm0-10v2h2V3h-2zm0 6h2V7h-2v2zm-4-4h2V3h-2v2zm0 16h2v-2h-2v2zm0-8h2v-2h-2v2z" /></g> <g id="bubble-chart"><circle cx="7.2" cy="14.4" r="3.2" /><circle cx="14.8" cy="18" r="2" /><circle cx="15.2" cy="8.8" r="4.8" /></g> <g id="drag-handle"><path d="M20 9H4v2h16V9zM4 15h16v-2H4v2z" /></g> <g id="format-align-center"><path d="M7 15v2h10v-2H7zm-4 6h18v-2H3v2zm0-8h18v-2H3v2zm4-6v2h10V7H7zM3 3v2h18V3H3z" /></g> <g id="format-align-justify"><path d="M3 21h18v-2H3v2zm0-4h18v-2H3v2zm0-4h18v-2H3v2zm0-4h18V7H3v2zm0-6v2h18V3H3z" /></g> <g id="format-align-left"><path d="M15 15H3v2h12v-2zm0-8H3v2h12V7zM3 13h18v-2H3v2zm0 8h18v-2H3v2zM3 3v2h18V3H3z" /></g> <g id="format-align-right"><path d="M3 21h18v-2H3v2zm6-4h12v-2H9v2zm-6-4h18v-2H3v2zm6-4h12V7H9v2zM3 3v2h18V3H3z" /></g> <g id="format-bold"><path d="M15.6 10.79c.97-.67 1.65-1.77 1.65-2.79 0-2.26-1.75-4-4-4H7v14h7.04c2.09 0 3.71-1.7 3.71-3.79 0-1.52-.86-2.82-2.15-3.42zM10 6.5h3c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5h-3v-3zm3.5 9H10v-3h3.5c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5z" /></g> <g id="format-clear"><path d="M3.27 5L2 6.27l6.97 6.97L6.5 19h3l1.57-3.66L16.73 21 18 19.73 3.55 5.27 3.27 5zM6 5v.18L8.82 8h2.4l-.72 1.68 2.1 2.1L14.21 8H20V5H6z" /></g> <g id="format-color-fill"><path d="M16.56 8.94L7.62 0 6.21 1.41l2.38 2.38-5.15 5.15c-.59.59-.59 1.54 0 2.12l5.5 5.5c.29.29.68.44 1.06.44s.77-.15 1.06-.44l5.5-5.5c.59-.58.59-1.53 0-2.12zM5.21 10L10 5.21 14.79 10H5.21zM19 11.5s-2 2.17-2 3.5c0 1.1.9 2 2 2s2-.9 2-2c0-1.33-2-3.5-2-3.5z" /><path fill-opacity=".36" d="M0 20h24v4H0z" /></g> <g id="format-color-reset"><path d="M18 14c0-4-6-10.8-6-10.8s-1.33 1.51-2.73 3.52l8.59 8.59c.09-.42.14-.86.14-1.31zm-.88 3.12L12.5 12.5 5.27 5.27 4 6.55l3.32 3.32C6.55 11.32 6 12.79 6 14c0 3.31 2.69 6 6 6 1.52 0 2.9-.57 3.96-1.5l2.63 2.63 1.27-1.27-2.74-2.74z" /></g> <g id="format-color-text"><path fill-opacity=".36" d="M0 20h24v4H0z" /><path d="M11 3L5.5 17h2.25l1.12-3h6.25l1.12 3h2.25L13 3h-2zm-1.38 9L12 5.67 14.38 12H9.62z" /></g> <g id="format-indent-decrease"><path d="M11 17h10v-2H11v2zm-8-5l4 4V8l-4 4zm0 9h18v-2H3v2zM3 3v2h18V3H3zm8 6h10V7H11v2zm0 4h10v-2H11v2z" /></g> <g id="format-indent-increase"><path d="M3 21h18v-2H3v2zM3 8v8l4-4-4-4zm8 9h10v-2H11v2zM3 3v2h18V3H3zm8 6h10V7H11v2zm0 4h10v-2H11v2z" /></g> <g id="format-italic"><path d="M10 4v3h2.21l-3.42 8H6v3h8v-3h-2.21l3.42-8H18V4z" /></g> <g id="format-line-spacing"><path d="M6 7h2.5L5 3.5 1.5 7H4v10H1.5L5 20.5 8.5 17H6V7zm4-2v2h12V5H10zm0 14h12v-2H10v2zm0-6h12v-2H10v2z" /></g> <g id="format-list-bulleted"><path d="M4 10.5c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm0-6c-.83 0-1.5.67-1.5 1.5S3.17 7.5 4 7.5 5.5 6.83 5.5 6 4.83 4.5 4 4.5zm0 12c-.83 0-1.5.68-1.5 1.5s.68 1.5 1.5 1.5 1.5-.68 1.5-1.5-.67-1.5-1.5-1.5zM7 19h14v-2H7v2zm0-6h14v-2H7v2zm0-8v2h14V5H7z" /></g> <g id="format-list-numbered"><path d="M2 17h2v.5H3v1h1v.5H2v1h3v-4H2v1zm1-9h1V4H2v1h1v3zm-1 3h1.8L2 13.1v.9h3v-1H3.2L5 10.9V10H2v1zm5-6v2h14V5H7zm0 14h14v-2H7v2zm0-6h14v-2H7v2z" /></g> <g id="format-paint"><path d="M18 4V3c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V6h1v4H9v11c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-9h8V4h-3z" /></g> <g id="format-quote"><path d="M6 17h3l2-4V7H5v6h3zm8 0h3l2-4V7h-6v6h3z" /></g> <g id="format-shapes"><path d="M23 7V1h-6v2H7V1H1v6h2v10H1v6h6v-2h10v2h6v-6h-2V7h2zM3 3h2v2H3V3zm2 18H3v-2h2v2zm12-2H7v-2H5V7h2V5h10v2h2v10h-2v2zm4 2h-2v-2h2v2zM19 5V3h2v2h-2zm-5.27 9h-3.49l-.73 2H7.89l3.4-9h1.4l3.41 9h-1.63l-.74-2zm-3.04-1.26h2.61L12 8.91l-1.31 3.83z" /></g> <g id="format-size"><path d="M9 4v3h5v12h3V7h5V4H9zm-6 8h3v7h3v-7h3V9H3v3z" /></g> <g id="format-strikethrough"><path d="M10 19h4v-3h-4v3zM5 4v3h5v3h4V7h5V4H5zM3 14h18v-2H3v2z" /></g> <g id="format-textdirection-l-to-r"><path d="M9 10v5h2V4h2v11h2V4h2V2H9C6.79 2 5 3.79 5 6s1.79 4 4 4zm12 8l-4-4v3H5v2h12v3l4-4z" /></g> <g id="format-textdirection-r-to-l"><path d="M10 10v5h2V4h2v11h2V4h2V2h-8C7.79 2 6 3.79 6 6s1.79 4 4 4zm-2 7v-3l-4 4 4 4v-3h12v-2H8z" /></g> <g id="format-underlined"><path d="M12 17c3.31 0 6-2.69 6-6V3h-2.5v8c0 1.93-1.57 3.5-3.5 3.5S8.5 12.93 8.5 11V3H6v8c0 3.31 2.69 6 6 6zm-7 2v2h14v-2H5z" /></g> <g id="functions"><path d="M18 4H6v2l6.5 6L6 18v2h12v-3h-7l5-5-5-5h7z" /></g> <g id="highlight"><path d="M6 14l3 3v5h6v-5l3-3V9H6zm5-12h2v3h-2zM3.5 5.875L4.914 4.46l2.12 2.122L5.62 7.997zm13.46.71l2.123-2.12 1.414 1.414L18.375 8z" /></g> <g id="insert-chart"><path d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z" /></g> <g id="insert-comment"><path d="M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z" /></g> <g id="insert-drive-file"><path d="M6 2c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6H6zm7 7V3.5L18.5 9H13z" /></g> <g id="insert-emoticon"><path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm3.5-9c.83 0 1.5-.67 1.5-1.5S16.33 8 15.5 8 14 8.67 14 9.5s.67 1.5 1.5 1.5zm-7 0c.83 0 1.5-.67 1.5-1.5S9.33 8 8.5 8 7 8.67 7 9.5 7.67 11 8.5 11zm3.5 6.5c2.33 0 4.31-1.46 5.11-3.5H6.89c.8 2.04 2.78 3.5 5.11 3.5z" /></g> <g id="insert-invitation"><path d="M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z" /></g> <g id="insert-link"><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z" /></g> <g id="insert-photo"><path d="M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z" /></g> <g id="linear-scale"><path d="M19.5 9.5c-1.03 0-1.9.62-2.29 1.5h-2.92c-.39-.88-1.26-1.5-2.29-1.5s-1.9.62-2.29 1.5H6.79c-.39-.88-1.26-1.5-2.29-1.5C3.12 9.5 2 10.62 2 12s1.12 2.5 2.5 2.5c1.03 0 1.9-.62 2.29-1.5h2.92c.39.88 1.26 1.5 2.29 1.5s1.9-.62 2.29-1.5h2.92c.39.88 1.26 1.5 2.29 1.5 1.38 0 2.5-1.12 2.5-2.5s-1.12-2.5-2.5-2.5z" /></g> <g id="merge-type"><path d="M17 20.41L18.41 19 15 15.59 13.59 17 17 20.41zM7.5 8H11v5.59L5.59 19 7 20.41l6-6V8h3.5L12 3.5 7.5 8z" /></g> <g id="mode-comment"><path d="M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4-.01-18z" /></g> <g id="mode-edit"><path d="M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z" /></g> <g id="monetization-on"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1.41 16.09V20h-2.67v-1.93c-1.71-.36-3.16-1.46-3.27-3.4h1.96c.1 1.05.82 1.87 2.65 1.87 1.96 0 2.4-.98 2.4-1.59 0-.83-.44-1.61-2.67-2.14-2.48-.6-4.18-1.62-4.18-3.67 0-1.72 1.39-2.84 3.11-3.21V4h2.67v1.95c1.86.45 2.79 1.86 2.85 3.39H14.3c-.05-1.11-.64-1.87-2.22-1.87-1.5 0-2.4.68-2.4 1.64 0 .84.65 1.39 2.67 1.91s4.18 1.39 4.18 3.91c-.01 1.83-1.38 2.83-3.12 3.16z" /></g> <g id="money-off"><path d="M12.5 6.9c1.78 0 2.44.85 2.5 2.1h2.21c-.07-1.72-1.12-3.3-3.21-3.81V3h-3v2.16c-.53.12-1.03.3-1.48.54l1.47 1.47c.41-.17.91-.27 1.51-.27zM5.33 4.06L4.06 5.33 7.5 8.77c0 2.08 1.56 3.21 3.91 3.91l3.51 3.51c-.34.48-1.05.91-2.42.91-2.06 0-2.87-.92-2.98-2.1h-2.2c.12 2.19 1.76 3.42 3.68 3.83V21h3v-2.15c.96-.18 1.82-.55 2.45-1.12l2.22 2.22 1.27-1.27L5.33 4.06z" /></g> <g id="multiline-chart"><path d="M22 6.92l-1.41-1.41-2.85 3.21C15.68 6.4 12.83 5 9.61 5 6.72 5 4.07 6.16 2 8l1.42 1.42C5.12 7.93 7.27 7 9.61 7c2.74 0 5.09 1.26 6.77 3.24l-2.88 3.24-4-4L2 16.99l1.5 1.5 6-6.01 4 4 4.05-4.55c.75 1.35 1.25 2.9 1.44 4.55H21c-.22-2.3-.95-4.39-2.04-6.14L22 6.92z" /></g> <g id="pie-chart"><path d="M11 2v20c-5.07-.5-9-4.79-9-10s3.93-9.5 9-10zm2.03 0v8.99H22c-.47-4.74-4.24-8.52-8.97-8.99zm0 11.01V22c4.74-.47 8.5-4.25 8.97-8.99h-8.97z" /></g> <g id="pie-chart-outlined"><path d="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm1 2.07c3.61.45 6.48 3.33 6.93 6.93H13V4.07zM4 12c0-4.06 3.07-7.44 7-7.93v15.87c-3.93-.5-7-3.88-7-7.94zm9 7.93V13h6.93c-.45 3.61-3.32 6.48-6.93 6.93z" /></g> <g id="publish"><path d="M5 4v2h14V4H5zm0 10h4v6h6v-6h4l-7-7-7 7z" /></g> <g id="short-text"><path d="M4 9h16v2H4zm0 4h10v2H4z" /></g> <g id="show-chart"><path d="M3.5 18.49l6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99z" /></g> <g id="space-bar"><path d="M18 9v4H6V9H4v6h16V9z" /></g> <g id="strikethrough-s"><path d="M7.24 8.75c-.26-.48-.39-1.03-.39-1.67 0-.61.13-1.16.4-1.67.26-.5.63-.93 1.11-1.29.48-.35 1.05-.63 1.7-.83.66-.19 1.39-.29 2.18-.29.81 0 1.54.11 2.21.34.66.22 1.23.54 1.69.94.47.4.83.88 1.08 1.43.25.55.38 1.15.38 1.81h-3.01c0-.31-.05-.59-.15-.85-.09-.27-.24-.49-.44-.68-.2-.19-.45-.33-.75-.44-.3-.1-.66-.16-1.06-.16-.39 0-.74.04-1.03.13-.29.09-.53.21-.72.36-.19.16-.34.34-.44.55-.1.21-.15.43-.15.66 0 .48.25.88.74 1.21.38.25.77.48 1.41.7H7.39c-.05-.08-.11-.17-.15-.25zM21 12v-2H3v2h9.62c.18.07.4.14.55.2.37.17.66.34.87.51.21.17.35.36.43.57.07.2.11.43.11.69 0 .23-.05.45-.14.66-.09.2-.23.38-.42.53-.19.15-.42.26-.71.35-.29.08-.63.13-1.01.13-.43 0-.83-.04-1.18-.13s-.66-.23-.91-.42c-.25-.19-.45-.44-.59-.75-.14-.31-.25-.76-.25-1.21H6.4c0 .55.08 1.13.24 1.58.16.45.37.85.65 1.21.28.35.6.66.98.92.37.26.78.48 1.22.65.44.17.9.3 1.38.39.48.08.96.13 1.44.13.8 0 1.53-.09 2.18-.28s1.21-.45 1.67-.79c.46-.34.82-.77 1.07-1.27s.38-1.07.38-1.71c0-.6-.1-1.14-.31-1.61-.05-.11-.11-.23-.17-.33H21z" /></g> <g id="text-fields"><path d="M2.5 4v3h5v12h3V7h5V4h-13zm19 5h-9v3h3v7h3v-7h3V9z" /></g> <g id="title"><path d="M5 4v3h5.5v12h3V7H19V4z" /></g> <g id="vertical-align-bottom"><path d="M16 13h-3V3h-2v10H8l4 4 4-4zM4 19v2h16v-2H4z" /></g> <g id="vertical-align-center"><path d="M8 19h3v4h2v-4h3l-4-4-4 4zm8-14h-3V1h-2v4H8l4 4 4-4zM4 11v2h16v-2H4z" /></g> <g id="vertical-align-top"><path d="M8 11h3v10h2V11h3l-4-4-4 4zM4 3v2h16V3H4z" /></g> <g id="wrap-text"><path d="M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3 3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z" /></g> </defs></svg> </iron-iconset-svg> <iron-iconset-svg name="hardware" size="24"> <svg><defs> <g id="cast"><path d="M21 3H3c-1.1 0-2 .9-2 2v3h2V5h18v14h-7v2h7c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM1 18v3h3c0-1.66-1.34-3-3-3zm0-4v2c2.76 0 5 2.24 5 5h2c0-3.87-3.13-7-7-7zm0-4v2c4.97 0 9 4.03 9 9h2c0-6.08-4.93-11-11-11z" /></g> <g id="cast-connected"><path d="M1 18v3h3c0-1.66-1.34-3-3-3zm0-4v2c2.76 0 5 2.24 5 5h2c0-3.87-3.13-7-7-7zm18-7H5v1.63c3.96 1.28 7.09 4.41 8.37 8.37H19V7zM1 10v2c4.97 0 9 4.03 9 9h2c0-6.08-4.93-11-11-11zm20-7H3c-1.1 0-2 .9-2 2v3h2V5h18v14h-7v2h7c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" /></g> <g id="computer"><path d="M20 18c1.1 0 1.99-.9 1.99-2L22 6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2H0v2h24v-2h-4zM4 6h16v10H4V6z" /></g> <g id="desktop-mac"><path d="M21 2H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h7l-2 3v1h8v-1l-2-3h7c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 12H3V4h18v10z" /></g> <g id="desktop-windows"><path d="M21 2H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h7v2H8v2h8v-2h-2v-2h7c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H3V4h18v12z" /></g> <g id="developer-board"><path d="M22 9V7h-2V5c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-2h2v-2h-2v-2h2v-2h-2V9h2zm-4 10H4V5h14v14zM6 13h5v4H6zm6-6h4v3h-4zM6 7h5v5H6zm6 4h4v6h-4z" /></g> <g id="device-hub"><path d="M17 16l-4-4V8.82C14.16 8.4 15 7.3 15 6c0-1.66-1.34-3-3-3S9 4.34 9 6c0 1.3.84 2.4 2 2.82V12l-4 4H3v5h5v-3.05l4-4.2 4 4.2V21h5v-5h-4z" /></g> <g id="devices-other"><path d="M3 6h18V4H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4v-2H3V6zm10 6H9v1.78c-.61.55-1 1.33-1 2.22s.39 1.67 1 2.22V20h4v-1.78c.61-.55 1-1.34 1-2.22s-.39-1.67-1-2.22V12zm-2 5.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zM22 8h-6c-.5 0-1 .5-1 1v10c0 .5.5 1 1 1h6c.5 0 1-.5 1-1V9c0-.5-.5-1-1-1zm-1 10h-4v-8h4v8z" /></g> <g id="dock"><path d="M8 23h8v-2H8v2zm8-21.99L8 1c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V3c0-1.1-.9-1.99-2-1.99zM16 15H8V5h8v10z" /></g> <g id="gamepad"><path d="M15 7.5V2H9v5.5l3 3 3-3zM7.5 9H2v6h5.5l3-3-3-3zM9 16.5V22h6v-5.5l-3-3-3 3zM16.5 9l-3 3 3 3H22V9h-5.5z" /></g> <g id="headset"><path d="M12 1c-4.97 0-9 4.03-9 9v7c0 1.66 1.34 3 3 3h3v-8H5v-2c0-3.87 3.13-7 7-7s7 3.13 7 7v2h-4v8h3c1.66 0 3-1.34 3-3v-7c0-4.97-4.03-9-9-9z" /></g> <g id="headset-mic"><path d="M12 1c-4.97 0-9 4.03-9 9v7c0 1.66 1.34 3 3 3h3v-8H5v-2c0-3.87 3.13-7 7-7s7 3.13 7 7v2h-4v8h4v1h-7v2h6c1.66 0 3-1.34 3-3V10c0-4.97-4.03-9-9-9z" /></g> <g id="keyboard"><path d="M20 5H4c-1.1 0-1.99.9-1.99 2L2 17c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-9 3h2v2h-2V8zm0 3h2v2h-2v-2zM8 8h2v2H8V8zm0 3h2v2H8v-2zm-1 2H5v-2h2v2zm0-3H5V8h2v2zm9 7H8v-2h8v2zm0-4h-2v-2h2v2zm0-3h-2V8h2v2zm3 3h-2v-2h2v2zm0-3h-2V8h2v2z" /></g> <g id="keyboard-arrow-down"><path d="M7.41 7.84L12 12.42l4.59-4.58L18 9.25l-6 6-6-6z" /></g> <g id="keyboard-arrow-left"><path d="M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z" /></g> <g id="keyboard-arrow-right"><path d="M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z" /></g> <g id="keyboard-arrow-up"><path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z" /></g> <g id="keyboard-backspace"><path d="M21 11H6.83l3.58-3.59L9 6l-6 6 6 6 1.41-1.41L6.83 13H21z" /></g> <g id="keyboard-capslock"><path d="M12 8.41L16.59 13 18 11.59l-6-6-6 6L7.41 13 12 8.41zM6 18h12v-2H6v2z" /></g> <g id="keyboard-hide"><path d="M20 3H4c-1.1 0-1.99.9-1.99 2L2 15c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-9 3h2v2h-2V6zm0 3h2v2h-2V9zM8 6h2v2H8V6zm0 3h2v2H8V9zm-1 2H5V9h2v2zm0-3H5V6h2v2zm9 7H8v-2h8v2zm0-4h-2V9h2v2zm0-3h-2V6h2v2zm3 3h-2V9h2v2zm0-3h-2V6h2v2zm-7 15l4-4H8l4 4z" /></g> <g id="keyboard-return"><path d="M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z" /></g> <g id="keyboard-tab"><path d="M11.59 7.41L15.17 11H1v2h14.17l-3.59 3.59L13 18l6-6-6-6-1.41 1.41zM20 6v12h2V6h-2z" /></g> <g id="keyboard-voice"><path d="M12 15c1.66 0 2.99-1.34 2.99-3L15 6c0-1.66-1.34-3-3-3S9 4.34 9 6v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 15 6.7 12H5c0 3.42 2.72 6.23 6 6.72V22h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z" /></g> <g id="laptop"><path d="M20 18c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2H0v2h24v-2h-4zM4 6h16v10H4V6z" /></g> <g id="laptop-chromebook"><path d="M22 18V3H2v15H0v2h24v-2h-2zm-8 0h-4v-1h4v1zm6-3H4V5h16v10z" /></g> <g id="laptop-mac"><path d="M20 18c1.1 0 1.99-.9 1.99-2L22 5c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v11c0 1.1.9 2 2 2H0c0 1.1.9 2 2 2h20c1.1 0 2-.9 2-2h-4zM4 5h16v11H4V5zm8 14c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z" /></g> <g id="laptop-windows"><path d="M20 18v-1c1.1 0 1.99-.9 1.99-2L22 5c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2v1H0v2h24v-2h-4zM4 5h16v10H4V5z" /></g> <g id="memory"><path d="M15 9H9v6h6V9zm-2 4h-2v-2h2v2zm8-2V9h-2V7c0-1.1-.9-2-2-2h-2V3h-2v2h-2V3H9v2H7c-1.1 0-2 .9-2 2v2H3v2h2v2H3v2h2v2c0 1.1.9 2 2 2h2v2h2v-2h2v2h2v-2h2c1.1 0 2-.9 2-2v-2h2v-2h-2v-2h2zm-4 6H7V7h10v10z" /></g> <g id="mouse"><path d="M13 1.07V9h7c0-4.08-3.05-7.44-7-7.93zM4 15c0 4.42 3.58 8 8 8s8-3.58 8-8v-4H4v4zm7-13.93C7.05 1.56 4 4.92 4 9h7V1.07z" /></g> <g id="phone-android"><path d="M16 1H8C6.34 1 5 2.34 5 4v16c0 1.66 1.34 3 3 3h8c1.66 0 3-1.34 3-3V4c0-1.66-1.34-3-3-3zm-2 20h-4v-1h4v1zm3.25-3H6.75V4h10.5v14z" /></g> <g id="phone-iphone"><path d="M15.5 1h-8C6.12 1 5 2.12 5 3.5v17C5 21.88 6.12 23 7.5 23h8c1.38 0 2.5-1.12 2.5-2.5v-17C18 2.12 16.88 1 15.5 1zm-4 21c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm4.5-4H7V4h9v14z" /></g> <g id="phonelink"><path d="M4 6h18V4H4c-1.1 0-2 .9-2 2v11H0v3h14v-3H4V6zm19 2h-6c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h6c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1zm-1 9h-4v-7h4v7z" /></g> <g id="phonelink-off"><path d="M22 6V4H6.82l2 2H22zM1.92 1.65L.65 2.92l1.82 1.82C2.18 5.08 2 5.52 2 6v11H0v3h17.73l2.35 2.35 1.27-1.27L3.89 3.62 1.92 1.65zM4 6.27L14.73 17H4V6.27zM23 8h-6c-.55 0-1 .45-1 1v4.18l2 2V10h4v7h-2.18l3 3H23c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1z" /></g> <g id="power-input"><path d="M2 9v2h19V9H2zm0 6h5v-2H2v2zm7 0h5v-2H9v2zm7 0h5v-2h-5v2z" /></g> <g id="router"><path d="M20.2 5.9l.8-.8C19.6 3.7 17.8 3 16 3s-3.6.7-5 2.1l.8.8C13 4.8 14.5 4.2 16 4.2s3 .6 4.2 1.7zm-.9.8c-.9-.9-2.1-1.4-3.3-1.4s-2.4.5-3.3 1.4l.8.8c.7-.7 1.6-1 2.5-1 .9 0 1.8.3 2.5 1l.8-.8zM19 13h-2V9h-2v4H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-4c0-1.1-.9-2-2-2zM8 18H6v-2h2v2zm3.5 0h-2v-2h2v2zm3.5 0h-2v-2h2v2z" /></g> <g id="scanner"><path d="M19.8 10.7L4.2 5l-.7 1.9L17.6 12H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-5.5c0-.8-.5-1.6-1.2-1.8zM7 17H5v-2h2v2zm12 0H9v-2h10v2z" /></g> <g id="security"><path d="M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm0 10.99h7c-.53 4.12-3.28 7.79-7 8.94V12H5V6.3l7-3.11v8.8z" /></g> <g id="sim-card"><path d="M19.99 4c0-1.1-.89-2-1.99-2h-8L4 8v12c0 1.1.9 2 2 2h12.01c1.1 0 1.99-.9 1.99-2l-.01-16zM9 19H7v-2h2v2zm8 0h-2v-2h2v2zm-8-4H7v-4h2v4zm4 4h-2v-4h2v4zm0-6h-2v-2h2v2zm4 2h-2v-4h2v4z" /></g> <g id="smartphone"><path d="M17 1.01L7 1c-1.1 0-2 .9-2 2v18c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-1.99-2-1.99zM17 19H7V5h10v14z" /></g> <g id="speaker"><path d="M17 2H7c-1.1 0-2 .9-2 2v16c0 1.1.9 1.99 2 1.99L17 22c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-5 2c1.1 0 2 .9 2 2s-.9 2-2 2c-1.11 0-2-.9-2-2s.89-2 2-2zm0 16c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z" /></g> <g id="speaker-group"><path d="M18.2 1H9.8C8.81 1 8 1.81 8 2.8v14.4c0 .99.81 1.79 1.8 1.79l8.4.01c.99 0 1.8-.81 1.8-1.8V2.8c0-.99-.81-1.8-1.8-1.8zM14 3c1.1 0 2 .89 2 2s-.9 2-2 2-2-.89-2-2 .9-2 2-2zm0 13.5c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4z" /><circle cx="14" cy="12.5" r="2.5" /><path d="M6 5H4v16c0 1.1.89 2 2 2h10v-2H6V5z" /></g> <g id="tablet"><path d="M21 4H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h18c1.1 0 1.99-.9 1.99-2L23 6c0-1.1-.9-2-2-2zm-2 14H5V6h14v12z" /></g> <g id="tablet-android"><path d="M18 0H6C4.34 0 3 1.34 3 3v18c0 1.66 1.34 3 3 3h12c1.66 0 3-1.34 3-3V3c0-1.66-1.34-3-3-3zm-4 22h-4v-1h4v1zm5.25-3H4.75V3h14.5v16z" /></g> <g id="tablet-mac"><path d="M18.5 0h-14C3.12 0 2 1.12 2 2.5v19C2 22.88 3.12 24 4.5 24h14c1.38 0 2.5-1.12 2.5-2.5v-19C21 1.12 19.88 0 18.5 0zm-7 23c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm7.5-4H4V3h15v16z" /></g> <g id="toys"><path d="M12 12c0-3 2.5-5.5 5.5-5.5S23 9 23 12H12zm0 0c0 3-2.5 5.5-5.5 5.5S1 15 1 12h11zm0 0c-3 0-5.5-2.5-5.5-5.5S9 1 12 1v11zm0 0c3 0 5.5 2.5 5.5 5.5S15 23 12 23V12z" /></g> <g id="tv"><path d="M21 3H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5c0-1.1-.9-2-2-2zm0 14H3V5h18v12z" /></g> <g id="videogame-asset"><path d="M21 6H3c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-10 7H8v3H6v-3H3v-2h3V8h2v3h3v2zm4.5 2c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm4-3c-.83 0-1.5-.67-1.5-1.5S18.67 9 19.5 9s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z" /></g> <g id="watch"><path d="M20 12c0-2.54-1.19-4.81-3.04-6.27L16 0H8l-.95 5.73C5.19 7.19 4 9.45 4 12s1.19 4.81 3.05 6.27L8 24h8l.96-5.73C18.81 16.81 20 14.54 20 12zM6 12c0-3.31 2.69-6 6-6s6 2.69 6 6-2.69 6-6 6-6-2.69-6-6z" /></g> </defs></svg> </iron-iconset-svg> <iron-iconset-svg name="icons" size="24"> <svg><defs> <g id="3d-rotation"><path d="M7.52 21.48C4.25 19.94 1.91 16.76 1.55 13H.05C.56 19.16 5.71 24 12 24l.66-.03-3.81-3.81-1.33 1.32zm.89-6.52c-.19 0-.37-.03-.52-.08-.16-.06-.29-.13-.4-.24-.11-.1-.2-.22-.26-.37-.06-.14-.09-.3-.09-.47h-1.3c0 .36.07.68.21.95.14.27.33.5.56.69.24.18.51.32.82.41.3.1.62.15.96.15.37 0 .72-.05 1.03-.15.32-.1.6-.25.83-.44s.42-.43.55-.72c.13-.29.2-.61.2-.97 0-.19-.02-.38-.07-.56-.05-.18-.12-.35-.23-.51-.1-.16-.24-.3-.4-.43-.17-.13-.37-.23-.61-.31.2-.09.37-.2.52-.33.15-.13.27-.27.37-.42.1-.15.17-.3.22-.46.05-.16.07-.32.07-.48 0-.36-.06-.68-.18-.96-.12-.28-.29-.51-.51-.69-.2-.19-.47-.33-.77-.43C9.1 8.05 8.76 8 8.39 8c-.36 0-.69.05-1 .16-.3.11-.57.26-.79.45-.21.19-.38.41-.51.67-.12.26-.18.54-.18.85h1.3c0-.17.03-.32.09-.45s.14-.25.25-.34c.11-.09.23-.17.38-.22.15-.05.3-.08.48-.08.4 0 .7.1.89.31.19.2.29.49.29.86 0 .18-.03.34-.08.49-.05.15-.14.27-.25.37-.11.1-.25.18-.41.24-.16.06-.36.09-.58.09H7.5v1.03h.77c.22 0 .42.02.6.07s.33.13.45.23c.12.11.22.24.29.4.07.16.1.35.1.57 0 .41-.12.72-.35.93-.23.23-.55.33-.95.33zm8.55-5.92c-.32-.33-.7-.59-1.14-.77-.43-.18-.92-.27-1.46-.27H12v8h2.3c.55 0 1.06-.09 1.51-.27.45-.18.84-.43 1.16-.76.32-.33.57-.73.74-1.19.17-.47.26-.99.26-1.57v-.4c0-.58-.09-1.1-.26-1.57-.18-.47-.43-.87-.75-1.2zm-.39 3.16c0 .42-.05.79-.14 1.13-.1.33-.24.62-.43.85-.19.23-.43.41-.71.53-.29.12-.62.18-.99.18h-.91V9.12h.97c.72 0 1.27.23 1.64.69.38.46.57 1.12.57 1.99v.4zM12 0l-.66.03 3.81 3.81 1.33-1.33c3.27 1.55 5.61 4.72 5.96 8.48h1.5C23.44 4.84 18.29 0 12 0z" /></g> <g id="accessibility"><path d="M12 2c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm9 7h-6v13h-2v-6h-2v6H9V9H3V7h18v2z" /></g> <g id="accessible"><circle cx="12" cy="4" r="2" /><path d="M19 13v-2c-1.54.02-3.09-.75-4.07-1.83l-1.29-1.43c-.17-.19-.38-.34-.61-.45-.01 0-.01-.01-.02-.01H13c-.35-.2-.75-.3-1.19-.26C10.76 7.11 10 8.04 10 9.09V15c0 1.1.9 2 2 2h5v5h2v-5.5c0-1.1-.9-2-2-2h-3v-3.45c1.29 1.07 3.25 1.94 5 1.95zm-6.17 5c-.41 1.16-1.52 2-2.83 2-1.66 0-3-1.34-3-3 0-1.31.84-2.41 2-2.83V12.1c-2.28.46-4 2.48-4 4.9 0 2.76 2.24 5 5 5 2.42 0 4.44-1.72 4.9-4h-2.07z" /></g> <g id="account-balance"><path d="M4 10v7h3v-7H4zm6 0v7h3v-7h-3zM2 22h19v-3H2v3zm14-12v7h3v-7h-3zm-4.5-9L2 6v2h19V6l-9.5-5z" /></g> <g id="account-balance-wallet"><path d="M21 18v1c0 1.1-.9 2-2 2H5c-1.11 0-2-.9-2-2V5c0-1.1.89-2 2-2h14c1.1 0 2 .9 2 2v1h-9c-1.11 0-2 .9-2 2v8c0 1.1.89 2 2 2h9zm-9-2h10V8H12v8zm4-2.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z" /></g> <g id="account-box"><path d="M3 5v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2H5c-1.11 0-2 .9-2 2zm12 4c0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3 3 1.34 3 3zm-9 8c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1H6v-1z" /></g> <g id="account-circle"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm0 14.2c-2.5 0-4.71-1.28-6-3.22.03-1.99 4-3.08 6-3.08 1.99 0 5.97 1.09 6 3.08-1.29 1.94-3.5 3.22-6 3.22z" /></g> <g id="add"><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" /></g> <g id="add-alert"><path d="M10.01 21.01c0 1.1.89 1.99 1.99 1.99s1.99-.89 1.99-1.99h-3.98zm8.87-4.19V11c0-3.25-2.25-5.97-5.29-6.69v-.72C13.59 2.71 12.88 2 12 2s-1.59.71-1.59 1.59v.72C7.37 5.03 5.12 7.75 5.12 11v5.82L3 18.94V20h18v-1.06l-2.12-2.12zM16 13.01h-3v3h-2v-3H8V11h3V8h2v3h3v2.01z" /></g> <g id="add-box"><path d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10h-4v4h-2v-4H7v-2h4V7h2v4h4v2z" /></g> <g id="add-circle"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11h-4v4h-2v-4H7v-2h4V7h2v4h4v2z" /></g> <g id="add-circle-outline"><path d="M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z" /></g> <g id="add-shopping-cart"><path d="M11 9h2V6h3V4h-3V1h-2v3H8v2h3v3zm-4 9c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zm10 0c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2zm-9.83-3.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.86-7.01L19.42 4h-.01l-1.1 2-2.76 5H8.53l-.13-.27L6.16 6l-.95-2-.94-2H1v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.13 0-.25-.11-.25-.25z" /></g> <g id="alarm"><path d="M22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12.5 8H11v6l4.75 2.85.75-1.23-4-2.37V8zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z" /></g> <g id="alarm-add"><path d="M7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7zm1-11h-2v3H8v2h3v3h2v-3h3v-2h-3V9z" /></g> <g id="alarm-off"><path d="M12 6c3.87 0 7 3.13 7 7 0 .84-.16 1.65-.43 2.4l1.52 1.52c.58-1.19.91-2.51.91-3.92 0-4.97-4.03-9-9-9-1.41 0-2.73.33-3.92.91L9.6 6.43C10.35 6.16 11.16 6 12 6zm10-.28l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM2.92 2.29L1.65 3.57 2.98 4.9l-1.11.93 1.42 1.42 1.11-.94.8.8C3.83 8.69 3 10.75 3 13c0 4.97 4.02 9 9 9 2.25 0 4.31-.83 5.89-2.2l2.2 2.2 1.27-1.27L3.89 3.27l-.97-.98zm13.55 16.1C15.26 19.39 13.7 20 12 20c-3.87 0-7-3.13-7-7 0-1.7.61-3.26 1.61-4.47l9.86 9.86zM8.02 3.28L6.6 1.86l-.86.71 1.42 1.42.86-.71z" /></g> <g id="alarm-on"><path d="M22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7zm-1.46-5.47L8.41 12.4l-1.06 1.06 3.18 3.18 6-6-1.06-1.06-4.93 4.95z" /></g> <g id="all-out"><path d="M16.21 4.16l4 4v-4zm4 12l-4 4h4zm-12 4l-4-4v4zm-4-12l4-4h-4zm12.95-.95c-2.73-2.73-7.17-2.73-9.9 0s-2.73 7.17 0 9.9 7.17 2.73 9.9 0 2.73-7.16 0-9.9zm-1.1 8.8c-2.13 2.13-5.57 2.13-7.7 0s-2.13-5.57 0-7.7 5.57-2.13 7.7 0 2.13 5.57 0 7.7z" /></g> <g id="android"><path d="M6 18c0 .55.45 1 1 1h1v3.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5V19h2v3.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5V19h1c.55 0 1-.45 1-1V8H6v10zM3.5 8C2.67 8 2 8.67 2 9.5v7c0 .83.67 1.5 1.5 1.5S5 17.33 5 16.5v-7C5 8.67 4.33 8 3.5 8zm17 0c-.83 0-1.5.67-1.5 1.5v7c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5v-7c0-.83-.67-1.5-1.5-1.5zm-4.97-5.84l1.3-1.3c.2-.2.2-.51 0-.71-.2-.2-.51-.2-.71 0l-1.48 1.48C13.85 1.23 12.95 1 12 1c-.96 0-1.86.23-2.66.63L7.85.15c-.2-.2-.51-.2-.71 0-.2.2-.2.51 0 .71l1.31 1.31C6.97 3.26 6 5.01 6 7h12c0-1.99-.97-3.75-2.47-4.84zM10 5H9V4h1v1zm5 0h-1V4h1v1z" /></g> <g id="announcement"><path d="M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-7 9h-2V5h2v6zm0 4h-2v-2h2v2z" /></g> <g id="apps"><path d="M4 8h4V4H4v4zm6 12h4v-4h-4v4zm-6 0h4v-4H4v4zm0-6h4v-4H4v4zm6 0h4v-4h-4v4zm6-10v4h4V4h-4zm-6 4h4V4h-4v4zm6 6h4v-4h-4v4zm0 6h4v-4h-4v4z" /></g> <g id="archive"><path d="M20.54 5.23l-1.39-1.68C18.88 3.21 18.47 3 18 3H6c-.47 0-.88.21-1.16.55L3.46 5.23C3.17 5.57 3 6.02 3 6.5V19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6.5c0-.48-.17-.93-.46-1.27zM12 17.5L6.5 12H10v-2h4v2h3.5L12 17.5zM5.12 5l.81-1h12l.94 1H5.12z" /></g> <g id="arrow-back"><path d="M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z" /></g> <g id="arrow-downward"><path d="M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z" /></g> <g id="arrow-drop-down"><path d="M7 10l5 5 5-5z" /></g> <g id="arrow-drop-down-circle"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 12l-4-4h8l-4 4z" /></g> <g id="arrow-drop-up"><path d="M7 14l5-5 5 5z" /></g> <g id="arrow-forward"><path d="M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z" /></g> <g id="arrow-upward"><path d="M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z" /></g> <g id="aspect-ratio"><path d="M19 12h-2v3h-3v2h5v-5zM7 9h3V7H5v5h2V9zm14-6H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16.01H3V4.99h18v14.02z" /></g> <g id="assessment"><path d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z" /></g> <g id="assignment"><path d="M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm2 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z" /></g> <g id="assignment-ind"><path d="M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 4c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm6 12H6v-1.4c0-2 4-3.1 6-3.1s6 1.1 6 3.1V19z" /></g> <g id="assignment-late"><path d="M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-6 15h-2v-2h2v2zm0-4h-2V8h2v6zm-1-9c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z" /></g> <g id="assignment-return"><path d="M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm4 12h-4v3l-5-5 5-5v3h4v4z" /></g> <g id="assignment-returned"><path d="M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 15l-5-5h3V9h4v4h3l-5 5z" /></g> <g id="assignment-turned-in"><path d="M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm-2 14l-4-4 1.41-1.41L10 14.17l6.59-6.59L18 9l-8 8z" /></g> <g id="attachment"><path d="M2 12.5C2 9.46 4.46 7 7.5 7H18c2.21 0 4 1.79 4 4s-1.79 4-4 4H9.5C8.12 15 7 13.88 7 12.5S8.12 10 9.5 10H17v2H9.41c-.55 0-.55 1 0 1H18c1.1 0 2-.9 2-2s-.9-2-2-2H7.5C5.57 9 4 10.57 4 12.5S5.57 16 7.5 16H17v2H7.5C4.46 18 2 15.54 2 12.5z" /></g> <g id="autorenew"><path d="M12 6v3l4-4-4-4v3c-4.42 0-8 3.58-8 8 0 1.57.46 3.03 1.24 4.26L6.7 14.8c-.45-.83-.7-1.79-.7-2.8 0-3.31 2.69-6 6-6zm6.76 1.74L17.3 9.2c.44.84.7 1.79.7 2.8 0 3.31-2.69 6-6 6v-3l-4 4 4 4v-3c4.42 0 8-3.58 8-8 0-1.57-.46-3.03-1.24-4.26z" /></g> <g id="backspace"><path d="M22 3H7c-.69 0-1.23.35-1.59.88L0 12l5.41 8.11c.36.53.9.89 1.59.89h15c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-3 12.59L17.59 17 14 13.41 10.41 17 9 15.59 12.59 12 9 8.41 10.41 7 14 10.59 17.59 7 19 8.41 15.41 12 19 15.59z" /></g> <g id="backup"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z" /></g> <g id="block"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12zm8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8z" /></g> <g id="book"><path d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z" /></g> <g id="bookmark"><path d="M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2z" /></g> <g id="bookmark-border"><path d="M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2zm0 15l-5-2.18L7 18V5h10v13z" /></g> <g id="bug-report"><path d="M20 8h-2.81c-.45-.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12.49 5 12 5c-.49 0-.96.06-1.41.17L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8zm-6 8h-4v-2h4v2zm0-4h-4v-2h4v2z" /></g> <g id="build"><path d="M22.7 19l-9.1-9.1c.9-2.3.4-5-1.5-6.9-2-2-5-2.4-7.4-1.3L9 6 6 9 1.6 4.7C.4 7.1.9 10.1 2.9 12.1c1.9 1.9 4.6 2.4 6.9 1.5l9.1 9.1c.4.4 1 .4 1.4 0l2.3-2.3c.5-.4.5-1.1.1-1.4z" /></g> <g id="cached"><path d="M19 8l-4 4h3c0 3.31-2.69 6-6 6-1.01 0-1.97-.25-2.8-.7l-1.46 1.46C8.97 19.54 10.43 20 12 20c4.42 0 8-3.58 8-8h3l-4-4zM6 12c0-3.31 2.69-6 6-6 1.01 0 1.97.25 2.8.7l1.46-1.46C15.03 4.46 13.57 4 12 4c-4.42 0-8 3.58-8 8H1l4 4 4-4H6z" /></g> <g id="camera-enhance"><path d="M9 3L7.17 5H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2h-3.17L15 3H9zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-1l1.25-2.75L16 13l-2.75-1.25L12 9l-1.25 2.75L8 13l2.75 1.25z" /></g> <g id="cancel"><path d="M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z" /></g> <g id="card-giftcard"><path d="M20 6h-2.18c.11-.31.18-.65.18-1 0-1.66-1.34-3-3-3-1.05 0-1.96.54-2.5 1.35l-.5.67-.5-.68C10.96 2.54 10.05 2 9 2 7.34 2 6 3.34 6 5c0 .35.07.69.18 1H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-5-2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM9 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm11 15H4v-2h16v2zm0-5H4V8h5.08L7 10.83 8.62 12 11 8.76l1-1.36 1 1.36L15.38 12 17 10.83 14.92 8H20v6z" /></g> <g id="card-membership"><path d="M20 2H4c-1.11 0-2 .89-2 2v11c0 1.11.89 2 2 2h4v5l4-2 4 2v-5h4c1.11 0 2-.89 2-2V4c0-1.11-.89-2-2-2zm0 13H4v-2h16v2zm0-5H4V4h16v6z" /></g> <g id="card-travel"><path d="M20 6h-3V4c0-1.11-.89-2-2-2H9c-1.11 0-2 .89-2 2v2H4c-1.11 0-2 .89-2 2v11c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zM9 4h6v2H9V4zm11 15H4v-2h16v2zm0-5H4V8h3v2h2V8h6v2h2V8h3v6z" /></g> <g id="change-history"><path d="M12 7.77L18.39 18H5.61L12 7.77M12 4L2 20h20L12 4z" /></g> <g id="check"><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z" /></g> <g id="check-box"><path d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" /></g> <g id="check-box-outline-blank"><path d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" /></g> <g id="check-circle"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" /></g> <g id="chevron-left"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z" /></g> <g id="chevron-right"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z" /></g> <g id="chrome-reader-mode"><path d="M13 12h7v1.5h-7zm0-2.5h7V11h-7zm0 5h7V16h-7zM21 4H3c-1.1 0-2 .9-2 2v13c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 15h-9V6h9v13z" /></g> <g id="class"><path d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z" /></g> <g id="clear"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" /></g> <g id="close"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" /></g> <g id="cloud"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96z" /></g> <g id="cloud-circle"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm4.5 14H8c-1.66 0-3-1.34-3-3s1.34-3 3-3l.14.01C8.58 8.28 10.13 7 12 7c2.21 0 4 1.79 4 4h.5c1.38 0 2.5 1.12 2.5 2.5S17.88 16 16.5 16z" /></g> <g id="cloud-done"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM10 17l-3.5-3.5 1.41-1.41L10 14.17 15.18 9l1.41 1.41L10 17z" /></g> <g id="cloud-download"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM17 13l-5 5-5-5h3V9h4v4h3z" /></g> <g id="cloud-off"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4c-1.48 0-2.85.43-4.01 1.17l1.46 1.46C10.21 6.23 11.08 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.66 0 3 1.34 3 3 0 1.13-.64 2.11-1.56 2.62l1.45 1.45C23.16 18.16 24 16.68 24 15c0-2.64-2.05-4.78-4.65-4.96zM3 5.27l2.75 2.74C2.56 8.15 0 10.77 0 14c0 3.31 2.69 6 6 6h11.73l2 2L21 20.73 4.27 4 3 5.27zM7.73 10l8 8H6c-2.21 0-4-1.79-4-4s1.79-4 4-4h1.73z" /></g> <g id="cloud-queue"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM19 18H6c-2.21 0-4-1.79-4-4s1.79-4 4-4h.71C7.37 7.69 9.48 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.66 0 3 1.34 3 3s-1.34 3-3 3z" /></g> <g id="cloud-upload"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z" /></g> <g id="code"><path d="M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z" /></g> <g id="compare-arrows"><path d="M9.01 14H2v2h7.01v3L13 15l-3.99-4v3zm5.98-1v-3H22V8h-7.01V5L11 9l3.99 4z" /></g> <g id="content-copy"><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z" /></g> <g id="content-cut"><path d="M9.64 7.64c.23-.5.36-1.05.36-1.64 0-2.21-1.79-4-4-4S2 3.79 2 6s1.79 4 4 4c.59 0 1.14-.13 1.64-.36L10 12l-2.36 2.36C7.14 14.13 6.59 14 6 14c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4c0-.59-.13-1.14-.36-1.64L12 14l7 7h3v-1L9.64 7.64zM6 8c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-.9 2-2 2zm0 12c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-.9 2-2 2zm6-7.5c-.28 0-.5-.22-.5-.5s.22-.5.5-.5.5.22.5.5-.22.5-.5.5zM19 3l-6 6 2 2 7-7V3z" /></g> <g id="content-paste"><path d="M19 2h-4.18C14.4.84 13.3 0 12 0c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm7 18H5V4h2v3h10V4h2v16z" /></g> <g id="copyright"><path d="M10.08 10.86c.05-.33.16-.62.3-.87s.34-.46.59-.62c.24-.15.54-.22.91-.23.23.01.44.05.63.13.2.09.38.21.52.36s.25.33.34.53.13.42.14.64h1.79c-.02-.47-.11-.9-.28-1.29s-.4-.73-.7-1.01-.66-.5-1.08-.66-.88-.23-1.39-.23c-.65 0-1.22.11-1.7.34s-.88.53-1.2.92-.56.84-.71 1.36S8 11.29 8 11.87v.27c0 .58.08 1.12.23 1.64s.39.97.71 1.35.72.69 1.2.91 1.05.34 1.7.34c.47 0 .91-.08 1.32-.23s.77-.36 1.08-.63.56-.58.74-.94.29-.74.3-1.15h-1.79c-.01.21-.06.4-.15.58s-.21.33-.36.46-.32.23-.52.3c-.19.07-.39.09-.6.1-.36-.01-.66-.08-.89-.23-.25-.16-.45-.37-.59-.62s-.25-.55-.3-.88-.08-.67-.08-1v-.27c0-.35.03-.68.08-1.01zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z" /></g> <g id="create"><path d="M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z" /></g> <g id="create-new-folder"><path d="M20 6h-8l-2-2H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-1 8h-3v3h-2v-3h-3v-2h3V9h2v3h3v2z" /></g> <g id="credit-card"><path d="M20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4v-6h16v6zm0-10H4V6h16v2z" /></g> <g id="dashboard"><path d="M3 13h8V3H3v10zm0 8h8v-6H3v6zm10 0h8V11h-8v10zm0-18v6h8V3h-8z" /></g> <g id="date-range"><path d="M9 11H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2zm2-7h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z" /></g> <g id="delete"><path d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z" /></g> <g id="delete-forever"><path d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z" /></g> <g id="delete-sweep"><path d="M15 16h4v2h-4zm0-8h7v2h-7zm0 4h6v2h-6zM3 18c0 1.1.9 2 2 2h6c1.1 0 2-.9 2-2V8H3v10zM14 5h-3l-1-1H6L5 5H2v2h12z" /></g> <g id="description"><path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z" /></g> <g id="dns"><path d="M20 13H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1v-6c0-.55-.45-1-1-1zM7 19c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM20 3H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zM7 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z" /></g> <g id="done"><path d="M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z" /></g> <g id="done-all"><path d="M18 7l-1.41-1.41-6.34 6.34 1.41 1.41L18 7zm4.24-1.41L11.66 16.17 7.48 12l-1.41 1.41L11.66 19l12-12-1.42-1.41zM.41 13.41L6 19l1.41-1.41L1.83 12 .41 13.41z" /></g> <g id="donut-large"><path d="M11 5.08V2c-5 .5-9 4.81-9 10s4 9.5 9 10v-3.08c-3-.48-6-3.4-6-6.92s3-6.44 6-6.92zM18.97 11H22c-.47-5-4-8.53-9-9v3.08C16 5.51 18.54 8 18.97 11zM13 18.92V22c5-.47 8.53-4 9-9h-3.03c-.43 3-2.97 5.49-5.97 5.92z" /></g> <g id="donut-small"><path d="M11 9.16V2c-5 .5-9 4.79-9 10s4 9.5 9 10v-7.16c-1-.41-2-1.52-2-2.84s1-2.43 2-2.84zM14.86 11H22c-.48-4.75-4-8.53-9-9v7.16c1 .3 1.52.98 1.86 1.84zM13 14.84V22c5-.47 8.52-4.25 9-9h-7.14c-.34.86-.86 1.54-1.86 1.84z" /></g> <g id="drafts"><path d="M21.99 8c0-.72-.37-1.35-.94-1.7L12 1 2.95 6.3C2.38 6.65 2 7.28 2 8v10c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2l-.01-10zM12 13L3.74 7.84 12 3l8.26 4.84L12 13z" /></g> <g id="eject"><path d="M5 17h14v2H5zm7-12L5.33 15h13.34z" /></g> <g id="error"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z" /></g> <g id="error-outline"><path d="M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z" /></g> <g id="euro-symbol"><path d="M15 18.5c-2.51 0-4.68-1.42-5.76-3.5H15v-2H8.58c-.05-.33-.08-.66-.08-1s.03-.67.08-1H15V9H9.24C10.32 6.92 12.5 5.5 15 5.5c1.61 0 3.09.59 4.23 1.57L21 5.3C19.41 3.87 17.3 3 15 3c-3.92 0-7.24 2.51-8.48 6H3v2h3.06c-.04.33-.06.66-.06 1 0 .34.02.67.06 1H3v2h3.52c1.24 3.49 4.56 6 8.48 6 2.31 0 4.41-.87 6-2.3l-1.78-1.77c-1.13.98-2.6 1.57-4.22 1.57z" /></g> <g id="event"><path d="M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z" /></g> <g id="event-seat"><path d="M4 18v3h3v-3h10v3h3v-6H4zm15-8h3v3h-3zM2 10h3v3H2zm15 3H7V5c0-1.1.9-2 2-2h6c1.1 0 2 .9 2 2v8z" /></g> <g id="exit-to-app"><path d="M10.09 15.59L11.5 17l5-5-5-5-1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v-4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" /></g> <g id="expand-less"><path d="M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z" /></g> <g id="expand-more"><path d="M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z" /></g> <g id="explore"><path d="M12 10.9c-.61 0-1.1.49-1.1 1.1s.49 1.1 1.1 1.1c.61 0 1.1-.49 1.1-1.1s-.49-1.1-1.1-1.1zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm2.19 12.19L6 18l3.81-8.19L18 6l-3.81 8.19z" /></g> <g id="extension"><path d="M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z" /></g> <g id="face"><path d="M9 11.75c-.69 0-1.25.56-1.25 1.25s.56 1.25 1.25 1.25 1.25-.56 1.25-1.25-.56-1.25-1.25-1.25zm6 0c-.69 0-1.25.56-1.25 1.25s.56 1.25 1.25 1.25 1.25-.56 1.25-1.25-.56-1.25-1.25-1.25zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8 0-.29.02-.58.05-.86 2.36-1.05 4.23-2.98 5.21-5.37C11.07 8.33 14.05 10 17.42 10c.78 0 1.53-.09 2.25-.26.21.71.33 1.47.33 2.26 0 4.41-3.59 8-8 8z" /></g> <g id="favorite"><path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" /></g> <g id="favorite-border"><path d="M16.5 3c-1.74 0-3.41.81-4.5 2.09C10.91 3.81 9.24 3 7.5 3 4.42 3 2 5.42 2 8.5c0 3.78 3.4 6.86 8.55 11.54L12 21.35l1.45-1.32C18.6 15.36 22 12.28 22 8.5 22 5.42 19.58 3 16.5 3zm-4.4 15.55l-.1.1-.1-.1C7.14 14.24 4 11.39 4 8.5 4 6.5 5.5 5 7.5 5c1.54 0 3.04.99 3.57 2.36h1.87C13.46 5.99 14.96 5 16.5 5c2 0 3.5 1.5 3.5 3.5 0 2.89-3.14 5.74-7.9 10.05z" /></g> <g id="feedback"><path d="M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-7 12h-2v-2h2v2zm0-4h-2V6h2v4z" /></g> <g id="file-download"><path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z" /></g> <g id="file-upload"><path d="M9 16h6v-6h4l-7-7-7 7h4zm-4 2h14v2H5z" /></g> <g id="filter-list"><path d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z" /></g> <g id="find-in-page"><path d="M20 19.59V8l-6-6H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c.45 0 .85-.15 1.19-.4l-4.43-4.43c-.8.52-1.74.83-2.76.83-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5c0 1.02-.31 1.96-.83 2.75L20 19.59zM9 13c0 1.66 1.34 3 3 3s3-1.34 3-3-1.34-3-3-3-3 1.34-3 3z" /></g> <g id="find-replace"><path d="M11 6c1.38 0 2.63.56 3.54 1.46L12 10h6V4l-2.05 2.05C14.68 4.78 12.93 4 11 4c-3.53 0-6.43 2.61-6.92 6H6.1c.46-2.28 2.48-4 4.9-4zm5.64 9.14c.66-.9 1.12-1.97 1.28-3.14H15.9c-.46 2.28-2.48 4-4.9 4-1.38 0-2.63-.56-3.54-1.46L10 12H4v6l2.05-2.05C7.32 17.22 9.07 18 11 18c1.55 0 2.98-.51 4.14-1.36L20 21.49 21.49 20l-4.85-4.86z" /></g> <g id="fingerprint"><path d="M17.81 4.47c-.08 0-.16-.02-.23-.06C15.66 3.42 14 3 12.01 3c-1.98 0-3.86.47-5.57 1.41-.24.13-.54.04-.68-.2-.13-.24-.04-.55.2-.68C7.82 2.52 9.86 2 12.01 2c2.13 0 3.99.47 6.03 1.52.25.13.34.43.21.67-.09.18-.26.28-.44.28zM3.5 9.72c-.1 0-.2-.03-.29-.09-.23-.16-.28-.47-.12-.7.99-1.4 2.25-2.5 3.75-3.27C9.98 4.04 14 4.03 17.15 5.65c1.5.77 2.76 1.86 3.75 3.25.16.22.11.54-.12.7-.23.16-.54.11-.7-.12-.9-1.26-2.04-2.25-3.39-2.94-2.87-1.47-6.54-1.47-9.4.01-1.36.7-2.5 1.7-3.4 2.96-.08.14-.23.21-.39.21zm6.25 12.07c-.13 0-.26-.05-.35-.15-.87-.87-1.34-1.43-2.01-2.64-.69-1.23-1.05-2.73-1.05-4.34 0-2.97 2.54-5.39 5.66-5.39s5.66 2.42 5.66 5.39c0 .28-.22.5-.5.5s-.5-.22-.5-.5c0-2.42-2.09-4.39-4.66-4.39-2.57 0-4.66 1.97-4.66 4.39 0 1.44.32 2.77.93 3.85.64 1.15 1.08 1.64 1.85 2.42.19.2.19.51 0 .71-.11.1-.24.15-.37.15zm7.17-1.85c-1.19 0-2.24-.3-3.1-.89-1.49-1.01-2.38-2.65-2.38-4.39 0-.28.22-.5.5-.5s.5.22.5.5c0 1.41.72 2.74 1.94 3.56.71.48 1.54.71 2.54.71.24 0 .64-.03 1.04-.1.27-.05.53.13.58.41.05.27-.13.53-.41.58-.57.11-1.07.12-1.21.12zM14.91 22c-.04 0-.09-.01-.13-.02-1.59-.44-2.63-1.03-3.72-2.1-1.4-1.39-2.17-3.24-2.17-5.22 0-1.62 1.38-2.94 3.08-2.94 1.7 0 3.08 1.32 3.08 2.94 0 1.07.93 1.94 2.08 1.94s2.08-.87 2.08-1.94c0-3.77-3.25-6.83-7.25-6.83-2.84 0-5.44 1.58-6.61 4.03-.39.81-.59 1.76-.59 2.8 0 .78.07 2.01.67 3.61.1.26-.03.55-.29.64-.26.1-.55-.04-.64-.29-.49-1.31-.73-2.61-.73-3.96 0-1.2.23-2.29.68-3.24 1.33-2.79 4.28-4.6 7.51-4.6 4.55 0 8.25 3.51 8.25 7.83 0 1.62-1.38 2.94-3.08 2.94s-3.08-1.32-3.08-2.94c0-1.07-.93-1.94-2.08-1.94s-2.08.87-2.08 1.94c0 1.71.66 3.31 1.87 4.51.95.94 1.86 1.46 3.27 1.85.27.07.42.35.35.61-.05.23-.26.38-.47.38z" /></g> <g id="first-page"><path d="M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z" /></g> <g id="flag"><path d="M14.4 6L14 4H5v17h2v-7h5.6l.4 2h7V6z" /></g> <g id="flight-land"><path d="M2.5 19h19v2h-19zm7.18-5.73l4.35 1.16 5.31 1.42c.8.21 1.62-.26 1.84-1.06.21-.8-.26-1.62-1.06-1.84l-5.31-1.42-2.76-9.02L10.12 2v8.28L5.15 8.95l-.93-2.32-1.45-.39v5.17l1.6.43 5.31 1.43z" /></g> <g id="flight-takeoff"><path d="M2.5 19h19v2h-19zm19.57-9.36c-.21-.8-1.04-1.28-1.84-1.06L14.92 10l-6.9-6.43-1.93.51 4.14 7.17-4.97 1.33-1.97-1.54-1.45.39 1.82 3.16.77 1.33 1.6-.43 5.31-1.42 4.35-1.16L21 11.49c.81-.23 1.28-1.05 1.07-1.85z" /></g> <g id="flip-to-back"><path d="M9 7H7v2h2V7zm0 4H7v2h2v-2zm0-8c-1.11 0-2 .9-2 2h2V3zm4 12h-2v2h2v-2zm6-12v2h2c0-1.1-.9-2-2-2zm-6 0h-2v2h2V3zM9 17v-2H7c0 1.1.89 2 2 2zm10-4h2v-2h-2v2zm0-4h2V7h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2zM5 7H3v12c0 1.1.89 2 2 2h12v-2H5V7zm10-2h2V3h-2v2zm0 12h2v-2h-2v2z" /></g> <g id="flip-to-front"><path d="M3 13h2v-2H3v2zm0 4h2v-2H3v2zm2 4v-2H3c0 1.1.89 2 2 2zM3 9h2V7H3v2zm12 12h2v-2h-2v2zm4-18H9c-1.11 0-2 .9-2 2v10c0 1.1.89 2 2 2h10c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 12H9V5h10v10zm-8 6h2v-2h-2v2zm-4 0h2v-2H7v2z" /></g> <g id="folder"><path d="M10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z" /></g> <g id="folder-open"><path d="M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z" /></g> <g id="folder-shared"><path d="M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-5 3c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm4 8h-8v-1c0-1.33 2.67-2 4-2s4 .67 4 2v1z" /></g> <g id="font-download"><path d="M9.93 13.5h4.14L12 7.98zM20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-4.05 16.5l-1.14-3H9.17l-1.12 3H5.96l5.11-13h1.86l5.11 13h-2.09z" /></g> <g id="forward"><path d="M12 8V4l8 8-8 8v-4H4V8z" /></g> <g id="fullscreen"><path d="M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z" /></g> <g id="fullscreen-exit"><path d="M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z" /></g> <g id="g-translate"><path d="M20 5h-9.12L10 2H4c-1.1 0-2 .9-2 2v13c0 1.1.9 2 2 2h7l1 3h8c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zM7.17 14.59c-2.25 0-4.09-1.83-4.09-4.09s1.83-4.09 4.09-4.09c1.04 0 1.99.37 2.74 1.07l.07.06-1.23 1.18-.06-.05c-.29-.27-.78-.59-1.52-.59-1.31 0-2.38 1.09-2.38 2.42s1.07 2.42 2.38 2.42c1.37 0 1.96-.87 2.12-1.46H7.08V9.91h3.95l.01.07c.04.21.05.4.05.61 0 2.35-1.61 4-3.92 4zm6.03-1.71c.33.6.74 1.18 1.19 1.7l-.54.53-.65-2.23zm.77-.76h-.99l-.31-1.04h3.99s-.34 1.31-1.56 2.74c-.52-.62-.89-1.23-1.13-1.7zM21 20c0 .55-.45 1-1 1h-7l2-2-.81-2.77.92-.92L17.79 18l.73-.73-2.71-2.68c.9-1.03 1.6-2.25 1.92-3.51H19v-1.04h-3.64V9h-1.04v1.04h-1.96L11.18 6H20c.55 0 1 .45 1 1v13z" /></g> <g id="gavel"><path d="M1 21h12v2H1zM5.245 8.07l2.83-2.827 14.14 14.142-2.828 2.828zM12.317 1l5.657 5.656-2.83 2.83-5.654-5.66zM3.825 9.485l5.657 5.657-2.828 2.828-5.657-5.657z" /></g> <g id="gesture"><path d="M4.59 6.89c.7-.71 1.4-1.35 1.71-1.22.5.2 0 1.03-.3 1.52-.25.42-2.86 3.89-2.86 6.31 0 1.28.48 2.34 1.34 2.98.75.56 1.74.73 2.64.46 1.07-.31 1.95-1.4 3.06-2.77 1.21-1.49 2.83-3.44 4.08-3.44 1.63 0 1.65 1.01 1.76 1.79-3.78.64-5.38 3.67-5.38 5.37 0 1.7 1.44 3.09 3.21 3.09 1.63 0 4.29-1.33 4.69-6.1H21v-2.5h-2.47c-.15-1.65-1.09-4.2-4.03-4.2-2.25 0-4.18 1.91-4.94 2.84-.58.73-2.06 2.48-2.29 2.72-.25.3-.68.84-1.11.84-.45 0-.72-.83-.36-1.92.35-1.09 1.4-2.86 1.85-3.52.78-1.14 1.3-1.92 1.3-3.28C8.95 3.69 7.31 3 6.44 3 5.12 3 3.97 4 3.72 4.25c-.36.36-.66.66-.88.93l1.75 1.71zm9.29 11.66c-.31 0-.74-.26-.74-.72 0-.6.73-2.2 2.87-2.76-.3 2.69-1.43 3.48-2.13 3.48z" /></g> <g id="get-app"><path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z" /></g> <g id="gif"><path d="M11.5 9H13v6h-1.5zM9 9H6c-.6 0-1 .5-1 1v4c0 .5.4 1 1 1h3c.6 0 1-.5 1-1v-2H8.5v1.5h-2v-3H10V10c0-.5-.4-1-1-1zm10 1.5V9h-4.5v6H16v-2h2v-1.5h-2v-1z" /></g> <g id="grade"><path d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z" /></g> <g id="group-work"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM8 17.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5zM9.5 8c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5S9.5 9.38 9.5 8zm6.5 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z" /></g> <g id="help"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z" /></g> <g id="help-outline"><path d="M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z" /></g> <g id="highlight-off"><path d="M14.59 8L12 10.59 9.41 8 8 9.41 10.59 12 8 14.59 9.41 16 12 13.41 14.59 16 16 14.59 13.41 12 16 9.41 14.59 8zM12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z" /></g> <g id="history"><path d="M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z" /></g> <g id="home"><path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z" /></g> <g id="hourglass-empty"><path d="M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zm10 14.5V20H8v-3.5l4-4 4 4zm-4-5l-4-4V4h8v3.5l-4 4z" /></g> <g id="hourglass-full"><path d="M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6z" /></g> <g id="http"><path d="M4.5 11h-2V9H1v6h1.5v-2.5h2V15H6V9H4.5v2zm2.5-.5h1.5V15H10v-4.5h1.5V9H7v1.5zm5.5 0H14V15h1.5v-4.5H17V9h-4.5v1.5zm9-1.5H18v6h1.5v-2h2c.8 0 1.5-.7 1.5-1.5v-1c0-.8-.7-1.5-1.5-1.5zm0 2.5h-2v-1h2v1z" /></g> <g id="https"><path d="M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z" /></g> <g id="important-devices"><path d="M23 11.01L18 11c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h5c.55 0 1-.45 1-1v-9c0-.55-.45-.99-1-.99zM23 20h-5v-7h5v7zM20 2H2C.89 2 0 2.89 0 4v12c0 1.1.89 2 2 2h7v2H7v2h8v-2h-2v-2h2v-2H2V4h18v5h2V4c0-1.11-.9-2-2-2zm-8.03 7L11 6l-.97 3H7l2.47 1.76-.94 2.91 2.47-1.8 2.47 1.8-.94-2.91L15 9h-3.03z" /></g> <g id="inbox"><path d="M19 3H4.99c-1.11 0-1.98.89-1.98 2L3 19c0 1.1.88 2 1.99 2H19c1.1 0 2-.9 2-2V5c0-1.11-.9-2-2-2zm0 12h-4c0 1.66-1.35 3-3 3s-3-1.34-3-3H4.99V5H19v10z" /></g> <g id="indeterminate-check-box"><path d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z" /></g> <g id="info"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z" /></g> <g id="info-outline"><path d="M11 17h2v-6h-2v6zm1-15C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zM11 9h2V7h-2v2z" /></g> <g id="input"><path d="M21 3.01H3c-1.1 0-2 .9-2 2V9h2V4.99h18v14.03H3V15H1v4.01c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98v-14c0-1.11-.9-2-2-2zM11 16l4-4-4-4v3H1v2h10v3z" /></g> <g id="invert-colors"><path d="M17.66 7.93L12 2.27 6.34 7.93c-3.12 3.12-3.12 8.19 0 11.31C7.9 20.8 9.95 21.58 12 21.58c2.05 0 4.1-.78 5.66-2.34 3.12-3.12 3.12-8.19 0-11.31zM12 19.59c-1.6 0-3.11-.62-4.24-1.76C6.62 16.69 6 15.19 6 13.59s.62-3.11 1.76-4.24L12 5.1v14.49z" /></g> <g id="label"><path d="M17.63 5.84C17.27 5.33 16.67 5 16 5L5 5.01C3.9 5.01 3 5.9 3 7v10c0 1.1.9 1.99 2 1.99L16 19c.67 0 1.27-.33 1.63-.84L22 12l-4.37-6.16z" /></g> <g id="label-outline"><path d="M17.63 5.84C17.27 5.33 16.67 5 16 5L5 5.01C3.9 5.01 3 5.9 3 7v10c0 1.1.9 1.99 2 1.99L16 19c.67 0 1.27-.33 1.63-.84L22 12l-4.37-6.16zM16 17H5V7h11l3.55 5L16 17z" /></g> <g id="language"><path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm6.93 6h-2.95c-.32-1.25-.78-2.45-1.38-3.56 1.84.63 3.37 1.91 4.33 3.56zM12 4.04c.83 1.2 1.48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96zM4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2 0 .68.06 1.34.14 2H4.26zm.82 2h2.95c.32 1.25.78 2.45 1.38 3.56-1.84-.63-3.37-1.9-4.33-3.56zm2.95-8H5.08c.96-1.66 2.49-2.93 4.33-3.56C8.81 5.55 8.35 6.75 8.03 8zM12 19.96c-.83-1.2-1.48-2.53-1.91-3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96zM14.34 14H9.66c-.09-.66-.16-1.32-.16-2 0-.68.07-1.35.16-2h4.68c.09.65.16 1.32.16 2 0 .68-.07 1.34-.16 2zm.25 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95c-.96 1.65-2.49 2.93-4.33 3.56zM16.36 14c.08-.66.14-1.32.14-2 0-.68-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2h-3.38z" /></g> <g id="last-page"><path d="M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z" /></g> <g id="launch"><path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z" /></g> <g id="lightbulb-outline"><path d="M9 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H9v1zm3-19C8.14 2 5 5.14 5 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.86-3.14-7-7-7zm2.85 11.1l-.85.6V16h-4v-2.3l-.85-.6C7.8 12.16 7 10.63 7 9c0-2.76 2.24-5 5-5s5 2.24 5 5c0 1.63-.8 3.16-2.15 4.1z" /></g> <g id="line-style"><path d="M3 16h5v-2H3v2zm6.5 0h5v-2h-5v2zm6.5 0h5v-2h-5v2zM3 20h2v-2H3v2zm4 0h2v-2H7v2zm4 0h2v-2h-2v2zm4 0h2v-2h-2v2zm4 0h2v-2h-2v2zM3 12h8v-2H3v2zm10 0h8v-2h-8v2zM3 4v4h18V4H3z" /></g> <g id="line-weight"><path d="M3 17h18v-2H3v2zm0 3h18v-1H3v1zm0-7h18v-3H3v3zm0-9v4h18V4H3z" /></g> <g id="link"><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z" /></g> <g id="list"><path d="M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z" /></g> <g id="lock"><path d="M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z" /></g> <g id="lock-open"><path d="M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm0 12H6V10h12v10z" /></g> <g id="lock-outline"><path d="M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zM8.9 6c0-1.71 1.39-3.1 3.1-3.1s3.1 1.39 3.1 3.1v2H8.9V6zM18 20H6V10h12v10z" /></g> <g id="low-priority"><path d="M14 5h8v2h-8zm0 5.5h8v2h-8zm0 5.5h8v2h-8zM2 11.5C2 15.08 4.92 18 8.5 18H9v2l3-3-3-3v2h-.5C6.02 16 4 13.98 4 11.5S6.02 7 8.5 7H12V5H8.5C4.92 5 2 7.92 2 11.5z" /></g> <g id="loyalty"><path d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7zm11.77 8.27L13 19.54l-4.27-4.27C8.28 14.81 8 14.19 8 13.5c0-1.38 1.12-2.5 2.5-2.5.69 0 1.32.28 1.77.74l.73.72.73-.73c.45-.45 1.08-.73 1.77-.73 1.38 0 2.5 1.12 2.5 2.5 0 .69-.28 1.32-.73 1.77z" /></g> <g id="mail"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z" /></g> <g id="markunread"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z" /></g> <g id="markunread-mailbox"><path d="M20 6H10v6H8V4h6V0H6v6H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2z" /></g> <g id="menu"><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" /></g> <g id="more-horiz"><path d="M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" /></g> <g id="more-vert"><path d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" /></g> <g id="motorcycle"><path d="M19.44 9.03L15.41 5H11v2h3.59l2 2H5c-2.8 0-5 2.2-5 5s2.2 5 5 5c2.46 0 4.45-1.69 4.9-4h1.65l2.77-2.77c-.21.54-.32 1.14-.32 1.77 0 2.8 2.2 5 5 5s5-2.2 5-5c0-2.65-1.97-4.77-4.56-4.97zM7.82 15C7.4 16.15 6.28 17 5 17c-1.63 0-3-1.37-3-3s1.37-3 3-3c1.28 0 2.4.85 2.82 2H5v2h2.82zM19 17c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z" /></g> <g id="move-to-inbox"><path d="M19 3H4.99c-1.11 0-1.98.9-1.98 2L3 19c0 1.1.88 2 1.99 2H19c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 12h-4c0 1.66-1.35 3-3 3s-3-1.34-3-3H4.99V5H19v10zm-3-5h-2V7h-4v3H8l4 4 4-4z" /></g> <g id="next-week"><path d="M20 7h-4V5c0-.55-.22-1.05-.59-1.41C15.05 3.22 14.55 3 14 3h-4c-1.1 0-2 .9-2 2v2H4c-1.1 0-2 .9-2 2v11c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V9c0-1.1-.9-2-2-2zM10 5h4v2h-4V5zm1 13.5l-1-1 3-3-3-3 1-1 4 4-4 4z" /></g> <g id="note-add"><path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 14h-3v3h-2v-3H8v-2h3v-3h2v3h3v2zm-3-7V3.5L18.5 9H13z" /></g> <g id="offline-pin"><path d="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm5 16H7v-2h10v2zm-6.7-4L7 10.7l1.4-1.4 1.9 1.9 5.3-5.3L17 7.3 10.3 14z" /></g> <g id="opacity"><path d="M17.66 8L12 2.35 6.34 8C4.78 9.56 4 11.64 4 13.64s.78 4.11 2.34 5.67 3.61 2.35 5.66 2.35 4.1-.79 5.66-2.35S20 15.64 20 13.64 19.22 9.56 17.66 8zM6 14c.01-2 .62-3.27 1.76-4.4L12 5.27l4.24 4.38C17.38 10.77 17.99 12 18 14H6z" /></g> <g id="open-in-browser"><path d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h4v-2H5V8h14v10h-4v2h4c1.1 0 2-.9 2-2V6c0-1.1-.89-2-2-2zm-7 6l-4 4h3v6h2v-6h3l-4-4z" /></g> <g id="open-in-new"><path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z" /></g> <g id="open-with"><path d="M10 9h4V6h3l-5-5-5 5h3v3zm-1 1H6V7l-5 5 5 5v-3h3v-4zm14 2l-5-5v3h-3v4h3v3l5-5zm-9 3h-4v3H7l5 5 5-5h-3v-3z" /></g> <g id="pageview"><path d="M11.5 9C10.12 9 9 10.12 9 11.5s1.12 2.5 2.5 2.5 2.5-1.12 2.5-2.5S12.88 9 11.5 9zM20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-3.21 14.21l-2.91-2.91c-.69.44-1.51.7-2.39.7C9.01 16 7 13.99 7 11.5S9.01 7 11.5 7 16 9.01 16 11.5c0 .88-.26 1.69-.7 2.39l2.91 2.9-1.42 1.42z" /></g> <g id="pan-tool"><path d="M23 5.5V20c0 2.2-1.8 4-4 4h-7.3c-1.08 0-2.1-.43-2.85-1.19L1 14.83s1.26-1.23 1.3-1.25c.22-.19.49-.29.79-.29.22 0 .42.06.6.16.04.01 4.31 2.46 4.31 2.46V4c0-.83.67-1.5 1.5-1.5S11 3.17 11 4v7h1V1.5c0-.83.67-1.5 1.5-1.5S15 .67 15 1.5V11h1V2.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5V11h1V5.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5z" /></g> <g id="payment"><path d="M20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4v-6h16v6zm0-10H4V6h16v2z" /></g> <g id="perm-camera-mic"><path d="M20 5h-3.17L15 3H9L7.17 5H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h7v-2.09c-2.83-.48-5-2.94-5-5.91h2c0 2.21 1.79 4 4 4s4-1.79 4-4h2c0 2.97-2.17 5.43-5 5.91V21h7c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-6 8c0 1.1-.9 2-2 2s-2-.9-2-2V9c0-1.1.9-2 2-2s2 .9 2 2v4z" /></g> <g id="perm-contact-calendar"><path d="M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm6 12H6v-1c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1z" /></g> <g id="perm-data-setting"><path d="M18.99 11.5c.34 0 .67.03 1 .07L20 0 0 20h11.56c-.04-.33-.07-.66-.07-1 0-4.14 3.36-7.5 7.5-7.5zm3.71 7.99c.02-.16.04-.32.04-.49 0-.17-.01-.33-.04-.49l1.06-.83c.09-.08.12-.21.06-.32l-1-1.73c-.06-.11-.19-.15-.31-.11l-1.24.5c-.26-.2-.54-.37-.85-.49l-.19-1.32c-.01-.12-.12-.21-.24-.21h-2c-.12 0-.23.09-.25.21l-.19 1.32c-.3.13-.59.29-.85.49l-1.24-.5c-.11-.04-.24 0-.31.11l-1 1.73c-.06.11-.04.24.06.32l1.06.83c-.02.16-.03.32-.03.49 0 .17.01.33.03.49l-1.06.83c-.09.08-.12.21-.06.32l1 1.73c.06.11.19.15.31.11l1.24-.5c.26.2.54.37.85.49l.19 1.32c.02.12.12.21.25.21h2c.12 0 .23-.09.25-.21l.19-1.32c.3-.13.59-.29.84-.49l1.25.5c.11.04.24 0 .31-.11l1-1.73c.06-.11.03-.24-.06-.32l-1.07-.83zm-3.71 1.01c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z" /></g> <g id="perm-device-information"><path d="M13 7h-2v2h2V7zm0 4h-2v6h2v-6zm4-9.99L7 1c-1.1 0-2 .9-2 2v18c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-1.99-2-1.99zM17 19H7V5h10v14z" /></g> <g id="perm-identity"><path d="M12 5.9c1.16 0 2.1.94 2.1 2.1s-.94 2.1-2.1 2.1S9.9 9.16 9.9 8s.94-2.1 2.1-2.1m0 9c2.97 0 6.1 1.46 6.1 2.1v1.1H5.9V17c0-.64 3.13-2.1 6.1-2.1M12 4C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 9c-2.67 0-8 1.34-8 4v3h16v-3c0-2.66-5.33-4-8-4z" /></g> <g id="perm-media"><path d="M2 6H0v5h.01L0 20c0 1.1.9 2 2 2h18v-2H2V6zm20-2h-8l-2-2H6c-1.1 0-1.99.9-1.99 2L4 16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM7 15l4.5-6 3.5 4.51 2.5-3.01L21 15H7z" /></g> <g id="perm-phone-msg"><path d="M20 15.5c-1.25 0-2.45-.2-3.57-.57-.35-.11-.74-.03-1.02.24l-2.2 2.2c-2.83-1.44-5.15-3.75-6.59-6.58l2.2-2.21c.28-.27.36-.66.25-1.01C8.7 6.45 8.5 5.25 8.5 4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1zM12 3v10l3-3h6V3h-9z" /></g> <g id="perm-scan-wifi"><path d="M12 3C6.95 3 3.15 4.85 0 7.23L12 22 24 7.25C20.85 4.87 17.05 3 12 3zm1 13h-2v-6h2v6zm-2-8V6h2v2h-2z" /></g> <g id="pets"><circle cx="4.5" cy="9.5" r="2.5" /><circle cx="9" cy="5.5" r="2.5" /><circle cx="15" cy="5.5" r="2.5" /><circle cx="19.5" cy="9.5" r="2.5" /><path d="M17.34 14.86c-.87-1.02-1.6-1.89-2.48-2.91-.46-.54-1.05-1.08-1.75-1.32-.11-.04-.22-.07-.33-.09-.25-.04-.52-.04-.78-.04s-.53 0-.79.05c-.11.02-.22.05-.33.09-.7.24-1.28.78-1.75 1.32-.87 1.02-1.6 1.89-2.48 2.91-1.31 1.31-2.92 2.76-2.62 4.79.29 1.02 1.02 2.03 2.33 2.32.73.15 3.06-.44 5.54-.44h.18c2.48 0 4.81.58 5.54.44 1.31-.29 2.04-1.31 2.33-2.32.31-2.04-1.3-3.49-2.61-4.8z" /></g> <g id="picture-in-picture"><path d="M19 7h-8v6h8V7zm2-4H3c-1.1 0-2 .9-2 2v14c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98V5c0-1.1-.9-2-2-2zm0 16.01H3V4.98h18v14.03z" /></g> <g id="picture-in-picture-alt"><path d="M19 11h-8v6h8v-6zm4 8V4.98C23 3.88 22.1 3 21 3H3c-1.1 0-2 .88-2 1.98V19c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2zm-2 .02H3V4.97h18v14.05z" /></g> <g id="play-for-work"><path d="M11 5v5.59H7.5l4.5 4.5 4.5-4.5H13V5h-2zm-5 9c0 3.31 2.69 6 6 6s6-2.69 6-6h-2c0 2.21-1.79 4-4 4s-4-1.79-4-4H6z" /></g> <g id="polymer"><path d="M19 4h-4L7.11 16.63 4.5 12 9 4H5L.5 12 5 20h4l7.89-12.63L19.5 12 15 20h4l4.5-8z" /></g> <g id="power-settings-new"><path d="M13 3h-2v10h2V3zm4.83 2.17l-1.42 1.42C17.99 7.86 19 9.81 19 12c0 3.87-3.13 7-7 7s-7-3.13-7-7c0-2.19 1.01-4.14 2.58-5.42L6.17 5.17C4.23 6.82 3 9.26 3 12c0 4.97 4.03 9 9 9s9-4.03 9-9c0-2.74-1.23-5.18-3.17-6.83z" /></g> <g id="pregnant-woman"><path d="M9 4c0-1.11.89-2 2-2s2 .89 2 2-.89 2-2 2-2-.89-2-2zm7 9c-.01-1.34-.83-2.51-2-3 0-1.66-1.34-3-3-3s-3 1.34-3 3v7h2v5h3v-5h3v-4z" /></g> <g id="print"><path d="M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z" /></g> <g id="query-builder"><path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z" /></g> <g id="question-answer"><path d="M21 6h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1zm-4 6V3c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1z" /></g> <g id="radio-button-checked"><path d="M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z" /></g> <g id="radio-button-unchecked"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z" /></g> <g id="receipt"><path d="M18 17H6v-2h12v2zm0-4H6v-2h12v2zm0-4H6V7h12v2zM3 22l1.5-1.5L6 22l1.5-1.5L9 22l1.5-1.5L12 22l1.5-1.5L15 22l1.5-1.5L18 22l1.5-1.5L21 22V2l-1.5 1.5L18 2l-1.5 1.5L15 2l-1.5 1.5L12 2l-1.5 1.5L9 2 7.5 3.5 6 2 4.5 3.5 3 2v20z" /></g> <g id="record-voice-over"><circle cx="9" cy="9" r="4" /><path d="M9 15c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4zm7.76-9.64l-1.68 1.69c.84 1.18.84 2.71 0 3.89l1.68 1.69c2.02-2.02 2.02-5.07 0-7.27zM20.07 2l-1.63 1.63c2.77 3.02 2.77 7.56 0 10.74L20.07 16c3.9-3.89 3.91-9.95 0-14z" /></g> <g id="redeem"><path d="M20 6h-2.18c.11-.31.18-.65.18-1 0-1.66-1.34-3-3-3-1.05 0-1.96.54-2.5 1.35l-.5.67-.5-.68C10.96 2.54 10.05 2 9 2 7.34 2 6 3.34 6 5c0 .35.07.69.18 1H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-5-2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM9 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm11 15H4v-2h16v2zm0-5H4V8h5.08L7 10.83 8.62 12 11 8.76l1-1.36 1 1.36L15.38 12 17 10.83 14.92 8H20v6z" /></g> <g id="redo"><path d="M18.4 10.6C16.55 8.99 14.15 8 11.5 8c-4.65 0-8.58 3.03-9.96 7.22L3.9 16c1.05-3.19 4.05-5.5 7.6-5.5 1.95 0 3.73.72 5.12 1.88L13 16h9V7l-3.6 3.6z" /></g> <g id="refresh"><path d="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z" /></g> <g id="remove"><path d="M19 13H5v-2h14v2z" /></g> <g id="remove-circle"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11H7v-2h10v2z" /></g> <g id="remove-circle-outline"><path d="M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z" /></g> <g id="remove-shopping-cart"><path d="M22.73 22.73L2.77 2.77 2 2l-.73-.73L0 2.54l4.39 4.39 2.21 4.66-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h7.46l1.38 1.38c-.5.36-.83.95-.83 1.62 0 1.1.89 2 1.99 2 .67 0 1.26-.33 1.62-.84L21.46 24l1.27-1.27zM7.42 15c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h2.36l2 2H7.42zm8.13-2c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H6.54l9.01 9zM7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2z" /></g> <g id="reorder"><path d="M3 15h18v-2H3v2zm0 4h18v-2H3v2zm0-8h18V9H3v2zm0-6v2h18V5H3z" /></g> <g id="reply"><path d="M10 9V5l-7 7 7 7v-4.1c5 0 8.5 1.6 11 5.1-1-5-4-10-11-11z" /></g> <g id="reply-all"><path d="M7 8V5l-7 7 7 7v-3l-4-4 4-4zm6 1V5l-7 7 7 7v-4.1c5 0 8.5 1.6 11 5.1-1-5-4-10-11-11z" /></g> <g id="report"><path d="M15.73 3H8.27L3 8.27v7.46L8.27 21h7.46L21 15.73V8.27L15.73 3zM12 17.3c-.72 0-1.3-.58-1.3-1.3 0-.72.58-1.3 1.3-1.3.72 0 1.3.58 1.3 1.3 0 .72-.58 1.3-1.3 1.3zm1-4.3h-2V7h2v6z" /></g> <g id="report-problem"><path d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z" /></g> <g id="restore"><path d="M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z" /></g> <g id="restore-page"><path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm-2 16c-2.05 0-3.81-1.24-4.58-3h1.71c.63.9 1.68 1.5 2.87 1.5 1.93 0 3.5-1.57 3.5-3.5S13.93 9.5 12 9.5c-1.35 0-2.52.78-3.1 1.9l1.6 1.6h-4V9l1.3 1.3C8.69 8.92 10.23 8 12 8c2.76 0 5 2.24 5 5s-2.24 5-5 5z" /></g> <g id="room"><path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z" /></g> <g id="rounded-corner"><path d="M19 19h2v2h-2v-2zm0-2h2v-2h-2v2zM3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm0-4h2V3H3v2zm4 0h2V3H7v2zm8 16h2v-2h-2v2zm-4 0h2v-2h-2v2zm4 0h2v-2h-2v2zm-8 0h2v-2H7v2zm-4 0h2v-2H3v2zM21 8c0-2.76-2.24-5-5-5h-5v2h5c1.65 0 3 1.35 3 3v5h2V8z" /></g> <g id="rowing"><path d="M8.5 14.5L4 19l1.5 1.5L9 17h2l-2.5-2.5zM15 1c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 20.01L18 24l-2.99-3.01V19.5l-7.1-7.09c-.31.05-.61.07-.91.07v-2.16c1.66.03 3.61-.87 4.67-2.04l1.4-1.55c.19-.21.43-.38.69-.5.29-.14.62-.23.96-.23h.03C15.99 6.01 17 7.02 17 8.26v5.75c0 .84-.35 1.61-.92 2.16l-3.58-3.58v-2.27c-.63.52-1.43 1.02-2.29 1.39L16.5 18H18l3 3.01z" /></g> <g id="save"><path d="M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z" /></g> <g id="schedule"><path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z" /></g> <g id="search"><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" /></g> <g id="select-all"><path d="M3 5h2V3c-1.1 0-2 .9-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2c0-1.1-.9-2-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2zM7 17h10V7H7v10zm2-8h6v6H9V9z" /></g> <g id="send"><path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z" /></g> <g id="settings"><path d="M19.43 12.98c.04-.32.07-.64.07-.98s-.03-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39-.3-.61-.22l-2.49 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65C14.46 2.18 14.25 2 14 2h-4c-.25 0-.46.18-.49.42l-.38 2.65c-.61.25-1.17.59-1.69.98l-2.49-1c-.23-.09-.49 0-.61.22l-2 3.46c-.13.22-.07.49.12.64l2.11 1.65c-.04.32-.07.65-.07.98s.03.66.07.98l-2.11 1.65c-.19.15-.24.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.17-.59 1.69-.98l2.49 1c.23.09.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.65zM12 15.5c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z" /></g> <g id="settings-applications"><path d="M12 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm7-7H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-1.75 9c0 .23-.02.46-.05.68l1.48 1.16c.13.11.17.3.08.45l-1.4 2.42c-.09.15-.27.21-.43.15l-1.74-.7c-.36.28-.76.51-1.18.69l-.26 1.85c-.03.17-.18.3-.35.3h-2.8c-.17 0-.32-.13-.35-.29l-.26-1.85c-.43-.18-.82-.41-1.18-.69l-1.74.7c-.16.06-.34 0-.43-.15l-1.4-2.42c-.09-.15-.05-.34.08-.45l1.48-1.16c-.03-.23-.05-.46-.05-.69 0-.23.02-.46.05-.68l-1.48-1.16c-.13-.11-.17-.3-.08-.45l1.4-2.42c.09-.15.27-.21.43-.15l1.74.7c.36-.28.76-.51 1.18-.69l.26-1.85c.03-.17.18-.3.35-.3h2.8c.17 0 .32.13.35.29l.26 1.85c.43.18.82.41 1.18.69l1.74-.7c.16-.06.34 0 .43.15l1.4 2.42c.09.15.05.34-.08.45l-1.48 1.16c.03.23.05.46.05.69z" /></g> <g id="settings-backup-restore"><path d="M14 12c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2zm-2-9c-4.97 0-9 4.03-9 9H0l4 4 4-4H5c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.51 0-2.91-.49-4.06-1.3l-1.42 1.44C8.04 20.3 9.94 21 12 21c4.97 0 9-4.03 9-9s-4.03-9-9-9z" /></g> <g id="settings-bluetooth"><path d="M11 24h2v-2h-2v2zm-4 0h2v-2H7v2zm8 0h2v-2h-2v2zm2.71-18.29L12 0h-1v7.59L6.41 3 5 4.41 10.59 10 5 15.59 6.41 17 11 12.41V20h1l5.71-5.71-4.3-4.29 4.3-4.29zM13 3.83l1.88 1.88L13 7.59V3.83zm1.88 10.46L13 16.17v-3.76l1.88 1.88z" /></g> <g id="settings-brightness"><path d="M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16.01H3V4.99h18v14.02zM8 16h2.5l1.5 1.5 1.5-1.5H16v-2.5l1.5-1.5-1.5-1.5V8h-2.5L12 6.5 10.5 8H8v2.5L6.5 12 8 13.5V16zm4-7c1.66 0 3 1.34 3 3s-1.34 3-3 3V9z" /></g> <g id="settings-cell"><path d="M7 24h2v-2H7v2zm4 0h2v-2h-2v2zm4 0h2v-2h-2v2zM16 .01L8 0C6.9 0 6 .9 6 2v16c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V2c0-1.1-.9-1.99-2-1.99zM16 16H8V4h8v12z" /></g> <g id="settings-ethernet"><path d="M7.77 6.76L6.23 5.48.82 12l5.41 6.52 1.54-1.28L3.42 12l4.35-5.24zM7 13h2v-2H7v2zm10-2h-2v2h2v-2zm-6 2h2v-2h-2v2zm6.77-7.52l-1.54 1.28L20.58 12l-4.35 5.24 1.54 1.28L23.18 12l-5.41-6.52z" /></g> <g id="settings-input-antenna"><path d="M12 5c-3.87 0-7 3.13-7 7h2c0-2.76 2.24-5 5-5s5 2.24 5 5h2c0-3.87-3.13-7-7-7zm1 9.29c.88-.39 1.5-1.26 1.5-2.29 0-1.38-1.12-2.5-2.5-2.5S9.5 10.62 9.5 12c0 1.02.62 1.9 1.5 2.29v3.3L7.59 21 9 22.41l3-3 3 3L16.41 21 13 17.59v-3.3zM12 1C5.93 1 1 5.93 1 12h2c0-4.97 4.03-9 9-9s9 4.03 9 9h2c0-6.07-4.93-11-11-11z" /></g> <g id="settings-input-component"><path d="M5 2c0-.55-.45-1-1-1s-1 .45-1 1v4H1v6h6V6H5V2zm4 14c0 1.3.84 2.4 2 2.82V23h2v-4.18c1.16-.41 2-1.51 2-2.82v-2H9v2zm-8 0c0 1.3.84 2.4 2 2.82V23h2v-4.18C6.16 18.4 7 17.3 7 16v-2H1v2zM21 6V2c0-.55-.45-1-1-1s-1 .45-1 1v4h-2v6h6V6h-2zm-8-4c0-.55-.45-1-1-1s-1 .45-1 1v4H9v6h6V6h-2V2zm4 14c0 1.3.84 2.4 2 2.82V23h2v-4.18c1.16-.41 2-1.51 2-2.82v-2h-6v2z" /></g> <g id="settings-input-composite"><path d="M5 2c0-.55-.45-1-1-1s-1 .45-1 1v4H1v6h6V6H5V2zm4 14c0 1.3.84 2.4 2 2.82V23h2v-4.18c1.16-.41 2-1.51 2-2.82v-2H9v2zm-8 0c0 1.3.84 2.4 2 2.82V23h2v-4.18C6.16 18.4 7 17.3 7 16v-2H1v2zM21 6V2c0-.55-.45-1-1-1s-1 .45-1 1v4h-2v6h6V6h-2zm-8-4c0-.55-.45-1-1-1s-1 .45-1 1v4H9v6h6V6h-2V2zm4 14c0 1.3.84 2.4 2 2.82V23h2v-4.18c1.16-.41 2-1.51 2-2.82v-2h-6v2z" /></g> <g id="settings-input-hdmi"><path d="M18 7V4c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v3H5v6l3 6v3h8v-3l3-6V7h-1zM8 4h8v3h-2V5h-1v2h-2V5h-1v2H8V4z" /></g> <g id="settings-input-svideo"><path d="M8 11.5c0-.83-.67-1.5-1.5-1.5S5 10.67 5 11.5 5.67 13 6.5 13 8 12.33 8 11.5zm7-5c0-.83-.67-1.5-1.5-1.5h-3C9.67 5 9 5.67 9 6.5S9.67 8 10.5 8h3c.83 0 1.5-.67 1.5-1.5zM8.5 15c-.83 0-1.5.67-1.5 1.5S7.67 18 8.5 18s1.5-.67 1.5-1.5S9.33 15 8.5 15zM12 1C5.93 1 1 5.93 1 12s4.93 11 11 11 11-4.93 11-11S18.07 1 12 1zm0 20c-4.96 0-9-4.04-9-9s4.04-9 9-9 9 4.04 9 9-4.04 9-9 9zm5.5-11c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm-2 5c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z" /></g> <g id="settings-overscan"><path d="M12.01 5.5L10 8h4l-1.99-2.5zM18 10v4l2.5-1.99L18 10zM6 10l-2.5 2.01L6 14v-4zm8 6h-4l2.01 2.5L14 16zm7-13H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16.01H3V4.99h18v14.02z" /></g> <g id="settings-phone"><path d="M13 9h-2v2h2V9zm4 0h-2v2h2V9zm3 6.5c-1.25 0-2.45-.2-3.57-.57-.35-.11-.74-.03-1.02.24l-2.2 2.2c-2.83-1.44-5.15-3.75-6.59-6.58l2.2-2.21c.28-.27.36-.66.25-1.01C8.7 6.45 8.5 5.25 8.5 4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1zM19 9v2h2V9h-2z" /></g> <g id="settings-power"><path d="M7 24h2v-2H7v2zm4 0h2v-2h-2v2zm2-22h-2v10h2V2zm3.56 2.44l-1.45 1.45C16.84 6.94 18 8.83 18 11c0 3.31-2.69 6-6 6s-6-2.69-6-6c0-2.17 1.16-4.06 2.88-5.12L7.44 4.44C5.36 5.88 4 8.28 4 11c0 4.42 3.58 8 8 8s8-3.58 8-8c0-2.72-1.36-5.12-3.44-6.56zM15 24h2v-2h-2v2z" /></g> <g id="settings-remote"><path d="M15 9H9c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h6c.55 0 1-.45 1-1V10c0-.55-.45-1-1-1zm-3 6c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM7.05 6.05l1.41 1.41C9.37 6.56 10.62 6 12 6s2.63.56 3.54 1.46l1.41-1.41C15.68 4.78 13.93 4 12 4s-3.68.78-4.95 2.05zM12 0C8.96 0 6.21 1.23 4.22 3.22l1.41 1.41C7.26 3.01 9.51 2 12 2s4.74 1.01 6.36 2.64l1.41-1.41C17.79 1.23 15.04 0 12 0z" /></g> <g id="settings-voice"><path d="M7 24h2v-2H7v2zm5-11c1.66 0 2.99-1.34 2.99-3L15 4c0-1.66-1.34-3-3-3S9 2.34 9 4v6c0 1.66 1.34 3 3 3zm-1 11h2v-2h-2v2zm4 0h2v-2h-2v2zm4-14h-1.7c0 3-2.54 5.1-5.3 5.1S6.7 13 6.7 10H5c0 3.41 2.72 6.23 6 6.72V20h2v-3.28c3.28-.49 6-3.31 6-6.72z" /></g> <g id="shop"><path d="M16 6V4c0-1.11-.89-2-2-2h-4c-1.11 0-2 .89-2 2v2H2v13c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6h-6zm-6-2h4v2h-4V4zM9 18V9l7.5 4L9 18z" /></g> <g id="shop-two"><path d="M3 9H1v11c0 1.11.89 2 2 2h14c1.11 0 2-.89 2-2H3V9zm15-4V3c0-1.11-.89-2-2-2h-4c-1.11 0-2 .89-2 2v2H5v11c0 1.11.89 2 2 2h14c1.11 0 2-.89 2-2V5h-5zm-6-2h4v2h-4V3zm0 12V8l5.5 3-5.5 4z" /></g> <g id="shopping-basket"><path d="M17.21 9l-4.38-6.56c-.19-.28-.51-.42-.83-.42-.32 0-.64.14-.83.43L6.79 9H2c-.55 0-1 .45-1 1 0 .09.01.18.04.27l2.54 9.27c.23.84 1 1.46 1.92 1.46h13c.92 0 1.69-.62 1.93-1.46l2.54-9.27L23 10c0-.55-.45-1-1-1h-4.79zM9 9l3-4.4L15 9H9zm3 8c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z" /></g> <g id="shopping-cart"><path d="M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2z" /></g> <g id="sort"><path d="M3 18h6v-2H3v2zM3 6v2h18V6H3zm0 7h12v-2H3v2z" /></g> <g id="speaker-notes"><path d="M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM8 14H6v-2h2v2zm0-3H6V9h2v2zm0-3H6V6h2v2zm7 6h-5v-2h5v2zm3-3h-8V9h8v2zm0-3h-8V6h8v2z" /></g> <g id="speaker-notes-off"><path d="M10.54 11l-.54-.54L7.54 8 6 6.46 2.38 2.84 1.27 1.73 0 3l2.01 2.01L2 22l4-4h9l5.73 5.73L22 22.46 17.54 18l-7-7zM8 14H6v-2h2v2zm-2-3V9l2 2H6zm14-9H4.08L10 7.92V6h8v2h-7.92l1 1H18v2h-4.92l6.99 6.99C21.14 17.95 22 17.08 22 16V4c0-1.1-.9-2-2-2z" /></g> <g id="spellcheck"><path d="M12.45 16h2.09L9.43 3H7.57L2.46 16h2.09l1.12-3h5.64l1.14 3zm-6.02-5L8.5 5.48 10.57 11H6.43zm15.16.59l-8.09 8.09L9.83 16l-1.41 1.41 5.09 5.09L23 13l-1.41-1.41z" /></g> <g id="star"><path d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z" /></g> <g id="star-border"><path d="M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z" /></g> <g id="star-half"><path d="M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4V6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z" /></g> <g id="stars"><path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm4.24 16L12 15.45 7.77 18l1.12-4.81-3.73-3.23 4.92-.42L12 5l1.92 4.53 4.92.42-3.73 3.23L16.23 18z" /></g> <g id="store"><path d="M20 4H4v2h16V4zm1 10v-2l-1-5H4l-1 5v2h1v6h10v-6h4v6h2v-6h1zm-9 4H6v-4h6v4z" /></g> <g id="subdirectory-arrow-left"><path d="M11 9l1.42 1.42L8.83 14H18V4h2v12H8.83l3.59 3.58L11 21l-6-6 6-6z" /></g> <g id="subdirectory-arrow-right"><path d="M19 15l-6 6-1.42-1.42L15.17 16H4V4h2v10h9.17l-3.59-3.58L13 9l6 6z" /></g> <g id="subject"><path d="M14 17H4v2h10v-2zm6-8H4v2h16V9zM4 15h16v-2H4v2zM4 5v2h16V5H4z" /></g> <g id="supervisor-account"><path d="M16.5 12c1.38 0 2.49-1.12 2.49-2.5S17.88 7 16.5 7C15.12 7 14 8.12 14 9.5s1.12 2.5 2.5 2.5zM9 11c1.66 0 2.99-1.34 2.99-3S10.66 5 9 5C7.34 5 6 6.34 6 8s1.34 3 3 3zm7.5 3c-1.83 0-5.5.92-5.5 2.75V19h11v-2.25c0-1.83-3.67-2.75-5.5-2.75zM9 13c-2.33 0-7 1.17-7 3.5V19h7v-2.25c0-.85.33-2.34 2.37-3.47C10.5 13.1 9.66 13 9 13z" /></g> <g id="swap-horiz"><path d="M6.99 11L3 15l3.99 4v-3H14v-2H6.99v-3zM21 9l-3.99-4v3H10v2h7.01v3L21 9z" /></g> <g id="swap-vert"><path d="M16 17.01V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3L5 6.99h3V14h2V6.99h3L9 3z" /></g> <g id="swap-vertical-circle"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM6.5 9L10 5.5 13.5 9H11v4H9V9H6.5zm11 6L14 18.5 10.5 15H13v-4h2v4h2.5z" /></g> <g id="system-update-alt"><path d="M12 16.5l4-4h-3v-9h-2v9H8l4 4zm9-13h-6v1.99h6v14.03H3V5.49h6V3.5H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2v-14c0-1.1-.9-2-2-2z" /></g> <g id="tab"><path d="M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3V5h10v4h8v10z" /></g> <g id="tab-unselected"><path d="M1 9h2V7H1v2zm0 4h2v-2H1v2zm0-8h2V3c-1.1 0-2 .9-2 2zm8 16h2v-2H9v2zm-8-4h2v-2H1v2zm2 4v-2H1c0 1.1.9 2 2 2zM21 3h-8v6h10V5c0-1.1-.9-2-2-2zm0 14h2v-2h-2v2zM9 5h2V3H9v2zM5 21h2v-2H5v2zM5 5h2V3H5v2zm16 16c1.1 0 2-.9 2-2h-2v2zm0-8h2v-2h-2v2zm-8 8h2v-2h-2v2zm4 0h2v-2h-2v2z" /></g> <g id="text-format"><path d="M5 17v2h14v-2H5zm4.5-4.2h5l.9 2.2h2.1L12.75 4h-1.5L6.5 15h2.1l.9-2.2zM12 5.98L13.87 11h-3.74L12 5.98z" /></g> <g id="theaters"><path d="M18 3v2h-2V3H8v2H6V3H4v18h2v-2h2v2h8v-2h2v2h2V3h-2zM8 17H6v-2h2v2zm0-4H6v-2h2v2zm0-4H6V7h2v2zm10 8h-2v-2h2v2zm0-4h-2v-2h2v2zm0-4h-2V7h2v2z" /></g> <g id="thumb-down"><path d="M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v1.91l.01.01L1 14c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm4 0v12h4V3h-4z" /></g> <g id="thumb-up"><path d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z" /></g> <g id="thumbs-up-down"><path d="M12 6c0-.55-.45-1-1-1H5.82l.66-3.18.02-.23c0-.31-.13-.59-.33-.8L5.38 0 .44 4.94C.17 5.21 0 5.59 0 6v6.5c0 .83.67 1.5 1.5 1.5h6.75c.62 0 1.15-.38 1.38-.91l2.26-5.29c.07-.17.11-.36.11-.55V6zm10.5 4h-6.75c-.62 0-1.15.38-1.38.91l-2.26 5.29c-.07.17-.11.36-.11.55V18c0 .55.45 1 1 1h5.18l-.66 3.18-.02.24c0 .31.13.59.33.8l.79.78 4.94-4.94c.27-.27.44-.65.44-1.06v-6.5c0-.83-.67-1.5-1.5-1.5z" /></g> <g id="timeline"><path d="M23 8c0 1.1-.9 2-2 2-.18 0-.35-.02-.51-.07l-3.56 3.55c.05.16.07.34.07.52 0 1.1-.9 2-2 2s-2-.9-2-2c0-.18.02-.36.07-.52l-2.55-2.55c-.16.05-.34.07-.52.07s-.36-.02-.52-.07l-4.55 4.56c.05.16.07.33.07.51 0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2c.18 0 .35.02.51.07l4.56-4.55C8.02 9.36 8 9.18 8 9c0-1.1.9-2 2-2s2 .9 2 2c0 .18-.02.36-.07.52l2.55 2.55c.16-.05.34-.07.52-.07s.36.02.52.07l3.55-3.56C19.02 8.35 19 8.18 19 8c0-1.1.9-2 2-2s2 .9 2 2z" /></g> <g id="toc"><path d="M3 9h14V7H3v2zm0 4h14v-2H3v2zm0 4h14v-2H3v2zm16 0h2v-2h-2v2zm0-10v2h2V7h-2zm0 6h2v-2h-2v2z" /></g> <g id="today"><path d="M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z" /></g> <g id="toll"><path d="M15 4c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6zM3 12c0-2.61 1.67-4.83 4-5.65V4.26C3.55 5.15 1 8.27 1 12s2.55 6.85 6 7.74v-2.09c-2.33-.82-4-3.04-4-5.65z" /></g> <g id="touch-app"><path d="M9 11.24V7.5C9 6.12 10.12 5 11.5 5S14 6.12 14 7.5v3.74c1.21-.81 2-2.18 2-3.74C16 5.01 13.99 3 11.5 3S7 5.01 7 7.5c0 1.56.79 2.93 2 3.74zm9.84 4.63l-4.54-2.26c-.17-.07-.35-.11-.54-.11H13v-6c0-.83-.67-1.5-1.5-1.5S10 6.67 10 7.5v10.74l-3.43-.72c-.08-.01-.15-.03-.24-.03-.31 0-.59.13-.79.33l-.79.8 4.94 4.94c.27.27.65.44 1.06.44h6.79c.75 0 1.33-.55 1.44-1.28l.75-5.27c.01-.07.02-.14.02-.2 0-.62-.38-1.16-.91-1.38z" /></g> <g id="track-changes"><path d="M19.07 4.93l-1.41 1.41C19.1 7.79 20 9.79 20 12c0 4.42-3.58 8-8 8s-8-3.58-8-8c0-4.08 3.05-7.44 7-7.93v2.02C8.16 6.57 6 9.03 6 12c0 3.31 2.69 6 6 6s6-2.69 6-6c0-1.66-.67-3.16-1.76-4.24l-1.41 1.41C15.55 9.9 16 10.9 16 12c0 2.21-1.79 4-4 4s-4-1.79-4-4c0-1.86 1.28-3.41 3-3.86v2.14c-.6.35-1 .98-1 1.72 0 1.1.9 2 2 2s2-.9 2-2c0-.74-.4-1.38-1-1.72V2h-1C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10c0-2.76-1.12-5.26-2.93-7.07z" /></g> <g id="translate"><path d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z" /></g> <g id="trending-down"><path d="M16 18l2.29-2.29-4.88-4.88-4 4L2 7.41 3.41 6l6 6 4-4 6.3 6.29L22 12v6z" /></g> <g id="trending-flat"><path d="M22 12l-4-4v3H3v2h15v3z" /></g> <g id="trending-up"><path d="M16 6l2.29 2.29-4.88 4.88-4-4L2 16.59 3.41 18l6-6 4 4 6.3-6.29L22 12V6z" /></g> <g id="turned-in"><path d="M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2z" /></g> <g id="turned-in-not"><path d="M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2zm0 15l-5-2.18L7 18V5h10v13z" /></g> <g id="unarchive"><path d="M20.55 5.22l-1.39-1.68C18.88 3.21 18.47 3 18 3H6c-.47 0-.88.21-1.15.55L3.46 5.22C3.17 5.57 3 6.01 3 6.5V19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6.5c0-.49-.17-.93-.45-1.28zM12 9.5l5.5 5.5H14v2h-4v-2H6.5L12 9.5zM5.12 5l.82-1h12l.93 1H5.12z" /></g> <g id="undo"><path d="M12.5 8c-2.65 0-5.05.99-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z" /></g> <g id="unfold-less"><path d="M7.41 18.59L8.83 20 12 16.83 15.17 20l1.41-1.41L12 14l-4.59 4.59zm9.18-13.18L15.17 4 12 7.17 8.83 4 7.41 5.41 12 10l4.59-4.59z" /></g> <g id="unfold-more"><path d="M12 5.83L15.17 9l1.41-1.41L12 3 7.41 7.59 8.83 9 12 5.83zm0 12.34L8.83 15l-1.41 1.41L12 21l4.59-4.59L15.17 15 12 18.17z" /></g> <g id="update"><path d="M21 10.12h-6.78l2.74-2.82c-2.73-2.7-7.15-2.8-9.88-.1-2.73 2.71-2.73 7.08 0 9.79 2.73 2.71 7.15 2.71 9.88 0C18.32 15.65 19 14.08 19 12.1h2c0 1.98-.88 4.55-2.64 6.29-3.51 3.48-9.21 3.48-12.72 0-3.5-3.47-3.53-9.11-.02-12.58 3.51-3.47 9.14-3.47 12.65 0L21 3v7.12zM12.5 8v4.25l3.5 2.08-.72 1.21L11 13V8h1.5z" /></g> <g id="verified-user"><path d="M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm-2 16l-4-4 1.41-1.41L10 14.17l6.59-6.59L18 9l-8 8z" /></g> <g id="view-agenda"><path d="M20 13H3c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h17c.55 0 1-.45 1-1v-6c0-.55-.45-1-1-1zm0-10H3c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h17c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z" /></g> <g id="view-array"><path d="M4 18h3V5H4v13zM18 5v13h3V5h-3zM8 18h9V5H8v13z" /></g> <g id="view-carousel"><path d="M7 19h10V4H7v15zm-5-2h4V6H2v11zM18 6v11h4V6h-4z" /></g> <g id="view-column"><path d="M10 18h5V5h-5v13zm-6 0h5V5H4v13zM16 5v13h5V5h-5z" /></g> <g id="view-day"><path d="M2 21h19v-3H2v3zM20 8H3c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h17c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1zM2 3v3h19V3H2z" /></g> <g id="view-headline"><path d="M4 15h16v-2H4v2zm0 4h16v-2H4v2zm0-8h16V9H4v2zm0-6v2h16V5H4z" /></g> <g id="view-list"><path d="M4 14h4v-4H4v4zm0 5h4v-4H4v4zM4 9h4V5H4v4zm5 5h12v-4H9v4zm0 5h12v-4H9v4zM9 5v4h12V5H9z" /></g> <g id="view-module"><path d="M4 11h5V5H4v6zm0 7h5v-6H4v6zm6 0h5v-6h-5v6zm6 0h5v-6h-5v6zm-6-7h5V5h-5v6zm6-6v6h5V5h-5z" /></g> <g id="view-quilt"><path d="M10 18h5v-6h-5v6zm-6 0h5V5H4v13zm12 0h5v-6h-5v6zM10 5v6h11V5H10z" /></g> <g id="view-stream"><path d="M4 18h17v-6H4v6zM4 5v6h17V5H4z" /></g> <g id="view-week"><path d="M6 5H3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm14 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-7 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1z" /></g> <g id="visibility"><path d="M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z" /></g> <g id="visibility-off"><path d="M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z" /></g> <g id="warning"><path d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z" /></g> <g id="watch-later"><path d="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm4.2 14.2L11 13V7h1.5v5.2l4.5 2.7-.8 1.3z" /></g> <g id="weekend"><path d="M21 10c-1.1 0-2 .9-2 2v3H5v-3c0-1.1-.9-2-2-2s-2 .9-2 2v5c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2v-5c0-1.1-.9-2-2-2zm-3-5H6c-1.1 0-2 .9-2 2v2.15c1.16.41 2 1.51 2 2.82V14h12v-2.03c0-1.3.84-2.4 2-2.82V7c0-1.1-.9-2-2-2z" /></g> <g id="work"><path d="M20 6h-4V4c0-1.11-.89-2-2-2h-4c-1.11 0-2 .89-2 2v2H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-6 0h-4V4h4v2z" /></g> <g id="youtube-searched-for"><path d="M17.01 14h-.8l-.27-.27c.98-1.14 1.57-2.61 1.57-4.23 0-3.59-2.91-6.5-6.5-6.5s-6.5 3-6.5 6.5H2l3.84 4 4.16-4H6.51C6.51 7 8.53 5 11.01 5s4.5 2.01 4.5 4.5c0 2.48-2.02 4.5-4.5 4.5-.65 0-1.26-.14-1.82-.38L7.71 15.1c.97.57 2.09.9 3.3.9 1.61 0 3.08-.59 4.22-1.57l.27.27v.79l5.01 4.99L22 19l-4.99-5z" /></g> <g id="zoom-in"><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zm2.5-4h-2v2H9v-2H7V9h2V7h1v2h2v1z" /></g> <g id="zoom-out"><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7z" /></g> </defs></svg> </iron-iconset-svg> <dom-module id="iron-pages"> <template> <style> :host { display: block; } :host > ::slotted(:not(slot):not(.iron-selected)) { display: none !important; } </style> <slot></slot> </template> </dom-module> <dom-module id="paper-ripple"> <template> <style> :host { display: block; position: absolute; border-radius: inherit; overflow: hidden; top: 0; left: 0; right: 0; bottom: 0; /* See PolymerElements/paper-behaviors/issues/34. On non-Chrome browsers, * creating a node (with a position:absolute) in the middle of an event * handler "interrupts" that event handler (which happens when the * ripple is created on demand) */ pointer-events: none; } :host([animating]) { /* This resolves a rendering issue in Chrome (as of 40) where the ripple is not properly clipped by its parent (which may have rounded corners). See: http://jsbin.com/temexa/4 Note: We only apply this style conditionally. Otherwise, the browser will create a new compositing layer for every ripple element on the page, and that would be bad. */ -webkit-transform: translate(0, 0); transform: translate3d(0, 0, 0); } #background, #waves, .wave-container, .wave { pointer-events: none; position: absolute; top: 0; left: 0; width: 100%; height: 100%; } #background, .wave { opacity: 0; } #waves, .wave { overflow: hidden; } .wave-container, .wave { border-radius: 50%; } :host(.circle) #background, :host(.circle) #waves { border-radius: 50%; } :host(.circle) .wave-container { overflow: hidden; } </style> <div id="background"></div> <div id="waves"></div> </template> </dom-module> <custom-style> <style is="custom-style"> html { --shadow-transition: { transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1); }; --shadow-none: { box-shadow: none; }; /* from http://codepen.io/shyndman/pen/c5394ddf2e8b2a5c9185904b57421cdb */ --shadow-elevation-2dp: { box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); }; --shadow-elevation-3dp: { box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 1px 8px 0 rgba(0, 0, 0, 0.12), 0 3px 3px -2px rgba(0, 0, 0, 0.4); }; --shadow-elevation-4dp: { box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.4); }; --shadow-elevation-6dp: { box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.4); }; --shadow-elevation-8dp: { box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.4); }; --shadow-elevation-12dp: { box-shadow: 0 12px 16px 1px rgba(0, 0, 0, 0.14), 0 4px 22px 3px rgba(0, 0, 0, 0.12), 0 6px 7px -4px rgba(0, 0, 0, 0.4); }; --shadow-elevation-16dp: { box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.4); }; --shadow-elevation-24dp: { box-shadow: 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12), 0 11px 15px -7px rgba(0, 0, 0, 0.4); }; } </style> </custom-style> <dom-module id="paper-material-styles"> <template> <style> :host, html { --paper-material: { display: block; position: relative; }; --paper-material-elevation-1: { @apply --shadow-elevation-2dp; }; --paper-material-elevation-2: { @apply --shadow-elevation-4dp; }; --paper-material-elevation-3: { @apply --shadow-elevation-6dp; }; --paper-material-elevation-4: { @apply --shadow-elevation-8dp; }; --paper-material-elevation-5: { @apply --shadow-elevation-16dp; }; } :host(.paper-material), .paper-material { @apply --paper-material; } :host(.paper-material[elevation="1"]), .paper-material[elevation="1"] { @apply --paper-material-elevation-1; } :host(.paper-material[elevation="2"]), .paper-material[elevation="2"] { @apply --paper-material-elevation-2; } :host(.paper-material[elevation="3"]), .paper-material[elevation="3"] { @apply --paper-material-elevation-3; } :host(.paper-material[elevation="4"]), .paper-material[elevation="4"] { @apply --paper-material-elevation-4; } :host(.paper-material[elevation="5"]), .paper-material[elevation="5"] { @apply --paper-material-elevation-5; } </style> </template> </dom-module> <dom-module id="paper-button"> <template strip-whitespace> <style include="paper-material-styles"> /* Need to specify the same specificity as the styles imported from paper-material. */ :host { @apply --layout-inline; @apply --layout-center-center; position: relative; box-sizing: border-box; min-width: 5.14em; margin: 0 0.29em; background: transparent; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-tap-highlight-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: 0.7em 0.57em; @apply --paper-font-common-base; @apply --paper-button; } :host([elevation="1"]) { @apply --paper-material-elevation-1; } :host([elevation="2"]) { @apply --paper-material-elevation-2; } :host([elevation="3"]) { @apply --paper-material-elevation-3; } :host([elevation="4"]) { @apply --paper-material-elevation-4; } :host([elevation="5"]) { @apply --paper-material-elevation-5; } :host([hidden]) { display: none !important; } :host([raised].keyboard-focus) { font-weight: bold; @apply --paper-button-raised-keyboard-focus; } :host(:not([raised]).keyboard-focus) { font-weight: bold; @apply --paper-button-flat-keyboard-focus; } :host([disabled]) { background: #eaeaea; color: #a8a8a8; cursor: auto; pointer-events: none; @apply --paper-button-disabled; } :host([animated]) { @apply --shadow-transition; } paper-ripple { color: var(--paper-button-ink-color); } </style> <slot></slot> </template> </dom-module> <dom-module id="iron-overlay-backdrop"> <template> <style> :host { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: var(--iron-overlay-backdrop-background-color, #000); opacity: 0; transition: opacity 0.2s; pointer-events: none; @apply --iron-overlay-backdrop; } :host(.opened) { opacity: var(--iron-overlay-backdrop-opacity, 0.6); pointer-events: auto; @apply --iron-overlay-backdrop-opened; } </style> <slot></slot> </template> </dom-module> <custom-style> <style is="custom-style"> html { /* Material Design color palette for Google products */ --google-red-100: #f4c7c3; --google-red-300: #e67c73; --google-red-500: #db4437; --google-red-700: #c53929; --google-blue-100: #c6dafc; --google-blue-300: #7baaf7; --google-blue-500: #4285f4; --google-blue-700: #3367d6; --google-green-100: #b7e1cd; --google-green-300: #57bb8a; --google-green-500: #0f9d58; --google-green-700: #0b8043; --google-yellow-100: #fce8b2; --google-yellow-300: #f7cb4d; --google-yellow-500: #f4b400; --google-yellow-700: #f09300; --google-grey-100: #f5f5f5; --google-grey-300: #e0e0e0; --google-grey-500: #9e9e9e; --google-grey-700: #616161; /* Material Design color palette from online spec document */ --paper-red-50: #ffebee; --paper-red-100: #ffcdd2; --paper-red-200: #ef9a9a; --paper-red-300: #e57373; --paper-red-400: #ef5350; --paper-red-500: #f44336; --paper-red-600: #e53935; --paper-red-700: #d32f2f; --paper-red-800: #c62828; --paper-red-900: #b71c1c; --paper-red-a100: #ff8a80; --paper-red-a200: #ff5252; --paper-red-a400: #ff1744; --paper-red-a700: #d50000; --paper-pink-50: #fce4ec; --paper-pink-100: #f8bbd0; --paper-pink-200: #f48fb1; --paper-pink-300: #f06292; --paper-pink-400: #ec407a; --paper-pink-500: #e91e63; --paper-pink-600: #d81b60; --paper-pink-700: #c2185b; --paper-pink-800: #ad1457; --paper-pink-900: #880e4f; --paper-pink-a100: #ff80ab; --paper-pink-a200: #ff4081; --paper-pink-a400: #f50057; --paper-pink-a700: #c51162; --paper-purple-50: #f3e5f5; --paper-purple-100: #e1bee7; --paper-purple-200: #ce93d8; --paper-purple-300: #ba68c8; --paper-purple-400: #ab47bc; --paper-purple-500: #9c27b0; --paper-purple-600: #8e24aa; --paper-purple-700: #7b1fa2; --paper-purple-800: #6a1b9a; --paper-purple-900: #4a148c; --paper-purple-a100: #ea80fc; --paper-purple-a200: #e040fb; --paper-purple-a400: #d500f9; --paper-purple-a700: #aa00ff; --paper-deep-purple-50: #ede7f6; --paper-deep-purple-100: #d1c4e9; --paper-deep-purple-200: #b39ddb; --paper-deep-purple-300: #9575cd; --paper-deep-purple-400: #7e57c2; --paper-deep-purple-500: #673ab7; --paper-deep-purple-600: #5e35b1; --paper-deep-purple-700: #512da8; --paper-deep-purple-800: #4527a0; --paper-deep-purple-900: #311b92; --paper-deep-purple-a100: #b388ff; --paper-deep-purple-a200: #7c4dff; --paper-deep-purple-a400: #651fff; --paper-deep-purple-a700: #6200ea; --paper-indigo-50: #e8eaf6; --paper-indigo-100: #c5cae9; --paper-indigo-200: #9fa8da; --paper-indigo-300: #7986cb; --paper-indigo-400: #5c6bc0; --paper-indigo-500: #3f51b5; --paper-indigo-600: #3949ab; --paper-indigo-700: #303f9f; --paper-indigo-800: #283593; --paper-indigo-900: #1a237e; --paper-indigo-a100: #8c9eff; --paper-indigo-a200: #536dfe; --paper-indigo-a400: #3d5afe; --paper-indigo-a700: #304ffe; --paper-blue-50: #e3f2fd; --paper-blue-100: #bbdefb; --paper-blue-200: #90caf9; --paper-blue-300: #64b5f6; --paper-blue-400: #42a5f5; --paper-blue-500: #2196f3; --paper-blue-600: #1e88e5; --paper-blue-700: #1976d2; --paper-blue-800: #1565c0; --paper-blue-900: #0d47a1; --paper-blue-a100: #82b1ff; --paper-blue-a200: #448aff; --paper-blue-a400: #2979ff; --paper-blue-a700: #2962ff; --paper-light-blue-50: #e1f5fe; --paper-light-blue-100: #b3e5fc; --paper-light-blue-200: #81d4fa; --paper-light-blue-300: #4fc3f7; --paper-light-blue-400: #29b6f6; --paper-light-blue-500: #03a9f4; --paper-light-blue-600: #039be5; --paper-light-blue-700: #0288d1; --paper-light-blue-800: #0277bd; --paper-light-blue-900: #01579b; --paper-light-blue-a100: #80d8ff; --paper-light-blue-a200: #40c4ff; --paper-light-blue-a400: #00b0ff; --paper-light-blue-a700: #0091ea; --paper-cyan-50: #e0f7fa; --paper-cyan-100: #b2ebf2; --paper-cyan-200: #80deea; --paper-cyan-300: #4dd0e1; --paper-cyan-400: #26c6da; --paper-cyan-500: #00bcd4; --paper-cyan-600: #00acc1; --paper-cyan-700: #0097a7; --paper-cyan-800: #00838f; --paper-cyan-900: #006064; --paper-cyan-a100: #84ffff; --paper-cyan-a200: #18ffff; --paper-cyan-a400: #00e5ff; --paper-cyan-a700: #00b8d4; --paper-teal-50: #e0f2f1; --paper-teal-100: #b2dfdb; --paper-teal-200: #80cbc4; --paper-teal-300: #4db6ac; --paper-teal-400: #26a69a; --paper-teal-500: #009688; --paper-teal-600: #00897b; --paper-teal-700: #00796b; --paper-teal-800: #00695c; --paper-teal-900: #004d40; --paper-teal-a100: #a7ffeb; --paper-teal-a200: #64ffda; --paper-teal-a400: #1de9b6; --paper-teal-a700: #00bfa5; --paper-green-50: #e8f5e9; --paper-green-100: #c8e6c9; --paper-green-200: #a5d6a7; --paper-green-300: #81c784; --paper-green-400: #66bb6a; --paper-green-500: #4caf50; --paper-green-600: #43a047; --paper-green-700: #388e3c; --paper-green-800: #2e7d32; --paper-green-900: #1b5e20; --paper-green-a100: #b9f6ca; --paper-green-a200: #69f0ae; --paper-green-a400: #00e676; --paper-green-a700: #00c853; --paper-light-green-50: #f1f8e9; --paper-light-green-100: #dcedc8; --paper-light-green-200: #c5e1a5; --paper-light-green-300: #aed581; --paper-light-green-400: #9ccc65; --paper-light-green-500: #8bc34a; --paper-light-green-600: #7cb342; --paper-light-green-700: #689f38; --paper-light-green-800: #558b2f; --paper-light-green-900: #33691e; --paper-light-green-a100: #ccff90; --paper-light-green-a200: #b2ff59; --paper-light-green-a400: #76ff03; --paper-light-green-a700: #64dd17; --paper-lime-50: #f9fbe7; --paper-lime-100: #f0f4c3; --paper-lime-200: #e6ee9c; --paper-lime-300: #dce775; --paper-lime-400: #d4e157; --paper-lime-500: #cddc39; --paper-lime-600: #c0ca33; --paper-lime-700: #afb42b; --paper-lime-800: #9e9d24; --paper-lime-900: #827717; --paper-lime-a100: #f4ff81; --paper-lime-a200: #eeff41; --paper-lime-a400: #c6ff00; --paper-lime-a700: #aeea00; --paper-yellow-50: #fffde7; --paper-yellow-100: #fff9c4; --paper-yellow-200: #fff59d; --paper-yellow-300: #fff176; --paper-yellow-400: #ffee58; --paper-yellow-500: #ffeb3b; --paper-yellow-600: #fdd835; --paper-yellow-700: #fbc02d; --paper-yellow-800: #f9a825; --paper-yellow-900: #f57f17; --paper-yellow-a100: #ffff8d; --paper-yellow-a200: #ffff00; --paper-yellow-a400: #ffea00; --paper-yellow-a700: #ffd600; --paper-amber-50: #fff8e1; --paper-amber-100: #ffecb3; --paper-amber-200: #ffe082; --paper-amber-300: #ffd54f; --paper-amber-400: #ffca28; --paper-amber-500: #ffc107; --paper-amber-600: #ffb300; --paper-amber-700: #ffa000; --paper-amber-800: #ff8f00; --paper-amber-900: #ff6f00; --paper-amber-a100: #ffe57f; --paper-amber-a200: #ffd740; --paper-amber-a400: #ffc400; --paper-amber-a700: #ffab00; --paper-orange-50: #fff3e0; --paper-orange-100: #ffe0b2; --paper-orange-200: #ffcc80; --paper-orange-300: #ffb74d; --paper-orange-400: #ffa726; --paper-orange-500: #ff9800; --paper-orange-600: #fb8c00; --paper-orange-700: #f57c00; --paper-orange-800: #ef6c00; --paper-orange-900: #e65100; --paper-orange-a100: #ffd180; --paper-orange-a200: #ffab40; --paper-orange-a400: #ff9100; --paper-orange-a700: #ff6500; --paper-deep-orange-50: #fbe9e7; --paper-deep-orange-100: #ffccbc; --paper-deep-orange-200: #ffab91; --paper-deep-orange-300: #ff8a65; --paper-deep-orange-400: #ff7043; --paper-deep-orange-500: #ff5722; --paper-deep-orange-600: #f4511e; --paper-deep-orange-700: #e64a19; --paper-deep-orange-800: #d84315; --paper-deep-orange-900: #bf360c; --paper-deep-orange-a100: #ff9e80; --paper-deep-orange-a200: #ff6e40; --paper-deep-orange-a400: #ff3d00; --paper-deep-orange-a700: #dd2c00; --paper-brown-50: #efebe9; --paper-brown-100: #d7ccc8; --paper-brown-200: #bcaaa4; --paper-brown-300: #a1887f; --paper-brown-400: #8d6e63; --paper-brown-500: #795548; --paper-brown-600: #6d4c41; --paper-brown-700: #5d4037; --paper-brown-800: #4e342e; --paper-brown-900: #3e2723; --paper-grey-50: #fafafa; --paper-grey-100: #f5f5f5; --paper-grey-200: #eeeeee; --paper-grey-300: #e0e0e0; --paper-grey-400: #bdbdbd; --paper-grey-500: #9e9e9e; --paper-grey-600: #757575; --paper-grey-700: #616161; --paper-grey-800: #424242; --paper-grey-900: #212121; --paper-blue-grey-50: #eceff1; --paper-blue-grey-100: #cfd8dc; --paper-blue-grey-200: #b0bec5; --paper-blue-grey-300: #90a4ae; --paper-blue-grey-400: #78909c; --paper-blue-grey-500: #607d8b; --paper-blue-grey-600: #546e7a; --paper-blue-grey-700: #455a64; --paper-blue-grey-800: #37474f; --paper-blue-grey-900: #263238; /* opacity for dark text on a light background */ --dark-divider-opacity: 0.12; --dark-disabled-opacity: 0.38; /* or hint text or icon */ --dark-secondary-opacity: 0.54; --dark-primary-opacity: 0.87; /* opacity for light text on a dark background */ --light-divider-opacity: 0.12; --light-disabled-opacity: 0.3; /* or hint text or icon */ --light-secondary-opacity: 0.7; --light-primary-opacity: 1.0; } </style> </custom-style> <custom-style> <style is="custom-style"> html { /* * You can use these generic variables in your elements for easy theming. * For example, if all your elements use `--primary-text-color` as its main * color, then switching from a light to a dark theme is just a matter of * changing the value of `--primary-text-color` in your application. */ --primary-text-color: var(--light-theme-text-color); --primary-background-color: var(--light-theme-background-color); --secondary-text-color: var(--light-theme-secondary-color); --disabled-text-color: var(--light-theme-disabled-color); --divider-color: var(--light-theme-divider-color); --error-color: var(--paper-deep-orange-a700); /* * Primary and accent colors. Also see color.html for more colors. */ --primary-color: var(--paper-indigo-500); --light-primary-color: var(--paper-indigo-100); --dark-primary-color: var(--paper-indigo-700); --accent-color: var(--paper-pink-a200); --light-accent-color: var(--paper-pink-a100); --dark-accent-color: var(--paper-pink-a400); /* * Material Design Light background theme */ --light-theme-background-color: #ffffff; --light-theme-base-color: #000000; --light-theme-text-color: var(--paper-grey-900); --light-theme-secondary-color: #737373; /* for secondary text and icons */ --light-theme-disabled-color: #9b9b9b; /* disabled/hint text */ --light-theme-divider-color: #dbdbdb; /* * Material Design Dark background theme */ --dark-theme-background-color: var(--paper-grey-900); --dark-theme-base-color: #ffffff; --dark-theme-text-color: #ffffff; --dark-theme-secondary-color: #bcbcbc; /* for secondary text and icons */ --dark-theme-disabled-color: #646464; /* disabled/hint text */ --dark-theme-divider-color: #3c3c3c; /* * Deprecated values because of their confusing names. */ --text-primary-color: var(--dark-theme-text-color); --default-primary-color: var(--primary-color); } </style> </custom-style> <style> @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 400; src: local('Roboto'), local('Roboto-Regular'), url(/font-roboto/uYECMKoHcO9x1wdmbyHIm3-_kf6ByYO6CLYdB4HQE-Y.woff2) format('woff2'); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 400; src: local('Roboto'), local('Roboto-Regular'), url(/font-roboto/sTdaA6j0Psb920Vjv-mrzH-_kf6ByYO6CLYdB4HQE-Y.woff2) format('woff2'); unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 400; src: local('Roboto'), local('Roboto-Regular'), url(/font-roboto/_VYFx-s824kXq_Ul2BHqYH-_kf6ByYO6CLYdB4HQE-Y.woff2) format('woff2'); unicode-range: U+0370-03FF; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 400; src: local('Roboto'), local('Roboto-Regular'), url(/font-roboto/tnj4SB6DNbdaQnsM8CFqBX-_kf6ByYO6CLYdB4HQE-Y.woff2) format('woff2'); unicode-range: U+1F00-1FFF; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 400; src: local('Roboto'), local('Roboto-Regular'), url(/font-roboto/oMMgfZMQthOryQo9n22dcuvvDin1pK8aKteLpeZ5c0A.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 400; src: local('Roboto'), local('Roboto-Regular'), url(/font-roboto/Ks_cVxiCiwUWVsFWFA3Bjn-_kf6ByYO6CLYdB4HQE-Y.woff2) format('woff2'); unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 400; src: local('Roboto'), local('Roboto-Regular'), url(/font-roboto/NJ4vxlgWwWbEsv18dAhqnn-_kf6ByYO6CLYdB4HQE-Y.woff2) format('woff2'); unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 700; src: local('Roboto Bold'), local('Roboto-Bold'), url(/font-roboto/isZ-wbCXNKAbnjo6_TwHToX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 700; src: local('Roboto Bold'), local('Roboto-Bold'), url(/font-roboto/77FXFjRbGzN4aCrSFhlh3oX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 700; src: local('Roboto Bold'), local('Roboto-Bold'), url(/font-roboto/jSN2CGVDbcVyCnfJfjSdfIX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); unicode-range: U+0370-03FF; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 700; src: local('Roboto Bold'), local('Roboto-Bold'), url(/font-roboto/UX6i4JxQDm3fVTc1CPuwqoX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); unicode-range: U+1F00-1FFF; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 700; src: local('Roboto Bold'), local('Roboto-Bold'), url(/font-roboto/d-6IYplOFocCacKzxwXSOJBw1xU1rKptJj_0jans920.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 700; src: local('Roboto Bold'), local('Roboto-Bold'), url(/font-roboto/97uahxiqZRoncBaCEI3aW4X0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 700; src: local('Roboto Bold'), local('Roboto-Bold'), url(/font-roboto/PwZc-YbIL414wB9rB1IAPYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 700; src: local('Roboto Bold Italic'), local('Roboto-BoldItalic'), url(/font-roboto/t6Nd4cfPRhZP44Q5QAjcC14sYYdJg5dU2qzJEVSuta0.woff2) format('woff2'); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 700; src: local('Roboto Bold Italic'), local('Roboto-BoldItalic'), url(/font-roboto/t6Nd4cfPRhZP44Q5QAjcC_ZraR2Tg8w2lzm7kLNL0-w.woff2) format('woff2'); unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 700; src: local('Roboto Bold Italic'), local('Roboto-BoldItalic'), url(/font-roboto/t6Nd4cfPRhZP44Q5QAjcCwt_Rm691LTebKfY2ZkKSmI.woff2) format('woff2'); unicode-range: U+0370-03FF; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 700; src: local('Roboto Bold Italic'), local('Roboto-BoldItalic'), url(/font-roboto/t6Nd4cfPRhZP44Q5QAjcC1BW26QxpSj-_ZKm_xT4hWw.woff2) format('woff2'); unicode-range: U+1F00-1FFF; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 700; src: local('Roboto Bold Italic'), local('Roboto-BoldItalic'), url(/font-roboto/t6Nd4cfPRhZP44Q5QAjcC4gp9Q8gbYrhqGlRav_IXfk.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 700; src: local('Roboto Bold Italic'), local('Roboto-BoldItalic'), url(/font-roboto/t6Nd4cfPRhZP44Q5QAjcC6E8kM4xWR1_1bYURRojRGc.woff2) format('woff2'); unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 700; src: local('Roboto Bold Italic'), local('Roboto-BoldItalic'), url(/font-roboto/t6Nd4cfPRhZP44Q5QAjcC9DiNsR5a-9Oe_Ivpu8XWlY.woff2) format('woff2'); unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 400; src: local('Roboto Italic'), local('Roboto-Italic'), url(/font-roboto/OpXUqTo0UgQQhGj_SFdLWBkAz4rYn47Zy2rvigWQf6w.woff2) format('woff2'); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 400; src: local('Roboto Italic'), local('Roboto-Italic'), url(/font-roboto/WxrXJa0C3KdtC7lMafG4dRkAz4rYn47Zy2rvigWQf6w.woff2) format('woff2'); unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 400; src: local('Roboto Italic'), local('Roboto-Italic'), url(/font-roboto/cDKhRaXnQTOVbaoxwdOr9xkAz4rYn47Zy2rvigWQf6w.woff2) format('woff2'); unicode-range: U+0370-03FF; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 400; src: local('Roboto Italic'), local('Roboto-Italic'), url(/font-roboto/1hZf02POANh32k2VkgEoUBkAz4rYn47Zy2rvigWQf6w.woff2) format('woff2'); unicode-range: U+1F00-1FFF; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 400; src: local('Roboto Italic'), local('Roboto-Italic'), url(/font-roboto/vPcynSL0qHq_6dX7lKVByXYhjbSpvc47ee6xR_80Hnw.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 400; src: local('Roboto Italic'), local('Roboto-Italic'), url(/font-roboto/vSzulfKSK0LLjjfeaxcREhkAz4rYn47Zy2rvigWQf6w.woff2) format('woff2'); unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 400; src: local('Roboto Italic'), local('Roboto-Italic'), url(/font-roboto/K23cxWVTrIFD6DJsEVi07RkAz4rYn47Zy2rvigWQf6w.woff2) format('woff2'); unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 300; src: local('Roboto Light'), local('Roboto-Light'), url(/font-roboto/Fl4y0QdOxyyTHEGMXX8kcYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 300; src: local('Roboto Light'), local('Roboto-Light'), url(/font-roboto/0eC6fl06luXEYWpBSJvXCIX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 300; src: local('Roboto Light'), local('Roboto-Light'), url(/font-roboto/I3S1wsgSg9YCurV6PUkTOYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); unicode-range: U+0370-03FF; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 300; src: local('Roboto Light'), local('Roboto-Light'), url(/font-roboto/-L14Jk06m6pUHB-5mXQQnYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); unicode-range: U+1F00-1FFF; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 300; src: local('Roboto Light'), local('Roboto-Light'), url(/font-roboto/Hgo13k-tfSpn0qi1SFdUfZBw1xU1rKptJj_0jans920.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 300; src: local('Roboto Light'), local('Roboto-Light'), url(/font-roboto/Pru33qjShpZSmG3z6VYwnYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 300; src: local('Roboto Light'), local('Roboto-Light'), url(/font-roboto/NYDWBdD4gIq26G5XYbHsFIX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 300; src: local('Roboto Light Italic'), local('Roboto-LightItalic'), url(/font-roboto/7m8l7TlFO-S3VkhHuR0at14sYYdJg5dU2qzJEVSuta0.woff2) format('woff2'); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 300; src: local('Roboto Light Italic'), local('Roboto-LightItalic'), url(/font-roboto/7m8l7TlFO-S3VkhHuR0at_ZraR2Tg8w2lzm7kLNL0-w.woff2) format('woff2'); unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 300; src: local('Roboto Light Italic'), local('Roboto-LightItalic'), url(/font-roboto/7m8l7TlFO-S3VkhHuR0atwt_Rm691LTebKfY2ZkKSmI.woff2) format('woff2'); unicode-range: U+0370-03FF; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 300; src: local('Roboto Light Italic'), local('Roboto-LightItalic'), url(/font-roboto/7m8l7TlFO-S3VkhHuR0at1BW26QxpSj-_ZKm_xT4hWw.woff2) format('woff2'); unicode-range: U+1F00-1FFF; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 300; src: local('Roboto Light Italic'), local('Roboto-LightItalic'), url(/font-roboto/7m8l7TlFO-S3VkhHuR0at4gp9Q8gbYrhqGlRav_IXfk.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 300; src: local('Roboto Light Italic'), local('Roboto-LightItalic'), url(/font-roboto/7m8l7TlFO-S3VkhHuR0at6E8kM4xWR1_1bYURRojRGc.woff2) format('woff2'); unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 300; src: local('Roboto Light Italic'), local('Roboto-LightItalic'), url(/font-roboto/7m8l7TlFO-S3VkhHuR0at9DiNsR5a-9Oe_Ivpu8XWlY.woff2) format('woff2'); unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 500; src: local('Roboto Medium'), local('Roboto-Medium'), url(/font-roboto/oHi30kwQWvpCWqAhzHcCSIX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 500; src: local('Roboto Medium'), local('Roboto-Medium'), url(/font-roboto/ZLqKeelYbATG60EpZBSDy4X0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 500; src: local('Roboto Medium'), local('Roboto-Medium'), url(/font-roboto/mx9Uck6uB63VIKFYnEMXrYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); unicode-range: U+0370-03FF; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 500; src: local('Roboto Medium'), local('Roboto-Medium'), url(/font-roboto/rGvHdJnr2l75qb0YND9NyIX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); unicode-range: U+1F00-1FFF; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 500; src: local('Roboto Medium'), local('Roboto-Medium'), url(/font-roboto/RxZJdnzeo3R5zSexge8UUZBw1xU1rKptJj_0jans920.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 500; src: local('Roboto Medium'), local('Roboto-Medium'), url(/font-roboto/oOeFwZNlrTefzLYmlVV1UIX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 500; src: local('Roboto Medium'), local('Roboto-Medium'), url(/font-roboto/mbmhprMH69Zi6eEPBYVFhYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 500; src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'), url(/font-roboto/OLffGBTaF0XFOW1gnuHF0V4sYYdJg5dU2qzJEVSuta0.woff2) format('woff2'); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 500; src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'), url(/font-roboto/OLffGBTaF0XFOW1gnuHF0fZraR2Tg8w2lzm7kLNL0-w.woff2) format('woff2'); unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 500; src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'), url(/font-roboto/OLffGBTaF0XFOW1gnuHF0Qt_Rm691LTebKfY2ZkKSmI.woff2) format('woff2'); unicode-range: U+0370-03FF; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 500; src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'), url(/font-roboto/OLffGBTaF0XFOW1gnuHF0VBW26QxpSj-_ZKm_xT4hWw.woff2) format('woff2'); unicode-range: U+1F00-1FFF; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 500; src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'), url(/font-roboto/OLffGBTaF0XFOW1gnuHF0Ygp9Q8gbYrhqGlRav_IXfk.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 500; src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'), url(/font-roboto/OLffGBTaF0XFOW1gnuHF0aE8kM4xWR1_1bYURRojRGc.woff2) format('woff2'); unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; } @font-face { font-family: 'Roboto'; font-style: italic; font-weight: 500; src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'), url(/font-roboto/OLffGBTaF0XFOW1gnuHF0dDiNsR5a-9Oe_Ivpu8XWlY.woff2) format('woff2'); unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; } @font-face { font-family: 'Roboto Mono'; font-style: normal; font-weight: 400; src: local('Roboto Mono'), local('RobotoMono-Regular'), url(/font-roboto/hMqPNLsu_dywMa4C_DEpY14sYYdJg5dU2qzJEVSuta0.woff2) format('woff2'); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; } @font-face { font-family: 'Roboto Mono'; font-style: normal; font-weight: 400; src: local('Roboto Mono'), local('RobotoMono-Regular'), url(/font-roboto/hMqPNLsu_dywMa4C_DEpY_ZraR2Tg8w2lzm7kLNL0-w.woff2) format('woff2'); unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; } @font-face { font-family: 'Roboto Mono'; font-style: normal; font-weight: 400; src: local('Roboto Mono'), local('RobotoMono-Regular'), url(/font-roboto/hMqPNLsu_dywMa4C_DEpYwt_Rm691LTebKfY2ZkKSmI.woff2) format('woff2'); unicode-range: U+0370-03FF; } @font-face { font-family: 'Roboto Mono'; font-style: normal; font-weight: 400; src: local('Roboto Mono'), local('RobotoMono-Regular'), url(/font-roboto/hMqPNLsu_dywMa4C_DEpY1BW26QxpSj-_ZKm_xT4hWw.woff2) format('woff2'); unicode-range: U+1F00-1FFF; } @font-face { font-family: 'Roboto Mono'; font-style: normal; font-weight: 400; src: local('Roboto Mono'), local('RobotoMono-Regular'), url(/font-roboto/hMqPNLsu_dywMa4C_DEpY4gp9Q8gbYrhqGlRav_IXfk.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; } @font-face { font-family: 'Roboto Mono'; font-style: normal; font-weight: 400; src: local('Roboto Mono'), local('RobotoMono-Regular'), url(/font-roboto/hMqPNLsu_dywMa4C_DEpY6E8kM4xWR1_1bYURRojRGc.woff2) format('woff2'); unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; } @font-face { font-family: 'Roboto Mono'; font-style: normal; font-weight: 400; src: local('Roboto Mono'), local('RobotoMono-Regular'), url(/font-roboto/hMqPNLsu_dywMa4C_DEpY9DiNsR5a-9Oe_Ivpu8XWlY.woff2) format('woff2'); unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; } @font-face { font-family: 'Roboto Mono'; font-style: normal; font-weight: 700; src: local('Roboto Mono Bold'), local('RobotoMono-Bold'), url(/font-roboto/N4duVc9C58uwPiY8_59Fz1x-M1I1w5OMiqnVF8xBLhU.woff2) format('woff2'); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; } @font-face { font-family: 'Roboto Mono'; font-style: normal; font-weight: 700; src: local('Roboto Mono Bold'), local('RobotoMono-Bold'), url(/font-roboto/N4duVc9C58uwPiY8_59FzwXaAXup5mZlfK6xRLrhsco.woff2) format('woff2'); unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; } @font-face { font-family: 'Roboto Mono'; font-style: normal; font-weight: 700; src: local('Roboto Mono Bold'), local('RobotoMono-Bold'), url(/font-roboto/N4duVc9C58uwPiY8_59Fzwn6Wqxo-xwxilDXPU8chVU.woff2) format('woff2'); unicode-range: U+0370-03FF; } @font-face { font-family: 'Roboto Mono'; font-style: normal; font-weight: 700; src: local('Roboto Mono Bold'), local('RobotoMono-Bold'), url(/font-roboto/N4duVc9C58uwPiY8_59Fz1T7aJLK6nKpn36IMwTcMMc.woff2) format('woff2'); unicode-range: U+1F00-1FFF; } @font-face { font-family: 'Roboto Mono'; font-style: normal; font-weight: 700; src: local('Roboto Mono Bold'), local('RobotoMono-Bold'), url(/font-roboto/N4duVc9C58uwPiY8_59Fz_79_ZuUxCigM2DespTnFaw.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; } @font-face { font-family: 'Roboto Mono'; font-style: normal; font-weight: 700; src: local('Roboto Mono Bold'), local('RobotoMono-Bold'), url(/font-roboto/N4duVc9C58uwPiY8_59Fz4gd9OEPUCN3AdYW0e8tat4.woff2) format('woff2'); unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; } @font-face { font-family: 'Roboto Mono'; font-style: normal; font-weight: 700; src: local('Roboto Mono Bold'), local('RobotoMono-Bold'), url(/font-roboto/N4duVc9C58uwPiY8_59Fz8bIQSYZnWLaWC9QNCpTK_U.woff2) format('woff2'); unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; } </style> <custom-style> <style is="custom-style"> html { /* Shared Styles */ --paper-font-common-base: { font-family: 'Roboto', 'Noto', sans-serif; -webkit-font-smoothing: antialiased; }; --paper-font-common-code: { font-family: 'Roboto Mono', 'Consolas', 'Menlo', monospace; -webkit-font-smoothing: antialiased; }; --paper-font-common-expensive-kerning: { text-rendering: optimizeLegibility; }; --paper-font-common-nowrap: { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }; /* Material Font Styles */ --paper-font-display4: { @apply --paper-font-common-base; @apply --paper-font-common-nowrap; font-size: 112px; font-weight: 300; letter-spacing: -.044em; line-height: 120px; }; --paper-font-display3: { @apply --paper-font-common-base; @apply --paper-font-common-nowrap; font-size: 56px; font-weight: 400; letter-spacing: -.026em; line-height: 60px; }; --paper-font-display2: { @apply --paper-font-common-base; font-size: 45px; font-weight: 400; letter-spacing: -.018em; line-height: 48px; }; --paper-font-display1: { @apply --paper-font-common-base; font-size: 34px; font-weight: 400; letter-spacing: -.01em; line-height: 40px; }; --paper-font-headline: { @apply --paper-font-common-base; font-size: 24px; font-weight: 400; letter-spacing: -.012em; line-height: 32px; }; --paper-font-title: { @apply --paper-font-common-base; @apply --paper-font-common-nowrap; font-size: 20px; font-weight: 500; line-height: 28px; }; --paper-font-subhead: { @apply --paper-font-common-base; font-size: 16px; font-weight: 400; line-height: 24px; }; --paper-font-body2: { @apply --paper-font-common-base; font-size: 14px; font-weight: 500; line-height: 24px; }; --paper-font-body1: { @apply --paper-font-common-base; font-size: 14px; font-weight: 400; line-height: 20px; }; --paper-font-caption: { @apply --paper-font-common-base; @apply --paper-font-common-nowrap; font-size: 12px; font-weight: 400; letter-spacing: 0.011em; line-height: 20px; }; --paper-font-menu: { @apply --paper-font-common-base; @apply --paper-font-common-nowrap; font-size: 13px; font-weight: 500; line-height: 24px; }; --paper-font-button: { @apply --paper-font-common-base; @apply --paper-font-common-nowrap; font-size: 14px; font-weight: 500; letter-spacing: 0.018em; line-height: 24px; text-transform: uppercase; }; --paper-font-code2: { @apply --paper-font-common-code; font-size: 14px; font-weight: 700; line-height: 20px; }; --paper-font-code1: { @apply --paper-font-common-code; font-size: 14px; font-weight: 500; line-height: 20px; }; } </style> </custom-style> <dom-module id="paper-dialog-shared-styles"> <template> <style> :host { display: block; margin: 24px 40px; background: var(--paper-dialog-background-color, var(--primary-background-color)); color: var(--paper-dialog-color, var(--primary-text-color)); @apply --paper-font-body1; @apply --shadow-elevation-16dp; @apply --paper-dialog; } :host > ::slotted(*) { margin-top: 20px; padding: 0 24px; } :host > ::slotted(.no-padding) { padding: 0; } :host > ::slotted(*:first-child) { margin-top: 24px; } :host > ::slotted(*:last-child) { margin-bottom: 24px; } /* In 1.x, this selector was `:host > ::content h2`. In 2.x <slot> allows to select direct children only, which increases the weight of this selector, so we have to re-define first-child/last-child margins below. */ :host > ::slotted(h2) { position: relative; margin: 0; @apply --paper-font-title; @apply --paper-dialog-title; } /* Apply mixin again, in case it sets margin-top. */ :host > ::slotted(h2:first-child) { margin-top: 24px; @apply --paper-dialog-title; } /* Apply mixin again, in case it sets margin-bottom. */ :host > ::slotted(h2:last-child) { margin-bottom: 24px; @apply --paper-dialog-title; } :host > ::slotted(.paper-dialog-buttons), :host > ::slotted(.buttons) { position: relative; padding: 8px 8px 8px 24px; margin: 0; color: var(--paper-dialog-button-color, var(--primary-color)); @apply --layout-horizontal; @apply --layout-end-justified; } </style> </template> </dom-module> <dom-module id="paper-dialog"> <template> <style include="paper-dialog-shared-styles"></style> <slot></slot> </template> </dom-module> <dom-module id="paper-toggle-button"> <template strip-whitespace> <style> :host { display: inline-block; @apply --layout-horizontal; @apply --layout-center; @apply --paper-font-common-base; } :host([disabled]) { pointer-events: none; } :host(:focus) { outline:none; } .toggle-bar { position: absolute; height: 100%; width: 100%; border-radius: 8px; pointer-events: none; opacity: 0.4; transition: background-color linear .08s; background-color: var(--paper-toggle-button-unchecked-bar-color, #000000); @apply --paper-toggle-button-unchecked-bar; } .toggle-button { position: absolute; top: -3px; left: 0; height: 20px; width: 20px; border-radius: 50%; box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.6); transition: -webkit-transform linear .08s, background-color linear .08s; transition: transform linear .08s, background-color linear .08s; will-change: transform; background-color: var(--paper-toggle-button-unchecked-button-color, var(--paper-grey-50)); @apply --paper-toggle-button-unchecked-button; } .toggle-button.dragging { -webkit-transition: none; transition: none; } :host([checked]:not([disabled])) .toggle-bar { opacity: 0.5; background-color: var(--paper-toggle-button-checked-bar-color, var(--primary-color)); @apply --paper-toggle-button-checked-bar; } :host([disabled]) .toggle-bar { background-color: #000; opacity: 0.12; } :host([checked]) .toggle-button { -webkit-transform: translate(16px, 0); transform: translate(16px, 0); } :host([checked]:not([disabled])) .toggle-button { background-color: var(--paper-toggle-button-checked-button-color, var(--primary-color)); @apply --paper-toggle-button-checked-button; } :host([disabled]) .toggle-button { background-color: #bdbdbd; opacity: 1; } .toggle-ink { position: absolute; top: -14px; left: -14px; right: auto; bottom: auto; width: 48px; height: 48px; opacity: 0.5; pointer-events: none; color: var(--paper-toggle-button-unchecked-ink-color, var(--primary-text-color)); @apply --paper-toggle-button-unchecked-ink; } :host([checked]) .toggle-ink { color: var(--paper-toggle-button-checked-ink-color, var(--primary-color)); @apply --paper-toggle-button-checked-ink; } .toggle-container { display: inline-block; position: relative; width: 36px; height: 14px; /* The toggle button has an absolute position of -3px; The extra 1px /* accounts for the toggle button shadow box. */ margin: 4px 1px; } .toggle-label { position: relative; display: inline-block; vertical-align: middle; padding-left: var(--paper-toggle-button-label-spacing, 8px); pointer-events: none; color: var(--paper-toggle-button-label-color, var(--primary-text-color)); } /* invalid state */ :host([invalid]) .toggle-bar { background-color: var(--paper-toggle-button-invalid-bar-color, var(--error-color)); } :host([invalid]) .toggle-button { background-color: var(--paper-toggle-button-invalid-button-color, var(--error-color)); } :host([invalid]) .toggle-ink { color: var(--paper-toggle-button-invalid-ink-color, var(--error-color)); } </style> <div class="toggle-container"> <div id="toggleBar" class="toggle-bar"></div> <div id="toggleButton" class="toggle-button"></div> </div> <div class="toggle-label"><slot></slot></div> </template> </dom-module> <dom-module id="iron-a11y-announcer"> <template> <style> :host { display: inline-block; position: fixed; clip: rect(0px,0px,0px,0px); } </style> <div aria-live$="[[mode]]">[[_text]]</div> </template> </dom-module> <dom-module id="iron-input"> <template> <style> :host { display: inline-block; } </style> <slot id="content"></slot> </template> </dom-module> <dom-module id="paper-input-char-counter"> <template> <style> :host { display: inline-block; float: right; @apply --paper-font-caption; @apply --paper-input-char-counter; } :host([hidden]) { display: none !important; } :host(:dir(rtl)) { float: left; } </style> <span>[[_charCounterStr]]</span> </template> </dom-module> <custom-style> <style is="custom-style"> html { --paper-input-container-shared-input-style: { position: relative; /* to make a stacking context */ outline: none; box-shadow: none; padding: 0; margin: 0; width: 100%; max-width: 100%; background: transparent; border: none; color: var(--paper-input-container-input-color, var(--primary-text-color)); -webkit-appearance: none; text-align: inherit; vertical-align: bottom; @apply --paper-font-subhead; }; } </style> </custom-style> <dom-module id="paper-input-container"> <template> <style> :host { display: block; padding: 8px 0; @apply --paper-input-container; } :host([inline]) { display: inline-block; } :host([disabled]) { pointer-events: none; opacity: 0.33; @apply --paper-input-container-disabled; } :host([hidden]) { display: none !important; } [hidden] { display: none !important; } .floated-label-placeholder { @apply --paper-font-caption; } .underline { height: 2px; position: relative; } .focused-line { @apply --layout-fit; border-bottom: 2px solid var(--paper-input-container-focus-color, var(--primary-color)); -webkit-transform-origin: center center; transform-origin: center center; -webkit-transform: scale3d(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 0.25s; transition: transform 0.25s; @apply --paper-transition-easing; } .underline.is-invalid .focused-line { border-color: var(--paper-input-container-invalid-color, var(--error-color)); -webkit-transform: none; transform: none; -webkit-transition: -webkit-transform 0.25s; transition: transform 0.25s; @apply --paper-transition-easing; } .unfocused-line { @apply --layout-fit; border-bottom: 1px solid var(--paper-input-container-color, var(--secondary-text-color)); @apply --paper-input-container-underline; } :host([disabled]) .unfocused-line { border-bottom: 1px dashed; border-color: var(--paper-input-container-color, var(--secondary-text-color)); @apply --paper-input-container-underline-disabled; } .input-wrapper { @apply --layout-horizontal; @apply --layout-center; position: relative; } .input-content { @apply --layout-flex-auto; @apply --layout-relative; max-width: 100%; } .input-content ::slotted(label), .input-content ::slotted(.paper-input-label) { position: absolute; top: 0; left: 0; width: 100%; font: inherit; color: var(--paper-input-container-color, var(--secondary-text-color)); -webkit-transition: -webkit-transform 0.25s, width 0.25s; transition: transform 0.25s, width 0.25s; -webkit-transform-origin: left top; transform-origin: left top; /* Fix for safari not focusing 0-height date/time inputs with -webkit-apperance: none; */ min-height: 1px; @apply --paper-font-common-nowrap; @apply --paper-font-subhead; @apply --paper-input-container-label; @apply --paper-transition-easing; } .input-content.label-is-floating ::slotted(label), .input-content.label-is-floating ::slotted(.paper-input-label) { -webkit-transform: translateY(-75%) scale(0.75); transform: translateY(-75%) scale(0.75); /* Since we scale to 75/100 of the size, we actually have 100/75 of the original space now available */ width: 133%; @apply --paper-input-container-label-floating; } :host(:dir(rtl)) .input-content.label-is-floating ::slotted(label), :host(:dir(rtl)) .input-content.label-is-floating ::slotted(.paper-input-label) { right: 0; left: auto; -webkit-transform-origin: right top; transform-origin: right top; } .input-content.label-is-highlighted ::slotted(label), .input-content.label-is-highlighted ::slotted(.paper-input-label) { color: var(--paper-input-container-focus-color, var(--primary-color)); @apply --paper-input-container-label-focus; } .input-content.is-invalid ::slotted(label), .input-content.is-invalid ::slotted(.paper-input-label) { color: var(--paper-input-container-invalid-color, var(--error-color)); } .input-content.label-is-hidden ::slotted(label), .input-content.label-is-hidden ::slotted(.paper-input-label) { visibility: hidden; } .input-content ::slotted(input), .input-content ::slotted(iron-input), .input-content ::slotted(textarea), .input-content ::slotted(iron-autogrow-textarea), .input-content ::slotted(.paper-input-input) { @apply --paper-input-container-shared-input-style; /* The apply shim doesn't apply the nested color custom property, so we have to re-apply it here. */ color: var(--paper-input-container-input-color, var(--primary-text-color)); @apply --paper-input-container-input; } .input-content ::slotted(input)::-webkit-outer-spin-button, .input-content ::slotted(input)::-webkit-inner-spin-button { @apply --paper-input-container-input-webkit-spinner; } .input-content.focused ::slotted(input), .input-content.focused ::slotted(iron-input), .input-content.focused ::slotted(textarea), .input-content.focused ::slotted(iron-autogrow-textarea), .input-content.focused ::slotted(.paper-input-input) { @apply --paper-input-container-input-focus; } .input-content.is-invalid ::slotted(input), .input-content.is-invalid ::slotted(iron-input), .input-content.is-invalid ::slotted(textarea), .input-content.is-invalid ::slotted(iron-autogrow-textarea), .input-content.is-invalid ::slotted(.paper-input-input) { @apply --paper-input-container-input-invalid; } .prefix ::slotted(*) { display: inline-block; @apply --paper-font-subhead; @apply --layout-flex-none; @apply --paper-input-prefix; } .suffix ::slotted(*) { display: inline-block; @apply --paper-font-subhead; @apply --layout-flex-none; @apply --paper-input-suffix; } /* Firefox sets a min-width on the input, which can cause layout issues */ .input-content ::slotted(input) { min-width: 0; } .input-content ::slotted(textarea) { resize: none; } .add-on-content { position: relative; } .add-on-content.is-invalid ::slotted(*) { color: var(--paper-input-container-invalid-color, var(--error-color)); } .add-on-content.is-highlighted ::slotted(*) { color: var(--paper-input-container-focus-color, var(--primary-color)); } </style> <div class="floated-label-placeholder" aria-hidden="true" hidden="[[noLabelFloat]]"> </div> <div class="input-wrapper"> <span class="prefix"><slot name="prefix"></slot></span> <div class$="[[_computeInputContentClass(noLabelFloat,alwaysFloatLabel,focused,invalid,_inputHasContent)]]" id="labelAndInputContainer"> <slot name="label"></slot> <slot name="input"></slot> </div> <span class="suffix"><slot name="suffix"></slot></span> </div> <div class$="[[_computeUnderlineClass(focused,invalid)]]"> <div class="unfocused-line"></div> <div class="focused-line"></div> </div> <div class$="[[_computeAddOnContentClass(focused,invalid)]]"> <slot name="add-on"></slot> </div> </template> </dom-module> <dom-module id="paper-input-error"> <template> <style> :host { display: inline-block; visibility: hidden; color: var(--paper-input-container-invalid-color, var(--error-color)); @apply --paper-font-caption; @apply --paper-input-error; position: absolute; left:0; right:0; } :host([invalid]) { visibility: visible; }; </style> <slot></slot> </template> </dom-module> <dom-module id="paper-input"> <template> <style> :host { display: block; } :host([focused]) { outline: none; } :host([hidden]) { display: none !important; } input { /* Firefox sets a min-width on the input, which can cause layout issues */ min-width: 0; } /* In 1.x, the <input> is distributed to paper-input-container, which styles it. In 2.x the <iron-input> is distributed to paper-input-container, which styles it, but in order for this to work correctly, we need to reset some of the native input's properties to inherit (from the iron-input) */ iron-input > input { @apply --paper-input-container-shared-input-style; font-family: inherit; font-weight: inherit; font-size: inherit; letter-spacing: inherit; word-spacing: inherit; line-height: inherit; text-shadow: inherit; color: inherit; cursor: inherit; } input:disabled { @apply --paper-input-container-input-disabled; } input::-webkit-outer-spin-button, input::-webkit-inner-spin-button { @apply --paper-input-container-input-webkit-spinner; } input::-webkit-clear-button { @apply --paper-input-container-input-webkit-clear; } input::-webkit-calendar-picker-indicator { @apply --paper-input-container-input-webkit-calendar-picker-indicator; } input::-webkit-input-placeholder { color: var(--paper-input-container-color, var(--secondary-text-color)); } input:-moz-placeholder { color: var(--paper-input-container-color, var(--secondary-text-color)); } input::-moz-placeholder { color: var(--paper-input-container-color, var(--secondary-text-color)); } input::-ms-clear { @apply --paper-input-container-ms-clear; } input::-ms-reveal { @apply --paper-input-container-ms-reveal; } input:-ms-input-placeholder { color: var(--paper-input-container-color, var(--secondary-text-color)); } label { pointer-events: none; } </style> <paper-input-container id="container" no-label-float="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"> <slot name="prefix" slot="prefix"></slot> <label hidden$="[[!label]]" aria-hidden="true" for$="[[_inputId]]" slot="label">[[label]]</label> <span id="template-placeholder"></span> <slot name="suffix" slot="suffix"></slot> <template is="dom-if" if="[[errorMessage]]"> <paper-input-error aria-live="assertive" slot="add-on">[[errorMessage]]</paper-input-error> </template> <template is="dom-if" if="[[charCounter]]"> <paper-input-char-counter slot="add-on"></paper-input-char-counter> </template> </paper-input-container> </template> <template id="v0"> <input is="iron-input" slot="input" class="input-element" id$="[[_inputId]]" aria-labelledby$="[[_ariaLabelledBy]]" aria-describedby$="[[_ariaDescribedBy]]" disabled$="[[disabled]]" title$="[[title]]" bind-value="{{value}}" invalid="{{invalid}}" prevent-invalid-input="[[preventInvalidInput]]" allowed-pattern="[[allowedPattern]]" validator="[[validator]]" type$="[[type]]" pattern$="[[pattern]]" required$="[[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]]" autocapitalize$="[[autocapitalize]]" autocorrect$="[[autocorrect]]" on-change="_onChange" tabindex$="[[tabIndex]]" autosave$="[[autosave]]" results$="[[results]]" accept$="[[accept]]" multiple$="[[multiple]]"> </template> <template id="v1"> <iron-input bind-value="{{value}}" slot="input" class="input-element" id$="[[_inputId]]" maxlength$="[[maxlength]]" allowed-pattern="[[allowedPattern]]" invalid="{{invalid}}" validator="[[validator]]"> <input aria-labelledby$="[[_ariaLabelledBy]]" aria-describedby$="[[_ariaDescribedBy]]" disabled$="[[disabled]]" title$="[[title]]" type$="[[type]]" pattern$="[[pattern]]" required$="[[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]]" autocapitalize$="[[autocapitalize]]" autocorrect$="[[autocorrect]]" on-change="_onChange" tabindex$="[[tabIndex]]" autosave$="[[autosave]]" results$="[[results]]" accept$="[[accept]]" multiple$="[[multiple]]"> </iron-input> </template> </dom-module> <dom-module id="iron-dropdown"> <template> <style> :host { position: fixed; } #contentWrapper ::slotted(*) { overflow: auto; } #contentWrapper.animating ::slotted(*) { overflow: hidden; pointer-events: none; } </style> <div id="contentWrapper"> <slot id="content" name="dropdown-content"></slot> </div> </template> </dom-module> <dom-module id="paper-menu-button"> <template> <style> :host { display: inline-block; position: relative; padding: 8px; outline: none; @apply --paper-menu-button; } :host([disabled]) { cursor: auto; color: var(--disabled-text-color); @apply --paper-menu-button-disabled; } iron-dropdown { @apply --paper-menu-button-dropdown; } .dropdown-content { @apply --shadow-elevation-2dp; position: relative; border-radius: 2px; background-color: var(--paper-menu-button-dropdown-background, var(--primary-background-color)); @apply --paper-menu-button-content; } :host([vertical-align="top"]) .dropdown-content { margin-bottom: 20px; margin-top: -10px; top: 10px; } :host([vertical-align="bottom"]) .dropdown-content { bottom: 10px; margin-bottom: -10px; margin-top: 20px; } #trigger { cursor: pointer; } </style> <div id="trigger" on-tap="toggle"> <slot name="dropdown-trigger"></slot> </div> <iron-dropdown id="dropdown" opened="{{opened}}" horizontal-align="[[horizontalAlign]]" vertical-align="[[verticalAlign]]" dynamic-align="[[dynamicAlign]]" horizontal-offset="[[horizontalOffset]]" vertical-offset="[[verticalOffset]]" no-overlap="[[noOverlap]]" open-animation-config="[[openAnimationConfig]]" close-animation-config="[[closeAnimationConfig]]" no-animations="[[noAnimations]]" focus-target="[[_dropdownContent]]" allow-outside-scroll="[[allowOutsideScroll]]" restore-focus-on-close="[[restoreFocusOnClose]]" on-iron-overlay-canceled="__onIronOverlayCanceled"> <div slot="dropdown-content" class="dropdown-content"> <slot id="content" name="dropdown-content"></slot> </div> </iron-dropdown> </template> </dom-module> <iron-iconset-svg name="paper-dropdown-menu" size="24"> <svg><defs> <g id="arrow-drop-down"><path d="M7 10l5 5 5-5z"></path></g> </defs></svg> </iron-iconset-svg> <dom-module id="paper-dropdown-menu-shared-styles"> <template> <style> :host { display: inline-block; position: relative; text-align: left; /* NOTE(cdata): Both values are needed, since some phones require the * value to be `transparent`. */ -webkit-tap-highlight-color: rgba(0,0,0,0); -webkit-tap-highlight-color: transparent; --paper-input-container-input: { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; max-width: 100%; box-sizing: border-box; cursor: pointer; }; @apply --paper-dropdown-menu; } :host([disabled]) { @apply --paper-dropdown-menu-disabled; } :host([noink]) paper-ripple { display: none; } :host([no-label-float]) paper-ripple { top: 8px; } paper-ripple { top: 12px; left: 0px; bottom: 8px; right: 0px; @apply --paper-dropdown-menu-ripple; } paper-menu-button { display: block; padding: 0; @apply --paper-dropdown-menu-button; } paper-input { @apply --paper-dropdown-menu-input; } iron-icon { color: var(--disabled-text-color); @apply --paper-dropdown-menu-icon; } </style> </template> </dom-module> <dom-module id="paper-dropdown-menu"> <template> <style include="paper-dropdown-menu-shared-styles"></style> <span role="button"></span> <paper-menu-button id="menuButton" vertical-align="[[verticalAlign]]" horizontal-align="[[horizontalAlign]]" dynamic-align="[[dynamicAlign]]" vertical-offset="[[_computeMenuVerticalOffset(noLabelFloat, verticalOffset)]]" disabled="[[disabled]]" no-animations="[[noAnimations]]" on-iron-select="_onIronSelect" on-iron-deselect="_onIronDeselect" opened="{{opened}}" close-on-activate allow-outside-scroll="[[allowOutsideScroll]]" restore-focus-on-close="[[restoreFocusOnClose]]"> <div class="dropdown-trigger" slot="dropdown-trigger"> <paper-ripple></paper-ripple> <paper-input type="text" invalid="[[invalid]]" readonly disabled="[[disabled]]" value="[[value]]" placeholder="[[placeholder]]" error-message="[[errorMessage]]" always-float-label="[[alwaysFloatLabel]]" no-label-float="[[noLabelFloat]]" label="[[label]]"> <iron-icon icon="paper-dropdown-menu:arrow-drop-down" suffix slot="suffix"></iron-icon> </paper-input> </div> <slot id="content" name="dropdown-content" slot="dropdown-content"></slot> </paper-menu-button> </template> </dom-module> <dom-module id="paper-icon-button"> <template strip-whitespace> <style> :host { display: inline-block; position: relative; padding: 8px; outline: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; cursor: pointer; z-index: 0; line-height: 1; width: 40px; height: 40px; /* NOTE: Both values are needed, since some phones require the value to be `transparent`. */ -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-tap-highlight-color: transparent; /* Because of polymer/2558, this style has lower specificity than * */ box-sizing: border-box !important; @apply --paper-icon-button; } :host #ink { color: var(--paper-icon-button-ink-color, var(--primary-text-color)); opacity: 0.6; } :host([disabled]) { color: var(--paper-icon-button-disabled-text, var(--disabled-text-color)); pointer-events: none; cursor: auto; @apply --paper-icon-button-disabled; } :host([hidden]) { display: none !important; } :host(:hover) { @apply --paper-icon-button-hover; } iron-icon { --iron-icon-width: 100%; --iron-icon-height: 100%; } </style> <iron-icon id="icon" src="[[src]]" icon="[[icon]]" alt$="[[alt]]"></iron-icon> </template> </dom-module> <dom-module id="paper-item-shared-styles"> <template> <style> :host, .paper-item { display: block; position: relative; min-height: var(--paper-item-min-height, 48px); padding: 0px 16px; } .paper-item { @apply --paper-font-subhead; border:none; outline: none; background: white; width: 100%; text-align: left; } :host([hidden]), .paper-item[hidden] { display: none !important; } :host(.iron-selected), .paper-item.iron-selected { font-weight: var(--paper-item-selected-weight, bold); @apply --paper-item-selected; } :host([disabled]), .paper-item[disabled] { color: var(--paper-item-disabled-color, var(--disabled-text-color)); @apply --paper-item-disabled; } :host(:focus), .paper-item:focus { position: relative; outline: 0; @apply --paper-item-focused; } :host(:focus):before, .paper-item:focus:before { @apply --layout-fit; background: currentColor; content: ''; opacity: var(--dark-divider-opacity); pointer-events: none; @apply --paper-item-focused-before; } </style> </template> </dom-module> <dom-module id="paper-item"> <template> <style include="paper-item-shared-styles"> :host { @apply --layout-horizontal; @apply --layout-center; @apply --paper-font-subhead; @apply --paper-item; } </style> <slot></slot> </template> </dom-module> <dom-module id="paper-listbox"> <template> <style> :host { display: block; padding: 8px 0; background: var(--paper-listbox-background-color, var(--primary-background-color)); color: var(--paper-listbox-color, var(--primary-text-color)); @apply --paper-listbox; } </style> <slot></slot> </template> </dom-module> <dom-module id="paper-progress"> <template> <style> :host { display: block; width: 200px; position: relative; overflow: hidden; } :host([hidden]), [hidden] { display: none !important; } #progressContainer { @apply --paper-progress-container; position: relative; } #progressContainer, /* the stripe for the indeterminate animation*/ .indeterminate::after { height: var(--paper-progress-height, 4px); } #primaryProgress, #secondaryProgress, .indeterminate::after { @apply --layout-fit; } #progressContainer, .indeterminate::after { background: var(--paper-progress-container-color, var(--google-grey-300)); } :host(.transiting) #primaryProgress, :host(.transiting) #secondaryProgress { -webkit-transition-property: -webkit-transform; transition-property: transform; /* Duration */ -webkit-transition-duration: var(--paper-progress-transition-duration, 0.08s); transition-duration: var(--paper-progress-transition-duration, 0.08s); /* Timing function */ -webkit-transition-timing-function: var(--paper-progress-transition-timing-function, ease); transition-timing-function: var(--paper-progress-transition-timing-function, ease); /* Delay */ -webkit-transition-delay: var(--paper-progress-transition-delay, 0s); transition-delay: var(--paper-progress-transition-delay, 0s); } #primaryProgress, #secondaryProgress { @apply --layout-fit; -webkit-transform-origin: left center; transform-origin: left center; -webkit-transform: scaleX(0); transform: scaleX(0); will-change: transform; } #primaryProgress { background: var(--paper-progress-active-color, var(--google-green-500)); } #secondaryProgress { background: var(--paper-progress-secondary-color, var(--google-green-100)); } :host([disabled]) #primaryProgress { background: var(--paper-progress-disabled-active-color, var(--google-grey-500)); } :host([disabled]) #secondaryProgress { background: var(--paper-progress-disabled-secondary-color, var(--google-grey-300)); } :host(:not([disabled])) #primaryProgress.indeterminate { -webkit-transform-origin: right center; transform-origin: right center; -webkit-animation: indeterminate-bar var(--paper-progress-indeterminate-cycle-duration, 2s) linear infinite; animation: indeterminate-bar var(--paper-progress-indeterminate-cycle-duration, 2s) linear infinite; } :host(:not([disabled])) #primaryProgress.indeterminate::after { content: ""; -webkit-transform-origin: center center; transform-origin: center center; -webkit-animation: indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration, 2s) linear infinite; animation: indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration, 2s) linear infinite; } @-webkit-keyframes indeterminate-bar { 0% { -webkit-transform: scaleX(1) translateX(-100%); } 50% { -webkit-transform: scaleX(1) translateX(0%); } 75% { -webkit-transform: scaleX(1) translateX(0%); -webkit-animation-timing-function: cubic-bezier(.28,.62,.37,.91); } 100% { -webkit-transform: scaleX(0) translateX(0%); } } @-webkit-keyframes indeterminate-splitter { 0% { -webkit-transform: scaleX(.75) translateX(-125%); } 30% { -webkit-transform: scaleX(.75) translateX(-125%); -webkit-animation-timing-function: cubic-bezier(.42,0,.6,.8); } 90% { -webkit-transform: scaleX(.75) translateX(125%); } 100% { -webkit-transform: scaleX(.75) translateX(125%); } } @keyframes indeterminate-bar { 0% { transform: scaleX(1) translateX(-100%); } 50% { transform: scaleX(1) translateX(0%); } 75% { transform: scaleX(1) translateX(0%); animation-timing-function: cubic-bezier(.28,.62,.37,.91); } 100% { transform: scaleX(0) translateX(0%); } } @keyframes indeterminate-splitter { 0% { transform: scaleX(.75) translateX(-125%); } 30% { transform: scaleX(.75) translateX(-125%); animation-timing-function: cubic-bezier(.42,0,.6,.8); } 90% { transform: scaleX(.75) translateX(125%); } 100% { transform: scaleX(.75) translateX(125%); } } </style> <div id="progressContainer"> <div id="secondaryProgress" hidden$="[[_hideSecondaryProgress(secondaryRatio)]]"></div> <div id="primaryProgress"></div> </div> </template> </dom-module> <dom-module id="paper-radio-button"> <template strip-whitespace> <style> :host { display: inline-block; line-height: 0; white-space: nowrap; cursor: pointer; @apply --paper-font-common-base; --calculated-paper-radio-button-size: var(--paper-radio-button-size, 16px); /* -1px is a sentinel for the default and is replace in `attached`. */ --calculated-paper-radio-button-ink-size: var(--paper-radio-button-ink-size, -1px); } :host(:focus) { outline: none; } #radioContainer { @apply --layout-inline; @apply --layout-center-center; position: relative; width: var(--calculated-paper-radio-button-size); height: var(--calculated-paper-radio-button-size); vertical-align: middle; @apply --paper-radio-button-radio-container; } #ink { position: absolute; top: 50%; left: 50%; right: auto; width: var(--calculated-paper-radio-button-ink-size); height: var(--calculated-paper-radio-button-ink-size); color: var(--paper-radio-button-unchecked-ink-color, var(--primary-text-color)); opacity: 0.6; pointer-events: none; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); } #ink[checked] { color: var(--paper-radio-button-checked-ink-color, var(--primary-color)); } #offRadio, #onRadio { position: absolute; box-sizing: border-box; top: 0; left: 0; width: 100%; height: 100%; border-radius: 50%; } #offRadio { border: 2px solid var(--paper-radio-button-unchecked-color, var(--primary-text-color)); background-color: var(--paper-radio-button-unchecked-background-color, transparent); transition: border-color 0.28s; } #onRadio { background-color: var(--paper-radio-button-checked-color, var(--primary-color)); -webkit-transform: scale(0); transform: scale(0); transition: -webkit-transform ease 0.28s; transition: transform ease 0.28s; will-change: transform; } :host([checked]) #offRadio { border-color: var(--paper-radio-button-checked-color, var(--primary-color)); } :host([checked]) #onRadio { -webkit-transform: scale(0.5); transform: scale(0.5); } #radioLabel { line-height: normal; position: relative; display: inline-block; vertical-align: middle; margin-left: var(--paper-radio-button-label-spacing, 10px); white-space: normal; color: var(--paper-radio-button-label-color, var(--primary-text-color)); @apply --paper-radio-button-label; } :host([checked]) #radioLabel { @apply --paper-radio-button-label-checked; } #radioLabel:dir(rtl) { margin-left: 0; margin-right: var(--paper-radio-button-label-spacing, 10px); } #radioLabel[hidden] { display: none; } /* disabled state */ :host([disabled]) #offRadio { border-color: var(--paper-radio-button-unchecked-color, var(--primary-text-color)); opacity: 0.5; } :host([disabled][checked]) #onRadio { background-color: var(--paper-radio-button-unchecked-color, var(--primary-text-color)); opacity: 0.5; } :host([disabled]) #radioLabel { /* slightly darker than the button, so that it's readable */ opacity: 0.65; } </style> <div id="radioContainer"> <div id="offRadio"></div> <div id="onRadio"></div> </div> <div id="radioLabel"><slot></slot></div> </template> </dom-module> <dom-module id="paper-radio-group"> <template> <style> :host { display: inline-block; } :host ::slotted(*) { padding: var(--paper-radio-group-item-padding, 12px); } </style> <slot></slot> </template> </dom-module> <dom-module id="paper-slider"> <template strip-whitespace> <style> :host { @apply --layout; @apply --layout-justified; @apply --layout-center; width: 200px; cursor: default; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); --paper-progress-active-color: var(--paper-slider-active-color, var(--google-blue-700)); --paper-progress-secondary-color: var(--paper-slider-secondary-color, var(--google-blue-300)); --paper-progress-disabled-active-color: var(--paper-slider-disabled-active-color, var(--paper-grey-400)); --paper-progress-disabled-secondary-color: var(--paper-slider-disabled-secondary-color, var(--paper-grey-400)); --calculated-paper-slider-height: var(--paper-slider-height, 2px); } /* focus shows the ripple */ :host(:focus) { outline: none; } /** * NOTE(keanulee): Though :host-context is not universally supported, some pages * still rely on paper-slider being flipped when dir="rtl" is set on body. For full * compatability, dir="rtl" must be explicitly set on paper-slider. */ :dir(rtl) #sliderContainer { -webkit-transform: scaleX(-1); transform: scaleX(-1); } /** * NOTE(keanulee): This is separate from the rule above because :host-context may * not be recognized. */ :host([dir="rtl"]) #sliderContainer { -webkit-transform: scaleX(-1); transform: scaleX(-1); } /** * NOTE(keanulee): Needed to override the :host-context rule (where supported) * to support LTR sliders in RTL pages. */ :host([dir="ltr"]) #sliderContainer { -webkit-transform: scaleX(1); transform: scaleX(1); } #sliderContainer { position: relative; width: 100%; height: calc(30px + var(--calculated-paper-slider-height)); margin-left: calc(15px + var(--calculated-paper-slider-height)/2); margin-right: calc(15px + var(--calculated-paper-slider-height)/2); } #sliderContainer:focus { outline: 0; } #sliderContainer.editable { margin-top: 12px; margin-bottom: 12px; } .bar-container { position: absolute; top: 0; bottom: 0; left: 0; right: 0; overflow: hidden; } .ring > .bar-container { left: calc(5px + var(--calculated-paper-slider-height)/2); transition: left 0.18s ease; } .ring.expand.dragging > .bar-container { transition: none; } .ring.expand:not(.pin) > .bar-container { left: calc(8px + var(--calculated-paper-slider-height)/2); } #sliderBar { padding: 15px 0; width: 100%; background-color: var(--paper-slider-bar-color, transparent); --paper-progress-container-color: var(--paper-slider-container-color, var(--paper-grey-400)); --paper-progress-height: var(--calculated-paper-slider-height); } .slider-markers { position: absolute; top: calc(14px + var(--paper-slider-height,2px)/2); height: var(--calculated-paper-slider-height); left: 0; right: -1px; box-sizing: border-box; pointer-events: none; @apply --layout-horizontal; } .slider-marker { @apply --layout-flex; } .slider-markers::after, .slider-marker::after { content: ""; display: block; margin-left: -1px; width: 2px; height: var(--calculated-paper-slider-height); border-radius: 50%; background-color: var(--paper-slider-markers-color, #000); } .slider-knob { position: absolute; left: 0; top: 0; margin-left: calc(-15px - var(--calculated-paper-slider-height)/2); width: calc(30px + var(--calculated-paper-slider-height)); height: calc(30px + var(--calculated-paper-slider-height)); } .transiting > .slider-knob { transition: left 0.08s ease; } .slider-knob:focus { outline: none; } .slider-knob.dragging { transition: none; } .snaps > .slider-knob.dragging { transition: -webkit-transform 0.08s ease; transition: transform 0.08s ease; } .slider-knob-inner { margin: 10px; width: calc(100% - 20px); height: calc(100% - 20px); background-color: var(--paper-slider-knob-color, var(--google-blue-700)); border: 2px solid var(--paper-slider-knob-color, var(--google-blue-700)); border-radius: 50%; -moz-box-sizing: border-box; box-sizing: border-box; transition-property: -webkit-transform, background-color, border; transition-property: transform, background-color, border; transition-duration: 0.18s; transition-timing-function: ease; } .expand:not(.pin) > .slider-knob > .slider-knob-inner { -webkit-transform: scale(1.5); transform: scale(1.5); } .ring > .slider-knob > .slider-knob-inner { background-color: var(--paper-slider-knob-start-color, transparent); border: 2px solid var(--paper-slider-knob-start-border-color, var(--paper-grey-400)); } .slider-knob-inner::before { background-color: var(--paper-slider-pin-color, var(--google-blue-700)); } .pin > .slider-knob > .slider-knob-inner::before { content: ""; position: absolute; top: 0; left: 50%; margin-left: -13px; width: 26px; height: 26px; border-radius: 50% 50% 50% 0; -webkit-transform: rotate(-45deg) scale(0) translate(0); transform: rotate(-45deg) scale(0) translate(0); } .slider-knob-inner::before, .slider-knob-inner::after { transition: -webkit-transform .18s ease, background-color .18s ease; transition: transform .18s ease, background-color .18s ease; } .pin.ring > .slider-knob > .slider-knob-inner::before { background-color: var(--paper-slider-pin-start-color, var(--paper-grey-400)); } .pin.expand > .slider-knob > .slider-knob-inner::before { -webkit-transform: rotate(-45deg) scale(1) translate(17px, -17px); transform: rotate(-45deg) scale(1) translate(17px, -17px); } .pin > .slider-knob > .slider-knob-inner::after { content: attr(value); position: absolute; top: 0; left: 50%; margin-left: -16px; width: 32px; height: 26px; text-align: center; color: var(--paper-slider-font-color, #fff); font-size: 10px; -webkit-transform: scale(0) translate(0); transform: scale(0) translate(0); } .pin.expand > .slider-knob > .slider-knob-inner::after { -webkit-transform: scale(1) translate(0, -17px); transform: scale(1) translate(0, -17px); } /* paper-input */ .slider-input { width: 50px; overflow: hidden; --paper-input-container-input: { text-align: center; @apply --paper-slider-input-container-input; }; @apply --paper-slider-input; } /* disabled state */ #sliderContainer.disabled { pointer-events: none; } .disabled > .slider-knob > .slider-knob-inner { background-color: var(--paper-slider-disabled-knob-color, var(--paper-grey-400)); border: 2px solid var(--paper-slider-disabled-knob-color, var(--paper-grey-400)); -webkit-transform: scale3d(0.75, 0.75, 1); transform: scale3d(0.75, 0.75, 1); } .disabled.ring > .slider-knob > .slider-knob-inner { background-color: var(--paper-slider-knob-start-color, transparent); border: 2px solid var(--paper-slider-knob-start-border-color, var(--paper-grey-400)); } paper-ripple { color: var(--paper-slider-knob-color, var(--google-blue-700)); } </style> <div id="sliderContainer" class$="[[_getClassNames(disabled, pin, snaps, immediateValue, min, expand, dragging, transiting, editable)]]"> <div class="bar-container"> <paper-progress disabled$="[[disabled]]" id="sliderBar" aria-hidden="true" min="[[min]]" max="[[max]]" step="[[step]]" value="[[immediateValue]]" secondary-progress="[[secondaryProgress]]" on-down="_bardown" on-up="_resetKnob" on-track="_bartrack" on-tap="_barclick"> </paper-progress> </div> <template is="dom-if" if="[[snaps]]"> <div class="slider-markers"> <template is="dom-repeat" items="[[markers]]"> <div class="slider-marker"></div> </template> </div> </template> <div id="sliderKnob" class="slider-knob" on-down="_knobdown" on-up="_resetKnob" on-track="_onTrack" on-transitionend="_knobTransitionEnd"> <div class="slider-knob-inner" value$="[[immediateValue]]"></div> </div> </div> <template is="dom-if" if="[[editable]]"> <paper-input id="input" type="number" step="[[step]]" min="[[min]]" max="[[max]]" class="slider-input" disabled$="[[disabled]]" value="[[immediateValue]]" on-change="_changeValue" on-keydown="_inputKeyDown" no-label-float> </paper-input> </template> </template> </dom-module> <dom-module id="paper-tab"> <template> <style> :host { @apply --layout-inline; @apply --layout-center; @apply --layout-center-justified; @apply --layout-flex-auto; position: relative; padding: 0 12px; overflow: hidden; cursor: pointer; vertical-align: middle; @apply --paper-font-common-base; @apply --paper-tab; } :host(:focus) { outline: none; } :host([link]) { padding: 0; } .tab-content { height: 100%; transform: translateZ(0); -webkit-transform: translateZ(0); transition: opacity 0.1s cubic-bezier(0.4, 0.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: 0.8; @apply --paper-tab-content-unselected; } :host(:focus) .tab-content { opacity: 1; font-weight: 700; } paper-ripple { color: var(--paper-tab-ink, var(--paper-yellow-a100)); } .tab-content > ::slotted(a) { @apply --layout-flex-auto; height: 100%; } </style> <div class="tab-content"> <slot></slot> </div> </template> </dom-module> <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" /></g> <g id="chevron-right"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z" /></g> </defs></svg> </iron-iconset-svg> <dom-module id="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-select: none; user-select: none; /* NOTE: Both values are needed, since some phones require the value to be `transparent`. */ -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-tap-highlight-color: transparent; @apply --paper-tabs; } :host(:dir(rtl)) { @apply --layout-horizontal-reverse; } #tabsContainer { position: relative; height: 100%; white-space: nowrap; overflow: hidden; @apply --layout-flex-auto; @apply --paper-tabs-container; } #tabsContent { height: 100%; -moz-flex-basis: auto; -ms-flex-basis: auto; flex-basis: auto; @apply --paper-tabs-content; } #tabsContent.scrollable { position: absolute; white-space: nowrap; } #tabsContent:not(.scrollable), #tabsContent.scrollable.fit-container { @apply --layout-horizontal; } #tabsContent.scrollable.fit-container { min-width: 100%; } #tabsContent.scrollable.fit-container > ::slotted(*) { /* IE - prevent tabs from compressing when they should scroll. */ -ms-flex: 1 0 auto; -webkit-flex: 1 0 auto; flex: 1 0 auto; } .hidden { display: none; } .not-visible { opacity: 0; cursor: default; } paper-icon-button { width: 48px; height: 48px; padding: 12px; margin: 0 4px; } #selectionBar { position: absolute; height: 0; bottom: 0; left: 0; right: 0; border-bottom: 2px solid var(--paper-tabs-selection-bar-color, var(--paper-yellow-a100)); -webkit-transform: scale(0); transform: scale(0); -webkit-transform-origin: left center; 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: 0.15s; transition-timing-function: cubic-bezier(0.4, 0.0, 1, 1); } #selectionBar.contract { transition-duration: 0.18s; transition-timing-function: cubic-bezier(0.0, 0.0, 0.2, 1); } #tabsContent > ::slotted(:not(#selectionBar)) { height: 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-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="_onBarTransitionEnd"></div> <slot></slot> </div> </div> <paper-icon-button icon="paper-tabs:chevron-right" class$="[[_computeScrollButtonClass(_rightHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down="_onRightScrollButtonDown" tabindex="-1"></paper-icon-button> </template> </dom-module> <dom-module id="paper-toast"> <template> <style> :host { display: block; position: fixed; background-color: var(--paper-toast-background-color, #323232); color: var(--paper-toast-color, #f1f1f1); min-height: 48px; min-width: 288px; padding: 16px 24px; box-sizing: border-box; box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); border-radius: 2px; margin: 12px; font-size: 14px; cursor: default; -webkit-transition: -webkit-transform 0.3s, opacity 0.3s; transition: transform 0.3s, opacity 0.3s; opacity: 0; -webkit-transform: translateY(100px); transform: translateY(100px); @apply --paper-font-common-base; } :host(.capsule) { border-radius: 24px; } :host(.fit-bottom) { width: 100%; min-width: 0; border-radius: 0; margin: 0; } :host(.paper-toast-open) { opacity: 1; -webkit-transform: translateY(0px); transform: translateY(0px); } </style> <span id="label">{{text}}</span> <slot></slot> </template> </dom-module> <dom-module id="tf-backend"> </dom-module> <dom-module id="iron-flex"> <template> <style> .layout.horizontal, .layout.vertical { display: -ms-flexbox; display: -webkit-flex; display: flex; } .layout.inline { display: -ms-inline-flexbox; display: -webkit-inline-flex; display: inline-flex; } .layout.horizontal { -ms-flex-direction: row; -webkit-flex-direction: row; flex-direction: row; } .layout.vertical { -ms-flex-direction: column; -webkit-flex-direction: column; flex-direction: column; } .layout.wrap { -ms-flex-wrap: wrap; -webkit-flex-wrap: wrap; flex-wrap: wrap; } .layout.no-wrap { -ms-flex-wrap: nowrap; -webkit-flex-wrap: nowrap; flex-wrap: nowrap; } .layout.center, .layout.center-center { -ms-flex-align: center; -webkit-align-items: center; align-items: center; } .layout.center-justified, .layout.center-center { -ms-flex-pack: center; -webkit-justify-content: center; justify-content: center; } .flex { -ms-flex: 1 1 0.000000001px; -webkit-flex: 1; flex: 1; -webkit-flex-basis: 0.000000001px; flex-basis: 0.000000001px; } .flex-auto { -ms-flex: 1 1 auto; -webkit-flex: 1 1 auto; flex: 1 1 auto; } .flex-none { -ms-flex: none; -webkit-flex: none; flex: none; } </style> </template> </dom-module> <dom-module id="iron-flex-reverse"> <template> <style> .layout.horizontal-reverse, .layout.vertical-reverse { display: -ms-flexbox; display: -webkit-flex; display: flex; } .layout.horizontal-reverse { -ms-flex-direction: row-reverse; -webkit-flex-direction: row-reverse; flex-direction: row-reverse; } .layout.vertical-reverse { -ms-flex-direction: column-reverse; -webkit-flex-direction: column-reverse; flex-direction: column-reverse; } .layout.wrap-reverse { -ms-flex-wrap: wrap-reverse; -webkit-flex-wrap: wrap-reverse; flex-wrap: wrap-reverse; } </style> </template> </dom-module> <dom-module id="iron-flex-alignment"> <template> <style> /** * Alignment in cross axis. */ .layout.start { -ms-flex-align: start; -webkit-align-items: flex-start; align-items: flex-start; } .layout.center, .layout.center-center { -ms-flex-align: center; -webkit-align-items: center; align-items: center; } .layout.end { -ms-flex-align: end; -webkit-align-items: flex-end; align-items: flex-end; } .layout.baseline { -ms-flex-align: baseline; -webkit-align-items: baseline; align-items: baseline; } /** * Alignment in main axis. */ .layout.start-justified { -ms-flex-pack: start; -webkit-justify-content: flex-start; justify-content: flex-start; } .layout.center-justified, .layout.center-center { -ms-flex-pack: center; -webkit-justify-content: center; justify-content: center; } .layout.end-justified { -ms-flex-pack: end; -webkit-justify-content: flex-end; justify-content: flex-end; } .layout.around-justified { -ms-flex-pack: distribute; -webkit-justify-content: space-around; justify-content: space-around; } .layout.justified { -ms-flex-pack: justify; -webkit-justify-content: space-between; justify-content: space-between; } /** * Self alignment. */ .self-start { -ms-align-self: flex-start; -webkit-align-self: flex-start; align-self: flex-start; } .self-center { -ms-align-self: center; -webkit-align-self: center; align-self: center; } .self-end { -ms-align-self: flex-end; -webkit-align-self: flex-end; align-self: flex-end; } .self-stretch { -ms-align-self: stretch; -webkit-align-self: stretch; align-self: stretch; } .self-baseline { -ms-align-self: baseline; -webkit-align-self: baseline; align-self: baseline; } /** * multi-line alignment in main axis. */ .layout.start-aligned { -ms-flex-line-pack: start; /* IE10 */ -ms-align-content: flex-start; -webkit-align-content: flex-start; align-content: flex-start; } .layout.end-aligned { -ms-flex-line-pack: end; /* IE10 */ -ms-align-content: flex-end; -webkit-align-content: flex-end; align-content: flex-end; } .layout.center-aligned { -ms-flex-line-pack: center; /* IE10 */ -ms-align-content: center; -webkit-align-content: center; align-content: center; } .layout.between-aligned { -ms-flex-line-pack: justify; /* IE10 */ -ms-align-content: space-between; -webkit-align-content: space-between; align-content: space-between; } .layout.around-aligned { -ms-flex-line-pack: distribute; /* IE10 */ -ms-align-content: space-around; -webkit-align-content: space-around; align-content: space-around; } </style> </template> </dom-module> <dom-module id="iron-flex-factors"> <template> <style> .flex, .flex-1 { -ms-flex: 1 1 0.000000001px; -webkit-flex: 1; flex: 1; -webkit-flex-basis: 0.000000001px; flex-basis: 0.000000001px; } .flex-2 { -ms-flex: 2; -webkit-flex: 2; flex: 2; } .flex-3 { -ms-flex: 3; -webkit-flex: 3; flex: 3; } .flex-4 { -ms-flex: 4; -webkit-flex: 4; flex: 4; } .flex-5 { -ms-flex: 5; -webkit-flex: 5; flex: 5; } .flex-6 { -ms-flex: 6; -webkit-flex: 6; flex: 6; } .flex-7 { -ms-flex: 7; -webkit-flex: 7; flex: 7; } .flex-8 { -ms-flex: 8; -webkit-flex: 8; flex: 8; } .flex-9 { -ms-flex: 9; -webkit-flex: 9; flex: 9; } .flex-10 { -ms-flex: 10; -webkit-flex: 10; flex: 10; } .flex-11 { -ms-flex: 11; -webkit-flex: 11; flex: 11; } .flex-12 { -ms-flex: 12; -webkit-flex: 12; flex: 12; } </style> </template> </dom-module> <dom-module id="iron-positioning"> <template> <style> .block { display: block; } [hidden] { display: none !important; } .invisible { visibility: hidden !important; } .relative { position: relative; } .fit { position: absolute; top: 0; right: 0; bottom: 0; left: 0; } body.fullbleed { margin: 0; height: 100vh; } .scroll { -webkit-overflow-scrolling: touch; overflow: auto; } /* fixed position */ .fixed-bottom, .fixed-left, .fixed-right, .fixed-top { position: fixed; } .fixed-top { top: 0; left: 0; right: 0; } .fixed-right { top: 0; right: 0; bottom: 0; } .fixed-bottom { right: 0; bottom: 0; left: 0; } .fixed-left { top: 0; bottom: 0; left: 0; } </style> </template> </dom-module> <style is="custom-style"> :root { --tb-orange-weak: #ffa726; --tb-orange-strong: #f57c00; --tb-orange-dark: #dc7320; --tb-grey-darker: #e2e2e2; --tb-grey-lighter: #f3f3f3; --tb-ui-dark-accent: #757575; --tb-ui-light-accent: #e0e0e0; --tb-graph-faded: #e0d4b3; } </style> <dom-module id="dashboard-style"> <template> <style include="iron-flex"></style> <style> :host { --sidebar-vertical-padding: 15px; --sidebar-left-padding: 30px; } [slot='sidebar'] { box-sizing: border-box; display: flex; flex-direction: column; height: 100%; margin-right: 20px; overflow-x: hidden; padding: 5px 0; text-overflow: ellipsis; } tf-runs-selector { flex-grow: 1; flex-shrink: 1; left: var(--sidebar-left-padding); max-height: calc(100% - var(--sidebar-vertical-padding) * 2); overflow: hidden; position: absolute; right: 0; } .search-input { margin: 10px 5px 0 10px; } .sidebar-section { border-top: solid 1px rgba(0, 0, 0, 0.12); padding: var(--sidebar-vertical-padding) 0 var(--sidebar-vertical-padding) var(--sidebar-left-padding); position: relative; } .sidebar-section:first-of-type { border: none; } .sidebar-section:last-of-type { flex-grow: 1; display: flex; } .sidebar-section paper-button { margin: 5px; } .sidebar-section paper-button:first-of-type { margin-left: 0 !important; } .sidebar-section paper-button:last-of-type { margin-right: 0 !important; } .sidebar-section > :first-child { margin-top: 0; padding-top: 0; } .sidebar-section > :last-child { margin-bottom: 0; padding-bottom: 0; } .sidebar-section h3 { color: var(--paper-grey-800); display: block; font-size: 14px; font-weight: normal; margin: 10px 0 5px; pointer-events: none; } paper-checkbox { --paper-checkbox-checked-color: var(--tb-ui-dark-accent); --paper-checkbox-unchecked-color: var(--tb-ui-dark-accent); font-size: 15px; margin-top: 5px; } </style> </template> </dom-module> <dom-module id="scrollbar-style"> <template> <style> .scrollbar::-webkit-scrollbar-track { visibility: hidden; } .scrollbar::-webkit-scrollbar { width: 10px; } .scrollbar::-webkit-scrollbar-thumb { border-radius: 10px; -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.3); background-color: var(--paper-grey-500); color: var(--paper-grey-900); } .scrollbar { box-sizing: border-box; } </style> </template> </dom-module> <dom-module id="tf-dashboard-layout"> <template> <div id="sidebar"> <slot name="sidebar"></slot> </div> <div id="center"> <slot name="center" class="scollbar"></slot> </div> <style include="scrollbar-style"></style> <style> :host { display: flex; flex-direction: row; height: 100%; } #sidebar { flex: 0 0 var(--tf-dashboard-layout-sidebar-basis, 25%); height: 100%; max-width: var(--tf-dashboard-layout-sidebar-max-width, 350px); min-width: var(--tf-dashboard-layout-sidebar-min-width, 270px); overflow-y: auto; text-overflow: ellipsis; } #center { flex-grow: 1; flex-shrink: 1; height: 100%; overflow: hidden; } ::slotted([slot='center']) { height: 100%; overflow-x: hidden; overflow-y: auto; width: 100%; will-change: transform; } .tf-graph-dashboard #center { background: #fff; } </style> </template> </dom-module> <dom-module id="tf-option-selector"> <template> <div id="wrap"> <h3>[[name]]</h3> <div class="content-wrapper"><slot></slot></div> </div> <style> .content-wrapper ::slotted(*) { background: none; color: var(--tb-ui-dark-accent); font-size: 13px; margin-top: 10px; } .content-wrapper ::slotted(*) { background: none; color: var(--tb-ui-dark-accent); font-size: 13px; margin-top: 10px; } .content-wrapper ::slotted(.selected) { background-color: var(--tb-ui-dark-accent); color: white !important; } h3 { color: var(--paper-grey-800); display: block; font-size: 14px; font-weight: normal; margin: 0 0 5px; pointer-events: none; } </style> </template> </dom-module> <dom-module id="wit-inference-panel"> <template> <style id="linter-paper-button-style"> /** * This style preserves the styling previous to * https://github.com/PolymerElements/paper-button/pull/115 * This change can break the layout of paper-button content. * Remove this style to apply the change. */ paper-button { display: inline-block; text-align: center; font-family: inherit; } </style> <style> :host { display: block; font-size: 14px; } tf-option-selector .model-type-button { width: auto; } .flex-holder { display: flex; } .title { font-size: 32px; margin-bottom: 20px; } .help-icon { width: 15px; height: 15px; padding: 0; color: #757575; } .tooltip { width: 500px; } .input-in-row { margin-right: 10px; } .flex-grow { flex-grow: 1; } .model-type-label { padding-top: 10px; } .add-model-button-holder { display: flex; } .checkbox { margin-top: 30px; margin-left: 10px; } .predict-checkbox { margin-top: 43px; margin-left: 10px; } paper-input { --paper-input-container-focus-color: #f57c00; } paper-radio-button { --paper-radio-button-unchecked-color: #3c4043; --paper-radio-button-unchecked-ink-color: #3c4043; --paper-radio-button-checked-color: #3c4043; --paper-radio-button-checked-ink-color: #3c4043; } </style> <div class="title">Set up your data and model</div> <paper-input always-float-label label="Inference address" placeholder="[[inferenceAddress1]]" value="{{inferenceAddress1}}"> </paper-input> <div class="flex-holder"> <paper-input always-float-label label="Model name" placeholder="[[modelName1]]" value="{{modelName1}}" class="input-in-row"> </paper-input> <paper-input always-float-label label="Model version (optional)" placeholder="[[modelVersion1]]" value="{{modelVersion1}}" class="input-in-row"> </paper-input> <paper-input always-float-label label="Model signature (optional)" placeholder="[[modelSignature1]]" value="{{modelSignature1}}" class="input-in-row"> </paper-input> </div> <div hidden$="{{hideModelPane2}}"> <paper-input always-float-label label="Inference address" placeholder="[[inferenceAddress2]]" value="{{inferenceAddress2}}"> </paper-input> <div class="flex-holder"> <paper-input always-float-label label="Model name" placeholder="[[modelName2]]" value="{{modelName2}}" class="input-in-row"> </paper-input> <paper-input always-float-label label="Model version (optional)" placeholder="[[modelVersion2]]" value="{{modelVersion2}}" class="input-in-row"> </paper-input> <paper-input always-float-label label="Model signature (optional)" placeholder="[[modelSignature2]]" value="{{modelSignature2}}" class="input-in-row"> </paper-input> </div> </div> <div class="add-model-button-holder" hidden$="{{!hideModelPane2}}"> <paper-button on-tap="addModelClicked_" class="main-button"> Add another model for comparison </paper-button> </div> <div class="flex-holder"> <div> <div class="model-type-label">Model Type</div> <paper-radio-group selected="{{modelType}}"> <paper-radio-button name="classification">Classification</paper-radio-button> <paper-radio-button name="regression">Regression</paper-radio-button> </paper-radio-group> </div> <paper-checkbox checked="{{usePredictApi}}" class="predict-checkbox"> Uses Predict API </paper-checkbox> </div> <div class="flex-holder"> <paper-input always-float-label label="Input tensor name" placeholder="[[predictInputTensor]]" value="{{predictInputTensor}}" class="input-in-row" hidden$="[[shouldDisablePredictTensorControls_(usePredictApi)]]"> </paper-input> <paper-input always-float-label label="Output tensor name" placeholder="[[predictOutputTensor]]" value="{{predictOutputTensor}}" class="input-in-row" hidden$="[[shouldDisablePredictTensorControls_(usePredictApi)]]"> </paper-input> </div> <div class="flex-holder"> <paper-input always-float-label label="Path to examples" value="{{examplesPath}}" class="flex-grow"> </paper-input> <paper-checkbox checked="{{sequenceExamples}}" class="checkbox"> SequenceExamples </paper-checkbox> </div> <div class="flex-holder"> <paper-input always-float-label type="number" class="input-in-row flex-grow" label="Maximum number of examples to load" placeholder="[[maxExamples]]" value="{{maxExamples}}"> </paper-input> <paper-input always-float-label type="number" class="input-in-row flex-grow" label="Sampling ratio (0.2 = sample ~20% of examples)" placeholder="[[samplingOdds]]" value="{{samplingOdds}}"> </paper-input> </div> <paper-input always-float-label label="Path to label dictionary (optional)" placeholder="[[labelVocabPath]]" value="{{labelVocabPath}}" disabled="[[shouldDisableClassificationControls_(modelType)]]"> </paper-input> <div class="flex-holder"> <paper-icon-button icon="help" class="help-icon"></paper-icon-button> <div>Maps predicted class indices to labels from text file</div> <paper-tooltip class="tooltip" animation-delay="0" position="bottom" offset="0"> An optional text file for use with the results of a classification model. Classification models return predicted classes as indices. If a vocab file is provided, each predicted class index will be mapped to a label from this file for use in the display. Each line in the file corresponds to a label, with the first line corresponding to class index 0. </paper-tooltip> </div> <div class="flex-holder"> <paper-input always-float-label type="number" label="Max classes to display" placeholder="[[maxClassesToDisplay]]" value="{{maxClassesToDisplay}}" class="input-in-row" disabled="[[shouldDisableMultiClassControls_(multiClass)]]"> </paper-input> <paper-checkbox disabled="[[shouldDisableClassificationControls_(modelType)]]" checked="{{multiClass}}" class="checkbox"> Multi-class classification model </paper-checkbox> </div> </template> </dom-module> <dom-module id="tf-plugin-dialog"> <template> <template is="dom-if" if="[[_open]]"> <div id="dashboard-backdrop"></div> </template> <paper-dialog id="dialog" modal opened="{{_open}}" with-backdrop="[[_useNativeBackdrop]]"> <h2 id="dialog-title">[[_title]]</h2> <div class="custom-message">[[_customMessage]]</div> </paper-dialog> <style> /** We rely on a separate `_hidden` property instead of directly making use of the `_open` attribute because this CSS specification may strangely affect other elements throughout TensorBoard. See #899. */ #dashboard-backdrop { background: rgba(0, 0, 0, 0.6); width: 100%; height: 100%; } #dialog-title { padding-bottom: 15px; } .custom-message { margin-top: 0; margin-bottom: 15px; } </style> </template> </dom-module> <style> .plottable-colors-0 { background-color: #5279c7; /* INDIGO */ } .plottable-colors-1 { background-color: #fd373e; /* CORAL_RED */ } .plottable-colors-2 { background-color: #63c261; /* FERN */ } .plottable-colors-3 { background-color: #fad419; /* BRIGHT_SUN */ } .plottable-colors-4 { background-color: #2c2b6f; /* JACARTA */ } .plottable-colors-5 { background-color: #ff7939; /* BURNING_ORANGE */ } .plottable-colors-6 { background-color: #db2e65; /* CERISE_RED */ } .plottable-colors-7 { background-color: #99ce50; /* CONIFER */ } .plottable-colors-8 { background-color: #962565; /* ROYAL_HEATH */ } .plottable-colors-9 { background-color: #06cccc; /* ROBINS_EGG_BLUE */ } /** * User-supplied renderTo element. */ .plottable { display: block; /* must be block elements for width/height calculations to work in Firefox. */ pointer-events: visibleFill; position: relative; /** * Pre 3.0, users could set the dimension of the root element in two ways: either using CSS * (inline or through a stylesheet), or using the SVG width/height attributes. By default, we * set the SVG width/height attributes to 100%. * * Post 3.0 the root element is always a normal div and the only way to set the dimensions is * to use CSS. To replicate the "100%-by-default" behavior, we apply width/height 100%. */ width: 100%; height: 100%; } /** * The _element that roots each Component's DOM. */ .plottable .component { /* Allow components to be positioned with explicit left/top/width/height styles */ position: absolute; } .plottable .background-container, .plottable .content, .plottable .foreground-container { position: absolute; width: 100%; height: 100%; } /** * Don't allow svg elements above the content to steal events */ .plottable .foreground-container { pointer-events: none; } .plottable .component-overflow-hidden { overflow: hidden; } .plottable .component-overflow-visible { overflow: visible; } .plottable .plot-canvas-container { width: 100%; height: 100%; overflow: hidden; } .plottable .plot-canvas { width: 100%; height: 100%; /** * Play well with deferred rendering. */ transform-origin: 0px 0px 0px; } .plottable text { text-rendering: geometricPrecision; } .plottable .label text { font-family: "Helvetica Neue", sans-serif; fill: #32313F; } .plottable .bar-label-text-area text { font-family: "Helvetica Neue", sans-serif; font-size: 12px; } .plottable .label-area text { fill: #32313F; font-family: "Helvetica Neue", sans-serif; font-size: 14px; } .plottable .light-label text { fill: white; } .plottable .dark-label text { fill: #32313F; } .plottable .off-bar-label text { fill: #32313F; } .plottable .stacked-bar-label text { fill: #32313F; font-style: normal; } .plottable .stacked-bar-plot .off-bar-label { /* HACKHACK #2795: correct off-bar label logic to be implemented on StackedBar */ visibility: hidden !important; } .plottable .axis-label text { font-size: 10px; font-weight: bold; letter-spacing: 1px; line-height: normal; text-transform: uppercase; } .plottable .title-label text { font-size: 20px; font-weight: bold; } .plottable .axis line.baseline { stroke: #CCC; stroke-width: 1px; } .plottable .axis line.tick-mark { stroke: #CCC; stroke-width: 1px; } .plottable .axis text { fill: #32313F; font-family: "Helvetica Neue", sans-serif; font-size: 12px; font-weight: 200; line-height: normal; } .plottable .axis .annotation-circle { fill: white; stroke-width: 1px; stroke: #CCC; } .plottable .axis .annotation-line { stroke: #CCC; stroke-width: 1px; } .plottable .axis .annotation-rect { stroke: #CCC; stroke-width: 1px; fill: white; } .plottable .bar-plot .baseline { stroke: #999; } .plottable .gridlines line { stroke: #3C3C3C; /* hackhack: gridlines should be solid; see #820 */ opacity: 0.25; stroke-width: 1px; } .plottable .selection-box-layer .selection-area { fill: black; fill-opacity: 0.03; stroke: #CCC; } /* DragBoxLayer */ .plottable .drag-box-layer.x-resizable .drag-edge-lr { cursor: ew-resize; } .plottable .drag-box-layer.y-resizable .drag-edge-tb { cursor: ns-resize; } .plottable .drag-box-layer.x-resizable.y-resizable .drag-corner-tl { cursor: nwse-resize; } .plottable .drag-box-layer.x-resizable.y-resizable .drag-corner-tr { cursor: nesw-resize; } .plottable .drag-box-layer.x-resizable.y-resizable .drag-corner-bl { cursor: nesw-resize; } .plottable .drag-box-layer.x-resizable.y-resizable .drag-corner-br { cursor: nwse-resize; } .plottable .drag-box-layer.movable .selection-area { cursor: move; /* IE fallback */ cursor: -moz-grab; cursor: -webkit-grab; cursor: grab; } .plottable .drag-box-layer.movable .selection-area:active { cursor: -moz-grabbing; cursor: -webkit-grabbing; cursor: grabbing; } /* /DragBoxLayer */ .plottable .guide-line-layer line.guide-line { stroke: #CCC; stroke-width: 1px; } .plottable .drag-line-layer.enabled.vertical line.drag-edge { cursor: ew-resize; } .plottable .drag-line-layer.enabled.horizontal line.drag-edge { cursor: ns-resize; } .plottable .legend text { fill: #32313F; font-family: "Helvetica Neue", sans-serif; font-size: 12px; font-weight: bold; line-height: normal; } .plottable .interpolated-color-legend rect.swatch-bounding-box { fill: none; stroke: #CCC; stroke-width: 1px; pointer-events: none; } .plottable .waterfall-plot line.connector { stroke: #CCC; stroke-width: 1px; } .plottable .pie-plot .arc.outline { stroke-linejoin: round; } </style> <dom-module id="plottable-style"> <template> <style> .plottable-colors-0 { background-color: #5279c7; /* INDIGO */ } .plottable-colors-1 { background-color: #fd373e; /* CORAL_RED */ } .plottable-colors-2 { background-color: #63c261; /* FERN */ } .plottable-colors-3 { background-color: #fad419; /* BRIGHT_SUN */ } .plottable-colors-4 { background-color: #2c2b6f; /* JACARTA */ } .plottable-colors-5 { background-color: #ff7939; /* BURNING_ORANGE */ } .plottable-colors-6 { background-color: #db2e65; /* CERISE_RED */ } .plottable-colors-7 { background-color: #99ce50; /* CONIFER */ } .plottable-colors-8 { background-color: #962565; /* ROYAL_HEATH */ } .plottable-colors-9 { background-color: #06cccc; /* ROBINS_EGG_BLUE */ } /** * User-supplied renderTo element. */ .plottable { display: block; /* must be block elements for width/height calculations to work in Firefox. */ pointer-events: visibleFill; position: relative; /** * Pre 3.0, users could set the dimension of the root element in two ways: either using CSS * (inline or through a stylesheet), or using the SVG width/height attributes. By default, we * set the SVG width/height attributes to 100%. * * Post 3.0 the root element is always a normal div and the only way to set the dimensions is * to use CSS. To replicate the "100%-by-default" behavior, we apply width/height 100%. */ width: 100%; height: 100%; } /** * The _element that roots each Component's DOM. */ .plottable .component { /* Allow components to be positioned with explicit left/top/width/height styles */ position: absolute; } .plottable .background-container, .plottable .content, .plottable .foreground-container { position: absolute; width: 100%; height: 100%; } /** * Don't allow svg elements above the content to steal events */ .plottable .foreground-container { pointer-events: none; } .plottable .component-overflow-hidden { overflow: hidden; } .plottable .component-overflow-visible { overflow: visible; } .plottable .plot-canvas-container { width: 100%; height: 100%; overflow: hidden; } .plottable .plot-canvas { width: 100%; height: 100%; /** * Play well with deferred rendering. */ transform-origin: 0px 0px 0px; } .plottable text { text-rendering: geometricPrecision; } .plottable .label text { font-family: "Helvetica Neue", sans-serif; fill: #32313F; } .plottable .bar-label-text-area text { font-family: "Helvetica Neue", sans-serif; font-size: 12px; } .plottable .label-area text { fill: #32313F; font-family: "Helvetica Neue", sans-serif; font-size: 14px; } .plottable .light-label text { fill: white; } .plottable .dark-label text { fill: #32313F; } .plottable .off-bar-label text { fill: #32313F; } .plottable .stacked-bar-label text { fill: #32313F; font-style: normal; } .plottable .stacked-bar-plot .off-bar-label { /* HACKHACK #2795: correct off-bar label logic to be implemented on StackedBar */ visibility: hidden !important; } .plottable .axis-label text { font-size: 10px; font-weight: bold; letter-spacing: 1px; line-height: normal; text-transform: uppercase; } .plottable .title-label text { font-size: 20px; font-weight: bold; } .plottable .axis line.baseline { stroke: #CCC; stroke-width: 1px; } .plottable .axis line.tick-mark { stroke: #CCC; stroke-width: 1px; } .plottable .axis text { fill: #32313F; font-family: "Helvetica Neue", sans-serif; font-size: 12px; font-weight: 200; line-height: normal; } .plottable .axis .annotation-circle { fill: white; stroke-width: 1px; stroke: #CCC; } .plottable .axis .annotation-line { stroke: #CCC; stroke-width: 1px; } .plottable .axis .annotation-rect { stroke: #CCC; stroke-width: 1px; fill: white; } .plottable .bar-plot .baseline { stroke: #999; } .plottable .gridlines line { stroke: #3C3C3C; /* hackhack: gridlines should be solid; see #820 */ opacity: 0.25; stroke-width: 1px; } .plottable .selection-box-layer .selection-area { fill: black; fill-opacity: 0.03; stroke: #CCC; } /* DragBoxLayer */ .plottable .drag-box-layer.x-resizable .drag-edge-lr { cursor: ew-resize; } .plottable .drag-box-layer.y-resizable .drag-edge-tb { cursor: ns-resize; } .plottable .drag-box-layer.x-resizable.y-resizable .drag-corner-tl { cursor: nwse-resize; } .plottable .drag-box-layer.x-resizable.y-resizable .drag-corner-tr { cursor: nesw-resize; } .plottable .drag-box-layer.x-resizable.y-resizable .drag-corner-bl { cursor: nesw-resize; } .plottable .drag-box-layer.x-resizable.y-resizable .drag-corner-br { cursor: nwse-resize; } .plottable .drag-box-layer.movable .selection-area { cursor: move; /* IE fallback */ cursor: -moz-grab; cursor: -webkit-grab; cursor: grab; } .plottable .drag-box-layer.movable .selection-area:active { cursor: -moz-grabbing; cursor: -webkit-grabbing; cursor: grabbing; } /* /DragBoxLayer */ .plottable .guide-line-layer line.guide-line { stroke: #CCC; stroke-width: 1px; } .plottable .drag-line-layer.enabled.vertical line.drag-edge { cursor: ew-resize; } .plottable .drag-line-layer.enabled.horizontal line.drag-edge { cursor: ns-resize; } .plottable .legend text { fill: #32313F; font-family: "Helvetica Neue", sans-serif; font-size: 12px; font-weight: bold; line-height: normal; } .plottable .interpolated-color-legend rect.swatch-bounding-box { fill: none; stroke: #CCC; stroke-width: 1px; pointer-events: none; } .plottable .waterfall-plot line.connector { stroke: #CCC; stroke-width: 1px; } .plottable .pie-plot .arc.outline { stroke-linejoin: round; } </style> </template> </dom-module> <dom-module id="vz-bar-chart"> <template> <div id="tooltip"> <table> <thead> <tr id="tooltip-table-header-row"></tr> </thead> <tbody></tbody> </table> </div> <div id="chartdiv"></div> <style include="plottable-style"></style> <style> :host { -webkit-user-select: none; -moz-user-select: none; display: flex; flex-direction: column; flex-grow: 1; flex-shrink: 1; position: relative; outline: none; } div { -webkit-user-select: none; -moz-user-select: none; flex-grow: 1; flex-shrink: 1; } td { padding-left: 5px; padding-right: 5px; font-size: 13px; opacity: 1; } #tooltip { pointer-events: none; position: absolute; opacity: 0; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); font-size: 14px; background: rgba(0, 0, 0, 0.8); color: white; border-radius: 4px; line-height: 1.4em; padding: 8px; z-index: 5; cursor: none; margin-top: 10px; } .swatch { border-radius: 50%; width: 14px; height: 14px; display: block; border: 2px solid rgba(0, 0, 0, 0); } .closest .swatch { border: 2px solid white; } th { padding-left: 5px; padding-right: 5px; text-align: left; } </style> </template> </dom-module> <dom-module id="vz-chart-tooltip"> </dom-module> <dom-module id="vz-pan-zoom-style"> <template> <style> .help { align-items: center; animation-delay: 1s; animation-duration: 1s; animation-name: fade-out; background: rgba(30, 30, 30, 0.6); bottom: 0; color: #fff; display: flex; justify-content: center; left: 0; opacity: 1; padding: 20px; pointer-events: none; position: absolute; right: 0; top: 0; } .help > span { white-space: normal; } @keyframes fade-out { 0% { opacity: 1; } 100% { opacity: 0; } } </style> </template> </dom-module> <dom-module id="vz-line-chart2"> <template> <div id="chartdiv"></div> <vz-chart-tooltip id="tooltip" position="[[tooltipPosition]]" content-component-name="vz-line-chart-tooltip"></vz-chart-tooltip> <style include="plottable-style"></style> <style include="vz-pan-zoom-style"></style> <style> :host { -moz-user-select: none; -webkit-user-select: none; display: flex; flex-direction: column; flex-grow: 1; flex-shrink: 1; outline: none; position: relative; white-space: nowrap; } div { -webkit-user-select: none; -moz-user-select: none; flex-grow: 1; flex-shrink: 1; } #chartdiv .main { cursor: crosshair; } :host(.pankey) #chartdiv :not(.drag-zooming) .main { cursor: -webkit-grab; cursor: grab; } :host(.mousedown) #chartdiv .panning .main { cursor: -webkit-grabbing; cursor: grabbing; } #chartdiv line.guide-line { stroke: #999; stroke-width: 1.5px; } #chartdiv:hover { will-change: transform; } .ghost { opacity: 0.2; stroke-width: 1px; } </style> </template> </dom-module> <dom-module id="vz-line-chart-tooltip"> <template> <div class="content"> <table> <thead></thead> <tbody></tbody> </table> </div> <style> :host { pointer-events: none; } .content { background: rgba(0, 0, 0, 0.8); border-radius: 4px; color: #fff; overflow: hidden; pointer-events: none; } table { font-size: 13px; line-height: 1.4em; margin-top: 10px; padding: 8px; } thead { font-size: 14px; } tbody { font-size: 13px; line-height: 21px; white-space: nowrap; } td { padding: 0 5px; } .swatch { border-radius: 50%; display: block; height: 18px; width: 18px; } .closest .swatch { box-shadow: inset 0 0 0 2px #fff; } th { padding: 0 5px; text-align: left; } .distant td:not(.swatch) { opacity: 0.8; } .ghost { opacity: 0.2; stroke-width: 1px; } </style> </template> </dom-module> <dom-module id="wit-attribution-table"> <template> <style> table { display: inline-block; font-size: 11px; color: #202124; } th { color: #80868b; font-weight: 500; padding: 3px; } td { padding: 3px 6px; } .holder { display: flex; margin-bottom: 12px; } .table-holder { padding-right: 8px; max-height: 200px; overflow-y: scroll; } .feature { text-align: left; } .value { text-align: right; } .label { font-size: 10px; } .cell { border: 1px solid lightgrey; } </style> <div class="holder"> <template is="dom-repeat" items="[[attributions]]" as="table"> <div class="table-holder"> <table> <tr> <th class="feature">Feature</th> <th class="value">[[displayAttributionHeader(models, index)]]</th> </tr> <template is="dom-repeat" items="[[table]]"> <tr> <td class="feature label">[[item.key]]</td> <td class="value cell" style$="[[getStyle(item.mean)]]">[[displayNum(item.mean)]]</td> </tr> </template> </table> </div> </template> </div> </template> </dom-module> <dom-module id="wit-confusion-matrix"> <template> <style> table { display: inline-block; } td { text-align: right; } th, td { font-size: 14px; padding: 3px; font-weight: normal; } .flex { display: flex; flex-direction: row-reverse; } .pred-label { text-align: left; font-size: 10px; } .total-label { color: #5f6368; font-size: 10px; text-align: left; } .total-cell { color: #5f6368; } .actual-label { text-align: right; font-size: 10px; } .n-label { font-size: 10px; vertical-align: bottom; } .value-cell { color: #202124; border: 1px solid lightgrey; } .parenthetical { padding-right: 5px; width: 50px; } </style> <div id="holder"></div> </template> </dom-module> <dom-module id="iron-autogrow-textarea"> <template> <style> :host { display: inline-block; position: relative; width: 400px; border: 1px solid; padding: 2px; -moz-appearance: textarea; -webkit-appearance: textarea; overflow: hidden; } .mirror-text { visibility: hidden; word-wrap: break-word; @apply --iron-autogrow-textarea; } .fit { @apply --layout-fit; } textarea { position: relative; outline: none; border: none; resize: none; background: inherit; color: inherit; /* see comments in template */ width: 100%; height: 100%; font-size: inherit; font-family: inherit; line-height: inherit; text-align: inherit; @apply --iron-autogrow-textarea; } textarea::-webkit-input-placeholder { @apply --iron-autogrow-textarea-placeholder; } textarea:-moz-placeholder { @apply --iron-autogrow-textarea-placeholder; } textarea::-moz-placeholder { @apply --iron-autogrow-textarea-placeholder; } textarea:-ms-input-placeholder { @apply --iron-autogrow-textarea-placeholder; } </style> <div id="mirror" class="mirror-text" aria-hidden="true"> </div> <div class="textarea-container fit"> <textarea id="textarea" name$="[[name]]" aria-label$="[[label]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" disabled$="[[disabled]]" rows$="[[rows]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]"></textarea> </div> </template> </dom-module> <dom-module id="iron-image"> <template> <style> :host { display: inline-block; overflow: hidden; position: relative; } #baseURIAnchor { display: none; } #sizedImgDiv { position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; display: none; } #img { display: block; width: var(--iron-image-width, auto); height: var(--iron-image-height, auto); } :host([sizing]) #sizedImgDiv { display: block; } :host([sizing]) #img { display: none; } #placeholder { position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; background-color: inherit; opacity: 1; @apply --iron-image-placeholder; } #placeholder.faded-out { transition: opacity 0.5s linear; opacity: 0; } </style> <a id="baseURIAnchor" href="#"></a> <div id="sizedImgDiv" role="img" hidden$="[[_computeImgDivHidden(sizing)]]" aria-hidden$="[[_computeImgDivARIAHidden(alt)]]" aria-label$="[[_computeImgDivARIALabel(alt, src)]]"></div> <img id="img" alt$="[[alt]]" hidden$="[[_computeImgHidden(sizing)]]" crossorigin$="[[crossorigin]]" on-load="_imgOnLoad" on-error="_imgOnError"> <div id="placeholder" hidden$="[[_computePlaceholderHidden(preload, fade, loading, loaded)]]" class$="[[_computePlaceholderClassName(preload, fade, loading, loaded)]]"></div> </template> </dom-module> <dom-module id="paper-card"> <template> <style include="paper-material-styles"> :host { display: inline-block; position: relative; box-sizing: border-box; background-color: var(--paper-card-background-color, var(--primary-background-color)); border-radius: 2px; @apply --paper-font-common-base; @apply --paper-card; } /* IE 10 support for HTML5 hidden attr */ :host([hidden]), [hidden] { display: none !important; } .header { position: relative; border-top-left-radius: inherit; border-top-right-radius: inherit; overflow: hidden; @apply --paper-card-header; } .header iron-image { display: block; width: 100%; --iron-image-width: 100%; pointer-events: none; @apply --paper-card-header-image; } .header .title-text { padding: 16px; font-size: 24px; font-weight: 400; color: var(--paper-card-header-color, #000); @apply --paper-card-header-text; } .header .title-text.over-image { position: absolute; bottom: 0px; @apply --paper-card-header-image-text; } :host ::slotted(.card-content) { padding: 16px; position:relative; @apply --paper-card-content; } :host ::slotted(.card-actions) { border-top: 1px solid #e8e8e8; padding: 5px 16px; position:relative; @apply --paper-card-actions; } :host([elevation="1"]) { @apply --paper-material-elevation-1; } :host([elevation="2"]) { @apply --paper-material-elevation-2; } :host([elevation="3"]) { @apply --paper-material-elevation-3; } :host([elevation="4"]) { @apply --paper-material-elevation-4; } :host([elevation="5"]) { @apply --paper-material-elevation-5; } </style> <div class="header"> <iron-image hidden$="[[!image]]" aria-hidden$="[[_isHidden(image)]]" src="[[image]]" alt="[[alt]]" placeholder="[[placeholderImage]]" preload="[[preloadImage]]" fade="[[fadeImage]]"></iron-image> <div hidden$="[[!heading]]" class$="title-text [[_computeHeadingClass(image)]]">[[heading]]</div> </div> <slot></slot> </template> </dom-module> <dom-module id="paper-checkbox"> <template strip-whitespace> <style> :host { display: inline-block; white-space: nowrap; cursor: pointer; --calculated-paper-checkbox-size: var(--paper-checkbox-size, 18px); /* -1px is a sentinel for the default and is replaced in `attached`. */ --calculated-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: none; } .hidden { display: none; } #checkboxContainer { display: inline-block; position: relative; width: var(--calculated-paper-checkbox-size); height: var(--calculated-paper-checkbox-size); min-width: var(--calculated-paper-checkbox-size); margin: var(--paper-checkbox-margin, initial); vertical-align: var(--paper-checkbox-vertical-align, middle); background-color: var(--paper-checkbox-unchecked-background-color, transparent); } #ink { position: absolute; /* Center the ripple in the checkbox by negative offsetting it by * (inkWidth - rippleWidth) / 2 */ top: calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-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-checkbox-unchecked-ink-color, var(--primary-text-color)); opacity: 0.6; pointer-events: none; } #ink:dir(rtl) { right: calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size)) / 2); left: auto; } #ink[checked] { color: var(--paper-checkbox-checked-ink-color, var(--primary-color)); } #checkbox { position: relative; box-sizing: border-box; height: 100%; border: solid 2px; border-color: 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 animations */ #checkbox.checked #checkmark { -webkit-animation: checkmark-expand 140ms ease-out forwards; animation: checkmark-expand 140ms ease-out forwards; } @-webkit-keyframes checkmark-expand { 0% { -webkit-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(--paper-checkbox-checked-color, var(--primary-color)); border-color: var(--paper-checkbox-checked-color, var(--primary-color)); } #checkmark { position: absolute; width: 36%; height: 70%; border-style: solid; border-top: none; border-left: none; border-right-width: calc(2/15 * var(--calculated-paper-checkbox-size)); border-bottom-width: calc(2/15 * var(--calculated-paper-checkbox-size)); border-color: var(--paper-checkbox-checkmark-color, white); -webkit-transform-origin: 97% 86%; transform-origin: 97% 86%; box-sizing: content-box; /* protect against page-level box-sizing */ } #checkmark:dir(rtl) { -webkit-transform-origin: 50% 14%; transform-origin: 50% 14%; } /* label */ #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, var(--primary-text-color)); @apply --paper-checkbox-label; } :host([checked]) #checkboxLabel { color: var(--paper-checkbox-label-checked-color, var(--paper-checkbox-label-color, var(--primary-text-color))); @apply --paper-checkbox-label-checked; } #checkboxLabel:dir(rtl) { padding-right: var(--paper-checkbox-label-spacing, 8px); padding-left: 0; } #checkboxLabel[hidden] { display: none; } /* disabled state */ :host([disabled]) #checkbox { opacity: 0.5; border-color: var(--paper-checkbox-unchecked-color, var(--primary-text-color)); } :host([disabled][checked]) #checkbox { background-color: var(--paper-checkbox-unchecked-color, var(--primary-text-color)); opacity: 0.5; } :host([disabled]) #checkboxLabel { opacity: 0.65; } /* invalid state */ #checkbox.invalid:not(.checked) { border-color: var(--paper-checkbox-error-color, var(--error-color)); } </style> <div id="checkboxContainer"> <div id="checkbox" class$="[[_computeCheckboxClass(checked, invalid)]]"> <div id="checkmark" class$="[[_computeCheckmarkClass(checked)]]"></div> </div> </div> <div id="checkboxLabel"><slot></slot></div> </template> </dom-module> <dom-module id="wit-example-viewer"> <template> <style id="linter-paper-button-style"> /** * This style preserves the styling previous to * https://github.com/PolymerElements/paper-button/pull/115 * This change can break the layout of paper-button content. * Remove this style to apply the change, more details at b/70528356. */ paper-button { display: inline-block; text-align: center; font-family: inherit; } </style> <style> :host { display: flex; position: relative; } .seq-feat { margin-left: 16px; } .value-list { width: 100%; } .slider-holder { display: flex; } .slider-label { margin-right: 10px; margin-top: 16px; } .outer { width: 100%; overflow: auto; } .image { /* <img> elements are used to load to a canvas so they aren't displayed. */ display: none; } .flex-controls { display: flex; flex-wrap: wrap; overflow: auto; } .value-pills-holder { flex-grow: 1; flex-basis: 100%; } iron-autogrow-textarea { border: 1px solid #ffffff; border-radius: 4px; font-size: 14px; -moz-appearance: none; -webkit-appearance: none; color: #3c4043; } iron-autogrow-textarea.value-same { color: #5f6368; } iron-autogrow-textarea.value-different { color: #34a853; --iron-autogrow-textarea: { font-weight: 500; } } .value-pill { text-align: left; margin: 4px; padding: 4px 8px; color: #3c4043; } .value-pill:hover { background: #f8f9fa; } .value-pill[focused] { border: 1px solid #ffeb3b; background: #f8f9fa; } .value-compare { text-align: left; padding: 4px 8px; } .value-pill-stacked { width: 100%; margin: 4px 4px 4px 0; padding: 2px; } .value-pill-grid { width: 120px; margin: 4px 8px 4px 0; } .feature-name { display: flex; padding-left: 4px; margin: 4px 20px 4px 8px; justify-content: space-between; color: #80868b; } .feature-name-text { width: 300px; max-width: 300px; min-width: 150px; font-size: 14px; margin-top: 4px; color: #3c4043; line-height: 1.6em; text-overflow: ellipsis; white-space: pre-wrap; word-wrap: break-word; padding-right: 8px; } .feature-name-header-text { width: 300px; max-width: 300px; min-width: 150px; color: #202124; font-size: 12px; line-height: 1.8em; text-overflow: ellipsis; white-space: pre-wrap; word-wrap: break-word; } .feature-name.feature-name-header { padding: 4px 4px 0px 4px; background: #f8f9fa; margin: 0px; border-bottom: 1px solid #e8eaed; } .slider { --paper-slider-input: { width: 100px; } } .hide-controls { display: none; } .indent { margin-left: 16px; } .scale-label { margin-top: 10px; margin-right: 10px; } .windowing-label { width: 110px; } .control-toggle-button { float: left; max-height: 20px; max-width: 20px; padding: 0; } .expand-button-holder { margin-bottom: 10px; } .delete-value-button { position: absolute; background: #ffe603; color: #5f6368; border-radius: 12px; max-width: 24px; max-height: 24px; padding: 0; margin-top: 2px; opacity: 1; visibility: visible; transition: opacity 200ms; } .delete-value-button.delete-value-button-hidden { opacity: 0; visibility: hidden; transition: opacity 200ms, visibility 200ms; } .delete-feature-button { max-height: 20px; max-width: 20px; padding: 0; margin-left: 4px; margin-top: 0px; } .add-value-button { margin-top: 2px; max-height: 20px; max-width: 20px; min-height: 20px; min-width: 20px; padding: 0; color: #80868b; } .add-feature-button { margin-left: 0; margin-bottom: 10px; } .upload-image-button { margin: 0 0 0 5px; padding: 0; width: 16px; height: 16px; color: white; } .imagecard { margin: 4px; } .image-scale-button { margin-bottom: 5px; } .saliency-legend-label { margin-bottom: 5px; } .feature-dialog { display: flex; flex-direction: column; } .feature-dialog-button { text-transform: none; text-align: left; } .image-bottom-bar { width: 100%; background: #3c4043; } .image-upload-input { display: none; } .space-for-more-button { width: 20px; } .value-header-text { min-width: 130px; width: 130px; color: #202124; font-size: 12px; line-height: 1.8em; } paper-dialog { border-radius: 10px; } .control-button { background-color: white; border: 1px solid #dadce0; color: var(--tb-orange-dark); font-size: 14px; font-weight: 500; padding: 8px 12px; text-transform: none; margin: 5px; } .control-button[disabled] { color: #dadce0; } .value-text { border-bottom: 2px solid #ffeb3b; } .compare-value-text { border-bottom: 2px solid #34a853; } .no-compare-value-text { border-bottom: 0; } </style> <div class="outer"> <template is="dom-if" if="[[showSearchBox]]"> <paper-input value="{{featureSearchValue}}" label="Search" class="filter-input" no-label-float> <iron-icon icon="icons:search" prefix></iron-icon> </paper-input> </template> <div class="feature-name feature-name-header"> <div class="feature-name-header-text">Feature</div> <div class="value-pills-holder flex-controls value-header-text"> <div class="value-text">Value(s)</div> </div> <template is="dom-if" if="[[compareMode]]"> <div class="value-pills-holder flex-controls value-header-text"> <div class$="[[getCompareHeaderClass(highlightDifferences)]]"> [[compareTitle]] </div> </div> </template> <div class="space-for-more-button"></div> </div> <template is="dom-repeat" items="[[filteredFeaturesList]]" as="feat"> <template is="dom-if" if="[[isImage(feat.name)]]"> <div class="feature-name"> <div class="feature-name-text">[[feat.name]]</div> <div class="value-pills-holder"> <paper-card id="[[getImageCardId(feat.name)]]" class="imagecard"> <img class="image" src$="[[getImageSrc(feat.name)]]" id="[[getImageId(feat.name)]]"> <canvas id="[[getCanvasId(feat.name)]]" data-feature="[[feat.name]]"></canvas> <template is="dom-if" if="[[shouldShowImageControls(hasImage, allowImageControls)]]"> <div>Image windowing (contrast)</div> <div class="slider-holder indent"> <div class="slider-label windowing-label"> Window center: </div> <paper-slider class="slider" editable="true" max="255" immediate-value="{{windowCenter}}" value="[[windowCenter]]"> </paper-slider> </div> <div class="slider-holder indent"> <div class="slider-label windowing-label"> Window width: </div> <paper-slider class="slider" editable="true" max="512" min="1" immediate-value="{{windowWidth}}" value="[[windowWidth]]"> </paper-slider> </div> <div class="flex-controls"> <div class="scale-label">Image scale percentage:</div> <paper-input no-label-float type="number" min="10" max="500" value="{{imageScalePercentage}}"> </paper-input> <paper-button class="image-scale-button" on-click="updateImages"> set </paper-button> </div> </template> <div class="image-bottom-bar"> <paper-icon-button class$="[[getUploadImageClass(readonly)]]" icon="file-upload" on-click="uploadImageClicked" data-feature="[[feat.name]]" title="Upload image"> </paper-icon-button> <paper-input class="image-upload-input" type="file" on-change="handleImageUpload" data-feature="[[feat.name]]" data-index="[[index]]"> </paper-input> </div> </paper-card> </div> <template is="dom-if" if="[[compareMode]]"> <div class="value-pills-holder"> <paper-card id="[[getCompareImageCardId(feat.name)]]" class="imagecard"> <img class="image" src$="[[getCompareImageSrc(feat.name)]]" id="[[getCompareImageId(feat.name)]]"> <canvas id="[[getCompareCanvasId(feat.name)]]" data-feature="[[feat.name]]"></canvas> <div class="image-bottom-bar"></div> </paper-card> </div> </template> <paper-icon-button icon="more-horiz" class$="[[getAddValueButtonClass(readonly)]]" on-click="featureMoreClicked" data-feature="[[feat.name]]"></paper-icon-button> <paper-dialog id="[[getFeatureDialogId(feat.name)]]" horizontal-align="right" vertical-align="bottom"> <div class="feature-dialog"> <paper-button data-feature="[[feat.name]]" on-click="deleteFeature" class="feature-dialog-button"> Delete feature </paper-button> </div> </paper-dialog> </div> </template> <template is="dom-if" if="[[!isImage(feat.name)]]"> <div class="feature-name"> <div class="feature-name-text">[[feat.name]]</div> <div class="flex-controls value-pills-holder"> <template is="dom-if" if="[[isExpanded(feat.name, expandAllFeatures)]]"> <template is="dom-repeat" items="[[getFeatureValues(feat.name)]]" as="value"> <iron-autogrow-textarea class$="[[getInputPillClass(feat.name, displayMode)]]" readonly$="[[readonly]]" on-input="onValueChanged" on-focus="onInputFocus" on-blur="onInputBlur" data-feature="[[feat.name]]" data-index="[[index]]" value="[[value]]"> </iron-autogrow-textarea> </template> </template> <template is="dom-if" if="[[!isExpanded(feat.name, expandAllFeatures)]]"> <iron-autogrow-textarea class$="[[getInputPillClass(feat.name, displayMode)]]" readonly$="[[readonly]]" on-input="onValueChanged" on-focus="onInputFocus" on-blur="onInputBlur" data-feature="[[feat.name]]" data-index="[[zeroIndex]]" value="[[getFirstFeatureValue(feat.name)]]"> </iron-autogrow-textarea> <template is="dom-if" if="[[featureHasMultipleValues(feat.name)]]"> <paper-button data-feature="[[feat.name]]" on-click="expandFeature" class$="[[getInputPillClass(feat.name, displayMode)]]"> ... </paper-button> </template> </template> </div> <template is="dom-if" if="[[compareMode]]"> <div class="flex-controls value-pills-holder"> <template is="dom-if" if="[[isExpanded(feat.name, expandAllFeatures)]]"> <template is="dom-repeat" items="[[getCompareFeatureValues(feat.name)]]" as="value"> <iron-autogrow-textarea class$="[[getCompareInputClass(feat.name, displayMode, index)]]" readonly value="[[value]]"> </iron-autogrow-textarea> </template> </template> <template is="dom-if" if="[[!isExpanded(feat.name, expandAllFeatures)]]"> <iron-autogrow-textarea class$="[[getCompareInputClass(feat.name, displayMode, zeroIndex)]]" readonly value="[[getFirstCompareFeatureValue(feat.name)]]"> </iron-autogrow-textarea> <template is="dom-if" if="[[compareFeatureHasMultipleValues(feat.name)]]"> <paper-button data-feature="[[feat.name]]" on-click="expandFeature" class$="[[getCompareInputClass(feat.name, displayMode)]]"> ... </paper-button> </template> </template> </div> </template> <paper-icon-button icon="more-horiz" class$="[[getAddValueButtonClass(readonly)]]" on-click="featureMoreClicked" data-feature="[[feat.name]]"></paper-icon-button> <paper-dialog id="[[getFeatureDialogId(feat.name)]]" horizontal-align="right" vertical-align="bottom"> <div class="feature-dialog"> <paper-button data-feature="[[feat.name]]" on-click="deleteFeature" class="feature-dialog-button"> Delete feature </paper-button> <paper-button data-feature="[[feat.name]]" on-click="addValue" class="feature-dialog-button"> Add feature value </paper-button> </div> </paper-dialog> </div> </template> </template> <template is="dom-if" if="[[isSeqExample(maxSeqNumber)]]"> <div class="slider-holder"> <div class="slider-label">Sequence Number:</div> <paper-slider class="slider" editable="true" max="[[maxSeqNumber]]" value="{{seqNumber}}"> </paper-slider> </div> <template is="dom-repeat" items="[[filteredSeqFeaturesList]]" as="seqfeat"> <div class="seqfeat"> <template is="dom-if" if="[[isImage(seqfeat.name)]]"> <div class="feature-name"> <div class="feature-name-text">[[seqfeat.name]]</div> <div class="value-pills-holder"> <paper-card id="[[getImageCardId(seqfeat.name)]]" class="imagecard"> <img class="image" src$="[[getSeqImageSrc(seqfeat.name, seqNumber)]]" id="[[getImageId(seqfeat.name)]]"> <canvas id="[[getCanvasId(seqfeat.name)]]" data-feature="[[seqfeat.name]]" data-seq-num="[[seqNumber]]"></canvas> <template is="dom-if" if="[[shouldShowImageControls(hasImage, allowImageControls)]]"> <div class="image-controls"> <div>Image windowing (contrast)</div> <div class="slider-holder indent"> <div class="slider-label windowing-label"> Window center: </div> <paper-slider class="slider" editable="true" max="255" immediate-value="{{windowCenter}}" value="[[windowCenter]]"> </paper-slider> </div> <div class="slider-holder indent"> <div class="slider-label windowing-label"> Window width: </div> <paper-slider class="slider" editable="true" max="512" min="1" immediate-value="{{windowWidth}}" value="[[windowWidth]]"> </paper-slider> </div> <div class="flex-controls"> <div class="scale-label">Image scale percentage:</div> <paper-input no-label-float type="number" min="10" max="500" value="{{imageScalePercentage}}"> </paper-input> <paper-button class="image-scale-button" on-click="updateImages"> set </paper-button> </div> </div> </template> <div class="image-bottom-bar"> <paper-icon-button class$="[[getUploadImageClass(readonly)]]" icon="file-upload" on-click="uploadImageClicked" data-feature="[[seqfeat.name]]" title="Upload image"> </paper-icon-button> <paper-input class="image-upload-input" type="file" on-change="handleImageUpload" data-feature="[[seqfeat.name]]" data-index="[[index]]" data-seq-num="[[seqNumber]]"> </paper-input> </div> </paper-card> </div> <template is="dom-if" if="[[compareMode]]"> <div class="value-pills-holder"> <paper-card id="[[getCompareImageCardId(seqfeat.name)]]" class="imagecard"> <img class="image" src$="[[getCompareSeqImageSrc(seqfeat.name, seqNumber)]]" id="[[getCompareImageId(seqfeat.name)]]"> <canvas id="[[getCompareCanvasId(seqfeat.name)]]" data-feature="[[seqfeat.name]]" data-seq-num="[[seqNumber]]"></canvas> <div class="image-bottom-bar"></div> </paper-card> </div> </template> <paper-icon-button icon="more-horiz" class$="[[getAddValueButtonClass(readonly)]]"></paper-icon-button> <paper-dialog> <paper-button data-feature="[[seqfeat.name]]" on-click="deleteFeature"> Delete feature </paper-button> </paper-dialog> </div> </template> <template is="dom-if" if="[[!isImage(seqfeat.name)]]"> <div class="feature-name"> <div class="feature-name-text">[[seqfeat.name]]</div> <div class="flex-controls value-pills-holder"> <template is="dom-if" if="[[isExpanded(seqfeat.name, expandAllFeatures)]]"> <template is="dom-repeat" items="[[getSeqFeatureValues(seqfeat.name, seqNumber)]]" as="seqvalue"> <iron-autogrow-textarea class$="[[getInputPillClass(seqfeat.name, displayMode)]]" readonly$="[[readonly]]" on-input="onValueChanged" on-focus="onInputFocus" on-blur="onInputBlur" data-feature="[[seqfeat.name]]" data-index="[[index]]" data-seq-num="[[seqNumber]]" value="[[seqvalue]]"> </iron-autogrow-textarea> </template> </template> <template is="dom-if" if="[[!isExpanded(seqfeat.name, expandAllFeatures)]]"> <iron-autogrow-textarea class$="[[getInputPillClass(seqfeat.name, displayMode)]]" readonly$="[[readonly]]" on-input="onValueChanged" on-focus="onInputFocus" on-blur="onInputBlur" data-feature="[[seqfeat.name]]" data-index="[[zeroIndex]]" data-seq-num="[[seqNumber]]" value="[[getFirstSeqFeatureValue(seqfeat.name, seqNumber)]]"> </iron-autogrow-textarea> <template is="dom-if" if="[[seqFeatureHasMultipleValues(seqfeat.name, seqNumber)]]"> <paper-button data-feature="[[seqfeat.name]]" on-click="expandFeature" class$="[[getInputPillClass(seqfeat.name, displayMode)]]"> ... </paper-button> </template> </template> </div> <template is="dom-if" if="[[compareMode]]"> <div class="flex-controls value-pills-holder"> <template is="dom-if" if="[[isExpanded(seqfeat.name, expandAllFeatures)]]"> <template is="dom-repeat" items="[[getCompareSeqFeatureValues(seqfeat.name, seqNumber)]]" as="seqvalue"> <iron-autogrow-textarea class$="[[getSeqCompareInputClass(seqfeat.name, displayMode, seqNumber, index)]]" readonly value="[[seqvalue]]"> </iron-autogrow-textarea> </template> </template> <template is="dom-if" if="[[!isExpanded(seqfeat.name, expandAllFeatures)]]"> <iron-autogrow-textarea class$="[[getSeqCompareInputClass(seqfeat.name, displayMode, seqNumber, zeroIndex)]]" readonly value="[[getFirstCompareSeqFeatureValue(seqfeat.name, seqNumber)]]"> </iron-autogrow-textarea> <template is="dom-if" if="[[compareSeqFeatureHasMultipleValues(seqfeat.name, seqNumber)]]"> <paper-button data-feature="[[seqfeat.name]]" on-click="expandFeature" class$="[[getSeqCompareInputClass(seqfeat.name, displayMode, seqNumber)]]"> ... </paper-button> </template> </template> </div> </template> <paper-icon-button icon="more-horiz" class$="[[getAddValueButtonClass(readonly)]]"></paper-icon-button> <paper-dialog> <paper-button data-feature="[[seqfeat.name]]" on-click="deleteFeature"> Delete feature </paper-button> <paper-button data-feature="[[seqfeat.name]]" data-seq-num="[[seqNumber]]" on-click="addValue" class="feature-dialog-button"> Add feature value </paper-button> </paper-dialog> </div> </template> </div> </template> </template> <paper-icon-button on-click="openAddFeatureDialog" icon="add" title="Add feature" class$="[[getAddValueButtonClass(readonly)]]"> </paper-icon-button> </div> <paper-icon-button id="deletevalue" icon="delete" class$="[[getDeleteValueButtonClass(readonly, showDeleteValueButton)]]" data-feature="[[focusedFeatureName]]" data-index="[[focusedFeatureValueIndex]]" data-seq-num="[[focusedSeqNumber]]" on-click="deleteValue" title="Delete value"> </paper-icon-button> <paper-dialog id="addFeatureDialog"> <h2>Add Feature</h2> <paper-input label="Feature name" value="{{newFeatureName}}"></paper-input> <paper-radio-group selected="{{newFeatureType}}"> <paper-radio-button name="int">Int</paper-radio-button> <paper-radio-button name="float">Float</paper-radio-button> <paper-radio-button name="bytes">Bytes</paper-radio-button> </paper-radio-group> <paper-button dialog-dismiss class="control-button" on-click="addFeature" disabled="[[!shouldEnableAddFeature(newFeatureName)]]"> Create </paper-button> </paper-dialog> </template> </dom-module> <dom-module id="wit-inference-viewer"> <template> <style> :host { display: block; } .runs-holder { padding: 0; display: flex; flex-direction: column-reverse; overflow-y: auto; max-height: 200px; } .row { display: flex; color: #3c4043; font-size: 12px; } .header { color: #80868b; font-size: 12px; padding: 4px 0; border-bottom: solid 1px #dadce0; border-top: solid 1px #dadce0; } .dark-row-one { background: #cbf0f8; } .dark-row-two { background: #fff3e0; } .white-row { background: white; } .marker { flex: 0.5; margin-right: 5px; } .marker.mark-one { background: #007b83; padding-left: 1px; } .marker.mark-two { background: #ff9800; padding-left: 1px; } .run { flex: 10; } .multi-model { flex: 10; } .one-model { display: none; } .show-label { flex: 20; display: flex; overflow: hidden; } .no-label { display: none; } .score { flex: 10; } .arrow { flex: 2; } .delta { flex: 10; } .text { margin-top: 4px; } .green { color: green; } .red { color: red; } </style> <div class="row header"> <div class="marker"></div> <div class="run">Run</div> <div class$="[[getModelHeaderClass(inferences)]]">Model</div> <div class$="[[getLabelHeaderClass(modelType)]]">Label</div> <div class="score">[[getScoreLabel(modelType)]]</div> <div class="arrow"></div> <div class="delta">Delta</div> </div> <div class="runs-holder"> <template is="dom-repeat" items="[[inferences]]" as="modelsInference" index-as="runindex"> <div class="rows-for-run"> <template is="dom-repeat" items="[[modelsInference]]" as="inference" index-as="modelindex"> <template is="dom-repeat" items="[[getInferenceList(inference, maxEntriesPerRun)]]"> <div class$="[[getRowClass(runindex, inferences, modelindex)]]"> <div class$="[[getMarkerClass(runindex, inferences, modelindex)]]"></div> <div class="run text">[[getRunNumber(runindex)]]</div> <div class$="[[getModelClass(inferences)]]"> <div>[[getModelName(modelNames, modelindex)]]</div> </div> <div class$="[[getLabelClass(modelType)]]"> <div>[[getLabel(item)]]</div> </div> <div class="score text">[[getPrintableScore(item.score)]]</div> <div class="arrow"> <iron-icon icon="[[getIcon(runindex, index, modelindex)]]" class$="[[getIconClass(runindex, index, modelindex)]]"> </iron-icon> </div> <div class="delta text"> [[getPrintableDelta(runindex, index, modelindex)]] </div> </div> </template> </template> </div> </template> </div> </template> </dom-module> <dom-module id="facets-dive-vis"> <template> <style> :host { box-sizing: border-box; display: block; height: 100%; width: 100%; } .labels { @apply --paper-font-common-base; @apply --paper-font-headline; } .rotate { stroke-dasharray: 1.5, 0.5; animation: rotate 1s linear infinite; } @keyframes rotate { from { stroke-dashoffset: 0; } to { stroke-dashoffset: 2; } } </style> <div id="holder"> </div> </template> </dom-module> <dom-module id="facets-dive-controls"> <template> <style> :host { @apply --paper-font-common-base; display: flex; overflow: visible; } .main-controls { position: absolute; top: 0; bottom: 0; left: 0; right: 60px; display: flex; height: 100%; overflow: visible; } .overflow-holder { position: absolute; top: 0; bottom: 0; width: 60px; right: 0; overflow: visible; } #overflowmenu { margin: 0 40px; } .overflow-div { display: flex; flex-direction: column; } .overflow-checkbox { margin: 8px 0; padding } .dropdown-holder { display: flex; width: 150px; margin: 0 10px; } .dropdown-trigger { margin-top: 10px; } .expand-button { color: #9b9b9b; --paper-icon-button-ink-color: #9b9b9b; } paper-menu paper-checkbox { display: block; font-weight: normal; font-size: 12.5px; text-align: center; } paper-item { padding: 0 14px; --paper-item-min-height: 36px; } paper-dropdown-menu paper-item { border-bottom: 1px solid #ccc; } #verticalFacet { --paper-input-container-input: { color: var(--grid-faceting-vertical-label-color); }; } #horizontalFacet { --paper-input-container-input: { color: var(--grid-faceting-horizontal-label-color); }; } #verticalPosition { --paper-input-container-input: { color: var(--item-positioning-vertical-label-color); }; } #horizontalPosition { --paper-input-container-input: { color: var(--item-positioning-horizontal-label-color); }; } .vertical-facet { color: var(--grid-faceting-vertical-label-color); } .horizontal-facet { color: var(--grid-faceting-horizontal-label-color); } .vertical-position { color: var(--item-positioning-vertical-label-color); } .horizontal-position { color: var(--item-positioning-horizontal-label-color); } </style> <div class="main-controls"> <div class="dropdown-holder horizontal-facet"> <paper-dropdown-menu id="horizontalFacet" label="Binning | X-Axis" class="facet-selector"> <paper-listbox class="dropdown-content" selected="{{horizontalFacet}}" attr-for-selected="value" slot="dropdown-content"> <paper-item value="">(none)</paper-item> <template is="dom-repeat" items="[[keys]]"> <paper-item value="[[item]]">[[_breakUpAndTruncate(item)]]</paper-item> </template> </paper-listbox> </paper-dropdown-menu> </div> <template is="dom-if" if="[[horizontalFacet]]"> <paper-input type="number" min="1" max="[[_maxBuckets(horizontalFacet, horizontalBagOfWords)]]" value="{{horizontalBuckets}}" label="Count"> </paper-input> </template> <div class="dropdown-holder vertical-facet"> <paper-dropdown-menu id="verticalFacet" label="Binning | Y-Axis" class="facet-selector"> <paper-listbox class="dropdown-content" selected="{{verticalFacet}}" attr-for-selected="value" slot="dropdown-content"> <paper-item value="">(none)</paper-item> <template is="dom-repeat" items="[[keys]]"> <paper-item value="[[item]]">[[_breakUpAndTruncate(item)]]</paper-item> </template> </paper-listbox> </paper-dropdown-menu> </div> <template is="dom-if" if="[[verticalFacet]]"> <paper-input type="number" min="1" max="[[_maxBuckets(verticalFacet,verticalBagOfWords)]]" value="{{verticalBuckets}}" label="Count"> </paper-input> </template> <div class="dropdown-holder"> <paper-dropdown-menu id="colorBy" label="Color By"> <paper-listbox class="dropdown-content" selected="{{colorBy}}" attr-for-selected="value" slot="dropdown-content"> <paper-item value="">(none)</paper-item> <template is="dom-repeat" items="[[keys]]"> <paper-item value="[[item]]">[[item]]</paper-item> </template> </paper-listbox> </paper-dropdown-menu> </div> <div class="dropdown-holder"> <paper-dropdown-menu id="imageFieldName" label="Label By"> <paper-listbox class="dropdown-content" selected="{{imageFieldName}}" attr-for-selected="value" slot="dropdown-content"> <paper-item value=""> [[_getImageFieldNameDefaultLabel(atlasUrl)]] </paper-item> <template is="dom-repeat" items="[[keys]]"> <paper-item value="[[item]]">[[item]]</paper-item> </template> </paper-listbox> </paper-dropdown-menu> </div> <div class="dropdown-holder horizontal-position"> <paper-dropdown-menu id="horizontalPosition" label="Scatter | X-Axis" class="position-selector"> <paper-listbox class="dropdown-content" selected="{{horizontalPosition}}" attr-for-selected="value" slot="dropdown-content"> <paper-item value="">(default)</paper-item> <template is="dom-repeat" items="[[keys]]" filter="_isKeyNumeric"> <paper-item value="[[item]]">[[item]]</paper-item> </template> </paper-listbox> </paper-dropdown-menu> </div> <div class="dropdown-holder vertical-position"> <paper-dropdown-menu id="verticalPosition" label="Scatter | Y-Axis" class="position-selector"> <paper-listbox class="dropdown-content" selected="{{verticalPosition}}" attr-for-selected="value" slot="dropdown-content"> <paper-item value="">(default)</paper-item> <template is="dom-repeat" items="[[keys]]" filter="_isKeyNumeric"> <paper-item value="[[item]]">[[item]]</paper-item> </template> </paper-listbox> </paper-dropdown-menu> </div> </div> <div class="overflow-holder"> <template is="dom-if" if="[[_shouldShowOverflowMenu(colorBy, verticalFacet, horizontalFacet)]]"> <paper-icon-button class="dropdown-trigger" icon="more-vert" alt="more-vert" id="overflowbtn" on-click="_openOverflow"> </paper-icon-button> </template> <paper-dialog id="overflowmenu" no-overlap horizontal-align="right" vertical-align="top"> <div class="overflow-div"> <template is="dom-if" if="{{_isKeyCategorical(colorBy)}}"> <div class="dropdown-holder"> <paper-dropdown-menu id="paletteChoice" label="Display | Color Palette"> <paper-listbox class="dropdown-content" selected="{{paletteChoice}}" attr-for-selected="value" slot="dropdown-content"> <paper-item value="standard">standard</paper-item> <paper-item value="warm">warm</paper-item> <paper-item value="cool">cool</paper-item> <paper-item value="assist">assist</paper-item> </paper-listbox> </paper-dropdown-menu> </div> </template> <template is="dom-if" if="[[_hasWordTree(verticalFacet)]]"> <paper-checkbox class="overflow-checkbox" checked="{{verticalBagOfWords}}"> X-Axis Bag of words </paper-checkbox> </template> <template is="dom-if" if="[[_hasWordTree(horizontalFacet)]]"> <paper-checkbox class="overflow-checkbox" checked="{{horizontalBagOfWords}}"> Y-Axis Bag of words </paper-checkbox> </template> </div> </paper-dialog> </div> </template> </dom-module> <dom-module id="facets-dive-info-card"> <template> <style> :host { @apply --paper-font-common-base; box-sizing: border-box; max-height: 100%; max-width: 100%; overflow: auto; padding: 8px; } dt { color: #9e7c65; font-size: 14px; } dd { @apply --paper-font-common-code; color: #513726; margin: 0 0 16px 0; } </style> <div id="holder"></div> </template> </dom-module> <dom-module id="paper-tooltip"> <template> <style> :host { display: block; position: absolute; outline: none; z-index: 1002; -moz-user-select: none; -ms-user-select: none; -webkit-user-select: none; user-select: none; cursor: default; } #tooltip { display: block; outline: none; @apply --paper-font-common-base; font-size: 10px; line-height: 1; background-color: var(--paper-tooltip-background, #616161); color: var(--paper-tooltip-text-color, white); padding: 8px; border-radius: 2px; @apply --paper-tooltip; } @keyframes keyFrameScaleUp { 0% { transform: scale(0.0); } 100% { transform: scale(1.0); } } @keyframes keyFrameScaleDown { 0% { transform: scale(1.0); } 100% { transform: scale(0.0); } } @keyframes keyFrameFadeInOpacity { 0% { opacity: 0; } 100% { opacity: var(--paper-tooltip-opacity, 0.9); } } @keyframes keyFrameFadeOutOpacity { 0% { opacity: var(--paper-tooltip-opacity, 0.9); } 100% { opacity: 0; } } @keyframes keyFrameSlideDownIn { 0% { transform: translateY(-2000px); opacity: 0; } 10% { opacity: 0.2; } 100% { transform: translateY(0); opacity: var(--paper-tooltip-opacity, 0.9); } } @keyframes keyFrameSlideDownOut { 0% { transform: translateY(0); opacity: var(--paper-tooltip-opacity, 0.9); } 10% { opacity: 0.2; } 100% { transform: translateY(-2000px); opacity: 0; } } .fade-in-animation { opacity: 0; animation-delay: var(--paper-tooltip-delay-in, 500ms); animation-name: keyFrameFadeInOpacity; animation-iteration-count: 1; animation-timing-function: ease-in; animation-duration: var(--paper-tooltip-duration-in, 500ms); animation-fill-mode: forwards; @apply --paper-tooltip-animation; } .fade-out-animation { opacity: var(--paper-tooltip-opacity, 0.9); animation-delay: var(--paper-tooltip-delay-out, 0ms); animation-name: keyFrameFadeOutOpacity; animation-iteration-count: 1; animation-timing-function: ease-in; animation-duration: var(--paper-tooltip-duration-out, 500ms); animation-fill-mode: forwards; @apply --paper-tooltip-animation; } .scale-up-animation { transform: scale(0); opacity: var(--paper-tooltip-opacity, 0.9); animation-delay: var(--paper-tooltip-delay-in, 500ms); animation-name: keyFrameScaleUp; animation-iteration-count: 1; animation-timing-function: ease-in; animation-duration: var(--paper-tooltip-duration-in, 500ms); animation-fill-mode: forwards; @apply --paper-tooltip-animation; } .scale-down-animation { transform: scale(1); opacity: var(--paper-tooltip-opacity, 0.9); animation-delay: var(--paper-tooltip-delay-out, 500ms); animation-name: keyFrameScaleDown; animation-iteration-count: 1; animation-timing-function: ease-in; animation-duration: var(--paper-tooltip-duration-out, 500ms); animation-fill-mode: forwards; @apply --paper-tooltip-animation; } .slide-down-animation { transform: translateY(-2000px); opacity: 0; animation-delay: var(--paper-tooltip-delay-out, 500ms); animation-name: keyFrameSlideDownIn; animation-iteration-count: 1; animation-timing-function: cubic-bezier(0.0, 0.0, 0.2, 1); animation-duration: var(--paper-tooltip-duration-out, 500ms); animation-fill-mode: forwards; @apply --paper-tooltip-animation; } .slide-down-animation-out { transform: translateY(0); opacity: var(--paper-tooltip-opacity, 0.9); animation-delay: var(--paper-tooltip-delay-out, 500ms); animation-name: keyFrameSlideDownOut; animation-iteration-count: 1; animation-timing-function: cubic-bezier(0.4, 0.0, 1, 1); animation-duration: var(--paper-tooltip-duration-out, 500ms); animation-fill-mode: forwards; @apply --paper-tooltip-animation; } .cancel-animation { animation-delay: -30s !important; } /* Thanks IE 10. */ .hidden { display: none !important; } </style> <div id="tooltip" class="hidden"> <slot></slot> </div> </template> </dom-module> <dom-module id="facets-dive-legend"> <template> <style> :host { @apply --paper-font-common-base; } .legend { border: 1px solid #a9a9a9; min-width: 200px; } .topbar { display: flex; justify-content: space-between; padding: 8px; background: #E6E6FA; } .expand-button { padding: 0; width: 20px; height: 20px; margin-left: 10px; } .legend-body { border-top: 1px solid #a9a9a9; padding: 8px; background: white; } .legend .layout-row { margin: 0; } .legend .layout-row span { margin: 2px 0 0 8px; } /** * Legend table shim. Polymer's dom-repeat feature has a known issue in * which it doesn't work with <tr> elements inside of a <table>. So * instead, we use CSS with classed divs to achieve table behavior. */ .legend-table { display: table; margin-left: 2px; } .legend-row { display: table-row; } .legend-cell { display: table-cell; } /** * Color legend. */ .legend .color { font-size: 14px; } .legend .color iron-icon { --iron-icon-width: 16px; --iron-icon-height: 16px; margin: 0 2px; } .legend .color iron-icon[fill="#ffffff"] { background: #dddddd; } .legend .color span { margin: 0; } .legend .special { font-style: italic; } .legend h2 { @apply --paper-font-subhead; color: #4f423e; font-weight: bold; line-height: 1; margin: 0; } .legend .color-by-field { color: #968e8c; display: block; font-size: 12.5px; font-weight: normal; margin: 2px 0 4px 20px; } </style> <template is="dom-if" if="[[_anyColor(colorBy, palette)]]"> <div class="legend"> <div class="topbar"> <div class="title">Legend</div> <paper-icon-button class="expand-button" on-click="_toggleOpened" icon="[[_getIcon(_opened)]]"> </paper-icon-button> </div> <iron-collapse id="collapse" opened="{{_opened}}"> <div class="legend-body"> <h2>Colors</h2> <span class="color-by-field"> by [[_breakUpAndTruncate(colorBy)]] <paper-tooltip position="top">[[colorBy]]</paper-tooltip> </span> <div class="legend-table"> <template is="dom-repeat" items="[[palette]]"> <div class="legend-row color"> <div class="legend-cell"> <iron-icon icon="av:fiber-manual-record" fill$="[[item.color]]" style$="fill:[[item.color]]"></iron-icon> </div> <div class="legend-cell"> <span class$="[[_specialClass(item.content.special)]]"> [[_breakUpAndTruncate(item.content.label)]] </span> <paper-tooltip position="top">[[item.content.label]]</paper-tooltip> </div> </div> </template> </div> </div> </iron-collapse> </div> </template> </template> </dom-module> <dom-module id="facets-dive"> <template> <style> /** * paper-input-container uses an element containing only for * spacing purposes. Aggressive vulcanizers sometimes remove this content. * This CSS rule forces the containing element to have the correct height * in either case. */ :host paper-input-container > .floated-label-placeholder { min-height: 20px; } :host { background: #ffffff; box-sizing: border-box; display: flex; flex-grow: 1; height: 100%; overflow: hidden; position: relative; width: 100%; } .fill { display: flex; flex-grow: 1; position: relative; } .main { flex-direction: column; } facets-dive-controls { border-bottom: 1px solid #d3d3d3; flex-grow: 0; flex-shrink: 0; height: 60px; } .row { display: flex; flex-direction: row; } facets-dive-legend { position: absolute; bottom: 14px; right: 24px; } .zoom-controls { bottom: 14px; box-sizing: border-box; left: 0; position: absolute; } .zoom-controls paper-button { background-color: #e7e7e7; clear: left; color: #2b2b2b; display: block; float: left; margin: 4px 8px; min-width: 0; padding: 8px; } facets-dive-info-card { background: #fff8f4; border-left: 1px solid #c6c6c6; box-sizing: border-box; flex-grow: 0; flex-shrink: 0; width: 240px; } </style> <div class="fill main"> <facets-dive-controls id="controls" atlas-url="[[atlasUrl]]" keys="[[_keys]]" stats="[[stats]]" vertical-facet="{{verticalFacet}}" vertical-buckets="{{verticalBuckets}}" vertical-bag-of-words="{{verticalBagOfWords}}" horizontal-facet="{{horizontalFacet}}" horizontal-buckets="{{horizontalBuckets}}" horizontal-bag-of-words="{{horizontalBagOfWords}}" position-mode="{{positionMode}}" vertical-position="{{verticalPosition}}" horizontal-position="{{horizontalPosition}}" color-by="{{colorBy}}" image-field-name="{{imageFieldName}}" palette="[[_palette]]" palette-choice="{{paletteChoice}}" grid-faceting-vertical-label-color="[[gridFacetingVerticalLabelColor]]" grid-faceting-horizontal-label-color="[[gridFacetingHorizontalLabelColor]]" item-positioning-vertical-label-color="[[itemPositioningVerticalLabelColor]]" item-positioning-horizontal-label-color="[[itemPositioningHorizontalLabelColor]]"></facets-dive-controls> <div class="fill row"> <div class="fill"> <facets-dive-vis id="vis" class="fill" data="[[data]]" filtered-data-indices="[[filteredDataIndices]]" atlas-url="[[atlasUrl]]" sprite-url="[[spriteUrl]]" cross-origin="[[crossOrigin]]" keys="{{_keys}}" stats="{{stats}}" sprite-image-width="[[spriteImageWidth]]" sprite-image-height="[[spriteImageHeight]]" vertical-facet="[[verticalFacet]]" vertical-buckets="[[verticalBuckets]]" vertical-bag-of-words="[[verticalBagOfWords]]" horizontal-facet="[[horizontalFacet]]" horizontal-buckets="[[horizontalBuckets]]" horizontal-bag-of-words="[[horizontalBagOfWords]]" position-mode="[[positionMode]]" vertical-position="[[verticalPosition]]" horizontal-position="[[horizontalPosition]]" color-by="{{colorBy}}" image-field-name="{{imageFieldName}}" palette="{{_palette}}" palette-choice="[[paletteChoice]]" grid-faceting-vertical-label-color="{{gridFacetingVerticalLabelColor}}" grid-faceting-horizontal-label-color="{{gridFacetingHorizontalLabelColor}}" item-positioning-vertical-label-color="{{itemPositioningVerticalLabelColor}}" item-positioning-horizontal-label-color="{{itemPositioningHorizontalLabelColor}}" fit-grid-aspect-ratio-to-viewport="[[fitGridAspectRatioToViewport]]" selected-data="{{selectedData}}" selected-indices="{{selectedIndices}}" compared-data="{{comparedData}}" compared-indices="{{comparedIndices}}" stable-colors="[[stableColors]]"></facets-dive-vis> <div class="zoom-controls"> <paper-button raised id="zoomInButton"> <iron-icon icon="icons:add"></iron-icon> </paper-button> <paper-button raised id="zoomOutButton"> <iron-icon icon="icons:remove"></iron-icon> </paper-button> <paper-button raised id="fitButton"> <iron-icon icon="icons:aspect-ratio"></iron-icon> </paper-button> </div> <facets-dive-legend id="legend" color-by="[[colorBy]]" palette="[[_palette]]"> </facets-dive-legend> </div> <template is="dom-if" if="[[!hideInfoCard]]"> <facets-dive-info-card id="infoCard" selected-data="[[selectedData]]" info-renderer="[[infoRenderer]]"> </facets-dive-info-card> </template> </div> </div> </template> </dom-module> <dom-module id="iron-list"> <template> <style> :host { display: block; } @media only screen and (-webkit-max-device-pixel-ratio: 1) { :host { will-change: transform; } } #items { @apply --iron-list-items-container; position: relative; } :host(:not([grid])) #items > ::slotted(*) { width: 100%; } #items > ::slotted(*) { box-sizing: border-box; margin: 0; position: absolute; top: 0; will-change: transform; } </style> <array-selector id="selector" items="{{items}}" selected="{{selectedItems}}" selected-item="{{selectedItem}}"></array-selector> <div id="items"> <slot></slot> </div> </template> </dom-module> <dom-module id="facets-overview-row-stats"> <template> <style> * { text-align: right; white-space: nowrap; overflow-x: hidden; text-overflow: ellipsis; } .data-error { color: red; font-weight: bold; } .data-weighted { font-style: italic; } .table-row { display: flex; margin-bottom: 4px; } .table-cell { min-width: 70px; max-width: 70px; padding-right: 4px; overflow: hidden; } .data-custom { min-width: 150px; max-width: 150px; white-space: pre;; } #legend-box { width: 6px; height: 16px; margin-left: 4px; } </style> <div class="table-row"> <div id="legend-box"></div> <template is="dom-repeat" items="[[_entries]]"> <div class$="[[item.cssClass]] table-cell" title="[[item.fullStr]]">[[item.str]]</div> </template> </div> </template> </dom-module> <dom-module id="facets-overview-row-legend"> <template> <style> .table-row { display: flex; background: rgba(61,140,207,0.1); border-left: solid 0.5px rgba(0,0,0,0.1); border-bottom: solid 0.5px rgba(0,0,0,0.1); } .table-cell { padding: 20px 4px 8px 0; min-width: 69px; max-width: 69px; text-align: right; font-size: 14px; font-weight: 300; border-right: solid 0.5px rgba(0,0,0,0.1); } .data-weighted { font-style: italic; } .data-custom { min-width: 150px; max-width: 150px; } .legend-space { width: 6px; height: 8px; margin-left: 4px; } </style> <div class="table-row"> <div class="legend-space"></div> <template is="dom-repeat" items="[[_entries]]"> <div class$="[[item.cssClass]] table-cell">[[item.str]]</div> </template> </div> </template> </dom-module> <dom-module id="facets-overview-chart"> <template> <style include="plottable-style"></style> <style> .plottable.chart-small { height: 46px; width: 250px; } .plottable.xaxis-small{ height: 30px; width: 250px; } .plottable.chart-big { height: 200px; width: 550px; } .plottable.xaxis-big { height: 50px; width: 550px; } #show_table_button { margin: 0 0 0 5px; padding: 0 3px; font-size: 7pt; background-color: #d3d3d3; } .dialog-row-entry { padding: 0 10px 0 0; } .table-header { border-bottom: 1px solid black; } .dialog-row, .dialog-header-row { display: flex; } .dialog-row.selected { border: 1px solid black } .dialog-row:hover { background-color: #D0D0D0; cursor: pointer; } .dialog-table { clear: left; } .label-cell { width: 90px; max-width: 90px; min-width: 90px; overflow-wrap: break-word; } .non-overflow-label-cell { width: 90px; max-width: 90px; min-width: 90px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .count-cell { width: 100px; max-width: 100px; min-width: 100px; overflow-wrap: break-word; } .weighted-cell { font-style: italic; } .data-list-small { height: 60px; } .data-list-big { height: 180px; width: 550px; } .hidechart { display: none; } .showchart { display: inline; } #tooltip { background-color: var(--paper-tooltip-background, #616161); opacity: 0; color: white; pointer-events:none; transition: opacity 0.3s; position: absolute; text-align:center; padding: 6px; border-radius: 2px; font-size: 12px; line-height: 1; margin-left: 50px; white-space: pre; top: 0px; } .toplevel { position: relative; text-align: left; padding-top: 4px; } </style> <div class="toplevel"> <template is="dom-if" if="[[_isStringChart(_chartType, chartSelection)]]"> <paper-button id="show_table_button" on-click="_toggleShowTable">[[_getShowTableButtonText(_showTable)]]</paper-button> </template> <div class$="[[_chartClass]]"> <div id="chart" class$="[[_chartSvgClass]]"></div> <div id="xaxis" class$="[[_xAxisSvgClass]]"></div> </div> <template is="dom-if" if="[[_showTable]]"> <div class="dialog-table"> <div class="dialog-header-row"> <div class="dialog-row-entry table-header label-cell">Value</div> <template is="dom-repeat" items="[[data]]" as="data"> <div class="dialog-row-entry table-header"> <div class="non-overflow-label-cell">[[data.name]]</div> </div> </template> </div> <iron-list items="[[_tableData]]" as="entry" class$="[[_tableDataClass]]"> <template> <div class$="[[_getEntryRowClass(entry, selection)]]" on-tap="_rowClick" data-value="[[_getEntryRowValue(entry)]]"> <div class="dialog-row-entry label-cell">[[entry.value]]</div> <template is="dom-repeat" items="[[entry.counts]]" as="count"> <div class$="[[_getCountCellClass(showWeighted)]]">[[count]]</div> </template> </div> </template> <iron-list> </iron-list></iron-list></div> </template> <div id="tooltip"></div> </div> </template> </dom-module> <dom-module id="facets-overview-table"> <template> <style> [hidden] { display: none !important; } .feature-name { font-weight: 500; max-width: 480px; word-wrap: break-word; margin: 0 0 4px 4px; } .table-name { font-weight: 500; word-wrap:break-word; padding: 4px 0 4px 8px; background: rgba(61,140,207,0.3); border: solid 0.5px rgba(0,0,0,0.1); } .feature-iron-list { overflow-x: hidden !important; height: 800px; } .chart-column { width: 280px; min-width: 280px; text-align: center; } .chart-column.header-cell { background: rgba(61,140,207,0.1); border-top: solid 0.5px rgba(0,0,0,0.1); border-bottom: solid 0.5px rgba(0,0,0,0.1); border-right: solid 0.5px rgba(0,0,0,0.1); padding-left: 8px; } .numeric-row { min-height: 80px; display: table-row; } .categorical-row { min-height: 98px; display: table-row; } .table-cell { display: table-cell; vertical-align: top; font-size: 14px; line-height: 1.2em; } .chart-column.table-cell { display: table-cell; vertical-align: top; padding: 10px 0 0 20px margin-right: 10px; } .header-cell { position: relative; min-height: 60px; } paper-checkbox { --paper-checkbox-size: 12px; --paper-checkbox-label-spacing: 2px; } .control-holder { position: absolute; bottom: 0; width: 100%; } .checkbox-holder { display: flex; padding-bottom: 2px; } .chart-checkbox { padding-right: 8px; font-size: 12px; } #weightbox { font-style: italic; } paper-dropdown-menu { display: block; width: 150px; --paper-input-container-label --paper-input-container-input: { font-size: 14px; } } .hidden { display: none; } </style> <div class$="[[_getTableWrapperClass(features)]]"> <div class="header-row"> <div class="header-cell table-cell"> <div class="table-name">[[_getTitle(numeric)]] Features ([[_getFeatureCountText(dataModel, numeric, features)]]) </div> <facets-overview-row-legend numeric="[[numeric]]" show-weighted="[[_showWeighted]]" has-custom="[[_hasCustomStats(dataModel)]]" data-model="[[dataModel]]"> </facets-overview-row-legend> </div> <div class="table-cell chart-column header-cell"> <div class="control-holder"> <paper-dropdown-menu label="Chart to show"> <paper-listbox class="dropdown-content" selected="{{_chartSelection}}" attr-for-selected="value" slot="dropdown-content"> <template is="dom-repeat" items="[[_chartSelectionTypes]]"> <paper-item value="[[item]]">[[item]]</paper-item> </template> </paper-listbox> </paper-dropdown-menu> <div class="checkbox-holder"> <paper-checkbox class="chart-checkbox" id="logbox" checked="{{_logScale}}">log</paper-checkbox> <paper-checkbox class="chart-checkbox" id="expandbox" checked="{{_expandCharts}}">expand</paper-checkbox> <template is="dom-if" if="[[_hasWeightedHistogram(features)]]"> <paper-checkbox class="chart-checkbox" id="weightbox" checked="{{_showWeighted}}">weighted</paper-checkbox> </template> <template is="dom-if" if="[[_hasMultipleDatasets(dataModel)]]"> <paper-checkbox class="chart-checkbox" id="percentbox" checked="{{_showPercentage}}" disabled="[[_chartSelectionHasQuantiles(_chartSelection)]]">percentages</paper-checkbox> </template> </div> </div> </div> </div> <iron-list items="[[features]]" as="feature" class="feature-iron-list"> <template> <div class$="[[_getTableRowClass(numeric)]]"> <div class="table-cell"> <div class="feature-name">[[_getFeatureName(feature)]]</div> <template is="dom-repeat" items="[[_getDatasets(dataModel)]]" as="dataset" index-as="datasetIndex"> <div> <facets-overview-row-stats stats="[[_getStats(dataModel, dataset, feature)]]" custom-stats="[[_getAllCustomStats(dataModel, feature)]]" show-weighted="[[_showWeighted]]" has-custom="[[_hasCustomStats(dataModel)]]" data-model="[[dataModel]]" dataset-index="[[datasetIndex]]" compare-mode="[[compareMode]]"> </facets-overview-row-stats> </div> </template> </div> <div class$="[[_getChartClass(_expandCharts)]]"> <facets-overview-chart data="[[_getChartData(dataModel, feature)]]" data-model="[[dataModel]]" feature="[[_getFeatureName(feature)]]" selection="{{featureSliceSelection}}" log-scale="[[_logScale]]" show-weighted="[[_showWeighted]]" show-percentage="[[_showPercentage]]" chart-selection="[[_chartSelection]]" expand-chart="[[_expandCharts]]"> </facets-overview-chart> </div> </div> </template> </iron-list> </div> </template> </dom-module> <dom-module id="facets-overview"> <template> <style> :host { @apply --paper-font-common-base font-size: 10pt; } .controls { background: rgba(234,234,234,0.2); border-bottom: solid 0.5px rgba(0,0,0,0.2); display: flex; height: 60px; padding-left: 20px; } .feature-checkboxes { background: rgba(234,234,234,0.2); border-bottom: solid 0.5px rgba(0,0,0,0.2); display: flex; flex-wrap: wrap; padding: 8px 0 8px 20px; } .feature-checkbox { display: flex; padding: 0 0 0 16px; } paper-checkbox { font-size: 14px; } .input-control { --paper-input-container-label --paper-input-container-input: { font-size: 14px; }; } .features-text { line-height: 1; padding: 1px 0 0 0; font-size: 14px; } .left-dropdown { padding: 0 10px 0 0; } .middle-checkbox { margin-top: 30px; padding: 0 10px; } .right-input { width: 300px; padding: 0 10px; } .feature-iron-list { max-height: 800px; overflow: auto; } .feature-column { width: 200px; max-width: 200px; overflow-wrap: break-word; text-align: left; } .legend-column { width: 120px; } .stats-column { width: 150px; max-width: 150px; overflow-wrap: break-word; text-align: right; } .chart-column { width: 580px; text-align: center; } .table-row { display: table-row; } .table-cell { display: table-cell; vertical-align: top; padding: 10px 5px 0 } .chart-column.table-cell { display: table-cell; vertical-align: top; padding: 10px 0 0 20px } .header-row { clear: both; } .header-row > .table-cell { font-size: 14pt; padding: 0 5px 0; border-bottom: 1px solid black; } .stats-header-text { text-align: right; } .chart-header-text { text-align: center; } .table-holder { display: flex; flex-wrap: wrap; overflow-x: auto; margin-left: 30px; } .table-left { margin: 20px 20px 0 0; } .table-right { margin: 20px 0 0 0; } .hidden { display: none; } .legend-holder { display: flex; margin: 8px 0 0 38px; } .legend-box { width: 8px; height: 8px; margin-top: 6px; } .legend-row { display: flex; } .legend-name { margin: 3px 10px 0 5px; font-size: 12px; } /* Give min height to placeholder in paper-input to get around colab embedding * alignment issue. */ :host paper-input-container > .floated-label-placeholder { min-height: 20px; } </style> <template is="dom-if" if="[[_dataModel]]"> <div class$="[[_getControlsWrapperClass(_dataModel)]]"> <div class="controls"> <paper-dropdown-menu class="left-dropdown input-control" label="Sort by"> <paper-listbox class="dropdown-content" selected="{{_sortOrder}}" slot="dropdown-content"> <template is="dom-repeat" items="[[_sortOptions]]" as="option"> <paper-item>[[option.name]]</paper-item> </template> </paper-listbox> </paper-dropdown-menu> <paper-checkbox noink class="middle-checkbox" checked="{{_reverseOrder}}"> Reverse order </paper-checkbox> <paper-input class="right-input input-control" label="Feature search (regex enabled)" value="{{searchString}}" auto-validate="true" validator="filter-validator"> <facets-overview-filter-validator validator-name="filter-validator"> </facets-overview-filter-validator> </paper-input> </div> <div class="feature-checkboxes"> <div class="features-text">Features: </div> <template is="dom-repeat" items="[[_featureSpecArray]]" as="specAndList"> <div> <paper-checkbox noink checked="true" class="feature-checkbox" id="[[_getSpecCheckboxId(specAndList)]]" on-change="_featureSpecCheck"> [[_getSpecCheckboxText(specAndList)]] </paper-checkbox> </div> </template> </div> </div> <template is="dom-if" if="[[_hasMultipleDatasets(_dataModel)]]"> <div class="legend-holder"> <template is="dom-repeat" items="[[_getDatasets(_dataModel)]]" as="dataset" index-as="datasetIndex"> <div class="legend-row"> <div class="legend-box" style="[[_getLegendBoxStyle(_dataModel, datasetIndex)]]"></div> <div class="legend-name">[[_getDatasetName(_dataModel, datasetIndex)]]</div> </div> </template> </div> </template> <div class="table-holder"> <facets-overview-table features="[[_getNumericFeatureListItems(_dataModel, searchString, _sortOrder, _reverseOrder, _featureSpecCheckboxes)]]" data-model="[[_dataModel]]" feature-slice-selection="{{featureSliceSelection}}" numeric="true" class="table-left" compare-mode="[[compareMode]]"> </facets-overview-table> <facets-overview-table features="[[_getNonNumericFeatureListItems(_dataModel, searchString, _sortOrder, _reverseOrder, _featureSpecCheckboxes)]]" data-model="[[_dataModel]]" feature-slice-selection="{{featureSliceSelection}}" class="table-right" compare-mode="[[compareMode]]"> </facets-overview-table> </div> </template> </template> </dom-module> <dom-module id="wit-dashboard"> <template> <style id="linter-paper-button-style"> /** * This style preserves the styling previous to * https://github.com/PolymerElements/paper-button/pull/115 * This change can break the layout of paper-button content. * Remove this style to apply the change, more details at b/70528356. */ paper-button { display: inline-block; text-align: center; font-family: inherit; } </style> <style> :host { font-family: 'Roboto', 'Noto', sans-serif; --paper-tab-ink: var(--tb-orange-dark); --wit-color-gray300: #dadce0; } [hidden] { display: none !important; } #classification { width: 40%; } .example-holder { width: 100%; } .inference-section-holder { display: flex; margin-top: 6px; margin-right: 6px; } .inference-section { width: 100%; border: 1px solid var(--wit-color-gray300); } .inference-viewer { max-height: 35%; flex-grow: 1; } .compare-inference-viewer { border-left: 1px solid var(--wit-color-gray300); } .tf-option-selector-0 .content-wrapper.tf-option-selector > * { width: 40%; } paper-progress { --paper-progress-active-color: var(--tb-orange-strong); } #progress { position: absolute; top: 60px; left: 0; width: 100%; } .pdplot-progress { width: 100%; } .noexamples { position: absolute; top: 75px; left: 30px; } .center { position: relative; } .info-text { font-size: 14px; color: #3c4043; letter-spacing: 0.25px; line-height: 20px; margin: 12px auto; } .pd-info-text { font-size: 18px; color: #3c4043; line-height: 24px; padding-top: 12px; padding-right: 4px; padding-left: 12px; } .pd-no-features-text { font-size: 18px; color: #3c4043; padding: 12px 48px; } .accept-button-holder { display: flex; flex-direction: row-reverse; } .settings-button { margin-top: 4px; } .datapoint-right-controls-holder .control { flex-shrink: 0; } .button { font-size: 13px; margin: 10px 0 0 0; background-color: var(--tb-orange-strong); color: white; } .button[disabled] { background-color: #ccc; } .input-and-tooltip { display: flex; } .label-vocab-path-input { flex-grow: 1; } .threshold-dropdown { display: block; width: 150px; min-width: 150px; padding-right: 16px; --paper-input-container-input: { font-size: 14px; color: #3c4043; } } .short-dropdown { display: inline-block; width: 100px; min-width: 50px; padding-right: 5px; --paper-input-container-input: { font-size: 14px; color: #3c4043; } } .slider-label { margin-top: 8px; } .facet-label { --paper-input-container-underline: { display: none; } --paper-input-container-input: { font-weight: 500; } } .slider { width: 280px; --paper-slider-input: { width: 80px; } } .slider-model-one { --paper-slider-knob-color: #12b5ce; --paper-slider-active-color: #12b5ce; } .slider-model-two { --paper-slider-knob-color: #fa7817; --paper-slider-active-color: #fa7817; } paper-dialog.inference-settings { padding: 20px; width: 40%; max-width: 40%; overflow-y: auto; border-radius: 10px; } .dashboard-layout { display: flex; height: 100%; background-color: white; } .center { width: 60%; } .side-holder { position: relative; width: 40%; display: flex; } .side-content { padding-left: 5px; width: calc(100% - 10px); display: flex; flex-direction: column; } .side-tabs { display: flex; height: calc(100% - 50px); } .datapoint-tab { display: flex; width: 100%; overflow: auto; } .config-tab { width: 100%; display: flex; } .config-side-content { padding-left: 5px; width: 30%; overflow-y: auto; border-right: 1px solid var(--wit-color-gray300); } .config-main-content { width: 70%; display: flex; flex-direction: column; background: #f8f9fa; } .stats-tab { width: 100%; display: flex; overflow: auto; } .pd-tab { width: 100%; padding: 5px 10px; } .pd-plots-header { height: 52px; min-height: 52px; max-height: 52px; border-bottom: solid 2px var(--wit-color-gray300); display: flex; justify-content: space-between; } .pdplots-holder { flex-grow: 1; overflow-y: overlay; background: #f8f9fa; } .pd-range-hyphen { padding-right: 6px; padding-top: 8px; } .pd-range-control { border-bottom: solid 1px #fcc934; border-top: none; border-left: none; border-right: none; height: 36px; width: 104px; margin-right: 6px; } #overview { max-height: 100%; height: 100%; } .inference-header.heading { background: #e4f7fb; } .right-side { position: absolute; right: 0; top: 0; } .right-side-performance-tab { margin: 4px; } wit-confusion-matrix { display: block; } .datapoint-controls-holder.datapoint-control-buttons-holder { padding-left: 2px; } .datapoint-controls-holder.datapoint-control-search-holder { padding-left: 10px; } .datapoint-controls-holder { border-bottom: 1px solid var(--wit-color-gray300); display: flex; flex-grow: 0; flex-shrink: 0; justify-content: space-between; margin-left: 1px; } .datapoint-left-controls-holder { display: flex; flex-wrap: wrap; } .datapoint-right-controls-holder { display: flex; flex-direction: row-reverse; overflow: hidden; } .tf-category-pane { flex-grow: 1; } .tf-category-pane-content { flex-wrap: wrap; flex-grow: 1; padding: 12px; border: 1px solid var(--wit-color-gray300); border-top: none; border-bottom-left-radius: 2px; border-bottom-right-radius: 2px; background: white; } :host vz-line-chart2 { margin: 12px 12px 12px 24px; height: 180px; width: 300px; display: inline-block; } :host vz-bar-chart { margin: 12px 12px 12px 24px; height: 240px; width: 450px; display: inline-block; } .pd-input-container { display: block; flex-grow: 0; padding: 12px 48px 24px 24px; background: #fef7e0; border: solid 1px #fde293; } .style-input { width: 50px; text-align: right; background: white; } .feature-container-holder { position: absolute; top: 0; bottom: 0; width: 100%; height: 100%; overflow: auto; background: white; display: none; flex-direction: column; } .datapoint-control-filter-input { border-radius: 2px; max-width: 60%; --paper-input-container: { padding: 4px 6px 2px 4px; } --paper-input-container-input: { font-size: 14px; color: #3c4043; } --paper-input-container-label: { font-size: 14px; color: #80868b; } } .datapoint-control-filter-input iron-icon { color: #9ba0a6; } .feature-search-input { padding-top: 3px; flex-grow: 1; max-width: 150px; } .num-buckets-input { width: 45px; margin-right: 8px; } .control-button { background-color: white; border: 1px solid var(--wit-color-gray300); color: var(--tb-orange-dark); font-size: 14px; font-weight: 400; padding: 8px 12px; text-transform: none; margin: 5px; } .control-button[disabled] { color: #5f6368; background-color: #f4f4f4; } .main-button { background-color: var(--tb-orange-dark); border: 1px solid var(--tb-orange-dark); color: white; font-size: 14px; font-weight: 400; padding: 8px 12px; text-transform: none; margin: 5px; } .main-button[disabled] { background-color: lightgray; border: 1px solid lightgray; color: gray; } .optimize-threshold-button { margin: 5px 0; width: 150px; min-width: 150px; margin-right: 16px; } .close-partial-deps-button { margin: 10px; } paper-tabs { flex-grow: 1; width: 100%; height: 100%; --paper-tabs-selection-bar-color: var(--tb-orange-dark); } paper-tab { font-size: 14px; font-weight: 400; padding: 0 24px; letter-spacing: 0.1px; } paper-tab:not(.iron-selected) { color: #3c4043; } paper-tab.iron-selected { color: #202124; font-weight: 500; } .perfs-holder { display: flex; width: 100%; flex-wrap: wrap; margin: 4px; position: relative; padding-left: 28px; } .perf-holder { margin: 8px; position: relative; } .regression-attr-holder { padding-left: 48px; position: relative; } .perf-curve-x-label { position: absolute; bottom: 2px; left: 138px; font-size: 12px; color: #5f6368; padding: 0px; width: 120px; text-align: center; } .perf-curve-y-label { position: absolute; left: 44px; bottom: 54px; transform: rotate(270deg); transform-origin: left bottom; font-size: 12px; color: #5f6368; width: 120px; text-align: center; } .flex { display: flex; } .space-between { justify-content: space-between; } .flex-wrap { display: flex; flex-wrap: wrap; } .optimize-text { margin: 5px 0; color: grey; font-size: 14px; } .threshold-cost-input { width: 150px; min-width: 150px; margin-right: 16px; --paper-input-container-input: { font-size: 14px; color: #3c4043; } --paper-input-container-label: { font-size: 14px; color: #80868b; } } .bold { font-weight: 500; } .indent { margin-left: 10px; } .feature-breakdown { margin-left: 12px; } .optimize-selection-button { margin-left: 0; margin-bottom: 5px; } .reg-table-category { text-align: left; } .reg-table-value { text-align: right; } .subfeature-table { margin-left: 10px; } .counterfactual-button-intro { padding: 7px 0 0 10px; } .main-vertical { width: 100%; } .main-bottom-bar { height: 52px; min-height: 52px; flex-grow: 0; display: flex; /* box-shadow: 0 2px 5px grey; margin-bottom: 3px; */ border-bottom: solid 1px #dadce0; justify-content: space-between; } .main-content { height: 100%; } .dist-switch { display: flex; margin-top: 0; } .distance-vis-dropdown { margin-top: 0; } #distancedialog { width: 30%; } #distancedialog .buttons { color: #f57c00; } paper-radio-button { --paper-radio-button-label: { font-size: 14px; color: #3c4043; } --paper-radio-button-unchecked-color: #3c4043; --paper-radio-button-unchecked-ink-color: #3c4043; --paper-radio-button-checked-color: #3c4043; --paper-radio-button-checked-ink-color: #3c4043; } paper-icon-button { color: #5f6368; } paper-icon-button[disabled] { color: #9aa0a6; } .resizer { display: table; height: 100%; width: 8px; border-left: 1px solid var(--wit-color-gray300); border-right: 1px solid var(--wit-color-gray300); cursor: pointer; } .example-status { font-size: 12px; color: #5f6368; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding-top: 20px; } .example-id-label { padding: 9px 5px 9px 0; } .example-id-input { width: 70px; padding-top: 3px; } .heading-and-card { border: 1px solid lightgray; margin-right: 5px; margin-top: 5px; padding-top: 1px; } .editor-heading-and-card { flex: 1; overflow-y: overlay; } .heading { color: #5f6368; position: relative; padding: 10px 8px; background-color: #fef7e0; border-bottom: 1px solid var(--wit-color-gray300); border-top: none; border-left: none; border-right: none; font-size: 14px; font-weight: 500; cursor: pointer; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); width: 100%; text-align: left; } .card { padding: 0 10px 5px; } .no-padding-card { padding: 0; } .tooltip { --paper-tooltip: { font-size: 16px; } --paper-tooltip-delay-out: 2000ms; } .comment-icon { width: 30px; height: 30px; min-width: 30px; min-height: 30px; margin-top: 10px; color: var(--tb-orange-dark); } .arrow-icon { width: 50px; height: 50px; min-width: 50px; min-height: 50px; color: var(--tb-orange-dark); } .pd-arrow-icon { width: 40px; height: 40px; min-width: 40px; min-height: 40px; margin-top: 5px; color: grey; } .pd-toggle { margin: 0 8px 0 20px; } .pd-entry-container { display: flex; flex-direction: row-reverse; justify-content: space-between; flex-grow: 1; } .info-icon { width: 20px; height: 20px; min-width: 20px; min-height: 20px; margin-top: 10px; color: grey; } .info-icon.cf-info-icon { margin-top: 12px; } .info-icon.thresh-info-icon { margin-top: -3px; vertical-align: middle; } .info-icon.pd-info-icon { margin-top: 15px; } .info-icon.threshold-info-icon { margin-top: 0; margin-bottom: 10px; margin-left: 5px; } .info-icon.mean-attrs-info-icon { margin-top: -1px; margin-bottom: 10px; margin-left: 5px; } .info-icon.performance-info-icon { margin-top: 18px; margin-bottom: 10px; margin-left: 5px; } .no-padding { padding: 0; } .resize-icon { display: table-cell; vertical-align: middle; color: grey; width: 10px; height: 10px; min-width: 10px; min-height: 10px; } .help-text { color: #5f6368; font-size: 10px; max-width: 200px; } .help-title { color: #007b7c; font-size: 11px; font-weight: 500; text-transform: uppercase; } .help-title-margin { margin-top: 14px; } .help-title-margin-button { margin-top: 4px; } .help-title-margin-title { margin-top: 7px; } .dialog-link { color: #5f6368; font-size: 10px; font-style: italic; text-decoration: underline; cursor: pointer; } .perf-curve-text { color: #3c4043; font-size: 14px; margin-bottom: -10px; } .conf-text { margin-bottom: 8px; color: #3c4043; font-size: 14px; } .dialog-text { font-style: normal; text-align: left; } .dialog-title { font-size: 14px; font-weight: 500; } .title-width { width: 250px; padding-right: 16px; } .datapoint-info-holder { margin: 24px auto; max-width: 380px; padding: 24px; } .onboarding-header { color: #202124; font-size: 22px; margin-bottom: 28px; } .onboarding-text { color: #3c4043; font-size: 14px; margin-bottom: 20px; } .control-info-header { color: #3c4043; font-size: 14px; font-weight: 500; margin-top: 10px; margin-bottom: 15px; } .control-info-text { color: #3c4043; font-size: 14px; margin-bottom: 15px; max-width: 460px; } .button-prefix-label { margin: 12px 0 0 12px; color: grey; font-size: 14px; } .border-right { border-right: 1px solid var(--wit-color-gray300); } paper-dialog { color: #3c4043; border-radius: 10px; max-width: 600px; } .main-button.run-button { padding: 5px; flex-grow: 1; } .doc-image { width: 128px; height: 96px; border: 1px solid var(--wit-color-gray300); } .control-divider { margin: 5px 0 5px 5px; width: 5px; border-left: 1px solid var(--wit-color-gray300); } .optimization-radio { display: block; padding: 7px; } .optimization-radio-group { display: flex; flex-grow: 1; flex-direction: column; } .infer-info { margin-left: 30px; } .scroll-x { overflow-x: auto; } .perf-table-clickable { cursor: pointer; } .perf-table-title-row { background: white; width: 100%; display: flex; border-bottom: 1px solid var(--wit-color-gray300); min-height: 52px; justify-content: space-between; } .perf-table-title { color: #3c4043; font-size: 18px; margin-left: 14px; margin-top: 16px; } .perf-table-sort-menu { margin-top: -10px; } .perf-table-header { background: white; width: 100%; font-weight: 500; color: #80868b; font-size: 14px; line-height: 16px; letter-spacing: 0.25; display: flex; border-bottom: 1px solid var(--wit-color-gray300); min-height: min-content; padding-top: 12px; padding-bottom: 4px; } .perf-table-entries-holder { overflow-y: overlay; flex-grow: 1; } .perf-table-entry { background: white; color: #3c4043; font-size: 14px; } .perf-table-entry.perf-table-entry-trivial { background: #f4f4f4; } .perf-table-entry-expanded { display: flex; flex-wrap: wrap; width: 100%; border-left: 1px solid var(--wit-color-gray300); border-bottom: 1px solid var(--wit-color-gray300); border-right: 1px solid var(--wit-color-gray300); background: white; } .perf-table-row { width: 100%; display: flex; background: white; position: relative; border-bottom: solid 1px var(--wit-color-gray300); } .perf-table-row-expanded { width: 100%; display: flex; border-top: 1px solid var(--wit-color-gray300); border-radius: 2px; background: white; position: relative; padding-bottom: 8px; } .regression-perf-table-entry { background: white; color: #3c4043; font-size: 14px; border-bottom: solid 1px var(--wit-color-gray300); } .regression-perf-table-row { width: 100%; display: flex; background: white; position: relative; } .feature-name-text { font-weight: 500; font-size: 14px; } .perf-table-text-entry { height: 40px; padding-top: 16px; } .perf-table-num-entry { height: 40px; padding-top: 16px; text-align: right; } .perf-table-arrow { min-width: 40px; width: 40px; margin-top: 8px; } .perf-table-val { width: 30%; } .perf-table-count { width: 10%; margin-right: 20px; text-align: right; } .perf-table-model { min-width: 100px; width: 100px; } .perf-table-model-single { display: none; } .perf-table-threshold { width: 280px; min-width: 280px; text-align: center; } .perf-table-error { width: 15%; text-align: right; } .perf-table-sq-error { width: 15%; text-align: right; margin-right: 20px; } .perf-table-fp { width: 15%; text-align: right; } .perf-table-fn { width: 15%; text-align: right; } .perf-table-acc { width: 15%; text-align: right; margin-right: 20px; } .perf-table-f1 { width: 10%; text-align: right; margin-right: 20px; } .perf-button { margin-top: 10px; } .perf-sort-box { display: flex; flex-direction: row-reverse; } .counterfactual-toggle { margin: 4px 4px 4px 6px; padding-top: 4px; --paper-toggle-button-checked-bar-color: #81c995; } .counterfactual-delta { display: flex; margin-right: 6px; } .counterfactual-delta label { padding-top: 12px; margin-left: 8px; margin-right: 4px; font-size: 14px; color: rgb(60, 64, 67); } .counterfactual-delta paper-slider { height: 40px; --paper-slider-active-color: #81c995; --paper-slider-knob-color: #81c995; --paper-slider-input-container-input: { font-size: 14px; color: rgb(60, 64, 67); } } .datapoint-button { color: #202124; background: #fde293; } .infer-button { color: white; background: #128eaf; } .flex-grow { flex-grow: 1; } .flex-row-reverse { flex-direction: row-reverse; } .threshold-info-holder { margin-top: -2px; } .tabs { padding-left: 32px; text-transform: none; } .rotated-icon { transform: rotate(270deg); padding-right: 0; } .normal-icon { padding-top: 0; } .datapoint-control-button { width: 28px; height: 28px; padding: 4px; margin-top: 4px; } .pd-holder { position: relative; width: 300px; } .pd-y-label { color: #5f6368; font-size: 12px; left: -20px; padding: 0px; position: absolute; top: 80px; transform: rotate(270deg); } .pd-x-label { bottom: 0; color: #5f6368; font-size: 12px; overflow: hidden; padding: 0 0 0 40px; position: absolute; text-align: center; text-overflow: ellipsis; width: 100%; white-space: nowrap; } paper-toggle-button { font-size: 14px; --paper-toggle-button-checked-button-color: white; --paper-toggle-button-label-color: #3c4043; } .button-and-progress-holder { margin-top: 4px; position: relative; } .sort-progress { position: absolute; top: 8px; left: 7px; width: 120px; --paper-progress-active-color: var(--tb-orange-strong); } #attributionLegend { width: 160px; height: 32px; margin-top: 8px; margin-right: 8px; } </style> <tf-plugin-dialog id="initialDialog"></tf-plugin-dialog> <paper-dialog id="inferencesettings" class="inference-settings" opened="[[!local]]"> <wit-inference-panel inference-address="{{inferenceAddress}}" model-name="{{modelName}}" examples-path="{{examplesPath}}" model-type="{{modelType}}" model-version="{{modelVersion}}" model-signature="{{modelSignature}}" max-examples="{{maxExamples}}" label-vocab-path="{{labelVocabPath}}" multi-class="{{multiClass}}" sampling-odds="{{samplingOdds}}" sequence-examples="{{sequenceExamples}}" max-classes-to-display="{{maxInferenceEntriesPerRun}}" use-predict-api="{{usePredictApi}}" predict-output-tensor="{{predictOutputTensor}}" predict-input-tensor="{{predictInputTensor}}"> </wit-inference-panel> <div class="accept-button-holder"> <paper-button on-tap="getExamplesAndCloseSettings_" class="main-button" disabled$="[[shouldDisableGetExamplesButton_(examplesPath, maxExamples)]]"> Accept </paper-button> <paper-button dialog-dismiss class="control-button">Cancel</paper-button> </div> </paper-dialog> <paper-dialog id="deletedialog"> <p>Are you sure you want to delete the selected datapoint? <div class="buttons"> <paper-button dialog-dismiss class="control-button">Cancel</paper-button> <paper-button dialog-confirm autofocus on-tap="deleteDatapoint_" class="main-button">Delete</paper-button> </div> </paper-dialog> <paper-dialog id="distancedialog"> <h2>Create similarity feature</h2> <paper-input value="{{facetDistFeatureName}}" label="Metric name" class="datapoint-control-filter-input"> </paper-input> <div class="radiolabel">Distance type</div> <paper-radio-group class="dist-switch" selected="{{facetDistSwitch}}"> <paper-radio-button class="dist-radio" name="L1" disabled$="[[customDistanceFunctionSet]]">L1</paper-radio-button> <paper-radio-button class="dist-radio" name="L2" disabled$="[[customDistanceFunctionSet]]">L2</paper-radio-button> <paper-radio-button class="dist-radio" name="Custom" hidden$="[[!customDistanceFunctionSet]]">User-specified</paper-radio-button> </paper-radio-group> <template is="dom-if" if="[[!shouldHideCounterfactualValueSelector_(attributions, customDistanceFunctionSet)]]"> <div class="radiolabel">Distance based on</div> <paper-radio-group class="dist-switch" selected="{{distanceValueSwitch}}"> <paper-radio-button class="dist-radio" name="values">Feature values</paper-radio-button> <paper-radio-button class="dist-radio" name="attribution">Attributions</paper-radio-button> </paper-radio-group> </template> <paper-dropdown-menu label="Apply to datapoints visualization" class="threshold-dropdown distance-vis-dropdown"> <paper-listbox slot="dropdown-content" selected="{{facetDistSetting}}" attr-for-selected="name"> <paper-item name="colorBy">Color By</paper-item> <paper-item name="horizontalFacet">X-Axis Binning</paper-item> <paper-item name="verticalFacet">Y-Axis Binning</paper-item> <paper-item name="horizontalPosition">X-Axis Scatter</paper-item> <paper-item name="verticalPosition">Y-Axis Scatter</paper-item> </paper-listbox> </paper-dropdown-menu> <div class="buttons"> <paper-button dialog-dismiss class="control-button">Cancel</paper-button> <paper-button dialog-confirm autofocus on-tap="requestAddDistanceMetric" class="main-button">Apply</paper-button> </div> </paper-dialog> <div class="dashboard-layout"> <div class="main-vertical"> <div class="main-content"> <div class="main-bottom-bar"> <div class="datapoint-left-controls-holder"> <paper-tabs class="tabs" noink selected="{{sideTabSelected}}"> <paper-tab>Datapoint editor</paper-tab> <paper-tab>[[getPerformanceTabTitle(modelType, multiClass)]]</paper-tab> <paper-tab>Features</paper-tab> </paper-tabs> </div> <div class="datapoint-right-controls-holder"> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn" rel="noreferrer"> <paper-icon-button icon="help-outline" class="settings-button" title="What-If Tool documentation"></paper-icon-button> </a> <paper-icon-button icon="settings" on-tap="settingsClicked_" class="settings-button control" title="What-If Tool settings" disabled$="[[local]]"></paper-icon-button> <div class="example-status">[[exampleStatusStr]]</div> </div> </div> <iron-pages class="side-tabs" selected="{{sideTabSelected}}"> <div class="datapoint-tab"> <div class="side-holder" id="side"> <div class="side-content"> <div class="heading-and-card"> <button class="heading" on-tap="toggleContextTools"> Visualize <div class="right-side right-side-performance-tab"> <iron-icon icon="[[getExpandCollapseIcon(openedContextTools)]]" class="expand-collapse-button"></iron-icon> </div> </button> <iron-collapse class="no-padding-card" id="collapsecontexttools" opened="{{openedContextTools}}"> <paper-radio-group selected="{{visMode}}"> <paper-radio-button name="dive">Datapoints</paper-radio-button> <paper-radio-button name="pd">Partial dependence plots</paper-radio-button> </paper-radio-group> <div class="flex-wrap"> <div title="Select a datapoint to use this feature"> <paper-toggle-button class="counterfactual-toggle" checked="{{showNearestCounterfactual}}" disabled$="[[!hasSelected(selectedExampleAndInference)]]"> Nearest counterfactual </paper-toggle-button> </div> <paper-icon-button icon="info-outline" class="info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="auto"> <div class="dialog-title"> Nearest counterfactual (neighbor of different classification) </div> <div> Compares the selected datapoint with its nearest neighbor from a different classification using L1 or L2 distance. If a custom distance function is set, it uses that function instead. </div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/tutorials/counterfactual" rel="noreferrer"> Explore a tutorial on using counterfactuals. </a> </div> </paper-dialog> <paper-radio-group selected="{{nearestCounterfactualDist}}"> <paper-radio-button name="L1" disabled$="[[customDistanceFunctionSet]]">L1</paper-radio-button> <paper-radio-button name="L2" disabled$="[[customDistanceFunctionSet]]">L2</paper-radio-button> <paper-radio-button name="Custom" hidden$="[[!customDistanceFunctionSet]]">Custom distance</paper-radio-button> </paper-radio-group> <paper-dropdown-menu label="Calculate using:" no-label-float class="short-dropdown" hidden$="[[shouldHideCounterfactualValueSelector_(attributions, customDistanceFunctionSet)]]"> <paper-listbox class="dropdown-content" slot="dropdown-content" selected="{{nearestCounterfactualValueIndex}}"> <paper-item>Feature values</paper-item> <paper-item>Attributions</paper-item> </paper-listbox> </paper-dropdown-menu> <template is="dom-if" if="[[isRegression_(modelType)]]"> <div title="Minimum distance in inferred value to consider counterfactual" class="counterfactual-delta"> <label>Threshold</label> <paper-icon-button icon="info-outline" class="info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="auto"> <div class="dialog-title"> Counterfactual threshold </div> <div> For regression, a neighbor point is considered as a different classification if the difference in inferred value is equal or greater than the selected threshold.<br> The threshold is initialized to the standard deviation of the inferred values. </div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/" rel="noreferrer"> Explore tutorials on understanding model performance. </a> </div> </paper-dialog> <paper-slider editable value="{{minCounterfactualValueDist}}" max="[[maxCounterfactualValueDist]]" disabled$="[[!showNearestCounterfactual]]"></paper-slider> </div> </template> <paper-dropdown-menu label="Model:" no-label-float class="short-dropdown" hidden$="[[shouldHideModelSelector_(parsedModelNames)]]"> <paper-listbox class="dropdown-content" slot="dropdown-content" selected="{{nearestCounterfactualModelIndex}}"> <template is="dom-repeat" items="[[parsedModelNames]]"> <paper-item>[[getLabeledModelName_(item)]]</paper-item> </template> </paper-listbox> </paper-dropdown-menu> </div> <div title="Select a datapoint to use this feature"> <div class="flex"> <paper-button class="control-button datapoint-button" disabled$="[[!hasSelected(selectedExampleAndInference)]]" on-tap="showDistanceClicked_" alt="Create similarity feature" title="Creates a feature that shows similarity to selected datapoint"> Create similarity feature </paper-button> <paper-icon-button icon="info-outline" class="info-icon cf-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="auto"> <div class="dialog-title"> Create similarity feature </div> <div> Calculates the distance between the selected datapoint and all other datapoint. Creates a new feature to visualize in the datapoints visualization. </div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/tutorials/counterfactual" rel="noreferrer"> Explore a tutorial on using similarity. </a> </div> </paper-dialog> </div> </div> </iron-collapse> </div> <div class="heading-and-card editor-heading-and-card"> <button class="heading"> [[getDatapointEditorTitle(selectedExampleNum, comparedIndices)]] </button> <div class="no-padding-card"> <div class="datapoint-controls-holder datapoint-control-buttons-holder"> <div class="datapoint-left-controls-holder"> <paper-icon-button class="datapoint-control-button" icon="chevron-left" disabled$="[[!hasSelected(selectedExampleAndInference)]]" on-tap="selectPrevDatapoint_" alt="select previous datapoint" title="Select previous datapoint"> </paper-icon-button> <paper-icon-button class="datapoint-control-button" icon="chevron-right" disabled$="[[!hasSelected(selectedExampleAndInference)]]" on-tap="selectNextDatapoint_" alt="select next datapoint" title="Select next datapoint"> </paper-icon-button> <div title="Edit a datapoint to use this feature"> <paper-icon-button class="datapoint-control-button" icon="history" on-tap="resetDatapoint_" alt="undo changes" title="Undo changes" disabled$="[[shouldDisableReset_(selectedExampleAndInference.changed)]]"> </paper-icon-button> </div> <div title="Select a datapoint to use this feature"> <paper-icon-button class="datapoint-control-button" icon="content-copy" disabled$="[[!hasSelected(selectedExampleAndInference)]]" on-tap="copyDatapoint_" alt="duplicate datapoint" title="Duplicate datapoint"> </paper-icon-button> </div> <div title="Select a datapoint to use this feature"> <paper-icon-button class="datapoint-control-button" icon="delete" disabled$="[[!hasSelected(selectedExampleAndInference)]]" on-tap="deleteDatapointDialog_" alt="delete datapoint" title="Delete datapoint"> </paper-icon-button> </div> <div class="control-divider"></div> <paper-input value="{{featureSearchValue}}" label="Search features" class="datapoint-control-filter-input feature-search-input" disabled$="[[!hasSelected(selectedExampleAndInference)]]" no-label-float> <iron-icon icon="icons:search" slot="prefix"></iron-icon> </paper-input> <div class="flex" hidden="[[!hasAttributions_(attributions)]]"> <div class="control-divider"></div> <paper-dropdown-menu label="Feature sort order" class="short-dropdown" no-label-float> <paper-listbox slot="dropdown-content" selected="{{exampleFeatureSortOrder}}" attr-for-selected="name"> <paper-item name="alphabetical">Alphabetical by features</paper-item> <paper-item name="attribution">Descending attribution</paper-item> <paper-item name="reverse-attribution">Ascending attribution</paper-item> <paper-item name="absolute-attribution">Absolute attribution</paper-item> </paper-listbox> </paper-dropdown-menu> <svg id="attributionLegend"></svg> <paper-dropdown-menu label="Model:" no-label-float class="short-dropdown" hidden$="[[!hasMultipleModelAttributions_(attributions)]]"> <paper-listbox class="dropdown-content" slot="dropdown-content" selected="{{attributionModelIndex}}"> <template is="dom-repeat" items="[[parsedModelNames]]"> <paper-item>[[getLabeledModelName_(item)]]</paper-item> </template> </paper-listbox> </paper-dropdown-menu> </div> </div> <div class="datapoint-right-controls-holder"></div> </div> <template is="dom-if" if="[[hasSelected(selectedExampleAndInference)]]"> <div class="example-and-inference-holder"> <wit-example-viewer class="example-holder" json="{{selectedExampleAndInference.example}}" compare-json="{{counterfactualExampleAndInference.example}}" on-example-change="exampleChange_" id="viewer" display-mode="[[exampleDisplayMode]]" feature-search-value="{{featureSearchValue}}" compare-title="[[compareTitle]]" saliency="[[attribution]]" show-saliency readonly="[[!areExamplesEditable_(modelName, inferenceAddress)]]" sort-order="[[exampleFeatureSortOrder]]" min-sal="[[minAttribution]]" max-sal="[[maxAttribution]]" colors="[[attributionColorScale]]" highlight-differences="[[showNearestCounterfactual]]" text-color-function="[[attributionTextColorFunction]]"> </wit-example-viewer> </div> </template> <template is="dom-if" if="[[!hasSelected(selectedExampleAndInference)]]"> <div class="datapoint-info-holder"> <div class="datapoint-info-content"> <div class="flex space-between"> <div class="onboarding-header"> Select a datapoint to begin exploring model behavior for your selection. </div> </div> <div class="onboarding-text"> <span class="bold">Edit</span> Edit a selected datapoint and click on "predict" to see changes in model prediction. Compare datapoints to their counterfactuals or visualize feature attributions where available. </div> <div class="onboarding-text"> <span class="bold">Visualize:</span> Switch between visualizing datapoints and exploring partial dependence plots to gain insights into your model's behavior. Explore counterfactuals or see how similar (or different) the rest of your dataset is from your selection. </div> </div> </div> </template> </div> </div> <div class="inference-section-holder"> <div class="inference-section"> <button class="inference-header heading" on-tap="toggleInferenceResults"> <div class="flex"> <div> [[getInferTitle(selectedExampleNum, comparedIndices)]] </div> <div class="right-side right-side-performance-tab"> <iron-icon icon="[[getExpandCollapseIcon(openedInferenceResults)]]" class="expand-collapse-button"></iron-icon> </div> </div> </button> <iron-collapse class="no-padding-card" id="collapseinference" opened="{{openedInferenceResults}}"> <div title="Select and edit a datapoint to use this feature"> <paper-button on-tap="inferClicked_" class="control-button infer-button flex-grow" disabled$="[[shouldDisableInferButton_(examplesAndInferences, modelName, inferenceAddress, updatedExample)]]"> Predict </paper-button> </div> <div class="flex"> <template is="dom-if" if="[[hasSelected(selectedExampleAndInference)]]"> <wit-inference-viewer class="inference-viewer" inferences="[[selectedExampleAndInference.inferences]]" id$="[[getInferenceHolderId_()]]" model-type="[[modelType]]" model-names="[[parsedModelNames]]" max-entries-per-run="[[maxInferenceEntriesPerRun]]"> </wit-inference-viewer> </template> <template is="dom-if" if="[[counterfactualExampleAndInference]]"> <wit-inference-viewer class="inference-viewer compare-inference-viewer" inferences="[[counterfactualExampleAndInference.inferences]]" model-type="[[modelType]]" model-names="[[parsedModelNames]]" max-entries-per-run="[[maxInferenceEntriesPerRun]]"> </wit-inference-viewer> </template> </div> </iron-collapse> </div> </div> </div> <div class="resizer" id="resizer"> <iron-icon icon="av:pause" class="resize-icon"></iron-icon> </div> </div> <div class="center" slot="center" id="center"> <facets-dive id="dive" data="[[visdata]]" selected-indices="[[selected]]" compared-indices="[[comparedIndices]]" on-selected-indices-changed="selectedIndicesChanged_" on-stats-changed="statsChanged_" hide-info-card="true" sprite-image-width="32" sprite-image-height="32" fit-grid-aspect-ratio-to-viewport="true" stable-colors="true"> </facets-dive> <div id="noexamples" class="noexamples info-text"> Datapoints and their inference results will be displayed here. </div> <paper-progress indeterminate id="progress" hidden="[[loadingBarHidden_]]"> </paper-progress> <div class="feature-container-holder" id="partialplotholder"> <div class="pd-plots-header"> <div class="flex"> <div class="pd-info-text">Partial Dependence Plots</div> <paper-icon-button icon="info-outline" class="info-icon pd-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="auto"> <div class="dialog-title">Partial Dependence Plots</div> <div> Partial dependence plots visualize the change in prediction results for different valid values of a feature. </div> <div> For numeric features, you can set the minimum and maximum values to visualize. </div> <div> For string features, the most popular feature values are shown as alternatives to the feature value for the selected datapoint. </div> <div> If the datapoint contains multiple feature values for a feature, each feature value is visualized as a single plot. You can override which feature values are visualized by specifying the indices for partial dependence plots. </div> <div> When the global toggle is turned on, the plots show the average effect of changing a single feature across all datapoints. When it is turned off, the plots show the effect of changing a single feature on the selected datapoint. </div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/" rel="noreferrer"> Explore tutorials on using the What-If Tool. </a> </div> </paper-dialog> </div> <div class="button-and-progress-holder"> <paper-button class="control-button datapoint-button" disabled$="[[shouldDisableSortFeaturesButton(partialDepPlotEligibleFeatures, isSortingEligibleFeatures)]]" on-tap="sortPdFeatures_" alt="Sort by variation" title="Sort by variation"> Sort by variation </paper-button> <paper-progress class="sort-progress" hidden="[[!isSortingEligibleFeatures]]" indeterminate></paper-progress> </div> <paper-toggle-button class="pd-toggle" checked="{{globalPdPlots}}" on-change="hideAllPdElements_" disabled$="[[!hasSelected(selectedExampleAndInference)]]"> Global partial dependence plots </paper-toggle-button> </div> <template is="dom-if" if="[[!areTherePdPlotFeatures_(partialDepPlotEligibleFeatures)]]"> <div class="pd-no-features-text"> Features for partial dependence plots unavailable in the loaded dataset. </div> </template> <div class="pdplots-holder"> <template is="dom-repeat" items="[[partialDepPlotEligibleFeatures]]"> <div class="feature-container" data-feature-name$="[[item.name]]"> <div class$="[[getPerfTableEntryClass(item)]]"> <div class="perf-table-arrow"> <paper-icon-button class="pd-row-arrow rotated-icon" icon="arrow-drop-down" on-tap="categoryPaneClicked"></paper-icon-button> </div> <div class="perf-table-val perf-table-clickable tf-category-pane perf-table-text-entry" on-tap="categoryPaneClicked"> [[item.name]] </div> </div> <div class="pd-entry-container perf-table-entry-expanded" hidden> <div class="pd-input-container" hidden$="[[shouldHidePdInputContainer(item, selected)]]"> <div class="range-input-container" hidden$="[[item.samples]]"> <div class="info-text" title="set a range of values to visualize in the partial dependence plot(default values are automatically inferred)." alt="set a range of values to visualize in the partial dependence plot"> Set range of values to visualize </div> <div class="flex"> <input type="number" class="style-input x-min pd-range-control" value="[[item.observedMin]]" title="The minimum value to test (default value is automatically inferred)." on-input="pdInputChanged"> <div class="pd-range-hyphen">-</div> <input type="number" class="style-input x-max pd-range-control" value="[[item.observedMax]]" title="The maximum value to test (default value is automatically inferred)." on-input="pdInputChanged"> </div> </div> <div class="feature-index-container" hidden$="[[shouldHideFeatureIndicesSelector(item.name, selected)]]" title="An optional printer-page-style pattern like '0,2,4-6' to select the indices of the feature values to generate plots for. Useful for features with many repeated fields."> <div class="info-text"> Set feature indices <i>(optional)</i> </div> <input type="text" class="style-input feature-index-pattern pd-range-control" on-input="pdInputChanged"> </div> </div> <div class="tf-category-pane-content"></div> </div> </div> </template> </div> </div> </div> </div> <div class="config-tab"> <div class="config-side-content"> <div class="heading-and-card"> <button class="inference-header heading" on-tap="toggleTrueLabelSetup"> Configure <div class="right-side right-side-performance-tab"> <iron-icon icon="[[getExpandCollapseIcon(openedTrueLabel)]]" class="expand-collapse-button"></iron-icon> </div> </button> <iron-collapse class="card" id="collapsetruelabel" opened="{{openedTrueLabel}}"> <template is="dom-if" if="[[shouldShowLabelDropdown_(stats)]]"> <div class="flex"> <paper-dropdown-menu label="Ground Truth Feature" class="threshold-dropdown"> <paper-listbox slot="dropdown-content" selected="{{selectedLabelFeature}}" attr-for-selected="name"> <template is="dom-repeat" items="[[getFeatureList_(stats)]]"> <paper-item name="[[item]]">[[getFeatureName_(item)]]</paper-item> </template> </paper-listbox> </paper-dropdown-menu> <div> <div class="help-title help-title-margin"> What is ground truth? </div> <div class="help-text"> <div> The feature that your model is trying to predict. <span class="dialog-link" on-tap="openDialog">More. </span> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="auto"> <div class="dialog-title"> Ground Truth Feature </div> <div> Select the feature that represents the ground truth for the model's prediction to investigate the model's performance overall or on intersections of other available features by comparing the model's prediction to the ground truth feature. </div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </div> </div> </div> </div> <template is="dom-if" if="[[shouldShowCostRatio_(selectedLabelFeature, modelType, multiClass)]]"> <div class="flex"> <paper-input value="{{incorrectPredCostRatio}}" label="Cost Ratio (FP/FN)" type="number" class="threshold-cost-input"> </paper-input> <div> <div class="help-title help-title-margin"> What is cost ratio? </div> <div class="help-text"> <div> The cost of false positives relative to false negatives. Required for optimization. <span class="dialog-link" on-tap="openDialog">More. </span> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="auto"> <div class="dialog-title"> What is cost ratio? </div> <div> This tells the tool how to optimize the classification thresholds when you use the optimization strategy controls. </div> <div> 1.00 = false positives are equally as costly as false negatives. </div> <div> 4.00 = false positives are 4 times more costly than false negatives </div> <div> 0.25 = false negatives are 4 times more costly than false positives. </div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </div> </div> </div> </div> </template> <template is="dom-if" if="[[shouldShowFeatureDropdown_(stats)]]"> <div class="flex"> <paper-dropdown-menu label="Slice by" class="threshold-dropdown"> <paper-listbox slot="dropdown-content" selected="{{selectedBreakdownFeature}}" attr-for-selected="name"> <template is="dom-repeat" items="[[getFeatureList_(stats)]]"> <paper-item name="[[item]]">[[getFeatureName_(item)]]</paper-item> </template> </paper-listbox> </paper-dropdown-menu> <template is="dom-if" if="[[isNumericFeature_(selectedBreakdownFeature)]]"> <paper-input min="2" value="{{numPrimaryBuckets}}" label="Buckets" type="number" class="num-buckets-input"></paper-input> </template> <div> <div class="help-title help-title-margin"> What does slicing do? </div> <div class="help-text"> <div> Shows the model's performance on datapoints grouped by each value of the selected feature. </div> </div> </div> </div> <div class="flex"> <template is="dom-if" if="[[shouldShowSecondFeatureDropdown_(selectedBreakdownFeature)]]"> <paper-dropdown-menu label="Slice by (secondary)" class="threshold-dropdown"> <paper-listbox slot="dropdown-content" selected="{{selectedSecondBreakdownFeature}}" attr-for-selected="name"> <template is="dom-repeat" items="[[getFeatureList_(stats)]]"> <paper-item name="[[item]]">[[getFeatureName_(item)]]</paper-item> </template> </paper-listbox> </paper-dropdown-menu> <template is="dom-if" if="[[isNumericFeature_(selectedSecondBreakdownFeature)]]"> <paper-input min="2" value="{{numSecondaryBuckets}}" label="Buckets" type="number" class="num-buckets-input"></paper-input> </template> </template> </div> </template> </template> </iron-collapse> </div> <template is="dom-if" if="[[isBinaryClassification_(modelType, multiClass)]]"> <div class="heading-and-card"> <button class="inference-header heading" on-tap="toggleExplorerSetup"> Fairness <div class="right-side right-side-performance-tab"> <iron-icon icon="[[getExpandCollapseIcon(openedExplorer)]]" class="expand-collapse-button"></iron-icon> </div> </button> <iron-collapse class="card" id="collapseexplorer" opened="{{openedExplorer}}"> <template is="dom-if" if="[[shouldShowFeatureDropdown_(stats)]]"> <div class="control-info-header help-title-margin-button"> Apply an optimization strategy </div> <div class="control-info-text"> Select a strategy to automatically set classification thresholds, based on the set cost ratio and data slices. Manually altering thresholds or changing cost ratio will revert the strategy to 'custom thresholds'. </div> <paper-radio-group class="optimization-radio-group" selected="{{optimizationSelected}}"> <paper-radio-button name="custom" class="optimization-radio" id="customthresh">Custom thresholds <paper-icon-button icon="info-outline" class="info-icon thresh-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="bottom"> <div class="dialog-title">Custom thresholds</div> <div> Set your own thresholds using the threshold sliders. </div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </paper-radio-button> <paper-radio-button name="unaware" class="optimization-radio">Single threshold <paper-icon-button icon="info-outline" class="info-icon thresh-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="bottom"> <div class="dialog-title">Single threshold</div> <div> Optimize a single threshold for all datapoints based on the specified cost ratio. </div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </paper-radio-button> <paper-radio-button name="demoparity" class="optimization-radio" disabled$="[[!shouldShowFeaturePerfCharts_(selectedLabelFeature, selectedBreakdownFeature, inferences)]]">Demographic parity <paper-icon-button icon="info-outline" class="info-icon thresh-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="bottom"> <div class="dialog-title">Demographic parity</div> <div> Optimize a threshold per slice based on the specified cost ratio, ensuring the different slices achieve demographic parity. </div> <div> Demographic parity means that similar percentages of datapoints from each slice are predicted as positive classifications. </div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </paper-radio-button> <paper-radio-button name="equalopp" class="optimization-radio" disabled$="[[!shouldShowFeaturePerfCharts_(selectedLabelFeature, selectedBreakdownFeature, inferences)]]">Equal opportunity <paper-icon-button icon="info-outline" class="info-icon thresh-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="bottom"> <div class="dialog-title">Equal opportunity</div> <div> Optimize a threshold per slice based on the specified cost ratio, ensuring the different slices achieve equal opportunity. </div> <div> Equal opportunity means that among those datapoints with the positive ground truth label, there is a similar percentage of positive predictions in each slice. </div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </paper-radio-button> <paper-radio-button name="equalacc" class="optimization-radio" disabled$="[[!shouldShowFeaturePerfCharts_(selectedLabelFeature, selectedBreakdownFeature, inferences)]]">Equal accuracy <paper-icon-button icon="info-outline" class="info-icon thresh-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="bottom"> <div class="dialog-title">Equal accuracy</div> <div> Optimize a threshold per slice based on the specified cost ratio, ensuring the different slices achieve equal accuracy. </div> <div> Equal accuracy means that there is a similar percentage of correct predictions in each slice. </div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </paper-radio-button> <paper-radio-button name="group" class="optimization-radio" disabled$="[[!shouldShowFeaturePerfCharts_(selectedLabelFeature, selectedBreakdownFeature, inferences)]]">Group thresholds <paper-icon-button icon="info-outline" class="info-icon thresh-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="bottom"> <div class="dialog-title">Group thresholds</div> <div> Optimize a separate threshold for each slice based on the specified cost ratio. </div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </paper-radio-button> </paper-radio-group> </template> </iron-collapse> </div> </template> </div> <div class="config-main-content"> <template is="dom-if" if="[[isBinaryClassification_(modelType, multiClass)]]" restamp> <div class="perf-table-title-row"> <div class="flex"> <div class="perf-table-title"> [[getPerfTableTitle(selectedBreakdownFeature, selectedSecondBreakdownFeature, optimizationSelected, featureValueThresholds)]] </div> <paper-icon-button icon="info-outline" class="info-icon performance-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="auto"> <div class="dialog-title"> Classification Performance Table </div> <div> Set the ground truth feature to explore model performance including ROC curves and confusion matrices. </div> <div> Slice the dataset by features and explore model performance by slice. </div> <div> Use the fairness optimization strategies and see the impact on the thresholds and performance of the individual slices. </div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </div> <div class="perf-sort-box"> <div> <paper-icon-button icon="unfold-more" class="perf-button" on-tap="expandAllPerformance" alt="expand all slices" title="Expand all slices"> </paper-icon-button> <paper-icon-button icon="unfold-less" class="perf-button" on-tap="collapseAllPerformance" alt="collapse all slices" title="Collapse all slices"> </paper-icon-button> </div> <paper-dropdown-menu label="Sort by" class="threshold-dropdown perf-table-sort-menu"> <paper-listbox slot="dropdown-content" selected="{{selectedFeatureSort}}" attr-for-selected="name"> <template is="dom-repeat" items="[[getFeatureSortBy(modelType, multiClass)]]"> <paper-item name="[[item]]">[[item]]</paper-item> </template> </paper-listbox> </paper-dropdown-menu> </div> </div> <div class="perf-table-header"> <div class="perf-table-arrow"> <iron-icon class="expand-collapse-button"></iron-icon> </div> <div class="perf-table-val">Feature Value</div> <div class="perf-table-count">Count</div> <div class$="[[getPerfTableModelClass(numModels)]]"> Model </div> <div class="perf-table-threshold flex"> <div>Threshold</div> <div class="threshold-info-holder"> <paper-icon-button icon="info-outline" class="info-icon threshold-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="auto"> <div class="dialog-title"> Explore classification performance </div> <div> Use this slider to adjust the classification threshold for this slice. Inference values at or above this threshold are considered a positive classification, while those below this threshold are considered a negative classification. </div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </div> </div> <div class="perf-table-fp">False Positives (%)</div> <div class="perf-table-fn">False Negatives (%)</div> <div class="perf-table-acc">Accuracy (%)</div> <div class="perf-table-f1">F1</div> </div> <div class="perf-table-entries-holder"> <template is="dom-repeat" items="[[featureValueThresholds]]" as="featureValueThreshold"> <div class="perf-table-entry"> <div class$="[[getPerfTableRowClass(featureValueThreshold.opened)]]" data-index$="[[index]]"> <div class="perf-table-arrow"> <paper-icon-button class$="[[getExpandCollapsePerfIconClass(featureValueThreshold.opened)]]" icon="arrow-drop-down" on-tap="togglePerfRow"></paper-icon-button> </div> <div class="perf-table-val perf-table-clickable perf-table-text-entry feature-name-text" on-tap="togglePerfRow"> [[getPrintableValue_(featureValueThreshold)]] </div> <div class="perf-table-count perf-table-clickable perf-table-num-entry" on-tap="togglePerfRow"> [[getFeatureValueCount(inferenceStats_, featureValueThreshold.threshold, featureValueThreshold)]] </div> <div class$="[[getPerfTableModelClass(numModels)]]" on-tap="togglePerfRow"> <template is="dom-repeat" items="{{featureValueThreshold.threshold}}"> <div class="perf-table-text-entry perf-table-clickable"> [[getModelName_(index)]] </div> </template> </div> <div class="perf-table-threshold"> <template is="dom-repeat" items="{{featureValueThreshold.threshold}}"> <paper-slider class$="[[getSliderClass(index)]]" editable="true" min="0" max="1" step="0.01" immediate-value="{{item.threshold}}" value="[[item.threshold]]" on-value-changed="refreshInferencesNoRegen_" on-immediate-value-changed="refreshInferencesNoRegen_" on-down="resetOptimizationSelected_"> </paper-slider> </template> </div> <div class="perf-table-fp perf-table-clickable" on-tap="togglePerfRow"> <template is="dom-repeat" items="{{featureValueThreshold.threshold}}"> <div class="perf-table-num-entry"> [[getFPModelIndex(inferenceStats_, featureValueThreshold.threshold, index, featureValueThreshold)]] </div> </template> </div> <div class="perf-table-fn perf-table-clickable" on-tap="togglePerfRow"> <template is="dom-repeat" items="{{featureValueThreshold.threshold}}"> <div class="perf-table-num-entry"> [[getFNModelIndex(inferenceStats_, featureValueThreshold.threshold, index, featureValueThreshold)]] </div> </template> </div> <div class="perf-table-acc perf-table-clickable" on-tap="togglePerfRow"> <template is="dom-repeat" items="{{featureValueThreshold.threshold}}"> <div class="perf-table-num-entry"> [[getAccuracyModelIndex(inferenceStats_, featureValueThreshold.threshold, index, featureValueThreshold)]] </div> </template> </div> <div class="perf-table-f1 perf-table-clickable" on-tap="togglePerfRow"> <template is="dom-repeat" items="{{featureValueThreshold.threshold}}"> <div class="perf-table-num-entry"> [[getF1ModelIndex(inferenceStats_, featureValueThreshold.threshold, index, featureValueThreshold)]] </div> </template> </div> </div> </div> <iron-collapse opened="{{featureValueThreshold.opened}}"> <div class="perf-table-entry-expanded flex-row-reverse"> <template is="dom-if" if="[[shouldShowFeaturePerfAttributionCharts_(selectedLabelFeature, selectedBreakdownFeature, inferences, attributions)]]"> <div class="perfs-holder"> <template is="dom-if" if="[[shouldShowFeaturePerfCharts_(selectedLabelFeature, selectedBreakdownFeature, inferences, attributions)]]"> <div class="perf-holder"> <div class="perf-curve-text"> [[getRocChartTitleForSlice(aucs_, index)]] <paper-icon-button icon="info-outline" class="info-icon threshold-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="right" vertical-align="bottom"> <div class="dialog-title">ROC curve</div> <div>[[describeRocChart()]]</div> <div>[[describeRocAuc()]]</div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </div> <div class="perf-curve-x-label"> False positive rate </div> <div class="perf-curve-y-label"> True positive rate </div> <vz-line-chart2 id="[[getRocChartId(index)]]" x-axis-formatter="[[getSimpleAxisFormatter(axisPrecision)]]" y-axis-formatter="[[getSimpleAxisFormatter(axisPrecision)]]"> </vz-line-chart2> </div> <div class="perf-holder"> <div class="perf-curve-text"> [[getPrChartTitleForSlice(aucs_, index)]] <paper-icon-button icon="info-outline" class="info-icon threshold-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="right" vertical-align="bottom"> <div class="dialog-title">PR curve</div> <div>[[describePrChart()]]</div> <div>[[describePrAuc()]]</div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </div> <div class="perf-curve-x-label">Recall</div> <div class="perf-curve-y-label">Precision</div> <vz-line-chart2 id="[[getPrChartId(index)]]" x-axis-formatter="[[getSimpleAxisFormatter(axisPrecision)]]" y-axis-formatter="[[getSimpleAxisFormatter(axisPrecision)]]"> </vz-line-chart2> </div> <div class="perf-holder"> <div class="flex"> <div class="conf-text">Confusion Matrix</div> <paper-icon-button icon="info-outline" class="info-icon mean-attrs-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="auto"> <div class="dialog-title"> Confusion Matrix </div> <div> A confusion matrix is a n*n table (where n = number of classes being predicted) that summarizes if a model’s predictions were correct or incorrect. One axis is the model’s predictions, and the other axis is the ground truth. </div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </div> <template is="dom-repeat" items="{{featureValueThreshold.threshold}}"> <wit-confusion-matrix counts="[[getConfusionCountsModelIndex(inferenceStats_, featureValueThreshold.threshold, index, featureValueThreshold)]]" label="[[getConfusionMatrixLabel(index, numModels)]]" background="[[getConfusionMatrixColor(index)]]" all-items="[[allConfMatrixLabels]]"> </wit-confusion-matrix> </template> </div> </template> <template is="dom-if" if="[[hasAttributions_(attributions)]]"> <div class="perf-holder"> <div class="flex"> <div class="conf-text">Mean attributions</div> <paper-icon-button icon="info-outline" class="info-icon mean-attrs-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="auto"> <div class="dialog-title"> Mean attributions </div> <div> This table shows the average attribution value for each feature across a set of datapoints, ordered from maximum to minimum. </div> </paper-dialog> </div> <wit-attribution-table attributions="[[getFacetedAttributions(facetedMeanAttributions_, featureValueThreshold)]]" models="[[parsedModelNames]]" colors="[[attributionColorScale]]" text-color-function="[[attributionTextColorFunction]]"> </wit-attribution-table> </div> </template> </div> </template> </div> </iron-collapse> </template> <template is="dom-if" if="[[shouldShowOverallThresholder_(selectedBreakdownFeature)]]"> <div class="perf-table-entry"> <div class="perf-table-row-expanded"> <div class="perf-table-arrow"> <paper-icon-button icon="arrow-drop-down" on-tap="togglePerfRow" class="normal-icon" disabled></paper-icon-button> </div> <div class="perf-table-val perf-table-text-entry feature-name-text"> All datapoints </div> <div class="perf-table-count perf-table-num-entry"> [[getFeatureValueCount(inferenceStats_, overallThresholds)]] </div> <div class$="[[getPerfTableModelClass(numModels)]]"> <template is="dom-repeat" items="{{overallThresholds}}"> <div class="perf-table-text-entry"> [[getModelName_(index)]] </div> </template> </div> <div class="perf-table-threshold"> <template is="dom-repeat" items="{{overallThresholds}}"> <paper-slider class$="[[getSliderClass(index)]]" editable="true" min="0" max="1" step="0.01" immediate-value="{{item.threshold}}" value="[[item.threshold]]" on-value-changed="refreshInferencesNoRegen_" on-immediate-value-changed="refreshInferencesNoRegen_" on-down="resetOptimizationSelected_"> </paper-slider> </template> </div> <div class="perf-table-fp"> <template is="dom-repeat" items="{{overallThresholds}}"> <div class="perf-table-num-entry"> [[getFPModelIndex(inferenceStats_, overallThresholds, index)]] </div> </template> </div> <div class="perf-table-fn"> <template is="dom-repeat" items="{{overallThresholds}}"> <div class="perf-table-num-entry"> [[getFNModelIndex(inferenceStats_, overallThresholds, index)]] </div> </template> </div> <div class="perf-table-acc"> <template is="dom-repeat" items="{{overallThresholds}}"> <div class="perf-table-num-entry"> [[getAccuracyModelIndex(inferenceStats_, overallThresholds, index)]] </div> </template> </div> <div class="perf-table-f1"> <template is="dom-repeat" items="{{overallThresholds}}"> <div class="perf-table-num-entry"> [[getF1ModelIndex(inferenceStats_, overallThresholds, index)]] </div> </template> </div> </div> </div> <div class="perf-table-entry-expanded flex-row-reverse"> <template is="dom-if" if="[[shouldShowOverallPerfAttributionCharts_(selectedLabelFeature, selectedBreakdownFeature, inferences, attributions)]]"> <div class="perfs-holder"> <template is="dom-if" if="[[shouldShowOverallPerfCharts_(selectedLabelFeature, selectedBreakdownFeature, inferences, attributions)]]"> <div class="perf-holder"> <div class="perf-curve-text"> [[getRocChartTitleOverall(aucs_)]] <paper-icon-button icon="info-outline" class="info-icon threshold-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="right" vertical-align="bottom"> <div class="dialog-title">ROC curve</div> <div>[[describeRocChart()]]</div> <div>[[describeRocAuc()]]</div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </div> <div class="perf-curve-x-label"> False positive rate </div> <div class="perf-curve-y-label"> True positive rate </div> <vz-line-chart2 id="rocchart" x-axis-formatter="[[getSimpleAxisFormatter(axisPrecision)]]" y-axis-formatter="[[getSimpleAxisFormatter(axisPrecision)]]"> </vz-line-chart2> </div> <div class="perf-holder"> <div class="perf-curve-text"> [[getPrChartTitleOverall(aucs_)]] <paper-icon-button icon="info-outline" class="info-icon threshold-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="right" vertical-align="bottom"> <div class="dialog-title">PR curve</div> <div>[[describePrChart()]]</div> <div>[[describePrAuc()]]</div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </div> <div class="perf-curve-x-label">Recall</div> <div class="perf-curve-y-label">Precision</div> <vz-line-chart2 id="prchart" x-axis-formatter="[[getSimpleAxisFormatter(axisPrecision)]]" y-axis-formatter="[[getSimpleAxisFormatter(axisPrecision)]]"> </vz-line-chart2> </div> <div class="perf-holder"> <div class="flex"> <div class="conf-text">Confusion Matrix</div> <paper-icon-button icon="info-outline" class="info-icon mean-attrs-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="auto"> <div class="dialog-title"> Confusion Matrix </div> <div> A confusion matrix is a n*n table (where n = number of classes being predicted) that summarizes if a model’s predictions were correct or incorrect. One axis is the model’s predictions, and the other axis is the ground truth. </div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </div> <template is="dom-repeat" items="{{overallThresholds}}"> <wit-confusion-matrix counts="[[getConfusionCountsModelIndex(inferenceStats_, overallThresholds, index)]]" label="[[getConfusionMatrixLabel(index, numModels)]]" background="[[getConfusionMatrixColor(index)]]" all-items="[[allConfMatrixLabels]]"> </wit-confusion-matrix> </template> </div> </template> <template is="dom-if" if="[[hasAttributions_(attributions)]]"> <div class="perf-holder"> <div class="flex"> <div class="conf-text">Mean attributions</div> <paper-icon-button icon="info-outline" class="info-icon mean-attrs-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="auto"> <div class="dialog-title"> Mean attributions </div> <div> This table shows the average attribution value for each feature across a set of datapoints, ordered from maximum to minimum. </div> </paper-dialog> </div> <wit-attribution-table attributions="[[meanAttributions_]]" models="[[parsedModelNames]]" colors="[[attributionColorScale]]" text-color-function="[[attributionTextColorFunction]]"> </wit-attribution-table> </div> </template> </div> </template> </div> </template> </div> </template> <template is="dom-if" if="[[isMultiClass_(modelType, multiClass)]]" restamp> <div class="perf-table-title-row"> <div class="flex"> <div class="perf-table-title"> [[getNoThresholdPerfTableTitle(selectedBreakdownFeature, selectedSecondBreakdownFeature, featureValueThresholds)]] </div> <paper-icon-button icon="info-outline" class="info-icon performance-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="auto"> <div class="dialog-title"> Classification performance table </div> <div> Set the ground truth feature to explore model performance including confusion matrices. </div> <div> Create slices from intersections in the dataset and explore model performance on slices. </div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </div> <div class="perf-sort-box"> <div> <paper-icon-button icon="unfold-more" class="perf-button" on-tap="expandAllPerformance" alt="expand all slices" title="Expand all slices"> </paper-icon-button> <paper-icon-button icon="unfold-less" class="perf-button" on-tap="collapseAllPerformance" alt="collapse all slices" title="Collapse all slices"> </paper-icon-button> </div> <paper-dropdown-menu label="Sort by" class="threshold-dropdown perf-table-sort-menu"> <paper-listbox slot="dropdown-content" selected="{{selectedFeatureSort}}" attr-for-selected="name"> <template is="dom-repeat" items="[[getFeatureSortBy(modelType, multiClass)]]"> <paper-item name="[[item]]">[[item]]</paper-item> </template> </paper-listbox> </paper-dropdown-menu> </div> </div> <div class="perf-table-header"> <div class="perf-table-arrow"></div> <div class="perf-table-val">Feature Value</div> <div class="perf-table-count">Count</div> <div class$="[[getPerfTableModelClass(numModels)]]"> Model </div> <div class="perf-table-acc">Accuracy</div> </div> <div class="perf-table-entries-holder"> <template is="dom-repeat" items="[[featureValueThresholds]]" as="featureValueThreshold"> <div class="perf-table-entry"> <div class$="[[getPerfTableRowClass(featureValueThreshold.opened)]]" data-index$="[[index]]"> <div class="perf-table-arrow"> <paper-icon-button class$="[[getExpandCollapsePerfIconClass(featureValueThreshold.opened)]]" icon="arrow-drop-down" on-tap="togglePerfRow"></paper-icon-button> </div> <div class="perf-table-val perf-table-clickable perf-table-text-entry feature-name-text" on-tap="togglePerfRow"> [[getPrintableValue_(featureValueThreshold)]] </div> <div class="perf-table-count perf-table-num-entry perf-table-clickable perf-table-text-entry" on-tap="togglePerfRow"> [[getMultiClassFeatureValueCount(inferenceStats_, featureValueThreshold)]] </div> <div class$="[[getPerfTableModelClass(numModels)]]" on-tap="togglePerfRow"> <template is="dom-repeat" items="{{featureValueThreshold.threshold}}"> <div class="perf-table-text-entry perf-table-clickable"> [[getModelName_(index)]] </div> </template> </div> <div class="perf-table-acc perf-table-clickable" on-tap="togglePerfRow"> <template is="dom-repeat" items="{{featureValueThreshold.threshold}}"> <div class="perf-table-text-entry perf-table-num-entry"> [[getMultiClassAccuracyModelIndex(inferenceStats_, index, featureValueThreshold)]] </div> </template> </div> </div> </div> <iron-collapse opened="{{featureValueThreshold.opened}}"> <div class="perf-table-entry-expanded flex-row-reverse scroll-x"> <template is="dom-if" if="[[shouldShowFeaturePerfCharts_(selectedLabelFeature, selectedBreakdownFeature, inferences)]]"> <div class="perfs-holder"> <div class="perf-holder"> <div class="flex"> <div class="conf-text">Confusion Matrix</div> <paper-icon-button icon="info-outline" class="info-icon mean-attrs-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="auto"> <div class="dialog-title"> Confusion Matrix </div> <div> A confusion matrix is a n*n table (where n = number of classes being predicted) that summarizes if a model’s predictions were correct or incorrect. One axis is the model’s predictions, and the other axis is the ground truth. </div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </div> <template is="dom-repeat" items="[[inferenceStats_]]" as="inferenceStat"> <wit-confusion-matrix counts="[[getMultiClassConfMatrix(inferenceStats_, index, featureValueThreshold)]]" label="[[getConfusionMatrixLabel(index, numModels)]]" background="[[getConfusionMatrixColor(index)]]" all-items="[[allConfMatrixLabels]]"> </wit-confusion-matrix> </template> </div> </div> <template is="dom-repeat" items="[[allConfMatrixLabels]]" as="label" index-as="labelInd"> <div class="perfs-holder"> <div class="perf-holder"> <div class="perf-curve-text"> [[getRocChartTitleForLabel(aucs_, labelInd, index)]] <paper-icon-button icon="info-outline" class="info-icon threshold-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="right" vertical-align="bottom"> <div class="dialog-title">ROC curve</div> <div>[[describeRocChart()]]</div> <div> For this multi-class classification problem, we plot one ROC curve for each class, at each time considering the class in question as the positive one and all the others as negatives (<i>i.e.</i> <i>binarized</i> versions of the problem). </div> <div>[[describeRocAuc()]]</div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </div> <div class="perf-curve-x-label"> False positive rate </div> <div class="perf-curve-y-label"> True positive rate </div> <vz-line-chart2 id="[[getRocChartLabelId(labelInd, index)]]" x-axis-formatter="[[getSimpleAxisFormatter(axisPrecision)]]" y-axis-formatter="[[getSimpleAxisFormatter(axisPrecision)]]"> </vz-line-chart2> </div> <div class="perf-holder"> <div class="perf-curve-text"> [[getPrChartTitleForLabel(aucs_, labelInd, index)]] <paper-icon-button icon="info-outline" class="info-icon threshold-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="right" vertical-align="bottom"> <div class="dialog-title">PR curve</div> <div>[[describePrChart()]]</div> <div> For this multi-class classification problem, we plot one PR curve for each class, at each time considering the class in question as the positive one and all the others as negatives (<i>i.e.</i> <i>binarized</i> versions of the problem). </div> <div>[[describePrAuc()]]</div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </div> <div class="perf-curve-x-label">Recall</div> <div class="perf-curve-y-label"> Precision </div> <vz-line-chart2 id="[[getPrChartLabelId(labelInd, index)]]" x-axis-formatter="[[getSimpleAxisFormatter(axisPrecision)]]" y-axis-formatter="[[getSimpleAxisFormatter(axisPrecision)]]"> </vz-line-chart2> </div> </div> </template> </template> <template is="dom-if" if="[[hasAttributions_(attributions)]]"> <div class="perfs-holder"> <div class="perf-holder"> <div class="flex"> <div class="conf-text">Mean attributions</div> <paper-icon-button icon="info-outline" class="info-icon mean-attrs-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="auto"> <div class="dialog-title"> Mean attributions </div> <div> This table shows the average attribution value for each feature across a set of datapoints, ordered from maximum to minimum. </div> </paper-dialog> </div> <wit-attribution-table attributions="[[getFacetedAttributions(facetedMeanAttributions_, featureValueThreshold)]]" models="[[parsedModelNames]]" colors="[[attributionColorScale]]" text-color-function="[[attributionTextColorFunction]]"> </wit-attribution-table> </div> </div> </template> </div> </iron-collapse> </template> <template is="dom-if" if="[[shouldShowOverallThresholder_(selectedBreakdownFeature)]]"> <div class="perf-table-entry"> <div class="perf-table-row-expanded"> <div class="perf-table-arrow"> <paper-icon-button icon="arrow-drop-down" on-tap="togglePerfRow" class="normal-icon" disabled></paper-icon-button> </div> <div class="perf-table-val perf-table-text-entry feature-name-text"> All datapoints </div> <div class="perf-table-count perf-table-num-entry"> [[getMultiClassFeatureValueCount(inferenceStats_)]] </div> <div class$="[[getPerfTableModelClass(numModels)]]"> <template is="dom-repeat" items="{{overallThresholds}}"> <div class="perf-table-text-entry"> [[getModelName_(index)]] </div> </template> </div> <div class="perf-table-acc"> <template is="dom-repeat" items="[[inferenceStats_]]" as="inferenceStat"> <div class="perf-table-text-entry perf-table-num-entry"> [[getMultiClassAccuracyModelIndex(inferenceStats_, index)]] </div> </template> </div> </div> </div> <div class="perf-table-entry-expanded flex-row-reverse scroll-x"> <template is="dom-if" if="[[shouldShowOverallPerfCharts_(selectedLabelFeature, selectedBreakdownFeature, inferences)]]"> <div class="perfs-holder"> <div class="perf-holder"> <div class="flex"> <div class="conf-text">Confusion Matrix</div> <paper-icon-button icon="info-outline" class="info-icon mean-attrs-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="auto"> <div class="dialog-title"> Confusion Matrix </div> <div> A confusion matrix is a n*n table (where n = number of classes being predicted) that summarizes if a model’s predictions were correct or incorrect. One axis is the model’s predictions, and the other axis is the ground truth. </div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </div> <template is="dom-repeat" items="[[inferenceStats_]]" as="inferenceStat"> <wit-confusion-matrix counts="[[getMultiClassConfMatrix(inferenceStats_, index)]]" label="[[getConfusionMatrixLabel(index, numModels)]]" background="[[getConfusionMatrixColor(index)]]" all-items="[[allConfMatrixLabels]]"> </wit-confusion-matrix> </template> </div> </div> <template is="dom-repeat" items="[[allConfMatrixLabels]]" as="label" index-as="labelInd"> <div class="perfs-holder"> <div class="perf-holder"> <div class="perf-curve-text"> [[getRocChartTitleForLabel(aucs_, labelInd, '')]] <paper-icon-button icon="info-outline" class="info-icon threshold-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="right" vertical-align="bottom"> <div class="dialog-title">ROC curve</div> <div>[[describeRocChart()]]</div> <div> For this multi-class classification problem, we plot one ROC curve for each class, at each time considering the class in question as the positive one and all the others as negatives (<i>i.e.</i> <i>binarized</i> versions of the problem). </div> <div>[[describeRocAuc()]]</div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </div> <div class="perf-curve-x-label"> False positive rate </div> <div class="perf-curve-y-label"> True positive rate </div> <vz-line-chart2 id="[[getRocChartLabelId(label, '')]]" x-axis-formatter="[[getSimpleAxisFormatter(axisPrecision)]]" y-axis-formatter="[[getSimpleAxisFormatter(axisPrecision)]]"> </vz-line-chart2> </div> <div class="perf-holder"> <div class="perf-curve-text"> [[getPrChartTitleForLabel(aucs_, labelInd, '')]] <paper-icon-button icon="info-outline" class="info-icon threshold-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="right" vertical-align="bottom"> <div class="dialog-title">PR curve</div> <div>[[describePrChart()]]</div> <div> For this multi-class classification problem, we plot one PR curve for each class, at each time considering the class in question as the positive one and all the others as negatives (<i>i.e.</i> <i>binarized</i> versions of the problem). </div> <div>[[describePrAuc()]]</div> <div> <a target="_blank" class="control" href="https://pair-code.github.io/what-if-tool/learn/" rel="noreferrer"> Explore tutorials on analyzing performance. </a> </div> </paper-dialog> </div> <div class="perf-curve-x-label">Recall</div> <div class="perf-curve-y-label">Precision</div> <vz-line-chart2 id="[[getPrChartLabelId(label, '')]]" x-axis-formatter="[[getSimpleAxisFormatter(axisPrecision)]]" y-axis-formatter="[[getSimpleAxisFormatter(axisPrecision)]]"> </vz-line-chart2> </div> </div> </template> </template> <template is="dom-if" if="[[hasAttributions_(attributions)]]"> <div class="perfs-holder"> <div class="perf-holder"> <div class="flex"> <div class="conf-text">Mean attributions</div> <paper-icon-button icon="info-outline" class="info-icon mean-attrs-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="auto"> <div class="dialog-title"> Mean attributions </div> <div> This table shows the average attribution value for each feature across a set of datapoints, ordered from maximum to minimum. </div> </paper-dialog> </div> <wit-attribution-table attributions="[[meanAttributions_]]" models="[[parsedModelNames]]" colors="[[attributionColorScale]]" text-color-function="[[attributionTextColorFunction]]"> </wit-attribution-table> </div> </div> </template> </div> </template> </div> </template> <template is="dom-if" if="[[isRegression_(modelType)]]" restamp> <div class="perf-table-title-row"> <div class="flex"> <div class="perf-table-title"> [[getNoThresholdPerfTableTitle(selectedBreakdownFeature, selectedSecondBreakdownFeature, featureValueThresholds)]] </div> <paper-icon-button icon="info-outline" class="info-icon performance-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="auto"> <div class="dialog-title"> Regression Performance Table </div> <div> Set the ground truth feature to explore model performance. </div> <div> Create slices from intersections in the dataset and explore model performance by slices. </div> </paper-dialog> </div> <paper-dropdown-menu label="Sort by" class="threshold-dropdown perf-table-sort-menu"> <paper-listbox slot="dropdown-content" selected="{{selectedFeatureSort}}" attr-for-selected="name"> <template is="dom-repeat" items="[[getFeatureSortBy(modelType, multiClass)]]"> <paper-item name="[[item]]">[[item]]</paper-item> </template> </paper-listbox> </paper-dropdown-menu> </div> <div class="perf-table-header"> <div class="perf-table-arrow"></div> <div class="perf-table-val">Feature Value</div> <div class="perf-table-count">Count</div> <div class="perf-table-error">Mean error</div> <div class="perf-table-error">Median error</div> <div class="perf-table-error">Mean absolute error</div> <div class="perf-table-error">Median absolute error</div> <div class="perf-table-sq-error">Mean squared error</div> <div class="perf-table-sq-error">Median squared error</div> </div> <div class="perf-table-entries-holder"> <template is="dom-repeat" items="[[regressionEntries_]]"> <div class="regression-perf-table-entry"> <div class="regression-perf-table-row"> <div class="perf-table-arrow"></div> <div class="perf-table-val perf-table-text-entry feature-name-text"> [[item.name]] </div> <div class="perf-table-count perf-table-num-entry perf-table-text-entry"> [[item.count]] </div> <div class="perf-table-error perf-table-num-entry perf-table-text-entry"> [[formatError(item.meanError)]] </div> <div class="perf-table-error perf-table-num-entry perf-table-text-entry"> [[formatError(item.medianError)]] </div> <div class="perf-table-error perf-table-num-entry perf-table-text-entry"> [[formatError(item.meanAbsError)]] </div> <div class="perf-table-sq-error perf-table-num-entry perf-table-text-entry"> [[formatError(item.medianAbsError)]] </div> <div class="perf-table-error perf-table-num-entry perf-table-text-entry"> [[formatError(item.meanSquaredError)]] </div> <div class="perf-table-sq-error perf-table-num-entry perf-table-text-entry"> [[formatError(item.medianSquaredError)]] </div> </div> <template is="dom-if" if="[[hasAttributions_(attributions)]]"> <div class="regression-attr-holder"> <div class="flex"> <div class="conf-text">Mean attributions</div> <paper-icon-button icon="info-outline" class="info-icon mean-attrs-info-icon no-padding" on-tap="openDialog"> </paper-icon-button> <paper-dialog class="dialog-text" horizontal-align="auto" vertical-align="auto"> <div class="dialog-title"> Mean attributions </div> <div> This table shows the average attribution value for each feature across a set of datapoints, ordered from maximum to minimum. </div> </paper-dialog> </div> <wit-attribution-table attributions="[[getRegressionAttributions(item.name)]]" models="[[parsedModelNames]]" colors="[[attributionColorScale]]" text-color-function="[[attributionTextColorFunction]]"> </wit-attribution-table> </div> </template> </div> </template> </div> </template> </div> </div> <div class="stats-tab"> <facets-overview id="overview" search-string="{{featureSearchValue}}"></facets-overview> </div> </iron-pages> </div> </div> </div> <style include="dashboard-style"></style> </template> </dom-module> <style> html, body { height: 100%; margin: 0; width: 100%; } </style> <body> <wit-dashboard></wit-dashboard> <script src="wit_tb_bin.js"></script>