<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>62619</bug_id>
          
          <creation_ts>2011-06-13 20:42:57 -0700</creation_ts>
          <short_desc>Implement &lt;input type=color&gt; UI behavior WebCore part</short_desc>
          <delta_ts>2011-08-08 05:44:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>61276</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Keishi Hattori">keishi</reporter>
          <assigned_to name="Keishi Hattori">keishi</assigned_to>
          <cc>apavlov</cc>
    
    <cc>hyerim.bae</cc>
    
    <cc>menard</cc>
    
    <cc>sam</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>420182</commentid>
    <comment_count>0</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2011-06-13 20:42:57 -0700</bug_when>
    <thetext>Patch to implement WebCore part of &lt;input type=color&gt; UI behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420185</commentid>
    <comment_count>1</comment_count>
      <attachid>97063</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2011-06-13 20:54:55 -0700</bug_when>
    <thetext>Created attachment 97063
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420198</commentid>
    <comment_count>2</comment_count>
      <attachid>97063</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-06-13 21:33:11 -0700</bug_when>
    <thetext>Comment on attachment 97063
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=97063&amp;action=review

&gt; Source/WebCore/html/ColorInputType.cpp:116
&gt; +    element()-&gt;setValue(color.serialized(), true);

Because this line dispatches a &apos;change&apos; event and a JavaScript code can run, it&apos;s possible that the JavaScript code change the input type and this ColorInputType instance might be deleted. We must not access &apos;this&apos; after this line.

&gt; Source/WebCore/html/ColorInputType.cpp:120
&gt; +        element()-&gt;document()-&gt;page()-&gt;chrome()-&gt;runUpdateColorPanel(Color(element()-&gt;value()));

Why do we need to call runUpdateColorPanel() in colorChange()? colorChanged() is called from the color panel, isn&apos;t it?

&gt; Source/WebCore/page/Chrome.cpp:461
&gt; +void Chrome::runUpdateColorPanel(const Color color)
&gt; +{
&gt; +    m_client-&gt;runUpdateColorPanel(color);

The name &apos;runUpdateColorPanel&apos; sounds curious.
&apos;updateSelectedColorOfColorPanel&apos;?

&gt; Source/WebCore/page/ChromeClient.h:228
&gt; +        virtual void runColorPanel() = 0;

You need to add a comment of the function behavior.
What should we do if runColorPanel() is called twice?
When should we close the color panel opened by runColorPanel()?
How to obtain ColorChooser instance to which the color panel send the selected color?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422589</commentid>
    <comment_count>3</comment_count>
      <attachid>97063</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-06-17 06:36:15 -0700</bug_when>
    <thetext>Comment on attachment 97063
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=97063&amp;action=review

&gt;&gt; Source/WebCore/html/ColorInputType.cpp:120
&gt;&gt; +        element()-&gt;document()-&gt;page()-&gt;chrome()-&gt;runUpdateColorPanel(Color(element()-&gt;value()));
&gt; 
&gt; Why do we need to call runUpdateColorPanel() in colorChange()? colorChanged() is called from the color panel, isn&apos;t it?

Well I believe in JS you can change the color, and therefore the panel should update itself no? Though I&apos;m not very sure if the JS events ends up in colorChanged.

&gt; Source/WebCore/page/Chrome.cpp:456
&gt; +    m_client-&gt;runColorPanel();

What about showColorPanel()? At the end we &quot;show&quot; a popup.

To create the &lt;select&gt; popup the method&apos;s name is createSelectPopup(), perhaps we should stick with createColorChooserPanel()

&gt;&gt; Source/WebCore/page/Chrome.cpp:461
&gt;&gt; +    m_client-&gt;runUpdateColorPanel(color);
&gt; 
&gt; The name &apos;runUpdateColorPanel&apos; sounds curious.
&gt; &apos;updateSelectedColorOfColorPanel&apos;?

updatePanelCurrentColor()?

&gt;&gt; Source/WebCore/page/ChromeClient.h:228
&gt;&gt; +        virtual void runColorPanel() = 0;
&gt; 
&gt; You need to add a comment of the function behavior.
&gt; What should we do if runColorPanel() is called twice?
&gt; When should we close the color panel opened by runColorPanel()?
&gt; How to obtain ColorChooser instance to which the color panel send the selected color?

I believe if it&apos;s run twice, it doesn&apos;t matter the popup will still be shown no?

I think when a color is selected we should close the panel no?
http://www.devbeginners.com/index.php/html5/108-html5-color-picker-input-type

has an example. I couldn&apos;t find in the spec *how* the popup should look like, is there some kind of guidance for that?

&gt; Source/WebCore/platform/ColorChooser.h:46
&gt; +

I believe ports will inherits from that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423413</commentid>
    <comment_count>4</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2011-06-19 18:29:00 -0700</bug_when>
    <thetext>Thanks for taking a look!

(In reply to comment #3)
&gt; (From update of attachment 97063 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=97063&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/html/ColorInputType.cpp:120
&gt; &gt;&gt; +        element()-&gt;document()-&gt;page()-&gt;chrome()-&gt;runUpdateColorPanel(Color(element()-&gt;value()));
&gt; &gt; 
&gt; &gt; Why do we need to call runUpdateColorPanel() in colorChange()? colorChanged() is called from the color panel, isn&apos;t it?
&gt; Well I believe in JS you can change the color, and therefore the panel should update itself no? Though I&apos;m not very sure if the JS events ends up in colorChanged.

Sorry, I got mixed up when dividing the patch. I will fix it.

&gt; &gt; Source/WebCore/page/Chrome.cpp:456
&gt; &gt; +    m_client-&gt;runColorPanel();
&gt; 
&gt; What about showColorPanel()? At the end we &quot;show&quot; a popup.
&gt; 
&gt; To create the &lt;select&gt; popup the method&apos;s name is createSelectPopup(), perhaps we should stick with createColorChooserPanel()

I tried to match the name with Chrome::runOpenPanel, but I think showColorPanel is much better. I&apos;d gladly change it.

&gt; &gt;&gt; Source/WebCore/page/Chrome.cpp:461
&gt; &gt;&gt; +    m_client-&gt;runUpdateColorPanel(color);
&gt; &gt; 
&gt; &gt; The name &apos;runUpdateColorPanel&apos; sounds curious.
&gt; &gt; &apos;updateSelectedColorOfColorPanel&apos;?
&gt; 
&gt; updatePanelCurrentColor()?

Ditto.

&gt; &gt;&gt; Source/WebCore/page/ChromeClient.h:228
&gt; &gt;&gt; +        virtual void runColorPanel() = 0;
&gt; &gt; 
&gt; &gt; You need to add a comment of the function behavior.
&gt; &gt; What should we do if runColorPanel() is called twice?
&gt; &gt; When should we close the color panel opened by runColorPanel()?
&gt; &gt; How to obtain ColorChooser instance to which the color panel send the selected color?
&gt; 
&gt; I believe if it&apos;s run twice, it doesn&apos;t matter the popup will still be shown no?

I don&apos;t think we should ever show multiple color choose dialogs. It is impossible to tell which dialog is from which input element. 

Therefore I think it is safe to implement it for only one instance of ColorChooser.

&gt; I think when a color is selected we should close the panel no?
&gt; http://www.devbeginners.com/index.php/html5/108-html5-color-picker-input-type

Mac OS color picker is usually persistant. However now that I think about it, it probably should close when the page changes or something.

&gt; has an example. I couldn&apos;t find in the spec *how* the popup should look like, is there some kind of guidance for that?

I don&apos;t think there is. 

&gt; &gt; Source/WebCore/platform/ColorChooser.h:46
&gt; 
&gt; I believe ports will inherits from that?

Hopefully they wouldn&apos;t have to. I think implementing their UI stuff in ChromeClient::runColorPanel/runUpdateColorPanel should be enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423438</commentid>
    <comment_count>5</comment_count>
      <attachid>97735</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2011-06-19 20:30:08 -0700</bug_when>
    <thetext>Created attachment 97735
updated test results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423440</commentid>
    <comment_count>6</comment_count>
      <attachid>97735</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2011-06-19 20:31:03 -0700</bug_when>
    <thetext>Comment on attachment 97735
updated test results

Sorry. Wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432283</commentid>
    <comment_count>7</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-07-05 08:17:57 -0700</bug_when>
    <thetext>Hey folks,

Is there any estimate of when the patch can be landed? Web Inspector could make a good use of this feature...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432602</commentid>
    <comment_count>8</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2011-07-05 20:53:06 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Is there any estimate of when the patch can be landed? Web Inspector could make a good use of this feature...

This is my top priority but because there are UIs to decide on and many platforms to implement, it will take at least a few more months.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445808</commentid>
    <comment_count>9</comment_count>
      <attachid>102767</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2011-08-03 04:34:36 -0700</bug_when>
    <thetext>Created attachment 102767
new patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445810</commentid>
    <comment_count>10</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2011-08-03 04:36:47 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created an attachment (id=102767)(apply) [details]
&gt; new patch

Added method to close color chooser.
Better method names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446387</commentid>
    <comment_count>11</comment_count>
      <attachid>102767</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-04 01:30:45 -0700</bug_when>
    <thetext>Comment on attachment 102767
new patch

View in context: https://bugs.webkit.org/attachment.cgi?id=102767&amp;action=review

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:19091
&gt;  				E1E1BEFF115FF6FB006F52CA /* WindowsKeyboardCodes.h */,
&gt; +				C3EEE07713E7F9DE005F7460 /* ColorChooser.h */,
&gt; +				C3EEE07813E7F9DE005F7460 /* ColorChooser.cpp */,

They should be in alphabetical order.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:20281
&gt;  				41E1B1D10FF5986900576B3B /* AbstractWorker.h in Headers */,
&gt; +				C3EEE07913E7F9DE005F7460 /* ColorChooser.h in Headers */,
&gt;  				29A8122E0FBB9C1D00510293 /* AccessibilityARIAGridCell.h in Headers */,

ditto.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:26071
&gt;  				BCAB418113E356E800D8AAF3 /* Region.cpp in Sources */,
&gt; +				C3EEE07A13E7F9DE005F7460 /* ColorChooser.cpp in Sources */,

ditto.

&gt; Source/WebCore/css/html.css:640
&gt;      width: 100%;
&gt; -    height: 100%
&gt; +    height: 100%;

This change is unrelated to this bug.

&gt; Source/WebCore/html/ColorInputType.cpp:147
&gt; +    ExceptionCode ec;
&gt; +    setValueAsColor(color, ec);
&gt; +}

We shouldn&apos;t ignore the resultant ExceptionCode.
Please see the comment about setValueAsColor() in ColorInputType.h

&gt; Source/WebCore/html/ColorInputType.h:53
&gt; +    virtual void setValueAsColor(const Color&amp;, ExceptionCode&amp;) const;

We should have the default argument for ExceptionCode&amp;.
  virtual void setValueAsColor(const Color&amp;, ExceptionCode&amp; = ASSERT_NO_EXCEPTION) const;
Then, you can omit the ExceptionCode argument for call sites.

&gt; Source/WebCore/html/ColorInputType.h:60
&gt; +
&gt; +    virtual void colorSelected(const Color&amp;);

Please add a comment that this function is for ColorChooserClient.

&gt; Source/WebCore/html/HTMLInputElement.h:157
&gt; +    Color valueAsColor() const;
&gt; +    void setValueAsColor(const Color&amp;, ExceptionCode&amp;);

Why we need them in HTMLInputElement?

&gt; Source/WebCore/page/Chrome.h:163
&gt; +        void runOpenColorChooser(ColorChooser*, const Color&amp;);
&gt; +        void runCloseColorChooser();
&gt; +        void runSetSelectedColorInColorChooser(const Color&amp;);

I still don&apos;t like these function names.  &apos;run&apos; + verb sounds very strange.
I guess &quot;runOpenPanel&quot; means &quot;run an OpenPanel dialog&quot;.  So we don&apos;t need to follow it.

&gt; Source/WebCore/platform/ColorChooser.h:60
&gt; +    ColorChooser()
&gt; +    : m_client(0)

Indentation is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446388</commentid>
    <comment_count>12</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-04 01:33:39 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; I still don&apos;t like these function names.  &apos;run&apos; + verb sounds very strange.
&gt; I guess &quot;runOpenPanel&quot; means &quot;run an OpenPanel dialog&quot;.  So we don&apos;t need to follow it.

I found the names of the file chooser dialog in OS X is NSOpenPanel.  So &quot;OpenPanel&quot; is a noun.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446446</commentid>
    <comment_count>13</comment_count>
      <attachid>102900</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2011-08-04 05:41:42 -0700</bug_when>
    <thetext>Created attachment 102900
fixed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446447</commentid>
    <comment_count>14</comment_count>
      <attachid>102767</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2011-08-04 05:45:41 -0700</bug_when>
    <thetext>Comment on attachment 102767
new patch

View in context: https://bugs.webkit.org/attachment.cgi?id=102767&amp;action=review

&gt;&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj(edit):19091
&gt;&gt; +				C3EEE07813E7F9DE005F7460 /* ColorChooser.cpp */,
&gt; 
&gt; They should be in alphabetical order.

Done.

&gt;&gt; Source/WebCore/css/html.css(edit):640
&gt;&gt; +    height: 100%;
&gt; 
&gt; This change is unrelated to this bug.

Done.

&gt;&gt; Source/WebCore/html/ColorInputType.cpp(edit):147
&gt;&gt; +}
&gt; 
&gt; We shouldn&apos;t ignore the resultant ExceptionCode.
&gt; Please see the comment about setValueAsColor() in ColorInputType.h

Removed ec.

&gt;&gt; Source/WebCore/html/ColorInputType.h(edit):53
&gt;&gt; +    virtual void setValueAsColor(const Color&amp;, ExceptionCode&amp;) const;
&gt; 
&gt; We should have the default argument for ExceptionCode&amp;.
&gt;   virtual void setValueAsColor(const Color&amp;, ExceptionCode&amp; = ASSERT_NO_EXCEPTION) const;
&gt; Then, you can omit the ExceptionCode argument for call sites.

Done.

&gt;&gt; Source/WebCore/html/ColorInputType.h(edit):60
&gt;&gt; +    virtual void colorSelected(const Color&amp;);
&gt; 
&gt; Please add a comment that this function is for ColorChooserClient.

Done.

&gt;&gt; Source/WebCore/html/HTMLInputElement.h(edit):157
&gt;&gt; +    void setValueAsColor(const Color&amp;, ExceptionCode&amp;);
&gt; 
&gt; Why we need them in HTMLInputElement?

Done.
Is HTMLInputElement::valueAsDate() something left over from the past?

&gt;&gt; Source/WebCore/page/Chrome.h(edit):163
&gt;&gt; +        void runSetSelectedColorInColorChooser(const Color&amp;);
&gt; 
&gt; I still don&apos;t like these function names.  &apos;run&apos; + verb sounds very strange.
&gt; I guess &quot;runOpenPanel&quot; means &quot;run an OpenPanel dialog&quot;.  So we don&apos;t need to follow it.

Removed run part. 
I happened to be looking at parts of the code in WebKit and Chromium with lots of run*.

&gt;&gt; Source/WebCore/platform/ColorChooser.h(edit):60
&gt;&gt; +    : m_client(0)
&gt; 
&gt; Indentation is wrong.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446468</commentid>
    <comment_count>15</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-04 06:47:35 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; Why we need them in HTMLInputElement?
&gt; 
&gt; Done.
&gt; Is HTMLInputElement::valueAsDate() something left over from the past?

valueAsDate() is exposed to JavaScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446477</commentid>
    <comment_count>16</comment_count>
      <attachid>102900</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-04 06:58:34 -0700</bug_when>
    <thetext>Comment on attachment 102900
fixed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=102900&amp;action=review

&gt; Source/WebCore/html/ColorInputType.cpp:128
&gt; +void ColorInputType::willRemove()
&gt; +{
&gt; +    if (ColorChooser::chooser()-&gt;client() == this) {
&gt; +        if (Chrome* chrome = this-&gt;chrome())
&gt; +            chrome-&gt;closeColorChooser();

I think Node::willRemove() is wrong for this task.
We should close the chooser when the element disappears.  e.g. display:none;

&gt; Source/WebCore/html/ColorInputType.h:53
&gt; +    virtual Color valueAsColor() const;
&gt; +    virtual void setValueAsColor(const Color&amp;, ExceptionCode&amp; = ASSERT_NO_EXCEPTION) const;

I realized that valueAsColor() and setValueAsColor() were used only by ColorInputType.
So,
 - we dont need InputType::valueAsColor() and setValueAsColor().
 - They should not be virtual.
 - They should be private.
 - setValueAsColor() doesn&apos;t need the ExceptionCode&amp; argument at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447147</commentid>
    <comment_count>17</comment_count>
      <attachid>103057</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2011-08-05 03:53:12 -0700</bug_when>
    <thetext>Created attachment 103057
new fixed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447148</commentid>
    <comment_count>18</comment_count>
      <attachid>102900</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2011-08-05 03:57:18 -0700</bug_when>
    <thetext>Comment on attachment 102900
fixed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=102900&amp;action=review

&gt;&gt; Source/WebCore/html/ColorInputType.cpp(edit):128
&gt;&gt; +            chrome-&gt;closeColorChooser();
&gt; 
&gt; I think Node::willRemove() is wrong for this task.
&gt; We should close the chooser when the element disappears.  e.g. display:none;

Done. Moved &quot;close color chooser&quot; call to ColorInputType::detach.

&gt;&gt; Source/WebCore/html/ColorInputType.h(edit):53
&gt;&gt; +    virtual void setValueAsColor(const Color&amp;, ExceptionCode&amp; = ASSERT_NO_EXCEPTION) const;
&gt; 
&gt; I realized that valueAsColor() and setValueAsColor() were used only by ColorInputType.
&gt; So,
&gt;  - we dont need InputType::valueAsColor() and setValueAsColor().
&gt;  - They should not be virtual.
&gt;  - They should be private.
&gt;  - setValueAsColor() doesn&apos;t need the ExceptionCode&amp; argument at all.

Done.


Also added ColorChooser::closeColorChooserIfClientInDocument(). It is called from WebCore::FrameLoader::transitionToCommitted so it closes the color chooser when the another page is loaded in the frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447150</commentid>
    <comment_count>19</comment_count>
      <attachid>103057</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-05 04:03:32 -0700</bug_when>
    <thetext>Comment on attachment 103057
new fixed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=103057&amp;action=review

&gt; Source/WebCore/html/HTMLInputElement.cpp:890
&gt; +#if ENABLE(INPUT_COLOR)
&gt; +    if (ColorChooser::chooser()-&gt;client() == m_inputType) {
&gt; +        if (m_inputType-&gt;isColorControl) {
&gt; +            if (Page* page = frame-&gt;page())
&gt; +                page-&gt;chrome()-&gt;closeColorChooser();
&gt; +        }
&gt; +    }
&gt; +#endif

We should not add type-specific code into HTMLInputElement.
Please add InputType::elementWasDetached().

&gt; Source/WebCore/platform/ColorChooser.h:46
&gt; +    virtual void closeColorChooserIfClientInDocument(Document*) = 0;

IfClientInDocument -&gt; IfClientIsInDocument</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447155</commentid>
    <comment_count>20</comment_count>
      <attachid>103060</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2011-08-05 04:40:11 -0700</bug_when>
    <thetext>Created attachment 103060
new new fixed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447156</commentid>
    <comment_count>21</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2011-08-05 04:42:06 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 103057(apply) [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103057&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLInputElement.cpp:890
&gt; &gt; +#if ENABLE(INPUT_COLOR)
&gt; &gt; +    if (ColorChooser::chooser()-&gt;client() == m_inputType) {
&gt; &gt; +        if (m_inputType-&gt;isColorControl) {
&gt; &gt; +            if (Page* page = frame-&gt;page())
&gt; &gt; +                page-&gt;chrome()-&gt;closeColorChooser();
&gt; &gt; +        }
&gt; &gt; +    }
&gt; &gt; +#endif
&gt; 
&gt; We should not add type-specific code into HTMLInputElement.
&gt; Please add InputType::elementWasDetached().

This shouldn&apos;t have been there. I got my git branches mixed up. 
I added InputType::detach to be in line with the existing InputType::attach, but elementWasDetached would be better. Should I rename InputType::attach too?

&gt; &gt; Source/WebCore/platform/ColorChooser.h:46
&gt; &gt; +    virtual void closeColorChooserIfClientInDocument(Document*) = 0;
&gt; 
&gt; IfClientInDocument -&gt; IfClientIsInDocument

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447157</commentid>
    <comment_count>22</comment_count>
      <attachid>103060</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-05 04:42:35 -0700</bug_when>
    <thetext>Comment on attachment 103060
new new fixed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=103060&amp;action=review

&gt; Source/WebCore/ChangeLog:27
&gt; +        * html/HTMLInputElement.cpp:
&gt; +        (WebCore::HTMLInputElement::detach): Close color chooser. Called when input element or its ancestors have &quot;display:none&quot;
&gt; +        or is removed from DOM.

ChangeLog is out-of-sync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447165</commentid>
    <comment_count>23</comment_count>
      <attachid>103063</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2011-08-05 05:35:37 -0700</bug_when>
    <thetext>Created attachment 103063
updated changelog and pbxproj</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447168</commentid>
    <comment_count>24</comment_count>
      <attachid>103063</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-05 05:42:43 -0700</bug_when>
    <thetext>Comment on attachment 103063
updated changelog and pbxproj

ok!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447184</commentid>
    <comment_count>25</comment_count>
      <attachid>103063</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-05 06:45:37 -0700</bug_when>
    <thetext>Comment on attachment 103063
updated changelog and pbxproj

Clearing flags on attachment: 103063

Committed r92477: &lt;http://trac.webkit.org/changeset/92477&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447185</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-05 06:45:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447247</commentid>
    <comment_count>27</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-08-05 09:48:52 -0700</bug_when>
    <thetext>This patch introduced a layering violation by using Document.h from the platform directory.  Please consider reverting and fixing this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447519</commentid>
    <comment_count>28</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-05 18:05:17 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; This patch introduced a layering violation by using Document.h from the platform directory.  Please consider reverting and fixing this issue.

You&apos;re right!  Thank you for pointing it out.
I&apos;ll roll out this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447520</commentid>
    <comment_count>29</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-05 18:07:03 -0700</bug_when>
    <thetext>Reverted r92477 for reason:

Layering violation. We should not use WebCore/dom/ in WebCore/platform/.

Committed r92533: &lt;http://trac.webkit.org/changeset/92533&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447542</commentid>
    <comment_count>30</comment_count>
      <attachid>103063</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-05 19:06:40 -0700</bug_when>
    <thetext>Comment on attachment 103063
updated changelog and pbxproj

View in context: https://bugs.webkit.org/attachment.cgi?id=103063&amp;action=review

&gt; Source/WebCore/loader/FrameLoader.cpp:1825
&gt; +    if (m_frame-&gt;document())
&gt; +        ColorChooser::chooser()-&gt;closeColorChooserIfClientIsInDocument(m_frame-&gt;document());

Are there no other ways to close the color chooser when the document is navigated out?  Is not the document detached?

Some ideas to remove the layering violation:
* Introduce ColorChooserContext interface class, and Document inherits it, or
* Register/unregister unload(?) callback to Document or Frame.  A ColorChooserClient registers itself to it.

&gt; Source/WebCore/platform/ColorChooser.cpp:47
&gt; +        staticChooser = new ColorChooser();

We should use
   adoptPtr(new ColorChooser()).leakPtr()
to inform no one will delete this object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447835</commentid>
    <comment_count>31</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2011-08-07 22:06:23 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 103063(apply) [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103063&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:1825
&gt; &gt; +    if (m_frame-&gt;document())
&gt; &gt; +        ColorChooser::chooser()-&gt;closeColorChooserIfClientIsInDocument(m_frame-&gt;document());
&gt; 
&gt; Are there no other ways to close the color chooser when the document is navigated out?  Is not the document detached?

Document::detach and ColorInputType::detach do get called when navigating to another page, but it is like 10 seconds after the new page is displayed. It seems to be called when a timer is fired and PageCache::releaseAutoreleasedPagesNowOrReschedule is called.

We can close the color chooser much faster if we call from FrameLoader.

&gt; Some ideas to remove the layering violation:
&gt; * Introduce ColorChooserContext interface class, and Document inherits it, or
&gt; * Register/unregister unload(?) callback to Document or Frame.  A ColorChooserClient registers itself to it.

I tried to make the change minimal in my next patch. However it still uses the word &quot;ColorInputType&quot; inside a method name so I think it is still layering violation.

&gt; We should use
&gt;    adoptPtr(new ColorChooser()).leakPtr()
&gt; to inform no one will delete this object.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447839</commentid>
    <comment_count>32</comment_count>
      <attachid>103201</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2011-08-07 22:14:33 -0700</bug_when>
    <thetext>Created attachment 103201
fix layering violation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447841</commentid>
    <comment_count>33</comment_count>
      <attachid>103201</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-07 22:26:19 -0700</bug_when>
    <thetext>Comment on attachment 103201
fix layering violation

View in context: https://bugs.webkit.org/attachment.cgi?id=103201&amp;action=review

&gt; Source/WebCore/ChangeLog:39
&gt; +        (WebCore::FrameLoader::transitionToCommitted): Close color chooser when
&gt; +        navigating away from the page.

Adding the reason that detach() doesn&apos;t work would be helpful.

&gt; Source/WebCore/html/ColorInputType.cpp:203
&gt; +    if (ColorChooser::chooser()-&gt;client() == this) {

We prefer early exit.

if (ColorChooser::chooser()-&gt;client() != this)
    return;

&gt; Source/WebCore/loader/FrameLoader.cpp:1828
&gt; +        ColorInputType* colorInputType = (ColorInputType*)colorChooserClient;
&gt; +        colorInputType-&gt;closeColorChooserIfCurrentClient();

Should use C++-style cast instead of C-style cast.

static_cast&lt;ColorInputType*&gt;(colorChooserClient)-&gt;closeColorChooserIfCurrenClient();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447868</commentid>
    <comment_count>34</comment_count>
      <attachid>103210</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2011-08-07 23:57:24 -0700</bug_when>
    <thetext>Created attachment 103210
new patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447870</commentid>
    <comment_count>35</comment_count>
      <attachid>103201</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2011-08-07 23:58:13 -0700</bug_when>
    <thetext>Comment on attachment 103201
fix layering violation

View in context: https://bugs.webkit.org/attachment.cgi?id=103201&amp;action=review

&gt;&gt; Source/WebCore/ChangeLog(edit):39
&gt;&gt; +        navigating away from the page.
&gt; 
&gt; Adding the reason that detach() doesn&apos;t work would be helpful.

Done.

&gt;&gt; Source/WebCore/html/ColorInputType.cpp(edit):203
&gt;&gt; +    if (ColorChooser::chooser()-&gt;client() == this) {
&gt; 
&gt; We prefer early exit.
&gt; 
&gt; if (ColorChooser::chooser()-&gt;client() != this)
&gt;     return;

Done.

&gt;&gt; Source/WebCore/loader/FrameLoader.cpp(edit):1828
&gt;&gt; +        colorInputType-&gt;closeColorChooserIfCurrentClient();
&gt; 
&gt; Should use C++-style cast instead of C-style cast.
&gt; 
&gt; static_cast&lt;ColorInputType*&gt;(colorChooserClient)-&gt;closeColorChooserIfCurrenClient();

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447871</commentid>
    <comment_count>36</comment_count>
      <attachid>103210</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-08 00:04:54 -0700</bug_when>
    <thetext>Comment on attachment 103210
new patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447962</commentid>
    <comment_count>37</comment_count>
      <attachid>103210</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 05:44:49 -0700</bug_when>
    <thetext>Comment on attachment 103210
new patch

Clearing flags on attachment: 103210

Committed r92592: &lt;http://trac.webkit.org/changeset/92592&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447963</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 05:44:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97063</attachid>
            <date>2011-06-13 20:54:55 -0700</date>
            <delta_ts>2011-06-19 20:30:02 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-62619-20110614125453.patch</filename>
            <type>text/plain</type>
            <size>17863</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg3NTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmOWQ3ZDBjM2E1OGFkYzMz
Mjc2ZWFlNDUwZDgzNWEwYjRiNGE2NmUyLi5iNjdmZDJmMGQ3ZDUyOGE3ODI0YjY5YjY0MTc2YWFi
YTBkMGE5MTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDYtMTMgIEtlaXNo
aSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHJ1bkNvbG9yUGFuZWwvcnVudXBkYXRlQ29sb3JQ
YW5lbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI2
MTkKKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGNhbm5vdCBiZSBidWlsdC4K
KworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBBZGRlZCBDb2xvckNob29zZXI6OmNob29zZUNv
bG9yIGFuZCBDb2xvckNob29zZXI6OmNob29zZXIgCisgICAgICAgIGJlY2F1c2UgdGhleSB3aWxs
IGJlIHVzZWQgaW4gV2ViS2l0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkZWQgQ29sb3JDaG9vc2VyLntoLGNwcH0KKyAgICAgICAgKiBjc3MvaHRtbC5j
c3M6CisgICAgICAgIChpbnB1dFt0eXBlPSJjb2xvciJdOjotd2Via2l0LWNvbG9yLXN3YXRjaC13
cmFwcGVyKTogQWRkZWQgZm9yZ290dGVuIHNlbWljb2xvbi4KKyAgICAgICAgKiBodG1sL0NvbG9y
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjb2xvckNo
YW5nZWQpOiBBZGRlZC4gQ2FsbGVkIHdoZW4gdXNlciBjaGFuZ2VzIAorICAgICAgICB0aGUgY29s
b3IgZnJvbSB0aGUgY29sb3IgcGFuZWwuCisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlw
ZTo6aGFuZGxlQ2xpY2tFdmVudCk6IEFkZGVkLiBPcGVuIGNvbG9yIHBhbmVsIHdoZW4gdXNlciBj
bGlja3MuCisgICAgICAgICogaHRtbC9Db2xvcklucHV0VHlwZS5oOgorICAgICAgICAqIGxvYWRl
ci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5Q2hyb21lQ2xpZW50Ojpy
dW5Db2xvclBhbmVsKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVu
dDo6cnVuVXBkYXRlQ29sb3JQYW5lbCk6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cnVuQ29sb3JQYW5lbCk6IEFkZGVkLiBPcGVu
cyBjb2xvciBwYW5lbC4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cnVuVXBkYXRlQ29sb3JQ
YW5lbCk6IEFkZGVkLiBVcGRhdGUgY29sb3IgaW4gY29sb3IgcGFuZWwuIFVzZWQgdG8gc2V0IAor
ICAgICAgICBpbml0aWFsIHZhbHVlIGFuZCB3aGVuIEphdmFTY3JpcHQgY2hhbmdlcyB0aGUgdmFs
dWUuCisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL0NvbG9yQ2hvb3Nlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xpZW50Ojp+Q29sb3JDaG9vc2VyQ2xpZW50KTogRGlz
Y29ubmVjdHMgaXRzZWxmIHdoZW4gZGVzdHJveWVkLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JD
aG9vc2VyOjpjaG9vc2VyKTogR2V0IHNpbmdsZXRvbiBpbnN0YW5jZSwKKyAgICAgICAgKFdlYkNv
cmU6OkNvbG9yQ2hvb3Nlcjo6Y29ubmVjdENsaWVudCk6IENvbm5lY3QgYSBjbGllbnQgdGhhdCB3
aWxsIHJlY2VpdmUgdGhlIGNvbG9yQ2hhbmdlZCBjYWxscy4KKyAgICAgICAgKFdlYkNvcmU6OkNv
bG9yQ2hvb3Nlcjo6ZGlzY29ubmVjdENsaWVudCk6IERpc2Nvbm5lY3QgY2xpZW50IGlmIGNsaWVu
dCBpcyBjdXJyZW50bHkgY29ubmVjdGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDaG9vc2Vy
OjpjaG9vc2VDb2xvcik6IENhbGxlZCBmcm9tIFdlYktpdCBzaWRlLgorICAgICAgICAqIHBsYXRm
b3JtL0NvbG9yQ2hvb3Nlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ2hvb3Nl
cjo6Y2xpZW50KTogQ3VycmVudGx5IGNvbm5lY3RlZCBjbGllbnQuCisKIDIwMTEtMDYtMTMgIEpv
b25lIEh1ciAgPGpvb25lLmh1ckBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgTWFydGluIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA0Y2M4ODA1M2FjNjJl
Y2UyN2RkZGM0ODQ4ODk4M2FmMGQzNWZjYzEzLi4xNDAyYzc3ZjVmNGI3ODA3MDA1Y2Q4NWFkYzAy
NmY1NzgzZWUzYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTg4NiwzICsxODg2LDggQEAg
X19aTjdXZWJDb3JlMTJTY2hlZHVsZVBhaXJDMUVQMTFfX0NGUnVuTG9vcFBLMTBfX0NGU3RyaW5n
CiAjZWxzZQogX19aTjdXZWJDb3JlMTJTY2hlZHVsZVBhaXJDMUVQOU5TUnVuTG9vcFBLMTBfX0NG
U3RyaW5nCiAjZW5kaWYKKworI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKK19fWk43V2ViQ29yZTEy
Q29sb3JDaG9vc2VyMTFjaG9vc2VDb2xvckVOU181Q29sb3JFCitfX1pON1dlYkNvcmUxMkNvbG9y
Q2hvb3NlcjdjaG9vc2VyRXYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZhMzg0ODdiY2NlNjlkMGVmMjhiMjc2YWFm
ZDA5OTBiMGEzMTVjZDIuLjgwYTdiMmJjNTRlOThkNzI0ZmM3ZWY3ODBmMTQxYWFkNGU0N2VlOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTUzODgsNiArNTM4OCw3IEBACiAJCUMwRjJBNDQxMTM4NjlBQUIwMDY2QzUzNCAvKiBw
cmVwcm9jZXNzb3IucG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxMDVEQTYyMEYzQUE2
OEYwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTA1REE2MTBGM0FBNjhGMDAxREQ0NEYg
LyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwICovOyB9OwogCQlDMTA1REE2NDBGM0FBNkI4
MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMDVEQTYzMEYzQUE2QjgwMDFERDQ0RiAvKiBUZXh0
RW5jb2RpbmdEZXRlY3Rvci5oICovOyB9OworCQlDMzUzQTcxQzEzQTcwREZDMDA3NEQ1MkIgLyog
Q29sb3JDaG9vc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMzUzQTcxQjEzQTcwREVEMDA3NEQ1MkIgLyogQ29sb3JDaG9vc2VyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzM5NTA5QjYxMzhEMDVE
NDAwOTEyRTUyIC8qIEVsZW1lbnRXaXRoUHNldWRvSWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzOTUwOUI0MTM4RDA1RDQwMDkxMkU1MiAvKiBFbGVt
ZW50V2l0aFBzZXVkb0lkLmggKi87IH07CiAJCUMzOTUwOUI3MTM4RDA1RDQwMDkxMkU1MiAvKiBF
bGVtZW50V2l0aFBzZXVkb0lkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMzOTUwOUI1MTM4RDA1RDQwMDkxMkU1MiAvKiBFbGVtZW50V2l0aFBzZXVk
b0lkLmNwcCAqLzsgfTsKIAkJQzUwQjU2MTYxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGlu
Z3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUw
QjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwICovOyB9OwpAQCAtMTE5
NTYsNiArMTE5NTcsOCBAQAogCQlDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vz
c29yLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IHByZXByb2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlwdHMv
cHJlcHJvY2Vzc29yLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTA1REE2MTBG
M0FBNjhGMDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTA1REE2MzBGM0FBNkI4MDAxREQ0NEYgLyog
VGV4dEVuY29kaW5nRGV0ZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGV4dEVuY29kaW5nRGV0ZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzM1
M0E3MUExM0E3MERFRDAwNzRENTJCIC8qIENvbG9yQ2hvb3Nlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2xvckNob29zZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMzUzQTcxQjEzQTcwREVEMDA3NEQ1MkIgLyogQ29sb3JDaG9vc2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yQ2hvb3Nlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMzk1MDlCNDEzOEQwNUQ0MDA5MTJFNTIgLyogRWxlbWVu
dFdpdGhQc2V1ZG9JZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50
V2l0aFBzZXVkb0lkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzOTUwOUI1MTM4
RDA1RDQwMDkxMkU1MiAvKiBFbGVtZW50V2l0aFBzZXVkb0lkLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVsZW1lbnRXaXRoUHNldWRvSWQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDNTBCNTYxNDEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0
aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcm91cFNldHRp
bmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4Nzk3LDYgKzE4ODAwLDgg
QEAKIAkJCQk4OUQwOEQ5RDEyMjI4NDUxMDAxMjQxREYgLyogQXN5bmNGaWxlU3lzdGVtLmggKi8s
CiAJCQkJODlEMDhEOUUxMjIyODQ1MTAwMTI0MURGIC8qIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cy5oICovLAogCQkJCTUxRTFFQ0IxMEM5MUM1NTYwMERDMjU1QiAvKiBBdXRvZHJhaW5lZFBvb2wu
aCAqLywKKwkJCQlDMzUzQTcxQTEzQTcwREVEMDA3NEQ1MkIgLyogQ29sb3JDaG9vc2VyLmNwcCAq
LywKKwkJCQlDMzUzQTcxQjEzQTcwREVEMDA3NEQ1MkIgLyogQ29sb3JDaG9vc2VyLmggKi8sCiAJ
CQkJQkNDOENGQ0EwOTg2Q0QyNDAwMTQwQkYyIC8qIENvbG9yRGF0YS5ncGVyZiAqLywKIAkJCQk0
MUQwMTVDOTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3BwICovLAogCQkJCTQxRDAx
NUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovLApAQCAtMjAyNjEsNiArMjAy
NjYsNyBAQAogCQkJCTkzQzQ0MUYwMEY4MTNBMUEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uQ2FjaGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzQ0MjAwMEY4MTNBRTEwMEMxQTYzNCAvKiBDb2xsZWN0
aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NjcwQjA1MzgxNDAwMkNFNjRGIC8q
IENvbG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMzUzQTcxQzEzQTcwREZDMDA3NEQ1MkIgLyog
Q29sb3JDaG9vc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk2MzBEMDBCRjIyMDA3MUI3
ODIgLyogQ29sb3JEaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjQxMjUxRjEy
RDAwM0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFREUzQTUw
MDBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL2h0bWwuY3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL2h0bWwu
Y3NzCmluZGV4IGY5YWFmZWE0NmFkN2M3YWJiOTRmZTdhMzIwZTA3MzQ1MDVkNjUxY2UuLmJlMTRk
NDAzYTQ0ZWJkZTg2M2FiMzFhZDZmNDQ4ZDY2NTcwZWY4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9odG1sLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MKQEAg
LTU5Miw3ICs1OTIsNyBAQCBpbnB1dFt0eXBlPSJjb2xvciJdOjotd2Via2l0LWNvbG9yLXN3YXRj
aC13cmFwcGVyIHsKICAgICBwYWRkaW5nOiA0cHggMnB4OwogICAgIC13ZWJraXQtYm94LXNpemlu
ZzogYm9yZGVyLWJveDsKICAgICB3aWR0aDogMTAwJTsKLSAgICBoZWlnaHQ6IDEwMCUKKyAgICBo
ZWlnaHQ6IDEwMCU7CiB9CiAKIGlucHV0W3R5cGU9ImNvbG9yIl06Oi13ZWJraXQtY29sb3Itc3dh
dGNoIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKaW5kZXggMGU5ODA1YjFi
NDFjYTljNDVkZDUyYmViYzdhNTQ3MGM3NjcyYTZkYS4uODMzMDBlYzljMjc4OTM4ZTM1ZDA3YmFl
ZTg3Y2QyYmIyMDIzOGRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAK
QEAgLTMxLDkgKzMxLDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29sb3JJ
bnB1dFR5cGUuaCIKIAorI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCiAj
aW5jbHVkZSAiRWxlbWVudFdpdGhQc2V1ZG9JZC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1l
bnQuaCIKKyNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTA4LDYgKzExMSwyNyBAQCB2b2lkIENvbG9ySW5w
dXRUeXBlOjp2YWx1ZUNoYW5nZWQoKQogICAgIHVwZGF0ZUNvbG9yU3dhdGNoKCk7CiB9CiAKK3Zv
aWQgQ29sb3JJbnB1dFR5cGU6OmNvbG9yQ2hhbmdlZChjb25zdCBDb2xvciBjb2xvcikKK3sKKyAg
ICBlbGVtZW50KCktPnNldFZhbHVlKGNvbG9yLnNlcmlhbGl6ZWQoKSwgdHJ1ZSk7CisKKyAgICBD
b2xvckNob29zZXIqIGNob29zZXIgPSBDb2xvckNob29zZXI6OmNob29zZXIoKTsKKyAgICBpZiAo
Y2hvb3Nlci0+Y2xpZW50KCkgPT0gdGhpcykKKyAgICAgICAgZWxlbWVudCgpLT5kb2N1bWVudCgp
LT5wYWdlKCktPmNocm9tZSgpLT5ydW5VcGRhdGVDb2xvclBhbmVsKENvbG9yKGVsZW1lbnQoKS0+
dmFsdWUoKSkpOworfQorCit2b2lkIENvbG9ySW5wdXRUeXBlOjpoYW5kbGVDbGlja0V2ZW50KE1v
dXNlRXZlbnQqIGV2ZW50KQoreworICAgIENvbG9yQ2hvb3NlciogY2hvb3NlciA9IENvbG9yQ2hv
b3Nlcjo6Y2hvb3NlcigpOworICAgIGNob29zZXItPmNvbm5lY3RDbGllbnQodGhpcyk7CisKKyAg
ICBDaHJvbWUqIGNocm9tZSA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUo
KTsKKyAgICBjaHJvbWUtPnJ1bkNvbG9yUGFuZWwoKTsKKyAgICBjaHJvbWUtPnJ1blVwZGF0ZUNv
bG9yUGFuZWwoQ29sb3IoZWxlbWVudCgpLT52YWx1ZSgpKSk7CisKKyAgICBldmVudC0+c2V0RGVm
YXVsdEhhbmRsZWQoKTsKK30KKwogdm9pZCBDb2xvcklucHV0VHlwZTo6dXBkYXRlQ29sb3JTd2F0
Y2goKQogewogICAgIEhUTUxFbGVtZW50KiBjb2xvclN3YXRjaCA9IHNoYWRvd0NvbG9yU3dhdGNo
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmgKaW5kZXggZDM0MDg0ZjAzMGZjZGQz
M2RiNmI3NjE0ZTE3YzgxOGJiM2UzMjM2ZC4uNmJjNTljNjQyMWJiYjk5ZjdmNWY2YWJlNDRkNGE2
YzgwMDYwODA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlw
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaApAQCAtMzIsMTIg
KzMyLDEzIEBACiAjZGVmaW5lIENvbG9ySW5wdXRUeXBlX2gKIAogI2luY2x1ZGUgIkJhc2VCdXR0
b25JbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJDb2xvckNob29zZXIuaCIKIAogI2lmIEVOQUJMRShJ
TlBVVF9DT0xPUikKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb2xvcklucHV0VHlw
ZSA6IHB1YmxpYyBJbnB1dFR5cGUgeworY2xhc3MgQ29sb3JJbnB1dFR5cGUgOiBwdWJsaWMgSW5w
dXRUeXBlLCBwcml2YXRlIENvbG9yQ2hvb3NlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOwogCkBAIC01
MCw2ICs1MSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgc2FuaXRpemVWYWx1ZShj
b25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCB2YWx1ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sb3JD
aGFuZ2VkKGNvbnN0IENvbG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQ2xpY2tFdmVudChN
b3VzZUV2ZW50Kik7CiAKICAgICB2b2lkIHVwZGF0ZUNvbG9yU3dhdGNoKCk7CiAgICAgSFRNTEVs
ZW1lbnQqIHNoYWRvd0NvbG9yU3dhdGNoKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgKaW5kZXggMzNjMjZiY2Q3ZDc1OTM3NjRkZmI5YzM1ODE2MDljZDQ0YjcyMGVjNS4u
NzJjZDhiNjQxNmY0ZjM2ODllYTViZmYyNjBkZTFkYmJmOWM2MjBkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaApAQCAtMTkyLDYgKzE5MiwxMSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQorICAgIHZp
cnR1YWwgdm9pZCBydW5Db2xvclBhbmVsKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJ1blVwZGF0
ZUNvbG9yUGFuZWwoY29uc3QgQ29sb3IpIHsgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoRElSRUNU
T1JZX1VQTE9BRCkKICAgICB2aXJ0dWFsIHZvaWQgZW51bWVyYXRlQ2hvc2VuRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYsIEZpbGVDaG9vc2VyKikgeyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cAppbmRleCAwNGY5ZTRiOWNjMjg5ZDAxODAyNTljNDgyNGU2OGVlMDUyY2JmOTMxLi4yZWY3OThj
YTY2YjcxMDVkMTY2YWU0ZWEwNjhkODQ3YTFmN2NkMDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3Bw
CkBAIC00NTAsNiArNDUwLDE4IEBAIHZvaWQgQ2hyb21lOjpjYW5jZWxHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0Rm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBHZW9sb2NhdGlvCiAgICAgbV9jbGll
bnQtPmNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShmcmFtZSwgZ2Vv
bG9jYXRpb24pOwogfQogCisjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQordm9pZCBDaHJvbWU6OnJ1
bkNvbG9yUGFuZWwoKQoreworICAgIG1fY2xpZW50LT5ydW5Db2xvclBhbmVsKCk7Cit9CisKK3Zv
aWQgQ2hyb21lOjpydW5VcGRhdGVDb2xvclBhbmVsKGNvbnN0IENvbG9yIGNvbG9yKQoreworICAg
IG1fY2xpZW50LT5ydW5VcGRhdGVDb2xvclBhbmVsKGNvbG9yKTsKK30KKyNlbmRpZiAgCisgICAg
CiAjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCiB2b2lkIENocm9tZTo6ZW51bWVyYXRlQ2hv
c2VuRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZUNob29zZXIqIGZpbGVDaG9vc2Vy
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggYmFiN2VlM2ZiZmZmMDI5MjY3NTQ0NjE2MjJhNWIz
OThhM2IyN2NlMC4uNGZhZWY4MjExMmQzYjAzYWE1N2JjMzJkMGI1YWE1ZmNlZTJjZDUwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZS5oCkBAIC0xNTEsNiArMTUxLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdm9pZCByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUq
LCBHZW9sb2NhdGlvbiopOwogICAgICAgICB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RGb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKik7CiAKKyNpZiBFTkFCTEUoSU5Q
VVRfQ09MT1IpCisgICAgICAgIHZvaWQgcnVuQ29sb3JQYW5lbCgpOworICAgICAgICB2b2lkIHJ1
blVwZGF0ZUNvbG9yUGFuZWwoY29uc3QgQ29sb3IpOworI2VuZGlmCisKICAgICAgICAgdm9pZCBy
dW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7CiAgICAgICAgIHZv
aWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUNob29zZXIq
KTsKICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCmluZGV4IGY2Y2EyZjUyYWRjNWFhNjgwZjM5MDY3MmFiYWIxOTAzNzJiMTAyYmYuLjJjY2Vl
MDQ0OWMzMmMxMzJkMWUxZTMyODlmYzE0YmU4MzBjMjNiMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaApAQCAtMjI0LDYgKzIyNCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJh
bWUqLCBHZW9sb2NhdGlvbiopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKikgPSAw
OwogCisjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQorICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuQ29s
b3JQYW5lbCgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJ1blVwZGF0ZUNvbG9yUGFuZWwo
Y29uc3QgQ29sb3IpID0gMDsKKyNlbmRpZgorCiAgICAgICAgIHZpcnR1YWwgdm9pZCBydW5PcGVu
UGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPikgPSAwOwogICAgICAgICAvLyBB
c3luY2hyb25vdXMgcmVxdWVzdCB0byBsb2FkIGFuIGljb24gZm9yIHNwZWNpZmllZCBmaWxlbmFt
ZXMuCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBGaWxlQ2hvb3NlciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NvbG9yQ2hvb3Nlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db2xv
ckNob29zZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3MWI3MDMyMzhiZDBkNzc2ODIyZmM2MTlhNzY2YzAy
NTJkZjYzOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db2xv
ckNob29zZXIuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgorCisjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NvbG9yQ2hvb3NlckNsaWVudDo6fkNvbG9yQ2hvb3Nl
ckNsaWVudCgpCit7CisgICAgQ29sb3JDaG9vc2VyOjpjaG9vc2VyKCktPmRpc2Nvbm5lY3RDbGll
bnQodGhpcyk7Cit9CisKK3N0YXRpYyBDb2xvckNob29zZXIqIHN0YXRpY0Nob29zZXIgPSAwOwor
CitDb2xvckNob29zZXIqIENvbG9yQ2hvb3Nlcjo6Y2hvb3NlcigpCit7CisgICAgaWYgKCFzdGF0
aWNDaG9vc2VyKQorICAgICAgICBzdGF0aWNDaG9vc2VyID0gbmV3IENvbG9yQ2hvb3NlcigpOwor
CisgICAgcmV0dXJuIHN0YXRpY0Nob29zZXI7Cit9CisKK3ZvaWQgQ29sb3JDaG9vc2VyOjpjb25u
ZWN0Q2xpZW50KENvbG9yQ2hvb3NlckNsaWVudCogY2xpZW50KQoreworICAgIGlmIChjbGllbnQg
IT0gbV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50ID0gY2xpZW50OworfQorCit2b2lkIENvbG9y
Q2hvb3Nlcjo6ZGlzY29ubmVjdENsaWVudChDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCkKK3sK
KyAgICBpZiAoY2xpZW50ID09IG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudCA9IDA7Cit9CisK
K3ZvaWQgQ29sb3JDaG9vc2VyOjpjaG9vc2VDb2xvcihDb2xvciBjb2xvcikKK3sKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5jb2xvckNoYW5nZWQoY29sb3IpOworfQorCit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db2xvckNob29zZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nv
bG9yQ2hvb3Nlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjYzY2ODJmNmRiMjQzNDk2YzU5ODgzZjBlMTJhNmEy
YjQ3Zjg5NzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db2xv
ckNob29zZXIuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgQ29sb3JDaG9vc2Vy
X2gKKyNkZWZpbmUgQ29sb3JDaG9vc2VyX2gKKworI2luY2x1ZGUgIkNvbG9yLmgiCisKKyNpZiBF
TkFCTEUoSU5QVVRfQ09MT1IpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29sb3JD
aG9vc2VyOworCitjbGFzcyBDb2xvckNob29zZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1
YWwgdm9pZCBjb2xvckNoYW5nZWQoY29uc3QgQ29sb3IpID0gMDsKKyAgICB2aXJ0dWFsIH5Db2xv
ckNob29zZXJDbGllbnQoKTsKK307CisKK2NsYXNzIENvbG9yQ2hvb3NlciB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIENvbG9yQ2hvb3NlciogY2hvb3NlcigpOworCisgICAgQ29sb3JDaG9vc2VyQ2xp
ZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfTsKKyAgICB2b2lkIGNvbm5l
Y3RDbGllbnQoQ29sb3JDaG9vc2VyQ2xpZW50Kik7CisgICAgdm9pZCBkaXNjb25uZWN0Q2xpZW50
KENvbG9yQ2hvb3NlckNsaWVudCopOworCisgICAgdm9pZCBjaG9vc2VDb2xvcihDb2xvcik7CisK
K3ByaXZhdGU6CisgICAgQ29sb3JDaG9vc2VyQ2xpZW50KiBtX2NsaWVudDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9DT0xPUikKKworI2Vu
ZGlmIC8vIENvbG9yQ2hvb3Nlcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97735</attachid>
            <date>2011-06-19 20:30:08 -0700</date>
            <delta_ts>2011-06-19 20:31:03 -0700</delta_ts>
            <desc>updated test results</desc>
            <filename>bug-62619-20110620123006.patch</filename>
            <type>text/plain</type>
            <size>3922</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkyMjcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhZTA4MWU4MjYxNTg3MjhmMjFkMjg4
MjZmNTg0OGNiY2MzMDZmMTJkLi42ODI0YWE4YzVkZDFkMTE4M2ExZjRkYjk2MjE2MTNlMjQzNTE3
ZDUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDYtMTkgIEtlaXNoaSBIYXR0b3JpICA8
a2Vpc2hpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCisK
KyAgICAgICAgQ2xpY2tpbmcgaW5kZXRlcm1pbmF0ZSBjaGVja2JveCBzaG91bGQgZmxpcCBjaGVj
a2VkbmVzcyBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjIyNjIKKworICAgICAgICAqIGZhc3QvZm9ybXMvY2hlY2tib3gtY2xpY2staW5kZXRl
cm1pbmF0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvY2hlY2ti
b3gtY2xpY2staW5kZXRlcm1pbmF0ZS5odG1sOiBBZGRlZC4gVGVzdHMgYmVoYXZpb3Igd2hlbiBj
bGlja2luZyBpbmRldGVybWluYXRlIGNoZWNrYm94LgorCiAyMDExLTA2LTE5ICBBZGFtIEJlcmdr
dmlzdCAgPGFkYW0uYmVyZ2t2aXN0QGVyaWNzc29uLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2No
ZWNrYm94LWNsaWNrLWluZGV0ZXJtaW5hdGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
Y2hlY2tib3gtY2xpY2staW5kZXRlcm1pbmF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5YzRkYTg2Zjg1
NTAyMjgxMDlhMTc3NWJmOTQwYWQxOGNkMWQ4MzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2NoZWNrYm94LWNsaWNrLWluZGV0ZXJtaW5hdGUuaHRtbApAQCAtMCww
ICsxLDQ3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgordmFyIGNiID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoY2IpOworY2IudHlwZSA9ICJjaGVja2JveCI7CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Rz
IHRoYXQgY2xpY2tpbmcgb24gaW5kZXRlcm1pbmF0ZSBjaGVja2JveCBmbGlwcyBib3RoIGNoZWNr
ZWQvaW5kZXRlcm1pbmF0ZSBzdGF0ZXMgYW5kIGNhbGxpbmcgcHJldmVudERlZmF1bHQgcmVzdG9y
ZXMgdGhlbS4iKTsKKworZGVidWcoIlRlc3QgaWYgY2xpY2tpbmcgb24gdW5jaGVja2VkIGluZGV0
ZXJtaW5hdGUgY2hlY2tib3ggZmxpcHMgYm90aCBjaGVja2VkL2luZGV0ZXJtaW5hdGUgc3RhdGVz
Iik7CitjYi5jaGVja2VkID0gZmFsc2U7CitjYi5pbmRldGVybWluYXRlID0gdHJ1ZTsKK2NiLmNs
aWNrKCk7CitzaG91bGRCZVRydWUoJ2NiLmNoZWNrZWQnKTsKK3Nob3VsZEJlRmFsc2UoJ2NiLmlu
ZGV0ZXJtaW5hdGUnKTsKKworZGVidWcoIlRlc3QgaWYgY2xpY2tpbmcgb24gY2hlY2tlZCBpbmRl
dGVybWluYXRlIGNoZWNrYm94IGZsaXBzIGJvdGggY2hlY2tlZC9pbmRldGVybWluYXRlIHN0YXRl
cyIpOworY2IuY2hlY2tlZCA9IHRydWU7CitjYi5pbmRldGVybWluYXRlID0gdHJ1ZTsKK2NiLmNs
aWNrKCk7CitzaG91bGRCZUZhbHNlKCdjYi5jaGVja2VkJyk7CitzaG91bGRCZUZhbHNlKCdjYi5p
bmRldGVybWluYXRlJyk7CisKK2RlYnVnKCJUZXN0IGlmIHByZXZlbnREZWZhdWx0IHJlc3RvcmVz
IHRoZSBjaGVja2VkL2luZGV0ZXJtaW5hdGUgc3RhdGVzIik7CitjYi5jaGVja2VkID0gZmFsc2U7
CitjYi5pbmRldGVybWluYXRlID0gdHJ1ZTsKK2NiLm9uY2xpY2sgPSBmdW5jdGlvbihlKSB7Cisg
ICAgc2hvdWxkQmVUcnVlKCdjYi5jaGVja2VkJyk7CisgICAgc2hvdWxkQmVGYWxzZSgnY2IuaW5k
ZXRlcm1pbmF0ZScpOworICAgIGUucHJldmVudERlZmF1bHQoKTsKK307CitjYi5jbGljaygpOwor
c2hvdWxkQmVGYWxzZSgnY2IuY2hlY2tlZCcpOworc2hvdWxkQmVUcnVlKCdjYi5pbmRldGVybWlu
YXRlJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNj
NmE5NDNjN2JkZDExMmFiZTQzZThlMGI5N2IxNmFiOGMyMzllMWUuLmRkYzc4NTc3YjM1ZGFlN2Fl
ZmEyNWNhOTAxMmQ5ZjBmMGNiY2EyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
MS0wNi0xOSAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KKworICAgICAgICBDbGlja2luZyBpbmRldGVybWluYXRl
IGNoZWNrYm94IHNob3VsZCBmbGlwIGNoZWNrZWRuZXNzIHN0YXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjI2MgorCisgICAgICAgIFRlc3Q6IGZh
c3QvZm9ybXMvY2hlY2tib3gtY2xpY2staW5kZXRlcm1pbmF0ZS5odG1sCisKKyAgICAgICAgKiBo
dG1sL0NoZWNrYm94SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoZWNrYm94SW5w
dXRUeXBlOjp3aWxsRGlzcGF0Y2hDbGljayk6IENoYW5nZWQgdG8gZmxpcCBjaGVja2VkIGZsYWcg
d2hlbiBpbmRldGVybWluYXRlLgorCiAyMDExLTA2LTE5ICBBZGFtIEJlcmdrdmlzdCAgPGFkYW0u
YmVyZ2t2aXN0QGVyaWNzc29uLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9i
aW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NoZWNrYm94SW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2hlY2tib3hJbnB1dFR5cGUuY3BwCmluZGV4IDM5
ZjljN2JlNzZkZjJlOTU5ZDk4YzRiMjNhOGM4NjRhZmFjMjFiNjQuLmRkYTE3MmFlYzc4M2ZkMWU4
YzBkNzU4ZjljZTViN2JmZDA5ZjRmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Q2hlY2tib3hJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2hlY2tib3hJ
bnB1dFR5cGUuY3BwCkBAIC03OSw4ICs3OSw4IEBAIFBhc3NPd25QdHI8Q2xpY2tIYW5kbGluZ1N0
YXRlPiBDaGVja2JveElucHV0VHlwZTo6d2lsbERpc3BhdGNoQ2xpY2soKQogCiAgICAgaWYgKHN0
YXRlLT5pbmRldGVybWluYXRlKQogICAgICAgICBlbGVtZW50KCktPnNldEluZGV0ZXJtaW5hdGUo
ZmFsc2UpOwotICAgIGVsc2UKLSAgICAgICAgZWxlbWVudCgpLT5zZXRDaGVja2VkKCFzdGF0ZS0+
Y2hlY2tlZCwgdHJ1ZSk7CisKKyAgICBlbGVtZW50KCktPnNldENoZWNrZWQoIXN0YXRlLT5jaGVj
a2VkLCB0cnVlKTsKIAogICAgIHJldHVybiBzdGF0ZS5yZWxlYXNlKCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102767</attachid>
            <date>2011-08-03 04:34:36 -0700</date>
            <delta_ts>2011-08-04 05:45:41 -0700</delta_ts>
            <desc>new patch</desc>
            <filename>bug-62619-20110803203434.patch</filename>
            <type>text/plain</type>
            <size>29324</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIyNTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2OTFhZTZlZDYwM2JhODg0
MDU3NjFiMTc0MzliY2NjNDA5ZTc0ZTg0Li4zNDY3ZDFlM2M5NjdkZDc3NTNiMThhZDk3NjgzMGIw
MmE4MmJhNjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTEtMDgtMDMgIEtlaXNo
aSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IDxpbnB1
dCB0eXBlPWNvbG9yPiBVSSBiZWhhdmlvciBXZWJDb3JlIHBhcnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNjE5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogQWRkZWQgX19a
TjdXZWJDb3JlMTJDb2xvckNob29zZXI3Y2hvb3NlckV2IGFuZAorICAgICAgICBfX1pOSzdXZWJD
b3JlMTJDb2xvckNob29zZXIxM2NvbG9yU2VsZWN0ZWRFUktOU181Q29sb3JFCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9odG1sLmNz
czoKKyAgICAgICAgKGlucHV0W3R5cGU9ImNvbG9yIl06Oi13ZWJraXQtY29sb3Itc3dhdGNoLXdy
YXBwZXIpOiBBZGRlZCBtaXNzaW5nIHNlbWljb2xvbi4KKyAgICAgICAgKiBodG1sL0NvbG9ySW5w
dXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjp2YWx1ZUFzQ29s
b3IpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpzZXRWYWx1ZUFz
Q29sb3IpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjp3aWxsUmVt
b3ZlKTogQ2xvc2UgY29sb3IgY2hvb3NlciB3aGVuIGlucHV0IGVsZW1lbnQgaXMgcmVtb3ZlZCBm
cm9tIERPTSB0cmVlLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OnZhbHVlQ2hh
bmdlZCk6IFVwZGF0ZSBzZWxlY3RlZCBjb2xvciBpbiBjb2xvciBjaG9vc2VyIHRvby4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjb2xvclNlbGVjdGVkKTogQ2FsbGJhY2sgZnJv
bSBjb2xvciBjaG9vc2VyLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OmhhbmRs
ZUNsaWNrRXZlbnQpOiBPcGVucyBjb2xvciBjaG9vc2VyLgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3JJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQpOiBDYWxsZWQgd2hlbiBlbGVtZW50
LmNsaWNrKCkuIE9wZW4gY29sb3IgY2hvb3NlciBvbmx5CisgICAgICAgIHdoZW4gaXQgd2FzIGlu
aXRpYXRlZCBieSBhIHVzZXIgaW50ZXJhY3Rpb24uCisgICAgICAgICogaHRtbC9Db2xvcklucHV0
VHlwZS5oOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgICogaHRt
bC9GaWxlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlQXNDb2xvcik6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWVBc0NvbG9yKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp3aWxsUmVtb3ZlKTog
QWRkZWQuIENhbGxzIElucHV0VHlwZTo6d2lsbFJlbW92ZQorICAgICAgICAqIGh0bWwvSFRNTElu
cHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklucHV0VHlwZTo6dmFsdWVBc0NvbG9yKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbnB1dFR5cGU6OnNldFZhbHVlQXNDb2xvcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5wdXRUeXBlOjpjaHJvbWUpOiBBZGRlZC4gVXNlZCBpbiBGaWxlSW5wdXRUeXBlIGFuZCBDb2xv
cklucHV0VHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6d2lsbFJlbW92ZSk6IEFk
ZGVkLiBDb2xvcklucHV0VHlwZSBvdmVycmlkZXMgdGhpcy4KKyAgICAgICAgKiBodG1sL0lucHV0
VHlwZS5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVtcHR5Q2hyb21lQ2xpZW50OjpydW5PcGVuQ29sb3JDaG9vc2VyKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6cnVuQ2xvc2VDb2xvckNob29zZXIpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5Q2hyb21lQ2xpZW50OjpydW5TZXRTZWxlY3Rl
ZENvbG9ySW5Db2xvckNob29zZXIpOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJ1bk9wZW5Db2xvckNob29zZXIpOiBBZGRlZC4g
T3BlbnMgdGhlIGNvbG9yIGNob29zZXIuCisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJ1bkNs
b3NlQ29sb3JDaG9vc2VyKTogQWRkZWQuIFRyaWVzIHRvIGNsb3NlIHRoZSBjb2xvciBjaG9vc2Vy
LiBNaWdodCBub3QgY2xvc2UgaWYgdGhlIAorICAgICAgICBsaXN0ZW5lciBvZiB0aGUgY29sb3Ig
Y2hvb3NlciBpcyBhbm90aGVyIHBhcnQgb2YgdGhlIGJyb3dzZXIgb3IgYW5vdGhlciByZW5kZXIg
cHJvY2Vzcy4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cnVuU2V0U2VsZWN0ZWRDb2xvcklu
Q29sb3JDaG9vc2VyKTogQWRkZWQuIFNldHMgdGhlIHNlbGVjdGVkIGNvbG9yIGluIHRoZSBjb2xv
ciBjaG9vc2VyLiAKKyAgICAgICAgQWdhaW4sIG1pZ2h0IG5vdCBiZSBleGVjdXRlZCBpZiB0aGUg
bGlzdGVuZXIgb2YgdGhlIGNvbG9yIGNob29zZXIgaXMgYW5vdGhlciBwYXJ0IG9mIHRoZSBicm93
c2VyIG9yIGFub3RoZXIgcmVuZGVyIHByb2Nlc3MuCisgICAgICAgICogcGFnZS9DaHJvbWUuaDoK
KyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL0NvbG9y
Q2hvb3Nlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xpZW50
Ojp+Q29sb3JDaG9vc2VyQ2xpZW50KTogRGlzY29ubmVjdHMgaXRzZWxmIGZyb20gdGhlIENvbG9y
Q2hvb3Nlci4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcjo6Y2hvb3Nlcik6IEdldCBz
aGFyZWQgaW5zdGFuY2Ugb2YgQ29sb3JDaG9vc2VyLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JD
aG9vc2VyOjpjb25uZWN0Q2xpZW50KTogQ29ubmVjdHMgYSBDb2xvckNob29zZXJDbGllbnQgdGhh
dCByZWNlaXZlcyB0aGUgY29sb3JTZWxlY3RlZCBjYWxsYmFja3MuCisgICAgICAgIChXZWJDb3Jl
OjpDb2xvckNob29zZXI6OmRpc2Nvbm5lY3RDbGllbnQpOiBEaXNjb25uZWN0cyB0aGUgY29ubmVj
dENsaWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcjo6Y29sb3JTZWxlY3RlZCk6
IENhbGxlZCBmcm9tIGNvbG9yIGNob29zZXIgbGlzdGVuZXIuCisgICAgICAgICogcGxhdGZvcm0v
Q29sb3JDaG9vc2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDaG9vc2VyOjpj
bGllbnQpOiBBZGRlZC4gUmV0dXJucyB0aGUgY3VycmVudCBjb25uZWN0ZWQgY2xpZW50LgorICAg
ICAgICAoV2ViQ29yZTo6Q29sb3JDaG9vc2VyOjpDb2xvckNob29zZXIpOiBBZGRlZC4KKwogMjAx
MS0wOC0wMiAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTWFr
ZSBFdmVudERpc3BhdGNoTWVkaWF0b3IgUmVmQ291bnRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5k
ZXggN2Y1Yjk1NmU0OGRlZWE1YTNjOTJhOGQwYmFhNDAxYjUwYjkxOTE0My4uNTU2N2I1YmUzODli
ZDcwYTgzMzYyNWNhZTllMmJmMzEzMjQyOGM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE5
NDMsMyArMTk0Myw4IEBAIF9fWk5LN1dlYkNvcmUxM1Jlc291cmNlRXJyb3JjdlA3TlNFcnJvckV2
CiBfX1pON1dlYkNvcmUxMlNjaGVkdWxlUGFpckMxRVA5TlNSdW5Mb29wUEsxMF9fQ0ZTdHJpbmcK
IF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUxMnJlbGVhc2VQcm94eUV2CiAjZW5kaWYKKwor
I2lmIEVOQUJMRShJTlBVVF9DT0xPUikKK19fWk43V2ViQ29yZTEyQ29sb3JDaG9vc2VyN2Nob29z
ZXJFdgorX19aTks3V2ViQ29yZTEyQ29sb3JDaG9vc2VyMTNjb2xvclNlbGVjdGVkRVJLTlNfNUNv
bG9yRQorI2VuZGlmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY4MjE5NTk0NWEx
YjhmZjExYTkxMTEyMzZiZGMxZmUzZmMxZTBmMmIuLjNmMmU3MmMzZWJkMTExZDg0YjU5YzJlYzdj
M2Q0Y2M3MGJjZWEzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTUzMTUsNiArNTMxNSw4IEBACiAJCUMwRjJBNDQxMTM4NjlB
QUIwMDY2QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vz
c29yLnBtICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUMxMDVEQTYyMEYzQUE2OEYwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTA1REE2MTBG
M0FBNjhGMDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwICovOyB9OwogCQlD
MTA1REE2NDBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMDVEQTYzMEYzQUE2Qjgw
MDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3Rvci5oICovOyB9OworCQlDM0VFRTA3OTEzRTdG
OURFMDA1Rjc0NjAgLyogQ29sb3JDaG9vc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDM0VFRTA3NzEzRTdGOURFMDA1Rjc0NjAgLyogQ29sb3JDaG9v
c2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QzNFRUUwN0ExM0U3RjlERTAwNUY3NDYwIC8qIENvbG9yQ2hvb3Nlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDM0VFRTA3ODEzRTdGOURFMDA1Rjc0
NjAgLyogQ29sb3JDaG9vc2VyLmNwcCAqLzsgfTsKIAkJQzUwQjU2MTYxMjExOUQyMzAwOEI0NkUw
IC8qIEdyb3VwU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3Bw
ICovOyB9OwogCQlDNTBCNTYxNzEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQjU2MTUxMjEx
OUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTBEMEU4MjBGRjQyNzI5MDBBQzI2NDQgLyogU3Rv
cmFnZU5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5jcHAg
Ki87IH07CkBAIC0xMjAwMyw2ICsxMjAwNSw4IEBACiAJCUMwRjJBNDNGMTM4NjlBMjgwMDY2QzUz
NCAvKiBwcmVwcm9jZXNzb3IucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gcHJlcHJvY2Vzc29yLnBtOyBw
YXRoID0gc2NyaXB0cy9wcmVwcm9jZXNzb3IucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMxMDVEQTYxMEYzQUE2OEYwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0RW5jb2RpbmdEZXRl
Y3RvcklDVS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxMDVEQTYzMEYzQUE2
QjgwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUZXh0RW5jb2RpbmdEZXRlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDM0VFRTA3NzEzRTdGOURFMDA1Rjc0NjAgLyogQ29sb3JDaG9vc2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yQ2hvb3Nlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDM0VFRTA3ODEzRTdGOURFMDA1Rjc0NjAgLyogQ29sb3JDaG9v
c2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yQ2hvb3Nl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MEI1NjE0MTIxMTlEMjMwMDhC
NDZFMCAvKiBHcm91cFNldHRpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdyb3VwU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
NTBCNTYxNTEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHcm91cFNldHRpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUM1MEQwRTgwMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0b3JhZ2VOYW1lc3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkwODMsNiArMTkwODcsOCBAQAog
CQkJCTkzODBGNDcxMDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQuY3BwICovLAogCQkJCTkzODBG
NDcyMDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQuaCAqLywKIAkJCQlFMUUxQkVGRjExNUZGNkZC
MDA2RjUyQ0EgLyogV2luZG93c0tleWJvYXJkQ29kZXMuaCAqLywKKwkJCQlDM0VFRTA3NzEzRTdG
OURFMDA1Rjc0NjAgLyogQ29sb3JDaG9vc2VyLmggKi8sCisJCQkJQzNFRUUwNzgxM0U3RjlERTAw
NUY3NDYwIC8qIENvbG9yQ2hvb3Nlci5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHBsYXRmb3Jt
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIwMjcxLDYgKzIwMjc3LDcgQEAKIAkJ
CWZpbGVzID0gKAogCQkJCUI1QjVEQzZBMTE5QkIzRDUwMDJBODc5MCAvKiBBYnN0cmFjdERhdGFi
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJz
dHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUMzRUVFMDc5MTNFN0Y5REUwMDVGNzQ2
MCAvKiBDb2xvckNob29zZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJFMEZCQjlDMUQw
MDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyOUE4MTIzMzBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIzQjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJp
bGl0eUltYWdlTWFwTGluay5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjA2MSw2ICsyNjA2OCw3IEBA
CiAJCQkJNTA4Q0NBNTAxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRDcwQUQ2NTcxM0UxMzQyQjAwNUI1MEI0IC8qIFJlbmRlclJlZ2lv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0FCNDE4MTEzRTM1NkU4MDBEOEFBRjMgLyogUmVn
aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMzRUVFMDdBMTNFN0Y5REUwMDVGNzQ2MCAvKiBD
b2xvckNob29zZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvaHRtbC5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MKaW5kZXggMWVjMTUw
MTFkN2VlOWVmYTI2N2YxYTIzYzA5ZWRhYWRlYmEzYTY5OC4uYzY1OTU3NmJjZmFlZjIyNzdiMWE4
OWIwMmM5ZWQyMzJlMzI3NmRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL2h0bWwu
Y3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcwpAQCAtNjM3LDcgKzYzNyw3IEBA
IGlucHV0W3R5cGU9ImNvbG9yIl06Oi13ZWJraXQtY29sb3Itc3dhdGNoLXdyYXBwZXIgewogICAg
IHBhZGRpbmc6IDRweCAycHg7CiAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94Owog
ICAgIHdpZHRoOiAxMDAlOwotICAgIGhlaWdodDogMTAwJQorICAgIGhlaWdodDogMTAwJTsKIH0K
IAogaW5wdXRbdHlwZT0iY29sb3IiXTo6LXdlYmtpdC1jb2xvci1zd2F0Y2ggewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCBlYTQ2YTY2YTgwMTk0YTYxYWE2YmRlNjVk
NzkzZTBjODIyMDJlYzBmLi5kNDY5MGIyZGZlZTE3MDFlZjg0MTJmN2Y4MGJmNmM4NTI2MjI0MjAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApAQCAtMzEsOSArMzEsMTIg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb2xvcklucHV0VHlwZS5oIgogCisj
aW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJIVE1MRGl2
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJNb3Vz
ZUV2ZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgpAQCAtOTIsNiArOTUsMTYgQEAgU3RyaW5nIENvbG9ySW5wdXRUeXBlOjpz
YW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkKICAgICByZXR1cm4gcHJv
cG9zZWRWYWx1ZS5sb3dlcigpOwogfQogCitDb2xvciBDb2xvcklucHV0VHlwZTo6dmFsdWVBc0Nv
bG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ29sb3IoZWxlbWVudCgpLT52YWx1ZSgpKTsKK30K
Kwordm9pZCBDb2xvcklucHV0VHlwZTo6c2V0VmFsdWVBc0NvbG9yKGNvbnN0IENvbG9yJiBjb2xv
ciwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0Cit7CisgICAgZWxlbWVudCgpLT5zZXRWYWx1ZShjb2xv
ci5zZXJpYWxpemVkKCksIHRydWUpOworfQorCiB2b2lkIENvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlKCkKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBlbGVtZW50KCktPmRv
Y3VtZW50KCk7CkBAIC0xMDgsOSArMTIxLDU5IEBAIHZvaWQgQ29sb3JJbnB1dFR5cGU6OmNyZWF0
ZVNoYWRvd1N1YnRyZWUoKQogICAgIHVwZGF0ZUNvbG9yU3dhdGNoKCk7CiB9CiAKK3ZvaWQgQ29s
b3JJbnB1dFR5cGU6OndpbGxSZW1vdmUoKQoreworICAgIGlmIChDb2xvckNob29zZXI6OmNob29z
ZXIoKS0+Y2xpZW50KCkgPT0gdGhpcykgeworICAgICAgICBpZiAoQ2hyb21lKiBjaHJvbWUgPSB0
aGlzLT5jaHJvbWUoKSkKKyAgICAgICAgICAgIGNocm9tZS0+cnVuQ2xvc2VDb2xvckNob29zZXIo
KTsKKyAgICB9Cit9CisKIHZvaWQgQ29sb3JJbnB1dFR5cGU6OnZhbHVlQ2hhbmdlZCgpCiB7CiAg
ICAgdXBkYXRlQ29sb3JTd2F0Y2goKTsKKyAgICBpZiAoQ29sb3JDaG9vc2VyOjpjaG9vc2VyKCkt
PmNsaWVudCgpID09IHRoaXMpIHsKKyAgICAgICAgaWYgKENocm9tZSogY2hyb21lID0gdGhpcy0+
Y2hyb21lKCkpCisgICAgICAgICAgICBjaHJvbWUtPnJ1blNldFNlbGVjdGVkQ29sb3JJbkNvbG9y
Q2hvb3Nlcih2YWx1ZUFzQ29sb3IoKSk7CisgICAgfQorfQorCit2b2lkIENvbG9ySW5wdXRUeXBl
Ojpjb2xvclNlbGVjdGVkKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBpZiAoZWxlbWVudCgp
LT5kaXNhYmxlZCgpIHx8IGVsZW1lbnQoKS0+cmVhZE9ubHkoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgc2V0VmFsdWVBc0NvbG9yKGNvbG9yLCBlYyk7Cit9
CisKK3ZvaWQgQ29sb3JJbnB1dFR5cGU6OmhhbmRsZUNsaWNrRXZlbnQoTW91c2VFdmVudCogZXZl
bnQpCit7CisgICAgaWYgKGV2ZW50LT5pc1NpbXVsYXRlZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoZWxlbWVudCgpLT5kaXNhYmxlZCgpIHx8IGVsZW1lbnQoKS0+cmVhZE9ubHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKENocm9tZSogY2hyb21lID0gdGhpcy0+Y2hyb21l
KCkpIHsKKyAgICAgICAgQ29sb3JDaG9vc2VyOjpjaG9vc2VyKCktPmNvbm5lY3RDbGllbnQodGhp
cyk7CisgICAgICAgIGNocm9tZS0+cnVuT3BlbkNvbG9yQ2hvb3NlcihDb2xvckNob29zZXI6OmNo
b29zZXIoKSwgdmFsdWVBc0NvbG9yKCkpOworICAgIH0KKyAgICBldmVudC0+c2V0RGVmYXVsdEhh
bmRsZWQoKTsKK30KKwordm9pZCBDb2xvcklucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVu
dChFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8fCBlbGVt
ZW50KCktPnJlYWRPbmx5KCkgfHwgIWVsZW1lbnQoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKCFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKENocm9tZSogY2hyb21lID0gdGhpcy0+Y2hy
b21lKCkpIHsKKyAgICAgICAgQ29sb3JDaG9vc2VyOjpjaG9vc2VyKCktPmNvbm5lY3RDbGllbnQo
dGhpcyk7CisgICAgICAgIGNocm9tZS0+cnVuT3BlbkNvbG9yQ2hvb3NlcihDb2xvckNob29zZXI6
OmNob29zZXIoKSwgdmFsdWVBc0NvbG9yKCkpOworICAgIH0KKyAgICBldmVudC0+c2V0RGVmYXVs
dEhhbmRsZWQoKTsKIH0KIAogdm9pZCBDb2xvcklucHV0VHlwZTo6dXBkYXRlQ29sb3JTd2F0Y2go
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oCmluZGV4IGQzNDA4NGYwMzBmY2RkMzNk
YjZiNzYxNGUxN2M4MThiYjNlMzIzNmQuLjczOTA5OWEyYjFiYjQ5YWM0MmQ4MGZhNWU1YWEwZjY4
YzkzMzhlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmgKQEAgLTMxLDEzICsz
MSwxNCBAQAogI2lmbmRlZiBDb2xvcklucHV0VHlwZV9oCiAjZGVmaW5lIENvbG9ySW5wdXRUeXBl
X2gKIAotI2luY2x1ZGUgIkJhc2VCdXR0b25JbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJDb2xvckNo
b29zZXIuaCIKKyNpbmNsdWRlICJJbnB1dFR5cGUuaCIKIAogI2lmIEVOQUJMRShJTlBVVF9DT0xP
UikKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb2xvcklucHV0VHlwZSA6IHB1Ymxp
YyBJbnB1dFR5cGUgeworY2xhc3MgQ29sb3JJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlLCBw
cml2YXRlIENvbG9yQ2hvb3NlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25Q
dHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOwogCkBAIC00OCw4ICs0OSwx
NSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBTdHJpbmcgZmFsbGJhY2tWYWx1ZSgpOwogICAgIHZpcnR1YWwgU3RyaW5n
IHNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBDb2xvciB2YWx1ZUFz
Q29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBc0NvbG9yKGNvbnN0IENv
bG9yJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFk
b3dTdWJ0cmVlKCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUoKTsKICAgICB2aXJ0dWFs
IHZvaWQgdmFsdWVDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUNsaWNrRXZlbnQo
TW91c2VFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2
ZW50Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQgY29sb3JTZWxlY3RlZChjb25zdCBDb2xvciYpOwog
CiAgICAgdm9pZCB1cGRhdGVDb2xvclN3YXRjaCgpOwogICAgIEhUTUxFbGVtZW50KiBzaGFkb3dD
b2xvclN3YXRjaCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxl
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5k
ZXggNWYyMjRlNzM1YTM0NjllMjk3YmRkYmI4NGQxMWQzZTIzYjcyYTZmMy4uNWQ1Y2EzOWZhN2Fh
ODgyYWExNDdjYzkxMDliMDI0MTFjM2M5NzRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1
dFR5cGUuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5j
bHVkZSAiSWNvbi5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKLSNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaCIKICNpbmNsdWRlICJT
Y3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgpAQCAtMzMzLDEzICsz
MzIsNiBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnVwZGF0ZVJlbmRlcmluZyhQYXNzUmVmUHRyPElj
b24+IGljb24pCiAgICAgICAgIGVsZW1lbnQoKS0+cmVuZGVyZXIoKS0+cmVwYWludCgpOwogfQog
Ci1DaHJvbWUqIEZpbGVJbnB1dFR5cGU6OmNocm9tZSgpIGNvbnN0Ci17Ci0gICAgaWYgKFBhZ2Uq
IHBhZ2UgPSBlbGVtZW50KCktPmRvY3VtZW50KCktPnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIHBh
Z2UtPmNocm9tZSgpOwotICAgIHJldHVybiAwOwotfQotCiB2b2lkIEZpbGVJbnB1dFR5cGU6OnJl
Y2VpdmVEcm9wcGVkRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogewogICAgIEhU
TUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gZWxlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1
dFR5cGUuaAppbmRleCBhYWNiZDIxOTQxODFkZmI1YzRmMzFhODRlMzc4Y2JiNjYwNTFjYWRiLi45
ZWFhNzJlM2EyODdjMTM0MDI2MWMwMTI4MDRiN2Q5ZThlZjgwN2Y5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZpbGVJbnB1dFR5cGUuaApAQCAtMzksNyArMzksNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIENocm9tZTsKIGNsYXNzIEZpbGVMaXN0OwogCiBjbGFzcyBGaWxlSW5wdXRUeXBl
IDogcHVibGljIEJhc2VCdXR0b25JbnB1dFR5cGUsIHByaXZhdGUgRmlsZUNob29zZXJDbGllbnQs
IHByaXZhdGUgRmlsZUljb25Mb2FkZXJDbGllbnQgewpAQCAtNzcsNyArNzYsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVjZWl2ZURyb3BGb3JEaXJlY3RvcnlVcGxvYWQoY29uc3QgVmVjdG9yPFN0
cmluZz4mKTsKICNlbmRpZgogICAgIHZvaWQgcmVxdWVzdEljb24oY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKTsKLSAgICBDaHJvbWUqIGNocm9tZSgpIGNvbnN0OwogCiAgICAgUmVmUHRyPEZpbGVMaXN0
PiBtX2ZpbGVMaXN0OwogICAgIFJlZlB0cjxJY29uPiBtX2ljb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBhZDQ5NDIzZTA4YWUwNjA1MmI0ZjcwZTQxMTg4
NTRkMTI4MWIyZjMyLi44MjVhYzA3MjY4NzMwZmY5ODAzNzk4NTc5ZTMzMmI0ZWNkZmFmOWJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTExMDYsNiArMTEw
NiwxNiBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFs
dWUsIGJvb2wgc2VuZENoYW5nZUV2ZW50KQogICAgIG5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQoKTsK
IH0KIAorQ29sb3IgSFRNTElucHV0RWxlbWVudDo6dmFsdWVBc0NvbG9yKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9pbnB1dFR5cGUtPnZhbHVlQXNDb2xvcigpOworfQorCit2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OnNldFZhbHVlQXNDb2xvcihjb25zdCBDb2xvciYgdmFsdWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIG1faW5wdXRUeXBlLT5zZXRWYWx1ZUFzQ29sb3IodmFsdWUsIGVjKTsK
K30KKwogZG91YmxlIEhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlQXNEYXRlKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9pbnB1dFR5cGUtPnZhbHVlQXNEYXRlKCk7CkBAIC0xOTA2LDYgKzE5MTYsMTIg
QEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpub3RpZnlGb3JtU3RhdGVDaGFuZ2VkKCkKICAgICAg
ICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5mb3JtU3RhdGVEaWRDaGFuZ2UodGhpcyk7CiB9
CiAKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6d2lsbFJlbW92ZSgpCit7CisgICAgSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OndpbGxSZW1vdmUoKTsKKyAgICBtX2lucHV0VHlwZS0+d2lsbFJl
bW92ZSgpOworfQorCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWF4TGVuZ3RoQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cmlidXRlKQogewogICAgIGludCBtYXhMZW5ndGggPSBhdHRyaWJ1
dGUtPmlzTnVsbCgpID8gbWF4aW11bUxlbmd0aCA6IGF0dHJpYnV0ZS0+dmFsdWUoKS50b0ludCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCA5MmZhOWY1ODU3YTcz
YTkxMTUwYTU1ODg4ZTg0NTkyZDM0MzFmY2VlLi45NGI2NzhkNTk0ZDI4ZGZmZGFmMTNmYTAwODg5
NTc0NWI2N2RjZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAt
MTUzLDYgKzE1Myw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFZhbHVl
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTdWdnZXN0ZWRWYWx1ZShjb25zdCBTdHJpbmcmKTsKIAor
ICAgIENvbG9yIHZhbHVlQXNDb2xvcigpIGNvbnN0OworICAgIHZvaWQgc2V0VmFsdWVBc0NvbG9y
KGNvbnN0IENvbG9yJiwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAgZG91YmxlIHZhbHVlQXNEYXRl
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRWYWx1ZUFzRGF0ZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUm
KTsKIApAQCAtMjMwLDYgKzIzMyw4IEBAIHB1YmxpYzoKICAgICBib29sIGxhc3RDaGFuZ2VXYXNV
c2VyRWRpdCgpIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5Rm9ybVN0YXRlQ2hhbmdlZCgpOwogCisg
ICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUoKTsKKwogICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4
aW11bUxlbmd0aDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4
IDYwOTI0NjBhMDA3OGZlMjUzMGRlNjQxN2M4N2ExNDAwZjk0ZWZlNTAuLjZmMmE4ZWYxYWY1OGI3
ZDhhMjdiZjcyYzM5OTcwNjcwODBmM2RkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAK
QEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVk
ZSAiTW9udGhJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJOdW1iZXJJbnB1dFR5cGUuaCIKKyNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFzc3dvcmRJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJS
YWRpb0lucHV0VHlwZS5oIgogI2luY2x1ZGUgIlJhbmdlSW5wdXRUeXBlLmgiCkBAIC0xNjYsNiAr
MTY3LDE2IEBAIGJvb2wgSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVu
Y29kaW5nLCBib29sKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitDb2xvciBJbnB1dFR5
cGU6OnZhbHVlQXNDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIENvbG9yKCk7Cit9CisKK3Zv
aWQgSW5wdXRUeXBlOjpzZXRWYWx1ZUFzQ29sb3IoY29uc3QgQ29sb3ImLCBFeGNlcHRpb25Db2Rl
JiBlYykgY29uc3QKK3sKKyAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworfQorCiBkb3VibGUg
SW5wdXRUeXBlOjp2YWx1ZUFzRGF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIERhdGVDb21wb25l
bnRzOjppbnZhbGlkTWlsbGlzZWNvbmRzKCk7CkBAIC0zOTUsNiArNDA2LDEzIEBAIHZvaWQgSW5w
dXRUeXBlOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrSWZBY3RpdmUoS2V5Ym9hcmRFdmVudCogZXZl
bnQpIGNvbnN0CiAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKK0Nocm9tZSog
SW5wdXRUeXBlOjpjaHJvbWUoKSBjb25zdAoreworICAgIGlmIChQYWdlKiBwYWdlID0gZWxlbWVu
dCgpLT5kb2N1bWVudCgpLT5wYWdlKCkpCisgICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKTsK
KyAgICByZXR1cm4gMDsKK30KKwogYm9vbCBJbnB1dFR5cGU6OmNhblNldFN0cmluZ1ZhbHVlKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ0OSw2ICs0NjcsMTAgQEAgYm9vbCBJbnB1
dFR5cGU6OmNhbkNoYW5nZUZyb21Bbm90aGVyVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK3ZvaWQgSW5wdXRUeXBlOjp3aWxsUmVtb3ZlKCkKK3sKK30KKwogdm9pZCBJbnB1dFR5
cGU6Om1pbk9yTWF4QXR0cmlidXRlQ2hhbmdlZCgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
aAppbmRleCAyZGYwZWY1YjhmOTU4OGQzMmFlNzJmYjYzMmMyMjRiN2JjYmY0NjQxLi4zNmI1YmQ0
MzU1ZTg5OGJlNTYxOGFjZmYxMzNjN2NjYTA1ZWJmYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBl
LmgKQEAgLTQxLDYgKzQxLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmVmb3Jl
VGV4dEluc2VydGVkRXZlbnQ7CitjbGFzcyBDaHJvbWU7CitjbGFzcyBDb2xvcjsKIGNsYXNzIERh
dGVDb21wb25lbnRzOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGaWxlTGlzdDsKQEAgLTgwLDYgKzgy
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJv
bFR5cGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhbkNoYW5nZUZyb21Bbm90aGVy
VHlwZSgpIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUoKTsKKwogICAgIC8v
IFR5cGUgcXVlcnkgZnVuY3Rpb25zCiAKICAgICAvLyBBbnkgdGltZSB3ZSBhcmUgdXNpbmcgb25l
IG9mIHRoZXNlIGZ1bmN0aW9ucyBpdCdzIGJlc3QgdG8gcmVmYWN0b3IKQEAgLTkxLDcgKzk1LDcg
QEAgcHVibGljOgogCiAjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQogICAgIHZpcnR1YWwgYm9vbCBp
c0NvbG9yQ29udHJvbCgpIGNvbnN0OwotI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9DT0xPUikKKyNl
bmRpZgogICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrYm94KCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIGlzRW1haWxGaWVsZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGVVcGxvYWQo
KSBjb25zdDsKQEAgLTEyMSw2ICsxMjUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGdl
dFR5cGVTcGVjaWZpY1ZhbHVlKFN0cmluZyYpOyAvLyBDaGVja2VkIGZpcnN0LCBiZWZvcmUgaW50
ZXJuYWwgc3RvcmFnZSBvciB0aGUgdmFsdWUgYXR0cmlidXRlLgogICAgIHZpcnR1YWwgU3RyaW5n
IGZhbGxiYWNrVmFsdWUoKTsgLy8gQ2hlY2tlZCBsYXN0LCBpZiBib3RoIGludGVybmFsIHN0b3Jh
Z2UgYW5kIHZhbHVlIGF0dHJpYnV0ZSBhcmUgbWlzc2luZy4KICAgICB2aXJ0dWFsIFN0cmluZyBk
ZWZhdWx0VmFsdWUoKTsgLy8gQ2hlY2tlZCBhZnRlciBldmVuIGZhbGxiYWNrVmFsdWUsIG9ubHkg
d2hlbiB0aGUgdmFsdWVXaXRoRGVmYXVsdCBmdW5jdGlvbiBpcyBjYWxsZWQuCisgICAgdmlydHVh
bCBDb2xvciB2YWx1ZUFzQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVB
c0NvbG9yKGNvbnN0IENvbG9yJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIHZpcnR1YWwg
ZG91YmxlIHZhbHVlQXNEYXRlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNE
YXRlKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIHZh
bHVlQXNOdW1iZXIoKSBjb25zdDsKQEAgLTI2MCw2ICsyNjYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBkaXNwYXRjaFNpbXVsYXRlZENsaWNrSWZBY3RpdmUoS2V5Ym9hcmRFdmVudCopIGNvbnN0
OwogICAgIC8vIFdlIGNhbid0IG1ha2UgdGhpcyBhIHN0YXRpYyBjb25zdCBkYXRhIG1lbWJlciBi
ZWNhdXNlIFZDKysgZG9lc24ndCBsaWtlIGl0LgogICAgIHN0YXRpYyBkb3VibGUgZGVmYXVsdFN0
ZXBCYXNlKCkgeyByZXR1cm4gMC4wOyB9CisgICAgQ2hyb21lKiBjaHJvbWUoKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICAvLyBSYXcgcG9pbnRlciBiZWNhdXNlIHRoZSBIVE1MSW5wdXRFbGVtZW50
IG9iamVjdCBvd25zIHRoaXMgSW5wdXRUeXBlIG9iamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaAppbmRleCBmMmRjOGE0MWEyZDJiMGVhOWUxMjlhMTFjOTU4YWZlZTFiNGQzM2Q0
Li5mZjA0YjM4ZjM0MTA4ODE3MDM5OTI5MDAyODAzMjVmNGZkOTg5ZDlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0xOTYsNiArMTk2LDEyIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZW51bWVyYXRlQ2hvc2VuRGlyZWN0b3J5KEZpbGVDaG9vc2VyKikgeyB9CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKKyAgICB2b2lkIHJ1bk9wZW5Db2xvckNo
b29zZXIoQ29sb3JDaG9vc2VyKiwgY29uc3QgQ29sb3ImKSB7IH0KKyAgICB2b2lkIHJ1bkNsb3Nl
Q29sb3JDaG9vc2VyKCkgeyB9CisgICAgdm9pZCBydW5TZXRTZWxlY3RlZENvbG9ySW5Db2xvckNo
b29zZXIoY29uc3QgQ29sb3ImKSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9w
ZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9h
ZGVyKikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA0ODRjYTgxM2Y2OWQ2ZmIwMDBk
Mzc0Y2IwZDEzOWVkNjhlYTgwYTE3Li41MGMyZjlhMmE3NDI2ZjNhZGY2NzdmYTJmZjY3ZDI5MjJh
ZmY2NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC01Miw2ICs1MiwxMCBAQAogI2luY2x1
ZGUgIlN0b3JhZ2VOYW1lc3BhY2UuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKElOUFVUX0NPTE9S
KQorI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTQ2Nyw2ICs0NzEsMjMgQEAgdm9p
ZCBDaHJvbWU6OmVudW1lcmF0ZUNob3NlbkRpcmVjdG9yeShGaWxlQ2hvb3NlciogZmlsZUNob29z
ZXIpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKK3ZvaWQgQ2hyb21lOjpy
dW5PcGVuQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlciogY29sb3JDaG9vc2VyLCBjb25zdCBDb2xv
ciYgaW5pdGlhbENvbG9yKQoreworICAgIG1fY2xpZW50LT5ydW5PcGVuQ29sb3JDaG9vc2VyKGNv
bG9yQ2hvb3NlciwgaW5pdGlhbENvbG9yKTsKK30KKwordm9pZCBDaHJvbWU6OnJ1bkNsb3NlQ29s
b3JDaG9vc2VyKCkKK3sKKyAgICBtX2NsaWVudC0+cnVuQ2xvc2VDb2xvckNob29zZXIoKTsKK30K
Kwordm9pZCBDaHJvbWU6OnJ1blNldFNlbGVjdGVkQ29sb3JJbkNvbG9yQ2hvb3Nlcihjb25zdCBD
b2xvciYgY29sb3IpCit7CisgICAgbV9jbGllbnQtPnJ1blNldFNlbGVjdGVkQ29sb3JJbkNvbG9y
Q2hvb3Nlcihjb2xvcik7Cit9CisjZW5kaWYKKwogdm9pZCBDaHJvbWU6OnJ1bk9wZW5QYW5lbChG
cmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyKQogewogICAg
IG1fY2xpZW50LT5ydW5PcGVuUGFuZWwoZnJhbWUsIGZpbGVDaG9vc2VyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5oCmluZGV4IDEyYjlmNTQ2N2NkYjhjZGIxMDcwNGFkZWRjNzBjOGU2N2MxMWQ3YzEuLjY5MjZm
OGNjMDc4MTU2OTAwNzM4Njg1Y2VjZGVjNjIwZjhjMDE1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApA
QCAtMzYsNiArMzYsOSBAQCBjbGFzcyBOU1ZpZXc7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICBjbGFzcyBDaHJvbWVDbGllbnQ7CisjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQorICAgIGNsYXNz
IENvbG9yQ2hvb3NlcjsKKyNlbmRpZgogICAgIGNsYXNzIEZpbGVDaG9vc2VyOwogICAgIGNsYXNz
IEZpbGVJY29uTG9hZGVyOwogICAgIGNsYXNzIEZsb2F0UmVjdDsKQEAgLTE1NCw2ICsxNTcsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBl
cm1pc3Npb25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKik7CiAgICAgICAgIHZvaWQgY2Fu
Y2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRp
b24qKTsKIAorI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKKyAgICAgICAgdm9pZCBydW5PcGVuQ29s
b3JDaG9vc2VyKENvbG9yQ2hvb3NlciosIGNvbnN0IENvbG9yJik7CisgICAgICAgIHZvaWQgcnVu
Q2xvc2VDb2xvckNob29zZXIoKTsKKyAgICAgICAgdm9pZCBydW5TZXRTZWxlY3RlZENvbG9ySW5D
b2xvckNob29zZXIoY29uc3QgQ29sb3ImKTsKKyNlbmRpZgorCiAgICAgICAgIHZvaWQgcnVuT3Bl
blBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogICAgICAgICB2b2lkIGxv
YWRJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlSWNvbkxvYWRlciopOwog
I2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
aW5kZXggZDVlNmQ3YjYzZDFhNTBhODJmNGYyZmQ5OWQ3OGMzNmYyZWJhNGY4YS4uMTJiNDJhODYx
MTA0YmRmMWYyNDlhMDE3OTRkODZjMDExNzg4NGQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCkBAIC03MSw2ICs3MSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
R3JhcGhpY3NMYXllcjsKICNlbmRpZgogCisjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQorICAgIGNs
YXNzIENvbG9yQ2hvb3NlcjsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAg
ICAgY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyOwogI2VuZGlmCkBAIC0yMzEsNiArMjM1LDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RHZW9s
b2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKikgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZy
YW1lKEZyYW1lKiwgR2VvbG9jYXRpb24qKSA9IDA7CiAKKyNpZiBFTkFCTEUoSU5QVVRfQ09MT1Ip
CisgICAgICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3Nlcios
IGNvbnN0IENvbG9yJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuQ2xvc2VDb2xvckNo
b29zZXIoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBydW5TZXRTZWxlY3RlZENvbG9ySW5D
b2xvckNob29zZXIoY29uc3QgQ29sb3ImKSA9IDA7CisjZW5kaWYKKwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pID0gMDsK
ICAgICAgICAgLy8gQXN5bmNocm9ub3VzIHJlcXVlc3QgdG8gbG9hZCBhbiBpY29uIGZvciBzcGVj
aWZpZWQgZmlsZW5hbWVzLgogICAgICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKikgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29sb3JDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NvbG9yQ2hvb3Nlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA1M2I1Njk2YzIxODkxMDVl
ZjIxMTdhMjc1MzcwZTU4ZWNhNGNhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NvbG9yQ2hvb3Nlci5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCisKKyNpZiBFTkFCTEUo
SU5QVVRfQ09MT1IpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ29sb3JDaG9vc2VyQ2xpZW50
Ojp+Q29sb3JDaG9vc2VyQ2xpZW50KCkKK3sKKyAgICBDb2xvckNob29zZXI6OmNob29zZXIoKS0+
ZGlzY29ubmVjdENsaWVudCh0aGlzKTsKK30KKworc3RhdGljIENvbG9yQ2hvb3Nlciogc3RhdGlj
Q2hvb3NlciA9IDA7CisKK0NvbG9yQ2hvb3NlciogQ29sb3JDaG9vc2VyOjpjaG9vc2VyKCkKK3sK
KyAgICBpZiAoIXN0YXRpY0Nob29zZXIpCisgICAgICAgIHN0YXRpY0Nob29zZXIgPSBuZXcgQ29s
b3JDaG9vc2VyKCk7CisgICAgcmV0dXJuIHN0YXRpY0Nob29zZXI7Cit9CisKK3ZvaWQgQ29sb3JD
aG9vc2VyOjpjb25uZWN0Q2xpZW50KENvbG9yQ2hvb3NlckNsaWVudCogY2xpZW50KQoreworICAg
IGlmIChjbGllbnQgIT0gbV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50ID0gY2xpZW50OworfQor
Cit2b2lkIENvbG9yQ2hvb3Nlcjo6ZGlzY29ubmVjdENsaWVudChDb2xvckNob29zZXJDbGllbnQq
IGNsaWVudCkKK3sKKyAgICBpZiAoY2xpZW50ID09IG1fY2xpZW50KQorICAgICAgICBtX2NsaWVu
dCA9IDA7Cit9CisKK3ZvaWQgQ29sb3JDaG9vc2VyOjpjb2xvclNlbGVjdGVkKGNvbnN0IENvbG9y
JiBjb2xvcikgY29uc3QKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5j
b2xvclNlbGVjdGVkKGNvbG9yKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX0NP
TE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29sb3JDaG9vc2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db2xvckNob29zZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDM4
NmI4NjBmMmRkYmViM2M5N2FlYTE3ZDNiMWIyODFjNzFlYTUwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29sb3JDaG9vc2VyLmgKQEAgLTAsMCArMSw3MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoK
KyAqLworCisjaWZuZGVmIENvbG9yQ2hvb3Nlcl9oCisjZGVmaW5lIENvbG9yQ2hvb3Nlcl9oCisK
KyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisKKyNpZiBFTkFCTEUo
SU5QVVRfQ09MT1IpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29sb3JDaG9vc2Vy
OworCitjbGFzcyBDb2xvckNob29zZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkNv
bG9yQ2hvb3NlckNsaWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBjb2xvclNlbGVjdGVkKGNvbnN0
IENvbG9yJikgPSAwOworfTsKKworY2xhc3MgQ29sb3JDaG9vc2VyIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgQ29sb3JDaG9vc2VyKiBjaG9vc2VyKCk7CisKKyAgICBDb2xvckNob29zZXJDbGllbnQq
IGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9OworICAgIHZvaWQgY29ubmVjdENs
aWVudChDb2xvckNob29zZXJDbGllbnQqKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RDbGllbnQoQ29s
b3JDaG9vc2VyQ2xpZW50Kik7CisKKyAgICB2b2lkIGNvbG9yU2VsZWN0ZWQoY29uc3QgQ29sb3Im
KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBDb2xvckNob29zZXIoKQorICAgIDogbV9jbGllbnQo
MCkKKyAgICB7IH0KKworICAgIENvbG9yQ2hvb3NlckNsaWVudCogbV9jbGllbnQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfQ09MT1IpCisK
KyNlbmRpZiAvLyBDb2xvckNob29zZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102900</attachid>
            <date>2011-08-04 05:41:42 -0700</date>
            <delta_ts>2011-08-05 03:57:18 -0700</delta_ts>
            <desc>fixed patch</desc>
            <filename>bug-62619-20110804214140.patch</filename>
            <type>text/plain</type>
            <size>28089</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIzNjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5YjhiZmYzOGMyYjQxYWQx
YmQ5ZTFiM2Q2ZjE3ZGNkMjM2ZGZhZjAyLi4xMzE1ZDdjNDVlOTkyZDljY2QyMGNiNmRmMDllZjI0
MjExNzM0NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTEtMDgtMDMgIEtlaXNo
aSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IDxpbnB1
dCB0eXBlPWNvbG9yPiBVSSBiZWhhdmlvciBXZWJDb3JlIHBhcnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNjE5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogQWRkZWQgX19a
TjdXZWJDb3JlMTJDb2xvckNob29zZXI3Y2hvb3NlckV2IGFuZAorICAgICAgICBfX1pOSzdXZWJD
b3JlMTJDb2xvckNob29zZXIxM2NvbG9yU2VsZWN0ZWRFUktOU181Q29sb3JFCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvQ29sb3JJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OnZhbHVlQXND
b2xvcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OnNldFZhbHVl
QXNDb2xvcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OndpbGxS
ZW1vdmUpOiBDbG9zZSBjb2xvciBjaG9vc2VyIHdoZW4gaW5wdXQgZWxlbWVudCBpcyByZW1vdmVk
IGZyb20gRE9NIHRyZWUuCisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6dmFsdWVD
aGFuZ2VkKTogVXBkYXRlIHNlbGVjdGVkIGNvbG9yIGluIGNvbG9yIGNob29zZXIgdG9vLgorICAg
ICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OmNvbG9yU2VsZWN0ZWQpOiBDYWxsYmFjayBm
cm9tIGNvbG9yIGNob29zZXIuCisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6aGFu
ZGxlQ2xpY2tFdmVudCk6IE9wZW5zIGNvbG9yIGNob29zZXIuCisgICAgICAgIChXZWJDb3JlOjpD
b2xvcklucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudCk6IENhbGxlZCB3aGVuIGVsZW1l
bnQuY2xpY2soKS4gT3BlbiBjb2xvciBjaG9vc2VyIG9ubHkKKyAgICAgICAgd2hlbiBpdCB3YXMg
aW5pdGlhdGVkIGJ5IGEgdXNlciBpbnRlcmFjdGlvbi4KKyAgICAgICAgKiBodG1sL0NvbG9ySW5w
dXRUeXBlLmg6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKiBo
dG1sL0ZpbGVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6d2lsbFJlbW92ZSk6IEFkZGVk
LiBDYWxscyBJbnB1dFR5cGU6OndpbGxSZW1vdmUKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnB1dFR5cGU6OnZhbHVlQXNDb2xvcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5w
dXRUeXBlOjpzZXRWYWx1ZUFzQ29sb3IpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0
VHlwZTo6Y2hyb21lKTogQWRkZWQuIFVzZWQgaW4gRmlsZUlucHV0VHlwZSBhbmQgQ29sb3JJbnB1
dFR5cGUuCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OndpbGxSZW1vdmUpOiBBZGRlZC4g
Q29sb3JJbnB1dFR5cGUgb3ZlcnJpZGVzIHRoaXMuCisgICAgICAgICogaHRtbC9JbnB1dFR5cGUu
aDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eUNocm9tZUNsaWVudDo6b3BlbkNvbG9yQ2hvb3Nlcik6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OmNsb3NlQ29sb3JDaG9vc2VyKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6c2V0U2VsZWN0ZWRDb2xvckluQ29sb3JD
aG9vc2VyKTogQWRkZWQuCisgICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lOjpvcGVuQ29sb3JDaG9vc2VyKTogQWRkZWQuIE9wZW5zIHRoZSBjb2xvciBj
aG9vc2VyLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpjbG9zZUNvbG9yQ2hvb3Nlcik6IEFk
ZGVkLiBUcmllcyB0byBjbG9zZSB0aGUgY29sb3IgY2hvb3Nlci4gTWlnaHQgbm90IGNsb3NlIGlm
IHRoZSAKKyAgICAgICAgbGlzdGVuZXIgb2YgdGhlIGNvbG9yIGNob29zZXIgaXMgYW5vdGhlciBw
YXJ0IG9mIHRoZSBicm93c2VyIG9yIGFub3RoZXIgcmVuZGVyIHByb2Nlc3MuCisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWU6OnNldFNlbGVjdGVkQ29sb3JJbkNvbG9yQ2hvb3Nlcik6IEFkZGVkLiBT
ZXRzIHRoZSBzZWxlY3RlZCBjb2xvciBpbiB0aGUgY29sb3IgY2hvb3Nlci4gCisgICAgICAgIEFn
YWluLCBtaWdodCBub3QgYmUgZXhlY3V0ZWQgaWYgdGhlIGxpc3RlbmVyIG9mIHRoZSBjb2xvciBj
aG9vc2VyIGlzIGFub3RoZXIgcGFydCBvZiB0aGUgYnJvd3NlciBvciBhbm90aGVyIHJlbmRlciBw
cm9jZXNzLgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVD
bGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Db2xvckNob29zZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNsaWVudDo6fkNvbG9yQ2hvb3NlckNsaWVudCk6
IERpc2Nvbm5lY3RzIGl0c2VsZiBmcm9tIHRoZSBDb2xvckNob29zZXIuCisgICAgICAgIChXZWJD
b3JlOjpDb2xvckNob29zZXI6OmNob29zZXIpOiBHZXQgc2hhcmVkIGluc3RhbmNlIG9mIENvbG9y
Q2hvb3Nlci4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcjo6Y29ubmVjdENsaWVudCk6
IENvbm5lY3RzIGEgQ29sb3JDaG9vc2VyQ2xpZW50IHRoYXQgcmVjZWl2ZXMgdGhlIGNvbG9yU2Vs
ZWN0ZWQgY2FsbGJhY2tzLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDaG9vc2VyOjpkaXNjb25u
ZWN0Q2xpZW50KTogRGlzY29ubmVjdHMgdGhlIGNvbm5lY3RDbGllbnQuCisgICAgICAgIChXZWJD
b3JlOjpDb2xvckNob29zZXI6OmNvbG9yU2VsZWN0ZWQpOiBDYWxsZWQgZnJvbSBjb2xvciBjaG9v
c2VyIGxpc3RlbmVyLgorICAgICAgICAqIHBsYXRmb3JtL0NvbG9yQ2hvb3Nlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcjo6Y2xpZW50KTogQWRkZWQuIFJldHVybnMg
dGhlIGN1cnJlbnQgY29ubmVjdGVkIGNsaWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ2hv
b3Nlcjo6Q29sb3JDaG9vc2VyKTogQWRkZWQuCisKIDIwMTEtMDgtMDQgIFRvbW15IFdpZGVuZmx5
Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBSZW5h
bWUgU3RyZWFtRXZlbnQgdG8gTWVkaWFTdHJlYW1FdmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRl
eCAwMDY1MDZjZjhiMTNhMDI4NDllZDIxNTU4ZTg2YWVlYTRiNDY5YTg2Li4zNmQyZjAzZDJiMjc4
MTFiOTZkMzM2MWUzMjRiZTQ3NTkwZTZjYmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTk0
MywzICsxOTQzLDggQEAgX19aTks3V2ViQ29yZTEzUmVzb3VyY2VFcnJvcmN2UDdOU0Vycm9yRXYK
IF9fWk43V2ViQ29yZTEyU2NoZWR1bGVQYWlyQzFFUDlOU1J1bkxvb3BQSzEwX19DRlN0cmluZwog
X19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTEycmVsZWFzZVByb3h5RXYKICNlbmRpZgorCisj
aWYgRU5BQkxFKElOUFVUX0NPTE9SKQorX19aTjdXZWJDb3JlMTJDb2xvckNob29zZXI3Y2hvb3Nl
ckV2CitfX1pOSzdXZWJDb3JlMTJDb2xvckNob29zZXIxM2NvbG9yU2VsZWN0ZWRFUktOU181Q29s
b3JFCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA0YzM3YWQ0ZGZjZWU2ZGM1ODhiMjZjYmY3OGZjZWE4YmUyNzc5ZmZh
Li4zZGQ3MmE0ODhjYThiMmE0ODRkOGY0NzE5MzdlMDk3NjZjMzQ1ZmM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MzI2LDYg
KzUzMjYsOCBAQAogCQlDMEYyQTQ0MTEzODY5QUFCMDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBt
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBGMkE0M0Yx
Mzg2OUEyODAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMTA1REE2MjBGM0FBNjhGMDAxREQ0NEYgLyog
VGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzEwNURBNjEwRjNBQTY4RjAwMURENDRGIC8qIFRleHRFbmNvZGlu
Z0RldGVjdG9ySUNVLmNwcCAqLzsgfTsKIAkJQzEwNURBNjQwRjNBQTZCODAwMURENDRGIC8qIFRl
eHRFbmNvZGluZ0RldGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMTA1REE2MzBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0
b3IuaCAqLzsgfTsKKwkJQzNFRUU4QTAxM0VBQzkzQjAwNUY3NDYwIC8qIENvbG9yQ2hvb3Nlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDM0VFRTg5
RTEzRUFDOTNBMDA1Rjc0NjAgLyogQ29sb3JDaG9vc2VyLmNwcCAqLzsgfTsKKwkJQzNFRUU4QTEx
M0VBQzkzQjAwNUY3NDYwIC8qIENvbG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzNFRUU4OUYxM0VBQzkzQjAwNUY3NDYwIC8qIENvbG9y
Q2hvb3Nlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUM1MEI1NjE2MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MEI1NjE0MTIxMTlEMjMw
MDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmNwcCAqLzsgfTsKIAkJQzUwQjU2MTcxMjExOUQyMzAw
OEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM1MEI1NjE1MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzUw
RDBFODIwRkY0MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwRDBFODAwRkY0MjcyOTAwQUMy
NjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3BwICovOyB9OwpAQCAtMTIwMjcsNiArMTIwMjksOCBA
QAogCQlDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVy
bDsgbmFtZSA9IHByZXByb2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlwdHMvcHJlcHJvY2Vzc29yLnBt
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTA1REE2MTBGM0FBNjhGMDAxREQ0NEYg
LyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMTA1REE2MzBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0
ZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEVuY29kaW5nRGV0
ZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzNFRUU4OUUxM0VBQzkzQTAw
NUY3NDYwIC8qIENvbG9yQ2hvb3Nlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDb2xvckNob29zZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
M0VFRTg5RjEzRUFDOTNCMDA1Rjc0NjAgLyogQ29sb3JDaG9vc2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yQ2hvb3Nlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDNTBCNTYxNDEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcm91cFNldHRpbmdzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdy
b3VwU2V0dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JvdXBTZXR0
aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTBEMEU4MDBGRjQyNzI5MDBB
QzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdG9yYWdlTmFtZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE5MDE0LDYgKzE5MDE4LDggQEAKIAkJCQk4OUQwOEQ5RDEyMjI4NDUxMDAxMjQxREYg
LyogQXN5bmNGaWxlU3lzdGVtLmggKi8sCiAJCQkJODlEMDhEOUUxMjIyODQ1MTAwMTI0MURGIC8q
IEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oICovLAogCQkJCTUxRTFFQ0IxMEM5MUM1NTYwMERD
MjU1QiAvKiBBdXRvZHJhaW5lZFBvb2wuaCAqLywKKwkJCQlDM0VFRTg5RTEzRUFDOTNBMDA1Rjc0
NjAgLyogQ29sb3JDaG9vc2VyLmNwcCAqLywKKwkJCQlDM0VFRTg5RjEzRUFDOTNCMDA1Rjc0NjAg
LyogQ29sb3JDaG9vc2VyLmggKi8sCiAJCQkJQkNDOENGQ0EwOTg2Q0QyNDAwMTQwQkYyIC8qIENv
bG9yRGF0YS5ncGVyZiAqLywKIAkJCQk0MUQwMTVDOTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVu
dFR5cGUuY3BwICovLAogCQkJCTQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlw
ZS5oICovLApAQCAtMjA1MDcsNiArMjA1MTMsNyBAQAogCQkJCTkzQzQ0MUYwMEY4MTNBMUEwMEMx
QTYzNCAvKiBDb2xsZWN0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzQ0MjAwMEY4
MTNBRTEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3
NTM1NjcwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlDM0VF
RThBMTEzRUFDOTNCMDA1Rjc0NjAgLyogQ29sb3JDaG9vc2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjIyNzk2MzBEMDBCRjIyMDA3MUI3ODIgLyogQ29sb3JEaXN0YW5jZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRjU1QjNEQjQxMjUxRjEyRDAwM0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFREUzQTUwMDBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCBp
biBIZWFkZXJzICovLApAQCAtMjM3OTIsNiArMjM3OTksNyBAQAogCQkJCTkzQzQ0MUVGMEY4MTNB
MUEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3
NTM1NjYwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
Q0YzMzI0MEYyQjk3MTUwMDRCNjc5NSAvKiBDb2xvckNHLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUMzRUVFOEEwMTNFQUM5M0IwMDVGNzQ2MCAvKiBDb2xvckNob29zZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFCQTc2QzkxMUQyMEU0NzAwNEMyMDFDIC8qIENvbG9yRGF0YS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMjIyNzk2MjBEMDBCRjIyMDA3MUI3ODIgLyogQ29sb3JEaXN0YW5jZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVCM0RCMzEyNTFGMTJEMDAzRUYyNjkgLyogQ29sb3JJ
bnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0NvbG9ySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5
cGUuY3BwCmluZGV4IGVhNDZhNjZhODAxOTRhNjFhYTZiZGU2NWQ3OTNlMGM4MjIwMmVjMGYuLjJm
ZjNjMWVjNzhiNTRmMzUyZjljZjAwYTI2YjFjMjU2ODEzNzM0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQ29sb3JJbnB1dFR5cGUuY3BwCkBAIC0zMSw5ICszMSwxMiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkNvbG9ySW5wdXRUeXBlLmgiCiAKKyNpbmNsdWRlICJDaHJvbWUuaCIK
ICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC05
Miw2ICs5NSwxNiBAQCBTdHJpbmcgQ29sb3JJbnB1dFR5cGU6OnNhbml0aXplVmFsdWUoY29uc3Qg
U3RyaW5nJiBwcm9wb3NlZFZhbHVlKQogICAgIHJldHVybiBwcm9wb3NlZFZhbHVlLmxvd2VyKCk7
CiB9CiAKK0NvbG9yIENvbG9ySW5wdXRUeXBlOjp2YWx1ZUFzQ29sb3IoKSBjb25zdAoreworICAg
IHJldHVybiBDb2xvcihlbGVtZW50KCktPnZhbHVlKCkpOworfQorCit2b2lkIENvbG9ySW5wdXRU
eXBlOjpzZXRWYWx1ZUFzQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yLCBFeGNlcHRpb25Db2RlJikg
Y29uc3QKK3sKKyAgICBlbGVtZW50KCktPnNldFZhbHVlKGNvbG9yLnNlcmlhbGl6ZWQoKSwgdHJ1
ZSk7Cit9CisKIHZvaWQgQ29sb3JJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewog
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKTsKQEAgLTEwOCw5
ICsxMjEsNTggQEAgdm9pZCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAg
ICAgdXBkYXRlQ29sb3JTd2F0Y2goKTsKIH0KIAordm9pZCBDb2xvcklucHV0VHlwZTo6d2lsbFJl
bW92ZSgpCit7CisgICAgaWYgKENvbG9yQ2hvb3Nlcjo6Y2hvb3NlcigpLT5jbGllbnQoKSA9PSB0
aGlzKSB7CisgICAgICAgIGlmIChDaHJvbWUqIGNocm9tZSA9IHRoaXMtPmNocm9tZSgpKQorICAg
ICAgICAgICAgY2hyb21lLT5jbG9zZUNvbG9yQ2hvb3NlcigpOworICAgIH0KK30KKwogdm9pZCBD
b2xvcklucHV0VHlwZTo6dmFsdWVDaGFuZ2VkKCkKIHsKICAgICB1cGRhdGVDb2xvclN3YXRjaCgp
OworICAgIGlmIChDb2xvckNob29zZXI6OmNob29zZXIoKS0+Y2xpZW50KCkgPT0gdGhpcykgewor
ICAgICAgICBpZiAoQ2hyb21lKiBjaHJvbWUgPSB0aGlzLT5jaHJvbWUoKSkKKyAgICAgICAgICAg
IGNocm9tZS0+c2V0U2VsZWN0ZWRDb2xvckluQ29sb3JDaG9vc2VyKHZhbHVlQXNDb2xvcigpKTsK
KyAgICB9Cit9CisKK3ZvaWQgQ29sb3JJbnB1dFR5cGU6OmNvbG9yU2VsZWN0ZWQoY29uc3QgQ29s
b3ImIGNvbG9yKQoreworICAgIGlmIChlbGVtZW50KCktPmRpc2FibGVkKCkgfHwgZWxlbWVudCgp
LT5yZWFkT25seSgpKQorICAgICAgICByZXR1cm47CisgICAgc2V0VmFsdWVBc0NvbG9yKGNvbG9y
KTsKK30KKwordm9pZCBDb2xvcklucHV0VHlwZTo6aGFuZGxlQ2xpY2tFdmVudChNb3VzZUV2ZW50
KiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPmlzU2ltdWxhdGVkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChlbGVtZW50KCktPmRpc2FibGVkKCkgfHwgZWxlbWVudCgpLT5yZWFkT25s
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoQ2hyb21lKiBjaHJvbWUgPSB0aGlzLT5j
aHJvbWUoKSkgeworICAgICAgICBDb2xvckNob29zZXI6OmNob29zZXIoKS0+Y29ubmVjdENsaWVu
dCh0aGlzKTsKKyAgICAgICAgY2hyb21lLT5vcGVuQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3Nlcjo6
Y2hvb3NlcigpLCB2YWx1ZUFzQ29sb3IoKSk7CisgICAgfQorICAgIGV2ZW50LT5zZXREZWZhdWx0
SGFuZGxlZCgpOworfQorCit2b2lkIENvbG9ySW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2
ZW50KEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoZWxlbWVudCgpLT5kaXNhYmxlZCgpIHx8IGVs
ZW1lbnQoKS0+cmVhZE9ubHkoKSB8fCAhZWxlbWVudCgpLT5yZW5kZXJlcigpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoQ2hyb21lKiBjaHJvbWUgPSB0aGlzLT5j
aHJvbWUoKSkgeworICAgICAgICBDb2xvckNob29zZXI6OmNob29zZXIoKS0+Y29ubmVjdENsaWVu
dCh0aGlzKTsKKyAgICAgICAgY2hyb21lLT5vcGVuQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3Nlcjo6
Y2hvb3NlcigpLCB2YWx1ZUFzQ29sb3IoKSk7CisgICAgfQorICAgIGV2ZW50LT5zZXREZWZhdWx0
SGFuZGxlZCgpOwogfQogCiB2b2lkIENvbG9ySW5wdXRUeXBlOjp1cGRhdGVDb2xvclN3YXRjaCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmgKaW5kZXggZDM0MDg0ZjAzMGZjZGQzM2Ri
NmI3NjE0ZTE3YzgxOGJiM2UzMjM2ZC4uMzVjODliMmIxYjJhYTFlYjFmZGIwN2IyMGUwZDBhNzJm
NmYzM2M1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaApAQCAtMzEsMTMgKzMx
LDE0IEBACiAjaWZuZGVmIENvbG9ySW5wdXRUeXBlX2gKICNkZWZpbmUgQ29sb3JJbnB1dFR5cGVf
aAogCi0jaW5jbHVkZSAiQmFzZUJ1dHRvbklucHV0VHlwZS5oIgorI2luY2x1ZGUgIkNvbG9yQ2hv
b3Nlci5oIgorI2luY2x1ZGUgIklucHV0VHlwZS5oIgogCiAjaWYgRU5BQkxFKElOUFVUX0NPTE9S
KQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbG9ySW5wdXRUeXBlIDogcHVibGlj
IElucHV0VHlwZSB7CitjbGFzcyBDb2xvcklucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUsIHBy
aXZhdGUgQ29sb3JDaG9vc2VyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0
cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50Kik7CiAKQEAgLTQ4LDggKzQ5LDE2
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUmVxdWlyZWQoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFN0cmluZyBmYWxsYmFja1ZhbHVlKCk7CiAgICAgdmlydHVhbCBTdHJpbmcg
c2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIENvbG9yIHZhbHVlQXND
b2xvcigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFzQ29sb3IoY29uc3QgQ29s
b3ImLCBFeGNlcHRpb25Db2RlJiA9IEFTU0VSVF9OT19FWENFUFRJT04pIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxS
ZW1vdmUoKTsKICAgICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2
b2lkIGhhbmRsZUNsaWNrRXZlbnQoTW91c2VFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50Kik7CisKKyAgICAvLyBDb2xvckNob29zZXJDbGllbnQg
aW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIGNvbG9yU2VsZWN0ZWQoY29uc3QgQ29s
b3ImKTsKIAogICAgIHZvaWQgdXBkYXRlQ29sb3JTd2F0Y2goKTsKICAgICBIVE1MRWxlbWVudCog
c2hhZG93Q29sb3JTd2F0Y2goKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwCmluZGV4IDVmMjI0ZTczNWEzNDY5ZTI5N2JkZGJiODRkMTFkM2UyM2I3MmE2ZjMuLjVkNWNh
MzlmYTdhYTg4MmFhMTQ3Y2M5MTA5YjAyNDExYzNjOTc0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlSW5wdXRUeXBlLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIkljb24uaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0jaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckZpbGVVcGxvYWRDb250cm9sLmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKQEAgLTMz
MywxMyArMzMyLDYgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjp1cGRhdGVSZW5kZXJpbmcoUGFzc1Jl
ZlB0cjxJY29uPiBpY29uKQogICAgICAgICBlbGVtZW50KCktPnJlbmRlcmVyKCktPnJlcGFpbnQo
KTsKIH0KIAotQ2hyb21lKiBGaWxlSW5wdXRUeXBlOjpjaHJvbWUoKSBjb25zdAotewotICAgIGlm
IChQYWdlKiBwYWdlID0gZWxlbWVudCgpLT5kb2N1bWVudCgpLT5wYWdlKCkpCi0gICAgICAgIHJl
dHVybiBwYWdlLT5jaHJvbWUoKTsKLSAgICByZXR1cm4gMDsKLX0KLQogdm9pZCBGaWxlSW5wdXRU
eXBlOjpyZWNlaXZlRHJvcHBlZEZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKIHsK
ICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IGVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlSW5wdXRUeXBlLmgKaW5kZXggYWFjYmQyMTk0MTgxZGZiNWM0ZjMxYTg0ZTM3OGNiYjY2MDUx
Y2FkYi4uOWVhYTcyZTNhMjg3YzEzNDAyNjFjMDEyODA0YjdkOWU4ZWY4MDdmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKQEAgLTM5LDcgKzM5LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBDaHJvbWU7CiBjbGFzcyBGaWxlTGlzdDsKIAogY2xhc3MgRmlsZUlu
cHV0VHlwZSA6IHB1YmxpYyBCYXNlQnV0dG9uSW5wdXRUeXBlLCBwcml2YXRlIEZpbGVDaG9vc2Vy
Q2xpZW50LCBwcml2YXRlIEZpbGVJY29uTG9hZGVyQ2xpZW50IHsKQEAgLTc3LDcgKzc2LDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlY2VpdmVEcm9wRm9yRGlyZWN0b3J5VXBsb2FkKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+Jik7CiAjZW5kaWYKICAgICB2b2lkIHJlcXVlc3RJY29uKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+Jik7Ci0gICAgQ2hyb21lKiBjaHJvbWUoKSBjb25zdDsKIAogICAgIFJlZlB0cjxG
aWxlTGlzdD4gbV9maWxlTGlzdDsKICAgICBSZWZQdHI8SWNvbj4gbV9pY29uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggYWQ0OTQyM2UwOGFlMDYwNTJiNGY3
MGU0MTE4ODU0ZDEyODFiMmYzMi4uMTEzNGE4ODgxNmRkYmZiZjY5ZjdlMDU1NTMwY2JlMzdmYTQx
ZDgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xOTA2
LDYgKzE5MDYsMTIgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpub3RpZnlGb3JtU3RhdGVDaGFu
Z2VkKCkKICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5mb3JtU3RhdGVEaWRDaGFu
Z2UodGhpcyk7CiB9CiAKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6d2lsbFJlbW92ZSgpCit7Cisg
ICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OndpbGxSZW1vdmUoKTsKKyAgICBtX2lucHV0
VHlwZS0+d2lsbFJlbW92ZSgpOworfQorCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWF4
TGVuZ3RoQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cmlidXRlKQogewogICAgIGludCBtYXhMZW5n
dGggPSBhdHRyaWJ1dGUtPmlzTnVsbCgpID8gbWF4aW11bUxlbmd0aCA6IGF0dHJpYnV0ZS0+dmFs
dWUoKS50b0ludCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCA5
MmZhOWY1ODU3YTczYTkxMTUwYTU1ODg4ZTg0NTkyZDM0MzFmY2VlLi4wZjI5ODFkMjdjMWRhNTlj
ZjdlMjczMTJmODhiZjU5Yzk3NjVlOTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaApAQCAtMjMwLDYgKzIzMCw4IEBAIHB1YmxpYzoKICAgICBib29sIGxhc3RDaGFuZ2VX
YXNVc2VyRWRpdCgpIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5Rm9ybVN0YXRlQ2hhbmdlZCgpOwog
CisgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUoKTsKKwogICAgIHN0YXRpYyBjb25zdCBpbnQg
bWF4aW11bUxlbmd0aDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmlu
ZGV4IDYwOTI0NjBhMDA3OGZlMjUzMGRlNjQxN2M4N2ExNDAwZjk0ZWZlNTAuLjZmMmE4ZWYxYWY1
OGI3ZDhhMjdiZjcyYzM5OTcwNjcwODBmM2RkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5j
bHVkZSAiTW9udGhJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJOdW1iZXJJbnB1dFR5cGUuaCIKKyNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFzc3dvcmRJbnB1dFR5cGUuaCIKICNpbmNsdWRl
ICJSYWRpb0lucHV0VHlwZS5oIgogI2luY2x1ZGUgIlJhbmdlSW5wdXRUeXBlLmgiCkBAIC0xNjYs
NiArMTY3LDE2IEBAIGJvb2wgSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3Qm
IGVuY29kaW5nLCBib29sKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitDb2xvciBJbnB1
dFR5cGU6OnZhbHVlQXNDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIENvbG9yKCk7Cit9CisK
K3ZvaWQgSW5wdXRUeXBlOjpzZXRWYWx1ZUFzQ29sb3IoY29uc3QgQ29sb3ImLCBFeGNlcHRpb25D
b2RlJiBlYykgY29uc3QKK3sKKyAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworfQorCiBkb3Vi
bGUgSW5wdXRUeXBlOjp2YWx1ZUFzRGF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIERhdGVDb21w
b25lbnRzOjppbnZhbGlkTWlsbGlzZWNvbmRzKCk7CkBAIC0zOTUsNiArNDA2LDEzIEBAIHZvaWQg
SW5wdXRUeXBlOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrSWZBY3RpdmUoS2V5Ym9hcmRFdmVudCog
ZXZlbnQpIGNvbnN0CiAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKK0Nocm9t
ZSogSW5wdXRUeXBlOjpjaHJvbWUoKSBjb25zdAoreworICAgIGlmIChQYWdlKiBwYWdlID0gZWxl
bWVudCgpLT5kb2N1bWVudCgpLT5wYWdlKCkpCisgICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUo
KTsKKyAgICByZXR1cm4gMDsKK30KKwogYm9vbCBJbnB1dFR5cGU6OmNhblNldFN0cmluZ1ZhbHVl
KCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ0OSw2ICs0NjcsMTAgQEAgYm9vbCBJ
bnB1dFR5cGU6OmNhbkNoYW5nZUZyb21Bbm90aGVyVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK3ZvaWQgSW5wdXRUeXBlOjp3aWxsUmVtb3ZlKCkKK3sKK30KKwogdm9pZCBJbnB1
dFR5cGU6Om1pbk9yTWF4QXR0cmlidXRlQ2hhbmdlZCgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5
cGUuaAppbmRleCAyZGYwZWY1YjhmOTU4OGQzMmFlNzJmYjYzMmMyMjRiN2JjYmY0NjQxLi4zNmI1
YmQ0MzU1ZTg5OGJlNTYxOGFjZmYxMzNjN2NjYTA1ZWJmYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRU
eXBlLmgKQEAgLTQxLDYgKzQxLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmVm
b3JlVGV4dEluc2VydGVkRXZlbnQ7CitjbGFzcyBDaHJvbWU7CitjbGFzcyBDb2xvcjsKIGNsYXNz
IERhdGVDb21wb25lbnRzOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGaWxlTGlzdDsKQEAgLTgwLDYg
KzgyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29u
dHJvbFR5cGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhbkNoYW5nZUZyb21Bbm90
aGVyVHlwZSgpIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUoKTsKKwogICAg
IC8vIFR5cGUgcXVlcnkgZnVuY3Rpb25zCiAKICAgICAvLyBBbnkgdGltZSB3ZSBhcmUgdXNpbmcg
b25lIG9mIHRoZXNlIGZ1bmN0aW9ucyBpdCdzIGJlc3QgdG8gcmVmYWN0b3IKQEAgLTkxLDcgKzk1
LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQogICAgIHZpcnR1YWwgYm9v
bCBpc0NvbG9yQ29udHJvbCgpIGNvbnN0OwotI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9DT0xPUikK
KyNlbmRpZgogICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrYm94KCkgY29uc3Q7CiAgICAgdmlydHVh
bCBib29sIGlzRW1haWxGaWVsZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGVVcGxv
YWQoKSBjb25zdDsKQEAgLTEyMSw2ICsxMjUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGdldFR5cGVTcGVjaWZpY1ZhbHVlKFN0cmluZyYpOyAvLyBDaGVja2VkIGZpcnN0LCBiZWZvcmUg
aW50ZXJuYWwgc3RvcmFnZSBvciB0aGUgdmFsdWUgYXR0cmlidXRlLgogICAgIHZpcnR1YWwgU3Ry
aW5nIGZhbGxiYWNrVmFsdWUoKTsgLy8gQ2hlY2tlZCBsYXN0LCBpZiBib3RoIGludGVybmFsIHN0
b3JhZ2UgYW5kIHZhbHVlIGF0dHJpYnV0ZSBhcmUgbWlzc2luZy4KICAgICB2aXJ0dWFsIFN0cmlu
ZyBkZWZhdWx0VmFsdWUoKTsgLy8gQ2hlY2tlZCBhZnRlciBldmVuIGZhbGxiYWNrVmFsdWUsIG9u
bHkgd2hlbiB0aGUgdmFsdWVXaXRoRGVmYXVsdCBmdW5jdGlvbiBpcyBjYWxsZWQuCisgICAgdmly
dHVhbCBDb2xvciB2YWx1ZUFzQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFs
dWVBc0NvbG9yKGNvbnN0IENvbG9yJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIHZpcnR1
YWwgZG91YmxlIHZhbHVlQXNEYXRlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVl
QXNEYXRlKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91Ymxl
IHZhbHVlQXNOdW1iZXIoKSBjb25zdDsKQEAgLTI2MCw2ICsyNjYsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBkaXNwYXRjaFNpbXVsYXRlZENsaWNrSWZBY3RpdmUoS2V5Ym9hcmRFdmVudCopIGNv
bnN0OwogICAgIC8vIFdlIGNhbid0IG1ha2UgdGhpcyBhIHN0YXRpYyBjb25zdCBkYXRhIG1lbWJl
ciBiZWNhdXNlIFZDKysgZG9lc24ndCBsaWtlIGl0LgogICAgIHN0YXRpYyBkb3VibGUgZGVmYXVs
dFN0ZXBCYXNlKCkgeyByZXR1cm4gMC4wOyB9CisgICAgQ2hyb21lKiBjaHJvbWUoKSBjb25zdDsK
IAogcHJpdmF0ZToKICAgICAvLyBSYXcgcG9pbnRlciBiZWNhdXNlIHRoZSBIVE1MSW5wdXRFbGVt
ZW50IG9iamVjdCBvd25zIHRoaXMgSW5wdXRUeXBlIG9iamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAppbmRleCBiNDA5NzU2ZTNmYWZjN2U4NGIwNWIxODE5MDU0ODk2NDcwMTM5
MWQyLi44YzdmYzUzOGVkMmMxNzVhYWE2NTljYTFmMTQwOTAwOTVlODM2ODZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0xOTYsNiArMTk2LDEyIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZW51bWVyYXRlQ2hvc2VuRGlyZWN0b3J5KEZpbGVDaG9vc2VyKikgeyB9
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKKyAgICB2b2lkIG9wZW5Db2xvckNo
b29zZXIoQ29sb3JDaG9vc2VyKiwgY29uc3QgQ29sb3ImKSB7IH0KKyAgICB2b2lkIGNsb3NlQ29s
b3JDaG9vc2VyKCkgeyB9CisgICAgdm9pZCBzZXRTZWxlY3RlZENvbG9ySW5Db2xvckNob29zZXIo
Y29uc3QgQ29sb3ImKSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5l
bChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
bG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKikg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA0ODRjYTgxM2Y2OWQ2ZmIwMDBkMzc0Y2Iw
ZDEzOWVkNjhlYTgwYTE3Li41YzdjYjE0NDVhYzUyMmMzNDQ1Y2EzMTAxOGYyNGJkYjc4OTMwYjgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC01Miw2ICs1MiwxMCBAQAogI2luY2x1ZGUgIlN0
b3JhZ2VOYW1lc3BhY2UuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQorI2lu
Y2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTQ2Nyw2ICs0NzEsMjMgQEAgdm9pZCBDaHJv
bWU6OmVudW1lcmF0ZUNob3NlbkRpcmVjdG9yeShGaWxlQ2hvb3NlciogZmlsZUNob29zZXIpCiB9
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKK3ZvaWQgQ2hyb21lOjpvcGVuQ29s
b3JDaG9vc2VyKENvbG9yQ2hvb3NlciogY29sb3JDaG9vc2VyLCBjb25zdCBDb2xvciYgaW5pdGlh
bENvbG9yKQoreworICAgIG1fY2xpZW50LT5vcGVuQ29sb3JDaG9vc2VyKGNvbG9yQ2hvb3Nlciwg
aW5pdGlhbENvbG9yKTsKK30KKwordm9pZCBDaHJvbWU6OmNsb3NlQ29sb3JDaG9vc2VyKCkKK3sK
KyAgICBtX2NsaWVudC0+Y2xvc2VDb2xvckNob29zZXIoKTsKK30KKwordm9pZCBDaHJvbWU6OnNl
dFNlbGVjdGVkQ29sb3JJbkNvbG9yQ2hvb3Nlcihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAg
bV9jbGllbnQtPnNldFNlbGVjdGVkQ29sb3JJbkNvbG9yQ2hvb3Nlcihjb2xvcik7Cit9CisjZW5k
aWYKKwogdm9pZCBDaHJvbWU6OnJ1bk9wZW5QYW5lbChGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8
RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyKQogewogICAgIG1fY2xpZW50LT5ydW5PcGVuUGFuZWwo
ZnJhbWUsIGZpbGVDaG9vc2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IDEyYjlmNTQ2N2NkYjhj
ZGIxMDcwNGFkZWRjNzBjOGU2N2MxMWQ3YzEuLjJlZDZlNzIyNjc5OWNhYmRiZWRiMzdhOWQ2ZGJj
OTlhMTk3MDg3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtMzYsNiArMzYsOSBAQCBjbGFzcyBO
U1ZpZXc7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBDaHJvbWVDbGllbnQ7Cisj
aWYgRU5BQkxFKElOUFVUX0NPTE9SKQorICAgIGNsYXNzIENvbG9yQ2hvb3NlcjsKKyNlbmRpZgog
ICAgIGNsYXNzIEZpbGVDaG9vc2VyOwogICAgIGNsYXNzIEZpbGVJY29uTG9hZGVyOwogICAgIGNs
YXNzIEZsb2F0UmVjdDsKQEAgLTE1NCw2ICsxNTcsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSos
IEdlb2xvY2F0aW9uKik7CiAgICAgICAgIHZvaWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdEZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24qKTsKIAorI2lmIEVOQUJMRShJTlBV
VF9DT0xPUikKKyAgICAgICAgdm9pZCBvcGVuQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlciosIGNv
bnN0IENvbG9yJik7CisgICAgICAgIHZvaWQgY2xvc2VDb2xvckNob29zZXIoKTsKKyAgICAgICAg
dm9pZCBzZXRTZWxlY3RlZENvbG9ySW5Db2xvckNob29zZXIoY29uc3QgQ29sb3ImKTsKKyNlbmRp
ZgorCiAgICAgICAgIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hv
b3Nlcj4pOwogICAgICAgICB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBGaWxlSWNvbkxvYWRlciopOwogI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZDVlNmQ3YjYzZDFhNTBhODJmNGYyZmQ5OWQ3
OGMzNmYyZWJhNGY4YS4uMTdmNzkwNmE4ZTQ2OTQ3NTQwOGI0MmE1NjVlZDVmYzk5NjZjOTUwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC03MSw2ICs3MSwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgR3JhcGhpY3NMYXllcjsKICNlbmRpZgogCisjaWYgRU5B
QkxFKElOUFVUX0NPTE9SKQorICAgIGNsYXNzIENvbG9yQ2hvb3NlcjsKKyNlbmRpZgorCiAjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyOwog
I2VuZGlmCkBAIC0yMzEsNiArMjM1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSos
IEdlb2xvY2F0aW9uKikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24qKSA9IDA7CiAK
KyNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCisgICAgICAgIHZpcnR1YWwgdm9pZCBvcGVuQ29sb3JD
aG9vc2VyKENvbG9yQ2hvb3NlciosIGNvbnN0IENvbG9yJikgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgY2xvc2VDb2xvckNob29zZXIoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRT
ZWxlY3RlZENvbG9ySW5Db2xvckNob29zZXIoY29uc3QgQ29sb3ImKSA9IDA7CisjZW5kaWYKKwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxl
Q2hvb3Nlcj4pID0gMDsKICAgICAgICAgLy8gQXN5bmNocm9ub3VzIHJlcXVlc3QgdG8gbG9hZCBh
biBpY29uIGZvciBzcGVjaWZpZWQgZmlsZW5hbWVzLgogICAgICAgICB2aXJ0dWFsIHZvaWQgbG9h
ZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKikgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29sb3JDaG9vc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbG9yQ2hvb3Nlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA1
M2I1Njk2YzIxODkxMDVlZjIxMTdhMjc1MzcwZTU4ZWNhNGNhMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbG9yQ2hvb3Nlci5jcHAKQEAgLTAsMCArMSw3MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgi
CisKKyNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ29s
b3JDaG9vc2VyQ2xpZW50Ojp+Q29sb3JDaG9vc2VyQ2xpZW50KCkKK3sKKyAgICBDb2xvckNob29z
ZXI6OmNob29zZXIoKS0+ZGlzY29ubmVjdENsaWVudCh0aGlzKTsKK30KKworc3RhdGljIENvbG9y
Q2hvb3Nlciogc3RhdGljQ2hvb3NlciA9IDA7CisKK0NvbG9yQ2hvb3NlciogQ29sb3JDaG9vc2Vy
OjpjaG9vc2VyKCkKK3sKKyAgICBpZiAoIXN0YXRpY0Nob29zZXIpCisgICAgICAgIHN0YXRpY0No
b29zZXIgPSBuZXcgQ29sb3JDaG9vc2VyKCk7CisgICAgcmV0dXJuIHN0YXRpY0Nob29zZXI7Cit9
CisKK3ZvaWQgQ29sb3JDaG9vc2VyOjpjb25uZWN0Q2xpZW50KENvbG9yQ2hvb3NlckNsaWVudCog
Y2xpZW50KQoreworICAgIGlmIChjbGllbnQgIT0gbV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50
ID0gY2xpZW50OworfQorCit2b2lkIENvbG9yQ2hvb3Nlcjo6ZGlzY29ubmVjdENsaWVudChDb2xv
ckNob29zZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBpZiAoY2xpZW50ID09IG1fY2xpZW50KQor
ICAgICAgICBtX2NsaWVudCA9IDA7Cit9CisKK3ZvaWQgQ29sb3JDaG9vc2VyOjpjb2xvclNlbGVj
dGVkKGNvbnN0IENvbG9yJiBjb2xvcikgY29uc3QKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAg
ICAgIG1fY2xpZW50LT5jb2xvclNlbGVjdGVkKGNvbG9yKTsKK30KKworfQorCisjZW5kaWYgLy8g
RU5BQkxFKElOUFVUX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q29sb3JDaG9vc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db2xvckNob29zZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lZWVkMzgxZTU2OTBhMWQ3ODdiMWVmODZkODliMjRmMjZjN2RhMDdiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29sb3JDaG9vc2VyLmgKQEAg
LTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIENvbG9yQ2hvb3Nlcl9oCisjZGVmaW5lIENv
bG9yQ2hvb3Nlcl9oCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CisKKyNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQ29sb3JDaG9vc2VyOworCitjbGFzcyBDb2xvckNob29zZXJDbGllbnQgeworcHVibGljOgor
ICAgIHZpcnR1YWwgfkNvbG9yQ2hvb3NlckNsaWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBjb2xv
clNlbGVjdGVkKGNvbnN0IENvbG9yJikgPSAwOworfTsKKworY2xhc3MgQ29sb3JDaG9vc2VyIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgQ29sb3JDaG9vc2VyKiBjaG9vc2VyKCk7CisKKyAgICBDb2xv
ckNob29zZXJDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9OworICAg
IHZvaWQgY29ubmVjdENsaWVudChDb2xvckNob29zZXJDbGllbnQqKTsKKyAgICB2b2lkIGRpc2Nv
bm5lY3RDbGllbnQoQ29sb3JDaG9vc2VyQ2xpZW50Kik7CisKKyAgICB2b2lkIGNvbG9yU2VsZWN0
ZWQoY29uc3QgQ29sb3ImKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBDb2xvckNob29zZXIoKQor
ICAgICAgICA6IG1fY2xpZW50KDApCisgICAgeyB9CisKKyAgICBDb2xvckNob29zZXJDbGllbnQq
IG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKElOUFVUX0NPTE9SKQorCisjZW5kaWYgLy8gQ29sb3JDaG9vc2VyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103057</attachid>
            <date>2011-08-05 03:53:12 -0700</date>
            <delta_ts>2011-08-05 04:40:04 -0700</delta_ts>
            <desc>new fixed patch</desc>
            <filename>bug-62619-20110805195311.patch</filename>
            <type>text/plain</type>
            <size>23681</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIzNjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5YjhiZmYzOGMyYjQxYWQx
YmQ5ZTFiM2Q2ZjE3ZGNkMjM2ZGZhZjAyLi5hZTc3NjM2MjZkMzI4YzJjNzcxMzIwOGYzYmQzNmQ0
Mjg4MmE1YWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMTEtMDgtMDUgIEtlaXNo
aSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IDxpbnB1
dCB0eXBlPWNvbG9yPiBVSSBiZWhhdmlvciBXZWJDb3JlIHBhcnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNjE5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogQWRkZWQgX19a
TjdXZWJDb3JlMTJDb2xvckNob29zZXI3Y2hvb3NlckV2IGFuZAorICAgICAgICBfX1pOSzdXZWJD
b3JlMTJDb2xvckNob29zZXIxM2NvbG9yU2VsZWN0ZWRFUktOU181Q29sb3JFCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBDb2xvckNob29zZXIue2gs
Y3BwfQorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3JJbnB1dFR5cGU6On5Db2xvcklucHV0VHlwZSk6IEFkZGVkLiBDbG9zZSBjb2xvciBj
aG9vc2VyLiBleC4gd2hlbiB0eXBlIGF0dHJpYnV0ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3JJbnB1dFR5cGU6OnZhbHVlQXNDb2xvcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3JJbnB1dFR5cGU6OnNldFZhbHVlQXNDb2xvcik6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q29sb3JJbnB1dFR5cGU6OnZhbHVlQ2hhbmdlZCk6IFVwZGF0ZSBzZWxlY3RlZCBjb2xv
ciBpbiBjb2xvciBjaG9vc2VyIHRvby4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBl
Ojpjb2xvclNlbGVjdGVkKTogQ2FsbGJhY2sgZnJvbSBjb2xvciBjaG9vc2VyLgorICAgICAgICAo
V2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OmNsb3NlQ29sb3JDaG9vc2VySWZDbGllbnRJbkRvY3Vt
ZW50KTogQ2xvc2UgY29sb3IgY2hvb3NlciBpZiBlbGVtZW50IGlzIGluCisgICAgICAgIGRvY3Vt
ZW50LiBDYWxsZWQgd2hlbiB0aGUgcGFnZSBuYXZpZ2F0ZXMgYXdheS4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbG9ySW5wdXRUeXBlOjpoYW5kbGVDbGlja0V2ZW50KTogT3BlbnMgY29sb3IgY2hvb3Nl
ci4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2
ZW50KTogQ2FsbGVkIHdoZW4gZWxlbWVudC5jbGljaygpLiBPcGVuIGNvbG9yIGNob29zZXIgb25s
eQorICAgICAgICB3aGVuIGl0IHdhcyBpbml0aWF0ZWQgYnkgYSB1c2VyIGludGVyYWN0aW9uLgor
ICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1
dFR5cGUuY3BwOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0
bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjpkZXRhY2gpOiBDbG9zZSBjb2xvciBjaG9vc2VyLiBDYWxsZWQgd2hlbiBpbnB1dCBlbGVt
ZW50IG9yIGl0cyBhbmNlc3RvcnMgaGF2ZSAiZGlzcGxheTpub25lIgorICAgICAgICBvciBpcyBy
ZW1vdmVkIGZyb20gRE9NLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6
Y2hyb21lKTpBZGRlZC4gVXNlZCBpbiBGaWxlSW5wdXRUeXBlIGFuZCBDb2xvcklucHV0VHlwZS4K
KyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5Q2hyb21lQ2xpZW50OjpvcGVuQ29sb3JDaG9v
c2VyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6Y2xvc2VD
b2xvckNob29zZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5Q2hyb21lQ2xpZW50
OjpzZXRTZWxlY3RlZENvbG9ySW5Db2xvckNob29zZXIpOiBBZGRlZC4KKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnRyYW5z
aXRpb25Ub0NvbW1pdHRlZCk6IENsb3NlIGNvbG9yIGNob29zZXIgd2hlbgorICAgICAgICBuYXZp
Z2F0aW5nIGF3YXkgZnJvbSB0aGUgcGFnZS4KKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWU6Om9wZW5Db2xvckNob29zZXIpOiBBZGRlZC4gT3BlbnMg
dGhlIGNvbG9yIGNob29zZXIuCisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmNsb3NlQ29sb3JD
aG9vc2VyKTogQWRkZWQuIFRyaWVzIHRvIGNsb3NlIHRoZSBjb2xvciBjaG9vc2VyLiBNaWdodCBu
b3QgY2xvc2UgaWYgdGhlIAorICAgICAgICBsaXN0ZW5lciBvZiB0aGUgY29sb3IgY2hvb3NlciBp
cyBhbm90aGVyIHBhcnQgb2YgdGhlIGJyb3dzZXIgb3IgYW5vdGhlciByZW5kZXIgcHJvY2Vzcy4K
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6c2V0U2VsZWN0ZWRDb2xvckluQ29sb3JDaG9vc2Vy
KTogQWRkZWQuIFNldHMgdGhlIHNlbGVjdGVkIGNvbG9yIGluIHRoZSBjb2xvciBjaG9vc2VyLiAK
KyAgICAgICAgQWdhaW4sIG1pZ2h0IG5vdCBiZSBleGVjdXRlZCBpZiB0aGUgbGlzdGVuZXIgb2Yg
dGhlIGNvbG9yIGNob29zZXIgaXMgYW5vdGhlciBwYXJ0IG9mIHRoZSBicm93c2VyIG9yIGFub3Ro
ZXIgcmVuZGVyIHByb2Nlc3MuCisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBw
YWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL0NvbG9yQ2hvb3Nlci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xpZW50Ojp+Q29sb3JDaG9v
c2VyQ2xpZW50KTogRGlzY29ubmVjdHMgaXRzZWxmIGZyb20gdGhlIENvbG9yQ2hvb3Nlci4KKyAg
ICAgICAgKFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcjo6Y2hvb3Nlcik6IEdldCBzaGFyZWQgaW5zdGFu
Y2Ugb2YgQ29sb3JDaG9vc2VyLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDaG9vc2VyOjpjb25u
ZWN0Q2xpZW50KTogQ29ubmVjdHMgYSBDb2xvckNob29zZXJDbGllbnQgdGhhdCByZWNlaXZlcyB0
aGUgY29sb3JTZWxlY3RlZCBjYWxsYmFja3MuCisgICAgICAgIChXZWJDb3JlOjpDb2xvckNob29z
ZXI6OmRpc2Nvbm5lY3RDbGllbnQpOiBEaXNjb25uZWN0cyB0aGUgY29ubmVjdENsaWVudC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcjo6Y2xvc2VDb2xvckNob29zZXJJZkNsaWVudElu
RG9jdW1lbnQpOiBDbG9zZSB0aGUgY29sb3IgY2hvb3NlciBpZiB0aGUgY2xpZW50IGlzCisgICAg
ICAgIGluc2lkZSB0aGUgZG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpDb2xvckNob29zZXI6
OmNvbG9yU2VsZWN0ZWQpOiBDYWxsZWQgZnJvbSBjb2xvciBjaG9vc2VyIGxpc3RlbmVyLgorICAg
ICAgICAqIHBsYXRmb3JtL0NvbG9yQ2hvb3Nlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbG9yQ2hvb3Nlcjo6Y2xpZW50KTogQWRkZWQuIFJldHVybnMgdGhlIGN1cnJlbnQgY29ubmVj
dGVkIGNsaWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcjo6Q29sb3JDaG9vc2Vy
KTogQWRkZWQuCisKIDIwMTEtMDgtMDQgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2ds
ZS5jb20+CiAKICAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBSZW5hbWUgU3RyZWFtRXZlbnQgdG8g
TWVkaWFTdHJlYW1FdmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAwMDY1MDZjZjhiMTNhMDI4
NDllZDIxNTU4ZTg2YWVlYTRiNDY5YTg2Li4wMTY2ZjQzYmQ0ODc5NTFjNDRhZDdiYTM0OGZlY2Zl
ZjZkM2Q0NDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTk0MywzICsxOTQzLDggQEAgX19a
Tks3V2ViQ29yZTEzUmVzb3VyY2VFcnJvcmN2UDdOU0Vycm9yRXYKIF9fWk43V2ViQ29yZTEyU2No
ZWR1bGVQYWlyQzFFUDlOU1J1bkxvb3BQSzEwX19DRlN0cmluZwogX19aTjdXZWJDb3JlMTRSZXNv
dXJjZUhhbmRsZTEycmVsZWFzZVByb3h5RXYKICNlbmRpZgorCisjaWYgRU5BQkxFKElOUFVUX0NP
TE9SKQorX19aTjdXZWJDb3JlMTJDb2xvckNob29zZXI3Y2hvb3NlckV2CitfX1pOSzdXZWJDb3Jl
MTJDb2xvckNob29zZXIxM2NvbG9yU2VsZWN0ZWRFUktOU181Q29sb3JFCisjZW5kaWYKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Nv
bG9ySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3Bw
CmluZGV4IGVhNDZhNjZhODAxOTRhNjFhYTZiZGU2NWQ3OTNlMGM4MjIwMmVjMGYuLjc3YzI2YjRm
N2Q0NmJmNDJkZThlNTBiNzM0MmI5OGE1MTNiY2MzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29s
b3JJbnB1dFR5cGUuY3BwCkBAIC0zMSw5ICszMSwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkNvbG9ySW5wdXRUeXBlLmgiCiAKKyNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNs
dWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJTY3Jp
cHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC02MSw2ICs2
NCwxNCBAQCBQYXNzT3duUHRyPElucHV0VHlwZT4gQ29sb3JJbnB1dFR5cGU6OmNyZWF0ZShIVE1M
SW5wdXRFbGVtZW50KiBlbGVtZW50KQogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ29sb3JJbnB1
dFR5cGUoZWxlbWVudCkpOwogfQogCitDb2xvcklucHV0VHlwZTo6fkNvbG9ySW5wdXRUeXBlKCkK
K3sKKyAgICBpZiAoQ29sb3JDaG9vc2VyOjpjaG9vc2VyKCktPmNsaWVudCgpID09IHRoaXMpIHsK
KyAgICAgICAgaWYgKENocm9tZSogY2hyb21lID0gdGhpcy0+Y2hyb21lKCkpCisgICAgICAgICAg
ICBjaHJvbWUtPmNsb3NlQ29sb3JDaG9vc2VyKCk7CisgICAgfQorfSAgICAKKwogYm9vbCBDb2xv
cklucHV0VHlwZTo6aXNDb2xvckNvbnRyb2woKSBjb25zdAogewogICAgIHJldHVybiB0cnVlOwpA
QCAtOTIsNiArMTAzLDE2IEBAIFN0cmluZyBDb2xvcklucHV0VHlwZTo6c2FuaXRpemVWYWx1ZShj
b25zdCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUpCiAgICAgcmV0dXJuIHByb3Bvc2VkVmFsdWUubG93
ZXIoKTsKIH0KIAorQ29sb3IgQ29sb3JJbnB1dFR5cGU6OnZhbHVlQXNDb2xvcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIENvbG9yKGVsZW1lbnQoKS0+dmFsdWUoKSk7Cit9CisKK3ZvaWQgQ29sb3JJ
bnB1dFR5cGU6OnNldFZhbHVlQXNDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIGNvbnN0Cit7Cisg
ICAgZWxlbWVudCgpLT5zZXRWYWx1ZShjb2xvci5zZXJpYWxpemVkKCksIHRydWUpOworfQorCiB2
b2lkIENvbG9ySW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBlbGVtZW50KCktPmRvY3VtZW50KCk7CkBAIC0xMTEsNiArMTMyLDUzIEBA
IHZvaWQgQ29sb3JJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogdm9pZCBDb2xvcklu
cHV0VHlwZTo6dmFsdWVDaGFuZ2VkKCkKIHsKICAgICB1cGRhdGVDb2xvclN3YXRjaCgpOworICAg
IGlmIChDb2xvckNob29zZXI6OmNob29zZXIoKS0+Y2xpZW50KCkgPT0gdGhpcykgeworICAgICAg
ICBpZiAoQ2hyb21lKiBjaHJvbWUgPSB0aGlzLT5jaHJvbWUoKSkKKyAgICAgICAgICAgIGNocm9t
ZS0+c2V0U2VsZWN0ZWRDb2xvckluQ29sb3JDaG9vc2VyKHZhbHVlQXNDb2xvcigpKTsKKyAgICB9
Cit9CisKK3ZvaWQgQ29sb3JJbnB1dFR5cGU6OmhhbmRsZUNsaWNrRXZlbnQoTW91c2VFdmVudCog
ZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT5pc1NpbXVsYXRlZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoZWxlbWVudCgpLT5kaXNhYmxlZCgpIHx8IGVsZW1lbnQoKS0+cmVhZE9ubHko
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKENocm9tZSogY2hyb21lID0gdGhpcy0+Y2hy
b21lKCkpIHsKKyAgICAgICAgQ29sb3JDaG9vc2VyOjpjaG9vc2VyKCktPmNvbm5lY3RDbGllbnQo
dGhpcyk7CisgICAgICAgIGNocm9tZS0+b3BlbkNvbG9yQ2hvb3NlcihDb2xvckNob29zZXI6OmNo
b29zZXIoKSwgdmFsdWVBc0NvbG9yKCkpOworICAgIH0KKyAgICBldmVudC0+c2V0RGVmYXVsdEhh
bmRsZWQoKTsKK30KKwordm9pZCBDb2xvcklucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVu
dChFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8fCBlbGVt
ZW50KCktPnJlYWRPbmx5KCkgfHwgIWVsZW1lbnQoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKCFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKENocm9tZSogY2hyb21lID0gdGhpcy0+Y2hy
b21lKCkpIHsKKyAgICAgICAgQ29sb3JDaG9vc2VyOjpjaG9vc2VyKCktPmNvbm5lY3RDbGllbnQo
dGhpcyk7CisgICAgICAgIGNocm9tZS0+b3BlbkNvbG9yQ2hvb3NlcihDb2xvckNob29zZXI6OmNo
b29zZXIoKSwgdmFsdWVBc0NvbG9yKCkpOworICAgIH0KKyAgICBldmVudC0+c2V0RGVmYXVsdEhh
bmRsZWQoKTsKK30KKwordm9pZCBDb2xvcklucHV0VHlwZTo6Y29sb3JTZWxlY3RlZChjb25zdCBD
b2xvciYgY29sb3IpCit7CisgICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50
KCktPnJlYWRPbmx5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBzZXRWYWx1ZUFzQ29sb3IoY29s
b3IpOworfQorCit2b2lkIENvbG9ySW5wdXRUeXBlOjpjbG9zZUNvbG9yQ2hvb3NlcklmQ2xpZW50
SW5Eb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgaWYgKGVsZW1lbnQoKS0+ZG9j
dW1lbnQoKSA9PSBkb2N1bWVudCkKKyAgICAgICAgY2xvc2VDb2xvckNob29zZXJJZkN1cnJlbnRD
bGllbnQoKTsKIH0KIAogdm9pZCBDb2xvcklucHV0VHlwZTo6dXBkYXRlQ29sb3JTd2F0Y2goKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oCmluZGV4IGQzNDA4NGYwMzBmY2RkMzNkYjZi
NzYxNGUxN2M4MThiYjNlMzIzNmQuLjMzMzRmOWJiOTBkN2FkZWJmNjNlMGQ3YThlOWEwYzkyNDEy
NDFjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmgKQEAgLTMxLDI1ICszMSwz
NSBAQAogI2lmbmRlZiBDb2xvcklucHV0VHlwZV9oCiAjZGVmaW5lIENvbG9ySW5wdXRUeXBlX2gK
IAotI2luY2x1ZGUgIkJhc2VCdXR0b25JbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJDb2xvckNob29z
ZXIuaCIKKyNpbmNsdWRlICJJbnB1dFR5cGUuaCIKIAogI2lmIEVOQUJMRShJTlBVVF9DT0xPUikK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb2xvcklucHV0VHlwZSA6IHB1YmxpYyBJ
bnB1dFR5cGUgeworY2xhc3MgQ29sb3JJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlLCBwcml2
YXRlIENvbG9yQ2hvb3NlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8
SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOwogCiBwcml2YXRlOgogICAgIENv
bG9ySW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogSW5wdXRUeXBlKGVsZW1l
bnQpIHsgfQorICAgIHZpcnR1YWwgfkNvbG9ySW5wdXRUeXBlKCk7CiAgICAgdmlydHVhbCBib29s
IGlzQ29sb3JDb250cm9sKCkgY29uc3Q7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IGZvcm1Db250cm9sVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JlcXVp
cmVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgZmFsbGJhY2tWYWx1ZSgpOwogICAgIHZp
cnR1YWwgU3RyaW5nIHNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBD
b2xvciB2YWx1ZUFzQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBc0Nv
bG9yKGNvbnN0IENvbG9yJikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1
YnRyZWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2
b2lkIGhhbmRsZUNsaWNrRXZlbnQoTW91c2VFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50Kik7CisKKyAgICAvLyBDb2xvckNob29zZXJDbGllbnQg
aW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIGNvbG9yU2VsZWN0ZWQoY29uc3QgQ29s
b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VDb2xvckNob29zZXJJZkNsaWVudEluRG9jdW1l
bnQoRG9jdW1lbnQqKTsKIAogICAgIHZvaWQgdXBkYXRlQ29sb3JTd2F0Y2goKTsKICAgICBIVE1M
RWxlbWVudCogc2hhZG93Q29sb3JTd2F0Y2goKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJ
bnB1dFR5cGUuY3BwCmluZGV4IDVmMjI0ZTczNWEzNDY5ZTI5N2JkZGJiODRkMTFkM2UyM2I3MmE2
ZjMuLjVkNWNhMzlmYTdhYTg4MmFhMTQ3Y2M5MTA5YjAyNDExYzNjOTc0YTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkljb24uaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdz
LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckZpbGVVcGxvYWRDb250cm9s
LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKQEAgLTMzMywxMyArMzMyLDYgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjp1cGRhdGVSZW5kZXJp
bmcoUGFzc1JlZlB0cjxJY29uPiBpY29uKQogICAgICAgICBlbGVtZW50KCktPnJlbmRlcmVyKCkt
PnJlcGFpbnQoKTsKIH0KIAotQ2hyb21lKiBGaWxlSW5wdXRUeXBlOjpjaHJvbWUoKSBjb25zdAot
ewotICAgIGlmIChQYWdlKiBwYWdlID0gZWxlbWVudCgpLT5kb2N1bWVudCgpLT5wYWdlKCkpCi0g
ICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKTsKLSAgICByZXR1cm4gMDsKLX0KLQogdm9pZCBG
aWxlSW5wdXRUeXBlOjpyZWNlaXZlRHJvcHBlZEZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXRocykKIHsKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IGVsZW1lbnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKaW5kZXggYWFjYmQyMTk0MTgxZGZiNWM0ZjMxYTg0ZTM3
OGNiYjY2MDUxY2FkYi4uOWVhYTcyZTNhMjg3YzEzNDAyNjFjMDEyODA0YjdkOWU4ZWY4MDdmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKQEAgLTM5LDcgKzM5LDYgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDaHJvbWU7CiBjbGFzcyBGaWxlTGlzdDsKIAogY2xh
c3MgRmlsZUlucHV0VHlwZSA6IHB1YmxpYyBCYXNlQnV0dG9uSW5wdXRUeXBlLCBwcml2YXRlIEZp
bGVDaG9vc2VyQ2xpZW50LCBwcml2YXRlIEZpbGVJY29uTG9hZGVyQ2xpZW50IHsKQEAgLTc3LDcg
Kzc2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY2VpdmVEcm9wRm9yRGlyZWN0b3J5VXBsb2Fk
KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAjZW5kaWYKICAgICB2b2lkIHJlcXVlc3RJY29uKGNv
bnN0IFZlY3RvcjxTdHJpbmc+Jik7Ci0gICAgQ2hyb21lKiBjaHJvbWUoKSBjb25zdDsKIAogICAg
IFJlZlB0cjxGaWxlTGlzdD4gbV9maWxlTGlzdDsKICAgICBSZWZQdHI8SWNvbj4gbV9pY29uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggYWQ0OTQyM2UwOGFl
MDYwNTJiNGY3MGU0MTE4ODU0ZDEyODFiMmYzMi4uZTVhZmQzN2E0NTNlZmE3MGNhNzRiNTJmOGE3
ZjBlNGM3NTE2NWUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CkBAIC04ODAsNiArODgwLDE0IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGV0YWNoKCkKIHsK
ICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGV0YWNoKCk7CiAgICAgc2V0Rm9ybUNv
bnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcihmYWxzZSk7CisjaWYgRU5BQkxFKElOUFVUX0NPTE9S
KQorICAgIGlmIChDb2xvckNob29zZXI6OmNob29zZXIoKS0+Y2xpZW50KCkgPT0gbV9pbnB1dFR5
cGUpIHsKKyAgICAgICAgaWYgKG1faW5wdXRUeXBlLT5pc0NvbG9yQ29udHJvbCkgeworICAgICAg
ICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQorICAgICAgICAgICAgICAgIHBh
Z2UtPmNocm9tZSgpLT5jbG9zZUNvbG9yQ2hvb3NlcigpOworICAgICAgICB9CisgICAgfQorI2Vu
ZGlmCiB9CiAKIFN0cmluZyBIVE1MSW5wdXRFbGVtZW50OjphbHRUZXh0KCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCA2MDkyNDYwYTAwNzhmZTI1MzBkZTY0MTdjODdhMTQw
MGY5NGVmZTUwLi41NzZhYWJiZTM0MjNkMjMxYzdhYTM0ZDljZGYyYzcyODQ1MDc2M2Q4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiTG9j
YWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1vbnRoSW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAi
TnVtYmVySW5wdXRUeXBlLmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhc3N3b3Jk
SW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiUmFkaW9JbnB1dFR5cGUuaCIKICNpbmNsdWRlICJSYW5n
ZUlucHV0VHlwZS5oIgpAQCAtMzk1LDYgKzM5NiwxMyBAQCB2b2lkIElucHV0VHlwZTo6ZGlzcGF0
Y2hTaW11bGF0ZWRDbGlja0lmQWN0aXZlKEtleWJvYXJkRXZlbnQqIGV2ZW50KSBjb25zdAogICAg
IGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCitDaHJvbWUqIElucHV0VHlwZTo6Y2hy
b21lKCkgY29uc3QKK3sKKyAgICBpZiAoUGFnZSogcGFnZSA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQo
KS0+cGFnZSgpKQorICAgICAgICByZXR1cm4gcGFnZS0+Y2hyb21lKCk7CisgICAgcmV0dXJuIDA7
Cit9CisKIGJvb2wgSW5wdXRUeXBlOjpjYW5TZXRTdHJpbmdWYWx1ZSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCAyZGYwZWY1YjhmOTU4OGQz
MmFlNzJmYjYzMmMyMjRiN2JjYmY0NjQxLi5lODIzMjgwYzAzMDAyMDdiNWM4ZWUzYTYzNTczN2E1
ZmYyZmZhZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTQxLDYgKzQxLDggQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmVmb3JlVGV4dEluc2VydGVkRXZlbnQ7CitjbGFz
cyBDaHJvbWU7CitjbGFzcyBDb2xvcjsKIGNsYXNzIERhdGVDb21wb25lbnRzOwogY2xhc3MgRXZl
bnQ7CiBjbGFzcyBGaWxlTGlzdDsKQEAgLTkxLDcgKzkzLDcgQEAgcHVibGljOgogCiAjaWYgRU5B
QkxFKElOUFVUX0NPTE9SKQogICAgIHZpcnR1YWwgYm9vbCBpc0NvbG9yQ29udHJvbCgpIGNvbnN0
OwotI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9DT0xPUikKKyNlbmRpZgogICAgIHZpcnR1YWwgYm9v
bCBpc0NoZWNrYm94KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzRW1haWxGaWVsZCgpIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGVVcGxvYWQoKSBjb25zdDsKQEAgLTI2MCw2ICsy
NjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaXNwYXRjaFNpbXVsYXRlZENsaWNrSWZBY3Rp
dmUoS2V5Ym9hcmRFdmVudCopIGNvbnN0OwogICAgIC8vIFdlIGNhbid0IG1ha2UgdGhpcyBhIHN0
YXRpYyBjb25zdCBkYXRhIG1lbWJlciBiZWNhdXNlIFZDKysgZG9lc24ndCBsaWtlIGl0LgogICAg
IHN0YXRpYyBkb3VibGUgZGVmYXVsdFN0ZXBCYXNlKCkgeyByZXR1cm4gMC4wOyB9CisgICAgQ2hy
b21lKiBjaHJvbWUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICAvLyBSYXcgcG9pbnRlciBiZWNh
dXNlIHRoZSBIVE1MSW5wdXRFbGVtZW50IG9iamVjdCBvd25zIHRoaXMgSW5wdXRUeXBlIG9iamVj
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBiNDA5NzU2ZTNmYWZjN2U4
NGIwNWIxODE5MDU0ODk2NDcwMTM5MWQyLi44YzdmYzUzOGVkMmMxNzVhYWE2NTljYTFmMTQwOTAw
OTVlODM2ODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0xOTYsNiAr
MTk2LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW51bWVyYXRlQ2hvc2VuRGlyZWN0
b3J5KEZpbGVDaG9vc2VyKikgeyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlBVVF9DT0xPUikK
KyAgICB2b2lkIG9wZW5Db2xvckNob29zZXIoQ29sb3JDaG9vc2VyKiwgY29uc3QgQ29sb3ImKSB7
IH0KKyAgICB2b2lkIGNsb3NlQ29sb3JDaG9vc2VyKCkgeyB9CisgICAgdm9pZCBzZXRTZWxlY3Rl
ZENvbG9ySW5Db2xvckNob29zZXIoY29uc3QgQ29sb3ImKSB7IH0KKyNlbmRpZgorCiAgICAgdmly
dHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIEZpbGVJY29uTG9hZGVyKikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCmluZGV4IDZhNDllNDY3NjE2YTQ2MzEzNzIzYmE1OGExMzY3MDE1MTlmODY0MGUuLmQ1NTFi
OWIwODRmYjc0NWY4NTUyY2ExZWQyN2ZhNTU4ODg0OWY0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcApAQCAtMTAwLDYgKzEwMCwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIEVOQUJM
RShJTlBVVF9DT0xPUikKKyNpbmNsdWRlICJDb2xvckNob29zZXIuaCIKKyNlbmRpZgorCiAjaWYg
RU5BQkxFKFNIQVJFRF9XT1JLRVJTKQogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclJlcG9zaXRvcnku
aCIKICNlbmRpZgpAQCAtMTgxNiw2ICsxODIwLDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnRyYW5z
aXRpb25Ub0NvbW1pdHRlZChQYXNzUmVmUHRyPENhY2hlZFBhZ2U+IGNhY2hlZFBhZ2UpCiAgICAg
aWYgKG1fZnJhbWUtPnZpZXcoKSkKICAgICAgICAgbV9mcmFtZS0+dmlldygpLT5zY3JvbGxBbmlt
YXRvcigpLT5jYW5jZWxBbmltYXRpb25zKCk7CiAKKyNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCisg
ICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgIENvbG9yQ2hvb3Nlcjo6Y2hvb3Nl
cigpLT5jbG9zZUNvbG9yQ2hvb3NlcklmQ2xpZW50SW5Eb2N1bWVudChtX2ZyYW1lLT5kb2N1bWVu
dCgpKTsKKyNlbmRpZgorCiAgICAgbV9jbGllbnQtPnNldENvcGllc09uU2Nyb2xsKCk7CiAgICAg
aGlzdG9yeSgpLT51cGRhdGVGb3JDb21taXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4
IDQ4NGNhODEzZjY5ZDZmYjAwMGQzNzRjYjBkMTM5ZWQ2OGVhODBhMTcuLjVjN2NiMTQ0NWFjNTIy
YzM0NDVjYTMxMDE4ZjI0YmRiNzg5MzBiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTUy
LDYgKzUyLDEwIEBACiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZS5oIgogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoSU5QVVRfQ09MT1IpCisjaW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAt
NDY3LDYgKzQ3MSwyMyBAQCB2b2lkIENocm9tZTo6ZW51bWVyYXRlQ2hvc2VuRGlyZWN0b3J5KEZp
bGVDaG9vc2VyKiBmaWxlQ2hvb3NlcikKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKElOUFVUX0NP
TE9SKQordm9pZCBDaHJvbWU6Om9wZW5Db2xvckNob29zZXIoQ29sb3JDaG9vc2VyKiBjb2xvckNo
b29zZXIsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IpCit7CisgICAgbV9jbGllbnQtPm9wZW5D
b2xvckNob29zZXIoY29sb3JDaG9vc2VyLCBpbml0aWFsQ29sb3IpOworfQorCit2b2lkIENocm9t
ZTo6Y2xvc2VDb2xvckNob29zZXIoKQoreworICAgIG1fY2xpZW50LT5jbG9zZUNvbG9yQ2hvb3Nl
cigpOworfQorCit2b2lkIENocm9tZTo6c2V0U2VsZWN0ZWRDb2xvckluQ29sb3JDaG9vc2VyKGNv
bnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBtX2NsaWVudC0+c2V0U2VsZWN0ZWRDb2xvckluQ29s
b3JDaG9vc2VyKGNvbG9yKTsKK30KKyNlbmRpZgorCiB2b2lkIENocm9tZTo6cnVuT3BlblBhbmVs
KEZyYW1lKiBmcmFtZSwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gZmlsZUNob29zZXIpCiB7CiAg
ICAgbV9jbGllbnQtPnJ1bk9wZW5QYW5lbChmcmFtZSwgZmlsZUNob29zZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmgKaW5kZXggMTJiOWY1NDY3Y2RiOGNkYjEwNzA0YWRlZGM3MGM4ZTY3YzExZDdjMS4uMmVk
NmU3MjI2Nzk5Y2FiZGJlZGIzN2E5ZDZkYmM5OWExOTcwODdlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5o
CkBAIC0zNiw2ICszNiw5IEBAIGNsYXNzIE5TVmlldzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgIGNsYXNzIENocm9tZUNsaWVudDsKKyNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCisgICAgY2xh
c3MgQ29sb3JDaG9vc2VyOworI2VuZGlmCiAgICAgY2xhc3MgRmlsZUNob29zZXI7CiAgICAgY2xh
c3MgRmlsZUljb25Mb2FkZXI7CiAgICAgY2xhc3MgRmxvYXRSZWN0OwpAQCAtMTU0LDYgKzE1Nywx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9u
UGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24qKTsKICAgICAgICAgdm9pZCBj
YW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoRnJhbWUqLCBHZW9sb2Nh
dGlvbiopOwogCisjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQorICAgICAgICB2b2lkIG9wZW5Db2xv
ckNob29zZXIoQ29sb3JDaG9vc2VyKiwgY29uc3QgQ29sb3ImKTsKKyAgICAgICAgdm9pZCBjbG9z
ZUNvbG9yQ2hvb3NlcigpOworICAgICAgICB2b2lkIHNldFNlbGVjdGVkQ29sb3JJbkNvbG9yQ2hv
b3Nlcihjb25zdCBDb2xvciYpOworI2VuZGlmCisKICAgICAgICAgdm9pZCBydW5PcGVuUGFuZWwo
RnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7CiAgICAgICAgIHZvaWQgbG9hZEljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKik7CiAjaWYgRU5B
QkxFKERJUkVDVE9SWV9VUExPQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBk
NWU2ZDdiNjNkMWE1MGE4MmY0ZjJmZDk5ZDc4YzM2ZjJlYmE0ZjhhLi4xN2Y3OTA2YThlNDY5NDc1
NDA4YjQyYTU2NWVkNWZjOTk2NmM5NTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
QEAgLTcxLDYgKzcxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBHcmFwaGlj
c0xheWVyOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCisgICAgY2xhc3MgQ29s
b3JDaG9vc2VyOworI2VuZGlmCisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBjbGFz
cyBOb3RpZmljYXRpb25QcmVzZW50ZXI7CiAjZW5kaWYKQEAgLTIzMSw2ICsyMzUsMTIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9u
UGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24qKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoRnJh
bWUqLCBHZW9sb2NhdGlvbiopID0gMDsKIAorI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKKyAgICAg
ICAgdmlydHVhbCB2b2lkIG9wZW5Db2xvckNob29zZXIoQ29sb3JDaG9vc2VyKiwgY29uc3QgQ29s
b3ImKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjbG9zZUNvbG9yQ2hvb3NlcigpID0gMDsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkQ29sb3JJbkNvbG9yQ2hvb3Nlcihjb25z
dCBDb2xvciYpID0gMDsKKyNlbmRpZgorCiAgICAgICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFu
ZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPikgPSAwOwogICAgICAgICAvLyBBc3lu
Y2hyb25vdXMgcmVxdWVzdCB0byBsb2FkIGFuIGljb24gZm9yIHNwZWNpZmllZCBmaWxlbmFtZXMu
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwgRmlsZUljb25Mb2FkZXIqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Db2xvckNob29zZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29sb3JD
aG9vc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kODlhMGNiMThlYzA3ODViY2E1YzQyZWRiMWI4Zjk4NGEw
MGZhMzA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29sb3JD
aG9vc2VyLmNwcApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDb2xvckNob29zZXIuaCIKKworI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitDb2xvckNob29zZXJDbGllbnQ6On5Db2xvckNob29zZXJD
bGllbnQoKQoreworICAgIENvbG9yQ2hvb3Nlcjo6Y2hvb3NlcigpLT5kaXNjb25uZWN0Q2xpZW50
KHRoaXMpOworfQorCitzdGF0aWMgQ29sb3JDaG9vc2VyKiBzdGF0aWNDaG9vc2VyID0gMDsKKwor
Q29sb3JDaG9vc2VyKiBDb2xvckNob29zZXI6OmNob29zZXIoKQoreworICAgIGlmICghc3RhdGlj
Q2hvb3NlcikKKyAgICAgICAgc3RhdGljQ2hvb3NlciA9IG5ldyBDb2xvckNob29zZXIoKTsKKyAg
ICByZXR1cm4gc3RhdGljQ2hvb3NlcjsKK30KKwordm9pZCBDb2xvckNob29zZXI6OmNvbm5lY3RD
bGllbnQoQ29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKGNsaWVudCAhPSBt
X2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQgPSBjbGllbnQ7Cit9CisKK3ZvaWQgQ29sb3JDaG9v
c2VyOjpkaXNjb25uZWN0Q2xpZW50KENvbG9yQ2hvb3NlckNsaWVudCogY2xpZW50KQoreworICAg
IGlmIChjbGllbnQgPT0gbV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50ID0gMDsKK30KKwordm9p
ZCBDb2xvckNob29zZXI6OmNsb3NlQ29sb3JDaG9vc2VySWZDbGllbnRJbkRvY3VtZW50KERvY3Vt
ZW50KiBkb2N1bWVudCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5j
bG9zZUNvbG9yQ2hvb3NlcklmQ2xpZW50SW5Eb2N1bWVudChkb2N1bWVudCk7Cit9CisKK3ZvaWQg
Q29sb3JDaG9vc2VyOjpjb2xvclNlbGVjdGVkKGNvbnN0IENvbG9yJiBjb2xvcikgY29uc3QKK3sK
KyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5jb2xvclNlbGVjdGVkKGNvbG9y
KTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX0NPTE9SKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29sb3JDaG9vc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Db2xvckNob29zZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTA4OGViOTVkM2Y0ODg3YmZmNTE5
OGUwOTkzYzU4ZDFjN2YyMjFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ29sb3JDaG9vc2VyLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIENv
bG9yQ2hvb3Nlcl9oCisjZGVmaW5lIENvbG9yQ2hvb3Nlcl9oCisKKyNpbmNsdWRlICJDb2xvci5o
IgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisKKyNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29sb3JDaG9vc2VyOworCitjbGFzcyBDb2xvckNo
b29zZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkNvbG9yQ2hvb3NlckNsaWVudCgp
OworICAgIHZpcnR1YWwgdm9pZCBjb2xvclNlbGVjdGVkKGNvbnN0IENvbG9yJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBjbG9zZUNvbG9yQ2hvb3NlcklmQ2xpZW50SW5Eb2N1bWVudChEb2N1bWVu
dCopID0gMDsKK307CisKK2NsYXNzIENvbG9yQ2hvb3NlciB7CitwdWJsaWM6CisgICAgc3RhdGlj
IENvbG9yQ2hvb3NlciogY2hvb3NlcigpOworCisgICAgQ29sb3JDaG9vc2VyQ2xpZW50KiBjbGll
bnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfTsKKyAgICB2b2lkIGNvbm5lY3RDbGllbnQo
Q29sb3JDaG9vc2VyQ2xpZW50Kik7CisgICAgdm9pZCBkaXNjb25uZWN0Q2xpZW50KENvbG9yQ2hv
b3NlckNsaWVudCopOworICAgIHZvaWQgY2xvc2VDb2xvckNob29zZXJJZkNsaWVudEluRG9jdW1l
bnQoRG9jdW1lbnQqKTsKKworICAgIHZvaWQgY29sb3JTZWxlY3RlZChjb25zdCBDb2xvciYpIGNv
bnN0OworCitwcml2YXRlOgorICAgIENvbG9yQ2hvb3NlcigpCisgICAgICAgIDogbV9jbGllbnQo
MCkKKyAgICB7IH0KKworICAgIENvbG9yQ2hvb3NlckNsaWVudCogbV9jbGllbnQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfQ09MT1IpCisK
KyNlbmRpZiAvLyBDb2xvckNob29zZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103060</attachid>
            <date>2011-08-05 04:40:11 -0700</date>
            <delta_ts>2011-08-05 05:35:31 -0700</delta_ts>
            <desc>new new fixed patch</desc>
            <filename>bug-62619-20110805204010.patch</filename>
            <type>text/plain</type>
            <size>29046</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIzNjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5YjhiZmYzOGMyYjQxYWQx
YmQ5ZTFiM2Q2ZjE3ZGNkMjM2ZGZhZjAyLi44MmRlYzZkNTQwZjI0ZTA2Mjk4OTU0OGFjODg5Mjhl
MzM5YjM0M2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMTEtMDgtMDUgIEtlaXNo
aSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IDxpbnB1
dCB0eXBlPWNvbG9yPiBVSSBiZWhhdmlvciBXZWJDb3JlIHBhcnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNjE5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogQWRkZWQgX19a
TjdXZWJDb3JlMTJDb2xvckNob29zZXI3Y2hvb3NlckV2IGFuZAorICAgICAgICBfX1pOSzdXZWJD
b3JlMTJDb2xvckNob29zZXIxM2NvbG9yU2VsZWN0ZWRFUktOU181Q29sb3JFCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBDb2xvckNob29zZXIue2gs
Y3BwfQorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3JJbnB1dFR5cGU6On5Db2xvcklucHV0VHlwZSk6IEFkZGVkLiBDbG9zZSBjb2xvciBj
aG9vc2VyLiBleC4gd2hlbiB0eXBlIGF0dHJpYnV0ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3JJbnB1dFR5cGU6OnZhbHVlQXNDb2xvcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3JJbnB1dFR5cGU6OnNldFZhbHVlQXNDb2xvcik6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q29sb3JJbnB1dFR5cGU6OnZhbHVlQ2hhbmdlZCk6IFVwZGF0ZSBzZWxlY3RlZCBjb2xv
ciBpbiBjb2xvciBjaG9vc2VyIHRvby4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBl
Ojpjb2xvclNlbGVjdGVkKTogQ2FsbGJhY2sgZnJvbSBjb2xvciBjaG9vc2VyLgorICAgICAgICAo
V2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OmNsb3NlQ29sb3JDaG9vc2VySWZDbGllbnRJc0luRG9j
dW1lbnQpOiBDbG9zZSBjb2xvciBjaG9vc2VyIGlmIGVsZW1lbnQgaXMgaW4KKyAgICAgICAgZG9j
dW1lbnQuIENhbGxlZCB3aGVuIHRoZSBwYWdlIG5hdmlnYXRlcyBhd2F5LgorICAgICAgICAoV2Vi
Q29yZTo6Q29sb3JJbnB1dFR5cGU6OmhhbmRsZUNsaWNrRXZlbnQpOiBPcGVucyBjb2xvciBjaG9v
c2VyLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRl
RXZlbnQpOiBDYWxsZWQgd2hlbiBlbGVtZW50LmNsaWNrKCkuIE9wZW4gY29sb3IgY2hvb3NlciBv
bmx5CisgICAgICAgIHdoZW4gaXQgd2FzIGluaXRpYXRlZCBieSBhIHVzZXIgaW50ZXJhY3Rpb24u
CisgICAgICAgICogaHRtbC9Db2xvcklucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvRmlsZUlu
cHV0VHlwZS5jcHA6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmg6CisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OmRldGFjaCk6IENsb3NlIGNvbG9yIGNob29zZXIuIENhbGxlZCB3aGVuIGlucHV0IGVs
ZW1lbnQgb3IgaXRzIGFuY2VzdG9ycyBoYXZlICJkaXNwbGF5Om5vbmUiCisgICAgICAgIG9yIGlz
IHJlbW92ZWQgZnJvbSBET00uCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBl
OjpjaHJvbWUpOkFkZGVkLiBVc2VkIGluIEZpbGVJbnB1dFR5cGUgYW5kIENvbG9ySW5wdXRUeXBl
LgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6Om9wZW5Db2xvckNo
b29zZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5Q2hyb21lQ2xpZW50OjpjbG9z
ZUNvbG9yQ2hvb3Nlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGll
bnQ6OnNldFNlbGVjdGVkQ29sb3JJbkNvbG9yQ2hvb3Nlcik6IEFkZGVkLgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dHJh
bnNpdGlvblRvQ29tbWl0dGVkKTogQ2xvc2UgY29sb3IgY2hvb3NlciB3aGVuCisgICAgICAgIG5h
dmlnYXRpbmcgYXdheSBmcm9tIHRoZSBwYWdlLgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6b3BlbkNvbG9yQ2hvb3Nlcik6IEFkZGVkLiBPcGVu
cyB0aGUgY29sb3IgY2hvb3Nlci4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y2xvc2VDb2xv
ckNob29zZXIpOiBBZGRlZC4gVHJpZXMgdG8gY2xvc2UgdGhlIGNvbG9yIGNob29zZXIuIE1pZ2h0
IG5vdCBjbG9zZSBpZiB0aGUgCisgICAgICAgIGxpc3RlbmVyIG9mIHRoZSBjb2xvciBjaG9vc2Vy
IGlzIGFub3RoZXIgcGFydCBvZiB0aGUgYnJvd3NlciBvciBhbm90aGVyIHJlbmRlciBwcm9jZXNz
LgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzZXRTZWxlY3RlZENvbG9ySW5Db2xvckNob29z
ZXIpOiBBZGRlZC4gU2V0cyB0aGUgc2VsZWN0ZWQgY29sb3IgaW4gdGhlIGNvbG9yIGNob29zZXIu
IAorICAgICAgICBBZ2FpbiwgbWlnaHQgbm90IGJlIGV4ZWN1dGVkIGlmIHRoZSBsaXN0ZW5lciBv
ZiB0aGUgY29sb3IgY2hvb3NlciBpcyBhbm90aGVyIHBhcnQgb2YgdGhlIGJyb3dzZXIgb3IgYW5v
dGhlciByZW5kZXIgcHJvY2Vzcy4KKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAq
IHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vQ29sb3JDaG9vc2VyLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb2xvckNob29zZXJDbGllbnQ6On5Db2xvckNo
b29zZXJDbGllbnQpOiBEaXNjb25uZWN0cyBpdHNlbGYgZnJvbSB0aGUgQ29sb3JDaG9vc2VyLgor
ICAgICAgICAoV2ViQ29yZTo6Q29sb3JDaG9vc2VyOjpjaG9vc2VyKTogR2V0IHNoYXJlZCBpbnN0
YW5jZSBvZiBDb2xvckNob29zZXIuCisgICAgICAgIChXZWJDb3JlOjpDb2xvckNob29zZXI6OmNv
bm5lY3RDbGllbnQpOiBDb25uZWN0cyBhIENvbG9yQ2hvb3NlckNsaWVudCB0aGF0IHJlY2VpdmVz
IHRoZSBjb2xvclNlbGVjdGVkIGNhbGxiYWNrcy4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ2hv
b3Nlcjo6ZGlzY29ubmVjdENsaWVudCk6IERpc2Nvbm5lY3RzIHRoZSBjb25uZWN0Q2xpZW50Lgor
ICAgICAgICAoV2ViQ29yZTo6Q29sb3JDaG9vc2VyOjpjbG9zZUNvbG9yQ2hvb3NlcklmQ2xpZW50
SXNJbkRvY3VtZW50KTogQ2xvc2UgdGhlIGNvbG9yIGNob29zZXIgaWYgdGhlIGNsaWVudCBpcwor
ICAgICAgICBpbnNpZGUgdGhlIGRvY3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDaG9v
c2VyOjpjb2xvclNlbGVjdGVkKTogQ2FsbGVkIGZyb20gY29sb3IgY2hvb3NlciBsaXN0ZW5lci4K
KyAgICAgICAgKiBwbGF0Zm9ybS9Db2xvckNob29zZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpDb2xvckNob29zZXI6OmNsaWVudCk6IEFkZGVkLiBSZXR1cm5zIHRoZSBjdXJyZW50IGNv
bm5lY3RlZCBjbGllbnQuCisgICAgICAgIChXZWJDb3JlOjpDb2xvckNob29zZXI6OkNvbG9yQ2hv
b3Nlcik6IEFkZGVkLgorCiAyMDExLTA4LTA0ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bn
b29nbGUuY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogUmVuYW1lIFN0cmVhbUV2ZW50
IHRvIE1lZGlhU3RyZWFtRXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMDA2NTA2Y2Y4YjEz
YTAyODQ5ZWQyMTU1OGU4NmFlZWE0YjQ2OWE4Ni4uMzZkMmYwM2QyYjI3ODExYjk2ZDMzNjFlMzI0
YmU0NzU5MGU2Y2JmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE5NDMsMyArMTk0Myw4IEBA
IF9fWk5LN1dlYkNvcmUxM1Jlc291cmNlRXJyb3JjdlA3TlNFcnJvckV2CiBfX1pON1dlYkNvcmUx
MlNjaGVkdWxlUGFpckMxRVA5TlNSdW5Mb29wUEsxMF9fQ0ZTdHJpbmcKIF9fWk43V2ViQ29yZTE0
UmVzb3VyY2VIYW5kbGUxMnJlbGVhc2VQcm94eUV2CiAjZW5kaWYKKworI2lmIEVOQUJMRShJTlBV
VF9DT0xPUikKK19fWk43V2ViQ29yZTEyQ29sb3JDaG9vc2VyN2Nob29zZXJFdgorX19aTks3V2Vi
Q29yZTEyQ29sb3JDaG9vc2VyMTNjb2xvclNlbGVjdGVkRVJLTlNfNUNvbG9yRQorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNGMzN2FkNGRmY2VlNmRjNTg4YjI2Y2JmNzhmY2VhOGJlMjc3OWZmYS4uM2RkNzJhNDg4Y2E4
YjJhNDg0ZDhmNDcxOTM3ZTA5NzY2YzM0NWZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTMyNiw2ICs1MzI2LDggQEAKIAkJ
QzBGMkE0NDExMzg2OUFBQjAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRjJBNDNGMTM4NjlBMjgwMDY2QzUz
NCAvKiBwcmVwcm9jZXNzb3IucG0gKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQzEwNURBNjIwRjNBQTY4RjAwMURENDRGIC8qIFRleHRFbmNvZGluZ0Rl
dGVjdG9ySUNVLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMxMDVEQTYxMEYzQUE2OEYwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5j
cHAgKi87IH07CiAJCUMxMDVEQTY0MEYzQUE2QjgwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRl
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzEw
NURBNjMwRjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggKi87IH07CisJ
CUMzRUVFOEEwMTNFQUM5M0IwMDVGNzQ2MCAvKiBDb2xvckNob29zZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzNFRUU4OUUxM0VBQzkzQTAwNUY3
NDYwIC8qIENvbG9yQ2hvb3Nlci5jcHAgKi87IH07CisJCUMzRUVFOEExMTNFQUM5M0IwMDVGNzQ2
MCAvKiBDb2xvckNob29zZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMzRUVFODlGMTNFQUM5M0IwMDVGNzQ2MCAvKiBDb2xvckNob29zZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTBCNTYxNjEy
MTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBCNTYxNDEyMTE5RDIzMDA4QjQ2RTAgLyogR3Jv
dXBTZXR0aW5ncy5jcHAgKi87IH07CiAJCUM1MEI1NjE3MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91
cFNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDNTBCNTYxNTEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM1MEQwRTgyMEZGNDI3Mjkw
MEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MEQwRTgwMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdl
TmFtZXNwYWNlLmNwcCAqLzsgfTsKQEAgLTEyMDI3LDYgKzEyMDI5LDggQEAKIAkJQzBGMkE0M0Yx
Mzg2OUEyODAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBwcmVw
cm9jZXNzb3IucG07IHBhdGggPSBzY3JpcHRzL3ByZXByb2Nlc3Nvci5wbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzEwNURBNjEwRjNBQTY4RjAwMURENDRGIC8qIFRleHRFbmNvZGlu
Z0RldGVjdG9ySUNVLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRl
eHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzEwNURBNjMwRjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRFbmNvZGluZ0RldGVjdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMzRUVFODlFMTNFQUM5M0EwMDVGNzQ2MCAvKiBDb2xv
ckNob29zZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sb3JD
aG9vc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzNFRUU4OUYxM0VBQzkz
QjAwNUY3NDYwIC8qIENvbG9yQ2hvb3Nlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb2xvckNob29zZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwQjU2
MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUM1MEI1NjE1MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyb3VwU2V0dGluZ3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwRDBFODAwRkY0MjcyOTAwQUMyNjQ0IC8qIFN0b3Jh
Z2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3Rv
cmFnZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTAxNCw2
ICsxOTAxOCw4IEBACiAJCQkJODlEMDhEOUQxMjIyODQ1MTAwMTI0MURGIC8qIEFzeW5jRmlsZVN5
c3RlbS5oICovLAogCQkJCTg5RDA4RDlFMTIyMjg0NTEwMDEyNDFERiAvKiBBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MuaCAqLywKIAkJCQk1MUUxRUNCMTBDOTFDNTU2MDBEQzI1NUIgLyogQXV0b2Ry
YWluZWRQb29sLmggKi8sCisJCQkJQzNFRUU4OUUxM0VBQzkzQTAwNUY3NDYwIC8qIENvbG9yQ2hv
b3Nlci5jcHAgKi8sCisJCQkJQzNFRUU4OUYxM0VBQzkzQjAwNUY3NDYwIC8qIENvbG9yQ2hvb3Nl
ci5oICovLAogCQkJCUJDQzhDRkNBMDk4NkNEMjQwMDE0MEJGMiAvKiBDb2xvckRhdGEuZ3BlcmYg
Ki8sCiAJCQkJNDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCAqLywK
IAkJCQk0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCAqLywKQEAgLTIw
NTA3LDYgKzIwNTEzLDcgQEAKIAkJCQk5M0M0NDFGMDBGODEzQTFBMDBDMUE2MzQgLyogQ29sbGVj
dGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0M0NDIwMDBGODEzQUUxMDBDMUE2MzQg
LyogQ29sbGVjdGlvblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTY3MEIwNTM4MTQw
MDJDRTY0RiAvKiBDb2xvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzNFRUU4QTExM0VBQzkzQjAw
NUY3NDYwIC8qIENvbG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NjMwRDAw
QkYyMjAwNzFCNzgyIC8qIENvbG9yRGlzdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIz
REI0MTI1MUYxMkQwMDNFRjI2OSAvKiBDb2xvcklucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRURFM0E1MDAwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggaW4gSGVhZGVycyAqLywK
QEAgLTIzNzkyLDYgKzIzNzk5LDcgQEAKIAkJCQk5M0M0NDFFRjBGODEzQTFBMDBDMUE2MzQgLyog
Q29sbGVjdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTY2MEIwNTM4MTQw
MDJDRTY0RiAvKiBDb2xvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNGMzMyNDBGMkI5NzE1
MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDM0VFRThBMDEzRUFD
OTNCMDA1Rjc0NjAgLyogQ29sb3JDaG9vc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQkE3
NkM5MTFEMjBFNDcwMDRDMjAxQyAvKiBDb2xvckRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjIyMjc5NjIwRDAwQkYyMjAwNzFCNzgyIC8qIENvbG9yRGlzdGFuY2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRjU1QjNEQjMxMjUxRjEyRDAwM0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCBl
YTQ2YTY2YTgwMTk0YTYxYWE2YmRlNjVkNzkzZTBjODIyMDJlYzBmLi4wMmY4M2IxYzIzNjUxZGM5
MDRiMmRlYjA0YjZkMTFmNzM5OWI1ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0NvbG9ySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRU
eXBlLmNwcApAQCAtMzEsOSArMzEsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJDb2xvcklucHV0VHlwZS5oIgogCisjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ29s
b3IuaCIKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNjEsNiArNjQsMTEgQEAg
UGFzc093blB0cjxJbnB1dFR5cGU+IENvbG9ySW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxl
bWVudCogZWxlbWVudCkKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENvbG9ySW5wdXRUeXBlKGVs
ZW1lbnQpKTsKIH0KIAorQ29sb3JJbnB1dFR5cGU6On5Db2xvcklucHV0VHlwZSgpCit7CisgICAg
Y2xvc2VDb2xvckNob29zZXJJZkN1cnJlbnRDbGllbnQoKTsKK30gICAgCisKIGJvb2wgQ29sb3JJ
bnB1dFR5cGU6OmlzQ29sb3JDb250cm9sKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTkyLDYgKzEwMCwxNiBAQCBTdHJpbmcgQ29sb3JJbnB1dFR5cGU6OnNhbml0aXplVmFsdWUoY29u
c3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlKQogICAgIHJldHVybiBwcm9wb3NlZFZhbHVlLmxvd2Vy
KCk7CiB9CiAKK0NvbG9yIENvbG9ySW5wdXRUeXBlOjp2YWx1ZUFzQ29sb3IoKSBjb25zdAorewor
ICAgIHJldHVybiBDb2xvcihlbGVtZW50KCktPnZhbHVlKCkpOworfQorCit2b2lkIENvbG9ySW5w
dXRUeXBlOjpzZXRWYWx1ZUFzQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSBjb25zdAoreworICAg
IGVsZW1lbnQoKS0+c2V0VmFsdWUoY29sb3Iuc2VyaWFsaXplZCgpLCB0cnVlKTsKK30KKwogdm9p
ZCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7CiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gZWxlbWVudCgpLT5kb2N1bWVudCgpOwpAQCAtMTExLDYgKzEyOSw1OCBAQCB2
b2lkIENvbG9ySW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHZvaWQgQ29sb3JJbnB1
dFR5cGU6OnZhbHVlQ2hhbmdlZCgpCiB7CiAgICAgdXBkYXRlQ29sb3JTd2F0Y2goKTsKKyAgICBp
ZiAoQ29sb3JDaG9vc2VyOjpjaG9vc2VyKCktPmNsaWVudCgpID09IHRoaXMpIHsKKyAgICAgICAg
aWYgKENocm9tZSogY2hyb21lID0gdGhpcy0+Y2hyb21lKCkpCisgICAgICAgICAgICBjaHJvbWUt
PnNldFNlbGVjdGVkQ29sb3JJbkNvbG9yQ2hvb3Nlcih2YWx1ZUFzQ29sb3IoKSk7CisgICAgfQor
fQorCit2b2lkIENvbG9ySW5wdXRUeXBlOjpoYW5kbGVDbGlja0V2ZW50KE1vdXNlRXZlbnQqIGV2
ZW50KQoreworICAgIGlmIChldmVudC0+aXNTaW11bGF0ZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50KCktPnJlYWRPbmx5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChDaHJvbWUqIGNocm9tZSA9IHRoaXMtPmNocm9t
ZSgpKSB7CisgICAgICAgIENvbG9yQ2hvb3Nlcjo6Y2hvb3NlcigpLT5jb25uZWN0Q2xpZW50KHRo
aXMpOworICAgICAgICBjaHJvbWUtPm9wZW5Db2xvckNob29zZXIoQ29sb3JDaG9vc2VyOjpjaG9v
c2VyKCksIHZhbHVlQXNDb2xvcigpKTsKKyAgICB9CisgICAgZXZlbnQtPnNldERlZmF1bHRIYW5k
bGVkKCk7Cit9CisKK3ZvaWQgQ29sb3JJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQo
RXZlbnQqIGV2ZW50KQoreworICAgIGlmIChlbGVtZW50KCktPmRpc2FibGVkKCkgfHwgZWxlbWVu
dCgpLT5yZWFkT25seSgpIHx8ICFlbGVtZW50KCktPnJlbmRlcmVyKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICghU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChDaHJvbWUqIGNocm9tZSA9IHRoaXMtPmNocm9t
ZSgpKSB7CisgICAgICAgIENvbG9yQ2hvb3Nlcjo6Y2hvb3NlcigpLT5jb25uZWN0Q2xpZW50KHRo
aXMpOworICAgICAgICBjaHJvbWUtPm9wZW5Db2xvckNob29zZXIoQ29sb3JDaG9vc2VyOjpjaG9v
c2VyKCksIHZhbHVlQXNDb2xvcigpKTsKKyAgICB9CisgICAgZXZlbnQtPnNldERlZmF1bHRIYW5k
bGVkKCk7Cit9CisKK3ZvaWQgQ29sb3JJbnB1dFR5cGU6OmRldGFjaCgpCit7CisgICAgY2xvc2VD
b2xvckNob29zZXJJZkN1cnJlbnRDbGllbnQoKTsKK30KKwordm9pZCBDb2xvcklucHV0VHlwZTo6
Y29sb3JTZWxlY3RlZChjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgaWYgKGVsZW1lbnQoKS0+
ZGlzYWJsZWQoKSB8fCBlbGVtZW50KCktPnJlYWRPbmx5KCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBzZXRWYWx1ZUFzQ29sb3IoY29sb3IpOworfQorCit2b2lkIENvbG9ySW5wdXRUeXBlOjpjbG9z
ZUNvbG9yQ2hvb3NlcklmQ2xpZW50SXNJbkRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK3sK
KyAgICBpZiAoZWxlbWVudCgpLT5kb2N1bWVudCgpID09IGRvY3VtZW50KQorICAgICAgICBjbG9z
ZUNvbG9yQ2hvb3NlcklmQ3VycmVudENsaWVudCgpOwogfQogCiB2b2lkIENvbG9ySW5wdXRUeXBl
Ojp1cGRhdGVDb2xvclN3YXRjaCgpCkBAIC0xMjksNiArMTk5LDE0IEBAIEhUTUxFbGVtZW50KiBD
b2xvcklucHV0VHlwZTo6c2hhZG93Q29sb3JTd2F0Y2goKSBjb25zdAogICAgIHJldHVybiBzaGFk
b3cgPyB0b0hUTUxFbGVtZW50KHNoYWRvdy0+Zmlyc3RDaGlsZCgpLT5maXJzdENoaWxkKCkpIDog
MDsKIH0KIAordm9pZCBDb2xvcklucHV0VHlwZTo6Y2xvc2VDb2xvckNob29zZXJJZkN1cnJlbnRD
bGllbnQoKQoreworICAgIGlmIChDb2xvckNob29zZXI6OmNob29zZXIoKS0+Y2xpZW50KCkgPT0g
dGhpcykgeworICAgICAgICBpZiAoQ2hyb21lKiBjaHJvbWUgPSB0aGlzLT5jaHJvbWUoKSkKKyAg
ICAgICAgICAgIGNocm9tZS0+Y2xvc2VDb2xvckNob29zZXIoKTsKKyAgICB9Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9DT0xPUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaAppbmRleCBkMzQwODRmMDMwZmNkZDMzZGI2Yjc2MTRl
MTdjODE4YmIzZTMyMzZkLi4wYzY3MzllMjkxNWJiMDBhM2ZiOGU1ZDAyODhiMmNiYTEyOWFkMGRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oCkBAIC0zMSwyOCArMzEsNDAgQEAK
ICNpZm5kZWYgQ29sb3JJbnB1dFR5cGVfaAogI2RlZmluZSBDb2xvcklucHV0VHlwZV9oCiAKLSNp
bmNsdWRlICJCYXNlQnV0dG9uSW5wdXRUeXBlLmgiCisjaW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgi
CisjaW5jbHVkZSAiSW5wdXRUeXBlLmgiCiAKICNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29sb3JJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRU
eXBlIHsKK2NsYXNzIENvbG9ySW5wdXRUeXBlIDogcHVibGljIElucHV0VHlwZSwgcHJpdmF0ZSBD
b2xvckNob29zZXJDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0
VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqKTsKIAogcHJpdmF0ZToKICAgICBDb2xvcklu
cHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IElucHV0VHlwZShlbGVtZW50KSB7
IH0KKyAgICB2aXJ0dWFsIH5Db2xvcklucHV0VHlwZSgpOwogICAgIHZpcnR1YWwgYm9vbCBpc0Nv
bG9yQ29udHJvbCgpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3Jt
Q29udHJvbFR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSZXF1aXJlZCgp
IGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIGZhbGxiYWNrVmFsdWUoKTsKICAgICB2aXJ0dWFs
IFN0cmluZyBzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgQ29sb3Ig
dmFsdWVBc0NvbG9yKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNDb2xvcihj
b25zdCBDb2xvciYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVl
KCk7CiAgICAgdmlydHVhbCB2b2lkIHZhbHVlQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVDbGlja0V2ZW50KE1vdXNlRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRE9N
QWN0aXZhdGVFdmVudChFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKKworICAg
IC8vIENvbG9yQ2hvb3NlckNsaWVudCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQg
Y29sb3JTZWxlY3RlZChjb25zdCBDb2xvciYpOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZUNvbG9y
Q2hvb3NlcklmQ2xpZW50SXNJbkRvY3VtZW50KERvY3VtZW50Kik7CiAKICAgICB2b2lkIHVwZGF0
ZUNvbG9yU3dhdGNoKCk7CiAgICAgSFRNTEVsZW1lbnQqIHNoYWRvd0NvbG9yU3dhdGNoKCkgY29u
c3Q7CisgICAgdm9pZCBjbG9zZUNvbG9yQ2hvb3NlcklmQ3VycmVudENsaWVudCgpIGNvbnN0Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5jcHAKaW5kZXggNWYyMjRlNzM1YTM0NjllMjk3YmRkYmI4NGQxMWQzZTIzYjcyYTZmMy4uNWQ1
Y2EzOWZhN2FhODgyYWExNDdjYzkxMDliMDI0MTFjM2M5NzRhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSWNvbi5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKLSNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaCIKICNp
bmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgpAQCAt
MzMzLDEzICszMzIsNiBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnVwZGF0ZVJlbmRlcmluZyhQYXNz
UmVmUHRyPEljb24+IGljb24pCiAgICAgICAgIGVsZW1lbnQoKS0+cmVuZGVyZXIoKS0+cmVwYWlu
dCgpOwogfQogCi1DaHJvbWUqIEZpbGVJbnB1dFR5cGU6OmNocm9tZSgpIGNvbnN0Ci17Ci0gICAg
aWYgKFBhZ2UqIHBhZ2UgPSBlbGVtZW50KCktPmRvY3VtZW50KCktPnBhZ2UoKSkKLSAgICAgICAg
cmV0dXJuIHBhZ2UtPmNocm9tZSgpOwotICAgIHJldHVybiAwOwotfQotCiB2b2lkIEZpbGVJbnB1
dFR5cGU6OnJlY2VpdmVEcm9wcGVkRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQog
ewogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gZWxlbWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZpbGVJbnB1dFR5cGUuaAppbmRleCBhYWNiZDIxOTQxODFkZmI1YzRmMzFhODRlMzc4Y2JiNjYw
NTFjYWRiLi45ZWFhNzJlM2EyODdjMTM0MDI2MWMwMTI4MDRiN2Q5ZThlZjgwN2Y5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaApAQCAtMzksNyArMzksNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIENocm9tZTsKIGNsYXNzIEZpbGVMaXN0OwogCiBjbGFzcyBGaWxl
SW5wdXRUeXBlIDogcHVibGljIEJhc2VCdXR0b25JbnB1dFR5cGUsIHByaXZhdGUgRmlsZUNob29z
ZXJDbGllbnQsIHByaXZhdGUgRmlsZUljb25Mb2FkZXJDbGllbnQgewpAQCAtNzcsNyArNzYsNiBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVjZWl2ZURyb3BGb3JEaXJlY3RvcnlVcGxvYWQoY29uc3Qg
VmVjdG9yPFN0cmluZz4mKTsKICNlbmRpZgogICAgIHZvaWQgcmVxdWVzdEljb24oY29uc3QgVmVj
dG9yPFN0cmluZz4mKTsKLSAgICBDaHJvbWUqIGNocm9tZSgpIGNvbnN0OwogCiAgICAgUmVmUHRy
PEZpbGVMaXN0PiBtX2ZpbGVMaXN0OwogICAgIFJlZlB0cjxJY29uPiBtX2ljb247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBhZDQ5NDIzZTA4YWUwNjA1MmI0
ZjcwZTQxMTg4NTRkMTI4MWIyZjMyLi4zZWQxNWNiY2Y4MzRhZGY1MDFiN2Y3NmIwOWE4MGMwYTJk
NmM0NDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTg4
MCw2ICs4ODAsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRldGFjaCgpCiB7CiAgICAgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRldGFjaCgpOwogICAgIHNldEZvcm1Db250cm9sVmFs
dWVNYXRjaGVzUmVuZGVyZXIoZmFsc2UpOworICAgIG1faW5wdXRUeXBlLT5kZXRhY2goKTsKIH0K
IAogU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OmFsdFRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuY3BwCmluZGV4IDYwOTI0NjBhMDA3OGZlMjUzMGRlNjQxN2M4N2ExNDAwZjk0ZWZl
NTAuLjZjMzRkYzQ2ODkyMzc4MmE0Mzc5ODg4YmFmYzEyN2VkZjE0ZDQ5MzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0lucHV0VHlwZS5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJMb2NhbGl6ZWRT
dHJpbmdzLmgiCiAjaW5jbHVkZSAiTW9udGhJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJOdW1iZXJJ
bnB1dFR5cGUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFzc3dvcmRJbnB1dFR5
cGUuaCIKICNpbmNsdWRlICJSYWRpb0lucHV0VHlwZS5oIgogI2luY2x1ZGUgIlJhbmdlSW5wdXRU
eXBlLmgiCkBAIC0zOTUsNiArMzk2LDEzIEBAIHZvaWQgSW5wdXRUeXBlOjpkaXNwYXRjaFNpbXVs
YXRlZENsaWNrSWZBY3RpdmUoS2V5Ym9hcmRFdmVudCogZXZlbnQpIGNvbnN0CiAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKK0Nocm9tZSogSW5wdXRUeXBlOjpjaHJvbWUoKSBj
b25zdAoreworICAgIGlmIChQYWdlKiBwYWdlID0gZWxlbWVudCgpLT5kb2N1bWVudCgpLT5wYWdl
KCkpCisgICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKTsKKyAgICByZXR1cm4gMDsKK30KKwog
Ym9vbCBJbnB1dFR5cGU6OmNhblNldFN0cmluZ1ZhbHVlKCkgY29uc3QKIHsKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTQyMyw2ICs0MzEsMTAgQEAgdm9pZCBJbnB1dFR5cGU6OmF0dGFjaCgpCiB7CiB9
CiAKK3ZvaWQgSW5wdXRUeXBlOjpkZXRhY2goKQoreworfQorCiB2b2lkIElucHV0VHlwZTo6YWx0
QXR0cmlidXRlQ2hhbmdlZCgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCAyZGYw
ZWY1YjhmOTU4OGQzMmFlNzJmYjYzMmMyMjRiN2JjYmY0NjQxLi41MTFmOTViOTFiY2Y0NmM4MDhk
ODk2ZGQzZjU3MTMzODM1ZDU0MjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTQxLDYg
KzQxLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmVmb3JlVGV4dEluc2VydGVk
RXZlbnQ7CitjbGFzcyBDaHJvbWU7CitjbGFzcyBDb2xvcjsKIGNsYXNzIERhdGVDb21wb25lbnRz
OwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGaWxlTGlzdDsKQEAgLTkxLDcgKzkzLDcgQEAgcHVibGlj
OgogCiAjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQogICAgIHZpcnR1YWwgYm9vbCBpc0NvbG9yQ29u
dHJvbCgpIGNvbnN0OwotI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9DT0xPUikKKyNlbmRpZgogICAg
IHZpcnR1YWwgYm9vbCBpc0NoZWNrYm94KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzRW1h
aWxGaWVsZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGVVcGxvYWQoKSBjb25zdDsK
QEAgLTIwNSw2ICsyMDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNO
ZWVkZWQoKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIG1pbk9yTWF4QXR0
cmlidXRlQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBhbHRBdHRyaWJ1dGVDaGFuZ2VkKCk7
CiAgICAgdmlydHVhbCB2b2lkIHNyY0F0dHJpYnV0ZUNoYW5nZWQoKTsKQEAgLTI2MCw2ICsyNjMs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaXNwYXRjaFNpbXVsYXRlZENsaWNrSWZBY3RpdmUo
S2V5Ym9hcmRFdmVudCopIGNvbnN0OwogICAgIC8vIFdlIGNhbid0IG1ha2UgdGhpcyBhIHN0YXRp
YyBjb25zdCBkYXRhIG1lbWJlciBiZWNhdXNlIFZDKysgZG9lc24ndCBsaWtlIGl0LgogICAgIHN0
YXRpYyBkb3VibGUgZGVmYXVsdFN0ZXBCYXNlKCkgeyByZXR1cm4gMC4wOyB9CisgICAgQ2hyb21l
KiBjaHJvbWUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICAvLyBSYXcgcG9pbnRlciBiZWNhdXNl
IHRoZSBIVE1MSW5wdXRFbGVtZW50IG9iamVjdCBvd25zIHRoaXMgSW5wdXRUeXBlIG9iamVjdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBiNDA5NzU2ZTNmYWZjN2U4NGIw
NWIxODE5MDU0ODk2NDcwMTM5MWQyLi44YzdmYzUzOGVkMmMxNzVhYWE2NTljYTFmMTQwOTAwOTVl
ODM2ODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0xOTYsNiArMTk2
LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW51bWVyYXRlQ2hvc2VuRGlyZWN0b3J5
KEZpbGVDaG9vc2VyKikgeyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKKyAg
ICB2b2lkIG9wZW5Db2xvckNob29zZXIoQ29sb3JDaG9vc2VyKiwgY29uc3QgQ29sb3ImKSB7IH0K
KyAgICB2b2lkIGNsb3NlQ29sb3JDaG9vc2VyKCkgeyB9CisgICAgdm9pZCBzZXRTZWxlY3RlZENv
bG9ySW5Db2xvckNob29zZXIoY29uc3QgQ29sb3ImKSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVh
bCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IEZpbGVJY29uTG9hZGVyKikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CmluZGV4IDZhNDllNDY3NjE2YTQ2MzEzNzIzYmE1OGExMzY3MDE1MTlmODY0MGUuLjcxZWFlZDFi
YmFkZGQ0ZTgxOGFiYTYwZTE4MmI2ZWRiNDAzOWQ4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcApAQCAtMTAwLDYgKzEwMCwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShJ
TlBVVF9DT0xPUikKKyNpbmNsdWRlICJDb2xvckNob29zZXIuaCIKKyNlbmRpZgorCiAjaWYgRU5B
QkxFKFNIQVJFRF9XT1JLRVJTKQogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCIK
ICNlbmRpZgpAQCAtMTgxNiw2ICsxODIwLDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnRyYW5zaXRp
b25Ub0NvbW1pdHRlZChQYXNzUmVmUHRyPENhY2hlZFBhZ2U+IGNhY2hlZFBhZ2UpCiAgICAgaWYg
KG1fZnJhbWUtPnZpZXcoKSkKICAgICAgICAgbV9mcmFtZS0+dmlldygpLT5zY3JvbGxBbmltYXRv
cigpLT5jYW5jZWxBbmltYXRpb25zKCk7CiAKKyNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCisgICAg
aWYgKG1fZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgIENvbG9yQ2hvb3Nlcjo6Y2hvb3Nlcigp
LT5jbG9zZUNvbG9yQ2hvb3NlcklmQ2xpZW50SXNJbkRvY3VtZW50KG1fZnJhbWUtPmRvY3VtZW50
KCkpOworI2VuZGlmCisKICAgICBtX2NsaWVudC0+c2V0Q29waWVzT25TY3JvbGwoKTsKICAgICBo
aXN0b3J5KCktPnVwZGF0ZUZvckNvbW1pdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXgg
NDg0Y2E4MTNmNjlkNmZiMDAwZDM3NGNiMGQxMzllZDY4ZWE4MGExNy4uNWM3Y2IxNDQ1YWM1MjJj
MzQ0NWNhMzEwMThmMjRiZGI3ODkzMGI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtNTIs
NiArNTIsMTAgQEAKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCiAjZW5kaWYKIAorI2lm
IEVOQUJMRShJTlBVVF9DT0xPUikKKyNpbmNsdWRlICJDb2xvckNob29zZXIuaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC00
NjcsNiArNDcxLDIzIEBAIHZvaWQgQ2hyb21lOjplbnVtZXJhdGVDaG9zZW5EaXJlY3RvcnkoRmls
ZUNob29zZXIqIGZpbGVDaG9vc2VyKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU5QVVRfQ09M
T1IpCit2b2lkIENocm9tZTo6b3BlbkNvbG9yQ2hvb3NlcihDb2xvckNob29zZXIqIGNvbG9yQ2hv
b3NlciwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvcikKK3sKKyAgICBtX2NsaWVudC0+b3BlbkNv
bG9yQ2hvb3Nlcihjb2xvckNob29zZXIsIGluaXRpYWxDb2xvcik7Cit9CisKK3ZvaWQgQ2hyb21l
OjpjbG9zZUNvbG9yQ2hvb3NlcigpCit7CisgICAgbV9jbGllbnQtPmNsb3NlQ29sb3JDaG9vc2Vy
KCk7Cit9CisKK3ZvaWQgQ2hyb21lOjpzZXRTZWxlY3RlZENvbG9ySW5Db2xvckNob29zZXIoY29u
c3QgQ29sb3ImIGNvbG9yKQoreworICAgIG1fY2xpZW50LT5zZXRTZWxlY3RlZENvbG9ySW5Db2xv
ckNob29zZXIoY29sb3IpOworfQorI2VuZGlmCisKIHZvaWQgQ2hyb21lOjpydW5PcGVuUGFuZWwo
RnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBmaWxlQ2hvb3NlcikKIHsKICAg
ICBtX2NsaWVudC0+cnVuT3BlblBhbmVsKGZyYW1lLCBmaWxlQ2hvb3Nlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuaAppbmRleCAxMmI5ZjU0NjdjZGI4Y2RiMTA3MDRhZGVkYzcwYzhlNjdjMTFkN2MxLi4yZWQ2
ZTcyMjY3OTljYWJkYmVkYjM3YTlkNmRiYzk5YTE5NzA4N2VmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgK
QEAgLTM2LDYgKzM2LDkgQEAgY2xhc3MgTlNWaWV3OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgY2xhc3MgQ2hyb21lQ2xpZW50OworI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKKyAgICBjbGFz
cyBDb2xvckNob29zZXI7CisjZW5kaWYKICAgICBjbGFzcyBGaWxlQ2hvb3NlcjsKICAgICBjbGFz
cyBGaWxlSWNvbkxvYWRlcjsKICAgICBjbGFzcyBGbG9hdFJlY3Q7CkBAIC0xNTQsNiArMTU3LDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCByZXF1ZXN0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqLCBHZW9sb2NhdGlvbiopOwogICAgICAgICB2b2lkIGNh
bmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0
aW9uKik7CiAKKyNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCisgICAgICAgIHZvaWQgb3BlbkNvbG9y
Q2hvb3NlcihDb2xvckNob29zZXIqLCBjb25zdCBDb2xvciYpOworICAgICAgICB2b2lkIGNsb3Nl
Q29sb3JDaG9vc2VyKCk7CisgICAgICAgIHZvaWQgc2V0U2VsZWN0ZWRDb2xvckluQ29sb3JDaG9v
c2VyKGNvbnN0IENvbG9yJik7CisjZW5kaWYKKwogICAgICAgICB2b2lkIHJ1bk9wZW5QYW5lbChG
cmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKICAgICAgICAgdm9pZCBsb2FkSWNvbkZv
ckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUljb25Mb2FkZXIqKTsKICNpZiBFTkFC
TEUoRElSRUNUT1JZX1VQTE9BRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGQ1
ZTZkN2I2M2QxYTUwYTgyZjRmMmZkOTlkNzhjMzZmMmViYTRmOGEuLjE3Zjc5MDZhOGU0Njk0NzU0
MDhiNDJhNTY1ZWQ1ZmM5OTY2Yzk1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApA
QCAtNzEsNiArNzEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEdyYXBoaWNz
TGF5ZXI7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKKyAgICBjbGFzcyBDb2xv
ckNob29zZXI7CisjZW5kaWYKKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIGNsYXNz
IE5vdGlmaWNhdGlvblByZXNlbnRlcjsKICNlbmRpZgpAQCAtMjMxLDYgKzIzNSwxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqLCBHZW9sb2NhdGlvbiopID0gMDsKICAgICAgICAgdmly
dHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShGcmFt
ZSosIEdlb2xvY2F0aW9uKikgPSAwOwogCisjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQorICAgICAg
ICB2aXJ0dWFsIHZvaWQgb3BlbkNvbG9yQ2hvb3NlcihDb2xvckNob29zZXIqLCBjb25zdCBDb2xv
ciYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNsb3NlQ29sb3JDaG9vc2VyKCkgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRDb2xvckluQ29sb3JDaG9vc2VyKGNvbnN0
IENvbG9yJikgPSAwOworI2VuZGlmCisKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5l
bChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSA9IDA7CiAgICAgICAgIC8vIEFzeW5j
aHJvbm91cyByZXF1ZXN0IHRvIGxvYWQgYW4gaWNvbiBmb3Igc3BlY2lmaWVkIGZpbGVuYW1lcy4K
ICAgICAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBGaWxlSWNvbkxvYWRlciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbG9yQ2hvb3Nlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db2xvckNo
b29zZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0MzFkNmUxZDAxODMwZGYyODM1ZTU1ODVhYmUwNDZhNmJl
NWU3M2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db2xvckNo
b29zZXIuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgorCisjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0NvbG9yQ2hvb3NlckNsaWVudDo6fkNvbG9yQ2hvb3NlckNs
aWVudCgpCit7CisgICAgQ29sb3JDaG9vc2VyOjpjaG9vc2VyKCktPmRpc2Nvbm5lY3RDbGllbnQo
dGhpcyk7Cit9CisKK3N0YXRpYyBDb2xvckNob29zZXIqIHN0YXRpY0Nob29zZXIgPSAwOworCitD
b2xvckNob29zZXIqIENvbG9yQ2hvb3Nlcjo6Y2hvb3NlcigpCit7CisgICAgaWYgKCFzdGF0aWND
aG9vc2VyKQorICAgICAgICBzdGF0aWNDaG9vc2VyID0gbmV3IENvbG9yQ2hvb3NlcigpOworICAg
IHJldHVybiBzdGF0aWNDaG9vc2VyOworfQorCit2b2lkIENvbG9yQ2hvb3Nlcjo6Y29ubmVjdENs
aWVudChDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBpZiAoY2xpZW50ICE9IG1f
Y2xpZW50KQorICAgICAgICBtX2NsaWVudCA9IGNsaWVudDsKK30KKwordm9pZCBDb2xvckNob29z
ZXI6OmRpc2Nvbm5lY3RDbGllbnQoQ29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQpCit7CisgICAg
aWYgKGNsaWVudCA9PSBtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQgPSAwOworfQorCit2b2lk
IENvbG9yQ2hvb3Nlcjo6Y2xvc2VDb2xvckNob29zZXJJZkNsaWVudElzSW5Eb2N1bWVudChEb2N1
bWVudCogZG9jdW1lbnQpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+
Y2xvc2VDb2xvckNob29zZXJJZkNsaWVudElzSW5Eb2N1bWVudChkb2N1bWVudCk7Cit9CisKK3Zv
aWQgQ29sb3JDaG9vc2VyOjpjb2xvclNlbGVjdGVkKGNvbnN0IENvbG9yJiBjb2xvcikgY29uc3QK
K3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5jb2xvclNlbGVjdGVkKGNv
bG9yKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX0NPTE9SKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29sb3JDaG9vc2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Db2xvckNob29zZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWVjNWYxYWU3NzQ4NTFiOTkw
ZDIxYjIyMThhMjVjYjdkMzI1MzJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ29sb3JDaG9vc2VyLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
IAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVm
IENvbG9yQ2hvb3Nlcl9oCisjZGVmaW5lIENvbG9yQ2hvb3Nlcl9oCisKKyNpbmNsdWRlICJDb2xv
ci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisKKyNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29sb3JDaG9vc2VyOworCitjbGFzcyBDb2xv
ckNob29zZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkNvbG9yQ2hvb3NlckNsaWVu
dCgpOworICAgIHZpcnR1YWwgdm9pZCBjb2xvclNlbGVjdGVkKGNvbnN0IENvbG9yJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZUNvbG9yQ2hvb3NlcklmQ2xpZW50SXNJbkRvY3VtZW50KERv
Y3VtZW50KikgPSAwOworfTsKKworY2xhc3MgQ29sb3JDaG9vc2VyIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgQ29sb3JDaG9vc2VyKiBjaG9vc2VyKCk7CisKKyAgICBDb2xvckNob29zZXJDbGllbnQq
IGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9OworICAgIHZvaWQgY29ubmVjdENs
aWVudChDb2xvckNob29zZXJDbGllbnQqKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RDbGllbnQoQ29s
b3JDaG9vc2VyQ2xpZW50Kik7CisgICAgdm9pZCBjbG9zZUNvbG9yQ2hvb3NlcklmQ2xpZW50SXNJ
bkRvY3VtZW50KERvY3VtZW50Kik7CisKKyAgICB2b2lkIGNvbG9yU2VsZWN0ZWQoY29uc3QgQ29s
b3ImKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBDb2xvckNob29zZXIoKQorICAgICAgICA6IG1f
Y2xpZW50KDApCisgICAgeyB9CisKKyAgICBDb2xvckNob29zZXJDbGllbnQqIG1fY2xpZW50Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX0NP
TE9SKQorCisjZW5kaWYgLy8gQ29sb3JDaG9vc2VyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103063</attachid>
            <date>2011-08-05 05:35:37 -0700</date>
            <delta_ts>2011-08-07 22:14:26 -0700</delta_ts>
            <desc>updated changelog and pbxproj</desc>
            <filename>bug-62619-20110805213536.patch</filename>
            <type>text/plain</type>
            <size>29394</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI0NzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZjRlOWRlM2MyZmIyMzk3
MWI2NzZmODY0ZTlkM2YzZTkyYzA1NWRlLi42MGU5Mjc3NzRiODA5NjJlOGNkODM0MzY5OGJhYjNh
MWZkYmRhZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjYgQEAKIDIwMTEtMDgtMDUgIEtlaXNo
aSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgSW1wbGVtZW50IDxpbnB1
dCB0eXBlPWNvbG9yPiBVSSBiZWhhdmlvciBXZWJDb3JlIHBhcnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNjE5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogQWRkZWQgX19a
TjdXZWJDb3JlMTJDb2xvckNob29zZXI3Y2hvb3NlckV2IGFuZAorICAgICAgICBfX1pOSzdXZWJD
b3JlMTJDb2xvckNob29zZXIxM2NvbG9yU2VsZWN0ZWRFUktOU181Q29sb3JFCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBDb2xvckNob29zZXIue2gs
Y3BwfQorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3JJbnB1dFR5cGU6On5Db2xvcklucHV0VHlwZSk6IEFkZGVkLiBDbG9zZSBjb2xvciBj
aG9vc2VyLiBleC4gd2hlbiB0eXBlIGF0dHJpYnV0ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3JJbnB1dFR5cGU6OnZhbHVlQXNDb2xvcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3JJbnB1dFR5cGU6OnNldFZhbHVlQXNDb2xvcik6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q29sb3JJbnB1dFR5cGU6OnZhbHVlQ2hhbmdlZCk6IFVwZGF0ZSBzZWxlY3RlZCBjb2xv
ciBpbiBjb2xvciBjaG9vc2VyIHRvby4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBl
OjpoYW5kbGVDbGlja0V2ZW50KTogT3BlbnMgY29sb3IgY2hvb3Nlci4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbG9ySW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KTogQ2FsbGVkIHdoZW4g
ZWxlbWVudC5jbGljaygpLiBPcGVuIGNvbG9yIGNob29zZXIgb25seQorICAgICAgICB3aGVuIGl0
IHdhcyBpbml0aWF0ZWQgYnkgYSB1c2VyIGludGVyYWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
Q29sb3JJbnB1dFR5cGU6OmRldGFjaCk6IENsb3NlIGNvbG9yIGNob29zZXIuIENhbGxlZCB3aGVu
IGlucHV0IGVsZW1lbnQgb3IgaXRzIGFuY2VzdG9ycyBoYXZlICJkaXNwbGF5Om5vbmUiCisgICAg
ICAgIG9yIGlzIHJlbW92ZWQgZnJvbSBET00uCisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0
VHlwZTo6Y29sb3JTZWxlY3RlZCk6IENhbGxiYWNrIGZyb20gY29sb3IgY2hvb3Nlci4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjbG9zZUNvbG9yQ2hvb3NlcklmQ2xpZW50SXNJ
bkRvY3VtZW50KTogQ2xvc2UgY29sb3IgY2hvb3NlciBpZiBlbGVtZW50IGlzIGluCisgICAgICAg
IGRvY3VtZW50LiBDYWxsZWQgd2hlbiB0aGUgcGFnZSBuYXZpZ2F0ZXMgYXdheS4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjbG9zZUNvbG9yQ2hvb3NlcklmQ3VycmVudENsaWVu
dCk6IENsb3NlIGNvbG9yIGNob29zZXIgaWYgdGhpcyBpbnB1dCB0eXBlIGlzIHRoZSBjdXJyZW50
IGNsaWVudCBvZiBDb2xvckNob29zZXIuCisgICAgICAgICogaHRtbC9Db2xvcklucHV0VHlwZS5o
OgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgICogaHRtbC9GaWxl
SW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmRldGFjaCk6IENhbGxzIElucHV0VHlwZTo6
ZGV0YWNoCisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5wdXRUeXBlOjpjaHJvbWUpOiBBZGRlZC4gVXNlZCBpbiBGaWxlSW5wdXRUeXBlIGFuZCBDb2xv
cklucHV0VHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6ZGV0YWNoKTogQ29sb3JJ
bnB1dFR5cGUgb3ZlcnJpZGVzIHRoaXMuCisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAg
ICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNo
cm9tZUNsaWVudDo6b3BlbkNvbG9yQ2hvb3Nlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
RW1wdHlDaHJvbWVDbGllbnQ6OmNsb3NlQ29sb3JDaG9vc2VyKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6c2V0U2VsZWN0ZWRDb2xvckluQ29sb3JDaG9vc2Vy
KTogQWRkZWQuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9Db21taXR0ZWQpOiBDbG9zZSBjb2xvciBj
aG9vc2VyIHdoZW4KKyAgICAgICAgbmF2aWdhdGluZyBhd2F5IGZyb20gdGhlIHBhZ2UuCisgICAg
ICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpvcGVuQ29s
b3JDaG9vc2VyKTogQWRkZWQuIE9wZW5zIHRoZSBjb2xvciBjaG9vc2VyLgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lOjpjbG9zZUNvbG9yQ2hvb3Nlcik6IEFkZGVkLiBUcmllcyB0byBjbG9zZSB0
aGUgY29sb3IgY2hvb3Nlci4gTWlnaHQgbm90IGNsb3NlIGlmIHRoZQorICAgICAgICBsaXN0ZW5l
ciBvZiB0aGUgY29sb3IgY2hvb3NlciBpcyBhbm90aGVyIHBhcnQgb2YgdGhlIGJyb3dzZXIgb3Ig
YW5vdGhlciByZW5kZXIgcHJvY2Vzcy4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6c2V0U2Vs
ZWN0ZWRDb2xvckluQ29sb3JDaG9vc2VyKTogQWRkZWQuIFNldHMgdGhlIHNlbGVjdGVkIGNvbG9y
IGluIHRoZSBjb2xvciBjaG9vc2VyLgorICAgICAgICBBZ2FpbiwgbWlnaHQgbm90IGJlIGV4ZWN1
dGVkIGlmIHRoZSBsaXN0ZW5lciBvZiB0aGUgY29sb3IgY2hvb3NlciBpcyBhbm90aGVyIHBhcnQg
b2YgdGhlIGJyb3dzZXIgb3IgYW5vdGhlciByZW5kZXIgcHJvY2Vzcy4KKyAgICAgICAgKiBwYWdl
L0Nocm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGxh
dGZvcm0vQ29sb3JDaG9vc2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb2xvckNo
b29zZXJDbGllbnQ6On5Db2xvckNob29zZXJDbGllbnQpOiBEaXNjb25uZWN0cyBpdHNlbGYgZnJv
bSB0aGUgQ29sb3JDaG9vc2VyLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDaG9vc2VyOjpjaG9v
c2VyKTogR2V0IHNoYXJlZCBpbnN0YW5jZSBvZiBDb2xvckNob29zZXIuCisgICAgICAgIChXZWJD
b3JlOjpDb2xvckNob29zZXI6OmNob29zZXIpOiBHZXQgc2hhcmVkIGluc3RhbmNlIG9mIENvbG9y
Q2hvb3Nlci4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcjo6Y29ubmVjdENsaWVudCk6
IENvbm5lY3RzIGEgQ29sb3JDaG9vc2VyQ2xpZW50IHRoYXQgcmVjZWl2ZXMgdGhlIGNvbG9yU2Vs
ZWN0ZWQgY2FsbGJhY2tzLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDaG9vc2VyOjpkaXNjb25u
ZWN0Q2xpZW50KTogRGlzY29ubmVjdHMgdGhlIGNvbm5lY3RDbGllbnQuCisgICAgICAgIChXZWJD
b3JlOjpDb2xvckNob29zZXI6OmNsb3NlQ29sb3JDaG9vc2VySWZDbGllbnRJc0luRG9jdW1lbnQp
OiBDbG9zZSB0aGUgY29sb3IgY2hvb3NlciBpZiB0aGUgY2xpZW50IGlzCisgICAgICAgIGluc2lk
ZSB0aGUgZG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpDb2xvckNob29zZXI6OmNvbG9yU2Vs
ZWN0ZWQpOiBDYWxsZWQgZnJvbSBjb2xvciBjaG9vc2VyIGxpc3RlbmVyLgorICAgICAgICAqIHBs
YXRmb3JtL0NvbG9yQ2hvb3Nlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ2hv
b3Nlcjo6Y2xpZW50KTogQWRkZWQuIFJldHVybnMgdGhlIGN1cnJlbnQgY29ubmVjdGVkIGNsaWVu
dC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcjo6Q29sb3JDaG9vc2VyKTogQWRkZWQu
CisKKzIwMTEtMDgtMDUgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CisKICAg
ICAgICAgU29ydCBXZWJDb3JlLnhjb2RlcHJvagogICAgICAgICBBY2NvbXBsaXNoZWQgdXNpbmcg
c29ydC1YY29kZS1wcm9qZWN0LWZpbGUuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYjQxMjk5
ODFiMzFmNzRlNzAwOGViNGYzNzI1MTc1NTA5ZjM4NjM1Zi4uMWM3ZmU0NDViNjVjYWI2ZWM2YTEx
NzVkNWMwMDExMDQ0MjIzOTBhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE5NDUsMyArMTk0
NSw4IEBAIF9fWk5LN1dlYkNvcmUxM1Jlc291cmNlRXJyb3JjdlA3TlNFcnJvckV2CiBfX1pON1dl
YkNvcmUxMlNjaGVkdWxlUGFpckMxRVA5TlNSdW5Mb29wUEsxMF9fQ0ZTdHJpbmcKIF9fWk43V2Vi
Q29yZTE0UmVzb3VyY2VIYW5kbGUxMnJlbGVhc2VQcm94eUV2CiAjZW5kaWYKKworI2lmIEVOQUJM
RShJTlBVVF9DT0xPUikKK19fWk43V2ViQ29yZTEyQ29sb3JDaG9vc2VyN2Nob29zZXJFdgorX19a
Tks3V2ViQ29yZTEyQ29sb3JDaG9vc2VyMTNjb2xvclNlbGVjdGVkRVJLTlNfNUNvbG9yRQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggOGQwMzU5NTFlM2NkYWUxODJlMjczNTllY2VmNmRmMTQxNDcyNzJlOC4uMjE2NDA3
M2Q2MWI0MzEyNzVkNmIzNzdiZjdlNzZkMGQyNzA5ZjgwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTMzMyw2ICs1MzMzLDgg
QEAKIAkJQzBGMkE0NDExMzg2OUFBQjAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRjJBNDNGMTM4NjlBMjgw
MDY2QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0gKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzEwNURBNjIwRjNBQTY4RjAwMURENDRGIC8qIFRleHRFbmNv
ZGluZ0RldGVjdG9ySUNVLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMxMDVEQTYxMEYzQUE2OEYwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3Rv
cklDVS5jcHAgKi87IH07CiAJCUMxMDVEQTY0MEYzQUE2QjgwMDFERDQ0RiAvKiBUZXh0RW5jb2Rp
bmdEZXRlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzEwNURBNjMwRjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggKi87
IH07CisJCUMzMzBBMjIyMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xvckNob29zZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzMzMEEyMjAxM0VDMTk2
QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5jcHAgKi87IH07CisJCUMzMzBBMjIzMTNFQzE5NkIw
MDAwQjQ1QiAvKiBDb2xvckNob29zZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMzMzBBMjIxMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xvckNob29zZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTBC
NTYxNjEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBCNTYxNDEyMTE5RDIzMDA4QjQ2RTAg
LyogR3JvdXBTZXR0aW5ncy5jcHAgKi87IH07CiAJCUM1MEI1NjE3MTIxMTlEMjMwMDhCNDZFMCAv
KiBHcm91cFNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDNTBCNTYxNTEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM1MEQwRTgyMEZG
NDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MEQwRTgwMEZGNDI3MjkwMEFDMjY0NCAvKiBT
dG9yYWdlTmFtZXNwYWNlLmNwcCAqLzsgfTsKQEAgLTEyMDQxLDYgKzEyMDQzLDggQEAKIAkJQzBG
MkE0M0YxMzg2OUEyODAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUg
PSBwcmVwcm9jZXNzb3IucG07IHBhdGggPSBzY3JpcHRzL3ByZXByb2Nlc3Nvci5wbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzEwNURBNjEwRjNBQTY4RjAwMURENDRGIC8qIFRleHRF
bmNvZGluZ0RldGVjdG9ySUNVLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzEwNURBNjMwRjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRFbmNvZGluZ0RldGVjdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMzMzBBMjIwMTNFQzE5NkIwMDAwQjQ1QiAv
KiBDb2xvckNob29zZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q29sb3JDaG9vc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzMzMEEyMjEx
M0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb2xvckNob29zZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUM1MEI1NjE1MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRp
bmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyb3VwU2V0dGluZ3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwRDBFODAwRkY0MjcyOTAwQUMyNjQ0IC8q
IFN0b3JhZ2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU3RvcmFnZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
OTAzMiw2ICsxOTAzNiw4IEBACiAJCQkJODlEMDhEOUQxMjIyODQ1MTAwMTI0MURGIC8qIEFzeW5j
RmlsZVN5c3RlbS5oICovLAogCQkJCTg5RDA4RDlFMTIyMjg0NTEwMDEyNDFERiAvKiBBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3MuaCAqLywKIAkJCQk1MUUxRUNCMTBDOTFDNTU2MDBEQzI1NUIgLyog
QXV0b2RyYWluZWRQb29sLmggKi8sCisJCQkJQzMzMEEyMjAxM0VDMTk2QjAwMDBCNDVCIC8qIENv
bG9yQ2hvb3Nlci5jcHAgKi8sCisJCQkJQzMzMEEyMjExM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9y
Q2hvb3Nlci5oICovLAogCQkJCUJDQzhDRkNBMDk4NkNEMjQwMDE0MEJGMiAvKiBDb2xvckRhdGEu
Z3BlcmYgKi8sCiAJCQkJNDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNw
cCAqLywKIAkJCQk0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCAqLywK
QEAgLTIwNTI4LDYgKzIwNTM0LDcgQEAKIAkJCQk5M0M0NDFGMDBGODEzQTFBMDBDMUE2MzQgLyog
Q29sbGVjdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0M0NDIwMDBGODEzQUUxMDBD
MUE2MzQgLyogQ29sbGVjdGlvblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTY3MEIw
NTM4MTQwMDJDRTY0RiAvKiBDb2xvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzMzMEEyMjMxM0VD
MTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5
NjMwRDAwQkYyMjAwNzFCNzgyIC8qIENvbG9yRGlzdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY1NUIzREI0MTI1MUYxMkQwMDNFRjI2OSAvKiBDb2xvcklucHV0VHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRURFM0E1MDAwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggaW4gSGVhZGVy
cyAqLywKQEAgLTIzODE2LDYgKzIzODIzLDcgQEAKIAkJCQk5M0M0NDFFRjBGODEzQTFBMDBDMUE2
MzQgLyogQ29sbGVjdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTY2MEIw
NTM4MTQwMDJDRTY0RiAvKiBDb2xvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNGMzMyNDBG
MkI5NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMzMwQTIy
MjEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBQkE3NkM5MTFEMjBFNDcwMDRDMjAxQyAvKiBDb2xvckRhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjIyMjc5NjIwRDAwQkYyMjAwNzFCNzgyIC8qIENvbG9yRGlzdGFuY2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRjU1QjNEQjMxMjUxRjEyRDAwM0VGMjY5IC8qIENvbG9ySW5wdXRUeXBl
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xv
cklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApp
bmRleCBlYTQ2YTY2YTgwMTk0YTYxYWE2YmRlNjVkNzkzZTBjODIyMDJlYzBmLi4wMmY4M2IxYzIz
NjUxZGM5MDRiMmRlYjA0YjZkMTFmNzM5OWI1ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9y
SW5wdXRUeXBlLmNwcApAQCAtMzEsOSArMzEsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJDb2xvcklucHV0VHlwZS5oIgogCisjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVk
ZSAiQ29sb3IuaCIKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJ
bnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNjEsNiArNjQs
MTEgQEAgUGFzc093blB0cjxJbnB1dFR5cGU+IENvbG9ySW5wdXRUeXBlOjpjcmVhdGUoSFRNTElu
cHV0RWxlbWVudCogZWxlbWVudCkKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENvbG9ySW5wdXRU
eXBlKGVsZW1lbnQpKTsKIH0KIAorQ29sb3JJbnB1dFR5cGU6On5Db2xvcklucHV0VHlwZSgpCit7
CisgICAgY2xvc2VDb2xvckNob29zZXJJZkN1cnJlbnRDbGllbnQoKTsKK30gICAgCisKIGJvb2wg
Q29sb3JJbnB1dFR5cGU6OmlzQ29sb3JDb250cm9sKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTkyLDYgKzEwMCwxNiBAQCBTdHJpbmcgQ29sb3JJbnB1dFR5cGU6OnNhbml0aXplVmFs
dWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlKQogICAgIHJldHVybiBwcm9wb3NlZFZhbHVl
Lmxvd2VyKCk7CiB9CiAKK0NvbG9yIENvbG9ySW5wdXRUeXBlOjp2YWx1ZUFzQ29sb3IoKSBjb25z
dAoreworICAgIHJldHVybiBDb2xvcihlbGVtZW50KCktPnZhbHVlKCkpOworfQorCit2b2lkIENv
bG9ySW5wdXRUeXBlOjpzZXRWYWx1ZUFzQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSBjb25zdAor
eworICAgIGVsZW1lbnQoKS0+c2V0VmFsdWUoY29sb3Iuc2VyaWFsaXplZCgpLCB0cnVlKTsKK30K
Kwogdm9pZCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7CiAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gZWxlbWVudCgpLT5kb2N1bWVudCgpOwpAQCAtMTExLDYgKzEyOSw1
OCBAQCB2b2lkIENvbG9ySW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHZvaWQgQ29s
b3JJbnB1dFR5cGU6OnZhbHVlQ2hhbmdlZCgpCiB7CiAgICAgdXBkYXRlQ29sb3JTd2F0Y2goKTsK
KyAgICBpZiAoQ29sb3JDaG9vc2VyOjpjaG9vc2VyKCktPmNsaWVudCgpID09IHRoaXMpIHsKKyAg
ICAgICAgaWYgKENocm9tZSogY2hyb21lID0gdGhpcy0+Y2hyb21lKCkpCisgICAgICAgICAgICBj
aHJvbWUtPnNldFNlbGVjdGVkQ29sb3JJbkNvbG9yQ2hvb3Nlcih2YWx1ZUFzQ29sb3IoKSk7Cisg
ICAgfQorfQorCit2b2lkIENvbG9ySW5wdXRUeXBlOjpoYW5kbGVDbGlja0V2ZW50KE1vdXNlRXZl
bnQqIGV2ZW50KQoreworICAgIGlmIChldmVudC0+aXNTaW11bGF0ZWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50KCktPnJlYWRP
bmx5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChDaHJvbWUqIGNocm9tZSA9IHRoaXMt
PmNocm9tZSgpKSB7CisgICAgICAgIENvbG9yQ2hvb3Nlcjo6Y2hvb3NlcigpLT5jb25uZWN0Q2xp
ZW50KHRoaXMpOworICAgICAgICBjaHJvbWUtPm9wZW5Db2xvckNob29zZXIoQ29sb3JDaG9vc2Vy
OjpjaG9vc2VyKCksIHZhbHVlQXNDb2xvcigpKTsKKyAgICB9CisgICAgZXZlbnQtPnNldERlZmF1
bHRIYW5kbGVkKCk7Cit9CisKK3ZvaWQgQ29sb3JJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRl
RXZlbnQoRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChlbGVtZW50KCktPmRpc2FibGVkKCkgfHwg
ZWxlbWVudCgpLT5yZWFkT25seSgpIHx8ICFlbGVtZW50KCktPnJlbmRlcmVyKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmICghU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0
dXJlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChDaHJvbWUqIGNocm9tZSA9IHRoaXMt
PmNocm9tZSgpKSB7CisgICAgICAgIENvbG9yQ2hvb3Nlcjo6Y2hvb3NlcigpLT5jb25uZWN0Q2xp
ZW50KHRoaXMpOworICAgICAgICBjaHJvbWUtPm9wZW5Db2xvckNob29zZXIoQ29sb3JDaG9vc2Vy
OjpjaG9vc2VyKCksIHZhbHVlQXNDb2xvcigpKTsKKyAgICB9CisgICAgZXZlbnQtPnNldERlZmF1
bHRIYW5kbGVkKCk7Cit9CisKK3ZvaWQgQ29sb3JJbnB1dFR5cGU6OmRldGFjaCgpCit7CisgICAg
Y2xvc2VDb2xvckNob29zZXJJZkN1cnJlbnRDbGllbnQoKTsKK30KKwordm9pZCBDb2xvcklucHV0
VHlwZTo6Y29sb3JTZWxlY3RlZChjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgaWYgKGVsZW1l
bnQoKS0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50KCktPnJlYWRPbmx5KCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBzZXRWYWx1ZUFzQ29sb3IoY29sb3IpOworfQorCit2b2lkIENvbG9ySW5wdXRUeXBl
OjpjbG9zZUNvbG9yQ2hvb3NlcklmQ2xpZW50SXNJbkRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVu
dCkKK3sKKyAgICBpZiAoZWxlbWVudCgpLT5kb2N1bWVudCgpID09IGRvY3VtZW50KQorICAgICAg
ICBjbG9zZUNvbG9yQ2hvb3NlcklmQ3VycmVudENsaWVudCgpOwogfQogCiB2b2lkIENvbG9ySW5w
dXRUeXBlOjp1cGRhdGVDb2xvclN3YXRjaCgpCkBAIC0xMjksNiArMTk5LDE0IEBAIEhUTUxFbGVt
ZW50KiBDb2xvcklucHV0VHlwZTo6c2hhZG93Q29sb3JTd2F0Y2goKSBjb25zdAogICAgIHJldHVy
biBzaGFkb3cgPyB0b0hUTUxFbGVtZW50KHNoYWRvdy0+Zmlyc3RDaGlsZCgpLT5maXJzdENoaWxk
KCkpIDogMDsKIH0KIAordm9pZCBDb2xvcklucHV0VHlwZTo6Y2xvc2VDb2xvckNob29zZXJJZkN1
cnJlbnRDbGllbnQoKQoreworICAgIGlmIChDb2xvckNob29zZXI6OmNob29zZXIoKS0+Y2xpZW50
KCkgPT0gdGhpcykgeworICAgICAgICBpZiAoQ2hyb21lKiBjaHJvbWUgPSB0aGlzLT5jaHJvbWUo
KSkKKyAgICAgICAgICAgIGNocm9tZS0+Y2xvc2VDb2xvckNob29zZXIoKTsKKyAgICB9Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9DT0xPUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaAppbmRleCBkMzQwODRmMDMwZmNkZDMzZGI2
Yjc2MTRlMTdjODE4YmIzZTMyMzZkLi4wYzY3MzllMjkxNWJiMDBhM2ZiOGU1ZDAyODhiMmNiYTEy
OWFkMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oCkBAIC0zMSwyOCArMzEs
NDAgQEAKICNpZm5kZWYgQ29sb3JJbnB1dFR5cGVfaAogI2RlZmluZSBDb2xvcklucHV0VHlwZV9o
CiAKLSNpbmNsdWRlICJCYXNlQnV0dG9uSW5wdXRUeXBlLmgiCisjaW5jbHVkZSAiQ29sb3JDaG9v
c2VyLmgiCisjaW5jbHVkZSAiSW5wdXRUeXBlLmgiCiAKICNpZiBFTkFCTEUoSU5QVVRfQ09MT1Ip
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29sb3JJbnB1dFR5cGUgOiBwdWJsaWMg
SW5wdXRUeXBlIHsKK2NsYXNzIENvbG9ySW5wdXRUeXBlIDogcHVibGljIElucHV0VHlwZSwgcHJp
dmF0ZSBDb2xvckNob29zZXJDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRy
PElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqKTsKIAogcHJpdmF0ZToKICAgICBD
b2xvcklucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IElucHV0VHlwZShlbGVt
ZW50KSB7IH0KKyAgICB2aXJ0dWFsIH5Db2xvcklucHV0VHlwZSgpOwogICAgIHZpcnR1YWwgYm9v
bCBpc0NvbG9yQ29udHJvbCgpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSZXF1
aXJlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIGZhbGxiYWNrVmFsdWUoKTsKICAgICB2
aXJ0dWFsIFN0cmluZyBzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwg
Q29sb3IgdmFsdWVBc0NvbG9yKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXND
b2xvcihjb25zdCBDb2xvciYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFkb3dT
dWJ0cmVlKCk7CiAgICAgdmlydHVhbCB2b2lkIHZhbHVlQ2hhbmdlZCgpOworICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVDbGlja0V2ZW50KE1vdXNlRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsK
KworICAgIC8vIENvbG9yQ2hvb3NlckNsaWVudCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFs
IHZvaWQgY29sb3JTZWxlY3RlZChjb25zdCBDb2xvciYpOworICAgIHZpcnR1YWwgdm9pZCBjbG9z
ZUNvbG9yQ2hvb3NlcklmQ2xpZW50SXNJbkRvY3VtZW50KERvY3VtZW50Kik7CiAKICAgICB2b2lk
IHVwZGF0ZUNvbG9yU3dhdGNoKCk7CiAgICAgSFRNTEVsZW1lbnQqIHNoYWRvd0NvbG9yU3dhdGNo
KCkgY29uc3Q7CisgICAgdm9pZCBjbG9zZUNvbG9yQ2hvb3NlcklmQ3VycmVudENsaWVudCgpIGNv
bnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlu
cHV0VHlwZS5jcHAKaW5kZXggNWYyMjRlNzM1YTM0NjllMjk3YmRkYmI4NGQxMWQzZTIzYjcyYTZm
My4uNWQ1Y2EzOWZhN2FhODgyYWExNDdjYzkxMDliMDI0MTFjM2M5NzRhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiSWNvbi5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3Mu
aCIKLSNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wu
aCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5o
IgpAQCAtMzMzLDEzICszMzIsNiBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnVwZGF0ZVJlbmRlcmlu
ZyhQYXNzUmVmUHRyPEljb24+IGljb24pCiAgICAgICAgIGVsZW1lbnQoKS0+cmVuZGVyZXIoKS0+
cmVwYWludCgpOwogfQogCi1DaHJvbWUqIEZpbGVJbnB1dFR5cGU6OmNocm9tZSgpIGNvbnN0Ci17
Ci0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBlbGVtZW50KCktPmRvY3VtZW50KCktPnBhZ2UoKSkKLSAg
ICAgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpOwotICAgIHJldHVybiAwOwotfQotCiB2b2lkIEZp
bGVJbnB1dFR5cGU6OnJlY2VpdmVEcm9wcGVkRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
dGhzKQogewogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gZWxlbWVudCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAppbmRleCBhYWNiZDIxOTQxODFkZmI1YzRmMzFhODRlMzc4
Y2JiNjYwNTFjYWRiLi45ZWFhNzJlM2EyODdjMTM0MDI2MWMwMTI4MDRiN2Q5ZThlZjgwN2Y5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaApAQCAtMzksNyArMzksNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENocm9tZTsKIGNsYXNzIEZpbGVMaXN0OwogCiBjbGFz
cyBGaWxlSW5wdXRUeXBlIDogcHVibGljIEJhc2VCdXR0b25JbnB1dFR5cGUsIHByaXZhdGUgRmls
ZUNob29zZXJDbGllbnQsIHByaXZhdGUgRmlsZUljb25Mb2FkZXJDbGllbnQgewpAQCAtNzcsNyAr
NzYsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVjZWl2ZURyb3BGb3JEaXJlY3RvcnlVcGxvYWQo
Y29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICNlbmRpZgogICAgIHZvaWQgcmVxdWVzdEljb24oY29u
c3QgVmVjdG9yPFN0cmluZz4mKTsKLSAgICBDaHJvbWUqIGNocm9tZSgpIGNvbnN0OwogCiAgICAg
UmVmUHRyPEZpbGVMaXN0PiBtX2ZpbGVMaXN0OwogICAgIFJlZlB0cjxJY29uPiBtX2ljb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBhZDQ5NDIzZTA4YWUw
NjA1MmI0ZjcwZTQxMTg4NTRkMTI4MWIyZjMyLi4zZWQxNWNiY2Y4MzRhZGY1MDFiN2Y3NmIwOWE4
MGMwYTJkNmM0NDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAK
QEAgLTg4MCw2ICs4ODAsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRldGFjaCgpCiB7CiAg
ICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRldGFjaCgpOwogICAgIHNldEZvcm1Db250
cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoZmFsc2UpOworICAgIG1faW5wdXRUeXBlLT5kZXRhY2go
KTsKIH0KIAogU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OmFsdFRleHQoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDYwOTI0NjBhMDA3OGZlMjUzMGRlNjQxN2M4N2ExNDAw
Zjk0ZWZlNTAuLjZjMzRkYzQ2ODkyMzc4MmE0Mzc5ODg4YmFmYzEyN2VkZjE0ZDQ5MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJMb2Nh
bGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTW9udGhJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJO
dW1iZXJJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFzc3dvcmRJ
bnB1dFR5cGUuaCIKICNpbmNsdWRlICJSYWRpb0lucHV0VHlwZS5oIgogI2luY2x1ZGUgIlJhbmdl
SW5wdXRUeXBlLmgiCkBAIC0zOTUsNiArMzk2LDEzIEBAIHZvaWQgSW5wdXRUeXBlOjpkaXNwYXRj
aFNpbXVsYXRlZENsaWNrSWZBY3RpdmUoS2V5Ym9hcmRFdmVudCogZXZlbnQpIGNvbnN0CiAgICAg
ZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKK0Nocm9tZSogSW5wdXRUeXBlOjpjaHJv
bWUoKSBjb25zdAoreworICAgIGlmIChQYWdlKiBwYWdlID0gZWxlbWVudCgpLT5kb2N1bWVudCgp
LT5wYWdlKCkpCisgICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKTsKKyAgICByZXR1cm4gMDsK
K30KKwogYm9vbCBJbnB1dFR5cGU6OmNhblNldFN0cmluZ1ZhbHVlKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTQyMyw2ICs0MzEsMTAgQEAgdm9pZCBJbnB1dFR5cGU6OmF0dGFjaCgp
CiB7CiB9CiAKK3ZvaWQgSW5wdXRUeXBlOjpkZXRhY2goKQoreworfQorCiB2b2lkIElucHV0VHlw
ZTo6YWx0QXR0cmlidXRlQ2hhbmdlZCgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRl
eCAyZGYwZWY1YjhmOTU4OGQzMmFlNzJmYjYzMmMyMjRiN2JjYmY0NjQxLi41MTFmOTViOTFiY2Y0
NmM4MDhkODk2ZGQzZjU3MTMzODM1ZDU0MjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAg
LTQxLDYgKzQxLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmVmb3JlVGV4dElu
c2VydGVkRXZlbnQ7CitjbGFzcyBDaHJvbWU7CitjbGFzcyBDb2xvcjsKIGNsYXNzIERhdGVDb21w
b25lbnRzOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGaWxlTGlzdDsKQEAgLTkxLDcgKzkzLDcgQEAg
cHVibGljOgogCiAjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQogICAgIHZpcnR1YWwgYm9vbCBpc0Nv
bG9yQ29udHJvbCgpIGNvbnN0OwotI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9DT0xPUikKKyNlbmRp
ZgogICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrYm94KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IGlzRW1haWxGaWVsZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGVVcGxvYWQoKSBj
b25zdDsKQEAgLTIwNSw2ICsyMDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhdHRh
Y2goKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIG1pbk9y
TWF4QXR0cmlidXRlQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBhbHRBdHRyaWJ1dGVDaGFu
Z2VkKCk7CiAgICAgdmlydHVhbCB2b2lkIHNyY0F0dHJpYnV0ZUNoYW5nZWQoKTsKQEAgLTI2MCw2
ICsyNjMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaXNwYXRjaFNpbXVsYXRlZENsaWNrSWZB
Y3RpdmUoS2V5Ym9hcmRFdmVudCopIGNvbnN0OwogICAgIC8vIFdlIGNhbid0IG1ha2UgdGhpcyBh
IHN0YXRpYyBjb25zdCBkYXRhIG1lbWJlciBiZWNhdXNlIFZDKysgZG9lc24ndCBsaWtlIGl0Lgog
ICAgIHN0YXRpYyBkb3VibGUgZGVmYXVsdFN0ZXBCYXNlKCkgeyByZXR1cm4gMC4wOyB9CisgICAg
Q2hyb21lKiBjaHJvbWUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICAvLyBSYXcgcG9pbnRlciBi
ZWNhdXNlIHRoZSBIVE1MSW5wdXRFbGVtZW50IG9iamVjdCBvd25zIHRoaXMgSW5wdXRUeXBlIG9i
amVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBiNDA5NzU2ZTNmYWZj
N2U4NGIwNWIxODE5MDU0ODk2NDcwMTM5MWQyLi44YzdmYzUzOGVkMmMxNzVhYWE2NTljYTFmMTQw
OTAwOTVlODM2ODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0xOTYs
NiArMTk2LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW51bWVyYXRlQ2hvc2VuRGly
ZWN0b3J5KEZpbGVDaG9vc2VyKikgeyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlBVVF9DT0xP
UikKKyAgICB2b2lkIG9wZW5Db2xvckNob29zZXIoQ29sb3JDaG9vc2VyKiwgY29uc3QgQ29sb3Im
KSB7IH0KKyAgICB2b2lkIGNsb3NlQ29sb3JDaG9vc2VyKCkgeyB9CisgICAgdm9pZCBzZXRTZWxl
Y3RlZENvbG9ySW5Db2xvckNob29zZXIoY29uc3QgQ29sb3ImKSB7IH0KKyNlbmRpZgorCiAgICAg
dmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIEZpbGVJY29uTG9hZGVyKikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCmluZGV4IDZhNDllNDY3NjE2YTQ2MzEzNzIzYmE1OGExMzY3MDE1MTlmODY0MGUuLjcx
ZWFlZDFiYmFkZGQ0ZTgxOGFiYTYwZTE4MmI2ZWRiNDAzOWQ4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTAwLDYgKzEwMCwxMCBAQAogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIEVO
QUJMRShJTlBVVF9DT0xPUikKKyNpbmNsdWRlICJDb2xvckNob29zZXIuaCIKKyNlbmRpZgorCiAj
aWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclJlcG9zaXRv
cnkuaCIKICNlbmRpZgpAQCAtMTgxNiw2ICsxODIwLDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnRy
YW5zaXRpb25Ub0NvbW1pdHRlZChQYXNzUmVmUHRyPENhY2hlZFBhZ2U+IGNhY2hlZFBhZ2UpCiAg
ICAgaWYgKG1fZnJhbWUtPnZpZXcoKSkKICAgICAgICAgbV9mcmFtZS0+dmlldygpLT5zY3JvbGxB
bmltYXRvcigpLT5jYW5jZWxBbmltYXRpb25zKCk7CiAKKyNpZiBFTkFCTEUoSU5QVVRfQ09MT1Ip
CisgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgIENvbG9yQ2hvb3Nlcjo6Y2hv
b3NlcigpLT5jbG9zZUNvbG9yQ2hvb3NlcklmQ2xpZW50SXNJbkRvY3VtZW50KG1fZnJhbWUtPmRv
Y3VtZW50KCkpOworI2VuZGlmCisKICAgICBtX2NsaWVudC0+c2V0Q29waWVzT25TY3JvbGwoKTsK
ICAgICBoaXN0b3J5KCktPnVwZGF0ZUZvckNvbW1pdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAK
aW5kZXggNDg0Y2E4MTNmNjlkNmZiMDAwZDM3NGNiMGQxMzllZDY4ZWE4MGExNy4uNWM3Y2IxNDQ1
YWM1MjJjMzQ0NWNhMzEwMThmMjRiZGI3ODkzMGI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApA
QCAtNTIsNiArNTIsMTAgQEAKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKKyNpbmNsdWRlICJDb2xvckNob29zZXIuaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CkBAIC00NjcsNiArNDcxLDIzIEBAIHZvaWQgQ2hyb21lOjplbnVtZXJhdGVDaG9zZW5EaXJlY3Rv
cnkoRmlsZUNob29zZXIqIGZpbGVDaG9vc2VyKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU5Q
VVRfQ09MT1IpCit2b2lkIENocm9tZTo6b3BlbkNvbG9yQ2hvb3NlcihDb2xvckNob29zZXIqIGNv
bG9yQ2hvb3NlciwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvcikKK3sKKyAgICBtX2NsaWVudC0+
b3BlbkNvbG9yQ2hvb3Nlcihjb2xvckNob29zZXIsIGluaXRpYWxDb2xvcik7Cit9CisKK3ZvaWQg
Q2hyb21lOjpjbG9zZUNvbG9yQ2hvb3NlcigpCit7CisgICAgbV9jbGllbnQtPmNsb3NlQ29sb3JD
aG9vc2VyKCk7Cit9CisKK3ZvaWQgQ2hyb21lOjpzZXRTZWxlY3RlZENvbG9ySW5Db2xvckNob29z
ZXIoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIG1fY2xpZW50LT5zZXRTZWxlY3RlZENvbG9y
SW5Db2xvckNob29zZXIoY29sb3IpOworfQorI2VuZGlmCisKIHZvaWQgQ2hyb21lOjpydW5PcGVu
UGFuZWwoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBmaWxlQ2hvb3NlcikK
IHsKICAgICBtX2NsaWVudC0+cnVuT3BlblBhbmVsKGZyYW1lLCBmaWxlQ2hvb3Nlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuaAppbmRleCAxMmI5ZjU0NjdjZGI4Y2RiMTA3MDRhZGVkYzcwYzhlNjdjMTFkN2Mx
Li4yZWQ2ZTcyMjY3OTljYWJkYmVkYjM3YTlkNmRiYzk5YTE5NzA4N2VmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmgKQEAgLTM2LDYgKzM2LDkgQEAgY2xhc3MgTlNWaWV3OwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgY2xhc3MgQ2hyb21lQ2xpZW50OworI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKKyAg
ICBjbGFzcyBDb2xvckNob29zZXI7CisjZW5kaWYKICAgICBjbGFzcyBGaWxlQ2hvb3NlcjsKICAg
ICBjbGFzcyBGaWxlSWNvbkxvYWRlcjsKICAgICBjbGFzcyBGbG9hdFJlY3Q7CkBAIC0xNTQsNiAr
MTU3LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCByZXF1ZXN0R2VvbG9j
YXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqLCBHZW9sb2NhdGlvbiopOwogICAgICAgICB2
b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShGcmFtZSosIEdl
b2xvY2F0aW9uKik7CiAKKyNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCisgICAgICAgIHZvaWQgb3Bl
bkNvbG9yQ2hvb3NlcihDb2xvckNob29zZXIqLCBjb25zdCBDb2xvciYpOworICAgICAgICB2b2lk
IGNsb3NlQ29sb3JDaG9vc2VyKCk7CisgICAgICAgIHZvaWQgc2V0U2VsZWN0ZWRDb2xvckluQ29s
b3JDaG9vc2VyKGNvbnN0IENvbG9yJik7CisjZW5kaWYKKwogICAgICAgICB2b2lkIHJ1bk9wZW5Q
YW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKICAgICAgICAgdm9pZCBsb2Fk
SWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUljb25Mb2FkZXIqKTsKICNp
ZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmlu
ZGV4IGQ1ZTZkN2I2M2QxYTUwYTgyZjRmMmZkOTlkNzhjMzZmMmViYTRmOGEuLjE3Zjc5MDZhOGU0
Njk0NzU0MDhiNDJhNTY1ZWQ1ZmM5OTY2Yzk1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaApAQCAtNzEsNiArNzEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEdy
YXBoaWNzTGF5ZXI7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKKyAgICBjbGFz
cyBDb2xvckNob29zZXI7CisjZW5kaWYKKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAg
IGNsYXNzIE5vdGlmaWNhdGlvblByZXNlbnRlcjsKICNlbmRpZgpAQCAtMjMxLDYgKzIzNSwxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0R2VvbG9j
YXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqLCBHZW9sb2NhdGlvbiopID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFt
ZShGcmFtZSosIEdlb2xvY2F0aW9uKikgPSAwOwogCisjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQor
ICAgICAgICB2aXJ0dWFsIHZvaWQgb3BlbkNvbG9yQ2hvb3NlcihDb2xvckNob29zZXIqLCBjb25z
dCBDb2xvciYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNsb3NlQ29sb3JDaG9vc2VyKCkg
PSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRDb2xvckluQ29sb3JDaG9vc2Vy
KGNvbnN0IENvbG9yJikgPSAwOworI2VuZGlmCisKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bk9w
ZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSA9IDA7CiAgICAgICAgIC8v
IEFzeW5jaHJvbm91cyByZXF1ZXN0IHRvIGxvYWQgYW4gaWNvbiBmb3Igc3BlY2lmaWVkIGZpbGVu
YW1lcy4KICAgICAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBGaWxlSWNvbkxvYWRlciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NvbG9yQ2hvb3Nlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
b2xvckNob29zZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0MzFkNmUxZDAxODMwZGYyODM1ZTU1ODVhYmUw
NDZhNmJlNWU3M2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
b2xvckNob29zZXIuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgorCisjaWYgRU5BQkxFKElOUFVUX0NPTE9S
KQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NvbG9yQ2hvb3NlckNsaWVudDo6fkNvbG9yQ2hv
b3NlckNsaWVudCgpCit7CisgICAgQ29sb3JDaG9vc2VyOjpjaG9vc2VyKCktPmRpc2Nvbm5lY3RD
bGllbnQodGhpcyk7Cit9CisKK3N0YXRpYyBDb2xvckNob29zZXIqIHN0YXRpY0Nob29zZXIgPSAw
OworCitDb2xvckNob29zZXIqIENvbG9yQ2hvb3Nlcjo6Y2hvb3NlcigpCit7CisgICAgaWYgKCFz
dGF0aWNDaG9vc2VyKQorICAgICAgICBzdGF0aWNDaG9vc2VyID0gbmV3IENvbG9yQ2hvb3Nlcigp
OworICAgIHJldHVybiBzdGF0aWNDaG9vc2VyOworfQorCit2b2lkIENvbG9yQ2hvb3Nlcjo6Y29u
bmVjdENsaWVudChDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBpZiAoY2xpZW50
ICE9IG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudCA9IGNsaWVudDsKK30KKwordm9pZCBDb2xv
ckNob29zZXI6OmRpc2Nvbm5lY3RDbGllbnQoQ29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQpCit7
CisgICAgaWYgKGNsaWVudCA9PSBtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQgPSAwOworfQor
Cit2b2lkIENvbG9yQ2hvb3Nlcjo6Y2xvc2VDb2xvckNob29zZXJJZkNsaWVudElzSW5Eb2N1bWVu
dChEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2Ns
aWVudC0+Y2xvc2VDb2xvckNob29zZXJJZkNsaWVudElzSW5Eb2N1bWVudChkb2N1bWVudCk7Cit9
CisKK3ZvaWQgQ29sb3JDaG9vc2VyOjpjb2xvclNlbGVjdGVkKGNvbnN0IENvbG9yJiBjb2xvcikg
Y29uc3QKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5jb2xvclNlbGVj
dGVkKGNvbG9yKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX0NPTE9SKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29sb3JDaG9vc2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Db2xvckNob29zZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWVjNWYxYWU3NzQ4
NTFiOTkwZDIxYjIyMThhMjVjYjdkMzI1MzJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29sb3JDaG9vc2VyLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisj
aWZuZGVmIENvbG9yQ2hvb3Nlcl9oCisjZGVmaW5lIENvbG9yQ2hvb3Nlcl9oCisKKyNpbmNsdWRl
ICJDb2xvci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisKKyNpZiBFTkFCTEUoSU5QVVRfQ09M
T1IpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29sb3JDaG9vc2VyOworCitjbGFz
cyBDb2xvckNob29zZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkNvbG9yQ2hvb3Nl
ckNsaWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBjb2xvclNlbGVjdGVkKGNvbnN0IENvbG9yJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZUNvbG9yQ2hvb3NlcklmQ2xpZW50SXNJbkRvY3Vt
ZW50KERvY3VtZW50KikgPSAwOworfTsKKworY2xhc3MgQ29sb3JDaG9vc2VyIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgQ29sb3JDaG9vc2VyKiBjaG9vc2VyKCk7CisKKyAgICBDb2xvckNob29zZXJD
bGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9OworICAgIHZvaWQgY29u
bmVjdENsaWVudChDb2xvckNob29zZXJDbGllbnQqKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RDbGll
bnQoQ29sb3JDaG9vc2VyQ2xpZW50Kik7CisgICAgdm9pZCBjbG9zZUNvbG9yQ2hvb3NlcklmQ2xp
ZW50SXNJbkRvY3VtZW50KERvY3VtZW50Kik7CisKKyAgICB2b2lkIGNvbG9yU2VsZWN0ZWQoY29u
c3QgQ29sb3ImKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBDb2xvckNob29zZXIoKQorICAgICAg
ICA6IG1fY2xpZW50KDApCisgICAgeyB9CisKKyAgICBDb2xvckNob29zZXJDbGllbnQqIG1fY2xp
ZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElO
UFVUX0NPTE9SKQorCisjZW5kaWYgLy8gQ29sb3JDaG9vc2VyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103201</attachid>
            <date>2011-08-07 22:14:33 -0700</date>
            <delta_ts>2011-08-07 23:58:13 -0700</delta_ts>
            <desc>fix layering violation</desc>
            <filename>bug-62619-20110808141431.patch</filename>
            <type>text/plain</type>
            <size>28541</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI0NzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZjRlOWRlM2MyZmIyMzk3
MWI2NzZmODY0ZTlkM2YzZTkyYzA1NWRlLi4wYzNjNDU3ZWI3YWQ4YjUyMWFiOTIyMGY0YWVmNjFj
N2E3OTcwNzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTEtMDgtMDcgIEtlaXNo
aSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IDxpbnB1
dCB0eXBlPWNvbG9yPiBVSSBiZWhhdmlvciBXZWJDb3JlIHBhcnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNjE5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogQWRkZWQgX19a
TjdXZWJDb3JlMTJDb2xvckNob29zZXI3Y2hvb3NlckV2IGFuZAorICAgICAgICBfX1pOSzdXZWJD
b3JlMTJDb2xvckNob29zZXIxM2NvbG9yU2VsZWN0ZWRFUktOU181Q29sb3JFCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBDb2xvckNob29zZXIue2gs
Y3BwfQorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3JJbnB1dFR5cGU6On5Db2xvcklucHV0VHlwZSk6IEFkZGVkLiBDbG9zZSBjb2xvciBj
aG9vc2VyLiBleC4gd2hlbiB0eXBlIGF0dHJpYnV0ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3JJbnB1dFR5cGU6OnZhbHVlQXNDb2xvcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3JJbnB1dFR5cGU6OnNldFZhbHVlQXNDb2xvcik6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q29sb3JJbnB1dFR5cGU6OnZhbHVlQ2hhbmdlZCk6IFVwZGF0ZSBzZWxlY3RlZCBjb2xv
ciBpbiBjb2xvciBjaG9vc2VyIHRvby4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBl
OjpoYW5kbGVDbGlja0V2ZW50KTogT3BlbnMgY29sb3IgY2hvb3Nlci4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbG9ySW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KTogQ2FsbGVkIHdoZW4g
ZWxlbWVudC5jbGljaygpLiBPcGVuIGNvbG9yIGNob29zZXIgb25seQorICAgICAgICB3aGVuIGl0
IHdhcyBpbml0aWF0ZWQgYnkgYSB1c2VyIGludGVyYWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
Q29sb3JJbnB1dFR5cGU6OmRldGFjaCk6IENsb3NlIGNvbG9yIGNob29zZXIuIENhbGxlZCB3aGVu
IGlucHV0IGVsZW1lbnQgb3IgaXRzIGFuY2VzdG9ycyBoYXZlICJkaXNwbGF5Om5vbmUiCisgICAg
ICAgIG9yIGlzIHJlbW92ZWQgZnJvbSBET00uCisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0
VHlwZTo6Y29sb3JTZWxlY3RlZCk6IENhbGxiYWNrIGZyb20gY29sb3IgY2hvb3Nlci4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjppc0NvbG9ySW5wdXRUeXBlKTogUmV0dXJucyB0
cnVlLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OmNsb3NlQ29sb3JDaG9vc2Vy
SWZDdXJyZW50Q2xpZW50KTogQ2xvc2UgY29sb3IgY2hvb3NlciBpZiB0aGlzIGlucHV0IHR5cGUg
aXMgdGhlIGN1cnJlbnQgY2xpZW50IG9mIENvbG9yQ2hvb3Nlci4KKyAgICAgICAgKiBodG1sL0Nv
bG9ySW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZGV0YWNoKTogQ2Fs
bHMgSW5wdXRUeXBlOjpkZXRhY2gKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmNocm9tZSk6IEFkZGVkLiBVc2VkIGluIEZpbGVJbnB1
dFR5cGUgYW5kIENvbG9ySW5wdXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpk
ZXRhY2gpOiBDb2xvcklucHV0VHlwZSBvdmVycmlkZXMgdGhpcy4KKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkVtcHR5Q2hyb21lQ2xpZW50OjpvcGVuQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OkVtcHR5Q2hyb21lQ2xpZW50OjpjbG9zZUNvbG9yQ2hvb3Nlcik6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6c2V0U2VsZWN0ZWRDb2xvckluQ29sb3JDaG9vc2Vy
KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZCk6IENsb3NlIGNvbG9yIGNob29zZXIg
d2hlbgorICAgICAgICBuYXZpZ2F0aW5nIGF3YXkgZnJvbSB0aGUgcGFnZS4KKyAgICAgICAgKiBw
YWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6Om9wZW5Db2xvckNob29z
ZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y2xvc2VDb2xvckNob29zZXIp
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6c2V0U2VsZWN0ZWRDb2xvckluQ29s
b3JDaG9vc2VyKTogQWRkZWQuCisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBw
YWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL0NvbG9yQ2hvb3Nlci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xpZW50Ojp+Q29sb3JDaG9v
c2VyQ2xpZW50KTogRGlzY29ubmVjdHMgaXRzZWxmIGZyb20gdGhlIENvbG9yQ2hvb3Nlci4KKyAg
ICAgICAgKFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcjo6Y2hvb3Nlcik6IEdldCBzaGFyZWQgaW5zdGFu
Y2Ugb2YgQ29sb3JDaG9vc2VyLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDaG9vc2VyOjpjb25u
ZWN0Q2xpZW50KTogQ29ubmVjdHMgYSBDb2xvckNob29zZXJDbGllbnQgdGhhdCByZWNlaXZlcyB0
aGUgY29sb3JTZWxlY3RlZCBjYWxsYmFja3MuCisgICAgICAgIChXZWJDb3JlOjpDb2xvckNob29z
ZXI6OmRpc2Nvbm5lY3RDbGllbnQpOiBEaXNjb25uZWN0cyB0aGUgY29ubmVjdENsaWVudC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcjo6Y29sb3JTZWxlY3RlZCk6IENhbGxlZCBmcm9t
IGNvbG9yIGNob29zZXIgbGlzdGVuZXIuCisgICAgICAgICogcGxhdGZvcm0vQ29sb3JDaG9vc2Vy
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xpZW50Ojppc0NvbG9y
SW5wdXRUeXBlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb2xvckNob29zZXI6OmNsaWVu
dCk6IEFkZGVkLiBSZXR1cm5zIHRoZSBjdXJyZW50IGNvbm5lY3RlZCBjbGllbnQuCisgICAgICAg
IChXZWJDb3JlOjpDb2xvckNob29zZXI6OkNvbG9yQ2hvb3Nlcik6IEFkZGVkLgorCiAyMDExLTA4
LTA1ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFNvcnQg
V2ViQ29yZS54Y29kZXByb2oKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYjQxMjk5ODFiMzFmNzRl
NzAwOGViNGYzNzI1MTc1NTA5ZjM4NjM1Zi4uMWM3ZmU0NDViNjVjYWI2ZWM2YTExNzVkNWMwMDEx
MDQ0MjIzOTBhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE5NDUsMyArMTk0NSw4IEBAIF9f
Wk5LN1dlYkNvcmUxM1Jlc291cmNlRXJyb3JjdlA3TlNFcnJvckV2CiBfX1pON1dlYkNvcmUxMlNj
aGVkdWxlUGFpckMxRVA5TlNSdW5Mb29wUEsxMF9fQ0ZTdHJpbmcKIF9fWk43V2ViQ29yZTE0UmVz
b3VyY2VIYW5kbGUxMnJlbGVhc2VQcm94eUV2CiAjZW5kaWYKKworI2lmIEVOQUJMRShJTlBVVF9D
T0xPUikKK19fWk43V2ViQ29yZTEyQ29sb3JDaG9vc2VyN2Nob29zZXJFdgorX19aTks3V2ViQ29y
ZTEyQ29sb3JDaG9vc2VyMTNjb2xvclNlbGVjdGVkRVJLTlNfNUNvbG9yRQorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
OGQwMzU5NTFlM2NkYWUxODJlMjczNTllY2VmNmRmMTQxNDcyNzJlOC4uMjE2NDA3M2Q2MWI0MzEy
NzVkNmIzNzdiZjdlNzZkMGQyNzA5ZjgwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTMzMyw2ICs1MzMzLDggQEAKIAkJQzBG
MkE0NDExMzg2OUFBQjAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRjJBNDNGMTM4NjlBMjgwMDY2QzUzNCAv
KiBwcmVwcm9jZXNzb3IucG0gKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQzEwNURBNjIwRjNBQTY4RjAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVj
dG9ySUNVLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMxMDVEQTYxMEYzQUE2OEYwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5jcHAg
Ki87IH07CiAJCUMxMDVEQTY0MEYzQUE2QjgwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzEwNURB
NjMwRjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggKi87IH07CisJCUMz
MzBBMjIyMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xvckNob29zZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzMzMEEyMjAxM0VDMTk2QjAwMDBCNDVC
IC8qIENvbG9yQ2hvb3Nlci5jcHAgKi87IH07CisJCUMzMzBBMjIzMTNFQzE5NkIwMDAwQjQ1QiAv
KiBDb2xvckNob29zZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMzMzBBMjIxMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xvckNob29zZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTBCNTYxNjEyMTE5
RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBCNTYxNDEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBT
ZXR0aW5ncy5jcHAgKi87IH07CiAJCUM1MEI1NjE3MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNl
dHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
NTBCNTYxNTEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM1MEQwRTgyMEZGNDI3MjkwMEFD
MjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEM1MEQwRTgwMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFt
ZXNwYWNlLmNwcCAqLzsgfTsKQEAgLTEyMDQxLDYgKzEyMDQzLDggQEAKIAkJQzBGMkE0M0YxMzg2
OUEyODAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBwcmVwcm9j
ZXNzb3IucG07IHBhdGggPSBzY3JpcHRzL3ByZXByb2Nlc3Nvci5wbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzEwNURBNjEwRjNBQTY4RjAwMURENDRGIC8qIFRleHRFbmNvZGluZ0Rl
dGVjdG9ySUNVLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRF
bmNvZGluZ0RldGVjdG9ySUNVLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzEw
NURBNjMwRjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRFbmNvZGluZ0RldGVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMzMzBBMjIwMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xvckNo
b29zZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sb3JDaG9v
c2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzMzMEEyMjExM0VDMTk2QjAw
MDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb2xvckNob29zZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwQjU2MTQx
MjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUM1MEI1NjE1MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyb3VwU2V0dGluZ3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwRDBFODAwRkY0MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VO
YW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFn
ZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTAzMiw2ICsx
OTAzNiw4IEBACiAJCQkJODlEMDhEOUQxMjIyODQ1MTAwMTI0MURGIC8qIEFzeW5jRmlsZVN5c3Rl
bS5oICovLAogCQkJCTg5RDA4RDlFMTIyMjg0NTEwMDEyNDFERiAvKiBBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaCAqLywKIAkJCQk1MUUxRUNCMTBDOTFDNTU2MDBEQzI1NUIgLyogQXV0b2RyYWlu
ZWRQb29sLmggKi8sCisJCQkJQzMzMEEyMjAxM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nl
ci5jcHAgKi8sCisJCQkJQzMzMEEyMjExM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5o
ICovLAogCQkJCUJDQzhDRkNBMDk4NkNEMjQwMDE0MEJGMiAvKiBDb2xvckRhdGEuZ3BlcmYgKi8s
CiAJCQkJNDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCAqLywKIAkJ
CQk0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCAqLywKQEAgLTIwNTI4
LDYgKzIwNTM0LDcgQEAKIAkJCQk5M0M0NDFGMDBGODEzQTFBMDBDMUE2MzQgLyogQ29sbGVjdGlv
bkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0M0NDIwMDBGODEzQUUxMDBDMUE2MzQgLyog
Q29sbGVjdGlvblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTY3MEIwNTM4MTQwMDJD
RTY0RiAvKiBDb2xvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzMzMEEyMjMxM0VDMTk2QjAwMDBC
NDVCIC8qIENvbG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NjMwRDAwQkYy
MjAwNzFCNzgyIC8qIENvbG9yRGlzdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREI0
MTI1MUYxMkQwMDNFRjI2OSAvKiBDb2xvcklucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RURFM0E1MDAwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggaW4gSGVhZGVycyAqLywKQEAg
LTIzODE2LDYgKzIzODIzLDcgQEAKIAkJCQk5M0M0NDFFRjBGODEzQTFBMDBDMUE2MzQgLyogQ29s
bGVjdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTY2MEIwNTM4MTQwMDJD
RTY0RiAvKiBDb2xvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNGMzMyNDBGMkI5NzE1MDA0
QjY3OTUgLyogQ29sb3JDRy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMzMwQTIyMjEzRUMxOTZC
MDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQkE3NkM5
MTFEMjBFNDcwMDRDMjAxQyAvKiBDb2xvckRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIy
Mjc5NjIwRDAwQkYyMjAwNzFCNzgyIC8qIENvbG9yRGlzdGFuY2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRjU1QjNEQjMxMjUxRjEyRDAwM0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCBlYTQ2
YTY2YTgwMTk0YTYxYWE2YmRlNjVkNzkzZTBjODIyMDJlYzBmLi5kZTk0MWZhMjZkZjY3MjMzMWMx
YWZkMjYzNmU3OGRiYmIyYTM1MGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Nv
bG9ySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBl
LmNwcApAQCAtMzEsOSArMzEsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJD
b2xvcklucHV0VHlwZS5oIgogCisjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ29sb3Iu
aCIKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1l
bnQuaCIKKyNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNjEsNiArNjQsMTEgQEAgUGFz
c093blB0cjxJbnB1dFR5cGU+IENvbG9ySW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVu
dCogZWxlbWVudCkKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENvbG9ySW5wdXRUeXBlKGVsZW1l
bnQpKTsKIH0KIAorQ29sb3JJbnB1dFR5cGU6On5Db2xvcklucHV0VHlwZSgpCit7CisgICAgY2xv
c2VDb2xvckNob29zZXJJZkN1cnJlbnRDbGllbnQoKTsKK30gICAgCisKIGJvb2wgQ29sb3JJbnB1
dFR5cGU6OmlzQ29sb3JDb250cm9sKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTky
LDYgKzEwMCwxNiBAQCBTdHJpbmcgQ29sb3JJbnB1dFR5cGU6OnNhbml0aXplVmFsdWUoY29uc3Qg
U3RyaW5nJiBwcm9wb3NlZFZhbHVlKQogICAgIHJldHVybiBwcm9wb3NlZFZhbHVlLmxvd2VyKCk7
CiB9CiAKK0NvbG9yIENvbG9ySW5wdXRUeXBlOjp2YWx1ZUFzQ29sb3IoKSBjb25zdAoreworICAg
IHJldHVybiBDb2xvcihlbGVtZW50KCktPnZhbHVlKCkpOworfQorCit2b2lkIENvbG9ySW5wdXRU
eXBlOjpzZXRWYWx1ZUFzQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSBjb25zdAoreworICAgIGVs
ZW1lbnQoKS0+c2V0VmFsdWUoY29sb3Iuc2VyaWFsaXplZCgpLCB0cnVlKTsKK30KKwogdm9pZCBD
b2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7CiAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gZWxlbWVudCgpLT5kb2N1bWVudCgpOwpAQCAtMTExLDYgKzEyOSw1NyBAQCB2b2lk
IENvbG9ySW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHZvaWQgQ29sb3JJbnB1dFR5
cGU6OnZhbHVlQ2hhbmdlZCgpCiB7CiAgICAgdXBkYXRlQ29sb3JTd2F0Y2goKTsKKyAgICBpZiAo
Q29sb3JDaG9vc2VyOjpjaG9vc2VyKCktPmNsaWVudCgpID09IHRoaXMpIHsKKyAgICAgICAgaWYg
KENocm9tZSogY2hyb21lID0gdGhpcy0+Y2hyb21lKCkpCisgICAgICAgICAgICBjaHJvbWUtPnNl
dFNlbGVjdGVkQ29sb3JJbkNvbG9yQ2hvb3Nlcih2YWx1ZUFzQ29sb3IoKSk7CisgICAgfQorfQor
Cit2b2lkIENvbG9ySW5wdXRUeXBlOjpoYW5kbGVDbGlja0V2ZW50KE1vdXNlRXZlbnQqIGV2ZW50
KQoreworICAgIGlmIChldmVudC0+aXNTaW11bGF0ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50KCktPnJlYWRPbmx5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChDaHJvbWUqIGNocm9tZSA9IHRoaXMtPmNocm9tZSgp
KSB7CisgICAgICAgIENvbG9yQ2hvb3Nlcjo6Y2hvb3NlcigpLT5jb25uZWN0Q2xpZW50KHRoaXMp
OworICAgICAgICBjaHJvbWUtPm9wZW5Db2xvckNob29zZXIoQ29sb3JDaG9vc2VyOjpjaG9vc2Vy
KCksIHZhbHVlQXNDb2xvcigpKTsKKyAgICB9CisgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVk
KCk7Cit9CisKK3ZvaWQgQ29sb3JJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZl
bnQqIGV2ZW50KQoreworICAgIGlmIChlbGVtZW50KCktPmRpc2FibGVkKCkgfHwgZWxlbWVudCgp
LT5yZWFkT25seSgpIHx8ICFlbGVtZW50KCktPnJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmICghU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChDaHJvbWUqIGNocm9tZSA9IHRoaXMtPmNocm9tZSgp
KSB7CisgICAgICAgIENvbG9yQ2hvb3Nlcjo6Y2hvb3NlcigpLT5jb25uZWN0Q2xpZW50KHRoaXMp
OworICAgICAgICBjaHJvbWUtPm9wZW5Db2xvckNob29zZXIoQ29sb3JDaG9vc2VyOjpjaG9vc2Vy
KCksIHZhbHVlQXNDb2xvcigpKTsKKyAgICB9CisgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVk
KCk7Cit9CisKK3ZvaWQgQ29sb3JJbnB1dFR5cGU6OmRldGFjaCgpCit7CisgICAgY2xvc2VDb2xv
ckNob29zZXJJZkN1cnJlbnRDbGllbnQoKTsKK30KKwordm9pZCBDb2xvcklucHV0VHlwZTo6Y29s
b3JTZWxlY3RlZChjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgaWYgKGVsZW1lbnQoKS0+ZGlz
YWJsZWQoKSB8fCBlbGVtZW50KCktPnJlYWRPbmx5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBz
ZXRWYWx1ZUFzQ29sb3IoY29sb3IpOworfQorCitib29sIENvbG9ySW5wdXRUeXBlOjppc0NvbG9y
SW5wdXRUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBDb2xvcklu
cHV0VHlwZTo6dXBkYXRlQ29sb3JTd2F0Y2goKQpAQCAtMTI5LDYgKzE5OCwxNCBAQCBIVE1MRWxl
bWVudCogQ29sb3JJbnB1dFR5cGU6OnNoYWRvd0NvbG9yU3dhdGNoKCkgY29uc3QKICAgICByZXR1
cm4gc2hhZG93ID8gdG9IVE1MRWxlbWVudChzaGFkb3ctPmZpcnN0Q2hpbGQoKS0+Zmlyc3RDaGls
ZCgpKSA6IDA7CiB9CiAKK3ZvaWQgQ29sb3JJbnB1dFR5cGU6OmNsb3NlQ29sb3JDaG9vc2VySWZD
dXJyZW50Q2xpZW50KCkgY29uc3QKK3sKKyAgICBpZiAoQ29sb3JDaG9vc2VyOjpjaG9vc2VyKCkt
PmNsaWVudCgpID09IHRoaXMpIHsKKyAgICAgICAgaWYgKENocm9tZSogY2hyb21lID0gdGhpcy0+
Y2hyb21lKCkpCisgICAgICAgICAgICBjaHJvbWUtPmNsb3NlQ29sb3JDaG9vc2VyKCk7CisgICAg
fQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5QVVRf
Q09MT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmgKaW5kZXggZDM0MDg0ZjAzMGZj
ZGQzM2RiNmI3NjE0ZTE3YzgxOGJiM2UzMjM2ZC4uYzdmNDMwNzZjYzI3N2ZkNDNmYzhhZTEzZTI1
MDIyOWQyZDhmODA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0
VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaApAQCAtMzEs
MjUgKzMxLDM4IEBACiAjaWZuZGVmIENvbG9ySW5wdXRUeXBlX2gKICNkZWZpbmUgQ29sb3JJbnB1
dFR5cGVfaAogCi0jaW5jbHVkZSAiQmFzZUJ1dHRvbklucHV0VHlwZS5oIgorI2luY2x1ZGUgIkNv
bG9yQ2hvb3Nlci5oIgorI2luY2x1ZGUgIklucHV0VHlwZS5oIgogCiAjaWYgRU5BQkxFKElOUFVU
X0NPTE9SKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbG9ySW5wdXRUeXBlIDog
cHVibGljIElucHV0VHlwZSB7CitjbGFzcyBDb2xvcklucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5
cGUsIHByaXZhdGUgQ29sb3JDaG9vc2VyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50Kik7CiAKKyAgICB2b2lk
IGNsb3NlQ29sb3JDaG9vc2VySWZDdXJyZW50Q2xpZW50KCkgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgQ29sb3JJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkgOiBJbnB1dFR5cGUo
ZWxlbWVudCkgeyB9CisgICAgdmlydHVhbCB+Q29sb3JJbnB1dFR5cGUoKTsKICAgICB2aXJ0dWFs
IGJvb2wgaXNDb2xvckNvbnRyb2woKSBjb25zdDsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
UmVxdWlyZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBmYWxsYmFja1ZhbHVlKCk7CiAg
ICAgdmlydHVhbCBTdHJpbmcgc2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0
dWFsIENvbG9yIHZhbHVlQXNDb2xvcigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1
ZUFzQ29sb3IoY29uc3QgQ29sb3ImKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hh
ZG93U3VidHJlZSgpOwogICAgIHZpcnR1YWwgdm9pZCB2YWx1ZUNoYW5nZWQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlQ2xpY2tFdmVudChNb3VzZUV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lk
IGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNo
KCk7CisKKyAgICAvLyBDb2xvckNob29zZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCisgICAgdmly
dHVhbCB2b2lkIGNvbG9yU2VsZWN0ZWQoY29uc3QgQ29sb3ImKTsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNDb2xvcklucHV0VHlwZSgpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVDb2xvclN3YXRjaCgp
OwogICAgIEhUTUxFbGVtZW50KiBzaGFkb3dDb2xvclN3YXRjaCgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXggNWYyMjRlNzM1YTM0NjllMjk3YmRkYmI4NGQx
MWQzZTIzYjcyYTZmMy4uNWQ1Y2EzOWZhN2FhODgyYWExNDdjYzkxMDliMDI0MTFjM2M5NzRhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSWNvbi5oIgogI2luY2x1ZGUgIkxvY2Fs
aXplZFN0cmluZ3MuaCIKLSNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmlsZVVw
bG9hZENvbnRyb2wuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgpAQCAtMzMzLDEzICszMzIsNiBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnVw
ZGF0ZVJlbmRlcmluZyhQYXNzUmVmUHRyPEljb24+IGljb24pCiAgICAgICAgIGVsZW1lbnQoKS0+
cmVuZGVyZXIoKS0+cmVwYWludCgpOwogfQogCi1DaHJvbWUqIEZpbGVJbnB1dFR5cGU6OmNocm9t
ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBlbGVtZW50KCktPmRvY3VtZW50KCkt
PnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpOwotICAgIHJldHVybiAwOwot
fQotCiB2b2lkIEZpbGVJbnB1dFR5cGU6OnJlY2VpdmVEcm9wcGVkRmlsZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhdGhzKQogewogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gZWxlbWVu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAppbmRleCBhYWNiZDIxOTQxODFkZmI1
YzRmMzFhODRlMzc4Y2JiNjYwNTFjYWRiLi45ZWFhNzJlM2EyODdjMTM0MDI2MWMwMTI4MDRiN2Q5
ZThlZjgwN2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaApAQCAtMzksNyArMzks
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENocm9tZTsKIGNsYXNzIEZpbGVM
aXN0OwogCiBjbGFzcyBGaWxlSW5wdXRUeXBlIDogcHVibGljIEJhc2VCdXR0b25JbnB1dFR5cGUs
IHByaXZhdGUgRmlsZUNob29zZXJDbGllbnQsIHByaXZhdGUgRmlsZUljb25Mb2FkZXJDbGllbnQg
ewpAQCAtNzcsNyArNzYsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVjZWl2ZURyb3BGb3JEaXJl
Y3RvcnlVcGxvYWQoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICNlbmRpZgogICAgIHZvaWQgcmVx
dWVzdEljb24oY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKLSAgICBDaHJvbWUqIGNocm9tZSgpIGNv
bnN0OwogCiAgICAgUmVmUHRyPEZpbGVMaXN0PiBtX2ZpbGVMaXN0OwogICAgIFJlZlB0cjxJY29u
PiBtX2ljb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBh
ZDQ5NDIzZTA4YWUwNjA1MmI0ZjcwZTQxMTg4NTRkMTI4MWIyZjMyLi4zZWQxNWNiY2Y4MzRhZGY1
MDFiN2Y3NmIwOWE4MGMwYTJkNmM0NDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKQEAgLTg4MCw2ICs4ODAsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRl
dGFjaCgpCiB7CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRldGFjaCgpOwogICAg
IHNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoZmFsc2UpOworICAgIG1faW5wdXRU
eXBlLT5kZXRhY2goKTsKIH0KIAogU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OmFsdFRleHQoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDYwOTI0NjBhMDA3OGZlMjUzMGRl
NjQxN2M4N2ExNDAwZjk0ZWZlNTAuLjZjMzRkYzQ2ODkyMzc4MmE0Mzc5ODg4YmFmYzEyN2VkZjE0
ZDQ5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNp
bmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTW9udGhJbnB1dFR5cGUuaCIK
ICNpbmNsdWRlICJOdW1iZXJJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUGFzc3dvcmRJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJSYWRpb0lucHV0VHlwZS5oIgogI2lu
Y2x1ZGUgIlJhbmdlSW5wdXRUeXBlLmgiCkBAIC0zOTUsNiArMzk2LDEzIEBAIHZvaWQgSW5wdXRU
eXBlOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrSWZBY3RpdmUoS2V5Ym9hcmRFdmVudCogZXZlbnQp
IGNvbnN0CiAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKK0Nocm9tZSogSW5w
dXRUeXBlOjpjaHJvbWUoKSBjb25zdAoreworICAgIGlmIChQYWdlKiBwYWdlID0gZWxlbWVudCgp
LT5kb2N1bWVudCgpLT5wYWdlKCkpCisgICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKTsKKyAg
ICByZXR1cm4gMDsKK30KKwogYm9vbCBJbnB1dFR5cGU6OmNhblNldFN0cmluZ1ZhbHVlKCkgY29u
c3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQyMyw2ICs0MzEsMTAgQEAgdm9pZCBJbnB1dFR5
cGU6OmF0dGFjaCgpCiB7CiB9CiAKK3ZvaWQgSW5wdXRUeXBlOjpkZXRhY2goKQoreworfQorCiB2
b2lkIElucHV0VHlwZTo6YWx0QXR0cmlidXRlQ2hhbmdlZCgpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1
dFR5cGUuaAppbmRleCAyZGYwZWY1YjhmOTU4OGQzMmFlNzJmYjYzMmMyMjRiN2JjYmY0NjQxLi41
MTFmOTViOTFiY2Y0NmM4MDhkODk2ZGQzZjU3MTMzODM1ZDU0MjM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmgKQEAgLTQxLDYgKzQxLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QmVmb3JlVGV4dEluc2VydGVkRXZlbnQ7CitjbGFzcyBDaHJvbWU7CitjbGFzcyBDb2xvcjsKIGNs
YXNzIERhdGVDb21wb25lbnRzOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGaWxlTGlzdDsKQEAgLTkx
LDcgKzkzLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQogICAgIHZpcnR1
YWwgYm9vbCBpc0NvbG9yQ29udHJvbCgpIGNvbnN0OwotI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9D
T0xPUikKKyNlbmRpZgogICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrYm94KCkgY29uc3Q7CiAgICAg
dmlydHVhbCBib29sIGlzRW1haWxGaWVsZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0Zp
bGVVcGxvYWQoKSBjb25zdDsKQEAgLTIwNSw2ICsyMDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCBhdHRhY2goKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAgICAgdmlydHVh
bCB2b2lkIG1pbk9yTWF4QXR0cmlidXRlQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBhbHRB
dHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgdmlydHVhbCB2b2lkIHNyY0F0dHJpYnV0ZUNoYW5nZWQo
KTsKQEAgLTI2MCw2ICsyNjMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaXNwYXRjaFNpbXVs
YXRlZENsaWNrSWZBY3RpdmUoS2V5Ym9hcmRFdmVudCopIGNvbnN0OwogICAgIC8vIFdlIGNhbid0
IG1ha2UgdGhpcyBhIHN0YXRpYyBjb25zdCBkYXRhIG1lbWJlciBiZWNhdXNlIFZDKysgZG9lc24n
dCBsaWtlIGl0LgogICAgIHN0YXRpYyBkb3VibGUgZGVmYXVsdFN0ZXBCYXNlKCkgeyByZXR1cm4g
MC4wOyB9CisgICAgQ2hyb21lKiBjaHJvbWUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICAvLyBS
YXcgcG9pbnRlciBiZWNhdXNlIHRoZSBIVE1MSW5wdXRFbGVtZW50IG9iamVjdCBvd25zIHRoaXMg
SW5wdXRUeXBlIG9iamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBi
NDA5NzU2ZTNmYWZjN2U4NGIwNWIxODE5MDU0ODk2NDcwMTM5MWQyLi44YzdmYzUzOGVkMmMxNzVh
YWE2NTljYTFmMTQwOTAwOTVlODM2ODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCkBAIC0xOTYsNiArMTk2LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW51bWVy
YXRlQ2hvc2VuRGlyZWN0b3J5KEZpbGVDaG9vc2VyKikgeyB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShJTlBVVF9DT0xPUikKKyAgICB2b2lkIG9wZW5Db2xvckNob29zZXIoQ29sb3JDaG9vc2VyKiwg
Y29uc3QgQ29sb3ImKSB7IH0KKyAgICB2b2lkIGNsb3NlQ29sb3JDaG9vc2VyKCkgeyB9CisgICAg
dm9pZCBzZXRTZWxlY3RlZENvbG9ySW5Db2xvckNob29zZXIoY29uc3QgQ29sb3ImKSB7IH0KKyNl
bmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8
RmlsZUNob29zZXI+KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKikgeyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDZhNDllNDY3NjE2YTQ2MzEzNzIzYmE1OGExMzY3MDE1
MTlmODY0MGUuLjY0MmY2ZjBiMjFkODdiNDdlY2M5NWRhZjljZWE4MzAzMjE2YWZhODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTAwLDYgKzEwMCwxMSBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAorI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKKyNpbmNsdWRlICJDb2xvckNob29zZXIuaCIK
KyNpbmNsdWRlICJDb2xvcklucHV0VHlwZS5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoU0hBUkVE
X1dPUktFUlMpCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIgogI2VuZGlmCkBA
IC0xODE2LDYgKzE4MjEsMTQgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0
dGVkKFBhc3NSZWZQdHI8Q2FjaGVkUGFnZT4gY2FjaGVkUGFnZSkKICAgICBpZiAobV9mcmFtZS0+
dmlldygpKQogICAgICAgICBtX2ZyYW1lLT52aWV3KCktPnNjcm9sbEFuaW1hdG9yKCktPmNhbmNl
bEFuaW1hdGlvbnMoKTsKIAorI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKKyAgICBDb2xvckNob29z
ZXJDbGllbnQqIGNvbG9yQ2hvb3NlckNsaWVudCA9IENvbG9yQ2hvb3Nlcjo6Y2hvb3NlcigpLT5j
bGllbnQoKTsKKyAgICBpZiAoY29sb3JDaG9vc2VyQ2xpZW50ICYmIGNvbG9yQ2hvb3NlckNsaWVu
dC0+aXNDb2xvcklucHV0VHlwZSgpKSB7CisgICAgICAgIENvbG9ySW5wdXRUeXBlKiBjb2xvcklu
cHV0VHlwZSA9IChDb2xvcklucHV0VHlwZSopY29sb3JDaG9vc2VyQ2xpZW50OworICAgICAgICBj
b2xvcklucHV0VHlwZS0+Y2xvc2VDb2xvckNob29zZXJJZkN1cnJlbnRDbGllbnQoKTsKKyAgICB9
CisjZW5kaWYKKwogICAgIG1fY2xpZW50LT5zZXRDb3BpZXNPblNjcm9sbCgpOwogICAgIGhpc3Rv
cnkoKS0+dXBkYXRlRm9yQ29tbWl0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA0ODRj
YTgxM2Y2OWQ2ZmIwMDBkMzc0Y2IwZDEzOWVkNjhlYTgwYTE3Li41YzdjYjE0NDVhYzUyMmMzNDQ1
Y2EzMTAxOGYyNGJkYjc4OTMwYjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC01Miw2ICs1
MiwxMCBAQAogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2UuaCIKICNlbmRpZgogCisjaWYgRU5B
QkxFKElOUFVUX0NPTE9SKQorI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTQ2Nyw2
ICs0NzEsMjMgQEAgdm9pZCBDaHJvbWU6OmVudW1lcmF0ZUNob3NlbkRpcmVjdG9yeShGaWxlQ2hv
b3NlciogZmlsZUNob29zZXIpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlBVVF9DT0xPUikK
K3ZvaWQgQ2hyb21lOjpvcGVuQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlciogY29sb3JDaG9vc2Vy
LCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yKQoreworICAgIG1fY2xpZW50LT5vcGVuQ29sb3JD
aG9vc2VyKGNvbG9yQ2hvb3NlciwgaW5pdGlhbENvbG9yKTsKK30KKwordm9pZCBDaHJvbWU6OmNs
b3NlQ29sb3JDaG9vc2VyKCkKK3sKKyAgICBtX2NsaWVudC0+Y2xvc2VDb2xvckNob29zZXIoKTsK
K30KKwordm9pZCBDaHJvbWU6OnNldFNlbGVjdGVkQ29sb3JJbkNvbG9yQ2hvb3Nlcihjb25zdCBD
b2xvciYgY29sb3IpCit7CisgICAgbV9jbGllbnQtPnNldFNlbGVjdGVkQ29sb3JJbkNvbG9yQ2hv
b3Nlcihjb2xvcik7Cit9CisjZW5kaWYKKwogdm9pZCBDaHJvbWU6OnJ1bk9wZW5QYW5lbChGcmFt
ZSogZnJhbWUsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyKQogewogICAgIG1f
Y2xpZW50LT5ydW5PcGVuUGFuZWwoZnJhbWUsIGZpbGVDaG9vc2VyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5o
CmluZGV4IDEyYjlmNTQ2N2NkYjhjZGIxMDcwNGFkZWRjNzBjOGU2N2MxMWQ3YzEuLjJlZDZlNzIy
Njc5OWNhYmRiZWRiMzdhOWQ2ZGJjOTlhMTk3MDg3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAt
MzYsNiArMzYsOSBAQCBjbGFzcyBOU1ZpZXc7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBj
bGFzcyBDaHJvbWVDbGllbnQ7CisjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQorICAgIGNsYXNzIENv
bG9yQ2hvb3NlcjsKKyNlbmRpZgogICAgIGNsYXNzIEZpbGVDaG9vc2VyOwogICAgIGNsYXNzIEZp
bGVJY29uTG9hZGVyOwogICAgIGNsYXNzIEZsb2F0UmVjdDsKQEAgLTE1NCw2ICsxNTcsMTIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1p
c3Npb25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKik7CiAgICAgICAgIHZvaWQgY2FuY2Vs
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24q
KTsKIAorI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKKyAgICAgICAgdm9pZCBvcGVuQ29sb3JDaG9v
c2VyKENvbG9yQ2hvb3NlciosIGNvbnN0IENvbG9yJik7CisgICAgICAgIHZvaWQgY2xvc2VDb2xv
ckNob29zZXIoKTsKKyAgICAgICAgdm9pZCBzZXRTZWxlY3RlZENvbG9ySW5Db2xvckNob29zZXIo
Y29uc3QgQ29sb3ImKTsKKyNlbmRpZgorCiAgICAgICAgIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1l
KiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogICAgICAgICB2b2lkIGxvYWRJY29uRm9yRmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlSWNvbkxvYWRlciopOwogI2lmIEVOQUJMRShE
SVJFQ1RPUllfVVBMT0FEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZDVlNmQ3
YjYzZDFhNTBhODJmNGYyZmQ5OWQ3OGMzNmYyZWJhNGY4YS4uMTdmNzkwNmE4ZTQ2OTQ3NTQwOGI0
MmE1NjVlZDVmYzk5NjZjOTUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC03
MSw2ICs3MSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgR3JhcGhpY3NMYXll
cjsKICNlbmRpZgogCisjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQorICAgIGNsYXNzIENvbG9yQ2hv
b3NlcjsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgY2xhc3MgTm90
aWZpY2F0aW9uUHJlc2VudGVyOwogI2VuZGlmCkBAIC0yMzEsNiArMjM1LDEyIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1p
c3Npb25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKikgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKEZyYW1lKiwg
R2VvbG9jYXRpb24qKSA9IDA7CiAKKyNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCisgICAgICAgIHZp
cnR1YWwgdm9pZCBvcGVuQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlciosIGNvbnN0IENvbG9yJikg
PSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VDb2xvckNob29zZXIoKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZENvbG9ySW5Db2xvckNob29zZXIoY29uc3QgQ29s
b3ImKSA9IDA7CisjZW5kaWYKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZy
YW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pID0gMDsKICAgICAgICAgLy8gQXN5bmNocm9u
b3VzIHJlcXVlc3QgdG8gbG9hZCBhbiBpY29uIGZvciBzcGVjaWZpZWQgZmlsZW5hbWVzLgogICAg
ICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IEZpbGVJY29uTG9hZGVyKikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ29sb3JDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbG9yQ2hvb3Nl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGNiOTlmMDFjM2MwYzViYzJkY2Q4OGZjYWIzNDVjYWVlODIyNzNj
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbG9yQ2hvb3Nl
ci5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQ29sb3JDaG9vc2VyLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCisj
aWYgRU5BQkxFKElOUFVUX0NPTE9SKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NvbG9yQ2hv
b3NlckNsaWVudDo6fkNvbG9yQ2hvb3NlckNsaWVudCgpCit7CisgICAgQ29sb3JDaG9vc2VyOjpj
aG9vc2VyKCktPmRpc2Nvbm5lY3RDbGllbnQodGhpcyk7Cit9CisKK3N0YXRpYyBDb2xvckNob29z
ZXIqIHN0YXRpY0Nob29zZXIgPSAwOworCitDb2xvckNob29zZXIqIENvbG9yQ2hvb3Nlcjo6Y2hv
b3NlcigpCit7CisgICAgaWYgKCFzdGF0aWNDaG9vc2VyKQorICAgICAgICBzdGF0aWNDaG9vc2Vy
ID0gYWRvcHRQdHIobmV3IENvbG9yQ2hvb3NlcigpKS5sZWFrUHRyKCk7CisgICAgcmV0dXJuIHN0
YXRpY0Nob29zZXI7Cit9CisKK3ZvaWQgQ29sb3JDaG9vc2VyOjpjb25uZWN0Q2xpZW50KENvbG9y
Q2hvb3NlckNsaWVudCogY2xpZW50KQoreworICAgIGlmIChjbGllbnQgIT0gbV9jbGllbnQpCisg
ICAgICAgIG1fY2xpZW50ID0gY2xpZW50OworfQorCit2b2lkIENvbG9yQ2hvb3Nlcjo6ZGlzY29u
bmVjdENsaWVudChDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBpZiAoY2xpZW50
ID09IG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudCA9IDA7Cit9CisKK3ZvaWQgQ29sb3JDaG9v
c2VyOjpjb2xvclNlbGVjdGVkKGNvbnN0IENvbG9yJiBjb2xvcikgY29uc3QKK3sKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5jb2xvclNlbGVjdGVkKGNvbG9yKTsKK30KKwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29sb3JDaG9vc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
b2xvckNob29zZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzYzNWNlYWM1ZDFhMjcxZGRhODQyMGRmOGI0NmU5
OTgwZDMyMTljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29s
b3JDaG9vc2VyLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIENvbG9yQ2hvb3Nl
cl9oCisjZGVmaW5lIENvbG9yQ2hvb3Nlcl9oCisKKyNpbmNsdWRlICJDb2xvci5oIgorCisjaWYg
RU5BQkxFKElOUFVUX0NPTE9SKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbG9y
Q2hvb3NlcjsKKworY2xhc3MgQ29sb3JDaG9vc2VyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5Db2xvckNob29zZXJDbGllbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sb3JTZWxlY3Rl
ZChjb25zdCBDb2xvciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb2xvcklucHV0VHlwZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cit9OworCitjbGFzcyBDb2xvckNob29zZXIgeworcHVi
bGljOgorICAgIHN0YXRpYyBDb2xvckNob29zZXIqIGNob29zZXIoKTsKKworICAgIENvbG9yQ2hv
b3NlckNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH07CisgICAgdm9p
ZCBjb25uZWN0Q2xpZW50KENvbG9yQ2hvb3NlckNsaWVudCopOworICAgIHZvaWQgZGlzY29ubmVj
dENsaWVudChDb2xvckNob29zZXJDbGllbnQqKTsKKworICAgIHZvaWQgY29sb3JTZWxlY3RlZChj
b25zdCBDb2xvciYpIGNvbnN0OworCitwcml2YXRlOgorICAgIENvbG9yQ2hvb3NlcigpCisgICAg
ICAgIDogbV9jbGllbnQoMCkKKyAgICB7IH0KKworICAgIENvbG9yQ2hvb3NlckNsaWVudCogbV9j
bGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5QVVRfQ09MT1IpCisKKyNlbmRpZiAvLyBDb2xvckNob29zZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103210</attachid>
            <date>2011-08-07 23:57:24 -0700</date>
            <delta_ts>2011-08-08 05:44:49 -0700</delta_ts>
            <desc>new patch</desc>
            <filename>bug-62619-20110808155722.patch</filename>
            <type>text/plain</type>
            <size>28554</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlNTc2MWI1MDI3NGE1NmNjODQ4YjZiZTgwY2VmYWFkOGZiYmQ0NmJhLi5j
Y2Q5YzdiZDlmZjU2MWJkOGNiYTJhNmM3OWZmMjg0ODAwMmVmNmYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsNjEgQEAKIDIwMTEtMDgtMDcgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5v
cmc+CiAKKyAgICAgICAgSW1wbGVtZW50IDxpbnB1dCB0eXBlPWNvbG9yPiBVSSBiZWhhdmlvciBX
ZWJDb3JlIHBhcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYyNjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjogQWRkZWQgX19aTjdXZWJDb3JlMTJDb2xvckNob29zZXI3Y2hv
b3NlckV2IGFuZAorICAgICAgICBfX1pOSzdXZWJDb3JlMTJDb2xvckNob29zZXIxM2NvbG9yU2Vs
ZWN0ZWRFUktOU181Q29sb3JFCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOiBBZGRlZCBDb2xvckNob29zZXIue2gsY3BwfQorICAgICAgICAqIGh0bWwvQ29sb3JJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6On5Db2xvcklu
cHV0VHlwZSk6IEFkZGVkLiBDbG9zZSBjb2xvciBjaG9vc2VyLiBleC4gd2hlbiB0eXBlIGF0dHJp
YnV0ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OnZhbHVlQXND
b2xvcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OnNldFZhbHVl
QXNDb2xvcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OnZhbHVl
Q2hhbmdlZCk6IFVwZGF0ZSBzZWxlY3RlZCBjb2xvciBpbiBjb2xvciBjaG9vc2VyIHRvby4KKyAg
ICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpoYW5kbGVDbGlja0V2ZW50KTogT3BlbnMg
Y29sb3IgY2hvb3Nlci4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpoYW5kbGVE
T01BY3RpdmF0ZUV2ZW50KTogQ2FsbGVkIHdoZW4gZWxlbWVudC5jbGljaygpLiBPcGVuIGNvbG9y
IGNob29zZXIgb25seQorICAgICAgICB3aGVuIGl0IHdhcyBpbml0aWF0ZWQgYnkgYSB1c2VyIGlu
dGVyYWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OmRldGFjaCk6IENs
b3NlIGNvbG9yIGNob29zZXIuIENhbGxlZCB3aGVuIGlucHV0IGVsZW1lbnQgb3IgaXRzIGFuY2Vz
dG9ycyBoYXZlICJkaXNwbGF5Om5vbmUiCisgICAgICAgIG9yIGlzIHJlbW92ZWQgZnJvbSBET00u
CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6Y29sb3JTZWxlY3RlZCk6IENhbGxi
YWNrIGZyb20gY29sb3IgY2hvb3Nlci4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBl
Ojppc0NvbG9ySW5wdXRUeXBlKTogUmV0dXJucyB0cnVlLgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3JJbnB1dFR5cGU6OmNsb3NlQ29sb3JDaG9vc2VySWZDdXJyZW50Q2xpZW50KTogQ2xvc2UgY29s
b3IgY2hvb3NlciBpZiB0aGlzIGlucHV0IHR5cGUgaXMgdGhlIGN1cnJlbnQgY2xpZW50IG9mIENv
bG9yQ2hvb3Nlci4KKyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmg6CisgICAgICAgICog
aHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6ZGV0YWNoKTogQ2FsbHMgSW5wdXRUeXBlOjpkZXRhY2gKKyAgICAg
ICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmNo
cm9tZSk6IEFkZGVkLiBVc2VkIGluIEZpbGVJbnB1dFR5cGUgYW5kIENvbG9ySW5wdXRUeXBlLgor
ICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpkZXRhY2gpOiBDb2xvcklucHV0VHlwZSBvdmVy
cmlkZXMgdGhpcy4KKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGxvYWRl
ci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5Q2hyb21lQ2xpZW50Ojpv
cGVuQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5Q2hyb21lQ2xpZW50Ojpj
bG9zZUNvbG9yQ2hvb3Nlcik6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6
c2V0U2VsZWN0ZWRDb2xvckluQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnRyYW5zaXRpb25Ub0Nv
bW1pdHRlZCk6IENsb3NlIGNvbG9yIGNob29zZXIgd2hlbiBuYXZpZ2F0aW5nIGF3YXkgZnJvbSB0
aGUgcGFnZS4gV2UgZG8gdGhpcyBoZXJlCisgICAgICAgIGJlY2F1c2UgQ29sb3JJbnB1dFR5cGU6
OmRldGFjaCgpIGlzIGNhbGxlZCBzZWNvbmRzIGFmdGVyIHRoZSBwYWdlIHRyYW5zaXRpb24gc28g
aXQgaXMgdG9vIHNsb3cuCisgICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lOjpvcGVuQ29sb3JDaG9vc2VyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWU6OmNsb3NlQ29sb3JDaG9vc2VyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWU6OnNldFNlbGVjdGVkQ29sb3JJbkNvbG9yQ2hvb3Nlcik6IEFkZGVkLgorICAgICAgICAq
IHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9Db2xvckNob29zZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNv
bG9yQ2hvb3NlckNsaWVudDo6fkNvbG9yQ2hvb3NlckNsaWVudCk6IERpc2Nvbm5lY3RzIGl0c2Vs
ZiBmcm9tIHRoZSBDb2xvckNob29zZXIuCisgICAgICAgIChXZWJDb3JlOjpDb2xvckNob29zZXI6
OmNob29zZXIpOiBHZXQgc2hhcmVkIGluc3RhbmNlIG9mIENvbG9yQ2hvb3Nlci4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcjo6Y29ubmVjdENsaWVudCk6IENvbm5lY3RzIGEgQ29sb3JD
aG9vc2VyQ2xpZW50IHRoYXQgcmVjZWl2ZXMgdGhlIGNvbG9yU2VsZWN0ZWQgY2FsbGJhY2tzLgor
ICAgICAgICAoV2ViQ29yZTo6Q29sb3JDaG9vc2VyOjpkaXNjb25uZWN0Q2xpZW50KTogRGlzY29u
bmVjdHMgdGhlIGNvbm5lY3RDbGllbnQuCisgICAgICAgIChXZWJDb3JlOjpDb2xvckNob29zZXI6
OmNvbG9yU2VsZWN0ZWQpOiBDYWxsZWQgZnJvbSBjb2xvciBjaG9vc2VyIGxpc3RlbmVyLgorICAg
ICAgICAqIHBsYXRmb3JtL0NvbG9yQ2hvb3Nlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbG9yQ2hvb3NlckNsaWVudDo6aXNDb2xvcklucHV0VHlwZSk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29sb3JDaG9vc2VyOjpjbGllbnQpOiBBZGRlZC4gUmV0dXJucyB0aGUgY3VycmVu
dCBjb25uZWN0ZWQgY2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDaG9vc2VyOjpDb2xv
ckNob29zZXIpOiBBZGRlZC4KKworMjAxMS0wOC0wNyAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlA
d2Via2l0Lm9yZz4KKwogICAgICAgICBTb3J0IFdlYkNvcmUueGNvZGVwcm9qCiAgICAgICAgIEFj
Y29tcGxpc2hlZCB1c2luZyBzb3J0LVhjb2RlLXByb2plY3QtZmlsZS4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgppbmRleCA0ZTQyMTc3Yjc1N2M4OTlkNjE0ZmFjN2MzNTk1NTdlNTNiNGUwYWEzLi41YjQ0
YWNkOGI1ZmM0NDRkZDlkNjFlNThkOGFmMjAzNGM3ZGZjYTgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgpAQCAtMTk0MSwzICsxOTQxLDggQEAgX19aTks3V2ViQ29yZTEzUmVzb3VyY2VFcnJvcmN2UDdO
U0Vycm9yRXYKIF9fWk43V2ViQ29yZTEyU2NoZWR1bGVQYWlyQzFFUDlOU1J1bkxvb3BQSzEwX19D
RlN0cmluZwogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTEycmVsZWFzZVByb3h5RXYKICNl
bmRpZgorCisjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQorX19aTjdXZWJDb3JlMTJDb2xvckNob29z
ZXI3Y2hvb3NlckV2CitfX1pOSzdXZWJDb3JlMTJDb2xvckNob29zZXIxM2NvbG9yU2VsZWN0ZWRF
UktOU181Q29sb3JFCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMTdkMGNmNThmNWM3Nzg4ZTc2ODRhNDg5MjYyMWMy
M2NlOTliODAxLi43ZDZmN2FlMzk4Njk3MTUzZjRjZmRmNTU4ZDY1ODNlMTBhNDM4NWI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC01MzMxLDYgKzUzMzEsOCBAQAogCQlDMEYyQTQ0MTEzODY5QUFCMDA2NkM1MzQgLyogcHJlcHJv
Y2Vzc29yLnBtIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzBGMkE0M0YxMzg2OUEyODAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMTA1REE2MjBGM0FBNjhGMDAx
REQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzEwNURBNjEwRjNBQTY4RjAwMURENDRGIC8qIFRl
eHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcCAqLzsgfTsKIAkJQzEwNURBNjQwRjNBQTZCODAwMURE
NDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMTA1REE2MzBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29k
aW5nRGV0ZWN0b3IuaCAqLzsgfTsKKwkJQzMzMEEyMjIxM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9y
Q2hvb3Nlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMzMwQTIyMDEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmNwcCAqLzsgfTsKKwkJ
QzMzMEEyMjMxM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzMzMEEyMjExM0VDMTk2QjAwMDBCNDVC
IC8qIENvbG9yQ2hvb3Nlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUM1MEI1NjE2MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MEI1NjE0
MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmNwcCAqLzsgfTsKIAkJQzUwQjU2MTcx
MjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MEI1NjE1MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91
cFNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQzUwRDBFODIwRkY0MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwRDBFODAwRkY0
MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3BwICovOyB9OwpAQCAtMTIwMzcsNiAr
MTIwMzksOCBAQAogCQlDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBt
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQucGVybDsgbmFtZSA9IHByZXByb2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlwdHMvcHJlcHJv
Y2Vzc29yLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTA1REE2MTBGM0FBNjhG
MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMTA1REE2MzBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVu
Y29kaW5nRGV0ZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEVu
Y29kaW5nRGV0ZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzMzMEEyMjAx
M0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb2xvckNob29zZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDMzMwQTIyMTEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yQ2hvb3Nlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDNTBCNTYxNDEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5n
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcm91cFNldHRpbmdz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwQjU2MTUxMjExOUQyMzAwOEI0
NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R3JvdXBTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTBEMEU4MDBG
RjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTmFtZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE5MDI1LDYgKzE5MDI5LDggQEAKIAkJCQk4OUQwOEQ5RDEyMjI4NDUx
MDAxMjQxREYgLyogQXN5bmNGaWxlU3lzdGVtLmggKi8sCiAJCQkJODlEMDhEOUUxMjIyODQ1MTAw
MTI0MURGIC8qIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oICovLAogCQkJCTUxRTFFQ0IxMEM5
MUM1NTYwMERDMjU1QiAvKiBBdXRvZHJhaW5lZFBvb2wuaCAqLywKKwkJCQlDMzMwQTIyMDEzRUMx
OTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmNwcCAqLywKKwkJCQlDMzMwQTIyMTEzRUMxOTZC
MDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmggKi8sCiAJCQkJQkNDOENGQ0EwOTg2Q0QyNDAwMTQw
QkYyIC8qIENvbG9yRGF0YS5ncGVyZiAqLywKIAkJCQk0MUQwMTVDOTBGNEI1QzcxMDA0QTY2MkYg
LyogQ29udGVudFR5cGUuY3BwICovLAogCQkJCTQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBD
b250ZW50VHlwZS5oICovLApAQCAtMjA1MjEsNiArMjA1MjcsNyBAQAogCQkJCTkzQzQ0MUYwMEY4
MTNBMUEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
QzQ0MjAwMEY4MTNBRTEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjI3NTM1NjcwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDMzMwQTIyMzEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyNzk2MzBEMDBCRjIyMDA3MUI3ODIgLyogQ29sb3JEaXN0YW5jZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjQxMjUxRjEyRDAwM0VGMjY5IC8qIENvbG9ySW5wdXRU
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFREUzQTUwMDBDN0E0MzA2MDA5NTZBMzcgLyogQ29s
b3JNYWMuaCBpbiBIZWFkZXJzICovLApAQCAtMjM4MTYsNiArMjM4MjMsNyBAQAogCQkJCTkzQzQ0
MUVGMEY4MTNBMUEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjI3NTM1NjYwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQ0YzMzI0MEYyQjk3MTUwMDRCNjc5NSAvKiBDb2xvckNHLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUMzMzBBMjIyMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xvckNob29zZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUFCQTc2QzkxMUQyMEU0NzAwNEMyMDFDIC8qIENvbG9yRGF0YS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzk2MjBEMDBCRjIyMDA3MUI3ODIgLyogQ29sb3JE
aXN0YW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVCM0RCMzEyNTFGMTJEMDAzRUYyNjkg
LyogQ29sb3JJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29s
b3JJbnB1dFR5cGUuY3BwCmluZGV4IGVhNDZhNjZhODAxOTRhNjFhYTZiZGU2NWQ3OTNlMGM4MjIw
MmVjMGYuLmE1OTIwYjcyODc0NmJhNTg1ZmIwOTliZmZiNGU4M2FiNmMwNjU3MTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCkBAIC0zMSw5ICszMSwxMiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbG9ySW5wdXRUeXBlLmgiCiAKKyNpbmNsdWRlICJD
aHJvbWUuaCIKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIK
KyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC02MSw2ICs2NCwxMSBAQCBQYXNzT3duUHRyPElucHV0VHlwZT4gQ29sb3JJbnB1dFR5
cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogICAgIHJldHVybiBhZG9wdFB0
cihuZXcgQ29sb3JJbnB1dFR5cGUoZWxlbWVudCkpOwogfQogCitDb2xvcklucHV0VHlwZTo6fkNv
bG9ySW5wdXRUeXBlKCkKK3sKKyAgICBjbG9zZUNvbG9yQ2hvb3NlcklmQ3VycmVudENsaWVudCgp
OworfSAgICAKKwogYm9vbCBDb2xvcklucHV0VHlwZTo6aXNDb2xvckNvbnRyb2woKSBjb25zdAog
ewogICAgIHJldHVybiB0cnVlOwpAQCAtOTIsNiArMTAwLDE2IEBAIFN0cmluZyBDb2xvcklucHV0
VHlwZTo6c2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUpCiAgICAgcmV0
dXJuIHByb3Bvc2VkVmFsdWUubG93ZXIoKTsKIH0KIAorQ29sb3IgQ29sb3JJbnB1dFR5cGU6OnZh
bHVlQXNDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIENvbG9yKGVsZW1lbnQoKS0+dmFsdWUo
KSk7Cit9CisKK3ZvaWQgQ29sb3JJbnB1dFR5cGU6OnNldFZhbHVlQXNDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IpIGNvbnN0Cit7CisgICAgZWxlbWVudCgpLT5zZXRWYWx1ZShjb2xvci5zZXJpYWxp
emVkKCksIHRydWUpOworfQorCiB2b2lkIENvbG9ySW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0
cmVlKCkKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBlbGVtZW50KCktPmRvY3VtZW50KCk7
CkBAIC0xMTEsNiArMTI5LDU3IEBAIHZvaWQgQ29sb3JJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWUoKQogdm9pZCBDb2xvcklucHV0VHlwZTo6dmFsdWVDaGFuZ2VkKCkKIHsKICAgICB1cGRh
dGVDb2xvclN3YXRjaCgpOworICAgIGlmIChDb2xvckNob29zZXI6OmNob29zZXIoKS0+Y2xpZW50
KCkgPT0gdGhpcykgeworICAgICAgICBpZiAoQ2hyb21lKiBjaHJvbWUgPSB0aGlzLT5jaHJvbWUo
KSkKKyAgICAgICAgICAgIGNocm9tZS0+c2V0U2VsZWN0ZWRDb2xvckluQ29sb3JDaG9vc2VyKHZh
bHVlQXNDb2xvcigpKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29sb3JJbnB1dFR5cGU6OmhhbmRsZUNs
aWNrRXZlbnQoTW91c2VFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT5pc1NpbXVsYXRl
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZWxlbWVudCgpLT5kaXNhYmxlZCgpIHx8
IGVsZW1lbnQoKS0+cmVhZE9ubHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKENocm9t
ZSogY2hyb21lID0gdGhpcy0+Y2hyb21lKCkpIHsKKyAgICAgICAgQ29sb3JDaG9vc2VyOjpjaG9v
c2VyKCktPmNvbm5lY3RDbGllbnQodGhpcyk7CisgICAgICAgIGNocm9tZS0+b3BlbkNvbG9yQ2hv
b3NlcihDb2xvckNob29zZXI6OmNob29zZXIoKSwgdmFsdWVBc0NvbG9yKCkpOworICAgIH0KKyAg
ICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKK30KKwordm9pZCBDb2xvcklucHV0VHlwZTo6
aGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGVsZW1lbnQo
KS0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50KCktPnJlYWRPbmx5KCkgfHwgIWVsZW1lbnQoKS0+cmVu
ZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFTY3JpcHRDb250cm9sbGVyOjpw
cm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKENocm9t
ZSogY2hyb21lID0gdGhpcy0+Y2hyb21lKCkpIHsKKyAgICAgICAgQ29sb3JDaG9vc2VyOjpjaG9v
c2VyKCktPmNvbm5lY3RDbGllbnQodGhpcyk7CisgICAgICAgIGNocm9tZS0+b3BlbkNvbG9yQ2hv
b3NlcihDb2xvckNob29zZXI6OmNob29zZXIoKSwgdmFsdWVBc0NvbG9yKCkpOworICAgIH0KKyAg
ICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKK30KKwordm9pZCBDb2xvcklucHV0VHlwZTo6
ZGV0YWNoKCkKK3sKKyAgICBjbG9zZUNvbG9yQ2hvb3NlcklmQ3VycmVudENsaWVudCgpOworfQor
Cit2b2lkIENvbG9ySW5wdXRUeXBlOjpjb2xvclNlbGVjdGVkKGNvbnN0IENvbG9yJiBjb2xvcikK
K3sKKyAgICBpZiAoZWxlbWVudCgpLT5kaXNhYmxlZCgpIHx8IGVsZW1lbnQoKS0+cmVhZE9ubHko
KSkKKyAgICAgICAgcmV0dXJuOworICAgIHNldFZhbHVlQXNDb2xvcihjb2xvcik7Cit9CisKK2Jv
b2wgQ29sb3JJbnB1dFR5cGU6OmlzQ29sb3JJbnB1dFR5cGUoKSBjb25zdAoreworICAgIHJldHVy
biB0cnVlOwogfQogCiB2b2lkIENvbG9ySW5wdXRUeXBlOjp1cGRhdGVDb2xvclN3YXRjaCgpCkBA
IC0xMjksNiArMTk4LDE0IEBAIEhUTUxFbGVtZW50KiBDb2xvcklucHV0VHlwZTo6c2hhZG93Q29s
b3JTd2F0Y2goKSBjb25zdAogICAgIHJldHVybiBzaGFkb3cgPyB0b0hUTUxFbGVtZW50KHNoYWRv
dy0+Zmlyc3RDaGlsZCgpLT5maXJzdENoaWxkKCkpIDogMDsKIH0KIAordm9pZCBDb2xvcklucHV0
VHlwZTo6Y2xvc2VDb2xvckNob29zZXJJZkN1cnJlbnRDbGllbnQoKSBjb25zdAoreworICAgIGlm
IChDb2xvckNob29zZXI6OmNob29zZXIoKS0+Y2xpZW50KCkgIT0gdGhpcykKKyAgICAgICAgcmV0
dXJuOworICAgIGlmIChDaHJvbWUqIGNocm9tZSA9IHRoaXMtPmNocm9tZSgpKQorICAgICAgICBj
aHJvbWUtPmNsb3NlQ29sb3JDaG9vc2VyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1
dFR5cGUuaAppbmRleCBkMzQwODRmMDMwZmNkZDMzZGI2Yjc2MTRlMTdjODE4YmIzZTMyMzZkLi4z
ODg4Y2I1MjhmYTY5ZDZlMWE5YzM4NDhjZDhlODY5MzkyOTk3ZTE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9Db2xvcklucHV0VHlwZS5oCkBAIC0zMSwxNSArMzEsMTkgQEAKICNpZm5kZWYgQ29sb3JJbnB1
dFR5cGVfaAogI2RlZmluZSBDb2xvcklucHV0VHlwZV9oCiAKLSNpbmNsdWRlICJCYXNlQnV0dG9u
SW5wdXRUeXBlLmgiCisjaW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCisjaW5jbHVkZSAiSW5wdXRU
eXBlLmgiCiAKICNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgQ29sb3JJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKK2NsYXNzIENvbG9y
SW5wdXRUeXBlIDogcHVibGljIElucHV0VHlwZSwgcHVibGljIENvbG9yQ2hvb3NlckNsaWVudCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElu
cHV0RWxlbWVudCopOworICAgIHZpcnR1YWwgfkNvbG9ySW5wdXRUeXBlKCk7CisKKyAgICB2b2lk
IGNsb3NlQ29sb3JDaG9vc2VySWZDdXJyZW50Q2xpZW50KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgQ29sb3JJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkgOiBJbnB1dFR5cGUo
ZWxlbWVudCkgeyB9CkBAIC00OCw4ICs1MiwxNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgZmFsbGJhY2tW
YWx1ZSgpOwogICAgIHZpcnR1YWwgU3RyaW5nIHNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJik7
CisgICAgdmlydHVhbCBDb2xvciB2YWx1ZUFzQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0VmFsdWVBc0NvbG9yKGNvbnN0IENvbG9yJikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lk
IGNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2VkKCk7
CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUNsaWNrRXZlbnQoTW91c2VFdmVudCopOworICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50Kik7CisgICAgdmlydHVhbCB2
b2lkIGRldGFjaCgpOworCisgICAgLy8gQ29sb3JDaG9vc2VyQ2xpZW50IGltcGxlbWVudGF0aW9u
LgorICAgIHZpcnR1YWwgdm9pZCBjb2xvclNlbGVjdGVkKGNvbnN0IENvbG9yJik7CisgICAgdmly
dHVhbCBib29sIGlzQ29sb3JJbnB1dFR5cGUoKSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlQ29s
b3JTd2F0Y2goKTsKICAgICBIVE1MRWxlbWVudCogc2hhZG93Q29sb3JTd2F0Y2goKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDVmMjI0ZTczNWEzNDY5ZTI5
N2JkZGJiODRkMTFkM2UyM2I3MmE2ZjMuLjVkNWNhMzlmYTdhYTg4MmFhMTQ3Y2M5MTA5YjAyNDEx
YzNjOTc0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMzMsNyAr
MzMsNiBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkljb24uaCIKICNpbmNs
dWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJl
bmRlckZpbGVVcGxvYWRDb250cm9sLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgog
I2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKQEAgLTMzMywxMyArMzMyLDYgQEAgdm9pZCBGaWxlSW5w
dXRUeXBlOjp1cGRhdGVSZW5kZXJpbmcoUGFzc1JlZlB0cjxJY29uPiBpY29uKQogICAgICAgICBl
bGVtZW50KCktPnJlbmRlcmVyKCktPnJlcGFpbnQoKTsKIH0KIAotQ2hyb21lKiBGaWxlSW5wdXRU
eXBlOjpjaHJvbWUoKSBjb25zdAotewotICAgIGlmIChQYWdlKiBwYWdlID0gZWxlbWVudCgpLT5k
b2N1bWVudCgpLT5wYWdlKCkpCi0gICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKTsKLSAgICBy
ZXR1cm4gMDsKLX0KLQogdm9pZCBGaWxlSW5wdXRUeXBlOjpyZWNlaXZlRHJvcHBlZEZpbGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKIHsKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dCA9IGVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKaW5kZXggYWFjYmQy
MTk0MTgxZGZiNWM0ZjMxYTg0ZTM3OGNiYjY2MDUxY2FkYi4uOWVhYTcyZTNhMjg3YzEzNDAyNjFj
MDEyODA0YjdkOWU4ZWY4MDdmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxl
SW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKQEAg
LTM5LDcgKzM5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDaHJvbWU7CiBj
bGFzcyBGaWxlTGlzdDsKIAogY2xhc3MgRmlsZUlucHV0VHlwZSA6IHB1YmxpYyBCYXNlQnV0dG9u
SW5wdXRUeXBlLCBwcml2YXRlIEZpbGVDaG9vc2VyQ2xpZW50LCBwcml2YXRlIEZpbGVJY29uTG9h
ZGVyQ2xpZW50IHsKQEAgLTc3LDcgKzc2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY2VpdmVE
cm9wRm9yRGlyZWN0b3J5VXBsb2FkKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAjZW5kaWYKICAg
ICB2b2lkIHJlcXVlc3RJY29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7Ci0gICAgQ2hyb21lKiBj
aHJvbWUoKSBjb25zdDsKIAogICAgIFJlZlB0cjxGaWxlTGlzdD4gbV9maWxlTGlzdDsKICAgICBS
ZWZQdHI8SWNvbj4gbV9pY29uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKaW5kZXggYjY4M2Q0M2VhYWZlMDA5YjkzMWJjYTM1ZTA1YzFkN2RkZWU5NWI1ZS4uMzI0YjUx
ZGFlYzM0YjMyYTc5M2Q0Y2FlZjQ4MTU5Mjc2Yzk0OWNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC04ODMsNiArODgzLDcgQEAgdm9pZCBIVE1MSW5wdXRF
bGVtZW50OjpkZXRhY2goKQogewogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkZXRh
Y2goKTsKICAgICBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKGZhbHNlKTsKKyAg
ICBtX2lucHV0VHlwZS0+ZGV0YWNoKCk7CiB9CiAKIFN0cmluZyBIVE1MSW5wdXRFbGVtZW50Ojph
bHRUZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCA2MDkyNDYwYTAw
NzhmZTI1MzBkZTY0MTdjODdhMTQwMGY5NGVmZTUwLi42YzM0ZGM0Njg5MjM3ODJhNDM3OTg4OGJh
ZmMxMjdlZGYxNGQ0OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC00OCw2ICs0
OCw3IEBACiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1vbnRoSW5w
dXRUeXBlLmgiCiAjaW5jbHVkZSAiTnVtYmVySW5wdXRUeXBlLmgiCisjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlBhc3N3b3JkSW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiUmFkaW9JbnB1dFR5
cGUuaCIKICNpbmNsdWRlICJSYW5nZUlucHV0VHlwZS5oIgpAQCAtMzk1LDYgKzM5NiwxMyBAQCB2
b2lkIElucHV0VHlwZTo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGlja0lmQWN0aXZlKEtleWJvYXJkRXZl
bnQqIGV2ZW50KSBjb25zdAogICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCitD
aHJvbWUqIElucHV0VHlwZTo6Y2hyb21lKCkgY29uc3QKK3sKKyAgICBpZiAoUGFnZSogcGFnZSA9
IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICByZXR1cm4gcGFnZS0+Y2hy
b21lKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgSW5wdXRUeXBlOjpjYW5TZXRTdHJpbmdW
YWx1ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7CkBAIC00MjMsNiArNDMxLDEwIEBAIHZv
aWQgSW5wdXRUeXBlOjphdHRhY2goKQogewogfQogCit2b2lkIElucHV0VHlwZTo6ZGV0YWNoKCkK
K3sKK30KKwogdm9pZCBJbnB1dFR5cGU6OmFsdEF0dHJpYnV0ZUNoYW5nZWQoKQogewogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggMmRmMGVmNWI4Zjk1ODhkMzJhZTcyZmI2MzJjMjI0Yjdi
Y2JmNDY0MS4uNTExZjk1YjkxYmNmNDZjODA4ZDg5NmRkM2Y1NzEzMzgzNWQ1NDIzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5oCkBAIC00MSw2ICs0MSw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50OworY2xhc3MgQ2hyb21lOworY2xhc3Mg
Q29sb3I7CiBjbGFzcyBEYXRlQ29tcG9uZW50czsKIGNsYXNzIEV2ZW50OwogY2xhc3MgRmlsZUxp
c3Q7CkBAIC05MSw3ICs5Myw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShJTlBVVF9DT0xPUikK
ICAgICB2aXJ0dWFsIGJvb2wgaXNDb2xvckNvbnRyb2woKSBjb25zdDsKLSNlbmRpZiAvLyBFTkFC
TEUoSU5QVVRfQ09MT1IpCisjZW5kaWYKICAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2JveCgpIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0VtYWlsRmllbGQoKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNGaWxlVXBsb2FkKCkgY29uc3Q7CkBAIC0yMDUsNiArMjA3LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKCk7CiAgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CisgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBtaW5Pck1heEF0dHJpYnV0ZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgYWx0QXR0cmlidXRlQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBzcmNBdHRyaWJ1
dGVDaGFuZ2VkKCk7CkBAIC0yNjAsNiArMjYzLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlz
cGF0Y2hTaW11bGF0ZWRDbGlja0lmQWN0aXZlKEtleWJvYXJkRXZlbnQqKSBjb25zdDsKICAgICAv
LyBXZSBjYW4ndCBtYWtlIHRoaXMgYSBzdGF0aWMgY29uc3QgZGF0YSBtZW1iZXIgYmVjYXVzZSBW
QysrIGRvZXNuJ3QgbGlrZSBpdC4KICAgICBzdGF0aWMgZG91YmxlIGRlZmF1bHRTdGVwQmFzZSgp
IHsgcmV0dXJuIDAuMDsgfQorICAgIENocm9tZSogY2hyb21lKCkgY29uc3Q7CiAKIHByaXZhdGU6
CiAgICAgLy8gUmF3IHBvaW50ZXIgYmVjYXVzZSB0aGUgSFRNTElucHV0RWxlbWVudCBvYmplY3Qg
b3ducyB0aGlzIElucHV0VHlwZSBvYmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmgKaW5kZXggZDAxNWNlMDM5NTkzZWVlODgwM2IyMDA5YTA4NjgzM2Q5NzBhZDgyZS4uYWM0MzBh
NTdiYTkxZGZhMWNmMTg3MGJjY2I0MDU3ZjRlODZkMDA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaApAQCAtMTk1LDYgKzE5NSwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGVudW1lcmF0ZUNob3NlbkRpcmVjdG9yeShGaWxlQ2hvb3NlciopIHsgfQogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCisgICAgdm9pZCBvcGVuQ29sb3JDaG9vc2VyKENvbG9y
Q2hvb3NlciosIGNvbnN0IENvbG9yJikgeyB9CisgICAgdm9pZCBjbG9zZUNvbG9yQ2hvb3Nlcigp
IHsgfQorICAgIHZvaWQgc2V0U2VsZWN0ZWRDb2xvckluQ29sb3JDaG9vc2VyKGNvbnN0IENvbG9y
JikgeyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQ
YXNzUmVmUHRyPEZpbGVDaG9vc2VyPikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRm9y
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlSWNvbkxvYWRlciopIHsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA2YTQ5ZTQ2NzYxNmE0NjMxMzcyM2Jh
NThhMTM2NzAxNTE5Zjg2NDBlLi4zMzAxYzY1ZTQ0ZDEwMmVhNzg3ZTZhZjQxZThhYWJjNDdkY2Ew
MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTEwMCw2ICsxMDAs
MTEgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCisjaW5jbHVkZSAiQ29sb3JD
aG9vc2VyLmgiCisjaW5jbHVkZSAiQ29sb3JJbnB1dFR5cGUuaCIKKyNlbmRpZgorCiAjaWYgRU5B
QkxFKFNIQVJFRF9XT1JLRVJTKQogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCIK
ICNlbmRpZgpAQCAtMTgxNiw2ICsxODIxLDEyIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnRyYW5zaXRp
b25Ub0NvbW1pdHRlZChQYXNzUmVmUHRyPENhY2hlZFBhZ2U+IGNhY2hlZFBhZ2UpCiAgICAgaWYg
KG1fZnJhbWUtPnZpZXcoKSkKICAgICAgICAgbV9mcmFtZS0+dmlldygpLT5zY3JvbGxBbmltYXRv
cigpLT5jYW5jZWxBbmltYXRpb25zKCk7CiAKKyNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCisgICAg
Q29sb3JDaG9vc2VyQ2xpZW50KiBjb2xvckNob29zZXJDbGllbnQgPSBDb2xvckNob29zZXI6OmNo
b29zZXIoKS0+Y2xpZW50KCk7CisgICAgaWYgKGNvbG9yQ2hvb3NlckNsaWVudCAmJiBjb2xvckNo
b29zZXJDbGllbnQtPmlzQ29sb3JJbnB1dFR5cGUoKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8Q29s
b3JJbnB1dFR5cGUqPihjb2xvckNob29zZXJDbGllbnQpLT5jbG9zZUNvbG9yQ2hvb3NlcklmQ3Vy
cmVudENsaWVudCgpOworI2VuZGlmCisKICAgICBtX2NsaWVudC0+c2V0Q29waWVzT25TY3JvbGwo
KTsKICAgICBoaXN0b3J5KCktPnVwZGF0ZUZvckNvbW1pdCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAKaW5kZXggNDg0Y2E4MTNmNjlkNmZiMDAwZDM3NGNiMGQxMzllZDY4ZWE4MGExNy4uNWM3Y2Ix
NDQ1YWM1MjJjMzQ0NWNhMzEwMThmMjRiZGI3ODkzMGI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cApAQCAtNTIsNiArNTIsMTAgQEAKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCiAjZW5k
aWYKIAorI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKKyNpbmNsdWRlICJDb2xvckNob29zZXIuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CkBAIC00NjcsNiArNDcxLDIzIEBAIHZvaWQgQ2hyb21lOjplbnVtZXJhdGVDaG9zZW5EaXJl
Y3RvcnkoRmlsZUNob29zZXIqIGZpbGVDaG9vc2VyKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
SU5QVVRfQ09MT1IpCit2b2lkIENocm9tZTo6b3BlbkNvbG9yQ2hvb3NlcihDb2xvckNob29zZXIq
IGNvbG9yQ2hvb3NlciwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvcikKK3sKKyAgICBtX2NsaWVu
dC0+b3BlbkNvbG9yQ2hvb3Nlcihjb2xvckNob29zZXIsIGluaXRpYWxDb2xvcik7Cit9CisKK3Zv
aWQgQ2hyb21lOjpjbG9zZUNvbG9yQ2hvb3NlcigpCit7CisgICAgbV9jbGllbnQtPmNsb3NlQ29s
b3JDaG9vc2VyKCk7Cit9CisKK3ZvaWQgQ2hyb21lOjpzZXRTZWxlY3RlZENvbG9ySW5Db2xvckNo
b29zZXIoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIG1fY2xpZW50LT5zZXRTZWxlY3RlZENv
bG9ySW5Db2xvckNob29zZXIoY29sb3IpOworfQorI2VuZGlmCisKIHZvaWQgQ2hyb21lOjpydW5P
cGVuUGFuZWwoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBmaWxlQ2hvb3Nl
cikKIHsKICAgICBtX2NsaWVudC0+cnVuT3BlblBhbmVsKGZyYW1lLCBmaWxlQ2hvb3Nlcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuaAppbmRleCAxMmI5ZjU0NjdjZGI4Y2RiMTA3MDRhZGVkYzcwYzhlNjdjMTFk
N2MxLi4yZWQ2ZTcyMjY3OTljYWJkYmVkYjM3YTlkNmRiYzk5YTE5NzA4N2VmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmgKQEAgLTM2LDYgKzM2LDkgQEAgY2xhc3MgTlNWaWV3OwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgY2xhc3MgQ2hyb21lQ2xpZW50OworI2lmIEVOQUJMRShJTlBVVF9DT0xPUikK
KyAgICBjbGFzcyBDb2xvckNob29zZXI7CisjZW5kaWYKICAgICBjbGFzcyBGaWxlQ2hvb3NlcjsK
ICAgICBjbGFzcyBGaWxlSWNvbkxvYWRlcjsKICAgICBjbGFzcyBGbG9hdFJlY3Q7CkBAIC0xNTQs
NiArMTU3LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCByZXF1ZXN0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqLCBHZW9sb2NhdGlvbiopOwogICAgICAg
ICB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShGcmFtZSos
IEdlb2xvY2F0aW9uKik7CiAKKyNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCisgICAgICAgIHZvaWQg
b3BlbkNvbG9yQ2hvb3NlcihDb2xvckNob29zZXIqLCBjb25zdCBDb2xvciYpOworICAgICAgICB2
b2lkIGNsb3NlQ29sb3JDaG9vc2VyKCk7CisgICAgICAgIHZvaWQgc2V0U2VsZWN0ZWRDb2xvcklu
Q29sb3JDaG9vc2VyKGNvbnN0IENvbG9yJik7CisjZW5kaWYKKwogICAgICAgICB2b2lkIHJ1bk9w
ZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKICAgICAgICAgdm9pZCBs
b2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUljb25Mb2FkZXIqKTsK
ICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
CmluZGV4IGQ1ZTZkN2I2M2QxYTUwYTgyZjRmMmZkOTlkNzhjMzZmMmViYTRmOGEuLjE3Zjc5MDZh
OGU0Njk0NzU0MDhiNDJhNTY1ZWQ1ZmM5OTY2Yzk1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaApAQCAtNzEsNiArNzEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IEdyYXBoaWNzTGF5ZXI7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKKyAgICBj
bGFzcyBDb2xvckNob29zZXI7CisjZW5kaWYKKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQog
ICAgIGNsYXNzIE5vdGlmaWNhdGlvblByZXNlbnRlcjsKICNlbmRpZgpAQCAtMjMxLDYgKzIzNSwx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqLCBHZW9sb2NhdGlvbiopID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JG
cmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKikgPSAwOwogCisjaWYgRU5BQkxFKElOUFVUX0NPTE9S
KQorICAgICAgICB2aXJ0dWFsIHZvaWQgb3BlbkNvbG9yQ2hvb3NlcihDb2xvckNob29zZXIqLCBj
b25zdCBDb2xvciYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNsb3NlQ29sb3JDaG9vc2Vy
KCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRDb2xvckluQ29sb3JDaG9v
c2VyKGNvbnN0IENvbG9yJikgPSAwOworI2VuZGlmCisKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1
bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSA9IDA7CiAgICAgICAg
IC8vIEFzeW5jaHJvbm91cyByZXF1ZXN0IHRvIGxvYWQgYW4gaWNvbiBmb3Igc3BlY2lmaWVkIGZp
bGVuYW1lcy4KICAgICAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBGaWxlSWNvbkxvYWRlciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0NvbG9yQ2hvb3Nlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Db2xvckNob29zZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjYjk5ZjAxYzNjMGM1YmMyZGNkODhmY2Fi
MzQ1Y2FlZTgyMjczY2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Db2xvckNob29zZXIuY3BwCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
IAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
IAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KKworI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitDb2xvckNob29zZXJDbGllbnQ6On5Db2xvckNob29zZXJDbGllbnQoKQoreworICAgIENv
bG9yQ2hvb3Nlcjo6Y2hvb3NlcigpLT5kaXNjb25uZWN0Q2xpZW50KHRoaXMpOworfQorCitzdGF0
aWMgQ29sb3JDaG9vc2VyKiBzdGF0aWNDaG9vc2VyID0gMDsKKworQ29sb3JDaG9vc2VyKiBDb2xv
ckNob29zZXI6OmNob29zZXIoKQoreworICAgIGlmICghc3RhdGljQ2hvb3NlcikKKyAgICAgICAg
c3RhdGljQ2hvb3NlciA9IGFkb3B0UHRyKG5ldyBDb2xvckNob29zZXIoKSkubGVha1B0cigpOwor
ICAgIHJldHVybiBzdGF0aWNDaG9vc2VyOworfQorCit2b2lkIENvbG9yQ2hvb3Nlcjo6Y29ubmVj
dENsaWVudChDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBpZiAoY2xpZW50ICE9
IG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudCA9IGNsaWVudDsKK30KKwordm9pZCBDb2xvckNo
b29zZXI6OmRpc2Nvbm5lY3RDbGllbnQoQ29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQpCit7Cisg
ICAgaWYgKGNsaWVudCA9PSBtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQgPSAwOworfQorCit2
b2lkIENvbG9yQ2hvb3Nlcjo6Y29sb3JTZWxlY3RlZChjb25zdCBDb2xvciYgY29sb3IpIGNvbnN0
Cit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+Y29sb3JTZWxlY3RlZChj
b2xvcik7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9DT0xPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbG9yQ2hvb3Nlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29sb3JDaG9vc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc2MzVjZWFjNWQxYTI3MWRk
YTg0MjBkZjhiNDZlOTk4MGQzMjE5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NvbG9yQ2hvb3Nlci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRl
ZiBDb2xvckNob29zZXJfaAorI2RlZmluZSBDb2xvckNob29zZXJfaAorCisjaW5jbHVkZSAiQ29s
b3IuaCIKKworI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBDb2xvckNob29zZXI7CisKK2NsYXNzIENvbG9yQ2hvb3NlckNsaWVudCB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+Q29sb3JDaG9vc2VyQ2xpZW50KCk7CisgICAgdmlydHVhbCB2b2lk
IGNvbG9yU2VsZWN0ZWQoY29uc3QgQ29sb3ImKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQ29s
b3JJbnB1dFR5cGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorfTsKKworY2xhc3MgQ29sb3JD
aG9vc2VyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgQ29sb3JDaG9vc2VyKiBjaG9vc2VyKCk7CisK
KyAgICBDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50
OyB9OworICAgIHZvaWQgY29ubmVjdENsaWVudChDb2xvckNob29zZXJDbGllbnQqKTsKKyAgICB2
b2lkIGRpc2Nvbm5lY3RDbGllbnQoQ29sb3JDaG9vc2VyQ2xpZW50Kik7CisKKyAgICB2b2lkIGNv
bG9yU2VsZWN0ZWQoY29uc3QgQ29sb3ImKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBDb2xvckNo
b29zZXIoKQorICAgICAgICA6IG1fY2xpZW50KDApCisgICAgeyB9CisKKyAgICBDb2xvckNob29z
ZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKElOUFVUX0NPTE9SKQorCisjZW5kaWYgLy8gQ29sb3JDaG9vc2VyX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>