<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[195685] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/195685">195685</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2016-01-27 12:24:37 -0800 (Wed, 27 Jan 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Need ability to specify alternate image for AutoFill button in input fields.
https://bugs.webkit.org/show_bug.cgi?id=153116.
rdar://problem/23384854.

Patch by Zhuo Li &lt;zachli@apple.com&gt; on 2016-01-27
Reviewed by Darin Adler.

Source/WebCore:

Add a new AutoFill button that can be shown in &lt;input&gt; elements.

Tests: fast/forms/auto-fill-button/input-contacts-auto-fill-button.html
       fast/forms/auto-fill-button/show-correct-auto-fill-button-when-auto-fill-button-type-changes.html

* css/html.css:
(input::-webkit-contacts-auto-fill-button):
(input::-webkit-contacts-auto-fill-button:hover):
(input::-webkit-contacts-auto-fill-button:active):
Add default style rules for the Contacts AutoFill button based on the ones used for
Manual AutoFill button.

* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::setShowAutoFillButton):
* html/HTMLInputElement.h:
(WebCore::HTMLInputElement::autoFillButtonType):
- Replace the boolean parameter with a new parameter to specify the type of the AutoFill button.
- Declare a private variable to keep a record of the type of the current AutoFill
button.
(WebCore::HTMLInputElement::showAutoFillButton): Deleted.

* html/HTMLTextFormControlElement.h:
Declare enum for AutoFill button type.

* html/TextFieldInputType.cpp:
(WebCore::autoFillButtonTypeToAutoFillButtonPseudoClassName):
(WebCore::isAutoFillButtonTypeChanged):
(WebCore::TextFieldInputType::shouldDrawAutoFillButton): None means the AutoFill button is not
enabled.
(WebCore::TextFieldInputType::createAutoFillButton): Only create the AutoFill button
if the type is expected.
(WebCore::TextFieldInputType::updateAutoFillButton):
Handle the case where AutoFill button type changes in the text field.
* html/TextFieldInputType.h:

* testing/Internals.cpp:
(WebCore::stringToAutoFillButtonType): Convert the string to AutoFill button type.
(WebCore::Internals::setShowAutoFillButton): Add a new parameter to specify the type of the AutoFill button.
* testing/Internals.h: Ditto.
* testing/Internals.idl: Ditto.

Source/WebKit2:

* WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp:
(toAutoFillButtonType): Convert the WebKit AutoFill button type enum to WebCore AutoFill button
type enum.
(WKBundleNodeHandleSetHTMLInputElementAutoFillButtonEnabledWithButtonType): Added to be able to specify
what the AutoFill button type is. None means the AutoFill button is not shown.
(WKBundleNodeHandleSetHTMLInputElementAutoFillButtonEnabled): Deprecate this method.
* WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h: Declare an AutoFill button type enum.
* WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
(WebKit::InjectedBundleNodeHandle::isHTMLInputElementAutoFillButtonEnabled): None means the AutoFill button is not enabled.
(WebKit::InjectedBundleNodeHandle::setHTMLInputElementAutoFillButtonEnabledWithButtonType): Use the new parameter to specify
what the AutoFill button type is.
* WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h: Ditto.

LayoutTests:

