<?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>95681</bug_id>
          
          <creation_ts>2012-09-03 05:21:28 -0700</creation_ts>
          <short_desc>Move PagePopupClient implementation for input[type=date] to Chromium WebKit layer</short_desc>
          <delta_ts>2012-09-04 23:35:22 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keishi Hattori">keishi</reporter>
          <assigned_to name="Keishi Hattori">keishi</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>japhet</cc>
    
    <cc>peter+ews</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>710557</commentid>
    <comment_count>0</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-09-03 05:21:28 -0700</bug_when>
    <thetext>We want to move PagePopupClient to WebKit layer where it is more approprate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710578</commentid>
    <comment_count>1</comment_count>
      <attachid>161910</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-09-03 06:00:52 -0700</bug_when>
    <thetext>Created attachment 161910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710582</commentid>
    <comment_count>2</comment_count>
      <attachid>161910</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-03 06:07:31 -0700</bug_when>
    <thetext>Comment on attachment 161910
Patch

Attachment 161910 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13734449</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710590</commentid>
    <comment_count>3</comment_count>
      <attachid>161914</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-09-03 06:16:50 -0700</bug_when>
    <thetext>Created attachment 161914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710610</commentid>
    <comment_count>4</comment_count>
      <attachid>161914</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-03 06:48:10 -0700</bug_when>
    <thetext>Comment on attachment 161914
Patch

Attachment 161914 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13742139</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710622</commentid>
    <comment_count>5</comment_count>
      <attachid>161921</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-09-03 07:01:43 -0700</bug_when>
    <thetext>Created attachment 161921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710641</commentid>
    <comment_count>6</comment_count>
      <attachid>161921</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-03 07:30:52 -0700</bug_when>
    <thetext>Comment on attachment 161921
Patch

Attachment 161921 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13729878</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710667</commentid>
    <comment_count>7</comment_count>
      <attachid>161921</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-03 08:18:57 -0700</bug_when>
    <thetext>Comment on attachment 161921
Patch

Attachment 161921 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13742165</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710750</commentid>
    <comment_count>8</comment_count>
      <attachid>161945</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-09-03 14:10:18 -0700</bug_when>
    <thetext>Created attachment 161945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710752</commentid>
    <comment_count>9</comment_count>
      <attachid>161945</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-03 14:42:46 -0700</bug_when>
    <thetext>Comment on attachment 161945
Patch

Attachment 161945 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13754163</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710756</commentid>
    <comment_count>10</comment_count>
      <attachid>161946</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-09-03 15:49:00 -0700</bug_when>
    <thetext>Created attachment 161946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710771</commentid>
    <comment_count>11</comment_count>
      <attachid>161946</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-03 18:08:47 -0700</bug_when>
    <thetext>Comment on attachment 161946
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Move PagePopupClient to WebKit layer and introduce ValuePicker that will
&gt; +        be shared with the various pickers in the future.

Would you explain your plan in detail please?
Will you merge ColorChooser interfaces to ValuePicker?
Will you add ChromeClient::openWeekPickerPopup() and openMonthPickerPopup()?

&gt; Source/WebCore/page/Chrome.cpp:462
&gt; +PassOwnPtr&lt;ValuePicker&gt; Chrome::openCalendarPickerPopup(ValuePickerClient* client)
&gt; +{
&gt; +    return m_client-&gt;openCalendarPickerPopup(client);
&gt; +}

This function is just calling ChromeClient.  You should remove Chrome::openCalendarPickerPopup(), and use ChromeClient::openCalendarPickerPopup() directly.

&gt; Source/WebCore/platform/ValuePicker.h:40
&gt; +class ValuePicker {

The name should be FooChooser in order to follow existing interfaces.
StringValueChooser, DateTimeChooser, etc.

&gt; Source/WebCore/platform/ValuePickerClient.h:45
&gt; +    virtual IntRect elementRectRelativeToRootView() const = 0;

Using the word &apos;element&apos; is not good for platform/ code.  I think &apos;anchorRectInRootView&apos; is better.

&gt; Source/WebCore/platform/ValuePickerClient.h:61
&gt; +    // Returns true if we should show suggestions to the user.
&gt; +    virtual bool shouldShowSuggestions() const = 0;
&gt; +    // Returns the list of suggestion values.
&gt; +    virtual Vector&lt;String&gt; suggestionValues() const = 0;
&gt; +    // Returns the list of suggestion labels.
&gt; +    virtual Vector&lt;String&gt; suggestionLabels() const = 0;
&gt; +    // Returns the minimum pickable value.
&gt; +    virtual double minimumValue() const = 0;
&gt; +    // Returns the maximum pickable value.
&gt; +    virtual double maximumValue() const = 0;
&gt; +    // Returns the value step size.
&gt; +    virtual double valueStep() const = 0;
&gt; +    // Returns if the value is required.
&gt; +    virtual bool valueRequired() const = 0;

ValuePicker needs many arguments, and specifying them by virtual functions is not elegant.
We had better introduce a parameter struct like ValuePickerParameters or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710979</commentid>
    <comment_count>12</comment_count>
      <attachid>162011</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-09-04 04:43:29 -0700</bug_when>
    <thetext>Created attachment 162011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711007</commentid>
    <comment_count>13</comment_count>
      <attachid>162011</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-04 05:19:05 -0700</bug_when>
    <thetext>Comment on attachment 162011
Patch

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

&gt; Source/WebCore/platform/DateTimeChooserClient.h:53
&gt; +    // Returns the rect for the element that originated the picker.
&gt; +    virtual IntRect anchorRectInRootView() const = 0;
&gt; +    // Returns the current value which should be shown in the color picker.
&gt; +    virtual String currentValue() = 0;
&gt; +    // Returns true if we should show suggestions to the user.
&gt; +    virtual bool shouldShowSuggestions() const = 0;
&gt; +    // Returns the list of suggestion values.
&gt; +    virtual Vector&lt;String&gt; suggestionValues() const = 0;
&gt; +    // Returns the list of suggestion labels.
&gt; +    virtual Vector&lt;String&gt; suggestionLabels() const = 0;

We can move them to DateTimeChooserParameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711009</commentid>
    <comment_count>14</comment_count>
      <attachid>162011</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-04 05:21:52 -0700</bug_when>
    <thetext>Comment on attachment 162011
Patch

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

&gt; Source/WebCore/page/ChromeClient.h:232
&gt; +        virtual PassOwnPtr&lt;DateTimeChooser&gt; openCalendarPickerPopup(DateTimeChooserClient*, const DateTimeChooserParameters&amp;) = 0;

We can make it more generic.
e.g. 
 - Adding &apos;type&apos; member to DateTimeChooserParameters, and 
 - openDateTimeChooser(DateTimeChooserClient*, const DateTimeChooserParameters&amp;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711638</commentid>
    <comment_count>15</comment_count>
      <attachid>162011</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-04 18:25:19 -0700</bug_when>
    <thetext>Comment on attachment 162011
Patch

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

&gt; Source/WebKit/chromium/ChangeLog:59
&gt; +2012-09-04  Keishi Hattori  &lt;keishi@webkit.org&gt;
&gt; +
&gt; +        Move PagePopupClient to WebKit layer
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=95681
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        * WebKit.gyp:
&gt; +        * src/CalendarPickerPopup.cpp: Added.
&gt; +        (WebKit):
&gt; +        (WebKit::CalendarPickerPopup::CalendarPickerPopup):
&gt; +        (WebKit::CalendarPickerPopup::~CalendarPickerPopup):
&gt; +        (WebKit::CalendarPickerPopup::endChooser):
&gt; +        (WebKit::CalendarPickerPopup::contentSize):
&gt; +        (WebKit::CalendarPickerPopup::writeDocument):
&gt; +        (WebKit::CalendarPickerPopup::setValueAndClosePopup):
&gt; +        (WebKit::CalendarPickerPopup::didClosePopup):
&gt; +        * src/CalendarPickerPopup.h: Copied from Source/WebCore/html/shadow/CalendarPickerElement.h.
&gt; +        (WebCore):
&gt; +        (WebKit):
&gt; +        (CalendarPickerPopup):
&gt; +        * src/ChromeClientImpl.cpp:
&gt; +        (WebKit):
&gt; +        (WebKit::ChromeClientImpl::openCalendarPickerPopup):
&gt; +        * src/ChromeClientImpl.h:
&gt; +        (WebCore):
&gt; +        (ChromeClientImpl):
&gt; +
&gt; +2012-09-04  Keishi Hattori  &lt;keishi@webkit.org&gt;
&gt; +
&gt; +        Move PagePopupClient to WebKit layer
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=95681
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).
&gt; +
&gt; +        * WebKit.gyp:
&gt; +        * src/CalendarPickerPopup.cpp: Added.
&gt; +        (WebKit):
&gt; +        (WebKit::CalendarPickerPopup::CalendarPickerPopup):
&gt; +        (WebKit::CalendarPickerPopup::~CalendarPickerPopup):
&gt; +        (WebKit::CalendarPickerPopup::endChooser):
&gt; +        (WebKit::CalendarPickerPopup::contentSize):
&gt; +        (WebKit::CalendarPickerPopup::writeDocument):
&gt; +        (WebKit::CalendarPickerPopup::setValueAndClosePopup):
&gt; +        (WebKit::CalendarPickerPopup::didClosePopup):
&gt; +        * src/CalendarPickerPopup.h: Copied from Source/WebCore/html/shadow/CalendarPickerElement.h.
&gt; +        (WebCore):
&gt; +        (WebKit):
&gt; +        (CalendarPickerPopup):
&gt; +        * src/ChromeClientImpl.cpp:
&gt; +        (WebKit):
&gt; +        (WebKit::ChromeClientImpl::openCalendarPickerPopup):
&gt; +        * src/ChromeClientImpl.h:
&gt; +        (WebCore):
&gt; +        (ChromeClientImpl):
&gt; +
&gt; +2012-09-04  Keishi Hattori  &lt;keishi@webkit.org&gt;

Three Change entries

&gt; Source/WebCore/WebCore.exp.in:2574
&gt; -#endif
&gt; +#endif

Unrelated change

&gt; Source/WebCore/html/shadow/CalendarPickerElement.h:71
&gt; +    OwnPtr&lt;DateTimeChooser&gt; m_picker;

m_chooser is a better name.

&gt; Source/WebKit/chromium/src/CalendarPickerPopup.h:48
&gt; +class CalendarPickerPopup : public WebCore::DateTimeChooser, public WebCore::PagePopupClient {

DateTiemChooserImpl might be a better class name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711684</commentid>
    <comment_count>16</comment_count>
      <attachid>162152</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-09-04 20:35:15 -0700</bug_when>
    <thetext>Created attachment 162152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711692</commentid>
    <comment_count>17</comment_count>
      <attachid>162152</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-04 20:55:20 -0700</bug_when>
    <thetext>Comment on attachment 162152
Patch

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

&gt; Source/WebCore/ChangeLog:19
&gt; +        (WebCore::CalendarPickerElement::hostInput): Made const.

why?

&gt; Source/WebCore/ChangeLog:36
&gt; +        (WebCore::PagePopupClient::addProperty): Adds double value property to JSON.

why?

&gt; Source/WebCore/html/shadow/CalendarPickerElement.cpp:144
&gt; +    parameters.suggestionValues = Vector&lt;String&gt;();
&gt; +    parameters.suggestionLabels = Vector&lt;String&gt;();

nit: You don&apos;t need to set empty vectors.
Anyway,  we had better have a FIXME comment here about &lt;datalist&gt; support.

&gt; Source/WebCore/html/shadow/CalendarPickerElement.h:54
&gt; +    // ColorChooserClient implementation.

ColorChooserClient -&gt; DateTimeChooserClient

&gt; Source/WebCore/loader/EmptyClients.cpp:44
&gt; +#if ENABLE(CALENDAR_PICKER)
&gt; +#include &quot;DateTimeChooser.h&quot;
&gt; +#endif

We don&apos;t need such ugly #if-#endif If the content of DateTimeChooser.h is wrapped by #if-#endif.

&gt; Source/WebCore/page/ChromeClient.h:85
&gt; +#if ENABLE(CALENDAR_PICKER)    

You don&apos;t need #if-#endif here.  Class declarations are harmless.

&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:44
&gt; +#if ENABLE(CALENDAR_PICKER)
&gt; +#include &quot;DateTimeChooserImpl.h&quot;
&gt; +#endif

#if-#endif is not needed because  the content of DateTiemChooserImpl.h is wrapped with #if-#endif.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711708</commentid>
    <comment_count>18</comment_count>
      <attachid>162157</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-09-04 21:41:43 -0700</bug_when>
    <thetext>Created attachment 162157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711714</commentid>
    <comment_count>19</comment_count>
      <attachid>162157</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-04 21:55:40 -0700</bug_when>
    <thetext>Comment on attachment 162157
Patch

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

&gt; Source/WebCore/ChangeLog:38
&gt; +        * page/PagePopupClient.cpp:
&gt; +        (WebCore::PagePopupClient::addProperty): Adds double value property to JSON.
&gt; +        (WebCore):
&gt; +        * page/PagePopupClient.h:
&gt; +        (PagePopupClient):

out-of-sync.

&gt; Source/WebKit/chromium/src/DateTimeChooserImpl.cpp:103
&gt; +    WebCore::PagePopupClient::addProperty(&quot;todayLabel&quot;, Platform::current()-&gt;queryLocalizedString(WebLocalizedString::CalendarToday), writer);
&gt; +    WebCore::PagePopupClient::addProperty(&quot;clearLabel&quot;, Platform::current()-&gt;queryLocalizedString(WebLocalizedString::CalendarClear), writer);

Is WebCore::PagePopupClient:: needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711733</commentid>
    <comment_count>20</comment_count>
      <attachid>162161</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-09-04 22:46:17 -0700</bug_when>
    <thetext>Created attachment 162161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711741</commentid>
    <comment_count>21</comment_count>
      <attachid>162161</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-04 22:57:15 -0700</bug_when>
    <thetext>Comment on attachment 162161
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711758</commentid>
    <comment_count>22</comment_count>
      <attachid>162161</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-04 23:35:18 -0700</bug_when>
    <thetext>Comment on attachment 162161
Patch

Clearing flags on attachment: 162161

Committed r127558: &lt;http://trac.webkit.org/changeset/127558&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711759</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-04 23:35:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161910</attachid>
            <date>2012-09-03 06:00:52 -0700</date>
            <delta_ts>2012-09-03 06:16:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95681-20120903220036.patch</filename>
            <type>text/plain</type>
            <size>28227</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFhNDk1YjFjMzY3Y2Fi
MjMyODdlY2IxMDVlMzYzMTQ0ZGJjMDhhMi4uNjY5MmRmZWEwZmFlYjNjZWIyODZjZTBlMTBhOGVm
YjhlZTQ5ZWE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTA5LTAzICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgUGFnZVBvcHVw
Q2xpZW50IHRvIFdlYktpdCBsYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTU2ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZlIFBhZ2VQb3B1cENsaWVudCB0byBXZWJLaXQgbGF5ZXIgYW5kIGlu
dHJvZHVjZSBWYWx1ZVBpY2tlciB0aGF0IHdpbGwKKyAgICAgICAgYmUgc2hhcmVkIHdpdGggdGhl
IHZhcmlvdXMgcGlja2VycyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4g
Q292ZXJlZCBieSBleGlzdGluZyBjYWxlbmRhciBwaWNrZXIgdGVzdHMuCisKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6Q2FsZW5kYXJQ
aWNrZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6
fkNhbGVuZGFyUGlja2VyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6Omhvc3RJbnB1dCk6IENoYW5nZWQgdG8gY29uc3QuCisgICAgICAgIChXZWJDb3Jl
OjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRpZFBpY2tWYWx1ZSk6IENhbGxlZCB3aGVuIHVzZXIg
cGlja2VkIGEgY29sb3IgaW4gdGhlIHZhbHVlIHBpY2tlci4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50OjpkaWRFbmRQaWNrZXIpOiBD
YWxsZWQgd2hlbiBwaWNrZXIgZW5kZWQuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6OmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KTogUmV0dXJucyByZWN0IG9m
IGlucHV0IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6
OmN1cnJlbnRWYWx1ZSk6IFJldHVybiBjdXJyZW50IHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6
Q2FsZW5kYXJQaWNrZXJFbGVtZW50OjpzaG91bGRTaG93U3VnZ2VzdGlvbnMpOiBSZXR1cm5zIGZh
bHNlIGZvciBub3cuIFdpbGwgcmV0dXJuIHRydWUgd2hlbiB3ZSBpbXBsZW1lbnQgdGhlIHN1Z2dl
c3Rpb24gcGlja2VyLgorICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpz
dWdnZXN0aW9uVmFsdWVzKTogUmV0dXJucyBlbXB0eSB2ZWN0b3IgZm9yIG5vdy4KKyAgICAgICAg
KFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6c3VnZ2VzdGlvbkxhYmVscyk6IFJldHVy
bnMgZW1wdHkgdmVjdG9yIGZvciBub3cuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6Om1pbmltdW1WYWx1ZSk6IFJldHVybnMgdGhlIG1pbmltdW0gdmFsdWUgdGhhdCBz
aG91bGQgYmUgcGlja2FibGUgaW4gdGhlIHBpY2tlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhbGVu
ZGFyUGlja2VyRWxlbWVudDo6bWF4aW11bVZhbHVlKTogUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1
ZSB0aGF0IHNob3VsZCBiZSBwaWNrYWJsZSBpbiB0aGUgcGlja2VyLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50Ojp2YWx1ZVN0ZXApOiBSZXR1cm5zIHRoZSB2YWx1ZSBz
dGVwIHNpemUuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OnZhbHVl
UmVxdWlyZWQpOiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IGEgdmFsdWUgaXMgcmVxdWlyZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6Om9wZW5Qb3B1cCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmNsb3NlUG9wdXApOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5oOgorICAgICAgICAoQ2FsZW5k
YXJQaWNrZXJFbGVtZW50KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6Om9w
ZW5DYWxlbmRhclBpY2tlclBvcHVwKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6
CisgICAgICAgIChFbXB0eUNocm9tZUNsaWVudCk6CisgICAgICAgICogcGFnZS9DaHJvbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6Om9wZW5DYWxl
bmRhclBpY2tlclBvcHVwKToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChDaHJvbWUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENocm9tZUNsaWVudCk6CisgICAgICAgICog
cGFnZS9QYWdlUG9wdXBDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQ2xp
ZW50OjphZGRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwYWdlL1Bh
Z2VQb3B1cENsaWVudC5oOgorICAgICAgICAoUGFnZVBvcHVwQ2xpZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9WYWx1ZVBpY2tlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoVmFsdWVQaWNrZXIpOiBSZXByZXNlbnRzIHBpY2tlcnMgbGlrZSBjb2xvciBwaWNrZXIgYW5k
IGRhdGUgcGlja2VyLgorICAgICAgICAoV2ViQ29yZTo6VmFsdWVQaWNrZXI6On5WYWx1ZVBpY2tl
cik6CisgICAgICAgICogcGxhdGZvcm0vVmFsdWVQaWNrZXJDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoVmFsdWVQaWNrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
VmFsdWVQaWNrZXJDbGllbnQ6On5WYWx1ZVBpY2tlckNsaWVudCk6CisKIDIwMTItMDktMDIgIEJl
bmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wcm92ZSB0
aGUgd2F5IHdlIHVzZSBjb252ZXJ0ZWRTcGFjZVN0cmluZygpIGluIGNvbnZlcnRIVE1MVGV4dFRv
SW50ZXJjaGFuZ2VGb3JtYXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkNWU0MThk
YzNlNTIxZmQxODQ0NDg2YTllNmNlZTRhMTFhMjIxMTJkLi4yZWM5ZWU1NmQ0NjcyYzg0OGJlYzM2
ZmU5Nzk5NTc2NmYwMTU3MTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIwIEBACisyMDEyLTA5LTAzICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgor
CisgICAgICAgIE1vdmUgUGFnZVBvcHVwQ2xpZW50IHRvIFdlYktpdCBsYXllcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU2ODEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0
aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRk
IHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YktpdC5neXA6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6b3BlbkNhbGVuZGFy
UGlja2VyUG9wdXApOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKENocm9tZUNsaWVudEltcGwpOgorCiAyMDEyLTA5LTAxICBK
YW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBjaHJvbWl1bSBidWlsZGZpeCB3aGVuIHVzZV9saWJjY19mb3JfY29tcG9zaXRvcj0xCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggNzMzNzYwOTgxMmNiYmVhOGI2Mzk3MjA5NmRhOGQ4ZDE0YjIwZjQ5OC4u
YjI4ZmQ3NWViODE3MGNlNzdhZmRmM2JmZTAyNmVhNTQ3NDQxZmQ3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMzM3LDYgKzMzNyw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vVGhyZWFkR2xvYmFs
RGF0YS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9UaW1lci5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9UcmVlU2hhcmVkLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1ZhbHVlUGlja2Vy
LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1ZhbHVlUGlja2VyQ2xpZW50LmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL1Zpc2l0ZWRMaW5rU3RyYXRlZ3kuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vVmlzaXRlZExpbmtzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1dpZGdldC5oJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1l
bnQuY3BwCmluZGV4IGYzMjQ0ZGU2YjBmZDczMDFhZGRjODc5MTYxNDJiYzAxYTUwYzg4YTIuLjU0
ZTVkZWE5ZjA2NzdhOGM5NGE1MTc2NzM1YmNmNzI4NGI4ZTA5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcApAQCAtMzMs
MjIgKzMzLDEyIEBACiAKICNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQogCi0jaW5jbHVkZSAi
Q2FsZW5kYXJQaWNrZXIuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJDaHJvbWVD
bGllbnQuaCIKLSNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkV2ZW50Lmgi
CiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgot
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0jaW5jbHVkZSAi
TG9jYWxpemVkRGF0ZS5oIgotI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCi0jaW5jbHVkZSAiUGlja2VyQ29tbW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyRGV0
YWlsc01hcmtlci5oIgotI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCi0jaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwogCkBA
IC01OCw3ICs0OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIGlubGluZSBDYWxl
bmRhclBpY2tlckVsZW1lbnQ6OkNhbGVuZGFyUGlja2VyRWxlbWVudChEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgOiBIVE1MRGl2RWxlbWVudChkaXZUYWcsIGRvY3VtZW50KQotICAgICwgbV9wb3B1
cCgwKQorICAgICwgbV9waWNrZXIobnVsbHB0cikKIHsKICAgICBzZXRTaGFkb3dQc2V1ZG9JZCgi
LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yIik7CiB9CkBAIC03MSw3ICs2MSw3IEBA
IFBhc3NSZWZQdHI8Q2FsZW5kYXJQaWNrZXJFbGVtZW50PiBDYWxlbmRhclBpY2tlckVsZW1lbnQ6
OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lCiBDYWxlbmRhclBpY2tlckVsZW1lbnQ6On5DYWxlbmRh
clBpY2tlckVsZW1lbnQoKQogewogICAgIGNsb3NlUG9wdXAoKTsKLSAgICBBU1NFUlQoIW1fcG9w
dXApOworICAgIEFTU0VSVCghbV9waWNrZXIpOwogfQogCiBSZW5kZXJPYmplY3QqIENhbGVuZGFy
UGlja2VyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSopCkBAIC03OSw3ICs2OSw3IEBAIFJlbmRlck9iamVjdCogQ2FsZW5kYXJQaWNrZXJFbGVt
ZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0CiAgICAgcmV0
dXJuIG5ldyAoYXJlbmEpIFJlbmRlckRldGFpbHNNYXJrZXIodGhpcyk7CiB9CiAKLWlubGluZSBI
VE1MSW5wdXRFbGVtZW50KiBDYWxlbmRhclBpY2tlckVsZW1lbnQ6Omhvc3RJbnB1dCgpCitpbmxp
bmUgSFRNTElucHV0RWxlbWVudCogQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpob3N0SW5wdXQoKSBj
b25zdAogewogICAgIC8vIEphdmFTY3JpcHQgY29kZSBjYW4ndCBjcmVhdGUgQ2FsZW5kYXJQaWNr
ZXJFbGVtZW50IG9iamVjdHMuIFRoaXMgaXMKICAgICAvLyBhbHdheXMgaW4gc2hhZG93IG9mIDxp
bnB1dD4uCkBAIC0xMTQsOSArMTA0LDY5IEBAIGJvb2wgQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojp3
aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiAgICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50
Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpOwogfQogCit2b2lkIENhbGVuZGFyUGlj
a2VyRWxlbWVudDo6ZGlkUGlja1ZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaG9z
dElucHV0KCktPnNldFZhbHVlKHZhbHVlLCBEaXNwYXRjaENoYW5nZUV2ZW50KTsKK30KKwordm9p
ZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRpZEVuZFBpY2tlcigpCit7CisgICAgbV9waWNrZXIu
Y2xlYXIoKTsKK30KKworSW50UmVjdCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmVsZW1lbnRSZWN0
UmVsYXRpdmVUb1Jvb3RWaWV3KCkgY29uc3QKK3sKKyAgICBpZiAoIWRvY3VtZW50KCktPnZpZXco
KSkKKyAgICAgICAgcmV0dXJuIEludFJlY3QoMCwgMCwgMCwgMCk7CisgICAgcmV0dXJuIGRvY3Vt
ZW50KCktPnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGhvc3RJbnB1dCgpLT5nZXRQaXhlbFNu
YXBwZWRSZWN0KCkpOworfQorCitTdHJpbmcgQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjpjdXJyZW50
VmFsdWUoKQoreworICAgIHJldHVybiBob3N0SW5wdXQoKS0+dmFsdWUoKTsKK30KKworYm9vbCBD
YWxlbmRhclBpY2tlckVsZW1lbnQ6OnNob3VsZFNob3dTdWdnZXN0aW9ucygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitWZWN0b3I8U3RyaW5nPiBDYWxlbmRhclBpY2tlckVsZW1l
bnQ6OnN1Z2dlc3Rpb25WYWx1ZXMoKSBjb25zdAoreworICAgIHJldHVybiBWZWN0b3I8U3RyaW5n
PigpOworfQorCitWZWN0b3I8U3RyaW5nPiBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OnN1Z2dlc3Rp
b25MYWJlbHMoKSBjb25zdAoreworICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworfQorCitk
b3VibGUgQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjptaW5pbXVtVmFsdWUoKSBjb25zdAoreworICAg
IHJldHVybiBob3N0SW5wdXQoKS0+bWluaW11bSgpOworfQorCitkb3VibGUgQ2FsZW5kYXJQaWNr
ZXJFbGVtZW50OjptYXhpbXVtVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBob3N0SW5wdXQo
KS0+bWF4aW11bSgpOworfQorCitkb3VibGUgQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojp2YWx1ZVN0
ZXAoKSBjb25zdAoreworICAgIERlY2ltYWwgc3RlcDsKKyAgICBpZiAoaG9zdElucHV0KCktPmdl
dEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApKQorICAgICAgICByZXR1cm4gMS4wOworICAgIHJldHVy
biBzdGVwLnRvRG91YmxlKCk7Cit9CisKK2Jvb2wgQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojp2YWx1
ZVJlcXVpcmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaG9zdElucHV0KCktPnJlcXVpcmVkKCk7
Cit9CisKIHZvaWQgQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjpvcGVuUG9wdXAoKQogewotICAgIGlm
IChtX3BvcHVwKQorICAgIGlmIChtX3BpY2tlcikKICAgICAgICAgcmV0dXJuOwogICAgIGlmICgh
ZG9jdW1lbnQoKS0+cGFnZSgpKQogICAgICAgICByZXR1cm47CkBAIC0xMjUsMjAgKzE3NSwxNCBA
QCB2b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6b3BlblBvcHVwKCkKICAgICAgICAgcmV0dXJu
OwogICAgIGlmICghZG9jdW1lbnQoKS0+dmlldygpKQogICAgICAgICByZXR1cm47Ci0gICAgSW50
UmVjdCBlbGVtZW50UmVjdEluUm9vdFZpZXcgPSBkb2N1bWVudCgpLT52aWV3KCktPmNvbnRlbnRz
VG9Sb290Vmlldyhob3N0SW5wdXQoKS0+Z2V0UGl4ZWxTbmFwcGVkUmVjdCgpKTsKLSAgICBtX3Bv
cHVwID0gY2hyb21lLT5jbGllbnQoKS0+b3BlblBhZ2VQb3B1cCh0aGlzLCBlbGVtZW50UmVjdElu
Um9vdFZpZXcpOworICAgIG1fcGlja2VyID0gY2hyb21lLT5vcGVuQ2FsZW5kYXJQaWNrZXJQb3B1
cCh0aGlzKTsKIH0KIAogdm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmNsb3NlUG9wdXAoKQog
ewotICAgIGlmICghbV9wb3B1cCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghZG9jdW1lbnQo
KS0+cGFnZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgQ2hyb21lKiBjaHJvbWUgPSBkb2N1bWVu
dCgpLT5wYWdlKCktPmNocm9tZSgpOwotICAgIGlmICghY2hyb21lKQorICAgIGlmICghbV9waWNr
ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBjaHJvbWUtPmNsaWVudCgpLT5jbG9zZVBhZ2VQb3B1
cChtX3BvcHVwKTsKKyAgICBtX3BpY2tlci0+ZW5kUGlja2VyKCk7CiB9CiAKIHZvaWQgQ2FsZW5k
YXJQaWNrZXJFbGVtZW50OjpkZXRhY2goKQpAQCAtMTQ3LDY3ICsxOTEsNiBAQCB2b2lkIENhbGVu
ZGFyUGlja2VyRWxlbWVudDo6ZGV0YWNoKCkKICAgICBIVE1MRGl2RWxlbWVudDo6ZGV0YWNoKCk7
CiB9CiAKLUludFNpemUgQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpjb250ZW50U2l6ZSgpCi17Ci0g
ICAgcmV0dXJuIEludFNpemUoMCwgMCk7Ci19Ci0KLXZvaWQgQ2FsZW5kYXJQaWNrZXJFbGVtZW50
Ojp3cml0ZURvY3VtZW50KERvY3VtZW50V3JpdGVyJiB3cml0ZXIpCi17Ci0gICAgSFRNTElucHV0
RWxlbWVudCogaW5wdXQgPSBob3N0SW5wdXQoKTsKLSAgICBEYXRlQ29tcG9uZW50cyBkYXRlOwot
ICAgIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUoaW5wdXQtPm1pbmltdW0o
KSk7Ci0gICAgU3RyaW5nIG1pblN0cmluZyA9IGRhdGUudG9TdHJpbmcoKTsKLSAgICBkYXRlLnNl
dE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlKGlucHV0LT5tYXhpbXVtKCkpOwotICAgIFN0
cmluZyBtYXhTdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCk7Ci0gICAgRGVjaW1hbCBzdGVwOwotICAg
IFN0cmluZyBzdGVwU3RyaW5nID0gaW5wdXQtPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpOwot
ICAgIGlmIChzdGVwU3RyaW5nLmlzRW1wdHkoKSB8fCAhaW5wdXQtPmdldEFsbG93ZWRWYWx1ZVN0
ZXAoJnN0ZXApKQotICAgICAgICBzdGVwU3RyaW5nID0gIjEiOwotCi0gICAgYWRkU3RyaW5nKCI8
IURPQ1RZUEUgaHRtbD48aGVhZD48bWV0YSBjaGFyc2V0PSdVVEYtOCc+PHN0eWxlPlxuIiwgd3Jp
dGVyKTsKLSAgICB3cml0ZXIuYWRkRGF0YShwaWNrZXJDb21tb25Dc3MsIHNpemVvZihwaWNrZXJD
b21tb25Dc3MpKTsKLSAgICB3cml0ZXIuYWRkRGF0YShjYWxlbmRhclBpY2tlckNzcywgc2l6ZW9m
KGNhbGVuZGFyUGlja2VyQ3NzKSk7Ci0gICAgaWYgKGRvY3VtZW50KCktPnBhZ2UoKSkgewotICAg
ICAgICBDU3RyaW5nIGV4dHJhU3R5bGUgPSBkb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCktPmV4
dHJhQ2FsZW5kYXJQaWNrZXJTdHlsZVNoZWV0KCk7Ci0gICAgICAgIGlmIChleHRyYVN0eWxlLmxl
bmd0aCgpKQotICAgICAgICAgICAgd3JpdGVyLmFkZERhdGEoZXh0cmFTdHlsZS5kYXRhKCksIGV4
dHJhU3R5bGUubGVuZ3RoKCkpOwotICAgIH0KLSAgICBhZGRTdHJpbmcoIjwvc3R5bGU+PC9oZWFk
Pjxib2R5PjxkaXYgaWQ9bWFpbj5Mb2FkaW5nLi4uPC9kaXY+PHNjcmlwdD5cbiIKLSAgICAgICAg
ICAgICAgICJ3aW5kb3cuZGlhbG9nQXJndW1lbnRzID0ge1xuIiwgd3JpdGVyKTsKLSAgICBhZGRQ
cm9wZXJ0eSgibWluIiwgbWluU3RyaW5nLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJtYXgi
LCBtYXhTdHJpbmcsIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoInN0ZXAiLCBzdGVwU3RyaW5n
LCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJyZXF1aXJlZCIsIGlucHV0LT5yZXF1aXJlZCgp
LCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJjdXJyZW50VmFsdWUiLCBpbnB1dC0+dmFsdWUo
KSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgibG9jYWxlIiwgZGVmYXVsdExhbmd1YWdlKCks
IHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoInRvZGF5TGFiZWwiLCBjYWxlbmRhclRvZGF5VGV4
dCgpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJjbGVhckxhYmVsIiwgY2FsZW5kYXJDbGVh
clRleHQoKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgid2Vla1N0YXJ0RGF5IiwgZmlyc3RE
YXlPZldlZWsoKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgibW9udGhMYWJlbHMiLCBtb250
aExhYmVscygpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJkYXlMYWJlbHMiLCB3ZWVrRGF5
U2hvcnRMYWJlbHMoKSwgd3JpdGVyKTsKLSAgICBEaXJlY3Rpb24gZGlyID0gZGlyZWN0aW9uKG1v
bnRoTGFiZWxzKClbMF1bMF0pOwotICAgIGFkZFByb3BlcnR5KCJpc1JUTCIsIGRpciA9PSBSaWdo
dFRvTGVmdCB8fCBkaXIgPT0gUmlnaHRUb0xlZnRBcmFiaWMsIHdyaXRlcik7Ci0gICAgYWRkU3Ry
aW5nKCJ9XG4iLCB3cml0ZXIpOwotCi0gICAgd3JpdGVyLmFkZERhdGEocGlja2VyQ29tbW9uSnMs
IHNpemVvZihwaWNrZXJDb21tb25KcykpOwotICAgIHdyaXRlci5hZGREYXRhKGNhbGVuZGFyUGlj
a2VySnMsIHNpemVvZihjYWxlbmRhclBpY2tlckpzKSk7Ci0gICAgYWRkU3RyaW5nKCI8L3Njcmlw
dD48L2JvZHk+XG4iLCB3cml0ZXIpOwotfQotCi12b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6
c2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCBudW1WYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdW
YWx1ZSkKLXsKLSAgICBBU1NFUlQobV9wb3B1cCk7Ci0gICAgY2xvc2VQb3B1cCgpOwotICAgIGlm
IChudW1WYWx1ZSA+PSAwKQotICAgICAgICBob3N0SW5wdXQoKS0+c2V0VmFsdWUoc3RyaW5nVmFs
dWUsIERpc3BhdGNoQ2hhbmdlRXZlbnQpOwotfQotCi12b2lkIENhbGVuZGFyUGlja2VyRWxlbWVu
dDo6ZGlkQ2xvc2VQb3B1cCgpCi17Ci0gICAgbV9wb3B1cCA9IDA7Ci19Ci0KIH0KIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVu
dC5oCmluZGV4IGNiZjIxM2ZjNWZjYjNlMzVmMWQ2YmRmMTJlZjgxMjdlYjIzOWUzODcuLjQzNWZl
MDIxZTE3NjljMDliY2E2NTgzMjZlOTU1YWUwMTI4YjlmOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5oCkBAIC0zMywxNCArMzMs
MTcgQEAKIAogI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCiAjaW5jbHVkZSAiSFRNTERpdkVs
ZW1lbnQuaCIKLSNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKyNpbmNsdWRlICJWYWx1ZVBp
Y2tlci5oIgorI2luY2x1ZGUgIlZhbHVlUGlja2VyQ2xpZW50LmgiCisKKyNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTElucHV0RWxlbWVu
dDsKIGNsYXNzIFBhZ2VQb3B1cDsKIAotY2xhc3MgQ2FsZW5kYXJQaWNrZXJFbGVtZW50IDogcHVi
bGljIEhUTUxEaXZFbGVtZW50LCBwdWJsaWMgUGFnZVBvcHVwQ2xpZW50IHsKK2NsYXNzIENhbGVu
ZGFyUGlja2VyRWxlbWVudCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCwgcHVibGljIFZhbHVlUGlj
a2VyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYWxlbmRhclBpY2tl
ckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkNhbGVuZGFyUGlja2Vy
RWxlbWVudCgpOwpAQCAtNDgsMjEgKzUxLDI4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb3NlUG9w
dXAoKTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBP
VkVSUklERTsKIAorICAgIC8vIENvbG9yQ2hvb3NlckNsaWVudCBpbXBsZW1lbnRhdGlvbi4KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUGlja1ZhbHVlKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkaWRFbmRQaWNrZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFJl
Y3QgZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIFN0cmluZyBjdXJyZW50VmFsdWUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkU2hvd1N1Z2dlc3Rpb25zKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBWZWN0
b3I8U3RyaW5nPiBzdWdnZXN0aW9uVmFsdWVzKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uTGFiZWxzKCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBkb3VibGUgbWluaW11bVZhbHVlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBkb3VibGUgbWF4aW11bVZhbHVlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBkb3Vi
bGUgdmFsdWVTdGVwKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHZhbHVlUmVx
dWlyZWQoKSBjb25zdCBPVkVSUklERTsKKwogcHJpdmF0ZToKICAgICBDYWxlbmRhclBpY2tlckVs
ZW1lbnQoRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGRldGFjaCgpIE9WRVJSSURFOwogCi0gICAgLy8gUGFnZVBvcHVwQ2xpZW50IGZ1bmN0aW9uczoK
LSAgICB2aXJ0dWFsIEludFNpemUgY29udGVudFNpemUoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgd3JpdGVEb2N1bWVudChEb2N1bWVudFdyaXRlciYpIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRWYWx1ZUFuZENsb3NlUG9wdXAoaW50LCBjb25zdCBTdHJpbmcmKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2VQb3B1cCgpIE9WRVJSSURFOwotCi0gICAgSFRN
TElucHV0RWxlbWVudCogaG9zdElucHV0KCk7CisgICAgSFRNTElucHV0RWxlbWVudCogaG9zdElu
cHV0KCkgY29uc3Q7CiAKLSAgICBQYWdlUG9wdXAqIG1fcG9wdXA7CisgICAgT3duUHRyPFZhbHVl
UGlja2VyPiBtX3BpY2tlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKaW5kZXggZDhiYzA2ZjMzNmViNDAwZTIyZDFlZDY2M2I0NGFjOGViNGFjMWE0OC4uZTNj
ZDMwNjgxMDMwMWU3MGY4MzYzMTI5NjFhYjE0YmExM2UyNTRiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MRm9y
bUVsZW1lbnQuaCIKKyNpbmNsdWRlICJWYWx1ZVBpY2tlci5oIgogCiAjaWYgRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCkBAIC0xMDMsNiArMTA0LDEz
IEBAIFBhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlQ29s
b3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVuCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDQUxF
TkRBUl9QSUNLRVIpCitQYXNzT3duUHRyPFZhbHVlUGlja2VyPiBFbXB0eUNocm9tZUNsaWVudDo6
b3BlbkNhbGVuZGFyUGlja2VyUG9wdXAoVmFsdWVQaWNrZXJDbGllbnQqKQoreworICAgIHJldHVy
biBudWxscHRyOworfQorI2VuZGlmCisKIHZvaWQgRW1wdHlDaHJvbWVDbGllbnQ6OnJ1bk9wZW5Q
YW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IGEwMjc5OTdmZjdmOTUzZDIyNTkyMDVkOGFiNmZiYzUz
NzlhZTA5NTUuLjU4YjIyNWRmNDgxZWYzZGE2MGIwOTAwMmRjNDUzOTk2ZGEwNjIxMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTE3Miw2ICsxNzIsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgUGFzc093blB0cjxDb2xvckNob29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3Nl
cihDb2xvckNob29zZXJDbGllbnQqLCBjb25zdCBDb2xvciYpIE9WRVJSSURFOwogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorICAgIHZpcnR1YWwgUGFzc093blB0cjxWYWx1
ZVBpY2tlcj4gb3BlbkNhbGVuZGFyUGlja2VyUG9wdXAoVmFsdWVQaWNrZXJDbGllbnQqKSBPVkVS
UklERTsKKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBh
c3NSZWZQdHI8RmlsZUNob29zZXI+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZElj
b25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKikgeyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCBjY2E0YTA5MjVmN2RlMmJlOWI4MDFmZTQwYmQxOTAx
MWQyMjFiZTVkLi42MjI4NTBhZDdiNDhjNDNlYzA2MDdkN2M4MWE3MjNlY2M4MGI3ZWIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3Bh
Y2UuaCIKKyNpbmNsdWRlICJWYWx1ZVBpY2tlci5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVz
LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CkBAIC00NTQsNiArNDU1LDEzIEBAIFBhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBDaHJvbWU6OmNy
ZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCwKIH0KICNlbmRpZgog
CisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKK1Bhc3NPd25QdHI8VmFsdWVQaWNrZXI+IENo
cm9tZTo6b3BlbkNhbGVuZGFyUGlja2VyUG9wdXAoVmFsdWVQaWNrZXJDbGllbnQqIGNsaWVudCkK
K3sKKyAgICByZXR1cm4gbV9jbGllbnQtPm9wZW5DYWxlbmRhclBpY2tlclBvcHVwKGNsaWVudCk7
Cit9CisjZW5kaWYKKwogdm9pZCBDaHJvbWU6OnJ1bk9wZW5QYW5lbChGcmFtZSogZnJhbWUsIFBh
c3NSZWZQdHI8RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyKQogewogICAgIG1fY2xpZW50LT5ydW5P
cGVuUGFuZWwoZnJhbWUsIGZpbGVDaG9vc2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IDU2Mzhm
M2E0OGFkZDg5NTllMzBhZWIwZDIwNWFkM2U3MGI4Y2FjMTkuLjA5Yzg3NjJmMzRhY2Q5YTM1NGI0
NTIzZDgyNGI5MjBjYzY2ZjdiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtNTQsNiArNTQsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBvcHVwTWVudTsKICAgICBjbGFzcyBQ
b3B1cE1lbnVDbGllbnQ7CiAgICAgY2xhc3MgU2VhcmNoUG9wdXBNZW51OworI2lmIEVOQUJMRShD
QUxFTkRBUl9QSUNLRVIpCisgICAgY2xhc3MgVmFsdWVQaWNrZXI7CisgICAgY2xhc3MgVmFsdWVQ
aWNrZXJDbGllbnQ7CisjZW5kaWYKIAogICAgIHN0cnVjdCBGcmFtZUxvYWRSZXF1ZXN0OwogICAg
IHN0cnVjdCBWaWV3cG9ydEFyZ3VtZW50czsKQEAgLTE1MCw2ICsxNTQsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBQYXNzT3duUHRyPENvbG9yQ2hvb3Nlcj4gY3JlYXRlQ29sb3JD
aG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IpOwog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorICAgICAgICBQYXNzT3duUHRy
PFZhbHVlUGlja2VyPiBvcGVuQ2FsZW5kYXJQaWNrZXJQb3B1cChWYWx1ZVBpY2tlckNsaWVudCop
OworI2VuZGlmCisKICAgICAgICAgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRy
PEZpbGVDaG9vc2VyPik7CiAgICAgICAgIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKik7CiAjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExP
QUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBkZDZhZmNmZTFjZGZlOGIxNzZm
YjY5OGViZTM2MTcwMmRkYzA4ODkxLi42NTVlNzUwYWNhMjdiMWU1YWZkOWNlODcxZTBmYTI0YjM1
ZGVjNDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTY3LDYgKzY3LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBvcHVwTWVudUNsaWVudDsKICAgICBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKKyAgICBjbGFz
cyBWYWx1ZVBpY2tlcjsKKyAgICBjbGFzcyBWYWx1ZVBpY2tlckNsaWVudDsKICAgICBjbGFzcyBX
aWRnZXQ7CiAKICAgICBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsKQEAgLTIyMiw2ICsyMjQsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q29sb3JD
aG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50KiwgY29uc3QgQ29s
b3ImKSA9IDA7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisgICAgICAg
IHZpcnR1YWwgUGFzc093blB0cjxWYWx1ZVBpY2tlcj4gb3BlbkNhbGVuZGFyUGlja2VyUG9wdXAo
VmFsdWVQaWNrZXJDbGllbnQqKSA9IDA7CisjZW5kaWYKKwogICAgICAgICB2aXJ0dWFsIHZvaWQg
cnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pID0gMDsKICAgICAg
ICAgLy8gQXN5bmNocm9ub3VzIHJlcXVlc3QgdG8gbG9hZCBhbiBpY29uIGZvciBzcGVjaWZpZWQg
ZmlsZW5hbWVzLgogICAgICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlUG9wdXBDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlUG9wdXBDbGllbnQuY3BwCmluZGV4IDViNjY2ZWE0NTk1YmQ2ZjZiNzYyMWYyODZiMTMyNjFj
ZjNjYzFjYzUuLjMwMWQxZWYzYTA3NjY3MzcwY2ZkYWQ0YjhkYWFlMzU3YTk1ODhhMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENsaWVudC5jcHAKQEAgLTY5LDYgKzY5LDE0IEBAIHZv
aWQgUGFnZVBvcHVwQ2xpZW50OjphZGRQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLCB1bnNpZ25l
ZCB2YWx1ZSwgRG9jdW1lbnRXcml0CiAgICAgYWRkTGl0ZXJhbCgiLFxuIiwgd3JpdGVyKTsKIH0K
IAordm9pZCBQYWdlUG9wdXBDbGllbnQ6OmFkZFByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsIGRv
dWJsZSB2YWx1ZSwgRG9jdW1lbnRXcml0ZXImIHdyaXRlcikKK3sKKyAgICB3cml0ZXIuYWRkRGF0
YShuYW1lLCBzdHJsZW4obmFtZSkpOworICAgIGFkZExpdGVyYWwoIjogIiwgd3JpdGVyKTsKKyAg
ICBhZGRTdHJpbmcoU3RyaW5nOjpudW1iZXIodmFsdWUpLCB3cml0ZXIpOworICAgIGFkZExpdGVy
YWwoIixcbiIsIHdyaXRlcik7Cit9CisKIHZvaWQgUGFnZVBvcHVwQ2xpZW50OjphZGRQcm9wZXJ0
eShjb25zdCBjaGFyKiBuYW1lLCBib29sIHZhbHVlLCBEb2N1bWVudFdyaXRlciYgd3JpdGVyKQog
ewogICAgIHdyaXRlci5hZGREYXRhKG5hbWUsIHN0cmxlbihuYW1lKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlUG9wdXBDbGllbnQuaAppbmRleCAwMmFlZTMyMjU2Y2RhZmE5NmUxNmQ0ZTNmYjQ4ZDRm
ODZmMzBhM2UwLi44MzliNDJlY2Y2MTNlNWIzZGIxNjg4MmRkMWUxNjE4MmViMGQ4ZGU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ2xpZW50LmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIGFkZEphdmFTY3JpcHRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRG9j
dW1lbnRXcml0ZXImKTsKICAgICBzdGF0aWMgdm9pZCBhZGRQcm9wZXJ0eShjb25zdCBjaGFyKiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBEb2N1bWVudFdyaXRlciYpOwogICAgIHN0YXRpYyB2
b2lkIGFkZFByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsIHVuc2lnbmVkIHZhbHVlLCBEb2N1bWVu
dFdyaXRlciYpOworICAgIHN0YXRpYyB2b2lkIGFkZFByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUs
IGRvdWJsZSB2YWx1ZSwgRG9jdW1lbnRXcml0ZXImKTsKICAgICBzdGF0aWMgdm9pZCBhZGRQcm9w
ZXJ0eShjb25zdCBjaGFyKiBuYW1lLCBib29sIHZhbHVlLCBEb2N1bWVudFdyaXRlciYpOwogICAg
IHN0YXRpYyB2b2lkIGFkZFByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB2YWx1ZXMsIERvY3VtZW50V3JpdGVyJik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVmFsdWVQaWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ZhbHVlUGlja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk1MTQzMmUwZWI2NmI2NzY5YTRhZWI3OTM4ZTE1
MTA3NTE0MTQ1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Zh
bHVlUGlja2VyLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmFsdWVQaWNrZXJfaAorI2RlZmlu
ZSBWYWx1ZVBpY2tlcl9oCisKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworLy8gRm9yIHBpY2tlcnMgbGlrZSBjb2xvciBwaWNrZXJzIGFuZCBkYXRlIHBpY2tl
cnMuCitjbGFzcyBWYWx1ZVBpY2tlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+VmFsdWVQaWNr
ZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRQaWNrZXJWYWx1ZShjb25zdCBTdHJpbmcm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZFBpY2tlcigpID0gMDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFZhbHVlUGlja2VyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZhbHVlUGlja2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9WYWx1ZVBpY2tlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwYmQ3ZWM2MTI2OGY1
NjhiNmJmZjc3ZGYxZGU1Nzc4MWY2N2ViMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9WYWx1ZVBpY2tlckNsaWVudC5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFZhbHVlUGlja2VyQ2xpZW50X2gKKyNkZWZpbmUgVmFsdWVQaWNrZXJDbGllbnRfaAorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZhbHVlUGlja2VyQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5WYWx1ZVBpY2tlckNsaWVudCgpIHsgfQorCisgICAgLy8gQ2FsbGVkIHdoZW4g
dXNlciBwaWNrZWQgYSB2YWx1ZS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGlja1ZhbHVlKGNvbnN0
IFN0cmluZyYpID0gMDsKKyAgICAvLyBDYWxsZWQgd2hlbiBwaWNrZXIgaGFzIGVuZGVkLgorICAg
IHZpcnR1YWwgdm9pZCBkaWRFbmRQaWNrZXIoKSA9IDA7CisgICAgLy8gUmV0dXJucyB0aGUgcmVj
dCBmb3IgdGhlIGVsZW1lbnQgdGhhdCBvcmlnaW5hdGVkIHRoZSBwaWNrZXIuCisgICAgdmlydHVh
bCBJbnRSZWN0IGVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkgY29uc3QgPSAwOworICAg
IC8vIFJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgd2hpY2ggc2hvdWxkIGJlIHNob3duIGluIHRo
ZSBjb2xvciBwaWNrZXIuCisgICAgdmlydHVhbCBTdHJpbmcgY3VycmVudFZhbHVlKCkgPSAwOwor
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91bGQgc2hvdyBzdWdnZXN0aW9ucyB0byB0aGUg
dXNlci4KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd1N1Z2dlc3Rpb25zKCkgY29uc3QgPSAw
OworICAgIC8vIFJldHVybnMgdGhlIGxpc3Qgb2Ygc3VnZ2VzdGlvbiB2YWx1ZXMuCisgICAgdmly
dHVhbCBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uVmFsdWVzKCkgY29uc3QgPSAwOworICAgIC8v
IFJldHVybnMgdGhlIGxpc3Qgb2Ygc3VnZ2VzdGlvbiBsYWJlbHMuCisgICAgdmlydHVhbCBWZWN0
b3I8U3RyaW5nPiBzdWdnZXN0aW9uTGFiZWxzKCkgY29uc3QgPSAwOworICAgIC8vIFJldHVybnMg
dGhlIG1pbmltdW0gcGlja2FibGUgdmFsdWUuCisgICAgdmlydHVhbCBkb3VibGUgbWluaW11bVZh
bHVlKCkgY29uc3QgPSAwOworICAgIC8vIFJldHVybnMgdGhlIG1heGltdW0gcGlja2FibGUgdmFs
dWUuCisgICAgdmlydHVhbCBkb3VibGUgbWF4aW11bVZhbHVlKCkgY29uc3QgPSAwOworICAgIC8v
IFJldHVybnMgdGhlIHZhbHVlIHN0ZXAgc2l6ZS4KKyAgICB2aXJ0dWFsIGRvdWJsZSB2YWx1ZVN0
ZXAoKSBjb25zdCA9IDA7CisgICAgLy8gUmV0dXJucyBpZiB0aGUgdmFsdWUgaXMgcmVxdWlyZWQu
CisgICAgdmlydHVhbCBib29sIHZhbHVlUmVxdWlyZWQoKSBjb25zdCA9IDA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBWYWx1ZVBpY2tlckNsaWVudF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggYjk4NGFmYzg2M2U2ZWU1YTQyZGRlNzI0YmNlZTYw
M2Q2YmI0NWMzZC4uOTM1Y2Q5YTU4Zjk5OWUyZWFmY2M2YWE3ZDA3ZTBlNGZhMTdhZTA4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzU4LDYgKzM1OCw4IEBACiAgICAgICAgICAg
ICAgICAgJ3NyYy9CYXR0ZXJ5Q2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0Js
b2JSZWdpc3RyeVByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9CbG9iUmVnaXN0cnlQ
cm94eS5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0NhbGVuZGFyUGlja2VyUG9wdXAuY3BwJywK
KyAgICAgICAgICAgICAgICAnc3JjL0NhbGVuZGFyUGlja2VyUG9wdXAuaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9D
aHJvbWVDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvQ2hyb21pdW1DdXJyZW50
VGltZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmNwcAppbmRleCBkYzVhZmM4ODY1NWEyODU0OTk1M2I2NWIwNGU2OWNhZWY1ZWZkNGYwLi4w
NzExYTBkNTRmZDdlN2JiNDAxNzY4MWRmNWRjZDhlZjcxNjFhZWViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtMzksNiArMzksNyBA
QAogI2luY2x1ZGUgIkNvbG9yQ2hvb3NlckNsaWVudC5oIgogI2luY2x1ZGUgIkNvbG9yQ2hvb3Nl
clVJQ29udHJvbGxlci5oIgogI2VuZGlmCisjaW5jbHVkZSAiQ2FsZW5kYXJQaWNrZXJQb3B1cC5o
IgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJDdXJzb3IuaCIKICNpbmNsdWRlICJE
YXRhYmFzZVRyYWNrZXIuaCIKQEAgLTcxLDYgKzcyLDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEZpZWxkRGVjb3Jh
dGlvbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJWYWx1ZVBpY2tlci5oIgogI2luY2x1ZGUgIldlYkFj
Y2Vzc2liaWxpdHlPYmplY3QuaCIKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICNpbmNs
dWRlICJXZWJDb2xvckNob29zZXIuaCIKQEAgLTcwNCw2ICs3MDYsMTMgQEAgUGFzc093blB0cjxX
ZWJDb2xvckNob29zZXI+IENocm9tZUNsaWVudEltcGw6OmNyZWF0ZVdlYkNvbG9yQ2hvb3NlcihX
ZWJDb2xvckNob28KIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKK1Bh
c3NPd25QdHI8V2ViQ29yZTo6VmFsdWVQaWNrZXI+IENocm9tZUNsaWVudEltcGw6Om9wZW5DYWxl
bmRhclBpY2tlclBvcHVwKFdlYkNvcmU6OlZhbHVlUGlja2VyQ2xpZW50KiBwaWNrZXJDbGllbnQp
Cit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYWxlbmRhclBpY2tlclBvcHVwKHRoaXMsIHBp
Y2tlckNsaWVudCkpOworfQorI2VuZGlmCisKIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6cnVuT3Bl
blBhbmVsKEZyYW1lKiBmcmFtZSwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gZmlsZUNob29zZXIp
CiB7CiAgICAgV2ViVmlld0NsaWVudCogY2xpZW50ID0gbV93ZWJWaWV3LT5jbGllbnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAppbmRleCA2MmIz
OTk4ODZiYmM0MmNjYzc3MjQxYmM3ZTM5YmI4MTg3NmQwNTkxLi5jMGMyMWQ1MTg1NmNiNTY4YWNj
ZTU5YTZhZTg0NDQ0NzVhZWJhNzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5oCkBAIC01MCw2ICs1MCw4IEBAIGNsYXNzIFBvcHVwQ29udGFpbmVy
OwogY2xhc3MgUG9wdXBNZW51Q2xpZW50OwogY2xhc3MgUmVuZGVyQm94OwogY2xhc3MgU2VjdXJp
dHlPcmlnaW47CitjbGFzcyBWYWx1ZVBpY2tlcjsKK2NsYXNzIFZhbHVlUGlja2VyQ2xpZW50Owog
c3RydWN0IFdpbmRvd0ZlYXR1cmVzOwogfQogCkBAIC0xNDQsNiArMTQ2LDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpDb2xvckNob29zZXI+IGNyZWF0ZUNvbG9y
Q2hvb3NlcihXZWJDb3JlOjpDb2xvckNob29zZXJDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpDb2xv
ciYpIE9WRVJSSURFOwogICAgIFBhc3NPd25QdHI8V2ViQ29sb3JDaG9vc2VyPiBjcmVhdGVXZWJD
b2xvckNob29zZXIoV2ViQ29sb3JDaG9vc2VyQ2xpZW50KiwgY29uc3QgV2ViQ29sb3ImKTsKICNl
bmRpZgorI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisgICAgdmlydHVhbCBQYXNzT3duUHRy
PFdlYkNvcmU6OlZhbHVlUGlja2VyPiBvcGVuQ2FsZW5kYXJQaWNrZXJQb3B1cChXZWJDb3JlOjpW
YWx1ZVBpY2tlckNsaWVudCopIE9WRVJSSURFOworI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHJ1
bk9wZW5QYW5lbChXZWJDb3JlOjpGcmFtZSosIFBhc3NSZWZQdHI8V2ViQ29yZTo6RmlsZUNob29z
ZXI+KTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiwgV2ViQ29yZTo6RmlsZUljb25Mb2FkZXIqKTsKICNpZiBFTkFCTEUoRElSRUNU
T1JZX1VQTE9BRCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161914</attachid>
            <date>2012-09-03 06:16:50 -0700</date>
            <delta_ts>2012-09-03 07:01:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95681-20120903221634.patch</filename>
            <type>text/plain</type>
            <size>37406</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFhNDk1YjFjMzY3Y2Fi
MjMyODdlY2IxMDVlMzYzMTQ0ZGJjMDhhMi4uNjY5MmRmZWEwZmFlYjNjZWIyODZjZTBlMTBhOGVm
YjhlZTQ5ZWE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTA5LTAzICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgUGFnZVBvcHVw
Q2xpZW50IHRvIFdlYktpdCBsYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTU2ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZlIFBhZ2VQb3B1cENsaWVudCB0byBXZWJLaXQgbGF5ZXIgYW5kIGlu
dHJvZHVjZSBWYWx1ZVBpY2tlciB0aGF0IHdpbGwKKyAgICAgICAgYmUgc2hhcmVkIHdpdGggdGhl
IHZhcmlvdXMgcGlja2VycyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4g
Q292ZXJlZCBieSBleGlzdGluZyBjYWxlbmRhciBwaWNrZXIgdGVzdHMuCisKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6Q2FsZW5kYXJQ
aWNrZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6
fkNhbGVuZGFyUGlja2VyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6Omhvc3RJbnB1dCk6IENoYW5nZWQgdG8gY29uc3QuCisgICAgICAgIChXZWJDb3Jl
OjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRpZFBpY2tWYWx1ZSk6IENhbGxlZCB3aGVuIHVzZXIg
cGlja2VkIGEgY29sb3IgaW4gdGhlIHZhbHVlIHBpY2tlci4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50OjpkaWRFbmRQaWNrZXIpOiBD
YWxsZWQgd2hlbiBwaWNrZXIgZW5kZWQuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6OmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KTogUmV0dXJucyByZWN0IG9m
IGlucHV0IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6
OmN1cnJlbnRWYWx1ZSk6IFJldHVybiBjdXJyZW50IHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6
Q2FsZW5kYXJQaWNrZXJFbGVtZW50OjpzaG91bGRTaG93U3VnZ2VzdGlvbnMpOiBSZXR1cm5zIGZh
bHNlIGZvciBub3cuIFdpbGwgcmV0dXJuIHRydWUgd2hlbiB3ZSBpbXBsZW1lbnQgdGhlIHN1Z2dl
c3Rpb24gcGlja2VyLgorICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpz
dWdnZXN0aW9uVmFsdWVzKTogUmV0dXJucyBlbXB0eSB2ZWN0b3IgZm9yIG5vdy4KKyAgICAgICAg
KFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6c3VnZ2VzdGlvbkxhYmVscyk6IFJldHVy
bnMgZW1wdHkgdmVjdG9yIGZvciBub3cuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6Om1pbmltdW1WYWx1ZSk6IFJldHVybnMgdGhlIG1pbmltdW0gdmFsdWUgdGhhdCBz
aG91bGQgYmUgcGlja2FibGUgaW4gdGhlIHBpY2tlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhbGVu
ZGFyUGlja2VyRWxlbWVudDo6bWF4aW11bVZhbHVlKTogUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1
ZSB0aGF0IHNob3VsZCBiZSBwaWNrYWJsZSBpbiB0aGUgcGlja2VyLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50Ojp2YWx1ZVN0ZXApOiBSZXR1cm5zIHRoZSB2YWx1ZSBz
dGVwIHNpemUuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OnZhbHVl
UmVxdWlyZWQpOiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IGEgdmFsdWUgaXMgcmVxdWlyZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6Om9wZW5Qb3B1cCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmNsb3NlUG9wdXApOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5oOgorICAgICAgICAoQ2FsZW5k
YXJQaWNrZXJFbGVtZW50KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6Om9w
ZW5DYWxlbmRhclBpY2tlclBvcHVwKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6
CisgICAgICAgIChFbXB0eUNocm9tZUNsaWVudCk6CisgICAgICAgICogcGFnZS9DaHJvbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6Om9wZW5DYWxl
bmRhclBpY2tlclBvcHVwKToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChDaHJvbWUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENocm9tZUNsaWVudCk6CisgICAgICAgICog
cGFnZS9QYWdlUG9wdXBDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQ2xp
ZW50OjphZGRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwYWdlL1Bh
Z2VQb3B1cENsaWVudC5oOgorICAgICAgICAoUGFnZVBvcHVwQ2xpZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9WYWx1ZVBpY2tlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoVmFsdWVQaWNrZXIpOiBSZXByZXNlbnRzIHBpY2tlcnMgbGlrZSBjb2xvciBwaWNrZXIgYW5k
IGRhdGUgcGlja2VyLgorICAgICAgICAoV2ViQ29yZTo6VmFsdWVQaWNrZXI6On5WYWx1ZVBpY2tl
cik6CisgICAgICAgICogcGxhdGZvcm0vVmFsdWVQaWNrZXJDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoVmFsdWVQaWNrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
VmFsdWVQaWNrZXJDbGllbnQ6On5WYWx1ZVBpY2tlckNsaWVudCk6CisKIDIwMTItMDktMDIgIEJl
bmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wcm92ZSB0
aGUgd2F5IHdlIHVzZSBjb252ZXJ0ZWRTcGFjZVN0cmluZygpIGluIGNvbnZlcnRIVE1MVGV4dFRv
SW50ZXJjaGFuZ2VGb3JtYXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkNWU0MThk
YzNlNTIxZmQxODQ0NDg2YTllNmNlZTRhMTFhMjIxMTJkLi4wYzQ4ZDAzMDc5YTk4ODU2MGJiNjIz
NTFjYWE5NjZkZmVmM2M3N2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMyIEBACisyMDEyLTA5LTAzICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgor
CisgICAgICAgIE1vdmUgUGFnZVBvcHVwQ2xpZW50IHRvIFdlYktpdCBsYXllcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU2ODEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAg
ICAgICogc3JjL0NhbGVuZGFyUGlja2VyUG9wdXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2VyUG9wdXA6OkNhbGVuZGFyUGlja2Vy
UG9wdXApOgorICAgICAgICAoV2ViS2l0OjpDYWxlbmRhclBpY2tlclBvcHVwOjp+Q2FsZW5kYXJQ
aWNrZXJQb3B1cCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2VyUG9wdXA6OnNldFBp
Y2tlclZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6Q2FsZW5kYXJQaWNrZXJQb3B1cDo6ZW5kUGlj
a2VyKToKKyAgICAgICAgKFdlYktpdDo6Q2FsZW5kYXJQaWNrZXJQb3B1cDo6Y29udGVudFNpemUp
OgorICAgICAgICAoV2ViS2l0OjpDYWxlbmRhclBpY2tlclBvcHVwOjp3cml0ZURvY3VtZW50KToK
KyAgICAgICAgKFdlYktpdDo6Q2FsZW5kYXJQaWNrZXJQb3B1cDo6c2V0VmFsdWVBbmRDbG9zZVBv
cHVwKToKKyAgICAgICAgKFdlYktpdDo6Q2FsZW5kYXJQaWNrZXJQb3B1cDo6ZGlkQ2xvc2VQb3B1
cCk6CisgICAgICAgICogc3JjL0NhbGVuZGFyUGlja2VyUG9wdXAuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmguCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChDYWxlbmRhclBpY2tlclBv
cHVwKToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpvcGVuQ2FsZW5kYXJQaWNr
ZXJQb3B1cCk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQ2hyb21lQ2xpZW50SW1wbCk6CisKIDIwMTItMDktMDEgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGNo
cm9taXVtIGJ1aWxkZml4IHdoZW4gdXNlX2xpYmNjX2Zvcl9jb21wb3NpdG9yPTEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCA3MzM3NjA5ODEyY2JiZWE4YjYzOTcyMDk2ZGE4ZDhkMTRiMjBmNDk4Li5iMjhm
ZDc1ZWI4MTcwY2U3N2FmZGYzYmZlMDI2ZWE1NDc0NDFmZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0zMzcsNiArMzM3LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRh
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1RpbWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL1RyZWVTaGFyZWQuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vVmFsdWVQaWNrZXIuaCcs
CisgICAgICAgICAgICAncGxhdGZvcm0vVmFsdWVQaWNrZXJDbGllbnQuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vVmlzaXRlZExpbmtTdHJhdGVneS5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9WaXNpdGVkTGlua3MuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vV2lkZ2V0LmgnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5j
cHAKaW5kZXggZjMyNDRkZTZiMGZkNzMwMWFkZGM4NzkxNjE0MmJjMDFhNTBjODhhMi4uNTRlNWRl
YTlmMDY3N2E4Yzk0YTUxNzY3MzViY2Y3Mjg0YjhlMDk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3BwCkBAIC0zMywyMiAr
MzMsMTIgQEAKIAogI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCiAKLSNpbmNsdWRlICJDYWxl
bmRhclBpY2tlci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgotI2luY2x1ZGUgIkNocm9tZUNsaWVu
dC5oIgotI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCi0jaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKLSNpbmNsdWRlICJMb2Nh
bGl6ZWREYXRlLmgiCi0jaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKLSNpbmNsdWRlICJQaWNrZXJDb21tb24uaCIKICNpbmNsdWRlICJSZW5kZXJEZXRhaWxz
TWFya2VyLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CiAKQEAgLTU4
LDcgKzQ4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogaW5saW5lIENhbGVuZGFy
UGlja2VyRWxlbWVudDo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkK
ICAgICA6IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgZG9jdW1lbnQpCi0gICAgLCBtX3BvcHVwKDAp
CisgICAgLCBtX3BpY2tlcihudWxscHRyKQogewogICAgIHNldFNoYWRvd1BzZXVkb0lkKCItd2Vi
a2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3IiKTsKIH0KQEAgLTcxLDcgKzYxLDcgQEAgUGFz
c1JlZlB0cjxDYWxlbmRhclBpY2tlckVsZW1lbnQ+IENhbGVuZGFyUGlja2VyRWxlbWVudDo6Y3Jl
YXRlKERvY3VtZW50KiBkb2N1bWUKIENhbGVuZGFyUGlja2VyRWxlbWVudDo6fkNhbGVuZGFyUGlj
a2VyRWxlbWVudCgpCiB7CiAgICAgY2xvc2VQb3B1cCgpOwotICAgIEFTU0VSVCghbV9wb3B1cCk7
CisgICAgQVNTRVJUKCFtX3BpY2tlcik7CiB9CiAKIFJlbmRlck9iamVjdCogQ2FsZW5kYXJQaWNr
ZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxl
KikKQEAgLTc5LDcgKzY5LDcgQEAgUmVuZGVyT2JqZWN0KiBDYWxlbmRhclBpY2tlckVsZW1lbnQ6
OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3QKICAgICByZXR1cm4g
bmV3IChhcmVuYSkgUmVuZGVyRGV0YWlsc01hcmtlcih0aGlzKTsKIH0KIAotaW5saW5lIEhUTUxJ
bnB1dEVsZW1lbnQqIENhbGVuZGFyUGlja2VyRWxlbWVudDo6aG9zdElucHV0KCkKK2lubGluZSBI
VE1MSW5wdXRFbGVtZW50KiBDYWxlbmRhclBpY2tlckVsZW1lbnQ6Omhvc3RJbnB1dCgpIGNvbnN0
CiB7CiAgICAgLy8gSmF2YVNjcmlwdCBjb2RlIGNhbid0IGNyZWF0ZSBDYWxlbmRhclBpY2tlckVs
ZW1lbnQgb2JqZWN0cy4gVGhpcyBpcwogICAgIC8vIGFsd2F5cyBpbiBzaGFkb3cgb2YgPGlucHV0
Pi4KQEAgLTExNCw5ICsxMDQsNjkgQEAgYm9vbCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OndpbGxS
ZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKICAgICByZXR1cm4gSFRNTERpdkVsZW1lbnQ6Ondp
bGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCk7CiB9CiAKK3ZvaWQgQ2FsZW5kYXJQaWNrZXJF
bGVtZW50OjpkaWRQaWNrVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBob3N0SW5w
dXQoKS0+c2V0VmFsdWUodmFsdWUsIERpc3BhdGNoQ2hhbmdlRXZlbnQpOworfQorCit2b2lkIENh
bGVuZGFyUGlja2VyRWxlbWVudDo6ZGlkRW5kUGlja2VyKCkKK3sKKyAgICBtX3BpY2tlci5jbGVh
cigpOworfQorCitJbnRSZWN0IENhbGVuZGFyUGlja2VyRWxlbWVudDo6ZWxlbWVudFJlY3RSZWxh
dGl2ZVRvUm9vdFZpZXcoKSBjb25zdAoreworICAgIGlmICghZG9jdW1lbnQoKS0+dmlldygpKQor
ICAgICAgICByZXR1cm4gSW50UmVjdCgwLCAwLCAwLCAwKTsKKyAgICByZXR1cm4gZG9jdW1lbnQo
KS0+dmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoaG9zdElucHV0KCktPmdldFBpeGVsU25hcHBl
ZFJlY3QoKSk7Cit9CisKK1N0cmluZyBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmN1cnJlbnRWYWx1
ZSgpCit7CisgICAgcmV0dXJuIGhvc3RJbnB1dCgpLT52YWx1ZSgpOworfQorCitib29sIENhbGVu
ZGFyUGlja2VyRWxlbWVudDo6c2hvdWxkU2hvd1N1Z2dlc3Rpb25zKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IENhbGVuZGFyUGlja2VyRWxlbWVudDo6
c3VnZ2VzdGlvblZhbHVlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7
Cit9CisKK1ZlY3RvcjxTdHJpbmc+IENhbGVuZGFyUGlja2VyRWxlbWVudDo6c3VnZ2VzdGlvbkxh
YmVscygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7Cit9CisKK2RvdWJs
ZSBDYWxlbmRhclBpY2tlckVsZW1lbnQ6Om1pbmltdW1WYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGhvc3RJbnB1dCgpLT5taW5pbXVtKCk7Cit9CisKK2RvdWJsZSBDYWxlbmRhclBpY2tlckVs
ZW1lbnQ6Om1heGltdW1WYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhvc3RJbnB1dCgpLT5t
YXhpbXVtKCk7Cit9CisKK2RvdWJsZSBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OnZhbHVlU3RlcCgp
IGNvbnN0Cit7CisgICAgRGVjaW1hbCBzdGVwOworICAgIGlmIChob3N0SW5wdXQoKS0+Z2V0QWxs
b3dlZFZhbHVlU3RlcCgmc3RlcCkpCisgICAgICAgIHJldHVybiAxLjA7CisgICAgcmV0dXJuIHN0
ZXAudG9Eb3VibGUoKTsKK30KKworYm9vbCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OnZhbHVlUmVx
dWlyZWQoKSBjb25zdAoreworICAgIHJldHVybiBob3N0SW5wdXQoKS0+cmVxdWlyZWQoKTsKK30K
Kwogdm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6Om9wZW5Qb3B1cCgpCiB7Ci0gICAgaWYgKG1f
cG9wdXApCisgICAgaWYgKG1fcGlja2VyKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFkb2N1
bWVudCgpLT5wYWdlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEyNSwyMCArMTc1LDE0IEBAIHZv
aWQgQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjpvcGVuUG9wdXAoKQogICAgICAgICByZXR1cm47CiAg
ICAgaWYgKCFkb2N1bWVudCgpLT52aWV3KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBJbnRSZWN0
IGVsZW1lbnRSZWN0SW5Sb290VmlldyA9IGRvY3VtZW50KCktPnZpZXcoKS0+Y29udGVudHNUb1Jv
b3RWaWV3KGhvc3RJbnB1dCgpLT5nZXRQaXhlbFNuYXBwZWRSZWN0KCkpOwotICAgIG1fcG9wdXAg
PSBjaHJvbWUtPmNsaWVudCgpLT5vcGVuUGFnZVBvcHVwKHRoaXMsIGVsZW1lbnRSZWN0SW5Sb290
Vmlldyk7CisgICAgbV9waWNrZXIgPSBjaHJvbWUtPm9wZW5DYWxlbmRhclBpY2tlclBvcHVwKHRo
aXMpOwogfQogCiB2b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6Y2xvc2VQb3B1cCgpCiB7Ci0g
ICAgaWYgKCFtX3BvcHVwKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFkb2N1bWVudCgpLT5w
YWdlKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBDaHJvbWUqIGNocm9tZSA9IGRvY3VtZW50KCkt
PnBhZ2UoKS0+Y2hyb21lKCk7Ci0gICAgaWYgKCFjaHJvbWUpCisgICAgaWYgKCFtX3BpY2tlcikK
ICAgICAgICAgcmV0dXJuOwotICAgIGNocm9tZS0+Y2xpZW50KCktPmNsb3NlUGFnZVBvcHVwKG1f
cG9wdXApOworICAgIG1fcGlja2VyLT5lbmRQaWNrZXIoKTsKIH0KIAogdm9pZCBDYWxlbmRhclBp
Y2tlckVsZW1lbnQ6OmRldGFjaCgpCkBAIC0xNDcsNjcgKzE5MSw2IEBAIHZvaWQgQ2FsZW5kYXJQ
aWNrZXJFbGVtZW50OjpkZXRhY2goKQogICAgIEhUTUxEaXZFbGVtZW50OjpkZXRhY2goKTsKIH0K
IAotSW50U2l6ZSBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmNvbnRlbnRTaXplKCkKLXsKLSAgICBy
ZXR1cm4gSW50U2l6ZSgwLCAwKTsKLX0KLQotdm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6Ondy
aXRlRG9jdW1lbnQoRG9jdW1lbnRXcml0ZXImIHdyaXRlcikKLXsKLSAgICBIVE1MSW5wdXRFbGVt
ZW50KiBpbnB1dCA9IGhvc3RJbnB1dCgpOwotICAgIERhdGVDb21wb25lbnRzIGRhdGU7Ci0gICAg
ZGF0ZS5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZShpbnB1dC0+bWluaW11bSgpKTsK
LSAgICBTdHJpbmcgbWluU3RyaW5nID0gZGF0ZS50b1N0cmluZygpOwotICAgIGRhdGUuc2V0TWls
bGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUoaW5wdXQtPm1heGltdW0oKSk7Ci0gICAgU3RyaW5n
IG1heFN0cmluZyA9IGRhdGUudG9TdHJpbmcoKTsKLSAgICBEZWNpbWFsIHN0ZXA7Ci0gICAgU3Ry
aW5nIHN0ZXBTdHJpbmcgPSBpbnB1dC0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cik7Ci0gICAg
aWYgKHN0ZXBTdHJpbmcuaXNFbXB0eSgpIHx8ICFpbnB1dC0+Z2V0QWxsb3dlZFZhbHVlU3RlcCgm
c3RlcCkpCi0gICAgICAgIHN0ZXBTdHJpbmcgPSAiMSI7Ci0KLSAgICBhZGRTdHJpbmcoIjwhRE9D
VFlQRSBodG1sPjxoZWFkPjxtZXRhIGNoYXJzZXQ9J1VURi04Jz48c3R5bGU+XG4iLCB3cml0ZXIp
OwotICAgIHdyaXRlci5hZGREYXRhKHBpY2tlckNvbW1vbkNzcywgc2l6ZW9mKHBpY2tlckNvbW1v
bkNzcykpOwotICAgIHdyaXRlci5hZGREYXRhKGNhbGVuZGFyUGlja2VyQ3NzLCBzaXplb2YoY2Fs
ZW5kYXJQaWNrZXJDc3MpKTsKLSAgICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAgICAg
IENTdHJpbmcgZXh0cmFTdHlsZSA9IGRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+ZXh0cmFD
YWxlbmRhclBpY2tlclN0eWxlU2hlZXQoKTsKLSAgICAgICAgaWYgKGV4dHJhU3R5bGUubGVuZ3Ro
KCkpCi0gICAgICAgICAgICB3cml0ZXIuYWRkRGF0YShleHRyYVN0eWxlLmRhdGEoKSwgZXh0cmFT
dHlsZS5sZW5ndGgoKSk7Ci0gICAgfQotICAgIGFkZFN0cmluZygiPC9zdHlsZT48L2hlYWQ+PGJv
ZHk+PGRpdiBpZD1tYWluPkxvYWRpbmcuLi48L2Rpdj48c2NyaXB0PlxuIgotICAgICAgICAgICAg
ICAgIndpbmRvdy5kaWFsb2dBcmd1bWVudHMgPSB7XG4iLCB3cml0ZXIpOwotICAgIGFkZFByb3Bl
cnR5KCJtaW4iLCBtaW5TdHJpbmcsIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoIm1heCIsIG1h
eFN0cmluZywgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgic3RlcCIsIHN0ZXBTdHJpbmcsIHdy
aXRlcik7Ci0gICAgYWRkUHJvcGVydHkoInJlcXVpcmVkIiwgaW5wdXQtPnJlcXVpcmVkKCksIHdy
aXRlcik7Ci0gICAgYWRkUHJvcGVydHkoImN1cnJlbnRWYWx1ZSIsIGlucHV0LT52YWx1ZSgpLCB3
cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJsb2NhbGUiLCBkZWZhdWx0TGFuZ3VhZ2UoKSwgd3Jp
dGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgidG9kYXlMYWJlbCIsIGNhbGVuZGFyVG9kYXlUZXh0KCks
IHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoImNsZWFyTGFiZWwiLCBjYWxlbmRhckNsZWFyVGV4
dCgpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJ3ZWVrU3RhcnREYXkiLCBmaXJzdERheU9m
V2VlaygpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJtb250aExhYmVscyIsIG1vbnRoTGFi
ZWxzKCksIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoImRheUxhYmVscyIsIHdlZWtEYXlTaG9y
dExhYmVscygpLCB3cml0ZXIpOwotICAgIERpcmVjdGlvbiBkaXIgPSBkaXJlY3Rpb24obW9udGhM
YWJlbHMoKVswXVswXSk7Ci0gICAgYWRkUHJvcGVydHkoImlzUlRMIiwgZGlyID09IFJpZ2h0VG9M
ZWZ0IHx8IGRpciA9PSBSaWdodFRvTGVmdEFyYWJpYywgd3JpdGVyKTsKLSAgICBhZGRTdHJpbmco
In1cbiIsIHdyaXRlcik7Ci0KLSAgICB3cml0ZXIuYWRkRGF0YShwaWNrZXJDb21tb25Kcywgc2l6
ZW9mKHBpY2tlckNvbW1vbkpzKSk7Ci0gICAgd3JpdGVyLmFkZERhdGEoY2FsZW5kYXJQaWNrZXJK
cywgc2l6ZW9mKGNhbGVuZGFyUGlja2VySnMpKTsKLSAgICBhZGRTdHJpbmcoIjwvc2NyaXB0Pjwv
Ym9keT5cbiIsIHdyaXRlcik7Ci19Ci0KLXZvaWQgQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjpzZXRW
YWx1ZUFuZENsb3NlUG9wdXAoaW50IG51bVZhbHVlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1ZhbHVl
KQotewotICAgIEFTU0VSVChtX3BvcHVwKTsKLSAgICBjbG9zZVBvcHVwKCk7Ci0gICAgaWYgKG51
bVZhbHVlID49IDApCi0gICAgICAgIGhvc3RJbnB1dCgpLT5zZXRWYWx1ZShzdHJpbmdWYWx1ZSwg
RGlzcGF0Y2hDaGFuZ2VFdmVudCk7Ci19Ci0KLXZvaWQgQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpk
aWRDbG9zZVBvcHVwKCkKLXsKLSAgICBtX3BvcHVwID0gMDsKLX0KLQogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmgK
aW5kZXggY2JmMjEzZmM1ZmNiM2UzNWYxZDZiZGYxMmVmODEyN2ViMjM5ZTM4Ny4uNDM1ZmUwMjFl
MTc2OWMwOWJjYTY1ODMyNmU5NTVhZTAxMjhiOWY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmgKQEAgLTMzLDE0ICszMywxNyBA
QAogCiAjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVu
dC5oIgotI2luY2x1ZGUgIlBhZ2VQb3B1cENsaWVudC5oIgorI2luY2x1ZGUgIlZhbHVlUGlja2Vy
LmgiCisjaW5jbHVkZSAiVmFsdWVQaWNrZXJDbGllbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MSW5wdXRFbGVtZW50Owog
Y2xhc3MgUGFnZVBvcHVwOwogCi1jbGFzcyBDYWxlbmRhclBpY2tlckVsZW1lbnQgOiBwdWJsaWMg
SFRNTERpdkVsZW1lbnQsIHB1YmxpYyBQYWdlUG9wdXBDbGllbnQgeworY2xhc3MgQ2FsZW5kYXJQ
aWNrZXJFbGVtZW50IDogcHVibGljIEhUTUxEaXZFbGVtZW50LCBwdWJsaWMgVmFsdWVQaWNrZXJD
bGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbGVuZGFyUGlja2VyRWxl
bWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+Q2FsZW5kYXJQaWNrZXJFbGVt
ZW50KCk7CkBAIC00OCwyMSArNTEsMjggQEAgcHVibGljOgogICAgIHZvaWQgY2xvc2VQb3B1cCgp
OwogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJS
SURFOwogCisgICAgLy8gQ29sb3JDaG9vc2VyQ2xpZW50IGltcGxlbWVudGF0aW9uLgorICAgIHZp
cnR1YWwgdm9pZCBkaWRQaWNrVmFsdWUoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpZEVuZFBpY2tlcigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UmVjdCBl
bGVtZW50UmVjdFJlbGF0aXZlVG9Sb290VmlldygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgU3RyaW5nIGN1cnJlbnRWYWx1ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRTaG93U3VnZ2VzdGlvbnMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFZlY3RvcjxT
dHJpbmc+IHN1Z2dlc3Rpb25WYWx1ZXMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFZl
Y3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25MYWJlbHMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGRvdWJsZSBtaW5pbXVtVmFsdWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGRv
dWJsZSBtYXhpbXVtVmFsdWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGRvdWJsZSB2
YWx1ZVN0ZXAoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVSZXF1aXJl
ZCgpIGNvbnN0IE9WRVJSSURFOworCiBwcml2YXRlOgogICAgIENhbGVuZGFyUGlja2VyRWxlbWVu
dChEb2N1bWVudCopOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0
YWNoKCkgT1ZFUlJJREU7CiAKLSAgICAvLyBQYWdlUG9wdXBDbGllbnQgZnVuY3Rpb25zOgotICAg
IHZpcnR1YWwgSW50U2l6ZSBjb250ZW50U2l6ZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCB3cml0ZURvY3VtZW50KERvY3VtZW50V3JpdGVyJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVBvcHVwKCkgT1ZFUlJJREU7Ci0KLSAgICBIVE1MSW5w
dXRFbGVtZW50KiBob3N0SW5wdXQoKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBob3N0SW5wdXQo
KSBjb25zdDsKIAotICAgIFBhZ2VQb3B1cCogbV9wb3B1cDsKKyAgICBPd25QdHI8VmFsdWVQaWNr
ZXI+IG1fcGlja2VyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAppbmRleCBkOGJjMDZmMzM2ZWI0MDBlMjJkMWVkNjYzYjQ0YWM4ZWI0YWMxYTQ4Li5lM2NkMzA2
ODEwMzAxZTcwZjgzNjMxMjk2MWFiMTRiYTEzZTI1NGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxl
bWVudC5oIgorI2luY2x1ZGUgIlZhbHVlUGlja2VyLmgiCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKICNpbmNsdWRlICJDb2xvckNob29zZXIuaCIKQEAgLTEwMyw2ICsxMDQsMTMgQEAg
UGFzc093blB0cjxDb2xvckNob29zZXI+IEVtcHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNo
b29zZXIoQ29sb3JDaG9vc2VyQ2xpZW4KIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENBTEVOREFS
X1BJQ0tFUikKK1Bhc3NPd25QdHI8VmFsdWVQaWNrZXI+IEVtcHR5Q2hyb21lQ2xpZW50OjpvcGVu
Q2FsZW5kYXJQaWNrZXJQb3B1cChWYWx1ZVBpY2tlckNsaWVudCopCit7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisjZW5kaWYKKwogdm9pZCBFbXB0eUNocm9tZUNsaWVudDo6cnVuT3BlblBhbmVs
KEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgKaW5kZXggYTAyNzk5N2ZmN2Y5NTNkMjI1OTIwNWQ4YWI2ZmJjNTM3OWFl
MDk1NS4uNThiMjI1ZGY0ODFlZjNkYTYwYjA5MDAyZGM0NTM5OTZkYTA2MjEwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMTcyLDYgKzE3MiwxMCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBQYXNzT3duUHRyPENvbG9yQ2hvb3Nlcj4gY3JlYXRlQ29sb3JDaG9vc2VyKENv
bG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IENvbG9yJikgT1ZFUlJJREU7CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFZhbHVlUGlj
a2VyPiBvcGVuQ2FsZW5kYXJQaWNrZXJQb3B1cChWYWx1ZVBpY2tlckNsaWVudCopIE9WRVJSSURF
OworI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1Jl
ZlB0cjxGaWxlQ2hvb3Nlcj4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkSWNvbkZv
ckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUljb25Mb2FkZXIqKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCmluZGV4IGNjYTRhMDkyNWY3ZGUyYmU5YjgwMWZlNDBiZDE5MDExZDIy
MWJlNWQuLjYyMjg1MGFkN2I0OGM0M2VjMDYwN2Q3YzgxYTcyM2VjYzgwYjdlYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZS5o
IgorI2luY2x1ZGUgIlZhbHVlUGlja2VyLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIK
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAg
LTQ1NCw2ICs0NTUsMTMgQEAgUGFzc093blB0cjxDb2xvckNob29zZXI+IENocm9tZTo6Y3JlYXRl
Q29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCogY2xpZW50LAogfQogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorUGFzc093blB0cjxWYWx1ZVBpY2tlcj4gQ2hyb21l
OjpvcGVuQ2FsZW5kYXJQaWNrZXJQb3B1cChWYWx1ZVBpY2tlckNsaWVudCogY2xpZW50KQorewor
ICAgIHJldHVybiBtX2NsaWVudC0+b3BlbkNhbGVuZGFyUGlja2VyUG9wdXAoY2xpZW50KTsKK30K
KyNlbmRpZgorCiB2b2lkIENocm9tZTo6cnVuT3BlblBhbmVsKEZyYW1lKiBmcmFtZSwgUGFzc1Jl
ZlB0cjxGaWxlQ2hvb3Nlcj4gZmlsZUNob29zZXIpCiB7CiAgICAgbV9jbGllbnQtPnJ1bk9wZW5Q
YW5lbChmcmFtZSwgZmlsZUNob29zZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggNTYzOGYzYTQ4
YWRkODk1OWUzMGFlYjBkMjA1YWQzZTcwYjhjYWMxOS4uMDljODc2MmYzNGFjZDlhMzU0YjQ1MjNk
ODI0YjkyMGNjNjZmN2I0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC01NCw2ICs1NCwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUG9wdXBNZW51OwogICAgIGNsYXNzIFBvcHVw
TWVudUNsaWVudDsKICAgICBjbGFzcyBTZWFyY2hQb3B1cE1lbnU7CisjaWYgRU5BQkxFKENBTEVO
REFSX1BJQ0tFUikKKyAgICBjbGFzcyBWYWx1ZVBpY2tlcjsKKyAgICBjbGFzcyBWYWx1ZVBpY2tl
ckNsaWVudDsKKyNlbmRpZgogCiAgICAgc3RydWN0IEZyYW1lTG9hZFJlcXVlc3Q7CiAgICAgc3Ry
dWN0IFZpZXdwb3J0QXJndW1lbnRzOwpAQCAtMTUwLDYgKzE1NCwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIFBhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29z
ZXIoQ29sb3JDaG9vc2VyQ2xpZW50KiwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvcik7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisgICAgICAgIFBhc3NPd25QdHI8VmFs
dWVQaWNrZXI+IG9wZW5DYWxlbmRhclBpY2tlclBvcHVwKFZhbHVlUGlja2VyQ2xpZW50Kik7Cisj
ZW5kaWYKKwogICAgICAgICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8Rmls
ZUNob29zZXI+KTsKICAgICAgICAgdm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgRmlsZUljb25Mb2FkZXIqKTsKICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGRkNmFmY2ZlMWNkZmU4YjE3NmZiNjk4
ZWJlMzYxNzAyZGRjMDg4OTEuLjY1NWU3NTBhY2EyN2IxZTVhZmQ5Y2U4NzFlMGZhMjRiMzVkZWM0
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtNjcsNiArNjcsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUG9wdXBNZW51Q2xpZW50OwogICAgIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworICAgIGNsYXNzIFZh
bHVlUGlja2VyOworICAgIGNsYXNzIFZhbHVlUGlja2VyQ2xpZW50OwogICAgIGNsYXNzIFdpZGdl
dDsKIAogICAgIHN0cnVjdCBGcmFtZUxvYWRSZXF1ZXN0OwpAQCAtMjIyLDYgKzIyNCwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxDb2xvckNob29z
ZXI+IGNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqLCBjb25zdCBDb2xvciYp
ID0gMDsKICNlbmRpZgogCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKKyAgICAgICAgdmly
dHVhbCBQYXNzT3duUHRyPFZhbHVlUGlja2VyPiBvcGVuQ2FsZW5kYXJQaWNrZXJQb3B1cChWYWx1
ZVBpY2tlckNsaWVudCopID0gMDsKKyNlbmRpZgorCiAgICAgICAgIHZpcnR1YWwgdm9pZCBydW5P
cGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPikgPSAwOwogICAgICAgICAv
LyBBc3luY2hyb25vdXMgcmVxdWVzdCB0byBsb2FkIGFuIGljb24gZm9yIHNwZWNpZmllZCBmaWxl
bmFtZXMuCiAgICAgICAgIHZpcnR1YWwgdm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgRmlsZUljb25Mb2FkZXIqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VQb3B1cENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQ
b3B1cENsaWVudC5jcHAKaW5kZXggNWI2NjZlYTQ1OTViZDZmNmI3NjIxZjI4NmIxMzI2MWNmM2Nj
MWNjNS4uMzAxZDFlZjNhMDc2NjczNzBjZmRhZDRiOGRhYWUzNTdhOTU4OGEyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUG9wdXBDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ2xpZW50LmNwcApAQCAtNjksNiArNjksMTQgQEAgdm9pZCBQ
YWdlUG9wdXBDbGllbnQ6OmFkZFByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsIHVuc2lnbmVkIHZh
bHVlLCBEb2N1bWVudFdyaXQKICAgICBhZGRMaXRlcmFsKCIsXG4iLCB3cml0ZXIpOwogfQogCit2
b2lkIFBhZ2VQb3B1cENsaWVudDo6YWRkUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSwgZG91Ymxl
IHZhbHVlLCBEb2N1bWVudFdyaXRlciYgd3JpdGVyKQoreworICAgIHdyaXRlci5hZGREYXRhKG5h
bWUsIHN0cmxlbihuYW1lKSk7CisgICAgYWRkTGl0ZXJhbCgiOiAiLCB3cml0ZXIpOworICAgIGFk
ZFN0cmluZyhTdHJpbmc6Om51bWJlcih2YWx1ZSksIHdyaXRlcik7CisgICAgYWRkTGl0ZXJhbCgi
LFxuIiwgd3JpdGVyKTsKK30KKwogdm9pZCBQYWdlUG9wdXBDbGllbnQ6OmFkZFByb3BlcnR5KGNv
bnN0IGNoYXIqIG5hbWUsIGJvb2wgdmFsdWUsIERvY3VtZW50V3JpdGVyJiB3cml0ZXIpCiB7CiAg
ICAgd3JpdGVyLmFkZERhdGEobmFtZSwgc3RybGVuKG5hbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VQb3B1cENsaWVudC5oCmluZGV4IDAyYWVlMzIyNTZjZGFmYTk2ZTE2ZDRlM2ZiNDhkNGY4NmYz
MGEzZTAuLjgzOWI0MmVjZjYxM2U1YjNkYjE2ODgyZGQxZTE2MTgyZWIwZDhkZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlUG9wdXBDbGllbnQuaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHZvaWQgYWRkSmF2YVNjcmlwdFN0cmluZyhjb25zdCBTdHJpbmcmLCBEb2N1bWVu
dFdyaXRlciYpOwogICAgIHN0YXRpYyB2b2lkIGFkZFByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUsIERvY3VtZW50V3JpdGVyJik7CiAgICAgc3RhdGljIHZvaWQg
YWRkUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSwgdW5zaWduZWQgdmFsdWUsIERvY3VtZW50V3Jp
dGVyJik7CisgICAgc3RhdGljIHZvaWQgYWRkUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSwgZG91
YmxlIHZhbHVlLCBEb2N1bWVudFdyaXRlciYpOwogICAgIHN0YXRpYyB2b2lkIGFkZFByb3BlcnR5
KGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wgdmFsdWUsIERvY3VtZW50V3JpdGVyJik7CiAgICAgc3Rh
dGljIHZvaWQgYWRkUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHZhbHVlcywgRG9jdW1lbnRXcml0ZXImKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9WYWx1ZVBpY2tlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmFs
dWVQaWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTUxNDMyZTBlYjY2YjY3NjlhNGFlYjc5MzhlMTUxMDc1
MTQxNDU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmFsdWVQ
aWNrZXIuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWYWx1ZVBpY2tlcl9oCisjZGVmaW5lIFZh
bHVlUGlja2VyX2gKKworI2luY2x1ZGUgIkludFJlY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisvLyBGb3IgcGlja2VycyBsaWtlIGNvbG9yIHBpY2tlcnMgYW5kIGRhdGUgcGlja2Vycy4K
K2NsYXNzIFZhbHVlUGlja2VyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WYWx1ZVBpY2tlcigp
IHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFBpY2tlclZhbHVlKGNvbnN0IFN0cmluZyYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kUGlja2VyKCkgPSAwOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVmFsdWVQaWNrZXJfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVmFsdWVQaWNrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ZhbHVlUGlja2VyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjBiZDdlYzYxMjY4ZjU2OGI2
YmZmNzdkZjFkZTU3NzgxZjY3ZWIyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ZhbHVlUGlja2VyQ2xpZW50LmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmFs
dWVQaWNrZXJDbGllbnRfaAorI2RlZmluZSBWYWx1ZVBpY2tlckNsaWVudF9oCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgVmFsdWVQaWNrZXJDbGllbnQgeworcHVibGljOgorICAgIHZp
cnR1YWwgflZhbHVlUGlja2VyQ2xpZW50KCkgeyB9CisKKyAgICAvLyBDYWxsZWQgd2hlbiB1c2Vy
IHBpY2tlZCBhIHZhbHVlLgorICAgIHZpcnR1YWwgdm9pZCBkaWRQaWNrVmFsdWUoY29uc3QgU3Ry
aW5nJikgPSAwOworICAgIC8vIENhbGxlZCB3aGVuIHBpY2tlciBoYXMgZW5kZWQuCisgICAgdmly
dHVhbCB2b2lkIGRpZEVuZFBpY2tlcigpID0gMDsKKyAgICAvLyBSZXR1cm5zIHRoZSByZWN0IGZv
ciB0aGUgZWxlbWVudCB0aGF0IG9yaWdpbmF0ZWQgdGhlIHBpY2tlci4KKyAgICB2aXJ0dWFsIElu
dFJlY3QgZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSBjb25zdCA9IDA7CisgICAgLy8g
UmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSB3aGljaCBzaG91bGQgYmUgc2hvd24gaW4gdGhlIGNv
bG9yIHBpY2tlci4KKyAgICB2aXJ0dWFsIFN0cmluZyBjdXJyZW50VmFsdWUoKSA9IDA7CisgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHdlIHNob3VsZCBzaG93IHN1Z2dlc3Rpb25zIHRvIHRoZSB1c2Vy
LgorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTaG93U3VnZ2VzdGlvbnMoKSBjb25zdCA9IDA7Cisg
ICAgLy8gUmV0dXJucyB0aGUgbGlzdCBvZiBzdWdnZXN0aW9uIHZhbHVlcy4KKyAgICB2aXJ0dWFs
IFZlY3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25WYWx1ZXMoKSBjb25zdCA9IDA7CisgICAgLy8gUmV0
dXJucyB0aGUgbGlzdCBvZiBzdWdnZXN0aW9uIGxhYmVscy4KKyAgICB2aXJ0dWFsIFZlY3RvcjxT
dHJpbmc+IHN1Z2dlc3Rpb25MYWJlbHMoKSBjb25zdCA9IDA7CisgICAgLy8gUmV0dXJucyB0aGUg
bWluaW11bSBwaWNrYWJsZSB2YWx1ZS4KKyAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtVmFsdWUo
KSBjb25zdCA9IDA7CisgICAgLy8gUmV0dXJucyB0aGUgbWF4aW11bSBwaWNrYWJsZSB2YWx1ZS4K
KyAgICB2aXJ0dWFsIGRvdWJsZSBtYXhpbXVtVmFsdWUoKSBjb25zdCA9IDA7CisgICAgLy8gUmV0
dXJucyB0aGUgdmFsdWUgc3RlcCBzaXplLgorICAgIHZpcnR1YWwgZG91YmxlIHZhbHVlU3RlcCgp
IGNvbnN0ID0gMDsKKyAgICAvLyBSZXR1cm5zIGlmIHRoZSB2YWx1ZSBpcyByZXF1aXJlZC4KKyAg
ICB2aXJ0dWFsIGJvb2wgdmFsdWVSZXF1aXJlZCgpIGNvbnN0ID0gMDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFZhbHVlUGlja2VyQ2xpZW50X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cAppbmRleCBiOTg0YWZjODYzZTZlZTVhNDJkZGU3MjRiY2VlNjAzZDZi
YjQ1YzNkLi45MzVjZDlhNThmOTk5ZTJlYWZjYzZhYTdkMDdlMGU0ZmExN2FlMDg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0zNTgsNiArMzU4LDggQEAKICAgICAgICAgICAgICAg
ICAnc3JjL0JhdHRlcnlDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvQmxvYlJl
Z2lzdHJ5UHJveHkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0Jsb2JSZWdpc3RyeVByb3h5
LmgnLAorICAgICAgICAgICAgICAgICdzcmMvQ2FsZW5kYXJQaWNrZXJQb3B1cC5jcHAnLAorICAg
ICAgICAgICAgICAgICdzcmMvQ2FsZW5kYXJQaWNrZXJQb3B1cC5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0Nocm9t
ZUNsaWVudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9DaHJvbWl1bUN1cnJlbnRUaW1l
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DYWxlbmRhclBp
Y2tlclBvcHVwLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NhbGVuZGFyUGlja2Vy
UG9wdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2MTFiODYwNzYxY2QwNDkzMDZmMTk4ZTE5MGRkZGQ4ZjQx
Y2I2MzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DYWxl
bmRhclBpY2tlclBvcHVwLmNwcApAQCAtMCwwICsxLDEzNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDYWxlbmRhclBpY2tlclBvcHVwLmgiCisKKyNpZiBFTkFCTEUoQ0FMRU5EQVJf
UElDS0VSKQorCisjaW5jbHVkZSAiQ2FsZW5kYXJQaWNrZXIuaCIKKyNpbmNsdWRlICJDaHJvbWVD
bGllbnRJbXBsLmgiCisjaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKKyNpbmNsdWRlICJMYW5n
dWFnZS5oIgorI2luY2x1ZGUgIkxvY2FsaXplZERhdGUuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgorI2luY2x1ZGUgIlBpY2tlckNvbW1vbi5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1l
LmgiCisjaW5jbHVkZSAiVmFsdWVQaWNrZXJDbGllbnQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViTG9jYWxpemVkU3Ry
aW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitDYWxlbmRhclBpY2tlclBvcHVwOjpDYWxlbmRhclBpY2tlclBvcHVwKENocm9tZUNs
aWVudEltcGwqIGNocm9tZUNsaWVudCwgV2ViQ29yZTo6VmFsdWVQaWNrZXJDbGllbnQqIGNsaWVu
dCkKKyAgICA6IG1fY2hyb21lQ2xpZW50KGNocm9tZUNsaWVudCkKKyAgICAsIG1fY2xpZW50KGNs
aWVudCkKKyAgICAsIG1fcG9wdXAoMCkKK3sKKyAgICBBU1NFUlQobV9jaHJvbWVDbGllbnQpOwor
ICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgbV9wb3B1cCA9IG1fY2hyb21lQ2xpZW50LT5vcGVu
UGFnZVBvcHVwKHRoaXMsIG1fY2xpZW50LT5lbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290Vmlldygp
KTsKK30KKworQ2FsZW5kYXJQaWNrZXJQb3B1cDo6fkNhbGVuZGFyUGlja2VyUG9wdXAoKQorewor
fQorCit2b2lkIENhbGVuZGFyUGlja2VyUG9wdXA6OnNldFBpY2tlclZhbHVlKGNvbnN0IFN0cmlu
ZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBDYWxlbmRhclBpY2tlclBv
cHVwOjplbmRQaWNrZXIoKQoreworICAgIGlmICghbV9wb3B1cCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fY2hyb21lQ2xpZW50LT5jbG9zZVBhZ2VQb3B1cChtX3BvcHVwKTsKK30KKworV2ViQ29y
ZTo6SW50U2l6ZSBDYWxlbmRhclBpY2tlclBvcHVwOjpjb250ZW50U2l6ZSgpCit7CisgICAgcmV0
dXJuIFdlYkNvcmU6OkludFNpemUoMCwgMCk7Cit9CisKK3ZvaWQgQ2FsZW5kYXJQaWNrZXJQb3B1
cDo6d3JpdGVEb2N1bWVudChXZWJDb3JlOjpEb2N1bWVudFdyaXRlciYgd3JpdGVyKQoreworICAg
IFdlYkNvcmU6OkRhdGVDb21wb25lbnRzIGRhdGU7CisgICAgZGF0ZS5zZXRNaWxsaXNlY29uZHNT
aW5jZUVwb2NoRm9yRGF0ZShtX2NsaWVudC0+bWluaW11bVZhbHVlKCkpOworICAgIFN0cmluZyBt
aW5TdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCk7CisgICAgZGF0ZS5zZXRNaWxsaXNlY29uZHNTaW5j
ZUVwb2NoRm9yRGF0ZShtX2NsaWVudC0+bWF4aW11bVZhbHVlKCkpOworICAgIFN0cmluZyBtYXhT
dHJpbmcgPSBkYXRlLnRvU3RyaW5nKCk7CisgICAgZG91YmxlIHN0ZXAgPSBtX2NsaWVudC0+dmFs
dWVTdGVwKCk7CisKKyAgICBhZGRTdHJpbmcoIjwhRE9DVFlQRSBodG1sPjxoZWFkPjxtZXRhIGNo
YXJzZXQ9J1VURi04Jz48c3R5bGU+XG4iLCB3cml0ZXIpOworICAgIHdyaXRlci5hZGREYXRhKFdl
YkNvcmU6OnBpY2tlckNvbW1vbkNzcywgc2l6ZW9mKFdlYkNvcmU6OnBpY2tlckNvbW1vbkNzcykp
OworICAgIHdyaXRlci5hZGREYXRhKFdlYkNvcmU6OmNhbGVuZGFyUGlja2VyQ3NzLCBzaXplb2Yo
V2ViQ29yZTo6Y2FsZW5kYXJQaWNrZXJDc3MpKTsKKyAgICBDU3RyaW5nIGV4dHJhU3R5bGUgPSBX
ZWJDb3JlOjpSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPmV4dHJhQ2FsZW5kYXJQaWNrZXJT
dHlsZVNoZWV0KCk7CisgICAgaWYgKGV4dHJhU3R5bGUubGVuZ3RoKCkpCisgICAgICAgIHdyaXRl
ci5hZGREYXRhKGV4dHJhU3R5bGUuZGF0YSgpLCBleHRyYVN0eWxlLmxlbmd0aCgpKTsKKyAgICBh
ZGRTdHJpbmcoIjwvc3R5bGU+PC9oZWFkPjxib2R5PjxkaXYgaWQ9bWFpbj5Mb2FkaW5nLi4uPC9k
aXY+PHNjcmlwdD5cbiIKKyAgICAgICAgICAgICAgICJ3aW5kb3cuZGlhbG9nQXJndW1lbnRzID0g
e1xuIiwgd3JpdGVyKTsKKyAgICBhZGRQcm9wZXJ0eSgibWluIiwgbWluU3RyaW5nLCB3cml0ZXIp
OworICAgIGFkZFByb3BlcnR5KCJtYXgiLCBtYXhTdHJpbmcsIHdyaXRlcik7CisgICAgYWRkUHJv
cGVydHkoInN0ZXAiLCBzdGVwLCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5KCJyZXF1aXJlZCIs
IG1fY2xpZW50LT52YWx1ZVJlcXVpcmVkKCksIHdyaXRlcik7CisgICAgYWRkUHJvcGVydHkoImN1
cnJlbnRWYWx1ZSIsIG1fY2xpZW50LT5jdXJyZW50VmFsdWUoKSwgd3JpdGVyKTsKKyAgICBhZGRQ
cm9wZXJ0eSgibG9jYWxlIiwgV2ViQ29yZTo6ZGVmYXVsdExhbmd1YWdlKCksIHdyaXRlcik7Cisg
ICAgV2ViQ29yZTo6UGFnZVBvcHVwQ2xpZW50OjphZGRQcm9wZXJ0eSgidG9kYXlMYWJlbCIsIFBs
YXRmb3JtOjpjdXJyZW50KCktPnF1ZXJ5TG9jYWxpemVkU3RyaW5nKFdlYkxvY2FsaXplZFN0cmlu
Zzo6Q2FsZW5kYXJUb2RheSksIHdyaXRlcik7CisgICAgV2ViQ29yZTo6UGFnZVBvcHVwQ2xpZW50
OjphZGRQcm9wZXJ0eSgiY2xlYXJMYWJlbCIsIFBsYXRmb3JtOjpjdXJyZW50KCktPnF1ZXJ5TG9j
YWxpemVkU3RyaW5nKFdlYkxvY2FsaXplZFN0cmluZzo6Q2FsZW5kYXJDbGVhciksIHdyaXRlcik7
CisgICAgYWRkUHJvcGVydHkoIndlZWtTdGFydERheSIsIFdlYkNvcmU6OmZpcnN0RGF5T2ZXZWVr
KCksIHdyaXRlcik7CisgICAgYWRkUHJvcGVydHkoIm1vbnRoTGFiZWxzIiwgV2ViQ29yZTo6bW9u
dGhMYWJlbHMoKSwgd3JpdGVyKTsKKyAgICBhZGRQcm9wZXJ0eSgiZGF5TGFiZWxzIiwgV2ViQ29y
ZTo6d2Vla0RheVNob3J0TGFiZWxzKCksIHdyaXRlcik7CisgICAgRGlyZWN0aW9uIGRpciA9IGRp
cmVjdGlvbihXZWJDb3JlOjptb250aExhYmVscygpWzBdWzBdKTsKKyAgICBhZGRQcm9wZXJ0eSgi
aXNSVEwiLCBkaXIgPT0gUmlnaHRUb0xlZnQgfHwgZGlyID09IFJpZ2h0VG9MZWZ0QXJhYmljLCB3
cml0ZXIpOworICAgIGFkZFN0cmluZygifVxuIiwgd3JpdGVyKTsKKworICAgIHdyaXRlci5hZGRE
YXRhKFdlYkNvcmU6OnBpY2tlckNvbW1vbkpzLCBzaXplb2YoV2ViQ29yZTo6cGlja2VyQ29tbW9u
SnMpKTsKKyAgICB3cml0ZXIuYWRkRGF0YShXZWJDb3JlOjpjYWxlbmRhclBpY2tlckpzLCBzaXpl
b2YoV2ViQ29yZTo6Y2FsZW5kYXJQaWNrZXJKcykpOworICAgIGFkZFN0cmluZygiPC9zY3JpcHQ+
PC9ib2R5PlxuIiwgd3JpdGVyKTsKK30KKwordm9pZCBDYWxlbmRhclBpY2tlclBvcHVwOjpzZXRW
YWx1ZUFuZENsb3NlUG9wdXAoaW50IG51bVZhbHVlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1ZhbHVl
KQoreworICAgIGlmIChudW1WYWx1ZSA+PSAwKQorICAgICAgICBtX2NsaWVudC0+ZGlkUGlja1Zh
bHVlKHN0cmluZ1ZhbHVlKTsKKyAgICBlbmRQaWNrZXIoKTsKK30KKwordm9pZCBDYWxlbmRhclBp
Y2tlclBvcHVwOjpkaWRDbG9zZVBvcHVwKCkKK3sgICAgCisgICAgbV9jbGllbnQtPmRpZEVuZFBp
Y2tlcigpOworICAgIG1fcG9wdXAgPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9DYWxlbmRhclBpY2tlclBvcHVwLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9DYWxlbmRhclBpY2tlclBvcHVwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRhOWZlZjU3N2Mz
NDNjYzgwZjk0ZDUyY2JmMjQ3Mjg5MjlhZWJlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0NhbGVuZGFyUGlja2VyUG9wdXAuaApAQCAtMCwwICsxLDczIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBDYWxlbmRhclBpY2tlclBvcHVwX2gKKyNkZWZpbmUgQ2FsZW5kYXJQaWNrZXJQb3B1
cF9oCisKKyNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKyNpbmNsdWRlICJWYWx1ZVBpY2tl
ci5oIgorCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgUGFnZVBvcHVwOworY2xhc3MgVmFsdWVQaWNrZXJDbGllbnQ7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBDaHJvbWVDbGllbnRJbXBsOworCitjbGFzcyBDYWxlbmRh
clBpY2tlclBvcHVwIDogcHVibGljIFdlYkNvcmU6OlZhbHVlUGlja2VyLCBwdWJsaWMgV2ViQ29y
ZTo6UGFnZVBvcHVwQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBDYWxlbmRhclBpY2tlclBvcHVwKENo
cm9tZUNsaWVudEltcGwqLCBXZWJDb3JlOjpWYWx1ZVBpY2tlckNsaWVudCopOworICAgIHZpcnR1
YWwgfkNhbGVuZGFyUGlja2VyUG9wdXAoKTsKKworICAgIC8vIFZhbHVlUGlja2VyIGZ1bmN0aW9u
czoKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGlja2VyVmFsdWUoY29uc3QgU3RyaW5nJikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGVuZFBpY2tlcigpIE9WRVJSSURFOworCitwcml2YXRlOgor
ICAgIC8vIFBhZ2VQb3B1cENsaWVudCBmdW5jdGlvbnM6CisgICAgdmlydHVhbCBXZWJDb3JlOjpJ
bnRTaXplIGNvbnRlbnRTaXplKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdyaXRlRG9j
dW1lbnQoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXImKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENsb3NlUG9wdXAoKSBPVkVSUklERTsKKworICAgIENocm9tZUNs
aWVudEltcGwqIG1fY2hyb21lQ2xpZW50OworICAgIFdlYkNvcmU6OlZhbHVlUGlja2VyQ2xpZW50
KiBtX2NsaWVudDsKKyAgICBXZWJDb3JlOjpQYWdlUG9wdXAqIG1fcG9wdXA7Cit9OworCit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorCisjZW5kaWYgLy8gQ2FsZW5kYXJQ
aWNrZXJQb3B1cF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVu
dEltcGwuY3BwCmluZGV4IGRjNWFmYzg4NjU1YTI4NTQ5OTUzYjY1YjA0ZTY5Y2FlZjVlZmQ0ZjAu
LjA3MTFhMGQ1NGZkN2U3YmI0MDE3NjgxZGY1ZGNkOGVmNzE2MWFlZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBAIC0zOSw2ICszOSw3
IEBACiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29sb3JDaG9v
c2VyVUlDb250cm9sbGVyLmgiCiAjZW5kaWYKKyNpbmNsdWRlICJDYWxlbmRhclBpY2tlclBvcHVw
LmgiCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkN1cnNvci5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlVHJhY2tlci5oIgpAQCAtNzEsNiArNzIsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0RmllbGREZWNv
cmF0aW9uRWxlbWVudC5oIgorI2luY2x1ZGUgIlZhbHVlUGlja2VyLmgiCiAjaW5jbHVkZSAiV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogI2lu
Y2x1ZGUgIldlYkNvbG9yQ2hvb3Nlci5oIgpAQCAtNzA0LDYgKzcwNiwxMyBAQCBQYXNzT3duUHRy
PFdlYkNvbG9yQ2hvb3Nlcj4gQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlV2ViQ29sb3JDaG9vc2Vy
KFdlYkNvbG9yQ2hvbwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQor
UGFzc093blB0cjxXZWJDb3JlOjpWYWx1ZVBpY2tlcj4gQ2hyb21lQ2xpZW50SW1wbDo6b3BlbkNh
bGVuZGFyUGlja2VyUG9wdXAoV2ViQ29yZTo6VmFsdWVQaWNrZXJDbGllbnQqIHBpY2tlckNsaWVu
dCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENhbGVuZGFyUGlja2VyUG9wdXAodGhpcywg
cGlja2VyQ2xpZW50KSk7Cit9CisjZW5kaWYKKwogdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpydW5P
cGVuUGFuZWwoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBmaWxlQ2hvb3Nl
cikKIHsKICAgICBXZWJWaWV3Q2xpZW50KiBjbGllbnQgPSBtX3dlYlZpZXctPmNsaWVudCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCmluZGV4IDYy
YjM5OTg4NmJiYzQyY2NjNzcyNDFiYzdlMzliYjgxODc2ZDA1OTEuLmMwYzIxZDUxODU2Y2I1Njhh
Y2NlNTlhNmFlODQ0NDQ3NWFlYmE3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmgKQEAgLTUwLDYgKzUwLDggQEAgY2xhc3MgUG9wdXBDb250YWlu
ZXI7CiBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CiBjbGFzcyBSZW5kZXJCb3g7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKK2NsYXNzIFZhbHVlUGlja2VyOworY2xhc3MgVmFsdWVQaWNrZXJDbGllbnQ7
CiBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiB9CiAKQEAgLTE0NCw2ICsxNDYsOSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcj4gY3JlYXRlQ29s
b3JDaG9vc2VyKFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJikgT1ZFUlJJREU7CiAgICAgUGFzc093blB0cjxXZWJDb2xvckNob29zZXI+IGNyZWF0ZVdl
YkNvbG9yQ2hvb3NlcihXZWJDb2xvckNob29zZXJDbGllbnQqLCBjb25zdCBXZWJDb2xvciYpOwog
I2VuZGlmCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKKyAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8V2ViQ29yZTo6VmFsdWVQaWNrZXI+IG9wZW5DYWxlbmRhclBpY2tlclBvcHVwKFdlYkNvcmU6
OlZhbHVlUGlja2VyQ2xpZW50KikgT1ZFUlJJREU7CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQg
cnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1lKiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hv
b3Nlcj4pOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxX
VEY6OlN0cmluZz4mLCBXZWJDb3JlOjpGaWxlSWNvbkxvYWRlciopOwogI2lmIEVOQUJMRShESVJF
Q1RPUllfVVBMT0FEKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161921</attachid>
            <date>2012-09-03 07:01:43 -0700</date>
            <delta_ts>2012-09-03 14:10:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95681-20120903230126.patch</filename>
            <type>text/plain</type>
            <size>37399</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0MGQ1ZDNmYWM4Y2Rk
M2Y1MjA3ODMyZjYwOTk4YWQyOWIzNzZmNS4uNGMzMmNjNDAzMjI2MzNjNzNhNzcwZDhiNDQxN2Y2
YjY1M2RjNjJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTA5LTAzICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgUGFnZVBvcHVw
Q2xpZW50IHRvIFdlYktpdCBsYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTU2ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZlIFBhZ2VQb3B1cENsaWVudCB0byBXZWJLaXQgbGF5ZXIgYW5kIGlu
dHJvZHVjZSBWYWx1ZVBpY2tlciB0aGF0IHdpbGwKKyAgICAgICAgYmUgc2hhcmVkIHdpdGggdGhl
IHZhcmlvdXMgcGlja2VycyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4g
Q292ZXJlZCBieSBleGlzdGluZyBjYWxlbmRhciBwaWNrZXIgdGVzdHMuCisKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6Q2FsZW5kYXJQ
aWNrZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6
fkNhbGVuZGFyUGlja2VyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6Omhvc3RJbnB1dCk6IENoYW5nZWQgdG8gY29uc3QuCisgICAgICAgIChXZWJDb3Jl
OjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRpZFBpY2tWYWx1ZSk6IENhbGxlZCB3aGVuIHVzZXIg
cGlja2VkIGEgY29sb3IgaW4gdGhlIHZhbHVlIHBpY2tlci4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50OjpkaWRFbmRQaWNrZXIpOiBD
YWxsZWQgd2hlbiBwaWNrZXIgZW5kZWQuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6OmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KTogUmV0dXJucyByZWN0IG9m
IGlucHV0IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6
OmN1cnJlbnRWYWx1ZSk6IFJldHVybiBjdXJyZW50IHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6
Q2FsZW5kYXJQaWNrZXJFbGVtZW50OjpzaG91bGRTaG93U3VnZ2VzdGlvbnMpOiBSZXR1cm5zIGZh
bHNlIGZvciBub3cuIFdpbGwgcmV0dXJuIHRydWUgd2hlbiB3ZSBpbXBsZW1lbnQgdGhlIHN1Z2dl
c3Rpb24gcGlja2VyLgorICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpz
dWdnZXN0aW9uVmFsdWVzKTogUmV0dXJucyBlbXB0eSB2ZWN0b3IgZm9yIG5vdy4KKyAgICAgICAg
KFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6c3VnZ2VzdGlvbkxhYmVscyk6IFJldHVy
bnMgZW1wdHkgdmVjdG9yIGZvciBub3cuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6Om1pbmltdW1WYWx1ZSk6IFJldHVybnMgdGhlIG1pbmltdW0gdmFsdWUgdGhhdCBz
aG91bGQgYmUgcGlja2FibGUgaW4gdGhlIHBpY2tlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhbGVu
ZGFyUGlja2VyRWxlbWVudDo6bWF4aW11bVZhbHVlKTogUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1
ZSB0aGF0IHNob3VsZCBiZSBwaWNrYWJsZSBpbiB0aGUgcGlja2VyLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50Ojp2YWx1ZVN0ZXApOiBSZXR1cm5zIHRoZSB2YWx1ZSBz
dGVwIHNpemUuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OnZhbHVl
UmVxdWlyZWQpOiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IGEgdmFsdWUgaXMgcmVxdWlyZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6Om9wZW5Qb3B1cCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmNsb3NlUG9wdXApOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5oOgorICAgICAgICAoQ2FsZW5k
YXJQaWNrZXJFbGVtZW50KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6Om9w
ZW5DYWxlbmRhclBpY2tlclBvcHVwKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6
CisgICAgICAgIChFbXB0eUNocm9tZUNsaWVudCk6CisgICAgICAgICogcGFnZS9DaHJvbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6Om9wZW5DYWxl
bmRhclBpY2tlclBvcHVwKToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChDaHJvbWUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENocm9tZUNsaWVudCk6CisgICAgICAgICog
cGFnZS9QYWdlUG9wdXBDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQ2xp
ZW50OjphZGRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwYWdlL1Bh
Z2VQb3B1cENsaWVudC5oOgorICAgICAgICAoUGFnZVBvcHVwQ2xpZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9WYWx1ZVBpY2tlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoVmFsdWVQaWNrZXIpOiBSZXByZXNlbnRzIHBpY2tlcnMgbGlrZSBjb2xvciBwaWNrZXIgYW5k
IGRhdGUgcGlja2VyLgorICAgICAgICAoV2ViQ29yZTo6VmFsdWVQaWNrZXI6On5WYWx1ZVBpY2tl
cik6CisgICAgICAgICogcGxhdGZvcm0vVmFsdWVQaWNrZXJDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoVmFsdWVQaWNrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
VmFsdWVQaWNrZXJDbGllbnQ6On5WYWx1ZVBpY2tlckNsaWVudCk6CisKIDIwMTItMDktMDMgIEFs
ZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBVbmhpZGUgaGlkZGVuIGNoYXJhY3RlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggZDVlNDE4ZGMzZTUyMWZkMTg0NDQ4NmE5ZTZjZWU0YTExYTIyMTEyZC4uMGM0OGQwMzA3
OWE5ODg1NjBiYjYyMzUxY2FhOTY2ZGZlZjNjNzdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMi0wOS0wMyAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlA
d2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFBhZ2VQb3B1cENsaWVudCB0byBXZWJLaXQgbGF5
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Njgx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJL
aXQuZ3lwOgorICAgICAgICAqIHNyYy9DYWxlbmRhclBpY2tlclBvcHVwLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpDYWxlbmRhclBpY2tlclBvcHVwOjpD
YWxlbmRhclBpY2tlclBvcHVwKToKKyAgICAgICAgKFdlYktpdDo6Q2FsZW5kYXJQaWNrZXJQb3B1
cDo6fkNhbGVuZGFyUGlja2VyUG9wdXApOgorICAgICAgICAoV2ViS2l0OjpDYWxlbmRhclBpY2tl
clBvcHVwOjpzZXRQaWNrZXJWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2Vy
UG9wdXA6OmVuZFBpY2tlcik6CisgICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2VyUG9wdXA6
OmNvbnRlbnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6Q2FsZW5kYXJQaWNrZXJQb3B1cDo6d3Jp
dGVEb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2VyUG9wdXA6OnNldFZh
bHVlQW5kQ2xvc2VQb3B1cCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2VyUG9wdXA6
OmRpZENsb3NlUG9wdXApOgorICAgICAgICAqIHNyYy9DYWxlbmRhclBpY2tlclBvcHVwLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVu
dC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQ2Fs
ZW5kYXJQaWNrZXJQb3B1cCk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6b3Bl
bkNhbGVuZGFyUGlja2VyUG9wdXApOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENocm9tZUNsaWVudEltcGwpOgorCiAyMDEy
LTA5LTAxICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBjaHJvbWl1bSBidWlsZGZpeCB3aGVuIHVzZV9saWJjY19mb3JfY29tcG9zaXRv
cj0xCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMzA2MTk1NGYxMTgxODU3OGMyNTE4YjBmODk2NzVmODE2
NjJiZWRmMi4uNDRhMTIwNWM4YWMzZTc5ODE0MzE1ZDhkN2Q2NWRiNzkwZmVlM2U1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtMzM3LDYgKzMzNyw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vVGhy
ZWFkR2xvYmFsRGF0YS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9UaW1lci5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9UcmVlU2hhcmVkLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1Zh
bHVlUGlja2VyLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1ZhbHVlUGlja2VyQ2xpZW50Lmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Zpc2l0ZWRMaW5rU3RyYXRlZ3kuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vVmlzaXRlZExpbmtzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1dp
ZGdldC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFy
UGlja2VyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBp
Y2tlckVsZW1lbnQuY3BwCmluZGV4IGYzMjQ0ZGU2YjBmZDczMDFhZGRjODc5MTYxNDJiYzAxYTUw
Yzg4YTIuLjU0ZTVkZWE5ZjA2NzdhOGM5NGE1MTc2NzM1YmNmNzI4NGI4ZTA5NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNw
cApAQCAtMzMsMjIgKzMzLDEyIEBACiAKICNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQogCi0j
aW5jbHVkZSAiQ2FsZW5kYXJQaWNrZXIuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKLSNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUg
IkV2ZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxl
bWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0j
aW5jbHVkZSAiTG9jYWxpemVkRGF0ZS5oIgotI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUGlja2VyQ29tbW9uLmgiCiAjaW5jbHVkZSAi
UmVuZGVyRGV0YWlsc01hcmtlci5oIgotI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCi0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmlj
b2RlOwogCkBAIC01OCw3ICs0OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIGlu
bGluZSBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OkNhbGVuZGFyUGlja2VyRWxlbWVudChEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRGl2RWxlbWVudChkaXZUYWcsIGRvY3VtZW50KQotICAg
ICwgbV9wb3B1cCgwKQorICAgICwgbV9waWNrZXIobnVsbHB0cikKIHsKICAgICBzZXRTaGFkb3dQ
c2V1ZG9JZCgiLXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yIik7CiB9CkBAIC03MSw3
ICs2MSw3IEBAIFBhc3NSZWZQdHI8Q2FsZW5kYXJQaWNrZXJFbGVtZW50PiBDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lCiBDYWxlbmRhclBpY2tlckVsZW1lbnQ6
On5DYWxlbmRhclBpY2tlckVsZW1lbnQoKQogewogICAgIGNsb3NlUG9wdXAoKTsKLSAgICBBU1NF
UlQoIW1fcG9wdXApOworICAgIEFTU0VSVCghbV9waWNrZXIpOwogfQogCiBSZW5kZXJPYmplY3Qq
IENhbGVuZGFyUGlja2VyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5h
LCBSZW5kZXJTdHlsZSopCkBAIC03OSw3ICs2OSw3IEBAIFJlbmRlck9iamVjdCogQ2FsZW5kYXJQ
aWNrZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0
CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckRldGFpbHNNYXJrZXIodGhpcyk7CiB9CiAK
LWlubGluZSBIVE1MSW5wdXRFbGVtZW50KiBDYWxlbmRhclBpY2tlckVsZW1lbnQ6Omhvc3RJbnB1
dCgpCitpbmxpbmUgSFRNTElucHV0RWxlbWVudCogQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpob3N0
SW5wdXQoKSBjb25zdAogewogICAgIC8vIEphdmFTY3JpcHQgY29kZSBjYW4ndCBjcmVhdGUgQ2Fs
ZW5kYXJQaWNrZXJFbGVtZW50IG9iamVjdHMuIFRoaXMgaXMKICAgICAvLyBhbHdheXMgaW4gc2hh
ZG93IG9mIDxpbnB1dD4uCkBAIC0xMTQsOSArMTA0LDY5IEBAIGJvb2wgQ2FsZW5kYXJQaWNrZXJF
bGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiAgICAgcmV0dXJuIEhUTUxE
aXZFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpOwogfQogCit2b2lkIENh
bGVuZGFyUGlja2VyRWxlbWVudDo6ZGlkUGlja1ZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7
CisgICAgaG9zdElucHV0KCktPnNldFZhbHVlKHZhbHVlLCBEaXNwYXRjaENoYW5nZUV2ZW50KTsK
K30KKwordm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRpZEVuZFBpY2tlcigpCit7CisgICAg
bV9waWNrZXIuY2xlYXIoKTsKK30KKworSW50UmVjdCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmVs
ZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkgY29uc3QKK3sKKyAgICBpZiAoIWRvY3VtZW50
KCktPnZpZXcoKSkKKyAgICAgICAgcmV0dXJuIEludFJlY3QoMCwgMCwgMCwgMCk7CisgICAgcmV0
dXJuIGRvY3VtZW50KCktPnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGhvc3RJbnB1dCgpLT5n
ZXRQaXhlbFNuYXBwZWRSZWN0KCkpOworfQorCitTdHJpbmcgQ2FsZW5kYXJQaWNrZXJFbGVtZW50
OjpjdXJyZW50VmFsdWUoKQoreworICAgIHJldHVybiBob3N0SW5wdXQoKS0+dmFsdWUoKTsKK30K
KworYm9vbCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OnNob3VsZFNob3dTdWdnZXN0aW9ucygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitWZWN0b3I8U3RyaW5nPiBDYWxlbmRhclBp
Y2tlckVsZW1lbnQ6OnN1Z2dlc3Rpb25WYWx1ZXMoKSBjb25zdAoreworICAgIHJldHVybiBWZWN0
b3I8U3RyaW5nPigpOworfQorCitWZWN0b3I8U3RyaW5nPiBDYWxlbmRhclBpY2tlckVsZW1lbnQ6
OnN1Z2dlc3Rpb25MYWJlbHMoKSBjb25zdAoreworICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigp
OworfQorCitkb3VibGUgQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjptaW5pbXVtVmFsdWUoKSBjb25z
dAoreworICAgIHJldHVybiBob3N0SW5wdXQoKS0+bWluaW11bSgpOworfQorCitkb3VibGUgQ2Fs
ZW5kYXJQaWNrZXJFbGVtZW50OjptYXhpbXVtVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBo
b3N0SW5wdXQoKS0+bWF4aW11bSgpOworfQorCitkb3VibGUgQ2FsZW5kYXJQaWNrZXJFbGVtZW50
Ojp2YWx1ZVN0ZXAoKSBjb25zdAoreworICAgIERlY2ltYWwgc3RlcDsKKyAgICBpZiAoaG9zdElu
cHV0KCktPmdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApKQorICAgICAgICByZXR1cm4gMS4wOwor
ICAgIHJldHVybiBzdGVwLnRvRG91YmxlKCk7Cit9CisKK2Jvb2wgQ2FsZW5kYXJQaWNrZXJFbGVt
ZW50Ojp2YWx1ZVJlcXVpcmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaG9zdElucHV0KCktPnJl
cXVpcmVkKCk7Cit9CisKIHZvaWQgQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjpvcGVuUG9wdXAoKQog
ewotICAgIGlmIChtX3BvcHVwKQorICAgIGlmIChtX3BpY2tlcikKICAgICAgICAgcmV0dXJuOwog
ICAgIGlmICghZG9jdW1lbnQoKS0+cGFnZSgpKQogICAgICAgICByZXR1cm47CkBAIC0xMjUsMjAg
KzE3NSwxNCBAQCB2b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6b3BlblBvcHVwKCkKICAgICAg
ICAgcmV0dXJuOwogICAgIGlmICghZG9jdW1lbnQoKS0+dmlldygpKQogICAgICAgICByZXR1cm47
Ci0gICAgSW50UmVjdCBlbGVtZW50UmVjdEluUm9vdFZpZXcgPSBkb2N1bWVudCgpLT52aWV3KCkt
PmNvbnRlbnRzVG9Sb290Vmlldyhob3N0SW5wdXQoKS0+Z2V0UGl4ZWxTbmFwcGVkUmVjdCgpKTsK
LSAgICBtX3BvcHVwID0gY2hyb21lLT5jbGllbnQoKS0+b3BlblBhZ2VQb3B1cCh0aGlzLCBlbGVt
ZW50UmVjdEluUm9vdFZpZXcpOworICAgIG1fcGlja2VyID0gY2hyb21lLT5vcGVuQ2FsZW5kYXJQ
aWNrZXJQb3B1cCh0aGlzKTsKIH0KIAogdm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmNsb3Nl
UG9wdXAoKQogewotICAgIGlmICghbV9wb3B1cCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICgh
ZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgQ2hyb21lKiBjaHJvbWUg
PSBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpOwotICAgIGlmICghY2hyb21lKQorICAgIGlm
ICghbV9waWNrZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBjaHJvbWUtPmNsaWVudCgpLT5jbG9z
ZVBhZ2VQb3B1cChtX3BvcHVwKTsKKyAgICBtX3BpY2tlci0+ZW5kUGlja2VyKCk7CiB9CiAKIHZv
aWQgQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjpkZXRhY2goKQpAQCAtMTQ3LDY3ICsxOTEsNiBAQCB2
b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6ZGV0YWNoKCkKICAgICBIVE1MRGl2RWxlbWVudDo6
ZGV0YWNoKCk7CiB9CiAKLUludFNpemUgQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpjb250ZW50U2l6
ZSgpCi17Ci0gICAgcmV0dXJuIEludFNpemUoMCwgMCk7Ci19Ci0KLXZvaWQgQ2FsZW5kYXJQaWNr
ZXJFbGVtZW50Ojp3cml0ZURvY3VtZW50KERvY3VtZW50V3JpdGVyJiB3cml0ZXIpCi17Ci0gICAg
SFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBob3N0SW5wdXQoKTsKLSAgICBEYXRlQ29tcG9uZW50
cyBkYXRlOwotICAgIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUoaW5wdXQt
Pm1pbmltdW0oKSk7Ci0gICAgU3RyaW5nIG1pblN0cmluZyA9IGRhdGUudG9TdHJpbmcoKTsKLSAg
ICBkYXRlLnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlKGlucHV0LT5tYXhpbXVtKCkp
OwotICAgIFN0cmluZyBtYXhTdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCk7Ci0gICAgRGVjaW1hbCBz
dGVwOwotICAgIFN0cmluZyBzdGVwU3RyaW5nID0gaW5wdXQtPmZhc3RHZXRBdHRyaWJ1dGUoc3Rl
cEF0dHIpOwotICAgIGlmIChzdGVwU3RyaW5nLmlzRW1wdHkoKSB8fCAhaW5wdXQtPmdldEFsbG93
ZWRWYWx1ZVN0ZXAoJnN0ZXApKQotICAgICAgICBzdGVwU3RyaW5nID0gIjEiOwotCi0gICAgYWRk
U3RyaW5nKCI8IURPQ1RZUEUgaHRtbD48aGVhZD48bWV0YSBjaGFyc2V0PSdVVEYtOCc+PHN0eWxl
PlxuIiwgd3JpdGVyKTsKLSAgICB3cml0ZXIuYWRkRGF0YShwaWNrZXJDb21tb25Dc3MsIHNpemVv
ZihwaWNrZXJDb21tb25Dc3MpKTsKLSAgICB3cml0ZXIuYWRkRGF0YShjYWxlbmRhclBpY2tlckNz
cywgc2l6ZW9mKGNhbGVuZGFyUGlja2VyQ3NzKSk7Ci0gICAgaWYgKGRvY3VtZW50KCktPnBhZ2Uo
KSkgewotICAgICAgICBDU3RyaW5nIGV4dHJhU3R5bGUgPSBkb2N1bWVudCgpLT5wYWdlKCktPnRo
ZW1lKCktPmV4dHJhQ2FsZW5kYXJQaWNrZXJTdHlsZVNoZWV0KCk7Ci0gICAgICAgIGlmIChleHRy
YVN0eWxlLmxlbmd0aCgpKQotICAgICAgICAgICAgd3JpdGVyLmFkZERhdGEoZXh0cmFTdHlsZS5k
YXRhKCksIGV4dHJhU3R5bGUubGVuZ3RoKCkpOwotICAgIH0KLSAgICBhZGRTdHJpbmcoIjwvc3R5
bGU+PC9oZWFkPjxib2R5PjxkaXYgaWQ9bWFpbj5Mb2FkaW5nLi4uPC9kaXY+PHNjcmlwdD5cbiIK
LSAgICAgICAgICAgICAgICJ3aW5kb3cuZGlhbG9nQXJndW1lbnRzID0ge1xuIiwgd3JpdGVyKTsK
LSAgICBhZGRQcm9wZXJ0eSgibWluIiwgbWluU3RyaW5nLCB3cml0ZXIpOwotICAgIGFkZFByb3Bl
cnR5KCJtYXgiLCBtYXhTdHJpbmcsIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoInN0ZXAiLCBz
dGVwU3RyaW5nLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJyZXF1aXJlZCIsIGlucHV0LT5y
ZXF1aXJlZCgpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJjdXJyZW50VmFsdWUiLCBpbnB1
dC0+dmFsdWUoKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgibG9jYWxlIiwgZGVmYXVsdExh
bmd1YWdlKCksIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoInRvZGF5TGFiZWwiLCBjYWxlbmRh
clRvZGF5VGV4dCgpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJjbGVhckxhYmVsIiwgY2Fs
ZW5kYXJDbGVhclRleHQoKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgid2Vla1N0YXJ0RGF5
IiwgZmlyc3REYXlPZldlZWsoKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgibW9udGhMYWJl
bHMiLCBtb250aExhYmVscygpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJkYXlMYWJlbHMi
LCB3ZWVrRGF5U2hvcnRMYWJlbHMoKSwgd3JpdGVyKTsKLSAgICBEaXJlY3Rpb24gZGlyID0gZGly
ZWN0aW9uKG1vbnRoTGFiZWxzKClbMF1bMF0pOwotICAgIGFkZFByb3BlcnR5KCJpc1JUTCIsIGRp
ciA9PSBSaWdodFRvTGVmdCB8fCBkaXIgPT0gUmlnaHRUb0xlZnRBcmFiaWMsIHdyaXRlcik7Ci0g
ICAgYWRkU3RyaW5nKCJ9XG4iLCB3cml0ZXIpOwotCi0gICAgd3JpdGVyLmFkZERhdGEocGlja2Vy
Q29tbW9uSnMsIHNpemVvZihwaWNrZXJDb21tb25KcykpOwotICAgIHdyaXRlci5hZGREYXRhKGNh
bGVuZGFyUGlja2VySnMsIHNpemVvZihjYWxlbmRhclBpY2tlckpzKSk7Ci0gICAgYWRkU3RyaW5n
KCI8L3NjcmlwdD48L2JvZHk+XG4iLCB3cml0ZXIpOwotfQotCi12b2lkIENhbGVuZGFyUGlja2Vy
RWxlbWVudDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCBudW1WYWx1ZSwgY29uc3QgU3RyaW5n
JiBzdHJpbmdWYWx1ZSkKLXsKLSAgICBBU1NFUlQobV9wb3B1cCk7Ci0gICAgY2xvc2VQb3B1cCgp
OwotICAgIGlmIChudW1WYWx1ZSA+PSAwKQotICAgICAgICBob3N0SW5wdXQoKS0+c2V0VmFsdWUo
c3RyaW5nVmFsdWUsIERpc3BhdGNoQ2hhbmdlRXZlbnQpOwotfQotCi12b2lkIENhbGVuZGFyUGlj
a2VyRWxlbWVudDo6ZGlkQ2xvc2VQb3B1cCgpCi17Ci0gICAgbV9wb3B1cCA9IDA7Ci19Ci0KIH0K
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRh
clBpY2tlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlj
a2VyRWxlbWVudC5oCmluZGV4IGNiZjIxM2ZjNWZjYjNlMzVmMWQ2YmRmMTJlZjgxMjdlYjIzOWUz
ODcuLjQzNWZlMDIxZTE3NjljMDliY2E2NTgzMjZlOTU1YWUwMTI4YjlmOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5oCkBAIC0z
MywxNCArMzMsMTcgQEAKIAogI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCiAjaW5jbHVkZSAi
SFRNTERpdkVsZW1lbnQuaCIKLSNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKyNpbmNsdWRl
ICJWYWx1ZVBpY2tlci5oIgorI2luY2x1ZGUgIlZhbHVlUGlja2VyQ2xpZW50LmgiCisKKyNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTElu
cHV0RWxlbWVudDsKIGNsYXNzIFBhZ2VQb3B1cDsKIAotY2xhc3MgQ2FsZW5kYXJQaWNrZXJFbGVt
ZW50IDogcHVibGljIEhUTUxEaXZFbGVtZW50LCBwdWJsaWMgUGFnZVBvcHVwQ2xpZW50IHsKK2Ns
YXNzIENhbGVuZGFyUGlja2VyRWxlbWVudCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCwgcHVibGlj
IFZhbHVlUGlja2VyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYWxl
bmRhclBpY2tlckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkNhbGVu
ZGFyUGlja2VyRWxlbWVudCgpOwpAQCAtNDgsMjEgKzUxLDI4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNsb3NlUG9wdXAoKTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tF
dmVudHMoKSBPVkVSUklERTsKIAorICAgIC8vIENvbG9yQ2hvb3NlckNsaWVudCBpbXBsZW1lbnRh
dGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGlja1ZhbHVlKGNvbnN0IFN0cmluZyYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRQaWNrZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIEludFJlY3QgZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjdXJyZW50VmFsdWUoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkU2hvd1N1Z2dlc3Rpb25zKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uVmFsdWVzKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uTGFiZWxzKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBkb3VibGUgbWluaW11bVZhbHVlKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBkb3VibGUgbWF4aW11bVZhbHVlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBkb3VibGUgdmFsdWVTdGVwKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IHZhbHVlUmVxdWlyZWQoKSBjb25zdCBPVkVSUklERTsKKwogcHJpdmF0ZToKICAgICBDYWxlbmRh
clBpY2tlckVsZW1lbnQoRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGRldGFjaCgpIE9WRVJSSURFOwogCi0gICAgLy8gUGFnZVBvcHVwQ2xpZW50IGZ1
bmN0aW9uczoKLSAgICB2aXJ0dWFsIEludFNpemUgY29udGVudFNpemUoKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIHZvaWQgd3JpdGVEb2N1bWVudChEb2N1bWVudFdyaXRlciYpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFuZENsb3NlUG9wdXAoaW50LCBjb25zdCBTdHJpbmcm
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2VQb3B1cCgpIE9WRVJSSURFOwot
Ci0gICAgSFRNTElucHV0RWxlbWVudCogaG9zdElucHV0KCk7CisgICAgSFRNTElucHV0RWxlbWVu
dCogaG9zdElucHV0KCkgY29uc3Q7CiAKLSAgICBQYWdlUG9wdXAqIG1fcG9wdXA7CisgICAgT3du
UHRyPFZhbHVlUGlja2VyPiBtX3BpY2tlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKaW5kZXggZDhiYzA2ZjMzNmViNDAwZTIyZDFlZDY2M2I0NGFjOGViNGFj
MWE0OC4uZTNjZDMwNjgxMDMwMWU3MGY4MzYzMTI5NjFhYjE0YmExM2UyNTRiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRl
ICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRlICJWYWx1ZVBpY2tlci5oIgogCiAjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCkBAIC0xMDMs
NiArMTA0LDEzIEBAIFBhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBFbXB0eUNocm9tZUNsaWVudDo6
Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVuCiB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShDQUxFTkRBUl9QSUNLRVIpCitQYXNzT3duUHRyPFZhbHVlUGlja2VyPiBFbXB0eUNocm9t
ZUNsaWVudDo6b3BlbkNhbGVuZGFyUGlja2VyUG9wdXAoVmFsdWVQaWNrZXJDbGllbnQqKQorewor
ICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKIHZvaWQgRW1wdHlDaHJvbWVDbGllbnQ6
OnJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KQogewogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IGEwMjc5OTdmZjdmOTUzZDIyNTkyMDVk
OGFiNmZiYzUzNzlhZTA5NTUuLjU4YjIyNWRmNDgxZWYzZGE2MGIwOTAwMmRjNDUzOTk2ZGEwNjIx
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTE3Miw2ICsxNzIsMTAg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxDb2xvckNob29zZXI+IGNyZWF0ZUNv
bG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqLCBjb25zdCBDb2xvciYpIE9WRVJSSURFOwog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorICAgIHZpcnR1YWwgUGFzc093
blB0cjxWYWx1ZVBpY2tlcj4gb3BlbkNhbGVuZGFyUGlja2VyUG9wdXAoVmFsdWVQaWNrZXJDbGll
bnQqKSBPVkVSUklERTsKKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChG
cmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVy
KikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCBjY2E0YTA5MjVmN2RlMmJlOWI4MDFm
ZTQwYmQxOTAxMWQyMjFiZTVkLi42MjI4NTBhZDdiNDhjNDNlYzA2MDdkN2M4MWE3MjNlY2M4MGI3
ZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VOYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJWYWx1ZVBpY2tlci5oIgogI2luY2x1ZGUgIldpbmRv
d0ZlYXR1cmVzLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CkBAIC00NTQsNiArNDU1LDEzIEBAIFBhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBD
aHJvbWU6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCwKIH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKK1Bhc3NPd25QdHI8VmFsdWVQ
aWNrZXI+IENocm9tZTo6b3BlbkNhbGVuZGFyUGlja2VyUG9wdXAoVmFsdWVQaWNrZXJDbGllbnQq
IGNsaWVudCkKK3sKKyAgICByZXR1cm4gbV9jbGllbnQtPm9wZW5DYWxlbmRhclBpY2tlclBvcHVw
KGNsaWVudCk7Cit9CisjZW5kaWYKKwogdm9pZCBDaHJvbWU6OnJ1bk9wZW5QYW5lbChGcmFtZSog
ZnJhbWUsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyKQogewogICAgIG1fY2xp
ZW50LT5ydW5PcGVuUGFuZWwoZnJhbWUsIGZpbGVDaG9vc2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmlu
ZGV4IDU2MzhmM2E0OGFkZDg5NTllMzBhZWIwZDIwNWFkM2U3MGI4Y2FjMTkuLjA5Yzg3NjJmMzRh
Y2Q5YTM1NGI0NTIzZDgyNGI5MjBjYzY2ZjdiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtNTQs
NiArNTQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBvcHVwTWVudTsKICAg
ICBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CiAgICAgY2xhc3MgU2VhcmNoUG9wdXBNZW51OworI2lm
IEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisgICAgY2xhc3MgVmFsdWVQaWNrZXI7CisgICAgY2xh
c3MgVmFsdWVQaWNrZXJDbGllbnQ7CisjZW5kaWYKIAogICAgIHN0cnVjdCBGcmFtZUxvYWRSZXF1
ZXN0OwogICAgIHN0cnVjdCBWaWV3cG9ydEFyZ3VtZW50czsKQEAgLTE1MCw2ICsxNTQsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYXNzT3duUHRyPENvbG9yQ2hvb3Nlcj4gY3Jl
YXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IENvbG9yJiBpbml0aWFs
Q29sb3IpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorICAgICAgICBQ
YXNzT3duUHRyPFZhbHVlUGlja2VyPiBvcGVuQ2FsZW5kYXJQaWNrZXJQb3B1cChWYWx1ZVBpY2tl
ckNsaWVudCopOworI2VuZGlmCisKICAgICAgICAgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQ
YXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7CiAgICAgICAgIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKik7CiAjaWYgRU5BQkxFKERJUkVD
VE9SWV9VUExPQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBkZDZhZmNmZTFj
ZGZlOGIxNzZmYjY5OGViZTM2MTcwMmRkYzA4ODkxLi42NTVlNzUwYWNhMjdiMWU1YWZkOWNlODcx
ZTBmYTI0YjM1ZGVjNDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTY3LDYg
KzY3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBvcHVwTWVudUNsaWVudDsK
ICAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsK
KyAgICBjbGFzcyBWYWx1ZVBpY2tlcjsKKyAgICBjbGFzcyBWYWx1ZVBpY2tlckNsaWVudDsKICAg
ICBjbGFzcyBXaWRnZXQ7CiAKICAgICBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsKQEAgLTIyMiw2
ICsyMjQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50Kiwg
Y29uc3QgQ29sb3ImKSA9IDA7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIp
CisgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxWYWx1ZVBpY2tlcj4gb3BlbkNhbGVuZGFyUGlj
a2VyUG9wdXAoVmFsdWVQaWNrZXJDbGllbnQqKSA9IDA7CisjZW5kaWYKKwogICAgICAgICB2aXJ0
dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pID0g
MDsKICAgICAgICAgLy8gQXN5bmNocm9ub3VzIHJlcXVlc3QgdG8gbG9hZCBhbiBpY29uIGZvciBz
cGVjaWZpZWQgZmlsZW5hbWVzLgogICAgICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKikgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUG9wdXBDbGllbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlUG9wdXBDbGllbnQuY3BwCmluZGV4IDViNjY2ZWE0NTk1YmQ2ZjZiNzYyMWYy
ODZiMTMyNjFjZjNjYzFjYzUuLjMwMWQxZWYzYTA3NjY3MzcwY2ZkYWQ0YjhkYWFlMzU3YTk1ODhh
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENsaWVudC5jcHAKQEAgLTY5LDYgKzY5
LDE0IEBAIHZvaWQgUGFnZVBvcHVwQ2xpZW50OjphZGRQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1l
LCB1bnNpZ25lZCB2YWx1ZSwgRG9jdW1lbnRXcml0CiAgICAgYWRkTGl0ZXJhbCgiLFxuIiwgd3Jp
dGVyKTsKIH0KIAordm9pZCBQYWdlUG9wdXBDbGllbnQ6OmFkZFByb3BlcnR5KGNvbnN0IGNoYXIq
IG5hbWUsIGRvdWJsZSB2YWx1ZSwgRG9jdW1lbnRXcml0ZXImIHdyaXRlcikKK3sKKyAgICB3cml0
ZXIuYWRkRGF0YShuYW1lLCBzdHJsZW4obmFtZSkpOworICAgIGFkZExpdGVyYWwoIjogIiwgd3Jp
dGVyKTsKKyAgICBhZGRTdHJpbmcoU3RyaW5nOjpudW1iZXIodmFsdWUpLCB3cml0ZXIpOworICAg
IGFkZExpdGVyYWwoIixcbiIsIHdyaXRlcik7Cit9CisKIHZvaWQgUGFnZVBvcHVwQ2xpZW50Ojph
ZGRQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLCBib29sIHZhbHVlLCBEb2N1bWVudFdyaXRlciYg
d3JpdGVyKQogewogICAgIHdyaXRlci5hZGREYXRhKG5hbWUsIHN0cmxlbihuYW1lKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlUG9wdXBDbGllbnQuaAppbmRleCAwMmFlZTMyMjU2Y2RhZmE5NmUxNmQ0
ZTNmYjQ4ZDRmODZmMzBhM2UwLi44MzliNDJlY2Y2MTNlNWIzZGIxNjg4MmRkMWUxNjE4MmViMGQ4
ZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ2xpZW50LmgKQEAgLTY2LDYgKzY2LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGFkZEphdmFTY3JpcHRTdHJpbmcoY29uc3QgU3Ry
aW5nJiwgRG9jdW1lbnRXcml0ZXImKTsKICAgICBzdGF0aWMgdm9pZCBhZGRQcm9wZXJ0eShjb25z
dCBjaGFyKiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBEb2N1bWVudFdyaXRlciYpOwogICAg
IHN0YXRpYyB2b2lkIGFkZFByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsIHVuc2lnbmVkIHZhbHVl
LCBEb2N1bWVudFdyaXRlciYpOworICAgIHN0YXRpYyB2b2lkIGFkZFByb3BlcnR5KGNvbnN0IGNo
YXIqIG5hbWUsIGRvdWJsZSB2YWx1ZSwgRG9jdW1lbnRXcml0ZXImKTsKICAgICBzdGF0aWMgdm9p
ZCBhZGRQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLCBib29sIHZhbHVlLCBEb2N1bWVudFdyaXRl
ciYpOwogICAgIHN0YXRpYyB2b2lkIGFkZFByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiB2YWx1ZXMsIERvY3VtZW50V3JpdGVyJik7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmFsdWVQaWNrZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ZhbHVlUGlja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk1MTQzMmUwZWI2NmI2NzY5YTRh
ZWI3OTM4ZTE1MTA3NTE0MTQ1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ZhbHVlUGlja2VyLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmFsdWVQaWNrZXJf
aAorI2RlZmluZSBWYWx1ZVBpY2tlcl9oCisKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworLy8gRm9yIHBpY2tlcnMgbGlrZSBjb2xvciBwaWNrZXJzIGFuZCBk
YXRlIHBpY2tlcnMuCitjbGFzcyBWYWx1ZVBpY2tlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
VmFsdWVQaWNrZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRQaWNrZXJWYWx1ZShjb25z
dCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZFBpY2tlcigpID0gMDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFZhbHVlUGlja2VyX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZhbHVlUGlja2VyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9WYWx1ZVBpY2tlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwYmQ3
ZWM2MTI2OGY1NjhiNmJmZjc3ZGYxZGU1Nzc4MWY2N2ViMjkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WYWx1ZVBpY2tlckNsaWVudC5oCkBAIC0wLDAgKzEsNjYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFZhbHVlUGlja2VyQ2xpZW50X2gKKyNkZWZpbmUgVmFsdWVQaWNrZXJDbGllbnRf
aAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZhbHVlUGlja2VyQ2xpZW50IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5WYWx1ZVBpY2tlckNsaWVudCgpIHsgfQorCisgICAgLy8gQ2Fs
bGVkIHdoZW4gdXNlciBwaWNrZWQgYSB2YWx1ZS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGlja1Zh
bHVlKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICAvLyBDYWxsZWQgd2hlbiBwaWNrZXIgaGFzIGVu
ZGVkLgorICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRQaWNrZXIoKSA9IDA7CisgICAgLy8gUmV0dXJu
cyB0aGUgcmVjdCBmb3IgdGhlIGVsZW1lbnQgdGhhdCBvcmlnaW5hdGVkIHRoZSBwaWNrZXIuCisg
ICAgdmlydHVhbCBJbnRSZWN0IGVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkgY29uc3Qg
PSAwOworICAgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgd2hpY2ggc2hvdWxkIGJlIHNo
b3duIGluIHRoZSBjb2xvciBwaWNrZXIuCisgICAgdmlydHVhbCBTdHJpbmcgY3VycmVudFZhbHVl
KCkgPSAwOworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91bGQgc2hvdyBzdWdnZXN0aW9u
cyB0byB0aGUgdXNlci4KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd1N1Z2dlc3Rpb25zKCkg
Y29uc3QgPSAwOworICAgIC8vIFJldHVybnMgdGhlIGxpc3Qgb2Ygc3VnZ2VzdGlvbiB2YWx1ZXMu
CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uVmFsdWVzKCkgY29uc3QgPSAw
OworICAgIC8vIFJldHVybnMgdGhlIGxpc3Qgb2Ygc3VnZ2VzdGlvbiBsYWJlbHMuCisgICAgdmly
dHVhbCBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uTGFiZWxzKCkgY29uc3QgPSAwOworICAgIC8v
IFJldHVybnMgdGhlIG1pbmltdW0gcGlja2FibGUgdmFsdWUuCisgICAgdmlydHVhbCBkb3VibGUg
bWluaW11bVZhbHVlKCkgY29uc3QgPSAwOworICAgIC8vIFJldHVybnMgdGhlIG1heGltdW0gcGlj
a2FibGUgdmFsdWUuCisgICAgdmlydHVhbCBkb3VibGUgbWF4aW11bVZhbHVlKCkgY29uc3QgPSAw
OworICAgIC8vIFJldHVybnMgdGhlIHZhbHVlIHN0ZXAgc2l6ZS4KKyAgICB2aXJ0dWFsIGRvdWJs
ZSB2YWx1ZVN0ZXAoKSBjb25zdCA9IDA7CisgICAgLy8gUmV0dXJucyBpZiB0aGUgdmFsdWUgaXMg
cmVxdWlyZWQuCisgICAgdmlydHVhbCBib29sIHZhbHVlUmVxdWlyZWQoKSBjb25zdCA9IDA7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBWYWx1ZVBpY2tlckNsaWVu
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggYjk4NGFmYzg2M2U2ZWU1YTQyZGRl
NzI0YmNlZTYwM2Q2YmI0NWMzZC4uOTM1Y2Q5YTU4Zjk5OWUyZWFmY2M2YWE3ZDA3ZTBlNGZhMTdh
ZTA4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzU4LDYgKzM1OCw4IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9CYXR0ZXJ5Q2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL0Jsb2JSZWdpc3RyeVByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9CbG9i
UmVnaXN0cnlQcm94eS5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0NhbGVuZGFyUGlja2VyUG9w
dXAuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL0NhbGVuZGFyUGlja2VyUG9wdXAuaCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9DaHJvbWVDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvQ2hyb21p
dW1DdXJyZW50VGltZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQ2FsZW5kYXJQaWNrZXJQb3B1cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
YWxlbmRhclBpY2tlclBvcHVwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjExYjg2MDc2MWNkMDQ5MzA2ZjE5
OGUxOTBkZGRkOGY0MWNiNjM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2FsZW5kYXJQaWNrZXJQb3B1cC5jcHAKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2FsZW5kYXJQaWNrZXJQb3B1cC5oIgorCisjaWYgRU5B
QkxFKENBTEVOREFSX1BJQ0tFUikKKworI2luY2x1ZGUgIkNhbGVuZGFyUGlja2VyLmgiCisjaW5j
bHVkZSAiQ2hyb21lQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCisj
aW5jbHVkZSAiTGFuZ3VhZ2UuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWREYXRlLmgiCisjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQaWNrZXJDb21tb24uaCIKKyNpbmNsdWRl
ICJSZW5kZXJUaGVtZS5oIgorI2luY2x1ZGUgIlZhbHVlUGlja2VyQ2xpZW50LmgiCisjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSA8cHVibGljL1dl
YkxvY2FsaXplZFN0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworQ2FsZW5kYXJQaWNrZXJQb3B1cDo6Q2FsZW5kYXJQaWNrZXJQ
b3B1cChDaHJvbWVDbGllbnRJbXBsKiBjaHJvbWVDbGllbnQsIFdlYkNvcmU6OlZhbHVlUGlja2Vy
Q2xpZW50KiBjbGllbnQpCisgICAgOiBtX2Nocm9tZUNsaWVudChjaHJvbWVDbGllbnQpCisgICAg
LCBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3BvcHVwKDApCit7CisgICAgQVNTRVJUKG1fY2hy
b21lQ2xpZW50KTsKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIG1fcG9wdXAgPSBtX2Nocm9t
ZUNsaWVudC0+b3BlblBhZ2VQb3B1cCh0aGlzLCBtX2NsaWVudC0+ZWxlbWVudFJlY3RSZWxhdGl2
ZVRvUm9vdFZpZXcoKSk7Cit9CisKK0NhbGVuZGFyUGlja2VyUG9wdXA6On5DYWxlbmRhclBpY2tl
clBvcHVwKCkKK3sKK30KKwordm9pZCBDYWxlbmRhclBpY2tlclBvcHVwOjpzZXRQaWNrZXJWYWx1
ZShjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQ2Fs
ZW5kYXJQaWNrZXJQb3B1cDo6ZW5kUGlja2VyKCkKK3sKKyAgICBpZiAoIW1fcG9wdXApCisgICAg
ICAgIHJldHVybjsKKyAgICBtX2Nocm9tZUNsaWVudC0+Y2xvc2VQYWdlUG9wdXAobV9wb3B1cCk7
Cit9CisKK1dlYkNvcmU6OkludFNpemUgQ2FsZW5kYXJQaWNrZXJQb3B1cDo6Y29udGVudFNpemUo
KQoreworICAgIHJldHVybiBXZWJDb3JlOjpJbnRTaXplKDAsIDApOworfQorCit2b2lkIENhbGVu
ZGFyUGlja2VyUG9wdXA6OndyaXRlRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXImIHdy
aXRlcikKK3sKKyAgICBXZWJDb3JlOjpEYXRlQ29tcG9uZW50cyBkYXRlOworICAgIGRhdGUuc2V0
TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUobV9jbGllbnQtPm1pbmltdW1WYWx1ZSgpKTsK
KyAgICBTdHJpbmcgbWluU3RyaW5nID0gZGF0ZS50b1N0cmluZygpOworICAgIGRhdGUuc2V0TWls
bGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUobV9jbGllbnQtPm1heGltdW1WYWx1ZSgpKTsKKyAg
ICBTdHJpbmcgbWF4U3RyaW5nID0gZGF0ZS50b1N0cmluZygpOworICAgIGRvdWJsZSBzdGVwID0g
bV9jbGllbnQtPnZhbHVlU3RlcCgpOworCisgICAgYWRkU3RyaW5nKCI8IURPQ1RZUEUgaHRtbD48
aGVhZD48bWV0YSBjaGFyc2V0PSdVVEYtOCc+PHN0eWxlPlxuIiwgd3JpdGVyKTsKKyAgICB3cml0
ZXIuYWRkRGF0YShXZWJDb3JlOjpwaWNrZXJDb21tb25Dc3MsIHNpemVvZihXZWJDb3JlOjpwaWNr
ZXJDb21tb25Dc3MpKTsKKyAgICB3cml0ZXIuYWRkRGF0YShXZWJDb3JlOjpjYWxlbmRhclBpY2tl
ckNzcywgc2l6ZW9mKFdlYkNvcmU6OmNhbGVuZGFyUGlja2VyQ3NzKSk7CisgICAgQ1N0cmluZyBl
eHRyYVN0eWxlID0gV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYUNh
bGVuZGFyUGlja2VyU3R5bGVTaGVldCgpOworICAgIGlmIChleHRyYVN0eWxlLmxlbmd0aCgpKQor
ICAgICAgICB3cml0ZXIuYWRkRGF0YShleHRyYVN0eWxlLmRhdGEoKSwgZXh0cmFTdHlsZS5sZW5n
dGgoKSk7CisgICAgYWRkU3RyaW5nKCI8L3N0eWxlPjwvaGVhZD48Ym9keT48ZGl2IGlkPW1haW4+
TG9hZGluZy4uLjwvZGl2PjxzY3JpcHQ+XG4iCisgICAgICAgICAgICAgICAid2luZG93LmRpYWxv
Z0FyZ3VtZW50cyA9IHtcbiIsIHdyaXRlcik7CisgICAgYWRkUHJvcGVydHkoIm1pbiIsIG1pblN0
cmluZywgd3JpdGVyKTsKKyAgICBhZGRQcm9wZXJ0eSgibWF4IiwgbWF4U3RyaW5nLCB3cml0ZXIp
OworICAgIGFkZFByb3BlcnR5KCJzdGVwIiwgc3RlcCwgd3JpdGVyKTsKKyAgICBhZGRQcm9wZXJ0
eSgicmVxdWlyZWQiLCBtX2NsaWVudC0+dmFsdWVSZXF1aXJlZCgpLCB3cml0ZXIpOworICAgIGFk
ZFByb3BlcnR5KCJjdXJyZW50VmFsdWUiLCBtX2NsaWVudC0+Y3VycmVudFZhbHVlKCksIHdyaXRl
cik7CisgICAgYWRkUHJvcGVydHkoImxvY2FsZSIsIFdlYkNvcmU6OmRlZmF1bHRMYW5ndWFnZSgp
LCB3cml0ZXIpOworICAgIFdlYkNvcmU6OlBhZ2VQb3B1cENsaWVudDo6YWRkUHJvcGVydHkoInRv
ZGF5TGFiZWwiLCBQbGF0Zm9ybTo6Y3VycmVudCgpLT5xdWVyeUxvY2FsaXplZFN0cmluZyhXZWJM
b2NhbGl6ZWRTdHJpbmc6OkNhbGVuZGFyVG9kYXkpLCB3cml0ZXIpOworICAgIFdlYkNvcmU6OlBh
Z2VQb3B1cENsaWVudDo6YWRkUHJvcGVydHkoImNsZWFyTGFiZWwiLCBQbGF0Zm9ybTo6Y3VycmVu
dCgpLT5xdWVyeUxvY2FsaXplZFN0cmluZyhXZWJMb2NhbGl6ZWRTdHJpbmc6OkNhbGVuZGFyQ2xl
YXIpLCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5KCJ3ZWVrU3RhcnREYXkiLCBXZWJDb3JlOjpm
aXJzdERheU9mV2VlaygpLCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5KCJtb250aExhYmVscyIs
IFdlYkNvcmU6Om1vbnRoTGFiZWxzKCksIHdyaXRlcik7CisgICAgYWRkUHJvcGVydHkoImRheUxh
YmVscyIsIFdlYkNvcmU6OndlZWtEYXlTaG9ydExhYmVscygpLCB3cml0ZXIpOworICAgIERpcmVj
dGlvbiBkaXIgPSBkaXJlY3Rpb24oV2ViQ29yZTo6bW9udGhMYWJlbHMoKVswXVswXSk7CisgICAg
YWRkUHJvcGVydHkoImlzUlRMIiwgZGlyID09IFJpZ2h0VG9MZWZ0IHx8IGRpciA9PSBSaWdodFRv
TGVmdEFyYWJpYywgd3JpdGVyKTsKKyAgICBhZGRTdHJpbmcoIn1cbiIsIHdyaXRlcik7CisKKyAg
ICB3cml0ZXIuYWRkRGF0YShXZWJDb3JlOjpwaWNrZXJDb21tb25Kcywgc2l6ZW9mKFdlYkNvcmU6
OnBpY2tlckNvbW1vbkpzKSk7CisgICAgd3JpdGVyLmFkZERhdGEoV2ViQ29yZTo6Y2FsZW5kYXJQ
aWNrZXJKcywgc2l6ZW9mKFdlYkNvcmU6OmNhbGVuZGFyUGlja2VySnMpKTsKKyAgICBhZGRTdHJp
bmcoIjwvc2NyaXB0PjwvYm9keT5cbiIsIHdyaXRlcik7Cit9CisKK3ZvaWQgQ2FsZW5kYXJQaWNr
ZXJQb3B1cDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCBudW1WYWx1ZSwgY29uc3QgU3RyaW5n
JiBzdHJpbmdWYWx1ZSkKK3sKKyAgICBpZiAobnVtVmFsdWUgPj0gMCkKKyAgICAgICAgbV9jbGll
bnQtPmRpZFBpY2tWYWx1ZShzdHJpbmdWYWx1ZSk7CisgICAgZW5kUGlja2VyKCk7Cit9CisKK3Zv
aWQgQ2FsZW5kYXJQaWNrZXJQb3B1cDo6ZGlkQ2xvc2VQb3B1cCgpCit7ICAgIAorICAgIG1fY2xp
ZW50LT5kaWRFbmRQaWNrZXIoKTsKKyAgICBtX3BvcHVwID0gMDsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2FsZW5kYXJQaWNrZXJQb3B1cC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2FsZW5kYXJQaWNrZXJQb3B1cC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhkYTlmZWY1NzdjMzQzY2M4MGY5NGQ1MmNiZjI0NzI4OTI5YWViZTcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DYWxlbmRhclBpY2tlclBvcHVwLmgKQEAg
LTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgQ2FsZW5kYXJQaWNrZXJQb3B1cF9oCisjZGVmaW5lIENhbGVu
ZGFyUGlja2VyUG9wdXBfaAorCisjaW5jbHVkZSAiUGFnZVBvcHVwQ2xpZW50LmgiCisjaW5jbHVk
ZSAiVmFsdWVQaWNrZXIuaCIKKworI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIFBhZ2VQb3B1cDsKK2NsYXNzIFZhbHVlUGlja2VyQ2xpZW50
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ2hyb21lQ2xpZW50SW1wbDsKKwor
Y2xhc3MgQ2FsZW5kYXJQaWNrZXJQb3B1cCA6IHB1YmxpYyBXZWJDb3JlOjpWYWx1ZVBpY2tlciwg
cHVibGljIFdlYkNvcmU6OlBhZ2VQb3B1cENsaWVudCB7CitwdWJsaWM6CisgICAgQ2FsZW5kYXJQ
aWNrZXJQb3B1cChDaHJvbWVDbGllbnRJbXBsKiwgV2ViQ29yZTo6VmFsdWVQaWNrZXJDbGllbnQq
KTsKKyAgICB2aXJ0dWFsIH5DYWxlbmRhclBpY2tlclBvcHVwKCk7CisKKyAgICAvLyBWYWx1ZVBp
Y2tlciBmdW5jdGlvbnM6CisgICAgdmlydHVhbCB2b2lkIHNldFBpY2tlclZhbHVlKGNvbnN0IFN0
cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBlbmRQaWNrZXIoKSBPVkVSUklERTsK
KworcHJpdmF0ZToKKyAgICAvLyBQYWdlUG9wdXBDbGllbnQgZnVuY3Rpb25zOgorICAgIHZpcnR1
YWwgV2ViQ29yZTo6SW50U2l6ZSBjb250ZW50U2l6ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCB3cml0ZURvY3VtZW50KFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQsIGNvbnN0IFN0cmluZyYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVBvcHVwKCkgT1ZFUlJJREU7CisK
KyAgICBDaHJvbWVDbGllbnRJbXBsKiBtX2Nocm9tZUNsaWVudDsKKyAgICBXZWJDb3JlOjpWYWx1
ZVBpY2tlckNsaWVudCogbV9jbGllbnQ7CisgICAgV2ViQ29yZTo6UGFnZVBvcHVwKiBtX3BvcHVw
OworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKKworI2VuZGlm
IC8vIENhbGVuZGFyUGlja2VyUG9wdXBfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCBkYzVhZmM4ODY1NWEyODU0OTk1M2I2NWIwNGU2
OWNhZWY1ZWZkNGYwLi43MDQyYzZhZWQ3MzRiMTEwYjk4NGVkZTZjNzI2NDRhYjAwYzNlYTRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApA
QCAtMzksNiArMzksOSBAQAogI2luY2x1ZGUgIkNvbG9yQ2hvb3NlckNsaWVudC5oIgogI2luY2x1
ZGUgIkNvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oIgogI2VuZGlmCisjaWYgRU5BQkxFKENBTEVO
REFSX1BJQ0tFUikKKyNpbmNsdWRlICJDYWxlbmRhclBpY2tlclBvcHVwLmgiCisjZW5kaWYKICNp
bmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCiAjaW5jbHVkZSAiRGF0YWJh
c2VUcmFja2VyLmgiCkBAIC03MSw2ICs3NCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRGaWVsZERlY29yYXRpb25F
bGVtZW50LmgiCisjaW5jbHVkZSAiVmFsdWVQaWNrZXIuaCIKICNpbmNsdWRlICJXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0LmgiCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAjaW5jbHVkZSAi
V2ViQ29sb3JDaG9vc2VyLmgiCkBAIC03MDQsNiArNzA4LDEzIEBAIFBhc3NPd25QdHI8V2ViQ29s
b3JDaG9vc2VyPiBDaHJvbWVDbGllbnRJbXBsOjpjcmVhdGVXZWJDb2xvckNob29zZXIoV2ViQ29s
b3JDaG9vCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCitQYXNzT3du
UHRyPFdlYkNvcmU6OlZhbHVlUGlja2VyPiBDaHJvbWVDbGllbnRJbXBsOjpvcGVuQ2FsZW5kYXJQ
aWNrZXJQb3B1cChXZWJDb3JlOjpWYWx1ZVBpY2tlckNsaWVudCogcGlja2VyQ2xpZW50KQorewor
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2FsZW5kYXJQaWNrZXJQb3B1cCh0aGlzLCBwaWNrZXJD
bGllbnQpKTsKK30KKyNlbmRpZgorCiB2b2lkIENocm9tZUNsaWVudEltcGw6OnJ1bk9wZW5QYW5l
bChGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyKQogewog
ICAgIFdlYlZpZXdDbGllbnQqIGNsaWVudCA9IG1fd2ViVmlldy0+Y2xpZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKaW5kZXggNjJiMzk5ODg2
YmJjNDJjY2M3NzI0MWJjN2UzOWJiODE4NzZkMDU5MS4uYzBjMjFkNTE4NTZjYjU2OGFjY2U1OWE2
YWU4NDQ0NDc1YWViYTc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuaApAQCAtNTAsNiArNTAsOCBAQCBjbGFzcyBQb3B1cENvbnRhaW5lcjsKIGNs
YXNzIFBvcHVwTWVudUNsaWVudDsKIGNsYXNzIFJlbmRlckJveDsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOworY2xhc3MgVmFsdWVQaWNrZXI7CitjbGFzcyBWYWx1ZVBpY2tlckNsaWVudDsKIHN0cnVj
dCBXaW5kb3dGZWF0dXJlczsKIH0KIApAQCAtMTQ0LDYgKzE0Niw5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29z
ZXIoV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBP
VkVSUklERTsKICAgICBQYXNzT3duUHRyPFdlYkNvbG9yQ2hvb3Nlcj4gY3JlYXRlV2ViQ29sb3JD
aG9vc2VyKFdlYkNvbG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IFdlYkNvbG9yJik7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJD
b3JlOjpWYWx1ZVBpY2tlcj4gb3BlbkNhbGVuZGFyUGlja2VyUG9wdXAoV2ViQ29yZTo6VmFsdWVQ
aWNrZXJDbGllbnQqKSBPVkVSUklERTsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBydW5PcGVu
UGFuZWwoV2ViQ29yZTo6RnJhbWUqLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPik7
CiAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFdURjo6U3Ry
aW5nPiYsIFdlYkNvcmU6OkZpbGVJY29uTG9hZGVyKik7CiAjaWYgRU5BQkxFKERJUkVDVE9SWV9V
UExPQUQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161945</attachid>
            <date>2012-09-03 14:10:18 -0700</date>
            <delta_ts>2012-09-03 15:48:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95681-20120904061001.patch</filename>
            <type>text/plain</type>
            <size>37399</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0MGQ1ZDNmYWM4Y2Rk
M2Y1MjA3ODMyZjYwOTk4YWQyOWIzNzZmNS4uNGMzMmNjNDAzMjI2MzNjNzNhNzcwZDhiNDQxN2Y2
YjY1M2RjNjJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTA5LTAzICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgUGFnZVBvcHVw
Q2xpZW50IHRvIFdlYktpdCBsYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTU2ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZlIFBhZ2VQb3B1cENsaWVudCB0byBXZWJLaXQgbGF5ZXIgYW5kIGlu
dHJvZHVjZSBWYWx1ZVBpY2tlciB0aGF0IHdpbGwKKyAgICAgICAgYmUgc2hhcmVkIHdpdGggdGhl
IHZhcmlvdXMgcGlja2VycyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4g
Q292ZXJlZCBieSBleGlzdGluZyBjYWxlbmRhciBwaWNrZXIgdGVzdHMuCisKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6Q2FsZW5kYXJQ
aWNrZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6
fkNhbGVuZGFyUGlja2VyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6Omhvc3RJbnB1dCk6IENoYW5nZWQgdG8gY29uc3QuCisgICAgICAgIChXZWJDb3Jl
OjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRpZFBpY2tWYWx1ZSk6IENhbGxlZCB3aGVuIHVzZXIg
cGlja2VkIGEgY29sb3IgaW4gdGhlIHZhbHVlIHBpY2tlci4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50OjpkaWRFbmRQaWNrZXIpOiBD
YWxsZWQgd2hlbiBwaWNrZXIgZW5kZWQuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6OmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KTogUmV0dXJucyByZWN0IG9m
IGlucHV0IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6
OmN1cnJlbnRWYWx1ZSk6IFJldHVybiBjdXJyZW50IHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6
Q2FsZW5kYXJQaWNrZXJFbGVtZW50OjpzaG91bGRTaG93U3VnZ2VzdGlvbnMpOiBSZXR1cm5zIGZh
bHNlIGZvciBub3cuIFdpbGwgcmV0dXJuIHRydWUgd2hlbiB3ZSBpbXBsZW1lbnQgdGhlIHN1Z2dl
c3Rpb24gcGlja2VyLgorICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpz
dWdnZXN0aW9uVmFsdWVzKTogUmV0dXJucyBlbXB0eSB2ZWN0b3IgZm9yIG5vdy4KKyAgICAgICAg
KFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6c3VnZ2VzdGlvbkxhYmVscyk6IFJldHVy
bnMgZW1wdHkgdmVjdG9yIGZvciBub3cuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6Om1pbmltdW1WYWx1ZSk6IFJldHVybnMgdGhlIG1pbmltdW0gdmFsdWUgdGhhdCBz
aG91bGQgYmUgcGlja2FibGUgaW4gdGhlIHBpY2tlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhbGVu
ZGFyUGlja2VyRWxlbWVudDo6bWF4aW11bVZhbHVlKTogUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1
ZSB0aGF0IHNob3VsZCBiZSBwaWNrYWJsZSBpbiB0aGUgcGlja2VyLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50Ojp2YWx1ZVN0ZXApOiBSZXR1cm5zIHRoZSB2YWx1ZSBz
dGVwIHNpemUuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OnZhbHVl
UmVxdWlyZWQpOiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IGEgdmFsdWUgaXMgcmVxdWlyZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6Om9wZW5Qb3B1cCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmNsb3NlUG9wdXApOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5oOgorICAgICAgICAoQ2FsZW5k
YXJQaWNrZXJFbGVtZW50KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6Om9w
ZW5DYWxlbmRhclBpY2tlclBvcHVwKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6
CisgICAgICAgIChFbXB0eUNocm9tZUNsaWVudCk6CisgICAgICAgICogcGFnZS9DaHJvbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6Om9wZW5DYWxl
bmRhclBpY2tlclBvcHVwKToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChDaHJvbWUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENocm9tZUNsaWVudCk6CisgICAgICAgICog
cGFnZS9QYWdlUG9wdXBDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQ2xp
ZW50OjphZGRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwYWdlL1Bh
Z2VQb3B1cENsaWVudC5oOgorICAgICAgICAoUGFnZVBvcHVwQ2xpZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9WYWx1ZVBpY2tlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoVmFsdWVQaWNrZXIpOiBSZXByZXNlbnRzIHBpY2tlcnMgbGlrZSBjb2xvciBwaWNrZXIgYW5k
IGRhdGUgcGlja2VyLgorICAgICAgICAoV2ViQ29yZTo6VmFsdWVQaWNrZXI6On5WYWx1ZVBpY2tl
cik6CisgICAgICAgICogcGxhdGZvcm0vVmFsdWVQaWNrZXJDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoVmFsdWVQaWNrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
VmFsdWVQaWNrZXJDbGllbnQ6On5WYWx1ZVBpY2tlckNsaWVudCk6CisKIDIwMTItMDktMDMgIEFs
ZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBVbmhpZGUgaGlkZGVuIGNoYXJhY3RlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggZDVlNDE4ZGMzZTUyMWZkMTg0NDQ4NmE5ZTZjZWU0YTExYTIyMTEyZC4uMGM0OGQwMzA3
OWE5ODg1NjBiYjYyMzUxY2FhOTY2ZGZlZjNjNzdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMi0wOS0wMyAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlA
d2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFBhZ2VQb3B1cENsaWVudCB0byBXZWJLaXQgbGF5
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Njgx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJL
aXQuZ3lwOgorICAgICAgICAqIHNyYy9DYWxlbmRhclBpY2tlclBvcHVwLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpDYWxlbmRhclBpY2tlclBvcHVwOjpD
YWxlbmRhclBpY2tlclBvcHVwKToKKyAgICAgICAgKFdlYktpdDo6Q2FsZW5kYXJQaWNrZXJQb3B1
cDo6fkNhbGVuZGFyUGlja2VyUG9wdXApOgorICAgICAgICAoV2ViS2l0OjpDYWxlbmRhclBpY2tl
clBvcHVwOjpzZXRQaWNrZXJWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2Vy
UG9wdXA6OmVuZFBpY2tlcik6CisgICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2VyUG9wdXA6
OmNvbnRlbnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6Q2FsZW5kYXJQaWNrZXJQb3B1cDo6d3Jp
dGVEb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2VyUG9wdXA6OnNldFZh
bHVlQW5kQ2xvc2VQb3B1cCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2VyUG9wdXA6
OmRpZENsb3NlUG9wdXApOgorICAgICAgICAqIHNyYy9DYWxlbmRhclBpY2tlclBvcHVwLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVu
dC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQ2Fs
ZW5kYXJQaWNrZXJQb3B1cCk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6b3Bl
bkNhbGVuZGFyUGlja2VyUG9wdXApOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENocm9tZUNsaWVudEltcGwpOgorCiAyMDEy
LTA5LTAxICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBjaHJvbWl1bSBidWlsZGZpeCB3aGVuIHVzZV9saWJjY19mb3JfY29tcG9zaXRv
cj0xCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMzA2MTk1NGYxMTgxODU3OGMyNTE4YjBmODk2NzVmODE2
NjJiZWRmMi4uNDRhMTIwNWM4YWMzZTc5ODE0MzE1ZDhkN2Q2NWRiNzkwZmVlM2U1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtMzM3LDYgKzMzNyw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vVGhy
ZWFkR2xvYmFsRGF0YS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9UaW1lci5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9UcmVlU2hhcmVkLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1Zh
bHVlUGlja2VyLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1ZhbHVlUGlja2VyQ2xpZW50Lmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Zpc2l0ZWRMaW5rU3RyYXRlZ3kuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vVmlzaXRlZExpbmtzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1dp
ZGdldC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFy
UGlja2VyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBp
Y2tlckVsZW1lbnQuY3BwCmluZGV4IGYzMjQ0ZGU2YjBmZDczMDFhZGRjODc5MTYxNDJiYzAxYTUw
Yzg4YTIuLjU0ZTVkZWE5ZjA2NzdhOGM5NGE1MTc2NzM1YmNmNzI4NGI4ZTA5NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNw
cApAQCAtMzMsMjIgKzMzLDEyIEBACiAKICNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQogCi0j
aW5jbHVkZSAiQ2FsZW5kYXJQaWNrZXIuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKLSNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUg
IkV2ZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxl
bWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0j
aW5jbHVkZSAiTG9jYWxpemVkRGF0ZS5oIgotI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUGlja2VyQ29tbW9uLmgiCiAjaW5jbHVkZSAi
UmVuZGVyRGV0YWlsc01hcmtlci5oIgotI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCi0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmlj
b2RlOwogCkBAIC01OCw3ICs0OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIGlu
bGluZSBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OkNhbGVuZGFyUGlja2VyRWxlbWVudChEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRGl2RWxlbWVudChkaXZUYWcsIGRvY3VtZW50KQotICAg
ICwgbV9wb3B1cCgwKQorICAgICwgbV9waWNrZXIobnVsbHB0cikKIHsKICAgICBzZXRTaGFkb3dQ
c2V1ZG9JZCgiLXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yIik7CiB9CkBAIC03MSw3
ICs2MSw3IEBAIFBhc3NSZWZQdHI8Q2FsZW5kYXJQaWNrZXJFbGVtZW50PiBDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lCiBDYWxlbmRhclBpY2tlckVsZW1lbnQ6
On5DYWxlbmRhclBpY2tlckVsZW1lbnQoKQogewogICAgIGNsb3NlUG9wdXAoKTsKLSAgICBBU1NF
UlQoIW1fcG9wdXApOworICAgIEFTU0VSVCghbV9waWNrZXIpOwogfQogCiBSZW5kZXJPYmplY3Qq
IENhbGVuZGFyUGlja2VyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5h
LCBSZW5kZXJTdHlsZSopCkBAIC03OSw3ICs2OSw3IEBAIFJlbmRlck9iamVjdCogQ2FsZW5kYXJQ
aWNrZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0
CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckRldGFpbHNNYXJrZXIodGhpcyk7CiB9CiAK
LWlubGluZSBIVE1MSW5wdXRFbGVtZW50KiBDYWxlbmRhclBpY2tlckVsZW1lbnQ6Omhvc3RJbnB1
dCgpCitpbmxpbmUgSFRNTElucHV0RWxlbWVudCogQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpob3N0
SW5wdXQoKSBjb25zdAogewogICAgIC8vIEphdmFTY3JpcHQgY29kZSBjYW4ndCBjcmVhdGUgQ2Fs
ZW5kYXJQaWNrZXJFbGVtZW50IG9iamVjdHMuIFRoaXMgaXMKICAgICAvLyBhbHdheXMgaW4gc2hh
ZG93IG9mIDxpbnB1dD4uCkBAIC0xMTQsOSArMTA0LDY5IEBAIGJvb2wgQ2FsZW5kYXJQaWNrZXJF
bGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiAgICAgcmV0dXJuIEhUTUxE
aXZFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpOwogfQogCit2b2lkIENh
bGVuZGFyUGlja2VyRWxlbWVudDo6ZGlkUGlja1ZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7
CisgICAgaG9zdElucHV0KCktPnNldFZhbHVlKHZhbHVlLCBEaXNwYXRjaENoYW5nZUV2ZW50KTsK
K30KKwordm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRpZEVuZFBpY2tlcigpCit7CisgICAg
bV9waWNrZXIuY2xlYXIoKTsKK30KKworSW50UmVjdCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmVs
ZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkgY29uc3QKK3sKKyAgICBpZiAoIWRvY3VtZW50
KCktPnZpZXcoKSkKKyAgICAgICAgcmV0dXJuIEludFJlY3QoMCwgMCwgMCwgMCk7CisgICAgcmV0
dXJuIGRvY3VtZW50KCktPnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGhvc3RJbnB1dCgpLT5n
ZXRQaXhlbFNuYXBwZWRSZWN0KCkpOworfQorCitTdHJpbmcgQ2FsZW5kYXJQaWNrZXJFbGVtZW50
OjpjdXJyZW50VmFsdWUoKQoreworICAgIHJldHVybiBob3N0SW5wdXQoKS0+dmFsdWUoKTsKK30K
KworYm9vbCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OnNob3VsZFNob3dTdWdnZXN0aW9ucygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitWZWN0b3I8U3RyaW5nPiBDYWxlbmRhclBp
Y2tlckVsZW1lbnQ6OnN1Z2dlc3Rpb25WYWx1ZXMoKSBjb25zdAoreworICAgIHJldHVybiBWZWN0
b3I8U3RyaW5nPigpOworfQorCitWZWN0b3I8U3RyaW5nPiBDYWxlbmRhclBpY2tlckVsZW1lbnQ6
OnN1Z2dlc3Rpb25MYWJlbHMoKSBjb25zdAoreworICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigp
OworfQorCitkb3VibGUgQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjptaW5pbXVtVmFsdWUoKSBjb25z
dAoreworICAgIHJldHVybiBob3N0SW5wdXQoKS0+bWluaW11bSgpOworfQorCitkb3VibGUgQ2Fs
ZW5kYXJQaWNrZXJFbGVtZW50OjptYXhpbXVtVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBo
b3N0SW5wdXQoKS0+bWF4aW11bSgpOworfQorCitkb3VibGUgQ2FsZW5kYXJQaWNrZXJFbGVtZW50
Ojp2YWx1ZVN0ZXAoKSBjb25zdAoreworICAgIERlY2ltYWwgc3RlcDsKKyAgICBpZiAoaG9zdElu
cHV0KCktPmdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApKQorICAgICAgICByZXR1cm4gMS4wOwor
ICAgIHJldHVybiBzdGVwLnRvRG91YmxlKCk7Cit9CisKK2Jvb2wgQ2FsZW5kYXJQaWNrZXJFbGVt
ZW50Ojp2YWx1ZVJlcXVpcmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaG9zdElucHV0KCktPnJl
cXVpcmVkKCk7Cit9CisKIHZvaWQgQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjpvcGVuUG9wdXAoKQog
ewotICAgIGlmIChtX3BvcHVwKQorICAgIGlmIChtX3BpY2tlcikKICAgICAgICAgcmV0dXJuOwog
ICAgIGlmICghZG9jdW1lbnQoKS0+cGFnZSgpKQogICAgICAgICByZXR1cm47CkBAIC0xMjUsMjAg
KzE3NSwxNCBAQCB2b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6b3BlblBvcHVwKCkKICAgICAg
ICAgcmV0dXJuOwogICAgIGlmICghZG9jdW1lbnQoKS0+dmlldygpKQogICAgICAgICByZXR1cm47
Ci0gICAgSW50UmVjdCBlbGVtZW50UmVjdEluUm9vdFZpZXcgPSBkb2N1bWVudCgpLT52aWV3KCkt
PmNvbnRlbnRzVG9Sb290Vmlldyhob3N0SW5wdXQoKS0+Z2V0UGl4ZWxTbmFwcGVkUmVjdCgpKTsK
LSAgICBtX3BvcHVwID0gY2hyb21lLT5jbGllbnQoKS0+b3BlblBhZ2VQb3B1cCh0aGlzLCBlbGVt
ZW50UmVjdEluUm9vdFZpZXcpOworICAgIG1fcGlja2VyID0gY2hyb21lLT5vcGVuQ2FsZW5kYXJQ
aWNrZXJQb3B1cCh0aGlzKTsKIH0KIAogdm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmNsb3Nl
UG9wdXAoKQogewotICAgIGlmICghbV9wb3B1cCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICgh
ZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgQ2hyb21lKiBjaHJvbWUg
PSBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpOwotICAgIGlmICghY2hyb21lKQorICAgIGlm
ICghbV9waWNrZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBjaHJvbWUtPmNsaWVudCgpLT5jbG9z
ZVBhZ2VQb3B1cChtX3BvcHVwKTsKKyAgICBtX3BpY2tlci0+ZW5kUGlja2VyKCk7CiB9CiAKIHZv
aWQgQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjpkZXRhY2goKQpAQCAtMTQ3LDY3ICsxOTEsNiBAQCB2
b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6ZGV0YWNoKCkKICAgICBIVE1MRGl2RWxlbWVudDo6
ZGV0YWNoKCk7CiB9CiAKLUludFNpemUgQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpjb250ZW50U2l6
ZSgpCi17Ci0gICAgcmV0dXJuIEludFNpemUoMCwgMCk7Ci19Ci0KLXZvaWQgQ2FsZW5kYXJQaWNr
ZXJFbGVtZW50Ojp3cml0ZURvY3VtZW50KERvY3VtZW50V3JpdGVyJiB3cml0ZXIpCi17Ci0gICAg
SFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBob3N0SW5wdXQoKTsKLSAgICBEYXRlQ29tcG9uZW50
cyBkYXRlOwotICAgIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUoaW5wdXQt
Pm1pbmltdW0oKSk7Ci0gICAgU3RyaW5nIG1pblN0cmluZyA9IGRhdGUudG9TdHJpbmcoKTsKLSAg
ICBkYXRlLnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlKGlucHV0LT5tYXhpbXVtKCkp
OwotICAgIFN0cmluZyBtYXhTdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCk7Ci0gICAgRGVjaW1hbCBz
dGVwOwotICAgIFN0cmluZyBzdGVwU3RyaW5nID0gaW5wdXQtPmZhc3RHZXRBdHRyaWJ1dGUoc3Rl
cEF0dHIpOwotICAgIGlmIChzdGVwU3RyaW5nLmlzRW1wdHkoKSB8fCAhaW5wdXQtPmdldEFsbG93
ZWRWYWx1ZVN0ZXAoJnN0ZXApKQotICAgICAgICBzdGVwU3RyaW5nID0gIjEiOwotCi0gICAgYWRk
U3RyaW5nKCI8IURPQ1RZUEUgaHRtbD48aGVhZD48bWV0YSBjaGFyc2V0PSdVVEYtOCc+PHN0eWxl
PlxuIiwgd3JpdGVyKTsKLSAgICB3cml0ZXIuYWRkRGF0YShwaWNrZXJDb21tb25Dc3MsIHNpemVv
ZihwaWNrZXJDb21tb25Dc3MpKTsKLSAgICB3cml0ZXIuYWRkRGF0YShjYWxlbmRhclBpY2tlckNz
cywgc2l6ZW9mKGNhbGVuZGFyUGlja2VyQ3NzKSk7Ci0gICAgaWYgKGRvY3VtZW50KCktPnBhZ2Uo
KSkgewotICAgICAgICBDU3RyaW5nIGV4dHJhU3R5bGUgPSBkb2N1bWVudCgpLT5wYWdlKCktPnRo
ZW1lKCktPmV4dHJhQ2FsZW5kYXJQaWNrZXJTdHlsZVNoZWV0KCk7Ci0gICAgICAgIGlmIChleHRy
YVN0eWxlLmxlbmd0aCgpKQotICAgICAgICAgICAgd3JpdGVyLmFkZERhdGEoZXh0cmFTdHlsZS5k
YXRhKCksIGV4dHJhU3R5bGUubGVuZ3RoKCkpOwotICAgIH0KLSAgICBhZGRTdHJpbmcoIjwvc3R5
bGU+PC9oZWFkPjxib2R5PjxkaXYgaWQ9bWFpbj5Mb2FkaW5nLi4uPC9kaXY+PHNjcmlwdD5cbiIK
LSAgICAgICAgICAgICAgICJ3aW5kb3cuZGlhbG9nQXJndW1lbnRzID0ge1xuIiwgd3JpdGVyKTsK
LSAgICBhZGRQcm9wZXJ0eSgibWluIiwgbWluU3RyaW5nLCB3cml0ZXIpOwotICAgIGFkZFByb3Bl
cnR5KCJtYXgiLCBtYXhTdHJpbmcsIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoInN0ZXAiLCBz
dGVwU3RyaW5nLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJyZXF1aXJlZCIsIGlucHV0LT5y
ZXF1aXJlZCgpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJjdXJyZW50VmFsdWUiLCBpbnB1
dC0+dmFsdWUoKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgibG9jYWxlIiwgZGVmYXVsdExh
bmd1YWdlKCksIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoInRvZGF5TGFiZWwiLCBjYWxlbmRh
clRvZGF5VGV4dCgpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJjbGVhckxhYmVsIiwgY2Fs
ZW5kYXJDbGVhclRleHQoKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgid2Vla1N0YXJ0RGF5
IiwgZmlyc3REYXlPZldlZWsoKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgibW9udGhMYWJl
bHMiLCBtb250aExhYmVscygpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJkYXlMYWJlbHMi
LCB3ZWVrRGF5U2hvcnRMYWJlbHMoKSwgd3JpdGVyKTsKLSAgICBEaXJlY3Rpb24gZGlyID0gZGly
ZWN0aW9uKG1vbnRoTGFiZWxzKClbMF1bMF0pOwotICAgIGFkZFByb3BlcnR5KCJpc1JUTCIsIGRp
ciA9PSBSaWdodFRvTGVmdCB8fCBkaXIgPT0gUmlnaHRUb0xlZnRBcmFiaWMsIHdyaXRlcik7Ci0g
ICAgYWRkU3RyaW5nKCJ9XG4iLCB3cml0ZXIpOwotCi0gICAgd3JpdGVyLmFkZERhdGEocGlja2Vy
Q29tbW9uSnMsIHNpemVvZihwaWNrZXJDb21tb25KcykpOwotICAgIHdyaXRlci5hZGREYXRhKGNh
bGVuZGFyUGlja2VySnMsIHNpemVvZihjYWxlbmRhclBpY2tlckpzKSk7Ci0gICAgYWRkU3RyaW5n
KCI8L3NjcmlwdD48L2JvZHk+XG4iLCB3cml0ZXIpOwotfQotCi12b2lkIENhbGVuZGFyUGlja2Vy
RWxlbWVudDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCBudW1WYWx1ZSwgY29uc3QgU3RyaW5n
JiBzdHJpbmdWYWx1ZSkKLXsKLSAgICBBU1NFUlQobV9wb3B1cCk7Ci0gICAgY2xvc2VQb3B1cCgp
OwotICAgIGlmIChudW1WYWx1ZSA+PSAwKQotICAgICAgICBob3N0SW5wdXQoKS0+c2V0VmFsdWUo
c3RyaW5nVmFsdWUsIERpc3BhdGNoQ2hhbmdlRXZlbnQpOwotfQotCi12b2lkIENhbGVuZGFyUGlj
a2VyRWxlbWVudDo6ZGlkQ2xvc2VQb3B1cCgpCi17Ci0gICAgbV9wb3B1cCA9IDA7Ci19Ci0KIH0K
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRh
clBpY2tlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlj
a2VyRWxlbWVudC5oCmluZGV4IGNiZjIxM2ZjNWZjYjNlMzVmMWQ2YmRmMTJlZjgxMjdlYjIzOWUz
ODcuLjQzNWZlMDIxZTE3NjljMDliY2E2NTgzMjZlOTU1YWUwMTI4YjlmOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5oCkBAIC0z
MywxNCArMzMsMTcgQEAKIAogI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCiAjaW5jbHVkZSAi
SFRNTERpdkVsZW1lbnQuaCIKLSNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKyNpbmNsdWRl
ICJWYWx1ZVBpY2tlci5oIgorI2luY2x1ZGUgIlZhbHVlUGlja2VyQ2xpZW50LmgiCisKKyNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTElu
cHV0RWxlbWVudDsKIGNsYXNzIFBhZ2VQb3B1cDsKIAotY2xhc3MgQ2FsZW5kYXJQaWNrZXJFbGVt
ZW50IDogcHVibGljIEhUTUxEaXZFbGVtZW50LCBwdWJsaWMgUGFnZVBvcHVwQ2xpZW50IHsKK2Ns
YXNzIENhbGVuZGFyUGlja2VyRWxlbWVudCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCwgcHVibGlj
IFZhbHVlUGlja2VyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYWxl
bmRhclBpY2tlckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkNhbGVu
ZGFyUGlja2VyRWxlbWVudCgpOwpAQCAtNDgsMjEgKzUxLDI4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNsb3NlUG9wdXAoKTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tF
dmVudHMoKSBPVkVSUklERTsKIAorICAgIC8vIENvbG9yQ2hvb3NlckNsaWVudCBpbXBsZW1lbnRh
dGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGlja1ZhbHVlKGNvbnN0IFN0cmluZyYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRQaWNrZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIEludFJlY3QgZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjdXJyZW50VmFsdWUoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkU2hvd1N1Z2dlc3Rpb25zKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uVmFsdWVzKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uTGFiZWxzKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBkb3VibGUgbWluaW11bVZhbHVlKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBkb3VibGUgbWF4aW11bVZhbHVlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBkb3VibGUgdmFsdWVTdGVwKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IHZhbHVlUmVxdWlyZWQoKSBjb25zdCBPVkVSUklERTsKKwogcHJpdmF0ZToKICAgICBDYWxlbmRh
clBpY2tlckVsZW1lbnQoRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGRldGFjaCgpIE9WRVJSSURFOwogCi0gICAgLy8gUGFnZVBvcHVwQ2xpZW50IGZ1
bmN0aW9uczoKLSAgICB2aXJ0dWFsIEludFNpemUgY29udGVudFNpemUoKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIHZvaWQgd3JpdGVEb2N1bWVudChEb2N1bWVudFdyaXRlciYpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFuZENsb3NlUG9wdXAoaW50LCBjb25zdCBTdHJpbmcm
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2VQb3B1cCgpIE9WRVJSSURFOwot
Ci0gICAgSFRNTElucHV0RWxlbWVudCogaG9zdElucHV0KCk7CisgICAgSFRNTElucHV0RWxlbWVu
dCogaG9zdElucHV0KCkgY29uc3Q7CiAKLSAgICBQYWdlUG9wdXAqIG1fcG9wdXA7CisgICAgT3du
UHRyPFZhbHVlUGlja2VyPiBtX3BpY2tlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKaW5kZXggZDhiYzA2ZjMzNmViNDAwZTIyZDFlZDY2M2I0NGFjOGViNGFj
MWE0OC4uZTNjZDMwNjgxMDMwMWU3MGY4MzYzMTI5NjFhYjE0YmExM2UyNTRiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRl
ICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRlICJWYWx1ZVBpY2tlci5oIgogCiAjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCkBAIC0xMDMs
NiArMTA0LDEzIEBAIFBhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBFbXB0eUNocm9tZUNsaWVudDo6
Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVuCiB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShDQUxFTkRBUl9QSUNLRVIpCitQYXNzT3duUHRyPFZhbHVlUGlja2VyPiBFbXB0eUNocm9t
ZUNsaWVudDo6b3BlbkNhbGVuZGFyUGlja2VyUG9wdXAoVmFsdWVQaWNrZXJDbGllbnQqKQorewor
ICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKIHZvaWQgRW1wdHlDaHJvbWVDbGllbnQ6
OnJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KQogewogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IGEwMjc5OTdmZjdmOTUzZDIyNTkyMDVk
OGFiNmZiYzUzNzlhZTA5NTUuLjU4YjIyNWRmNDgxZWYzZGE2MGIwOTAwMmRjNDUzOTk2ZGEwNjIx
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTE3Miw2ICsxNzIsMTAg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxDb2xvckNob29zZXI+IGNyZWF0ZUNv
bG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqLCBjb25zdCBDb2xvciYpIE9WRVJSSURFOwog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorICAgIHZpcnR1YWwgUGFzc093
blB0cjxWYWx1ZVBpY2tlcj4gb3BlbkNhbGVuZGFyUGlja2VyUG9wdXAoVmFsdWVQaWNrZXJDbGll
bnQqKSBPVkVSUklERTsKKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChG
cmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVy
KikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCBjY2E0YTA5MjVmN2RlMmJlOWI4MDFm
ZTQwYmQxOTAxMWQyMjFiZTVkLi42MjI4NTBhZDdiNDhjNDNlYzA2MDdkN2M4MWE3MjNlY2M4MGI3
ZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VOYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJWYWx1ZVBpY2tlci5oIgogI2luY2x1ZGUgIldpbmRv
d0ZlYXR1cmVzLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CkBAIC00NTQsNiArNDU1LDEzIEBAIFBhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBD
aHJvbWU6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCwKIH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKK1Bhc3NPd25QdHI8VmFsdWVQ
aWNrZXI+IENocm9tZTo6b3BlbkNhbGVuZGFyUGlja2VyUG9wdXAoVmFsdWVQaWNrZXJDbGllbnQq
IGNsaWVudCkKK3sKKyAgICByZXR1cm4gbV9jbGllbnQtPm9wZW5DYWxlbmRhclBpY2tlclBvcHVw
KGNsaWVudCk7Cit9CisjZW5kaWYKKwogdm9pZCBDaHJvbWU6OnJ1bk9wZW5QYW5lbChGcmFtZSog
ZnJhbWUsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyKQogewogICAgIG1fY2xp
ZW50LT5ydW5PcGVuUGFuZWwoZnJhbWUsIGZpbGVDaG9vc2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmlu
ZGV4IDU2MzhmM2E0OGFkZDg5NTllMzBhZWIwZDIwNWFkM2U3MGI4Y2FjMTkuLjA5Yzg3NjJmMzRh
Y2Q5YTM1NGI0NTIzZDgyNGI5MjBjYzY2ZjdiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtNTQs
NiArNTQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBvcHVwTWVudTsKICAg
ICBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CiAgICAgY2xhc3MgU2VhcmNoUG9wdXBNZW51OworI2lm
IEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisgICAgY2xhc3MgVmFsdWVQaWNrZXI7CisgICAgY2xh
c3MgVmFsdWVQaWNrZXJDbGllbnQ7CisjZW5kaWYKIAogICAgIHN0cnVjdCBGcmFtZUxvYWRSZXF1
ZXN0OwogICAgIHN0cnVjdCBWaWV3cG9ydEFyZ3VtZW50czsKQEAgLTE1MCw2ICsxNTQsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYXNzT3duUHRyPENvbG9yQ2hvb3Nlcj4gY3Jl
YXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IENvbG9yJiBpbml0aWFs
Q29sb3IpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorICAgICAgICBQ
YXNzT3duUHRyPFZhbHVlUGlja2VyPiBvcGVuQ2FsZW5kYXJQaWNrZXJQb3B1cChWYWx1ZVBpY2tl
ckNsaWVudCopOworI2VuZGlmCisKICAgICAgICAgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQ
YXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7CiAgICAgICAgIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKik7CiAjaWYgRU5BQkxFKERJUkVD
VE9SWV9VUExPQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBkZDZhZmNmZTFj
ZGZlOGIxNzZmYjY5OGViZTM2MTcwMmRkYzA4ODkxLi42NTVlNzUwYWNhMjdiMWU1YWZkOWNlODcx
ZTBmYTI0YjM1ZGVjNDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTY3LDYg
KzY3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBvcHVwTWVudUNsaWVudDsK
ICAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsK
KyAgICBjbGFzcyBWYWx1ZVBpY2tlcjsKKyAgICBjbGFzcyBWYWx1ZVBpY2tlckNsaWVudDsKICAg
ICBjbGFzcyBXaWRnZXQ7CiAKICAgICBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsKQEAgLTIyMiw2
ICsyMjQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50Kiwg
Y29uc3QgQ29sb3ImKSA9IDA7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIp
CisgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxWYWx1ZVBpY2tlcj4gb3BlbkNhbGVuZGFyUGlj
a2VyUG9wdXAoVmFsdWVQaWNrZXJDbGllbnQqKSA9IDA7CisjZW5kaWYKKwogICAgICAgICB2aXJ0
dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pID0g
MDsKICAgICAgICAgLy8gQXN5bmNocm9ub3VzIHJlcXVlc3QgdG8gbG9hZCBhbiBpY29uIGZvciBz
cGVjaWZpZWQgZmlsZW5hbWVzLgogICAgICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKikgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUG9wdXBDbGllbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlUG9wdXBDbGllbnQuY3BwCmluZGV4IDViNjY2ZWE0NTk1YmQ2ZjZiNzYyMWYy
ODZiMTMyNjFjZjNjYzFjYzUuLjMwMWQxZWYzYTA3NjY3MzcwY2ZkYWQ0YjhkYWFlMzU3YTk1ODhh
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENsaWVudC5jcHAKQEAgLTY5LDYgKzY5
LDE0IEBAIHZvaWQgUGFnZVBvcHVwQ2xpZW50OjphZGRQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1l
LCB1bnNpZ25lZCB2YWx1ZSwgRG9jdW1lbnRXcml0CiAgICAgYWRkTGl0ZXJhbCgiLFxuIiwgd3Jp
dGVyKTsKIH0KIAordm9pZCBQYWdlUG9wdXBDbGllbnQ6OmFkZFByb3BlcnR5KGNvbnN0IGNoYXIq
IG5hbWUsIGRvdWJsZSB2YWx1ZSwgRG9jdW1lbnRXcml0ZXImIHdyaXRlcikKK3sKKyAgICB3cml0
ZXIuYWRkRGF0YShuYW1lLCBzdHJsZW4obmFtZSkpOworICAgIGFkZExpdGVyYWwoIjogIiwgd3Jp
dGVyKTsKKyAgICBhZGRTdHJpbmcoU3RyaW5nOjpudW1iZXIodmFsdWUpLCB3cml0ZXIpOworICAg
IGFkZExpdGVyYWwoIixcbiIsIHdyaXRlcik7Cit9CisKIHZvaWQgUGFnZVBvcHVwQ2xpZW50Ojph
ZGRQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLCBib29sIHZhbHVlLCBEb2N1bWVudFdyaXRlciYg
d3JpdGVyKQogewogICAgIHdyaXRlci5hZGREYXRhKG5hbWUsIHN0cmxlbihuYW1lKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlUG9wdXBDbGllbnQuaAppbmRleCAwMmFlZTMyMjU2Y2RhZmE5NmUxNmQ0
ZTNmYjQ4ZDRmODZmMzBhM2UwLi44MzliNDJlY2Y2MTNlNWIzZGIxNjg4MmRkMWUxNjE4MmViMGQ4
ZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ2xpZW50LmgKQEAgLTY2LDYgKzY2LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGFkZEphdmFTY3JpcHRTdHJpbmcoY29uc3QgU3Ry
aW5nJiwgRG9jdW1lbnRXcml0ZXImKTsKICAgICBzdGF0aWMgdm9pZCBhZGRQcm9wZXJ0eShjb25z
dCBjaGFyKiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBEb2N1bWVudFdyaXRlciYpOwogICAg
IHN0YXRpYyB2b2lkIGFkZFByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsIHVuc2lnbmVkIHZhbHVl
LCBEb2N1bWVudFdyaXRlciYpOworICAgIHN0YXRpYyB2b2lkIGFkZFByb3BlcnR5KGNvbnN0IGNo
YXIqIG5hbWUsIGRvdWJsZSB2YWx1ZSwgRG9jdW1lbnRXcml0ZXImKTsKICAgICBzdGF0aWMgdm9p
ZCBhZGRQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLCBib29sIHZhbHVlLCBEb2N1bWVudFdyaXRl
ciYpOwogICAgIHN0YXRpYyB2b2lkIGFkZFByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiB2YWx1ZXMsIERvY3VtZW50V3JpdGVyJik7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmFsdWVQaWNrZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ZhbHVlUGlja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk1MTQzMmUwZWI2NmI2NzY5YTRh
ZWI3OTM4ZTE1MTA3NTE0MTQ1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ZhbHVlUGlja2VyLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmFsdWVQaWNrZXJf
aAorI2RlZmluZSBWYWx1ZVBpY2tlcl9oCisKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworLy8gRm9yIHBpY2tlcnMgbGlrZSBjb2xvciBwaWNrZXJzIGFuZCBk
YXRlIHBpY2tlcnMuCitjbGFzcyBWYWx1ZVBpY2tlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
VmFsdWVQaWNrZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRQaWNrZXJWYWx1ZShjb25z
dCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZFBpY2tlcigpID0gMDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFZhbHVlUGlja2VyX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZhbHVlUGlja2VyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9WYWx1ZVBpY2tlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwYmQ3
ZWM2MTI2OGY1NjhiNmJmZjc3ZGYxZGU1Nzc4MWY2N2ViMjkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WYWx1ZVBpY2tlckNsaWVudC5oCkBAIC0wLDAgKzEsNjYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFZhbHVlUGlja2VyQ2xpZW50X2gKKyNkZWZpbmUgVmFsdWVQaWNrZXJDbGllbnRf
aAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZhbHVlUGlja2VyQ2xpZW50IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5WYWx1ZVBpY2tlckNsaWVudCgpIHsgfQorCisgICAgLy8gQ2Fs
bGVkIHdoZW4gdXNlciBwaWNrZWQgYSB2YWx1ZS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGlja1Zh
bHVlKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICAvLyBDYWxsZWQgd2hlbiBwaWNrZXIgaGFzIGVu
ZGVkLgorICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRQaWNrZXIoKSA9IDA7CisgICAgLy8gUmV0dXJu
cyB0aGUgcmVjdCBmb3IgdGhlIGVsZW1lbnQgdGhhdCBvcmlnaW5hdGVkIHRoZSBwaWNrZXIuCisg
ICAgdmlydHVhbCBJbnRSZWN0IGVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkgY29uc3Qg
PSAwOworICAgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgd2hpY2ggc2hvdWxkIGJlIHNo
b3duIGluIHRoZSBjb2xvciBwaWNrZXIuCisgICAgdmlydHVhbCBTdHJpbmcgY3VycmVudFZhbHVl
KCkgPSAwOworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91bGQgc2hvdyBzdWdnZXN0aW9u
cyB0byB0aGUgdXNlci4KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd1N1Z2dlc3Rpb25zKCkg
Y29uc3QgPSAwOworICAgIC8vIFJldHVybnMgdGhlIGxpc3Qgb2Ygc3VnZ2VzdGlvbiB2YWx1ZXMu
CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uVmFsdWVzKCkgY29uc3QgPSAw
OworICAgIC8vIFJldHVybnMgdGhlIGxpc3Qgb2Ygc3VnZ2VzdGlvbiBsYWJlbHMuCisgICAgdmly
dHVhbCBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uTGFiZWxzKCkgY29uc3QgPSAwOworICAgIC8v
IFJldHVybnMgdGhlIG1pbmltdW0gcGlja2FibGUgdmFsdWUuCisgICAgdmlydHVhbCBkb3VibGUg
bWluaW11bVZhbHVlKCkgY29uc3QgPSAwOworICAgIC8vIFJldHVybnMgdGhlIG1heGltdW0gcGlj
a2FibGUgdmFsdWUuCisgICAgdmlydHVhbCBkb3VibGUgbWF4aW11bVZhbHVlKCkgY29uc3QgPSAw
OworICAgIC8vIFJldHVybnMgdGhlIHZhbHVlIHN0ZXAgc2l6ZS4KKyAgICB2aXJ0dWFsIGRvdWJs
ZSB2YWx1ZVN0ZXAoKSBjb25zdCA9IDA7CisgICAgLy8gUmV0dXJucyBpZiB0aGUgdmFsdWUgaXMg
cmVxdWlyZWQuCisgICAgdmlydHVhbCBib29sIHZhbHVlUmVxdWlyZWQoKSBjb25zdCA9IDA7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBWYWx1ZVBpY2tlckNsaWVu
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggYjk4NGFmYzg2M2U2ZWU1YTQyZGRl
NzI0YmNlZTYwM2Q2YmI0NWMzZC4uOTM1Y2Q5YTU4Zjk5OWUyZWFmY2M2YWE3ZDA3ZTBlNGZhMTdh
ZTA4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzU4LDYgKzM1OCw4IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9CYXR0ZXJ5Q2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL0Jsb2JSZWdpc3RyeVByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9CbG9i
UmVnaXN0cnlQcm94eS5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0NhbGVuZGFyUGlja2VyUG9w
dXAuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL0NhbGVuZGFyUGlja2VyUG9wdXAuaCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9DaHJvbWVDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvQ2hyb21p
dW1DdXJyZW50VGltZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQ2FsZW5kYXJQaWNrZXJQb3B1cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
YWxlbmRhclBpY2tlclBvcHVwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjExYjg2MDc2MWNkMDQ5MzA2ZjE5
OGUxOTBkZGRkOGY0MWNiNjM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2FsZW5kYXJQaWNrZXJQb3B1cC5jcHAKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2FsZW5kYXJQaWNrZXJQb3B1cC5oIgorCisjaWYgRU5B
QkxFKENBTEVOREFSX1BJQ0tFUikKKworI2luY2x1ZGUgIkNhbGVuZGFyUGlja2VyLmgiCisjaW5j
bHVkZSAiQ2hyb21lQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCisj
aW5jbHVkZSAiTGFuZ3VhZ2UuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWREYXRlLmgiCisjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQaWNrZXJDb21tb24uaCIKKyNpbmNsdWRl
ICJSZW5kZXJUaGVtZS5oIgorI2luY2x1ZGUgIlZhbHVlUGlja2VyQ2xpZW50LmgiCisjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSA8cHVibGljL1dl
YkxvY2FsaXplZFN0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworQ2FsZW5kYXJQaWNrZXJQb3B1cDo6Q2FsZW5kYXJQaWNrZXJQ
b3B1cChDaHJvbWVDbGllbnRJbXBsKiBjaHJvbWVDbGllbnQsIFdlYkNvcmU6OlZhbHVlUGlja2Vy
Q2xpZW50KiBjbGllbnQpCisgICAgOiBtX2Nocm9tZUNsaWVudChjaHJvbWVDbGllbnQpCisgICAg
LCBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3BvcHVwKDApCit7CisgICAgQVNTRVJUKG1fY2hy
b21lQ2xpZW50KTsKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIG1fcG9wdXAgPSBtX2Nocm9t
ZUNsaWVudC0+b3BlblBhZ2VQb3B1cCh0aGlzLCBtX2NsaWVudC0+ZWxlbWVudFJlY3RSZWxhdGl2
ZVRvUm9vdFZpZXcoKSk7Cit9CisKK0NhbGVuZGFyUGlja2VyUG9wdXA6On5DYWxlbmRhclBpY2tl
clBvcHVwKCkKK3sKK30KKwordm9pZCBDYWxlbmRhclBpY2tlclBvcHVwOjpzZXRQaWNrZXJWYWx1
ZShjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQ2Fs
ZW5kYXJQaWNrZXJQb3B1cDo6ZW5kUGlja2VyKCkKK3sKKyAgICBpZiAoIW1fcG9wdXApCisgICAg
ICAgIHJldHVybjsKKyAgICBtX2Nocm9tZUNsaWVudC0+Y2xvc2VQYWdlUG9wdXAobV9wb3B1cCk7
Cit9CisKK1dlYkNvcmU6OkludFNpemUgQ2FsZW5kYXJQaWNrZXJQb3B1cDo6Y29udGVudFNpemUo
KQoreworICAgIHJldHVybiBXZWJDb3JlOjpJbnRTaXplKDAsIDApOworfQorCit2b2lkIENhbGVu
ZGFyUGlja2VyUG9wdXA6OndyaXRlRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXImIHdy
aXRlcikKK3sKKyAgICBXZWJDb3JlOjpEYXRlQ29tcG9uZW50cyBkYXRlOworICAgIGRhdGUuc2V0
TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUobV9jbGllbnQtPm1pbmltdW1WYWx1ZSgpKTsK
KyAgICBTdHJpbmcgbWluU3RyaW5nID0gZGF0ZS50b1N0cmluZygpOworICAgIGRhdGUuc2V0TWls
bGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUobV9jbGllbnQtPm1heGltdW1WYWx1ZSgpKTsKKyAg
ICBTdHJpbmcgbWF4U3RyaW5nID0gZGF0ZS50b1N0cmluZygpOworICAgIGRvdWJsZSBzdGVwID0g
bV9jbGllbnQtPnZhbHVlU3RlcCgpOworCisgICAgYWRkU3RyaW5nKCI8IURPQ1RZUEUgaHRtbD48
aGVhZD48bWV0YSBjaGFyc2V0PSdVVEYtOCc+PHN0eWxlPlxuIiwgd3JpdGVyKTsKKyAgICB3cml0
ZXIuYWRkRGF0YShXZWJDb3JlOjpwaWNrZXJDb21tb25Dc3MsIHNpemVvZihXZWJDb3JlOjpwaWNr
ZXJDb21tb25Dc3MpKTsKKyAgICB3cml0ZXIuYWRkRGF0YShXZWJDb3JlOjpjYWxlbmRhclBpY2tl
ckNzcywgc2l6ZW9mKFdlYkNvcmU6OmNhbGVuZGFyUGlja2VyQ3NzKSk7CisgICAgQ1N0cmluZyBl
eHRyYVN0eWxlID0gV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYUNh
bGVuZGFyUGlja2VyU3R5bGVTaGVldCgpOworICAgIGlmIChleHRyYVN0eWxlLmxlbmd0aCgpKQor
ICAgICAgICB3cml0ZXIuYWRkRGF0YShleHRyYVN0eWxlLmRhdGEoKSwgZXh0cmFTdHlsZS5sZW5n
dGgoKSk7CisgICAgYWRkU3RyaW5nKCI8L3N0eWxlPjwvaGVhZD48Ym9keT48ZGl2IGlkPW1haW4+
TG9hZGluZy4uLjwvZGl2PjxzY3JpcHQ+XG4iCisgICAgICAgICAgICAgICAid2luZG93LmRpYWxv
Z0FyZ3VtZW50cyA9IHtcbiIsIHdyaXRlcik7CisgICAgYWRkUHJvcGVydHkoIm1pbiIsIG1pblN0
cmluZywgd3JpdGVyKTsKKyAgICBhZGRQcm9wZXJ0eSgibWF4IiwgbWF4U3RyaW5nLCB3cml0ZXIp
OworICAgIGFkZFByb3BlcnR5KCJzdGVwIiwgc3RlcCwgd3JpdGVyKTsKKyAgICBhZGRQcm9wZXJ0
eSgicmVxdWlyZWQiLCBtX2NsaWVudC0+dmFsdWVSZXF1aXJlZCgpLCB3cml0ZXIpOworICAgIGFk
ZFByb3BlcnR5KCJjdXJyZW50VmFsdWUiLCBtX2NsaWVudC0+Y3VycmVudFZhbHVlKCksIHdyaXRl
cik7CisgICAgYWRkUHJvcGVydHkoImxvY2FsZSIsIFdlYkNvcmU6OmRlZmF1bHRMYW5ndWFnZSgp
LCB3cml0ZXIpOworICAgIFdlYkNvcmU6OlBhZ2VQb3B1cENsaWVudDo6YWRkUHJvcGVydHkoInRv
ZGF5TGFiZWwiLCBQbGF0Zm9ybTo6Y3VycmVudCgpLT5xdWVyeUxvY2FsaXplZFN0cmluZyhXZWJM
b2NhbGl6ZWRTdHJpbmc6OkNhbGVuZGFyVG9kYXkpLCB3cml0ZXIpOworICAgIFdlYkNvcmU6OlBh
Z2VQb3B1cENsaWVudDo6YWRkUHJvcGVydHkoImNsZWFyTGFiZWwiLCBQbGF0Zm9ybTo6Y3VycmVu
dCgpLT5xdWVyeUxvY2FsaXplZFN0cmluZyhXZWJMb2NhbGl6ZWRTdHJpbmc6OkNhbGVuZGFyQ2xl
YXIpLCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5KCJ3ZWVrU3RhcnREYXkiLCBXZWJDb3JlOjpm
aXJzdERheU9mV2VlaygpLCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5KCJtb250aExhYmVscyIs
IFdlYkNvcmU6Om1vbnRoTGFiZWxzKCksIHdyaXRlcik7CisgICAgYWRkUHJvcGVydHkoImRheUxh
YmVscyIsIFdlYkNvcmU6OndlZWtEYXlTaG9ydExhYmVscygpLCB3cml0ZXIpOworICAgIERpcmVj
dGlvbiBkaXIgPSBkaXJlY3Rpb24oV2ViQ29yZTo6bW9udGhMYWJlbHMoKVswXVswXSk7CisgICAg
YWRkUHJvcGVydHkoImlzUlRMIiwgZGlyID09IFJpZ2h0VG9MZWZ0IHx8IGRpciA9PSBSaWdodFRv
TGVmdEFyYWJpYywgd3JpdGVyKTsKKyAgICBhZGRTdHJpbmcoIn1cbiIsIHdyaXRlcik7CisKKyAg
ICB3cml0ZXIuYWRkRGF0YShXZWJDb3JlOjpwaWNrZXJDb21tb25Kcywgc2l6ZW9mKFdlYkNvcmU6
OnBpY2tlckNvbW1vbkpzKSk7CisgICAgd3JpdGVyLmFkZERhdGEoV2ViQ29yZTo6Y2FsZW5kYXJQ
aWNrZXJKcywgc2l6ZW9mKFdlYkNvcmU6OmNhbGVuZGFyUGlja2VySnMpKTsKKyAgICBhZGRTdHJp
bmcoIjwvc2NyaXB0PjwvYm9keT5cbiIsIHdyaXRlcik7Cit9CisKK3ZvaWQgQ2FsZW5kYXJQaWNr
ZXJQb3B1cDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCBudW1WYWx1ZSwgY29uc3QgU3RyaW5n
JiBzdHJpbmdWYWx1ZSkKK3sKKyAgICBpZiAobnVtVmFsdWUgPj0gMCkKKyAgICAgICAgbV9jbGll
bnQtPmRpZFBpY2tWYWx1ZShzdHJpbmdWYWx1ZSk7CisgICAgZW5kUGlja2VyKCk7Cit9CisKK3Zv
aWQgQ2FsZW5kYXJQaWNrZXJQb3B1cDo6ZGlkQ2xvc2VQb3B1cCgpCit7ICAgIAorICAgIG1fY2xp
ZW50LT5kaWRFbmRQaWNrZXIoKTsKKyAgICBtX3BvcHVwID0gMDsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2FsZW5kYXJQaWNrZXJQb3B1cC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2FsZW5kYXJQaWNrZXJQb3B1cC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhkYTlmZWY1NzdjMzQzY2M4MGY5NGQ1MmNiZjI0NzI4OTI5YWViZTcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DYWxlbmRhclBpY2tlclBvcHVwLmgKQEAg
LTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgQ2FsZW5kYXJQaWNrZXJQb3B1cF9oCisjZGVmaW5lIENhbGVu
ZGFyUGlja2VyUG9wdXBfaAorCisjaW5jbHVkZSAiUGFnZVBvcHVwQ2xpZW50LmgiCisjaW5jbHVk
ZSAiVmFsdWVQaWNrZXIuaCIKKworI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIFBhZ2VQb3B1cDsKK2NsYXNzIFZhbHVlUGlja2VyQ2xpZW50
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ2hyb21lQ2xpZW50SW1wbDsKKwor
Y2xhc3MgQ2FsZW5kYXJQaWNrZXJQb3B1cCA6IHB1YmxpYyBXZWJDb3JlOjpWYWx1ZVBpY2tlciwg
cHVibGljIFdlYkNvcmU6OlBhZ2VQb3B1cENsaWVudCB7CitwdWJsaWM6CisgICAgQ2FsZW5kYXJQ
aWNrZXJQb3B1cChDaHJvbWVDbGllbnRJbXBsKiwgV2ViQ29yZTo6VmFsdWVQaWNrZXJDbGllbnQq
KTsKKyAgICB2aXJ0dWFsIH5DYWxlbmRhclBpY2tlclBvcHVwKCk7CisKKyAgICAvLyBWYWx1ZVBp
Y2tlciBmdW5jdGlvbnM6CisgICAgdmlydHVhbCB2b2lkIHNldFBpY2tlclZhbHVlKGNvbnN0IFN0
cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBlbmRQaWNrZXIoKSBPVkVSUklERTsK
KworcHJpdmF0ZToKKyAgICAvLyBQYWdlUG9wdXBDbGllbnQgZnVuY3Rpb25zOgorICAgIHZpcnR1
YWwgV2ViQ29yZTo6SW50U2l6ZSBjb250ZW50U2l6ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCB3cml0ZURvY3VtZW50KFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQsIGNvbnN0IFN0cmluZyYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVBvcHVwKCkgT1ZFUlJJREU7CisK
KyAgICBDaHJvbWVDbGllbnRJbXBsKiBtX2Nocm9tZUNsaWVudDsKKyAgICBXZWJDb3JlOjpWYWx1
ZVBpY2tlckNsaWVudCogbV9jbGllbnQ7CisgICAgV2ViQ29yZTo6UGFnZVBvcHVwKiBtX3BvcHVw
OworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKKworI2VuZGlm
IC8vIENhbGVuZGFyUGlja2VyUG9wdXBfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCBkYzVhZmM4ODY1NWEyODU0OTk1M2I2NWIwNGU2
OWNhZWY1ZWZkNGYwLi43MDQyYzZhZWQ3MzRiMTEwYjk4NGVkZTZjNzI2NDRhYjAwYzNlYTRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApA
QCAtMzksNiArMzksOSBAQAogI2luY2x1ZGUgIkNvbG9yQ2hvb3NlckNsaWVudC5oIgogI2luY2x1
ZGUgIkNvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oIgogI2VuZGlmCisjaWYgRU5BQkxFKENBTEVO
REFSX1BJQ0tFUikKKyNpbmNsdWRlICJDYWxlbmRhclBpY2tlclBvcHVwLmgiCisjZW5kaWYKICNp
bmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCiAjaW5jbHVkZSAiRGF0YWJh
c2VUcmFja2VyLmgiCkBAIC03MSw2ICs3NCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRGaWVsZERlY29yYXRpb25F
bGVtZW50LmgiCisjaW5jbHVkZSAiVmFsdWVQaWNrZXIuaCIKICNpbmNsdWRlICJXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0LmgiCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAjaW5jbHVkZSAi
V2ViQ29sb3JDaG9vc2VyLmgiCkBAIC03MDQsNiArNzA4LDEzIEBAIFBhc3NPd25QdHI8V2ViQ29s
b3JDaG9vc2VyPiBDaHJvbWVDbGllbnRJbXBsOjpjcmVhdGVXZWJDb2xvckNob29zZXIoV2ViQ29s
b3JDaG9vCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCitQYXNzT3du
UHRyPFdlYkNvcmU6OlZhbHVlUGlja2VyPiBDaHJvbWVDbGllbnRJbXBsOjpvcGVuQ2FsZW5kYXJQ
aWNrZXJQb3B1cChXZWJDb3JlOjpWYWx1ZVBpY2tlckNsaWVudCogcGlja2VyQ2xpZW50KQorewor
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2FsZW5kYXJQaWNrZXJQb3B1cCh0aGlzLCBwaWNrZXJD
bGllbnQpKTsKK30KKyNlbmRpZgorCiB2b2lkIENocm9tZUNsaWVudEltcGw6OnJ1bk9wZW5QYW5l
bChGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyKQogewog
ICAgIFdlYlZpZXdDbGllbnQqIGNsaWVudCA9IG1fd2ViVmlldy0+Y2xpZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKaW5kZXggNjJiMzk5ODg2
YmJjNDJjY2M3NzI0MWJjN2UzOWJiODE4NzZkMDU5MS4uYzBjMjFkNTE4NTZjYjU2OGFjY2U1OWE2
YWU4NDQ0NDc1YWViYTc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuaApAQCAtNTAsNiArNTAsOCBAQCBjbGFzcyBQb3B1cENvbnRhaW5lcjsKIGNs
YXNzIFBvcHVwTWVudUNsaWVudDsKIGNsYXNzIFJlbmRlckJveDsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOworY2xhc3MgVmFsdWVQaWNrZXI7CitjbGFzcyBWYWx1ZVBpY2tlckNsaWVudDsKIHN0cnVj
dCBXaW5kb3dGZWF0dXJlczsKIH0KIApAQCAtMTQ0LDYgKzE0Niw5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29z
ZXIoV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBP
VkVSUklERTsKICAgICBQYXNzT3duUHRyPFdlYkNvbG9yQ2hvb3Nlcj4gY3JlYXRlV2ViQ29sb3JD
aG9vc2VyKFdlYkNvbG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IFdlYkNvbG9yJik7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJD
b3JlOjpWYWx1ZVBpY2tlcj4gb3BlbkNhbGVuZGFyUGlja2VyUG9wdXAoV2ViQ29yZTo6VmFsdWVQ
aWNrZXJDbGllbnQqKSBPVkVSUklERTsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBydW5PcGVu
UGFuZWwoV2ViQ29yZTo6RnJhbWUqLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPik7
CiAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFdURjo6U3Ry
aW5nPiYsIFdlYkNvcmU6OkZpbGVJY29uTG9hZGVyKik7CiAjaWYgRU5BQkxFKERJUkVDVE9SWV9V
UExPQUQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161946</attachid>
            <date>2012-09-03 15:49:00 -0700</date>
            <delta_ts>2012-09-04 04:43:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95681-20120904074843.patch</filename>
            <type>text/plain</type>
            <size>37432</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0MGQ1ZDNmYWM4Y2Rk
M2Y1MjA3ODMyZjYwOTk4YWQyOWIzNzZmNS4uNGMzMmNjNDAzMjI2MzNjNzNhNzcwZDhiNDQxN2Y2
YjY1M2RjNjJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTA5LTAzICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgUGFnZVBvcHVw
Q2xpZW50IHRvIFdlYktpdCBsYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTU2ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZlIFBhZ2VQb3B1cENsaWVudCB0byBXZWJLaXQgbGF5ZXIgYW5kIGlu
dHJvZHVjZSBWYWx1ZVBpY2tlciB0aGF0IHdpbGwKKyAgICAgICAgYmUgc2hhcmVkIHdpdGggdGhl
IHZhcmlvdXMgcGlja2VycyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4g
Q292ZXJlZCBieSBleGlzdGluZyBjYWxlbmRhciBwaWNrZXIgdGVzdHMuCisKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6Q2FsZW5kYXJQ
aWNrZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6
fkNhbGVuZGFyUGlja2VyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6Omhvc3RJbnB1dCk6IENoYW5nZWQgdG8gY29uc3QuCisgICAgICAgIChXZWJDb3Jl
OjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRpZFBpY2tWYWx1ZSk6IENhbGxlZCB3aGVuIHVzZXIg
cGlja2VkIGEgY29sb3IgaW4gdGhlIHZhbHVlIHBpY2tlci4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50OjpkaWRFbmRQaWNrZXIpOiBD
YWxsZWQgd2hlbiBwaWNrZXIgZW5kZWQuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6OmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KTogUmV0dXJucyByZWN0IG9m
IGlucHV0IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6
OmN1cnJlbnRWYWx1ZSk6IFJldHVybiBjdXJyZW50IHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6
Q2FsZW5kYXJQaWNrZXJFbGVtZW50OjpzaG91bGRTaG93U3VnZ2VzdGlvbnMpOiBSZXR1cm5zIGZh
bHNlIGZvciBub3cuIFdpbGwgcmV0dXJuIHRydWUgd2hlbiB3ZSBpbXBsZW1lbnQgdGhlIHN1Z2dl
c3Rpb24gcGlja2VyLgorICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpz
dWdnZXN0aW9uVmFsdWVzKTogUmV0dXJucyBlbXB0eSB2ZWN0b3IgZm9yIG5vdy4KKyAgICAgICAg
KFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6c3VnZ2VzdGlvbkxhYmVscyk6IFJldHVy
bnMgZW1wdHkgdmVjdG9yIGZvciBub3cuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6Om1pbmltdW1WYWx1ZSk6IFJldHVybnMgdGhlIG1pbmltdW0gdmFsdWUgdGhhdCBz
aG91bGQgYmUgcGlja2FibGUgaW4gdGhlIHBpY2tlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhbGVu
ZGFyUGlja2VyRWxlbWVudDo6bWF4aW11bVZhbHVlKTogUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1
ZSB0aGF0IHNob3VsZCBiZSBwaWNrYWJsZSBpbiB0aGUgcGlja2VyLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50Ojp2YWx1ZVN0ZXApOiBSZXR1cm5zIHRoZSB2YWx1ZSBz
dGVwIHNpemUuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OnZhbHVl
UmVxdWlyZWQpOiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IGEgdmFsdWUgaXMgcmVxdWlyZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6Om9wZW5Qb3B1cCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmNsb3NlUG9wdXApOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5oOgorICAgICAgICAoQ2FsZW5k
YXJQaWNrZXJFbGVtZW50KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6Om9w
ZW5DYWxlbmRhclBpY2tlclBvcHVwKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6
CisgICAgICAgIChFbXB0eUNocm9tZUNsaWVudCk6CisgICAgICAgICogcGFnZS9DaHJvbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6Om9wZW5DYWxl
bmRhclBpY2tlclBvcHVwKToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChDaHJvbWUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENocm9tZUNsaWVudCk6CisgICAgICAgICog
cGFnZS9QYWdlUG9wdXBDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQ2xp
ZW50OjphZGRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwYWdlL1Bh
Z2VQb3B1cENsaWVudC5oOgorICAgICAgICAoUGFnZVBvcHVwQ2xpZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9WYWx1ZVBpY2tlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoVmFsdWVQaWNrZXIpOiBSZXByZXNlbnRzIHBpY2tlcnMgbGlrZSBjb2xvciBwaWNrZXIgYW5k
IGRhdGUgcGlja2VyLgorICAgICAgICAoV2ViQ29yZTo6VmFsdWVQaWNrZXI6On5WYWx1ZVBpY2tl
cik6CisgICAgICAgICogcGxhdGZvcm0vVmFsdWVQaWNrZXJDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoVmFsdWVQaWNrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
VmFsdWVQaWNrZXJDbGllbnQ6On5WYWx1ZVBpY2tlckNsaWVudCk6CisKIDIwMTItMDktMDMgIEFs
ZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBVbmhpZGUgaGlkZGVuIGNoYXJhY3RlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggZDVlNDE4ZGMzZTUyMWZkMTg0NDQ4NmE5ZTZjZWU0YTExYTIyMTEyZC4uMGM0OGQwMzA3
OWE5ODg1NjBiYjYyMzUxY2FhOTY2ZGZlZjNjNzdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMi0wOS0wMyAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlA
d2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFBhZ2VQb3B1cENsaWVudCB0byBXZWJLaXQgbGF5
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Njgx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJL
aXQuZ3lwOgorICAgICAgICAqIHNyYy9DYWxlbmRhclBpY2tlclBvcHVwLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpDYWxlbmRhclBpY2tlclBvcHVwOjpD
YWxlbmRhclBpY2tlclBvcHVwKToKKyAgICAgICAgKFdlYktpdDo6Q2FsZW5kYXJQaWNrZXJQb3B1
cDo6fkNhbGVuZGFyUGlja2VyUG9wdXApOgorICAgICAgICAoV2ViS2l0OjpDYWxlbmRhclBpY2tl
clBvcHVwOjpzZXRQaWNrZXJWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2Vy
UG9wdXA6OmVuZFBpY2tlcik6CisgICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2VyUG9wdXA6
OmNvbnRlbnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6Q2FsZW5kYXJQaWNrZXJQb3B1cDo6d3Jp
dGVEb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2VyUG9wdXA6OnNldFZh
bHVlQW5kQ2xvc2VQb3B1cCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2VyUG9wdXA6
OmRpZENsb3NlUG9wdXApOgorICAgICAgICAqIHNyYy9DYWxlbmRhclBpY2tlclBvcHVwLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVu
dC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQ2Fs
ZW5kYXJQaWNrZXJQb3B1cCk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6b3Bl
bkNhbGVuZGFyUGlja2VyUG9wdXApOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENocm9tZUNsaWVudEltcGwpOgorCiAyMDEy
LTA5LTAxICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBjaHJvbWl1bSBidWlsZGZpeCB3aGVuIHVzZV9saWJjY19mb3JfY29tcG9zaXRv
cj0xCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMzA2MTk1NGYxMTgxODU3OGMyNTE4YjBmODk2NzVmODE2
NjJiZWRmMi4uNDRhMTIwNWM4YWMzZTc5ODE0MzE1ZDhkN2Q2NWRiNzkwZmVlM2U1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtMzM3LDYgKzMzNyw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vVGhy
ZWFkR2xvYmFsRGF0YS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9UaW1lci5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9UcmVlU2hhcmVkLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1Zh
bHVlUGlja2VyLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1ZhbHVlUGlja2VyQ2xpZW50Lmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Zpc2l0ZWRMaW5rU3RyYXRlZ3kuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vVmlzaXRlZExpbmtzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1dp
ZGdldC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFy
UGlja2VyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBp
Y2tlckVsZW1lbnQuY3BwCmluZGV4IGYzMjQ0ZGU2YjBmZDczMDFhZGRjODc5MTYxNDJiYzAxYTUw
Yzg4YTIuLjU0ZTVkZWE5ZjA2NzdhOGM5NGE1MTc2NzM1YmNmNzI4NGI4ZTA5NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNw
cApAQCAtMzMsMjIgKzMzLDEyIEBACiAKICNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQogCi0j
aW5jbHVkZSAiQ2FsZW5kYXJQaWNrZXIuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKLSNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUg
IkV2ZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxl
bWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0j
aW5jbHVkZSAiTG9jYWxpemVkRGF0ZS5oIgotI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUGlja2VyQ29tbW9uLmgiCiAjaW5jbHVkZSAi
UmVuZGVyRGV0YWlsc01hcmtlci5oIgotI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCi0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmlj
b2RlOwogCkBAIC01OCw3ICs0OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIGlu
bGluZSBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OkNhbGVuZGFyUGlja2VyRWxlbWVudChEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRGl2RWxlbWVudChkaXZUYWcsIGRvY3VtZW50KQotICAg
ICwgbV9wb3B1cCgwKQorICAgICwgbV9waWNrZXIobnVsbHB0cikKIHsKICAgICBzZXRTaGFkb3dQ
c2V1ZG9JZCgiLXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yIik7CiB9CkBAIC03MSw3
ICs2MSw3IEBAIFBhc3NSZWZQdHI8Q2FsZW5kYXJQaWNrZXJFbGVtZW50PiBDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lCiBDYWxlbmRhclBpY2tlckVsZW1lbnQ6
On5DYWxlbmRhclBpY2tlckVsZW1lbnQoKQogewogICAgIGNsb3NlUG9wdXAoKTsKLSAgICBBU1NF
UlQoIW1fcG9wdXApOworICAgIEFTU0VSVCghbV9waWNrZXIpOwogfQogCiBSZW5kZXJPYmplY3Qq
IENhbGVuZGFyUGlja2VyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5h
LCBSZW5kZXJTdHlsZSopCkBAIC03OSw3ICs2OSw3IEBAIFJlbmRlck9iamVjdCogQ2FsZW5kYXJQ
aWNrZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0
CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckRldGFpbHNNYXJrZXIodGhpcyk7CiB9CiAK
LWlubGluZSBIVE1MSW5wdXRFbGVtZW50KiBDYWxlbmRhclBpY2tlckVsZW1lbnQ6Omhvc3RJbnB1
dCgpCitpbmxpbmUgSFRNTElucHV0RWxlbWVudCogQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpob3N0
SW5wdXQoKSBjb25zdAogewogICAgIC8vIEphdmFTY3JpcHQgY29kZSBjYW4ndCBjcmVhdGUgQ2Fs
ZW5kYXJQaWNrZXJFbGVtZW50IG9iamVjdHMuIFRoaXMgaXMKICAgICAvLyBhbHdheXMgaW4gc2hh
ZG93IG9mIDxpbnB1dD4uCkBAIC0xMTQsOSArMTA0LDY5IEBAIGJvb2wgQ2FsZW5kYXJQaWNrZXJF
bGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiAgICAgcmV0dXJuIEhUTUxE
aXZFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpOwogfQogCit2b2lkIENh
bGVuZGFyUGlja2VyRWxlbWVudDo6ZGlkUGlja1ZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7
CisgICAgaG9zdElucHV0KCktPnNldFZhbHVlKHZhbHVlLCBEaXNwYXRjaENoYW5nZUV2ZW50KTsK
K30KKwordm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRpZEVuZFBpY2tlcigpCit7CisgICAg
bV9waWNrZXIuY2xlYXIoKTsKK30KKworSW50UmVjdCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmVs
ZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkgY29uc3QKK3sKKyAgICBpZiAoIWRvY3VtZW50
KCktPnZpZXcoKSkKKyAgICAgICAgcmV0dXJuIEludFJlY3QoMCwgMCwgMCwgMCk7CisgICAgcmV0
dXJuIGRvY3VtZW50KCktPnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGhvc3RJbnB1dCgpLT5n
ZXRQaXhlbFNuYXBwZWRSZWN0KCkpOworfQorCitTdHJpbmcgQ2FsZW5kYXJQaWNrZXJFbGVtZW50
OjpjdXJyZW50VmFsdWUoKQoreworICAgIHJldHVybiBob3N0SW5wdXQoKS0+dmFsdWUoKTsKK30K
KworYm9vbCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OnNob3VsZFNob3dTdWdnZXN0aW9ucygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitWZWN0b3I8U3RyaW5nPiBDYWxlbmRhclBp
Y2tlckVsZW1lbnQ6OnN1Z2dlc3Rpb25WYWx1ZXMoKSBjb25zdAoreworICAgIHJldHVybiBWZWN0
b3I8U3RyaW5nPigpOworfQorCitWZWN0b3I8U3RyaW5nPiBDYWxlbmRhclBpY2tlckVsZW1lbnQ6
OnN1Z2dlc3Rpb25MYWJlbHMoKSBjb25zdAoreworICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigp
OworfQorCitkb3VibGUgQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjptaW5pbXVtVmFsdWUoKSBjb25z
dAoreworICAgIHJldHVybiBob3N0SW5wdXQoKS0+bWluaW11bSgpOworfQorCitkb3VibGUgQ2Fs
ZW5kYXJQaWNrZXJFbGVtZW50OjptYXhpbXVtVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBo
b3N0SW5wdXQoKS0+bWF4aW11bSgpOworfQorCitkb3VibGUgQ2FsZW5kYXJQaWNrZXJFbGVtZW50
Ojp2YWx1ZVN0ZXAoKSBjb25zdAoreworICAgIERlY2ltYWwgc3RlcDsKKyAgICBpZiAoaG9zdElu
cHV0KCktPmdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApKQorICAgICAgICByZXR1cm4gMS4wOwor
ICAgIHJldHVybiBzdGVwLnRvRG91YmxlKCk7Cit9CisKK2Jvb2wgQ2FsZW5kYXJQaWNrZXJFbGVt
ZW50Ojp2YWx1ZVJlcXVpcmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaG9zdElucHV0KCktPnJl
cXVpcmVkKCk7Cit9CisKIHZvaWQgQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjpvcGVuUG9wdXAoKQog
ewotICAgIGlmIChtX3BvcHVwKQorICAgIGlmIChtX3BpY2tlcikKICAgICAgICAgcmV0dXJuOwog
ICAgIGlmICghZG9jdW1lbnQoKS0+cGFnZSgpKQogICAgICAgICByZXR1cm47CkBAIC0xMjUsMjAg
KzE3NSwxNCBAQCB2b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6b3BlblBvcHVwKCkKICAgICAg
ICAgcmV0dXJuOwogICAgIGlmICghZG9jdW1lbnQoKS0+dmlldygpKQogICAgICAgICByZXR1cm47
Ci0gICAgSW50UmVjdCBlbGVtZW50UmVjdEluUm9vdFZpZXcgPSBkb2N1bWVudCgpLT52aWV3KCkt
PmNvbnRlbnRzVG9Sb290Vmlldyhob3N0SW5wdXQoKS0+Z2V0UGl4ZWxTbmFwcGVkUmVjdCgpKTsK
LSAgICBtX3BvcHVwID0gY2hyb21lLT5jbGllbnQoKS0+b3BlblBhZ2VQb3B1cCh0aGlzLCBlbGVt
ZW50UmVjdEluUm9vdFZpZXcpOworICAgIG1fcGlja2VyID0gY2hyb21lLT5vcGVuQ2FsZW5kYXJQ
aWNrZXJQb3B1cCh0aGlzKTsKIH0KIAogdm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmNsb3Nl
UG9wdXAoKQogewotICAgIGlmICghbV9wb3B1cCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICgh
ZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgQ2hyb21lKiBjaHJvbWUg
PSBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpOwotICAgIGlmICghY2hyb21lKQorICAgIGlm
ICghbV9waWNrZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBjaHJvbWUtPmNsaWVudCgpLT5jbG9z
ZVBhZ2VQb3B1cChtX3BvcHVwKTsKKyAgICBtX3BpY2tlci0+ZW5kUGlja2VyKCk7CiB9CiAKIHZv
aWQgQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjpkZXRhY2goKQpAQCAtMTQ3LDY3ICsxOTEsNiBAQCB2
b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6ZGV0YWNoKCkKICAgICBIVE1MRGl2RWxlbWVudDo6
ZGV0YWNoKCk7CiB9CiAKLUludFNpemUgQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpjb250ZW50U2l6
ZSgpCi17Ci0gICAgcmV0dXJuIEludFNpemUoMCwgMCk7Ci19Ci0KLXZvaWQgQ2FsZW5kYXJQaWNr
ZXJFbGVtZW50Ojp3cml0ZURvY3VtZW50KERvY3VtZW50V3JpdGVyJiB3cml0ZXIpCi17Ci0gICAg
SFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBob3N0SW5wdXQoKTsKLSAgICBEYXRlQ29tcG9uZW50
cyBkYXRlOwotICAgIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUoaW5wdXQt
Pm1pbmltdW0oKSk7Ci0gICAgU3RyaW5nIG1pblN0cmluZyA9IGRhdGUudG9TdHJpbmcoKTsKLSAg
ICBkYXRlLnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlKGlucHV0LT5tYXhpbXVtKCkp
OwotICAgIFN0cmluZyBtYXhTdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCk7Ci0gICAgRGVjaW1hbCBz
dGVwOwotICAgIFN0cmluZyBzdGVwU3RyaW5nID0gaW5wdXQtPmZhc3RHZXRBdHRyaWJ1dGUoc3Rl
cEF0dHIpOwotICAgIGlmIChzdGVwU3RyaW5nLmlzRW1wdHkoKSB8fCAhaW5wdXQtPmdldEFsbG93
ZWRWYWx1ZVN0ZXAoJnN0ZXApKQotICAgICAgICBzdGVwU3RyaW5nID0gIjEiOwotCi0gICAgYWRk
U3RyaW5nKCI8IURPQ1RZUEUgaHRtbD48aGVhZD48bWV0YSBjaGFyc2V0PSdVVEYtOCc+PHN0eWxl
PlxuIiwgd3JpdGVyKTsKLSAgICB3cml0ZXIuYWRkRGF0YShwaWNrZXJDb21tb25Dc3MsIHNpemVv
ZihwaWNrZXJDb21tb25Dc3MpKTsKLSAgICB3cml0ZXIuYWRkRGF0YShjYWxlbmRhclBpY2tlckNz
cywgc2l6ZW9mKGNhbGVuZGFyUGlja2VyQ3NzKSk7Ci0gICAgaWYgKGRvY3VtZW50KCktPnBhZ2Uo
KSkgewotICAgICAgICBDU3RyaW5nIGV4dHJhU3R5bGUgPSBkb2N1bWVudCgpLT5wYWdlKCktPnRo
ZW1lKCktPmV4dHJhQ2FsZW5kYXJQaWNrZXJTdHlsZVNoZWV0KCk7Ci0gICAgICAgIGlmIChleHRy
YVN0eWxlLmxlbmd0aCgpKQotICAgICAgICAgICAgd3JpdGVyLmFkZERhdGEoZXh0cmFTdHlsZS5k
YXRhKCksIGV4dHJhU3R5bGUubGVuZ3RoKCkpOwotICAgIH0KLSAgICBhZGRTdHJpbmcoIjwvc3R5
bGU+PC9oZWFkPjxib2R5PjxkaXYgaWQ9bWFpbj5Mb2FkaW5nLi4uPC9kaXY+PHNjcmlwdD5cbiIK
LSAgICAgICAgICAgICAgICJ3aW5kb3cuZGlhbG9nQXJndW1lbnRzID0ge1xuIiwgd3JpdGVyKTsK
LSAgICBhZGRQcm9wZXJ0eSgibWluIiwgbWluU3RyaW5nLCB3cml0ZXIpOwotICAgIGFkZFByb3Bl
cnR5KCJtYXgiLCBtYXhTdHJpbmcsIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoInN0ZXAiLCBz
dGVwU3RyaW5nLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJyZXF1aXJlZCIsIGlucHV0LT5y
ZXF1aXJlZCgpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJjdXJyZW50VmFsdWUiLCBpbnB1
dC0+dmFsdWUoKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgibG9jYWxlIiwgZGVmYXVsdExh
bmd1YWdlKCksIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoInRvZGF5TGFiZWwiLCBjYWxlbmRh
clRvZGF5VGV4dCgpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJjbGVhckxhYmVsIiwgY2Fs
ZW5kYXJDbGVhclRleHQoKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgid2Vla1N0YXJ0RGF5
IiwgZmlyc3REYXlPZldlZWsoKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgibW9udGhMYWJl
bHMiLCBtb250aExhYmVscygpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJkYXlMYWJlbHMi
LCB3ZWVrRGF5U2hvcnRMYWJlbHMoKSwgd3JpdGVyKTsKLSAgICBEaXJlY3Rpb24gZGlyID0gZGly
ZWN0aW9uKG1vbnRoTGFiZWxzKClbMF1bMF0pOwotICAgIGFkZFByb3BlcnR5KCJpc1JUTCIsIGRp
ciA9PSBSaWdodFRvTGVmdCB8fCBkaXIgPT0gUmlnaHRUb0xlZnRBcmFiaWMsIHdyaXRlcik7Ci0g
ICAgYWRkU3RyaW5nKCJ9XG4iLCB3cml0ZXIpOwotCi0gICAgd3JpdGVyLmFkZERhdGEocGlja2Vy
Q29tbW9uSnMsIHNpemVvZihwaWNrZXJDb21tb25KcykpOwotICAgIHdyaXRlci5hZGREYXRhKGNh
bGVuZGFyUGlja2VySnMsIHNpemVvZihjYWxlbmRhclBpY2tlckpzKSk7Ci0gICAgYWRkU3RyaW5n
KCI8L3NjcmlwdD48L2JvZHk+XG4iLCB3cml0ZXIpOwotfQotCi12b2lkIENhbGVuZGFyUGlja2Vy
RWxlbWVudDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCBudW1WYWx1ZSwgY29uc3QgU3RyaW5n
JiBzdHJpbmdWYWx1ZSkKLXsKLSAgICBBU1NFUlQobV9wb3B1cCk7Ci0gICAgY2xvc2VQb3B1cCgp
OwotICAgIGlmIChudW1WYWx1ZSA+PSAwKQotICAgICAgICBob3N0SW5wdXQoKS0+c2V0VmFsdWUo
c3RyaW5nVmFsdWUsIERpc3BhdGNoQ2hhbmdlRXZlbnQpOwotfQotCi12b2lkIENhbGVuZGFyUGlj
a2VyRWxlbWVudDo6ZGlkQ2xvc2VQb3B1cCgpCi17Ci0gICAgbV9wb3B1cCA9IDA7Ci19Ci0KIH0K
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRh
clBpY2tlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlj
a2VyRWxlbWVudC5oCmluZGV4IGNiZjIxM2ZjNWZjYjNlMzVmMWQ2YmRmMTJlZjgxMjdlYjIzOWUz
ODcuLjQzNWZlMDIxZTE3NjljMDliY2E2NTgzMjZlOTU1YWUwMTI4YjlmOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5oCkBAIC0z
MywxNCArMzMsMTcgQEAKIAogI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCiAjaW5jbHVkZSAi
SFRNTERpdkVsZW1lbnQuaCIKLSNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKyNpbmNsdWRl
ICJWYWx1ZVBpY2tlci5oIgorI2luY2x1ZGUgIlZhbHVlUGlja2VyQ2xpZW50LmgiCisKKyNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTElu
cHV0RWxlbWVudDsKIGNsYXNzIFBhZ2VQb3B1cDsKIAotY2xhc3MgQ2FsZW5kYXJQaWNrZXJFbGVt
ZW50IDogcHVibGljIEhUTUxEaXZFbGVtZW50LCBwdWJsaWMgUGFnZVBvcHVwQ2xpZW50IHsKK2Ns
YXNzIENhbGVuZGFyUGlja2VyRWxlbWVudCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCwgcHVibGlj
IFZhbHVlUGlja2VyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYWxl
bmRhclBpY2tlckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkNhbGVu
ZGFyUGlja2VyRWxlbWVudCgpOwpAQCAtNDgsMjEgKzUxLDI4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNsb3NlUG9wdXAoKTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tF
dmVudHMoKSBPVkVSUklERTsKIAorICAgIC8vIENvbG9yQ2hvb3NlckNsaWVudCBpbXBsZW1lbnRh
dGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGlja1ZhbHVlKGNvbnN0IFN0cmluZyYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRQaWNrZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIEludFJlY3QgZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjdXJyZW50VmFsdWUoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkU2hvd1N1Z2dlc3Rpb25zKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uVmFsdWVzKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uTGFiZWxzKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBkb3VibGUgbWluaW11bVZhbHVlKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBkb3VibGUgbWF4aW11bVZhbHVlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBkb3VibGUgdmFsdWVTdGVwKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IHZhbHVlUmVxdWlyZWQoKSBjb25zdCBPVkVSUklERTsKKwogcHJpdmF0ZToKICAgICBDYWxlbmRh
clBpY2tlckVsZW1lbnQoRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGRldGFjaCgpIE9WRVJSSURFOwogCi0gICAgLy8gUGFnZVBvcHVwQ2xpZW50IGZ1
bmN0aW9uczoKLSAgICB2aXJ0dWFsIEludFNpemUgY29udGVudFNpemUoKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIHZvaWQgd3JpdGVEb2N1bWVudChEb2N1bWVudFdyaXRlciYpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFuZENsb3NlUG9wdXAoaW50LCBjb25zdCBTdHJpbmcm
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2VQb3B1cCgpIE9WRVJSSURFOwot
Ci0gICAgSFRNTElucHV0RWxlbWVudCogaG9zdElucHV0KCk7CisgICAgSFRNTElucHV0RWxlbWVu
dCogaG9zdElucHV0KCkgY29uc3Q7CiAKLSAgICBQYWdlUG9wdXAqIG1fcG9wdXA7CisgICAgT3du
UHRyPFZhbHVlUGlja2VyPiBtX3BpY2tlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKaW5kZXggZDhiYzA2ZjMzNmViNDAwZTIyZDFlZDY2M2I0NGFjOGViNGFj
MWE0OC4uZTNjZDMwNjgxMDMwMWU3MGY4MzYzMTI5NjFhYjE0YmExM2UyNTRiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRl
ICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRlICJWYWx1ZVBpY2tlci5oIgogCiAjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCkBAIC0xMDMs
NiArMTA0LDEzIEBAIFBhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBFbXB0eUNocm9tZUNsaWVudDo6
Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVuCiB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShDQUxFTkRBUl9QSUNLRVIpCitQYXNzT3duUHRyPFZhbHVlUGlja2VyPiBFbXB0eUNocm9t
ZUNsaWVudDo6b3BlbkNhbGVuZGFyUGlja2VyUG9wdXAoVmFsdWVQaWNrZXJDbGllbnQqKQorewor
ICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKIHZvaWQgRW1wdHlDaHJvbWVDbGllbnQ6
OnJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KQogewogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IGEwMjc5OTdmZjdmOTUzZDIyNTkyMDVk
OGFiNmZiYzUzNzlhZTA5NTUuLjU4YjIyNWRmNDgxZWYzZGE2MGIwOTAwMmRjNDUzOTk2ZGEwNjIx
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTE3Miw2ICsxNzIsMTAg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxDb2xvckNob29zZXI+IGNyZWF0ZUNv
bG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqLCBjb25zdCBDb2xvciYpIE9WRVJSSURFOwog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorICAgIHZpcnR1YWwgUGFzc093
blB0cjxWYWx1ZVBpY2tlcj4gb3BlbkNhbGVuZGFyUGlja2VyUG9wdXAoVmFsdWVQaWNrZXJDbGll
bnQqKSBPVkVSUklERTsKKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChG
cmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVy
KikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCBjY2E0YTA5MjVmN2RlMmJlOWI4MDFm
ZTQwYmQxOTAxMWQyMjFiZTVkLi42MjI4NTBhZDdiNDhjNDNlYzA2MDdkN2M4MWE3MjNlY2M4MGI3
ZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VOYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJWYWx1ZVBpY2tlci5oIgogI2luY2x1ZGUgIldpbmRv
d0ZlYXR1cmVzLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CkBAIC00NTQsNiArNDU1LDEzIEBAIFBhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBD
aHJvbWU6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCwKIH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKK1Bhc3NPd25QdHI8VmFsdWVQ
aWNrZXI+IENocm9tZTo6b3BlbkNhbGVuZGFyUGlja2VyUG9wdXAoVmFsdWVQaWNrZXJDbGllbnQq
IGNsaWVudCkKK3sKKyAgICByZXR1cm4gbV9jbGllbnQtPm9wZW5DYWxlbmRhclBpY2tlclBvcHVw
KGNsaWVudCk7Cit9CisjZW5kaWYKKwogdm9pZCBDaHJvbWU6OnJ1bk9wZW5QYW5lbChGcmFtZSog
ZnJhbWUsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyKQogewogICAgIG1fY2xp
ZW50LT5ydW5PcGVuUGFuZWwoZnJhbWUsIGZpbGVDaG9vc2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmlu
ZGV4IDU2MzhmM2E0OGFkZDg5NTllMzBhZWIwZDIwNWFkM2U3MGI4Y2FjMTkuLjA5Yzg3NjJmMzRh
Y2Q5YTM1NGI0NTIzZDgyNGI5MjBjYzY2ZjdiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtNTQs
NiArNTQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBvcHVwTWVudTsKICAg
ICBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CiAgICAgY2xhc3MgU2VhcmNoUG9wdXBNZW51OworI2lm
IEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisgICAgY2xhc3MgVmFsdWVQaWNrZXI7CisgICAgY2xh
c3MgVmFsdWVQaWNrZXJDbGllbnQ7CisjZW5kaWYKIAogICAgIHN0cnVjdCBGcmFtZUxvYWRSZXF1
ZXN0OwogICAgIHN0cnVjdCBWaWV3cG9ydEFyZ3VtZW50czsKQEAgLTE1MCw2ICsxNTQsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYXNzT3duUHRyPENvbG9yQ2hvb3Nlcj4gY3Jl
YXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IENvbG9yJiBpbml0aWFs
Q29sb3IpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorICAgICAgICBQ
YXNzT3duUHRyPFZhbHVlUGlja2VyPiBvcGVuQ2FsZW5kYXJQaWNrZXJQb3B1cChWYWx1ZVBpY2tl
ckNsaWVudCopOworI2VuZGlmCisKICAgICAgICAgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQ
YXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7CiAgICAgICAgIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKik7CiAjaWYgRU5BQkxFKERJUkVD
VE9SWV9VUExPQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBkZDZhZmNmZTFj
ZGZlOGIxNzZmYjY5OGViZTM2MTcwMmRkYzA4ODkxLi42NTVlNzUwYWNhMjdiMWU1YWZkOWNlODcx
ZTBmYTI0YjM1ZGVjNDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTY3LDYg
KzY3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBvcHVwTWVudUNsaWVudDsK
ICAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsK
KyAgICBjbGFzcyBWYWx1ZVBpY2tlcjsKKyAgICBjbGFzcyBWYWx1ZVBpY2tlckNsaWVudDsKICAg
ICBjbGFzcyBXaWRnZXQ7CiAKICAgICBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsKQEAgLTIyMiw2
ICsyMjQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50Kiwg
Y29uc3QgQ29sb3ImKSA9IDA7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIp
CisgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxWYWx1ZVBpY2tlcj4gb3BlbkNhbGVuZGFyUGlj
a2VyUG9wdXAoVmFsdWVQaWNrZXJDbGllbnQqKSA9IDA7CisjZW5kaWYKKwogICAgICAgICB2aXJ0
dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pID0g
MDsKICAgICAgICAgLy8gQXN5bmNocm9ub3VzIHJlcXVlc3QgdG8gbG9hZCBhbiBpY29uIGZvciBz
cGVjaWZpZWQgZmlsZW5hbWVzLgogICAgICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKikgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUG9wdXBDbGllbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlUG9wdXBDbGllbnQuY3BwCmluZGV4IDViNjY2ZWE0NTk1YmQ2ZjZiNzYyMWYy
ODZiMTMyNjFjZjNjYzFjYzUuLjMwMWQxZWYzYTA3NjY3MzcwY2ZkYWQ0YjhkYWFlMzU3YTk1ODhh
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENsaWVudC5jcHAKQEAgLTY5LDYgKzY5
LDE0IEBAIHZvaWQgUGFnZVBvcHVwQ2xpZW50OjphZGRQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1l
LCB1bnNpZ25lZCB2YWx1ZSwgRG9jdW1lbnRXcml0CiAgICAgYWRkTGl0ZXJhbCgiLFxuIiwgd3Jp
dGVyKTsKIH0KIAordm9pZCBQYWdlUG9wdXBDbGllbnQ6OmFkZFByb3BlcnR5KGNvbnN0IGNoYXIq
IG5hbWUsIGRvdWJsZSB2YWx1ZSwgRG9jdW1lbnRXcml0ZXImIHdyaXRlcikKK3sKKyAgICB3cml0
ZXIuYWRkRGF0YShuYW1lLCBzdHJsZW4obmFtZSkpOworICAgIGFkZExpdGVyYWwoIjogIiwgd3Jp
dGVyKTsKKyAgICBhZGRTdHJpbmcoU3RyaW5nOjpudW1iZXIodmFsdWUpLCB3cml0ZXIpOworICAg
IGFkZExpdGVyYWwoIixcbiIsIHdyaXRlcik7Cit9CisKIHZvaWQgUGFnZVBvcHVwQ2xpZW50Ojph
ZGRQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLCBib29sIHZhbHVlLCBEb2N1bWVudFdyaXRlciYg
d3JpdGVyKQogewogICAgIHdyaXRlci5hZGREYXRhKG5hbWUsIHN0cmxlbihuYW1lKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlUG9wdXBDbGllbnQuaAppbmRleCAwMmFlZTMyMjU2Y2RhZmE5NmUxNmQ0
ZTNmYjQ4ZDRmODZmMzBhM2UwLi44MzliNDJlY2Y2MTNlNWIzZGIxNjg4MmRkMWUxNjE4MmViMGQ4
ZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ2xpZW50LmgKQEAgLTY2LDYgKzY2LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGFkZEphdmFTY3JpcHRTdHJpbmcoY29uc3QgU3Ry
aW5nJiwgRG9jdW1lbnRXcml0ZXImKTsKICAgICBzdGF0aWMgdm9pZCBhZGRQcm9wZXJ0eShjb25z
dCBjaGFyKiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBEb2N1bWVudFdyaXRlciYpOwogICAg
IHN0YXRpYyB2b2lkIGFkZFByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsIHVuc2lnbmVkIHZhbHVl
LCBEb2N1bWVudFdyaXRlciYpOworICAgIHN0YXRpYyB2b2lkIGFkZFByb3BlcnR5KGNvbnN0IGNo
YXIqIG5hbWUsIGRvdWJsZSB2YWx1ZSwgRG9jdW1lbnRXcml0ZXImKTsKICAgICBzdGF0aWMgdm9p
ZCBhZGRQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLCBib29sIHZhbHVlLCBEb2N1bWVudFdyaXRl
ciYpOwogICAgIHN0YXRpYyB2b2lkIGFkZFByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiB2YWx1ZXMsIERvY3VtZW50V3JpdGVyJik7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmFsdWVQaWNrZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ZhbHVlUGlja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmI1M2M5NWI3NjQyZGU0ZGVjNTll
MDEyNzcyZDhkNmY4NGI5NTRkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ZhbHVlUGlja2VyLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmFsdWVQaWNrZXJf
aAorI2RlZmluZSBWYWx1ZVBpY2tlcl9oCisKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gRm9y
IHBpY2tlcnMgbGlrZSBjb2xvciBwaWNrZXJzIGFuZCBkYXRlIHBpY2tlcnMuCitjbGFzcyBWYWx1
ZVBpY2tlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+VmFsdWVQaWNrZXIoKSB7IH0KKworICAg
IHZpcnR1YWwgdm9pZCBzZXRQaWNrZXJWYWx1ZShjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGVuZFBpY2tlcigpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFZhbHVlUGlja2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ZhbHVlUGlja2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WYWx1
ZVBpY2tlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwYmQ3ZWM2MTI2OGY1NjhiNmJmZjc3ZGYxZGU1
Nzc4MWY2N2ViMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9W
YWx1ZVBpY2tlckNsaWVudC5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZhbHVlUGlja2VyQ2xp
ZW50X2gKKyNkZWZpbmUgVmFsdWVQaWNrZXJDbGllbnRfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFZhbHVlUGlja2VyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WYWx1
ZVBpY2tlckNsaWVudCgpIHsgfQorCisgICAgLy8gQ2FsbGVkIHdoZW4gdXNlciBwaWNrZWQgYSB2
YWx1ZS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGlja1ZhbHVlKGNvbnN0IFN0cmluZyYpID0gMDsK
KyAgICAvLyBDYWxsZWQgd2hlbiBwaWNrZXIgaGFzIGVuZGVkLgorICAgIHZpcnR1YWwgdm9pZCBk
aWRFbmRQaWNrZXIoKSA9IDA7CisgICAgLy8gUmV0dXJucyB0aGUgcmVjdCBmb3IgdGhlIGVsZW1l
bnQgdGhhdCBvcmlnaW5hdGVkIHRoZSBwaWNrZXIuCisgICAgdmlydHVhbCBJbnRSZWN0IGVsZW1l
bnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkgY29uc3QgPSAwOworICAgIC8vIFJldHVybnMgdGhl
IGN1cnJlbnQgdmFsdWUgd2hpY2ggc2hvdWxkIGJlIHNob3duIGluIHRoZSBjb2xvciBwaWNrZXIu
CisgICAgdmlydHVhbCBTdHJpbmcgY3VycmVudFZhbHVlKCkgPSAwOworICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiB3ZSBzaG91bGQgc2hvdyBzdWdnZXN0aW9ucyB0byB0aGUgdXNlci4KKyAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkU2hvd1N1Z2dlc3Rpb25zKCkgY29uc3QgPSAwOworICAgIC8vIFJldHVy
bnMgdGhlIGxpc3Qgb2Ygc3VnZ2VzdGlvbiB2YWx1ZXMuCisgICAgdmlydHVhbCBWZWN0b3I8U3Ry
aW5nPiBzdWdnZXN0aW9uVmFsdWVzKCkgY29uc3QgPSAwOworICAgIC8vIFJldHVybnMgdGhlIGxp
c3Qgb2Ygc3VnZ2VzdGlvbiBsYWJlbHMuCisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBzdWdn
ZXN0aW9uTGFiZWxzKCkgY29uc3QgPSAwOworICAgIC8vIFJldHVybnMgdGhlIG1pbmltdW0gcGlj
a2FibGUgdmFsdWUuCisgICAgdmlydHVhbCBkb3VibGUgbWluaW11bVZhbHVlKCkgY29uc3QgPSAw
OworICAgIC8vIFJldHVybnMgdGhlIG1heGltdW0gcGlja2FibGUgdmFsdWUuCisgICAgdmlydHVh
bCBkb3VibGUgbWF4aW11bVZhbHVlKCkgY29uc3QgPSAwOworICAgIC8vIFJldHVybnMgdGhlIHZh
bHVlIHN0ZXAgc2l6ZS4KKyAgICB2aXJ0dWFsIGRvdWJsZSB2YWx1ZVN0ZXAoKSBjb25zdCA9IDA7
CisgICAgLy8gUmV0dXJucyBpZiB0aGUgdmFsdWUgaXMgcmVxdWlyZWQuCisgICAgdmlydHVhbCBi
b29sIHZhbHVlUmVxdWlyZWQoKSBjb25zdCA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBWYWx1ZVBpY2tlckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKaW5kZXggYjk4NGFmYzg2M2U2ZWU1YTQyZGRlNzI0YmNlZTYwM2Q2YmI0NWMzZC4uOTM1
Y2Q5YTU4Zjk5OWUyZWFmY2M2YWE3ZDA3ZTBlNGZhMTdhZTA4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cApAQCAtMzU4LDYgKzM1OCw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9CYXR0
ZXJ5Q2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0Jsb2JSZWdpc3RyeVByb3h5
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9CbG9iUmVnaXN0cnlQcm94eS5oJywKKyAgICAg
ICAgICAgICAgICAnc3JjL0NhbGVuZGFyUGlja2VyUG9wdXAuY3BwJywKKyAgICAgICAgICAgICAg
ICAnc3JjL0NhbGVuZGFyUGlja2VyUG9wdXAuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9DaHJvbWVDbGllbnRJbXBs
LmgnLAogICAgICAgICAgICAgICAgICdzcmMvQ2hyb21pdW1DdXJyZW50VGltZS5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2FsZW5kYXJQaWNrZXJQb3B1cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DYWxlbmRhclBpY2tlclBvcHVwLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNjExYjg2MDc2MWNkMDQ5MzA2ZjE5OGUxOTBkZGRkOGY0MWNiNjM5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2FsZW5kYXJQaWNrZXJQ
b3B1cC5jcHAKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Q2FsZW5kYXJQaWNrZXJQb3B1cC5oIgorCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKKwor
I2luY2x1ZGUgIkNhbGVuZGFyUGlja2VyLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50SW1wbC5o
IgorI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCisjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKKyNp
bmNsdWRlICJMb2NhbGl6ZWREYXRlLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNp
bmNsdWRlICJQaWNrZXJDb21tb24uaCIKKyNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgorI2luY2x1
ZGUgIlZhbHVlUGlja2VyQ2xpZW50LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZv
cm1TdXBwb3J0LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkxvY2FsaXplZFN0cmluZy5oPgorCit1
c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworQ2Fs
ZW5kYXJQaWNrZXJQb3B1cDo6Q2FsZW5kYXJQaWNrZXJQb3B1cChDaHJvbWVDbGllbnRJbXBsKiBj
aHJvbWVDbGllbnQsIFdlYkNvcmU6OlZhbHVlUGlja2VyQ2xpZW50KiBjbGllbnQpCisgICAgOiBt
X2Nocm9tZUNsaWVudChjaHJvbWVDbGllbnQpCisgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAg
LCBtX3BvcHVwKDApCit7CisgICAgQVNTRVJUKG1fY2hyb21lQ2xpZW50KTsKKyAgICBBU1NFUlQo
bV9jbGllbnQpOworICAgIG1fcG9wdXAgPSBtX2Nocm9tZUNsaWVudC0+b3BlblBhZ2VQb3B1cCh0
aGlzLCBtX2NsaWVudC0+ZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSk7Cit9CisKK0Nh
bGVuZGFyUGlja2VyUG9wdXA6On5DYWxlbmRhclBpY2tlclBvcHVwKCkKK3sKK30KKwordm9pZCBD
YWxlbmRhclBpY2tlclBvcHVwOjpzZXRQaWNrZXJWYWx1ZShjb25zdCBTdHJpbmcmKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQ2FsZW5kYXJQaWNrZXJQb3B1cDo6ZW5kUGlj
a2VyKCkKK3sKKyAgICBpZiAoIW1fcG9wdXApCisgICAgICAgIHJldHVybjsKKyAgICBtX2Nocm9t
ZUNsaWVudC0+Y2xvc2VQYWdlUG9wdXAobV9wb3B1cCk7Cit9CisKK1dlYkNvcmU6OkludFNpemUg
Q2FsZW5kYXJQaWNrZXJQb3B1cDo6Y29udGVudFNpemUoKQoreworICAgIHJldHVybiBXZWJDb3Jl
OjpJbnRTaXplKDAsIDApOworfQorCit2b2lkIENhbGVuZGFyUGlja2VyUG9wdXA6OndyaXRlRG9j
dW1lbnQoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXImIHdyaXRlcikKK3sKKyAgICBXZWJDb3JlOjpE
YXRlQ29tcG9uZW50cyBkYXRlOworICAgIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZv
ckRhdGUobV9jbGllbnQtPm1pbmltdW1WYWx1ZSgpKTsKKyAgICBTdHJpbmcgbWluU3RyaW5nID0g
ZGF0ZS50b1N0cmluZygpOworICAgIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRh
dGUobV9jbGllbnQtPm1heGltdW1WYWx1ZSgpKTsKKyAgICBTdHJpbmcgbWF4U3RyaW5nID0gZGF0
ZS50b1N0cmluZygpOworICAgIGRvdWJsZSBzdGVwID0gbV9jbGllbnQtPnZhbHVlU3RlcCgpOwor
CisgICAgYWRkU3RyaW5nKCI8IURPQ1RZUEUgaHRtbD48aGVhZD48bWV0YSBjaGFyc2V0PSdVVEYt
OCc+PHN0eWxlPlxuIiwgd3JpdGVyKTsKKyAgICB3cml0ZXIuYWRkRGF0YShXZWJDb3JlOjpwaWNr
ZXJDb21tb25Dc3MsIHNpemVvZihXZWJDb3JlOjpwaWNrZXJDb21tb25Dc3MpKTsKKyAgICB3cml0
ZXIuYWRkRGF0YShXZWJDb3JlOjpjYWxlbmRhclBpY2tlckNzcywgc2l6ZW9mKFdlYkNvcmU6OmNh
bGVuZGFyUGlja2VyQ3NzKSk7CisgICAgQ1N0cmluZyBleHRyYVN0eWxlID0gV2ViQ29yZTo6UmVu
ZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYUNhbGVuZGFyUGlja2VyU3R5bGVTaGVldCgp
OworICAgIGlmIChleHRyYVN0eWxlLmxlbmd0aCgpKQorICAgICAgICB3cml0ZXIuYWRkRGF0YShl
eHRyYVN0eWxlLmRhdGEoKSwgZXh0cmFTdHlsZS5sZW5ndGgoKSk7CisgICAgYWRkU3RyaW5nKCI8
L3N0eWxlPjwvaGVhZD48Ym9keT48ZGl2IGlkPW1haW4+TG9hZGluZy4uLjwvZGl2PjxzY3JpcHQ+
XG4iCisgICAgICAgICAgICAgICAid2luZG93LmRpYWxvZ0FyZ3VtZW50cyA9IHtcbiIsIHdyaXRl
cik7CisgICAgYWRkUHJvcGVydHkoIm1pbiIsIG1pblN0cmluZywgd3JpdGVyKTsKKyAgICBhZGRQ
cm9wZXJ0eSgibWF4IiwgbWF4U3RyaW5nLCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5KCJzdGVw
Iiwgc3RlcCwgd3JpdGVyKTsKKyAgICBhZGRQcm9wZXJ0eSgicmVxdWlyZWQiLCBtX2NsaWVudC0+
dmFsdWVSZXF1aXJlZCgpLCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5KCJjdXJyZW50VmFsdWUi
LCBtX2NsaWVudC0+Y3VycmVudFZhbHVlKCksIHdyaXRlcik7CisgICAgYWRkUHJvcGVydHkoImxv
Y2FsZSIsIFdlYkNvcmU6OmRlZmF1bHRMYW5ndWFnZSgpLCB3cml0ZXIpOworICAgIFdlYkNvcmU6
OlBhZ2VQb3B1cENsaWVudDo6YWRkUHJvcGVydHkoInRvZGF5TGFiZWwiLCBQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT5xdWVyeUxvY2FsaXplZFN0cmluZyhXZWJMb2NhbGl6ZWRTdHJpbmc6OkNhbGVuZGFy
VG9kYXkpLCB3cml0ZXIpOworICAgIFdlYkNvcmU6OlBhZ2VQb3B1cENsaWVudDo6YWRkUHJvcGVy
dHkoImNsZWFyTGFiZWwiLCBQbGF0Zm9ybTo6Y3VycmVudCgpLT5xdWVyeUxvY2FsaXplZFN0cmlu
ZyhXZWJMb2NhbGl6ZWRTdHJpbmc6OkNhbGVuZGFyQ2xlYXIpLCB3cml0ZXIpOworICAgIGFkZFBy
b3BlcnR5KCJ3ZWVrU3RhcnREYXkiLCBXZWJDb3JlOjpmaXJzdERheU9mV2VlaygpLCB3cml0ZXIp
OworICAgIGFkZFByb3BlcnR5KCJtb250aExhYmVscyIsIFdlYkNvcmU6Om1vbnRoTGFiZWxzKCks
IHdyaXRlcik7CisgICAgYWRkUHJvcGVydHkoImRheUxhYmVscyIsIFdlYkNvcmU6OndlZWtEYXlT
aG9ydExhYmVscygpLCB3cml0ZXIpOworICAgIERpcmVjdGlvbiBkaXIgPSBkaXJlY3Rpb24oV2Vi
Q29yZTo6bW9udGhMYWJlbHMoKVswXVswXSk7CisgICAgYWRkUHJvcGVydHkoImlzUlRMIiwgZGly
ID09IFJpZ2h0VG9MZWZ0IHx8IGRpciA9PSBSaWdodFRvTGVmdEFyYWJpYywgd3JpdGVyKTsKKyAg
ICBhZGRTdHJpbmcoIn1cbiIsIHdyaXRlcik7CisKKyAgICB3cml0ZXIuYWRkRGF0YShXZWJDb3Jl
OjpwaWNrZXJDb21tb25Kcywgc2l6ZW9mKFdlYkNvcmU6OnBpY2tlckNvbW1vbkpzKSk7CisgICAg
d3JpdGVyLmFkZERhdGEoV2ViQ29yZTo6Y2FsZW5kYXJQaWNrZXJKcywgc2l6ZW9mKFdlYkNvcmU6
OmNhbGVuZGFyUGlja2VySnMpKTsKKyAgICBhZGRTdHJpbmcoIjwvc2NyaXB0PjwvYm9keT5cbiIs
IHdyaXRlcik7Cit9CisKK3ZvaWQgQ2FsZW5kYXJQaWNrZXJQb3B1cDo6c2V0VmFsdWVBbmRDbG9z
ZVBvcHVwKGludCBudW1WYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSkKK3sKKyAgICBp
ZiAobnVtVmFsdWUgPj0gMCkKKyAgICAgICAgbV9jbGllbnQtPmRpZFBpY2tWYWx1ZShzdHJpbmdW
YWx1ZSk7CisgICAgZW5kUGlja2VyKCk7Cit9CisKK3ZvaWQgQ2FsZW5kYXJQaWNrZXJQb3B1cDo6
ZGlkQ2xvc2VQb3B1cCgpCit7ICAgIAorICAgIG1fY2xpZW50LT5kaWRFbmRQaWNrZXIoKTsKKyAg
ICBtX3BvcHVwID0gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoQ0FMRU5EQVJfUElDS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ2FsZW5kYXJQaWNrZXJQb3B1cC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2FsZW5kYXJQaWNrZXJQb3B1cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkYTlmZWY1NzdjMzQzY2M4MGY5NGQ1
MmNiZjI0NzI4OTI5YWViZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9DYWxlbmRhclBpY2tlclBvcHVwLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ2Fs
ZW5kYXJQaWNrZXJQb3B1cF9oCisjZGVmaW5lIENhbGVuZGFyUGlja2VyUG9wdXBfaAorCisjaW5j
bHVkZSAiUGFnZVBvcHVwQ2xpZW50LmgiCisjaW5jbHVkZSAiVmFsdWVQaWNrZXIuaCIKKworI2lm
IEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFBh
Z2VQb3B1cDsKK2NsYXNzIFZhbHVlUGlja2VyQ2xpZW50OworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgQ2hyb21lQ2xpZW50SW1wbDsKKworY2xhc3MgQ2FsZW5kYXJQaWNrZXJQb3B1
cCA6IHB1YmxpYyBXZWJDb3JlOjpWYWx1ZVBpY2tlciwgcHVibGljIFdlYkNvcmU6OlBhZ2VQb3B1
cENsaWVudCB7CitwdWJsaWM6CisgICAgQ2FsZW5kYXJQaWNrZXJQb3B1cChDaHJvbWVDbGllbnRJ
bXBsKiwgV2ViQ29yZTo6VmFsdWVQaWNrZXJDbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5DYWxlbmRh
clBpY2tlclBvcHVwKCk7CisKKyAgICAvLyBWYWx1ZVBpY2tlciBmdW5jdGlvbnM6CisgICAgdmly
dHVhbCB2b2lkIHNldFBpY2tlclZhbHVlKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBlbmRQaWNrZXIoKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICAvLyBQYWdl
UG9wdXBDbGllbnQgZnVuY3Rpb25zOgorICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6ZSBjb250
ZW50U2l6ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3cml0ZURvY3VtZW50KFdlYkNv
cmU6OkRvY3VtZW50V3JpdGVyJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVl
QW5kQ2xvc2VQb3B1cChpbnQsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBkaWRDbG9zZVBvcHVwKCkgT1ZFUlJJREU7CisKKyAgICBDaHJvbWVDbGllbnRJbXBsKiBt
X2Nocm9tZUNsaWVudDsKKyAgICBXZWJDb3JlOjpWYWx1ZVBpY2tlckNsaWVudCogbV9jbGllbnQ7
CisgICAgV2ViQ29yZTo6UGFnZVBvcHVwKiBtX3BvcHVwOworfTsKKworfQorCisjZW5kaWYgLy8g
RU5BQkxFKENBTEVOREFSX1BJQ0tFUikKKworI2VuZGlmIC8vIENhbGVuZGFyUGlja2VyUG9wdXBf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApp
bmRleCBkYzVhZmM4ODY1NWEyODU0OTk1M2I2NWIwNGU2OWNhZWY1ZWZkNGYwLi43MDQyYzZhZWQ3
MzRiMTEwYjk4NGVkZTZjNzI2NDRhYjAwYzNlYTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtMzksNiArMzksOSBAQAogI2luY2x1
ZGUgIkNvbG9yQ2hvb3NlckNsaWVudC5oIgogI2luY2x1ZGUgIkNvbG9yQ2hvb3NlclVJQ29udHJv
bGxlci5oIgogI2VuZGlmCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKKyNpbmNsdWRlICJD
YWxlbmRhclBpY2tlclBvcHVwLmgiCisjZW5kaWYKICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5j
bHVkZSAiQ3Vyc29yLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCkBAIC03MSw2ICs3
NCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIlRleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmgiCisjaW5jbHVkZSAiVmFs
dWVQaWNrZXIuaCIKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCiAjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyLmgiCkBAIC03
MDQsNiArNzA4LDEzIEBAIFBhc3NPd25QdHI8V2ViQ29sb3JDaG9vc2VyPiBDaHJvbWVDbGllbnRJ
bXBsOjpjcmVhdGVXZWJDb2xvckNob29zZXIoV2ViQ29sb3JDaG9vCiB9CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCitQYXNzT3duUHRyPFdlYkNvcmU6OlZhbHVlUGlja2Vy
PiBDaHJvbWVDbGllbnRJbXBsOjpvcGVuQ2FsZW5kYXJQaWNrZXJQb3B1cChXZWJDb3JlOjpWYWx1
ZVBpY2tlckNsaWVudCogcGlja2VyQ2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcg
Q2FsZW5kYXJQaWNrZXJQb3B1cCh0aGlzLCBwaWNrZXJDbGllbnQpKTsKK30KKyNlbmRpZgorCiB2
b2lkIENocm9tZUNsaWVudEltcGw6OnJ1bk9wZW5QYW5lbChGcmFtZSogZnJhbWUsIFBhc3NSZWZQ
dHI8RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyKQogewogICAgIFdlYlZpZXdDbGllbnQqIGNsaWVu
dCA9IG1fd2ViVmlldy0+Y2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmgKaW5kZXggNjJiMzk5ODg2YmJjNDJjY2M3NzI0MWJjN2UzOWJiODE4
NzZkMDU5MS4uYzBjMjFkNTE4NTZjYjU2OGFjY2U1OWE2YWU4NDQ0NDc1YWViYTc2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaApAQCAtNTAsNiAr
NTAsOCBAQCBjbGFzcyBQb3B1cENvbnRhaW5lcjsKIGNsYXNzIFBvcHVwTWVudUNsaWVudDsKIGNs
YXNzIFJlbmRlckJveDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgVmFsdWVQaWNrZXI7
CitjbGFzcyBWYWx1ZVBpY2tlckNsaWVudDsKIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKIH0KIApA
QCAtMTQ0LDYgKzE0Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29y
ZTo6Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoV2ViQ29yZTo6Q29sb3JDaG9vc2Vy
Q2xpZW50KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBPVkVSUklERTsKICAgICBQYXNzT3duUHRy
PFdlYkNvbG9yQ2hvb3Nlcj4gY3JlYXRlV2ViQ29sb3JDaG9vc2VyKFdlYkNvbG9yQ2hvb3NlckNs
aWVudCosIGNvbnN0IFdlYkNvbG9yJik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElD
S0VSKQorICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpWYWx1ZVBpY2tlcj4gb3BlbkNh
bGVuZGFyUGlja2VyUG9wdXAoV2ViQ29yZTo6VmFsdWVQaWNrZXJDbGllbnQqKSBPVkVSUklERTsK
KyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoV2ViQ29yZTo6RnJhbWUqLCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPik7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRJ
Y29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFdlYkNvcmU6OkZpbGVJY29u
TG9hZGVyKik7CiAjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162011</attachid>
            <date>2012-09-04 04:43:29 -0700</date>
            <delta_ts>2012-09-04 20:35:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95681-20120904204312.patch</filename>
            <type>text/plain</type>
            <size>38019</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0MGQ1ZDNmYWM4Y2Rk
M2Y1MjA3ODMyZjYwOTk4YWQyOWIzNzZmNS4uYzQ0ZGI3Njk0Nzg0ODYyMTc0N2ZjODhiMDBjNjJm
NTk2NjhkYmNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTA5LTA0ICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgUGFnZVBvcHVw
Q2xpZW50IHRvIFdlYktpdCBsYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTU2ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXZSBhcmUgbW92aW5nIGNhbGVuZGFyIHBpY2tlciBQYWdlUG9wdXBDbGll
bnQgdG8gV2ViS2l0IGxheWVyIHNvIHBvcnRzCisgICAgICAgIGNhbiB1c2UgdGhlaXIgcGxhdGZv
cm0gbmF0aXZlIGNob29zZXIgVUkgaWYgdGhleSBoYXZlIG9uZS4gRGF0ZVRpbWVDaG9vc2VyCisg
ICAgICAgIGFuZCBEYXRlVGltZUNob29zZXJDbGllbnQgd2lsbCBiZSByZXVzZWQgd2hlbiB3ZSBp
bXBsZW1lbnQKKyAgICAgICAgQ2hyb21lQ2xpZW50OjpvcGVuV2Vla1BpY2tlclBvcHVwKCkgYW5k
IG9wZW5Nb250aFBpY2tlclBvcHVwKCkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBiZWhh
dmlvciBjaGFuZ2UuIENvdmVyZWQgYnkgZXhpc3RpbmcgY2FsZW5kYXIgcGlja2VyIHRlc3RzLgor
CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OkNhbGVuZGFyUGlja2VyRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6On5DYWxlbmRhclBpY2tlckVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpob3N0SW5w
dXQpOiBNYWRlIGNvbnN0LgorICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50
OjpkaWRDaG9vc2VWYWx1ZSk6IENhbGxlZCB3aGVuIHVzZXIgY2hvc2UgYSB2YWx1ZS4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpk
aWRFbmRDaG9vc2VyKTogQ2FsbGVkIGNob29zZXIgaGFzIGVuZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50OjphbmNob3JSZWN0SW5Sb290Vmlldyk6IFJldHVybnMg
cmVjdCBvZiBpbnB1dCBlbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQaWNrZXJF
bGVtZW50OjpjdXJyZW50VmFsdWUpOiBSZXR1cm5zIGN1cnJlbnQgdmFsdWUuCisgICAgICAgIChX
ZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OnNob3VsZFNob3dTdWdnZXN0aW9ucyk6IFJl
dHVybnMgZmFsc2UgZm9yIG5vdywgdW50aWwgd2Ugc3VwcG9ydCBkYXRhbGlzdC4KKyAgICAgICAg
KFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6c3VnZ2VzdGlvblZhbHVlcyk6IFJldHVy
bnMgZW1wdHkgdmVjdG9yIGZvciBub3cuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6OnN1Z2dlc3Rpb25MYWJlbHMpOiBSZXR1cm5zIGVtcHR5IHZlY3RvciBmb3Igbm93
LgorICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50OjpvcGVuUG9wdXApOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50OjpjbG9zZVBvcHVwKToKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuaDoKKyAgICAgICAgKENh
bGVuZGFyUGlja2VyRWxlbWVudCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5Q2hyb21lQ2xpZW50
OjpvcGVuQ2FsZW5kYXJQaWNrZXJQb3B1cCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5oOgorICAgICAgICAoRW1wdHlDaHJvbWVDbGllbnQpOgorICAgICAgICAqIHBhZ2UvQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENocm9tZUNsaWVudCk6Cisg
ICAgICAgICogcGFnZS9QYWdlUG9wdXBDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZVBvcHVwQ2xpZW50OjphZGRQcm9wZXJ0eSk6IEFkZHMgZG91YmxlIHZhbHVlIHByb3BlcnR5IHRv
IEpTT04uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VQb3B1cENsaWVu
dC5oOgorICAgICAgICAoUGFnZVBvcHVwQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9EYXRl
VGltZUNob29zZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRGF0ZVRpbWVDaG9v
c2VyUGFyYW1ldGVycyk6CisgICAgICAgIChEYXRlVGltZUNob29zZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0ZVRpbWVDaG9vc2VyOjp+RGF0ZVRpbWVDaG9vc2VyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9EYXRlVGltZUNob29zZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoRGF0ZVRpbWVDaG9vc2VyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lQ2hv
b3NlckNsaWVudDo6fkRhdGVUaW1lQ2hvb3NlckNsaWVudCk6CisKIDIwMTItMDktMDMgIEFsZXhh
bmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBVbmhpZGUgaGlkZGVuIGNoYXJhY3RlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggZDVlNDE4ZGMzZTUyMWZkMTg0NDQ4NmE5ZTZjZWU0YTExYTIyMTEyZC4uZGVmMmE1ZjUyNWI3
N2IyMTg5YTk5OTg2NjIwNjU5ZmE1OTVjZDAwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw5MSBAQAorMjAxMi0wOS0wNCAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFBhZ2VQb3B1cENsaWVudCB0byBXZWJLaXQgbGF5ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NjgxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQu
Z3lwOgorICAgICAgICAqIHNyYy9DYWxlbmRhclBpY2tlclBvcHVwLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpDYWxlbmRhclBpY2tlclBvcHVwOjpDYWxl
bmRhclBpY2tlclBvcHVwKToKKyAgICAgICAgKFdlYktpdDo6Q2FsZW5kYXJQaWNrZXJQb3B1cDo6
fkNhbGVuZGFyUGlja2VyUG9wdXApOgorICAgICAgICAoV2ViS2l0OjpDYWxlbmRhclBpY2tlclBv
cHVwOjplbmRDaG9vc2VyKToKKyAgICAgICAgKFdlYktpdDo6Q2FsZW5kYXJQaWNrZXJQb3B1cDo6
Y29udGVudFNpemUpOgorICAgICAgICAoV2ViS2l0OjpDYWxlbmRhclBpY2tlclBvcHVwOjp3cml0
ZURvY3VtZW50KToKKyAgICAgICAgKFdlYktpdDo6Q2FsZW5kYXJQaWNrZXJQb3B1cDo6c2V0VmFs
dWVBbmRDbG9zZVBvcHVwKToKKyAgICAgICAgKFdlYktpdDo6Q2FsZW5kYXJQaWNrZXJQb3B1cDo6
ZGlkQ2xvc2VQb3B1cCk6CisgICAgICAgICogc3JjL0NhbGVuZGFyUGlja2VyUG9wdXAuaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50
LmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChDYWxl
bmRhclBpY2tlclBvcHVwKToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpvcGVu
Q2FsZW5kYXJQaWNrZXJQb3B1cCk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2hyb21lQ2xpZW50SW1wbCk6CisKKzIwMTIt
MDktMDQgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92
ZSBQYWdlUG9wdXBDbGllbnQgdG8gV2ViS2l0IGxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTY4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNo
YW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9u
IGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAg
ICAgICAgKiBzcmMvQ2FsZW5kYXJQaWNrZXJQb3B1cC5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6Q2FsZW5kYXJQaWNrZXJQb3B1cDo6Q2FsZW5kYXJQaWNr
ZXJQb3B1cCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2VyUG9wdXA6On5DYWxlbmRh
clBpY2tlclBvcHVwKToKKyAgICAgICAgKFdlYktpdDo6Q2FsZW5kYXJQaWNrZXJQb3B1cDo6ZW5k
Q2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2VyUG9wdXA6OmNvbnRlbnRT
aXplKToKKyAgICAgICAgKFdlYktpdDo6Q2FsZW5kYXJQaWNrZXJQb3B1cDo6d3JpdGVEb2N1bWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2VyUG9wdXA6OnNldFZhbHVlQW5kQ2xv
c2VQb3B1cCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2VyUG9wdXA6OmRpZENsb3Nl
UG9wdXApOgorICAgICAgICAqIHNyYy9DYWxlbmRhclBpY2tlclBvcHVwLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5oLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQ2FsZW5kYXJQaWNr
ZXJQb3B1cCk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6b3BlbkNhbGVuZGFy
UGlja2VyUG9wdXApOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKENocm9tZUNsaWVudEltcGwpOgorCisyMDEyLTA5LTA0ICBL
ZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgUGFnZVBv
cHVwQ2xpZW50IHRvIFdlYktpdCBsYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTU2ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3Vj
aCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlw
dGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICog
c3JjL0NhbGVuZGFyUGlja2VyUG9wdXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2VyUG9wdXA6OkNhbGVuZGFyUGlja2VyUG9wdXAp
OgorICAgICAgICAoV2ViS2l0OjpDYWxlbmRhclBpY2tlclBvcHVwOjp+Q2FsZW5kYXJQaWNrZXJQ
b3B1cCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2VyUG9wdXA6OmVuZENob29zZXIp
OgorICAgICAgICAoV2ViS2l0OjpDYWxlbmRhclBpY2tlclBvcHVwOjpjb250ZW50U2l6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkNhbGVuZGFyUGlja2VyUG9wdXA6OndyaXRlRG9jdW1lbnQpOgorICAg
ICAgICAoV2ViS2l0OjpDYWxlbmRhclBpY2tlclBvcHVwOjpzZXRWYWx1ZUFuZENsb3NlUG9wdXAp
OgorICAgICAgICAoV2ViS2l0OjpDYWxlbmRhclBpY2tlclBvcHVwOjpkaWRDbG9zZVBvcHVwKToK
KyAgICAgICAgKiBzcmMvQ2FsZW5kYXJQaWNrZXJQb3B1cC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuaC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKENhbGVuZGFyUGlja2VyUG9wdXAp
OgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6Om9wZW5DYWxlbmRhclBpY2tlclBv
cHVwKToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChDaHJvbWVDbGllbnRJbXBsKToKKwogMjAxMi0wOS0wMSAgSmFtZXMgUm9i
aW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgY2hyb21p
dW0gYnVpbGRmaXggd2hlbiB1c2VfbGliY2NfZm9yX2NvbXBvc2l0b3I9MQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgppbmRleCBiNTc3ZTZmNDllYTQ5MjViZjJiODM2ZWJkZDM1OTRhYzU3OTQ2MmMyLi5mNTk4
OGMwOWZmODk3ZjI1MWI5YzBhOGE3N2IxYzkzZjY4ODc5YjhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgpAQCAtMjU3MSw0ICsyNTcxLDQgQEAgX19aTjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIxOHJlbW92ZUFsdGVybmF0aXZlc0V5CiBfX1pON1dlYkNvcmUyN0FsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlcjE2c2hvd0FsdGVybmF0aXZlc0VQNk5TVmlld1JLTlNfOUZsb2F0UmVj
dEV5VTEzYmxvY2tfcG9pbnRlckZ2UDhOU1N0cmluZ0UKIF9fWk43V2ViQ29yZTI0VGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlQzFFUDE4TlNUZXh0QWx0ZXJuYXRpdmVzOF9OU1JhbmdlCiBfX1pON1dl
YkNvcmUzMmNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzRVAxOE5TQXR0cmlidXRlZFN0
cmluZ1JOM1dURjZWZWN0b3JJTlNfMjRUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VFTG0wRUVFCi0j
ZW5kaWYKKyNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCAzMDYxOTU0ZjExODE4NTc4YzI1MThiMGY4OTY3NWY4MTY2MmJlZGYyLi5mOTg2YzNmZjdl
NTg0YWNlNzlmZmUzNjBmZGRhYzA3MmM0MGE0YTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zMzcs
NiArMzM3LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL1RpbWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Ry
ZWVTaGFyZWQuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vRGF0ZVRpbWVDaG9vc2VyLmgnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3NlckNsaWVudC5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9WaXNpdGVkTGlua1N0cmF0ZWd5LmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL1Zpc2l0ZWRMaW5rcy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9XaWRnZXQuaCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50
LmNwcAppbmRleCBmMzI0NGRlNmIwZmQ3MzAxYWRkYzg3OTE2MTQyYmMwMWE1MGM4OGEyLi4zYjc4
ZWQ5MTFkOGNkZTI3ZDQ1MjUzOWUyZDlkNzE4NjJkNmRkNDI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAKQEAgLTMzLDIy
ICszMywxMyBAQAogCiAjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKIAotI2luY2x1ZGUgIkNh
bGVuZGFyUGlja2VyLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xp
ZW50LmgiCi0jaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJFdmVudC5oIgog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKLSNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJMYW5ndWFnZS5oIgotI2luY2x1ZGUgIkxv
Y2FsaXplZERhdGUuaCIKLSNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgotI2luY2x1ZGUgIlBpY2tlckNvbW1vbi5oIgogI2luY2x1ZGUgIlJlbmRlckRldGFp
bHNNYXJrZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKIApAQCAt
NTgsNyArNDksNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBpbmxpbmUgQ2FsZW5k
YXJQaWNrZXJFbGVtZW50OjpDYWxlbmRhclBpY2tlckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50
KQogICAgIDogSFRNTERpdkVsZW1lbnQoZGl2VGFnLCBkb2N1bWVudCkKLSAgICAsIG1fcG9wdXAo
MCkKKyAgICAsIG1fcGlja2VyKG51bGxwdHIpCiB7CiAgICAgc2V0U2hhZG93UHNldWRvSWQoIi13
ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvciIpOwogfQpAQCAtNzEsNyArNjIsNyBAQCBQ
YXNzUmVmUHRyPENhbGVuZGFyUGlja2VyRWxlbWVudD4gQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpj
cmVhdGUoRG9jdW1lbnQqIGRvY3VtZQogQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojp+Q2FsZW5kYXJQ
aWNrZXJFbGVtZW50KCkKIHsKICAgICBjbG9zZVBvcHVwKCk7Ci0gICAgQVNTRVJUKCFtX3BvcHVw
KTsKKyAgICBBU1NFUlQoIW1fcGlja2VyKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBDYWxlbmRhclBp
Y2tlckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5
bGUqKQpAQCAtNzksNyArNzAsNyBAQCBSZW5kZXJPYmplY3QqIENhbGVuZGFyUGlja2VyRWxlbWVu
dDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdAogICAgIHJldHVy
biBuZXcgKGFyZW5hKSBSZW5kZXJEZXRhaWxzTWFya2VyKHRoaXMpOwogfQogCi1pbmxpbmUgSFRN
TElucHV0RWxlbWVudCogQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpob3N0SW5wdXQoKQoraW5saW5l
IEhUTUxJbnB1dEVsZW1lbnQqIENhbGVuZGFyUGlja2VyRWxlbWVudDo6aG9zdElucHV0KCkgY29u
c3QKIHsKICAgICAvLyBKYXZhU2NyaXB0IGNvZGUgY2FuJ3QgY3JlYXRlIENhbGVuZGFyUGlja2Vy
RWxlbWVudCBvYmplY3RzLiBUaGlzIGlzCiAgICAgLy8gYWx3YXlzIGluIHNoYWRvdyBvZiA8aW5w
dXQ+LgpAQCAtMTE0LDkgKzEwNSw0NiBAQCBib29sIENhbGVuZGFyUGlja2VyRWxlbWVudDo6d2ls
bFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQogICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6
d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKTsKIH0KIAordm9pZCBDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6OmRpZENob29zZVZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaG9z
dElucHV0KCktPnNldFZhbHVlKHZhbHVlLCBEaXNwYXRjaENoYW5nZUV2ZW50KTsKK30KKwordm9p
ZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRpZEVuZENob29zZXIoKQoreworICAgIG1fcGlja2Vy
LmNsZWFyKCk7Cit9CisKK0ludFJlY3QgQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjphbmNob3JSZWN0
SW5Sb290VmlldygpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1bWVudCgpLT52aWV3KCkpCisgICAg
ICAgIHJldHVybiBJbnRSZWN0KDAsIDAsIDAsIDApOworICAgIHJldHVybiBkb2N1bWVudCgpLT52
aWV3KCktPmNvbnRlbnRzVG9Sb290Vmlldyhob3N0SW5wdXQoKS0+Z2V0UGl4ZWxTbmFwcGVkUmVj
dCgpKTsKK30KKworU3RyaW5nIENhbGVuZGFyUGlja2VyRWxlbWVudDo6Y3VycmVudFZhbHVlKCkK
K3sKKyAgICByZXR1cm4gaG9zdElucHV0KCktPnZhbHVlKCk7Cit9CisKK2Jvb2wgQ2FsZW5kYXJQ
aWNrZXJFbGVtZW50OjpzaG91bGRTaG93U3VnZ2VzdGlvbnMoKSBjb25zdAoreworICAgIHJldHVy
biBmYWxzZTsKK30KKworVmVjdG9yPFN0cmluZz4gQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjpzdWdn
ZXN0aW9uVmFsdWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKK30K
KworVmVjdG9yPFN0cmluZz4gQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjpzdWdnZXN0aW9uTGFiZWxz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKK30KKwogdm9pZCBDYWxl
bmRhclBpY2tlckVsZW1lbnQ6Om9wZW5Qb3B1cCgpCiB7Ci0gICAgaWYgKG1fcG9wdXApCisgICAg
aWYgKG1fcGlja2VyKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFkb2N1bWVudCgpLT5wYWdl
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEyNSwyMCArMTUzLDI1IEBAIHZvaWQgQ2FsZW5kYXJQ
aWNrZXJFbGVtZW50OjpvcGVuUG9wdXAoKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFkb2N1
bWVudCgpLT52aWV3KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBJbnRSZWN0IGVsZW1lbnRSZWN0
SW5Sb290VmlldyA9IGRvY3VtZW50KCktPnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGhvc3RJ
bnB1dCgpLT5nZXRQaXhlbFNuYXBwZWRSZWN0KCkpOwotICAgIG1fcG9wdXAgPSBjaHJvbWUtPmNs
aWVudCgpLT5vcGVuUGFnZVBvcHVwKHRoaXMsIGVsZW1lbnRSZWN0SW5Sb290Vmlldyk7CisKKyAg
ICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IGhvc3RJbnB1dCgpOworICAgIERhdGVUaW1lQ2hv
b3NlclBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICBwYXJhbWV0ZXJzLm1pbmltdW0gPSBpbnB1
dC0+bWluaW11bSgpOworICAgIHBhcmFtZXRlcnMubWF4aW11bSA9IGlucHV0LT5tYXhpbXVtKCk7
CisgICAgcGFyYW1ldGVycy5yZXF1aXJlZCA9IGlucHV0LT5yZXF1aXJlZCgpOworICAgIERlY2lt
YWwgc3RlcDsKKyAgICBpZiAoaG9zdElucHV0KCktPmdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXAp
KQorICAgICAgICBwYXJhbWV0ZXJzLnN0ZXAgPSAxLjA7CisgICAgZWxzZQorICAgICAgICBwYXJh
bWV0ZXJzLnN0ZXAgPSBzdGVwLnRvRG91YmxlKCk7CisgICAgbV9waWNrZXIgPSBjaHJvbWUtPmNs
aWVudCgpLT5vcGVuQ2FsZW5kYXJQaWNrZXJQb3B1cCh0aGlzLCBwYXJhbWV0ZXJzKTsKIH0KIAog
dm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmNsb3NlUG9wdXAoKQogewotICAgIGlmICghbV9w
b3B1cCkKKyAgICBpZiAoIW1fcGlja2VyKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFkb2N1
bWVudCgpLT5wYWdlKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBDaHJvbWUqIGNocm9tZSA9IGRv
Y3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCk7Ci0gICAgaWYgKCFjaHJvbWUpCi0gICAgICAgIHJl
dHVybjsKLSAgICBjaHJvbWUtPmNsaWVudCgpLT5jbG9zZVBhZ2VQb3B1cChtX3BvcHVwKTsKKyAg
ICBtX3BpY2tlci0+ZW5kQ2hvb3NlcigpOwogfQogCiB2b2lkIENhbGVuZGFyUGlja2VyRWxlbWVu
dDo6ZGV0YWNoKCkKQEAgLTE0Nyw2NyArMTgwLDYgQEAgdm9pZCBDYWxlbmRhclBpY2tlckVsZW1l
bnQ6OmRldGFjaCgpCiAgICAgSFRNTERpdkVsZW1lbnQ6OmRldGFjaCgpOwogfQogCi1JbnRTaXpl
IENhbGVuZGFyUGlja2VyRWxlbWVudDo6Y29udGVudFNpemUoKQotewotICAgIHJldHVybiBJbnRT
aXplKDAsIDApOwotfQotCi12b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6d3JpdGVEb2N1bWVu
dChEb2N1bWVudFdyaXRlciYgd3JpdGVyKQotewotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0
ID0gaG9zdElucHV0KCk7Ci0gICAgRGF0ZUNvbXBvbmVudHMgZGF0ZTsKLSAgICBkYXRlLnNldE1p
bGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlKGlucHV0LT5taW5pbXVtKCkpOwotICAgIFN0cmlu
ZyBtaW5TdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCk7Ci0gICAgZGF0ZS5zZXRNaWxsaXNlY29uZHNT
aW5jZUVwb2NoRm9yRGF0ZShpbnB1dC0+bWF4aW11bSgpKTsKLSAgICBTdHJpbmcgbWF4U3RyaW5n
ID0gZGF0ZS50b1N0cmluZygpOwotICAgIERlY2ltYWwgc3RlcDsKLSAgICBTdHJpbmcgc3RlcFN0
cmluZyA9IGlucHV0LT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKTsKLSAgICBpZiAoc3RlcFN0
cmluZy5pc0VtcHR5KCkgfHwgIWlucHV0LT5nZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkKLSAg
ICAgICAgc3RlcFN0cmluZyA9ICIxIjsKLQotICAgIGFkZFN0cmluZygiPCFET0NUWVBFIGh0bWw+
PGhlYWQ+PG1ldGEgY2hhcnNldD0nVVRGLTgnPjxzdHlsZT5cbiIsIHdyaXRlcik7Ci0gICAgd3Jp
dGVyLmFkZERhdGEocGlja2VyQ29tbW9uQ3NzLCBzaXplb2YocGlja2VyQ29tbW9uQ3NzKSk7Ci0g
ICAgd3JpdGVyLmFkZERhdGEoY2FsZW5kYXJQaWNrZXJDc3MsIHNpemVvZihjYWxlbmRhclBpY2tl
ckNzcykpOwotICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkpIHsKLSAgICAgICAgQ1N0cmluZyBl
eHRyYVN0eWxlID0gZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpLT5leHRyYUNhbGVuZGFyUGlj
a2VyU3R5bGVTaGVldCgpOwotICAgICAgICBpZiAoZXh0cmFTdHlsZS5sZW5ndGgoKSkKLSAgICAg
ICAgICAgIHdyaXRlci5hZGREYXRhKGV4dHJhU3R5bGUuZGF0YSgpLCBleHRyYVN0eWxlLmxlbmd0
aCgpKTsKLSAgICB9Ci0gICAgYWRkU3RyaW5nKCI8L3N0eWxlPjwvaGVhZD48Ym9keT48ZGl2IGlk
PW1haW4+TG9hZGluZy4uLjwvZGl2PjxzY3JpcHQ+XG4iCi0gICAgICAgICAgICAgICAid2luZG93
LmRpYWxvZ0FyZ3VtZW50cyA9IHtcbiIsIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoIm1pbiIs
IG1pblN0cmluZywgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgibWF4IiwgbWF4U3RyaW5nLCB3
cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJzdGVwIiwgc3RlcFN0cmluZywgd3JpdGVyKTsKLSAg
ICBhZGRQcm9wZXJ0eSgicmVxdWlyZWQiLCBpbnB1dC0+cmVxdWlyZWQoKSwgd3JpdGVyKTsKLSAg
ICBhZGRQcm9wZXJ0eSgiY3VycmVudFZhbHVlIiwgaW5wdXQtPnZhbHVlKCksIHdyaXRlcik7Ci0g
ICAgYWRkUHJvcGVydHkoImxvY2FsZSIsIGRlZmF1bHRMYW5ndWFnZSgpLCB3cml0ZXIpOwotICAg
IGFkZFByb3BlcnR5KCJ0b2RheUxhYmVsIiwgY2FsZW5kYXJUb2RheVRleHQoKSwgd3JpdGVyKTsK
LSAgICBhZGRQcm9wZXJ0eSgiY2xlYXJMYWJlbCIsIGNhbGVuZGFyQ2xlYXJUZXh0KCksIHdyaXRl
cik7Ci0gICAgYWRkUHJvcGVydHkoIndlZWtTdGFydERheSIsIGZpcnN0RGF5T2ZXZWVrKCksIHdy
aXRlcik7Ci0gICAgYWRkUHJvcGVydHkoIm1vbnRoTGFiZWxzIiwgbW9udGhMYWJlbHMoKSwgd3Jp
dGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgiZGF5TGFiZWxzIiwgd2Vla0RheVNob3J0TGFiZWxzKCks
IHdyaXRlcik7Ci0gICAgRGlyZWN0aW9uIGRpciA9IGRpcmVjdGlvbihtb250aExhYmVscygpWzBd
WzBdKTsKLSAgICBhZGRQcm9wZXJ0eSgiaXNSVEwiLCBkaXIgPT0gUmlnaHRUb0xlZnQgfHwgZGly
ID09IFJpZ2h0VG9MZWZ0QXJhYmljLCB3cml0ZXIpOwotICAgIGFkZFN0cmluZygifVxuIiwgd3Jp
dGVyKTsKLQotICAgIHdyaXRlci5hZGREYXRhKHBpY2tlckNvbW1vbkpzLCBzaXplb2YocGlja2Vy
Q29tbW9uSnMpKTsKLSAgICB3cml0ZXIuYWRkRGF0YShjYWxlbmRhclBpY2tlckpzLCBzaXplb2Yo
Y2FsZW5kYXJQaWNrZXJKcykpOwotICAgIGFkZFN0cmluZygiPC9zY3JpcHQ+PC9ib2R5PlxuIiwg
d3JpdGVyKTsKLX0KLQotdm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OnNldFZhbHVlQW5kQ2xv
c2VQb3B1cChpbnQgbnVtVmFsdWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nVmFsdWUpCi17Ci0gICAg
QVNTRVJUKG1fcG9wdXApOwotICAgIGNsb3NlUG9wdXAoKTsKLSAgICBpZiAobnVtVmFsdWUgPj0g
MCkKLSAgICAgICAgaG9zdElucHV0KCktPnNldFZhbHVlKHN0cmluZ1ZhbHVlLCBEaXNwYXRjaENo
YW5nZUV2ZW50KTsKLX0KLQotdm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRpZENsb3NlUG9w
dXAoKQotewotICAgIG1fcG9wdXAgPSAwOwotfQotCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuaAppbmRleCBjYmYy
MTNmYzVmY2IzZTM1ZjFkNmJkZjEyZWY4MTI3ZWIyMzllMzg3Li42NjM2ODRiMjU5OGNiYTMxODEw
MzFjNWE5ZjU1NjFjM2RhYTgxNjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuaApAQCAtMzIsMTUgKzMyLDE4IEBACiAjZGVmaW5l
IENhbGVuZGFyUGlja2VyRWxlbWVudF9oCiAKICNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQor
I2luY2x1ZGUgIkRhdGVUaW1lQ2hvb3Nlci5oIgorI2luY2x1ZGUgIkRhdGVUaW1lQ2hvb3NlckNs
aWVudC5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCi0jaW5jbHVkZSAiUGFnZVBvcHVw
Q2xpZW50LmgiCisKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSFRNTElucHV0RWxlbWVudDsKIGNsYXNzIFBhZ2VQb3B1cDsKIAotY2xhc3Mg
Q2FsZW5kYXJQaWNrZXJFbGVtZW50IDogcHVibGljIEhUTUxEaXZFbGVtZW50LCBwdWJsaWMgUGFn
ZVBvcHVwQ2xpZW50IHsKK2NsYXNzIENhbGVuZGFyUGlja2VyRWxlbWVudCA6IHB1YmxpYyBIVE1M
RGl2RWxlbWVudCwgcHVibGljIERhdGVUaW1lQ2hvb3NlckNsaWVudCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q2FsZW5kYXJQaWNrZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQq
KTsKICAgICB2aXJ0dWFsIH5DYWxlbmRhclBpY2tlckVsZW1lbnQoKTsKQEAgLTQ4LDIxICs1MSwy
NCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbG9zZVBvcHVwKCk7CiAgICAgdmlydHVhbCBib29sIHdp
bGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREU7CiAKKyAgICAvLyBDb2xvckNo
b29zZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIGRpZENob29zZVZh
bHVlKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRDaG9v
c2VyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRSZWN0IGFuY2hvclJlY3RJblJvb3RWaWV3
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgY3VycmVudFZhbHVlKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZFNob3dTdWdnZXN0aW9ucygpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvblZhbHVlcygpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvbkxhYmVs
cygpIGNvbnN0IE9WRVJSSURFOworCiBwcml2YXRlOgogICAgIENhbGVuZGFyUGlja2VyRWxlbWVu
dChEb2N1bWVudCopOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0
YWNoKCkgT1ZFUlJJREU7CiAKLSAgICAvLyBQYWdlUG9wdXBDbGllbnQgZnVuY3Rpb25zOgotICAg
IHZpcnR1YWwgSW50U2l6ZSBjb250ZW50U2l6ZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCB3cml0ZURvY3VtZW50KERvY3VtZW50V3JpdGVyJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVBvcHVwKCkgT1ZFUlJJREU7Ci0KLSAgICBIVE1MSW5w
dXRFbGVtZW50KiBob3N0SW5wdXQoKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBob3N0SW5wdXQo
KSBjb25zdDsKIAotICAgIFBhZ2VQb3B1cCogbV9wb3B1cDsKKyAgICBPd25QdHI8RGF0ZVRpbWVD
aG9vc2VyPiBtX3BpY2tlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKaW5kZXggZDhiYzA2ZjMzNmViNDAwZTIyZDFlZDY2M2I0NGFjOGViNGFjMWE0OC4uYjQz
OTQ4M2RlMThlOTVlYzg0MDQ4MzU2ZjA2ZThhMTMyZTFiMzI0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTM5LDYgKzM5LDEwIEBACiAjaW5jbHVkZSAiQ29sb3JD
aG9vc2VyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisjaW5jbHVk
ZSAiRGF0ZVRpbWVDaG9vc2VyLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfSU5URU5UUykg
CiAjaW5jbHVkZSAiSW50ZW50UmVxdWVzdC5oIiAKICNlbmRpZiAKQEAgLTEwMyw2ICsxMDcsMTMg
QEAgUGFzc093blB0cjxDb2xvckNob29zZXI+IEVtcHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVDb2xv
ckNob29zZXIoQ29sb3JDaG9vc2VyQ2xpZW4KIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENBTEVO
REFSX1BJQ0tFUikKK1Bhc3NPd25QdHI8RGF0ZVRpbWVDaG9vc2VyPiBFbXB0eUNocm9tZUNsaWVu
dDo6b3BlbkNhbGVuZGFyUGlja2VyUG9wdXAoRGF0ZVRpbWVDaG9vc2VyQ2xpZW50KiwgY29uc3Qg
RGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyYpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9Cisj
ZW5kaWYKKwogdm9pZCBFbXB0eUNocm9tZUNsaWVudDo6cnVuT3BlblBhbmVsKEZyYW1lKiwgUGFz
c1JlZlB0cjxGaWxlQ2hvb3Nlcj4pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmgKaW5kZXggYTAyNzk5N2ZmN2Y5NTNkMjI1OTIwNWQ4YWI2ZmJjNTM3OWFlMDk1NS4uZTkxYjBl
ODY0OGRmNTlhNGE2OWZiMjczM2ZjYTJiOWExMTE2YzBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaApAQCAtMTcyLDYgKzE3MiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQ
YXNzT3duUHRyPENvbG9yQ2hvb3Nlcj4gY3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNs
aWVudCosIGNvbnN0IENvbG9yJikgT1ZFUlJJREU7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDQUxF
TkRBUl9QSUNLRVIpCisgICAgdmlydHVhbCBQYXNzT3duUHRyPERhdGVUaW1lQ2hvb3Nlcj4gb3Bl
bkNhbGVuZGFyUGlja2VyUG9wdXAoRGF0ZVRpbWVDaG9vc2VyQ2xpZW50KiwgY29uc3QgRGF0ZVRp
bWVDaG9vc2VyUGFyYW1ldGVycyYpIE9WRVJSSURFOworI2VuZGlmCisKICAgICB2aXJ0dWFsIHZv
aWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgRmlsZUljb25Mb2FkZXIqKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5k
ZXggZGQ2YWZjZmUxY2RmZThiMTc2ZmI2OThlYmUzNjE3MDJkZGMwODg5MS4uMmNkOTBlZWMzYjI2
NDRmZjY0N2U4ODM1ZGIzYmFkM2FkMmQyMDk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCkBAIC04Miw2ICs4MiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ29s
b3JDaG9vc2VyQ2xpZW50OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKSAg
ICAKKyAgICBjbGFzcyBEYXRlVGltZUNob29zZXI7CisgICAgY2xhc3MgRGF0ZVRpbWVDaG9vc2Vy
Q2xpZW50OworICAgIHN0cnVjdCBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzOworI2VuZGlmCisK
ICNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04pCiAgICAgc3RydWN0IEdyYXBo
aWNzRGV2aWNlQWRhcHRlcjsKICNlbmRpZgpAQCAtMjIyLDYgKzIyOCwxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxDb2xvckNob29zZXI+IGNyZWF0
ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqLCBjb25zdCBDb2xvciYpID0gMDsKICNl
bmRpZgogCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKKyAgICAgICAgdmlydHVhbCBQYXNz
T3duUHRyPERhdGVUaW1lQ2hvb3Nlcj4gb3BlbkNhbGVuZGFyUGlja2VyUG9wdXAoRGF0ZVRpbWVD
aG9vc2VyQ2xpZW50KiwgY29uc3QgRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyYpID0gMDsKKyNl
bmRpZgorCiAgICAgICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVm
UHRyPEZpbGVDaG9vc2VyPikgPSAwOwogICAgICAgICAvLyBBc3luY2hyb25vdXMgcmVxdWVzdCB0
byBsb2FkIGFuIGljb24gZm9yIHNwZWNpZmllZCBmaWxlbmFtZXMuCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUljb25Mb2Fk
ZXIqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENsaWVudC5jcHAKaW5kZXggNWI2
NjZlYTQ1OTViZDZmNmI3NjIxZjI4NmIxMzI2MWNmM2NjMWNjNS4uMzAxZDFlZjNhMDc2NjczNzBj
ZmRhZDRiOGRhYWUzNTdhOTU4OGEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlUG9wdXBDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ2xp
ZW50LmNwcApAQCAtNjksNiArNjksMTQgQEAgdm9pZCBQYWdlUG9wdXBDbGllbnQ6OmFkZFByb3Bl
cnR5KGNvbnN0IGNoYXIqIG5hbWUsIHVuc2lnbmVkIHZhbHVlLCBEb2N1bWVudFdyaXQKICAgICBh
ZGRMaXRlcmFsKCIsXG4iLCB3cml0ZXIpOwogfQogCit2b2lkIFBhZ2VQb3B1cENsaWVudDo6YWRk
UHJvcGVydHkoY29uc3QgY2hhciogbmFtZSwgZG91YmxlIHZhbHVlLCBEb2N1bWVudFdyaXRlciYg
d3JpdGVyKQoreworICAgIHdyaXRlci5hZGREYXRhKG5hbWUsIHN0cmxlbihuYW1lKSk7CisgICAg
YWRkTGl0ZXJhbCgiOiAiLCB3cml0ZXIpOworICAgIGFkZFN0cmluZyhTdHJpbmc6Om51bWJlcih2
YWx1ZSksIHdyaXRlcik7CisgICAgYWRkTGl0ZXJhbCgiLFxuIiwgd3JpdGVyKTsKK30KKwogdm9p
ZCBQYWdlUG9wdXBDbGllbnQ6OmFkZFByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wgdmFs
dWUsIERvY3VtZW50V3JpdGVyJiB3cml0ZXIpCiB7CiAgICAgd3JpdGVyLmFkZERhdGEobmFtZSwg
c3RybGVuKG5hbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVw
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENsaWVudC5oCmluZGV4IDAy
YWVlMzIyNTZjZGFmYTk2ZTE2ZDRlM2ZiNDhkNGY4NmYzMGEzZTAuLjgzOWI0MmVjZjYxM2U1YjNk
YjE2ODgyZGQxZTE2MTgyZWIwZDhkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVBvcHVwQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUG9wdXBDbGll
bnQuaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgYWRkSmF2YVNj
cmlwdFN0cmluZyhjb25zdCBTdHJpbmcmLCBEb2N1bWVudFdyaXRlciYpOwogICAgIHN0YXRpYyB2
b2lkIGFkZFByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIERv
Y3VtZW50V3JpdGVyJik7CiAgICAgc3RhdGljIHZvaWQgYWRkUHJvcGVydHkoY29uc3QgY2hhciog
bmFtZSwgdW5zaWduZWQgdmFsdWUsIERvY3VtZW50V3JpdGVyJik7CisgICAgc3RhdGljIHZvaWQg
YWRkUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSwgZG91YmxlIHZhbHVlLCBEb2N1bWVudFdyaXRl
ciYpOwogICAgIHN0YXRpYyB2b2lkIGFkZFByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wg
dmFsdWUsIERvY3VtZW50V3JpdGVyJik7CiAgICAgc3RhdGljIHZvaWQgYWRkUHJvcGVydHkoY29u
c3QgY2hhciogbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhbHVlcywgRG9jdW1lbnRXcml0
ZXImKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlVGltZUNo
b29zZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3Nlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM3YzAwYmJmMWYzYjhhOTUyMWM4OThiMzY1ZDU4YWYyZWIyOWY1NDYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlVGltZUNob29zZXIuaApAQCAt
MCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBEYXRlVGltZUNob29zZXJfaAorI2RlZmluZSBEYXRlVGltZUNo
b29zZXJfaAorCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBEYXRlVGltZUNob29zZXJQ
YXJhbWV0ZXJzIHsKKyAgICBkb3VibGUgbWluaW11bTsKKyAgICBkb3VibGUgbWF4aW11bTsKKyAg
ICBkb3VibGUgc3RlcDsKKyAgICBib29sIHJlcXVpcmVkOworfTsKKworLy8gRm9yIHBpY2tlcnMg
bGlrZSBjb2xvciBwaWNrZXJzIGFuZCBkYXRlIHBpY2tlcnMuCitjbGFzcyBEYXRlVGltZUNob29z
ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkRhdGVUaW1lQ2hvb3NlcigpIHsgfQorCisgICAg
dmlydHVhbCB2b2lkIGVuZENob29zZXIoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBEYXRlVGltZUNob29zZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRGF0ZVRpbWVDaG9vc2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EYXRlVGltZUNob29zZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWU3NDdkZmIzNDU5
NTgwZGVlN2E4MmRiNDZmYmY2YmRkMmQ5MWUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRGF0ZVRpbWVDaG9vc2VyQ2xpZW50LmgKQEAgLTAsMCArMSw1OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgRGF0ZVRpbWVDaG9vc2VyQ2xpZW50X2gKKyNkZWZpbmUgRGF0ZVRpbWVDaG9vc2VyQ2xp
ZW50X2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEYXRlVGltZUNob29zZXJDbGll
bnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkRhdGVUaW1lQ2hvb3NlckNsaWVudCgpIHsgfQor
CisgICAgLy8gQ2FsbGVkIHdoZW4gdXNlciBwaWNrZWQgYSB2YWx1ZS4KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hvb3NlVmFsdWUoY29uc3QgU3RyaW5nJikgPSAwOworICAgIC8vIENhbGxlZCB3aGVu
IGNob29zZXIgaGFzIGVuZGVkLgorICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRDaG9vc2VyKCkgPSAw
OworICAgIC8vIFJldHVybnMgdGhlIHJlY3QgZm9yIHRoZSBlbGVtZW50IHRoYXQgb3JpZ2luYXRl
ZCB0aGUgcGlja2VyLgorICAgIHZpcnR1YWwgSW50UmVjdCBhbmNob3JSZWN0SW5Sb290Vmlldygp
IGNvbnN0ID0gMDsKKyAgICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIHdoaWNoIHNob3Vs
ZCBiZSBzaG93biBpbiB0aGUgY29sb3IgcGlja2VyLgorICAgIHZpcnR1YWwgU3RyaW5nIGN1cnJl
bnRWYWx1ZSgpID0gMDsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2Ugc2hvdWxkIHNob3cgc3Vn
Z2VzdGlvbnMgdG8gdGhlIHVzZXIuCisgICAgdmlydHVhbCBib29sIHNob3VsZFNob3dTdWdnZXN0
aW9ucygpIGNvbnN0ID0gMDsKKyAgICAvLyBSZXR1cm5zIHRoZSBsaXN0IG9mIHN1Z2dlc3Rpb24g
dmFsdWVzLgorICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvblZhbHVlcygpIGNv
bnN0ID0gMDsKKyAgICAvLyBSZXR1cm5zIHRoZSBsaXN0IG9mIHN1Z2dlc3Rpb24gbGFiZWxzLgor
ICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvbkxhYmVscygpIGNvbnN0ID0gMDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIERhdGVUaW1lQ2hvb3Nl
ckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggYjk4NGFmYzg2M2U2ZWU1
YTQyZGRlNzI0YmNlZTYwM2Q2YmI0NWMzZC4uOTM1Y2Q5YTU4Zjk5OWUyZWFmY2M2YWE3ZDA3ZTBl
NGZhMTdhZTA4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzU4LDYgKzM1OCw4
IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9CYXR0ZXJ5Q2xpZW50SW1wbC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL0Jsb2JSZWdpc3RyeVByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9CbG9iUmVnaXN0cnlQcm94eS5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0NhbGVuZGFyUGlj
a2VyUG9wdXAuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL0NhbGVuZGFyUGlja2VyUG9wdXAu
aCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9DaHJvbWVDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMv
Q2hyb21pdW1DdXJyZW50VGltZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2FsZW5kYXJQaWNrZXJQb3B1cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9DYWxlbmRhclBpY2tlclBvcHVwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzRhMzk5OTE0NDI5YzFi
YzdkN2VkNjc5OTMzOGMzN2ZhMzk1MzI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ2FsZW5kYXJQaWNrZXJQb3B1cC5jcHAKQEAgLTAsMCArMSwxMzEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2FsZW5kYXJQaWNrZXJQb3B1cC5oIgorCisj
aWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKKworI2luY2x1ZGUgIkNhbGVuZGFyUGlja2VyLmgi
CisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIkRhdGVDb21wb25lbnRz
LmgiCisjaW5jbHVkZSAiRGF0ZVRpbWVDaG9vc2VyQ2xpZW50LmgiCisjaW5jbHVkZSAiTGFuZ3Vh
Z2UuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWREYXRlLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKKyNpbmNsdWRlICJQaWNrZXJDb21tb24uaCIKKyNpbmNsdWRlICJSZW5kZXJUaGVtZS5o
IgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJMb2NhbGl6ZWRTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdURjo6VW5p
Y29kZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0NhbGVuZGFyUGlja2VyUG9wdXA6OkNhbGVu
ZGFyUGlja2VyUG9wdXAoQ2hyb21lQ2xpZW50SW1wbCogY2hyb21lQ2xpZW50LCBXZWJDb3JlOjpE
YXRlVGltZUNob29zZXJDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6RGF0ZVRpbWVDaG9v
c2VyUGFyYW1ldGVycyYgcGFyYW1ldGVycykKKyAgICA6IG1fY2hyb21lQ2xpZW50KGNocm9tZUNs
aWVudCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fcG9wdXAoMCkKKyAgICAsIG1f
cGFyYW1ldGVycyhwYXJhbWV0ZXJzKQoreworICAgIEFTU0VSVChtX2Nocm9tZUNsaWVudCk7Cisg
ICAgQVNTRVJUKG1fY2xpZW50KTsKKyAgICBtX3BvcHVwID0gbV9jaHJvbWVDbGllbnQtPm9wZW5Q
YWdlUG9wdXAodGhpcywgbV9jbGllbnQtPmFuY2hvclJlY3RJblJvb3RWaWV3KCkpOworfQorCitD
YWxlbmRhclBpY2tlclBvcHVwOjp+Q2FsZW5kYXJQaWNrZXJQb3B1cCgpCit7Cit9CisKK3ZvaWQg
Q2FsZW5kYXJQaWNrZXJQb3B1cDo6ZW5kQ2hvb3NlcigpCit7CisgICAgaWYgKCFtX3BvcHVwKQor
ICAgICAgICByZXR1cm47CisgICAgbV9jaHJvbWVDbGllbnQtPmNsb3NlUGFnZVBvcHVwKG1fcG9w
dXApOworfQorCitXZWJDb3JlOjpJbnRTaXplIENhbGVuZGFyUGlja2VyUG9wdXA6OmNvbnRlbnRT
aXplKCkKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6SW50U2l6ZSgwLCAwKTsKK30KKwordm9pZCBD
YWxlbmRhclBpY2tlclBvcHVwOjp3cml0ZURvY3VtZW50KFdlYkNvcmU6OkRvY3VtZW50V3JpdGVy
JiB3cml0ZXIpCit7CisgICAgV2ViQ29yZTo6RGF0ZUNvbXBvbmVudHMgZGF0ZTsKKyAgICBkYXRl
LnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlKG1fcGFyYW1ldGVycy5taW5pbXVtKTsK
KyAgICBTdHJpbmcgbWluU3RyaW5nID0gZGF0ZS50b1N0cmluZygpOworICAgIGRhdGUuc2V0TWls
bGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUobV9wYXJhbWV0ZXJzLm1heGltdW0pOworICAgIFN0
cmluZyBtYXhTdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCk7CisgICAgZG91YmxlIHN0ZXAgPSBtX3Bh
cmFtZXRlcnMuc3RlcDsKKworICAgIGFkZFN0cmluZygiPCFET0NUWVBFIGh0bWw+PGhlYWQ+PG1l
dGEgY2hhcnNldD0nVVRGLTgnPjxzdHlsZT5cbiIsIHdyaXRlcik7CisgICAgd3JpdGVyLmFkZERh
dGEoV2ViQ29yZTo6cGlja2VyQ29tbW9uQ3NzLCBzaXplb2YoV2ViQ29yZTo6cGlja2VyQ29tbW9u
Q3NzKSk7CisgICAgd3JpdGVyLmFkZERhdGEoV2ViQ29yZTo6Y2FsZW5kYXJQaWNrZXJDc3MsIHNp
emVvZihXZWJDb3JlOjpjYWxlbmRhclBpY2tlckNzcykpOworICAgIENTdHJpbmcgZXh0cmFTdHls
ZSA9IFdlYkNvcmU6OlJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+ZXh0cmFDYWxlbmRhclBp
Y2tlclN0eWxlU2hlZXQoKTsKKyAgICBpZiAoZXh0cmFTdHlsZS5sZW5ndGgoKSkKKyAgICAgICAg
d3JpdGVyLmFkZERhdGEoZXh0cmFTdHlsZS5kYXRhKCksIGV4dHJhU3R5bGUubGVuZ3RoKCkpOwor
ICAgIGFkZFN0cmluZygiPC9zdHlsZT48L2hlYWQ+PGJvZHk+PGRpdiBpZD1tYWluPkxvYWRpbmcu
Li48L2Rpdj48c2NyaXB0PlxuIgorICAgICAgICAgICAgICAgIndpbmRvdy5kaWFsb2dBcmd1bWVu
dHMgPSB7XG4iLCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5KCJtaW4iLCBtaW5TdHJpbmcsIHdy
aXRlcik7CisgICAgYWRkUHJvcGVydHkoIm1heCIsIG1heFN0cmluZywgd3JpdGVyKTsKKyAgICBh
ZGRQcm9wZXJ0eSgic3RlcCIsIHN0ZXAsIHdyaXRlcik7CisgICAgYWRkUHJvcGVydHkoInJlcXVp
cmVkIiwgbV9wYXJhbWV0ZXJzLnJlcXVpcmVkLCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5KCJj
dXJyZW50VmFsdWUiLCBtX2NsaWVudC0+Y3VycmVudFZhbHVlKCksIHdyaXRlcik7CisgICAgYWRk
UHJvcGVydHkoImxvY2FsZSIsIFdlYkNvcmU6OmRlZmF1bHRMYW5ndWFnZSgpLCB3cml0ZXIpOwor
ICAgIFdlYkNvcmU6OlBhZ2VQb3B1cENsaWVudDo6YWRkUHJvcGVydHkoInRvZGF5TGFiZWwiLCBQ
bGF0Zm9ybTo6Y3VycmVudCgpLT5xdWVyeUxvY2FsaXplZFN0cmluZyhXZWJMb2NhbGl6ZWRTdHJp
bmc6OkNhbGVuZGFyVG9kYXkpLCB3cml0ZXIpOworICAgIFdlYkNvcmU6OlBhZ2VQb3B1cENsaWVu
dDo6YWRkUHJvcGVydHkoImNsZWFyTGFiZWwiLCBQbGF0Zm9ybTo6Y3VycmVudCgpLT5xdWVyeUxv
Y2FsaXplZFN0cmluZyhXZWJMb2NhbGl6ZWRTdHJpbmc6OkNhbGVuZGFyQ2xlYXIpLCB3cml0ZXIp
OworICAgIGFkZFByb3BlcnR5KCJ3ZWVrU3RhcnREYXkiLCBXZWJDb3JlOjpmaXJzdERheU9mV2Vl
aygpLCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5KCJtb250aExhYmVscyIsIFdlYkNvcmU6Om1v
bnRoTGFiZWxzKCksIHdyaXRlcik7CisgICAgYWRkUHJvcGVydHkoImRheUxhYmVscyIsIFdlYkNv
cmU6OndlZWtEYXlTaG9ydExhYmVscygpLCB3cml0ZXIpOworICAgIERpcmVjdGlvbiBkaXIgPSBk
aXJlY3Rpb24oV2ViQ29yZTo6bW9udGhMYWJlbHMoKVswXVswXSk7CisgICAgYWRkUHJvcGVydHko
ImlzUlRMIiwgZGlyID09IFJpZ2h0VG9MZWZ0IHx8IGRpciA9PSBSaWdodFRvTGVmdEFyYWJpYywg
d3JpdGVyKTsKKyAgICBhZGRTdHJpbmcoIn1cbiIsIHdyaXRlcik7CisKKyAgICB3cml0ZXIuYWRk
RGF0YShXZWJDb3JlOjpwaWNrZXJDb21tb25Kcywgc2l6ZW9mKFdlYkNvcmU6OnBpY2tlckNvbW1v
bkpzKSk7CisgICAgd3JpdGVyLmFkZERhdGEoV2ViQ29yZTo6Y2FsZW5kYXJQaWNrZXJKcywgc2l6
ZW9mKFdlYkNvcmU6OmNhbGVuZGFyUGlja2VySnMpKTsKKyAgICBhZGRTdHJpbmcoIjwvc2NyaXB0
PjwvYm9keT5cbiIsIHdyaXRlcik7Cit9CisKK3ZvaWQgQ2FsZW5kYXJQaWNrZXJQb3B1cDo6c2V0
VmFsdWVBbmRDbG9zZVBvcHVwKGludCBudW1WYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1
ZSkKK3sKKyAgICBpZiAobnVtVmFsdWUgPj0gMCkKKyAgICAgICAgbV9jbGllbnQtPmRpZENob29z
ZVZhbHVlKHN0cmluZ1ZhbHVlKTsKKyAgICBlbmRDaG9vc2VyKCk7Cit9CisKK3ZvaWQgQ2FsZW5k
YXJQaWNrZXJQb3B1cDo6ZGlkQ2xvc2VQb3B1cCgpCit7ICAgIAorICAgIG1fY2xpZW50LT5kaWRF
bmRDaG9vc2VyKCk7CisgICAgbV9wb3B1cCA9IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NhbGVuZGFyUGlja2VyUG9wdXAuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0NhbGVuZGFyUGlja2VyUG9wdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2MyMmE5
YzY0N2Y3NzkxMTFhMGQ5ZDFiN2RiZDJlNWM2N2ZkOGY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2FsZW5kYXJQaWNrZXJQb3B1cC5oCkBAIC0wLDAgKzEs
NzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIENhbGVuZGFyUGlja2VyUG9wdXBfaAorI2RlZmluZSBDYWxlbmRhclBpY2tl
clBvcHVwX2gKKworI2luY2x1ZGUgIkRhdGVUaW1lQ2hvb3Nlci5oIgorI2luY2x1ZGUgIlBhZ2VQ
b3B1cENsaWVudC5oIgorCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgUGFnZVBvcHVwOworY2xhc3MgRGF0ZVRpbWVDaG9vc2VyQ2xpZW50
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ2hyb21lQ2xpZW50SW1wbDsKKwor
Y2xhc3MgQ2FsZW5kYXJQaWNrZXJQb3B1cCA6IHB1YmxpYyBXZWJDb3JlOjpEYXRlVGltZUNob29z
ZXIsIHB1YmxpYyBXZWJDb3JlOjpQYWdlUG9wdXBDbGllbnQgeworcHVibGljOgorICAgIENhbGVu
ZGFyUGlja2VyUG9wdXAoQ2hyb21lQ2xpZW50SW1wbCosIFdlYkNvcmU6OkRhdGVUaW1lQ2hvb3Nl
ckNsaWVudCosIGNvbnN0IFdlYkNvcmU6OkRhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMmKTsKKyAg
ICB2aXJ0dWFsIH5DYWxlbmRhclBpY2tlclBvcHVwKCk7CisKKyAgICAvLyBEYXRlVGltZUNob29z
ZXIgZnVuY3Rpb25zOgorICAgIHZpcnR1YWwgdm9pZCBlbmRDaG9vc2VyKCkgT1ZFUlJJREU7CisK
K3ByaXZhdGU6CisgICAgLy8gUGFnZVBvcHVwQ2xpZW50IGZ1bmN0aW9uczoKKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OkludFNpemUgY29udGVudFNpemUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgd3JpdGVEb2N1bWVudChXZWJDb3JlOjpEb2N1bWVudFdyaXRlciYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFuZENsb3NlUG9wdXAoaW50LCBjb25zdCBTdHJpbmcmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2VQb3B1cCgpIE9WRVJSSURFOworCisg
ICAgQ2hyb21lQ2xpZW50SW1wbCogbV9jaHJvbWVDbGllbnQ7CisgICAgV2ViQ29yZTo6RGF0ZVRp
bWVDaG9vc2VyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJDb3JlOjpQYWdlUG9wdXAqIG1fcG9w
dXA7CisgICAgV2ViQ29yZTo6RGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7
Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorCisjZW5kaWYg
Ly8gQ2FsZW5kYXJQaWNrZXJQb3B1cF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Nocm9tZUNsaWVudEltcGwuY3BwCmluZGV4IGRjNWFmYzg4NjU1YTI4NTQ5OTUzYjY1YjA0ZTY5
Y2FlZjVlZmQ0ZjAuLjdjYjFmNmQwMDljNzhmMWFmNjMwMjdlMzVhMGZjNjg4NTU1ODAxNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBA
IC0zOSw5ICszOSwxNSBAQAogI2luY2x1ZGUgIkNvbG9yQ2hvb3NlckNsaWVudC5oIgogI2luY2x1
ZGUgIkNvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oIgogI2VuZGlmCisjaWYgRU5BQkxFKENBTEVO
REFSX1BJQ0tFUikKKyNpbmNsdWRlICJDYWxlbmRhclBpY2tlclBvcHVwLmgiCisjZW5kaWYKICNp
bmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCiAjaW5jbHVkZSAiRGF0YWJh
c2VUcmFja2VyLmgiCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKKyNpbmNsdWRlICJEYXRl
VGltZUNob29zZXIuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJFeHRlcm5hbFBvcHVwTWVudS5oIgpAQCAtNzA0
LDYgKzcxMCwxMyBAQCBQYXNzT3duUHRyPFdlYkNvbG9yQ2hvb3Nlcj4gQ2hyb21lQ2xpZW50SW1w
bDo6Y3JlYXRlV2ViQ29sb3JDaG9vc2VyKFdlYkNvbG9yQ2hvbwogfQogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorUGFzc093blB0cjxXZWJDb3JlOjpEYXRlVGltZUNob29z
ZXI+IENocm9tZUNsaWVudEltcGw6Om9wZW5DYWxlbmRhclBpY2tlclBvcHVwKFdlYkNvcmU6OkRh
dGVUaW1lQ2hvb3NlckNsaWVudCogcGlja2VyQ2xpZW50LCBjb25zdCBXZWJDb3JlOjpEYXRlVGlt
ZUNob29zZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQ2FsZW5kYXJQaWNrZXJQb3B1cCh0aGlzLCBwaWNrZXJDbGllbnQsIHBhcmFtZXRlcnMpKTsK
K30KKyNlbmRpZgorCiB2b2lkIENocm9tZUNsaWVudEltcGw6OnJ1bk9wZW5QYW5lbChGcmFtZSog
ZnJhbWUsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyKQogewogICAgIFdlYlZp
ZXdDbGllbnQqIGNsaWVudCA9IG1fd2ViVmlldy0+Y2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKaW5kZXggNjJiMzk5ODg2YmJjNDJjY2M3
NzI0MWJjN2UzOWJiODE4NzZkMDU5MS4uMjg3ZTU3YWYzOWViZjE3NjBhYjdkOWQ3NGQ0MWEwOTM3
NDUxZWQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudElt
cGwuaApAQCAtNTAsNiArNTAsOCBAQCBjbGFzcyBQb3B1cENvbnRhaW5lcjsKIGNsYXNzIFBvcHVw
TWVudUNsaWVudDsKIGNsYXNzIFJlbmRlckJveDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOworY2xh
c3MgRGF0ZVRpbWVDaG9vc2VyOworY2xhc3MgRGF0ZVRpbWVDaG9vc2VyQ2xpZW50Owogc3RydWN0
IFdpbmRvd0ZlYXR1cmVzOwogfQogCkBAIC0xNDQsNiArMTQ2LDkgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpDb2xvckNob29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3Nl
cihXZWJDb3JlOjpDb2xvckNob29zZXJDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYpIE9W
RVJSSURFOwogICAgIFBhc3NPd25QdHI8V2ViQ29sb3JDaG9vc2VyPiBjcmVhdGVXZWJDb2xvckNo
b29zZXIoV2ViQ29sb3JDaG9vc2VyQ2xpZW50KiwgY29uc3QgV2ViQ29sb3ImKTsKICNlbmRpZgor
I2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNv
cmU6OkRhdGVUaW1lQ2hvb3Nlcj4gb3BlbkNhbGVuZGFyUGlja2VyUG9wdXAoV2ViQ29yZTo6RGF0
ZVRpbWVDaG9vc2VyQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6RGF0ZVRpbWVDaG9vc2VyUGFyYW1l
dGVycyYpIE9WRVJSSURFOworI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChX
ZWJDb3JlOjpGcmFtZSosIFBhc3NSZWZQdHI8V2ViQ29yZTo6RmlsZUNob29zZXI+KTsKICAgICB2
aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+Jiwg
V2ViQ29yZTo6RmlsZUljb25Mb2FkZXIqKTsKICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162152</attachid>
            <date>2012-09-04 20:35:15 -0700</date>
            <delta_ts>2012-09-04 21:41:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95681-20120905123456.patch</filename>
            <type>text/plain</type>
            <size>33426</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjFmNTRkMGM1NmJiNGMx
MzU0NmZlODI5MWZlZWQxMTZmMWRhYmUxNS4uMDI0N2UyMzgzNWUxMjQ1NDYyZGUzZDFkYmY2MWI5
OTU3ODk2NDQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA5LTA0ICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgUGFnZVBvcHVw
Q2xpZW50IHRvIFdlYktpdCBsYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTU2ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXZSBhcmUgbW92aW5nIGNhbGVuZGFyIHBpY2tlciBQYWdlUG9wdXBDbGll
bnQgdG8gV2ViS2l0IGxheWVyIHNvIHBvcnRzCisgICAgICAgIGNhbiB1c2UgdGhlaXIgcGxhdGZv
cm0gbmF0aXZlIGNob29zZXIgVUkgaWYgdGhleSBoYXZlIG9uZS4KKyAgICAgICAgRGF0ZVRpbWVD
aG9vc2VyLCBEYXRlVGltZUNob29zZXJDbGllbnQgZXRjLiB3aWxsIGJlIHJldXNlZCB3aGVuIHdl
CisgICAgICAgIGltcGxlbWVudCB0aGUgd2VlayBwaWNrZXIgYW5kIG1vbnRoIHBpY2tlci4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGJlaGF2aW9yIGNoYW5nZS4gQ292ZXJlZCBieSBleGlz
dGluZyBjYWxlbmRhciBwaWNrZXIgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6fkNhbGVuZGFyUGlja2Vy
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6Omhvc3RJ
bnB1dCk6IE1hZGUgY29uc3QuCisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1l
bnQ6OmRpZENob29zZVZhbHVlKTogQ2FsbGVkIHdoZW4gdXNlciBjaG9zZSBhIHZhbHVlLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6
OmRpZEVuZENob29zZXIpOiBDYWxsZWQgd2hlbiBjaG9vc2VyIGhhcyBlbmRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6b3BlblBvcHVwKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6Y2xvc2VQb3B1cCk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50Lmg6CisgICAgICAgIChDYWxlbmRhclBpY2tl
ckVsZW1lbnQpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6b3BlbkRhdGVU
aW1lQ2hvb3Nlcik6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAo
RW1wdHlDaHJvbWVDbGllbnQpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKENocm9tZUNsaWVudCk6CisgICAgICAgICogcGFnZS9Q
YWdlUG9wdXBDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQ2xpZW50Ojph
ZGRQcm9wZXJ0eSk6IEFkZHMgZG91YmxlIHZhbHVlIHByb3BlcnR5IHRvIEpTT04uCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VQb3B1cENsaWVudC5oOgorICAgICAgICAo
UGFnZVBvcHVwQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9EYXRlVGltZUNob29zZXIuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyk6
IENvbnRhaW5zIGluZm9ybWF0aW9uIG5lZWRlZCB0byBvcGVuIHRoZSBEYXRlVGltZUNob29zZXIu
CisgICAgICAgIChEYXRlVGltZUNob29zZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVD
aG9vc2VyOjp+RGF0ZVRpbWVDaG9vc2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EYXRlVGltZUNo
b29zZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRGF0ZVRpbWVDaG9v
c2VyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lQ2hvb3NlckNsaWVudDo6fkRh
dGVUaW1lQ2hvb3NlckNsaWVudCk6CisKIDIwMTItMDktMDQgIFNlcmdleSBHbGF6dW5vdiAgPHNl
cmcuZ2xhenVub3ZAZ21haWwuY29tPgogCiAgICAgICAgIEZyYW1lIGVsZW1lbnQgZG9lc24ndCBh
bHdheXMgdW5sb2FkIGl0cyBjaGlsZCBmcmFtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggZjIzNGU3YjE3ODEzY2EwMDE4ZWI1ZmZkZWE1ZTFjM2MxNTJmZTRhZC4uNTllMTcyMGEyOTE0
MzMwNzU1MWEzMjA5ZTQ5ODIzMjBkZWQ0ZTBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMSBAQAorMjAxMi0wOS0wNCAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFBhZ2VQb3B1cENsaWVudCB0byBXZWJLaXQgbGF5ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NjgxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQu
Z3lwOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6Om9wZW5EYXRlVGltZUNob29z
ZXIpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKENocm9tZUNsaWVudEltcGwpOgorICAgICAgICAqIHNyYy9EYXRlVGltZUNo
b29zZXJJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpEYXRlVGltZUNob29zZXJJbXBsOjpEYXRlVGltZUNob29zZXJJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6RGF0ZVRpbWVDaG9vc2VySW1wbDo6fkRhdGVUaW1lQ2hvb3NlckltcGwpOgorICAgICAg
ICAoV2ViS2l0OjpEYXRlVGltZUNob29zZXJJbXBsOjplbmRDaG9vc2VyKToKKyAgICAgICAgKFdl
YktpdDo6RGF0ZVRpbWVDaG9vc2VySW1wbDo6Y29udGVudFNpemUpOgorICAgICAgICAoV2ViS2l0
OjpEYXRlVGltZUNob29zZXJJbXBsOjp3cml0ZURvY3VtZW50KToKKyAgICAgICAgKFdlYktpdDo6
RGF0ZVRpbWVDaG9vc2VySW1wbDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKToKKyAgICAgICAgKFdl
YktpdDo6RGF0ZVRpbWVDaG9vc2VySW1wbDo6ZGlkQ2xvc2VQb3B1cCk6CisgICAgICAgICogc3Jj
L0RhdGVUaW1lQ2hvb3NlckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKERhdGVUaW1lQ2hvb3NlckltcGwpOgorCiAyMDEyLTA5LTA0ICBUaWVu
LVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFJl
bmFtZSBXZWJWaWV3Q2xpZW50OjpoYW5kbGVEaXNhbWJpZ3VhdGlvblBvcHVwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggM2UzNDc0MGY5NGQ0YWVlOTEyNGM5OThkZTA0Njk4ZTZhMDAxZDU4OC4uOGM4ODU4
ODgyMzdiZGI5NGNmYzRiMmVmYjc5ODcxMTY2OWYxZDE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MzM3LDYgKzMzNyw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9UaW1lci5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9UcmVlU2hhcmVkLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3Nlci5o
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9EYXRlVGltZUNob29zZXJDbGllbnQuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vVmlzaXRlZExpbmtTdHJhdGVneS5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9WaXNpdGVkTGlua3MuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vV2lkZ2V0Lmgn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxl
bWVudC5jcHAKaW5kZXggZjMyNDRkZTZiMGZkNzMwMWFkZGM4NzkxNjE0MmJjMDFhNTBjODhhMi4u
Njc1NWFiYjY0NzBmMWEyMzJjNGQ3M2QxMTM0YTBkNGJhN2IwZjViYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3BwCkBAIC0z
MywyMiArMzMsMTMgQEAKIAogI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCiAKLSNpbmNsdWRl
ICJDYWxlbmRhclBpY2tlci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9t
ZUNsaWVudC5oIgotI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiRXZlbnQu
aCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKLSNpbmNsdWRl
ICJMb2NhbGl6ZWREYXRlLmgiCi0jaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQaWNrZXJDb21tb24uaCIKICNpbmNsdWRlICJSZW5kZXJE
ZXRhaWxzTWFya2VyLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKLSNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CiAK
QEAgLTU4LDcgKzQ5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogaW5saW5lIENh
bGVuZGFyUGlja2VyRWxlbWVudDo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50KERvY3VtZW50KiBkb2N1
bWVudCkKICAgICA6IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgZG9jdW1lbnQpCi0gICAgLCBtX3Bv
cHVwKDApCisgICAgLCBtX2Nob29zZXIobnVsbHB0cikKIHsKICAgICBzZXRTaGFkb3dQc2V1ZG9J
ZCgiLXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yIik7CiB9CkBAIC03MSw3ICs2Miw3
IEBAIFBhc3NSZWZQdHI8Q2FsZW5kYXJQaWNrZXJFbGVtZW50PiBDYWxlbmRhclBpY2tlckVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lCiBDYWxlbmRhclBpY2tlckVsZW1lbnQ6On5DYWxl
bmRhclBpY2tlckVsZW1lbnQoKQogewogICAgIGNsb3NlUG9wdXAoKTsKLSAgICBBU1NFUlQoIW1f
cG9wdXApOworICAgIEFTU0VSVCghbV9jaG9vc2VyKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBDYWxl
bmRhclBpY2tlckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVu
ZGVyU3R5bGUqKQpAQCAtNzksNyArNzAsNyBAQCBSZW5kZXJPYmplY3QqIENhbGVuZGFyUGlja2Vy
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdAogICAg
IHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJEZXRhaWxzTWFya2VyKHRoaXMpOwogfQogCi1pbmxp
bmUgSFRNTElucHV0RWxlbWVudCogQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpob3N0SW5wdXQoKQor
aW5saW5lIEhUTUxJbnB1dEVsZW1lbnQqIENhbGVuZGFyUGlja2VyRWxlbWVudDo6aG9zdElucHV0
KCkgY29uc3QKIHsKICAgICAvLyBKYXZhU2NyaXB0IGNvZGUgY2FuJ3QgY3JlYXRlIENhbGVuZGFy
UGlja2VyRWxlbWVudCBvYmplY3RzLiBUaGlzIGlzCiAgICAgLy8gYWx3YXlzIGluIHNoYWRvdyBv
ZiA8aW5wdXQ+LgpAQCAtMTE0LDkgKzEwNSwxOSBAQCBib29sIENhbGVuZGFyUGlja2VyRWxlbWVu
dDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQogICAgIHJldHVybiBIVE1MRGl2RWxl
bWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKTsKIH0KIAordm9pZCBDYWxlbmRh
clBpY2tlckVsZW1lbnQ6OmRpZENob29zZVZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7Cisg
ICAgaG9zdElucHV0KCktPnNldFZhbHVlKHZhbHVlLCBEaXNwYXRjaENoYW5nZUV2ZW50KTsKK30K
Kwordm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRpZEVuZENob29zZXIoKQoreworICAgIG1f
Y2hvb3Nlci5jbGVhcigpOworfQorCiB2b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6b3BlblBv
cHVwKCkKIHsKLSAgICBpZiAobV9wb3B1cCkKKyAgICBpZiAobV9jaG9vc2VyKQogICAgICAgICBy
ZXR1cm47CiAgICAgaWYgKCFkb2N1bWVudCgpLT5wYWdlKCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTEyNSwyMCArMTI2LDMwIEBAIHZvaWQgQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjpvcGVuUG9wdXAo
KQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFkb2N1bWVudCgpLT52aWV3KCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBJbnRSZWN0IGVsZW1lbnRSZWN0SW5Sb290VmlldyA9IGRvY3VtZW50KCkt
PnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGhvc3RJbnB1dCgpLT5nZXRQaXhlbFNuYXBwZWRS
ZWN0KCkpOwotICAgIG1fcG9wdXAgPSBjaHJvbWUtPmNsaWVudCgpLT5vcGVuUGFnZVBvcHVwKHRo
aXMsIGVsZW1lbnRSZWN0SW5Sb290Vmlldyk7CisKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dCA9IGhvc3RJbnB1dCgpOworICAgIERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMgcGFyYW1ldGVy
czsKKyAgICBwYXJhbWV0ZXJzLnR5cGUgPSBpbnB1dC0+dHlwZSgpOworICAgIHBhcmFtZXRlcnMu
bWluaW11bSA9IGlucHV0LT5taW5pbXVtKCk7CisgICAgcGFyYW1ldGVycy5tYXhpbXVtID0gaW5w
dXQtPm1heGltdW0oKTsKKyAgICBwYXJhbWV0ZXJzLnJlcXVpcmVkID0gaW5wdXQtPnJlcXVpcmVk
KCk7CisgICAgRGVjaW1hbCBzdGVwOworICAgIGlmIChob3N0SW5wdXQoKS0+Z2V0QWxsb3dlZFZh
bHVlU3RlcCgmc3RlcCkpCisgICAgICAgIHBhcmFtZXRlcnMuc3RlcCA9IDEuMDsKKyAgICBlbHNl
CisgICAgICAgIHBhcmFtZXRlcnMuc3RlcCA9IHN0ZXAudG9Eb3VibGUoKTsKKyAgICBwYXJhbWV0
ZXJzLmFuY2hvclJlY3RJblJvb3RWaWV3ID0gZG9jdW1lbnQoKS0+dmlldygpLT5jb250ZW50c1Rv
Um9vdFZpZXcoaG9zdElucHV0KCktPmdldFBpeGVsU25hcHBlZFJlY3QoKSk7CisgICAgcGFyYW1l
dGVycy5jdXJyZW50VmFsdWUgPSBpbnB1dC0+dmFsdWUoKTsKKyAgICBwYXJhbWV0ZXJzLnN1Z2dl
c3Rpb25WYWx1ZXMgPSBWZWN0b3I8U3RyaW5nPigpOworICAgIHBhcmFtZXRlcnMuc3VnZ2VzdGlv
bkxhYmVscyA9IFZlY3RvcjxTdHJpbmc+KCk7CisgICAgbV9jaG9vc2VyID0gY2hyb21lLT5jbGll
bnQoKS0+b3BlbkRhdGVUaW1lQ2hvb3Nlcih0aGlzLCBwYXJhbWV0ZXJzKTsKIH0KIAogdm9pZCBD
YWxlbmRhclBpY2tlckVsZW1lbnQ6OmNsb3NlUG9wdXAoKQogewotICAgIGlmICghbV9wb3B1cCkK
LSAgICAgICAgcmV0dXJuOwotICAgIGlmICghZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgIGlmICgh
bV9jaG9vc2VyKQogICAgICAgICByZXR1cm47Ci0gICAgQ2hyb21lKiBjaHJvbWUgPSBkb2N1bWVu
dCgpLT5wYWdlKCktPmNocm9tZSgpOwotICAgIGlmICghY2hyb21lKQotICAgICAgICByZXR1cm47
Ci0gICAgY2hyb21lLT5jbGllbnQoKS0+Y2xvc2VQYWdlUG9wdXAobV9wb3B1cCk7CisgICAgbV9j
aG9vc2VyLT5lbmRDaG9vc2VyKCk7CiB9CiAKIHZvaWQgQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpk
ZXRhY2goKQpAQCAtMTQ3LDY3ICsxNTgsNiBAQCB2b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6
ZGV0YWNoKCkKICAgICBIVE1MRGl2RWxlbWVudDo6ZGV0YWNoKCk7CiB9CiAKLUludFNpemUgQ2Fs
ZW5kYXJQaWNrZXJFbGVtZW50Ojpjb250ZW50U2l6ZSgpCi17Ci0gICAgcmV0dXJuIEludFNpemUo
MCwgMCk7Ci19Ci0KLXZvaWQgQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojp3cml0ZURvY3VtZW50KERv
Y3VtZW50V3JpdGVyJiB3cml0ZXIpCi17Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBo
b3N0SW5wdXQoKTsKLSAgICBEYXRlQ29tcG9uZW50cyBkYXRlOwotICAgIGRhdGUuc2V0TWlsbGlz
ZWNvbmRzU2luY2VFcG9jaEZvckRhdGUoaW5wdXQtPm1pbmltdW0oKSk7Ci0gICAgU3RyaW5nIG1p
blN0cmluZyA9IGRhdGUudG9TdHJpbmcoKTsKLSAgICBkYXRlLnNldE1pbGxpc2Vjb25kc1NpbmNl
RXBvY2hGb3JEYXRlKGlucHV0LT5tYXhpbXVtKCkpOwotICAgIFN0cmluZyBtYXhTdHJpbmcgPSBk
YXRlLnRvU3RyaW5nKCk7Ci0gICAgRGVjaW1hbCBzdGVwOwotICAgIFN0cmluZyBzdGVwU3RyaW5n
ID0gaW5wdXQtPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpOwotICAgIGlmIChzdGVwU3RyaW5n
LmlzRW1wdHkoKSB8fCAhaW5wdXQtPmdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApKQotICAgICAg
ICBzdGVwU3RyaW5nID0gIjEiOwotCi0gICAgYWRkU3RyaW5nKCI8IURPQ1RZUEUgaHRtbD48aGVh
ZD48bWV0YSBjaGFyc2V0PSdVVEYtOCc+PHN0eWxlPlxuIiwgd3JpdGVyKTsKLSAgICB3cml0ZXIu
YWRkRGF0YShwaWNrZXJDb21tb25Dc3MsIHNpemVvZihwaWNrZXJDb21tb25Dc3MpKTsKLSAgICB3
cml0ZXIuYWRkRGF0YShjYWxlbmRhclBpY2tlckNzcywgc2l6ZW9mKGNhbGVuZGFyUGlja2VyQ3Nz
KSk7Ci0gICAgaWYgKGRvY3VtZW50KCktPnBhZ2UoKSkgewotICAgICAgICBDU3RyaW5nIGV4dHJh
U3R5bGUgPSBkb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCktPmV4dHJhQ2FsZW5kYXJQaWNrZXJT
dHlsZVNoZWV0KCk7Ci0gICAgICAgIGlmIChleHRyYVN0eWxlLmxlbmd0aCgpKQotICAgICAgICAg
ICAgd3JpdGVyLmFkZERhdGEoZXh0cmFTdHlsZS5kYXRhKCksIGV4dHJhU3R5bGUubGVuZ3RoKCkp
OwotICAgIH0KLSAgICBhZGRTdHJpbmcoIjwvc3R5bGU+PC9oZWFkPjxib2R5PjxkaXYgaWQ9bWFp
bj5Mb2FkaW5nLi4uPC9kaXY+PHNjcmlwdD5cbiIKLSAgICAgICAgICAgICAgICJ3aW5kb3cuZGlh
bG9nQXJndW1lbnRzID0ge1xuIiwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgibWluIiwgbWlu
U3RyaW5nLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJtYXgiLCBtYXhTdHJpbmcsIHdyaXRl
cik7Ci0gICAgYWRkUHJvcGVydHkoInN0ZXAiLCBzdGVwU3RyaW5nLCB3cml0ZXIpOwotICAgIGFk
ZFByb3BlcnR5KCJyZXF1aXJlZCIsIGlucHV0LT5yZXF1aXJlZCgpLCB3cml0ZXIpOwotICAgIGFk
ZFByb3BlcnR5KCJjdXJyZW50VmFsdWUiLCBpbnB1dC0+dmFsdWUoKSwgd3JpdGVyKTsKLSAgICBh
ZGRQcm9wZXJ0eSgibG9jYWxlIiwgZGVmYXVsdExhbmd1YWdlKCksIHdyaXRlcik7Ci0gICAgYWRk
UHJvcGVydHkoInRvZGF5TGFiZWwiLCBjYWxlbmRhclRvZGF5VGV4dCgpLCB3cml0ZXIpOwotICAg
IGFkZFByb3BlcnR5KCJjbGVhckxhYmVsIiwgY2FsZW5kYXJDbGVhclRleHQoKSwgd3JpdGVyKTsK
LSAgICBhZGRQcm9wZXJ0eSgid2Vla1N0YXJ0RGF5IiwgZmlyc3REYXlPZldlZWsoKSwgd3JpdGVy
KTsKLSAgICBhZGRQcm9wZXJ0eSgibW9udGhMYWJlbHMiLCBtb250aExhYmVscygpLCB3cml0ZXIp
OwotICAgIGFkZFByb3BlcnR5KCJkYXlMYWJlbHMiLCB3ZWVrRGF5U2hvcnRMYWJlbHMoKSwgd3Jp
dGVyKTsKLSAgICBEaXJlY3Rpb24gZGlyID0gZGlyZWN0aW9uKG1vbnRoTGFiZWxzKClbMF1bMF0p
OwotICAgIGFkZFByb3BlcnR5KCJpc1JUTCIsIGRpciA9PSBSaWdodFRvTGVmdCB8fCBkaXIgPT0g
UmlnaHRUb0xlZnRBcmFiaWMsIHdyaXRlcik7Ci0gICAgYWRkU3RyaW5nKCJ9XG4iLCB3cml0ZXIp
OwotCi0gICAgd3JpdGVyLmFkZERhdGEocGlja2VyQ29tbW9uSnMsIHNpemVvZihwaWNrZXJDb21t
b25KcykpOwotICAgIHdyaXRlci5hZGREYXRhKGNhbGVuZGFyUGlja2VySnMsIHNpemVvZihjYWxl
bmRhclBpY2tlckpzKSk7Ci0gICAgYWRkU3RyaW5nKCI8L3NjcmlwdD48L2JvZHk+XG4iLCB3cml0
ZXIpOwotfQotCi12b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6c2V0VmFsdWVBbmRDbG9zZVBv
cHVwKGludCBudW1WYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSkKLXsKLSAgICBBU1NF
UlQobV9wb3B1cCk7Ci0gICAgY2xvc2VQb3B1cCgpOwotICAgIGlmIChudW1WYWx1ZSA+PSAwKQot
ICAgICAgICBob3N0SW5wdXQoKS0+c2V0VmFsdWUoc3RyaW5nVmFsdWUsIERpc3BhdGNoQ2hhbmdl
RXZlbnQpOwotfQotCi12b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6ZGlkQ2xvc2VQb3B1cCgp
Ci17Ci0gICAgbV9wb3B1cCA9IDA7Ci19Ci0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5oCmluZGV4IGNiZjIxM2Zj
NWZjYjNlMzVmMWQ2YmRmMTJlZjgxMjdlYjIzOWUzODcuLmQ3M2IwZjEwMmZhNDcwOTBlYjE5ODk3
ZjM1MDJlZDU3ZTQxYzUyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0NhbGVuZGFyUGlja2VyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0NhbGVuZGFyUGlja2VyRWxlbWVudC5oCkBAIC0zMiwxNSArMzIsMTggQEAKICNkZWZpbmUgQ2Fs
ZW5kYXJQaWNrZXJFbGVtZW50X2gKIAogI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisjaW5j
bHVkZSAiRGF0ZVRpbWVDaG9vc2VyLmgiCisjaW5jbHVkZSAiRGF0ZVRpbWVDaG9vc2VyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKLSNpbmNsdWRlICJQYWdlUG9wdXBDbGll
bnQuaCIKKworI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OwogY2xhc3MgUGFnZVBvcHVwOwogCi1jbGFzcyBDYWxl
bmRhclBpY2tlckVsZW1lbnQgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQsIHB1YmxpYyBQYWdlUG9w
dXBDbGllbnQgeworY2xhc3MgQ2FsZW5kYXJQaWNrZXJFbGVtZW50IDogcHVibGljIEhUTUxEaXZF
bGVtZW50LCBwdWJsaWMgRGF0ZVRpbWVDaG9vc2VyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDYWxlbmRhclBpY2tlckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwog
ICAgIHZpcnR1YWwgfkNhbGVuZGFyUGlja2VyRWxlbWVudCgpOwpAQCAtNDgsMjEgKzUxLDE5IEBA
IHB1YmxpYzoKICAgICB2b2lkIGNsb3NlUG9wdXAoKTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJl
c3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERTsKIAorICAgIC8vIENvbG9yQ2hvb3Nl
ckNsaWVudCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlVmFsdWUo
Y29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZEVuZENob29zZXIo
KSBPVkVSUklERTsKKwogcHJpdmF0ZToKICAgICBDYWxlbmRhclBpY2tlckVsZW1lbnQoRG9jdW1l
bnQqKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqLCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZl
bnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpIE9W
RVJSSURFOwogCi0gICAgLy8gUGFnZVBvcHVwQ2xpZW50IGZ1bmN0aW9uczoKLSAgICB2aXJ0dWFs
IEludFNpemUgY29udGVudFNpemUoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVE
b2N1bWVudChEb2N1bWVudFdyaXRlciYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRW
YWx1ZUFuZENsb3NlUG9wdXAoaW50LCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2xvc2VQb3B1cCgpIE9WRVJSSURFOwotCi0gICAgSFRNTElucHV0RWxlbWVu
dCogaG9zdElucHV0KCk7CisgICAgSFRNTElucHV0RWxlbWVudCogaG9zdElucHV0KCkgY29uc3Q7
CiAKLSAgICBQYWdlUG9wdXAqIG1fcG9wdXA7CisgICAgT3duUHRyPERhdGVUaW1lQ2hvb3Nlcj4g
bV9jaG9vc2VyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApp
bmRleCBkOGJjMDZmMzM2ZWI0MDBlMjJkMWVkNjYzYjQ0YWM4ZWI0YWMxYTQ4Li40MjRkM2ZjZWYw
MGVhYmNhMTk0Mjg0YjA4MmRjODZhNzdkMjhmNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmNwcApAQCAtMzksNiArMzksMTAgQEAKICNpbmNsdWRlICJDb2xvckNob29zZXIu
aCIKICNlbmRpZgogCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKKyNpbmNsdWRlICJEYXRl
VGltZUNob29zZXIuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKSAKICNpbmNs
dWRlICJJbnRlbnRSZXF1ZXN0LmgiIAogI2VuZGlmIApAQCAtMTAzLDYgKzEwNywxMyBAQCBQYXNz
T3duUHRyPENvbG9yQ2hvb3Nlcj4gRW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3Nl
cihDb2xvckNob29zZXJDbGllbgogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElD
S0VSKQorUGFzc093blB0cjxEYXRlVGltZUNob29zZXI+IEVtcHR5Q2hyb21lQ2xpZW50OjpvcGVu
RGF0ZVRpbWVDaG9vc2VyKERhdGVUaW1lQ2hvb3NlckNsaWVudCosIGNvbnN0IERhdGVUaW1lQ2hv
b3NlclBhcmFtZXRlcnMmKQoreworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKIHZv
aWQgRW1wdHlDaHJvbWVDbGllbnQ6OnJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8Rmls
ZUNob29zZXI+KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IGEw
Mjc5OTdmZjdmOTUzZDIyNTkyMDVkOGFiNmZiYzUzNzlhZTA5NTUuLmZiZGEyZjYwMDY1ZDc4MDY5
NDU1ODRkOWI2MDI5MTRiNGE1MTc2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmgKQEAgLTE3Miw2ICsxNzIsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxD
b2xvckNob29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqLCBjb25z
dCBDb2xvciYpIE9WRVJSSURFOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VS
KQorICAgIHZpcnR1YWwgUGFzc093blB0cjxEYXRlVGltZUNob29zZXI+IG9wZW5EYXRlVGltZUNo
b29zZXIoRGF0ZVRpbWVDaG9vc2VyQ2xpZW50KiwgY29uc3QgRGF0ZVRpbWVDaG9vc2VyUGFyYW1l
dGVycyYpIE9WRVJSSURFOworI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVs
KEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUljb25Mb2Fk
ZXIqKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZGQ2YWZjZmUxY2Rm
ZThiMTc2ZmI2OThlYmUzNjE3MDJkZGMwODg5MS4uYjkxZDY1YjRkNjY0NTI1OTczNjA3MDE4NjI3
YzYzMTdhYzgwMTZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC04Miw2ICs4
MiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ29sb3JDaG9vc2VyQ2xpZW50
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKSAgICAKKyAgICBjbGFzcyBE
YXRlVGltZUNob29zZXI7CisgICAgY2xhc3MgRGF0ZVRpbWVDaG9vc2VyQ2xpZW50OworICAgIHN0
cnVjdCBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzOworI2VuZGlmCisKICNpZiBQTEFURk9STShX
SU4pICYmIFVTRShBVkZPVU5EQVRJT04pCiAgICAgc3RydWN0IEdyYXBoaWNzRGV2aWNlQWRhcHRl
cjsKICNlbmRpZgpAQCAtMjIyLDYgKzIyOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgUGFzc093blB0cjxDb2xvckNob29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3NlcihD
b2xvckNob29zZXJDbGllbnQqLCBjb25zdCBDb2xvciYpID0gMDsKICNlbmRpZgogCisjaWYgRU5B
QkxFKENBTEVOREFSX1BJQ0tFUikKKyAgICAgICAgdmlydHVhbCBQYXNzT3duUHRyPERhdGVUaW1l
Q2hvb3Nlcj4gb3BlbkRhdGVUaW1lQ2hvb3NlcihEYXRlVGltZUNob29zZXJDbGllbnQqLCBjb25z
dCBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzJikgPSAwOworI2VuZGlmCisKICAgICAgICAgdmly
dHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSA9
IDA7CiAgICAgICAgIC8vIEFzeW5jaHJvbm91cyByZXF1ZXN0IHRvIGxvYWQgYW4gaWNvbiBmb3Ig
c3BlY2lmaWVkIGZpbGVuYW1lcy4KICAgICAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRm9yRmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlSWNvbkxvYWRlciopID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVBvcHVwQ2xpZW50LmNwcAppbmRleCA1YjY2NmVhNDU5NWJkNmY2Yjc2MjFm
Mjg2YjEzMjYxY2YzY2MxY2M1Li4zMDFkMWVmM2EwNzY2NzM3MGNmZGFkNGI4ZGFhZTM1N2E5NTg4
YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUG9wdXBDbGllbnQuY3BwCkBAIC02OSw2ICs2
OSwxNCBAQCB2b2lkIFBhZ2VQb3B1cENsaWVudDo6YWRkUHJvcGVydHkoY29uc3QgY2hhciogbmFt
ZSwgdW5zaWduZWQgdmFsdWUsIERvY3VtZW50V3JpdAogICAgIGFkZExpdGVyYWwoIixcbiIsIHdy
aXRlcik7CiB9CiAKK3ZvaWQgUGFnZVBvcHVwQ2xpZW50OjphZGRQcm9wZXJ0eShjb25zdCBjaGFy
KiBuYW1lLCBkb3VibGUgdmFsdWUsIERvY3VtZW50V3JpdGVyJiB3cml0ZXIpCit7CisgICAgd3Jp
dGVyLmFkZERhdGEobmFtZSwgc3RybGVuKG5hbWUpKTsKKyAgICBhZGRMaXRlcmFsKCI6ICIsIHdy
aXRlcik7CisgICAgYWRkU3RyaW5nKFN0cmluZzo6bnVtYmVyKHZhbHVlKSwgd3JpdGVyKTsKKyAg
ICBhZGRMaXRlcmFsKCIsXG4iLCB3cml0ZXIpOworfQorCiB2b2lkIFBhZ2VQb3B1cENsaWVudDo6
YWRkUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSwgYm9vbCB2YWx1ZSwgRG9jdW1lbnRXcml0ZXIm
IHdyaXRlcikKIHsKICAgICB3cml0ZXIuYWRkRGF0YShuYW1lLCBzdHJsZW4obmFtZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUG9wdXBDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ2xpZW50LmgKaW5kZXggMDJhZWUzMjI1NmNkYWZhOTZlMTZk
NGUzZmI0OGQ0Zjg2ZjMwYTNlMC4uODM5YjQyZWNmNjEzZTViM2RiMTY4ODJkZDFlMTYxODJlYjBk
OGRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUG9wdXBDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENsaWVudC5oCkBAIC02Niw2ICs2Niw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBhZGRKYXZhU2NyaXB0U3RyaW5nKGNvbnN0IFN0
cmluZyYsIERvY3VtZW50V3JpdGVyJik7CiAgICAgc3RhdGljIHZvaWQgYWRkUHJvcGVydHkoY29u
c3QgY2hhciogbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRG9jdW1lbnRXcml0ZXImKTsKICAg
ICBzdGF0aWMgdm9pZCBhZGRQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLCB1bnNpZ25lZCB2YWx1
ZSwgRG9jdW1lbnRXcml0ZXImKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRQcm9wZXJ0eShjb25zdCBj
aGFyKiBuYW1lLCBkb3VibGUgdmFsdWUsIERvY3VtZW50V3JpdGVyJik7CiAgICAgc3RhdGljIHZv
aWQgYWRkUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSwgYm9vbCB2YWx1ZSwgRG9jdW1lbnRXcml0
ZXImKTsKICAgICBzdGF0aWMgdm9pZCBhZGRQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdmFsdWVzLCBEb2N1bWVudFdyaXRlciYpOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3Nlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRGF0ZVRpbWVDaG9vc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI0M2EzMDgxYTg0
N2Y4ZGQwZDU5NmMyODMwOWRkNzFjNTJkODljNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3Nlci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IERhdGVUaW1lQ2hvb3Nlcl9oCisjZGVmaW5lIERhdGVUaW1lQ2hvb3Nlcl9oCisKKyNpbmNsdWRl
ICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RydWN0IERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMgeworICAgIEF0
b21pY1N0cmluZyB0eXBlOworICAgIEludFJlY3QgYW5jaG9yUmVjdEluUm9vdFZpZXc7CisgICAg
U3RyaW5nIGN1cnJlbnRWYWx1ZTsKKyAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uVmFsdWVz
OworICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25MYWJlbHM7CisgICAgZG91YmxlIG1pbmlt
dW07CisgICAgZG91YmxlIG1heGltdW07CisgICAgZG91YmxlIHN0ZXA7CisgICAgYm9vbCByZXF1
aXJlZDsKK307CisKKy8vIEZvciBwaWNrZXJzIGxpa2UgY29sb3IgcGlja2VycyBhbmQgZGF0ZSBw
aWNrZXJzLgorY2xhc3MgRGF0ZVRpbWVDaG9vc2VyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5E
YXRlVGltZUNob29zZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBlbmRDaG9vc2VyKCkgPSAw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRGF0ZVRpbWVDaG9v
c2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3Nl
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZVRpbWVDaG9vc2VyQ2xpZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTg1M2VhN2EwMzI0MzI1YWZjZTY0MjYxYmVjNzY2MGYxYTFkMzAxNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3Nl
ckNsaWVudC5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERhdGVUaW1lQ2hvb3NlckNsaWVudF9o
CisjZGVmaW5lIERhdGVUaW1lQ2hvb3NlckNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRGF0ZVRpbWVDaG9vc2VyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5E
YXRlVGltZUNob29zZXJDbGllbnQoKSB7IH0KKworICAgIC8vIENhbGxlZCB3aGVuIHVzZXIgcGlj
a2VkIGEgdmFsdWUuCisgICAgdmlydHVhbCB2b2lkIGRpZENob29zZVZhbHVlKGNvbnN0IFN0cmlu
ZyYpID0gMDsKKyAgICAvLyBDYWxsZWQgd2hlbiBjaG9vc2VyIGhhcyBlbmRlZC4KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkRW5kQ2hvb3NlcigpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIERhdGVUaW1lQ2hvb3NlckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAKaW5kZXggYjk4NGFmYzg2M2U2ZWU1YTQyZGRlNzI0YmNlZTYwM2Q2YmI0NWMzZC4u
ZDc5NTMyZWVhZGY2NTNkZmNjNWM2OTU3Y2EyZjhhNjk5YjlhZDFjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cApAQCAtMzU4LDYgKzM1OCw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9C
YXR0ZXJ5Q2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0Jsb2JSZWdpc3RyeVBy
b3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9CbG9iUmVnaXN0cnlQcm94eS5oJywKKyAg
ICAgICAgICAgICAgICAnc3JjL0RhdGVUaW1lQ2hvb3NlckltcGwuY3BwJywKKyAgICAgICAgICAg
ICAgICAnc3JjL0RhdGVUaW1lQ2hvb3NlckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvQ2hyb21pdW1DdXJyZW50VGltZS5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRl
eCBkYzVhZmM4ODY1NWEyODU0OTk1M2I2NWIwNGU2OWNhZWY1ZWZkNGYwLi5kYTEwOTk4YTM2OTlk
NGUzNGFmZDc2Mzg0MTlmMjc2OTllYWE0NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtMzksOSArMzksMTUgQEAKICNpbmNsdWRl
ICJDb2xvckNob29zZXJDbGllbnQuaCIKICNpbmNsdWRlICJDb2xvckNob29zZXJVSUNvbnRyb2xs
ZXIuaCIKICNlbmRpZgorI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisjaW5jbHVkZSAiRGF0
ZVRpbWVDaG9vc2VySW1wbC5oIgorI2VuZGlmCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1
ZGUgIkN1cnNvci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2lmIEVOQUJMRShD
QUxFTkRBUl9QSUNLRVIpCisjaW5jbHVkZSAiRGF0ZVRpbWVDaG9vc2VyLmgiCisjZW5kaWYKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRXh0ZXJuYWxQb3B1cE1lbnUuaCIKQEAgLTcwNCw2ICs3MTAsMTMgQEAgUGFzc093blB0cjxX
ZWJDb2xvckNob29zZXI+IENocm9tZUNsaWVudEltcGw6OmNyZWF0ZVdlYkNvbG9yQ2hvb3NlcihX
ZWJDb2xvckNob28KIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKK1Bh
c3NPd25QdHI8V2ViQ29yZTo6RGF0ZVRpbWVDaG9vc2VyPiBDaHJvbWVDbGllbnRJbXBsOjpvcGVu
RGF0ZVRpbWVDaG9vc2VyKFdlYkNvcmU6OkRhdGVUaW1lQ2hvb3NlckNsaWVudCogcGlja2VyQ2xp
ZW50LCBjb25zdCBXZWJDb3JlOjpEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGF0ZVRpbWVDaG9vc2VySW1wbCh0aGlzLCBw
aWNrZXJDbGllbnQsIHBhcmFtZXRlcnMpKTsKK30KKyNlbmRpZgorCiB2b2lkIENocm9tZUNsaWVu
dEltcGw6OnJ1bk9wZW5QYW5lbChGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+
IGZpbGVDaG9vc2VyKQogewogICAgIFdlYlZpZXdDbGllbnQqIGNsaWVudCA9IG1fd2ViVmlldy0+
Y2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBs
LmgKaW5kZXggNjJiMzk5ODg2YmJjNDJjY2M3NzI0MWJjN2UzOWJiODE4NzZkMDU5MS4uN2Q0NTZm
YmY1MzBjNDk2NTYyOGIyNTk3OWMyYTQ2MTBmYmRiYzcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaApAQCAtNTAsNiArNTAsOCBAQCBjbGFzcyBQ
b3B1cENvbnRhaW5lcjsKIGNsYXNzIFBvcHVwTWVudUNsaWVudDsKIGNsYXNzIFJlbmRlckJveDsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgRGF0ZVRpbWVDaG9vc2VyOworY2xhc3MgRGF0
ZVRpbWVDaG9vc2VyQ2xpZW50Owogc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwogfQogCkBAIC0xNDQs
NiArMTQ2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpDb2xv
ckNob29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3NlcihXZWJDb3JlOjpDb2xvckNob29zZXJDbGllbnQq
LCBjb25zdCBXZWJDb3JlOjpDb2xvciYpIE9WRVJSSURFOwogICAgIFBhc3NPd25QdHI8V2ViQ29s
b3JDaG9vc2VyPiBjcmVhdGVXZWJDb2xvckNob29zZXIoV2ViQ29sb3JDaG9vc2VyQ2xpZW50Kiwg
Y29uc3QgV2ViQ29sb3ImKTsKICNlbmRpZgorI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisg
ICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkRhdGVUaW1lQ2hvb3Nlcj4gb3BlbkRhdGVU
aW1lQ2hvb3NlcihXZWJDb3JlOjpEYXRlVGltZUNob29zZXJDbGllbnQqLCBjb25zdCBXZWJDb3Jl
OjpEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzJikgT1ZFUlJJREU7CisjZW5kaWYKICAgICB2aXJ0
dWFsIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1lKiwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpGaWxlQ2hvb3Nlcj4pOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0
IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBXZWJDb3JlOjpGaWxlSWNvbkxvYWRlciopOwogI2lmIEVO
QUJMRShESVJFQ1RPUllfVVBMT0FEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRGF0ZVRpbWVDaG9vc2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9EYXRlVGltZUNob29zZXJJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzM4YzY1OTJkZDBiZjBkZDE5
NTI5NTk2ZGIwNWZiNzRiYTliYTRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRGF0ZVRpbWVDaG9vc2VySW1wbC5jcHAKQEAgLTAsMCArMSwxMzEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGF0ZVRpbWVDaG9vc2VySW1wbC5oIgorCisjaWYg
RU5BQkxFKENBTEVOREFSX1BJQ0tFUikKKworI2luY2x1ZGUgIkNhbGVuZGFyUGlja2VyLmgiCisj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgi
CisjaW5jbHVkZSAiRGF0ZVRpbWVDaG9vc2VyQ2xpZW50LmgiCisjaW5jbHVkZSAiTGFuZ3VhZ2Uu
aCIKKyNpbmNsdWRlICJMb2NhbGl6ZWREYXRlLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKKyNpbmNsdWRlICJQaWNrZXJDb21tb24uaCIKKyNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgor
I2luY2x1ZGUgInBsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgPHB1
YmxpYy9XZWJMb2NhbGl6ZWRTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29k
ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0RhdGVUaW1lQ2hvb3NlckltcGw6OkRhdGVUaW1l
Q2hvb3NlckltcGwoQ2hyb21lQ2xpZW50SW1wbCogY2hyb21lQ2xpZW50LCBXZWJDb3JlOjpEYXRl
VGltZUNob29zZXJDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6RGF0ZVRpbWVDaG9vc2Vy
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKKyAgICA6IG1fY2hyb21lQ2xpZW50KGNocm9tZUNsaWVu
dCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fcG9wdXAoMCkKKyAgICAsIG1fcGFy
YW1ldGVycyhwYXJhbWV0ZXJzKQoreworICAgIEFTU0VSVChtX2Nocm9tZUNsaWVudCk7CisgICAg
QVNTRVJUKG1fY2xpZW50KTsKKyAgICBtX3BvcHVwID0gbV9jaHJvbWVDbGllbnQtPm9wZW5QYWdl
UG9wdXAodGhpcywgbV9wYXJhbWV0ZXJzLmFuY2hvclJlY3RJblJvb3RWaWV3KTsKK30KKworRGF0
ZVRpbWVDaG9vc2VySW1wbDo6fkRhdGVUaW1lQ2hvb3NlckltcGwoKQoreworfQorCit2b2lkIERh
dGVUaW1lQ2hvb3NlckltcGw6OmVuZENob29zZXIoKQoreworICAgIGlmICghbV9wb3B1cCkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fY2hyb21lQ2xpZW50LT5jbG9zZVBhZ2VQb3B1cChtX3BvcHVw
KTsKK30KKworV2ViQ29yZTo6SW50U2l6ZSBEYXRlVGltZUNob29zZXJJbXBsOjpjb250ZW50U2l6
ZSgpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OkludFNpemUoMCwgMCk7Cit9CisKK3ZvaWQgRGF0
ZVRpbWVDaG9vc2VySW1wbDo6d3JpdGVEb2N1bWVudChXZWJDb3JlOjpEb2N1bWVudFdyaXRlciYg
d3JpdGVyKQoreworICAgIFdlYkNvcmU6OkRhdGVDb21wb25lbnRzIGRhdGU7CisgICAgZGF0ZS5z
ZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZShtX3BhcmFtZXRlcnMubWluaW11bSk7Cisg
ICAgU3RyaW5nIG1pblN0cmluZyA9IGRhdGUudG9TdHJpbmcoKTsKKyAgICBkYXRlLnNldE1pbGxp
c2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlKG1fcGFyYW1ldGVycy5tYXhpbXVtKTsKKyAgICBTdHJp
bmcgbWF4U3RyaW5nID0gZGF0ZS50b1N0cmluZygpOworICAgIGRvdWJsZSBzdGVwID0gbV9wYXJh
bWV0ZXJzLnN0ZXA7CisKKyAgICBhZGRTdHJpbmcoIjwhRE9DVFlQRSBodG1sPjxoZWFkPjxtZXRh
IGNoYXJzZXQ9J1VURi04Jz48c3R5bGU+XG4iLCB3cml0ZXIpOworICAgIHdyaXRlci5hZGREYXRh
KFdlYkNvcmU6OnBpY2tlckNvbW1vbkNzcywgc2l6ZW9mKFdlYkNvcmU6OnBpY2tlckNvbW1vbkNz
cykpOworICAgIHdyaXRlci5hZGREYXRhKFdlYkNvcmU6OmNhbGVuZGFyUGlja2VyQ3NzLCBzaXpl
b2YoV2ViQ29yZTo6Y2FsZW5kYXJQaWNrZXJDc3MpKTsKKyAgICBDU3RyaW5nIGV4dHJhU3R5bGUg
PSBXZWJDb3JlOjpSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPmV4dHJhQ2FsZW5kYXJQaWNr
ZXJTdHlsZVNoZWV0KCk7CisgICAgaWYgKGV4dHJhU3R5bGUubGVuZ3RoKCkpCisgICAgICAgIHdy
aXRlci5hZGREYXRhKGV4dHJhU3R5bGUuZGF0YSgpLCBleHRyYVN0eWxlLmxlbmd0aCgpKTsKKyAg
ICBhZGRTdHJpbmcoIjwvc3R5bGU+PC9oZWFkPjxib2R5PjxkaXYgaWQ9bWFpbj5Mb2FkaW5nLi4u
PC9kaXY+PHNjcmlwdD5cbiIKKyAgICAgICAgICAgICAgICJ3aW5kb3cuZGlhbG9nQXJndW1lbnRz
ID0ge1xuIiwgd3JpdGVyKTsKKyAgICBhZGRQcm9wZXJ0eSgibWluIiwgbWluU3RyaW5nLCB3cml0
ZXIpOworICAgIGFkZFByb3BlcnR5KCJtYXgiLCBtYXhTdHJpbmcsIHdyaXRlcik7CisgICAgYWRk
UHJvcGVydHkoInN0ZXAiLCBzdGVwLCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5KCJyZXF1aXJl
ZCIsIG1fcGFyYW1ldGVycy5yZXF1aXJlZCwgd3JpdGVyKTsKKyAgICBhZGRQcm9wZXJ0eSgiY3Vy
cmVudFZhbHVlIiwgbV9wYXJhbWV0ZXJzLmN1cnJlbnRWYWx1ZSwgd3JpdGVyKTsKKyAgICBhZGRQ
cm9wZXJ0eSgibG9jYWxlIiwgV2ViQ29yZTo6ZGVmYXVsdExhbmd1YWdlKCksIHdyaXRlcik7Cisg
ICAgV2ViQ29yZTo6UGFnZVBvcHVwQ2xpZW50OjphZGRQcm9wZXJ0eSgidG9kYXlMYWJlbCIsIFBs
YXRmb3JtOjpjdXJyZW50KCktPnF1ZXJ5TG9jYWxpemVkU3RyaW5nKFdlYkxvY2FsaXplZFN0cmlu
Zzo6Q2FsZW5kYXJUb2RheSksIHdyaXRlcik7CisgICAgV2ViQ29yZTo6UGFnZVBvcHVwQ2xpZW50
OjphZGRQcm9wZXJ0eSgiY2xlYXJMYWJlbCIsIFBsYXRmb3JtOjpjdXJyZW50KCktPnF1ZXJ5TG9j
YWxpemVkU3RyaW5nKFdlYkxvY2FsaXplZFN0cmluZzo6Q2FsZW5kYXJDbGVhciksIHdyaXRlcik7
CisgICAgYWRkUHJvcGVydHkoIndlZWtTdGFydERheSIsIFdlYkNvcmU6OmZpcnN0RGF5T2ZXZWVr
KCksIHdyaXRlcik7CisgICAgYWRkUHJvcGVydHkoIm1vbnRoTGFiZWxzIiwgV2ViQ29yZTo6bW9u
dGhMYWJlbHMoKSwgd3JpdGVyKTsKKyAgICBhZGRQcm9wZXJ0eSgiZGF5TGFiZWxzIiwgV2ViQ29y
ZTo6d2Vla0RheVNob3J0TGFiZWxzKCksIHdyaXRlcik7CisgICAgRGlyZWN0aW9uIGRpciA9IGRp
cmVjdGlvbihXZWJDb3JlOjptb250aExhYmVscygpWzBdWzBdKTsKKyAgICBhZGRQcm9wZXJ0eSgi
aXNSVEwiLCBkaXIgPT0gUmlnaHRUb0xlZnQgfHwgZGlyID09IFJpZ2h0VG9MZWZ0QXJhYmljLCB3
cml0ZXIpOworICAgIGFkZFN0cmluZygifVxuIiwgd3JpdGVyKTsKKworICAgIHdyaXRlci5hZGRE
YXRhKFdlYkNvcmU6OnBpY2tlckNvbW1vbkpzLCBzaXplb2YoV2ViQ29yZTo6cGlja2VyQ29tbW9u
SnMpKTsKKyAgICB3cml0ZXIuYWRkRGF0YShXZWJDb3JlOjpjYWxlbmRhclBpY2tlckpzLCBzaXpl
b2YoV2ViQ29yZTo6Y2FsZW5kYXJQaWNrZXJKcykpOworICAgIGFkZFN0cmluZygiPC9zY3JpcHQ+
PC9ib2R5PlxuIiwgd3JpdGVyKTsKK30KKwordm9pZCBEYXRlVGltZUNob29zZXJJbXBsOjpzZXRW
YWx1ZUFuZENsb3NlUG9wdXAoaW50IG51bVZhbHVlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1ZhbHVl
KQoreworICAgIGlmIChudW1WYWx1ZSA+PSAwKQorICAgICAgICBtX2NsaWVudC0+ZGlkQ2hvb3Nl
VmFsdWUoc3RyaW5nVmFsdWUpOworICAgIGVuZENob29zZXIoKTsKK30KKwordm9pZCBEYXRlVGlt
ZUNob29zZXJJbXBsOjpkaWRDbG9zZVBvcHVwKCkKK3sgICAgCisgICAgbV9jbGllbnQtPmRpZEVu
ZENob29zZXIoKTsKKyAgICBtX3BvcHVwID0gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRGF0ZVRpbWVDaG9vc2VySW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRGF0ZVRpbWVDaG9vc2VySW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1MDQ1OTJi
YzNjNTJhMDkyNzk2ZTJkZDM1NjY2Yzk4ODFiN2E4OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRlVGltZUNob29zZXJJbXBsLmgKQEAgLTAsMCArMSw3
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgRGF0ZVRpbWVDaG9vc2VySW1wbF9oCisjZGVmaW5lIERhdGVUaW1lQ2hvb3Nl
ckltcGxfaAorCisjaW5jbHVkZSAiRGF0ZVRpbWVDaG9vc2VyLmgiCisjaW5jbHVkZSAiUGFnZVBv
cHVwQ2xpZW50LmgiCisKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBQYWdlUG9wdXA7CitjbGFzcyBEYXRlVGltZUNob29zZXJDbGllbnQ7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDaHJvbWVDbGllbnRJbXBsOworCitj
bGFzcyBEYXRlVGltZUNob29zZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OkRhdGVUaW1lQ2hvb3Nl
ciwgcHVibGljIFdlYkNvcmU6OlBhZ2VQb3B1cENsaWVudCB7CitwdWJsaWM6CisgICAgRGF0ZVRp
bWVDaG9vc2VySW1wbChDaHJvbWVDbGllbnRJbXBsKiwgV2ViQ29yZTo6RGF0ZVRpbWVDaG9vc2Vy
Q2xpZW50KiwgY29uc3QgV2ViQ29yZTo6RGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyYpOworICAg
IHZpcnR1YWwgfkRhdGVUaW1lQ2hvb3NlckltcGwoKTsKKworICAgIC8vIERhdGVUaW1lQ2hvb3Nl
ciBmdW5jdGlvbnM6CisgICAgdmlydHVhbCB2b2lkIGVuZENob29zZXIoKSBPVkVSUklERTsKKwor
cHJpdmF0ZToKKyAgICAvLyBQYWdlUG9wdXBDbGllbnQgZnVuY3Rpb25zOgorICAgIHZpcnR1YWwg
V2ViQ29yZTo6SW50U2l6ZSBjb250ZW50U2l6ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCB3cml0ZURvY3VtZW50KFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyJikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQsIGNvbnN0IFN0cmluZyYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVBvcHVwKCkgT1ZFUlJJREU7CisKKyAg
ICBDaHJvbWVDbGllbnRJbXBsKiBtX2Nocm9tZUNsaWVudDsKKyAgICBXZWJDb3JlOjpEYXRlVGlt
ZUNob29zZXJDbGllbnQqIG1fY2xpZW50OworICAgIFdlYkNvcmU6OlBhZ2VQb3B1cCogbV9wb3B1
cDsKKyAgICBXZWJDb3JlOjpEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsK
K307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisKKyNlbmRpZiAv
LyBEYXRlVGltZUNob29zZXJJbXBsX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162157</attachid>
            <date>2012-09-04 21:41:43 -0700</date>
            <delta_ts>2012-09-04 22:46:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95681-20120905134125.patch</filename>
            <type>text/plain</type>
            <size>31379</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjFmNTRkMGM1NmJiNGMx
MzU0NmZlODI5MWZlZWQxMTZmMWRhYmUxNS4uNTQxYTE4OTllODNhZWM3NWU3MzhjMzU3OWRjZjQ3
ZjUxMzY3ZDhlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTA5LTA0ICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgUGFnZVBvcHVw
Q2xpZW50IGltcGxlbWVudGF0aW9uIGZvciBpbnB1dFt0eXBlPWRhdGVdIHRvIENocm9taXVtIFdl
YktpdCBsYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTU2ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZSBhcmUgbW92aW5nIGNhbGVuZGFyIHBpY2tlciBQYWdlUG9wdXBDbGllbnQgdG8gV2ViS2l0
IGxheWVyIHNvIHBvcnRzCisgICAgICAgIGNhbiB1c2UgdGhlaXIgcGxhdGZvcm0gbmF0aXZlIGNo
b29zZXIgVUkgaWYgdGhleSBoYXZlIG9uZS4KKyAgICAgICAgRGF0ZVRpbWVDaG9vc2VyLCBEYXRl
VGltZUNob29zZXJDbGllbnQgZXRjLiB3aWxsIGJlIHJldXNlZCB3aGVuIHdlCisgICAgICAgIGlt
cGxlbWVudCB0aGUgd2VlayBwaWNrZXIgYW5kIG1vbnRoIHBpY2tlci4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIE5vIGJlaGF2aW9yIGNoYW5nZS4gQ292ZXJlZCBieSBleGlzdGluZyBjYWxlbmRh
ciBwaWNrZXIgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bGVuZGFyUGlja2VyRWxlbWVudDo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6fkNhbGVuZGFyUGlja2VyRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRpZENob29zZVZhbHVlKTog
Q2FsbGVkIHdoZW4gdXNlciBjaG9zZSBhIHZhbHVlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRpZEVuZENob29zZXIpOiBDYWxs
ZWQgd2hlbiBjaG9vc2VyIGhhcyBlbmRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlj
a2VyRWxlbWVudDo6b3BlblBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlja2Vy
RWxlbWVudDo6Y2xvc2VQb3B1cCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNr
ZXJFbGVtZW50Lmg6CisgICAgICAgIChDYWxlbmRhclBpY2tlckVsZW1lbnQpOgorICAgICAgICAq
IGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6b3BlbkRhdGVUaW1lQ2hvb3Nlcik6CisgICAgICAg
ICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoRW1wdHlDaHJvbWVDbGllbnQpOgor
ICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKENocm9tZUNsaWVudCk6CisgICAgICAgICogcGFnZS9QYWdlUG9wdXBDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQ2xpZW50OjphZGRQcm9wZXJ0eSk6IEFkZHMgZG91
YmxlIHZhbHVlIHByb3BlcnR5IHRvIEpTT04uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBwYWdlL1BhZ2VQb3B1cENsaWVudC5oOgorICAgICAgICAoUGFnZVBvcHVwQ2xpZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9EYXRlVGltZUNob29zZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyk6IENvbnRhaW5zIGluZm9ybWF0aW9u
IG5lZWRlZCB0byBvcGVuIHRoZSBEYXRlVGltZUNob29zZXIuCisgICAgICAgIChEYXRlVGltZUNo
b29zZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVDaG9vc2VyOjp+RGF0ZVRpbWVDaG9v
c2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EYXRlVGltZUNob29zZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoRGF0ZVRpbWVDaG9vc2VyQ2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGVUaW1lQ2hvb3NlckNsaWVudDo6fkRhdGVUaW1lQ2hvb3NlckNsaWVudCk6
CisKIDIwMTItMDktMDQgIFNlcmdleSBHbGF6dW5vdiAgPHNlcmcuZ2xhenVub3ZAZ21haWwuY29t
PgogCiAgICAgICAgIEZyYW1lIGVsZW1lbnQgZG9lc24ndCBhbHdheXMgdW5sb2FkIGl0cyBjaGls
ZCBmcmFtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjIzNGU3YjE3ODEzY2EwMDE4
ZWI1ZmZkZWE1ZTFjM2MxNTJmZTRhZC4uYTZmOGViMmZhZjAzNjY0NzM0MTI4ZDgwNzgzNjhkZTQw
MWMzY2E3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAx
Mi0wOS0wNCAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KKworICAgICAgICBN
b3ZlIFBhZ2VQb3B1cENsaWVudCBpbXBsZW1lbnRhdGlvbiBmb3IgaW5wdXRbdHlwZT1kYXRlXSB0
byBDaHJvbWl1bSBXZWJLaXQgbGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1NjgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVu
dEltcGw6Om9wZW5EYXRlVGltZUNob29zZXIpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJ
bXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENocm9tZUNsaWVudEltcGwpOgor
ICAgICAgICAqIHNyYy9EYXRlVGltZUNob29zZXJJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpEYXRlVGltZUNob29zZXJJbXBsOjpEYXRlVGltZUNo
b29zZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6RGF0ZVRpbWVDaG9vc2VySW1wbDo6fkRhdGVU
aW1lQ2hvb3NlckltcGwpOgorICAgICAgICAoV2ViS2l0OjpEYXRlVGltZUNob29zZXJJbXBsOjpl
bmRDaG9vc2VyKToKKyAgICAgICAgKFdlYktpdDo6RGF0ZVRpbWVDaG9vc2VySW1wbDo6Y29udGVu
dFNpemUpOgorICAgICAgICAoV2ViS2l0OjpEYXRlVGltZUNob29zZXJJbXBsOjp3cml0ZURvY3Vt
ZW50KToKKyAgICAgICAgKFdlYktpdDo6RGF0ZVRpbWVDaG9vc2VySW1wbDo6c2V0VmFsdWVBbmRD
bG9zZVBvcHVwKToKKyAgICAgICAgKFdlYktpdDo6RGF0ZVRpbWVDaG9vc2VySW1wbDo6ZGlkQ2xv
c2VQb3B1cCk6CisgICAgICAgICogc3JjL0RhdGVUaW1lQ2hvb3NlckltcGwuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKERhdGVUaW1lQ2hvb3Nlcklt
cGwpOgorCiAyMDEyLTA5LTA0ICBUaWVuLVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIFJlbmFtZSBXZWJWaWV3Q2xpZW50OjpoYW5kbGVEaXNhbWJp
Z3VhdGlvblBvcHVwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggM2UzNDc0MGY5NGQ0YWVlOTEyNGM5OThk
ZTA0Njk4ZTZhMDAxZDU4OC4uOGM4ODU4ODgyMzdiZGI5NGNmYzRiMmVmYjc5ODcxMTY2OWYxZDE1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzM3LDYgKzMzNyw4IEBACiAgICAgICAgICAgICAncGxh
dGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9UaW1lci5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9UcmVlU2hhcmVkLmgnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL0RhdGVUaW1lQ2hvb3Nlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9EYXRlVGlt
ZUNob29zZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vVmlzaXRlZExpbmtTdHJh
dGVneS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9WaXNpdGVkTGlua3MuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vV2lkZ2V0LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAKaW5kZXggZjMyNDRkZTZiMGZkNzMwMWFk
ZGM4NzkxNjE0MmJjMDFhNTBjODhhMi4uNzM1MDNjODllZmIxNzE0YWE3ZGEwOGEzMWJiOWYwNWVh
N2U4MzgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQ
aWNrZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRh
clBpY2tlckVsZW1lbnQuY3BwCkBAIC0zMywyMiArMzMsMTMgQEAKIAogI2lmIEVOQUJMRShDQUxF
TkRBUl9QSUNLRVIpCiAKLSNpbmNsdWRlICJDYWxlbmRhclBpY2tlci5oIgogI2luY2x1ZGUgIkNo
cm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgotI2luY2x1ZGUgIkRhdGVDb21wb25l
bnRzLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNs
dWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVk
ZSAiTGFuZ3VhZ2UuaCIKLSNpbmNsdWRlICJMb2NhbGl6ZWREYXRlLmgiCi0jaW5jbHVkZSAiTG9j
YWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQaWNrZXJDb21t
b24uaCIKICNpbmNsdWRlICJSZW5kZXJEZXRhaWxzTWFya2VyLmgiCi0jaW5jbHVkZSAiUmVuZGVy
VGhlbWUuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXVEY6OlVuaWNvZGU7CiAKQEAgLTU4LDcgKzQ5LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKIAogaW5saW5lIENhbGVuZGFyUGlja2VyRWxlbWVudDo6Q2FsZW5kYXJQaWNr
ZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxEaXZFbGVtZW50KGRpdlRh
ZywgZG9jdW1lbnQpCi0gICAgLCBtX3BvcHVwKDApCisgICAgLCBtX2Nob29zZXIobnVsbHB0cikK
IHsKICAgICBzZXRTaGFkb3dQc2V1ZG9JZCgiLXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNh
dG9yIik7CiB9CkBAIC03MSw3ICs2Miw3IEBAIFBhc3NSZWZQdHI8Q2FsZW5kYXJQaWNrZXJFbGVt
ZW50PiBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lCiBDYWxl
bmRhclBpY2tlckVsZW1lbnQ6On5DYWxlbmRhclBpY2tlckVsZW1lbnQoKQogewogICAgIGNsb3Nl
UG9wdXAoKTsKLSAgICBBU1NFUlQoIW1fcG9wdXApOworICAgIEFTU0VSVCghbV9jaG9vc2VyKTsK
IH0KIAogUmVuZGVyT2JqZWN0KiBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQpAQCAtMTE0LDkgKzEwNSwxOSBAQCBi
b29sIENhbGVuZGFyUGlja2VyRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMo
KQogICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVu
dHMoKTsKIH0KIAordm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRpZENob29zZVZhbHVlKGNv
bnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaG9zdElucHV0KCktPnNldFZhbHVlKHZhbHVlLCBE
aXNwYXRjaENoYW5nZUV2ZW50KTsKK30KKwordm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRp
ZEVuZENob29zZXIoKQoreworICAgIG1fY2hvb3Nlci5jbGVhcigpOworfQorCiB2b2lkIENhbGVu
ZGFyUGlja2VyRWxlbWVudDo6b3BlblBvcHVwKCkKIHsKLSAgICBpZiAobV9wb3B1cCkKKyAgICBp
ZiAobV9jaG9vc2VyKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFkb2N1bWVudCgpLT5wYWdl
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEyNSwyMCArMTI2LDI5IEBAIHZvaWQgQ2FsZW5kYXJQ
aWNrZXJFbGVtZW50OjpvcGVuUG9wdXAoKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFkb2N1
bWVudCgpLT52aWV3KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBJbnRSZWN0IGVsZW1lbnRSZWN0
SW5Sb290VmlldyA9IGRvY3VtZW50KCktPnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGhvc3RJ
bnB1dCgpLT5nZXRQaXhlbFNuYXBwZWRSZWN0KCkpOwotICAgIG1fcG9wdXAgPSBjaHJvbWUtPmNs
aWVudCgpLT5vcGVuUGFnZVBvcHVwKHRoaXMsIGVsZW1lbnRSZWN0SW5Sb290Vmlldyk7CisKKyAg
ICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IGhvc3RJbnB1dCgpOworICAgIERhdGVUaW1lQ2hv
b3NlclBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICBwYXJhbWV0ZXJzLnR5cGUgPSBpbnB1dC0+
dHlwZSgpOworICAgIHBhcmFtZXRlcnMubWluaW11bSA9IGlucHV0LT5taW5pbXVtKCk7CisgICAg
cGFyYW1ldGVycy5tYXhpbXVtID0gaW5wdXQtPm1heGltdW0oKTsKKyAgICBwYXJhbWV0ZXJzLnJl
cXVpcmVkID0gaW5wdXQtPnJlcXVpcmVkKCk7CisgICAgRGVjaW1hbCBzdGVwOworICAgIGlmICho
b3N0SW5wdXQoKS0+Z2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkpCisgICAgICAgIHBhcmFtZXRl
cnMuc3RlcCA9IDEuMDsKKyAgICBlbHNlCisgICAgICAgIHBhcmFtZXRlcnMuc3RlcCA9IHN0ZXAu
dG9Eb3VibGUoKTsKKyAgICBwYXJhbWV0ZXJzLmFuY2hvclJlY3RJblJvb3RWaWV3ID0gZG9jdW1l
bnQoKS0+dmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoaG9zdElucHV0KCktPmdldFBpeGVsU25h
cHBlZFJlY3QoKSk7CisgICAgcGFyYW1ldGVycy5jdXJyZW50VmFsdWUgPSBpbnB1dC0+dmFsdWUo
KTsKKyAgICAvLyBGSVhNRTogcGFyYW1ldGVycy5zdWdnZXN0aW9uVmFsdWVzIGFuZCBzdWdnZXN0
aW9uTGFiZWxzIHdpbGwgYmUgdXNlZCB3aGVuIHdlIHN1cHBvcnQgZGF0YWxpc3QuCisgICAgbV9j
aG9vc2VyID0gY2hyb21lLT5jbGllbnQoKS0+b3BlbkRhdGVUaW1lQ2hvb3Nlcih0aGlzLCBwYXJh
bWV0ZXJzKTsKIH0KIAogdm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmNsb3NlUG9wdXAoKQog
ewotICAgIGlmICghbV9wb3B1cCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghZG9jdW1lbnQo
KS0+cGFnZSgpKQorICAgIGlmICghbV9jaG9vc2VyKQogICAgICAgICByZXR1cm47Ci0gICAgQ2hy
b21lKiBjaHJvbWUgPSBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpOwotICAgIGlmICghY2hy
b21lKQotICAgICAgICByZXR1cm47Ci0gICAgY2hyb21lLT5jbGllbnQoKS0+Y2xvc2VQYWdlUG9w
dXAobV9wb3B1cCk7CisgICAgbV9jaG9vc2VyLT5lbmRDaG9vc2VyKCk7CiB9CiAKIHZvaWQgQ2Fs
ZW5kYXJQaWNrZXJFbGVtZW50OjpkZXRhY2goKQpAQCAtMTQ3LDY3ICsxNTcsNiBAQCB2b2lkIENh
bGVuZGFyUGlja2VyRWxlbWVudDo6ZGV0YWNoKCkKICAgICBIVE1MRGl2RWxlbWVudDo6ZGV0YWNo
KCk7CiB9CiAKLUludFNpemUgQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpjb250ZW50U2l6ZSgpCi17
Ci0gICAgcmV0dXJuIEludFNpemUoMCwgMCk7Ci19Ci0KLXZvaWQgQ2FsZW5kYXJQaWNrZXJFbGVt
ZW50Ojp3cml0ZURvY3VtZW50KERvY3VtZW50V3JpdGVyJiB3cml0ZXIpCi17Ci0gICAgSFRNTElu
cHV0RWxlbWVudCogaW5wdXQgPSBob3N0SW5wdXQoKTsKLSAgICBEYXRlQ29tcG9uZW50cyBkYXRl
OwotICAgIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUoaW5wdXQtPm1pbmlt
dW0oKSk7Ci0gICAgU3RyaW5nIG1pblN0cmluZyA9IGRhdGUudG9TdHJpbmcoKTsKLSAgICBkYXRl
LnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlKGlucHV0LT5tYXhpbXVtKCkpOwotICAg
IFN0cmluZyBtYXhTdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCk7Ci0gICAgRGVjaW1hbCBzdGVwOwot
ICAgIFN0cmluZyBzdGVwU3RyaW5nID0gaW5wdXQtPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIp
OwotICAgIGlmIChzdGVwU3RyaW5nLmlzRW1wdHkoKSB8fCAhaW5wdXQtPmdldEFsbG93ZWRWYWx1
ZVN0ZXAoJnN0ZXApKQotICAgICAgICBzdGVwU3RyaW5nID0gIjEiOwotCi0gICAgYWRkU3RyaW5n
KCI8IURPQ1RZUEUgaHRtbD48aGVhZD48bWV0YSBjaGFyc2V0PSdVVEYtOCc+PHN0eWxlPlxuIiwg
d3JpdGVyKTsKLSAgICB3cml0ZXIuYWRkRGF0YShwaWNrZXJDb21tb25Dc3MsIHNpemVvZihwaWNr
ZXJDb21tb25Dc3MpKTsKLSAgICB3cml0ZXIuYWRkRGF0YShjYWxlbmRhclBpY2tlckNzcywgc2l6
ZW9mKGNhbGVuZGFyUGlja2VyQ3NzKSk7Ci0gICAgaWYgKGRvY3VtZW50KCktPnBhZ2UoKSkgewot
ICAgICAgICBDU3RyaW5nIGV4dHJhU3R5bGUgPSBkb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkt
PmV4dHJhQ2FsZW5kYXJQaWNrZXJTdHlsZVNoZWV0KCk7Ci0gICAgICAgIGlmIChleHRyYVN0eWxl
Lmxlbmd0aCgpKQotICAgICAgICAgICAgd3JpdGVyLmFkZERhdGEoZXh0cmFTdHlsZS5kYXRhKCks
IGV4dHJhU3R5bGUubGVuZ3RoKCkpOwotICAgIH0KLSAgICBhZGRTdHJpbmcoIjwvc3R5bGU+PC9o
ZWFkPjxib2R5PjxkaXYgaWQ9bWFpbj5Mb2FkaW5nLi4uPC9kaXY+PHNjcmlwdD5cbiIKLSAgICAg
ICAgICAgICAgICJ3aW5kb3cuZGlhbG9nQXJndW1lbnRzID0ge1xuIiwgd3JpdGVyKTsKLSAgICBh
ZGRQcm9wZXJ0eSgibWluIiwgbWluU3RyaW5nLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJt
YXgiLCBtYXhTdHJpbmcsIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoInN0ZXAiLCBzdGVwU3Ry
aW5nLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJyZXF1aXJlZCIsIGlucHV0LT5yZXF1aXJl
ZCgpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJjdXJyZW50VmFsdWUiLCBpbnB1dC0+dmFs
dWUoKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgibG9jYWxlIiwgZGVmYXVsdExhbmd1YWdl
KCksIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoInRvZGF5TGFiZWwiLCBjYWxlbmRhclRvZGF5
VGV4dCgpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJjbGVhckxhYmVsIiwgY2FsZW5kYXJD
bGVhclRleHQoKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgid2Vla1N0YXJ0RGF5IiwgZmly
c3REYXlPZldlZWsoKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgibW9udGhMYWJlbHMiLCBt
b250aExhYmVscygpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJkYXlMYWJlbHMiLCB3ZWVr
RGF5U2hvcnRMYWJlbHMoKSwgd3JpdGVyKTsKLSAgICBEaXJlY3Rpb24gZGlyID0gZGlyZWN0aW9u
KG1vbnRoTGFiZWxzKClbMF1bMF0pOwotICAgIGFkZFByb3BlcnR5KCJpc1JUTCIsIGRpciA9PSBS
aWdodFRvTGVmdCB8fCBkaXIgPT0gUmlnaHRUb0xlZnRBcmFiaWMsIHdyaXRlcik7Ci0gICAgYWRk
U3RyaW5nKCJ9XG4iLCB3cml0ZXIpOwotCi0gICAgd3JpdGVyLmFkZERhdGEocGlja2VyQ29tbW9u
SnMsIHNpemVvZihwaWNrZXJDb21tb25KcykpOwotICAgIHdyaXRlci5hZGREYXRhKGNhbGVuZGFy
UGlja2VySnMsIHNpemVvZihjYWxlbmRhclBpY2tlckpzKSk7Ci0gICAgYWRkU3RyaW5nKCI8L3Nj
cmlwdD48L2JvZHk+XG4iLCB3cml0ZXIpOwotfQotCi12b2lkIENhbGVuZGFyUGlja2VyRWxlbWVu
dDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCBudW1WYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJp
bmdWYWx1ZSkKLXsKLSAgICBBU1NFUlQobV9wb3B1cCk7Ci0gICAgY2xvc2VQb3B1cCgpOwotICAg
IGlmIChudW1WYWx1ZSA+PSAwKQotICAgICAgICBob3N0SW5wdXQoKS0+c2V0VmFsdWUoc3RyaW5n
VmFsdWUsIERpc3BhdGNoQ2hhbmdlRXZlbnQpOwotfQotCi12b2lkIENhbGVuZGFyUGlja2VyRWxl
bWVudDo6ZGlkQ2xvc2VQb3B1cCgpCi17Ci0gICAgbV9wb3B1cCA9IDA7Ci19Ci0KIH0KIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tl
ckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxl
bWVudC5oCmluZGV4IGNiZjIxM2ZjNWZjYjNlMzVmMWQ2YmRmMTJlZjgxMjdlYjIzOWUzODcuLmY5
MDM0Nzg2NDYxNTFiZDNiYTJkYWNjZmY0Mzk2MDBjZTA5YjdhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5oCkBAIC0zMiwxNSAr
MzIsMTggQEAKICNkZWZpbmUgQ2FsZW5kYXJQaWNrZXJFbGVtZW50X2gKIAogI2lmIEVOQUJMRShD
QUxFTkRBUl9QSUNLRVIpCisKKyNpbmNsdWRlICJEYXRlVGltZUNob29zZXIuaCIKKyNpbmNsdWRl
ICJEYXRlVGltZUNob29zZXJDbGllbnQuaCIKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgot
I2luY2x1ZGUgIlBhZ2VQb3B1cENsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OwogY2xhc3MgUGFn
ZVBvcHVwOwogCi1jbGFzcyBDYWxlbmRhclBpY2tlckVsZW1lbnQgOiBwdWJsaWMgSFRNTERpdkVs
ZW1lbnQsIHB1YmxpYyBQYWdlUG9wdXBDbGllbnQgeworY2xhc3MgQ2FsZW5kYXJQaWNrZXJFbGVt
ZW50IDogcHVibGljIEhUTUxEaXZFbGVtZW50LCBwdWJsaWMgRGF0ZVRpbWVDaG9vc2VyQ2xpZW50
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYWxlbmRhclBpY2tlckVsZW1lbnQ+
IGNyZWF0ZShEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkNhbGVuZGFyUGlja2VyRWxlbWVudCgp
OwpAQCAtNDgsMjEgKzUxLDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb3NlUG9wdXAoKTsKICAg
ICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERTsK
IAorICAgIC8vIERhdGVUaW1lQ2hvb3NlckNsaWVudCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hvb3NlVmFsdWUoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpZEVuZENob29zZXIoKSBPVkVSUklERTsKKwogcHJpdmF0ZToKICAgICBDYWxl
bmRhclBpY2tlckVsZW1lbnQoRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGRldGFjaCgpIE9WRVJSSURFOwogCi0gICAgLy8gUGFnZVBvcHVwQ2xpZW50
IGZ1bmN0aW9uczoKLSAgICB2aXJ0dWFsIEludFNpemUgY29udGVudFNpemUoKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVEb2N1bWVudChEb2N1bWVudFdyaXRlciYpIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFuZENsb3NlUG9wdXAoaW50LCBjb25zdCBTdHJp
bmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2VQb3B1cCgpIE9WRVJSSURF
OwotCiAgICAgSFRNTElucHV0RWxlbWVudCogaG9zdElucHV0KCk7CiAKLSAgICBQYWdlUG9wdXAq
IG1fcG9wdXA7CisgICAgT3duUHRyPERhdGVUaW1lQ2hvb3Nlcj4gbV9jaG9vc2VyOwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBkOGJjMDZmMzM2ZWI0
MDBlMjJkMWVkNjYzYjQ0YWM4ZWI0YWMxYTQ4Li43ZjE2ZjNkZmU5YWNiYTEzYWNjMjEwZDg0NGI5
NTc2YWJjYWY3OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAt
MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVtcHR5Q2xpZW50
cy5oIgogCisjaW5jbHVkZSAiRGF0ZVRpbWVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRM
b2FkZXIuaCIKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkZvcm1TdGF0ZS5o
IgpAQCAtMTAzLDYgKzEwNCwxMyBAQCBQYXNzT3duUHRyPENvbG9yQ2hvb3Nlcj4gRW1wdHlDaHJv
bWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbgogfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorUGFzc093blB0cjxEYXRlVGltZUNob29z
ZXI+IEVtcHR5Q2hyb21lQ2xpZW50OjpvcGVuRGF0ZVRpbWVDaG9vc2VyKERhdGVUaW1lQ2hvb3Nl
ckNsaWVudCosIGNvbnN0IERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMmKQoreworICAgIHJldHVy
biBudWxscHRyOworfQorI2VuZGlmCisKIHZvaWQgRW1wdHlDaHJvbWVDbGllbnQ6OnJ1bk9wZW5Q
YW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IGEwMjc5OTdmZjdmOTUzZDIyNTkyMDVkOGFiNmZiYzUz
NzlhZTA5NTUuLmZiZGEyZjYwMDY1ZDc4MDY5NDU1ODRkOWI2MDI5MTRiNGE1MTc2MGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTE3Miw2ICsxNzIsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgUGFzc093blB0cjxDb2xvckNob29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3Nl
cihDb2xvckNob29zZXJDbGllbnQqLCBjb25zdCBDb2xvciYpIE9WRVJSSURFOwogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorICAgIHZpcnR1YWwgUGFzc093blB0cjxEYXRl
VGltZUNob29zZXI+IG9wZW5EYXRlVGltZUNob29zZXIoRGF0ZVRpbWVDaG9vc2VyQ2xpZW50Kiwg
Y29uc3QgRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyYpIE9WRVJSSURFOworI2VuZGlmCisKICAg
ICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nl
cj4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgRmlsZUljb25Mb2FkZXIqKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmgKaW5kZXggZGQ2YWZjZmUxY2RmZThiMTc2ZmI2OThlYmUzNjE3MDJkZGMwODg5MS4u
ZmE1YjQ4NWUwOTEyZDUzZWExYjgxM2FiZGZiZTU0M2I4OTZmZTAzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCkBAIC00OCw2ICs0OCw4IEBAIGNsYXNzIE5TUmVzcG9uZGVyOwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdDsKKyAgICBj
bGFzcyBEYXRlVGltZUNob29zZXI7CisgICAgY2xhc3MgRGF0ZVRpbWVDaG9vc2VyQ2xpZW50Owog
ICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAgY2xhc3MgRmlsZUNob29zZXI7CiAgICAgY2xhc3MgRmls
ZUljb25Mb2FkZXI7CkBAIC02OSw2ICs3MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBHcmFwaGljc0NvbnRleHQzRDsKICAgICBjbGFzcyBXaWRnZXQ7CiAKKyAgICBzdHJ1Y3Qg
RGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVyczsKICAgICBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsK
ICAgICBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CiAgICAgc3RydWN0IFdpbmRvd0ZlYXR1cmVz
OwpAQCAtMjIyLDYgKzIyNSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgUGFzc093blB0cjxDb2xvckNob29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29z
ZXJDbGllbnQqLCBjb25zdCBDb2xvciYpID0gMDsKICNlbmRpZgogCisjaWYgRU5BQkxFKENBTEVO
REFSX1BJQ0tFUikKKyAgICAgICAgdmlydHVhbCBQYXNzT3duUHRyPERhdGVUaW1lQ2hvb3Nlcj4g
b3BlbkRhdGVUaW1lQ2hvb3NlcihEYXRlVGltZUNob29zZXJDbGllbnQqLCBjb25zdCBEYXRlVGlt
ZUNob29zZXJQYXJhbWV0ZXJzJikgPSAwOworI2VuZGlmCisKICAgICAgICAgdmlydHVhbCB2b2lk
IHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSA9IDA7CiAgICAg
ICAgIC8vIEFzeW5jaHJvbm91cyByZXF1ZXN0IHRvIGxvYWQgYW4gaWNvbiBmb3Igc3BlY2lmaWVk
IGZpbGVuYW1lcy4KICAgICAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCBGaWxlSWNvbkxvYWRlciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3Nlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRGF0ZVRpbWVDaG9vc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI0M2EzMDgxYTg0N2Y4ZGQwZDU5
NmMyODMwOWRkNzFjNTJkODljNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RhdGVUaW1lQ2hvb3Nlci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERhdGVUaW1l
Q2hvb3Nlcl9oCisjZGVmaW5lIERhdGVUaW1lQ2hvb3Nlcl9oCisKKyNpbmNsdWRlICJJbnRSZWN0
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RydWN0IERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMgeworICAgIEF0b21pY1N0cmlu
ZyB0eXBlOworICAgIEludFJlY3QgYW5jaG9yUmVjdEluUm9vdFZpZXc7CisgICAgU3RyaW5nIGN1
cnJlbnRWYWx1ZTsKKyAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uVmFsdWVzOworICAgIFZl
Y3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25MYWJlbHM7CisgICAgZG91YmxlIG1pbmltdW07CisgICAg
ZG91YmxlIG1heGltdW07CisgICAgZG91YmxlIHN0ZXA7CisgICAgYm9vbCByZXF1aXJlZDsKK307
CisKKy8vIEZvciBwaWNrZXJzIGxpa2UgY29sb3IgcGlja2VycyBhbmQgZGF0ZSBwaWNrZXJzLgor
Y2xhc3MgRGF0ZVRpbWVDaG9vc2VyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5EYXRlVGltZUNo
b29zZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBlbmRDaG9vc2VyKCkgPSAwOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRGF0ZVRpbWVDaG9vc2VyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3NlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZVRpbWVDaG9vc2VyQ2xpZW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTg1M2VhN2EwMzI0MzI1YWZjZTY0MjYxYmVjNzY2MGYxYTFkMzAxNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3NlckNsaWVudC5o
CkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIERhdGVUaW1lQ2hvb3NlckNsaWVudF9oCisjZGVmaW5l
IERhdGVUaW1lQ2hvb3NlckNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
RGF0ZVRpbWVDaG9vc2VyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5EYXRlVGltZUNo
b29zZXJDbGllbnQoKSB7IH0KKworICAgIC8vIENhbGxlZCB3aGVuIHVzZXIgcGlja2VkIGEgdmFs
dWUuCisgICAgdmlydHVhbCB2b2lkIGRpZENob29zZVZhbHVlKGNvbnN0IFN0cmluZyYpID0gMDsK
KyAgICAvLyBDYWxsZWQgd2hlbiBjaG9vc2VyIGhhcyBlbmRlZC4KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRW5kQ2hvb3NlcigpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIERhdGVUaW1lQ2hvb3NlckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
aW5kZXggYjk4NGFmYzg2M2U2ZWU1YTQyZGRlNzI0YmNlZTYwM2Q2YmI0NWMzZC4uZDc5NTMyZWVh
ZGY2NTNkZmNjNWM2OTU3Y2EyZjhhNjk5YjlhZDFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cApAQCAtMzU4LDYgKzM1OCw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9CYXR0ZXJ5Q2xp
ZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0Jsb2JSZWdpc3RyeVByb3h5LmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9CbG9iUmVnaXN0cnlQcm94eS5oJywKKyAgICAgICAgICAg
ICAgICAnc3JjL0RhdGVUaW1lQ2hvb3NlckltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3Jj
L0RhdGVUaW1lQ2hvb3NlckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9DaHJvbWVDbGllbnRJbXBsLmgnLAog
ICAgICAgICAgICAgICAgICdzcmMvQ2hyb21pdW1DdXJyZW50VGltZS5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCBkYzVhZmM4
ODY1NWEyODU0OTk1M2I2NWIwNGU2OWNhZWY1ZWZkNGYwLi44NzNkNWUyYWUzMDVjNDEwMzBjYmZh
OTliZWZmZjQyZDJjNDQ1MGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkNvbnNvbGUu
aCIKICNpbmNsdWRlICJDdXJzb3IuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNp
bmNsdWRlICJEYXRlVGltZUNob29zZXJJbXBsLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkV4dGVybmFsUG9wdXBNZW51Lmgi
CkBAIC03MDQsNiArNzA1LDEzIEBAIFBhc3NPd25QdHI8V2ViQ29sb3JDaG9vc2VyPiBDaHJvbWVD
bGllbnRJbXBsOjpjcmVhdGVXZWJDb2xvckNob29zZXIoV2ViQ29sb3JDaG9vCiB9CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCitQYXNzT3duUHRyPFdlYkNvcmU6OkRhdGVU
aW1lQ2hvb3Nlcj4gQ2hyb21lQ2xpZW50SW1wbDo6b3BlbkRhdGVUaW1lQ2hvb3NlcihXZWJDb3Jl
OjpEYXRlVGltZUNob29zZXJDbGllbnQqIHBpY2tlckNsaWVudCwgY29uc3QgV2ViQ29yZTo6RGF0
ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IERhdGVUaW1lQ2hvb3NlckltcGwodGhpcywgcGlja2VyQ2xpZW50LCBwYXJhbWV0ZXJz
KSk7Cit9CisjZW5kaWYKKwogdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpydW5PcGVuUGFuZWwoRnJh
bWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBmaWxlQ2hvb3NlcikKIHsKICAgICBX
ZWJWaWV3Q2xpZW50KiBjbGllbnQgPSBtX3dlYlZpZXctPmNsaWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCmluZGV4IDYyYjM5OTg4NmJiYzQy
Y2NjNzcyNDFiYzdlMzliYjgxODc2ZDA1OTEuLjdkNDU2ZmJmNTMwYzQ5NjU2MjhiMjU5NzljMmE0
NjEwZmJkYmM3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmgKQEAgLTUwLDYgKzUwLDggQEAgY2xhc3MgUG9wdXBDb250YWluZXI7CiBjbGFzcyBQ
b3B1cE1lbnVDbGllbnQ7CiBjbGFzcyBSZW5kZXJCb3g7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
K2NsYXNzIERhdGVUaW1lQ2hvb3NlcjsKK2NsYXNzIERhdGVUaW1lQ2hvb3NlckNsaWVudDsKIHN0
cnVjdCBXaW5kb3dGZWF0dXJlczsKIH0KIApAQCAtMTQ0LDYgKzE0Niw5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNo
b29zZXIoV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6Q29sb3Im
KSBPVkVSUklERTsKICAgICBQYXNzT3duUHRyPFdlYkNvbG9yQ2hvb3Nlcj4gY3JlYXRlV2ViQ29s
b3JDaG9vc2VyKFdlYkNvbG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IFdlYkNvbG9yJik7CiAjZW5k
aWYKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorICAgIHZpcnR1YWwgUGFzc093blB0cjxX
ZWJDb3JlOjpEYXRlVGltZUNob29zZXI+IG9wZW5EYXRlVGltZUNob29zZXIoV2ViQ29yZTo6RGF0
ZVRpbWVDaG9vc2VyQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6RGF0ZVRpbWVDaG9vc2VyUGFyYW1l
dGVycyYpIE9WRVJSSURFOworI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChX
ZWJDb3JlOjpGcmFtZSosIFBhc3NSZWZQdHI8V2ViQ29yZTo6RmlsZUNob29zZXI+KTsKICAgICB2
aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+Jiwg
V2ViQ29yZTo6RmlsZUljb25Mb2FkZXIqKTsKICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RhdGVUaW1lQ2hvb3Nlcklt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRGF0ZVRpbWVDaG9vc2VySW1wbC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGM3M2ZjY2Y3ODdmMDVhOTY4YTlkOTRhOGMwOThmNjdjZDNiMGFmYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RhdGVUaW1lQ2hv
b3NlckltcGwuY3BwCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkRhdGVUaW1lQ2hvb3NlckltcGwuaCIKKworI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIp
CisKKyNpbmNsdWRlICJDYWxlbmRhclBpY2tlci5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudElt
cGwuaCIKKyNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgorI2luY2x1ZGUgIkRhdGVUaW1lQ2hv
b3NlckNsaWVudC5oIgorI2luY2x1ZGUgIkxhbmd1YWdlLmgiCisjaW5jbHVkZSAiTG9jYWxpemVk
RGF0ZS5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGlja2VyQ29t
bW9uLmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJL
aXRQbGF0Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViTG9jYWxpemVkU3RyaW5n
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitEYXRlVGltZUNob29zZXJJbXBsOjpEYXRlVGltZUNob29zZXJJbXBsKENocm9tZUNsaWVu
dEltcGwqIGNocm9tZUNsaWVudCwgV2ViQ29yZTo6RGF0ZVRpbWVDaG9vc2VyQ2xpZW50KiBjbGll
bnQsIGNvbnN0IFdlYkNvcmU6OkRhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CisgICAgOiBtX2Nocm9tZUNsaWVudChjaHJvbWVDbGllbnQpCisgICAgLCBtX2NsaWVudChjbGll
bnQpCisgICAgLCBtX3BvcHVwKDApCisgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKK3sK
KyAgICBBU1NFUlQobV9jaHJvbWVDbGllbnQpOworICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAg
bV9wb3B1cCA9IG1fY2hyb21lQ2xpZW50LT5vcGVuUGFnZVBvcHVwKHRoaXMsIG1fcGFyYW1ldGVy
cy5hbmNob3JSZWN0SW5Sb290Vmlldyk7Cit9CisKK0RhdGVUaW1lQ2hvb3NlckltcGw6On5EYXRl
VGltZUNob29zZXJJbXBsKCkKK3sKK30KKwordm9pZCBEYXRlVGltZUNob29zZXJJbXBsOjplbmRD
aG9vc2VyKCkKK3sKKyAgICBpZiAoIW1fcG9wdXApCisgICAgICAgIHJldHVybjsKKyAgICBtX2No
cm9tZUNsaWVudC0+Y2xvc2VQYWdlUG9wdXAobV9wb3B1cCk7Cit9CisKK1dlYkNvcmU6OkludFNp
emUgRGF0ZVRpbWVDaG9vc2VySW1wbDo6Y29udGVudFNpemUoKQoreworICAgIHJldHVybiBXZWJD
b3JlOjpJbnRTaXplKDAsIDApOworfQorCit2b2lkIERhdGVUaW1lQ2hvb3NlckltcGw6OndyaXRl
RG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXImIHdyaXRlcikKK3sKKyAgICBXZWJDb3Jl
OjpEYXRlQ29tcG9uZW50cyBkYXRlOworICAgIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9j
aEZvckRhdGUobV9wYXJhbWV0ZXJzLm1pbmltdW0pOworICAgIFN0cmluZyBtaW5TdHJpbmcgPSBk
YXRlLnRvU3RyaW5nKCk7CisgICAgZGF0ZS5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0
ZShtX3BhcmFtZXRlcnMubWF4aW11bSk7CisgICAgU3RyaW5nIG1heFN0cmluZyA9IGRhdGUudG9T
dHJpbmcoKTsKKyAgICBTdHJpbmcgc3RlcFN0cmluZyA9IFN0cmluZzo6bnVtYmVyKG1fcGFyYW1l
dGVycy5zdGVwKTsKKworICAgIGFkZFN0cmluZygiPCFET0NUWVBFIGh0bWw+PGhlYWQ+PG1ldGEg
Y2hhcnNldD0nVVRGLTgnPjxzdHlsZT5cbiIsIHdyaXRlcik7CisgICAgd3JpdGVyLmFkZERhdGEo
V2ViQ29yZTo6cGlja2VyQ29tbW9uQ3NzLCBzaXplb2YoV2ViQ29yZTo6cGlja2VyQ29tbW9uQ3Nz
KSk7CisgICAgd3JpdGVyLmFkZERhdGEoV2ViQ29yZTo6Y2FsZW5kYXJQaWNrZXJDc3MsIHNpemVv
ZihXZWJDb3JlOjpjYWxlbmRhclBpY2tlckNzcykpOworICAgIENTdHJpbmcgZXh0cmFTdHlsZSA9
IFdlYkNvcmU6OlJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+ZXh0cmFDYWxlbmRhclBpY2tl
clN0eWxlU2hlZXQoKTsKKyAgICBpZiAoZXh0cmFTdHlsZS5sZW5ndGgoKSkKKyAgICAgICAgd3Jp
dGVyLmFkZERhdGEoZXh0cmFTdHlsZS5kYXRhKCksIGV4dHJhU3R5bGUubGVuZ3RoKCkpOworICAg
IGFkZFN0cmluZygiPC9zdHlsZT48L2hlYWQ+PGJvZHk+PGRpdiBpZD1tYWluPkxvYWRpbmcuLi48
L2Rpdj48c2NyaXB0PlxuIgorICAgICAgICAgICAgICAgIndpbmRvdy5kaWFsb2dBcmd1bWVudHMg
PSB7XG4iLCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5KCJtaW4iLCBtaW5TdHJpbmcsIHdyaXRl
cik7CisgICAgYWRkUHJvcGVydHkoIm1heCIsIG1heFN0cmluZywgd3JpdGVyKTsKKyAgICBhZGRQ
cm9wZXJ0eSgic3RlcCIsIHN0ZXBTdHJpbmcsIHdyaXRlcik7CisgICAgYWRkUHJvcGVydHkoInJl
cXVpcmVkIiwgbV9wYXJhbWV0ZXJzLnJlcXVpcmVkLCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5
KCJjdXJyZW50VmFsdWUiLCBtX3BhcmFtZXRlcnMuY3VycmVudFZhbHVlLCB3cml0ZXIpOworICAg
IGFkZFByb3BlcnR5KCJsb2NhbGUiLCBXZWJDb3JlOjpkZWZhdWx0TGFuZ3VhZ2UoKSwgd3JpdGVy
KTsKKyAgICBXZWJDb3JlOjpQYWdlUG9wdXBDbGllbnQ6OmFkZFByb3BlcnR5KCJ0b2RheUxhYmVs
IiwgUGxhdGZvcm06OmN1cnJlbnQoKS0+cXVlcnlMb2NhbGl6ZWRTdHJpbmcoV2ViTG9jYWxpemVk
U3RyaW5nOjpDYWxlbmRhclRvZGF5KSwgd3JpdGVyKTsKKyAgICBXZWJDb3JlOjpQYWdlUG9wdXBD
bGllbnQ6OmFkZFByb3BlcnR5KCJjbGVhckxhYmVsIiwgUGxhdGZvcm06OmN1cnJlbnQoKS0+cXVl
cnlMb2NhbGl6ZWRTdHJpbmcoV2ViTG9jYWxpemVkU3RyaW5nOjpDYWxlbmRhckNsZWFyKSwgd3Jp
dGVyKTsKKyAgICBhZGRQcm9wZXJ0eSgid2Vla1N0YXJ0RGF5IiwgV2ViQ29yZTo6Zmlyc3REYXlP
ZldlZWsoKSwgd3JpdGVyKTsKKyAgICBhZGRQcm9wZXJ0eSgibW9udGhMYWJlbHMiLCBXZWJDb3Jl
Ojptb250aExhYmVscygpLCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5KCJkYXlMYWJlbHMiLCBX
ZWJDb3JlOjp3ZWVrRGF5U2hvcnRMYWJlbHMoKSwgd3JpdGVyKTsKKyAgICBEaXJlY3Rpb24gZGly
ID0gZGlyZWN0aW9uKFdlYkNvcmU6Om1vbnRoTGFiZWxzKClbMF1bMF0pOworICAgIGFkZFByb3Bl
cnR5KCJpc1JUTCIsIGRpciA9PSBSaWdodFRvTGVmdCB8fCBkaXIgPT0gUmlnaHRUb0xlZnRBcmFi
aWMsIHdyaXRlcik7CisgICAgYWRkU3RyaW5nKCJ9XG4iLCB3cml0ZXIpOworCisgICAgd3JpdGVy
LmFkZERhdGEoV2ViQ29yZTo6cGlja2VyQ29tbW9uSnMsIHNpemVvZihXZWJDb3JlOjpwaWNrZXJD
b21tb25KcykpOworICAgIHdyaXRlci5hZGREYXRhKFdlYkNvcmU6OmNhbGVuZGFyUGlja2VySnMs
IHNpemVvZihXZWJDb3JlOjpjYWxlbmRhclBpY2tlckpzKSk7CisgICAgYWRkU3RyaW5nKCI8L3Nj
cmlwdD48L2JvZHk+XG4iLCB3cml0ZXIpOworfQorCit2b2lkIERhdGVUaW1lQ2hvb3NlckltcGw6
OnNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQgbnVtVmFsdWUsIGNvbnN0IFN0cmluZyYgc3RyaW5n
VmFsdWUpCit7CisgICAgaWYgKG51bVZhbHVlID49IDApCisgICAgICAgIG1fY2xpZW50LT5kaWRD
aG9vc2VWYWx1ZShzdHJpbmdWYWx1ZSk7CisgICAgZW5kQ2hvb3NlcigpOworfQorCit2b2lkIERh
dGVUaW1lQ2hvb3NlckltcGw6OmRpZENsb3NlUG9wdXAoKQoreyAgICAKKyAgICBtX2NsaWVudC0+
ZGlkRW5kQ2hvb3NlcigpOworICAgIG1fcG9wdXAgPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRlVGltZUNob29zZXJJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9EYXRlVGltZUNob29zZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTUw
NDU5MmJjM2M1MmEwOTI3OTZlMmRkMzU2NjZjOTg4MWI3YTg4ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RhdGVUaW1lQ2hvb3NlckltcGwuaApAQCAtMCww
ICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBEYXRlVGltZUNob29zZXJJbXBsX2gKKyNkZWZpbmUgRGF0ZVRpbWVD
aG9vc2VySW1wbF9oCisKKyNpbmNsdWRlICJEYXRlVGltZUNob29zZXIuaCIKKyNpbmNsdWRlICJQ
YWdlUG9wdXBDbGllbnQuaCIKKworI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIFBhZ2VQb3B1cDsKK2NsYXNzIERhdGVUaW1lQ2hvb3NlckNs
aWVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENocm9tZUNsaWVudEltcGw7
CisKK2NsYXNzIERhdGVUaW1lQ2hvb3NlckltcGwgOiBwdWJsaWMgV2ViQ29yZTo6RGF0ZVRpbWVD
aG9vc2VyLCBwdWJsaWMgV2ViQ29yZTo6UGFnZVBvcHVwQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBE
YXRlVGltZUNob29zZXJJbXBsKENocm9tZUNsaWVudEltcGwqLCBXZWJDb3JlOjpEYXRlVGltZUNo
b29zZXJDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzJik7
CisgICAgdmlydHVhbCB+RGF0ZVRpbWVDaG9vc2VySW1wbCgpOworCisgICAgLy8gRGF0ZVRpbWVD
aG9vc2VyIGZ1bmN0aW9uczoKKyAgICB2aXJ0dWFsIHZvaWQgZW5kQ2hvb3NlcigpIE9WRVJSSURF
OworCitwcml2YXRlOgorICAgIC8vIFBhZ2VQb3B1cENsaWVudCBmdW5jdGlvbnM6CisgICAgdmly
dHVhbCBXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRTaXplKCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHdyaXRlRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXImKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCwgY29uc3QgU3RyaW5n
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlUG9wdXAoKSBPVkVSUklERTsK
KworICAgIENocm9tZUNsaWVudEltcGwqIG1fY2hyb21lQ2xpZW50OworICAgIFdlYkNvcmU6OkRh
dGVUaW1lQ2hvb3NlckNsaWVudCogbV9jbGllbnQ7CisgICAgV2ViQ29yZTo6UGFnZVBvcHVwKiBt
X3BvcHVwOworICAgIFdlYkNvcmU6OkRhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMgbV9wYXJhbWV0
ZXJzOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKKworI2Vu
ZGlmIC8vIERhdGVUaW1lQ2hvb3NlckltcGxfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162161</attachid>
            <date>2012-09-04 22:46:17 -0700</date>
            <delta_ts>2012-09-04 23:35:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95681-20120905144559.patch</filename>
            <type>text/plain</type>
            <size>31121</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjFmNTRkMGM1NmJiNGMx
MzU0NmZlODI5MWZlZWQxMTZmMWRhYmUxNS4uM2M0MDQ1ODljYWE4OTI0NWRlZDlkNWRhODM4ZmFj
ZGZkMzRiZmE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTA5LTA0ICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgUGFnZVBvcHVw
Q2xpZW50IGltcGxlbWVudGF0aW9uIGZvciBpbnB1dFt0eXBlPWRhdGVdIHRvIENocm9taXVtIFdl
YktpdCBsYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTU2ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZSBhcmUgbW92aW5nIGNhbGVuZGFyIHBpY2tlciBQYWdlUG9wdXBDbGllbnQgdG8gV2ViS2l0
IGxheWVyIHNvIHBvcnRzCisgICAgICAgIGNhbiB1c2UgdGhlaXIgcGxhdGZvcm0gbmF0aXZlIGNo
b29zZXIgVUkgaWYgdGhleSBoYXZlIG9uZS4KKyAgICAgICAgRGF0ZVRpbWVDaG9vc2VyLCBEYXRl
VGltZUNob29zZXJDbGllbnQgZXRjLiB3aWxsIGJlIHJldXNlZCB3aGVuIHdlCisgICAgICAgIGlt
cGxlbWVudCB0aGUgd2VlayBwaWNrZXIgYW5kIG1vbnRoIHBpY2tlci4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIE5vIGJlaGF2aW9yIGNoYW5nZS4gQ292ZXJlZCBieSBleGlzdGluZyBjYWxlbmRh
ciBwaWNrZXIgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bGVuZGFyUGlja2VyRWxlbWVudDo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6fkNhbGVuZGFyUGlja2VyRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRpZENob29zZVZhbHVlKTog
Q2FsbGVkIHdoZW4gdXNlciBjaG9zZSBhIHZhbHVlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRpZEVuZENob29zZXIpOiBDYWxs
ZWQgd2hlbiBjaG9vc2VyIGhhcyBlbmRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlj
a2VyRWxlbWVudDo6b3BlblBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlja2Vy
RWxlbWVudDo6Y2xvc2VQb3B1cCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNr
ZXJFbGVtZW50Lmg6CisgICAgICAgIChDYWxlbmRhclBpY2tlckVsZW1lbnQpOgorICAgICAgICAq
IGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6b3BlbkRhdGVUaW1lQ2hvb3Nlcik6CisgICAgICAg
ICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoRW1wdHlDaHJvbWVDbGllbnQpOgor
ICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKENocm9tZUNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vRGF0ZVRpbWVDaG9vc2VyLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMp
OiBDb250YWlucyBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gb3BlbiB0aGUgRGF0ZVRpbWVDaG9vc2Vy
LgorICAgICAgICAoRGF0ZVRpbWVDaG9vc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1l
Q2hvb3Nlcjo6fkRhdGVUaW1lQ2hvb3Nlcik6CisgICAgICAgICogcGxhdGZvcm0vRGF0ZVRpbWVD
aG9vc2VyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKERhdGVUaW1lQ2hv
b3NlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUNob29zZXJDbGllbnQ6On5E
YXRlVGltZUNob29zZXJDbGllbnQpOgorCiAyMDEyLTA5LTA0ICBTZXJnZXkgR2xhenVub3YgIDxz
ZXJnLmdsYXp1bm92QGdtYWlsLmNvbT4KIAogICAgICAgICBGcmFtZSBlbGVtZW50IGRvZXNuJ3Qg
YWx3YXlzIHVubG9hZCBpdHMgY2hpbGQgZnJhbWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IGYyMzRlN2IxNzgxM2NhMDAxOGViNWZmZGVhNWUxYzNjMTUyZmU0YWQuLmE2ZjhlYjJmYWYw
MzY2NDczNDEyOGQ4MDc4MzY4ZGU0MDFjM2NhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzEgQEAKKzIwMTItMDktMDQgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBQYWdlUG9wdXBDbGllbnQgaW1wbGVtZW50YXRpb24g
Zm9yIGlucHV0W3R5cGU9ZGF0ZV0gdG8gQ2hyb21pdW0gV2ViS2l0IGxheWVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTY4MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAg
ICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpvcGVuRGF0ZVRpbWVDaG9vc2VyKToKKyAgICAg
ICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChDaHJvbWVDbGllbnRJbXBsKToKKyAgICAgICAgKiBzcmMvRGF0ZVRpbWVDaG9vc2VySW1wbC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6RGF0ZVRpbWVD
aG9vc2VySW1wbDo6RGF0ZVRpbWVDaG9vc2VySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OkRhdGVU
aW1lQ2hvb3NlckltcGw6On5EYXRlVGltZUNob29zZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6
RGF0ZVRpbWVDaG9vc2VySW1wbDo6ZW5kQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQ6OkRhdGVU
aW1lQ2hvb3NlckltcGw6OmNvbnRlbnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6RGF0ZVRpbWVD
aG9vc2VySW1wbDo6d3JpdGVEb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OkRhdGVUaW1lQ2hv
b3NlckltcGw6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cCk6CisgICAgICAgIChXZWJLaXQ6OkRhdGVU
aW1lQ2hvb3NlckltcGw6OmRpZENsb3NlUG9wdXApOgorICAgICAgICAqIHNyYy9EYXRlVGltZUNo
b29zZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChEYXRlVGltZUNob29zZXJJbXBsKToKKwogMjAxMi0wOS0wNCAgVGllbi1SZW4gQ2hlbiAg
PHRyY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBSZW5hbWUgV2ViVmll
d0NsaWVudDo6aGFuZGxlRGlzYW1iaWd1YXRpb25Qb3B1cApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDNl
MzQ3NDBmOTRkNGFlZTkxMjRjOTk4ZGUwNDY5OGU2YTAwMWQ1ODguLjhjODg1ODg4MjM3YmRiOTRj
ZmM0YjJlZmI3OTg3MTE2NjlmMWQxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTMzNyw2ICszMzcs
OCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vVGltZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vVHJlZVNoYXJl
ZC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9EYXRlVGltZUNob29zZXIuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vRGF0ZVRpbWVDaG9vc2VyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL1Zpc2l0ZWRMaW5rU3RyYXRlZ3kuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vVmlz
aXRlZExpbmtzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1dpZGdldC5oJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3BwCmlu
ZGV4IGYzMjQ0ZGU2YjBmZDczMDFhZGRjODc5MTYxNDJiYzAxYTUwYzg4YTIuLjczNTAzYzg5ZWZi
MTcxNGFhN2RhMDhhMzFiYjlmMDVlYTdlODM4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcApAQCAtMzMsMjIgKzMzLDEz
IEBACiAKICNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQogCi0jaW5jbHVkZSAiQ2FsZW5kYXJQ
aWNrZXIuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIK
LSNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgotI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0jaW5jbHVkZSAiTG9jYWxpemVk
RGF0ZS5oIgotI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJQYWdlLmgi
Ci0jaW5jbHVkZSAiUGlja2VyQ29tbW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyRGV0YWlsc01hcmtl
ci5oIgotI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwogCkBAIC01OCw3ICs0
OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIGlubGluZSBDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6OkNhbGVuZGFyUGlja2VyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAg
OiBIVE1MRGl2RWxlbWVudChkaXZUYWcsIGRvY3VtZW50KQotICAgICwgbV9wb3B1cCgwKQorICAg
ICwgbV9jaG9vc2VyKG51bGxwdHIpCiB7CiAgICAgc2V0U2hhZG93UHNldWRvSWQoIi13ZWJraXQt
Y2FsZW5kYXItcGlja2VyLWluZGljYXRvciIpOwogfQpAQCAtNzEsNyArNjIsNyBAQCBQYXNzUmVm
UHRyPENhbGVuZGFyUGlja2VyRWxlbWVudD4gQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZQogQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojp+Q2FsZW5kYXJQaWNrZXJF
bGVtZW50KCkKIHsKICAgICBjbG9zZVBvcHVwKCk7Ci0gICAgQVNTRVJUKCFtX3BvcHVwKTsKKyAg
ICBBU1NFUlQoIW1fY2hvb3Nlcik7CiB9CiAKIFJlbmRlck9iamVjdCogQ2FsZW5kYXJQaWNrZXJF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikK
QEAgLTExNCw5ICsxMDUsMTkgQEAgYm9vbCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OndpbGxSZXNw
b25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKICAgICByZXR1cm4gSFRNTERpdkVsZW1lbnQ6OndpbGxS
ZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCk7CiB9CiAKK3ZvaWQgQ2FsZW5kYXJQaWNrZXJFbGVt
ZW50OjpkaWRDaG9vc2VWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGhvc3RJbnB1
dCgpLT5zZXRWYWx1ZSh2YWx1ZSwgRGlzcGF0Y2hDaGFuZ2VFdmVudCk7Cit9CisKK3ZvaWQgQ2Fs
ZW5kYXJQaWNrZXJFbGVtZW50OjpkaWRFbmRDaG9vc2VyKCkKK3sKKyAgICBtX2Nob29zZXIuY2xl
YXIoKTsKK30KKwogdm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6Om9wZW5Qb3B1cCgpCiB7Ci0g
ICAgaWYgKG1fcG9wdXApCisgICAgaWYgKG1fY2hvb3NlcikKICAgICAgICAgcmV0dXJuOwogICAg
IGlmICghZG9jdW1lbnQoKS0+cGFnZSgpKQogICAgICAgICByZXR1cm47CkBAIC0xMjUsMjAgKzEy
NiwyOSBAQCB2b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6b3BlblBvcHVwKCkKICAgICAgICAg
cmV0dXJuOwogICAgIGlmICghZG9jdW1lbnQoKS0+dmlldygpKQogICAgICAgICByZXR1cm47Ci0g
ICAgSW50UmVjdCBlbGVtZW50UmVjdEluUm9vdFZpZXcgPSBkb2N1bWVudCgpLT52aWV3KCktPmNv
bnRlbnRzVG9Sb290Vmlldyhob3N0SW5wdXQoKS0+Z2V0UGl4ZWxTbmFwcGVkUmVjdCgpKTsKLSAg
ICBtX3BvcHVwID0gY2hyb21lLT5jbGllbnQoKS0+b3BlblBhZ2VQb3B1cCh0aGlzLCBlbGVtZW50
UmVjdEluUm9vdFZpZXcpOworCisgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBob3N0SW5w
dXQoKTsKKyAgICBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgcGFy
YW1ldGVycy50eXBlID0gaW5wdXQtPnR5cGUoKTsKKyAgICBwYXJhbWV0ZXJzLm1pbmltdW0gPSBp
bnB1dC0+bWluaW11bSgpOworICAgIHBhcmFtZXRlcnMubWF4aW11bSA9IGlucHV0LT5tYXhpbXVt
KCk7CisgICAgcGFyYW1ldGVycy5yZXF1aXJlZCA9IGlucHV0LT5yZXF1aXJlZCgpOworICAgIERl
Y2ltYWwgc3RlcDsKKyAgICBpZiAoaG9zdElucHV0KCktPmdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0
ZXApKQorICAgICAgICBwYXJhbWV0ZXJzLnN0ZXAgPSAxLjA7CisgICAgZWxzZQorICAgICAgICBw
YXJhbWV0ZXJzLnN0ZXAgPSBzdGVwLnRvRG91YmxlKCk7CisgICAgcGFyYW1ldGVycy5hbmNob3JS
ZWN0SW5Sb290VmlldyA9IGRvY3VtZW50KCktPnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGhv
c3RJbnB1dCgpLT5nZXRQaXhlbFNuYXBwZWRSZWN0KCkpOworICAgIHBhcmFtZXRlcnMuY3VycmVu
dFZhbHVlID0gaW5wdXQtPnZhbHVlKCk7CisgICAgLy8gRklYTUU6IHBhcmFtZXRlcnMuc3VnZ2Vz
dGlvblZhbHVlcyBhbmQgc3VnZ2VzdGlvbkxhYmVscyB3aWxsIGJlIHVzZWQgd2hlbiB3ZSBzdXBw
b3J0IGRhdGFsaXN0LgorICAgIG1fY2hvb3NlciA9IGNocm9tZS0+Y2xpZW50KCktPm9wZW5EYXRl
VGltZUNob29zZXIodGhpcywgcGFyYW1ldGVycyk7CiB9CiAKIHZvaWQgQ2FsZW5kYXJQaWNrZXJF
bGVtZW50OjpjbG9zZVBvcHVwKCkKIHsKLSAgICBpZiAoIW1fcG9wdXApCi0gICAgICAgIHJldHVy
bjsKLSAgICBpZiAoIWRvY3VtZW50KCktPnBhZ2UoKSkKKyAgICBpZiAoIW1fY2hvb3NlcikKICAg
ICAgICAgcmV0dXJuOwotICAgIENocm9tZSogY2hyb21lID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5j
aHJvbWUoKTsKLSAgICBpZiAoIWNocm9tZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNocm9tZS0+
Y2xpZW50KCktPmNsb3NlUGFnZVBvcHVwKG1fcG9wdXApOworICAgIG1fY2hvb3Nlci0+ZW5kQ2hv
b3NlcigpOwogfQogCiB2b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6ZGV0YWNoKCkKQEAgLTE0
Nyw2NyArMTU3LDYgQEAgdm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRldGFjaCgpCiAgICAg
SFRNTERpdkVsZW1lbnQ6OmRldGFjaCgpOwogfQogCi1JbnRTaXplIENhbGVuZGFyUGlja2VyRWxl
bWVudDo6Y29udGVudFNpemUoKQotewotICAgIHJldHVybiBJbnRTaXplKDAsIDApOwotfQotCi12
b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6d3JpdGVEb2N1bWVudChEb2N1bWVudFdyaXRlciYg
d3JpdGVyKQotewotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gaG9zdElucHV0KCk7Ci0g
ICAgRGF0ZUNvbXBvbmVudHMgZGF0ZTsKLSAgICBkYXRlLnNldE1pbGxpc2Vjb25kc1NpbmNlRXBv
Y2hGb3JEYXRlKGlucHV0LT5taW5pbXVtKCkpOwotICAgIFN0cmluZyBtaW5TdHJpbmcgPSBkYXRl
LnRvU3RyaW5nKCk7Ci0gICAgZGF0ZS5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZShp
bnB1dC0+bWF4aW11bSgpKTsKLSAgICBTdHJpbmcgbWF4U3RyaW5nID0gZGF0ZS50b1N0cmluZygp
OwotICAgIERlY2ltYWwgc3RlcDsKLSAgICBTdHJpbmcgc3RlcFN0cmluZyA9IGlucHV0LT5mYXN0
R2V0QXR0cmlidXRlKHN0ZXBBdHRyKTsKLSAgICBpZiAoc3RlcFN0cmluZy5pc0VtcHR5KCkgfHwg
IWlucHV0LT5nZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkKLSAgICAgICAgc3RlcFN0cmluZyA9
ICIxIjsKLQotICAgIGFkZFN0cmluZygiPCFET0NUWVBFIGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNl
dD0nVVRGLTgnPjxzdHlsZT5cbiIsIHdyaXRlcik7Ci0gICAgd3JpdGVyLmFkZERhdGEocGlja2Vy
Q29tbW9uQ3NzLCBzaXplb2YocGlja2VyQ29tbW9uQ3NzKSk7Ci0gICAgd3JpdGVyLmFkZERhdGEo
Y2FsZW5kYXJQaWNrZXJDc3MsIHNpemVvZihjYWxlbmRhclBpY2tlckNzcykpOwotICAgIGlmIChk
b2N1bWVudCgpLT5wYWdlKCkpIHsKLSAgICAgICAgQ1N0cmluZyBleHRyYVN0eWxlID0gZG9jdW1l
bnQoKS0+cGFnZSgpLT50aGVtZSgpLT5leHRyYUNhbGVuZGFyUGlja2VyU3R5bGVTaGVldCgpOwot
ICAgICAgICBpZiAoZXh0cmFTdHlsZS5sZW5ndGgoKSkKLSAgICAgICAgICAgIHdyaXRlci5hZGRE
YXRhKGV4dHJhU3R5bGUuZGF0YSgpLCBleHRyYVN0eWxlLmxlbmd0aCgpKTsKLSAgICB9Ci0gICAg
YWRkU3RyaW5nKCI8L3N0eWxlPjwvaGVhZD48Ym9keT48ZGl2IGlkPW1haW4+TG9hZGluZy4uLjwv
ZGl2PjxzY3JpcHQ+XG4iCi0gICAgICAgICAgICAgICAid2luZG93LmRpYWxvZ0FyZ3VtZW50cyA9
IHtcbiIsIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoIm1pbiIsIG1pblN0cmluZywgd3JpdGVy
KTsKLSAgICBhZGRQcm9wZXJ0eSgibWF4IiwgbWF4U3RyaW5nLCB3cml0ZXIpOwotICAgIGFkZFBy
b3BlcnR5KCJzdGVwIiwgc3RlcFN0cmluZywgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgicmVx
dWlyZWQiLCBpbnB1dC0+cmVxdWlyZWQoKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgiY3Vy
cmVudFZhbHVlIiwgaW5wdXQtPnZhbHVlKCksIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoImxv
Y2FsZSIsIGRlZmF1bHRMYW5ndWFnZSgpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJ0b2Rh
eUxhYmVsIiwgY2FsZW5kYXJUb2RheVRleHQoKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgi
Y2xlYXJMYWJlbCIsIGNhbGVuZGFyQ2xlYXJUZXh0KCksIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVy
dHkoIndlZWtTdGFydERheSIsIGZpcnN0RGF5T2ZXZWVrKCksIHdyaXRlcik7Ci0gICAgYWRkUHJv
cGVydHkoIm1vbnRoTGFiZWxzIiwgbW9udGhMYWJlbHMoKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9w
ZXJ0eSgiZGF5TGFiZWxzIiwgd2Vla0RheVNob3J0TGFiZWxzKCksIHdyaXRlcik7Ci0gICAgRGly
ZWN0aW9uIGRpciA9IGRpcmVjdGlvbihtb250aExhYmVscygpWzBdWzBdKTsKLSAgICBhZGRQcm9w
ZXJ0eSgiaXNSVEwiLCBkaXIgPT0gUmlnaHRUb0xlZnQgfHwgZGlyID09IFJpZ2h0VG9MZWZ0QXJh
YmljLCB3cml0ZXIpOwotICAgIGFkZFN0cmluZygifVxuIiwgd3JpdGVyKTsKLQotICAgIHdyaXRl
ci5hZGREYXRhKHBpY2tlckNvbW1vbkpzLCBzaXplb2YocGlja2VyQ29tbW9uSnMpKTsKLSAgICB3
cml0ZXIuYWRkRGF0YShjYWxlbmRhclBpY2tlckpzLCBzaXplb2YoY2FsZW5kYXJQaWNrZXJKcykp
OwotICAgIGFkZFN0cmluZygiPC9zY3JpcHQ+PC9ib2R5PlxuIiwgd3JpdGVyKTsKLX0KLQotdm9p
ZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQgbnVtVmFs
dWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nVmFsdWUpCi17Ci0gICAgQVNTRVJUKG1fcG9wdXApOwot
ICAgIGNsb3NlUG9wdXAoKTsKLSAgICBpZiAobnVtVmFsdWUgPj0gMCkKLSAgICAgICAgaG9zdElu
cHV0KCktPnNldFZhbHVlKHN0cmluZ1ZhbHVlLCBEaXNwYXRjaENoYW5nZUV2ZW50KTsKLX0KLQot
dm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OmRpZENsb3NlUG9wdXAoKQotewotICAgIG1fcG9w
dXAgPSAwOwotfQotCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuaAppbmRleCBjYmYyMTNmYzVmY2IzZTM1ZjFkNmJk
ZjEyZWY4MTI3ZWIyMzllMzg3Li5mOTAzNDc4NjQ2MTUxYmQzYmEyZGFjY2ZmNDM5NjAwY2UwOWI3
YWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tl
ckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tl
ckVsZW1lbnQuaApAQCAtMzIsMTUgKzMyLDE4IEBACiAjZGVmaW5lIENhbGVuZGFyUGlja2VyRWxl
bWVudF9oCiAKICNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorCisjaW5jbHVkZSAiRGF0ZVRp
bWVDaG9vc2VyLmgiCisjaW5jbHVkZSAiRGF0ZVRpbWVDaG9vc2VyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTERpdkVsZW1lbnQuaCIKLSNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKyNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTElu
cHV0RWxlbWVudDsKIGNsYXNzIFBhZ2VQb3B1cDsKIAotY2xhc3MgQ2FsZW5kYXJQaWNrZXJFbGVt
ZW50IDogcHVibGljIEhUTUxEaXZFbGVtZW50LCBwdWJsaWMgUGFnZVBvcHVwQ2xpZW50IHsKK2Ns
YXNzIENhbGVuZGFyUGlja2VyRWxlbWVudCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCwgcHVibGlj
IERhdGVUaW1lQ2hvb3NlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
Q2FsZW5kYXJQaWNrZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5D
YWxlbmRhclBpY2tlckVsZW1lbnQoKTsKQEAgLTQ4LDIxICs1MSwxOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbG9zZVBvcHVwKCk7CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNs
aWNrRXZlbnRzKCkgT1ZFUlJJREU7CiAKKyAgICAvLyBEYXRlVGltZUNob29zZXJDbGllbnQgaW1w
bGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIGRpZENob29zZVZhbHVlKGNvbnN0IFN0cmlu
ZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRDaG9vc2VyKCkgT1ZFUlJJREU7
CisKIHByaXZhdGU6CiAgICAgQ2FsZW5kYXJQaWNrZXJFbGVtZW50KERvY3VtZW50Kik7CiAgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVy
U3R5bGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKSBPVkVSUklERTsKIAot
ICAgIC8vIFBhZ2VQb3B1cENsaWVudCBmdW5jdGlvbnM6Ci0gICAgdmlydHVhbCBJbnRTaXplIGNv
bnRlbnRTaXplKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHdyaXRlRG9jdW1lbnQoRG9j
dW1lbnRXcml0ZXImKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBbmRDbG9z
ZVBvcHVwKGludCwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZENsb3NlUG9wdXAoKSBPVkVSUklERTsKLQogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGhvc3RJbnB1
dCgpOwogCi0gICAgUGFnZVBvcHVwKiBtX3BvcHVwOworICAgIE93blB0cjxEYXRlVGltZUNob29z
ZXI+IG1fY2hvb3NlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHAKaW5kZXggZDhiYzA2ZjMzNmViNDAwZTIyZDFlZDY2M2I0NGFjOGViNGFjMWE0OC4uN2YxNmYz
ZGZlOWFjYmExM2FjYzIxMGQ4NDRiOTU3NmFiY2FmNzlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJFbXB0eUNsaWVudHMuaCIKIAorI2luY2x1ZGUgIkRhdGVUaW1lQ2hvb3Nlci5o
IgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIK
ICNpbmNsdWRlICJGb3JtU3RhdGUuaCIKQEAgLTEwMyw2ICsxMDQsMTMgQEAgUGFzc093blB0cjxD
b2xvckNob29zZXI+IEVtcHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIoQ29sb3JD
aG9vc2VyQ2xpZW4KIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKK1Bh
c3NPd25QdHI8RGF0ZVRpbWVDaG9vc2VyPiBFbXB0eUNocm9tZUNsaWVudDo6b3BlbkRhdGVUaW1l
Q2hvb3NlcihEYXRlVGltZUNob29zZXJDbGllbnQqLCBjb25zdCBEYXRlVGltZUNob29zZXJQYXJh
bWV0ZXJzJikKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCiB2b2lkIEVtcHR5
Q2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2Vy
PikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBhMDI3OTk3ZmY3
Zjk1M2QyMjU5MjA1ZDhhYjZmYmM1Mzc5YWUwOTU1Li5mYmRhMmY2MDA2NWQ3ODA2OTQ1NTg0ZDli
NjAyOTE0YjRhNTE3NjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0x
NzIsNiArMTcyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q29sb3JDaG9v
c2VyPiBjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50KiwgY29uc3QgQ29sb3Im
KSBPVkVSUklERTsKICNlbmRpZgogCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKKyAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8RGF0ZVRpbWVDaG9vc2VyPiBvcGVuRGF0ZVRpbWVDaG9vc2VyKERh
dGVUaW1lQ2hvb3NlckNsaWVudCosIGNvbnN0IERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMmKSBP
VkVSUklERTsKKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSos
IFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbG9h
ZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKikgeyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGRkNmFmY2ZlMWNkZmU4YjE3NmZi
Njk4ZWJlMzYxNzAyZGRjMDg4OTEuLmZhNWI0ODVlMDkxMmQ1M2VhMWI4MTNhYmRmYmU1NDNiODk2
ZmUwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtNDgsNiArNDgsOCBAQCBj
bGFzcyBOU1Jlc3BvbmRlcjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEFjY2Vz
c2liaWxpdHlPYmplY3Q7CisgICAgY2xhc3MgRGF0ZVRpbWVDaG9vc2VyOworICAgIGNsYXNzIERh
dGVUaW1lQ2hvb3NlckNsaWVudDsKICAgICBjbGFzcyBFbGVtZW50OwogICAgIGNsYXNzIEZpbGVD
aG9vc2VyOwogICAgIGNsYXNzIEZpbGVJY29uTG9hZGVyOwpAQCAtNjksNiArNzEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAgICAgY2xhc3Mg
V2lkZ2V0OwogCisgICAgc3RydWN0IERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnM7CiAgICAgc3Ry
dWN0IEZyYW1lTG9hZFJlcXVlc3Q7CiAgICAgc3RydWN0IFZpZXdwb3J0QXJndW1lbnRzOwogICAg
IHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKQEAgLTIyMiw2ICsyMjUsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBjcmVhdGVD
b2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50KiwgY29uc3QgQ29sb3ImKSA9IDA7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisgICAgICAgIHZpcnR1YWwgUGFzc093
blB0cjxEYXRlVGltZUNob29zZXI+IG9wZW5EYXRlVGltZUNob29zZXIoRGF0ZVRpbWVDaG9vc2Vy
Q2xpZW50KiwgY29uc3QgRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyYpID0gMDsKKyNlbmRpZgor
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZp
bGVDaG9vc2VyPikgPSAwOwogICAgICAgICAvLyBBc3luY2hyb25vdXMgcmVxdWVzdCB0byBsb2Fk
IGFuIGljb24gZm9yIHNwZWNpZmllZCBmaWxlbmFtZXMuCiAgICAgICAgIHZpcnR1YWwgdm9pZCBs
b2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUljb25Mb2FkZXIqKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlVGltZUNob29zZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3Nlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRiNDNhMzA4MWE4NDdmOGRkMGQ1OTZjMjgzMDlkZDcxYzUyZDg5YzUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlVGltZUNob29zZXIuaApAQCAtMCwwICsx
LDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBEYXRlVGltZUNob29zZXJfaAorI2RlZmluZSBEYXRlVGltZUNob29zZXJf
aAorCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBEYXRlVGltZUNob29zZXJQYXJhbWV0
ZXJzIHsKKyAgICBBdG9taWNTdHJpbmcgdHlwZTsKKyAgICBJbnRSZWN0IGFuY2hvclJlY3RJblJv
b3RWaWV3OworICAgIFN0cmluZyBjdXJyZW50VmFsdWU7CisgICAgVmVjdG9yPFN0cmluZz4gc3Vn
Z2VzdGlvblZhbHVlczsKKyAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uTGFiZWxzOworICAg
IGRvdWJsZSBtaW5pbXVtOworICAgIGRvdWJsZSBtYXhpbXVtOworICAgIGRvdWJsZSBzdGVwOwor
ICAgIGJvb2wgcmVxdWlyZWQ7Cit9OworCisvLyBGb3IgcGlja2VycyBsaWtlIGNvbG9yIHBpY2tl
cnMgYW5kIGRhdGUgcGlja2Vycy4KK2NsYXNzIERhdGVUaW1lQ2hvb3NlciB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+RGF0ZVRpbWVDaG9vc2VyKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZW5k
Q2hvb3NlcigpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IERhdGVUaW1lQ2hvb3Nlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
YXRlVGltZUNob29zZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1l
Q2hvb3NlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NTNlYTdhMDMyNDMyNWFmY2U2NDI2MWJlYzc2
NjBmMWExZDMwMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
YXRlVGltZUNob29zZXJDbGllbnQuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEYXRlVGltZUNo
b29zZXJDbGllbnRfaAorI2RlZmluZSBEYXRlVGltZUNob29zZXJDbGllbnRfaAorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIERhdGVUaW1lQ2hvb3NlckNsaWVudCB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+RGF0ZVRpbWVDaG9vc2VyQ2xpZW50KCkgeyB9CisKKyAgICAvLyBDYWxsZWQg
d2hlbiB1c2VyIHBpY2tlZCBhIHZhbHVlLgorICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VWYWx1
ZShjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgLy8gQ2FsbGVkIHdoZW4gY2hvb3NlciBoYXMgZW5k
ZWQuCisgICAgdmlydHVhbCB2b2lkIGRpZEVuZENob29zZXIoKSA9IDA7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBEYXRlVGltZUNob29zZXJDbGllbnRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGI5ODRhZmM4NjNlNmVlNWE0MmRkZTcyNGJjZWU2
MDNkNmJiNDVjM2QuLmQ3OTUzMmVlYWRmNjUzZGZjYzVjNjk1N2NhMmY4YTY5OWI5YWQxY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTM1OCw2ICszNTgsOCBAQAogICAgICAgICAg
ICAgICAgICdzcmMvQmF0dGVyeUNsaWVudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9C
bG9iUmVnaXN0cnlQcm94eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvQmxvYlJlZ2lzdHJ5
UHJveHkuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9EYXRlVGltZUNob29zZXJJbXBsLmNwcCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9EYXRlVGltZUNob29zZXJJbXBsLmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
Q2hyb21lQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0Nocm9taXVtQ3VycmVu
dFRpbWUuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5jcHAKaW5kZXggZGM1YWZjODg2NTVhMjg1NDk5NTNiNjViMDRlNjljYWVmNWVmZDRmMC4u
ODczZDVlMmFlMzA1YzQxMDMwY2JmYTk5YmVmZmY0MmQyYzQ0NTBlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTQyLDYgKzQyLDcg
QEAKICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCiAjaW5jbHVkZSAi
RGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0ZVRpbWVDaG9vc2VySW1wbC5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRl
ICJFeHRlcm5hbFBvcHVwTWVudS5oIgpAQCAtNzA0LDYgKzcwNSwxMyBAQCBQYXNzT3duUHRyPFdl
YkNvbG9yQ2hvb3Nlcj4gQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlV2ViQ29sb3JDaG9vc2VyKFdl
YkNvbG9yQ2hvbwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorUGFz
c093blB0cjxXZWJDb3JlOjpEYXRlVGltZUNob29zZXI+IENocm9tZUNsaWVudEltcGw6Om9wZW5E
YXRlVGltZUNob29zZXIoV2ViQ29yZTo6RGF0ZVRpbWVDaG9vc2VyQ2xpZW50KiBwaWNrZXJDbGll
bnQsIGNvbnN0IFdlYkNvcmU6OkRhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
Cit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEYXRlVGltZUNob29zZXJJbXBsKHRoaXMsIHBp
Y2tlckNsaWVudCwgcGFyYW1ldGVycykpOworfQorI2VuZGlmCisKIHZvaWQgQ2hyb21lQ2xpZW50
SW1wbDo6cnVuT3BlblBhbmVsKEZyYW1lKiBmcmFtZSwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4g
ZmlsZUNob29zZXIpCiB7CiAgICAgV2ViVmlld0NsaWVudCogY2xpZW50ID0gbV93ZWJWaWV3LT5j
bGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwu
aAppbmRleCA2MmIzOTk4ODZiYmM0MmNjYzc3MjQxYmM3ZTM5YmI4MTg3NmQwNTkxLi43ZDQ1NmZi
ZjUzMGM0OTY1NjI4YjI1OTc5YzJhNDYxMGZiZGJjNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCkBAIC01MCw2ICs1MCw4IEBAIGNsYXNzIFBv
cHVwQ29udGFpbmVyOwogY2xhc3MgUG9wdXBNZW51Q2xpZW50OwogY2xhc3MgUmVuZGVyQm94Owog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBEYXRlVGltZUNob29zZXI7CitjbGFzcyBEYXRl
VGltZUNob29zZXJDbGllbnQ7CiBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiB9CiAKQEAgLTE0NCw2
ICsxNDYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkNvbG9y
Q2hvb3Nlcj4gY3JlYXRlQ29sb3JDaG9vc2VyKFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNsaWVudCos
IGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgT1ZFUlJJREU7CiAgICAgUGFzc093blB0cjxXZWJDb2xv
ckNob29zZXI+IGNyZWF0ZVdlYkNvbG9yQ2hvb3NlcihXZWJDb2xvckNob29zZXJDbGllbnQqLCBj
b25zdCBXZWJDb2xvciYpOwogI2VuZGlmCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKKyAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6RGF0ZVRpbWVDaG9vc2VyPiBvcGVuRGF0ZVRp
bWVDaG9vc2VyKFdlYkNvcmU6OkRhdGVUaW1lQ2hvb3NlckNsaWVudCosIGNvbnN0IFdlYkNvcmU6
OkRhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMmKSBPVkVSUklERTsKKyNlbmRpZgogICAgIHZpcnR1
YWwgdm9pZCBydW5PcGVuUGFuZWwoV2ViQ29yZTo6RnJhbWUqLCBQYXNzUmVmUHRyPFdlYkNvcmU6
OkZpbGVDaG9vc2VyPik7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3Qg
VmVjdG9yPFdURjo6U3RyaW5nPiYsIFdlYkNvcmU6OkZpbGVJY29uTG9hZGVyKik7CiAjaWYgRU5B
QkxFKERJUkVDVE9SWV9VUExPQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9EYXRlVGltZUNob29zZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0RhdGVUaW1lQ2hvb3NlckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjMmUwYzQ4Nzc0ZDMwZjY5MDcz
OGI5NjlkZDQzYmFhYzg3OTlkNzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9EYXRlVGltZUNob29zZXJJbXBsLmNwcApAQCAtMCwwICsxLDEzMSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRlVGltZUNob29zZXJJbXBsLmgiCisKKyNpZiBF
TkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorCisjaW5jbHVkZSAiQ2FsZW5kYXJQaWNrZXIuaCIKKyNp
bmNsdWRlICJDaHJvbWVDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIK
KyNpbmNsdWRlICJEYXRlVGltZUNob29zZXJDbGllbnQuaCIKKyNpbmNsdWRlICJMYW5ndWFnZS5o
IgorI2luY2x1ZGUgIkxvY2FsaXplZERhdGUuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgorI2luY2x1ZGUgIlBpY2tlckNvbW1vbi5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSA8cHVi
bGljL1dlYkxvY2FsaXplZFN0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2Rl
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworRGF0ZVRpbWVDaG9vc2VySW1wbDo6RGF0ZVRpbWVD
aG9vc2VySW1wbChDaHJvbWVDbGllbnRJbXBsKiBjaHJvbWVDbGllbnQsIFdlYkNvcmU6OkRhdGVU
aW1lQ2hvb3NlckNsaWVudCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpEYXRlVGltZUNob29zZXJQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorICAgIDogbV9jaHJvbWVDbGllbnQoY2hyb21lQ2xpZW50
KQorICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9wb3B1cCgwKQorICAgICwgbV9wYXJh
bWV0ZXJzKHBhcmFtZXRlcnMpCit7CisgICAgQVNTRVJUKG1fY2hyb21lQ2xpZW50KTsKKyAgICBB
U1NFUlQobV9jbGllbnQpOworICAgIG1fcG9wdXAgPSBtX2Nocm9tZUNsaWVudC0+b3BlblBhZ2VQ
b3B1cCh0aGlzLCBtX3BhcmFtZXRlcnMuYW5jaG9yUmVjdEluUm9vdFZpZXcpOworfQorCitEYXRl
VGltZUNob29zZXJJbXBsOjp+RGF0ZVRpbWVDaG9vc2VySW1wbCgpCit7Cit9CisKK3ZvaWQgRGF0
ZVRpbWVDaG9vc2VySW1wbDo6ZW5kQ2hvb3NlcigpCit7CisgICAgaWYgKCFtX3BvcHVwKQorICAg
ICAgICByZXR1cm47CisgICAgbV9jaHJvbWVDbGllbnQtPmNsb3NlUGFnZVBvcHVwKG1fcG9wdXAp
OworfQorCitXZWJDb3JlOjpJbnRTaXplIERhdGVUaW1lQ2hvb3NlckltcGw6OmNvbnRlbnRTaXpl
KCkKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6SW50U2l6ZSgwLCAwKTsKK30KKwordm9pZCBEYXRl
VGltZUNob29zZXJJbXBsOjp3cml0ZURvY3VtZW50KFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyJiB3
cml0ZXIpCit7CisgICAgV2ViQ29yZTo6RGF0ZUNvbXBvbmVudHMgZGF0ZTsKKyAgICBkYXRlLnNl
dE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlKG1fcGFyYW1ldGVycy5taW5pbXVtKTsKKyAg
ICBTdHJpbmcgbWluU3RyaW5nID0gZGF0ZS50b1N0cmluZygpOworICAgIGRhdGUuc2V0TWlsbGlz
ZWNvbmRzU2luY2VFcG9jaEZvckRhdGUobV9wYXJhbWV0ZXJzLm1heGltdW0pOworICAgIFN0cmlu
ZyBtYXhTdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCk7CisgICAgU3RyaW5nIHN0ZXBTdHJpbmcgPSBT
dHJpbmc6Om51bWJlcihtX3BhcmFtZXRlcnMuc3RlcCk7CisKKyAgICBhZGRTdHJpbmcoIjwhRE9D
VFlQRSBodG1sPjxoZWFkPjxtZXRhIGNoYXJzZXQ9J1VURi04Jz48c3R5bGU+XG4iLCB3cml0ZXIp
OworICAgIHdyaXRlci5hZGREYXRhKFdlYkNvcmU6OnBpY2tlckNvbW1vbkNzcywgc2l6ZW9mKFdl
YkNvcmU6OnBpY2tlckNvbW1vbkNzcykpOworICAgIHdyaXRlci5hZGREYXRhKFdlYkNvcmU6OmNh
bGVuZGFyUGlja2VyQ3NzLCBzaXplb2YoV2ViQ29yZTo6Y2FsZW5kYXJQaWNrZXJDc3MpKTsKKyAg
ICBDU3RyaW5nIGV4dHJhU3R5bGUgPSBXZWJDb3JlOjpSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1l
KCktPmV4dHJhQ2FsZW5kYXJQaWNrZXJTdHlsZVNoZWV0KCk7CisgICAgaWYgKGV4dHJhU3R5bGUu
bGVuZ3RoKCkpCisgICAgICAgIHdyaXRlci5hZGREYXRhKGV4dHJhU3R5bGUuZGF0YSgpLCBleHRy
YVN0eWxlLmxlbmd0aCgpKTsKKyAgICBhZGRTdHJpbmcoIjwvc3R5bGU+PC9oZWFkPjxib2R5Pjxk
aXYgaWQ9bWFpbj5Mb2FkaW5nLi4uPC9kaXY+PHNjcmlwdD5cbiIKKyAgICAgICAgICAgICAgICJ3
aW5kb3cuZGlhbG9nQXJndW1lbnRzID0ge1xuIiwgd3JpdGVyKTsKKyAgICBhZGRQcm9wZXJ0eSgi
bWluIiwgbWluU3RyaW5nLCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5KCJtYXgiLCBtYXhTdHJp
bmcsIHdyaXRlcik7CisgICAgYWRkUHJvcGVydHkoInN0ZXAiLCBzdGVwU3RyaW5nLCB3cml0ZXIp
OworICAgIGFkZFByb3BlcnR5KCJyZXF1aXJlZCIsIG1fcGFyYW1ldGVycy5yZXF1aXJlZCwgd3Jp
dGVyKTsKKyAgICBhZGRQcm9wZXJ0eSgiY3VycmVudFZhbHVlIiwgbV9wYXJhbWV0ZXJzLmN1cnJl
bnRWYWx1ZSwgd3JpdGVyKTsKKyAgICBhZGRQcm9wZXJ0eSgibG9jYWxlIiwgV2ViQ29yZTo6ZGVm
YXVsdExhbmd1YWdlKCksIHdyaXRlcik7CisgICAgYWRkUHJvcGVydHkoInRvZGF5TGFiZWwiLCBQ
bGF0Zm9ybTo6Y3VycmVudCgpLT5xdWVyeUxvY2FsaXplZFN0cmluZyhXZWJMb2NhbGl6ZWRTdHJp
bmc6OkNhbGVuZGFyVG9kYXkpLCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5KCJjbGVhckxhYmVs
IiwgUGxhdGZvcm06OmN1cnJlbnQoKS0+cXVlcnlMb2NhbGl6ZWRTdHJpbmcoV2ViTG9jYWxpemVk
U3RyaW5nOjpDYWxlbmRhckNsZWFyKSwgd3JpdGVyKTsKKyAgICBhZGRQcm9wZXJ0eSgid2Vla1N0
YXJ0RGF5IiwgV2ViQ29yZTo6Zmlyc3REYXlPZldlZWsoKSwgd3JpdGVyKTsKKyAgICBhZGRQcm9w
ZXJ0eSgibW9udGhMYWJlbHMiLCBXZWJDb3JlOjptb250aExhYmVscygpLCB3cml0ZXIpOworICAg
IGFkZFByb3BlcnR5KCJkYXlMYWJlbHMiLCBXZWJDb3JlOjp3ZWVrRGF5U2hvcnRMYWJlbHMoKSwg
d3JpdGVyKTsKKyAgICBEaXJlY3Rpb24gZGlyID0gZGlyZWN0aW9uKFdlYkNvcmU6Om1vbnRoTGFi
ZWxzKClbMF1bMF0pOworICAgIGFkZFByb3BlcnR5KCJpc1JUTCIsIGRpciA9PSBSaWdodFRvTGVm
dCB8fCBkaXIgPT0gUmlnaHRUb0xlZnRBcmFiaWMsIHdyaXRlcik7CisgICAgYWRkU3RyaW5nKCJ9
XG4iLCB3cml0ZXIpOworCisgICAgd3JpdGVyLmFkZERhdGEoV2ViQ29yZTo6cGlja2VyQ29tbW9u
SnMsIHNpemVvZihXZWJDb3JlOjpwaWNrZXJDb21tb25KcykpOworICAgIHdyaXRlci5hZGREYXRh
KFdlYkNvcmU6OmNhbGVuZGFyUGlja2VySnMsIHNpemVvZihXZWJDb3JlOjpjYWxlbmRhclBpY2tl
ckpzKSk7CisgICAgYWRkU3RyaW5nKCI8L3NjcmlwdD48L2JvZHk+XG4iLCB3cml0ZXIpOworfQor
Cit2b2lkIERhdGVUaW1lQ2hvb3NlckltcGw6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQgbnVt
VmFsdWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nVmFsdWUpCit7CisgICAgaWYgKG51bVZhbHVlID49
IDApCisgICAgICAgIG1fY2xpZW50LT5kaWRDaG9vc2VWYWx1ZShzdHJpbmdWYWx1ZSk7CisgICAg
ZW5kQ2hvb3NlcigpOworfQorCit2b2lkIERhdGVUaW1lQ2hvb3NlckltcGw6OmRpZENsb3NlUG9w
dXAoKQoreyAgICAKKyAgICBtX2NsaWVudC0+ZGlkRW5kQ2hvb3NlcigpOworICAgIG1fcG9wdXAg
PSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDQUxF
TkRBUl9QSUNLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRl
VGltZUNob29zZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRlVGltZUNo
b29zZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTUwNDU5MmJjM2M1MmEwOTI3OTZlMmRkMzU2NjZjOTg4
MWI3YTg4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Rh
dGVUaW1lQ2hvb3NlckltcGwuaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEYXRlVGltZUNob29z
ZXJJbXBsX2gKKyNkZWZpbmUgRGF0ZVRpbWVDaG9vc2VySW1wbF9oCisKKyNpbmNsdWRlICJEYXRl
VGltZUNob29zZXIuaCIKKyNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKworI2lmIEVOQUJM
RShDQUxFTkRBUl9QSUNLRVIpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFBhZ2VQb3B1
cDsKK2NsYXNzIERhdGVUaW1lQ2hvb3NlckNsaWVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIENocm9tZUNsaWVudEltcGw7CisKK2NsYXNzIERhdGVUaW1lQ2hvb3NlckltcGwg
OiBwdWJsaWMgV2ViQ29yZTo6RGF0ZVRpbWVDaG9vc2VyLCBwdWJsaWMgV2ViQ29yZTo6UGFnZVBv
cHVwQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBEYXRlVGltZUNob29zZXJJbXBsKENocm9tZUNsaWVu
dEltcGwqLCBXZWJDb3JlOjpEYXRlVGltZUNob29zZXJDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpE
YXRlVGltZUNob29zZXJQYXJhbWV0ZXJzJik7CisgICAgdmlydHVhbCB+RGF0ZVRpbWVDaG9vc2Vy
SW1wbCgpOworCisgICAgLy8gRGF0ZVRpbWVDaG9vc2VyIGZ1bmN0aW9uczoKKyAgICB2aXJ0dWFs
IHZvaWQgZW5kQ2hvb3NlcigpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIC8vIFBhZ2VQb3B1
cENsaWVudCBmdW5jdGlvbnM6CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRT
aXplKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdyaXRlRG9jdW1lbnQoV2ViQ29yZTo6
RG9jdW1lbnRXcml0ZXImKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBbmRD
bG9zZVBvcHVwKGludCwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRpZENsb3NlUG9wdXAoKSBPVkVSUklERTsKKworICAgIENocm9tZUNsaWVudEltcGwqIG1fY2hy
b21lQ2xpZW50OworICAgIFdlYkNvcmU6OkRhdGVUaW1lQ2hvb3NlckNsaWVudCogbV9jbGllbnQ7
CisgICAgV2ViQ29yZTo6UGFnZVBvcHVwKiBtX3BvcHVwOworICAgIFdlYkNvcmU6OkRhdGVUaW1l
Q2hvb3NlclBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOworfTsKKworfQorCisjZW5kaWYgLy8gRU5B
QkxFKENBTEVOREFSX1BJQ0tFUikKKworI2VuZGlmIC8vIERhdGVUaW1lQ2hvb3NlckltcGxfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>