<?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>117306</bug_id>
          
          <creation_ts>2013-06-06 09:09:27 -0700</creation_ts>
          <short_desc>IndieUI: Support UIValueChangeRequestEvent</short_desc>
          <delta_ts>2016-10-21 01:18:54 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>111446</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mario</cc>
    
    <cc>syoichi</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>897804</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-06-06 09:09:27 -0700</bug_when>
    <thetext>Support the UIValueChangeRequestEvent

https://dvcs.w3.org/hg/IndieUI/raw-file/default/src/indie-ui-events.html#dictionary-uivaluechangerequesteventinit-members</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902983</commentid>
    <comment_count>1</comment_count>
      <attachid>205303</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-06-24 09:36:43 -0700</bug_when>
    <thetext>Created attachment 205303
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902985</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-24 09:38:36 -0700</bug_when>
    <thetext>Attachment 205303 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/global-constructors-attributes-expected.txt&apos;, u&apos;LayoutTests/indieui/uivaluechangerequest-expected.txt&apos;, u&apos;LayoutTests/indieui/uivaluechangerequest.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/DerivedSources.make&apos;, u&apos;Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.cpp&apos;, u&apos;Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h&apos;, u&apos;Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.idl&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/accessibility/AccessibilityNodeObject.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityNodeObject.h&apos;, u&apos;Source/WebCore/dom/EventNames.h&apos;, u&apos;Source/WebCore/dom/EventNames.in&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/testing/Internals.h&apos;, u&apos;Source/WebCore/testing/Internals.idl&apos;]&quot; exit_code: 1
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.cpp:49:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.cpp:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:44:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:45:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:46:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:49:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:52:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:57:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:69:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:70:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 14 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902990</commentid>
    <comment_count>3</comment_count>
      <attachid>205303</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-06-24 09:45:45 -0700</bug_when>
    <thetext>Comment on attachment 205303
patch

Attachment 205303 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/878076</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902992</commentid>
    <comment_count>4</comment_count>
      <attachid>205303</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-06-24 09:47:07 -0700</bug_when>
    <thetext>Comment on attachment 205303
patch

Attachment 205303 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/856396</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902994</commentid>
    <comment_count>5</comment_count>
      <attachid>205307</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-06-24 10:02:14 -0700</bug_when>
    <thetext>Created attachment 205307
patch

I think I have to ignore the style complaint about the all caps constants, since those are the names specified in the spec</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902995</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-24 10:04:17 -0700</bug_when>
    <thetext>Attachment 205307 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/global-constructors-attributes-expected.txt&apos;, u&apos;LayoutTests/indieui/uivaluechangerequest-expected.txt&apos;, u&apos;LayoutTests/indieui/uivaluechangerequest.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/DerivedSources.make&apos;, u&apos;Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.cpp&apos;, u&apos;Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h&apos;, u&apos;Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.idl&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/accessibility/AccessibilityNodeObject.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityNodeObject.h&apos;, u&apos;Source/WebCore/dom/EventNames.h&apos;, u&apos;Source/WebCore/dom/EventNames.in&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/testing/Internals.h&apos;, u&apos;Source/WebCore/testing/Internals.idl&apos;]&quot; exit_code: 1
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:44:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:45:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:46:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:49:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:52:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 9 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904812</commentid>
    <comment_count>7</comment_count>
      <attachid>205307</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-06-28 18:18:45 -0700</bug_when>
    <thetext>Comment on attachment 205307
patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        (Example, allow a screen reader user to change the value of a custom slider).

It seems like this line can fit on the previous line.

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1019
&gt; +    DEFINE_STATIC_LOCAL(const AtomicString, noAction, ());

Why don&apos;t we use nullAtom or emptyAtom instead?

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1041
&gt; +        uiActionValue.split(&apos; &apos;, uiActions);

The spec says it&apos;s a list of &quot;a set of whitespace-separated tokens&quot;. I&apos;m actually surprised that uiactions DOM property isn&apos;t DOMTokenList.
Perhaps we should give that feedback to the standards body.  Regardless, we should probably use DOMTokenList&apos;s algorithm to split the tokens here.
We also need a test that uses non-space whitespaces.

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1061
&gt; +        UIValueChangeRequestEventInit eventInit;
&gt; +        eventInit.changeType = increase ? UIValueChangeRequestEvent::INCREMENT : UIValueChangeRequestEvent::DECREMENT;
&gt; +        eventInit.receiver = receiver;

Can we add a constructor to do this?

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1065
&gt; +        RefPtr&lt;UIValueChangeRequestEvent&gt; event = UIValueChangeRequestEvent::create(eventNames().valuechangerequestEvent, eventInit);
&gt; +
&gt; +        node()-&gt;dispatchUIRequestEvent(event);

You can do both of these things in single line.

&gt; Source/WebCore/testing/Internals.cpp:2065
&gt; +    UIValueChangeRequestEventInit eventInit;
&gt; +    eventInit.changeType = changeType;
&gt; +    eventInit.receiver = receiver;

Ditto.

&gt; Source/WebCore/testing/Internals.cpp:2069
&gt; +    RefPtr&lt;UIValueChangeRequestEvent&gt; event = UIValueChangeRequestEvent::create(eventNames().valuechangerequestEvent, eventInit);
&gt; +    
&gt; +    target-&gt;dispatchUIRequestEvent(event);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905183</commentid>
    <comment_count>8</comment_count>
      <attachid>205307</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-07-01 17:46:42 -0700</bug_when>
    <thetext>Comment on attachment 205307
patch

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1041
&gt;&gt; +        uiActionValue.split(&apos; &apos;, uiActions);
&gt; 
&gt; The spec says it&apos;s a list of &quot;a set of whitespace-separated tokens&quot;. I&apos;m actually surprised that uiactions DOM property isn&apos;t DOMTokenList.
&gt; Perhaps we should give that feedback to the standards body.  Regardless, we should probably use DOMTokenList&apos;s algorithm to split the tokens here.
&gt; We also need a test that uses non-space whitespaces.

I&apos;ll inform the committee about this. I&apos;ll file another bug about testing uiactions with non space whitespaces

&gt;&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1061
&gt;&gt; +        eventInit.receiver = receiver;
&gt; 
&gt; Can we add a constructor to do this?

Yes. Will add some new eventInit constructors

&gt;&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1065
&gt;&gt; +        node()-&gt;dispatchUIRequestEvent(event);
&gt; 
&gt; You can do both of these things in single line.

If i do that I think the event will be leaked. I&apos;m relying on the static allocation to dealloc the event</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905189</commentid>
    <comment_count>9</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-07-01 17:50:10 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 205307 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=205307&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1041
&gt; &gt;&gt; +        uiActionValue.split(&apos; &apos;, uiActions);
&gt; &gt; 
&gt; &gt; The spec says it&apos;s a list of &quot;a set of whitespace-separated tokens&quot;. I&apos;m actually surprised that uiactions DOM property isn&apos;t DOMTokenList.
&gt; &gt; Perhaps we should give that feedback to the standards body.  Regardless, we should probably use DOMTokenList&apos;s algorithm to split the tokens here.
&gt; &gt; We also need a test that uses non-space whitespaces.
&gt; 
&gt; I&apos;ll inform the committee about this. I&apos;ll file another bug about testing uiactions with non space whitespaces

https://bugs.webkit.org/show_bug.cgi?id=118270

&gt; 
&gt; &gt;&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1061
&gt; &gt;&gt; +        eventInit.receiver = receiver;
&gt; &gt; 
&gt; &gt; Can we add a constructor to do this?
&gt; 
&gt; Yes. Will add some new eventInit constructors
&gt; 
&gt; &gt;&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1065
&gt; &gt;&gt; +        node()-&gt;dispatchUIRequestEvent(event);
&gt; &gt; 
&gt; &gt; You can do both of these things in single line.
&gt; 
&gt; If i do that I think the event will be leaked. I&apos;m relying on the static allocation to dealloc the event</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905269</commentid>
    <comment_count>10</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-07-01 23:53:15 -0700</bug_when>
    <thetext>INDIEUI-ACTION-60: uiactions attr value should be a DOMTokenList
https://www.w3.org/WAI/IndieUI/track/actions/60</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907184</commentid>
    <comment_count>11</comment_count>
      <attachid>206341</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-07-09 10:42:09 -0700</bug_when>
    <thetext>Created attachment 206341
patch

This should address Ryosuke&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907187</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-09 10:45:02 -0700</bug_when>
    <thetext>Attachment 206341 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/global-constructors-attributes-expected.txt&apos;, u&apos;LayoutTests/indieui/uivaluechangerequest-expected.txt&apos;, u&apos;LayoutTests/indieui/uivaluechangerequest.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/DerivedSources.make&apos;, u&apos;Source/WebCore/Modules/indieui/UIRequestEvent.cpp&apos;, u&apos;Source/WebCore/Modules/indieui/UIRequestEvent.h&apos;, u&apos;Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.cpp&apos;, u&apos;Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h&apos;, u&apos;Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.idl&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/accessibility/AccessibilityNodeObject.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityNodeObject.h&apos;, u&apos;Source/WebCore/dom/EventNames.h&apos;, u&apos;Source/WebCore/dom/EventNames.in&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/testing/Internals.h&apos;, u&apos;Source/WebCore/testing/Internals.idl&apos;]&quot; exit_code: 1
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:45:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:46:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:49:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:52:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/Modules/indieui/UIValueChangeRequestEvent.h:53:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 9 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907282</commentid>
    <comment_count>13</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-07-09 23:25:53 -0700</bug_when>
    <thetext>FYI, the uiactions IDL attribute is now a DOMTokenList, not a DOMString.
The uiactions content attribute is still a string, of course.

https://dvcs.w3.org/hg/IndieUI/rev/3ab9f0b62e4d</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907466</commentid>
    <comment_count>14</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-07-10 14:49:41 -0700</bug_when>
    <thetext>…which means you&apos;ll need to update this test at the very least:
LayoutTests/indieui/uiactions.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907467</commentid>
    <comment_count>15</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-07-10 14:52:23 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; …which means you&apos;ll need to update this test at the very least:
&gt; LayoutTests/indieui/uiactions.html

That change will need to come in a different patch, and which point this test will get updated yes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907472</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-07-10 14:56:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/14407328&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908417</commentid>
    <comment_count>17</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-07-15 08:44:13 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 205307 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=205307&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        (Example, allow a screen reader user to change the value of a custom slider).
&gt; 
&gt; It seems like this line can fit on the previous line.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1019
&gt; &gt; +    DEFINE_STATIC_LOCAL(const AtomicString, noAction, ());
&gt; 
&gt; Why don&apos;t we use nullAtom or emptyAtom instead?
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1041
&gt; &gt; +        uiActionValue.split(&apos; &apos;, uiActions);
&gt; 
&gt; The spec says it&apos;s a list of &quot;a set of whitespace-separated tokens&quot;. I&apos;m actually surprised that uiactions DOM property isn&apos;t DOMTokenList.
&gt; Perhaps we should give that feedback to the standards body.  Regardless, we should probably use DOMTokenList&apos;s algorithm to split the tokens here.
&gt; We also need a test that uses non-space whitespaces.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1061
&gt; &gt; +        UIValueChangeRequestEventInit eventInit;
&gt; &gt; +        eventInit.changeType = increase ? UIValueChangeRequestEvent::INCREMENT : UIValueChangeRequestEvent::DECREMENT;
&gt; &gt; +        eventInit.receiver = receiver;
&gt; 
&gt; Can we add a constructor to do this?
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1065
&gt; &gt; +        RefPtr&lt;UIValueChangeRequestEvent&gt; event = UIValueChangeRequestEvent::create(eventNames().valuechangerequestEvent, eventInit);
&gt; &gt; +
&gt; &gt; +        node()-&gt;dispatchUIRequestEvent(event);
&gt; 
&gt; You can do both of these things in single line.
&gt; 
&gt; &gt; Source/WebCore/testing/Internals.cpp:2065
&gt; &gt; +    UIValueChangeRequestEventInit eventInit;
&gt; &gt; +    eventInit.changeType = changeType;
&gt; &gt; +    eventInit.receiver = receiver;
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/testing/Internals.cpp:2069
&gt; &gt; +    RefPtr&lt;UIValueChangeRequestEvent&gt; event = UIValueChangeRequestEvent::create(eventNames().valuechangerequestEvent, eventInit);
&gt; &gt; +    
&gt; &gt; +    target-&gt;dispatchUIRequestEvent(event);
&gt; 
&gt; Ditto.

Hi Ryosuke, could you take a look again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196197</commentid>
    <comment_count>18</comment_count>
      <attachid>206341</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-24 22:06:32 -0700</bug_when>
    <thetext>Comment on attachment 206341
patch

Assuming that patches for review since 2013 are stale, r-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242814</commentid>
    <comment_count>19</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2016-10-21 01:18:54 -0700</bug_when>
    <thetext>Closing. This approach/spec is no longer being pursued.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205303</attachid>
            <date>2013-06-24 09:36:43 -0700</date>
            <delta_ts>2013-06-24 10:02:14 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>31524</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MTkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDEzLTA2LTI0ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5kaWVVSTogU3VwcG9y
dCBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTczMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudCBpcyBtZWFu
dCB0byBwcm92aWRlIGEgd2F5IHRvIGFsdGVyIHRoZSB2YWx1ZXMgb2YgYW4gb2JqZWN0IAorICAg
ICAgICB0aHJvdWdoIGFsdGVybmF0aXZlIG1lYW5zLgorICAgICAgICAoRXhhbXBsZSwgYWxsb3cg
YSBzY3JlZW4gcmVhZGVyIHVzZXIgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiBhIGN1c3RvbSBzbGlk
ZXIpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcHJvdmlkZXMgdGhlIGZyYW1ld29yayBmb3IgdGhl
IGV2ZW50IGFuZCBhbHNvIHNlbmRzIHRoZSBldmVudCB3aGVuCisgICAgICAgIGEgc2xpZGVyIGlz
IGFza2VkIHRvIGJlIG1hbmlwdWxhdGVkIHRocm91Z2ggYWNjZXNzaWJpbGl0eS4KKworICAgICAg
ICBJdCBhbHNvIHByb3ZpZGVzIGFuIEludGVybmFscyB3YXkgdG8gZGlzcGF0Y2hpbmcgdGhlIGV2
ZW50IGZvciBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgVGVzdDogaW5kaWV1aS91aXZhbHVlY2hh
bmdlcmVxdWVzdC5odG1sCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kaWV1aS9VSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50SW5pdDo6VUlWYWx1
ZUNoYW5nZVJlcXVlc3RFdmVudEluaXQpOgorICAgICAgICAoV2ViQ29yZTo6VUlWYWx1ZUNoYW5n
ZVJlcXVlc3RFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlVJVmFsdWVDaGFuZ2VS
ZXF1ZXN0RXZlbnQ6OlVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudDo6flVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudDo6aW50ZXJmYWNl
TmFtZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRpZXVpL1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZl
bnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50
OjpjaGFuZ2VUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGlldWkvVUlWYWx1ZUNoYW5nZVJl
cXVlc3RFdmVudC5pZGw6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp1aUFjdGlvbk5hbWVGb3JSZXF1ZXN0RXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnJlY2VpdmVyRm9yVUlSZXF1
ZXN0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFs
dGVyU2xpZGVyVmFsdWUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3QuaDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9F
dmVudE5hbWVzLmluOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6c2VuZFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQpOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
aWRsOgorCiAyMDEzLTA2LTI0ICBDaHJpcyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgV2F2ZVRhYmxlIG5hbWUgaGFzIGNoYW5nZWQgdG8gUGVyaW9kaWNXYXZlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDE1MTgyNykKKysrIFNvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExMiw2ICsx
MTIsNyBAQAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5n
ZUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJDb250
ZXh0SW5kZXhlZERhdGFiYXNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2luZGlldWkv
VUlSZXF1ZXN0RXZlbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvaW5kaWV1aS9VSVZh
bHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlh
c291cmNlL01lZGlhU291cmNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXJMaXN0LmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGlldWkvVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRpZXVpL1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRpZXVpL1VJVmFsdWVDaGFu
Z2VSZXF1ZXN0RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5oIgorCisjaWYgRU5BQkxF
KElORElFX1VJKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitVSVZhbHVlQ2hhbmdlUmVx
dWVzdEV2ZW50SW5pdDo6VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudEluaXQoKQorICAgIDogY2hh
bmdlVHlwZShVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50OjpVTktOT1dOKQoreworfQorCitQYXNz
UmVmUHRyPFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQ+IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZl
bnQ6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVSVZhbHVlQ2hhbmdlUmVx
dWVzdEV2ZW50KTsKK30KKworUGFzc1JlZlB0cjxVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50PiBV
SVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBjb25zdCBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50KHR5cGUsIGlu
aXRpYWxpemVyKSk7Cit9CisKK1Bhc3NSZWZQdHI8VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudD4g
VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3
PiB2aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRldGFpbCwgUGFzc1JlZlB0cjxFdmVudFRhcmdl
dD4gcmVjZWl2ZXIsIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnRDaGFuZ2VUeXBlIGNoYW5nZVR5
cGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50
KHR5cGUsIGJ1YmJsZXMsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCwgcmVjZWl2ZXIsIGNoYW5n
ZVR5cGUpKTsKK30KKworVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudDo6VUlWYWx1ZUNoYW5nZVJl
cXVlc3RFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFVJVmFsdWVDaGFuZ2VS
ZXF1ZXN0RXZlbnRJbml0JiBpbml0aWFsaXplcikKKyAgICA6IFVJUmVxdWVzdEV2ZW50KHR5cGUs
IGluaXRpYWxpemVyLmJ1YmJsZXMsIGluaXRpYWxpemVyLmNhbmNlbGFibGUsIGluaXRpYWxpemVy
LnZpZXcsIGluaXRpYWxpemVyLmRldGFpbCwgaW5pdGlhbGl6ZXIucmVjZWl2ZXIpCisgICAgLCBt
X2NoYW5nZVR5cGUoc3RhdGljX2Nhc3Q8VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudENoYW5nZVR5
cGU+KGluaXRpYWxpemVyLmNoYW5nZVR5cGUpKQoreworfQorCitVSVZhbHVlQ2hhbmdlUmVxdWVz
dEV2ZW50OjpVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3
PiB2aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgZGV0YWlsLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiByZWNlaXZlciwgVUlWYWx1
ZUNoYW5nZVJlcXVlc3RFdmVudENoYW5nZVR5cGUgY2hhbmdlVHlwZSkKKyAgICA6IFVJUmVxdWVz
dEV2ZW50KHR5cGUsIGJ1YmJsZXMsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCwgcmVjZWl2ZXIp
CisgICAgLCBtX2NoYW5nZVR5cGUoY2hhbmdlVHlwZSkKK3sKK30KKworVUlWYWx1ZUNoYW5nZVJl
cXVlc3RFdmVudDo6VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudCgpCisgICAgOiBtX2NoYW5nZVR5
cGUoVU5LTk9XTikKK3sKK30KKworVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudDo6flVJVmFsdWVD
aGFuZ2VSZXF1ZXN0RXZlbnQoKQoreworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFVJVmFsdWVD
aGFuZ2VSZXF1ZXN0RXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBl
dmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudDsKK30KKyAg
ICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRJRV9VSSkK
KwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRpZXVpL1VJVmFsdWVDaGFuZ2VSZXF1
ZXN0RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGlldWkv
VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRpZXVpL1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50X2gKKyNkZWZpbmUg
VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudF9oCisKKyNpbmNsdWRlICJVSVJlcXVlc3RFdmVudC5o
IgorCisjaWYgRU5BQkxFKElORElFX1VJKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitz
dHJ1Y3QgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudEluaXQgOiBwdWJsaWMgVUlSZXF1ZXN0RXZl
bnRJbml0IHsKKyAgICBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50SW5pdCgpOworICAgIAorICAg
IHVuc2lnbmVkIHNob3J0IGNoYW5nZVR5cGU7Cit9OworCitjbGFzcyBVSVZhbHVlQ2hhbmdlUmVx
dWVzdEV2ZW50IDogcHVibGljIFVJUmVxdWVzdEV2ZW50IHsKK3B1YmxpYzoKKyAgICBlbnVtIFVJ
VmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnRDaGFuZ2VUeXBlIHsKKyAgICAgICAgVU5LTk9XTiA9IDAs
CisgICAgICAgIElOQ1JFTUVOVCA9IDEsCisgICAgICAgIElOQ1JFTUVOVF9TTUFMTCA9IDIsCisg
ICAgICAgIElOQ1JFTUVOVF9MQVJHRSA9IDMsCisgICAgICAgIElOQ1JFTUVOVF9NQVggPSA0LAor
ICAgICAgICBERUNSRU1FTlQgPSA1LAorICAgICAgICBERUNSRU1FTlRfU01BTEwgPSA2LAorICAg
ICAgICBERUNSRU1FTlRfTEFSR0UgPSA3LAorICAgICAgICBERUNSRU1FTlRfTUlOID0gOAorICAg
IH07CisgICAgCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVu
dD4gY3JlYXRlKCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VUlWYWx1ZUNoYW5nZVJlcXVlc3RF
dmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBidWJibGVzLCBib29s
IGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXRhaWwsIFBh
c3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHJlY2VpdmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlWYWx1ZUNoYW5nZVJlcXVlc3RF
dmVudENoYW5nZVR5cGUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVJVmFsdWVDaGFuZ2VSZXF1
ZXN0RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgVUlW
YWx1ZUNoYW5nZVJlcXVlc3RFdmVudEluaXQmKTsKKyAgICAKKyAgICB2aXJ0dWFsIH5VSVZhbHVl
Q2hhbmdlUmVxdWVzdEV2ZW50KCk7CisgICAgCisgICAgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVu
dENoYW5nZVR5cGUgY2hhbmdlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbmdlVHlwZTsgfQor
ICAgIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgCitwcm90ZWN0ZWQ6CisgICAgVUlWYWx1ZUNoYW5nZVJlcXVlc3RF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxh
YmxlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGRldGFpbCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gcmVjZWl2ZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVu
dENoYW5nZVR5cGUpOworICAgIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBjb25zdCBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50SW5pdCYpOworICAg
IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgVUlWYWx1
ZUNoYW5nZVJlcXVlc3RFdmVudENoYW5nZVR5cGUgbV9jaGFuZ2VUeXBlOworfTsKKyAgICAKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRJRV9VSSkKKworI2Vu
ZGlmIC8vIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRpZXVpL1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kaWV1aS9VSVZhbHVlQ2hhbmdlUmVxdWVzdEV2
ZW50LmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kaWV1aS9V
SVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisgCitbCisg
ICAgQ29uZGl0aW9uYWw9SU5ESUVfVUksCisgICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudAor
XSBpbnRlcmZhY2UgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudCA6IFVJUmVxdWVzdEV2ZW50IHsK
KyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBVTktOT1dOID0gMDsKKyAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBJTkNSRU1FTlQgPSAxOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IElOQ1JFTUVO
VF9TTUFMTCA9IDI7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSU5DUkVNRU5UX0xBUkdFID0g
MzsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBJTkNSRU1FTlRfTUFYID0gNDsKKyAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBERUNSRU1FTlQgPSA1OworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
IERFQ1JFTUVOVF9TTUFMTCA9IDY7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgREVDUkVNRU5U
X0xBUkdFID0gNzsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBERUNSRU1FTlRfTUlOID0gODsK
KyAgICAKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgY2hhbmdlVHlwZTsK
K307CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNTE4MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjQ4MSw2ICsyNDgx
LDEyIEBACiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzOHNldEhpZGRlblBhZ2VET01UaW1lclRocm90
dGxpbmdFbmFibGVkRWIKICNlbmRpZgogCisjaWYgRU5BQkxFKElORElFX1VJKQorX19aTjdXZWJD
b3JlMjVVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50NmNyZWF0ZUVSS04zV1RGMTJBdG9taWNTdHJp
bmdFUktOU18yOVVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnRJbml0RQorX19aTjdXZWJDb3JlMjlV
SVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50SW5pdEMxRXYKK19fWk43V2ViQ29yZTROb2RlMjJkaXNw
YXRjaFVJUmVxdWVzdEV2ZW50RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE0VUlSZXF1ZXN0RXZlbnRF
RUUKKyNlbmRpZgorCiAjaWYgRU5BQkxFKElDT05EQVRBQkFTRSkKIF9fWk43V2ViQ29yZTEySWNv
bkRhdGFiYXNlMTBzZXRFbmFibGVkRWIKIF9fWk43V2ViQ29yZTEySWNvbkRhdGFiYXNlMTFkZWZh
dWx0SWNvbkVSS05TXzdJbnRTaXplRQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTUxODI3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0zODM3LDYgKzM4MzcsOSBAQAogCQlBQTJBNUFENTE2QTQ4NjE0MDA5NzVBMjUgLyogU3Bl
ZWNoU3ludGhlc2lzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFBMkE1QUJEMTZBNDg1RDUwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXMuY3BwICov
OyB9OwogCQlBQTJBNUFENjE2QTQ4NjE2MDA5NzVBMjUgLyogRE9NV2luZG93U3BlZWNoU3ludGhl
c2lzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTJB
NUFCOTE2QTQ4NUQ1MDA5NzVBMjUgLyogRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmggKi87IH07
CiAJCUFBMkE1QUQ3MTZBNDg2MUEwMDk3NUEyNSAvKiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUEyQTVB
QjgxNkE0ODVENTAwOTc1QTI1IC8qIERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAgKi87IH07
CisJCUFBMzczRjIxMTc3NERCQzMwMEE0MzE2MCAvKiBKU1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUEz
NzNGMUYxNzc0REI3RjAwQTQzMTYwIC8qIEpTVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5jcHAg
Ki87IH07CisJCUFBMzczRjIyMTc3NERCRDQwMEE0MzE2MCAvKiBKU1VJVmFsdWVDaGFuZ2VSZXF1
ZXN0RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFBMzczRjIwMTc3NERCN0YwMEE0MzE2MCAvKiBKU1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQu
aCAqLzsgfTsKKwkJQUE0MzJBN0YxNzc0QURGRDAwMURBMkFEIC8qIFVJVmFsdWVDaGFuZ2VSZXF1
ZXN0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQUE0MzJBN0MxNzc0QURGOTAwMURBMkFEIC8qIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQu
Y3BwICovOyB9OwogCQlBQTQ3MzlEMTE3NTdBRkVDMDBFNzY3NjcgLyogVUlSZXF1ZXN0RXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE0NzM5
Q0YxNzU3QUZFQzAwRTc2NzY3IC8qIFVJUmVxdWVzdEV2ZW50LmNwcCAqLzsgfTsKIAkJQUE0NzM5
RDIxNzU3QUZFQzAwRTc2NzY3IC8qIFVJUmVxdWVzdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTQ3MzlEMDE3NTdBRkVDMDBFNzY3NjcgLyog
VUlSZXF1ZXN0RXZlbnQuaCAqLzsgfTsKIAkJQUE0NzhBN0YxNkNENzBDMzAwN0QxQkI0IC8qIFdl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTQ3OEE3RDE2Q0Q3MEMzMDA3RDFCQjQgLyogV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCAqLzsgfTsKQEAgLTEwMzQzLDYgKzEwMzQ2LDEx
IEBACiAJCUFBMkE1QUM2MTZBNDg1RDUwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXNWb2ljZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTcGVlY2hTeW50aGVzaXNWb2ljZS5jcHA7IHBhdGggPSBN
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUFBMkE1QUM3MTZBNDg1RDUwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXNW
b2ljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBTcGVlY2hTeW50aGVzaXNWb2ljZS5oOyBwYXRoID0gTW9k
dWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQUEyQTVBQzgxNkE0ODVENTAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpc1ZvaWNl
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBTcGVlY2hTeW50aGVzaXNWb2ljZS5pZGw7IHBhdGggPSBNb2R1bGVzL3NwZWVj
aC9TcGVlY2hTeW50aGVzaXNWb2ljZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUFBMzczRjFGMTc3NERCN0YwMEE0MzE2MCAvKiBKU1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmNwcDsg
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlBQTM3M0YyMDE3NzREQjdGMDBBNDMxNjAg
LyogSlNVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVUlWYWx1
ZUNoYW5nZVJlcXVlc3RFdmVudC5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUFB
NDMyQTdDMTc3NEFERjkwMDFEQTJBRCAvKiBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuY3BwOyBwYXRoID0g
TW9kdWxlcy9pbmRpZXVpL1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBQTQzMkE3RDE3NzRBREY5MDAxREEyQUQgLyogVUlWYWx1ZUNo
YW5nZVJlcXVlc3RFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2
ZW50Lmg7IHBhdGggPSBNb2R1bGVzL2luZGlldWkvVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBQTQzMkE3RTE3NzRBREY5MDAxREEyQUQg
LyogVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gVUlWYWx1ZUNoYW5nZVJlcXVl
c3RFdmVudC5pZGw7IHBhdGggPSBNb2R1bGVzL2luZGlldWkvVUlWYWx1ZUNoYW5nZVJlcXVlc3RF
dmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBNDczOUNGMTc1N0FGRUMw
MEU3Njc2NyAvKiBVSVJlcXVlc3RFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBVSVJlcXVlc3RFdmVudC5jcHA7IHBhdGggPSBNb2R1bGVzL2luZGlldWkvVUlS
ZXF1ZXN0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTQ3MzlEMDE3
NTdBRkVDMDBFNzY3NjcgLyogVUlSZXF1ZXN0RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gVUlSZXF1ZXN0RXZlbnQuaDsgcGF0aCA9IE1vZHVsZXMvaW5kaWV1aS9VSVJl
cXVlc3RFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTQ3OEE3RDE2Q0Q3
MEMzMDA3RDFCQjQgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NTk2LDYgKzE3NjA0LDkgQEAK
IAkJCQlBQTQ3MzlDRjE3NTdBRkVDMDBFNzY3NjcgLyogVUlSZXF1ZXN0RXZlbnQuY3BwICovLAog
CQkJCUFBNDczOUQwMTc1N0FGRUMwMEU3Njc2NyAvKiBVSVJlcXVlc3RFdmVudC5oICovLAogCQkJ
CUFBN0VBMEFBMTc1NTdCOTAwMERGNDY0MyAvKiBVSVJlcXVlc3RFdmVudC5pZGwgKi8sCisJCQkJ
QUE0MzJBN0MxNzc0QURGOTAwMURBMkFEIC8qIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuY3Bw
ICovLAorCQkJCUFBNDMyQTdEMTc3NEFERjkwMDFEQTJBRCAvKiBVSVZhbHVlQ2hhbmdlUmVxdWVz
dEV2ZW50LmggKi8sCisJCQkJQUE0MzJBN0UxNzc0QURGOTAwMURBMkFEIC8qIFVJVmFsdWVDaGFu
Z2VSZXF1ZXN0RXZlbnQuaWRsICovLAogCQkJKTsKIAkJCW5hbWUgPSBpbmRpZXVpOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE3NjIwLDYgKzE3NjMxLDggQEAKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCUFBQTRGQUNGMTc1RDVDQjMwMDc0Mzg3MyAvKiBKU1VJUmVxdWVzdEV2ZW50LmNw
cCAqLywKIAkJCQlBQUE0RkFDRTE3NUQ1Q0IzMDA3NDM4NzMgLyogSlNVSVJlcXVlc3RFdmVudC5o
ICovLAorCQkJCUFBMzczRjFGMTc3NERCN0YwMEE0MzE2MCAvKiBKU1VJVmFsdWVDaGFuZ2VSZXF1
ZXN0RXZlbnQuY3BwICovLAorCQkJCUFBMzczRjIwMTc3NERCN0YwMEE0MzE2MCAvKiBKU1VJVmFs
dWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gSW5kaWVVSTsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMTQ1NCw2ICsyMTQ2Nyw3IEBACiAJCQkJODVE
RjJGOEUwQUEzQzg4MTAwQUQ2NEM1IC8qIERPTUhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NUU3MTFBMjBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTENvbGxlY3Rpb25JbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjVDMDQxRTMwRkZDQTk2RDAwODM5RDRBIC8qIERP
TUhUTUxEYXRhTGlzdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUFBMzczRjIyMTc3NERC
RDQwMEE0MzE2MCAvKiBKU1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUY1QzA0MUU1MEZGQ0E5NkQwMDgzOUQ0QSAvKiBET01IVE1MRGF0YUxpc3RFbGVtZW50
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUQzNTlENzkxMTI5Q0EzQzAwMDA2RTVEMiAv
KiBET01IVE1MRGV0YWlsc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUQzNTlENzkzMTI5
Q0EzQzAwMDA2RTVEMiAvKiBET01IVE1MRGV0YWlsc0VsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNTkwNCw2ICsyNTkxOCw3IEBACiAJCQkJNDlDN0I5QTQxMDQyRDJEMzAwMDlE
NDQ3IC8qIEpTV2ViR0xUZXh0dXJlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBDNDUzNDI3MTBD
REJCRkEwMDg2OTE1NyAvKiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTc3RUY2MkYzMTJGOURCNzQwMEM3N0JEMiAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUE0MzJBN0YxNzc0QURGRDAwMURBMkFEIC8q
IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFDMEZG
M0QwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTcxOTdGMjYxNzU2OEFFNTAwN0I5NDQyIC8qIFBhZ2VUaHJvdHRsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTJFOEFFMzcxNkE0OTg0MDAwNkJCM0FBIC8qIEpTV2ViS2l0
Q1NTRmlsdGVyUnVsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2MjI1LDYgKzI2MjQwLDcgQEAK
IAkJCQkwODY0MUQ0NzEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxl
SW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NzcwOTdEOTMwMjAwOTRDOUU0IC8q
IFJlbmRlcklubGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg3OTA5N0Q5MzAyMDA5
NEM5RTQgLyogUmVuZGVyTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUEzNzNGMjExNzc0
REJDMzAwQTQzMTYwIC8qIEpTVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjU4MEQwMDBGMTJERTlCMDA1MUQ2ODkgLyogUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTgwQ0ZFMEYxMkRFOUIwMDUxRDY4OSAvKiBSZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTBEMTBEOTkxNTQ1RjU3
NjAwOTZEMjg4IC8qIFJlbmRlckxheWVyRmlsdGVySW5mby5jcHAgaW4gU291cmNlcyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3QuY3BwCShyZXZpc2lvbiAxNTE4MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODAsNiArODAsMTEgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAorI2lmIEVOQUJMRShJTkRJ
RV9VSSkKKyNpbXBvcnQgIlVJUmVxdWVzdEV2ZW50LmgiCisjaW1wb3J0ICJVSVZhbHVlQ2hhbmdl
UmVxdWVzdEV2ZW50LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMTAwNiwxMiArMTAxMSw2MiBAQAogCiAgICAgcmV0dXJuIGZhbHNl
OwogfQorICAgIAorI2lmIEVOQUJMRShJTkRJRV9VSSkKK2NvbnN0IEF0b21pY1N0cmluZyYgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnVpQWN0aW9uTmFtZUZvclJlcXVlc3RFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IEF0b21pY1N0cmluZywgdmFsdWVDaGFuZ2VBY3Rpb24sICgidmFsdWVjaGFuZ2UiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIG5vQWN0aW9uLCAoKSk7CiAKKyAgICBpZiAoZXZlbnROYW1lID09
IGV2ZW50TmFtZXMoKS52YWx1ZWNoYW5nZXJlcXVlc3RFdmVudCkKKyAgICAgICAgcmV0dXJuIHZh
bHVlQ2hhbmdlQWN0aW9uOworICAgIAorICAgIHJldHVybiBub0FjdGlvbjsKK30KKyAgICAKK05v
ZGUqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpyZWNlaXZlckZvclVJUmVxdWVzdEV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQoreworICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5u
b2RlKCk7CisgICAgaWYgKCFub2RlIHx8ICFub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAg
IHJldHVybiAwOworICAgIAorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdWlBY3Rpb25OYW1lID0g
dWlBY3Rpb25OYW1lRm9yUmVxdWVzdEV2ZW50KGV2ZW50TmFtZSk7CisgICAgZm9yIChFbGVtZW50
KiBlbGVtZW50ID0gdG9FbGVtZW50KG5vZGUpOyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+
cGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgIGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlKHVp
YWN0aW9uc0F0dHIpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBT
dHJpbmcgdWlBY3Rpb25WYWx1ZSA9IGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUodWlhY3Rpb25z
QXR0cikuc3RyaW5nKCk7CisgICAgICAgIAorICAgICAgICBWZWN0b3I8U3RyaW5nPiB1aUFjdGlv
bnM7CisgICAgICAgIHVpQWN0aW9uVmFsdWUuc3BsaXQoJyAnLCB1aUFjdGlvbnMpOworICAgICAg
ICBpZiAodWlBY3Rpb25zLmNvbnRhaW5zKHVpQWN0aW9uTmFtZSkpCisgICAgICAgICAgICByZXR1
cm4gZWxlbWVudDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogdm9p
ZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJTbGlkZXJWYWx1ZShib29sIGluY3JlYXNl
KQogewogICAgIGlmIChyb2xlVmFsdWUoKSAhPSBTbGlkZXJSb2xlKQogICAgICAgICByZXR1cm47
CiAKKyNpZiBFTkFCTEUoSU5ESUVfVUkpCisgICAgLy8gQVJJQSBzbGlkZXJzIHNob3VsZCB1c2Ug
SW5kaWVVSSB0byBrbm93IHdoZW4gdG8gY2F1c2UgYW4gdXBkYXRlCisgICAgaWYgKG5vZGUoKSAm
JiBhcmlhUm9sZUF0dHJpYnV0ZSgpID09IFNsaWRlclJvbGUpIHsKKyAgICAgICAgTm9kZSogcmVj
ZWl2ZXIgPSByZWNlaXZlckZvclVJUmVxdWVzdEV2ZW50KGV2ZW50TmFtZXMoKS52YWx1ZWNoYW5n
ZXJlcXVlc3RFdmVudCk7CisgICAgICAgIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnRJbml0IGV2
ZW50SW5pdDsKKyAgICAgICAgZXZlbnRJbml0LmNoYW5nZVR5cGUgPSBpbmNyZWFzZSA/IFVJVmFs
dWVDaGFuZ2VSZXF1ZXN0RXZlbnQ6OklOQ1JFTUVOVCA6IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZl
bnQ6OkRFQ1JFTUVOVDsKKyAgICAgICAgZXZlbnRJbml0LnJlY2VpdmVyID0gcmVjZWl2ZXI7Cisg
ICAgICAgIAorICAgICAgICBSZWZQdHI8VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudD4gZXZlbnQg
PSBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnZhbHVlY2hh
bmdlcmVxdWVzdEV2ZW50LCBldmVudEluaXQpOworCisgICAgICAgIG5vZGUoKS0+ZGlzcGF0Y2hV
SVJlcXVlc3RFdmVudChldmVudCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAg
ICAKICAgICBpZiAoIWdldEF0dHJpYnV0ZShzdGVwQXR0cikuaXNFbXB0eSgpKQogICAgICAgICBj
aGFuZ2VWYWx1ZUJ5U3RlcChpbmNyZWFzZSk7CiAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAko
cmV2aXNpb24gMTUxODI5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNiArMTk4LDExIEBACiAg
ICAgU3RyaW5nIGFsdGVybmF0aXZlVGV4dEZvcldlYkFyZWEoKSBjb25zdDsKICAgICB2b2lkIGFy
aWFMYWJlbGVkQnlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKKyAgICAK
KyNpZiBFTkFCTEUoSU5ESUVfVUkpCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB1aUFjdGlvbk5h
bWVGb3JSZXF1ZXN0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgTm9kZSogcmVjZWl2
ZXJGb3JVSVJlcXVlc3RFdmVudChjb25zdCBBdG9taWNTdHJpbmcmKTsKKyNlbmRpZgogfTsKIAog
aW5saW5lIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KiB0b0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudE5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMu
aAkocmV2aXNpb24gMTUxODI1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjUyLDYgKzI1Miw4IEBACiAgICAgXAogICAgIG1hY3JvKHdlYmtp
dHJlc291cmNldGltaW5nYnVmZmVyZnVsbCkgXAogICAgIFwKKyAgICBtYWNybyh2YWx1ZWNoYW5n
ZXJlcXVlc3QpIFwKKyAgICBcCiAgICAgbWFjcm8od2Via2l0ZGV2aWNlcHJveGltaXR5KSBcCiAg
ICAgXAogICAgIG1hY3JvKHNlY3VyaXR5cG9saWN5dmlvbGF0aW9uKSBcCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnROYW1lcy5pbgkocmV2aXNpb24gMTUxODI3KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTU4LDQgKzU4LDUgQEAKIENTU0ZvbnRG
YWNlTG9hZEV2ZW50IGNvbmRpdGlvbmFsPUZPTlRfTE9BRF9FVkVOVFMKIFNlY3VyaXR5UG9saWN5
VmlvbGF0aW9uRXZlbnQgY29uZGl0aW9uYWw9Q1NQX05FWFQKIFVJUmVxdWVzdEV2ZW50IGNvbmRp
dGlvbmFsPUlORElFX1VJCitVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50IGNvbmRpdGlvbmFsPUlO
RElFX1VJCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9u
IDE1MTgyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQAogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIlRyZWVTY29wZS5oIgogI2luY2x1ZGUgIlR5cGVDb252ZXJzaW9ucy5oIgorI2luY2x1
ZGUgIlVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3Vt
ZW50cy5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KQEAgLTIwNTMsNiArMjA1NCwxOSBAQAogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
SU5ESUVfVUkpCit2b2lkIEludGVybmFsczo6c2VuZFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQo
RG9jdW1lbnQqLCBOb2RlKiB0YXJnZXQsIE5vZGUqIHJlY2VpdmVyLCB1bnNpZ25lZCBzaG9ydCBj
aGFuZ2VUeXBlLCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2
ZW50SW5pdCBldmVudEluaXQ7CisgICAgZXZlbnRJbml0LmNoYW5nZVR5cGUgPSBjaGFuZ2VUeXBl
OworICAgIGV2ZW50SW5pdC5yZWNlaXZlciA9IHJlY2VpdmVyOworICAgIAorICAgIFJlZlB0cjxV
SVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50PiBldmVudCA9IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkudmFsdWVjaGFuZ2VyZXF1ZXN0RXZlbnQsIGV2ZW50SW5p
dCk7CisgICAgCisgICAgdGFyZ2V0LT5kaXNwYXRjaFVJUmVxdWVzdEV2ZW50KGV2ZW50KTsKK30K
KyNlbmRpZgorCiBib29sIEludGVybmFsczo6aXNTZWxlY3RQb3B1cFZpc2libGUoTm9kZSogbm9k
ZSkKIHsKICAgICBpZiAoIWlzSFRNTFNlbGVjdEVsZW1lbnQobm9kZSkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDE1MTgyNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw2ICsyMTcsMTAgQEAK
IAogICAgIHZvaWQgc2V0RGV2aWNlUHJveGltaXR5KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBl
dmVudFR5cGUsIGRvdWJsZSB2YWx1ZSwgZG91YmxlIG1pbiwgZG91YmxlIG1heCwgRXhjZXB0aW9u
Q29kZSYpOwogCisjaWYgRU5BQkxFKElORElFX1VJKQorICAgIHZvaWQgc2VuZFVJVmFsdWVDaGFu
Z2VSZXF1ZXN0RXZlbnQoRG9jdW1lbnQqLCBOb2RlKiB0YXJnZXQsIE5vZGUqIHJlY2VpdmVyLCB1
bnNpZ25lZCBzaG9ydCBjaGFuZ2VUeXBlLCBFeGNlcHRpb25Db2RlJik7CisjZW5kaWYKKwogICAg
IGVudW0gewogICAgICAgICAvLyBWYWx1ZXMgbmVlZCB0byBiZSBrZXB0IGluIHN5bmMgd2l0aCBJ
bnRlcm5hbHMuaWRsLgogICAgICAgICBMQVlFUl9UUkVFX0lOQ0xVREVTX1ZJU0lCTEVfUkVDVFMg
PSAxLApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMTUx
ODI1KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTUsNiArMjU1LDggQEAKIAogICAgIFtDb25kaXRpb25hbD1WSURFT10gdm9pZCBz
aW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9uKE5vZGUgbm9kZSk7CiAKKyAgICBbQ29uZGl0aW9uYWw9
SU5ESUVfVUksIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZW5kVUlWYWx1ZUNoYW5nZVJlcXVlc3RF
dmVudChEb2N1bWVudCBkb2N1bWVudCwgTm9kZSB0YXJnZXQsIE5vZGUgcmVjZWl2ZXIsIHVuc2ln
bmVkIHNob3J0IGNoYW5nZVR5cGUpOworCiAgICAgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJ
QV9WMl0gdm9pZCBpbml0aWFsaXplTW9ja0NETSgpOwogCiAgICAgW0NvbmRpdGlvbmFsPVNQRUVD
SF9TWU5USEVTSVNdIHZvaWQgZW5hYmxlTW9ja1NwZWVjaFN5bnRoZXNpemVyKCk7CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNTE5MTUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wNi0yNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXph
Y2hAYXBwbGUuY29tPgorCisgICAgICAgIEluZGllVUk6IFN1cHBvcnQgVUlWYWx1ZUNoYW5nZVJl
cXVlc3RFdmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE3MzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBmYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaW5kaWV1aS91aXZhbHVlY2hhbmdlcmVxdWVzdC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGluZGlldWkvdWl2YWx1ZWNoYW5nZXJlcXVlc3QuaHRtbDogQWRkZWQu
CisKIDIwMTMtMDYtMjQgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBXYXZlVGFibGUgbmFtZSBoYXMgY2hhbmdlZCB0byBQZXJpb2RpY1dhdmUKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3Rv
cnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1MTkxNSkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMTc4OCw2ICsxNzg4LDExIEBACiBQQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnVUlSZXF1ZXN0RXZlbnQnKS5oYXNPd25Qcm9wZXJ0
eSgnc2V0JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihn
bG9iYWwsICdVSVJlcXVlc3RFdmVudCcpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdVSVJlcXVlc3RFdmVudCcpLmNvbmZp
Z3VyYWJsZSBpcyB0cnVlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xv
YmFsLCAnVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudCcpLnZhbHVlIGlzIFVJVmFsdWVDaGFuZ2VS
ZXF1ZXN0RXZlbnQKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWws
ICdVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50JykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZh
bHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnVUlWYWx1
ZUNoYW5nZVJlcXVlc3RFdmVudCcpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQorUEFT
UyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1VJVmFsdWVDaGFuZ2VS
ZXF1ZXN0RXZlbnQnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudCcpLmNvbmZp
Z3VyYWJsZSBpcyB0cnVlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xv
YmFsLCAnVVJMJykudmFsdWUgaXMgVVJMCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZ2xvYmFsLCAnVVJMJykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCiBQQVNT
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnVVJMJykuaGFzT3duUHJv
cGVydHkoJ3NldCcpIGlzIGZhbHNlCkluZGV4OiBMYXlvdXRUZXN0cy9pbmRpZXVpL3VpdmFsdWVj
aGFuZ2VyZXF1ZXN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbmRp
ZXVpL3VpdmFsdWVjaGFuZ2VyZXF1ZXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2luZGlldWkvdWl2YWx1ZWNoYW5nZXJlcXVlc3QtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKK3NsaWRlcgorVGhpcyB0ZXN0cyB0aGF0IFVJVmFs
dWVDaGFuZ2VSZXF1ZXN0cyBhcmUgcmVjZWl2ZWQgcHJvcGVybHkKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1ZlcmlmeSB0aGF0IHRoZSB2YWx1ZSBjaGFuZ2UgcmVxdWVzdHMgZ2Vu
ZXJhdGVkIHRocm91Z2ggSW50ZXJuYWxzIGFyZSByZWNlaXZlZC4KK0V2ZW50IHJlY2VpdmVyOiBz
bGlkZXIKK0NoYW5nZSB0eXBlOiAxCisKK0V2ZW50IHJlY2VpdmVyOiBzbGlkZXIKK0NoYW5nZSB0
eXBlOiA1CisKKworVmVyaWZ5IHRoYXQgaW5jcmVtZW50aW5nL2RlY3JlbWVudGluZyB0aHJvdWdo
IGFjY2Vzc2liaWxpdHkgYWxzbyBnZW5lcmF0ZXMgZXZlbnRzLgorRXZlbnQgcmVjZWl2ZXI6IHNs
aWRlcgorQ2hhbmdlIHR5cGU6IDEKKworRXZlbnQgcmVjZWl2ZXI6IHNsaWRlcgorQ2hhbmdlIHR5
cGU6IDUKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2luZGlldWkvdWl2YWx1ZWNoYW5nZXJlcXVlc3QuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbmRpZXVpL3VpdmFsdWVjaGFuZ2VyZXF1ZXN0Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9pbmRpZXVpL3VpdmFsdWVjaGFuZ2VyZXF1
ZXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBpZD0iYm9keSI+CisKKzxkaXYgdWlhY3Rpb25zPSJ2YWx1ZWNoYW5nZSIgaWQ9
InNsaWRlciIgcm9sZT0ic2xpZGVyIj5zbGlkZXI8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBVSVZh
bHVlQ2hhbmdlUmVxdWVzdHMgYXJlIHJlY2VpdmVkIHByb3Blcmx5Iik7CisKKyAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIGRvY3VtZW50LmJvZHkuYWRkRXZl
bnRMaXN0ZW5lcigndmFsdWVjaGFuZ2VyZXF1ZXN0JywgdmFsdWVDaGFuZ2VIYW5kbGVyKTsKKyAg
ICB2YXIgaGFuZGxlckNvdW50ID0gMDsKKyAgICBmdW5jdGlvbiB2YWx1ZUNoYW5nZUhhbmRsZXIo
ZSkgeworICAgICAgCisgICAgICAgIGRlYnVnKCJFdmVudCByZWNlaXZlcjogIiArIGUucmVjZWl2
ZXIuaWQpOworICAgICAgICBkZWJ1ZygiQ2hhbmdlIHR5cGU6ICIgKyBlLmNoYW5nZVR5cGUgKyAi
XG4iKTsKKyAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgZS5wcmV2ZW50RGVm
YXVsdCgpOworCisgICAgICAgIGhhbmRsZXJDb3VudCsrOworCisgICAgICAgIGlmIChoYW5kbGVy
Q291bnQgPT0gNCkKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKworICAgIGRl
YnVnKCJWZXJpZnkgdGhhdCB0aGUgdmFsdWUgY2hhbmdlIHJlcXVlc3RzIGdlbmVyYXRlZCB0aHJv
dWdoIEludGVybmFscyBhcmUgcmVjZWl2ZWQuIik7CisgICAgaW50ZXJuYWxzLnNlbmRVSVZhbHVl
Q2hhbmdlUmVxdWVzdEV2ZW50KGRvY3VtZW50LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2xp
ZGVyIiksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzbGlkZXIiKSwgVUlWYWx1ZUNoYW5nZVJl
cXVlc3RFdmVudC5JTkNSRU1FTlQpOworICAgIGludGVybmFscy5zZW5kVUlWYWx1ZUNoYW5nZVJl
cXVlc3RFdmVudChkb2N1bWVudCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNsaWRlciIpLCBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2xpZGVyIiksIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZl
bnQuREVDUkVNRU5UKTsKKworICAgIC8vIFRoaXMgaXMgYWxzbyBob29rZWQgdXAgdGhyb3VnaCBh
Y2Nlc3NpYmlsaXR5LgorICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsK
KyAgICAgICB2YXIgYXhTbGlkZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoInNsaWRlciIpOworICAgICAgIGRlYnVnKCJcblZlcmlmeSB0aGF0IGluY3Jl
bWVudGluZy9kZWNyZW1lbnRpbmcgdGhyb3VnaCBhY2Nlc3NpYmlsaXR5IGFsc28gZ2VuZXJhdGVz
IGV2ZW50cy4iKTsKKyAgICAgICBheFNsaWRlci5pbmNyZW1lbnQoKTsKKyAgICAgICBheFNsaWRl
ci5kZWNyZW1lbnQoKTsKKyAgICB9CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4K
</data>
<flag name="commit-queue"
          id="226805"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205307</attachid>
            <date>2013-06-24 10:02:14 -0700</date>
            <delta_ts>2013-07-09 10:42:09 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>31620</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MTkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDEzLTA2LTI0ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5kaWVVSTogU3VwcG9y
dCBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTczMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudCBpcyBtZWFu
dCB0byBwcm92aWRlIGEgd2F5IHRvIGFsdGVyIHRoZSB2YWx1ZXMgb2YgYW4gb2JqZWN0IAorICAg
ICAgICB0aHJvdWdoIGFsdGVybmF0aXZlIG1lYW5zLgorICAgICAgICAoRXhhbXBsZSwgYWxsb3cg
YSBzY3JlZW4gcmVhZGVyIHVzZXIgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiBhIGN1c3RvbSBzbGlk
ZXIpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcHJvdmlkZXMgdGhlIGZyYW1ld29yayBmb3IgdGhl
IGV2ZW50IGFuZCBhbHNvIHNlbmRzIHRoZSBldmVudCB3aGVuCisgICAgICAgIGEgc2xpZGVyIGlz
IGFza2VkIHRvIGJlIG1hbmlwdWxhdGVkIHRocm91Z2ggYWNjZXNzaWJpbGl0eS4KKworICAgICAg
ICBJdCBhbHNvIHByb3ZpZGVzIGFuIEludGVybmFscyB3YXkgdG8gZGlzcGF0Y2hpbmcgdGhlIGV2
ZW50IGZvciBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgVGVzdDogaW5kaWV1aS91aXZhbHVlY2hh
bmdlcmVxdWVzdC5odG1sCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kaWV1aS9VSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50SW5pdDo6VUlWYWx1
ZUNoYW5nZVJlcXVlc3RFdmVudEluaXQpOgorICAgICAgICAoV2ViQ29yZTo6VUlWYWx1ZUNoYW5n
ZVJlcXVlc3RFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlVJVmFsdWVDaGFuZ2VS
ZXF1ZXN0RXZlbnQ6OlVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudDo6flVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudDo6aW50ZXJmYWNl
TmFtZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRpZXVpL1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZl
bnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50
OjpjaGFuZ2VUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGlldWkvVUlWYWx1ZUNoYW5nZVJl
cXVlc3RFdmVudC5pZGw6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp1aUFjdGlvbk5hbWVGb3JSZXF1ZXN0RXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnJlY2VpdmVyRm9yVUlSZXF1
ZXN0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFs
dGVyU2xpZGVyVmFsdWUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3QuaDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9F
dmVudE5hbWVzLmluOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6c2VuZFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQpOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
aWRsOgorCiAyMDEzLTA2LTI0ICBDaHJpcyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgV2F2ZVRhYmxlIG5hbWUgaGFzIGNoYW5nZWQgdG8gUGVyaW9kaWNXYXZlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDE1MTgyNykKKysrIFNvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExMiw2ICsx
MTIsNyBAQAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5n
ZUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJDb250
ZXh0SW5kZXhlZERhdGFiYXNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2luZGlldWkv
VUlSZXF1ZXN0RXZlbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvaW5kaWV1aS9VSVZh
bHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlh
c291cmNlL01lZGlhU291cmNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXJMaXN0LmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGlldWkvVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRpZXVpL1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRpZXVpL1VJVmFsdWVDaGFu
Z2VSZXF1ZXN0RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5oIgorCisjaWYgRU5BQkxF
KElORElFX1VJKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitVSVZhbHVlQ2hhbmdlUmVx
dWVzdEV2ZW50SW5pdDo6VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudEluaXQoKQorICAgIDogY2hh
bmdlVHlwZShVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50OjpVTktOT1dOKQoreworfQorCitQYXNz
UmVmUHRyPFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQ+IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZl
bnQ6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVSVZhbHVlQ2hhbmdlUmVx
dWVzdEV2ZW50KTsKK30KKworUGFzc1JlZlB0cjxVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50PiBV
SVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBjb25zdCBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50KHR5cGUsIGlu
aXRpYWxpemVyKSk7Cit9CisKK1Bhc3NSZWZQdHI8VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudD4g
VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3
PiB2aWV3LCBpbnQgZGV0YWlsLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiByZWNlaXZlciwgVUlW
YWx1ZUNoYW5nZVJlcXVlc3RFdmVudENoYW5nZVR5cGUgY2hhbmdlVHlwZSkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQodHlwZSwgYnViYmxlcywg
Y2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCByZWNlaXZlciwgY2hhbmdlVHlwZSkpOworfQorCitV
SVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50OjpVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudEluaXQm
IGluaXRpYWxpemVyKQorICAgIDogVUlSZXF1ZXN0RXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIuYnVi
YmxlcywgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSwgaW5pdGlhbGl6ZXIudmlldywgaW5pdGlhbGl6
ZXIuZGV0YWlsLCBpbml0aWFsaXplci5yZWNlaXZlcikKKyAgICAsIG1fY2hhbmdlVHlwZShzdGF0
aWNfY2FzdDxVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50Q2hhbmdlVHlwZT4oaW5pdGlhbGl6ZXIu
Y2hhbmdlVHlwZSkpCit7Cit9CisKK1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQ6OlVJVmFsdWVD
aGFuZ2VSZXF1ZXN0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGJ1YmJsZXMs
IGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGludCBkZXRh
aWwsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHJlY2VpdmVyLCBVSVZhbHVlQ2hhbmdlUmVxdWVz
dEV2ZW50Q2hhbmdlVHlwZSBjaGFuZ2VUeXBlKQorICAgIDogVUlSZXF1ZXN0RXZlbnQodHlwZSwg
YnViYmxlcywgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCByZWNlaXZlcikKKyAgICAsIG1fY2hh
bmdlVHlwZShjaGFuZ2VUeXBlKQoreworfQorCitVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50OjpV
SVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50KCkKKyAgICA6IG1fY2hhbmdlVHlwZShVTktOT1dOKQor
eworfQorCitVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50Ojp+VUlWYWx1ZUNoYW5nZVJlcXVlc3RF
dmVudCgpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVUlWYWx1ZUNoYW5nZVJlcXVlc3RF
dmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5p
bnRlcmZhY2VGb3JVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50OworfQorICAgIAorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElORElFX1VJKQorCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGlldWkvVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kaWV1aS9VSVZhbHVlQ2hhbmdl
UmVxdWVzdEV2ZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGlldWkvVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnRfaAorI2RlZmluZSBVSVZhbHVlQ2hhbmdl
UmVxdWVzdEV2ZW50X2gKKworI2luY2x1ZGUgIlVJUmVxdWVzdEV2ZW50LmgiCisKKyNpZiBFTkFC
TEUoSU5ESUVfVUkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3N0cnVjdCBVSVZhbHVl
Q2hhbmdlUmVxdWVzdEV2ZW50SW5pdCA6IHB1YmxpYyBVSVJlcXVlc3RFdmVudEluaXQgeworICAg
IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnRJbml0KCk7CisgICAgCisgICAgdW5zaWduZWQgc2hv
cnQgY2hhbmdlVHlwZTsKK307CisKK2NsYXNzIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQgOiBw
dWJsaWMgVUlSZXF1ZXN0RXZlbnQgeworcHVibGljOgorICAgIGVudW0gVUlWYWx1ZUNoYW5nZVJl
cXVlc3RFdmVudENoYW5nZVR5cGUgeworICAgICAgICBVTktOT1dOID0gMCwKKyAgICAgICAgSU5D
UkVNRU5UID0gMSwKKyAgICAgICAgSU5DUkVNRU5UX1NNQUxMID0gMiwKKyAgICAgICAgSU5DUkVN
RU5UX0xBUkdFID0gMywKKyAgICAgICAgSU5DUkVNRU5UX01BWCA9IDQsCisgICAgICAgIERFQ1JF
TUVOVCA9IDUsCisgICAgICAgIERFQ1JFTUVOVF9TTUFMTCA9IDYsCisgICAgICAgIERFQ1JFTUVO
VF9MQVJHRSA9IDcsCisgICAgICAgIERFQ1JFTUVOVF9NSU4gPSA4CisgICAgfTsKKyAgICAKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50PiBjcmVhdGUoKTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSwg
UGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LCBpbnQgZGV0YWlsLCBQYXNzUmVmUHRyPEV2ZW50VGFy
Z2V0PiByZWNlaXZlciwgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudENoYW5nZVR5cGUpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVu
dEluaXQmKTsKKyAgICAKKyAgICB2aXJ0dWFsIH5VSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50KCk7
CisgICAgCisgICAgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudENoYW5nZVR5cGUgY2hhbmdlVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbmdlVHlwZTsgfQorICAgIAorICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CisgICAgCitw
cm90ZWN0ZWQ6CisgICAgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPEFic3Ry
YWN0Vmlldz4sIGludCBkZXRhaWwsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHJlY2VpdmVyLCBV
SVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50Q2hhbmdlVHlwZSk7CisgICAgVUlWYWx1ZUNoYW5nZVJl
cXVlc3RFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFVJVmFsdWVDaGFuZ2VS
ZXF1ZXN0RXZlbnRJbml0Jik7CisgICAgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudCgpOworICAg
IAorcHJpdmF0ZToKKyAgICBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50Q2hhbmdlVHlwZSBtX2No
YW5nZVR5cGU7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKElORElFX1VJKQorCisjZW5kaWYgLy8gVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudF9o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGlldWkvVUlWYWx1ZUNoYW5nZVJlcXVl
c3RFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRpZXVp
L1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRpZXVpL1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKyAKK1sKKyAgICBDb25kaXRpb25hbD1JTkRJRV9VSSwKKyAgICBDb25z
dHJ1Y3RvclRlbXBsYXRlPUV2ZW50CitdIGludGVyZmFjZSBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2
ZW50IDogVUlSZXF1ZXN0RXZlbnQgeworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFVOS05PV04g
PSAwOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IElOQ1JFTUVOVCA9IDE7CisgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgSU5DUkVNRU5UX1NNQUxMID0gMjsKKyAgICBjb25zdCB1bnNpZ25lZCBz
aG9ydCBJTkNSRU1FTlRfTEFSR0UgPSAzOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IElOQ1JF
TUVOVF9NQVggPSA0OworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IERFQ1JFTUVOVCA9IDU7Cisg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgREVDUkVNRU5UX1NNQUxMID0gNjsKKyAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBERUNSRU1FTlRfTEFSR0UgPSA3OworICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IERFQ1JFTUVOVF9NSU4gPSA4OworICAgIAorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBzaG9ydCBjaGFuZ2VUeXBlOworfTsKKwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJl
dmlzaW9uIDE1MTgyNSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDgxLDYgKzI0ODEsMTIgQEAKIF9fWk43V2ViQ29yZThTZXR0aW5nczM4c2V0
SGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0VuYWJsZWRFYgogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoSU5ESUVfVUkpCitfX1pON1dlYkNvcmUyNVVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQ2Y3Jl
YXRlRVJLTjNXVEYxMkF0b21pY1N0cmluZ0VSS05TXzI5VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVu
dEluaXRFCitfX1pON1dlYkNvcmUyOVVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnRJbml0QzFFdgor
X19aTjdXZWJDb3JlNE5vZGUyMmRpc3BhdGNoVUlSZXF1ZXN0RXZlbnRFTjNXVEYxMFBhc3NSZWZQ
dHJJTlNfMTRVSVJlcXVlc3RFdmVudEVFRQorI2VuZGlmCisKICNpZiBFTkFCTEUoSUNPTkRBVEFC
QVNFKQogX19aTjdXZWJDb3JlMTJJY29uRGF0YWJhc2UxMHNldEVuYWJsZWRFYgogX19aTjdXZWJD
b3JlMTJJY29uRGF0YWJhc2UxMWRlZmF1bHRJY29uRVJLTlNfN0ludFNpemVFCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxNTE4MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM4MzcsNiArMzgzNyw5IEBACiAJCUFBMkE1QUQ1
MTZBNDg2MTQwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUEyQTVBQkQxNkE0ODVENTAwOTc1QTI1IC8q
IFNwZWVjaFN5bnRoZXNpcy5jcHAgKi87IH07CiAJCUFBMkE1QUQ2MTZBNDg2MTYwMDk3NUEyNSAv
KiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFBMkE1QUI5MTZBNDg1RDUwMDk3NUEyNSAvKiBET01XaW5kb3dT
cGVlY2hTeW50aGVzaXMuaCAqLzsgfTsKIAkJQUEyQTVBRDcxNkE0ODYxQTAwOTc1QTI1IC8qIERP
TVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBQTJBNUFCODE2QTQ4NUQ1MDA5NzVBMjUgLyogRE9NV2luZG93U3Bl
ZWNoU3ludGhlc2lzLmNwcCAqLzsgfTsKKwkJQUEzNzNGMjExNzc0REJDMzAwQTQzMTYwIC8qIEpT
VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBQTM3M0YxRjE3NzREQjdGMDBBNDMxNjAgLyogSlNVSVZhbHVl
Q2hhbmdlUmVxdWVzdEV2ZW50LmNwcCAqLzsgfTsKKwkJQUEzNzNGMjIxNzc0REJENDAwQTQzMTYw
IC8qIEpTVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUEzNzNGMjAxNzc0REI3RjAwQTQzMTYwIC8qIEpTVUlW
YWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5oICovOyB9OworCQlBQTQzMkE3RjE3NzRBREZEMDAxREEy
QUQgLyogVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTQzMkE3QzE3NzRBREY5MDAxREEyQUQgLyogVUlW
YWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5jcHAgKi87IH07CiAJCUFBNDczOUQxMTc1N0FGRUMwMEU3
Njc2NyAvKiBVSVJlcXVlc3RFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBQTQ3MzlDRjE3NTdBRkVDMDBFNzY3NjcgLyogVUlSZXF1ZXN0RXZl
bnQuY3BwICovOyB9OwogCQlBQTQ3MzlEMjE3NTdBRkVDMDBFNzY3NjcgLyogVUlSZXF1ZXN0RXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBNDcz
OUQwMTc1N0FGRUMwMEU3Njc2NyAvKiBVSVJlcXVlc3RFdmVudC5oICovOyB9OwogCQlBQTQ3OEE3
RjE2Q0Q3MEMzMDA3RDFCQjQgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBNDc4QTdEMTZD
RDcwQzMwMDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oICovOyB9
OwpAQCAtMTAzNDMsNiArMTAzNDYsMTEgQEAKIAkJQUEyQTVBQzYxNkE0ODVENTAwOTc1QTI1IC8q
IFNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNwZWVjaFN5bnRo
ZXNpc1ZvaWNlLmNwcDsgcGF0aCA9IE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUEyQTVBQzcxNkE0ODVENTAwOTc1
QTI1IC8qIFNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNwZWVjaFN5bnRo
ZXNpc1ZvaWNlLmg7IHBhdGggPSBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTJBNUFDODE2QTQ4NUQ1MDA5NzVBMjUg
LyogU3BlZWNoU3ludGhlc2lzVm9pY2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFNwZWVjaFN5bnRoZXNpc1ZvaWNlLmlk
bDsgcGF0aCA9IE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUEzNzNGMUYxNzc0REI3RjAwQTQzMTYwIC8qIEpTVUlW
YWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1VJVmFsdWVD
aGFuZ2VSZXF1ZXN0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBQTM3
M0YyMDE3NzREQjdGMDBBNDMxNjAgLyogSlNVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBQTQzMkE3QzE3NzRBREY5MDAxREEyQUQgLyogVUlWYWx1ZUNoYW5n
ZVJlcXVlc3RFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVSVZhbHVlQ2hhbmdlUmVxdWVz
dEV2ZW50LmNwcDsgcGF0aCA9IE1vZHVsZXMvaW5kaWV1aS9VSVZhbHVlQ2hhbmdlUmVxdWVzdEV2
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUE0MzJBN0QxNzc0QURGOTAw
MURBMkFEIC8qIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVUlW
YWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5oOyBwYXRoID0gTW9kdWxlcy9pbmRpZXVpL1VJVmFsdWVD
aGFuZ2VSZXF1ZXN0RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUE0MzJB
N0UxNzc0QURGOTAwMURBMkFEIC8qIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9
IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaWRsOyBwYXRoID0gTW9kdWxlcy9pbmRpZXVpL1VJ
VmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBQTQ3MzlDRjE3NTdBRkVDMDBFNzY3NjcgLyogVUlSZXF1ZXN0RXZlbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVUlSZXF1ZXN0RXZlbnQuY3BwOyBwYXRoID0g
TW9kdWxlcy9pbmRpZXVpL1VJUmVxdWVzdEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQUE0NzM5RDAxNzU3QUZFQzAwRTc2NzY3IC8qIFVJUmVxdWVzdEV2ZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFVJUmVxdWVzdEV2ZW50Lmg7IHBhdGggPSBN
b2R1bGVzL2luZGlldWkvVUlSZXF1ZXN0RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQUE0NzhBN0QxNkNENzBDMzAwN0QxQkI0IC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NzU5Niw2ICsxNzYwNCw5IEBACiAJCQkJQUE0NzM5Q0YxNzU3QUZFQzAwRTc2NzY3IC8qIFVJUmVx
dWVzdEV2ZW50LmNwcCAqLywKIAkJCQlBQTQ3MzlEMDE3NTdBRkVDMDBFNzY3NjcgLyogVUlSZXF1
ZXN0RXZlbnQuaCAqLywKIAkJCQlBQTdFQTBBQTE3NTU3QjkwMDBERjQ2NDMgLyogVUlSZXF1ZXN0
RXZlbnQuaWRsICovLAorCQkJCUFBNDMyQTdDMTc3NEFERjkwMDFEQTJBRCAvKiBVSVZhbHVlQ2hh
bmdlUmVxdWVzdEV2ZW50LmNwcCAqLywKKwkJCQlBQTQzMkE3RDE3NzRBREY5MDAxREEyQUQgLyog
VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5oICovLAorCQkJCUFBNDMyQTdFMTc3NEFERjkwMDFE
QTJBRCAvKiBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmlkbCAqLywKIAkJCSk7CiAJCQluYW1l
ID0gaW5kaWV1aTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNzYyMCw2ICsxNzYz
MSw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBQUE0RkFDRjE3NUQ1Q0IzMDA3NDM4NzMgLyog
SlNVSVJlcXVlc3RFdmVudC5jcHAgKi8sCiAJCQkJQUFBNEZBQ0UxNzVENUNCMzAwNzQzODczIC8q
IEpTVUlSZXF1ZXN0RXZlbnQuaCAqLywKKwkJCQlBQTM3M0YxRjE3NzREQjdGMDBBNDMxNjAgLyog
SlNVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmNwcCAqLywKKwkJCQlBQTM3M0YyMDE3NzREQjdG
MDBBNDMxNjAgLyogSlNVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmggKi8sCiAJCQkpOwogCQkJ
bmFtZSA9IEluZGllVUk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjE0NTQsNiAr
MjE0NjcsNyBAQAogCQkJCTg1REYyRjhFMEFBM0M4ODEwMEFENjRDNSAvKiBET01IVE1MQ29sbGVj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExQTIwQUM1RDUzNTAwNTMyNzBGIC8qIERP
TUhUTUxDb2xsZWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1QzA0MUUzMEZG
Q0E5NkQwMDgzOUQ0QSAvKiBET01IVE1MRGF0YUxpc3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQlBQTM3M0YyMjE3NzREQkQ0MDBBNDMxNjAgLyogSlNVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNUMwNDFFNTBGRkNBOTZEMDA4MzlENEEgLyogRE9N
SFRNTERhdGFMaXN0RWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMzU5RDc5
MTEyOUNBM0MwMDAwNkU1RDIgLyogRE9NSFRNTERldGFpbHNFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlEMzU5RDc5MzEyOUNBM0MwMDAwNkU1RDIgLyogRE9NSFRNTERldGFpbHNFbGVtZW50
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMjU5MDQsNiArMjU5MTgsNyBAQAogCQkJCTQ5
QzdCOUE0MTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMVGV4dHVyZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwQzQ1MzQyNzEwQ0RCQkZBMDA4NjkxNTcgLyogSlNXZWJHTFVuaWZvcm1Mb2NhdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3N0VGNjJGMzEyRjlEQjc0MDBDNzdCRDIgLyogSlNX
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUFBNDMyQTdG
MTc3NEFERkQwMDFEQTJBRCAvKiBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTMxQzBGRjNEMEU0Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdEFuaW1hdGlv
bkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MTk3RjI2MTc1NjhBRTUwMDdCOTQ0MiAv
KiBQYWdlVGhyb3R0bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyRThBRTM3MTZBNDk4NDAw
MDZCQjNBQSAvKiBKU1dlYktpdENTU0ZpbHRlclJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
NjIyNSw2ICsyNjI0MCw3IEBACiAJCQkJMDg2NDFENDcxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRl
ckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODc3
MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNFQTQ4NzkwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckxheWVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUFBMzczRjIxMTc3NERCQzMwMEE0MzE2MCAvKiBKU1VJVmFsdWVDaGFuZ2VSZXF1ZXN0
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1ODBEMDAwRjEyREU5QjAwNTFENjg5IC8q
IFJlbmRlckxheWVyQmFja2luZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU4MENGRTBGMTJE
RTlCMDA1MUQ2ODkgLyogUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUwRDEwRDk5MTU0NUY1NzYwMDk2RDI4OCAvKiBSZW5kZXJMYXllckZpbHRlckluZm8uY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAkocmV2aXNpb24gMTUxODI1KQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDExIEBACiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+
CiAKKyNpZiBFTkFCTEUoSU5ESUVfVUkpCisjaW1wb3J0ICJVSVJlcXVlc3RFdmVudC5oIgorI2lt
cG9ydCAiVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwMDYsMTIgKzEwMTEsNjMgQEAK
IAogICAgIHJldHVybiBmYWxzZTsKIH0KKyAgICAKKyNpZiBFTkFCTEUoSU5ESUVfVUkpCitjb25z
dCBBdG9taWNTdHJpbmcmIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp1aUFjdGlvbk5hbWVGb3JS
ZXF1ZXN0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHZhbHVlQ2hhbmdlQWN0aW9uLCAoInZh
bHVlY2hhbmdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBub0FjdGlvbiwgKCkpOwogCisg
ICAgaWYgKGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkudmFsdWVjaGFuZ2VyZXF1ZXN0RXZlbnQp
CisgICAgICAgIHJldHVybiB2YWx1ZUNoYW5nZUFjdGlvbjsKKyAgICAKKyAgICByZXR1cm4gbm9B
Y3Rpb247Cit9CisgICAgCitOb2RlKiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6cmVjZWl2ZXJG
b3JVSVJlcXVlc3RFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKK3sKKyAgICBO
b2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOworICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNFbGVt
ZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHVpQWN0aW9uTmFtZSA9IHVpQWN0aW9uTmFtZUZvclJlcXVlc3RFdmVudChldmVudE5hbWUp
OworICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudChub2RlKTsgZWxlbWVudDsg
ZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgeworICAgICAgICBpZiAoIWVsZW1l
bnQtPmhhc0F0dHJpYnV0ZSh1aWFjdGlvbnNBdHRyKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAKKyAgICAgICAgU3RyaW5nIHVpQWN0aW9uVmFsdWUgPSBlbGVtZW50LT5mYXN0R2V0
QXR0cmlidXRlKHVpYWN0aW9uc0F0dHIpLnN0cmluZygpOworICAgICAgICAKKyAgICAgICAgVmVj
dG9yPFN0cmluZz4gdWlBY3Rpb25zOworICAgICAgICB1aUFjdGlvblZhbHVlLnNwbGl0KCcgJywg
dWlBY3Rpb25zKTsKKyAgICAgICAgaWYgKHVpQWN0aW9ucy5jb250YWlucyh1aUFjdGlvbk5hbWUp
KQorICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgfQorICAgIAorICAgIHJldHVybiAw
OworfQorI2VuZGlmCisKIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFsdGVyU2xpZGVy
VmFsdWUoYm9vbCBpbmNyZWFzZSkKIHsKICAgICBpZiAocm9sZVZhbHVlKCkgIT0gU2xpZGVyUm9s
ZSkKICAgICAgICAgcmV0dXJuOwogCisjaWYgRU5BQkxFKElORElFX1VJKQorICAgIC8vIEFSSUEg
c2xpZGVycyBzaG91bGQgdXNlIEluZGllVUkgdG8ga25vdyB3aGVuIHRvIGNhdXNlIGFuIHVwZGF0
ZQorICAgIGlmIChub2RlKCkgJiYgYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBTbGlkZXJSb2xlKSB7
CisgICAgICAgIE5vZGUqIHJlY2VpdmVyID0gcmVjZWl2ZXJGb3JVSVJlcXVlc3RFdmVudChldmVu
dE5hbWVzKCkudmFsdWVjaGFuZ2VyZXF1ZXN0RXZlbnQpOworICAgICAgICBVSVZhbHVlQ2hhbmdl
UmVxdWVzdEV2ZW50SW5pdCBldmVudEluaXQ7CisgICAgICAgIGV2ZW50SW5pdC5jaGFuZ2VUeXBl
ID0gaW5jcmVhc2UgPyBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50OjpJTkNSRU1FTlQgOiBVSVZh
bHVlQ2hhbmdlUmVxdWVzdEV2ZW50OjpERUNSRU1FTlQ7CisgICAgICAgIGV2ZW50SW5pdC5yZWNl
aXZlciA9IHJlY2VpdmVyOworICAgICAgICAKKyAgICAgICAgUmVmUHRyPFVJVmFsdWVDaGFuZ2VS
ZXF1ZXN0RXZlbnQ+IGV2ZW50ID0gVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS52YWx1ZWNoYW5nZXJlcXVlc3RFdmVudCwgZXZlbnRJbml0KTsKKworICAgICAg
ICBub2RlKCktPmRpc3BhdGNoVUlSZXF1ZXN0RXZlbnQoZXZlbnQpOworICAgICAgICByZXR1cm47
CisgICAgfQorI2VuZGlmCisgICAgCisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUlu
ZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vzc2luZ05ld1VzZXJHZXN0dXJlKTsKICAgICBpZiAoIWdl
dEF0dHJpYnV0ZShzdGVwQXR0cikuaXNFbXB0eSgpKQogICAgICAgICBjaGFuZ2VWYWx1ZUJ5U3Rl
cChpbmNyZWFzZSk7CiAgICAgZWxzZQpAQCAtMTAyMCwxMyArMTA3NiwxMSBAQAogICAgIAogdm9p
ZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aW5jcmVtZW50KCkKIHsKLSAgICBVc2VyR2VzdHVy
ZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nTmV3VXNlckdl
c3R1cmUpOwogICAgIGFsdGVyU2xpZGVyVmFsdWUodHJ1ZSk7CiB9CiAKIHZvaWQgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmRlY3JlbWVudCgpCiB7Ci0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3Ig
Z2VzdHVyZUluZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vzc2luZ05ld1VzZXJHZXN0dXJlKTsKICAg
ICBhbHRlclNsaWRlclZhbHVlKGZhbHNlKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAkocmV2aXNp
b24gMTUxODI5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNiArMTk4LDExIEBACiAgICAgU3Ry
aW5nIGFsdGVybmF0aXZlVGV4dEZvcldlYkFyZWEoKSBjb25zdDsKICAgICB2b2lkIGFyaWFMYWJl
bGVkQnlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKKyAgICAKKyNpZiBF
TkFCTEUoSU5ESUVfVUkpCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB1aUFjdGlvbk5hbWVGb3JS
ZXF1ZXN0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgTm9kZSogcmVjZWl2ZXJGb3JV
SVJlcXVlc3RFdmVudChjb25zdCBBdG9taWNTdHJpbmcmKTsKKyNlbmRpZgogfTsKIAogaW5saW5l
IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KiB0b0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KEFjY2Vz
c2liaWxpdHlPYmplY3QqIG9iamVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5h
bWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkocmV2
aXNpb24gMTUxODI1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUyLDYgKzI1Miw4IEBACiAgICAgXAogICAgIG1hY3JvKHdlYmtpdHJlc291
cmNldGltaW5nYnVmZmVyZnVsbCkgXAogICAgIFwKKyAgICBtYWNybyh2YWx1ZWNoYW5nZXJlcXVl
c3QpIFwKKyAgICBcCiAgICAgbWFjcm8od2Via2l0ZGV2aWNlcHJveGltaXR5KSBcCiAgICAgXAog
ICAgIG1hY3JvKHNlY3VyaXR5cG9saWN5dmlvbGF0aW9uKSBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5pbgkocmV2aXNpb24gMTUxODI3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTU4LDQgKzU4LDUgQEAKIENTU0ZvbnRGYWNlTG9h
ZEV2ZW50IGNvbmRpdGlvbmFsPUZPTlRfTE9BRF9FVkVOVFMKIFNlY3VyaXR5UG9saWN5VmlvbGF0
aW9uRXZlbnQgY29uZGl0aW9uYWw9Q1NQX05FWFQKIFVJUmVxdWVzdEV2ZW50IGNvbmRpdGlvbmFs
PUlORElFX1VJCitVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50IGNvbmRpdGlvbmFsPUlORElFX1VJ
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDE1MTgy
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTEyLDYgKzExMiwxMCBAQAogI2luY2x1ZGUgIk5ldHdvcmtJbmZvQ29udHJvbGxlci5o
IgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU5ESUVfVUkpCisjaW5jbHVkZSAiVUlWYWx1ZUNoYW5n
ZVJlcXVlc3RFdmVudC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoUFJPWElNSVRZX0VWRU5UUykK
ICNpbmNsdWRlICJEZXZpY2VQcm94aW1pdHlDb250cm9sbGVyLmgiCiAjZW5kaWYKQEAgLTIwNTMs
NiArMjA1NywxOSBAQAogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU5ESUVfVUkpCit2b2lkIElu
dGVybmFsczo6c2VuZFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQoRG9jdW1lbnQqLCBOb2RlKiB0
YXJnZXQsIE5vZGUqIHJlY2VpdmVyLCB1bnNpZ25lZCBzaG9ydCBjaGFuZ2VUeXBlLCBFeGNlcHRp
b25Db2RlJikKK3sKKyAgICBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50SW5pdCBldmVudEluaXQ7
CisgICAgZXZlbnRJbml0LmNoYW5nZVR5cGUgPSBjaGFuZ2VUeXBlOworICAgIGV2ZW50SW5pdC5y
ZWNlaXZlciA9IHJlY2VpdmVyOworICAgIAorICAgIFJlZlB0cjxVSVZhbHVlQ2hhbmdlUmVxdWVz
dEV2ZW50PiBldmVudCA9IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkudmFsdWVjaGFuZ2VyZXF1ZXN0RXZlbnQsIGV2ZW50SW5pdCk7CisgICAgCisgICAgdGFy
Z2V0LT5kaXNwYXRjaFVJUmVxdWVzdEV2ZW50KGV2ZW50KTsKK30KKyNlbmRpZgorCiBib29sIElu
dGVybmFsczo6aXNTZWxlY3RQb3B1cFZpc2libGUoTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIWlz
SFRNTFNlbGVjdEVsZW1lbnQobm9kZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgJKHJldmlzaW9uIDE1MTgyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw2ICsyMTcsMTAgQEAKIAogICAgIHZvaWQgc2V0RGV2
aWNlUHJveGltaXR5KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBldmVudFR5cGUsIGRvdWJsZSB2
YWx1ZSwgZG91YmxlIG1pbiwgZG91YmxlIG1heCwgRXhjZXB0aW9uQ29kZSYpOwogCisjaWYgRU5B
QkxFKElORElFX1VJKQorICAgIHZvaWQgc2VuZFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQoRG9j
dW1lbnQqLCBOb2RlKiB0YXJnZXQsIE5vZGUqIHJlY2VpdmVyLCB1bnNpZ25lZCBzaG9ydCBjaGFu
Z2VUeXBlLCBFeGNlcHRpb25Db2RlJik7CisjZW5kaWYKKwogICAgIGVudW0gewogICAgICAgICAv
LyBWYWx1ZXMgbmVlZCB0byBiZSBrZXB0IGluIHN5bmMgd2l0aCBJbnRlcm5hbHMuaWRsLgogICAg
ICAgICBMQVlFUl9UUkVFX0lOQ0xVREVTX1ZJU0lCTEVfUkVDVFMgPSAxLApJbmRleDogU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMTUxODI1KQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNiArMjU1
LDggQEAKIAogICAgIFtDb25kaXRpb25hbD1WSURFT10gdm9pZCBzaW11bGF0ZUF1ZGlvSW50ZXJy
dXB0aW9uKE5vZGUgbm9kZSk7CiAKKyAgICBbQ29uZGl0aW9uYWw9SU5ESUVfVUksIFJhaXNlc0V4
Y2VwdGlvbl0gdm9pZCBzZW5kVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudChEb2N1bWVudCBkb2N1
bWVudCwgTm9kZSB0YXJnZXQsIE5vZGUgcmVjZWl2ZXIsIHVuc2lnbmVkIHNob3J0IGNoYW5nZVR5
cGUpOworCiAgICAgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMl0gdm9pZCBpbml0aWFs
aXplTW9ja0NETSgpOwogCiAgICAgW0NvbmRpdGlvbmFsPVNQRUVDSF9TWU5USEVTSVNdIHZvaWQg
ZW5hYmxlTW9ja1NwZWVjaFN5bnRoZXNpemVyKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTE5MTUp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBA
QAorMjAxMy0wNi0yNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisg
ICAgICAgIEluZGllVUk6IFN1cHBvcnQgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3MzA2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2pzL2dsb2Jh
bC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5kaWV1
aS91aXZhbHVlY2hhbmdlcmVxdWVzdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGlu
ZGlldWkvdWl2YWx1ZWNoYW5nZXJlcXVlc3QuaHRtbDogQWRkZWQuCisKIDIwMTMtMDYtMjQgIENo
cmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBXYXZlVGFibGUgbmFt
ZSBoYXMgY2hhbmdlZCB0byBQZXJpb2RpY1dhdmUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMv
Z2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDE1MTkxNSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvZ2xvYmFs
LWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTc4OCw2ICsxNzg4LDExIEBACiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
Z2xvYmFsLCAnVUlSZXF1ZXN0RXZlbnQnKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UK
IFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdVSVJlcXVlc3RF
dmVudCcpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihnbG9iYWwsICdVSVJlcXVlc3RFdmVudCcpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnVUlWYWx1ZUNoYW5n
ZVJlcXVlc3RFdmVudCcpLnZhbHVlIGlzIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQKK1BBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdVSVZhbHVlQ2hhbmdlUmVx
dWVzdEV2ZW50JykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVu
dCcpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQnKS5lbnVt
ZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xv
YmFsLCAnVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudCcpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCiBQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnVVJMJykudmFsdWUg
aXMgVVJMCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnVVJM
JykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnVVJMJykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZh
bHNlCkluZGV4OiBMYXlvdXRUZXN0cy9pbmRpZXVpL3VpdmFsdWVjaGFuZ2VyZXF1ZXN0LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbmRpZXVpL3VpdmFsdWVjaGFuZ2Vy
ZXF1ZXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2luZGlldWkv
dWl2YWx1ZWNoYW5nZXJlcXVlc3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMjUgQEAKK3NsaWRlcgorVGhpcyB0ZXN0cyB0aGF0IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0cyBh
cmUgcmVjZWl2ZWQgcHJvcGVybHkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Zl
cmlmeSB0aGF0IHRoZSB2YWx1ZSBjaGFuZ2UgcmVxdWVzdHMgZ2VuZXJhdGVkIHRocm91Z2ggSW50
ZXJuYWxzIGFyZSByZWNlaXZlZC4KK0V2ZW50IHJlY2VpdmVyOiBzbGlkZXIKK0NoYW5nZSB0eXBl
OiAxCisKK0V2ZW50IHJlY2VpdmVyOiBzbGlkZXIKK0NoYW5nZSB0eXBlOiA1CisKKworVmVyaWZ5
IHRoYXQgaW5jcmVtZW50aW5nL2RlY3JlbWVudGluZyB0aHJvdWdoIGFjY2Vzc2liaWxpdHkgYWxz
byBnZW5lcmF0ZXMgZXZlbnRzLgorRXZlbnQgcmVjZWl2ZXI6IHNsaWRlcgorQ2hhbmdlIHR5cGU6
IDEKKworRXZlbnQgcmVjZWl2ZXI6IHNsaWRlcgorQ2hhbmdlIHR5cGU6IDUKKworUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2luZGlldWkvdWl2YWx1ZWNoYW5nZXJlcXVlc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9pbmRpZXVpL3VpdmFsdWVjaGFuZ2VyZXF1ZXN0Lmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9pbmRpZXVpL3VpdmFsdWVjaGFuZ2VyZXF1ZXN0Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9k
eSI+CisKKzxkaXYgdWlhY3Rpb25zPSJ2YWx1ZWNoYW5nZSIgaWQ9InNsaWRlciIgcm9sZT0ic2xp
ZGVyIj5zbGlkZXI8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+
CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBVSVZhbHVlQ2hhbmdlUmVxdWVzdHMg
YXJlIHJlY2VpdmVkIHByb3Blcmx5Iik7CisKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKworICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigndmFsdWVj
aGFuZ2VyZXF1ZXN0JywgdmFsdWVDaGFuZ2VIYW5kbGVyKTsKKyAgICB2YXIgaGFuZGxlckNvdW50
ID0gMDsKKyAgICBmdW5jdGlvbiB2YWx1ZUNoYW5nZUhhbmRsZXIoZSkgeworICAgICAgCisgICAg
ICAgIGRlYnVnKCJFdmVudCByZWNlaXZlcjogIiArIGUucmVjZWl2ZXIuaWQpOworICAgICAgICBk
ZWJ1ZygiQ2hhbmdlIHR5cGU6ICIgKyBlLmNoYW5nZVR5cGUgKyAiXG4iKTsKKyAgICAgICAgZS5z
dG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworCisgICAgICAg
IGhhbmRsZXJDb3VudCsrOworCisgICAgICAgIGlmIChoYW5kbGVyQ291bnQgPT0gNCkKKyAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKworICAgIGRlYnVnKCJWZXJpZnkgdGhhdCB0
aGUgdmFsdWUgY2hhbmdlIHJlcXVlc3RzIGdlbmVyYXRlZCB0aHJvdWdoIEludGVybmFscyBhcmUg
cmVjZWl2ZWQuIik7CisgICAgaW50ZXJuYWxzLnNlbmRVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50
KGRvY3VtZW50LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2xpZGVyIiksIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzbGlkZXIiKSwgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5JTkNSRU1F
TlQpOworICAgIGludGVybmFscy5zZW5kVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudChkb2N1bWVu
dCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNsaWRlciIpLCBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgic2xpZGVyIiksIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuREVDUkVNRU5UKTsKKwor
ICAgIC8vIFRoaXMgaXMgYWxzbyBob29rZWQgdXAgdGhyb3VnaCBhY2Nlc3NpYmlsaXR5LgorICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICB2YXIgYXhTbGlk
ZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInNsaWRl
ciIpOworICAgICAgIGRlYnVnKCJcblZlcmlmeSB0aGF0IGluY3JlbWVudGluZy9kZWNyZW1lbnRp
bmcgdGhyb3VnaCBhY2Nlc3NpYmlsaXR5IGFsc28gZ2VuZXJhdGVzIGV2ZW50cy4iKTsKKyAgICAg
ICBheFNsaWRlci5pbmNyZW1lbnQoKTsKKyAgICAgICBheFNsaWRlci5kZWNyZW1lbnQoKTsKKyAg
ICB9CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206341</attachid>
            <date>2013-07-09 10:42:09 -0700</date>
            <delta_ts>2016-05-24 22:06:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>33011</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjQ5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTA3LTA5ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5kaWVVSTogU3VwcG9y
dCBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTczMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudCBpcyBtZWFu
dCB0byBwcm92aWRlIGEgd2F5IHRvIGFsdGVyIHRoZSB2YWx1ZXMgb2YgYW4gb2JqZWN0IAorICAg
ICAgICB0aHJvdWdoIGFsdGVybmF0aXZlIG1lYW5zLiAoRXhhbXBsZSwgYWxsb3cgYSBzY3JlZW4g
cmVhZGVyIHVzZXIgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiBhIGN1c3RvbSBzbGlkZXIpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggcHJvdmlkZXMgdGhlIGZyYW1ld29yayBmb3IgdGhlIGV2ZW50IGFu
ZCBhbHNvIHNlbmRzIHRoZSBldmVudCB3aGVuCisgICAgICAgIGEgc2xpZGVyIGlzIGFza2VkIHRv
IGJlIG1hbmlwdWxhdGVkIHRocm91Z2ggYWNjZXNzaWJpbGl0eS4KKworICAgICAgICBJdCBhbHNv
IHByb3ZpZGVzIGFuIEludGVybmFscyB3YXkgdG8gZGlzcGF0Y2hpbmcgdGhlIGV2ZW50IGZvciBs
YXlvdXQgdGVzdHMuCisKKyAgICAgICAgVGVzdDogaW5kaWV1aS91aXZhbHVlY2hhbmdlcmVxdWVz
dC5odG1sCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kaWV1aS9VSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50SW5pdDo6VUlWYWx1ZUNoYW5nZVJl
cXVlc3RFdmVudEluaXQpOgorICAgICAgICAoV2ViQ29yZTo6VUlWYWx1ZUNoYW5nZVJlcXVlc3RF
dmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZl
bnQ6OlVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VUlWYWx1
ZUNoYW5nZVJlcXVlc3RFdmVudDo6flVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudDo6aW50ZXJmYWNlTmFtZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRpZXVpL1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50OjpjaGFuZ2VU
eXBlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGlldWkvVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVu
dC5pZGw6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0Ojp1aUFjdGlvbk5hbWVGb3JSZXF1ZXN0RXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnJlY2VpdmVyRm9yVUlSZXF1ZXN0RXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFsdGVyU2xpZGVy
VmFsdWUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
aDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVz
LmluOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6c2VuZFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQpOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAy
MDEzLTA3LTA5ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgVXNlIHRvU1ZHRm9udEVsZW1lbnQoKSBpbnN0ZWFkIG9mIHN0YXRpY19jYXN0PFNWR0Zv
bnRFbGVtZW50Kj4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24g
MTUyNDkzKQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBj
b3B5KQpAQCAtMTEyLDYgKzExMiw3IEBACiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvaW5k
ZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL2luZGlldWkvVUlSZXF1ZXN0RXZlbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L01vZHVsZXMvaW5kaWV1aS9VSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmlkbCBcCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGlldWkvVUlSZXF1ZXN0RXZlbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kaWV1aS9VSVJlcXVlc3RFdmVudC5jcHAJKHJl
dmlzaW9uIDE1MjQ5MykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kaWV1aS9VSVJlcXVl
c3RFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDEyIEBACiAgICAgLCByZWNl
aXZlcigwKQogewogfQorCitVSVJlcXVlc3RFdmVudEluaXQ6OlVJUmVxdWVzdEV2ZW50SW5pdChF
dmVudFRhcmdldCogcmVjZWl2ZXIpCisgICAgOiBVSUV2ZW50SW5pdCh0cnVlLCB0cnVlKQorICAg
ICwgcmVjZWl2ZXIocmVjZWl2ZXIpCit7Cit9CiAgICAgCiBQYXNzUmVmUHRyPFVJUmVxdWVzdEV2
ZW50PiBVSVJlcXVlc3RFdmVudDo6Y3JlYXRlKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kaWV1aS9VSVJlcXVlc3RFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kaWV1aS9VSVJlcXVlc3RFdmVudC5oCShyZXZpc2lvbiAxNTI0OTMpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGlldWkvVUlSZXF1ZXN0RXZlbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogICAgIAogc3RydWN0IFVJUmVxdWVzdEV2ZW50SW5p
dCA6IHB1YmxpYyBVSUV2ZW50SW5pdCB7CiAgICAgVUlSZXF1ZXN0RXZlbnRJbml0KCk7CisgICAg
VUlSZXF1ZXN0RXZlbnRJbml0KEV2ZW50VGFyZ2V0Kik7CiAgICAgCiAgICAgUmVmUHRyPEV2ZW50
VGFyZ2V0PiByZWNlaXZlcjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGll
dWkvVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRpZXVpL1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRpZXVpL1VJVmFsdWVDaGFuZ2VS
ZXF1ZXN0RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5oIgorCisjaWYgRU5BQkxFKElO
RElFX1VJKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitVSVZhbHVlQ2hhbmdlUmVxdWVz
dEV2ZW50SW5pdDo6VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudEluaXQoKQorICAgIDogVUlSZXF1
ZXN0RXZlbnRJbml0KCkKKyAgICAsIGNoYW5nZVR5cGUoVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVu
dDo6VU5LTk9XTikKK3sKK30KKyAgICAKK1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnRJbml0OjpV
SVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50SW5pdChFdmVudFRhcmdldCogcmVjZWl2ZXIsIHVuc2ln
bmVkIHNob3J0IGMpCisgICAgOiBVSVJlcXVlc3RFdmVudEluaXQocmVjZWl2ZXIpCisgICAgLCBj
aGFuZ2VUeXBlKGMpCit7Cit9CisKK1Bhc3NSZWZQdHI8VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVu
dD4gVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQpOworfQorCitQYXNzUmVmUHRyPFVJ
VmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQ+IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQ6OmNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZl
bnRJbml0JiBpbml0aWFsaXplcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVJVmFsdWVD
aGFuZ2VSZXF1ZXN0RXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpKTsKK30KKworUGFzc1JlZlB0cjxV
SVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50PiBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50OjpjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJs
ZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGludCBkZXRhaWwsIFBhc3NSZWZQdHI8
RXZlbnRUYXJnZXQ+IHJlY2VpdmVyLCBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50Q2hhbmdlVHlw
ZSBjaGFuZ2VUeXBlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgVUlWYWx1ZUNoYW5nZVJl
cXVlc3RFdmVudCh0eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlLCB2aWV3LCBkZXRhaWwsIHJlY2Vp
dmVyLCBjaGFuZ2VUeXBlKSk7Cit9CisKK1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQ6OlVJVmFs
dWVDaGFuZ2VSZXF1ZXN0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBVSVZh
bHVlQ2hhbmdlUmVxdWVzdEV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCisgICAgOiBVSVJlcXVlc3RF
dmVudCh0eXBlLCBpbml0aWFsaXplci5idWJibGVzLCBpbml0aWFsaXplci5jYW5jZWxhYmxlLCBp
bml0aWFsaXplci52aWV3LCBpbml0aWFsaXplci5kZXRhaWwsIGluaXRpYWxpemVyLnJlY2VpdmVy
KQorICAgICwgbV9jaGFuZ2VUeXBlKHN0YXRpY19jYXN0PFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZl
bnRDaGFuZ2VUeXBlPihpbml0aWFsaXplci5jaGFuZ2VUeXBlKSkKK3sKK30KKworVUlWYWx1ZUNo
YW5nZVJlcXVlc3RFdmVudDo6VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPEFi
c3RyYWN0Vmlldz4gdmlldywgaW50IGRldGFpbCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gcmVj
ZWl2ZXIsIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnRDaGFuZ2VUeXBlIGNoYW5nZVR5cGUpCisg
ICAgOiBVSVJlcXVlc3RFdmVudCh0eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlLCB2aWV3LCBkZXRh
aWwsIHJlY2VpdmVyKQorICAgICwgbV9jaGFuZ2VUeXBlKGNoYW5nZVR5cGUpCit7Cit9CisKK1VJ
VmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQ6OlVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQoKQorICAg
IDogbV9jaGFuZ2VUeXBlKFVOS05PV04pCit7Cit9CisKK1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZl
bnQ6On5VSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50KCkKK3sKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclVJVmFsdWVDaGFuZ2VSZXF1ZXN0
RXZlbnQ7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5ESUVfVUkpCisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kaWV1aS9VSVZh
bHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRpZXVpL1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kaWV1aS9VSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVu
dF9oCisjZGVmaW5lIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnRfaAorCisjaW5jbHVkZSAiVUlS
ZXF1ZXN0RXZlbnQuaCIKKworI2lmIEVOQUJMRShJTkRJRV9VSSkKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworICAgIAorc3RydWN0IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnRJbml0IDogcHVibGlj
IFVJUmVxdWVzdEV2ZW50SW5pdCB7CisgICAgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudEluaXQo
KTsKKyAgICBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50SW5pdChFdmVudFRhcmdldCosIHVuc2ln
bmVkIHNob3J0IGNoYW5nZVR5cGUpOworICAgIAorICAgIHVuc2lnbmVkIHNob3J0IGNoYW5nZVR5
cGU7Cit9OworCitjbGFzcyBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50IDogcHVibGljIFVJUmVx
dWVzdEV2ZW50IHsKK3B1YmxpYzoKKyAgICBlbnVtIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnRD
aGFuZ2VUeXBlIHsKKyAgICAgICAgVU5LTk9XTiA9IDAsCisgICAgICAgIElOQ1JFTUVOVCA9IDEs
CisgICAgICAgIElOQ1JFTUVOVF9TTUFMTCA9IDIsCisgICAgICAgIElOQ1JFTUVOVF9MQVJHRSA9
IDMsCisgICAgICAgIElOQ1JFTUVOVF9NQVggPSA0LAorICAgICAgICBERUNSRU1FTlQgPSA1LAor
ICAgICAgICBERUNSRU1FTlRfU01BTEwgPSA2LAorICAgICAgICBERUNSRU1FTlRfTEFSR0UgPSA3
LAorICAgICAgICBERUNSRU1FTlRfTUlOID0gOAorICAgIH07CisgICAgCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudD4gY3JlYXRlKCk7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8
QWJzdHJhY3RWaWV3PiwgaW50IGRldGFpbCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gcmVjZWl2
ZXIsIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnRDaGFuZ2VUeXBlKTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIGNvbnN0IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnRJbml0Jik7Cisg
ICAgCisgICAgdmlydHVhbCB+VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudCgpOworICAgIAorICAg
IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnRDaGFuZ2VUeXBlIGNoYW5nZVR5cGUoKSBjb25zdCB7
IHJldHVybiBtX2NoYW5nZVR5cGU7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0IE9WRVJSSURFOworICAgIAorcHJvdGVjdGVkOgor
ICAgIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LCBp
bnQgZGV0YWlsLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiByZWNlaXZlciwgVUlWYWx1ZUNoYW5n
ZVJlcXVlc3RFdmVudENoYW5nZVR5cGUpOworICAgIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50
SW5pdCYpOworICAgIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQoKTsKKyAgICAKK3ByaXZhdGU6
CisgICAgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudENoYW5nZVR5cGUgbV9jaGFuZ2VUeXBlOwor
fTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRJ
RV9VSSkKKworI2VuZGlmIC8vIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnRfaApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRpZXVpL1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kaWV1aS9VSVZhbHVlQ2hh
bmdlUmVxdWVzdEV2ZW50LmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kaWV1aS9VSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisgCitbCisgICAgQ29uZGl0aW9uYWw9SU5ESUVfVUksCisgICAgQ29uc3RydWN0b3JUZW1w
bGF0ZT1FdmVudAorXSBpbnRlcmZhY2UgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudCA6IFVJUmVx
dWVzdEV2ZW50IHsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBVTktOT1dOID0gMDsKKyAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBJTkNSRU1FTlQgPSAxOworICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IElOQ1JFTUVOVF9TTUFMTCA9IDI7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSU5DUkVN
RU5UX0xBUkdFID0gMzsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBJTkNSRU1FTlRfTUFYID0g
NDsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBERUNSRU1FTlQgPSA1OworICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IERFQ1JFTUVOVF9TTUFMTCA9IDY7CisgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgREVDUkVNRU5UX0xBUkdFID0gNzsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBERUNSRU1F
TlRfTUlOID0gODsKKyAgICAKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQg
Y2hhbmdlVHlwZTsKK307CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNTI0
OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAt
MjQ4OCw2ICsyNDg4LDEyIEBACiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzOHNldEhpZGRlblBhZ2VE
T01UaW1lclRocm90dGxpbmdFbmFibGVkRWIKICNlbmRpZgogCisjaWYgRU5BQkxFKElORElFX1VJ
KQorX19aTjdXZWJDb3JlMjVVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50NmNyZWF0ZUVSS04zV1RG
MTJBdG9taWNTdHJpbmdFUktOU18yOVVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnRJbml0RQorX19a
TjdXZWJDb3JlMjlVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50SW5pdEMxRVBOU18xMUV2ZW50VGFy
Z2V0RXQKK19fWk43V2ViQ29yZTROb2RlMjJkaXNwYXRjaFVJUmVxdWVzdEV2ZW50RU4zV1RGMTBQ
YXNzUmVmUHRySU5TXzE0VUlSZXF1ZXN0RXZlbnRFRUUKKyNlbmRpZgorCiAjaWYgRU5BQkxFKElD
T05EQVRBQkFTRSkKIF9fWk43V2ViQ29yZTEySWNvbkRhdGFiYXNlMTBzZXRFbmFibGVkRWIKIF9f
Wk43V2ViQ29yZTEySWNvbkRhdGFiYXNlMTFkZWZhdWx0SWNvbkVSS05TXzdJbnRTaXplRQpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTUyNDkzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zODM4LDYgKzM4MzgsOSBAQAogCQlB
QTJBNUFENTE2QTQ4NjE0MDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBMkE1QUJEMTZBNDg1RDUwMDk3
NUEyNSAvKiBTcGVlY2hTeW50aGVzaXMuY3BwICovOyB9OwogCQlBQTJBNUFENjE2QTQ4NjE2MDA5
NzVBMjUgLyogRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTJBNUFCOTE2QTQ4NUQ1MDA5NzVBMjUgLyogRE9N
V2luZG93U3BlZWNoU3ludGhlc2lzLmggKi87IH07CiAJCUFBMkE1QUQ3MTZBNDg2MUEwMDk3NUEy
NSAvKiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUEyQTVBQjgxNkE0ODVENTAwOTc1QTI1IC8qIERPTVdp
bmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAgKi87IH07CisJCUFBMzczRjIxMTc3NERCQzMwMEE0MzE2
MCAvKiBKU1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUEzNzNGMUYxNzc0REI3RjAwQTQzMTYwIC8qIEpT
VUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5jcHAgKi87IH07CisJCUFBMzczRjIyMTc3NERCRDQw
MEE0MzE2MCAvKiBKU1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBMzczRjIwMTc3NERCN0YwMEE0MzE2MCAv
KiBKU1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaCAqLzsgfTsKKwkJQUE0MzJBN0YxNzc0QURG
RDAwMURBMkFEIC8qIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE0MzJBN0MxNzc0QURGOTAwMURBMkFE
IC8qIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuY3BwICovOyB9OwogCQlBQTQ3MzlEMTE3NTdB
RkVDMDBFNzY3NjcgLyogVUlSZXF1ZXN0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE0NzM5Q0YxNzU3QUZFQzAwRTc2NzY3IC8qIFVJUmVx
dWVzdEV2ZW50LmNwcCAqLzsgfTsKIAkJQUE0NzM5RDIxNzU3QUZFQzAwRTc2NzY3IC8qIFVJUmVx
dWVzdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBQTQ3MzlEMDE3NTdBRkVDMDBFNzY3NjcgLyogVUlSZXF1ZXN0RXZlbnQuaCAqLzsgfTsKIAkJ
QUE0NzhBN0YxNkNENzBDMzAwN0QxQkI0IC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTQ3
OEE3RDE2Q0Q3MEMzMDA3RDFCQjQgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
aCAqLzsgfTsKQEAgLTEwMzQ1LDYgKzEwMzQ4LDExIEBACiAJCUFBMkE1QUM2MTZBNDg1RDUwMDk3
NUEyNSAvKiBTcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTcGVl
Y2hTeW50aGVzaXNWb2ljZS5jcHA7IHBhdGggPSBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVz
aXNWb2ljZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBMkE1QUM3MTZBNDg1
RDUwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXNWb2ljZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTcGVl
Y2hTeW50aGVzaXNWb2ljZS5oOyBwYXRoID0gTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lz
Vm9pY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUEyQTVBQzgxNkE0ODVENTAw
OTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpc1ZvaWNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBTcGVlY2hTeW50aGVzaXNW
b2ljZS5pZGw7IHBhdGggPSBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBMzczRjFGMTc3NERCN0YwMEE0MzE2MCAv
KiBKU1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNV
SVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQUEzNzNGMjAxNzc0REI3RjAwQTQzMTYwIC8qIEpTVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUE0MzJBN0MxNzc0QURGOTAwMURBMkFEIC8qIFVJVmFs
dWVDaGFuZ2VSZXF1ZXN0RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVUlWYWx1ZUNoYW5n
ZVJlcXVlc3RFdmVudC5jcHA7IHBhdGggPSBNb2R1bGVzL2luZGlldWkvVUlWYWx1ZUNoYW5nZVJl
cXVlc3RFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBNDMyQTdEMTc3
NEFERjkwMDFEQTJBRCAvKiBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaDsgcGF0aCA9IE1vZHVsZXMvaW5kaWV1aS9V
SVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUFBNDMyQTdFMTc3NEFERjkwMDFEQTJBRCAvKiBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmlkbDsgcGF0aCA9IE1vZHVsZXMvaW5k
aWV1aS9VSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQUE0NzM5Q0YxNzU3QUZFQzAwRTc2NzY3IC8qIFVJUmVxdWVzdEV2ZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVJUmVxdWVzdEV2ZW50LmNwcDsg
cGF0aCA9IE1vZHVsZXMvaW5kaWV1aS9VSVJlcXVlc3RFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUFBNDczOUQwMTc1N0FGRUMwMEU3Njc2NyAvKiBVSVJlcXVlc3RFdmVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBVSVJlcXVlc3RFdmVudC5oOyBw
YXRoID0gTW9kdWxlcy9pbmRpZXVpL1VJUmVxdWVzdEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUFBNDc4QTdEMTZDRDcwQzMwMDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTc2MDAsNiArMTc2MDgsOSBAQAogCQkJCUFBNDczOUNGMTc1N0FGRUMwMEU3Njc2NyAv
KiBVSVJlcXVlc3RFdmVudC5jcHAgKi8sCiAJCQkJQUE0NzM5RDAxNzU3QUZFQzAwRTc2NzY3IC8q
IFVJUmVxdWVzdEV2ZW50LmggKi8sCiAJCQkJQUE3RUEwQUExNzU1N0I5MDAwREY0NjQzIC8qIFVJ
UmVxdWVzdEV2ZW50LmlkbCAqLywKKwkJCQlBQTQzMkE3QzE3NzRBREY5MDAxREEyQUQgLyogVUlW
YWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5jcHAgKi8sCisJCQkJQUE0MzJBN0QxNzc0QURGOTAwMURB
MkFEIC8qIFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaCAqLywKKwkJCQlBQTQzMkE3RTE3NzRB
REY5MDAxREEyQUQgLyogVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5pZGwgKi8sCiAJCQkpOwog
CQkJbmFtZSA9IGluZGlldWk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTc2MjQs
NiArMTc2MzUsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQUFBNEZBQ0YxNzVENUNCMzAwNzQz
ODczIC8qIEpTVUlSZXF1ZXN0RXZlbnQuY3BwICovLAogCQkJCUFBQTRGQUNFMTc1RDVDQjMwMDc0
Mzg3MyAvKiBKU1VJUmVxdWVzdEV2ZW50LmggKi8sCisJCQkJQUEzNzNGMUYxNzc0REI3RjAwQTQz
MTYwIC8qIEpTVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5jcHAgKi8sCisJCQkJQUEzNzNGMjAx
Nzc0REI3RjAwQTQzMTYwIC8qIEpTVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5oICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBJbmRpZVVJOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIx
NDU2LDYgKzIxNDY5LDcgQEAKIAkJCQk4NURGMkY4RTBBQTNDODgxMDBBRDY0QzUgLyogRE9NSFRN
TENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUEyMEFDNUQ1MzUwMDUzMjcw
RiAvKiBET01IVE1MQ29sbGVjdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNUMw
NDFFMzBGRkNBOTZEMDA4MzlENEEgLyogRE9NSFRNTERhdGFMaXN0RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQUEzNzNGMjIxNzc0REJENDAwQTQzMTYwIC8qIEpTVUlWYWx1ZUNoYW5nZVJl
cXVlc3RFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjVDMDQxRTUwRkZDQTk2RDAwODM5RDRB
IC8qIERPTUhUTUxEYXRhTGlzdEVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RDM1OUQ3OTExMjlDQTNDMDAwMDZFNUQyIC8qIERPTUhUTUxEZXRhaWxzRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRDM1OUQ3OTMxMjlDQTNDMDAwMDZFNUQyIC8qIERPTUhUTUxEZXRhaWxz
RWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTI1OTE2LDYgKzI1OTMwLDcgQEAK
IAkJCQk0OUM3QjlBNDEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTFRleHR1cmUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEM0NTM0MjcxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3Jt
TG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzdFRjYyRjMxMkY5REI3NDAwQzc3QkQy
IC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlB
QTQzMkE3RjE3NzRBREZEMDAxREEyQUQgLyogVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzMUMwRkYzRDBFNENFRkFDMDA3RDZGRTUgLyogSlNXZWJLaXRB
bmltYXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMkU4QUUzNzE2QTQ5ODQwMDA2
QkIzQUEgLyogSlNXZWJLaXRDU1NGaWx0ZXJSdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMx
MDYwMzc0MTQzMjgxOUMwMEFCRjRCQSAvKiBKU1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjYyNDAsNiArMjYyNTUsNyBAQAogCQkJCTA4NjQxRDQ3MTIxNDJGN0Qw
MDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQ0VBNDg3NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDRUE0ODc5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJMYXllci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlBQTM3M0YyMTE3NzREQkMzMDBBNDMxNjAgLyogSlNVSVZh
bHVlQ2hhbmdlUmVxdWVzdEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTgwRDAwMEYx
MkRFOUIwMDUxRDY4OSAvKiBSZW5kZXJMYXllckJhY2tpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY1ODBDRkUwRjEyREU5QjAwNTFENjg5IC8qIFJlbmRlckxheWVyQ29tcG9zaXRvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MEQxMEQ5OTE1NDVGNTc2MDA5NkQyODggLyogUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAJKHJl
dmlzaW9uIDE1MjQ5MykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eUxpc3RCb3guaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U3Bp
bkJ1dHRvbi5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgorI2luY2x1ZGUgIkRP
TVNldHRhYmxlVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC04MCw2ICs4MSwxMSBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9D
aGFyYWN0ZXJOYW1lcy5oPgogCisjaWYgRU5BQkxFKElORElFX1VJKQorI2ltcG9ydCAiVUlSZXF1
ZXN0RXZlbnQuaCIKKyNpbXBvcnQgIlVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQuaCIKKyNlbmRp
ZgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDA2
LDEyICsxMDEyLDU5IEBACiAKICAgICByZXR1cm4gZmFsc2U7CiB9CisgICAgCisjaWYgRU5BQkxF
KElORElFX1VJKQorY29uc3QgQXRvbWljU3RyaW5nJiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
dWlBY3Rpb25OYW1lRm9yUmVxdWVzdEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1l
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB2YWx1ZUNo
YW5nZUFjdGlvbiwgKCJ2YWx1ZWNoYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKIAorICAgIGlmIChldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnZhbHVlY2hhbmdl
cmVxdWVzdEV2ZW50KQorICAgICAgICByZXR1cm4gdmFsdWVDaGFuZ2VBY3Rpb247CisgICAgCisg
ICAgcmV0dXJuIGVtcHR5QXRvbTsKK30KKyAgICAKK05vZGUqIEFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0OjpyZWNlaXZlckZvclVJUmVxdWVzdEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRO
YW1lKQoreworICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CisgICAgaWYgKCFub2RlIHx8
ICFub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgdWlBY3Rpb25OYW1lID0gdWlBY3Rpb25OYW1lRm9yUmVxdWVzdEV2
ZW50KGV2ZW50TmFtZSk7CisgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG5v
ZGUpOyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CisgICAg
ICAgIGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlKHVpYWN0aW9uc0F0dHIpKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBTdHJpbmcgdWlBY3Rpb25WYWx1ZSA9IGVs
ZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUodWlhY3Rpb25zQXR0cikuc3RyaW5nKCk7CisgICAgICAg
IFJlZlB0cjxET01TZXR0YWJsZVRva2VuTGlzdD4gdG9rZW5MaXN0ID0gRE9NU2V0dGFibGVUb2tl
bkxpc3Q6OmNyZWF0ZSgpOworICAgICAgICB0b2tlbkxpc3QtPnNldFZhbHVlKHVpQWN0aW9uVmFs
dWUpOworICAgICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICBpZiAodG9rZW5MaXN0LT5j
b250YWlucyh1aUFjdGlvbk5hbWUsIGVjKSkKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50Owor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiB2b2lkIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0OjphbHRlclNsaWRlclZhbHVlKGJvb2wgaW5jcmVhc2UpCiB7CiAgICAgaWYg
KHJvbGVWYWx1ZSgpICE9IFNsaWRlclJvbGUpCiAgICAgICAgIHJldHVybjsKIAorI2lmIEVOQUJM
RShJTkRJRV9VSSkKKyAgICAvLyBBUklBIHNsaWRlcnMgc2hvdWxkIHVzZSBJbmRpZVVJIHRvIGtu
b3cgd2hlbiB0byBjYXVzZSBhbiB1cGRhdGUKKyAgICBpZiAobm9kZSgpICYmIGFyaWFSb2xlQXR0
cmlidXRlKCkgPT0gU2xpZGVyUm9sZSkgeworICAgICAgICBOb2RlKiByZWNlaXZlciA9IHJlY2Vp
dmVyRm9yVUlSZXF1ZXN0RXZlbnQoZXZlbnROYW1lcygpLnZhbHVlY2hhbmdlcmVxdWVzdEV2ZW50
KTsKKyAgICAgICAgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudEluaXQgZXZlbnRJbml0KHJlY2Vp
dmVyLCBpbmNyZWFzZSA/IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQ6OklOQ1JFTUVOVCA6IFVJ
VmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQ6OkRFQ1JFTUVOVCk7CisgICAgICAgIFJlZlB0cjxVSVZh
bHVlQ2hhbmdlUmVxdWVzdEV2ZW50PiBldmVudCA9IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkudmFsdWVjaGFuZ2VyZXF1ZXN0RXZlbnQsIGV2ZW50SW5pdCk7
CisKKyAgICAgICAgbm9kZSgpLT5kaXNwYXRjaFVJUmVxdWVzdEV2ZW50KGV2ZW50KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIAorICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9y
IGdlc3R1cmVJbmRpY2F0b3IoRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAg
aWYgKCFnZXRBdHRyaWJ1dGUoc3RlcEF0dHIpLmlzRW1wdHkoKSkKICAgICAgICAgY2hhbmdlVmFs
dWVCeVN0ZXAoaW5jcmVhc2UpOwogICAgIGVsc2UKQEAgLTEwMjAsMTMgKzEwNzMsMTEgQEAKICAg
ICAKIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmluY3JlbWVudCgpCiB7Ci0gICAgVXNl
ckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKTsKICAgICBhbHRlclNsaWRlclZhbHVlKHRydWUpOwogfQogCiB2b2lkIEFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0OjpkZWNyZW1lbnQoKQogewotICAgIFVzZXJHZXN0dXJlSW5kaWNh
dG9yIGdlc3R1cmVJbmRpY2F0b3IoRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAg
ICAgYWx0ZXJTbGlkZXJWYWx1ZShmYWxzZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgJKHJldmlz
aW9uIDE1MjQ5MykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDYgKzIwMCwxMSBAQAogICAgIFN0
cmluZyBhbHRlcm5hdGl2ZVRleHRGb3JXZWJBcmVhKCkgY29uc3Q7CiAgICAgdm9pZCBhcmlhTGFi
ZWxlZEJ5VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JikgY29uc3Q7CiAgICAgdmlydHVh
bCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Q7CisgICAgCisjaWYg
RU5BQkxFKElORElFX1VJKQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdWlBY3Rpb25OYW1lRm9y
UmVxdWVzdEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIE5vZGUqIHJlY2VpdmVyRm9y
VUlSZXF1ZXN0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJik7CisjZW5kaWYKIH07CiAKIGlubGlu
ZSBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCogdG9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdChBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJKHJl
dmlzaW9uIDE1MjQ5MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI1Miw2ICsyNTIsOCBAQAogICAgIFwKICAgICBtYWNybyh3ZWJraXRyZXNv
dXJjZXRpbWluZ2J1ZmZlcmZ1bGwpIFwKICAgICBcCisgICAgbWFjcm8odmFsdWVjaGFuZ2VyZXF1
ZXN0KSBcCisgICAgXAogICAgIG1hY3JvKHdlYmtpdGRldmljZXByb3hpbWl0eSkgXAogICAgIFwK
ICAgICBtYWNybyhzZWN1cml0eXBvbGljeXZpb2xhdGlvbikgXApJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaW4JKHJldmlzaW9uIDE1MjQ5MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC01OCw0ICs1OCw1IEBACiBDU1NGb250RmFjZUxv
YWRFdmVudCBjb25kaXRpb25hbD1GT05UX0xPQURfRVZFTlRTCiBTZWN1cml0eVBvbGljeVZpb2xh
dGlvbkV2ZW50IGNvbmRpdGlvbmFsPUNTUF9ORVhUCiBVSVJlcXVlc3RFdmVudCBjb25kaXRpb25h
bD1JTkRJRV9VSQorVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudCBjb25kaXRpb25hbD1JTkRJRV9V
SQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAxNTI0
OTMpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMiw2ICsxMTIsMTAgQEAKICNpbmNsdWRlICJOZXR3b3JrSW5mb0NvbnRyb2xsZXIu
aCIKICNlbmRpZgogCisjaWYgRU5BQkxFKElORElFX1VJKQorI2luY2x1ZGUgIlVJVmFsdWVDaGFu
Z2VSZXF1ZXN0RXZlbnQuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFBST1hJTUlUWV9FVkVOVFMp
CiAjaW5jbHVkZSAiRGV2aWNlUHJveGltaXR5Q29udHJvbGxlci5oIgogI2VuZGlmCkBAIC0yMDUz
LDYgKzIwNTcsMTUgQEAKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKElORElFX1VJKQordm9pZCBJ
bnRlcm5hbHM6OnNlbmRVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50KERvY3VtZW50KiwgTm9kZSog
dGFyZ2V0LCBOb2RlKiByZWNlaXZlciwgdW5zaWduZWQgc2hvcnQgY2hhbmdlVHlwZSwgRXhjZXB0
aW9uQ29kZSYpCit7CisgICAgVUlWYWx1ZUNoYW5nZVJlcXVlc3RFdmVudEluaXQgZXZlbnRJbml0
KHJlY2VpdmVyLCBjaGFuZ2VUeXBlKTsKKyAgICBSZWZQdHI8VUlWYWx1ZUNoYW5nZVJlcXVlc3RF
dmVudD4gZXZlbnQgPSBVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLnZhbHVlY2hhbmdlcmVxdWVzdEV2ZW50LCBldmVudEluaXQpOworICAgIHRhcmdldC0+ZGlz
cGF0Y2hVSVJlcXVlc3RFdmVudChldmVudCk7Cit9CisjZW5kaWYKKwogYm9vbCBJbnRlcm5hbHM6
OmlzU2VsZWN0UG9wdXBWaXNpYmxlKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFpc0hUTUxTZWxl
Y3RFbGVtZW50KG5vZGUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZp
c2lvbiAxNTI0OTMpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTcsNiArMjE3LDEwIEBACiAKICAgICB2b2lkIHNldERldmljZVByb3hp
bWl0eShEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgZXZlbnRUeXBlLCBkb3VibGUgdmFsdWUsIGRv
dWJsZSBtaW4sIGRvdWJsZSBtYXgsIEV4Y2VwdGlvbkNvZGUmKTsKIAorI2lmIEVOQUJMRShJTkRJ
RV9VSSkKKyAgICB2b2lkIHNlbmRVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50KERvY3VtZW50Kiwg
Tm9kZSogdGFyZ2V0LCBOb2RlKiByZWNlaXZlciwgdW5zaWduZWQgc2hvcnQgY2hhbmdlVHlwZSwg
RXhjZXB0aW9uQ29kZSYpOworI2VuZGlmCisKICAgICBlbnVtIHsKICAgICAgICAgLy8gVmFsdWVz
IG5lZWQgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGggSW50ZXJuYWxzLmlkbC4KICAgICAgICAgTEFZ
RVJfVFJFRV9JTkNMVURFU19WSVNJQkxFX1JFQ1RTID0gMSwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9uIDE1MjQ5MykKKysrIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjU1LDYgKzI1NSw4IEBACiAK
ICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHZvaWQgc2ltdWxhdGVBdWRpb0ludGVycnVwdGlvbihO
b2RlIG5vZGUpOwogCisgICAgW0NvbmRpdGlvbmFsPUlORElFX1VJLCBSYWlzZXNFeGNlcHRpb25d
IHZvaWQgc2VuZFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQoRG9jdW1lbnQgZG9jdW1lbnQsIE5v
ZGUgdGFyZ2V0LCBOb2RlIHJlY2VpdmVyLCB1bnNpZ25lZCBzaG9ydCBjaGFuZ2VUeXBlKTsKKwog
ICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjJdIHZvaWQgaW5pdGlhbGl6ZU1vY2tD
RE0oKTsKIAogICAgIFtDb25kaXRpb25hbD1TUEVFQ0hfU1lOVEhFU0lTXSB2b2lkIGVuYWJsZU1v
Y2tTcGVlY2hTeW50aGVzaXplcigpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTUyNDk3KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMt
MDctMDkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bmRpZVVJOiBTdXBwb3J0IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzMwNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9qcy9nbG9iYWwtY29uc3Ry
dWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluZGlldWkvdWl2YWx1
ZWNoYW5nZXJlcXVlc3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbmRpZXVpL3Vp
dmFsdWVjaGFuZ2VyZXF1ZXN0Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTA3LTA5ICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggMzAlIEpTQmVuY2ggcmVncmVzc2lv
biAoY2F1c2VkIGJ5IGFkZGluZyBjb2x1bW4gbnVtYmVycyB0byBzdGFjayB0cmFjZXMpLgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvZ2xvYmFsLWNvbnN0
cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTUyNDkzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNzg4LDYgKzE3ODgsMTEgQEAKIFBBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdVSVJlcXVlc3RFdmVudCcpLmhhc093blBy
b3BlcnR5KCdzZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGdsb2JhbCwgJ1VJUmVxdWVzdEV2ZW50JykuZW51bWVyYWJsZSBpcyBmYWxzZQogUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1VJUmVxdWVzdEV2ZW50Jyku
Y29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICdVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50JykudmFsdWUgaXMgVUlWYWx1ZUNo
YW5nZVJlcXVlc3RFdmVudAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGds
b2JhbCwgJ1VJVmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQnKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0Jykg
aXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdV
SVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNl
CitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnVUlWYWx1ZUNo
YW5nZVJlcXVlc3RFdmVudCcpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdVSVZhbHVlQ2hhbmdlUmVxdWVzdEV2ZW50Jyku
Y29uZmlndXJhYmxlIGlzIHRydWUKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICdVUkwnKS52YWx1ZSBpcyBVUkwKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihnbG9iYWwsICdVUkwnKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UK
IFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdVUkwnKS5oYXNP
d25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKSW5kZXg6IExheW91dFRlc3RzL2luZGlldWkvdWl2
YWx1ZWNoYW5nZXJlcXVlc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2luZGlldWkvdWl2YWx1ZWNoYW5nZXJlcXVlc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaW5kaWV1aS91aXZhbHVlY2hhbmdlcmVxdWVzdC1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNSBAQAorc2xpZGVyCitUaGlzIHRlc3RzIHRoYXQg
VUlWYWx1ZUNoYW5nZVJlcXVlc3RzIGFyZSByZWNlaXZlZCBwcm9wZXJseQorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworVmVyaWZ5IHRoYXQgdGhlIHZhbHVlIGNoYW5nZSByZXF1ZXN0
cyBnZW5lcmF0ZWQgdGhyb3VnaCBJbnRlcm5hbHMgYXJlIHJlY2VpdmVkLgorRXZlbnQgcmVjZWl2
ZXI6IHNsaWRlcgorQ2hhbmdlIHR5cGU6IDEKKworRXZlbnQgcmVjZWl2ZXI6IHNsaWRlcgorQ2hh
bmdlIHR5cGU6IDUKKworCitWZXJpZnkgdGhhdCBpbmNyZW1lbnRpbmcvZGVjcmVtZW50aW5nIHRo
cm91Z2ggYWNjZXNzaWJpbGl0eSBhbHNvIGdlbmVyYXRlcyBldmVudHMuCitFdmVudCByZWNlaXZl
cjogc2xpZGVyCitDaGFuZ2UgdHlwZTogMQorCitFdmVudCByZWNlaXZlcjogc2xpZGVyCitDaGFu
Z2UgdHlwZTogNQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvaW5kaWV1aS91aXZhbHVlY2hhbmdlcmVxdWVzdC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2luZGlldWkvdWl2YWx1ZWNoYW5nZXJlcXVl
c3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2luZGlldWkvdWl2YWx1ZWNoYW5n
ZXJlcXVlc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKworPGRpdiB1aWFjdGlvbnM9InZhbHVlY2hhbmdl
IiBpZD0ic2xpZGVyIiByb2xlPSJzbGlkZXIiPnNsaWRlcjwvZGl2PgorCis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0
IFVJVmFsdWVDaGFuZ2VSZXF1ZXN0cyBhcmUgcmVjZWl2ZWQgcHJvcGVybHkiKTsKKworICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgZG9jdW1lbnQuYm9keS5h
ZGRFdmVudExpc3RlbmVyKCd2YWx1ZWNoYW5nZXJlcXVlc3QnLCB2YWx1ZUNoYW5nZUhhbmRsZXIp
OworICAgIHZhciBoYW5kbGVyQ291bnQgPSAwOworICAgIGZ1bmN0aW9uIHZhbHVlQ2hhbmdlSGFu
ZGxlcihlKSB7CisgICAgICAKKyAgICAgICAgZGVidWcoIkV2ZW50IHJlY2VpdmVyOiAiICsgZS5y
ZWNlaXZlci5pZCk7CisgICAgICAgIGRlYnVnKCJDaGFuZ2UgdHlwZTogIiArIGUuY2hhbmdlVHlw
ZSArICJcbiIpOworICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICBlLnByZXZl
bnREZWZhdWx0KCk7CisKKyAgICAgICAgaGFuZGxlckNvdW50Kys7CisKKyAgICAgICAgaWYgKGhh
bmRsZXJDb3VudCA9PSA0KQorICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorCisg
ICAgZGVidWcoIlZlcmlmeSB0aGF0IHRoZSB2YWx1ZSBjaGFuZ2UgcmVxdWVzdHMgZ2VuZXJhdGVk
IHRocm91Z2ggSW50ZXJuYWxzIGFyZSByZWNlaXZlZC4iKTsKKyAgICBpbnRlcm5hbHMuc2VuZFVJ
VmFsdWVDaGFuZ2VSZXF1ZXN0RXZlbnQoZG9jdW1lbnQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJzbGlkZXIiKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNsaWRlciIpLCBVSVZhbHVlQ2hh
bmdlUmVxdWVzdEV2ZW50LklOQ1JFTUVOVCk7CisgICAgaW50ZXJuYWxzLnNlbmRVSVZhbHVlQ2hh
bmdlUmVxdWVzdEV2ZW50KGRvY3VtZW50LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2xpZGVy
IiksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzbGlkZXIiKSwgVUlWYWx1ZUNoYW5nZVJlcXVl
c3RFdmVudC5ERUNSRU1FTlQpOworCisgICAgLy8gVGhpcyBpcyBhbHNvIGhvb2tlZCB1cCB0aHJv
dWdoIGFjY2Vzc2liaWxpdHkuCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgeworICAgICAgIHZhciBheFNsaWRlciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgic2xpZGVyIik7CisgICAgICAgZGVidWcoIlxuVmVyaWZ5IHRoYXQg
aW5jcmVtZW50aW5nL2RlY3JlbWVudGluZyB0aHJvdWdoIGFjY2Vzc2liaWxpdHkgYWxzbyBnZW5l
cmF0ZXMgZXZlbnRzLiIpOworICAgICAgIGF4U2xpZGVyLmluY3JlbWVudCgpOworICAgICAgIGF4
U2xpZGVyLmRlY3JlbWVudCgpOworICAgIH0KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIu
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>
<flag name="review"
          id="228010"
          type_id="1"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>