* fast/forms/auto-fill-button/hide-auto-fill-button-when-input-becomes-disabled.html: The test API has
another parameter to specify what type the AutoFill button is.
* fast/forms/auto-fill-button/hide-auto-fill-button-when-input-becomes-readonly.html: Ditto.
* fast/forms/auto-fill-button/input-contacts-auto-fill-button-expected.txt: Added.
* fast/forms/auto-fill-button/input-contacts-auto-fill-button.html: Added.
* fast/forms/auto-fill-button/input-auto-fill-button.html: Ditto.
* fast/forms/auto-fill-button/input-disabled-auto-fill-button.html: Ditto.
* fast/forms/auto-fill-button/input-readonly-non-empty-auto-fill-button.html: Ditto.
* fast/forms/auto-fill-button/mouse-down-input-mouse-release-auto-fill-button.html: Ditto.
* fast/forms/auto-fill-button/show-correct-auto-fill-button-when-auto-fill-button-type-changes-expected.html: Added.
* fast/forms/auto-fill-button/show-correct-auto-fill-button-when-auto-fill-button-type-changes.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastformsautofillbuttonhideautofillbuttonwheninputbecomesdisabledhtml">trunk/LayoutTests/fast/forms/auto-fill-button/hide-auto-fill-button-when-input-becomes-disabled.html</a></li>
<li><a href="#trunkLayoutTestsfastformsautofillbuttonhideautofillbuttonwheninputbecomesreadonlyhtml">trunk/LayoutTests/fast/forms/auto-fill-button/hide-auto-fill-button-when-input-becomes-readonly.html</a></li>
<li><a href="#trunkLayoutTestsfastformsautofillbuttoninputautofillbuttonhtml">trunk/LayoutTests/fast/forms/auto-fill-button/input-auto-fill-button.html</a></li>
<li><a href="#trunkLayoutTestsfastformsautofillbuttoninputdisabledautofillbuttonhtml">trunk/LayoutTests/fast/forms/auto-fill-button/input-disabled-auto-fill-button.html</a></li>
<li><a href="#trunkLayoutTestsfastformsautofillbuttoninputreadonlyautofillbuttonhtml">trunk/LayoutTests/fast/forms/auto-fill-button/input-readonly-auto-fill-button.html</a></li>
<li><a href="#trunkLayoutTestsfastformsautofillbuttoninputreadonlynonemptyautofillbuttonhtml">trunk/LayoutTests/fast/forms/auto-fill-button/input-readonly-non-empty-auto-fill-button.html</a></li>
<li><a href="#trunkLayoutTestsfastformsautofillbuttonmousedowninputmousereleaseautofillbuttonhtml">trunk/LayoutTests/fast/forms/auto-fill-button/mouse-down-input-mouse-release-auto-fill-button.html</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorecsshtmlcss">trunk/Source/WebCore/css/html.css</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLInputElementcpp">trunk/Source/WebCore/html/HTMLInputElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLInputElementh">trunk/Source/WebCore/html/HTMLInputElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTextFormControlElementh">trunk/Source/WebCore/html/HTMLTextFormControlElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlTextFieldInputTypecpp">trunk/Source/WebCore/html/TextFieldInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlTextFieldInputTypeh">trunk/Source/WebCore/html/TextFieldInputType.h</a></li>
<li><a href="#trunkSourceWebCoretestingInternalscpp">trunk/Source/WebCore/testing/Internals.cpp</a></li>
<li><a href="#trunkSourceWebCoretestingInternalsh">trunk/Source/WebCore/testing/Internals.h</a></li>
<li><a href="#trunkSourceWebCoretestingInternalsidl">trunk/Source/WebCore/testing/Internals.idl</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIcWKBundleNodeHandlecpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIcWKBundleNodeHandlePrivateh">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleDOMInjectedBundleNodeHandlecpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleDOMInjectedBundleNodeHandleh">trunk/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastformsautofillbuttoninputcontactsautofillbuttonexpectedtxt">trunk/LayoutTests/fast/forms/auto-fill-button/input-contacts-auto-fill-button-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastformsautofillbuttoninputcontactsautofillbuttonhtml">trunk/LayoutTests/fast/forms/auto-fill-button/input-contacts-auto-fill-button.html</a></li>
<li><a href="#trunkLayoutTestsfastformsautofillbuttonshowcorrectautofillbuttonwhenautofillbuttontypechangesexpectedhtml">trunk/LayoutTests/fast/forms/auto-fill-button/show-correct-auto-fill-button-when-auto-fill-button-type-changes-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastformsautofillbuttonshowcorrectautofillbuttonwhenautofillbuttontypechangeshtml">trunk/LayoutTests/fast/forms/auto-fill-button/show-correct-auto-fill-button-when-auto-fill-button-type-changes.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/LayoutTests/ChangeLog        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2016-01-27  Zhuo Li  &lt;zachli@apple.com&gt;
+
+        Need ability to specify alternate image for AutoFill button in input fields.
+        https://bugs.webkit.org/show_bug.cgi?id=153116.
+        rdar://problem/23384854.
+
+        Reviewed by Darin Adler.
+
+        * fast/forms/auto-fill-button/hide-auto-fill-button-when-input-becomes-disabled.html: The test API has
+        another parameter to specify what type the AutoFill button is.
+        * fast/forms/auto-fill-button/hide-auto-fill-button-when-input-becomes-readonly.html: Ditto.
+        * fast/forms/auto-fill-button/input-contacts-auto-fill-button-expected.txt: Added.
+        * fast/forms/auto-fill-button/input-contacts-auto-fill-button.html: Added.
+        * fast/forms/auto-fill-button/input-auto-fill-button.html: Ditto.
+        * fast/forms/auto-fill-button/input-disabled-auto-fill-button.html: Ditto.
+        * fast/forms/auto-fill-button/input-readonly-non-empty-auto-fill-button.html: Ditto.
+        * fast/forms/auto-fill-button/mouse-down-input-mouse-release-auto-fill-button.html: Ditto.
+        * fast/forms/auto-fill-button/show-correct-auto-fill-button-when-auto-fill-button-type-changes-expected.html: Added.
+        * fast/forms/auto-fill-button/show-correct-auto-fill-button-when-auto-fill-button-type-changes.html: Added.
+
</ins><span class="cx"> 2016-01-26  Ryosuke Niwa  &lt;rniwa@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Add Node.treeRoot
</span></span></pre></div>
<a id="trunkLayoutTestsfastformsautofillbuttonhideautofillbuttonwheninputbecomesdisabledhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/forms/auto-fill-button/hide-auto-fill-button-when-input-becomes-disabled.html (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/forms/auto-fill-button/hide-auto-fill-button-when-input-becomes-disabled.html        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/LayoutTests/fast/forms/auto-fill-button/hide-auto-fill-button-when-input-becomes-disabled.html        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -10,7 +10,7 @@
</span><span class="cx"> var password = document.getElementById(&quot;password&quot;);
</span><span class="cx"> 
</span><span class="cx"> if (window.internals)
</span><del>-    internals.setShowAutoFillButton(password, true);
</del><ins>+    internals.setShowAutoFillButton(password, &quot;AutoFillButtonTypeCredentials&quot;);
</ins><span class="cx"> 
</span><span class="cx"> function makeFieldDisabledAndNotifyDone()
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkLayoutTestsfastformsautofillbuttonhideautofillbuttonwheninputbecomesreadonlyhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/forms/auto-fill-button/hide-auto-fill-button-when-input-becomes-readonly.html (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/forms/auto-fill-button/hide-auto-fill-button-when-input-becomes-readonly.html        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/LayoutTests/fast/forms/auto-fill-button/hide-auto-fill-button-when-input-becomes-readonly.html        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -10,7 +10,7 @@
</span><span class="cx"> var password = document.getElementById(&quot;password&quot;);
</span><span class="cx"> 
</span><span class="cx"> if (window.internals)
</span><del>-    internals.setShowAutoFillButton(password, true);
</del><ins>+    internals.setShowAutoFillButton(password, &quot;AutoFillButtonTypeCredentials&quot;);
</ins><span class="cx"> 
</span><span class="cx"> function makeFieldReadOnlyAndNotifyDone()
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkLayoutTestsfastformsautofillbuttoninputautofillbuttonhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/forms/auto-fill-button/input-auto-fill-button.html (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/forms/auto-fill-button/input-auto-fill-button.html        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/LayoutTests/fast/forms/auto-fill-button/input-auto-fill-button.html        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -1,21 +1,21 @@
</span><span class="cx"> &lt;p&gt;This tests that the AutoFill button renders. It can only be tested in the test tool.&lt;/p&gt;
</span><del>-&lt;div id='container'&gt;
-    &lt;input type='text'&gt;
-    &lt;input type='password'&gt;
</del><ins>+&lt;div id=&quot;container&quot;&gt;
+    &lt;input type=&quot;text&quot;&gt;
+    &lt;input type=&quot;password&quot;&gt;
</ins><span class="cx"> &lt;/div&gt;
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> 
</span><span class="cx"> if (window.internals) {
</span><span class="cx">     var inputs = document.querySelectorAll(&quot;input&quot;);
</span><span class="cx">     for (var i = 0; i &lt; inputs.length; ++i)
</span><del>-        window.internals.setShowAutoFillButton(inputs[i], true);
</del><ins>+        window.internals.setShowAutoFillButton(inputs[i], &quot;AutoFillButtonTypeCredentials&quot;);
</ins><span class="cx"> 
</span><span class="cx">     var dynamicInput = document.createElement(&quot;input&quot;);
</span><del>-    window.internals.setShowAutoFillButton(dynamicInput, true);
</del><ins>+    window.internals.setShowAutoFillButton(dynamicInput, &quot;AutoFillButtonTypeCredentials&quot;);
</ins><span class="cx">     document.querySelector(&quot;#container&quot;).appendChild(dynamicInput);
</span><span class="cx"> 
</span><span class="cx">     var dynamicInput2 = document.createElement(&quot;input&quot;);
</span><del>-    window.internals.setShowAutoFillButton(dynamicInput2, true);
</del><ins>+    window.internals.setShowAutoFillButton(dynamicInput2, &quot;AutoFillButtonTypeCredentials&quot;);
</ins><span class="cx">     document.querySelector(&quot;#container&quot;).appendChild(dynamicInput2);
</span><span class="cx">     dynamicInput2.setAttribute(&quot;type&quot;, &quot;password&quot;);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkLayoutTestsfastformsautofillbuttoninputcontactsautofillbuttonexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/forms/auto-fill-button/input-contacts-auto-fill-button-expected.txt (0 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/forms/auto-fill-button/input-contacts-auto-fill-button-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/forms/auto-fill-button/input-contacts-auto-fill-button-expected.txt        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -0,0 +1,57 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x104
+  RenderBlock {HTML} at (0,0) size 800x104
+    RenderBody {BODY} at (8,16) size 784x80
+      RenderBlock {P} at (0,0) size 784x18
+        RenderText {#text} at (0,0) size 598x18
+          text run at (0,0) width 598: &quot;This tests that the Address Book AutoFill button renders. It can only be tested in the test tool.&quot;
+      RenderBlock {DIV} at (0,34) size 784x46
+        RenderTextControl {INPUT} at (2,2) size 137x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
+          RenderFlexibleBox {DIV} at (3,3) size 131x13
+            RenderBlock {DIV} at (0,0) size 111x13
+        RenderText {#text} at (140,2) size 5x18
+          text run at (140,2) width 5: &quot; &quot;
+        RenderTextControl {INPUT} at (146,2) size 137x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
+          RenderFlexibleBox {DIV} at (3,3) size 131x13
+            RenderBlock {DIV} at (0,0) size 111x13
+        RenderText {#text} at (284,2) size 5x18
+          text run at (284,2) width 5: &quot; &quot;
+        RenderTextControl {INPUT} at (290,2) size 138x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
+          RenderFlexibleBox {DIV} at (3,3) size 131x13
+            RenderBlock {DIV} at (0,0) size 111x13
+        RenderText {#text} at (429,2) size 5x18
+          text run at (429,2) width 5: &quot; &quot;
+        RenderTextControl {INPUT} at (435,2) size 137x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
+          RenderFlexibleBox {DIV} at (3,3) size 131x13
+            RenderBlock {DIV} at (0,0) size 111x13
+        RenderTextControl {INPUT} at (575,2) size 137x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
+          RenderFlexibleBox {DIV} at (3,3) size 131x13
+            RenderBlock {DIV} at (0,0) size 111x13
+        RenderTextControl {INPUT} at (2,25) size 137x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
+          RenderFlexibleBox {DIV} at (3,3) size 131x13
+            RenderBlock {DIV} at (0,0) size 111x13
+layer at (13,55) size 110x13
+  RenderBlock {DIV} at (0,0) size 111x13
+layer at (157,55) size 110x13
+  RenderBlock {DIV} at (0,0) size 111x13
+layer at (302,55) size 110x13
+  RenderBlock {DIV} at (0,0) size 111x13
+layer at (446,55) size 110x13
+  RenderBlock {DIV} at (0,0) size 111x13
+layer at (586,55) size 110x13
+  RenderBlock {DIV} at (0,0) size 111x13
+layer at (13,78) size 110x13
+  RenderBlock {DIV} at (0,0) size 111x13
+layer at (126,56) size 15x12
+  RenderBlock {DIV} at (113,0) size 16x13 [bgcolor=#000000]
+layer at (271,56) size 15x12
+  RenderBlock {DIV} at (113,0) size 16x13 [bgcolor=#000000]
+layer at (415,56) size 15x12
+  RenderBlock {DIV} at (113,0) size 16x13 [bgcolor=#000000]
+layer at (559,56) size 15x12
+  RenderBlock {DIV} at (113,0) size 16x13 [bgcolor=#000000]
+layer at (700,56) size 15x12
+  RenderBlock {DIV} at (113,0) size 16x13 [bgcolor=#000000]
+layer at (126,79) size 15x12
+  RenderBlock {DIV} at (113,0) size 16x13 [bgcolor=#000000]
</ins></span></pre></div>
<a id="trunkLayoutTestsfastformsautofillbuttoninputcontactsautofillbuttonhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/forms/auto-fill-button/input-contacts-auto-fill-button.html (0 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/forms/auto-fill-button/input-contacts-auto-fill-button.html                                (rev 0)
+++ trunk/LayoutTests/fast/forms/auto-fill-button/input-contacts-auto-fill-button.html        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;p&gt;This tests that the Address Book AutoFill button renders. It can only be tested in the test tool.&lt;/p&gt;
+&lt;div id=&quot;container&quot;&gt;
+    &lt;input type=&quot;text&quot;&gt;
+    &lt;input type=&quot;text&quot; name=&quot;first_name&quot;&gt;
+    &lt;input type=&quot;text&quot; name=&quot;last_name&quot;&gt;
+&lt;/div&gt;
+&lt;script&gt;
+
+if (window.internals) {
+    var inputs = document.querySelectorAll(&quot;input&quot;);
+    for (var i = 0; i &lt; inputs.length; ++i)
+        window.internals.setShowAutoFillButton(inputs[i], &quot;AutoFillButtonTypeContacts&quot;);
+
+    var dynamicInput = document.createElement(&quot;input&quot;);
+    window.internals.setShowAutoFillButton(dynamicInput, &quot;AutoFillButtonTypeContacts&quot;);
+    document.querySelector(&quot;#container&quot;).appendChild(dynamicInput);
+
+    var dynamicInput2 = document.createElement(&quot;input&quot;);
+    window.internals.setShowAutoFillButton(dynamicInput2, &quot;AutoFillButtonTypeContacts&quot;);
+    document.querySelector(&quot;#container&quot;).appendChild(dynamicInput2);
+    dynamicInput2.setAttribute(&quot;name&quot;, &quot;address&quot;);
+
+    var dynamicInput3 = document.createElement(&quot;input&quot;);
+    window.internals.setShowAutoFillButton(dynamicInput3, &quot;AutoFillButtonTypeContacts&quot;);
+    document.querySelector(&quot;#container&quot;).appendChild(dynamicInput3);
+    dynamicInput3.setAttribute(&quot;name&quot;, &quot;phone_number&quot;);
+}
+&lt;/script&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastformsautofillbuttoninputdisabledautofillbuttonhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/forms/auto-fill-button/input-disabled-auto-fill-button.html (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/forms/auto-fill-button/input-disabled-auto-fill-button.html        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/LayoutTests/fast/forms/auto-fill-button/input-disabled-auto-fill-button.html        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> &lt;input type=&quot;password&quot; id=&quot;password&quot; placeholder=&quot;disabled&quot; disabled autofocus&gt;
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> if (window.internals)
</span><del>-    internals.setShowAutoFillButton(document.getElementById(&quot;password&quot;), true);
</del><ins>+    internals.setShowAutoFillButton(document.getElementById(&quot;password&quot;), &quot;AutoFillButtonTypeCredentials&quot;);
</ins><span class="cx"> &lt;/script&gt;
</span><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsfastformsautofillbuttoninputreadonlyautofillbuttonhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/forms/auto-fill-button/input-readonly-auto-fill-button.html (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/forms/auto-fill-button/input-readonly-auto-fill-button.html        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/LayoutTests/fast/forms/auto-fill-button/input-readonly-auto-fill-button.html        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> &lt;input type=&quot;password&quot; id=&quot;password&quot; placeholder=&quot;read only&quot; readonly autofocus&gt;
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> if (window.internals)
</span><del>-    internals.setShowAutoFillButton(document.getElementById(&quot;password&quot;), true);
</del><ins>+    internals.setShowAutoFillButton(document.getElementById(&quot;password&quot;), &quot;AutoFillButtonTypeCredentials&quot;);
</ins><span class="cx"> &lt;/script&gt;
</span><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsfastformsautofillbuttoninputreadonlynonemptyautofillbuttonhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/forms/auto-fill-button/input-readonly-non-empty-auto-fill-button.html (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/forms/auto-fill-button/input-readonly-non-empty-auto-fill-button.html        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/LayoutTests/fast/forms/auto-fill-button/input-readonly-non-empty-auto-fill-button.html        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> &lt;input type=&quot;password&quot; id=&quot;password&quot; value=&quot;read only&quot; readonly autofocus&gt;
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> if (window.internals)
</span><del>-    internals.setShowAutoFillButton(document.getElementById(&quot;password&quot;), true);
</del><ins>+    internals.setShowAutoFillButton(document.getElementById(&quot;password&quot;), &quot;AutoFillButtonTypeCredentials&quot;);
</ins><span class="cx"> &lt;/script&gt;
</span><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsfastformsautofillbuttonmousedowninputmousereleaseautofillbuttonhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/forms/auto-fill-button/mouse-down-input-mouse-release-auto-fill-button.html (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/forms/auto-fill-button/mouse-down-input-mouse-release-auto-fill-button.html        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/LayoutTests/fast/forms/auto-fill-button/mouse-down-input-mouse-release-auto-fill-button.html        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -22,9 +22,9 @@
</span><span class="cx">     if (!window.internals || !window.eventSender)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    internals.setShowAutoFillButton(password, true);
</del><ins>+    internals.setShowAutoFillButton(password, &quot;AutoFillButtonTypeCredentials&quot;);
</ins><span class="cx"> 
</span><del>-    var autoFillButton = getElementByPseudoId(internals.shadowRoot(password), &quot;-webkit-auto-fill-button&quot;);
</del><ins>+    var autoFillButton = getElementByPseudoId(internals.shadowRoot(password), &quot;-webkit-credentials-auto-fill-button&quot;);
</ins><span class="cx">     autoFillButton.onclick = checkEventAndDone;
</span><span class="cx"> 
</span><span class="cx">     eventSender.mouseMoveTo(password.offsetLeft + 10, password.offsetTop + password.offsetHeight / 2);
</span></span></pre></div>
<a id="trunkLayoutTestsfastformsautofillbuttonshowcorrectautofillbuttonwhenautofillbuttontypechangesexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/forms/auto-fill-button/show-correct-auto-fill-button-when-auto-fill-button-type-changes-expected.html (0 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/forms/auto-fill-button/show-correct-auto-fill-button-when-auto-fill-button-type-changes-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/forms/auto-fill-button/show-correct-auto-fill-button-when-auto-fill-button-type-changes-expected.html        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;body&gt;
+&lt;p&gt;This tests that we show the correct AutoFill button when AutoFill button type changes. It can only be tested in the test tool.&lt;/p&gt;
+&lt;input id=&quot;credentials&quot;&gt;
+&lt;input id=&quot;contacts&quot;&gt;
+&lt;script&gt;
+if (window.internals) {
+    internals.setShowAutoFillButton(document.getElementById(&quot;credentials&quot;), &quot;AutoFillButtonTypeContacts&quot;);
+    internals.setShowAutoFillButton(document.getElementById(&quot;contacts&quot;), &quot;AutoFillButtonTypeCredentials&quot;);
+}
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsfastformsautofillbuttonshowcorrectautofillbuttonwhenautofillbuttontypechangeshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/forms/auto-fill-button/show-correct-auto-fill-button-when-auto-fill-button-type-changes.html (0 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/forms/auto-fill-button/show-correct-auto-fill-button-when-auto-fill-button-type-changes.html                                (rev 0)
+++ trunk/LayoutTests/fast/forms/auto-fill-button/show-correct-auto-fill-button-when-auto-fill-button-type-changes.html        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;body&gt;
+&lt;p&gt;This tests that we show the correct AutoFill button when AutoFill button type changes. It can only be tested in the test tool.&lt;/p&gt;
+&lt;input id=&quot;credentials&quot;&gt;
+&lt;input id=&quot;contacts&quot;&gt;
+&lt;script&gt;
+if (window.internals) {
+    internals.setShowAutoFillButton(document.getElementById(&quot;credentials&quot;), &quot;AutoFillButtonTypeCredentials&quot;);
+    internals.setShowAutoFillButton(document.getElementById(&quot;credentials&quot;), &quot;AutoFillButtonTypeContacts&quot;);
+
+    internals.setShowAutoFillButton(document.getElementById(&quot;contacts&quot;), &quot;AutoFillButtonTypeContacts&quot;);
+    internals.setShowAutoFillButton(document.getElementById(&quot;contacts&quot;), &quot;AutoFillButtonTypeCredentials&quot;);
+}
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/Source/WebCore/ChangeLog        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -1,3 +1,52 @@
</span><ins>+2016-01-27  Zhuo Li  &lt;zachli@apple.com&gt;
+
+        Need ability to specify alternate image for AutoFill button in input fields.
+        https://bugs.webkit.org/show_bug.cgi?id=153116.
+        rdar://problem/23384854.
+
+        Reviewed by Darin Adler.
+
+        Add a new AutoFill button that can be shown in &lt;input&gt; elements.
+
+        Tests: fast/forms/auto-fill-button/input-contacts-auto-fill-button.html
+               fast/forms/auto-fill-button/show-correct-auto-fill-button-when-auto-fill-button-type-changes.html
+
+        * css/html.css:
+        (input::-webkit-contacts-auto-fill-button):
+        (input::-webkit-contacts-auto-fill-button:hover):
+        (input::-webkit-contacts-auto-fill-button:active):
+        Add default style rules for the Contacts AutoFill button based on the ones used for
+        Manual AutoFill button.
+
+        * html/HTMLInputElement.cpp:
+        (WebCore::HTMLInputElement::setShowAutoFillButton):
+        * html/HTMLInputElement.h:
+        (WebCore::HTMLInputElement::autoFillButtonType):
+        - Replace the boolean parameter with a new parameter to specify the type of the AutoFill button.
+        - Declare a private variable to keep a record of the type of the current AutoFill
+        button.
+        (WebCore::HTMLInputElement::showAutoFillButton): Deleted.
+
+        * html/HTMLTextFormControlElement.h:
+        Declare enum for AutoFill button type.
+
+        * html/TextFieldInputType.cpp:
+        (WebCore::autoFillButtonTypeToAutoFillButtonPseudoClassName):
+        (WebCore::isAutoFillButtonTypeChanged):
+        (WebCore::TextFieldInputType::shouldDrawAutoFillButton): None means the AutoFill button is not
+        enabled.
+        (WebCore::TextFieldInputType::createAutoFillButton): Only create the AutoFill button
+        if the type is expected.
+        (WebCore::TextFieldInputType::updateAutoFillButton):
+        Handle the case where AutoFill button type changes in the text field.
+        * html/TextFieldInputType.h:
+
+        * testing/Internals.cpp:
+        (WebCore::stringToAutoFillButtonType): Convert the string to AutoFill button type.
+        (WebCore::Internals::setShowAutoFillButton): Add a new parameter to specify the type of the AutoFill button.
+        * testing/Internals.h: Ditto.
+        * testing/Internals.idl: Ditto.
+
</ins><span class="cx"> 2016-01-26  Ryosuke Niwa  &lt;rniwa@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Add Node.treeRoot
</span></span></pre></div>
<a id="trunkSourceWebCorecsshtmlcss"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/html.css (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/html.css        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/Source/WebCore/css/html.css        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -549,7 +549,7 @@
</span><span class="cx">     -webkit-user-select: none;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-input::-webkit-auto-fill-button {
</del><ins>+input::-webkit-credentials-auto-fill-button {
</ins><span class="cx">     -webkit-mask-image: -webkit-image-set(url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAMCAYAAAC9QufkAAAAAXNSR0IB2cksfwAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAADyWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE1LTA0LTAzVDE2OjA2OjI1PC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNCAoTWFjaW50b3NoKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxNS0wNC0wM1QxNjowMzoxNjwveG1wOkNyZWF0
 ZURhdGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT4xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xNTwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4xMjwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgoz37ZdAAAA5ElEQVQoFY2RsQ5BQRBFd9EgEYXv8QlaEqVGpfUPao3oKXyEQiJI1ERESaGmwnPu2k2QJ2uS82Z2du7s7jyTJInBWnCABeygoXwM6kwN1GELFo7wgOo/4gmFEovzWzyMiTMUlyFYJQT4wlucGko8T90xZv0j/5EusVpCuLr8FPK6NraHPmT8Oks8gI2bKEEOZhAauEJf3PX5Eb4ImpEG2gni0NWJvwdFYRvuoIHeoOUa++56+wpSxb6myf4J6qG5VWCt1ckPvHsksf531HSiDJ1VV9n15eJfJ+YkvWcMF+jFZa+KJ554xIc+jempAAAAAElFTkSuQmCC&quot;) 1x, url(&quot;data:image/png;base64,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&quot;) 2x);
</span><span class="cx">     -webkit-mask-size: 15px 12px;
</span><span class="cx">     width: 15px;
</span><span class="lines">@@ -561,14 +561,34 @@
</span><span class="cx">     -webkit-user-select: none;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-input::-webkit-auto-fill-button:hover {
</del><ins>+input::-webkit-credentials-auto-fill-button:hover {
</ins><span class="cx">     background-color: rgb(0, 122, 255);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-input::-webkit-auto-fill-button:active {
</del><ins>+input::-webkit-credentials-auto-fill-button:active {
</ins><span class="cx">     background-color: rgb(0, 60, 219);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+input::-webkit-contacts-auto-fill-button {
+    -webkit-mask-image: -webkit-image-set(url(&quot;data:image/png;base64,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
 1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMwNjcgNzkuMTU3NzQ3LCAyMDE1LzAzLzMwLTIzOjQwOjQyICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTYtMDEtMTNUMTc6MDk6NDQtMDg6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNi0wMS0xM1QxNzoxMDo0MC0
 wODowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMTYtMDEtMTNUMTc6MTA6NDAtMDg6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHBob3Rvc2hvcDpJQ0NQcm9maWxlPkRpc3BsYXk8L3Bob3Rvc2hvcDpJQ0NQcm9maWxlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjJjOGZlYmIwLTk3MTQtNDY5ZS1iNjQyLTAyNzY3NzVjZmQzYjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDoyYzhmZWJiMC05NzE0LTQ2OWUtYjY0Mi0wMjc2Nzc1Y2ZkM2I8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDoyYzhmZWJiMC05NzE0LTQ2OWUtYjY0Mi0wMjc2Nzc1Y2ZkM2I8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0
 OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjJjOGZlYmIwLTk3MTQtNDY5ZS1iNjQyLTAyNzY3NzVjZmQzYjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNi0wMS0xM1QxNzoxMDo0MC0wODowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+NjU1MzU8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI4PC9leGlmOlBpeGVsWERpbWVuc
 2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI4PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC
 AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
 gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgI
 CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
 AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
 gICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
 CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
 AgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
 gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgC
 iAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
 AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
 gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
 CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz63NHXRAAAAIGNIUk0AAG11AABzoAAA/N0AAINkAABw6AAA7GgAADA+AAAQkOTsmeoAAAJ+SURBVHjavJbPa9NgGMefLqOYZGTZWChlmxXyo6E4S6BQKNKuGTnLepTBPHnYxatehP0BPQ7PMsTl0ENPUrDYsk7UDj1IKelcurTDbjsUccWNJfX1JIxqm9e17oHn9D58Pzw/3ud9PQghwLVMJnM3m83eKxaL8bOzM0qSpFoqlcpomvZ6YWHhBEsEIeTqpmlSy8vLzwCgBQCo11mWra6trT3F0XINyOVydwRB2P4bqMdbGxsbqaGB8Xhcx4AhAEDhcDg3FHBvb2+CZdkqLnBmZuazaZrUIM0xtx4TBCHjDpXjOLdt2x4fFDMQSNP0D4Zh3uECKYr6SJLk+ZWBfr//59TUVBsXODs7+3V+fv7iykAAAJ/Pd4ILDAQCB0Pdw1KpJJAkWccdGoZhjN3d3bkrD8309HTb6/VewD8YTdOdoTaNpmmbuBmqqvrCTc+1h6qq5j0ezxFGckdLS0v5kezSZDL50i27RCKh42iN4fRFUZRPbjGRSKSMo4
 UFFEWx5hbD87w5sufJMAyG5/mdfuUMBALvq9UqO7KSSpL0fWVlZbPf+erq6nNZlr+NrKQAAMfHx/5+Z51OZwJXBxtYq9WEfmeGYQSxN4NbzS3L8m5tbS0OehcnJycNXdfjOD309H6iWq3WWKFQWCwWi4lKpRKyLOtWs9mM4Fx8SZJqgiB8CQaDRjQa/RCLxd7+8Xr8Jh8eHo6n0+n7oVAoj7vK3Jzn+Z319fWHl38BgBCCcrk8pyjKq1GBel2W5TelUklACAHU6/Ubo8yqn4uiuL2/v08RHMc90HX9Efxna7fbNzmOOyBs237SaDRCcA3mOM4F0e12H5+envqvA9jtds9/DQCsPB1nqFm3ggAAAABJRU5ErkJggg==&quot;) 1x, url(&quot;data:image/png;base64,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
 aqpmo7c3vp9sc7Una0fu/1fe1Og52VOz/tEu3q2p2w+0ytZ23tHsM9y+rIOlldz95Jezt+CP2hcZ/Dvm37dfdXHsAB2YHffsz88frB6IMth7wO7TtseXjjEa0jFfVE/Yz6vobchq7G9MbOo+OPtjT5Nh35yfGnXcdMj1Uf1zm+7ITSiYUnBk+WnexvFjf3nso59ahlasud02mnr56ZeKb9bPTZcz+H/3y6Naj15Dm/c8fO+5w/esHrQsNFj4v1be5tR35x/+VIu0d7/SXPS40d3h1NneM6T1wOuHzqSuiVn69GXb14LfZa5/Xk6zdvTLrRdZN/8+mtglsvbpfeHrgz7y7jbsU99XtV9w3v1/zH9j/7uzy6jj8IfdD2MPHhnUe8R89+Lfn1Y/fCxyqPq56YPKl96vL0WE94T8dvX/3W/Uz8bKC3/HeN3zc+t3l++I/AP9r60vq6X0heDL5c8kr/1a7Xbq9b+uP7778pfDPwtuKd/rvd773et35I/fBkYNpH1sd1n2w/NX2O/nx3sHBwUMyVcAEAFAAyOxt4uQtQSQe0OgAlVfn+BQAg5DsjIP8H+Xcs39EAAB7ArkAgeR4Q0wxsbgYs5wHsZiAeQFIgSFfXkWPISrJdXeS52BKA8W5w8JURwGoCPkkGBwc2DQ5+2gFQt4DmYvneBwBMdWCrPgC03VD/x/71XyvrbEVyL+sZAAA4mWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMwNjcgNzkuMTU3NzQ3LCAyMDE1LzAzLzMwLTIzOjQwOjQyICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczp
 yZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTYtMDEtMTNUMTc6MDk6NDAtMDg6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNi0wMS0xM1QxNzoxMToxOS0wODowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMTYtMDEtMTNUMTc6MTE6MTktMDg6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+QWRv
 YmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHBob3Rvc2hvcDpJQ0NQcm9maWxlPkRpc3BsYXk8L3Bob3Rvc2hvcDpJQ0NQcm9maWxlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjYwYTIyOTY0LTI2OWQtNDYzMC1iOGRmLWMxMmJiMTQzM2E4NTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDo2MGEyMjk2NC0yNjlkLTQ2MzAtYjhkZi1jMTJiYjE0MzNhODU8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDo2MGEyMjk2NC0yNjlkLTQ2MzAtYjhkZi1jMTJiYjE0MzNhODU8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjYwYTIyOTY0LTI2OWQtNDYzMC1iOGRmLWMxMmJiMTQzM2E4NTwvc3RFdnQ6aW5zdGFuY
 2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNi0wMS0xM1QxNzoxMToxOS0wODowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+MTQ0MDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+MTQ0MDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NTY8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+NTY8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgIC
 AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
 gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgI
 CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
 AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
 gICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
 CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
 AgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICA
 gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
 CAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIC
 AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
 gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgI
 CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
 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&quot;) 2x);
+    -webkit-mask-size: 15px 12px;
+    width: 15px;
+    height: 12px;
+    margin-left: 3px;
+    margin-right: 2px;
+    background-color: black;
+    flex: none;
+    -webkit-user-select: none;
+}
+
+input::-webkit-contacts-auto-fill-button:hover {
+    background-color: rgb(0, 122, 255);
+}
+
+input::-webkit-contacts-auto-fill-button:active {
+    background-color: rgb(0, 60, 219);
+}
+
</ins><span class="cx"> input::-webkit-caps-lock-indicator {
</span><span class="cx">     -webkit-appearance: caps-lock-indicator;
</span><span class="cx">     content: url('data:image/svg+xml,&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;17&quot; height=&quot;17&quot;&gt;&lt;path fill=&quot;black&quot; fill-opacity=&quot;0.4&quot; d=&quot;M12.5 0.5A 4 4 0 0 1 16.5 4.5L 16.5 12.5A 4 4 0 0 1 12.5 16.5L 4.5 16.5A 4 4 0 0 1 0.5 12.5L 0.5 4.5A 4 4 0 0 1 4.5 0.5L 12.5 0.5M 8.5 2L 4 7L 6.25 7L 6.25 10.25L 10.75 10.25L 10.75 7L 13 7L 8.5 2M 10.75 12L 6.25 12L 6.25 14.25L 10.75 14.25L 10.75 12&quot;/&gt;&lt;/svg&gt;');
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLInputElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLInputElement.cpp (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLInputElement.cpp        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/Source/WebCore/html/HTMLInputElement.cpp        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx">     , m_isActivatedSubmit(false)
</span><span class="cx">     , m_autocomplete(Uninitialized)
</span><span class="cx">     , m_isAutoFilled(false)
</span><del>-    , m_showAutoFillButton(false)
</del><ins>+    , m_autoFillButtonType(static_cast&lt;uint8_t&gt;(AutoFillButtonType::None))
</ins><span class="cx"> #if ENABLE(DATALIST_ELEMENT)
</span><span class="cx">     , m_hasNonEmptyList(false)
</span><span class="cx"> #endif
</span><span class="lines">@@ -1300,12 +1300,12 @@
</span><span class="cx">     setNeedsStyleRecalc();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLInputElement::setShowAutoFillButton(bool showAutoFillButton)
</del><ins>+void HTMLInputElement::setShowAutoFillButton(AutoFillButtonType autoFillButtonType)
</ins><span class="cx"> {
</span><del>-    if (showAutoFillButton == m_showAutoFillButton)
</del><ins>+    if (static_cast&lt;uint8_t&gt;(autoFillButtonType) == m_autoFillButtonType)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_showAutoFillButton = showAutoFillButton;
</del><ins>+    m_autoFillButtonType = static_cast&lt;uint8_t&gt;(autoFillButtonType);
</ins><span class="cx">     m_inputType-&gt;updateAutoFillButton();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLInputElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLInputElement.h (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLInputElement.h        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/Source/WebCore/html/HTMLInputElement.h        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -237,8 +237,8 @@
</span><span class="cx">     bool isAutoFilled() const { return m_isAutoFilled; }
</span><span class="cx">     WEBCORE_EXPORT void setAutoFilled(bool = true);
</span><span class="cx"> 
</span><del>-    bool showAutoFillButton() const { return m_showAutoFillButton; }
-    WEBCORE_EXPORT void setShowAutoFillButton(bool);
</del><ins>+    AutoFillButtonType autoFillButtonType() const { return (AutoFillButtonType)m_autoFillButtonType; }
+    WEBCORE_EXPORT void setShowAutoFillButton(AutoFillButtonType);
</ins><span class="cx"> 
</span><span class="cx">     FileList* files();
</span><span class="cx">     void setFiles(PassRefPtr&lt;FileList&gt;);
</span><span class="lines">@@ -431,7 +431,7 @@
</span><span class="cx">     bool m_isActivatedSubmit : 1;
</span><span class="cx">     unsigned m_autocomplete : 2; // AutoCompleteSetting
</span><span class="cx">     bool m_isAutoFilled : 1;
</span><del>-    bool m_showAutoFillButton : 1;
</del><ins>+    unsigned m_autoFillButtonType : 2; // AutoFillButtonType;
</ins><span class="cx"> #if ENABLE(DATALIST_ELEMENT)
</span><span class="cx">     bool m_hasNonEmptyList : 1;
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTextFormControlElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTextFormControlElement.h (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTextFormControlElement.h        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/Source/WebCore/html/HTMLTextFormControlElement.h        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -34,6 +34,7 @@
</span><span class="cx"> class TextControlInnerTextElement;
</span><span class="cx"> class VisiblePosition;
</span><span class="cx"> 
</span><ins>+enum class AutoFillButtonType : uint8_t { None, Credentials, Contacts };
</ins><span class="cx"> enum TextFieldSelectionDirection { SelectionHasNoDirection, SelectionHasForwardDirection, SelectionHasBackwardDirection };
</span><span class="cx"> enum TextFieldEventBehavior { DispatchNoEvent, DispatchChangeEvent, DispatchInputAndChangeEvent };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlTextFieldInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/TextFieldInputType.cpp (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/TextFieldInputType.cpp        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/Source/WebCore/html/TextFieldInputType.cpp        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -399,6 +399,35 @@
</span><span class="cx">     return string.left(newLength);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static AtomicString autoFillButtonTypeToAutoFillButtonPseudoClassName(AutoFillButtonType autoFillButtonType)
+{
+    AtomicString pseudoClassName;
+    switch (autoFillButtonType) {
+    case AutoFillButtonType::Contacts:
+        pseudoClassName = AtomicString(&quot;-webkit-contacts-auto-fill-button&quot;, AtomicString::ConstructFromLiteral);
+        break;
+    case AutoFillButtonType::Credentials:
+        pseudoClassName = AtomicString(&quot;-webkit-credentials-auto-fill-button&quot;, AtomicString::ConstructFromLiteral);
+        break;
+    case AutoFillButtonType::None:
+        ASSERT_NOT_REACHED();
+        break;
+    }
+
+    return pseudoClassName;
+}
+
+static bool isAutoFillButtonTypeChanged(const AtomicString&amp; attribute, AutoFillButtonType autoFillButtonType)
+{
+    if (attribute == &quot;-webkit-contacts-auto-fill-button&quot; &amp;&amp; autoFillButtonType != AutoFillButtonType::Contacts)
+        return true;
+
+    if (attribute == &quot;-webkit-credentials-auto-fill-button&quot; &amp;&amp; autoFillButtonType != AutoFillButtonType::Credentials)
+        return true;
+
+    return false;
+}
+
</ins><span class="cx"> String TextFieldInputType::sanitizeValue(const String&amp; proposedValue) const
</span><span class="cx"> {
</span><span class="cx">     return limitLength(proposedValue.removeCharacters(isASCIILineBreak), HTMLInputElement::maximumLength);
</span><span class="lines">@@ -587,7 +616,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool TextFieldInputType::shouldDrawAutoFillButton() const
</span><span class="cx"> {
</span><del>-    return !element().isDisabledOrReadOnly() &amp;&amp; element().showAutoFillButton();
</del><ins>+    return !element().isDisabledOrReadOnly() &amp;&amp; element().autoFillButtonType() != AutoFillButtonType::None;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void TextFieldInputType::autoFillButtonElementWasClicked()
</span><span class="lines">@@ -613,12 +642,15 @@
</span><span class="cx">     element().userAgentShadowRoot()-&gt;appendChild(*m_container, IGNORE_EXCEPTION);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TextFieldInputType::createAutoFillButton()
</del><ins>+void TextFieldInputType::createAutoFillButton(AutoFillButtonType autoFillButtonType)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!m_autoFillButton);
</span><span class="cx"> 
</span><ins>+    if (autoFillButtonType == AutoFillButtonType::None)
+        return;
+
</ins><span class="cx">     m_autoFillButton = AutoFillButtonElement::create(element().document(), *this);
</span><del>-    m_autoFillButton-&gt;setPseudo(AtomicString(&quot;-webkit-auto-fill-button&quot;, AtomicString::ConstructFromLiteral));
</del><ins>+    m_autoFillButton-&gt;setPseudo(autoFillButtonTypeToAutoFillButtonPseudoClassName(autoFillButtonType));
</ins><span class="cx">     m_container-&gt;appendChild(*m_autoFillButton, IGNORE_EXCEPTION);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -629,8 +661,13 @@
</span><span class="cx">             createContainer();
</span><span class="cx"> 
</span><span class="cx">         if (!m_autoFillButton)
</span><del>-            createAutoFillButton();
</del><ins>+            createAutoFillButton(element().autoFillButtonType());
</ins><span class="cx"> 
</span><ins>+        const AtomicString&amp; attribute = m_autoFillButton-&gt;fastGetAttribute(pseudoAttr);
+        bool shouldUpdateAutoFillButtonType = isAutoFillButtonTypeChanged(attribute, element().autoFillButtonType());
+        if (shouldUpdateAutoFillButtonType)
+            m_autoFillButton-&gt;setPseudo(autoFillButtonTypeToAutoFillButtonPseudoClassName(element().autoFillButtonType()));
+
</ins><span class="cx">         m_autoFillButton-&gt;setInlineStyleProperty(CSSPropertyDisplay, CSSValueBlock, true);
</span><span class="cx">         return;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlTextFieldInputTypeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/TextFieldInputType.h (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/TextFieldInputType.h        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/Source/WebCore/html/TextFieldInputType.h        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -108,7 +108,7 @@
</span><span class="cx">     bool shouldDrawAutoFillButton() const;
</span><span class="cx"> 
</span><span class="cx">     void createContainer();
</span><del>-    void createAutoFillButton();
</del><ins>+    void createAutoFillButton(AutoFillButtonType);
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;HTMLElement&gt; m_container;
</span><span class="cx">     RefPtr&lt;HTMLElement&gt; m_innerBlock;
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.cpp (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.cpp        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/Source/WebCore/testing/Internals.cpp        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -1278,8 +1278,20 @@
</span><span class="cx">     downcast&lt;HTMLInputElement&gt;(*element).setAutoFilled(enabled);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Internals::setShowAutoFillButton(Element* element, bool show, ExceptionCode&amp; ec)
</del><ins>+static AutoFillButtonType stringToAutoFillButtonType(const String&amp; autoFillButtonType)
</ins><span class="cx"> {
</span><ins>+    if (autoFillButtonType == &quot;AutoFillButtonTypeNone&quot;)
+        return AutoFillButtonType::None;
+    if (autoFillButtonType == &quot;AutoFillButtonTypeCredentials&quot;)
+        return AutoFillButtonType::Credentials;
+    if (autoFillButtonType == &quot;AutoFillButtonTypeContacts&quot;)
+        return AutoFillButtonType::Contacts;
+    ASSERT_NOT_REACHED();
+    return AutoFillButtonType::None;
+}
+
+void Internals::setShowAutoFillButton(Element* element, const String&amp; autoFillButtonType, ExceptionCode&amp; ec)
+{
</ins><span class="cx">     if (!element) {
</span><span class="cx">         ec = INVALID_ACCESS_ERR;
</span><span class="cx">         return;
</span><span class="lines">@@ -1290,7 +1302,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    downcast&lt;HTMLInputElement&gt;(*element).setShowAutoFillButton(show);
</del><ins>+    downcast&lt;HTMLInputElement&gt;(*element).setShowAutoFillButton(stringToAutoFillButtonType(autoFillButtonType));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.h (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.h        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/Source/WebCore/testing/Internals.h        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -177,7 +177,7 @@
</span><span class="cx">     bool elementShouldAutoComplete(Element* inputElement, ExceptionCode&amp;);
</span><span class="cx">     void setEditingValue(Element* inputElement, const String&amp;, ExceptionCode&amp;);
</span><span class="cx">     void setAutofilled(Element*, bool enabled, ExceptionCode&amp;);
</span><del>-    void setShowAutoFillButton(Element*, bool enabled, ExceptionCode&amp;);
</del><ins>+    void setShowAutoFillButton(Element*, const String&amp; autoFillButtonType, ExceptionCode&amp;);
</ins><span class="cx">     void scrollElementToRect(Element*, long x, long y, long w, long h, ExceptionCode&amp;);
</span><span class="cx"> 
</span><span class="cx">     void paintControlTints(ExceptionCode&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalsidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.idl (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.idl        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/Source/WebCore/testing/Internals.idl        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -57,6 +57,12 @@
</span><span class="cx">     &quot;previous-track&quot;
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+enum AutoFillButtonType {
+    &quot;AutoFillButtonTypeNone&quot;,
+    &quot;AutoFillButtonTypeContacts&quot;,
+    &quot;AutoFillButtonTypeCredentials&quot;
+};
+
</ins><span class="cx"> [
</span><span class="cx">     NoInterfaceObject,
</span><span class="cx"> ] interface Internals {
</span><span class="lines">@@ -151,7 +157,7 @@
</span><span class="cx">     [RaisesException] boolean elementShouldAutoComplete(Element inputElement);
</span><span class="cx">     [RaisesException] void setEditingValue(Element inputElement, DOMString value);
</span><span class="cx">     [RaisesException] void setAutofilled(Element inputElement, boolean enabled);
</span><del>-    [RaisesException] void setShowAutoFillButton(Element inputElement, boolean enabled);
</del><ins>+    [RaisesException] void setShowAutoFillButton(Element inputElement, AutoFillButtonType autoFillButtonType);
</ins><span class="cx">     [RaisesException] unsigned long countMatchesForText(DOMString text, unsigned long findOptions, DOMString markMatches);
</span><span class="cx"> 
</span><span class="cx">     [RaisesException] void paintControlTints();
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/Source/WebKit2/ChangeLog        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -1,3 +1,24 @@
</span><ins>+2016-01-27  Zhuo Li  &lt;zachli@apple.com&gt;
+
+        Need ability to specify alternate image for AutoFill button in input fields.
+        https://bugs.webkit.org/show_bug.cgi?id=153116.
+        rdar://problem/23384854.
+
+        Reviewed by Darin Adler.
+
+        * WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp:
+        (toAutoFillButtonType): Convert the WebKit AutoFill button type enum to WebCore AutoFill button
+        type enum.
+        (WKBundleNodeHandleSetHTMLInputElementAutoFillButtonEnabledWithButtonType): Added to be able to specify
+        what the AutoFill button type is. None means the AutoFill button is not shown.
+        (WKBundleNodeHandleSetHTMLInputElementAutoFillButtonEnabled): Deprecate this method.
+        * WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h: Declare an AutoFill button type enum.
+        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
+        (WebKit::InjectedBundleNodeHandle::isHTMLInputElementAutoFillButtonEnabled): None means the AutoFill button is not enabled.
+        (WebKit::InjectedBundleNodeHandle::setHTMLInputElementAutoFillButtonEnabledWithButtonType): Use the new parameter to specify
+        what the AutoFill button type is.
+        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h: Ditto.
+
</ins><span class="cx"> 2016-01-27  Dan Bernstein  &lt;mitz@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         More trying to fix the build.
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIcWKBundleNodeHandlecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -33,9 +33,24 @@
</span><span class="cx"> #include &quot;WKBundleAPICast.h&quot;
</span><span class="cx"> #include &quot;WebFrame.h&quot;
</span><span class="cx"> #include &quot;WebImage.h&quot;
</span><ins>+#include &lt;WebCore/HTMLTextFormControlElement.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> using namespace WebKit;
</span><span class="cx"> 
</span><ins>+static WebCore::AutoFillButtonType toAutoFillButtonType(WKAutoFillButtonType wkAutoFillButtonType)
+{
+    switch (wkAutoFillButtonType) {
+    case kWKAutoFillButtonTypeNone:
+        return WebCore::AutoFillButtonType::None;
+    case kWKAutoFillButtonTypeContacts:
+        return WebCore::AutoFillButtonType::Contacts;
+    case kWKAutoFillButtonTypeCredentials:
+        return WebCore::AutoFillButtonType::Credentials;
+    }
+    ASSERT_NOT_REACHED();
+    return WebCore::AutoFillButtonType::None;
+}
+
</ins><span class="cx"> WKTypeID WKBundleNodeHandleGetTypeID()
</span><span class="cx"> {
</span><span class="cx">     return toAPI(InjectedBundleNodeHandle::APIType);
</span><span class="lines">@@ -95,9 +110,9 @@
</span><span class="cx">     return toImpl(htmlInputElementHandleRef)-&gt;isHTMLInputElementAutoFillButtonEnabled();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WKBundleNodeHandleSetHTMLInputElementAutoFillButtonEnabled(WKBundleNodeHandleRef htmlInputElementHandleRef, bool enabled)
</del><ins>+void WKBundleNodeHandleSetHTMLInputElementAutoFillButtonEnabledWithButtonType(WKBundleNodeHandleRef htmlInputElementHandleRef, WKAutoFillButtonType autoFillButtonType)
</ins><span class="cx"> {
</span><del>-    toImpl(htmlInputElementHandleRef)-&gt;setHTMLInputElementAutoFillButtonEnabled(enabled);
</del><ins>+    toImpl(htmlInputElementHandleRef)-&gt;setHTMLInputElementAutoFillButtonEnabled(toAutoFillButtonType(autoFillButtonType));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WKRect WKBundleNodeHandleGetHTMLInputElementAutoFillButtonBounds(WKBundleNodeHandleRef htmlInputElementHandleRef)
</span><span class="lines">@@ -150,3 +165,11 @@
</span><span class="cx"> {
</span><span class="cx">     toImpl(htmlInputElementHandleRef)-&gt;setHTMLInputElementAutoFilled(filled);
</span><span class="cx"> }
</span><ins>+
+// Deprecated - use WKBundleNodeHandleSetHTMLInputElementAutoFillButtonEnabledWithButtonType(WKBundleNodeHandleRef, WKAutoFillButtonType).
+void WKBundleNodeHandleSetHTMLInputElementAutoFillButtonEnabled(WKBundleNodeHandleRef htmlInputElementHandleRef, bool enabled)
+{
+    WebCore::AutoFillButtonType autoFillButtonType = enabled ? WebCore::AutoFillButtonType::Credentials : WebCore::AutoFillButtonType::None;
+
+    toImpl(htmlInputElementHandleRef)-&gt;setHTMLInputElementAutoFillButtonEnabled(autoFillButtonType);
+}
</ins></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIcWKBundleNodeHandlePrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -35,6 +35,13 @@
</span><span class="cx"> extern &quot;C&quot; {
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+enum {
+    kWKAutoFillButtonTypeNone,
+    kWKAutoFillButtonTypeCredentials,
+    kWKAutoFillButtonTypeContacts
+};
+typedef uint8_t WKAutoFillButtonType;
+
</ins><span class="cx"> WK_EXPORT WKBundleNodeHandleRef WKBundleNodeHandleCreate(JSContextRef context, JSObjectRef object);
</span><span class="cx"> 
</span><span class="cx"> /* Convenience Operations */
</span><span class="lines">@@ -55,7 +62,7 @@
</span><span class="cx"> WK_EXPORT bool WKBundleNodeHandleGetHTMLInputElementAutoFilled(WKBundleNodeHandleRef htmlInputElementHandle);
</span><span class="cx"> WK_EXPORT void WKBundleNodeHandleSetHTMLInputElementAutoFilled(WKBundleNodeHandleRef htmlInputElementHandle, bool filled);
</span><span class="cx"> WK_EXPORT bool WKBundleNodeHandleGetHTMLInputElementAutoFillButtonEnabled(WKBundleNodeHandleRef htmlInputElementHandle);
</span><del>-WK_EXPORT void WKBundleNodeHandleSetHTMLInputElementAutoFillButtonEnabled(WKBundleNodeHandleRef htmlInputElementHandle, bool enabled);
</del><ins>+WK_EXPORT void WKBundleNodeHandleSetHTMLInputElementAutoFillButtonEnabledWithButtonType(WKBundleNodeHandleRef htmlInputElementHandle, WKAutoFillButtonType autoFillButtonType);
</ins><span class="cx"> WK_EXPORT WKRect WKBundleNodeHandleGetHTMLInputElementAutoFillButtonBounds(WKBundleNodeHandleRef htmlInputElementHandle);
</span><span class="cx"> WK_EXPORT bool WKBundleNodeHandleGetHTMLInputElementLastChangeWasUserEdit(WKBundleNodeHandleRef htmlInputElementHandle);
</span><span class="cx"> 
</span><span class="lines">@@ -79,6 +86,8 @@
</span><span class="cx"> WK_EXPORT bool WKBundleNodeHandleGetHTMLInputElementAutofilled(WKBundleNodeHandleRef htmlInputElementHandle);
</span><span class="cx"> /* Deprecated - use WKBundleNodeHandleSetHTMLInputElementAutoFilled(WKBundleNodeHandleRef, bool) */
</span><span class="cx"> WK_EXPORT void WKBundleNodeHandleSetHTMLInputElementAutofilled(WKBundleNodeHandleRef htmlInputElementHandle, bool filled);
</span><ins>+/* Deprecated - use WKBundleNodeHandleSetHTMLInputElementAutoFillButtonEnabled(WKBundleNodeHandleRef, WKAutoFillButtonType)*/
+WK_EXPORT void WKBundleNodeHandleSetHTMLInputElementAutoFillButtonEnabled(WKBundleNodeHandleRef htmlInputElementHandle, bool enabled);
</ins><span class="cx"> 
</span><span class="cx"> #ifdef __cplusplus
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleDOMInjectedBundleNodeHandlecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -231,15 +231,15 @@
</span><span class="cx">     if (!is&lt;HTMLInputElement&gt;(m_node))
</span><span class="cx">         return false;
</span><span class="cx">     
</span><del>-    return downcast&lt;HTMLInputElement&gt;(m_node.get()).showAutoFillButton();
</del><ins>+    return downcast&lt;HTMLInputElement&gt;(m_node.get()).autoFillButtonType() != AutoFillButtonType::None;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InjectedBundleNodeHandle::setHTMLInputElementAutoFillButtonEnabled(bool filled)
</del><ins>+void InjectedBundleNodeHandle::setHTMLInputElementAutoFillButtonEnabled(AutoFillButtonType autoFillButtonType)
</ins><span class="cx"> {
</span><span class="cx">     if (!is&lt;HTMLInputElement&gt;(m_node))
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    downcast&lt;HTMLInputElement&gt;(m_node.get()).setShowAutoFillButton(filled);
</del><ins>+    downcast&lt;HTMLInputElement&gt;(m_node.get()).setShowAutoFillButton(autoFillButtonType);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> IntRect InjectedBundleNodeHandle::htmlInputElementAutoFillButtonBounds()
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleDOMInjectedBundleNodeHandleh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h (195684 => 195685)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h        2016-01-27 20:12:15 UTC (rev 195684)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h        2016-01-27 20:24:37 UTC (rev 195685)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx">     class IntRect;
</span><span class="cx">     class Node;
</span><ins>+    enum class AutoFillButtonType : uint8_t;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="lines">@@ -68,7 +69,7 @@
</span><span class="cx">     bool isHTMLInputElementAutoFilled() const;
</span><span class="cx">     void setHTMLInputElementAutoFilled(bool);
</span><span class="cx">     bool isHTMLInputElementAutoFillButtonEnabled() const;
</span><del>-    void setHTMLInputElementAutoFillButtonEnabled(bool);
</del><ins>+    void setHTMLInputElementAutoFillButtonEnabled(WebCore::AutoFillButtonType);
</ins><span class="cx">     WebCore::IntRect htmlInputElementAutoFillButtonBounds();
</span><span class="cx">     bool htmlInputElementLastChangeWasUserEdit();
</span><span class="cx">     bool htmlTextAreaElementLastChangeWasUserEdit();
</span></span></pre>
</div>
</div>

</body>
</html>