<?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>143399</bug_id>
          
          <creation_ts>2015-04-03 21:35:15 -0700</creation_ts>
          <short_desc>Code clean up for extracting information from the mix of WritingMode and TextDirection</short_desc>
          <delta_ts>2015-05-28 16:15:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>hyatt</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1082755</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-04-03 21:35:15 -0700</bug_when>
    <thetext>There should be eight TextFlows. A TextFlow consists of two directions. The first one controls the line growing direction and the second one controls the block growing direction.  The possible TextFlows are:

TextFlowEastSouth
TextFlowWestSouth
TextFlowEastNorth
TextFlowWestNorth
TextFlowSouthEast
TextFlowSouthWest
TextFlowNorthEast
TextFlowNorthWest

We need to extract the following information easily from the TextFlow

-- isTextFlowReversed() // RTL
-- isTextFlowFlipped()  // the opposite direction to normal
-- isTextFlowVertical() // The line grows vertically

I came across the function resolveToPhysicalProperty() and I found out it is needlessly complicated and hard to read. I think mixing the WritingMode and the TextDirection into TextFlow and choosing their values carefully to ease implementing the above functions can make things clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082761</commentid>
    <comment_count>1</comment_count>
      <attachid>250122</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-04-03 21:56:44 -0700</bug_when>
    <thetext>Created attachment 250122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082762</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-03 21:58:11 -0700</bug_when>
    <thetext>Attachment 250122 did not pass style-queue:


ERROR: Source/WebCore/platform/text/TextFlags.h:31:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/text/WritingMode.h:41:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 2 in 4 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>1093950</commentid>
    <comment_count>3</comment_count>
      <attachid>252909</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-11 17:04:29 -0700</bug_when>
    <thetext>Created attachment 252909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093952</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-11 17:06:02 -0700</bug_when>
    <thetext>Attachment 252909 did not pass style-queue:


ERROR: Source/WebCore/platform/text/TextFlags.h:31:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 8 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>1093969</commentid>
    <comment_count>5</comment_count>
      <attachid>252909</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-11 17:30:29 -0700</bug_when>
    <thetext>Comment on attachment 252909
Patch

Need to remove LengthBox.cpp from more build files. Just do a grep to see where it’s mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093970</commentid>
    <comment_count>6</comment_count>
      <attachid>252913</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-11 17:32:47 -0700</bug_when>
    <thetext>Created attachment 252913
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093971</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-11 17:34:21 -0700</bug_when>
    <thetext>Attachment 252913 did not pass style-queue:


ERROR: Source/WebCore/platform/text/TextFlags.h:31:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 8 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>1093973</commentid>
    <comment_count>8</comment_count>
      <attachid>252914</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-11 17:38:31 -0700</bug_when>
    <thetext>Created attachment 252914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093975</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-11 17:41:38 -0700</bug_when>
    <thetext>Attachment 252914 did not pass style-queue:


ERROR: Source/WebCore/platform/text/TextFlags.h:31:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 8 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>1093993</commentid>
    <comment_count>10</comment_count>
      <attachid>252914</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-11 18:22:55 -0700</bug_when>
    <thetext>Comment on attachment 252914
Patch

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

&gt; Source/WebCore/platform/LengthBox.h:37
&gt; +        : m_sides { type, type, type, type }

C:\cygwin\home\buildbot\WebKit\Source\WebCore\platform\LengthBox.h(38): error C2536: &apos;WebCore::LengthBox::WebCore::LengthBox::m_sides&apos; : cannot specify explicit initializer for arrays (C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\obj32\WebCore\DerivedSources\StyleBuilder.cpp) [C:\cygwin\home\buildbot\WebKit\Source\WebCore\WebCore.vcxproj\WebCore.vcxproj]
          C:\cygwin\home\buildbot\WebKit\Source\WebCore\platform\LengthBox.h(87) : see declaration of &apos;WebCore::LengthBox::m_sides&apos;

Windows compiler doesn’t like this. Maybe std::array will help.

&gt; Source/WebCore/platform/LengthBox.h:87
&gt; +    Length m_sides[4];

If we used std::array here instead, then operator== above would not have to list all four sides. It could just say return m_sides == other.m_sides instead.

&gt; Source/WebCore/platform/text/TextFlags.h:31
&gt; +enum TextDirection { LTR, RTL };

Logical change. But seems slightly dangerous to change this unless we audit every single call site that uses TextDirection. Some of them might be doing if (x).

&gt; Source/WebCore/platform/text/WritingMode.h:44
&gt; +#define MAKE_TEXT_FLOW(writingMode, direction)  ((writingMode) &lt;&lt; 1 | (direction))

Seems like we could use a constexpr function some day, maybe only in the future. I suggest also #undef MAKE_TEXT_FLOW after we are done with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094014</commentid>
    <comment_count>11</comment_count>
      <attachid>252924</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-11 20:14:12 -0700</bug_when>
    <thetext>Created attachment 252924
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094015</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-11 20:15:45 -0700</bug_when>
    <thetext>Attachment 252924 did not pass style-queue:


ERROR: Source/WebCore/platform/text/TextFlags.h:31:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 8 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>1094019</commentid>
    <comment_count>13</comment_count>
      <attachid>252926</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-11 20:38:18 -0700</bug_when>
    <thetext>Created attachment 252926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094020</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-11 20:39:55 -0700</bug_when>
    <thetext>Attachment 252926 did not pass style-queue:


ERROR: Source/WebCore/platform/text/TextFlags.h:31:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 8 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>1094024</commentid>
    <comment_count>15</comment_count>
      <attachid>252927</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-11 20:55:47 -0700</bug_when>
    <thetext>Created attachment 252927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094026</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-11 20:57:15 -0700</bug_when>
    <thetext>Attachment 252927 did not pass style-queue:


ERROR: Source/WebCore/platform/text/TextFlags.h:31:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 8 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>1094032</commentid>
    <comment_count>17</comment_count>
      <attachid>252930</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-11 21:12:20 -0700</bug_when>
    <thetext>Created attachment 252930
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094033</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-11 21:18:50 -0700</bug_when>
    <thetext>Attachment 252930 did not pass style-queue:


ERROR: Source/WebCore/platform/text/TextFlags.h:31:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 8 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>1094043</commentid>
    <comment_count>19</comment_count>
      <attachid>252933</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-11 21:53:19 -0700</bug_when>
    <thetext>Created attachment 252933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094045</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-11 21:56:19 -0700</bug_when>
    <thetext>Attachment 252933 did not pass style-queue:


ERROR: Source/WebCore/platform/text/TextFlags.h:31:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 8 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>1094173</commentid>
    <comment_count>21</comment_count>
      <attachid>252966</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-12 09:15:36 -0700</bug_when>
    <thetext>Created attachment 252966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094174</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-12 09:17:31 -0700</bug_when>
    <thetext>Attachment 252966 did not pass style-queue:


ERROR: Source/WebCore/platform/text/TextFlags.h:31:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 8 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>1094181</commentid>
    <comment_count>23</comment_count>
      <attachid>252967</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-12 09:51:23 -0700</bug_when>
    <thetext>Created attachment 252967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094182</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-12 09:53:23 -0700</bug_when>
    <thetext>Attachment 252967 did not pass style-queue:


ERROR: Source/WebCore/platform/text/TextFlags.h:31:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 8 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>1094198</commentid>
    <comment_count>25</comment_count>
      <attachid>252967</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-12 10:52:39 -0700</bug_when>
    <thetext>Comment on attachment 252967
Patch

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

&gt; Source/WebCore/platform/text/WritingMode.h:49
&gt; +enum TextFlow {
&gt; +    TextFlowEastSouth = MAKE_TEXT_FLOW(TopToBottomWritingMode, LTR),

enum class would avoid the repetition here: enum class TextFlow { EastSouth, ....

But I would prefer something like BlockEastInlineSouth (if that&apos;s accurate).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094202</commentid>
    <comment_count>26</comment_count>
      <attachid>252967</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2015-05-12 10:57:01 -0700</bug_when>
    <thetext>Comment on attachment 252967
Patch

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

&gt; Source/WebCore/platform/text/WritingMode.h:56
&gt; +    TextFlowWestSouth = MAKE_TEXT_FLOW(TopToBottomWritingMode, RTL),
&gt; +    TextFlowEastNorth = MAKE_TEXT_FLOW(BottomToTopWritingMode, LTR),
&gt; +    TextFlowWestNorth = MAKE_TEXT_FLOW(BottomToTopWritingMode, RTL),
&gt; +    TextFlowSouthEast = MAKE_TEXT_FLOW(LeftToRightWritingMode, LTR),
&gt; +    TextFlowSouthWest = MAKE_TEXT_FLOW(LeftToRightWritingMode, RTL),
&gt; +    TextFlowNorthEast = MAKE_TEXT_FLOW(RightToLeftWritingMode, LTR),
&gt; +    TextFlowNorthWest = MAKE_TEXT_FLOW(RightToLeftWritingMode, RTL)

I think using cardinal directions is weird. In my opinion, a better convention would be to just use the terminology from Internet Explorer&apos;s original writing mode definitions, e.g.,

tb-rl
tb-lr

etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094274</commentid>
    <comment_count>27</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-12 14:27:52 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Comment on attachment 252967 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=252967&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/text/WritingMode.h:56
&gt; &gt; +    TextFlowWestSouth = MAKE_TEXT_FLOW(TopToBottomWritingMode, RTL),
&gt; &gt; +    TextFlowEastNorth = MAKE_TEXT_FLOW(BottomToTopWritingMode, LTR),
&gt; &gt; +    TextFlowWestNorth = MAKE_TEXT_FLOW(BottomToTopWritingMode, RTL),
&gt; &gt; +    TextFlowSouthEast = MAKE_TEXT_FLOW(LeftToRightWritingMode, LTR),
&gt; &gt; +    TextFlowSouthWest = MAKE_TEXT_FLOW(LeftToRightWritingMode, RTL),
&gt; &gt; +    TextFlowNorthEast = MAKE_TEXT_FLOW(RightToLeftWritingMode, LTR),
&gt; &gt; +    TextFlowNorthWest = MAKE_TEXT_FLOW(RightToLeftWritingMode, RTL)
&gt; 
&gt; I think using cardinal directions is weird. In my opinion, a better
&gt; convention would be to just use the terminology from Internet Explorer&apos;s
&gt; original writing mode definitions, e.g.,
&gt; 
&gt; tb-rl
&gt; tb-lr
&gt; 
&gt; etc.

The problem with this naming is the writing_mode is physical direction but the text_direction is logical direction relative to the writing mode.  For example Internet Explorer&apos;s naming in these cases

lr-lr == TextFlowSouthEast
lr-rl == TextFlowSouthWest
rl-lr == TextFlowNorthEast
rl-rl == TextFlowNorthWest

do not indicate easily where the text grows. But cardinal directions give you that easily.

The first one TextFlowSouthEast says:
1. The line grows from South-to-North
2. The paragraph grows from East-to-West

But with &quot;lr-lr&quot;:
1. The first &quot;lr&quot; says the paragraph grows from East-to-West
2. For the second &quot;lr&quot;, I have to remember that the text is vertical so the left now means the bottom so I know that the line grows from South-to-North.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097928</commentid>
    <comment_count>28</comment_count>
      <attachid>253855</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-28 12:27:11 -0700</bug_when>
    <thetext>Created attachment 253855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097929</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-28 12:30:31 -0700</bug_when>
    <thetext>Attachment 253855 did not pass style-queue:


ERROR: Source/WebCore/platform/text/WritingMode.h:37:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 15 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>1097937</commentid>
    <comment_count>30</comment_count>
      <attachid>253857</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-28 13:19:30 -0700</bug_when>
    <thetext>Created attachment 253857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097938</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-28 13:21:06 -0700</bug_when>
    <thetext>Attachment 253857 did not pass style-queue:


ERROR: Source/WebCore/platform/text/WritingMode.h:37:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 16 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>1097950</commentid>
    <comment_count>32</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-28 14:08:36 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 252914 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=252914&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/LengthBox.h:37
&gt; &gt; +        : m_sides { type, type, type, type }
&gt; 
&gt; C:\cygwin\home\buildbot\WebKit\Source\WebCore\platform\LengthBox.h(38):
&gt; error C2536: &apos;WebCore::LengthBox::WebCore::LengthBox::m_sides&apos; : cannot
&gt; specify explicit initializer for arrays
&gt; (C:
&gt; \cygwin\home\buildbot\WebKit\WebKitBuild\Release\obj32\WebCore\DerivedSources
&gt; \StyleBuilder.cpp)
&gt; [C:\cygwin\home\buildbot\WebKit\Source\WebCore\WebCore.vcxproj\WebCore.
&gt; vcxproj]
&gt;          
&gt; C:\cygwin\home\buildbot\WebKit\Source\WebCore\platform\LengthBox.h(87) : see
&gt; declaration of &apos;WebCore::LengthBox::m_sides&apos;
&gt; 
&gt; Windows compiler doesn’t like this. Maybe std::array will help.
&gt; 

This has been fixed and submitted in http://trac.webkit.org/changeset/184895.

&gt; &gt; Source/WebCore/platform/LengthBox.h:87
&gt; &gt; +    Length m_sides[4];
&gt; 
&gt; If we used std::array here instead, then operator== above would not have to
&gt; list all four sides. It could just say return m_sides == other.m_sides
&gt; instead.
&gt; 

This has been fixed and submitted in http://trac.webkit.org/changeset/184895.

&gt; &gt; Source/WebCore/platform/text/TextFlags.h:31
&gt; &gt; +enum TextDirection { LTR, RTL };
&gt; 
&gt; Logical change. But seems slightly dangerous to change this unless we audit
&gt; every single call site that uses TextDirection. Some of them might be doing
&gt; if (x).
&gt; 

I checked all the places which use TextDirection and fortunately I did not find condition like &quot;if (textDirection)&quot; or &quot;if (!textDirection)&quot;. So changing the order of LTR and RTL should be safe.

&gt; &gt; Source/WebCore/platform/text/WritingMode.h:44
&gt; &gt; +#define MAKE_TEXT_FLOW(writingMode, direction)  ((writingMode) &lt;&lt; 1 | (direction))
&gt; 
&gt; Seems like we could use a constexpr function some day, maybe only in the
&gt; future. I suggest also #undef MAKE_TEXT_FLOW after we are done with it.

I tried using constexpr and its seems to work except on Windows. So I gave up and I left the macro and the function as they are but I added the #undef as suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097967</commentid>
    <comment_count>33</comment_count>
      <attachid>253857</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-28 14:55:51 -0700</bug_when>
    <thetext>Comment on attachment 253857
Patch

Clearing flags on attachment: 253857

Committed r184962: &lt;http://trac.webkit.org/changeset/184962&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097968</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-28 14:55:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097998</commentid>
    <comment_count>35</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-05-28 16:15:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/21150357&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250122</attachid>
            <date>2015-04-03 21:56:44 -0700</date>
            <delta_ts>2015-05-11 17:04:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143399-20150403215558.patch</filename>
            <type>text/plain</type>
            <size>11680</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjM0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTA0LTAzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29kZSBjbGVh
biB1cCBmb3IgZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtaXggb2YgV3JpdGluZ01v
ZGUgYW5kIFRleHREaXJlY3Rpb24gLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQzMzk5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBlaWdodCBUZXh0Rmxvd3MuIEEgVGV4dEZs
b3cgY29uc2lzdHMgb2YgdHdvIGRpcmVjdGlvbnMuIFRoZQorICAgICAgICBmaXJzdCBvbmUgY29u
dHJvbHMgdGhlIGxpbmUgZ3Jvd2luZyBkaXJlY3Rpb24gYW5kIHRoZSBzZWNvbmQgb25lIGNvbnRy
b2xzIHRoZQorICAgICAgICBibG9jayBncm93aW5nIGRpcmVjdGlvbi4KKyAgICAgICAgCisgICAg
ICAgIFdlIG5lZWQgdG8gZXh0cmFjdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGVhc2lseSBm
cm9tIHRoZSBUZXh0RmxvdworCisgICAgICAgIC0tIGlzVGV4dEZsb3dSZXZlcnNlZCgpIC8vIFJU
TAorICAgICAgICAtLSBpc1RleHRGbG93RmxpcHBlZCgpICAvLyB0aGUgb3Bwb3NpdGUgZGlyZWN0
aW9uIHRvIG5vcm1hbAorICAgICAgICAtLSBpc1RleHRGbG93VmVydGljYWwoKSAvLyBUaGUgbGlu
ZSBncm93cyB2ZXJ0aWNhbGx5CisKKyAgICAgICAgTWl4aW5nIFdyaXRpbmdNb2RlIGFuZCBUZXh0
RGlyZWN0aW9uIGludG8gVGV4dEZsb3cgYW5kIGNob29zaW5nIHRoZWlyIHZhbHVlcworICAgICAg
ICBjYXJlZnVsbHkgdG8gZWFzZSBpbXBsZW1lbnRpbmcgdGhlIGFib3ZlIGZ1bmN0aW9ucyBjYW4g
bWFrZSB0aGluZ3MgY2xlYXJlci4KKworICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpyZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KTogSW5zdGVhZCBvZiBo
YW5kbGluZyB0aGUgZWlnaHQgcG9zc2libGUKKyAgICAgICAgY2FzZXMgb2YgdGhlIHRleHQgZmxv
d3Mgb25lIGJ5IG9uZSwgd2UgY2FuIGFuYWx5emUgdGhlIHRleHQgZmxvdyBhbmQgc3dhcCB0aGUK
KyAgICAgICAgc2lkZSBwcm9wZXJ0eSBpbmRleCB0byBnZXQgdGhlIHByb3BlciB2YWx1ZS4KKyAg
ICAgICAgCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaDogVXN1YWxseSB0aGUg
ZGVmYXVsdCB2YWx1ZSBpcyBkZWZpbmVkIGZpcnN0LgorICAgICAgICBBbmQgaWYgdGhlIHZhbHVl
IGlzIGludGVnZXIgb3IgZW51bSwgaXQgc2hvdWxkIGJlIGVxdWFsIHRvIHplcm8uIFNpbmNlIExU
UgorICAgICAgICBpcyB0aGUgZGVmYXVsdCBmb3IgdGhlIHRleHQgZGlyZWN0aW9uLCBpdCBzaG91
bGQgYmUgZGVmaW5lZCBiZWZvcmUgUlRMLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L1dyaXRpbmdNb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjptYWtlVGV4dEZsb3cpOiBEZWZp
bmluZyBhIGZ1bmN0aW9uIHRvIG1ha2UgYSBUZXh0RmxvdyBvdXQgZnJvbQorICAgICAgICBXcml0
aW5nTW9kZSBhbmQgVGV4dERpcmVjdGlvbi4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpp
c1RleHRGbG93UmV2ZXJzZWQpOiBSZXR1cm5zIHRydWUgaWYgdGhlIHRleHQgZGlyZWN0aW9uIGlz
IFJUTC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjppc1RleHRGbG93RmxpcHBlZCk6IFJl
dHVybnMgdHJ1ZSBpZiBibG9jayBncm93aW5nIGRpcmVjdGlvbgorICAgICAgICBpcyBpbiB0aGUg
b3Bwb3NpdGUgZGlyZWN0aW9uIHRvIG5vcm1hbC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3Jl
Ojppc1RleHRGbG93VmVydGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6aXNWZXJ0aWNhbFdyaXRp
bmdNb2RlKTogUmV0dXJucyB0cnVlIGlmIFRoZSBsaW5lIGdyb3dzIHZlcnRpY2FsbHkuCisgICAg
ICAgIAorICAgICAgICAoV2ViQ29yZTo6aXNIb3Jpem9udGFsV3JpdGluZ01vZGUpOiAKKyAgICAg
ICAgKFdlYkNvcmU6OmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUpOiBVc2UgdGhlIHRleHQgZmxvdyBmdW5jdGlv
bnMgaW5zdGVhZC4KKwogMjAxNS0wNC0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDb250ZW50IEV4dGVuc2lvbnNdIEFkZCBtZW1vcnkg
cmVwb3J0aW5nLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCShyZXZpc2lvbiAx
ODIzNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NSwxMTEgKzU1LDI2IEBAIHZvaWQgQ1NTUHJvcGVydHk6OndyYXBWYWx1ZUluQ29t
bWFTZXBhcmEKIH0KIAogZW51bSBMb2dpY2FsQm94U2lkZSB7IEJlZm9yZVNpZGUsIEVuZFNpZGUs
IEFmdGVyU2lkZSwgU3RhcnRTaWRlIH07Ci1lbnVtIFBoeXNpY2FsQm94U2lkZSB7IFRvcFNpZGUs
IFJpZ2h0U2lkZSwgQm90dG9tU2lkZSwgTGVmdFNpZGUgfTsKIAogc3RhdGljIENTU1Byb3BlcnR5
SUQgcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgV3Jp
dGluZ01vZGUgd3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlIGxvZ2ljYWxTaWRlLCBjb25zdCBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCiB7Ci0gICAgaWYgKGRpcmVjdGlvbiA9
PSBMVFIpIHsKLSAgICAgICAgaWYgKHdyaXRpbmdNb2RlID09IFRvcFRvQm90dG9tV3JpdGluZ01v
ZGUpIHsKLSAgICAgICAgICAgIC8vIFRoZSBjb21tb24gY2FzZS4gVGhlIGxvZ2ljYWwgYW5kIHBo
eXNpY2FsIGJveCBzaWRlcyBtYXRjaC4KLSAgICAgICAgICAgIC8vIExlZnQgPSBTdGFydCwgUmln
aHQgPSBFbmQsIEJlZm9yZSA9IFRvcCwgQWZ0ZXIgPSBCb3R0b20KLSAgICAgICAgICAgIHJldHVy
biBzaG9ydGhhbmQucHJvcGVydGllcygpW2xvZ2ljYWxTaWRlXTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmICh3cml0aW5nTW9kZSA9PSBCb3R0b21Ub1RvcFdyaXRpbmdNb2RlKSB7Ci0gICAgICAg
ICAgICAvLyBTdGFydCA9IExlZnQsIEVuZCA9IFJpZ2h0LCBCZWZvcmUgPSBCb3R0b20sIEFmdGVy
ID0gVG9wLgotICAgICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewotICAgICAgICAgICAg
Y2FzZSBTdGFydFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0
aWVzKClbTGVmdFNpZGVdOwotICAgICAgICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAgICAg
ICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07Ci0gICAgICAgICAg
ICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9w
ZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHdyaXRpbmdNb2RlID09IExlZnRUb1JpZ2h0V3Jp
dGluZ01vZGUpIHsKLSAgICAgICAgICAgIC8vIFN0YXJ0ID0gVG9wLCBFbmQgPSBCb3R0b20sIEJl
Zm9yZSA9IExlZnQsIEFmdGVyID0gUmlnaHQuCi0gICAgICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxT
aWRlKSB7Ci0gICAgICAgICAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgICAgICAgICByZXR1
cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgICAgIGNhc2UgRW5k
U2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtCb3R0
b21TaWRlXTsKLSAgICAgICAgICAgIGNhc2UgQmVmb3JlU2lkZToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtMZWZ0U2lkZV07Ci0gICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1JpZ2h0
U2lkZV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTdGFydCA9IFRv
cCwgRW5kID0gQm90dG9tLCBCZWZvcmUgPSBSaWdodCwgQWZ0ZXIgPSBMZWZ0Ci0gICAgICAgIHN3
aXRjaCAobG9naWNhbFNpZGUpIHsKLSAgICAgICAgY2FzZSBTdGFydFNpZGU6Ci0gICAgICAgICAg
ICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgY2FzZSBF
bmRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9t
U2lkZV07Ci0gICAgICAgIGNhc2UgQmVmb3JlU2lkZToKLSAgICAgICAgICAgIHJldHVybiBzaG9y
dGhhbmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtMZWZ0U2lkZV07Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBpZiAod3JpdGluZ01vZGUgPT0gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSkg
ewotICAgICAgICAvLyBTdGFydCA9IFJpZ2h0LCBFbmQgPSBMZWZ0LCBCZWZvcmUgPSBUb3AsIEFm
dGVyID0gQm90dG9tCi0gICAgICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKLSAgICAgICAgY2Fz
ZSBTdGFydFNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtS
aWdodFNpZGVdOwotICAgICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVtMZWZ0U2lkZV07Ci0gICAgICAgIGNhc2UgQmVmb3JlU2lkZToK
LSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClb
Qm90dG9tU2lkZV07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAod3JpdGluZ01vZGUgPT0g
Qm90dG9tVG9Ub3BXcml0aW5nTW9kZSkgewotICAgICAgICAvLyBTdGFydCA9IFJpZ2h0LCBFbmQg
PSBMZWZ0LCBCZWZvcmUgPSBCb3R0b20sIEFmdGVyID0gVG9wCi0gICAgICAgIHN3aXRjaCAobG9n
aWNhbFNpZGUpIHsKLSAgICAgICAgY2FzZSBTdGFydFNpZGU6Ci0gICAgICAgICAgICByZXR1cm4g
c2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICBjYXNlIEVuZFNpZGU6
Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtMZWZ0U2lkZV07Ci0g
ICAgICAgIGNhc2UgQmVmb3JlU2lkZToKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJv
cGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0
dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBpZiAod3JpdGluZ01vZGUgPT0gTGVmdFRvUmlnaHRXcml0aW5nTW9kZSkgewotICAgICAg
ICAvLyBTdGFydCA9IEJvdHRvbSwgRW5kID0gVG9wLCBCZWZvcmUgPSBMZWZ0LCBBZnRlciA9IFJp
Z2h0Ci0gICAgICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKLSAgICAgICAgY2FzZSBTdGFydFNp
ZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRl
XTsKLSAgICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbVG9wU2lkZV07Ci0gICAgICAgIGNhc2UgQmVmb3JlU2lkZToKLSAgICAgICAg
ICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1JpZ2h0U2lk
ZV07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBTdGFydCA9IEJvdHRvbSwgRW5kID0gVG9w
LCBCZWZvcmUgPSBSaWdodCwgQWZ0ZXIgPSBMZWZ0Ci0gICAgc3dpdGNoIChsb2dpY2FsU2lkZSkg
ewotICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtCb3R0b21TaWRlXTsKLSAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgIHJldHVybiBzaG9y
dGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwotICAgIGNhc2UgQmVmb3JlU2lkZToKLSAgICAg
ICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKLSAgICBkZWZhdWx0
OgotICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtMZWZ0U2lkZV07Ci0gICAg
fQorICAgIFRleHRGbG93IHRleHRGbG93ID0gbWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJl
Y3Rpb24pOworICAgIGJvb2wgc3RhcnRFbmRTaWRlID0gbG9naWNhbFNpZGUgJSAyID09IDE7Cisg
ICAgaW50IGluZGV4ID0gbG9naWNhbFNpZGU7CisKKyAgICAvLyBTd2FwIHRoZSBzdGFydC9lbmQg
c2lkZSB3aXRoIHRoZSBiZWZvcmUvYWZ0ZXIgc2lkZSBpZiB0ZXh0RmxvdyBpcyB2ZXJ0aWNhbAor
ICAgIGlmIChpc1RleHRGbG93VmVydGljYWwodGV4dEZsb3cpKSB7CisgICAgICAgIGlmIChzdGFy
dEVuZFNpZGUpCisgICAgICAgICAgICBpbmRleCA9IChpbmRleCArIDEpICUgNDsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgaW5kZXggPSAoaW5kZXggKyAzKSAlIDQ7CisgICAgfQorCisgICAg
Ly8gU3dhcCB0aGUgc3RhcnQvZW5kIHNpZGVzIGlmIHRleHRGbG93IGlzIHJldmVyc2VkIGFuZCB0
aGUgYmVmb3JlL2FmdGVyIHNpZGVzIGlmIHRleHRGbG93IGlzIGZsaXBwZWQKKyAgICBpZiAoKHN0
YXJ0RW5kU2lkZSAmJiBpc1RleHRGbG93UmV2ZXJzZWQodGV4dEZsb3cpKSB8fCAoIXN0YXJ0RW5k
U2lkZSAmJiBpc1RleHRGbG93RmxpcHBlZCh0ZXh0RmxvdykpKQorICAgICAgICBpbmRleCA9IChp
bmRleCArIDIpICUgNDsKKworICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW2luZGV4
XTsKIH0KIAogZW51bSBMb2dpY2FsRXh0ZW50IHsgTG9naWNhbFdpZHRoLCBMb2dpY2FsSGVpZ2h0
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgJKHJldmlz
aW9uIDE4MjM0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1lbnVtIFRleHREaXJlY3Rpb24geyBSVEwsIExUUiB9OworZW51bSBUZXh0RGlyZWN0aW9uIHsg
TFRSLCBSVEwgfTsKIAogaW5saW5lIGJvb2wgaXNMZWZ0VG9SaWdodERpcmVjdGlvbihUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbikgeyByZXR1cm4gZGlyZWN0aW9uID09IExUUjsgfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oCShyZXZpc2lvbiAxODIz
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDEyLCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCkBAIC0zNCwyNSArMzUsNzMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBX
cml0aW5nTW9kZSB7Ci0gICAgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwgUmlnaHRUb0xlZnRXcml0
aW5nTW9kZSwgTGVmdFRvUmlnaHRXcml0aW5nTW9kZSwgQm90dG9tVG9Ub3BXcml0aW5nTW9kZQor
ICAgIFRvcFRvQm90dG9tV3JpdGluZ01vZGUgPSAwLCAvLyBob3Jpem9udGFsLXRiCisgICAgQm90
dG9tVG9Ub3BXcml0aW5nTW9kZSA9IDEsIC8vIGhvcml6b250YWwtYnQKKyAgICBMZWZ0VG9SaWdo
dFdyaXRpbmdNb2RlID0gMiwgLy8gdmVydGljYWwtbHIKKyAgICBSaWdodFRvTGVmdFdyaXRpbmdN
b2RlID0gMyAgLy8gdmVydGljYWwtcmwKIH07CiAKLS8vIExpbmVzIGhhdmUgaG9yaXpvbnRhbCBv
cmllbnRhdGlvbjsgbW9kZXMgaG9yaXpvbnRhbC10YiBvciBob3Jpem9udGFsLWJ0LgotaW5saW5l
IGJvb2wgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCisj
ZGVmaW5lIE1BS0VfVEVYVF9GTE9XKHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pICAoKHdyaXRpbmdN
b2RlKSA8PCAxIHwgKGRpcmVjdGlvbikpCisKKy8vIERlZmluZSB0aGUgdGV4dCBmbG93IGluIHRl
cm1zIG9mIHRoZSB3cml0aW5nIG1vZGUgYW5kIHRoZSB0ZXh0IGRpcmVjdGlvbi4gVGhlIGZpcnN0
CisvLyBwYXJ0IGlzIHRoZSBsaW5lIGdyb3dpbmcgZGlyZWN0aW9uIGFuZCB0aGUgc2Vjb25kIHBh
cnQgaXMgdGhlIGJsb2NrIGdyb3dpbmcgZGlyZWN0aW9uLgorZW51bSBUZXh0RmxvdyB7CisgICAg
VGV4dEZsb3dFYXN0U291dGggPSBNQUtFX1RFWFRfRkxPVyhUb3BUb0JvdHRvbVdyaXRpbmdNb2Rl
LCBMVFIpLAorICAgIFRleHRGbG93V2VzdFNvdXRoID0gTUFLRV9URVhUX0ZMT1coVG9wVG9Cb3R0
b21Xcml0aW5nTW9kZSwgUlRMKSwKKyAgICBUZXh0Rmxvd0Vhc3ROb3J0aCA9IE1BS0VfVEVYVF9G
TE9XKEJvdHRvbVRvVG9wV3JpdGluZ01vZGUsIExUUiksCisgICAgVGV4dEZsb3dXZXN0Tm9ydGgg
PSBNQUtFX1RFWFRfRkxPVyhCb3R0b21Ub1RvcFdyaXRpbmdNb2RlLCBSVEwpLAorICAgIFRleHRG
bG93U291dGhFYXN0ID0gTUFLRV9URVhUX0ZMT1coTGVmdFRvUmlnaHRXcml0aW5nTW9kZSwgTFRS
KSwKKyAgICBUZXh0Rmxvd1NvdXRoV2VzdCA9IE1BS0VfVEVYVF9GTE9XKExlZnRUb1JpZ2h0V3Jp
dGluZ01vZGUsIFJUTCksCisgICAgVGV4dEZsb3dOb3J0aEVhc3QgPSBNQUtFX1RFWFRfRkxPVyhS
aWdodFRvTGVmdFdyaXRpbmdNb2RlLCBMVFIpLAorICAgIFRleHRGbG93Tm9ydGhXZXN0ID0gTUFL
RV9URVhUX0ZMT1coUmlnaHRUb0xlZnRXcml0aW5nTW9kZSwgUlRMKQorfTsKKworaW5saW5lIFRl
eHRGbG93IG1ha2VUZXh0RmxvdyhXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlv
biBkaXJlY3Rpb24pCiB7Ci0gICAgcmV0dXJuIHdyaXRpbmdNb2RlID09IFRvcFRvQm90dG9tV3Jp
dGluZ01vZGUgfHwgd3JpdGluZ01vZGUgPT0gQm90dG9tVG9Ub3BXcml0aW5nTW9kZTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEZsb3c+KE1BS0VfVEVYVF9GTE9XKHdyaXRpbmdNb2RlLCBk
aXJlY3Rpb24pKTsKIH0KIAotLy8gQm90dG9tIG9mIHRoZSBsaW5lIG9jY3VycyBlYXJsaWVyIGlu
IHRoZSBibG9jazsgbW9kZXMgdmVydGljYWwtbHIgb3IgaG9yaXpvbnRhbC1idC4KLWlubGluZSBi
b29sIGlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCitj
b25zdCB1bnNpZ25lZCBUZXh0Rmxvd1JldmVyc2VkTWFzayA9IDE7Citjb25zdCB1bnNpZ25lZCBU
ZXh0Rmxvd0ZsaXBwZWRNYXNrID0gMjsKK2NvbnN0IHVuc2lnbmVkIFRleHRGbG93VmVydGljYWxN
YXNrID0gNDsKKworaW5saW5lIGJvb2wgaXNUZXh0Rmxvd1JldmVyc2VkKFRleHRGbG93IHRleHRm
bG93KQoreworICAgIHJldHVybiB0ZXh0ZmxvdyAmIFRleHRGbG93UmV2ZXJzZWRNYXNrOworfQor
CitpbmxpbmUgYm9vbCBpc1RleHRGbG93RmxpcHBlZChUZXh0RmxvdyB0ZXh0ZmxvdykKK3sKKyAg
ICByZXR1cm4gdGV4dGZsb3cgJiBUZXh0Rmxvd0ZsaXBwZWRNYXNrOworfQorCitpbmxpbmUgYm9v
bCBpc1RleHRGbG93VmVydGljYWwoVGV4dEZsb3cgdGV4dGZsb3cpCiB7Ci0gICAgcmV0dXJuIHdy
aXRpbmdNb2RlID09IExlZnRUb1JpZ2h0V3JpdGluZ01vZGUgfHwgd3JpdGluZ01vZGUgPT0gQm90
dG9tVG9Ub3BXcml0aW5nTW9kZTsKKyAgICByZXR1cm4gdGV4dGZsb3cgJiBUZXh0Rmxvd1ZlcnRp
Y2FsTWFzazsKK30KKworLy8gTGluZXMgaGF2ZSB2ZXJ0aWNhbCBvcmllbnRhdGlvbjsgbW9kZXMg
dmVydGljYWwtbHIgb3IgdmVydGljYWwtcmwuCitpbmxpbmUgYm9vbCBpc1ZlcnRpY2FsV3JpdGlu
Z01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCit7CisgICAgcmV0dXJuIGlzVGV4dEZsb3dW
ZXJ0aWNhbChtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIExUUikpOwogfQogCiAvLyBCbG9jayBw
cm9ncmVzc2lvbiBpbmNyZWFzZXMgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiB0byBub3JtYWw7
IG1vZGVzIHZlcnRpY2FsLXJsIG9yIGhvcml6b250YWwtYnQuCiBpbmxpbmUgYm9vbCBpc0ZsaXBw
ZWRCbG9ja3NXcml0aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkKIHsKLSAgICByZXR1
cm4gd3JpdGluZ01vZGUgPT0gUmlnaHRUb0xlZnRXcml0aW5nTW9kZSB8fCB3cml0aW5nTW9kZSA9
PSBCb3R0b21Ub1RvcFdyaXRpbmdNb2RlOworICAgIHJldHVybiBpc1RleHRGbG93RmxpcHBlZCht
YWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIExUUikpOworfQorCisvLyBMaW5lcyBoYXZlIGhvcml6
b250YWwgb3JpZW50YXRpb247IG1vZGVzIGhvcml6b250YWwtdGIgb3IgaG9yaXpvbnRhbC1idC4K
K2lubGluZSBib29sIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdN
b2RlKQoreworICAgIHJldHVybiAhaXNWZXJ0aWNhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKTsK
K30KKworLy8gQm90dG9tIG9mIHRoZSBsaW5lIG9jY3VycyBlYXJsaWVyIGluIHRoZSBibG9jazsg
bW9kZXMgdmVydGljYWwtbHIgb3IgaG9yaXpvbnRhbC1idC4KK2lubGluZSBib29sIGlzRmxpcHBl
ZExpbmVzV3JpdGluZ01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCit7CisgICAgcmV0dXJu
IGlzVmVydGljYWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgIT0gaXNGbGlwcGVkQmxvY2tzV3Jp
dGluZ01vZGUod3JpdGluZ01vZGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252909</attachid>
            <date>2015-05-11 17:04:29 -0700</date>
            <delta_ts>2015-05-11 17:32:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143399-20150511170308.patch</filename>
            <type>text/plain</type>
            <size>36900</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDEyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBACisyMDE1LTA1LTExICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29kZSBjbGVh
biB1cCBmb3IgZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtaXggb2YgV3JpdGluZ01v
ZGUgYW5kIFRleHREaXJlY3Rpb24gLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQzMzk5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBlaWdodCBUZXh0Rmxvd3MuIEEgVGV4dEZs
b3cgY29uc2lzdHMgb2YgdHdvIGRpcmVjdGlvbnMuIFRoZQorICAgICAgICBmaXJzdCBvbmUgY29u
dHJvbHMgdGhlIGxpbmUgZ3Jvd2luZyBkaXJlY3Rpb24gYW5kIHRoZSBzZWNvbmQgb25lIGNvbnRy
b2xzIHRoZQorICAgICAgICBibG9jayBncm93aW5nIGRpcmVjdGlvbi4KKyAgICAgICAgCisgICAg
ICAgIFdlIG5lZWQgdG8gZXh0cmFjdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGVhc2lseSBm
cm9tIHRoZSBUZXh0RmxvdworCisgICAgICAgIC0tIGlzVGV4dEZsb3dSZXZlcnNlZCgpIC8vIFJU
TAorICAgICAgICAtLSBpc1RleHRGbG93RmxpcHBlZCgpICAvLyB0aGUgb3Bwb3NpdGUgZGlyZWN0
aW9uIHRvIG5vcm1hbAorICAgICAgICAtLSBpc1RleHRGbG93VmVydGljYWwoKSAvLyBUaGUgbGlu
ZSBncm93cyB2ZXJ0aWNhbGx5CisKKyAgICAgICAgTWl4aW5nIFdyaXRpbmdNb2RlIGFuZCBUZXh0
RGlyZWN0aW9uIGludG8gVGV4dEZsb3cgYW5kIGNob29zaW5nIHRoZWlyIHZhbHVlcworICAgICAg
ICBjYXJlZnVsbHkgdG8gZWFzZSBpbXBsZW1lbnRpbmcgdGhlIGFib3ZlIGZ1bmN0aW9ucyBjYW4g
bWFrZSB0aGluZ3MgY2xlYXJlci4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhCb3guY3BwOiBSZW1vdmVkLgor
CisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpMZW5n
dGhCb3g6Okxlbmd0aEJveCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6OmxlZnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpyaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpM
ZW5ndGhCb3g6OnRvcCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6OmJvdHRvbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29y
ZTo6TGVuZ3RoQm94Ojpub25aZXJvKTogVXNlIGFuIGFycmF5IG9mIExlbmd0aHMgZm9yIHRoZSBm
b3VyIHNpZGVzLgorICAgICAgICBVc2UgdGhlIGVudW0gUGh5c2ljYWxCb3hTaWRlIHRvIGFjY2Vz
cyB0aGlzIGFycmF5LgorCisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6OmJlZm9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6OmFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
bmd0aEJveDo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94OjplbmQpOgorICAg
ICAgICBVc2UgdGhlIG1hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZSgpIGdldCB0aGUgcGh5c2lj
YWwgc2lkZSBvZiB0aGUgYm94IGJhc2VkCisgICAgICAgIG9uIHRoZSBkaXJlY3Rpb24gYW5kIHRo
ZSB3cml0aW5nIG1vZGUuIAorICAgICAgICAKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eSk6IEluc3RlYWQg
b2YgaGFuZGxpbmcgdGhlIGVpZ2h0IHBvc3NpYmxlCisgICAgICAgIGNhc2VzIG9mIHRoZSB0ZXh0
IGZsb3dzIG9uZSBieSBvbmUsIHdlIGNhbiBhbmFseXplIHRoZSB0ZXh0IGZsb3cgYW5kIHN3YXAg
dGhlCisgICAgICAgIHNpZGUgcHJvcGVydHkgaW5kZXggdG8gZ2V0IHRoZSBwcm9wZXIgdmFsdWUu
CisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmg6IFVzdWFsbHkg
dGhlIGRlZmF1bHQgdmFsdWUgaXMgZGVmaW5lZCBmaXJzdC4KKyAgICAgICAgQW5kIGlmIHRoZSB2
YWx1ZSBpcyBpbnRlZ2VyIG9yIGVudW0sIGl0IHNob3VsZCBiZSBlcXVhbCB0byB6ZXJvLiBTaW5j
ZSBMVFIKKyAgICAgICAgaXMgdGhlIGRlZmF1bHQgZm9yIHRoZSB0ZXh0IGRpcmVjdGlvbiwgaXQg
c2hvdWxkIGJlIGRlZmluZWQgYmVmb3JlIFJUTC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9Xcml0aW5nTW9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVRleHRGbG93KTog
IERlZmluaW5nIGEgZnVuY3Rpb24gdG8gbWFrZSBhIFRleHRGbG93IG91dCBmcm9tCisgICAgICAg
IFdyaXRpbmdNb2RlIGFuZCBUZXh0RGlyZWN0aW9uLgorICAgICAgICAKKyAgICAgICAgKFdlYkNv
cmU6OmlzVGV4dEZsb3dSZXZlcnNlZCk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgdGV4dCBkaXJlY3Rp
b24gaXMgUlRMLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OmlzVGV4dEZsb3dGbGlwcGVk
KTogUmV0dXJucyB0cnVlIGlmIGJsb2NrIGdyb3dpbmcgZGlyZWN0aW9uCisgICAgICAgIGlzIGlu
IHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gbm9ybWFsLgorICAgICAgICAKKyAgICAgICAgKFdl
YkNvcmU6OmlzVGV4dEZsb3dWZXJ0aWNhbCk6CisgICAgICAgIChXZWJDb3JlOjppc1ZlcnRpY2Fs
V3JpdGluZ01vZGUpOiBSZXR1cm5zIHRydWUgaWYgVGhlIGxpbmUgZ3Jvd3MgdmVydGljYWxseS4K
KworICAgICAgICAoV2ViQ29yZTo6aXNIb3Jpem9udGFsV3JpdGluZ01vZGUpOiAKKyAgICAgICAg
KFdlYkNvcmU6OmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUpOiBVc2UgdGhlIHRleHQgZmxvdyBmdW5jdGlvbnMg
aW5zdGVhZC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjptYXBMb2dpY2FsVG9QaHlzaWNh
bEJveFNpZGUpOiBJdCBtYXBzIGEgbG9naWNhbCBzaWRlIG9mIGEgYm94CisgICAgICAgIGdpdmVu
IHRoZSBjdXJyZW50IHRleHQgZGlyZWN0aW9uIGFuZCB0aGUgd3JpdGluZyBtb2RlLgorCisgICAg
ICAgICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHls
ZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VTbGljZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0
eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVF1YWQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q2xp
cCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOiBVc2UgdGhlIExlbmd0
aEJveCBzaWRlcycgYWNjZXNzIG1ldGhvZHMgaW5zdGVhZAorICAgICAgICBvZiBkaXJlY3RseSB1
c2luZyB0aGUgc2lkZXMnIGFycmF5LgorCiAyMDE1LTA1LTExICBNYXR0IEJha2VyICA8bWF0dGJh
a2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OIChyMTc1
MjAzKTogTm8gcHJvZmlsZSBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiBJbnNwZWN0b3IKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDE4NDExNikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjA1LDcgKzYwNSw2IEBACiAJCTE0NDc2
QUE4MTVEQzRCQjEwMDMwNURCMiAvKiBXcml0aW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0NzZBQTcxNURDNEJCMTAwMzA1REIyIC8qIFdy
aXRpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMTQ0OUUyNEMxMDdENEE4NDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDQ5RTI0QTEwN0Q0QTg0
MDBCNTc5M0YgLyogSlNDYWxsYmFja0RhdGEuaCAqLzsgfTsKIAkJMTQ0OUUyODcxMDdENERCNDAw
QjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDlFMjg2MTA3RDREQjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNr
RGF0YS5jcHAgKi87IH07Ci0JCTE0NkNDMTE1MTU2OTg4RTQwMDEwOUUzNyAvKiBMZW5ndGhCb3gu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ2Q0Mx
MTMxNTY5ODhCRDAwMTA5RTM3IC8qIExlbmd0aEJveC5jcHAgKi87IH07CiAJCTE0NzdFNzc2MEJG
NDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3N0U3NzQwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNo
ZS5jcHAgKi87IH07CiAJCTE0NzdFNzc3MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NzdFNzc1MEJG
NDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDc5RkFFRDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVy
UnVieS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDc5RkFFNTEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieS5jcHAgKi87IH07CkBAIC03Njgw
LDcgKzc2NzksNiBAQAogCQkxNDQ3NkFBNzE1REM0QkIxMDAzMDVEQjIgLyogV3JpdGluZ01vZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGluZ01vZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0OUUyNEExMDdENEE4NDAwQjU3OTNGIC8qIEpTQ2Fs
bGJhY2tEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FsbGJhY2tE
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NDlFMjg2MTA3RDREQjQwMEI1
NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0NhbGxiYWNrRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTE0NkNDMTEzMTU2OTg4QkQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVuZ3RoQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMTQ3N0U3NzQwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUNhY2hlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ3N0U3NzUwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VD
YWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZUNhY2hlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NzlGQUU1MTA5QUUzNzUwMERFRDY1NSAvKiBS
ZW5kZXJSdWJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRl
clJ1YnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE3NjAsNyArMjE3NTgs
NiBAQAogCQkJCTE0MURDMDQ3MTY0ODM0OEYwMDM3MUU1QSAvKiBMYXlvdXRVbml0LmggKi8sCiAJ
CQkJQkNFNjVCRTgwRUFDREYxNjAwN0U0NTMzIC8qIExlbmd0aC5jcHAgKi8sCiAJCQkJQkNFNjVC
RTkwRUFDREYxNjAwN0U0NTMzIC8qIExlbmd0aC5oICovLAotCQkJCTE0NkNDMTEzMTU2OTg4QkQw
MDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwICovLAogCQkJCUJDRkY2NDhGMEVBRDE1QzIwMEMxRDZG
NyAvKiBMZW5ndGhCb3guaCAqLywKIAkJCQlCQ0ZGNjQ5MDBFQUQxNUMyMDBDMUQ2RjcgLyogTGVu
Z3RoU2l6ZS5oICovLAogCQkJCUE3QUQyRjg1MEVDODlEMDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5j
cHAgKi8sCkBAIC0yOTMwNiw3ICsyOTMwMyw2IEBACiAJCQkJNTEyREQ4RjQwRDkxRTZBRjAwMEY4
OUVFIC8qIExlZ2FjeVdlYkFyY2hpdmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCMjQxN0Iw
RDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlCQ0U2NUJFQTBFQUNERjE2MDA3RTQ1MzMgLyogTGVuZ3RoLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTE0NkNDMTE1MTU2OTg4RTQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTU1RjQ5N0ExNTFCODg4MDAwQkI2N0RCIC8qIExlbmd0aEZ1bmN0aW9ucy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRkI2OThDQzE4MzNFRTBEMDAxNThBMzEgLyogTGluZUJy
ZWFrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODlCNUVBQTExMUU4MDAzRDAwRjIzNjdFIC8q
IExpbmVFbmRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eS5jcHAJKHJldmlzaW9uIDE4NDExNikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDExMiArNTQsMTAgQEAgdm9pZCBDU1NQcm9w
ZXJ0eTo6d3JhcFZhbHVlSW5Db21tYVNlcGFyYQogICAgIG1fdmFsdWUgPSBXVEY6Om1vdmUobGlz
dCk7CiB9CiAKLWVudW0gTG9naWNhbEJveFNpZGUgeyBCZWZvcmVTaWRlLCBFbmRTaWRlLCBBZnRl
clNpZGUsIFN0YXJ0U2lkZSB9OwotZW51bSBQaHlzaWNhbEJveFNpZGUgeyBUb3BTaWRlLCBSaWdo
dFNpZGUsIEJvdHRvbVNpZGUsIExlZnRTaWRlIH07Ci0KIHN0YXRpYyBDU1NQcm9wZXJ0eUlEIHJl
c29sdmVUb1BoeXNpY2FsUHJvcGVydHkoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdN
b2RlIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZSBsb2dpY2FsU2lkZSwgY29uc3QgU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQogewotICAgIGlmIChkaXJlY3Rpb24gPT0gTFRS
KSB7Ci0gICAgICAgIGlmICh3cml0aW5nTW9kZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlKSB7
Ci0gICAgICAgICAgICAvLyBUaGUgY29tbW9uIGNhc2UuIFRoZSBsb2dpY2FsIGFuZCBwaHlzaWNh
bCBib3ggc2lkZXMgbWF0Y2guCi0gICAgICAgICAgICAvLyBMZWZ0ID0gU3RhcnQsIFJpZ2h0ID0g
RW5kLCBCZWZvcmUgPSBUb3AsIEFmdGVyID0gQm90dG9tCi0gICAgICAgICAgICByZXR1cm4gc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVtsb2dpY2FsU2lkZV07Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAod3JpdGluZ01vZGUgPT0gQm90dG9tVG9Ub3BXcml0aW5nTW9kZSkgewotICAgICAgICAgICAg
Ly8gU3RhcnQgPSBMZWZ0LCBFbmQgPSBSaWdodCwgQmVmb3JlID0gQm90dG9tLCBBZnRlciA9IFRv
cC4KLSAgICAgICAgICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKLSAgICAgICAgICAgIGNhc2Ug
U3RhcnRTaWRlOgotICAgICAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygp
W0xlZnRTaWRlXTsKLSAgICAgICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICAgICAgY2Fz
ZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGll
cygpW0JvdHRvbVNpZGVdOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICh3cml0aW5nTW9kZSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdN
b2RlKSB7Ci0gICAgICAgICAgICAvLyBTdGFydCA9IFRvcCwgRW5kID0gQm90dG9tLCBCZWZvcmUg
PSBMZWZ0LCBBZnRlciA9IFJpZ2h0LgotICAgICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkg
ewotICAgICAgICAgICAgY2FzZSBTdGFydFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNo
b3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07Ci0gICAgICAgICAgICBjYXNlIEVuZFNpZGU6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lk
ZV07Ci0gICAgICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVd
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU3RhcnQgPSBUb3AsIEVu
ZCA9IEJvdHRvbSwgQmVmb3JlID0gUmlnaHQsIEFmdGVyID0gTGVmdAotICAgICAgICBzd2l0Y2gg
KGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0
dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07Ci0gICAgICAgIGNhc2UgRW5kU2lk
ZToKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVd
OwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5k
LnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
cmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUpIHsKLSAg
ICAgICAgLy8gU3RhcnQgPSBSaWdodCwgRW5kID0gTGVmdCwgQmVmb3JlID0gVG9wLCBBZnRlciA9
IEJvdHRvbQotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3Rh
cnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRT
aWRlXTsKLSAgICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFu
ZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAg
ICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRv
bVNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09IEJvdHRv
bVRvVG9wV3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8gU3RhcnQgPSBSaWdodCwgRW5kID0gTGVm
dCwgQmVmb3JlID0gQm90dG9tLCBBZnRlciA9IFRvcAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxT
aWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0
aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKLSAgICAgICAgY2FzZSBFbmRTaWRlOgotICAg
ICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgICAg
ICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtCb3R0b21TaWRlXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBz
aG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
aWYgKHdyaXRpbmdNb2RlID09IExlZnRUb1JpZ2h0V3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8g
U3RhcnQgPSBCb3R0b20sIEVuZCA9IFRvcCwgQmVmb3JlID0gTGVmdCwgQWZ0ZXIgPSBSaWdodAot
ICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgot
ICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0g
ICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVy
dGllcygpW1RvcFNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICBy
ZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtMZWZ0U2lkZV07Ci0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRvcCwgQmVm
b3JlID0gUmlnaHQsIEFmdGVyID0gTGVmdAotICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKLSAg
ICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClb
Qm90dG9tU2lkZV07Ci0gICAgY2FzZSBFbmRTaWRlOgotICAgICAgICByZXR1cm4gc2hvcnRoYW5k
LnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKLSAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgIHJl
dHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgIH0KKyAg
ICBQaHlzaWNhbEJveFNpZGUgcGh5c2ljYWxTaWRlID0gbWFwTG9naWNhbFRvUGh5c2ljYWxCb3hT
aWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgbG9naWNhbFNpZGUpOwor
ICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW3BoeXNpY2FsU2lkZV07CiB9CiAKIGVu
dW0gTG9naWNhbEV4dGVudCB7IExvZ2ljYWxXaWR0aCwgTG9naWNhbEhlaWdodCB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAkocmV2aXNpb24gMTg0MTE2KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTgs
MjEgKzYxOCwyMSBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlU2xpCiAg
ICAgTGVuZ3RoQm94IGJveDsKICAgICBRdWFkKiBzbGljZXMgPSBib3JkZXJJbWFnZVNsaWNlLnNs
aWNlcygpOwogICAgIGlmIChzbGljZXMtPnRvcCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAg
Ym94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNl
bnQpOworICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91Ymxl
VmFsdWUoKSwgUGVyY2VudCk7CiAgICAgZWxzZQotICAgICAgICBib3gubV90b3AgPSBMZW5ndGgo
c2xpY2VzLT50b3AoKS0+Z2V0SW50VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
LCBGaXhlZCk7CisgICAgICAgIGJveC50b3AoKSA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5nZXRJ
bnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKICAgICBpZiAo
c2xpY2VzLT5ib3R0b20oKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9
IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAg
ICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmdldERvdWJsZVZh
bHVlKCksIFBlcmNlbnQpOwogICAgIGVsc2UKLSAgICAgICAgYm94Lm1fYm90dG9tID0gTGVuZ3Ro
KChpbnQpc2xpY2VzLT5ib3R0b20oKS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKChpbnQp
c2xpY2VzLT5ib3R0b20oKS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUiksIEZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzUGVyY2VudGFnZSgpKQot
ICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5nZXREb3VibGVWYWx1
ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQo
KS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgZWxzZQotICAgICAgICBib3gubV9s
ZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGlj
ZXMtPmxlZnQoKS0+Z2V0SW50VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBG
aXhlZCk7CiAgICAgaWYgKHNsaWNlcy0+cmlnaHQoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAg
IGJveC5tX3JpZ2h0ID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwg
UGVyY2VudCk7CisgICAgICAgIGJveC5yaWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+
Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgZWxzZQotICAgICAgICBib3gubV9yaWdo
dCA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSKSwgRml4ZWQpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGlj
ZXMtPnJpZ2h0KCktPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwg
Rml4ZWQpOwogICAgIGltYWdlLnNldEltYWdlU2xpY2VzKGJveCk7CiAKICAgICAvLyBTZXQgb3Vy
IGZpbGwgbW9kZS4KQEAgLTY1NCwzMiArNjU0LDMyIEBAIExlbmd0aEJveCBDU1NUb1N0eWxlTWFw
OjptYXBOaW5lUGllY2VJbWEKICAgICBMZW5ndGhCb3ggYm94OyAvLyBEZWZhdWx0cyB0byAnYXV0
bycgc28gd2UgZG9uJ3QgaGF2ZSB0byBoYW5kbGUgdGhhdCBleHBsaWNpdGx5IGJlbG93LgogICAg
IFF1YWQqIHNsaWNlcyA9IGJvcmRlcldpZHRocy5nZXRRdWFkVmFsdWUoKTsKICAgICBpZiAoc2xp
Y2VzLT50b3AoKS0+aXNOdW1iZXIoKSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNl
cy0+dG9wKCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsKKyAgICAgICAgYm94LnRvcCgpID0g
TGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNl
IGlmIChzbGljZXMtPnRvcCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fdG9wID0g
TGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xp
Y2VzLT50b3AoKS0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5U
QUdFKSwgUGVyY2VudCk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT50b3AoKS0+Z2V0VmFsdWVJRCgp
ICE9IENTU1ZhbHVlQXV0bykKLSAgICAgICAgYm94Lm1fdG9wID0gc2xpY2VzLT50b3AoKS0+Y29t
cHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKKyAgICAgICAgYm94LnRvcCgpID0g
c2xpY2VzLT50b3AoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAog
ICAgIGlmIChzbGljZXMtPnJpZ2h0KCktPmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC5tX3JpZ2h0
ID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOworICAg
ICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVlKCks
IFJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChzbGljZXMtPnJpZ2h0KCktPmlzUGVyY2VudGFnZSgp
KQotICAgICAgICBib3gubV9yaWdodCA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJs
ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAg
ICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwogICAgIGVsc2Ug
aWYgKHNsaWNlcy0+cmlnaHQoKS0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAg
ICAgYm94Lm1fcmlnaHQgPSBzbGljZXMtPnJpZ2h0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihj
b252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJveC5yaWdodCgpID0gc2xpY2VzLT5yaWdodCgpLT5j
b21wdXRlTGVuZ3RoPExlbmd0aD4oY29udmVyc2lvbkRhdGEpOwogCiAgICAgaWYgKHNsaWNlcy0+
Ym90dG9tKCktPmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGlj
ZXMtPmJvdHRvbSgpLT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CisgICAgICAgIGJveC5ib3R0
b20oKSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7
CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAg
IGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXREb3VibGVWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpLCBQZXJjZW50KTsKKyAgICAgICAgYm94
LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNs
aWNlcy0+Ym90dG9tKCktPmdldFZhbHVlSUQoKSAhPSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgIGJv
eC5tX2JvdHRvbSA9IHNsaWNlcy0+Ym90dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252
ZXJzaW9uRGF0YSk7CisgICAgICAgIGJveC5ib3R0b20oKSA9IHNsaWNlcy0+Ym90dG9tKCktPmNv
bXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CiAKICAgICBpZiAoc2xpY2VzLT5s
ZWZ0KCktPmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC5tX2xlZnQgPSBMZW5ndGgoc2xpY2VzLT5s
ZWZ0KCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsKKyAgICAgICAgYm94LmxlZnQoKSA9IExl
bmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOwogICAgIGVsc2Ug
aWYgKHNsaWNlcy0+bGVmdCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fbGVmdCA9
IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CisgICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgo
c2xpY2VzLT5sZWZ0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVS
Q0VOVEFHRSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5nZXRWYWx1
ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICBib3gubV9sZWZ0ID0gc2xpY2VzLT5sZWZ0
KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJveC5s
ZWZ0KCkgPSBzbGljZXMtPmxlZnQoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25E
YXRhKTsKIAogICAgIHJldHVybiBib3g7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGhCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xl
bmd0aEJveC5jcHAJKHJldmlzaW9uIDE4NDExNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xlbmd0aEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsOTIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoYykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiTGVuZ3RoQm94LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY29uc3QgTGVuZ3RoJiBMZW5ndGhCb3g6OmxvZ2ljYWxMZWZ0KFdyaXRpbmdNb2RlIHdyaXRp
bmdNb2RlKSBjb25zdAotewotICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0
aW5nTW9kZSkgPyBtX2xlZnQgOiBtX3RvcDsKLX0KLQotY29uc3QgTGVuZ3RoJiBMZW5ndGhCb3g6
OmxvZ2ljYWxSaWdodChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgY29uc3QKLXsKLSAgICByZXR1
cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUod3JpdGluZ01vZGUpID8gbV9yaWdodCA6IG1fYm90
dG9tOwotfQotCi1jb25zdCBMZW5ndGgmIExlbmd0aEJveDo6YmVmb3JlKFdyaXRpbmdNb2RlIHdy
aXRpbmdNb2RlKSBjb25zdAotewotICAgIHN3aXRjaCAod3JpdGluZ01vZGUpIHsKLSAgICBjYXNl
IFRvcFRvQm90dG9tV3JpdGluZ01vZGU6Ci0gICAgICAgIHJldHVybiBtX3RvcDsKLSAgICBjYXNl
IEJvdHRvbVRvVG9wV3JpdGluZ01vZGU6Ci0gICAgICAgIHJldHVybiBtX2JvdHRvbTsKLSAgICBj
YXNlIExlZnRUb1JpZ2h0V3JpdGluZ01vZGU6Ci0gICAgICAgIHJldHVybiBtX2xlZnQ7Ci0gICAg
Y2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlOgotICAgICAgICByZXR1cm4gbV9yaWdodDsKLSAg
ICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG1fdG9wOwotfQotCi1j
b25zdCBMZW5ndGgmIExlbmd0aEJveDo6YWZ0ZXIoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIGNv
bnN0Ci17Ci0gICAgc3dpdGNoICh3cml0aW5nTW9kZSkgewotICAgIGNhc2UgVG9wVG9Cb3R0b21X
cml0aW5nTW9kZToKLSAgICAgICAgcmV0dXJuIG1fYm90dG9tOwotICAgIGNhc2UgQm90dG9tVG9U
b3BXcml0aW5nTW9kZToKLSAgICAgICAgcmV0dXJuIG1fdG9wOwotICAgIGNhc2UgTGVmdFRvUmln
aHRXcml0aW5nTW9kZToKLSAgICAgICAgcmV0dXJuIG1fcmlnaHQ7Ci0gICAgY2FzZSBSaWdodFRv
TGVmdFdyaXRpbmdNb2RlOgotICAgICAgICByZXR1cm4gbV9sZWZ0OwotICAgIH0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbV9ib3R0b207Ci19Ci0KLWNvbnN0IExlbmd0
aCYgTGVuZ3RoQm94OjpzdGFydChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlv
biBkaXJlY3Rpb24pIGNvbnN0Ci17Ci0gICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdy
aXRpbmdNb2RlKSkKLSAgICAgICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0
aW9uKSA/IG1fbGVmdCA6IG1fcmlnaHQ7Ci0gICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oZGlyZWN0aW9uKSA/IG1fdG9wIDogbV9ib3R0b207Ci19Ci0KLWNvbnN0IExlbmd0aCYgTGVu
Z3RoQm94OjplbmQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0
aW9uKSBjb25zdAotewotICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9k
ZSkpCi0gICAgICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBt
X3JpZ2h0IDogbV9sZWZ0OwotICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVj
dGlvbikgPyBtX2JvdHRvbSA6IG1fdG9wOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guaAkocmV2aXNpb24gMTg0MTE2KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBr
ZGUub3JnKQotICAgIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4LCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICBDb3B5cmlnaHQgKGMpIDIwMTIsIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0zNCw1MyArMzQsNDMgQEAg
c3RydWN0IExlbmd0aEJveCB7CiAgICAgfQogCiAgICAgZXhwbGljaXQgTGVuZ3RoQm94KExlbmd0
aFR5cGUgdHlwZSkKLSAgICAgICAgOiBtX2xlZnQodHlwZSkKLSAgICAgICAgLCBtX3JpZ2h0KHR5
cGUpCi0gICAgICAgICwgbV90b3AodHlwZSkKLSAgICAgICAgLCBtX2JvdHRvbSh0eXBlKQorICAg
ICAgICA6IG1fc2lkZXMgeyB0eXBlLCB0eXBlLCB0eXBlLCB0eXBlIH0KICAgICB7CiAgICAgfQog
CiAgICAgZXhwbGljaXQgTGVuZ3RoQm94KGludCB2KQotICAgICAgICA6IG1fbGVmdChMZW5ndGgo
diwgRml4ZWQpKQotICAgICAgICAsIG1fcmlnaHQoTGVuZ3RoKHYsIEZpeGVkKSkKLSAgICAgICAg
LCBtX3RvcChMZW5ndGgodiwgRml4ZWQpKQotICAgICAgICAsIG1fYm90dG9tKExlbmd0aCh2LCBG
aXhlZCkpCisgICAgICAgIDogbV9zaWRlcyB7IExlbmd0aCh2LCBGaXhlZCksIExlbmd0aCh2LCBG
aXhlZCksIExlbmd0aCh2LCBGaXhlZCksIExlbmd0aCh2LCBGaXhlZCkgfQogICAgIHsKICAgICB9
CiAKICAgICBMZW5ndGhCb3goTGVuZ3RoIHRvcCwgTGVuZ3RoIHJpZ2h0LCBMZW5ndGggYm90dG9t
LCBMZW5ndGggbGVmdCkKLSAgICAgICAgOiBtX2xlZnQoV1RGOjptb3ZlKGxlZnQpKQotICAgICAg
ICAsIG1fcmlnaHQoV1RGOjptb3ZlKHJpZ2h0KSkKLSAgICAgICAgLCBtX3RvcChXVEY6Om1vdmUo
dG9wKSkKLSAgICAgICAgLCBtX2JvdHRvbShXVEY6Om1vdmUoYm90dG9tKSkKKyAgICAgICAgOiBt
X3NpZGVzIHsgV1RGOjptb3ZlKHRvcCksIFdURjo6bW92ZShyaWdodCksIFdURjo6bW92ZShib3R0
b20pLCBXVEY6Om1vdmUobGVmdCkgfQogICAgIHsKICAgICB9CiAKICAgICBMZW5ndGhCb3goaW50
IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tLCBpbnQgbGVmdCkKLSAgICAgICAgOiBtX2xlZnQo
TGVuZ3RoKGxlZnQsIEZpeGVkKSkKLSAgICAgICAgLCBtX3JpZ2h0KExlbmd0aChyaWdodCwgRml4
ZWQpKQotICAgICAgICAsIG1fdG9wKExlbmd0aCh0b3AsIEZpeGVkKSkKLSAgICAgICAgLCBtX2Jv
dHRvbShMZW5ndGgoYm90dG9tLCBGaXhlZCkpCisgICAgICAgIDogbV9zaWRlcyB7IExlbmd0aCh0
b3AsIEZpeGVkKSwgTGVuZ3RoKHJpZ2h0LCBGaXhlZCksIExlbmd0aChib3R0b20sIEZpeGVkKSwg
TGVuZ3RoKGxlZnQsIEZpeGVkKSB9CiAgICAgewogICAgIH0KIAotICAgIGNvbnN0IExlbmd0aCYg
bGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdDsgfQotICAgIGNvbnN0IExlbmd0aCYgcmlnaHQo
KSBjb25zdCB7IHJldHVybiBtX3JpZ2h0OyB9Ci0gICAgY29uc3QgTGVuZ3RoJiB0b3AoKSBjb25z
dCB7IHJldHVybiBtX3RvcDsgfQotICAgIGNvbnN0IExlbmd0aCYgYm90dG9tKCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3R0b207IH0KKyAgICBMZW5ndGgmIGxlZnQoKSB7IHJldHVybiBtX3NpZGVzW0xl
ZnRTaWRlXTsgfQorICAgIExlbmd0aCYgcmlnaHQoKSB7IHJldHVybiBtX3NpZGVzW1JpZ2h0U2lk
ZV07IH0KKyAgICBMZW5ndGgmIHRvcCgpIHsgcmV0dXJuIG1fc2lkZXNbVG9wU2lkZV07IH0KKyAg
ICBMZW5ndGgmIGJvdHRvbSgpIHsgcmV0dXJuIG1fc2lkZXNbQm90dG9tU2lkZV07IH0KIAotICAg
IGNvbnN0IExlbmd0aCYgbG9naWNhbExlZnQoV3JpdGluZ01vZGUpIGNvbnN0OwotICAgIGNvbnN0
IExlbmd0aCYgbG9naWNhbFJpZ2h0KFdyaXRpbmdNb2RlKSBjb25zdDsKKyAgICBjb25zdCBMZW5n
dGgmIGxlZnQoKSBjb25zdCB7IHJldHVybiBtX3NpZGVzW0xlZnRTaWRlXTsgfQorICAgIGNvbnN0
IExlbmd0aCYgcmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NpZGVzW1JpZ2h0U2lkZV07IH0KKyAg
ICBjb25zdCBMZW5ndGgmIHRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXNbVG9wU2lkZV07IH0K
KyAgICBjb25zdCBMZW5ndGgmIGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXNbQm90dG9t
U2lkZV07IH0KIAotICAgIGNvbnN0IExlbmd0aCYgYmVmb3JlKFdyaXRpbmdNb2RlKSBjb25zdDsK
LSAgICBjb25zdCBMZW5ndGgmIGFmdGVyKFdyaXRpbmdNb2RlKSBjb25zdDsKLSAgICBjb25zdCBM
ZW5ndGgmIHN0YXJ0KFdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uKSBjb25zdDsKLSAgICBjb25z
dCBMZW5ndGgmIGVuZChXcml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbikgY29uc3Q7CisgICAgY29u
c3QgTGVuZ3RoJiBiZWZvcmUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBtX3NpZGVzW21hcExvZ2ljYWxUb1BoeXNp
Y2FsQm94U2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIEJlZm9yZVNp
ZGUpXTsgfQorICAgIGNvbnN0IExlbmd0aCYgYWZ0ZXIoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUs
IFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBtX3NpZGVzW21h
cExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVj
dGlvbiksIEFmdGVyU2lkZSldOyB9CisgICAgY29uc3QgTGVuZ3RoJiBzdGFydChXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpIGNvbnN0IHsgcmV0
dXJuIG1fc2lkZXNbbWFwTG9naWNhbFRvUGh5c2ljYWxCb3hTaWRlKG1ha2VUZXh0Rmxvdyh3cml0
aW5nTW9kZSwgZGlyZWN0aW9uKSwgU3RhcnRTaWRlKV07IH0KKyAgICBjb25zdCBMZW5ndGgmIGVu
ZChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIp
IGNvbnN0IHsgcmV0dXJuIG1fc2lkZXNbbWFwTG9naWNhbFRvUGh5c2ljYWxCb3hTaWRlKG1ha2VU
ZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgRW5kU2lkZSldOyB9CiAKICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoQm94JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBtX2xlZnQgPT0gb3RoZXIubV9sZWZ0ICYmIG1fcmlnaHQgPT0gb3RoZXIubV9yaWdo
dCAmJiBtX3RvcCA9PSBvdGhlci5tX3RvcCAmJiBtX2JvdHRvbSA9PSBvdGhlci5tX2JvdHRvbTsK
KyAgICAgICAgcmV0dXJuIGxlZnQoKSA9PSBvdGhlci5sZWZ0KCkgJiYgcmlnaHQoKSA9PSBvdGhl
ci5yaWdodCgpICYmIHRvcCgpID09IG90aGVyLnRvcCgpICYmIGJvdHRvbSgpID09IG90aGVyLmJv
dHRvbSgpOwogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMZW5ndGhCb3gmIG90
aGVyKSBjb25zdApAQCAtOTAsMTMgKzgwLDExIEBAIHN0cnVjdCBMZW5ndGhCb3ggewogCiAgICAg
Ym9vbCBub25aZXJvKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhKG1fbGVmdC5pc1pl
cm8oKSAmJiBtX3JpZ2h0LmlzWmVybygpICYmIG1fdG9wLmlzWmVybygpICYmIG1fYm90dG9tLmlz
WmVybygpKTsKKyAgICAgICAgcmV0dXJuICEobGVmdCgpLmlzWmVybygpICYmIHJpZ2h0KCkuaXNa
ZXJvKCkgJiYgdG9wKCkuaXNaZXJvKCkgJiYgYm90dG9tKCkuaXNaZXJvKCkpOwogICAgIH0KIAot
ICAgIExlbmd0aCBtX2xlZnQ7Ci0gICAgTGVuZ3RoIG1fcmlnaHQ7Ci0gICAgTGVuZ3RoIG1fdG9w
OwotICAgIExlbmd0aCBtX2JvdHRvbTsKK3ByaXZhdGU6CisgICAgTGVuZ3RoIG1fc2lkZXNbNF07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRGbGFncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dEZsYWdzLmgJKHJldmlzaW9uIDE4NDExNikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIFRleHREaXJlY3Rpb24geyBSVEwsIExU
UiB9OworZW51bSBUZXh0RGlyZWN0aW9uIHsgTFRSLCBSVEwgfTsKIAogZW51bSBUZXh0UmVuZGVy
aW5nTW9kZSB7IEF1dG9UZXh0UmVuZGVyaW5nLCBPcHRpbWl6ZVNwZWVkLCBPcHRpbWl6ZUxlZ2li
aWxpdHksIEdlb21ldHJpY1ByZWNpc2lvbiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oCShyZXZpc2lvbiAxODQxMTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNCwyNSAr
MzUsOTYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBXcml0aW5nTW9kZSB7Ci0gICAg
VG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwgUmlnaHRUb0xlZnRXcml0aW5nTW9kZSwgTGVmdFRvUmln
aHRXcml0aW5nTW9kZSwgQm90dG9tVG9Ub3BXcml0aW5nTW9kZQorICAgIFRvcFRvQm90dG9tV3Jp
dGluZ01vZGUgPSAwLCAvLyBob3Jpem9udGFsLXRiCisgICAgQm90dG9tVG9Ub3BXcml0aW5nTW9k
ZSA9IDEsIC8vIGhvcml6b250YWwtYnQKKyAgICBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlID0gMiwg
Ly8gdmVydGljYWwtbHIKKyAgICBSaWdodFRvTGVmdFdyaXRpbmdNb2RlID0gMywgLy8gdmVydGlj
YWwtcmwKIH07CiAKKyNkZWZpbmUgTUFLRV9URVhUX0ZMT1cod3JpdGluZ01vZGUsIGRpcmVjdGlv
bikgICgod3JpdGluZ01vZGUpIDw8IDEgfCAoZGlyZWN0aW9uKSkKKworLy8gRGVmaW5lIHRoZSB0
ZXh0IGZsb3cgaW4gdGVybXMgb2YgdGhlIHdyaXRpbmcgbW9kZSBhbmQgdGhlIHRleHQgZGlyZWN0
aW9uLiBUaGUgZmlyc3QKKy8vIHBhcnQgaXMgdGhlIGxpbmUgZ3Jvd2luZyBkaXJlY3Rpb24gYW5k
IHRoZSBzZWNvbmQgcGFydCBpcyB0aGUgYmxvY2sgZ3Jvd2luZyBkaXJlY3Rpb24uCitlbnVtIFRl
eHRGbG93IHsKKyAgICBUZXh0Rmxvd0Vhc3RTb3V0aCA9IE1BS0VfVEVYVF9GTE9XKFRvcFRvQm90
dG9tV3JpdGluZ01vZGUsIExUUiksCisgICAgVGV4dEZsb3dXZXN0U291dGggPSBNQUtFX1RFWFRf
RkxPVyhUb3BUb0JvdHRvbVdyaXRpbmdNb2RlLCBSVEwpLAorICAgIFRleHRGbG93RWFzdE5vcnRo
ID0gTUFLRV9URVhUX0ZMT1coQm90dG9tVG9Ub3BXcml0aW5nTW9kZSwgTFRSKSwKKyAgICBUZXh0
Rmxvd1dlc3ROb3J0aCA9IE1BS0VfVEVYVF9GTE9XKEJvdHRvbVRvVG9wV3JpdGluZ01vZGUsIFJU
TCksCisgICAgVGV4dEZsb3dTb3V0aEVhc3QgPSBNQUtFX1RFWFRfRkxPVyhMZWZ0VG9SaWdodFdy
aXRpbmdNb2RlLCBMVFIpLAorICAgIFRleHRGbG93U291dGhXZXN0ID0gTUFLRV9URVhUX0ZMT1co
TGVmdFRvUmlnaHRXcml0aW5nTW9kZSwgUlRMKSwKKyAgICBUZXh0Rmxvd05vcnRoRWFzdCA9IE1B
S0VfVEVYVF9GTE9XKFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUsIExUUiksCisgICAgVGV4dEZsb3dO
b3J0aFdlc3QgPSBNQUtFX1RFWFRfRkxPVyhSaWdodFRvTGVmdFdyaXRpbmdNb2RlLCBSVEwpCit9
OworCitpbmxpbmUgVGV4dEZsb3cgbWFrZVRleHRGbG93KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2Rl
LCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4
dEZsb3c+KE1BS0VfVEVYVF9GTE9XKHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pKTsKK30KKworY29u
c3QgdW5zaWduZWQgVGV4dEZsb3dSZXZlcnNlZE1hc2sgPSAxOworY29uc3QgdW5zaWduZWQgVGV4
dEZsb3dGbGlwcGVkTWFzayA9IDI7Citjb25zdCB1bnNpZ25lZCBUZXh0Rmxvd1ZlcnRpY2FsTWFz
ayA9IDQ7CisKK2lubGluZSBib29sIGlzVGV4dEZsb3dSZXZlcnNlZChUZXh0RmxvdyB0ZXh0Zmxv
dykKK3sKKyAgICByZXR1cm4gdGV4dGZsb3cgJiBUZXh0Rmxvd1JldmVyc2VkTWFzazsKK30KKwor
aW5saW5lIGJvb2wgaXNUZXh0Rmxvd0ZsaXBwZWQoVGV4dEZsb3cgdGV4dGZsb3cpCit7CisgICAg
cmV0dXJuIHRleHRmbG93ICYgVGV4dEZsb3dGbGlwcGVkTWFzazsKK30KKworaW5saW5lIGJvb2wg
aXNUZXh0Rmxvd1ZlcnRpY2FsKFRleHRGbG93IHRleHRmbG93KQoreworICAgIHJldHVybiB0ZXh0
ZmxvdyAmIFRleHRGbG93VmVydGljYWxNYXNrOworfQorCisvLyBMaW5lcyBoYXZlIHZlcnRpY2Fs
IG9yaWVudGF0aW9uOyBtb2RlcyB2ZXJ0aWNhbC1sciBvciB2ZXJ0aWNhbC1ybC4KK2lubGluZSBi
b29sIGlzVmVydGljYWxXcml0aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkKK3sKKyAg
ICByZXR1cm4gaXNUZXh0Rmxvd1ZlcnRpY2FsKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgTFRS
KSk7Cit9CisKKy8vIEJsb2NrIHByb2dyZXNzaW9uIGluY3JlYXNlcyBpbiB0aGUgb3Bwb3NpdGUg
ZGlyZWN0aW9uIHRvIG5vcm1hbDsgbW9kZXMgdmVydGljYWwtcmwgb3IgaG9yaXpvbnRhbC1idC4K
K2lubGluZSBib29sIGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRp
bmdNb2RlKQoreworICAgIHJldHVybiBpc1RleHRGbG93RmxpcHBlZChtYWtlVGV4dEZsb3cod3Jp
dGluZ01vZGUsIExUUikpOworfQorCiAvLyBMaW5lcyBoYXZlIGhvcml6b250YWwgb3JpZW50YXRp
b247IG1vZGVzIGhvcml6b250YWwtdGIgb3IgaG9yaXpvbnRhbC1idC4KIGlubGluZSBib29sIGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQogewotICAgIHJl
dHVybiB3cml0aW5nTW9kZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlIHx8IHdyaXRpbmdNb2Rl
ID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGU7CisgICAgcmV0dXJuICFpc1ZlcnRpY2FsV3JpdGlu
Z01vZGUod3JpdGluZ01vZGUpOwogfQogCiAvLyBCb3R0b20gb2YgdGhlIGxpbmUgb2NjdXJzIGVh
cmxpZXIgaW4gdGhlIGJsb2NrOyBtb2RlcyB2ZXJ0aWNhbC1sciBvciBob3Jpem9udGFsLWJ0Lgog
aW5saW5lIGJvb2wgaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5n
TW9kZSkKIHsKLSAgICByZXR1cm4gd3JpdGluZ01vZGUgPT0gTGVmdFRvUmlnaHRXcml0aW5nTW9k
ZSB8fCB3cml0aW5nTW9kZSA9PSBCb3R0b21Ub1RvcFdyaXRpbmdNb2RlOworICAgIHJldHVybiBp
c1ZlcnRpY2FsV3JpdGluZ01vZGUod3JpdGluZ01vZGUpICE9IGlzRmxpcHBlZEJsb2Nrc1dyaXRp
bmdNb2RlKHdyaXRpbmdNb2RlKTsKIH0KIAotLy8gQmxvY2sgcHJvZ3Jlc3Npb24gaW5jcmVhc2Vz
IGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gbm9ybWFsOyBtb2RlcyB2ZXJ0aWNhbC1ybCBv
ciBob3Jpem9udGFsLWJ0LgotaW5saW5lIGJvb2wgaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUo
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCitlbnVtIExvZ2ljYWxCb3hTaWRlIHsgQmVmb3JlU2lk
ZSwgRW5kU2lkZSwgQWZ0ZXJTaWRlLCBTdGFydFNpZGUgfTsKK2VudW0gUGh5c2ljYWxCb3hTaWRl
IHsgVG9wU2lkZSwgUmlnaHRTaWRlLCBCb3R0b21TaWRlLCBMZWZ0U2lkZSB9OworCitpbmxpbmUg
UGh5c2ljYWxCb3hTaWRlIG1hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZShUZXh0RmxvdyB0ZXh0
ZmxvdywgTG9naWNhbEJveFNpZGUgbG9naWNhbFNpZGUpCiB7Ci0gICAgcmV0dXJuIHdyaXRpbmdN
b2RlID09IFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUgfHwgd3JpdGluZ01vZGUgPT0gQm90dG9tVG9U
b3BXcml0aW5nTW9kZTsKKyAgICBpbnQgcGh5c2ljYWxTaWRlID0gbG9naWNhbFNpZGU7CisgICAg
Ym9vbCBpc1N0YXJ0RW5kU2lkZSA9IHBoeXNpY2FsU2lkZSAlIDIgPT0gMTsKKworICAgIC8vIFN3
YXAgdGhlIGxlZnQvcmlnaHQgc2lkZSB3aXRoIHRoZSB0b3AvYm90dG9tIHNpZGUgaWYgdGV4dEZs
b3cgaXMgdmVydGljYWwKKyAgICBpZiAoaXNUZXh0Rmxvd1ZlcnRpY2FsKHRleHRmbG93KSkgewor
ICAgICAgICBpZiAoaXNTdGFydEVuZFNpZGUpCisgICAgICAgICAgICBwaHlzaWNhbFNpZGUgPSAo
cGh5c2ljYWxTaWRlICsgMSkgJSA0OworICAgICAgICBlbHNlCisgICAgICAgICAgICBwaHlzaWNh
bFNpZGUgPSAocGh5c2ljYWxTaWRlICsgMykgJSA0OworICAgIH0KKworICAgIC8vIFN3YXAgdGhl
IGxlZnQgYW5kIHJpZ2h0IHNpZGVzIGlmIHRleHRGbG93IGlzIHJldmVyc2VkIGFuZCB0aGUgdG9w
IGFuZCBib3R0b20gc2lkZXMgaWYgdGV4dEZsb3cgaXMgZmxpcHBlZAorICAgIGlmICgoaXNTdGFy
dEVuZFNpZGUgJiYgaXNUZXh0Rmxvd1JldmVyc2VkKHRleHRmbG93KSkgfHwgKCFpc1N0YXJ0RW5k
U2lkZSAmJiBpc1RleHRGbG93RmxpcHBlZCh0ZXh0ZmxvdykpKQorICAgICAgICBwaHlzaWNhbFNp
ZGUgPSAocGh5c2ljYWxTaWRlICsgMikgJSA0OworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBo
eXNpY2FsQm94U2lkZT4ocGh5c2ljYWxTaWRlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCShyZXZpc2lvbiAxODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjEsMTAgKzkyMSwxMCBAQCB2b2lk
IFJlbmRlclN0eWxlOjpzZXRNYXNrSW1hZ2UoY29uc3QgVmVjCiB2b2lkIFJlbmRlclN0eWxlOjpz
ZXRDbGlwKExlbmd0aCB0b3AsIExlbmd0aCByaWdodCwgTGVuZ3RoIGJvdHRvbSwgTGVuZ3RoIGxl
ZnQpCiB7CiAgICAgU3R5bGVWaXN1YWxEYXRhKiBkYXRhID0gdmlzdWFsLmFjY2VzcygpOwotICAg
IGRhdGEtPmNsaXAubV90b3AgPSB0b3A7Ci0gICAgZGF0YS0+Y2xpcC5tX3JpZ2h0ID0gcmlnaHQ7
Ci0gICAgZGF0YS0+Y2xpcC5tX2JvdHRvbSA9IGJvdHRvbTsKLSAgICBkYXRhLT5jbGlwLm1fbGVm
dCA9IGxlZnQ7CisgICAgZGF0YS0+Y2xpcC50b3AoKSA9IHRvcDsKKyAgICBkYXRhLT5jbGlwLnJp
Z2h0KCkgPSByaWdodDsKKyAgICBkYXRhLT5jbGlwLmJvdHRvbSgpID0gYm90dG9tOworICAgIGRh
dGEtPmNsaXAubGVmdCgpID0gbGVmdDsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6YWRkQ3Vyc29y
KFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gaW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQpA
QCAtMTMwOSwxMCArMTMwOSwxMCBAQCBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+
JiBSZW5kCiAgICAgaWYgKCFub25lTGlzdEluaXRpYWxpemVkKSB7CiAgICAgICAgIFN0eWxlRGFz
aGJvYXJkUmVnaW9uIHJlZ2lvbjsKICAgICAgICAgcmVnaW9uLmxhYmVsID0gIiI7Ci0gICAgICAg
IHJlZ2lvbi5vZmZzZXQubV90b3AgID0gTGVuZ3RoKCk7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQu
bV9yaWdodCA9IExlbmd0aCgpOwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fYm90dG9tID0gTGVu
Z3RoKCk7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubV9sZWZ0ID0gTGVuZ3RoKCk7CisgICAgICAg
IHJlZ2lvbi5vZmZzZXQudG9wKCkgID0gTGVuZ3RoKCk7CisgICAgICAgIHJlZ2lvbi5vZmZzZXQu
cmlnaHQoKSA9IExlbmd0aCgpOworICAgICAgICByZWdpb24ub2Zmc2V0LmJvdHRvbSgpID0gTGVu
Z3RoKCk7CisgICAgICAgIHJlZ2lvbi5vZmZzZXQubGVmdCgpID0gTGVuZ3RoKCk7CiAgICAgICAg
IHJlZ2lvbi50eXBlID0gU3R5bGVEYXNoYm9hcmRSZWdpb246Ok5vbmU7CiAgICAgICAgIG5vbmVM
aXN0LmFwcGVuZChyZWdpb24pOwogICAgICAgICBub25lTGlzdEluaXRpYWxpemVkID0gdHJ1ZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShy
ZXZpc2lvbiAxODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTk1LDggKzU5NSw4IEBAIHB1YmxpYzoKICAgICBj
b25zdCBMZW5ndGgmIGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuYm90
dG9tKCk7IH0KIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgcG9zaXRpb25lZCBvYmplY3QgZWRnZXMg
dGhhdCB0YWtlIGludG8gYWNjb3VudCB3cml0aW5nIG1vZGUuCi0gICAgY29uc3QgTGVuZ3RoJiBs
b2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQubG9naWNhbExlZnQo
d3JpdGluZ01vZGUoKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxSaWdodCgpIGNvbnN0
IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQubG9naWNhbFJpZ2h0KHdyaXRpbmdNb2RlKCkpOyB9
CisgICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5vZmZzZXQuc3RhcnQod3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGxvZ2lj
YWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuZW5kKHdyaXRpbmdNb2Rl
KCkpOyB9CiAgICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gc3Vy
cm91bmQtPm9mZnNldC5iZWZvcmUod3JpdGluZ01vZGUoKSk7IH0KICAgICBjb25zdCBMZW5ndGgm
IGxvZ2ljYWxCb3R0b20oKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LmFmdGVyKHdy
aXRpbmdNb2RlKCkpOyB9CiAKQEAgLTEyMDAsMTAgKzEyMDAsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0UG9zaXRpb24oRVBvc2l0aW9uIHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldFBvc2l0
aW9uKHYpOyB9CiAgICAgdm9pZCBzZXRGbG9hdGluZyhFRmxvYXQgdikgeyBub25pbmhlcml0ZWRf
ZmxhZ3Muc2V0RmxvYXRpbmcodik7IH0KIAotICAgIHZvaWQgc2V0TGVmdChMZW5ndGggdikgeyBT
RVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQubV9sZWZ0LCBXVEY6Om1vdmUodikpOyB9Ci0gICAgdm9p
ZCBzZXRSaWdodChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQubV9yaWdodCwg
V1RGOjptb3ZlKHYpKTsgfQotICAgIHZvaWQgc2V0VG9wKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vy
cm91bmQsIG9mZnNldC5tX3RvcCwgV1RGOjptb3ZlKHYpKTsgfQotICAgIHZvaWQgc2V0Qm90dG9t
KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5tX2JvdHRvbSwgV1RGOjptb3Zl
KHYpKTsgfQorICAgIHZvaWQgc2V0TGVmdChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBv
ZmZzZXQubGVmdCgpLCBXVEY6Om1vdmUodikpOyB9CisgICAgdm9pZCBzZXRSaWdodChMZW5ndGgg
dikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQucmlnaHQoKSwgV1RGOjptb3ZlKHYpKTsgfQor
ICAgIHZvaWQgc2V0VG9wKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC50b3Ao
KSwgV1RGOjptb3ZlKHYpKTsgfQorICAgIHZvaWQgc2V0Qm90dG9tKExlbmd0aCB2KSB7IFNFVF9W
QVIoc3Vycm91bmQsIG9mZnNldC5ib3R0b20oKSwgV1RGOjptb3ZlKHYpKTsgfQogCiAgICAgdm9p
ZCBzZXRXaWR0aChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX3dpZHRoLCBXVEY6Om1vdmUo
dikpOyB9CiAgICAgdm9pZCBzZXRIZWlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2JveCwgbV9o
ZWlnaHQsIFdURjo6bW92ZSh2KSk7IH0KQEAgLTEyMzksMTAgKzEyMzksMTAgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgU3R5bGVEYXNoYm9hcmRSZWdpb24gcmVnaW9uOwogICAgICAgICByZWdp
b24ubGFiZWwgPSBsYWJlbDsKLSAgICAgICAgcmVnaW9uLm9mZnNldC5tX3RvcCA9IFdURjo6bW92
ZSh0KTsKLSAgICAgICAgcmVnaW9uLm9mZnNldC5tX3JpZ2h0ID0gV1RGOjptb3ZlKHIpOwotICAg
ICAgICByZWdpb24ub2Zmc2V0Lm1fYm90dG9tID0gV1RGOjptb3ZlKGIpOwotICAgICAgICByZWdp
b24ub2Zmc2V0Lm1fbGVmdCA9IFdURjo6bW92ZShsKTsKKyAgICAgICAgcmVnaW9uLm9mZnNldC50
b3AoKSA9IFdURjo6bW92ZSh0KTsKKyAgICAgICAgcmVnaW9uLm9mZnNldC5yaWdodCgpID0gV1RG
Ojptb3ZlKHIpOworICAgICAgICByZWdpb24ub2Zmc2V0LmJvdHRvbSgpID0gV1RGOjptb3ZlKGIp
OworICAgICAgICByZWdpb24ub2Zmc2V0LmxlZnQoKSA9IFdURjo6bW92ZShsKTsKICAgICAgICAg
cmVnaW9uLnR5cGUgPSB0eXBlOwogICAgICAgICBpZiAoIWFwcGVuZCkKICAgICAgICAgICAgIHJh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2Rhc2hib2FyZFJlZ2lvbnMuY2xlYXIoKTsK
QEAgLTEzMjMsMTAgKzEzMjMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmVydGljYWxBbGln
bkxlbmd0aChMZW5ndGggbGVuZ3RoKSB7IHNldFZlcnRpY2FsQWxpZ24oTEVOR1RIKTsgU0VUX1ZB
UihtX2JveCwgbV92ZXJ0aWNhbEFsaWduLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KIAogICAgIHZv
aWQgc2V0SGFzQ2xpcChib29sIGIgPSB0cnVlKSB7IFNFVF9WQVIodmlzdWFsLCBoYXNDbGlwLCBi
KTsgfQotICAgIHZvaWQgc2V0Q2xpcExlZnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3Vh
bCwgY2xpcC5tX2xlZnQsIFdURjo6bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0Q2xpcFJp
Z2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAubV9yaWdodCwgV1RGOjpt
b3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRDbGlwVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VU
X1ZBUih2aXN1YWwsIGNsaXAubV90b3AsIFdURjo6bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQg
c2V0Q2xpcEJvdHRvbShMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLm1fYm90
dG9tLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldENsaXBMZWZ0KExlbmd0aCBs
ZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAubGVmdCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7
IH0KKyAgICB2b2lkIHNldENsaXBSaWdodChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFs
LCBjbGlwLnJpZ2h0KCksIFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0Q2xpcFRv
cChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLnRvcCgpLCBXVEY6Om1vdmUo
bGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldENsaXBCb3R0b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRf
VkFSKHZpc3VhbCwgY2xpcC5ib3R0b20oKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CiAgICAgdm9p
ZCBzZXRDbGlwKExlbmd0aCB0b3AsIExlbmd0aCByaWdodCwgTGVuZ3RoIGJvdHRvbSwgTGVuZ3Ro
IGxlZnQpOwogICAgIHZvaWQgc2V0Q2xpcChMZW5ndGhCb3ggYm94KSB7IFNFVF9WQVIodmlzdWFs
LCBjbGlwLCBXVEY6Om1vdmUoYm94KSk7IH0KIApAQCAtMTQzNCwxOSArMTQzNCwxOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRMaXN0U3R5bGVQb3NpdGlvbihFTGlzdFN0eWxlUG9zaXRpb24gdikg
eyBpbmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfcG9zaXRpb24gPSB2OyB9CiAKICAgICB2b2lk
IHJlc2V0TWFyZ2luKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4sIExlbmd0aEJveChGaXhl
ZCkpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5Ub3AoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1
cnJvdW5kLCBtYXJnaW4ubV90b3AsIFdURjo6bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0
TWFyZ2luQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLm1f
Ym90dG9tLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldE1hcmdpbkxlZnQoTGVu
Z3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ubV9sZWZ0LCBXVEY6Om1vdmUo
bGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldE1hcmdpblJpZ2h0KExlbmd0aCBsZW5ndGgpIHsgU0VU
X1ZBUihzdXJyb3VuZCwgbWFyZ2luLm1fcmlnaHQsIFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAg
IHZvaWQgc2V0TWFyZ2luVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFy
Z2luLnRvcCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1hcmdpbkJvdHRv
bShMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5ib3R0b20oKSwgV1RG
Ojptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5MZWZ0KExlbmd0aCBsZW5ndGgp
IHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLmxlZnQoKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9
CisgICAgdm9pZCBzZXRNYXJnaW5SaWdodChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91
bmQsIG1hcmdpbi5yaWdodCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KICAgICB2b2lkIHNldE1h
cmdpblN0YXJ0KExlbmd0aCk7CiAgICAgdm9pZCBzZXRNYXJnaW5FbmQoTGVuZ3RoKTsKIAogICAg
IHZvaWQgcmVzZXRQYWRkaW5nKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLCBMZW5ndGhC
b3goQXV0bykpOyB9CiAgICAgdm9pZCBzZXRQYWRkaW5nQm94KExlbmd0aEJveCBib3gpIHsgU0VU
X1ZBUihzdXJyb3VuZCwgcGFkZGluZywgV1RGOjptb3ZlKGJveCkpOyB9Ci0gICAgdm9pZCBzZXRQ
YWRkaW5nVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5tX3Rv
cCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRQYWRkaW5nQm90dG9tKExlbmd0
aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5tX2JvdHRvbSwgV1RGOjptb3Zl
KGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRQYWRkaW5nTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNF
VF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubV9sZWZ0LCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAg
ICB2b2lkIHNldFBhZGRpbmdSaWdodChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQs
IHBhZGRpbmcubV9yaWdodCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQYWRk
aW5nVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy50b3AoKSwg
V1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQYWRkaW5nQm90dG9tKExlbmd0aCBs
ZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5ib3R0b20oKSwgV1RGOjptb3ZlKGxl
bmd0aCkpOyB9CisgICAgdm9pZCBzZXRQYWRkaW5nTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9W
QVIoc3Vycm91bmQsIHBhZGRpbmcubGVmdCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2
b2lkIHNldFBhZGRpbmdSaWdodChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBh
ZGRpbmcucmlnaHQoKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CiAKICAgICB2b2lkIHNldEN1cnNv
cihFQ3Vyc29yIGMpIHsgaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jfc3R5bGUgPSBjOyB9CiAgICAg
dm9pZCBhZGRDdXJzb3IoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiwgY29uc3QgSW50UG9pbnQmIGhv
dFNwb3QgPSBJbnRQb2ludCgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252913</attachid>
            <date>2015-05-11 17:32:47 -0700</date>
            <delta_ts>2015-05-11 17:38:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143399-20150511173126.patch</filename>
            <type>text/plain</type>
            <size>37488</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDEzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBACisyMDE1LTA1LTExICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29kZSBjbGVh
biB1cCBmb3IgZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtaXggb2YgV3JpdGluZ01v
ZGUgYW5kIFRleHREaXJlY3Rpb24gLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQzMzk5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBlaWdodCBUZXh0Rmxvd3MuIEEgVGV4dEZs
b3cgY29uc2lzdHMgb2YgdHdvIGRpcmVjdGlvbnMuIFRoZQorICAgICAgICBmaXJzdCBvbmUgY29u
dHJvbHMgdGhlIGxpbmUgZ3Jvd2luZyBkaXJlY3Rpb24gYW5kIHRoZSBzZWNvbmQgb25lIGNvbnRy
b2xzIHRoZQorICAgICAgICBibG9jayBncm93aW5nIGRpcmVjdGlvbi4KKyAgICAgICAgCisgICAg
ICAgIFdlIG5lZWQgdG8gZXh0cmFjdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGVhc2lseSBm
cm9tIHRoZSBUZXh0RmxvdworCisgICAgICAgIC0tIGlzVGV4dEZsb3dSZXZlcnNlZCgpIC8vIFJU
TAorICAgICAgICAtLSBpc1RleHRGbG93RmxpcHBlZCgpICAvLyB0aGUgb3Bwb3NpdGUgZGlyZWN0
aW9uIHRvIG5vcm1hbAorICAgICAgICAtLSBpc1RleHRGbG93VmVydGljYWwoKSAvLyBUaGUgbGlu
ZSBncm93cyB2ZXJ0aWNhbGx5CisKKyAgICAgICAgTWl4aW5nIFdyaXRpbmdNb2RlIGFuZCBUZXh0
RGlyZWN0aW9uIGludG8gVGV4dEZsb3cgYW5kIGNob29zaW5nIHRoZWlyIHZhbHVlcworICAgICAg
ICBjYXJlZnVsbHkgdG8gZWFzZSBpbXBsZW1lbnRpbmcgdGhlIGFib3ZlIGZ1bmN0aW9ucyBjYW4g
bWFrZSB0aGluZ3MgY2xlYXJlci4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhCb3guY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBSZW1vdmUgTGVuZ3RoQm94LmNwcCBzaW5jZSBhbGwg
aXRzIGZ1bmN0aW9ucyBiZWNvbWUgc2luZ2xlCisgICAgICAgIGxpbmUgZnVuY3Rpb25zIGFuZCBj
b3VsZCBiZSBtb3ZlZCB0byB0aGUgaGVhZGVyIGZpbGUuCisgICAgICAgIAorICAgICAgICAqIHBs
YXRmb3JtL0xlbmd0aEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpMZW5ndGhC
b3gpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpsZWZ0KToKKyAgICAgICAgKFdlYkNv
cmU6Okxlbmd0aEJveDo6cmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94Ojp0b3Ap
OgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94Ojpib3R0b20pOgorICAgICAgICAoV2ViQ29y
ZTo6TGVuZ3RoQm94OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6
bm9uWmVybyk6IFVzZSBhbiBhcnJheSBvZiBMZW5ndGhzIGZvciB0aGUgZm91ciBzaWRlcy4KKyAg
ICAgICAgVXNlIHRoZSBlbnVtIFBoeXNpY2FsQm94U2lkZSB0byBhY2Nlc3MgdGhpcyBhcnJheS4K
KworICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpiZWZvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVuZ3RoQm94OjphZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6OnN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6ZW5kKToKKyAgICAgICAgVXNlIHRoZSBt
YXBMb2dpY2FsVG9QaHlzaWNhbEJveFNpZGUoKSBnZXQgdGhlIHBoeXNpY2FsIHNpZGUgb2YgdGhl
IGJveCBiYXNlZAorICAgICAgICBvbiB0aGUgZGlyZWN0aW9uIGFuZCB0aGUgd3JpdGluZyBtb2Rl
LiAKKyAgICAgICAgCisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkpOiBJbnN0ZWFkIG9mIGhhbmRsaW5nIHRo
ZSBlaWdodCBwb3NzaWJsZQorICAgICAgICBjYXNlcyBvZiB0aGUgdGV4dCBmbG93cyBvbmUgYnkg
b25lLCB3ZSBjYW4gYW5hbHl6ZSB0aGUgdGV4dCBmbG93IGFuZCBzd2FwIHRoZQorICAgICAgICBz
aWRlIHByb3BlcnR5IGluZGV4IHRvIGdldCB0aGUgcHJvcGVyIHZhbHVlLgorICAgICAgICAKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oOiBVc3VhbGx5IHRoZSBkZWZhdWx0IHZh
bHVlIGlzIGRlZmluZWQgZmlyc3QuCisgICAgICAgIEFuZCBpZiB0aGUgdmFsdWUgaXMgaW50ZWdl
ciBvciBlbnVtLCBpdCBzaG91bGQgYmUgZXF1YWwgdG8gemVyby4gU2luY2UgTFRSCisgICAgICAg
IGlzIHRoZSBkZWZhdWx0IGZvciB0aGUgdGV4dCBkaXJlY3Rpb24sIGl0IHNob3VsZCBiZSBkZWZp
bmVkIGJlZm9yZSBSVEwuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL3RleHQvV3JpdGlu
Z01vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VUZXh0Rmxvdyk6ICBEZWZpbmluZyBhIGZ1
bmN0aW9uIHRvIG1ha2UgYSBUZXh0RmxvdyBvdXQgZnJvbQorICAgICAgICBXcml0aW5nTW9kZSBh
bmQgVGV4dERpcmVjdGlvbi4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjppc1RleHRGbG93
UmV2ZXJzZWQpOiBSZXR1cm5zIHRydWUgaWYgdGhlIHRleHQgZGlyZWN0aW9uIGlzIFJUTC4KKyAg
ICAgICAgCisgICAgICAgIChXZWJDb3JlOjppc1RleHRGbG93RmxpcHBlZCk6IFJldHVybnMgdHJ1
ZSBpZiBibG9jayBncm93aW5nIGRpcmVjdGlvbgorICAgICAgICBpcyBpbiB0aGUgb3Bwb3NpdGUg
ZGlyZWN0aW9uIHRvIG5vcm1hbC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjppc1RleHRG
bG93VmVydGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6aXNWZXJ0aWNhbFdyaXRpbmdNb2RlKTog
UmV0dXJucyB0cnVlIGlmIFRoZSBsaW5lIGdyb3dzIHZlcnRpY2FsbHkuCisKKyAgICAgICAgKFdl
YkNvcmU6OmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKTogCisgICAgICAgIChXZWJDb3JlOjppc0Zs
aXBwZWRMaW5lc1dyaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRmxpcHBlZEJsb2Nr
c1dyaXRpbmdNb2RlKTogVXNlIHRoZSB0ZXh0IGZsb3cgZnVuY3Rpb25zIGluc3RlYWQuCisgICAg
ICAgIAorICAgICAgICAoV2ViQ29yZTo6bWFwTG9naWNhbFRvUGh5c2ljYWxCb3hTaWRlKTogSXQg
bWFwcyBhIGxvZ2ljYWwgc2lkZSBvZiBhIGJveAorICAgICAgICBnaXZlbiB0aGUgY3VycmVudCB0
ZXh0IGRpcmVjdGlvbiBhbmQgdGhlIHdyaXRpbmcgbW9kZS4KKworICAgICAgICAqIGNzcy9DU1NU
b1N0eWxlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcE5pbmVQ
aWVjZUltYWdlU2xpY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwTmlu
ZVBpZWNlSW1hZ2VRdWFkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldENsaXApOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6Om5vbmVEYXNoYm9hcmRSZWdpb25zKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDogVXNlIHRoZSBMZW5ndGhCb3ggc2lkZXMnIGFj
Y2VzcyBtZXRob2RzIGluc3RlYWQKKyAgICAgICAgb2YgZGlyZWN0bHkgdXNpbmcgdGhlIHNpZGVz
JyBhcnJheS4KKwogMjAxNS0wNS0xMSAgSm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGlnYWxpYS5j
b20+CiAKICAgICAgICAgQVg6IFtBVEtdIEFsd2F5cyBpbmNsdWRlIHJvd3MgaW4gdGhlIHRyZWUg
b2YgYWNjZXNzaWJsZSB0YWJsZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
ODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMjAzOCw3ICsyMDM4LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL0tp
bGxSaW5nTm9uZS5jcHAKICAgICBwbGF0Zm9ybS9MYW5ndWFnZS5jcHAKICAgICBwbGF0Zm9ybS9M
ZW5ndGguY3BwCi0gICAgcGxhdGZvcm0vTGVuZ3RoQm94LmNwcAogICAgIHBsYXRmb3JtL0xpbmtI
YXNoLmNwcAogICAgIHBsYXRmb3JtL0xvZ2dpbmcuY3BwCiAgICAgcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4NDExNikKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjA1LDcg
KzYwNSw2IEBACiAJCTE0NDc2QUE4MTVEQzRCQjEwMDMwNURCMiAvKiBXcml0aW5nTW9kZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0NzZBQTcxNURD
NEJCMTAwMzA1REIyIC8qIFdyaXRpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ0OUUyNEMxMDdENEE4NDAwQjU3OTNGIC8qIEpTQ2Fs
bGJhY2tEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNDQ5RTI0QTEwN0Q0QTg0MDBCNTc5M0YgLyogSlNDYWxsYmFja0RhdGEuaCAqLzsgfTsKIAkJ
MTQ0OUUyODcxMDdENERCNDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDlFMjg2MTA3RDREQjQwMEI1
NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5jcHAgKi87IH07Ci0JCTE0NkNDMTE1MTU2OTg4RTQwMDEw
OUUzNyAvKiBMZW5ndGhCb3guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQ2Q0MxMTMxNTY5ODhCRDAwMTA5RTM3IC8qIExlbmd0aEJveC5jcHAgKi87
IH07CiAJCTE0NzdFNzc2MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3N0U3NzQwQkY0MTM0QTAw
MTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgKi87IH07CiAJCTE0NzdFNzc3MEJGNDEzNEEwMDE1Mjg3
MiAvKiBQYWdlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0NzdFNzc1MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDc5RkFFRDEwOUFFMzc1
MDBERUQ2NTUgLyogUmVuZGVyUnVieS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDc5RkFFNTEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieS5j
cHAgKi87IH07CkBAIC03NjgwLDcgKzc2NzksNiBAQAogCQkxNDQ3NkFBNzE1REM0QkIxMDAzMDVE
QjIgLyogV3JpdGluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3Jp
dGluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0OUUyNEExMDdENEE4
NDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTQ2FsbGJhY2tEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
NDlFMjg2MTA3RDREQjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbGxiYWNrRGF0YS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTE0NkNDMTEzMTU2OTg4QkQwMDEwOUUzNyAvKiBMZW5ndGhCb3gu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVuZ3RoQm94LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ3N0U3NzQwQkY0MTM0QTAwMTUyODcyIC8q
IFBhZ2VDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFn
ZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ3N0U3NzUwQkY0MTM0
QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGFnZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NzlGQUU1MTA5
QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbmRlclJ1YnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjE3NjAsNyArMjE3NTgsNiBAQAogCQkJCTE0MURDMDQ3MTY0ODM0OEYwMDM3MUU1QSAvKiBM
YXlvdXRVbml0LmggKi8sCiAJCQkJQkNFNjVCRTgwRUFDREYxNjAwN0U0NTMzIC8qIExlbmd0aC5j
cHAgKi8sCiAJCQkJQkNFNjVCRTkwRUFDREYxNjAwN0U0NTMzIC8qIExlbmd0aC5oICovLAotCQkJ
CTE0NkNDMTEzMTU2OTg4QkQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwICovLAogCQkJCUJDRkY2
NDhGMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCAqLywKIAkJCQlCQ0ZGNjQ5MDBFQUQx
NUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oICovLAogCQkJCUE3QUQyRjg1MEVDODlEMDcwMDhB
QjAwMiAvKiBMaW5rSGFzaC5jcHAgKi8sCkBAIC0yOTMwNiw3ICsyOTMwMyw2IEBACiAJCQkJNTEy
REQ4RjQwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hpdmUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTFCMjQxN0IwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0U2NUJFQTBFQUNERjE2MDA3RTQ1MzMgLyogTGVuZ3Ro
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTE0NkNDMTE1MTU2OTg4RTQwMDEwOUUzNyAvKiBMZW5n
dGhCb3guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTU1RjQ5N0ExNTFCODg4MDAwQkI2N0RCIC8q
IExlbmd0aEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRkI2OThDQzE4MzNFRTBE
MDAxNThBMzEgLyogTGluZUJyZWFrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODlCNUVBQTEx
MUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDE4NDExNikKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDExMiArNTQs
MTAgQEAgdm9pZCBDU1NQcm9wZXJ0eTo6d3JhcFZhbHVlSW5Db21tYVNlcGFyYQogICAgIG1fdmFs
dWUgPSBXVEY6Om1vdmUobGlzdCk7CiB9CiAKLWVudW0gTG9naWNhbEJveFNpZGUgeyBCZWZvcmVT
aWRlLCBFbmRTaWRlLCBBZnRlclNpZGUsIFN0YXJ0U2lkZSB9OwotZW51bSBQaHlzaWNhbEJveFNp
ZGUgeyBUb3BTaWRlLCBSaWdodFNpZGUsIEJvdHRvbVNpZGUsIExlZnRTaWRlIH07Ci0KIHN0YXRp
YyBDU1NQcm9wZXJ0eUlEIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZSBsb2dpY2Fs
U2lkZSwgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQogewotICAgIGlm
IChkaXJlY3Rpb24gPT0gTFRSKSB7Ci0gICAgICAgIGlmICh3cml0aW5nTW9kZSA9PSBUb3BUb0Jv
dHRvbVdyaXRpbmdNb2RlKSB7Ci0gICAgICAgICAgICAvLyBUaGUgY29tbW9uIGNhc2UuIFRoZSBs
b2dpY2FsIGFuZCBwaHlzaWNhbCBib3ggc2lkZXMgbWF0Y2guCi0gICAgICAgICAgICAvLyBMZWZ0
ID0gU3RhcnQsIFJpZ2h0ID0gRW5kLCBCZWZvcmUgPSBUb3AsIEFmdGVyID0gQm90dG9tCi0gICAg
ICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtsb2dpY2FsU2lkZV07Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAod3JpdGluZ01vZGUgPT0gQm90dG9tVG9Ub3BXcml0aW5nTW9k
ZSkgewotICAgICAgICAgICAgLy8gU3RhcnQgPSBMZWZ0LCBFbmQgPSBSaWdodCwgQmVmb3JlID0g
Qm90dG9tLCBBZnRlciA9IFRvcC4KLSAgICAgICAgICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsK
LSAgICAgICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgICAgIHJldHVybiBzaG9y
dGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICAgICAgICAgIGNhc2UgRW5kU2lkZToK
LSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVd
OwotICAgICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgICAgIHJldHVybiBz
aG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICh3cml0aW5nTW9kZSA9PSBM
ZWZ0VG9SaWdodFdyaXRpbmdNb2RlKSB7Ci0gICAgICAgICAgICAvLyBTdGFydCA9IFRvcCwgRW5k
ID0gQm90dG9tLCBCZWZvcmUgPSBMZWZ0LCBBZnRlciA9IFJpZ2h0LgotICAgICAgICAgICAgc3dp
dGNoIChsb2dpY2FsU2lkZSkgewotICAgICAgICAgICAgY2FzZSBTdGFydFNpZGU6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07Ci0gICAgICAg
ICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9w
ZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3Bl
cnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gU3RhcnQgPSBUb3AsIEVuZCA9IEJvdHRvbSwgQmVmb3JlID0gUmlnaHQsIEFmdGVyID0gTGVm
dAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRl
OgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07Ci0g
ICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVy
dGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAg
ICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVd
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09IFRvcFRvQm90dG9t
V3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8gU3RhcnQgPSBSaWdodCwgRW5kID0gTGVmdCwgQmVm
b3JlID0gVG9wLCBBZnRlciA9IEJvdHRvbQotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7
Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKLSAgICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAg
ICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgICAgICBjYXNl
IEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtU
b3BTaWRlXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQu
cHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdy
aXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8gU3RhcnQg
PSBSaWdodCwgRW5kID0gTGVmdCwgQmVmb3JlID0gQm90dG9tLCBBZnRlciA9IFRvcAotICAgICAg
ICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAg
ICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKLSAgICAgICAg
Y2FzZSBFbmRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClb
TGVmdFNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4g
c2hvcnRoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09IExlZnRUb1JpZ2h0V3JpdGluZ01v
ZGUpIHsKLSAgICAgICAgLy8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRvcCwgQmVmb3JlID0gTGVm
dCwgQWZ0ZXIgPSBSaWdodAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAg
IGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVz
KClbQm90dG9tU2lkZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVy
biBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNp
ZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtMZWZ0U2lkZV07
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtSaWdodFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gU3RhcnQgPSBCb3R0
b20sIEVuZCA9IFRvcCwgQmVmb3JlID0gUmlnaHQsIEFmdGVyID0gTGVmdAotICAgIHN3aXRjaCAo
bG9naWNhbFNpZGUpIHsKLSAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgcmV0dXJuIHNob3J0
aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgY2FzZSBFbmRTaWRlOgotICAgICAg
ICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKLSAgICBjYXNlIEJlZm9y
ZVNpZGU6Ci0gICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVm
dFNpZGVdOwotICAgIH0KKyAgICBQaHlzaWNhbEJveFNpZGUgcGh5c2ljYWxTaWRlID0gbWFwTG9n
aWNhbFRvUGh5c2ljYWxCb3hTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9u
KSwgbG9naWNhbFNpZGUpOworICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW3BoeXNp
Y2FsU2lkZV07CiB9CiAKIGVudW0gTG9naWNhbEV4dGVudCB7IExvZ2ljYWxXaWR0aCwgTG9naWNh
bEhlaWdodCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAkocmV2aXNp
b24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MTgsMjEgKzYxOCwyMSBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcE5p
bmVQaWVjZUltYWdlU2xpCiAgICAgTGVuZ3RoQm94IGJveDsKICAgICBRdWFkKiBzbGljZXMgPSBi
b3JkZXJJbWFnZVNsaWNlLnNsaWNlcygpOwogICAgIGlmIChzbGljZXMtPnRvcCgpLT5pc1BlcmNl
bnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldERv
dWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2Vz
LT50b3AoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgZWxzZQotICAgICAgICBi
b3gubV90b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0SW50VmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgICAgIGJveC50b3AoKSA9IExlbmd0aChz
bGljZXMtPnRvcCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiks
IEZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQZXJjZW50YWdlKCkpCi0gICAg
ICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXREb3VibGVWYWx1
ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNlcy0+Ym90
dG9tKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgIGVsc2UKLSAgICAgICAgYm94
Lm1fYm90dG9tID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+Z2V0RmxvYXRWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAgICAgICAgYm94LmJvdHRv
bSgpID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5sZWZ0KCkt
PmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVm
dCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmxlZnQoKSA9IExl
bmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgZWxz
ZQotICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5nZXRJbnRWYWx1
ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAgICAgICAgYm94Lmxl
ZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0SW50VmFsdWUoQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CiAgICAgaWYgKHNsaWNlcy0+cmlnaHQoKS0+aXNQZXJj
ZW50YWdlKCkpCi0gICAgICAgIGJveC5tX3JpZ2h0ID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+
Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIGJveC5yaWdodCgpID0gTGVuZ3Ro
KHNsaWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgZWxzZQot
ICAgICAgICBib3gubV9yaWdodCA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOworICAgICAgICBib3gucmln
aHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwogICAgIGltYWdlLnNldEltYWdlU2xpY2VzKGJveCk7
CiAKICAgICAvLyBTZXQgb3VyIGZpbGwgbW9kZS4KQEAgLTY1NCwzMiArNjU0LDMyIEBAIExlbmd0
aEJveCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWEKICAgICBMZW5ndGhCb3ggYm94OyAv
LyBEZWZhdWx0cyB0byAnYXV0bycgc28gd2UgZG9uJ3QgaGF2ZSB0byBoYW5kbGUgdGhhdCBleHBs
aWNpdGx5IGJlbG93LgogICAgIFF1YWQqIHNsaWNlcyA9IGJvcmRlcldpZHRocy5nZXRRdWFkVmFs
dWUoKTsKICAgICBpZiAoc2xpY2VzLT50b3AoKS0+aXNOdW1iZXIoKSkKLSAgICAgICAgYm94Lm1f
dG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsKKyAg
ICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldEludFZhbHVlKCksIFJl
bGF0aXZlKTsKICAgICBlbHNlIGlmIChzbGljZXMtPnRvcCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAg
ICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldERvdWJsZVZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAgICAgICBib3gu
dG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT50
b3AoKS0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAgICAgYm94Lm1fdG9wID0g
c2xpY2VzLT50b3AoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKKyAg
ICAgICAgYm94LnRvcCgpID0gc2xpY2VzLT50b3AoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNv
bnZlcnNpb25EYXRhKTsKIAogICAgIGlmIChzbGljZXMtPnJpZ2h0KCktPmlzTnVtYmVyKCkpCi0g
ICAgICAgIGJveC5tX3JpZ2h0ID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0SW50VmFsdWUo
KSwgUmVsYXRpdmUpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0
KCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChzbGljZXMtPnJpZ2h0
KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9yaWdodCA9IExlbmd0aChzbGljZXMt
PnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFH
RSksIFBlcmNlbnQpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0
KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBl
cmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+cmlnaHQoKS0+Z2V0VmFsdWVJRCgpICE9IENT
U1ZhbHVlQXV0bykKLSAgICAgICAgYm94Lm1fcmlnaHQgPSBzbGljZXMtPnJpZ2h0KCktPmNvbXB1
dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJveC5yaWdodCgpID0g
c2xpY2VzLT5yaWdodCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29udmVyc2lvbkRhdGEpOwog
CiAgICAgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC5tX2Jv
dHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7
CisgICAgICAgIGJveC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXRJbnRW
YWx1ZSgpLCBSZWxhdGl2ZSk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQZXJj
ZW50YWdlKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgp
LT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpLCBQZXJj
ZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmdl
dERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQp
OwogICAgIGVsc2UgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmdldFZhbHVlSUQoKSAhPSBDU1NWYWx1
ZUF1dG8pCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IHNsaWNlcy0+Ym90dG9tKCktPmNvbXB1dGVM
ZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJveC5ib3R0b20oKSA9IHNs
aWNlcy0+Ym90dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CiAK
ICAgICBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC5tX2xlZnQg
PSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsKKyAgICAg
ICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0SW50VmFsdWUoKSwgUmVs
YXRpdmUpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAg
ICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0RG91YmxlVmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CisgICAgICAgIGJv
eC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNl
cy0+bGVmdCgpLT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICBib3gubV9s
ZWZ0ID0gc2xpY2VzLT5sZWZ0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0
YSk7CisgICAgICAgIGJveC5sZWZ0KCkgPSBzbGljZXMtPmxlZnQoKS0+Y29tcHV0ZUxlbmd0aDxM
ZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIHJldHVybiBib3g7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5jcHAJKHJldmlzaW9uIDE4NDExNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsOTIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGVuZ3RoQm94LmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgTGVuZ3RoJiBMZW5ndGhCb3g6OmxvZ2ljYWxMZWZ0
KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAotewotICAgIHJldHVybiBpc0hvcml6b250
YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyBtX2xlZnQgOiBtX3RvcDsKLX0KLQotY29uc3Qg
TGVuZ3RoJiBMZW5ndGhCb3g6OmxvZ2ljYWxSaWdodChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkg
Y29uc3QKLXsKLSAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUod3JpdGluZ01vZGUp
ID8gbV9yaWdodCA6IG1fYm90dG9tOwotfQotCi1jb25zdCBMZW5ndGgmIExlbmd0aEJveDo6YmVm
b3JlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAotewotICAgIHN3aXRjaCAod3JpdGlu
Z01vZGUpIHsKLSAgICBjYXNlIFRvcFRvQm90dG9tV3JpdGluZ01vZGU6Ci0gICAgICAgIHJldHVy
biBtX3RvcDsKLSAgICBjYXNlIEJvdHRvbVRvVG9wV3JpdGluZ01vZGU6Ci0gICAgICAgIHJldHVy
biBtX2JvdHRvbTsKLSAgICBjYXNlIExlZnRUb1JpZ2h0V3JpdGluZ01vZGU6Ci0gICAgICAgIHJl
dHVybiBtX2xlZnQ7Ci0gICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlOgotICAgICAgICBy
ZXR1cm4gbV9yaWdodDsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIG1fdG9wOwotfQotCi1jb25zdCBMZW5ndGgmIExlbmd0aEJveDo6YWZ0ZXIoV3JpdGluZ01v
ZGUgd3JpdGluZ01vZGUpIGNvbnN0Ci17Ci0gICAgc3dpdGNoICh3cml0aW5nTW9kZSkgewotICAg
IGNhc2UgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZToKLSAgICAgICAgcmV0dXJuIG1fYm90dG9tOwot
ICAgIGNhc2UgQm90dG9tVG9Ub3BXcml0aW5nTW9kZToKLSAgICAgICAgcmV0dXJuIG1fdG9wOwot
ICAgIGNhc2UgTGVmdFRvUmlnaHRXcml0aW5nTW9kZToKLSAgICAgICAgcmV0dXJuIG1fcmlnaHQ7
Ci0gICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlOgotICAgICAgICByZXR1cm4gbV9sZWZ0
OwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbV9ib3R0b207
Ci19Ci0KLWNvbnN0IExlbmd0aCYgTGVuZ3RoQm94OjpzdGFydChXcml0aW5nTW9kZSB3cml0aW5n
TW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Ci17Ci0gICAgaWYgKGlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSkKLSAgICAgICAgcmV0dXJuIGlzTGVmdFRvUmln
aHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IG1fbGVmdCA6IG1fcmlnaHQ7Ci0gICAgcmV0dXJuIGlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IG1fdG9wIDogbV9ib3R0b207Ci19Ci0K
LWNvbnN0IExlbmd0aCYgTGVuZ3RoQm94OjplbmQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRl
eHREaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAotewotICAgIGlmIChpc0hvcml6b250YWxXcml0
aW5nTW9kZSh3cml0aW5nTW9kZSkpCi0gICAgICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKGRpcmVjdGlvbikgPyBtX3JpZ2h0IDogbV9sZWZ0OwotICAgIHJldHVybiBpc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBtX2JvdHRvbSA6IG1fdG9wOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3gu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guaAkocmV2
aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMTk5OSBM
YXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICAgIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICBDb3B5cmlnaHQg
KGMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBA
IC0zNCw1MyArMzQsNDMgQEAgc3RydWN0IExlbmd0aEJveCB7CiAgICAgfQogCiAgICAgZXhwbGlj
aXQgTGVuZ3RoQm94KExlbmd0aFR5cGUgdHlwZSkKLSAgICAgICAgOiBtX2xlZnQodHlwZSkKLSAg
ICAgICAgLCBtX3JpZ2h0KHR5cGUpCi0gICAgICAgICwgbV90b3AodHlwZSkKLSAgICAgICAgLCBt
X2JvdHRvbSh0eXBlKQorICAgICAgICA6IG1fc2lkZXMgeyB0eXBlLCB0eXBlLCB0eXBlLCB0eXBl
IH0KICAgICB7CiAgICAgfQogCiAgICAgZXhwbGljaXQgTGVuZ3RoQm94KGludCB2KQotICAgICAg
ICA6IG1fbGVmdChMZW5ndGgodiwgRml4ZWQpKQotICAgICAgICAsIG1fcmlnaHQoTGVuZ3RoKHYs
IEZpeGVkKSkKLSAgICAgICAgLCBtX3RvcChMZW5ndGgodiwgRml4ZWQpKQotICAgICAgICAsIG1f
Ym90dG9tKExlbmd0aCh2LCBGaXhlZCkpCisgICAgICAgIDogbV9zaWRlcyB7IExlbmd0aCh2LCBG
aXhlZCksIExlbmd0aCh2LCBGaXhlZCksIExlbmd0aCh2LCBGaXhlZCksIExlbmd0aCh2LCBGaXhl
ZCkgfQogICAgIHsKICAgICB9CiAKICAgICBMZW5ndGhCb3goTGVuZ3RoIHRvcCwgTGVuZ3RoIHJp
Z2h0LCBMZW5ndGggYm90dG9tLCBMZW5ndGggbGVmdCkKLSAgICAgICAgOiBtX2xlZnQoV1RGOjpt
b3ZlKGxlZnQpKQotICAgICAgICAsIG1fcmlnaHQoV1RGOjptb3ZlKHJpZ2h0KSkKLSAgICAgICAg
LCBtX3RvcChXVEY6Om1vdmUodG9wKSkKLSAgICAgICAgLCBtX2JvdHRvbShXVEY6Om1vdmUoYm90
dG9tKSkKKyAgICAgICAgOiBtX3NpZGVzIHsgV1RGOjptb3ZlKHRvcCksIFdURjo6bW92ZShyaWdo
dCksIFdURjo6bW92ZShib3R0b20pLCBXVEY6Om1vdmUobGVmdCkgfQogICAgIHsKICAgICB9CiAK
ICAgICBMZW5ndGhCb3goaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tLCBpbnQgbGVmdCkK
LSAgICAgICAgOiBtX2xlZnQoTGVuZ3RoKGxlZnQsIEZpeGVkKSkKLSAgICAgICAgLCBtX3JpZ2h0
KExlbmd0aChyaWdodCwgRml4ZWQpKQotICAgICAgICAsIG1fdG9wKExlbmd0aCh0b3AsIEZpeGVk
KSkKLSAgICAgICAgLCBtX2JvdHRvbShMZW5ndGgoYm90dG9tLCBGaXhlZCkpCisgICAgICAgIDog
bV9zaWRlcyB7IExlbmd0aCh0b3AsIEZpeGVkKSwgTGVuZ3RoKHJpZ2h0LCBGaXhlZCksIExlbmd0
aChib3R0b20sIEZpeGVkKSwgTGVuZ3RoKGxlZnQsIEZpeGVkKSB9CiAgICAgewogICAgIH0KIAot
ICAgIGNvbnN0IExlbmd0aCYgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdDsgfQotICAgIGNv
bnN0IExlbmd0aCYgcmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3JpZ2h0OyB9Ci0gICAgY29uc3Qg
TGVuZ3RoJiB0b3AoKSBjb25zdCB7IHJldHVybiBtX3RvcDsgfQotICAgIGNvbnN0IExlbmd0aCYg
Ym90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b207IH0KKyAgICBMZW5ndGgmIGxlZnQoKSB7
IHJldHVybiBtX3NpZGVzW0xlZnRTaWRlXTsgfQorICAgIExlbmd0aCYgcmlnaHQoKSB7IHJldHVy
biBtX3NpZGVzW1JpZ2h0U2lkZV07IH0KKyAgICBMZW5ndGgmIHRvcCgpIHsgcmV0dXJuIG1fc2lk
ZXNbVG9wU2lkZV07IH0KKyAgICBMZW5ndGgmIGJvdHRvbSgpIHsgcmV0dXJuIG1fc2lkZXNbQm90
dG9tU2lkZV07IH0KIAotICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbExlZnQoV3JpdGluZ01vZGUp
IGNvbnN0OwotICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbFJpZ2h0KFdyaXRpbmdNb2RlKSBjb25z
dDsKKyAgICBjb25zdCBMZW5ndGgmIGxlZnQoKSBjb25zdCB7IHJldHVybiBtX3NpZGVzW0xlZnRT
aWRlXTsgfQorICAgIGNvbnN0IExlbmd0aCYgcmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NpZGVz
W1JpZ2h0U2lkZV07IH0KKyAgICBjb25zdCBMZW5ndGgmIHRvcCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2lkZXNbVG9wU2lkZV07IH0KKyAgICBjb25zdCBMZW5ndGgmIGJvdHRvbSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2lkZXNbQm90dG9tU2lkZV07IH0KIAotICAgIGNvbnN0IExlbmd0aCYgYmVmb3JlKFdy
aXRpbmdNb2RlKSBjb25zdDsKLSAgICBjb25zdCBMZW5ndGgmIGFmdGVyKFdyaXRpbmdNb2RlKSBj
b25zdDsKLSAgICBjb25zdCBMZW5ndGgmIHN0YXJ0KFdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9u
KSBjb25zdDsKLSAgICBjb25zdCBMZW5ndGgmIGVuZChXcml0aW5nTW9kZSwgVGV4dERpcmVjdGlv
bikgY29uc3Q7CisgICAgY29uc3QgTGVuZ3RoJiBiZWZvcmUoV3JpdGluZ01vZGUgd3JpdGluZ01v
ZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBtX3NpZGVz
W21hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRp
cmVjdGlvbiksIEJlZm9yZVNpZGUpXTsgfQorICAgIGNvbnN0IExlbmd0aCYgYWZ0ZXIoV3JpdGlu
Z01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7
IHJldHVybiBtX3NpZGVzW21hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZShtYWtlVGV4dEZsb3co
d3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIEFmdGVyU2lkZSldOyB9CisgICAgY29uc3QgTGVuZ3Ro
JiBzdGFydChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24g
PSBMVFIpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXNbbWFwTG9naWNhbFRvUGh5c2ljYWxCb3hTaWRl
KG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgU3RhcnRTaWRlKV07IH0KKyAg
ICBjb25zdCBMZW5ndGgmIGVuZChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlv
biBkaXJlY3Rpb24gPSBMVFIpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXNbbWFwTG9naWNhbFRvUGh5
c2ljYWxCb3hTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgRW5kU2lk
ZSldOyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoQm94JiBvdGhlcikgY29u
c3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2xlZnQgPT0gb3RoZXIubV9sZWZ0ICYmIG1fcmln
aHQgPT0gb3RoZXIubV9yaWdodCAmJiBtX3RvcCA9PSBvdGhlci5tX3RvcCAmJiBtX2JvdHRvbSA9
PSBvdGhlci5tX2JvdHRvbTsKKyAgICAgICAgcmV0dXJuIGxlZnQoKSA9PSBvdGhlci5sZWZ0KCkg
JiYgcmlnaHQoKSA9PSBvdGhlci5yaWdodCgpICYmIHRvcCgpID09IG90aGVyLnRvcCgpICYmIGJv
dHRvbSgpID09IG90aGVyLmJvdHRvbSgpOwogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBMZW5ndGhCb3gmIG90aGVyKSBjb25zdApAQCAtOTAsMTMgKzgwLDExIEBAIHN0cnVjdCBM
ZW5ndGhCb3ggewogCiAgICAgYm9vbCBub25aZXJvKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiAhKG1fbGVmdC5pc1plcm8oKSAmJiBtX3JpZ2h0LmlzWmVybygpICYmIG1fdG9wLmlzWmVy
bygpICYmIG1fYm90dG9tLmlzWmVybygpKTsKKyAgICAgICAgcmV0dXJuICEobGVmdCgpLmlzWmVy
bygpICYmIHJpZ2h0KCkuaXNaZXJvKCkgJiYgdG9wKCkuaXNaZXJvKCkgJiYgYm90dG9tKCkuaXNa
ZXJvKCkpOwogICAgIH0KIAotICAgIExlbmd0aCBtX2xlZnQ7Ci0gICAgTGVuZ3RoIG1fcmlnaHQ7
Ci0gICAgTGVuZ3RoIG1fdG9wOwotICAgIExlbmd0aCBtX2JvdHRvbTsKK3ByaXZhdGU6CisgICAg
TGVuZ3RoIG1fc2lkZXNbNF07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgJKHJldmlzaW9uIDE4NDExNikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIFRleHRE
aXJlY3Rpb24geyBSVEwsIExUUiB9OworZW51bSBUZXh0RGlyZWN0aW9uIHsgTFRSLCBSVEwgfTsK
IAogZW51bSBUZXh0UmVuZGVyaW5nTW9kZSB7IEF1dG9UZXh0UmVuZGVyaW5nLCBPcHRpbWl6ZVNw
ZWVkLCBPcHRpbWl6ZUxlZ2liaWxpdHksIEdlb21ldHJpY1ByZWNpc2lvbiB9OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oCShyZXZpc2lvbiAxODQx
MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDEyLCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCkBAIC0zNCwyNSArMzUsOTYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBX
cml0aW5nTW9kZSB7Ci0gICAgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwgUmlnaHRUb0xlZnRXcml0
aW5nTW9kZSwgTGVmdFRvUmlnaHRXcml0aW5nTW9kZSwgQm90dG9tVG9Ub3BXcml0aW5nTW9kZQor
ICAgIFRvcFRvQm90dG9tV3JpdGluZ01vZGUgPSAwLCAvLyBob3Jpem9udGFsLXRiCisgICAgQm90
dG9tVG9Ub3BXcml0aW5nTW9kZSA9IDEsIC8vIGhvcml6b250YWwtYnQKKyAgICBMZWZ0VG9SaWdo
dFdyaXRpbmdNb2RlID0gMiwgLy8gdmVydGljYWwtbHIKKyAgICBSaWdodFRvTGVmdFdyaXRpbmdN
b2RlID0gMywgLy8gdmVydGljYWwtcmwKIH07CiAKKyNkZWZpbmUgTUFLRV9URVhUX0ZMT1cod3Jp
dGluZ01vZGUsIGRpcmVjdGlvbikgICgod3JpdGluZ01vZGUpIDw8IDEgfCAoZGlyZWN0aW9uKSkK
KworLy8gRGVmaW5lIHRoZSB0ZXh0IGZsb3cgaW4gdGVybXMgb2YgdGhlIHdyaXRpbmcgbW9kZSBh
bmQgdGhlIHRleHQgZGlyZWN0aW9uLiBUaGUgZmlyc3QKKy8vIHBhcnQgaXMgdGhlIGxpbmUgZ3Jv
d2luZyBkaXJlY3Rpb24gYW5kIHRoZSBzZWNvbmQgcGFydCBpcyB0aGUgYmxvY2sgZ3Jvd2luZyBk
aXJlY3Rpb24uCitlbnVtIFRleHRGbG93IHsKKyAgICBUZXh0Rmxvd0Vhc3RTb3V0aCA9IE1BS0Vf
VEVYVF9GTE9XKFRvcFRvQm90dG9tV3JpdGluZ01vZGUsIExUUiksCisgICAgVGV4dEZsb3dXZXN0
U291dGggPSBNQUtFX1RFWFRfRkxPVyhUb3BUb0JvdHRvbVdyaXRpbmdNb2RlLCBSVEwpLAorICAg
IFRleHRGbG93RWFzdE5vcnRoID0gTUFLRV9URVhUX0ZMT1coQm90dG9tVG9Ub3BXcml0aW5nTW9k
ZSwgTFRSKSwKKyAgICBUZXh0Rmxvd1dlc3ROb3J0aCA9IE1BS0VfVEVYVF9GTE9XKEJvdHRvbVRv
VG9wV3JpdGluZ01vZGUsIFJUTCksCisgICAgVGV4dEZsb3dTb3V0aEVhc3QgPSBNQUtFX1RFWFRf
RkxPVyhMZWZ0VG9SaWdodFdyaXRpbmdNb2RlLCBMVFIpLAorICAgIFRleHRGbG93U291dGhXZXN0
ID0gTUFLRV9URVhUX0ZMT1coTGVmdFRvUmlnaHRXcml0aW5nTW9kZSwgUlRMKSwKKyAgICBUZXh0
Rmxvd05vcnRoRWFzdCA9IE1BS0VfVEVYVF9GTE9XKFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUsIExU
UiksCisgICAgVGV4dEZsb3dOb3J0aFdlc3QgPSBNQUtFX1RFWFRfRkxPVyhSaWdodFRvTGVmdFdy
aXRpbmdNb2RlLCBSVEwpCit9OworCitpbmxpbmUgVGV4dEZsb3cgbWFrZVRleHRGbG93KFdyaXRp
bmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VGV4dEZsb3c+KE1BS0VfVEVYVF9GTE9XKHdyaXRpbmdNb2RlLCBkaXJl
Y3Rpb24pKTsKK30KKworY29uc3QgdW5zaWduZWQgVGV4dEZsb3dSZXZlcnNlZE1hc2sgPSAxOwor
Y29uc3QgdW5zaWduZWQgVGV4dEZsb3dGbGlwcGVkTWFzayA9IDI7Citjb25zdCB1bnNpZ25lZCBU
ZXh0Rmxvd1ZlcnRpY2FsTWFzayA9IDQ7CisKK2lubGluZSBib29sIGlzVGV4dEZsb3dSZXZlcnNl
ZChUZXh0RmxvdyB0ZXh0ZmxvdykKK3sKKyAgICByZXR1cm4gdGV4dGZsb3cgJiBUZXh0Rmxvd1Jl
dmVyc2VkTWFzazsKK30KKworaW5saW5lIGJvb2wgaXNUZXh0Rmxvd0ZsaXBwZWQoVGV4dEZsb3cg
dGV4dGZsb3cpCit7CisgICAgcmV0dXJuIHRleHRmbG93ICYgVGV4dEZsb3dGbGlwcGVkTWFzazsK
K30KKworaW5saW5lIGJvb2wgaXNUZXh0Rmxvd1ZlcnRpY2FsKFRleHRGbG93IHRleHRmbG93KQor
eworICAgIHJldHVybiB0ZXh0ZmxvdyAmIFRleHRGbG93VmVydGljYWxNYXNrOworfQorCisvLyBM
aW5lcyBoYXZlIHZlcnRpY2FsIG9yaWVudGF0aW9uOyBtb2RlcyB2ZXJ0aWNhbC1sciBvciB2ZXJ0
aWNhbC1ybC4KK2lubGluZSBib29sIGlzVmVydGljYWxXcml0aW5nTW9kZShXcml0aW5nTW9kZSB3
cml0aW5nTW9kZSkKK3sKKyAgICByZXR1cm4gaXNUZXh0Rmxvd1ZlcnRpY2FsKG1ha2VUZXh0Rmxv
dyh3cml0aW5nTW9kZSwgTFRSKSk7Cit9CisKKy8vIEJsb2NrIHByb2dyZXNzaW9uIGluY3JlYXNl
cyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIHRvIG5vcm1hbDsgbW9kZXMgdmVydGljYWwtcmwg
b3IgaG9yaXpvbnRhbC1idC4KK2lubGluZSBib29sIGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2Rl
KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQoreworICAgIHJldHVybiBpc1RleHRGbG93RmxpcHBl
ZChtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIExUUikpOworfQorCiAvLyBMaW5lcyBoYXZlIGhv
cml6b250YWwgb3JpZW50YXRpb247IG1vZGVzIGhvcml6b250YWwtdGIgb3IgaG9yaXpvbnRhbC1i
dC4KIGlubGluZSBib29sIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRp
bmdNb2RlKQogewotICAgIHJldHVybiB3cml0aW5nTW9kZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdN
b2RlIHx8IHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGU7CisgICAgcmV0dXJu
ICFpc1ZlcnRpY2FsV3JpdGluZ01vZGUod3JpdGluZ01vZGUpOwogfQogCiAvLyBCb3R0b20gb2Yg
dGhlIGxpbmUgb2NjdXJzIGVhcmxpZXIgaW4gdGhlIGJsb2NrOyBtb2RlcyB2ZXJ0aWNhbC1sciBv
ciBob3Jpem9udGFsLWJ0LgogaW5saW5lIGJvb2wgaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZShX
cml0aW5nTW9kZSB3cml0aW5nTW9kZSkKIHsKLSAgICByZXR1cm4gd3JpdGluZ01vZGUgPT0gTGVm
dFRvUmlnaHRXcml0aW5nTW9kZSB8fCB3cml0aW5nTW9kZSA9PSBCb3R0b21Ub1RvcFdyaXRpbmdN
b2RlOworICAgIHJldHVybiBpc1ZlcnRpY2FsV3JpdGluZ01vZGUod3JpdGluZ01vZGUpICE9IGlz
RmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKTsKIH0KIAotLy8gQmxvY2sgcHJv
Z3Jlc3Npb24gaW5jcmVhc2VzIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gbm9ybWFsOyBt
b2RlcyB2ZXJ0aWNhbC1ybCBvciBob3Jpem9udGFsLWJ0LgotaW5saW5lIGJvb2wgaXNGbGlwcGVk
QmxvY2tzV3JpdGluZ01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCitlbnVtIExvZ2ljYWxC
b3hTaWRlIHsgQmVmb3JlU2lkZSwgRW5kU2lkZSwgQWZ0ZXJTaWRlLCBTdGFydFNpZGUgfTsKK2Vu
dW0gUGh5c2ljYWxCb3hTaWRlIHsgVG9wU2lkZSwgUmlnaHRTaWRlLCBCb3R0b21TaWRlLCBMZWZ0
U2lkZSB9OworCitpbmxpbmUgUGh5c2ljYWxCb3hTaWRlIG1hcExvZ2ljYWxUb1BoeXNpY2FsQm94
U2lkZShUZXh0RmxvdyB0ZXh0ZmxvdywgTG9naWNhbEJveFNpZGUgbG9naWNhbFNpZGUpCiB7Ci0g
ICAgcmV0dXJuIHdyaXRpbmdNb2RlID09IFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUgfHwgd3JpdGlu
Z01vZGUgPT0gQm90dG9tVG9Ub3BXcml0aW5nTW9kZTsKKyAgICBpbnQgcGh5c2ljYWxTaWRlID0g
bG9naWNhbFNpZGU7CisgICAgYm9vbCBpc1N0YXJ0RW5kU2lkZSA9IHBoeXNpY2FsU2lkZSAlIDIg
PT0gMTsKKworICAgIC8vIFN3YXAgdGhlIGxlZnQvcmlnaHQgc2lkZSB3aXRoIHRoZSB0b3AvYm90
dG9tIHNpZGUgaWYgdGV4dEZsb3cgaXMgdmVydGljYWwKKyAgICBpZiAoaXNUZXh0Rmxvd1ZlcnRp
Y2FsKHRleHRmbG93KSkgeworICAgICAgICBpZiAoaXNTdGFydEVuZFNpZGUpCisgICAgICAgICAg
ICBwaHlzaWNhbFNpZGUgPSAocGh5c2ljYWxTaWRlICsgMSkgJSA0OworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBwaHlzaWNhbFNpZGUgPSAocGh5c2ljYWxTaWRlICsgMykgJSA0OworICAgIH0K
KworICAgIC8vIFN3YXAgdGhlIGxlZnQgYW5kIHJpZ2h0IHNpZGVzIGlmIHRleHRGbG93IGlzIHJl
dmVyc2VkIGFuZCB0aGUgdG9wIGFuZCBib3R0b20gc2lkZXMgaWYgdGV4dEZsb3cgaXMgZmxpcHBl
ZAorICAgIGlmICgoaXNTdGFydEVuZFNpZGUgJiYgaXNUZXh0Rmxvd1JldmVyc2VkKHRleHRmbG93
KSkgfHwgKCFpc1N0YXJ0RW5kU2lkZSAmJiBpc1RleHRGbG93RmxpcHBlZCh0ZXh0ZmxvdykpKQor
ICAgICAgICBwaHlzaWNhbFNpZGUgPSAocGh5c2ljYWxTaWRlICsgMikgJSA0OworCisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFBoeXNpY2FsQm94U2lkZT4ocGh5c2ljYWxTaWRlKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAxODQxMTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjEs
MTAgKzkyMSwxMCBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRNYXNrSW1hZ2UoY29uc3QgVmVjCiB2
b2lkIFJlbmRlclN0eWxlOjpzZXRDbGlwKExlbmd0aCB0b3AsIExlbmd0aCByaWdodCwgTGVuZ3Ro
IGJvdHRvbSwgTGVuZ3RoIGxlZnQpCiB7CiAgICAgU3R5bGVWaXN1YWxEYXRhKiBkYXRhID0gdmlz
dWFsLmFjY2VzcygpOwotICAgIGRhdGEtPmNsaXAubV90b3AgPSB0b3A7Ci0gICAgZGF0YS0+Y2xp
cC5tX3JpZ2h0ID0gcmlnaHQ7Ci0gICAgZGF0YS0+Y2xpcC5tX2JvdHRvbSA9IGJvdHRvbTsKLSAg
ICBkYXRhLT5jbGlwLm1fbGVmdCA9IGxlZnQ7CisgICAgZGF0YS0+Y2xpcC50b3AoKSA9IHRvcDsK
KyAgICBkYXRhLT5jbGlwLnJpZ2h0KCkgPSByaWdodDsKKyAgICBkYXRhLT5jbGlwLmJvdHRvbSgp
ID0gYm90dG9tOworICAgIGRhdGEtPmNsaXAubGVmdCgpID0gbGVmdDsKIH0KIAogdm9pZCBSZW5k
ZXJTdHlsZTo6YWRkQ3Vyc29yKFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gaW1hZ2UsIGNvbnN0IElu
dFBvaW50JiBob3RTcG90KQpAQCAtMTMwOSwxMCArMTMwOSwxMCBAQCBjb25zdCBWZWN0b3I8U3R5
bGVEYXNoYm9hcmRSZWdpb24+JiBSZW5kCiAgICAgaWYgKCFub25lTGlzdEluaXRpYWxpemVkKSB7
CiAgICAgICAgIFN0eWxlRGFzaGJvYXJkUmVnaW9uIHJlZ2lvbjsKICAgICAgICAgcmVnaW9uLmxh
YmVsID0gIiI7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubV90b3AgID0gTGVuZ3RoKCk7Ci0gICAg
ICAgIHJlZ2lvbi5vZmZzZXQubV9yaWdodCA9IExlbmd0aCgpOwotICAgICAgICByZWdpb24ub2Zm
c2V0Lm1fYm90dG9tID0gTGVuZ3RoKCk7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubV9sZWZ0ID0g
TGVuZ3RoKCk7CisgICAgICAgIHJlZ2lvbi5vZmZzZXQudG9wKCkgID0gTGVuZ3RoKCk7CisgICAg
ICAgIHJlZ2lvbi5vZmZzZXQucmlnaHQoKSA9IExlbmd0aCgpOworICAgICAgICByZWdpb24ub2Zm
c2V0LmJvdHRvbSgpID0gTGVuZ3RoKCk7CisgICAgICAgIHJlZ2lvbi5vZmZzZXQubGVmdCgpID0g
TGVuZ3RoKCk7CiAgICAgICAgIHJlZ2lvbi50eXBlID0gU3R5bGVEYXNoYm9hcmRSZWdpb246Ok5v
bmU7CiAgICAgICAgIG5vbmVMaXN0LmFwcGVuZChyZWdpb24pOwogICAgICAgICBub25lTGlzdElu
aXRpYWxpemVkID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAxODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTk1LDggKzU5NSw4
IEBAIHB1YmxpYzoKICAgICBjb25zdCBMZW5ndGgmIGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1
cnJvdW5kLT5vZmZzZXQuYm90dG9tKCk7IH0KIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgcG9zaXRp
b25lZCBvYmplY3QgZWRnZXMgdGhhdCB0YWtlIGludG8gYWNjb3VudCB3cml0aW5nIG1vZGUuCi0g
ICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5v
ZmZzZXQubG9naWNhbExlZnQod3JpdGluZ01vZGUoKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIGxv
Z2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQubG9naWNhbFJpZ2h0
KHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTGVmdCgpIGNvbnN0
IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuc3RhcnQod3JpdGluZ01vZGUoKSk7IH0KKyAgICBj
b25zdCBMZW5ndGgmIGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZz
ZXQuZW5kKHdyaXRpbmdNb2RlKCkpOyB9CiAgICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsVG9wKCkg
Y29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5iZWZvcmUod3JpdGluZ01vZGUoKSk7IH0K
ICAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxCb3R0b20oKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+b2Zmc2V0LmFmdGVyKHdyaXRpbmdNb2RlKCkpOyB9CiAKQEAgLTEyMDAsMTAgKzEyMDAsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0UG9zaXRpb24oRVBvc2l0aW9uIHYpIHsgbm9uaW5oZXJp
dGVkX2ZsYWdzLnNldFBvc2l0aW9uKHYpOyB9CiAgICAgdm9pZCBzZXRGbG9hdGluZyhFRmxvYXQg
dikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0RmxvYXRpbmcodik7IH0KIAotICAgIHZvaWQgc2V0
TGVmdChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQubV9sZWZ0LCBXVEY6Om1v
dmUodikpOyB9Ci0gICAgdm9pZCBzZXRSaWdodChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5k
LCBvZmZzZXQubV9yaWdodCwgV1RGOjptb3ZlKHYpKTsgfQotICAgIHZvaWQgc2V0VG9wKExlbmd0
aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5tX3RvcCwgV1RGOjptb3ZlKHYpKTsgfQot
ICAgIHZvaWQgc2V0Qm90dG9tKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5t
X2JvdHRvbSwgV1RGOjptb3ZlKHYpKTsgfQorICAgIHZvaWQgc2V0TGVmdChMZW5ndGggdikgeyBT
RVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQubGVmdCgpLCBXVEY6Om1vdmUodikpOyB9CisgICAgdm9p
ZCBzZXRSaWdodChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQucmlnaHQoKSwg
V1RGOjptb3ZlKHYpKTsgfQorICAgIHZvaWQgc2V0VG9wKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vy
cm91bmQsIG9mZnNldC50b3AoKSwgV1RGOjptb3ZlKHYpKTsgfQorICAgIHZvaWQgc2V0Qm90dG9t
KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5ib3R0b20oKSwgV1RGOjptb3Zl
KHYpKTsgfQogCiAgICAgdm9pZCBzZXRXaWR0aChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBt
X3dpZHRoLCBXVEY6Om1vdmUodikpOyB9CiAgICAgdm9pZCBzZXRIZWlnaHQoTGVuZ3RoIHYpIHsg
U0VUX1ZBUihtX2JveCwgbV9oZWlnaHQsIFdURjo6bW92ZSh2KSk7IH0KQEAgLTEyMzksMTAgKzEy
MzksMTAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgU3R5bGVEYXNoYm9hcmRSZWdpb24gcmVn
aW9uOwogICAgICAgICByZWdpb24ubGFiZWwgPSBsYWJlbDsKLSAgICAgICAgcmVnaW9uLm9mZnNl
dC5tX3RvcCA9IFdURjo6bW92ZSh0KTsKLSAgICAgICAgcmVnaW9uLm9mZnNldC5tX3JpZ2h0ID0g
V1RGOjptb3ZlKHIpOwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fYm90dG9tID0gV1RGOjptb3Zl
KGIpOwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fbGVmdCA9IFdURjo6bW92ZShsKTsKKyAgICAg
ICAgcmVnaW9uLm9mZnNldC50b3AoKSA9IFdURjo6bW92ZSh0KTsKKyAgICAgICAgcmVnaW9uLm9m
ZnNldC5yaWdodCgpID0gV1RGOjptb3ZlKHIpOworICAgICAgICByZWdpb24ub2Zmc2V0LmJvdHRv
bSgpID0gV1RGOjptb3ZlKGIpOworICAgICAgICByZWdpb24ub2Zmc2V0LmxlZnQoKSA9IFdURjo6
bW92ZShsKTsKICAgICAgICAgcmVnaW9uLnR5cGUgPSB0eXBlOwogICAgICAgICBpZiAoIWFwcGVu
ZCkKICAgICAgICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2Rhc2hib2Fy
ZFJlZ2lvbnMuY2xlYXIoKTsKQEAgLTEzMjMsMTAgKzEzMjMsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0VmVydGljYWxBbGlnbkxlbmd0aChMZW5ndGggbGVuZ3RoKSB7IHNldFZlcnRpY2FsQWxp
Z24oTEVOR1RIKTsgU0VUX1ZBUihtX2JveCwgbV92ZXJ0aWNhbEFsaWduLCBXVEY6Om1vdmUobGVu
Z3RoKSk7IH0KIAogICAgIHZvaWQgc2V0SGFzQ2xpcChib29sIGIgPSB0cnVlKSB7IFNFVF9WQVIo
dmlzdWFsLCBoYXNDbGlwLCBiKTsgfQotICAgIHZvaWQgc2V0Q2xpcExlZnQoTGVuZ3RoIGxlbmd0
aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5tX2xlZnQsIFdURjo6bW92ZShsZW5ndGgpKTsgfQot
ICAgIHZvaWQgc2V0Q2xpcFJpZ2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNs
aXAubV9yaWdodCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRDbGlwVG9wKExl
bmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAubV90b3AsIFdURjo6bW92ZShsZW5n
dGgpKTsgfQotICAgIHZvaWQgc2V0Q2xpcEJvdHRvbShMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIo
dmlzdWFsLCBjbGlwLm1fYm90dG9tLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNl
dENsaXBMZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAubGVmdCgpLCBX
VEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldENsaXBSaWdodChMZW5ndGggbGVuZ3Ro
KSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLnJpZ2h0KCksIFdURjo6bW92ZShsZW5ndGgpKTsgfQor
ICAgIHZvaWQgc2V0Q2xpcFRvcChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlw
LnRvcCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldENsaXBCb3R0b20oTGVu
Z3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5ib3R0b20oKSwgV1RGOjptb3ZlKGxl
bmd0aCkpOyB9CiAgICAgdm9pZCBzZXRDbGlwKExlbmd0aCB0b3AsIExlbmd0aCByaWdodCwgTGVu
Z3RoIGJvdHRvbSwgTGVuZ3RoIGxlZnQpOwogICAgIHZvaWQgc2V0Q2xpcChMZW5ndGhCb3ggYm94
KSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLCBXVEY6Om1vdmUoYm94KSk7IH0KIApAQCAtMTQzNCwx
OSArMTQzNCwxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMaXN0U3R5bGVQb3NpdGlvbihFTGlz
dFN0eWxlUG9zaXRpb24gdikgeyBpbmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfcG9zaXRpb24g
PSB2OyB9CiAKICAgICB2b2lkIHJlc2V0TWFyZ2luKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJn
aW4sIExlbmd0aEJveChGaXhlZCkpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5Ub3AoTGVuZ3RoIGxl
bmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ubV90b3AsIFdURjo6bW92ZShsZW5ndGgp
KTsgfQotICAgIHZvaWQgc2V0TWFyZ2luQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihz
dXJyb3VuZCwgbWFyZ2luLm1fYm90dG9tLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lk
IHNldE1hcmdpbkxlZnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4u
bV9sZWZ0LCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldE1hcmdpblJpZ2h0KExl
bmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLm1fcmlnaHQsIFdURjo6bW92
ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFyZ2luVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VU
X1ZBUihzdXJyb3VuZCwgbWFyZ2luLnRvcCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2
b2lkIHNldE1hcmdpbkJvdHRvbShMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1h
cmdpbi5ib3R0b20oKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5M
ZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLmxlZnQoKSwgV1RG
Ojptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5SaWdodChMZW5ndGggbGVuZ3Ro
KSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5yaWdodCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7
IH0KICAgICB2b2lkIHNldE1hcmdpblN0YXJ0KExlbmd0aCk7CiAgICAgdm9pZCBzZXRNYXJnaW5F
bmQoTGVuZ3RoKTsKIAogICAgIHZvaWQgcmVzZXRQYWRkaW5nKCkgeyBTRVRfVkFSKHN1cnJvdW5k
LCBwYWRkaW5nLCBMZW5ndGhCb3goQXV0bykpOyB9CiAgICAgdm9pZCBzZXRQYWRkaW5nQm94KExl
bmd0aEJveCBib3gpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZywgV1RGOjptb3ZlKGJveCkp
OyB9Ci0gICAgdm9pZCBzZXRQYWRkaW5nVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJy
b3VuZCwgcGFkZGluZy5tX3RvcCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRQ
YWRkaW5nQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5t
X2JvdHRvbSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRQYWRkaW5nTGVmdChM
ZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubV9sZWZ0LCBXVEY6Om1v
dmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldFBhZGRpbmdSaWdodChMZW5ndGggbGVuZ3RoKSB7
IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubV9yaWdodCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9
CisgICAgdm9pZCBzZXRQYWRkaW5nVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3Vu
ZCwgcGFkZGluZy50b3AoKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQYWRk
aW5nQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5ib3R0
b20oKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQYWRkaW5nTGVmdChMZW5n
dGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubGVmdCgpLCBXVEY6Om1vdmUo
bGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdSaWdodChMZW5ndGggbGVuZ3RoKSB7IFNF
VF9WQVIoc3Vycm91bmQsIHBhZGRpbmcucmlnaHQoKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CiAK
ICAgICB2b2lkIHNldEN1cnNvcihFQ3Vyc29yIGMpIHsgaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jf
c3R5bGUgPSBjOyB9CiAgICAgdm9pZCBhZGRDdXJzb3IoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiwg
Y29uc3QgSW50UG9pbnQmIGhvdFNwb3QgPSBJbnRQb2ludCgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252914</attachid>
            <date>2015-05-11 17:38:31 -0700</date>
            <delta_ts>2015-05-11 20:14:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143399-20150511173710.patch</filename>
            <type>text/plain</type>
            <size>38862</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDEzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDE1LTA1LTExICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29kZSBjbGVh
biB1cCBmb3IgZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtaXggb2YgV3JpdGluZ01v
ZGUgYW5kIFRleHREaXJlY3Rpb24gLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQzMzk5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBlaWdodCBUZXh0Rmxvd3MuIEEgVGV4dEZs
b3cgY29uc2lzdHMgb2YgdHdvIGRpcmVjdGlvbnMuIFRoZQorICAgICAgICBmaXJzdCBvbmUgY29u
dHJvbHMgdGhlIGxpbmUgZ3Jvd2luZyBkaXJlY3Rpb24gYW5kIHRoZSBzZWNvbmQgb25lIGNvbnRy
b2xzIHRoZQorICAgICAgICBibG9jayBncm93aW5nIGRpcmVjdGlvbi4KKyAgICAgICAgCisgICAg
ICAgIFdlIG5lZWQgdG8gZXh0cmFjdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGVhc2lseSBm
cm9tIHRoZSBUZXh0RmxvdworCisgICAgICAgIC0tIGlzVGV4dEZsb3dSZXZlcnNlZCgpIC8vIFJU
TAorICAgICAgICAtLSBpc1RleHRGbG93RmxpcHBlZCgpICAvLyB0aGUgb3Bwb3NpdGUgZGlyZWN0
aW9uIHRvIG5vcm1hbAorICAgICAgICAtLSBpc1RleHRGbG93VmVydGljYWwoKSAvLyBUaGUgbGlu
ZSBncm93cyB2ZXJ0aWNhbGx5CisKKyAgICAgICAgTWl4aW5nIFdyaXRpbmdNb2RlIGFuZCBUZXh0
RGlyZWN0aW9uIGludG8gVGV4dEZsb3cgYW5kIGNob29zaW5nIHRoZWlyIHZhbHVlcworICAgICAg
ICBjYXJlZnVsbHkgdG8gZWFzZSBpbXBsZW1lbnRpbmcgdGhlIGFib3ZlIGZ1bmN0aW9ucyBjYW4g
bWFrZSB0aGluZ3MgY2xlYXJlci4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhCb3guY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5m
aWx0ZXJzOgorICAgICAgICBSZW1vdmUgTGVuZ3RoQm94LmNwcCBzaW5jZSBhbGwgaXRzIGZ1bmN0
aW9ucyBiZWNvbWUgc2luZ2xlIGxpbmUgZnVuY3Rpb25zCisgICAgICAgIGFuZCBjb3VsZCBiZSBt
b3ZlZCB0byB0aGUgaGVhZGVyIGZpbGUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL0xl
bmd0aEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpMZW5ndGhCb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpsZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0
aEJveDo6cmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94Ojp0b3ApOgorICAgICAg
ICAoV2ViQ29yZTo6TGVuZ3RoQm94Ojpib3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3Ro
Qm94OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6bm9uWmVybyk6
IFVzZSBhbiBhcnJheSBvZiBMZW5ndGhzIGZvciB0aGUgZm91ciBzaWRlcy4KKyAgICAgICAgVXNl
IHRoZSBlbnVtIFBoeXNpY2FsQm94U2lkZSB0byBhY2Nlc3MgdGhpcyBhcnJheS4KKworICAgICAg
ICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpiZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3Ro
Qm94OjphZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6OnN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6ZW5kKToKKyAgICAgICAgVXNlIHRoZSBtYXBMb2dpY2Fs
VG9QaHlzaWNhbEJveFNpZGUoKSBnZXQgdGhlIHBoeXNpY2FsIHNpZGUgb2YgdGhlIGJveCBiYXNl
ZAorICAgICAgICBvbiB0aGUgZGlyZWN0aW9uIGFuZCB0aGUgd3JpdGluZyBtb2RlLiAKKyAgICAg
ICAgCisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJl
c29sdmVUb1BoeXNpY2FsUHJvcGVydHkpOiBJbnN0ZWFkIG9mIGhhbmRsaW5nIHRoZSBlaWdodCBw
b3NzaWJsZQorICAgICAgICBjYXNlcyBvZiB0aGUgdGV4dCBmbG93cyBvbmUgYnkgb25lLCB3ZSBj
YW4gYW5hbHl6ZSB0aGUgdGV4dCBmbG93IGFuZCBzd2FwIHRoZQorICAgICAgICBzaWRlIHByb3Bl
cnR5IGluZGV4IHRvIGdldCB0aGUgcHJvcGVyIHZhbHVlLgorICAgICAgICAKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oOiBVc3VhbGx5IHRoZSBkZWZhdWx0IHZhbHVlIGlzIGRl
ZmluZWQgZmlyc3QuCisgICAgICAgIEFuZCBpZiB0aGUgdmFsdWUgaXMgaW50ZWdlciBvciBlbnVt
LCBpdCBzaG91bGQgYmUgZXF1YWwgdG8gemVyby4gU2luY2UgTFRSCisgICAgICAgIGlzIHRoZSBk
ZWZhdWx0IGZvciB0aGUgdGV4dCBkaXJlY3Rpb24sIGl0IHNob3VsZCBiZSBkZWZpbmVkIGJlZm9y
ZSBSVEwuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL3RleHQvV3JpdGluZ01vZGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6Om1ha2VUZXh0Rmxvdyk6ICBEZWZpbmluZyBhIGZ1bmN0aW9uIHRv
IG1ha2UgYSBUZXh0RmxvdyBvdXQgZnJvbQorICAgICAgICBXcml0aW5nTW9kZSBhbmQgVGV4dERp
cmVjdGlvbi4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjppc1RleHRGbG93UmV2ZXJzZWQp
OiBSZXR1cm5zIHRydWUgaWYgdGhlIHRleHQgZGlyZWN0aW9uIGlzIFJUTC4KKyAgICAgICAgCisg
ICAgICAgIChXZWJDb3JlOjppc1RleHRGbG93RmxpcHBlZCk6IFJldHVybnMgdHJ1ZSBpZiBibG9j
ayBncm93aW5nIGRpcmVjdGlvbgorICAgICAgICBpcyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9u
IHRvIG5vcm1hbC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjppc1RleHRGbG93VmVydGlj
YWwpOgorICAgICAgICAoV2ViQ29yZTo6aXNWZXJ0aWNhbFdyaXRpbmdNb2RlKTogUmV0dXJucyB0
cnVlIGlmIFRoZSBsaW5lIGdyb3dzIHZlcnRpY2FsbHkuCisKKyAgICAgICAgKFdlYkNvcmU6Omlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKTogCisgICAgICAgIChXZWJDb3JlOjppc0ZsaXBwZWRMaW5l
c1dyaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdN
b2RlKTogVXNlIHRoZSB0ZXh0IGZsb3cgZnVuY3Rpb25zIGluc3RlYWQuCisgICAgICAgIAorICAg
ICAgICAoV2ViQ29yZTo6bWFwTG9naWNhbFRvUGh5c2ljYWxCb3hTaWRlKTogSXQgbWFwcyBhIGxv
Z2ljYWwgc2lkZSBvZiBhIGJveAorICAgICAgICBnaXZlbiB0aGUgY3VycmVudCB0ZXh0IGRpcmVj
dGlvbiBhbmQgdGhlIHdyaXRpbmcgbW9kZS4KKworICAgICAgICAqIGNzcy9DU1NUb1N0eWxlTWFw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdl
U2xpY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1h
Z2VRdWFkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldENsaXApOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6Om5vbmVEYXNoYm9hcmRSZWdpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaDogVXNlIHRoZSBMZW5ndGhCb3ggc2lkZXMnIGFjY2VzcyBtZXRo
b2RzIGluc3RlYWQKKyAgICAgICAgb2YgZGlyZWN0bHkgdXNpbmcgdGhlIHNpZGVzJyBhcnJheS4K
KwogMjAxNS0wNS0xMSAgSm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgQVg6IFtBVEtdIEFsd2F5cyBpbmNsdWRlIHJvd3MgaW4gdGhlIHRyZWUgb2YgYWNjZXNz
aWJsZSB0YWJsZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxODQxMTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAzOCw3
ICsyMDM4LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL0tpbGxSaW5nTm9u
ZS5jcHAKICAgICBwbGF0Zm9ybS9MYW5ndWFnZS5jcHAKICAgICBwbGF0Zm9ybS9MZW5ndGguY3Bw
Ci0gICAgcGxhdGZvcm0vTGVuZ3RoQm94LmNwcAogICAgIHBsYXRmb3JtL0xpbmtIYXNoLmNwcAog
ICAgIHBsYXRmb3JtL0xvZ2dpbmcuY3BwCiAgICAgcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvagkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODAwNiw3ICs4MDA2LDYgQEAKICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXFVSTC5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMYW5ndWFnZS5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMZW5ndGguY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cTGVuZ3RoQm94LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXExpbmtIYXNoLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXExvY2FsaXplZFN0cmluZ3MuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cTG9nZ2luZy5jcHAiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCShyZXZp
c2lvbiAxODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTExMTMsOSArMTExMyw2IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMZW5ndGguY3BwIj4KICAgICAgIDxGaWx0
ZXI+cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXExlbmd0aEJveC5jcHAiPgotICAgICAgPEZpbHRlcj5wbGF0Zm9y
bTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cTGlua0hhc2guY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4NDExNikKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
NjA1LDcgKzYwNSw2IEBACiAJCTE0NDc2QUE4MTVEQzRCQjEwMDMwNURCMiAvKiBXcml0aW5nTW9k
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0NzZB
QTcxNURDNEJCMTAwMzA1REIyIC8qIFdyaXRpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ0OUUyNEMxMDdENEE4NDAwQjU3OTNGIC8q
IEpTQ2FsbGJhY2tEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDQ5RTI0QTEwN0Q0QTg0MDBCNTc5M0YgLyogSlNDYWxsYmFja0RhdGEuaCAqLzsg
fTsKIAkJMTQ0OUUyODcxMDdENERCNDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDlFMjg2MTA3RDRE
QjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5jcHAgKi87IH07Ci0JCTE0NkNDMTE1MTU2OTg4
RTQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTQ2Q0MxMTMxNTY5ODhCRDAwMTA5RTM3IC8qIExlbmd0aEJveC5j
cHAgKi87IH07CiAJCTE0NzdFNzc2MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3N0U3NzQwQkY0
MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgKi87IH07CiAJCTE0NzdFNzc3MEJGNDEzNEEw
MDE1Mjg3MiAvKiBQYWdlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0NzdFNzc1MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDc5RkFFRDEw
OUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDc5RkFFNTEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVy
UnVieS5jcHAgKi87IH07CkBAIC03NjgwLDcgKzc2NzksNiBAQAogCQkxNDQ3NkFBNzE1REM0QkIx
MDAzMDVEQjIgLyogV3JpdGluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV3JpdGluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0OUUyNEEx
MDdENEE4NDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTQ2FsbGJhY2tEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTE0NDlFMjg2MTA3RDREQjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbGxiYWNrRGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0NkNDMTEzMTU2OTg4QkQwMDEwOUUzNyAvKiBMZW5n
dGhCb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVuZ3RoQm94
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ3N0U3NzQwQkY0MTM0QTAwMTUy
ODcyIC8qIFBhZ2VDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGFnZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ3N0U3NzUw
QkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUGFnZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NzlG
QUU1MTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclJ1YnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjE3NjAsNyArMjE3NTgsNiBAQAogCQkJCTE0MURDMDQ3MTY0ODM0OEYwMDM3MUU1
QSAvKiBMYXlvdXRVbml0LmggKi8sCiAJCQkJQkNFNjVCRTgwRUFDREYxNjAwN0U0NTMzIC8qIExl
bmd0aC5jcHAgKi8sCiAJCQkJQkNFNjVCRTkwRUFDREYxNjAwN0U0NTMzIC8qIExlbmd0aC5oICov
LAotCQkJCTE0NkNDMTEzMTU2OTg4QkQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwICovLAogCQkJ
CUJDRkY2NDhGMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCAqLywKIAkJCQlCQ0ZGNjQ5
MDBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oICovLAogCQkJCUE3QUQyRjg1MEVDODlE
MDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5jcHAgKi8sCkBAIC0yOTMwNiw3ICsyOTMwMyw2IEBACiAJ
CQkJNTEyREQ4RjQwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hpdmUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTFCMjQxN0IwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hp
dmVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0U2NUJFQTBFQUNERjE2MDA3RTQ1MzMgLyog
TGVuZ3RoLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTE0NkNDMTE1MTU2OTg4RTQwMDEwOUUzNyAv
KiBMZW5ndGhCb3guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTU1RjQ5N0ExNTFCODg4MDAwQkI2
N0RCIC8qIExlbmd0aEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRkI2OThDQzE4
MzNFRTBEMDAxNThBMzEgLyogTGluZUJyZWFrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODlC
NUVBQTExMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDE4NDExNikKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDEx
MiArNTQsMTAgQEAgdm9pZCBDU1NQcm9wZXJ0eTo6d3JhcFZhbHVlSW5Db21tYVNlcGFyYQogICAg
IG1fdmFsdWUgPSBXVEY6Om1vdmUobGlzdCk7CiB9CiAKLWVudW0gTG9naWNhbEJveFNpZGUgeyBC
ZWZvcmVTaWRlLCBFbmRTaWRlLCBBZnRlclNpZGUsIFN0YXJ0U2lkZSB9OwotZW51bSBQaHlzaWNh
bEJveFNpZGUgeyBUb3BTaWRlLCBSaWdodFNpZGUsIEJvdHRvbVNpZGUsIExlZnRTaWRlIH07Ci0K
IHN0YXRpYyBDU1NQcm9wZXJ0eUlEIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoVGV4dERpcmVj
dGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZSBs
b2dpY2FsU2lkZSwgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQogewot
ICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKSB7Ci0gICAgICAgIGlmICh3cml0aW5nTW9kZSA9PSBU
b3BUb0JvdHRvbVdyaXRpbmdNb2RlKSB7Ci0gICAgICAgICAgICAvLyBUaGUgY29tbW9uIGNhc2Uu
IFRoZSBsb2dpY2FsIGFuZCBwaHlzaWNhbCBib3ggc2lkZXMgbWF0Y2guCi0gICAgICAgICAgICAv
LyBMZWZ0ID0gU3RhcnQsIFJpZ2h0ID0gRW5kLCBCZWZvcmUgPSBUb3AsIEFmdGVyID0gQm90dG9t
Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtsb2dpY2FsU2lkZV07
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAod3JpdGluZ01vZGUgPT0gQm90dG9tVG9Ub3BXcml0
aW5nTW9kZSkgewotICAgICAgICAgICAgLy8gU3RhcnQgPSBMZWZ0LCBFbmQgPSBSaWdodCwgQmVm
b3JlID0gQm90dG9tLCBBZnRlciA9IFRvcC4KLSAgICAgICAgICAgIHN3aXRjaCAobG9naWNhbFNp
ZGUpIHsKLSAgICAgICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgICAgIHJldHVy
biBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICAgICAgICAgIGNhc2UgRW5k
U2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdo
dFNpZGVdOwotICAgICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgICAgIHJl
dHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtUb3BT
aWRlXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICh3cml0aW5nTW9k
ZSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlKSB7Ci0gICAgICAgICAgICAvLyBTdGFydCA9IFRv
cCwgRW5kID0gQm90dG9tLCBCZWZvcmUgPSBMZWZ0LCBBZnRlciA9IFJpZ2h0LgotICAgICAgICAg
ICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewotICAgICAgICAgICAgY2FzZSBTdGFydFNpZGU6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07Ci0g
ICAgICAgICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFu
ZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgICAgICAgICBjYXNlIEJlZm9yZVNpZGU6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVd
OwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5k
LnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gU3RhcnQgPSBUb3AsIEVuZCA9IEJvdHRvbSwgQmVmb3JlID0gUmlnaHQsIEFmdGVy
ID0gTGVmdAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3Rh
cnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lk
ZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQu
cHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAg
ICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVm
dFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09IFRvcFRv
Qm90dG9tV3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8gU3RhcnQgPSBSaWdodCwgRW5kID0gTGVm
dCwgQmVmb3JlID0gVG9wLCBBZnRlciA9IEJvdHRvbQotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxT
aWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0
aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKLSAgICAgICAgY2FzZSBFbmRTaWRlOgotICAg
ICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgICAg
ICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzaG9y
dGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
aWYgKHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8g
U3RhcnQgPSBSaWdodCwgRW5kID0gTGVmdCwgQmVmb3JlID0gQm90dG9tLCBBZnRlciA9IFRvcAot
ICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgot
ICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKLSAg
ICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0
aWVzKClbTGVmdFNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICBy
ZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09IExlZnRUb1JpZ2h0V3Jp
dGluZ01vZGUpIHsKLSAgICAgICAgLy8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRvcCwgQmVmb3Jl
ID0gTGVmdCwgQWZ0ZXIgPSBSaWdodAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0g
ICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9w
ZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAg
IHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwotICAgICAgICBjYXNlIEJl
Zm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtMZWZ0
U2lkZV07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnBy
b3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gU3RhcnQg
PSBCb3R0b20sIEVuZCA9IFRvcCwgQmVmb3JlID0gUmlnaHQsIEFmdGVyID0gTGVmdAotICAgIHN3
aXRjaCAobG9naWNhbFNpZGUpIHsKLSAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgcmV0dXJu
IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgY2FzZSBFbmRTaWRlOgot
ICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKLSAgICBjYXNl
IEJlZm9yZVNpZGU6Ci0gICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1JpZ2h0
U2lkZV07Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVz
KClbTGVmdFNpZGVdOwotICAgIH0KKyAgICBQaHlzaWNhbEJveFNpZGUgcGh5c2ljYWxTaWRlID0g
bWFwTG9naWNhbFRvUGh5c2ljYWxCb3hTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGly
ZWN0aW9uKSwgbG9naWNhbFNpZGUpOworICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygp
W3BoeXNpY2FsU2lkZV07CiB9CiAKIGVudW0gTG9naWNhbEV4dGVudCB7IExvZ2ljYWxXaWR0aCwg
TG9naWNhbEhlaWdodCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAko
cmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MTgsMjEgKzYxOCwyMSBAQCB2b2lkIENTU1RvU3R5bGVNYXA6
Om1hcE5pbmVQaWVjZUltYWdlU2xpCiAgICAgTGVuZ3RoQm94IGJveDsKICAgICBRdWFkKiBzbGlj
ZXMgPSBib3JkZXJJbWFnZVNsaWNlLnNsaWNlcygpOwogICAgIGlmIChzbGljZXMtPnRvcCgpLT5p
c1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCkt
PmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgo
c2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgZWxzZQotICAg
ICAgICBib3gubV90b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0SW50VmFsdWUoQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgICAgIGJveC50b3AoKSA9IExl
bmd0aChzbGljZXMtPnRvcCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUiksIEZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQZXJjZW50YWdlKCkp
Ci0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXREb3Vi
bGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNl
cy0+Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgIGVsc2UKLSAgICAg
ICAgYm94Lm1fYm90dG9tID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+Z2V0RmxvYXRW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAgICAgICAgYm94
LmJvdHRvbSgpID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+Z2V0RmxvYXRWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5s
ZWZ0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNl
cy0+bGVmdCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmxlZnQo
KSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAg
ICAgZWxzZQotICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5nZXRJ
bnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAgICAgICAg
Ym94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0SW50VmFsdWUoQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CiAgICAgaWYgKHNsaWNlcy0+cmlnaHQoKS0+
aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX3JpZ2h0ID0gTGVuZ3RoKHNsaWNlcy0+cmln
aHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIGJveC5yaWdodCgpID0g
TGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAg
ZWxzZQotICAgICAgICBib3gubV9yaWdodCA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldElu
dFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOworICAgICAgICBi
b3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVlKENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwogICAgIGltYWdlLnNldEltYWdlU2xpY2Vz
KGJveCk7CiAKICAgICAvLyBTZXQgb3VyIGZpbGwgbW9kZS4KQEAgLTY1NCwzMiArNjU0LDMyIEBA
IExlbmd0aEJveCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWEKICAgICBMZW5ndGhCb3gg
Ym94OyAvLyBEZWZhdWx0cyB0byAnYXV0bycgc28gd2UgZG9uJ3QgaGF2ZSB0byBoYW5kbGUgdGhh
dCBleHBsaWNpdGx5IGJlbG93LgogICAgIFF1YWQqIHNsaWNlcyA9IGJvcmRlcldpZHRocy5nZXRR
dWFkVmFsdWUoKTsKICAgICBpZiAoc2xpY2VzLT50b3AoKS0+aXNOdW1iZXIoKSkKLSAgICAgICAg
Ym94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldEludFZhbHVlKCksIFJlbGF0aXZl
KTsKKyAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldEludFZhbHVl
KCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChzbGljZXMtPnRvcCgpLT5pc1BlcmNlbnRhZ2Uo
KSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldERvdWJsZVZh
bHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAgICAg
ICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CiAgICAgZWxzZSBpZiAoc2xp
Y2VzLT50b3AoKS0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAgICAgYm94Lm1f
dG9wID0gc2xpY2VzLT50b3AoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRh
KTsKKyAgICAgICAgYm94LnRvcCgpID0gc2xpY2VzLT50b3AoKS0+Y29tcHV0ZUxlbmd0aDxMZW5n
dGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIGlmIChzbGljZXMtPnJpZ2h0KCktPmlzTnVtYmVy
KCkpCi0gICAgICAgIGJveC5tX3JpZ2h0ID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0SW50
VmFsdWUoKSwgUmVsYXRpdmUpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMt
PnJpZ2h0KCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChzbGljZXMt
PnJpZ2h0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9yaWdodCA9IExlbmd0aChz
bGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVS
Q0VOVEFHRSksIFBlcmNlbnQpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMt
PnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFH
RSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+cmlnaHQoKS0+Z2V0VmFsdWVJRCgp
ICE9IENTU1ZhbHVlQXV0bykKLSAgICAgICAgYm94Lm1fcmlnaHQgPSBzbGljZXMtPnJpZ2h0KCkt
PmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJveC5yaWdo
dCgpID0gc2xpY2VzLT5yaWdodCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29udmVyc2lvbkRh
dGEpOwogCiAgICAgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmlzTnVtYmVyKCkpCi0gICAgICAgIGJv
eC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXRJbnRWYWx1ZSgpLCBSZWxh
dGl2ZSk7CisgICAgICAgIGJveC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5n
ZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5ib3R0b20oKS0+
aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJv
dHRvbSgpLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0Up
LCBQZXJjZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9t
KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBl
cmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmdldFZhbHVlSUQoKSAhPSBD
U1NWYWx1ZUF1dG8pCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IHNsaWNlcy0+Ym90dG9tKCktPmNv
bXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJveC5ib3R0b20o
KSA9IHNsaWNlcy0+Ym90dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0
YSk7CiAKICAgICBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC5t
X2xlZnQgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsK
KyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0SW50VmFsdWUo
KSwgUmVsYXRpdmUpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc1BlcmNlbnRhZ2Uo
KSkKLSAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0RG91Ymxl
VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CisgICAg
ICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldERvdWJsZVZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYg
KHNsaWNlcy0+bGVmdCgpLT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICBi
b3gubV9sZWZ0ID0gc2xpY2VzLT5sZWZ0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJz
aW9uRGF0YSk7CisgICAgICAgIGJveC5sZWZ0KCkgPSBzbGljZXMtPmxlZnQoKS0+Y29tcHV0ZUxl
bmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIHJldHVybiBib3g7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5jcHAJKHJldmlzaW9uIDE4NDExNikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGVuZ3RoQm94Lmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgTGVuZ3RoJiBMZW5ndGhCb3g6OmxvZ2lj
YWxMZWZ0KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAotewotICAgIHJldHVybiBpc0hv
cml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyBtX2xlZnQgOiBtX3RvcDsKLX0KLQot
Y29uc3QgTGVuZ3RoJiBMZW5ndGhCb3g6OmxvZ2ljYWxSaWdodChXcml0aW5nTW9kZSB3cml0aW5n
TW9kZSkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUod3JpdGlu
Z01vZGUpID8gbV9yaWdodCA6IG1fYm90dG9tOwotfQotCi1jb25zdCBMZW5ndGgmIExlbmd0aEJv
eDo6YmVmb3JlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAotewotICAgIHN3aXRjaCAo
d3JpdGluZ01vZGUpIHsKLSAgICBjYXNlIFRvcFRvQm90dG9tV3JpdGluZ01vZGU6Ci0gICAgICAg
IHJldHVybiBtX3RvcDsKLSAgICBjYXNlIEJvdHRvbVRvVG9wV3JpdGluZ01vZGU6Ci0gICAgICAg
IHJldHVybiBtX2JvdHRvbTsKLSAgICBjYXNlIExlZnRUb1JpZ2h0V3JpdGluZ01vZGU6Ci0gICAg
ICAgIHJldHVybiBtX2xlZnQ7Ci0gICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlOgotICAg
ICAgICByZXR1cm4gbV9yaWdodDsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIG1fdG9wOwotfQotCi1jb25zdCBMZW5ndGgmIExlbmd0aEJveDo6YWZ0ZXIoV3Jp
dGluZ01vZGUgd3JpdGluZ01vZGUpIGNvbnN0Ci17Ci0gICAgc3dpdGNoICh3cml0aW5nTW9kZSkg
ewotICAgIGNhc2UgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZToKLSAgICAgICAgcmV0dXJuIG1fYm90
dG9tOwotICAgIGNhc2UgQm90dG9tVG9Ub3BXcml0aW5nTW9kZToKLSAgICAgICAgcmV0dXJuIG1f
dG9wOwotICAgIGNhc2UgTGVmdFRvUmlnaHRXcml0aW5nTW9kZToKLSAgICAgICAgcmV0dXJuIG1f
cmlnaHQ7Ci0gICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlOgotICAgICAgICByZXR1cm4g
bV9sZWZ0OwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbV9i
b3R0b207Ci19Ci0KLWNvbnN0IExlbmd0aCYgTGVuZ3RoQm94OjpzdGFydChXcml0aW5nTW9kZSB3
cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Ci17Ci0gICAgaWYgKGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSkKLSAgICAgICAgcmV0dXJuIGlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IG1fbGVmdCA6IG1fcmlnaHQ7Ci0gICAgcmV0
dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IG1fdG9wIDogbV9ib3R0b207
Ci19Ci0KLWNvbnN0IExlbmd0aCYgTGVuZ3RoQm94OjplbmQoV3JpdGluZ01vZGUgd3JpdGluZ01v
ZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAotewotICAgIGlmIChpc0hvcml6b250
YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkpCi0gICAgICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBtX3JpZ2h0IDogbV9sZWZ0OwotICAgIHJldHVybiBpc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBtX2JvdHRvbSA6IG1fdG9wOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGhCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3gu
aAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykg
MTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICAgIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICBDb3B5
cmlnaHQgKGMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCkBAIC0zNCw1MyArMzQsNDMgQEAgc3RydWN0IExlbmd0aEJveCB7CiAgICAgfQogCiAgICAg
ZXhwbGljaXQgTGVuZ3RoQm94KExlbmd0aFR5cGUgdHlwZSkKLSAgICAgICAgOiBtX2xlZnQodHlw
ZSkKLSAgICAgICAgLCBtX3JpZ2h0KHR5cGUpCi0gICAgICAgICwgbV90b3AodHlwZSkKLSAgICAg
ICAgLCBtX2JvdHRvbSh0eXBlKQorICAgICAgICA6IG1fc2lkZXMgeyB0eXBlLCB0eXBlLCB0eXBl
LCB0eXBlIH0KICAgICB7CiAgICAgfQogCiAgICAgZXhwbGljaXQgTGVuZ3RoQm94KGludCB2KQot
ICAgICAgICA6IG1fbGVmdChMZW5ndGgodiwgRml4ZWQpKQotICAgICAgICAsIG1fcmlnaHQoTGVu
Z3RoKHYsIEZpeGVkKSkKLSAgICAgICAgLCBtX3RvcChMZW5ndGgodiwgRml4ZWQpKQotICAgICAg
ICAsIG1fYm90dG9tKExlbmd0aCh2LCBGaXhlZCkpCisgICAgICAgIDogbV9zaWRlcyB7IExlbmd0
aCh2LCBGaXhlZCksIExlbmd0aCh2LCBGaXhlZCksIExlbmd0aCh2LCBGaXhlZCksIExlbmd0aCh2
LCBGaXhlZCkgfQogICAgIHsKICAgICB9CiAKICAgICBMZW5ndGhCb3goTGVuZ3RoIHRvcCwgTGVu
Z3RoIHJpZ2h0LCBMZW5ndGggYm90dG9tLCBMZW5ndGggbGVmdCkKLSAgICAgICAgOiBtX2xlZnQo
V1RGOjptb3ZlKGxlZnQpKQotICAgICAgICAsIG1fcmlnaHQoV1RGOjptb3ZlKHJpZ2h0KSkKLSAg
ICAgICAgLCBtX3RvcChXVEY6Om1vdmUodG9wKSkKLSAgICAgICAgLCBtX2JvdHRvbShXVEY6Om1v
dmUoYm90dG9tKSkKKyAgICAgICAgOiBtX3NpZGVzIHsgV1RGOjptb3ZlKHRvcCksIFdURjo6bW92
ZShyaWdodCksIFdURjo6bW92ZShib3R0b20pLCBXVEY6Om1vdmUobGVmdCkgfQogICAgIHsKICAg
ICB9CiAKICAgICBMZW5ndGhCb3goaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tLCBpbnQg
bGVmdCkKLSAgICAgICAgOiBtX2xlZnQoTGVuZ3RoKGxlZnQsIEZpeGVkKSkKLSAgICAgICAgLCBt
X3JpZ2h0KExlbmd0aChyaWdodCwgRml4ZWQpKQotICAgICAgICAsIG1fdG9wKExlbmd0aCh0b3As
IEZpeGVkKSkKLSAgICAgICAgLCBtX2JvdHRvbShMZW5ndGgoYm90dG9tLCBGaXhlZCkpCisgICAg
ICAgIDogbV9zaWRlcyB7IExlbmd0aCh0b3AsIEZpeGVkKSwgTGVuZ3RoKHJpZ2h0LCBGaXhlZCks
IExlbmd0aChib3R0b20sIEZpeGVkKSwgTGVuZ3RoKGxlZnQsIEZpeGVkKSB9CiAgICAgewogICAg
IH0KIAotICAgIGNvbnN0IExlbmd0aCYgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdDsgfQot
ICAgIGNvbnN0IExlbmd0aCYgcmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3JpZ2h0OyB9Ci0gICAg
Y29uc3QgTGVuZ3RoJiB0b3AoKSBjb25zdCB7IHJldHVybiBtX3RvcDsgfQotICAgIGNvbnN0IExl
bmd0aCYgYm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b207IH0KKyAgICBMZW5ndGgmIGxl
ZnQoKSB7IHJldHVybiBtX3NpZGVzW0xlZnRTaWRlXTsgfQorICAgIExlbmd0aCYgcmlnaHQoKSB7
IHJldHVybiBtX3NpZGVzW1JpZ2h0U2lkZV07IH0KKyAgICBMZW5ndGgmIHRvcCgpIHsgcmV0dXJu
IG1fc2lkZXNbVG9wU2lkZV07IH0KKyAgICBMZW5ndGgmIGJvdHRvbSgpIHsgcmV0dXJuIG1fc2lk
ZXNbQm90dG9tU2lkZV07IH0KIAotICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbExlZnQoV3JpdGlu
Z01vZGUpIGNvbnN0OwotICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbFJpZ2h0KFdyaXRpbmdNb2Rl
KSBjb25zdDsKKyAgICBjb25zdCBMZW5ndGgmIGxlZnQoKSBjb25zdCB7IHJldHVybiBtX3NpZGVz
W0xlZnRTaWRlXTsgfQorICAgIGNvbnN0IExlbmd0aCYgcmlnaHQoKSBjb25zdCB7IHJldHVybiBt
X3NpZGVzW1JpZ2h0U2lkZV07IH0KKyAgICBjb25zdCBMZW5ndGgmIHRvcCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2lkZXNbVG9wU2lkZV07IH0KKyAgICBjb25zdCBMZW5ndGgmIGJvdHRvbSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2lkZXNbQm90dG9tU2lkZV07IH0KIAotICAgIGNvbnN0IExlbmd0aCYgYmVm
b3JlKFdyaXRpbmdNb2RlKSBjb25zdDsKLSAgICBjb25zdCBMZW5ndGgmIGFmdGVyKFdyaXRpbmdN
b2RlKSBjb25zdDsKLSAgICBjb25zdCBMZW5ndGgmIHN0YXJ0KFdyaXRpbmdNb2RlLCBUZXh0RGly
ZWN0aW9uKSBjb25zdDsKLSAgICBjb25zdCBMZW5ndGgmIGVuZChXcml0aW5nTW9kZSwgVGV4dERp
cmVjdGlvbikgY29uc3Q7CisgICAgY29uc3QgTGVuZ3RoJiBiZWZvcmUoV3JpdGluZ01vZGUgd3Jp
dGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBt
X3NpZGVzW21hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01v
ZGUsIGRpcmVjdGlvbiksIEJlZm9yZVNpZGUpXTsgfQorICAgIGNvbnN0IExlbmd0aCYgYWZ0ZXIo
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBj
b25zdCB7IHJldHVybiBtX3NpZGVzW21hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZShtYWtlVGV4
dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIEFmdGVyU2lkZSldOyB9CisgICAgY29uc3Qg
TGVuZ3RoJiBzdGFydChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24gPSBMVFIpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXNbbWFwTG9naWNhbFRvUGh5c2ljYWxC
b3hTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgU3RhcnRTaWRlKV07
IH0KKyAgICBjb25zdCBMZW5ndGgmIGVuZChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERp
cmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXNbbWFwTG9naWNh
bFRvUGh5c2ljYWxCb3hTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwg
RW5kU2lkZSldOyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoQm94JiBvdGhl
cikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2xlZnQgPT0gb3RoZXIubV9sZWZ0ICYm
IG1fcmlnaHQgPT0gb3RoZXIubV9yaWdodCAmJiBtX3RvcCA9PSBvdGhlci5tX3RvcCAmJiBtX2Jv
dHRvbSA9PSBvdGhlci5tX2JvdHRvbTsKKyAgICAgICAgcmV0dXJuIGxlZnQoKSA9PSBvdGhlci5s
ZWZ0KCkgJiYgcmlnaHQoKSA9PSBvdGhlci5yaWdodCgpICYmIHRvcCgpID09IG90aGVyLnRvcCgp
ICYmIGJvdHRvbSgpID09IG90aGVyLmJvdHRvbSgpOwogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBMZW5ndGhCb3gmIG90aGVyKSBjb25zdApAQCAtOTAsMTMgKzgwLDExIEBAIHN0
cnVjdCBMZW5ndGhCb3ggewogCiAgICAgYm9vbCBub25aZXJvKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiAhKG1fbGVmdC5pc1plcm8oKSAmJiBtX3JpZ2h0LmlzWmVybygpICYmIG1fdG9w
LmlzWmVybygpICYmIG1fYm90dG9tLmlzWmVybygpKTsKKyAgICAgICAgcmV0dXJuICEobGVmdCgp
LmlzWmVybygpICYmIHJpZ2h0KCkuaXNaZXJvKCkgJiYgdG9wKCkuaXNaZXJvKCkgJiYgYm90dG9t
KCkuaXNaZXJvKCkpOwogICAgIH0KIAotICAgIExlbmd0aCBtX2xlZnQ7Ci0gICAgTGVuZ3RoIG1f
cmlnaHQ7Ci0gICAgTGVuZ3RoIG1fdG9wOwotICAgIExlbmd0aCBtX2JvdHRvbTsKK3ByaXZhdGU6
CisgICAgTGVuZ3RoIG1fc2lkZXNbNF07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgJKHJldmlzaW9uIDE4
NDExNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVt
IFRleHREaXJlY3Rpb24geyBSVEwsIExUUiB9OworZW51bSBUZXh0RGlyZWN0aW9uIHsgTFRSLCBS
VEwgfTsKIAogZW51bSBUZXh0UmVuZGVyaW5nTW9kZSB7IEF1dG9UZXh0UmVuZGVyaW5nLCBPcHRp
bWl6ZVNwZWVkLCBPcHRpbWl6ZUxlZ2liaWxpdHksIEdlb21ldHJpY1ByZWNpc2lvbiB9OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oCShyZXZpc2lv
biAxODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDEy
LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCkBAIC0zNCwyNSArMzUsOTYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ZW51bSBXcml0aW5nTW9kZSB7Ci0gICAgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwgUmlnaHRUb0xl
ZnRXcml0aW5nTW9kZSwgTGVmdFRvUmlnaHRXcml0aW5nTW9kZSwgQm90dG9tVG9Ub3BXcml0aW5n
TW9kZQorICAgIFRvcFRvQm90dG9tV3JpdGluZ01vZGUgPSAwLCAvLyBob3Jpem9udGFsLXRiCisg
ICAgQm90dG9tVG9Ub3BXcml0aW5nTW9kZSA9IDEsIC8vIGhvcml6b250YWwtYnQKKyAgICBMZWZ0
VG9SaWdodFdyaXRpbmdNb2RlID0gMiwgLy8gdmVydGljYWwtbHIKKyAgICBSaWdodFRvTGVmdFdy
aXRpbmdNb2RlID0gMywgLy8gdmVydGljYWwtcmwKIH07CiAKKyNkZWZpbmUgTUFLRV9URVhUX0ZM
T1cod3JpdGluZ01vZGUsIGRpcmVjdGlvbikgICgod3JpdGluZ01vZGUpIDw8IDEgfCAoZGlyZWN0
aW9uKSkKKworLy8gRGVmaW5lIHRoZSB0ZXh0IGZsb3cgaW4gdGVybXMgb2YgdGhlIHdyaXRpbmcg
bW9kZSBhbmQgdGhlIHRleHQgZGlyZWN0aW9uLiBUaGUgZmlyc3QKKy8vIHBhcnQgaXMgdGhlIGxp
bmUgZ3Jvd2luZyBkaXJlY3Rpb24gYW5kIHRoZSBzZWNvbmQgcGFydCBpcyB0aGUgYmxvY2sgZ3Jv
d2luZyBkaXJlY3Rpb24uCitlbnVtIFRleHRGbG93IHsKKyAgICBUZXh0Rmxvd0Vhc3RTb3V0aCA9
IE1BS0VfVEVYVF9GTE9XKFRvcFRvQm90dG9tV3JpdGluZ01vZGUsIExUUiksCisgICAgVGV4dEZs
b3dXZXN0U291dGggPSBNQUtFX1RFWFRfRkxPVyhUb3BUb0JvdHRvbVdyaXRpbmdNb2RlLCBSVEwp
LAorICAgIFRleHRGbG93RWFzdE5vcnRoID0gTUFLRV9URVhUX0ZMT1coQm90dG9tVG9Ub3BXcml0
aW5nTW9kZSwgTFRSKSwKKyAgICBUZXh0Rmxvd1dlc3ROb3J0aCA9IE1BS0VfVEVYVF9GTE9XKEJv
dHRvbVRvVG9wV3JpdGluZ01vZGUsIFJUTCksCisgICAgVGV4dEZsb3dTb3V0aEVhc3QgPSBNQUtF
X1RFWFRfRkxPVyhMZWZ0VG9SaWdodFdyaXRpbmdNb2RlLCBMVFIpLAorICAgIFRleHRGbG93U291
dGhXZXN0ID0gTUFLRV9URVhUX0ZMT1coTGVmdFRvUmlnaHRXcml0aW5nTW9kZSwgUlRMKSwKKyAg
ICBUZXh0Rmxvd05vcnRoRWFzdCA9IE1BS0VfVEVYVF9GTE9XKFJpZ2h0VG9MZWZ0V3JpdGluZ01v
ZGUsIExUUiksCisgICAgVGV4dEZsb3dOb3J0aFdlc3QgPSBNQUtFX1RFWFRfRkxPVyhSaWdodFRv
TGVmdFdyaXRpbmdNb2RlLCBSVEwpCit9OworCitpbmxpbmUgVGV4dEZsb3cgbWFrZVRleHRGbG93
KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEZsb3c+KE1BS0VfVEVYVF9GTE9XKHdyaXRpbmdNb2Rl
LCBkaXJlY3Rpb24pKTsKK30KKworY29uc3QgdW5zaWduZWQgVGV4dEZsb3dSZXZlcnNlZE1hc2sg
PSAxOworY29uc3QgdW5zaWduZWQgVGV4dEZsb3dGbGlwcGVkTWFzayA9IDI7Citjb25zdCB1bnNp
Z25lZCBUZXh0Rmxvd1ZlcnRpY2FsTWFzayA9IDQ7CisKK2lubGluZSBib29sIGlzVGV4dEZsb3dS
ZXZlcnNlZChUZXh0RmxvdyB0ZXh0ZmxvdykKK3sKKyAgICByZXR1cm4gdGV4dGZsb3cgJiBUZXh0
Rmxvd1JldmVyc2VkTWFzazsKK30KKworaW5saW5lIGJvb2wgaXNUZXh0Rmxvd0ZsaXBwZWQoVGV4
dEZsb3cgdGV4dGZsb3cpCit7CisgICAgcmV0dXJuIHRleHRmbG93ICYgVGV4dEZsb3dGbGlwcGVk
TWFzazsKK30KKworaW5saW5lIGJvb2wgaXNUZXh0Rmxvd1ZlcnRpY2FsKFRleHRGbG93IHRleHRm
bG93KQoreworICAgIHJldHVybiB0ZXh0ZmxvdyAmIFRleHRGbG93VmVydGljYWxNYXNrOworfQor
CisvLyBMaW5lcyBoYXZlIHZlcnRpY2FsIG9yaWVudGF0aW9uOyBtb2RlcyB2ZXJ0aWNhbC1sciBv
ciB2ZXJ0aWNhbC1ybC4KK2lubGluZSBib29sIGlzVmVydGljYWxXcml0aW5nTW9kZShXcml0aW5n
TW9kZSB3cml0aW5nTW9kZSkKK3sKKyAgICByZXR1cm4gaXNUZXh0Rmxvd1ZlcnRpY2FsKG1ha2VU
ZXh0Rmxvdyh3cml0aW5nTW9kZSwgTFRSKSk7Cit9CisKKy8vIEJsb2NrIHByb2dyZXNzaW9uIGlu
Y3JlYXNlcyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIHRvIG5vcm1hbDsgbW9kZXMgdmVydGlj
YWwtcmwgb3IgaG9yaXpvbnRhbC1idC4KK2lubGluZSBib29sIGlzRmxpcHBlZEJsb2Nrc1dyaXRp
bmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQoreworICAgIHJldHVybiBpc1RleHRGbG93
RmxpcHBlZChtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIExUUikpOworfQorCiAvLyBMaW5lcyBo
YXZlIGhvcml6b250YWwgb3JpZW50YXRpb247IG1vZGVzIGhvcml6b250YWwtdGIgb3IgaG9yaXpv
bnRhbC1idC4KIGlubGluZSBib29sIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKFdyaXRpbmdNb2Rl
IHdyaXRpbmdNb2RlKQogewotICAgIHJldHVybiB3cml0aW5nTW9kZSA9PSBUb3BUb0JvdHRvbVdy
aXRpbmdNb2RlIHx8IHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGU7CisgICAg
cmV0dXJuICFpc1ZlcnRpY2FsV3JpdGluZ01vZGUod3JpdGluZ01vZGUpOwogfQogCiAvLyBCb3R0
b20gb2YgdGhlIGxpbmUgb2NjdXJzIGVhcmxpZXIgaW4gdGhlIGJsb2NrOyBtb2RlcyB2ZXJ0aWNh
bC1sciBvciBob3Jpem9udGFsLWJ0LgogaW5saW5lIGJvb2wgaXNGbGlwcGVkTGluZXNXcml0aW5n
TW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkKIHsKLSAgICByZXR1cm4gd3JpdGluZ01vZGUg
PT0gTGVmdFRvUmlnaHRXcml0aW5nTW9kZSB8fCB3cml0aW5nTW9kZSA9PSBCb3R0b21Ub1RvcFdy
aXRpbmdNb2RlOworICAgIHJldHVybiBpc1ZlcnRpY2FsV3JpdGluZ01vZGUod3JpdGluZ01vZGUp
ICE9IGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKTsKIH0KIAotLy8gQmxv
Y2sgcHJvZ3Jlc3Npb24gaW5jcmVhc2VzIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gbm9y
bWFsOyBtb2RlcyB2ZXJ0aWNhbC1ybCBvciBob3Jpem9udGFsLWJ0LgotaW5saW5lIGJvb2wgaXNG
bGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCitlbnVtIExv
Z2ljYWxCb3hTaWRlIHsgQmVmb3JlU2lkZSwgRW5kU2lkZSwgQWZ0ZXJTaWRlLCBTdGFydFNpZGUg
fTsKK2VudW0gUGh5c2ljYWxCb3hTaWRlIHsgVG9wU2lkZSwgUmlnaHRTaWRlLCBCb3R0b21TaWRl
LCBMZWZ0U2lkZSB9OworCitpbmxpbmUgUGh5c2ljYWxCb3hTaWRlIG1hcExvZ2ljYWxUb1BoeXNp
Y2FsQm94U2lkZShUZXh0RmxvdyB0ZXh0ZmxvdywgTG9naWNhbEJveFNpZGUgbG9naWNhbFNpZGUp
CiB7Ci0gICAgcmV0dXJuIHdyaXRpbmdNb2RlID09IFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUgfHwg
d3JpdGluZ01vZGUgPT0gQm90dG9tVG9Ub3BXcml0aW5nTW9kZTsKKyAgICBpbnQgcGh5c2ljYWxT
aWRlID0gbG9naWNhbFNpZGU7CisgICAgYm9vbCBpc1N0YXJ0RW5kU2lkZSA9IHBoeXNpY2FsU2lk
ZSAlIDIgPT0gMTsKKworICAgIC8vIFN3YXAgdGhlIGxlZnQvcmlnaHQgc2lkZSB3aXRoIHRoZSB0
b3AvYm90dG9tIHNpZGUgaWYgdGV4dEZsb3cgaXMgdmVydGljYWwKKyAgICBpZiAoaXNUZXh0Rmxv
d1ZlcnRpY2FsKHRleHRmbG93KSkgeworICAgICAgICBpZiAoaXNTdGFydEVuZFNpZGUpCisgICAg
ICAgICAgICBwaHlzaWNhbFNpZGUgPSAocGh5c2ljYWxTaWRlICsgMSkgJSA0OworICAgICAgICBl
bHNlCisgICAgICAgICAgICBwaHlzaWNhbFNpZGUgPSAocGh5c2ljYWxTaWRlICsgMykgJSA0Owor
ICAgIH0KKworICAgIC8vIFN3YXAgdGhlIGxlZnQgYW5kIHJpZ2h0IHNpZGVzIGlmIHRleHRGbG93
IGlzIHJldmVyc2VkIGFuZCB0aGUgdG9wIGFuZCBib3R0b20gc2lkZXMgaWYgdGV4dEZsb3cgaXMg
ZmxpcHBlZAorICAgIGlmICgoaXNTdGFydEVuZFNpZGUgJiYgaXNUZXh0Rmxvd1JldmVyc2VkKHRl
eHRmbG93KSkgfHwgKCFpc1N0YXJ0RW5kU2lkZSAmJiBpc1RleHRGbG93RmxpcHBlZCh0ZXh0Zmxv
dykpKQorICAgICAgICBwaHlzaWNhbFNpZGUgPSAocGh5c2ljYWxTaWRlICsgMikgJSA0OworCisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFBoeXNpY2FsQm94U2lkZT4ocGh5c2ljYWxTaWRlKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAxODQxMTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05MjEsMTAgKzkyMSwxMCBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRNYXNrSW1hZ2UoY29uc3Qg
VmVjCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDbGlwKExlbmd0aCB0b3AsIExlbmd0aCByaWdodCwg
TGVuZ3RoIGJvdHRvbSwgTGVuZ3RoIGxlZnQpCiB7CiAgICAgU3R5bGVWaXN1YWxEYXRhKiBkYXRh
ID0gdmlzdWFsLmFjY2VzcygpOwotICAgIGRhdGEtPmNsaXAubV90b3AgPSB0b3A7Ci0gICAgZGF0
YS0+Y2xpcC5tX3JpZ2h0ID0gcmlnaHQ7Ci0gICAgZGF0YS0+Y2xpcC5tX2JvdHRvbSA9IGJvdHRv
bTsKLSAgICBkYXRhLT5jbGlwLm1fbGVmdCA9IGxlZnQ7CisgICAgZGF0YS0+Y2xpcC50b3AoKSA9
IHRvcDsKKyAgICBkYXRhLT5jbGlwLnJpZ2h0KCkgPSByaWdodDsKKyAgICBkYXRhLT5jbGlwLmJv
dHRvbSgpID0gYm90dG9tOworICAgIGRhdGEtPmNsaXAubGVmdCgpID0gbGVmdDsKIH0KIAogdm9p
ZCBSZW5kZXJTdHlsZTo6YWRkQ3Vyc29yKFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gaW1hZ2UsIGNv
bnN0IEludFBvaW50JiBob3RTcG90KQpAQCAtMTMwOSwxMCArMTMwOSwxMCBAQCBjb25zdCBWZWN0
b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBSZW5kCiAgICAgaWYgKCFub25lTGlzdEluaXRpYWxp
emVkKSB7CiAgICAgICAgIFN0eWxlRGFzaGJvYXJkUmVnaW9uIHJlZ2lvbjsKICAgICAgICAgcmVn
aW9uLmxhYmVsID0gIiI7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubV90b3AgID0gTGVuZ3RoKCk7
Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubV9yaWdodCA9IExlbmd0aCgpOwotICAgICAgICByZWdp
b24ub2Zmc2V0Lm1fYm90dG9tID0gTGVuZ3RoKCk7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubV9s
ZWZ0ID0gTGVuZ3RoKCk7CisgICAgICAgIHJlZ2lvbi5vZmZzZXQudG9wKCkgID0gTGVuZ3RoKCk7
CisgICAgICAgIHJlZ2lvbi5vZmZzZXQucmlnaHQoKSA9IExlbmd0aCgpOworICAgICAgICByZWdp
b24ub2Zmc2V0LmJvdHRvbSgpID0gTGVuZ3RoKCk7CisgICAgICAgIHJlZ2lvbi5vZmZzZXQubGVm
dCgpID0gTGVuZ3RoKCk7CiAgICAgICAgIHJlZ2lvbi50eXBlID0gU3R5bGVEYXNoYm9hcmRSZWdp
b246Ok5vbmU7CiAgICAgICAgIG5vbmVMaXN0LmFwcGVuZChyZWdpb24pOwogICAgICAgICBub25l
TGlzdEluaXRpYWxpemVkID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAxODQxMTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTk1LDgg
KzU5NSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBMZW5ndGgmIGJvdHRvbSgpIGNvbnN0IHsgcmV0
dXJuIHN1cnJvdW5kLT5vZmZzZXQuYm90dG9tKCk7IH0KIAogICAgIC8vIEFjY2Vzc29ycyBmb3Ig
cG9zaXRpb25lZCBvYmplY3QgZWRnZXMgdGhhdCB0YWtlIGludG8gYWNjb3VudCB3cml0aW5nIG1v
ZGUuCi0gICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJv
dW5kLT5vZmZzZXQubG9naWNhbExlZnQod3JpdGluZ01vZGUoKSk7IH0KLSAgICBjb25zdCBMZW5n
dGgmIGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQubG9naWNh
bFJpZ2h0KHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTGVmdCgp
IGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuc3RhcnQod3JpdGluZ01vZGUoKSk7IH0K
KyAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5vZmZzZXQuZW5kKHdyaXRpbmdNb2RlKCkpOyB9CiAgICAgY29uc3QgTGVuZ3RoJiBsb2dpY2Fs
VG9wKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5iZWZvcmUod3JpdGluZ01vZGUo
KSk7IH0KICAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxCb3R0b20oKSBjb25zdCB7IHJldHVybiBz
dXJyb3VuZC0+b2Zmc2V0LmFmdGVyKHdyaXRpbmdNb2RlKCkpOyB9CiAKQEAgLTEyMDAsMTAgKzEy
MDAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UG9zaXRpb24oRVBvc2l0aW9uIHYpIHsgbm9u
aW5oZXJpdGVkX2ZsYWdzLnNldFBvc2l0aW9uKHYpOyB9CiAgICAgdm9pZCBzZXRGbG9hdGluZyhF
RmxvYXQgdikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0RmxvYXRpbmcodik7IH0KIAotICAgIHZv
aWQgc2V0TGVmdChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQubV9sZWZ0LCBX
VEY6Om1vdmUodikpOyB9Ci0gICAgdm9pZCBzZXRSaWdodChMZW5ndGggdikgeyBTRVRfVkFSKHN1
cnJvdW5kLCBvZmZzZXQubV9yaWdodCwgV1RGOjptb3ZlKHYpKTsgfQotICAgIHZvaWQgc2V0VG9w
KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5tX3RvcCwgV1RGOjptb3ZlKHYp
KTsgfQotICAgIHZvaWQgc2V0Qm90dG9tKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9m
ZnNldC5tX2JvdHRvbSwgV1RGOjptb3ZlKHYpKTsgfQorICAgIHZvaWQgc2V0TGVmdChMZW5ndGgg
dikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQubGVmdCgpLCBXVEY6Om1vdmUodikpOyB9Cisg
ICAgdm9pZCBzZXRSaWdodChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQucmln
aHQoKSwgV1RGOjptb3ZlKHYpKTsgfQorICAgIHZvaWQgc2V0VG9wKExlbmd0aCB2KSB7IFNFVF9W
QVIoc3Vycm91bmQsIG9mZnNldC50b3AoKSwgV1RGOjptb3ZlKHYpKTsgfQorICAgIHZvaWQgc2V0
Qm90dG9tKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5ib3R0b20oKSwgV1RG
Ojptb3ZlKHYpKTsgfQogCiAgICAgdm9pZCBzZXRXaWR0aChMZW5ndGggdikgeyBTRVRfVkFSKG1f
Ym94LCBtX3dpZHRoLCBXVEY6Om1vdmUodikpOyB9CiAgICAgdm9pZCBzZXRIZWlnaHQoTGVuZ3Ro
IHYpIHsgU0VUX1ZBUihtX2JveCwgbV9oZWlnaHQsIFdURjo6bW92ZSh2KSk7IH0KQEAgLTEyMzks
MTAgKzEyMzksMTAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgU3R5bGVEYXNoYm9hcmRSZWdp
b24gcmVnaW9uOwogICAgICAgICByZWdpb24ubGFiZWwgPSBsYWJlbDsKLSAgICAgICAgcmVnaW9u
Lm9mZnNldC5tX3RvcCA9IFdURjo6bW92ZSh0KTsKLSAgICAgICAgcmVnaW9uLm9mZnNldC5tX3Jp
Z2h0ID0gV1RGOjptb3ZlKHIpOwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fYm90dG9tID0gV1RG
Ojptb3ZlKGIpOwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fbGVmdCA9IFdURjo6bW92ZShsKTsK
KyAgICAgICAgcmVnaW9uLm9mZnNldC50b3AoKSA9IFdURjo6bW92ZSh0KTsKKyAgICAgICAgcmVn
aW9uLm9mZnNldC5yaWdodCgpID0gV1RGOjptb3ZlKHIpOworICAgICAgICByZWdpb24ub2Zmc2V0
LmJvdHRvbSgpID0gV1RGOjptb3ZlKGIpOworICAgICAgICByZWdpb24ub2Zmc2V0LmxlZnQoKSA9
IFdURjo6bW92ZShsKTsKICAgICAgICAgcmVnaW9uLnR5cGUgPSB0eXBlOwogICAgICAgICBpZiAo
IWFwcGVuZCkKICAgICAgICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2Rh
c2hib2FyZFJlZ2lvbnMuY2xlYXIoKTsKQEAgLTEzMjMsMTAgKzEzMjMsMTAgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0VmVydGljYWxBbGlnbkxlbmd0aChMZW5ndGggbGVuZ3RoKSB7IHNldFZlcnRp
Y2FsQWxpZ24oTEVOR1RIKTsgU0VUX1ZBUihtX2JveCwgbV92ZXJ0aWNhbEFsaWduLCBXVEY6Om1v
dmUobGVuZ3RoKSk7IH0KIAogICAgIHZvaWQgc2V0SGFzQ2xpcChib29sIGIgPSB0cnVlKSB7IFNF
VF9WQVIodmlzdWFsLCBoYXNDbGlwLCBiKTsgfQotICAgIHZvaWQgc2V0Q2xpcExlZnQoTGVuZ3Ro
IGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5tX2xlZnQsIFdURjo6bW92ZShsZW5ndGgp
KTsgfQotICAgIHZvaWQgc2V0Q2xpcFJpZ2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1
YWwsIGNsaXAubV9yaWdodCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRDbGlw
VG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAubV90b3AsIFdURjo6bW92
ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0Q2xpcEJvdHRvbShMZW5ndGggbGVuZ3RoKSB7IFNF
VF9WQVIodmlzdWFsLCBjbGlwLm1fYm90dG9tLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2
b2lkIHNldENsaXBMZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAubGVm
dCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldENsaXBSaWdodChMZW5ndGgg
bGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLnJpZ2h0KCksIFdURjo6bW92ZShsZW5ndGgp
KTsgfQorICAgIHZvaWQgc2V0Q2xpcFRvcChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFs
LCBjbGlwLnRvcCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldENsaXBCb3R0
b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5ib3R0b20oKSwgV1RGOjpt
b3ZlKGxlbmd0aCkpOyB9CiAgICAgdm9pZCBzZXRDbGlwKExlbmd0aCB0b3AsIExlbmd0aCByaWdo
dCwgTGVuZ3RoIGJvdHRvbSwgTGVuZ3RoIGxlZnQpOwogICAgIHZvaWQgc2V0Q2xpcChMZW5ndGhC
b3ggYm94KSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLCBXVEY6Om1vdmUoYm94KSk7IH0KIApAQCAt
MTQzNCwxOSArMTQzNCwxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMaXN0U3R5bGVQb3NpdGlv
bihFTGlzdFN0eWxlUG9zaXRpb24gdikgeyBpbmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfcG9z
aXRpb24gPSB2OyB9CiAKICAgICB2b2lkIHJlc2V0TWFyZ2luKCkgeyBTRVRfVkFSKHN1cnJvdW5k
LCBtYXJnaW4sIExlbmd0aEJveChGaXhlZCkpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5Ub3AoTGVu
Z3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ubV90b3AsIFdURjo6bW92ZShs
ZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0TWFyZ2luQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VU
X1ZBUihzdXJyb3VuZCwgbWFyZ2luLm1fYm90dG9tLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAg
ICB2b2lkIHNldE1hcmdpbkxlZnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBt
YXJnaW4ubV9sZWZ0LCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldE1hcmdpblJp
Z2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLm1fcmlnaHQsIFdU
Rjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFyZ2luVG9wKExlbmd0aCBsZW5ndGgp
IHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLnRvcCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0K
KyAgICB2b2lkIHNldE1hcmdpbkJvdHRvbShMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91
bmQsIG1hcmdpbi5ib3R0b20oKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRN
YXJnaW5MZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLmxlZnQo
KSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5SaWdodChMZW5ndGgg
bGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5yaWdodCgpLCBXVEY6Om1vdmUobGVu
Z3RoKSk7IH0KICAgICB2b2lkIHNldE1hcmdpblN0YXJ0KExlbmd0aCk7CiAgICAgdm9pZCBzZXRN
YXJnaW5FbmQoTGVuZ3RoKTsKIAogICAgIHZvaWQgcmVzZXRQYWRkaW5nKCkgeyBTRVRfVkFSKHN1
cnJvdW5kLCBwYWRkaW5nLCBMZW5ndGhCb3goQXV0bykpOyB9CiAgICAgdm9pZCBzZXRQYWRkaW5n
Qm94KExlbmd0aEJveCBib3gpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZywgV1RGOjptb3Zl
KGJveCkpOyB9Ci0gICAgdm9pZCBzZXRQYWRkaW5nVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZB
UihzdXJyb3VuZCwgcGFkZGluZy5tX3RvcCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9p
ZCBzZXRQYWRkaW5nQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFk
ZGluZy5tX2JvdHRvbSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRQYWRkaW5n
TGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubV9sZWZ0LCBX
VEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldFBhZGRpbmdSaWdodChMZW5ndGggbGVu
Z3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubV9yaWdodCwgV1RGOjptb3ZlKGxlbmd0
aCkpOyB9CisgICAgdm9pZCBzZXRQYWRkaW5nVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihz
dXJyb3VuZCwgcGFkZGluZy50b3AoKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBz
ZXRQYWRkaW5nQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGlu
Zy5ib3R0b20oKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQYWRkaW5nTGVm
dChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubGVmdCgpLCBXVEY6
Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdSaWdodChMZW5ndGggbGVuZ3Ro
KSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcucmlnaHQoKSwgV1RGOjptb3ZlKGxlbmd0aCkp
OyB9CiAKICAgICB2b2lkIHNldEN1cnNvcihFQ3Vyc29yIGMpIHsgaW5oZXJpdGVkX2ZsYWdzLl9j
dXJzb3Jfc3R5bGUgPSBjOyB9CiAgICAgdm9pZCBhZGRDdXJzb3IoUGFzc1JlZlB0cjxTdHlsZUlt
YWdlPiwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QgPSBJbnRQb2ludCgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252924</attachid>
            <date>2015-05-11 20:14:12 -0700</date>
            <delta_ts>2015-05-11 20:38:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143399-20150511201251.patch</filename>
            <type>text/plain</type>
            <size>40533</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDE1LTA1LTExICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29kZSBjbGVh
biB1cCBmb3IgZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtaXggb2YgV3JpdGluZ01v
ZGUgYW5kIFRleHREaXJlY3Rpb24gLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQzMzk5LgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBlaWdodCBUZXh0Rmxvd3MuIEEgVGV4dEZsb3cg
Y29uc2lzdHMgb2YgdHdvIGRpcmVjdGlvbnMuIFRoZQorICAgICAgICBmaXJzdCBvbmUgY29udHJv
bHMgdGhlIGxpbmUgZ3Jvd2luZyBkaXJlY3Rpb24gYW5kIHRoZSBzZWNvbmQgb25lIGNvbnRyb2xz
IHRoZQorICAgICAgICBibG9jayBncm93aW5nIGRpcmVjdGlvbi4KKyAgICAgICAgCisgICAgICAg
IFdlIG5lZWQgdG8gZXh0cmFjdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGVhc2lseSBmcm9t
IHRoZSBUZXh0RmxvdworCisgICAgICAgIC0tIGlzVGV4dEZsb3dSZXZlcnNlZCgpIC8vIFJUTAor
ICAgICAgICAtLSBpc1RleHRGbG93RmxpcHBlZCgpICAvLyB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9u
IHRvIG5vcm1hbAorICAgICAgICAtLSBpc1RleHRGbG93VmVydGljYWwoKSAvLyBUaGUgbGluZSBn
cm93cyB2ZXJ0aWNhbGx5CisKKyAgICAgICAgTWl4aW5nIFdyaXRpbmdNb2RlIGFuZCBUZXh0RGly
ZWN0aW9uIGludG8gVGV4dEZsb3cgYW5kIGNob29zaW5nIHRoZWlyIHZhbHVlcworICAgICAgICBj
YXJlZnVsbHkgdG8gZWFzZSBpbXBsZW1lbnRpbmcgdGhlIGFib3ZlIGZ1bmN0aW9ucyBjYW4gbWFr
ZSB0aGluZ3MgY2xlYXJlci4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhCb3guY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzOgorICAgICAgICBSZW1vdmUgTGVuZ3RoQm94LmNwcCBzaW5jZSBhbGwgaXRzIGZ1bmN0aW9u
cyBiZWNvbWUgc2luZ2xlIGxpbmUgZnVuY3Rpb25zCisgICAgICAgIGFuZCBjb3VsZCBiZSBtb3Zl
ZCB0byB0aGUgaGVhZGVyIGZpbGUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0
aEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpMZW5ndGhCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpsZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aEJv
eDo6cmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94Ojp0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6TGVuZ3RoQm94Ojpib3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6Om9wZXJhdG9yIT0pOiBVc2UgYW4gYXJyYXkg
b2YgTGVuZ3RocyBmb3IgdGhlIGZvdXIgc2lkZXMuCisgICAgICAgIEFuZCB1c2UgdGhlIGVudW0g
UGh5c2ljYWxCb3hTaWRlIHRvIGFjY2VzcyB0aGlzIGFycmF5LgorCisgICAgICAgIChXZWJDb3Jl
OjpMZW5ndGhCb3g6OmlzWmVybyk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6Om5vblpl
cm8pOiBEZWxldGVkLgorICAgICAgICBVc2UgaXNaZXJvKCkgaW5zdGVhZCBvZiBub25aZXJvKCkg
c2luY2UgdGhlIGZvcm1lciBpcyBjbGVhcmVyLgorCisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhC
b3g6OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6OmFmdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3Ro
Qm94OjplbmQpOgorICAgICAgICBVc2UgdGhlIG1hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZSgp
IGdldCB0aGUgcGh5c2ljYWwgc2lkZSBvZiB0aGUgYm94IGJhc2VkCisgICAgICAgIG9uIHRoZSBk
aXJlY3Rpb24gYW5kIHRoZSB3cml0aW5nIG1vZGUuIAorICAgICAgICAKKyAgICAgICAgKiBjc3Mv
Q1NTUHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZVRvUGh5c2ljYWxQcm9w
ZXJ0eSk6IEluc3RlYWQgb2YgaGFuZGxpbmcgdGhlIGVpZ2h0IHBvc3NpYmxlCisgICAgICAgIGNh
c2VzIG9mIHRoZSB0ZXh0IGZsb3dzIG9uZSBieSBvbmUsIHdlIGNhbiBhbmFseXplIHRoZSB0ZXh0
IGZsb3cgYW5kIHN3YXAgdGhlCisgICAgICAgIHNpZGUgcHJvcGVydHkgaW5kZXggdG8gZ2V0IHRo
ZSBwcm9wZXIgdmFsdWUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEZs
YWdzLmg6IFVzdWFsbHkgdGhlIGRlZmF1bHQgdmFsdWUgaXMgZGVmaW5lZCBmaXJzdC4KKyAgICAg
ICAgQW5kIGlmIHRoZSB2YWx1ZSBpcyBpbnRlZ2VyIG9yIGVudW0sIGl0IHNob3VsZCBiZSBlcXVh
bCB0byB6ZXJvLiBTaW5jZSBMVFIKKyAgICAgICAgaXMgdGhlIGRlZmF1bHQgZm9yIHRoZSB0ZXh0
IGRpcmVjdGlvbiwgaXQgc2hvdWxkIGJlIGRlZmluZWQgYmVmb3JlIFJUTC4KKyAgICAgICAgCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6
bWFrZVRleHRGbG93KTogIERlZmluaW5nIGEgZnVuY3Rpb24gdG8gbWFrZSBhIFRleHRGbG93IG91
dCBmcm9tCisgICAgICAgIFdyaXRpbmdNb2RlIGFuZCBUZXh0RGlyZWN0aW9uLgorICAgICAgICAK
KyAgICAgICAgKFdlYkNvcmU6OmlzVGV4dEZsb3dSZXZlcnNlZCk6IFJldHVybnMgdHJ1ZSBpZiB0
aGUgdGV4dCBkaXJlY3Rpb24gaXMgUlRMLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6Omlz
VGV4dEZsb3dGbGlwcGVkKTogUmV0dXJucyB0cnVlIGlmIGJsb2NrIGdyb3dpbmcgZGlyZWN0aW9u
CisgICAgICAgIGlzIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gbm9ybWFsLgorICAgICAg
ICAKKyAgICAgICAgKFdlYkNvcmU6OmlzVGV4dEZsb3dWZXJ0aWNhbCk6CisgICAgICAgIChXZWJD
b3JlOjppc1ZlcnRpY2FsV3JpdGluZ01vZGUpOiBSZXR1cm5zIHRydWUgaWYgVGhlIGxpbmUgZ3Jv
d3MgdmVydGljYWxseS4KKworICAgICAgICAoV2ViQ29yZTo6aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUpOiAKKyAgICAgICAgKFdlYkNvcmU6OmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUpOiBVc2UgdGhlIHRleHQg
ZmxvdyBmdW5jdGlvbnMgaW5zdGVhZC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjptYXBM
b2dpY2FsVG9QaHlzaWNhbEJveFNpZGUpOiBJdCBtYXBzIGEgbG9naWNhbCBzaWRlIG9mIGEgYm94
CisgICAgICAgIGdpdmVuIHRoZSBjdXJyZW50IHRleHQgZGlyZWN0aW9uIGFuZCB0aGUgd3JpdGlu
ZyBtb2RlLgorCisgICAgICAgICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VTbGljZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVF1YWQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2V0Q2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6bm9uZURh
c2hib2FyZFJlZ2lvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
OiBVc2UgdGhlIExlbmd0aEJveCBzaWRlcycgYWNjZXNzIG1ldGhvZHMgaW5zdGVhZAorICAgICAg
ICBvZiBkaXJlY3RseSB1c2luZyB0aGUgc2lkZXMnIGFycmF5LgorCiAyMDE1LTA1LTExICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNtYWxsIHRpZHl1
cCBpbiBhbmltYXRpb25zIGNvZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
ODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMjAzOCw3ICsyMDM4LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL0tp
bGxSaW5nTm9uZS5jcHAKICAgICBwbGF0Zm9ybS9MYW5ndWFnZS5jcHAKICAgICBwbGF0Zm9ybS9M
ZW5ndGguY3BwCi0gICAgcGxhdGZvcm0vTGVuZ3RoQm94LmNwcAogICAgIHBsYXRmb3JtL0xpbmtI
YXNoLmNwcAogICAgIHBsYXRmb3JtL0xvZ2dpbmcuY3BwCiAgICAgcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvagkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODAwNiw3ICs4MDA2
LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXFVSTC5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMYW5ndWFnZS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMZW5ndGguY3BwIiAvPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGVuZ3RoQm94LmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExpbmtIYXNoLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExvY2FsaXplZFN0cmluZ3MuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTG9nZ2luZy5jcHAiIC8+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCShyZXZpc2lvbiAxODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTExMTMsOSArMTExMyw2
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMZW5ndGguY3BwIj4KICAg
ICAgIDxGaWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExlbmd0aEJveC5jcHAiPgotICAgICAgPEZpbHRl
cj5wbGF0Zm9ybTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cTGlua0hhc2guY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm08
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4NDExNikKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNjA1LDcgKzYwNSw2IEBACiAJCTE0NDc2QUE4MTVEQzRCQjEwMDMwNURCMiAvKiBX
cml0aW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQ0NzZBQTcxNURDNEJCMTAwMzA1REIyIC8qIFdyaXRpbmdNb2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ0OUUyNEMxMDdENEE4NDAw
QjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDQ5RTI0QTEwN0Q0QTg0MDBCNTc5M0YgLyogSlNDYWxsYmFja0Rh
dGEuaCAqLzsgfTsKIAkJMTQ0OUUyODcxMDdENERCNDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDlF
Mjg2MTA3RDREQjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5jcHAgKi87IH07Ci0JCTE0NkND
MTE1MTU2OTg4RTQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ2Q0MxMTMxNTY5ODhCRDAwMTA5RTM3IC8qIExl
bmd0aEJveC5jcHAgKi87IH07CiAJCTE0NzdFNzc2MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2Fj
aGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3
N0U3NzQwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgKi87IH07CiAJCTE0NzdFNzc3
MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NzdFNzc1MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2Fj
aGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
NDc5RkFFRDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDc5RkFFNTEwOUFFMzc1MDBERUQ2NTUg
LyogUmVuZGVyUnVieS5jcHAgKi87IH07CkBAIC03NjgwLDcgKzc2NzksNiBAQAogCQkxNDQ3NkFB
NzE1REM0QkIxMDAzMDVEQjIgLyogV3JpdGluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV3JpdGluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTQ0OUUyNEExMDdENEE4NDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FsbGJhY2tEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0NDlFMjg2MTA3RDREQjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbGxiYWNrRGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0NkNDMTEzMTU2OTg4QkQwMDEwOUUz
NyAvKiBMZW5ndGhCb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TGVuZ3RoQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ3N0U3NzQwQkY0
MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUGFnZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTQ3N0U3NzUwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGFnZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTE0NzlGQUU1MTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclJ1YnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjE3NjAsNyArMjE3NTgsNiBAQAogCQkJCTE0MURDMDQ3MTY0ODM0
OEYwMDM3MUU1QSAvKiBMYXlvdXRVbml0LmggKi8sCiAJCQkJQkNFNjVCRTgwRUFDREYxNjAwN0U0
NTMzIC8qIExlbmd0aC5jcHAgKi8sCiAJCQkJQkNFNjVCRTkwRUFDREYxNjAwN0U0NTMzIC8qIExl
bmd0aC5oICovLAotCQkJCTE0NkNDMTEzMTU2OTg4QkQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3Bw
ICovLAogCQkJCUJDRkY2NDhGMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCAqLywKIAkJ
CQlCQ0ZGNjQ5MDBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oICovLAogCQkJCUE3QUQy
Rjg1MEVDODlEMDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5jcHAgKi8sCkBAIC0yOTMwNiw3ICsyOTMw
Myw2IEBACiAJCQkJNTEyREQ4RjQwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hpdmUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCMjQxN0IwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2Fj
eVdlYkFyY2hpdmVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0U2NUJFQTBFQUNERjE2MDA3
RTQ1MzMgLyogTGVuZ3RoLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTE0NkNDMTE1MTU2OTg4RTQw
MDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTU1RjQ5N0ExNTFC
ODg4MDAwQkI2N0RCIC8qIExlbmd0aEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RkI2OThDQzE4MzNFRTBEMDAxNThBMzEgLyogTGluZUJyZWFrZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODlCNUVBQTExMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuY3BwIGluIFNvdXJj
ZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDE4NDEx
NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU0LDExMiArNTQsMTAgQEAgdm9pZCBDU1NQcm9wZXJ0eTo6d3JhcFZhbHVlSW5Db21tYVNl
cGFyYQogICAgIG1fdmFsdWUgPSBXVEY6Om1vdmUobGlzdCk7CiB9CiAKLWVudW0gTG9naWNhbEJv
eFNpZGUgeyBCZWZvcmVTaWRlLCBFbmRTaWRlLCBBZnRlclNpZGUsIFN0YXJ0U2lkZSB9OwotZW51
bSBQaHlzaWNhbEJveFNpZGUgeyBUb3BTaWRlLCBSaWdodFNpZGUsIEJvdHRvbVNpZGUsIExlZnRT
aWRlIH07Ci0KIHN0YXRpYyBDU1NQcm9wZXJ0eUlEIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHko
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2Fs
Qm94U2lkZSBsb2dpY2FsU2lkZSwgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRo
YW5kKQogewotICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKSB7Ci0gICAgICAgIGlmICh3cml0aW5n
TW9kZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlKSB7Ci0gICAgICAgICAgICAvLyBUaGUgY29t
bW9uIGNhc2UuIFRoZSBsb2dpY2FsIGFuZCBwaHlzaWNhbCBib3ggc2lkZXMgbWF0Y2guCi0gICAg
ICAgICAgICAvLyBMZWZ0ID0gU3RhcnQsIFJpZ2h0ID0gRW5kLCBCZWZvcmUgPSBUb3AsIEFmdGVy
ID0gQm90dG9tCi0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtsb2dp
Y2FsU2lkZV07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAod3JpdGluZ01vZGUgPT0gQm90dG9t
VG9Ub3BXcml0aW5nTW9kZSkgewotICAgICAgICAgICAgLy8gU3RhcnQgPSBMZWZ0LCBFbmQgPSBS
aWdodCwgQmVmb3JlID0gQm90dG9tLCBBZnRlciA9IFRvcC4KLSAgICAgICAgICAgIHN3aXRjaCAo
bG9naWNhbFNpZGUpIHsKLSAgICAgICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAg
ICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICAgICAgICAg
IGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtSaWdodFNpZGVdOwotICAgICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAg
ICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICh3
cml0aW5nTW9kZSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlKSB7Ci0gICAgICAgICAgICAvLyBT
dGFydCA9IFRvcCwgRW5kID0gQm90dG9tLCBCZWZvcmUgPSBMZWZ0LCBBZnRlciA9IFJpZ2h0Lgot
ICAgICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewotICAgICAgICAgICAgY2FzZSBTdGFy
dFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9w
U2lkZV07Ci0gICAgICAgICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgICAgICAgICBjYXNlIEJl
Zm9yZVNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClb
TGVmdFNpZGVdOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
c2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gU3RhcnQgPSBUb3AsIEVuZCA9IEJvdHRvbSwgQmVmb3JlID0gUmln
aHQsIEFmdGVyID0gTGVmdAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAg
IGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVz
KClbVG9wU2lkZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBz
aG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNp
ZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVd
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0
aWVzKClbTGVmdFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdyaXRpbmdNb2Rl
ID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8gU3RhcnQgPSBSaWdodCwg
RW5kID0gTGVmdCwgQmVmb3JlID0gVG9wLCBBZnRlciA9IEJvdHRvbQotICAgICAgICBzd2l0Y2gg
KGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0
dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKLSAgICAgICAgY2FzZSBFbmRT
aWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVd
OwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5k
LnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUpIHsKLSAg
ICAgICAgLy8gU3RhcnQgPSBSaWdodCwgRW5kID0gTGVmdCwgQmVmb3JlID0gQm90dG9tLCBBZnRl
ciA9IFRvcAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3Rh
cnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRT
aWRlXTsKLSAgICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFu
ZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAg
ICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1Rv
cFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09IExlZnRU
b1JpZ2h0V3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRv
cCwgQmVmb3JlID0gTGVmdCwgQWZ0ZXIgPSBSaWdodAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxT
aWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0
aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAg
ICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwotICAgICAg
ICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtMZWZ0U2lkZV07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
Ly8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRvcCwgQmVmb3JlID0gUmlnaHQsIEFmdGVyID0gTGVm
dAotICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKLSAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAg
ICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgY2FzZSBF
bmRTaWRlOgotICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsK
LSAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGll
cygpW1JpZ2h0U2lkZV07Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgIH0KKyAgICBQaHlzaWNhbEJveFNpZGUgcGh5c2lj
YWxTaWRlID0gbWFwTG9naWNhbFRvUGh5c2ljYWxCb3hTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5n
TW9kZSwgZGlyZWN0aW9uKSwgbG9naWNhbFNpZGUpOworICAgIHJldHVybiBzaG9ydGhhbmQucHJv
cGVydGllcygpW3BoeXNpY2FsU2lkZV07CiB9CiAKIGVudW0gTG9naWNhbEV4dGVudCB7IExvZ2lj
YWxXaWR0aCwgTG9naWNhbEhlaWdodCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Rv
U3R5bGVNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxl
TWFwLmNwcAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5
bGVNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTgsMjEgKzYxOCwyMSBAQCB2b2lkIENTU1Rv
U3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlU2xpCiAgICAgTGVuZ3RoQm94IGJveDsKICAgICBR
dWFkKiBzbGljZXMgPSBib3JkZXJJbWFnZVNsaWNlLnNsaWNlcygpOwogICAgIGlmIChzbGljZXMt
PnRvcCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNl
cy0+dG9wKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICBib3gudG9wKCkg
PSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAg
ZWxzZQotICAgICAgICBib3gubV90b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0SW50VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgICAgIGJveC50
b3AoKSA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQZXJj
ZW50YWdlKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgp
LT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVu
Z3RoKHNsaWNlcy0+Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgIGVs
c2UKLSAgICAgICAgYm94Lm1fYm90dG9tID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+
Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAg
ICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+Z2V0Rmxv
YXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKICAgICBpZiAo
c2xpY2VzLT5sZWZ0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9sZWZ0ID0gTGVu
Z3RoKHNsaWNlcy0+bGVmdCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAg
Ym94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVy
Y2VudCk7CiAgICAgZWxzZQotICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVm
dCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsK
KyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0SW50VmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CiAgICAgaWYgKHNsaWNlcy0+
cmlnaHQoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX3JpZ2h0ID0gTGVuZ3RoKHNs
aWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIGJveC5y
aWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2Vu
dCk7CiAgICAgZWxzZQotICAgICAgICBib3gubV9yaWdodCA9IExlbmd0aChzbGljZXMtPnJpZ2h0
KCktPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwor
ICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwogICAgIGltYWdlLnNldElt
YWdlU2xpY2VzKGJveCk7CiAKICAgICAvLyBTZXQgb3VyIGZpbGwgbW9kZS4KQEAgLTY1NCwzMiAr
NjU0LDMyIEBAIExlbmd0aEJveCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWEKICAgICBM
ZW5ndGhCb3ggYm94OyAvLyBEZWZhdWx0cyB0byAnYXV0bycgc28gd2UgZG9uJ3QgaGF2ZSB0byBo
YW5kbGUgdGhhdCBleHBsaWNpdGx5IGJlbG93LgogICAgIFF1YWQqIHNsaWNlcyA9IGJvcmRlcldp
ZHRocy5nZXRRdWFkVmFsdWUoKTsKICAgICBpZiAoc2xpY2VzLT50b3AoKS0+aXNOdW1iZXIoKSkK
LSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldEludFZhbHVlKCks
IFJlbGF0aXZlKTsKKyAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdl
dEludFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChzbGljZXMtPnRvcCgpLT5pc1Bl
cmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdl
dERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQp
OworICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CiAgICAgZWxz
ZSBpZiAoc2xpY2VzLT50b3AoKS0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAg
ICAgYm94Lm1fdG9wID0gc2xpY2VzLT50b3AoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZl
cnNpb25EYXRhKTsKKyAgICAgICAgYm94LnRvcCgpID0gc2xpY2VzLT50b3AoKS0+Y29tcHV0ZUxl
bmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIGlmIChzbGljZXMtPnJpZ2h0KCkt
PmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC5tX3JpZ2h0ID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQo
KS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0
aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlm
IChzbGljZXMtPnJpZ2h0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9yaWdodCA9
IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0
aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+cmlnaHQoKS0+Z2V0
VmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAgICAgYm94Lm1fcmlnaHQgPSBzbGljZXMt
PnJpZ2h0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAg
IGJveC5yaWdodCgpID0gc2xpY2VzLT5yaWdodCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29u
dmVyc2lvbkRhdGEpOwogCiAgICAgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmlzTnVtYmVyKCkpCi0g
ICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXRJbnRWYWx1
ZSgpLCBSZWxhdGl2ZSk7CisgICAgICAgIGJveC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJv
dHRvbSgpLT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5i
b3R0b20oKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChz
bGljZXMtPmJvdHRvbSgpLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BF
UkNFTlRBR0UpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNl
cy0+Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VO
VEFHRSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmdldFZhbHVl
SUQoKSAhPSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IHNsaWNlcy0+Ym90
dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJv
eC5ib3R0b20oKSA9IHNsaWNlcy0+Ym90dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252
ZXJzaW9uRGF0YSk7CiAKICAgICBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzTnVtYmVyKCkpCi0gICAg
ICAgIGJveC5tX2xlZnQgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldEludFZhbHVlKCksIFJl
bGF0aXZlKTsKKyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0
SW50VmFsdWUoKSwgUmVsYXRpdmUpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc1Bl
cmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+
Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2Vu
dCk7CisgICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldERvdWJs
ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwogICAg
IGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQot
ICAgICAgICBib3gubV9sZWZ0ID0gc2xpY2VzLT5sZWZ0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3Ro
Pihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJveC5sZWZ0KCkgPSBzbGljZXMtPmxlZnQoKS0+
Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIHJldHVybiBib3g7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5jcHAJKHJldmlzaW9uIDE4
NDExNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGVu
Z3RoQm94LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgTGVuZ3RoJiBMZW5ndGhC
b3g6OmxvZ2ljYWxMZWZ0KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAotewotICAgIHJl
dHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyBtX2xlZnQgOiBtX3Rv
cDsKLX0KLQotY29uc3QgTGVuZ3RoJiBMZW5ndGhCb3g6OmxvZ2ljYWxSaWdodChXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUod3JpdGluZ01vZGUpID8gbV9yaWdodCA6IG1fYm90dG9tOwotfQotCi1jb25zdCBMZW5ndGgm
IExlbmd0aEJveDo6YmVmb3JlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAotewotICAg
IHN3aXRjaCAod3JpdGluZ01vZGUpIHsKLSAgICBjYXNlIFRvcFRvQm90dG9tV3JpdGluZ01vZGU6
Ci0gICAgICAgIHJldHVybiBtX3RvcDsKLSAgICBjYXNlIEJvdHRvbVRvVG9wV3JpdGluZ01vZGU6
Ci0gICAgICAgIHJldHVybiBtX2JvdHRvbTsKLSAgICBjYXNlIExlZnRUb1JpZ2h0V3JpdGluZ01v
ZGU6Ci0gICAgICAgIHJldHVybiBtX2xlZnQ7Ci0gICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdN
b2RlOgotICAgICAgICByZXR1cm4gbV9yaWdodDsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIG1fdG9wOwotfQotCi1jb25zdCBMZW5ndGgmIExlbmd0aEJveDo6
YWZ0ZXIoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIGNvbnN0Ci17Ci0gICAgc3dpdGNoICh3cml0
aW5nTW9kZSkgewotICAgIGNhc2UgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZToKLSAgICAgICAgcmV0
dXJuIG1fYm90dG9tOwotICAgIGNhc2UgQm90dG9tVG9Ub3BXcml0aW5nTW9kZToKLSAgICAgICAg
cmV0dXJuIG1fdG9wOwotICAgIGNhc2UgTGVmdFRvUmlnaHRXcml0aW5nTW9kZToKLSAgICAgICAg
cmV0dXJuIG1fcmlnaHQ7Ci0gICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlOgotICAgICAg
ICByZXR1cm4gbV9sZWZ0OwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gbV9ib3R0b207Ci19Ci0KLWNvbnN0IExlbmd0aCYgTGVuZ3RoQm94OjpzdGFydChXcml0
aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Ci17Ci0g
ICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSkKLSAgICAgICAgcmV0
dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IG1fbGVmdCA6IG1fcmlnaHQ7
Ci0gICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IG1fdG9wIDog
bV9ib3R0b207Ci19Ci0KLWNvbnN0IExlbmd0aCYgTGVuZ3RoQm94OjplbmQoV3JpdGluZ01vZGUg
d3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAotewotICAgIGlmIChp
c0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkpCi0gICAgICAgIHJldHVybiBpc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBtX3JpZ2h0IDogbV9sZWZ0OwotICAgIHJl
dHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBtX2JvdHRvbSA6IG1fdG9w
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGhCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZW5ndGhCb3guaAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHly
aWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICAgIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAgICBDb3B5cmlnaHQgKGMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCkBAIC0zNCw2OSArMzQsNjEgQEAgc3RydWN0IExlbmd0aEJveCB7CiAgICAg
fQogCiAgICAgZXhwbGljaXQgTGVuZ3RoQm94KExlbmd0aFR5cGUgdHlwZSkKLSAgICAgICAgOiBt
X2xlZnQodHlwZSkKLSAgICAgICAgLCBtX3JpZ2h0KHR5cGUpCi0gICAgICAgICwgbV90b3AodHlw
ZSkKLSAgICAgICAgLCBtX2JvdHRvbSh0eXBlKQorICAgICAgICA6IG1fc2lkZXMoeyB0eXBlLCB0
eXBlLCB0eXBlLCB0eXBlIH0pCiAgICAgewogICAgIH0KIAogICAgIGV4cGxpY2l0IExlbmd0aEJv
eChpbnQgdikKLSAgICAgICAgOiBtX2xlZnQoTGVuZ3RoKHYsIEZpeGVkKSkKLSAgICAgICAgLCBt
X3JpZ2h0KExlbmd0aCh2LCBGaXhlZCkpCi0gICAgICAgICwgbV90b3AoTGVuZ3RoKHYsIEZpeGVk
KSkKLSAgICAgICAgLCBtX2JvdHRvbShMZW5ndGgodiwgRml4ZWQpKQorICAgICAgICA6IG1fc2lk
ZXMoeyBMZW5ndGgodiwgRml4ZWQpLCBMZW5ndGgodiwgRml4ZWQpLCBMZW5ndGgodiwgRml4ZWQp
LCBMZW5ndGgodiwgRml4ZWQpIH0pCiAgICAgewogICAgIH0KIAogICAgIExlbmd0aEJveChMZW5n
dGggdG9wLCBMZW5ndGggcmlnaHQsIExlbmd0aCBib3R0b20sIExlbmd0aCBsZWZ0KQotICAgICAg
ICA6IG1fbGVmdChXVEY6Om1vdmUobGVmdCkpCi0gICAgICAgICwgbV9yaWdodChXVEY6Om1vdmUo
cmlnaHQpKQotICAgICAgICAsIG1fdG9wKFdURjo6bW92ZSh0b3ApKQotICAgICAgICAsIG1fYm90
dG9tKFdURjo6bW92ZShib3R0b20pKQorICAgICAgICA6IG1fc2lkZXMoeyBXVEY6Om1vdmUodG9w
KSwgV1RGOjptb3ZlKHJpZ2h0KSwgV1RGOjptb3ZlKGJvdHRvbSksIFdURjo6bW92ZShsZWZ0KSB9
KQogICAgIHsKICAgICB9CiAKICAgICBMZW5ndGhCb3goaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQg
Ym90dG9tLCBpbnQgbGVmdCkKLSAgICAgICAgOiBtX2xlZnQoTGVuZ3RoKGxlZnQsIEZpeGVkKSkK
LSAgICAgICAgLCBtX3JpZ2h0KExlbmd0aChyaWdodCwgRml4ZWQpKQotICAgICAgICAsIG1fdG9w
KExlbmd0aCh0b3AsIEZpeGVkKSkKLSAgICAgICAgLCBtX2JvdHRvbShMZW5ndGgoYm90dG9tLCBG
aXhlZCkpCisgICAgICAgIDogbV9zaWRlcyh7IExlbmd0aCh0b3AsIEZpeGVkKSwgTGVuZ3RoKHJp
Z2h0LCBGaXhlZCksIExlbmd0aChib3R0b20sIEZpeGVkKSwgTGVuZ3RoKGxlZnQsIEZpeGVkKSB9
KQogICAgIHsKICAgICB9CiAKLSAgICBjb25zdCBMZW5ndGgmIGxlZnQoKSBjb25zdCB7IHJldHVy
biBtX2xlZnQ7IH0KLSAgICBjb25zdCBMZW5ndGgmIHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9y
aWdodDsgfQotICAgIGNvbnN0IExlbmd0aCYgdG9wKCkgY29uc3QgeyByZXR1cm4gbV90b3A7IH0K
LSAgICBjb25zdCBMZW5ndGgmIGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tOyB9Cisg
ICAgTGVuZ3RoJiBsZWZ0KCkgeyByZXR1cm4gbV9zaWRlc1tMZWZ0U2lkZV07IH0KKyAgICBMZW5n
dGgmIHJpZ2h0KCkgeyByZXR1cm4gbV9zaWRlc1tSaWdodFNpZGVdOyB9CisgICAgTGVuZ3RoJiB0
b3AoKSB7IHJldHVybiBtX3NpZGVzW1RvcFNpZGVdOyB9CisgICAgTGVuZ3RoJiBib3R0b20oKSB7
IHJldHVybiBtX3NpZGVzW0JvdHRvbVNpZGVdOyB9CiAKLSAgICBjb25zdCBMZW5ndGgmIGxvZ2lj
YWxMZWZ0KFdyaXRpbmdNb2RlKSBjb25zdDsKLSAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxSaWdo
dChXcml0aW5nTW9kZSkgY29uc3Q7CisgICAgY29uc3QgTGVuZ3RoJiBsZWZ0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zaWRlc1tMZWZ0U2lkZV07IH0KKyAgICBjb25zdCBMZW5ndGgmIHJpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbV9zaWRlc1tSaWdodFNpZGVdOyB9CisgICAgY29uc3QgTGVuZ3RoJiB0b3Ao
KSBjb25zdCB7IHJldHVybiBtX3NpZGVzW1RvcFNpZGVdOyB9CisgICAgY29uc3QgTGVuZ3RoJiBi
b3R0b20oKSBjb25zdCB7IHJldHVybiBtX3NpZGVzW0JvdHRvbVNpZGVdOyB9CiAKLSAgICBjb25z
dCBMZW5ndGgmIGJlZm9yZShXcml0aW5nTW9kZSkgY29uc3Q7Ci0gICAgY29uc3QgTGVuZ3RoJiBh
ZnRlcihXcml0aW5nTW9kZSkgY29uc3Q7Ci0gICAgY29uc3QgTGVuZ3RoJiBzdGFydChXcml0aW5n
TW9kZSwgVGV4dERpcmVjdGlvbikgY29uc3Q7Ci0gICAgY29uc3QgTGVuZ3RoJiBlbmQoV3JpdGlu
Z01vZGUsIFRleHREaXJlY3Rpb24pIGNvbnN0OworICAgIGNvbnN0IExlbmd0aCYgYmVmb3JlKFdy
aXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUikgY29u
c3QgeyByZXR1cm4gbV9zaWRlc1ttYXBMb2dpY2FsVG9QaHlzaWNhbEJveFNpZGUobWFrZVRleHRG
bG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBCZWZvcmVTaWRlKV07IH0KKyAgICBjb25zdCBM
ZW5ndGgmIGFmdGVyKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiA9IExUUikgY29uc3QgeyByZXR1cm4gbV9zaWRlc1ttYXBMb2dpY2FsVG9QaHlzaWNhbEJv
eFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBBZnRlclNpZGUpXTsg
fQorICAgIGNvbnN0IExlbmd0aCYgc3RhcnQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBtX3NpZGVzW21hcExvZ2lj
YWxUb1BoeXNpY2FsQm94U2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiks
IFN0YXJ0U2lkZSldOyB9CisgICAgY29uc3QgTGVuZ3RoJiBlbmQoV3JpdGluZ01vZGUgd3JpdGlu
Z01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBtX3Np
ZGVzW21hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUs
IGRpcmVjdGlvbiksIEVuZFNpZGUpXTsgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExl
bmd0aEJveCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9sZWZ0ID09IG90
aGVyLm1fbGVmdCAmJiBtX3JpZ2h0ID09IG90aGVyLm1fcmlnaHQgJiYgbV90b3AgPT0gb3RoZXIu
bV90b3AgJiYgbV9ib3R0b20gPT0gb3RoZXIubV9ib3R0b207CisgICAgICAgIHJldHVybiBtX3Np
ZGVzID09IG90aGVyLm1fc2lkZXM7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IExlbmd0aEJveCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7CisgICAgICAgIHJldHVybiBtX3NpZGVzICE9IG90aGVyLm1fc2lkZXM7CiAgICAg
fQogCi0gICAgYm9vbCBub25aZXJvKCkgY29uc3QKKyAgICBib29sIGlzWmVybygpIGNvbnN0CiAg
ICAgewotICAgICAgICByZXR1cm4gIShtX2xlZnQuaXNaZXJvKCkgJiYgbV9yaWdodC5pc1plcm8o
KSAmJiBtX3RvcC5pc1plcm8oKSAmJiBtX2JvdHRvbS5pc1plcm8oKSk7CisgICAgICAgIGZvciAo
YXV0byBzaWRlIDogbV9zaWRlcykgeworICAgICAgICAgICAgaWYgKCFzaWRlLmlzWmVybygpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKLSAgICBMZW5ndGggbV9sZWZ0OwotICAgIExlbmd0aCBtX3JpZ2h0Owot
ICAgIExlbmd0aCBtX3RvcDsKLSAgICBMZW5ndGggbV9ib3R0b207Citwcml2YXRlOgorICAgIFZl
Y3RvcjxMZW5ndGg+IG1fc2lkZXMgeyBWZWN0b3I8TGVuZ3RoPig0KSB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
RmxhZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRG
bGFncy5oCShyZXZpc2lvbiAxODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRGbGFncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotZW51bSBUZXh0RGlyZWN0aW9uIHsgUlRMLCBMVFIgfTsKK2VudW0gVGV4
dERpcmVjdGlvbiB7IExUUiwgUlRMIH07CiAKIGVudW0gVGV4dFJlbmRlcmluZ01vZGUgeyBBdXRv
VGV4dFJlbmRlcmluZywgT3B0aW1pemVTcGVlZCwgT3B0aW1pemVMZWdpYmlsaXR5LCBHZW9tZXRy
aWNQcmVjaXNpb24gfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Xcml0
aW5nTW9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvV3Jp
dGluZ01vZGUuaAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9Xcml0aW5nTW9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoYykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNSwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzQsMjUgKzM1LDk5IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gV3JpdGluZ01vZGUgewotICAgIFRvcFRvQm90dG9tV3Jp
dGluZ01vZGUsIFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUsIExlZnRUb1JpZ2h0V3JpdGluZ01vZGUs
IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUKKyAgICBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlID0gMCwg
Ly8gaG9yaXpvbnRhbC10YgorICAgIEJvdHRvbVRvVG9wV3JpdGluZ01vZGUgPSAxLCAvLyBob3Jp
em9udGFsLWJ0CisgICAgTGVmdFRvUmlnaHRXcml0aW5nTW9kZSA9IDIsIC8vIHZlcnRpY2FsLWxy
CisgICAgUmlnaHRUb0xlZnRXcml0aW5nTW9kZSA9IDMsIC8vIHZlcnRpY2FsLXJsCiB9OwogCitj
b25zdGV4cHIgaW50IG1ha2VUZXh0RmxvdyhpbnQgd3JpdGluZ01vZGUsIGludCBkaXJlY3Rpb24p
Cit7CisgICAgcmV0dXJuICh3cml0aW5nTW9kZSkgPDwgMSB8IChkaXJlY3Rpb24pOworfQorCisv
LyBEZWZpbmUgdGhlIHRleHQgZmxvdyBpbiB0ZXJtcyBvZiB0aGUgd3JpdGluZyBtb2RlIGFuZCB0
aGUgdGV4dCBkaXJlY3Rpb24uIFRoZSBmaXJzdAorLy8gcGFydCBpcyB0aGUgbGluZSBncm93aW5n
IGRpcmVjdGlvbiBhbmQgdGhlIHNlY29uZCBwYXJ0IGlzIHRoZSBibG9jayBncm93aW5nIGRpcmVj
dGlvbi4KK2VudW0gVGV4dEZsb3cgeworICAgIFRleHRGbG93RWFzdFNvdXRoID0gbWFrZVRleHRG
bG93KFRvcFRvQm90dG9tV3JpdGluZ01vZGUsIExUUiksCisgICAgVGV4dEZsb3dXZXN0U291dGgg
PSBtYWtlVGV4dEZsb3coVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwgUlRMKSwKKyAgICBUZXh0Rmxv
d0Vhc3ROb3J0aCA9IG1ha2VUZXh0RmxvdyhCb3R0b21Ub1RvcFdyaXRpbmdNb2RlLCBMVFIpLAor
ICAgIFRleHRGbG93V2VzdE5vcnRoID0gbWFrZVRleHRGbG93KEJvdHRvbVRvVG9wV3JpdGluZ01v
ZGUsIFJUTCksCisgICAgVGV4dEZsb3dTb3V0aEVhc3QgPSBtYWtlVGV4dEZsb3coTGVmdFRvUmln
aHRXcml0aW5nTW9kZSwgTFRSKSwKKyAgICBUZXh0Rmxvd1NvdXRoV2VzdCA9IG1ha2VUZXh0Rmxv
dyhMZWZ0VG9SaWdodFdyaXRpbmdNb2RlLCBSVEwpLAorICAgIFRleHRGbG93Tm9ydGhFYXN0ID0g
bWFrZVRleHRGbG93KFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUsIExUUiksCisgICAgVGV4dEZsb3dO
b3J0aFdlc3QgPSBtYWtlVGV4dEZsb3coUmlnaHRUb0xlZnRXcml0aW5nTW9kZSwgUlRMKQorfTsK
KworaW5saW5lIFRleHRGbG93IG1ha2VUZXh0RmxvdyhXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwg
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRG
bG93PihtYWtlVGV4dEZsb3coc3RhdGljX2Nhc3Q8aW50Pih3cml0aW5nTW9kZSksIHN0YXRpY19j
YXN0PGludD4oZGlyZWN0aW9uKSkpOworfQorCitjb25zdCB1bnNpZ25lZCBUZXh0Rmxvd1JldmVy
c2VkTWFzayA9IDE7Citjb25zdCB1bnNpZ25lZCBUZXh0Rmxvd0ZsaXBwZWRNYXNrID0gMjsKK2Nv
bnN0IHVuc2lnbmVkIFRleHRGbG93VmVydGljYWxNYXNrID0gNDsKKworaW5saW5lIGJvb2wgaXNU
ZXh0Rmxvd1JldmVyc2VkKFRleHRGbG93IHRleHRmbG93KQoreworICAgIHJldHVybiB0ZXh0Zmxv
dyAmIFRleHRGbG93UmV2ZXJzZWRNYXNrOworfQorCitpbmxpbmUgYm9vbCBpc1RleHRGbG93Rmxp
cHBlZChUZXh0RmxvdyB0ZXh0ZmxvdykKK3sKKyAgICByZXR1cm4gdGV4dGZsb3cgJiBUZXh0Rmxv
d0ZsaXBwZWRNYXNrOworfQorCitpbmxpbmUgYm9vbCBpc1RleHRGbG93VmVydGljYWwoVGV4dEZs
b3cgdGV4dGZsb3cpCit7CisgICAgcmV0dXJuIHRleHRmbG93ICYgVGV4dEZsb3dWZXJ0aWNhbE1h
c2s7Cit9CisKKy8vIExpbmVzIGhhdmUgdmVydGljYWwgb3JpZW50YXRpb247IG1vZGVzIHZlcnRp
Y2FsLWxyIG9yIHZlcnRpY2FsLXJsLgoraW5saW5lIGJvb2wgaXNWZXJ0aWNhbFdyaXRpbmdNb2Rl
KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQoreworICAgIHJldHVybiBpc1RleHRGbG93VmVydGlj
YWwobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBMVFIpKTsKK30KKworLy8gQmxvY2sgcHJvZ3Jl
c3Npb24gaW5jcmVhc2VzIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gbm9ybWFsOyBtb2Rl
cyB2ZXJ0aWNhbC1ybCBvciBob3Jpem9udGFsLWJ0LgoraW5saW5lIGJvb2wgaXNGbGlwcGVkQmxv
Y2tzV3JpdGluZ01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCit7CisgICAgcmV0dXJuIGlz
VGV4dEZsb3dGbGlwcGVkKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgTFRSKSk7Cit9CisKIC8v
IExpbmVzIGhhdmUgaG9yaXpvbnRhbCBvcmllbnRhdGlvbjsgbW9kZXMgaG9yaXpvbnRhbC10YiBv
ciBob3Jpem9udGFsLWJ0LgogaW5saW5lIGJvb2wgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoV3Jp
dGluZ01vZGUgd3JpdGluZ01vZGUpCiB7Ci0gICAgcmV0dXJuIHdyaXRpbmdNb2RlID09IFRvcFRv
Qm90dG9tV3JpdGluZ01vZGUgfHwgd3JpdGluZ01vZGUgPT0gQm90dG9tVG9Ub3BXcml0aW5nTW9k
ZTsKKyAgICByZXR1cm4gIWlzVmVydGljYWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSk7CiB9CiAK
IC8vIEJvdHRvbSBvZiB0aGUgbGluZSBvY2N1cnMgZWFybGllciBpbiB0aGUgYmxvY2s7IG1vZGVz
IHZlcnRpY2FsLWxyIG9yIGhvcml6b250YWwtYnQuCiBpbmxpbmUgYm9vbCBpc0ZsaXBwZWRMaW5l
c1dyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQogewotICAgIHJldHVybiB3cml0
aW5nTW9kZSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlIHx8IHdyaXRpbmdNb2RlID09IEJvdHRv
bVRvVG9wV3JpdGluZ01vZGU7CisgICAgcmV0dXJuIGlzVmVydGljYWxXcml0aW5nTW9kZSh3cml0
aW5nTW9kZSkgIT0gaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUod3JpdGluZ01vZGUpOwogfQog
Ci0vLyBCbG9jayBwcm9ncmVzc2lvbiBpbmNyZWFzZXMgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlv
biB0byBub3JtYWw7IG1vZGVzIHZlcnRpY2FsLXJsIG9yIGhvcml6b250YWwtYnQuCi1pbmxpbmUg
Ym9vbCBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkK
K2VudW0gTG9naWNhbEJveFNpZGUgeyBCZWZvcmVTaWRlLCBFbmRTaWRlLCBBZnRlclNpZGUsIFN0
YXJ0U2lkZSB9OworZW51bSBQaHlzaWNhbEJveFNpZGUgeyBUb3BTaWRlLCBSaWdodFNpZGUsIEJv
dHRvbVNpZGUsIExlZnRTaWRlIH07CisKK2lubGluZSBQaHlzaWNhbEJveFNpZGUgbWFwTG9naWNh
bFRvUGh5c2ljYWxCb3hTaWRlKFRleHRGbG93IHRleHRmbG93LCBMb2dpY2FsQm94U2lkZSBsb2dp
Y2FsU2lkZSkKIHsKLSAgICByZXR1cm4gd3JpdGluZ01vZGUgPT0gUmlnaHRUb0xlZnRXcml0aW5n
TW9kZSB8fCB3cml0aW5nTW9kZSA9PSBCb3R0b21Ub1RvcFdyaXRpbmdNb2RlOworICAgIGludCBw
aHlzaWNhbFNpZGUgPSBsb2dpY2FsU2lkZTsKKyAgICBib29sIGlzU3RhcnRFbmRTaWRlID0gcGh5
c2ljYWxTaWRlICUgMiA9PSAxOworCisgICAgLy8gU3dhcCB0aGUgbGVmdC9yaWdodCBzaWRlIHdp
dGggdGhlIHRvcC9ib3R0b20gc2lkZSBpZiB0ZXh0RmxvdyBpcyB2ZXJ0aWNhbAorICAgIGlmIChp
c1RleHRGbG93VmVydGljYWwodGV4dGZsb3cpKSB7CisgICAgICAgIGlmIChpc1N0YXJ0RW5kU2lk
ZSkKKyAgICAgICAgICAgIHBoeXNpY2FsU2lkZSA9IChwaHlzaWNhbFNpZGUgKyAxKSAlIDQ7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBoeXNpY2FsU2lkZSA9IChwaHlzaWNhbFNpZGUgKyAz
KSAlIDQ7CisgICAgfQorCisgICAgLy8gU3dhcCB0aGUgbGVmdCBhbmQgcmlnaHQgc2lkZXMgaWYg
dGV4dEZsb3cgaXMgcmV2ZXJzZWQgYW5kIHRoZSB0b3AgYW5kIGJvdHRvbSBzaWRlcyBpZiB0ZXh0
RmxvdyBpcyBmbGlwcGVkCisgICAgaWYgKChpc1N0YXJ0RW5kU2lkZSAmJiBpc1RleHRGbG93UmV2
ZXJzZWQodGV4dGZsb3cpKSB8fCAoIWlzU3RhcnRFbmRTaWRlICYmIGlzVGV4dEZsb3dGbGlwcGVk
KHRleHRmbG93KSkpCisgICAgICAgIHBoeXNpY2FsU2lkZSA9IChwaHlzaWNhbFNpZGUgKyAyKSAl
IDQ7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGh5c2ljYWxCb3hTaWRlPihwaHlzaWNhbFNp
ZGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDE4NDExNikKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTkyMSwxMCArOTIxLDEwIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldE1hc2tJbWFn
ZShjb25zdCBWZWMKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENsaXAoTGVuZ3RoIHRvcCwgTGVuZ3Ro
IHJpZ2h0LCBMZW5ndGggYm90dG9tLCBMZW5ndGggbGVmdCkKIHsKICAgICBTdHlsZVZpc3VhbERh
dGEqIGRhdGEgPSB2aXN1YWwuYWNjZXNzKCk7Ci0gICAgZGF0YS0+Y2xpcC5tX3RvcCA9IHRvcDsK
LSAgICBkYXRhLT5jbGlwLm1fcmlnaHQgPSByaWdodDsKLSAgICBkYXRhLT5jbGlwLm1fYm90dG9t
ID0gYm90dG9tOwotICAgIGRhdGEtPmNsaXAubV9sZWZ0ID0gbGVmdDsKKyAgICBkYXRhLT5jbGlw
LnRvcCgpID0gdG9wOworICAgIGRhdGEtPmNsaXAucmlnaHQoKSA9IHJpZ2h0OworICAgIGRhdGEt
PmNsaXAuYm90dG9tKCkgPSBib3R0b207CisgICAgZGF0YS0+Y2xpcC5sZWZ0KCkgPSBsZWZ0Owog
fQogCiB2b2lkIFJlbmRlclN0eWxlOjphZGRDdXJzb3IoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBp
bWFnZSwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCkBAIC0xMzA5LDEwICsxMzA5LDEwIEBAIGNv
bnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIFJlbmQKICAgICBpZiAoIW5vbmVMaXN0
SW5pdGlhbGl6ZWQpIHsKICAgICAgICAgU3R5bGVEYXNoYm9hcmRSZWdpb24gcmVnaW9uOwogICAg
ICAgICByZWdpb24ubGFiZWwgPSAiIjsKLSAgICAgICAgcmVnaW9uLm9mZnNldC5tX3RvcCAgPSBM
ZW5ndGgoKTsKLSAgICAgICAgcmVnaW9uLm9mZnNldC5tX3JpZ2h0ID0gTGVuZ3RoKCk7Ci0gICAg
ICAgIHJlZ2lvbi5vZmZzZXQubV9ib3R0b20gPSBMZW5ndGgoKTsKLSAgICAgICAgcmVnaW9uLm9m
ZnNldC5tX2xlZnQgPSBMZW5ndGgoKTsKKyAgICAgICAgcmVnaW9uLm9mZnNldC50b3AoKSAgPSBM
ZW5ndGgoKTsKKyAgICAgICAgcmVnaW9uLm9mZnNldC5yaWdodCgpID0gTGVuZ3RoKCk7CisgICAg
ICAgIHJlZ2lvbi5vZmZzZXQuYm90dG9tKCkgPSBMZW5ndGgoKTsKKyAgICAgICAgcmVnaW9uLm9m
ZnNldC5sZWZ0KCkgPSBMZW5ndGgoKTsKICAgICAgICAgcmVnaW9uLnR5cGUgPSBTdHlsZURhc2hi
b2FyZFJlZ2lvbjo6Tm9uZTsKICAgICAgICAgbm9uZUxpc3QuYXBwZW5kKHJlZ2lvbik7CiAgICAg
ICAgIG5vbmVMaXN0SW5pdGlhbGl6ZWQgPSB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDE4NDExNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MzEsMTIgKzUzMSwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJl
bmRlclN0eWxlJiBvdGhlcikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlbmRl
clN0eWxlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICBi
b29sIGlzRmxvYXRpbmcoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuaXNGbG9h
dGluZygpOyB9Ci0gICAgYm9vbCBoYXNNYXJnaW4oKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+
bWFyZ2luLm5vblplcm8oKTsgfQorICAgIGJvb2wgaGFzTWFyZ2luKCkgY29uc3QgeyByZXR1cm4g
IXN1cnJvdW5kLT5tYXJnaW4uaXNaZXJvKCk7IH0KICAgICBib29sIGhhc0JvcmRlcigpIGNvbnN0
IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuaGFzQm9yZGVyKCk7IH0KICAgICBib29sIGhhc0Jv
cmRlckZpbGwoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmhhc0ZpbGwoKTsgfQog
ICAgIGJvb2wgaGFzQm9yZGVyRGVjb3JhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGhhc0JvcmRlcigp
IHx8IGhhc0JvcmRlckZpbGwoKTsgfQotICAgIGJvb2wgaGFzUGFkZGluZygpIGNvbnN0IHsgcmV0
dXJuIHN1cnJvdW5kLT5wYWRkaW5nLm5vblplcm8oKTsgfQotICAgIGJvb2wgaGFzT2Zmc2V0KCkg
Y29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5ub25aZXJvKCk7IH0KKyAgICBib29sIGhh
c1BhZGRpbmcoKSBjb25zdCB7IHJldHVybiAhc3Vycm91bmQtPnBhZGRpbmcuaXNaZXJvKCk7IH0K
KyAgICBib29sIGhhc09mZnNldCgpIGNvbnN0IHsgcmV0dXJuICFzdXJyb3VuZC0+b2Zmc2V0Lmlz
WmVybygpOyB9CiAgICAgYm9vbCBoYXNNYXJnaW5CZWZvcmVRdWlyaygpIGNvbnN0IHsgcmV0dXJu
IG1hcmdpbkJlZm9yZSgpLmhhc1F1aXJrKCk7IH0KICAgICBib29sIGhhc01hcmdpbkFmdGVyUXVp
cmsoKSBjb25zdCB7IHJldHVybiBtYXJnaW5BZnRlcigpLmhhc1F1aXJrKCk7IH0KIApAQCAtNTU4
LDcgKzU1OCw3IEBAIHB1YmxpYzoKICAgICBMYXlvdXRCb3hFeHRlbnQgaW1hZ2VPdXRzZXRzKGNv
bnN0IE5pbmVQaWVjZUltYWdlJikgY29uc3Q7CiAgICAgYm9vbCBoYXNCb3JkZXJJbWFnZU91dHNl
dHMoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGJvcmRlckltYWdlKCkuaGFzSW1hZ2Uo
KSAmJiBib3JkZXJJbWFnZSgpLm91dHNldCgpLm5vblplcm8oKTsKKyAgICAgICAgcmV0dXJuIGJv
cmRlckltYWdlKCkuaGFzSW1hZ2UoKSAmJiAhYm9yZGVySW1hZ2UoKS5vdXRzZXQoKS5pc1plcm8o
KTsKICAgICB9CiAgICAgTGF5b3V0Qm94RXh0ZW50IGJvcmRlckltYWdlT3V0c2V0cygpIGNvbnN0
CiAgICAgewpAQCAtNTk1LDggKzU5NSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBMZW5ndGgmIGJv
dHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuYm90dG9tKCk7IH0KIAogICAg
IC8vIEFjY2Vzc29ycyBmb3IgcG9zaXRpb25lZCBvYmplY3QgZWRnZXMgdGhhdCB0YWtlIGludG8g
YWNjb3VudCB3cml0aW5nIG1vZGUuCi0gICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTGVmdCgpIGNv
bnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQubG9naWNhbExlZnQod3JpdGluZ01vZGUoKSk7
IH0KLSAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJv
dW5kLT5vZmZzZXQubG9naWNhbFJpZ2h0KHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVu
Z3RoJiBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuc3RhcnQo
d3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxSaWdodCgpIGNvbnN0
IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuZW5kKHdyaXRpbmdNb2RlKCkpOyB9CiAgICAgY29u
c3QgTGVuZ3RoJiBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5i
ZWZvcmUod3JpdGluZ01vZGUoKSk7IH0KICAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxCb3R0b20o
KSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LmFmdGVyKHdyaXRpbmdNb2RlKCkpOyB9
CiAKQEAgLTEyMDAsMTAgKzEyMDAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UG9zaXRpb24o
RVBvc2l0aW9uIHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldFBvc2l0aW9uKHYpOyB9CiAgICAg
dm9pZCBzZXRGbG9hdGluZyhFRmxvYXQgdikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0RmxvYXRp
bmcodik7IH0KIAotICAgIHZvaWQgc2V0TGVmdChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5k
LCBvZmZzZXQubV9sZWZ0LCBXVEY6Om1vdmUodikpOyB9Ci0gICAgdm9pZCBzZXRSaWdodChMZW5n
dGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQubV9yaWdodCwgV1RGOjptb3ZlKHYpKTsg
fQotICAgIHZvaWQgc2V0VG9wKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5t
X3RvcCwgV1RGOjptb3ZlKHYpKTsgfQotICAgIHZvaWQgc2V0Qm90dG9tKExlbmd0aCB2KSB7IFNF
VF9WQVIoc3Vycm91bmQsIG9mZnNldC5tX2JvdHRvbSwgV1RGOjptb3ZlKHYpKTsgfQorICAgIHZv
aWQgc2V0TGVmdChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQubGVmdCgpLCBX
VEY6Om1vdmUodikpOyB9CisgICAgdm9pZCBzZXRSaWdodChMZW5ndGggdikgeyBTRVRfVkFSKHN1
cnJvdW5kLCBvZmZzZXQucmlnaHQoKSwgV1RGOjptb3ZlKHYpKTsgfQorICAgIHZvaWQgc2V0VG9w
KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC50b3AoKSwgV1RGOjptb3ZlKHYp
KTsgfQorICAgIHZvaWQgc2V0Qm90dG9tKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9m
ZnNldC5ib3R0b20oKSwgV1RGOjptb3ZlKHYpKTsgfQogCiAgICAgdm9pZCBzZXRXaWR0aChMZW5n
dGggdikgeyBTRVRfVkFSKG1fYm94LCBtX3dpZHRoLCBXVEY6Om1vdmUodikpOyB9CiAgICAgdm9p
ZCBzZXRIZWlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2JveCwgbV9oZWlnaHQsIFdURjo6bW92
ZSh2KSk7IH0KQEAgLTEyMzksMTAgKzEyMzksMTAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
U3R5bGVEYXNoYm9hcmRSZWdpb24gcmVnaW9uOwogICAgICAgICByZWdpb24ubGFiZWwgPSBsYWJl
bDsKLSAgICAgICAgcmVnaW9uLm9mZnNldC5tX3RvcCA9IFdURjo6bW92ZSh0KTsKLSAgICAgICAg
cmVnaW9uLm9mZnNldC5tX3JpZ2h0ID0gV1RGOjptb3ZlKHIpOwotICAgICAgICByZWdpb24ub2Zm
c2V0Lm1fYm90dG9tID0gV1RGOjptb3ZlKGIpOwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fbGVm
dCA9IFdURjo6bW92ZShsKTsKKyAgICAgICAgcmVnaW9uLm9mZnNldC50b3AoKSA9IFdURjo6bW92
ZSh0KTsKKyAgICAgICAgcmVnaW9uLm9mZnNldC5yaWdodCgpID0gV1RGOjptb3ZlKHIpOworICAg
ICAgICByZWdpb24ub2Zmc2V0LmJvdHRvbSgpID0gV1RGOjptb3ZlKGIpOworICAgICAgICByZWdp
b24ub2Zmc2V0LmxlZnQoKSA9IFdURjo6bW92ZShsKTsKICAgICAgICAgcmVnaW9uLnR5cGUgPSB0
eXBlOwogICAgICAgICBpZiAoIWFwcGVuZCkKICAgICAgICAgICAgIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLT5tX2Rhc2hib2FyZFJlZ2lvbnMuY2xlYXIoKTsKQEAgLTEzMjMsMTAgKzEz
MjMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmVydGljYWxBbGlnbkxlbmd0aChMZW5ndGgg
bGVuZ3RoKSB7IHNldFZlcnRpY2FsQWxpZ24oTEVOR1RIKTsgU0VUX1ZBUihtX2JveCwgbV92ZXJ0
aWNhbEFsaWduLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KIAogICAgIHZvaWQgc2V0SGFzQ2xpcChi
b29sIGIgPSB0cnVlKSB7IFNFVF9WQVIodmlzdWFsLCBoYXNDbGlwLCBiKTsgfQotICAgIHZvaWQg
c2V0Q2xpcExlZnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5tX2xlZnQs
IFdURjo6bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0Q2xpcFJpZ2h0KExlbmd0aCBsZW5n
dGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAubV9yaWdodCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9
Ci0gICAgdm9pZCBzZXRDbGlwVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNs
aXAubV90b3AsIFdURjo6bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0Q2xpcEJvdHRvbShM
ZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLm1fYm90dG9tLCBXVEY6Om1vdmUo
bGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldENsaXBMZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZB
Uih2aXN1YWwsIGNsaXAubGVmdCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNl
dENsaXBSaWdodChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLnJpZ2h0KCks
IFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0Q2xpcFRvcChMZW5ndGggbGVuZ3Ro
KSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLnRvcCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAg
ICB2b2lkIHNldENsaXBCb3R0b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xp
cC5ib3R0b20oKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CiAgICAgdm9pZCBzZXRDbGlwKExlbmd0
aCB0b3AsIExlbmd0aCByaWdodCwgTGVuZ3RoIGJvdHRvbSwgTGVuZ3RoIGxlZnQpOwogICAgIHZv
aWQgc2V0Q2xpcChMZW5ndGhCb3ggYm94KSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLCBXVEY6Om1v
dmUoYm94KSk7IH0KIApAQCAtMTQzNCwxOSArMTQzNCwxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRMaXN0U3R5bGVQb3NpdGlvbihFTGlzdFN0eWxlUG9zaXRpb24gdikgeyBpbmhlcml0ZWRfZmxh
Z3MuX2xpc3Rfc3R5bGVfcG9zaXRpb24gPSB2OyB9CiAKICAgICB2b2lkIHJlc2V0TWFyZ2luKCkg
eyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4sIExlbmd0aEJveChGaXhlZCkpOyB9Ci0gICAgdm9p
ZCBzZXRNYXJnaW5Ub3AoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4u
bV90b3AsIFdURjo6bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0TWFyZ2luQm90dG9tKExl
bmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLm1fYm90dG9tLCBXVEY6Om1v
dmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldE1hcmdpbkxlZnQoTGVuZ3RoIGxlbmd0aCkgeyBT
RVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ubV9sZWZ0LCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAg
ICB2b2lkIHNldE1hcmdpblJpZ2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwg
bWFyZ2luLm1fcmlnaHQsIFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFyZ2lu
VG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLnRvcCgpLCBXVEY6
Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1hcmdpbkJvdHRvbShMZW5ndGggbGVuZ3Ro
KSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5ib3R0b20oKSwgV1RGOjptb3ZlKGxlbmd0aCkp
OyB9CisgICAgdm9pZCBzZXRNYXJnaW5MZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJy
b3VuZCwgbWFyZ2luLmxlZnQoKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRN
YXJnaW5SaWdodChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5yaWdo
dCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KICAgICB2b2lkIHNldE1hcmdpblN0YXJ0KExlbmd0
aCk7CiAgICAgdm9pZCBzZXRNYXJnaW5FbmQoTGVuZ3RoKTsKIAogICAgIHZvaWQgcmVzZXRQYWRk
aW5nKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLCBMZW5ndGhCb3goQXV0bykpOyB9CiAg
ICAgdm9pZCBzZXRQYWRkaW5nQm94KExlbmd0aEJveCBib3gpIHsgU0VUX1ZBUihzdXJyb3VuZCwg
cGFkZGluZywgV1RGOjptb3ZlKGJveCkpOyB9Ci0gICAgdm9pZCBzZXRQYWRkaW5nVG9wKExlbmd0
aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5tX3RvcCwgV1RGOjptb3ZlKGxl
bmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRQYWRkaW5nQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VU
X1ZBUihzdXJyb3VuZCwgcGFkZGluZy5tX2JvdHRvbSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0g
ICAgdm9pZCBzZXRQYWRkaW5nTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQs
IHBhZGRpbmcubV9sZWZ0LCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldFBhZGRp
bmdSaWdodChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubV9yaWdo
dCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQYWRkaW5nVG9wKExlbmd0aCBs
ZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy50b3AoKSwgV1RGOjptb3ZlKGxlbmd0
aCkpOyB9CisgICAgdm9pZCBzZXRQYWRkaW5nQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZB
UihzdXJyb3VuZCwgcGFkZGluZy5ib3R0b20oKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAg
dm9pZCBzZXRQYWRkaW5nTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBh
ZGRpbmcubGVmdCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdS
aWdodChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcucmlnaHQoKSwg
V1RGOjptb3ZlKGxlbmd0aCkpOyB9CiAKICAgICB2b2lkIHNldEN1cnNvcihFQ3Vyc29yIGMpIHsg
aW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jfc3R5bGUgPSBjOyB9CiAgICAgdm9pZCBhZGRDdXJzb3Io
UGFzc1JlZlB0cjxTdHlsZUltYWdlPiwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QgPSBJbnRQb2lu
dCgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252926</attachid>
            <date>2015-05-11 20:38:18 -0700</date>
            <delta_ts>2015-05-11 20:55:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143399-20150511203657.patch</filename>
            <type>text/plain</type>
            <size>40580</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDE1LTA1LTExICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29kZSBjbGVh
biB1cCBmb3IgZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtaXggb2YgV3JpdGluZ01v
ZGUgYW5kIFRleHREaXJlY3Rpb24gLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQzMzk5LgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBlaWdodCBUZXh0Rmxvd3MuIEEgVGV4dEZsb3cg
Y29uc2lzdHMgb2YgdHdvIGRpcmVjdGlvbnMuIFRoZQorICAgICAgICBmaXJzdCBvbmUgY29udHJv
bHMgdGhlIGxpbmUgZ3Jvd2luZyBkaXJlY3Rpb24gYW5kIHRoZSBzZWNvbmQgb25lIGNvbnRyb2xz
IHRoZQorICAgICAgICBibG9jayBncm93aW5nIGRpcmVjdGlvbi4KKyAgICAgICAgCisgICAgICAg
IFdlIG5lZWQgdG8gZXh0cmFjdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGVhc2lseSBmcm9t
IHRoZSBUZXh0RmxvdworCisgICAgICAgIC0tIGlzVGV4dEZsb3dSZXZlcnNlZCgpIC8vIFJUTAor
ICAgICAgICAtLSBpc1RleHRGbG93RmxpcHBlZCgpICAvLyB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9u
IHRvIG5vcm1hbAorICAgICAgICAtLSBpc1RleHRGbG93VmVydGljYWwoKSAvLyBUaGUgbGluZSBn
cm93cyB2ZXJ0aWNhbGx5CisKKyAgICAgICAgTWl4aW5nIFdyaXRpbmdNb2RlIGFuZCBUZXh0RGly
ZWN0aW9uIGludG8gVGV4dEZsb3cgYW5kIGNob29zaW5nIHRoZWlyIHZhbHVlcworICAgICAgICBj
YXJlZnVsbHkgdG8gZWFzZSBpbXBsZW1lbnRpbmcgdGhlIGFib3ZlIGZ1bmN0aW9ucyBjYW4gbWFr
ZSB0aGluZ3MgY2xlYXJlci4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhCb3guY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzOgorICAgICAgICBSZW1vdmUgTGVuZ3RoQm94LmNwcCBzaW5jZSBhbGwgaXRzIGZ1bmN0aW9u
cyBiZWNvbWUgc2luZ2xlIGxpbmUgZnVuY3Rpb25zCisgICAgICAgIGFuZCBjb3VsZCBiZSBtb3Zl
ZCB0byB0aGUgaGVhZGVyIGZpbGUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0
aEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpMZW5ndGhCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpsZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aEJv
eDo6cmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94Ojp0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6TGVuZ3RoQm94Ojpib3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6Om9wZXJhdG9yIT0pOiBVc2UgYW4gYXJyYXkg
b2YgTGVuZ3RocyBmb3IgdGhlIGZvdXIgc2lkZXMuCisgICAgICAgIEFuZCB1c2UgdGhlIGVudW0g
UGh5c2ljYWxCb3hTaWRlIHRvIGFjY2VzcyB0aGlzIGFycmF5LgorCisgICAgICAgIChXZWJDb3Jl
OjpMZW5ndGhCb3g6OmlzWmVybyk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6Om5vblpl
cm8pOiBEZWxldGVkLgorICAgICAgICBVc2UgaXNaZXJvKCkgaW5zdGVhZCBvZiBub25aZXJvKCkg
c2luY2UgdGhlIGZvcm1lciBpcyBjbGVhcmVyLgorCisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhC
b3g6OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6OmFmdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3Ro
Qm94OjplbmQpOgorICAgICAgICBVc2UgdGhlIG1hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZSgp
IGdldCB0aGUgcGh5c2ljYWwgc2lkZSBvZiB0aGUgYm94IGJhc2VkCisgICAgICAgIG9uIHRoZSBk
aXJlY3Rpb24gYW5kIHRoZSB3cml0aW5nIG1vZGUuIAorICAgICAgICAKKyAgICAgICAgKiBjc3Mv
Q1NTUHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZVRvUGh5c2ljYWxQcm9w
ZXJ0eSk6IEluc3RlYWQgb2YgaGFuZGxpbmcgdGhlIGVpZ2h0IHBvc3NpYmxlCisgICAgICAgIGNh
c2VzIG9mIHRoZSB0ZXh0IGZsb3dzIG9uZSBieSBvbmUsIHdlIGNhbiBhbmFseXplIHRoZSB0ZXh0
IGZsb3cgYW5kIHN3YXAgdGhlCisgICAgICAgIHNpZGUgcHJvcGVydHkgaW5kZXggdG8gZ2V0IHRo
ZSBwcm9wZXIgdmFsdWUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEZs
YWdzLmg6IFVzdWFsbHkgdGhlIGRlZmF1bHQgdmFsdWUgaXMgZGVmaW5lZCBmaXJzdC4KKyAgICAg
ICAgQW5kIGlmIHRoZSB2YWx1ZSBpcyBpbnRlZ2VyIG9yIGVudW0sIGl0IHNob3VsZCBiZSBlcXVh
bCB0byB6ZXJvLiBTaW5jZSBMVFIKKyAgICAgICAgaXMgdGhlIGRlZmF1bHQgZm9yIHRoZSB0ZXh0
IGRpcmVjdGlvbiwgaXQgc2hvdWxkIGJlIGRlZmluZWQgYmVmb3JlIFJUTC4KKyAgICAgICAgCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6
bWFrZVRleHRGbG93KTogIERlZmluaW5nIGEgZnVuY3Rpb24gdG8gbWFrZSBhIFRleHRGbG93IG91
dCBmcm9tCisgICAgICAgIFdyaXRpbmdNb2RlIGFuZCBUZXh0RGlyZWN0aW9uLgorICAgICAgICAK
KyAgICAgICAgKFdlYkNvcmU6OmlzVGV4dEZsb3dSZXZlcnNlZCk6IFJldHVybnMgdHJ1ZSBpZiB0
aGUgdGV4dCBkaXJlY3Rpb24gaXMgUlRMLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6Omlz
VGV4dEZsb3dGbGlwcGVkKTogUmV0dXJucyB0cnVlIGlmIGJsb2NrIGdyb3dpbmcgZGlyZWN0aW9u
CisgICAgICAgIGlzIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gbm9ybWFsLgorICAgICAg
ICAKKyAgICAgICAgKFdlYkNvcmU6OmlzVGV4dEZsb3dWZXJ0aWNhbCk6CisgICAgICAgIChXZWJD
b3JlOjppc1ZlcnRpY2FsV3JpdGluZ01vZGUpOiBSZXR1cm5zIHRydWUgaWYgVGhlIGxpbmUgZ3Jv
d3MgdmVydGljYWxseS4KKworICAgICAgICAoV2ViQ29yZTo6aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUpOiAKKyAgICAgICAgKFdlYkNvcmU6OmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUpOiBVc2UgdGhlIHRleHQg
ZmxvdyBmdW5jdGlvbnMgaW5zdGVhZC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjptYXBM
b2dpY2FsVG9QaHlzaWNhbEJveFNpZGUpOiBJdCBtYXBzIGEgbG9naWNhbCBzaWRlIG9mIGEgYm94
CisgICAgICAgIGdpdmVuIHRoZSBjdXJyZW50IHRleHQgZGlyZWN0aW9uIGFuZCB0aGUgd3JpdGlu
ZyBtb2RlLgorCisgICAgICAgICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VTbGljZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVF1YWQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2V0Q2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6bm9uZURh
c2hib2FyZFJlZ2lvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
OiBVc2UgdGhlIExlbmd0aEJveCBzaWRlcycgYWNjZXNzIG1ldGhvZHMgaW5zdGVhZAorICAgICAg
ICBvZiBkaXJlY3RseSB1c2luZyB0aGUgc2lkZXMnIGFycmF5LgorCiAyMDE1LTA1LTExICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNtYWxsIHRpZHl1
cCBpbiBhbmltYXRpb25zIGNvZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
ODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMjAzOCw3ICsyMDM4LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL0tp
bGxSaW5nTm9uZS5jcHAKICAgICBwbGF0Zm9ybS9MYW5ndWFnZS5jcHAKICAgICBwbGF0Zm9ybS9M
ZW5ndGguY3BwCi0gICAgcGxhdGZvcm0vTGVuZ3RoQm94LmNwcAogICAgIHBsYXRmb3JtL0xpbmtI
YXNoLmNwcAogICAgIHBsYXRmb3JtL0xvZ2dpbmcuY3BwCiAgICAgcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvagkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODAwNiw3ICs4MDA2
LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXFVSTC5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMYW5ndWFnZS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMZW5ndGguY3BwIiAvPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGVuZ3RoQm94LmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExpbmtIYXNoLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExvY2FsaXplZFN0cmluZ3MuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTG9nZ2luZy5jcHAiIC8+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCShyZXZpc2lvbiAxODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTExMTMsOSArMTExMyw2
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMZW5ndGguY3BwIj4KICAg
ICAgIDxGaWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExlbmd0aEJveC5jcHAiPgotICAgICAgPEZpbHRl
cj5wbGF0Zm9ybTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cTGlua0hhc2guY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm08
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4NDExNikKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNjA1LDcgKzYwNSw2IEBACiAJCTE0NDc2QUE4MTVEQzRCQjEwMDMwNURCMiAvKiBX
cml0aW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQ0NzZBQTcxNURDNEJCMTAwMzA1REIyIC8qIFdyaXRpbmdNb2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ0OUUyNEMxMDdENEE4NDAw
QjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDQ5RTI0QTEwN0Q0QTg0MDBCNTc5M0YgLyogSlNDYWxsYmFja0Rh
dGEuaCAqLzsgfTsKIAkJMTQ0OUUyODcxMDdENERCNDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDlF
Mjg2MTA3RDREQjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5jcHAgKi87IH07Ci0JCTE0NkND
MTE1MTU2OTg4RTQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ2Q0MxMTMxNTY5ODhCRDAwMTA5RTM3IC8qIExl
bmd0aEJveC5jcHAgKi87IH07CiAJCTE0NzdFNzc2MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2Fj
aGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3
N0U3NzQwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgKi87IH07CiAJCTE0NzdFNzc3
MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NzdFNzc1MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2Fj
aGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
NDc5RkFFRDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDc5RkFFNTEwOUFFMzc1MDBERUQ2NTUg
LyogUmVuZGVyUnVieS5jcHAgKi87IH07CkBAIC03NjgwLDcgKzc2NzksNiBAQAogCQkxNDQ3NkFB
NzE1REM0QkIxMDAzMDVEQjIgLyogV3JpdGluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV3JpdGluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTQ0OUUyNEExMDdENEE4NDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FsbGJhY2tEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0NDlFMjg2MTA3RDREQjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbGxiYWNrRGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0NkNDMTEzMTU2OTg4QkQwMDEwOUUz
NyAvKiBMZW5ndGhCb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TGVuZ3RoQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ3N0U3NzQwQkY0
MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUGFnZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTQ3N0U3NzUwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGFnZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTE0NzlGQUU1MTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclJ1YnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjE3NjAsNyArMjE3NTgsNiBAQAogCQkJCTE0MURDMDQ3MTY0ODM0
OEYwMDM3MUU1QSAvKiBMYXlvdXRVbml0LmggKi8sCiAJCQkJQkNFNjVCRTgwRUFDREYxNjAwN0U0
NTMzIC8qIExlbmd0aC5jcHAgKi8sCiAJCQkJQkNFNjVCRTkwRUFDREYxNjAwN0U0NTMzIC8qIExl
bmd0aC5oICovLAotCQkJCTE0NkNDMTEzMTU2OTg4QkQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3Bw
ICovLAogCQkJCUJDRkY2NDhGMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCAqLywKIAkJ
CQlCQ0ZGNjQ5MDBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oICovLAogCQkJCUE3QUQy
Rjg1MEVDODlEMDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5jcHAgKi8sCkBAIC0yOTMwNiw3ICsyOTMw
Myw2IEBACiAJCQkJNTEyREQ4RjQwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hpdmUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCMjQxN0IwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2Fj
eVdlYkFyY2hpdmVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0U2NUJFQTBFQUNERjE2MDA3
RTQ1MzMgLyogTGVuZ3RoLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTE0NkNDMTE1MTU2OTg4RTQw
MDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTU1RjQ5N0ExNTFC
ODg4MDAwQkI2N0RCIC8qIExlbmd0aEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RkI2OThDQzE4MzNFRTBEMDAxNThBMzEgLyogTGluZUJyZWFrZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODlCNUVBQTExMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuY3BwIGluIFNvdXJj
ZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDE4NDEx
NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU0LDExMiArNTQsMTAgQEAgdm9pZCBDU1NQcm9wZXJ0eTo6d3JhcFZhbHVlSW5Db21tYVNl
cGFyYQogICAgIG1fdmFsdWUgPSBXVEY6Om1vdmUobGlzdCk7CiB9CiAKLWVudW0gTG9naWNhbEJv
eFNpZGUgeyBCZWZvcmVTaWRlLCBFbmRTaWRlLCBBZnRlclNpZGUsIFN0YXJ0U2lkZSB9OwotZW51
bSBQaHlzaWNhbEJveFNpZGUgeyBUb3BTaWRlLCBSaWdodFNpZGUsIEJvdHRvbVNpZGUsIExlZnRT
aWRlIH07Ci0KIHN0YXRpYyBDU1NQcm9wZXJ0eUlEIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHko
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2Fs
Qm94U2lkZSBsb2dpY2FsU2lkZSwgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRo
YW5kKQogewotICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKSB7Ci0gICAgICAgIGlmICh3cml0aW5n
TW9kZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlKSB7Ci0gICAgICAgICAgICAvLyBUaGUgY29t
bW9uIGNhc2UuIFRoZSBsb2dpY2FsIGFuZCBwaHlzaWNhbCBib3ggc2lkZXMgbWF0Y2guCi0gICAg
ICAgICAgICAvLyBMZWZ0ID0gU3RhcnQsIFJpZ2h0ID0gRW5kLCBCZWZvcmUgPSBUb3AsIEFmdGVy
ID0gQm90dG9tCi0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtsb2dp
Y2FsU2lkZV07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAod3JpdGluZ01vZGUgPT0gQm90dG9t
VG9Ub3BXcml0aW5nTW9kZSkgewotICAgICAgICAgICAgLy8gU3RhcnQgPSBMZWZ0LCBFbmQgPSBS
aWdodCwgQmVmb3JlID0gQm90dG9tLCBBZnRlciA9IFRvcC4KLSAgICAgICAgICAgIHN3aXRjaCAo
bG9naWNhbFNpZGUpIHsKLSAgICAgICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAg
ICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICAgICAgICAg
IGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtSaWdodFNpZGVdOwotICAgICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAg
ICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICh3
cml0aW5nTW9kZSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlKSB7Ci0gICAgICAgICAgICAvLyBT
dGFydCA9IFRvcCwgRW5kID0gQm90dG9tLCBCZWZvcmUgPSBMZWZ0LCBBZnRlciA9IFJpZ2h0Lgot
ICAgICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewotICAgICAgICAgICAgY2FzZSBTdGFy
dFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9w
U2lkZV07Ci0gICAgICAgICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgICAgICAgICBjYXNlIEJl
Zm9yZVNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClb
TGVmdFNpZGVdOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
c2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gU3RhcnQgPSBUb3AsIEVuZCA9IEJvdHRvbSwgQmVmb3JlID0gUmln
aHQsIEFmdGVyID0gTGVmdAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAg
IGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVz
KClbVG9wU2lkZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBz
aG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNp
ZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVd
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0
aWVzKClbTGVmdFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdyaXRpbmdNb2Rl
ID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8gU3RhcnQgPSBSaWdodCwg
RW5kID0gTGVmdCwgQmVmb3JlID0gVG9wLCBBZnRlciA9IEJvdHRvbQotICAgICAgICBzd2l0Y2gg
KGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0
dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKLSAgICAgICAgY2FzZSBFbmRT
aWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVd
OwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5k
LnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUpIHsKLSAg
ICAgICAgLy8gU3RhcnQgPSBSaWdodCwgRW5kID0gTGVmdCwgQmVmb3JlID0gQm90dG9tLCBBZnRl
ciA9IFRvcAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3Rh
cnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRT
aWRlXTsKLSAgICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFu
ZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAg
ICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1Rv
cFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09IExlZnRU
b1JpZ2h0V3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRv
cCwgQmVmb3JlID0gTGVmdCwgQWZ0ZXIgPSBSaWdodAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxT
aWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0
aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAg
ICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwotICAgICAg
ICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtMZWZ0U2lkZV07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
Ly8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRvcCwgQmVmb3JlID0gUmlnaHQsIEFmdGVyID0gTGVm
dAotICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKLSAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAg
ICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgY2FzZSBF
bmRTaWRlOgotICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsK
LSAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGll
cygpW1JpZ2h0U2lkZV07Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgIH0KKyAgICBQaHlzaWNhbEJveFNpZGUgcGh5c2lj
YWxTaWRlID0gbWFwTG9naWNhbFRvUGh5c2ljYWxCb3hTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5n
TW9kZSwgZGlyZWN0aW9uKSwgbG9naWNhbFNpZGUpOworICAgIHJldHVybiBzaG9ydGhhbmQucHJv
cGVydGllcygpW3BoeXNpY2FsU2lkZV07CiB9CiAKIGVudW0gTG9naWNhbEV4dGVudCB7IExvZ2lj
YWxXaWR0aCwgTG9naWNhbEhlaWdodCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Rv
U3R5bGVNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxl
TWFwLmNwcAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5
bGVNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTgsMjEgKzYxOCwyMSBAQCB2b2lkIENTU1Rv
U3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlU2xpCiAgICAgTGVuZ3RoQm94IGJveDsKICAgICBR
dWFkKiBzbGljZXMgPSBib3JkZXJJbWFnZVNsaWNlLnNsaWNlcygpOwogICAgIGlmIChzbGljZXMt
PnRvcCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNl
cy0+dG9wKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICBib3gudG9wKCkg
PSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAg
ZWxzZQotICAgICAgICBib3gubV90b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0SW50VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgICAgIGJveC50
b3AoKSA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQZXJj
ZW50YWdlKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgp
LT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVu
Z3RoKHNsaWNlcy0+Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgIGVs
c2UKLSAgICAgICAgYm94Lm1fYm90dG9tID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+
Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAg
ICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+Z2V0Rmxv
YXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKICAgICBpZiAo
c2xpY2VzLT5sZWZ0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9sZWZ0ID0gTGVu
Z3RoKHNsaWNlcy0+bGVmdCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAg
Ym94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVy
Y2VudCk7CiAgICAgZWxzZQotICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVm
dCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsK
KyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0SW50VmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CiAgICAgaWYgKHNsaWNlcy0+
cmlnaHQoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX3JpZ2h0ID0gTGVuZ3RoKHNs
aWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIGJveC5y
aWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2Vu
dCk7CiAgICAgZWxzZQotICAgICAgICBib3gubV9yaWdodCA9IExlbmd0aChzbGljZXMtPnJpZ2h0
KCktPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwor
ICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwogICAgIGltYWdlLnNldElt
YWdlU2xpY2VzKGJveCk7CiAKICAgICAvLyBTZXQgb3VyIGZpbGwgbW9kZS4KQEAgLTY1NCwzMiAr
NjU0LDMyIEBAIExlbmd0aEJveCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWEKICAgICBM
ZW5ndGhCb3ggYm94OyAvLyBEZWZhdWx0cyB0byAnYXV0bycgc28gd2UgZG9uJ3QgaGF2ZSB0byBo
YW5kbGUgdGhhdCBleHBsaWNpdGx5IGJlbG93LgogICAgIFF1YWQqIHNsaWNlcyA9IGJvcmRlcldp
ZHRocy5nZXRRdWFkVmFsdWUoKTsKICAgICBpZiAoc2xpY2VzLT50b3AoKS0+aXNOdW1iZXIoKSkK
LSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldEludFZhbHVlKCks
IFJlbGF0aXZlKTsKKyAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdl
dEludFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChzbGljZXMtPnRvcCgpLT5pc1Bl
cmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdl
dERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQp
OworICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CiAgICAgZWxz
ZSBpZiAoc2xpY2VzLT50b3AoKS0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAg
ICAgYm94Lm1fdG9wID0gc2xpY2VzLT50b3AoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZl
cnNpb25EYXRhKTsKKyAgICAgICAgYm94LnRvcCgpID0gc2xpY2VzLT50b3AoKS0+Y29tcHV0ZUxl
bmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIGlmIChzbGljZXMtPnJpZ2h0KCkt
PmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC5tX3JpZ2h0ID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQo
KS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0
aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlm
IChzbGljZXMtPnJpZ2h0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9yaWdodCA9
IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0
aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+cmlnaHQoKS0+Z2V0
VmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAgICAgYm94Lm1fcmlnaHQgPSBzbGljZXMt
PnJpZ2h0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAg
IGJveC5yaWdodCgpID0gc2xpY2VzLT5yaWdodCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29u
dmVyc2lvbkRhdGEpOwogCiAgICAgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmlzTnVtYmVyKCkpCi0g
ICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXRJbnRWYWx1
ZSgpLCBSZWxhdGl2ZSk7CisgICAgICAgIGJveC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJv
dHRvbSgpLT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5i
b3R0b20oKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChz
bGljZXMtPmJvdHRvbSgpLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BF
UkNFTlRBR0UpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNl
cy0+Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VO
VEFHRSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmdldFZhbHVl
SUQoKSAhPSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IHNsaWNlcy0+Ym90
dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJv
eC5ib3R0b20oKSA9IHNsaWNlcy0+Ym90dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252
ZXJzaW9uRGF0YSk7CiAKICAgICBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzTnVtYmVyKCkpCi0gICAg
ICAgIGJveC5tX2xlZnQgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldEludFZhbHVlKCksIFJl
bGF0aXZlKTsKKyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0
SW50VmFsdWUoKSwgUmVsYXRpdmUpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc1Bl
cmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+
Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2Vu
dCk7CisgICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldERvdWJs
ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwogICAg
IGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQot
ICAgICAgICBib3gubV9sZWZ0ID0gc2xpY2VzLT5sZWZ0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3Ro
Pihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJveC5sZWZ0KCkgPSBzbGljZXMtPmxlZnQoKS0+
Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIHJldHVybiBib3g7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5jcHAJKHJldmlzaW9uIDE4
NDExNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGVu
Z3RoQm94LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgTGVuZ3RoJiBMZW5ndGhC
b3g6OmxvZ2ljYWxMZWZ0KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAotewotICAgIHJl
dHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyBtX2xlZnQgOiBtX3Rv
cDsKLX0KLQotY29uc3QgTGVuZ3RoJiBMZW5ndGhCb3g6OmxvZ2ljYWxSaWdodChXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUod3JpdGluZ01vZGUpID8gbV9yaWdodCA6IG1fYm90dG9tOwotfQotCi1jb25zdCBMZW5ndGgm
IExlbmd0aEJveDo6YmVmb3JlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAotewotICAg
IHN3aXRjaCAod3JpdGluZ01vZGUpIHsKLSAgICBjYXNlIFRvcFRvQm90dG9tV3JpdGluZ01vZGU6
Ci0gICAgICAgIHJldHVybiBtX3RvcDsKLSAgICBjYXNlIEJvdHRvbVRvVG9wV3JpdGluZ01vZGU6
Ci0gICAgICAgIHJldHVybiBtX2JvdHRvbTsKLSAgICBjYXNlIExlZnRUb1JpZ2h0V3JpdGluZ01v
ZGU6Ci0gICAgICAgIHJldHVybiBtX2xlZnQ7Ci0gICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdN
b2RlOgotICAgICAgICByZXR1cm4gbV9yaWdodDsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIG1fdG9wOwotfQotCi1jb25zdCBMZW5ndGgmIExlbmd0aEJveDo6
YWZ0ZXIoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIGNvbnN0Ci17Ci0gICAgc3dpdGNoICh3cml0
aW5nTW9kZSkgewotICAgIGNhc2UgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZToKLSAgICAgICAgcmV0
dXJuIG1fYm90dG9tOwotICAgIGNhc2UgQm90dG9tVG9Ub3BXcml0aW5nTW9kZToKLSAgICAgICAg
cmV0dXJuIG1fdG9wOwotICAgIGNhc2UgTGVmdFRvUmlnaHRXcml0aW5nTW9kZToKLSAgICAgICAg
cmV0dXJuIG1fcmlnaHQ7Ci0gICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlOgotICAgICAg
ICByZXR1cm4gbV9sZWZ0OwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gbV9ib3R0b207Ci19Ci0KLWNvbnN0IExlbmd0aCYgTGVuZ3RoQm94OjpzdGFydChXcml0
aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Ci17Ci0g
ICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSkKLSAgICAgICAgcmV0
dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IG1fbGVmdCA6IG1fcmlnaHQ7
Ci0gICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IG1fdG9wIDog
bV9ib3R0b207Ci19Ci0KLWNvbnN0IExlbmd0aCYgTGVuZ3RoQm94OjplbmQoV3JpdGluZ01vZGUg
d3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAotewotICAgIGlmIChp
c0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkpCi0gICAgICAgIHJldHVybiBpc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBtX3JpZ2h0IDogbV9sZWZ0OwotICAgIHJl
dHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBtX2JvdHRvbSA6IG1fdG9w
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGhCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZW5ndGhCb3guaAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHly
aWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICAgIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAgICBDb3B5cmlnaHQgKGMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCkBAIC0zMCw3MyArMzAsNjYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dHJ1Y3QgTGVuZ3RoQm94IHsKICAgICBMZW5ndGhCb3goKQorICAgICAgICA6IG1fc2lkZXMoNCkK
ICAgICB7CiAgICAgfQogCiAgICAgZXhwbGljaXQgTGVuZ3RoQm94KExlbmd0aFR5cGUgdHlwZSkK
LSAgICAgICAgOiBtX2xlZnQodHlwZSkKLSAgICAgICAgLCBtX3JpZ2h0KHR5cGUpCi0gICAgICAg
ICwgbV90b3AodHlwZSkKLSAgICAgICAgLCBtX2JvdHRvbSh0eXBlKQorICAgICAgICA6IG1fc2lk
ZXMoeyB0eXBlLCB0eXBlLCB0eXBlLCB0eXBlIH0pCiAgICAgewogICAgIH0KIAogICAgIGV4cGxp
Y2l0IExlbmd0aEJveChpbnQgdikKLSAgICAgICAgOiBtX2xlZnQoTGVuZ3RoKHYsIEZpeGVkKSkK
LSAgICAgICAgLCBtX3JpZ2h0KExlbmd0aCh2LCBGaXhlZCkpCi0gICAgICAgICwgbV90b3AoTGVu
Z3RoKHYsIEZpeGVkKSkKLSAgICAgICAgLCBtX2JvdHRvbShMZW5ndGgodiwgRml4ZWQpKQorICAg
ICAgICA6IG1fc2lkZXMoeyBMZW5ndGgodiwgRml4ZWQpLCBMZW5ndGgodiwgRml4ZWQpLCBMZW5n
dGgodiwgRml4ZWQpLCBMZW5ndGgodiwgRml4ZWQpIH0pCiAgICAgewogICAgIH0KIAogICAgIExl
bmd0aEJveChMZW5ndGggdG9wLCBMZW5ndGggcmlnaHQsIExlbmd0aCBib3R0b20sIExlbmd0aCBs
ZWZ0KQotICAgICAgICA6IG1fbGVmdChXVEY6Om1vdmUobGVmdCkpCi0gICAgICAgICwgbV9yaWdo
dChXVEY6Om1vdmUocmlnaHQpKQotICAgICAgICAsIG1fdG9wKFdURjo6bW92ZSh0b3ApKQotICAg
ICAgICAsIG1fYm90dG9tKFdURjo6bW92ZShib3R0b20pKQorICAgICAgICA6IG1fc2lkZXMoeyBX
VEY6Om1vdmUodG9wKSwgV1RGOjptb3ZlKHJpZ2h0KSwgV1RGOjptb3ZlKGJvdHRvbSksIFdURjo6
bW92ZShsZWZ0KSB9KQogICAgIHsKICAgICB9CiAKICAgICBMZW5ndGhCb3goaW50IHRvcCwgaW50
IHJpZ2h0LCBpbnQgYm90dG9tLCBpbnQgbGVmdCkKLSAgICAgICAgOiBtX2xlZnQoTGVuZ3RoKGxl
ZnQsIEZpeGVkKSkKLSAgICAgICAgLCBtX3JpZ2h0KExlbmd0aChyaWdodCwgRml4ZWQpKQotICAg
ICAgICAsIG1fdG9wKExlbmd0aCh0b3AsIEZpeGVkKSkKLSAgICAgICAgLCBtX2JvdHRvbShMZW5n
dGgoYm90dG9tLCBGaXhlZCkpCisgICAgICAgIDogbV9zaWRlcyh7IExlbmd0aCh0b3AsIEZpeGVk
KSwgTGVuZ3RoKHJpZ2h0LCBGaXhlZCksIExlbmd0aChib3R0b20sIEZpeGVkKSwgTGVuZ3RoKGxl
ZnQsIEZpeGVkKSB9KQogICAgIHsKICAgICB9CiAKLSAgICBjb25zdCBMZW5ndGgmIGxlZnQoKSBj
b25zdCB7IHJldHVybiBtX2xlZnQ7IH0KLSAgICBjb25zdCBMZW5ndGgmIHJpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gbV9yaWdodDsgfQotICAgIGNvbnN0IExlbmd0aCYgdG9wKCkgY29uc3QgeyByZXR1
cm4gbV90b3A7IH0KLSAgICBjb25zdCBMZW5ndGgmIGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1f
Ym90dG9tOyB9CisgICAgTGVuZ3RoJiBsZWZ0KCkgeyByZXR1cm4gbV9zaWRlc1tMZWZ0U2lkZV07
IH0KKyAgICBMZW5ndGgmIHJpZ2h0KCkgeyByZXR1cm4gbV9zaWRlc1tSaWdodFNpZGVdOyB9Cisg
ICAgTGVuZ3RoJiB0b3AoKSB7IHJldHVybiBtX3NpZGVzW1RvcFNpZGVdOyB9CisgICAgTGVuZ3Ro
JiBib3R0b20oKSB7IHJldHVybiBtX3NpZGVzW0JvdHRvbVNpZGVdOyB9CiAKLSAgICBjb25zdCBM
ZW5ndGgmIGxvZ2ljYWxMZWZ0KFdyaXRpbmdNb2RlKSBjb25zdDsKLSAgICBjb25zdCBMZW5ndGgm
IGxvZ2ljYWxSaWdodChXcml0aW5nTW9kZSkgY29uc3Q7CisgICAgY29uc3QgTGVuZ3RoJiBsZWZ0
KCkgY29uc3QgeyByZXR1cm4gbV9zaWRlc1tMZWZ0U2lkZV07IH0KKyAgICBjb25zdCBMZW5ndGgm
IHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zaWRlc1tSaWdodFNpZGVdOyB9CisgICAgY29uc3Qg
TGVuZ3RoJiB0b3AoKSBjb25zdCB7IHJldHVybiBtX3NpZGVzW1RvcFNpZGVdOyB9CisgICAgY29u
c3QgTGVuZ3RoJiBib3R0b20oKSBjb25zdCB7IHJldHVybiBtX3NpZGVzW0JvdHRvbVNpZGVdOyB9
CiAKLSAgICBjb25zdCBMZW5ndGgmIGJlZm9yZShXcml0aW5nTW9kZSkgY29uc3Q7Ci0gICAgY29u
c3QgTGVuZ3RoJiBhZnRlcihXcml0aW5nTW9kZSkgY29uc3Q7Ci0gICAgY29uc3QgTGVuZ3RoJiBz
dGFydChXcml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbikgY29uc3Q7Ci0gICAgY29uc3QgTGVuZ3Ro
JiBlbmQoV3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24pIGNvbnN0OworICAgIGNvbnN0IExlbmd0
aCYgYmVmb3JlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
biA9IExUUikgY29uc3QgeyByZXR1cm4gbV9zaWRlc1ttYXBMb2dpY2FsVG9QaHlzaWNhbEJveFNp
ZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBCZWZvcmVTaWRlKV07IH0K
KyAgICBjb25zdCBMZW5ndGgmIGFmdGVyKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbiA9IExUUikgY29uc3QgeyByZXR1cm4gbV9zaWRlc1ttYXBMb2dpY2Fs
VG9QaHlzaWNhbEJveFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBB
ZnRlclNpZGUpXTsgfQorICAgIGNvbnN0IExlbmd0aCYgc3RhcnQoV3JpdGluZ01vZGUgd3JpdGlu
Z01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBtX3Np
ZGVzW21hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUs
IGRpcmVjdGlvbiksIFN0YXJ0U2lkZSldOyB9CisgICAgY29uc3QgTGVuZ3RoJiBlbmQoV3JpdGlu
Z01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7
IHJldHVybiBtX3NpZGVzW21hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZShtYWtlVGV4dEZsb3co
d3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIEVuZFNpZGUpXTsgfQogCiAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IExlbmd0aEJveCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
bV9sZWZ0ID09IG90aGVyLm1fbGVmdCAmJiBtX3JpZ2h0ID09IG90aGVyLm1fcmlnaHQgJiYgbV90
b3AgPT0gb3RoZXIubV90b3AgJiYgbV9ib3R0b20gPT0gb3RoZXIubV9ib3R0b207CisgICAgICAg
IHJldHVybiBtX3NpZGVzID09IG90aGVyLm1fc2lkZXM7CiAgICAgfQogCiAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IExlbmd0aEJveCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgICAgIHJldHVybiBtX3NpZGVzICE9IG90aGVyLm1f
c2lkZXM7CiAgICAgfQogCi0gICAgYm9vbCBub25aZXJvKCkgY29uc3QKKyAgICBib29sIGlzWmVy
bygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gIShtX2xlZnQuaXNaZXJvKCkgJiYgbV9y
aWdodC5pc1plcm8oKSAmJiBtX3RvcC5pc1plcm8oKSAmJiBtX2JvdHRvbS5pc1plcm8oKSk7Cisg
ICAgICAgIGZvciAoYXV0byBzaWRlIDogbV9zaWRlcykgeworICAgICAgICAgICAgaWYgKCFzaWRl
LmlzWmVybygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBMZW5ndGggbV9sZWZ0OwotICAgIExlbmd0
aCBtX3JpZ2h0OwotICAgIExlbmd0aCBtX3RvcDsKLSAgICBMZW5ndGggbV9ib3R0b207Citwcml2
YXRlOgorICAgIFZlY3RvcjxMZW5ndGg+IG1fc2lkZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgJKHJl
dmlzaW9uIDE4NDExNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1lbnVtIFRleHREaXJlY3Rpb24geyBSVEwsIExUUiB9OworZW51bSBUZXh0RGlyZWN0aW9u
IHsgTFRSLCBSVEwgfTsKIAogZW51bSBUZXh0UmVuZGVyaW5nTW9kZSB7IEF1dG9UZXh0UmVuZGVy
aW5nLCBPcHRpbWl6ZVNwZWVkLCBPcHRpbWl6ZUxlZ2liaWxpdHksIEdlb21ldHJpY1ByZWNpc2lv
biB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5o
CShyZXZpc2lvbiAxODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1dyaXRp
bmdNb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChjKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNCwyNSArMzUsOTkgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogZW51bSBXcml0aW5nTW9kZSB7Ci0gICAgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwg
UmlnaHRUb0xlZnRXcml0aW5nTW9kZSwgTGVmdFRvUmlnaHRXcml0aW5nTW9kZSwgQm90dG9tVG9U
b3BXcml0aW5nTW9kZQorICAgIFRvcFRvQm90dG9tV3JpdGluZ01vZGUgPSAwLCAvLyBob3Jpem9u
dGFsLXRiCisgICAgQm90dG9tVG9Ub3BXcml0aW5nTW9kZSA9IDEsIC8vIGhvcml6b250YWwtYnQK
KyAgICBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlID0gMiwgLy8gdmVydGljYWwtbHIKKyAgICBSaWdo
dFRvTGVmdFdyaXRpbmdNb2RlID0gMywgLy8gdmVydGljYWwtcmwKIH07CiAKK2NvbnN0ZXhwciBp
bnQgbWFrZVRleHRGbG93KGludCB3cml0aW5nTW9kZSwgaW50IGRpcmVjdGlvbikKK3sKKyAgICBy
ZXR1cm4gKHdyaXRpbmdNb2RlKSA8PCAxIHwgKGRpcmVjdGlvbik7Cit9CisKKy8vIERlZmluZSB0
aGUgdGV4dCBmbG93IGluIHRlcm1zIG9mIHRoZSB3cml0aW5nIG1vZGUgYW5kIHRoZSB0ZXh0IGRp
cmVjdGlvbi4gVGhlIGZpcnN0CisvLyBwYXJ0IGlzIHRoZSBsaW5lIGdyb3dpbmcgZGlyZWN0aW9u
IGFuZCB0aGUgc2Vjb25kIHBhcnQgaXMgdGhlIGJsb2NrIGdyb3dpbmcgZGlyZWN0aW9uLgorZW51
bSBUZXh0RmxvdyB7CisgICAgVGV4dEZsb3dFYXN0U291dGggPSBtYWtlVGV4dEZsb3coVG9wVG9C
b3R0b21Xcml0aW5nTW9kZSwgTFRSKSwKKyAgICBUZXh0Rmxvd1dlc3RTb3V0aCA9IG1ha2VUZXh0
RmxvdyhUb3BUb0JvdHRvbVdyaXRpbmdNb2RlLCBSVEwpLAorICAgIFRleHRGbG93RWFzdE5vcnRo
ID0gbWFrZVRleHRGbG93KEJvdHRvbVRvVG9wV3JpdGluZ01vZGUsIExUUiksCisgICAgVGV4dEZs
b3dXZXN0Tm9ydGggPSBtYWtlVGV4dEZsb3coQm90dG9tVG9Ub3BXcml0aW5nTW9kZSwgUlRMKSwK
KyAgICBUZXh0Rmxvd1NvdXRoRWFzdCA9IG1ha2VUZXh0RmxvdyhMZWZ0VG9SaWdodFdyaXRpbmdN
b2RlLCBMVFIpLAorICAgIFRleHRGbG93U291dGhXZXN0ID0gbWFrZVRleHRGbG93KExlZnRUb1Jp
Z2h0V3JpdGluZ01vZGUsIFJUTCksCisgICAgVGV4dEZsb3dOb3J0aEVhc3QgPSBtYWtlVGV4dEZs
b3coUmlnaHRUb0xlZnRXcml0aW5nTW9kZSwgTFRSKSwKKyAgICBUZXh0Rmxvd05vcnRoV2VzdCA9
IG1ha2VUZXh0RmxvdyhSaWdodFRvTGVmdFdyaXRpbmdNb2RlLCBSVEwpCit9OworCitpbmxpbmUg
VGV4dEZsb3cgbWFrZVRleHRGbG93KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0
aW9uIGRpcmVjdGlvbikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEZsb3c+KG1ha2VU
ZXh0RmxvdyhzdGF0aWNfY2FzdDxpbnQ+KHdyaXRpbmdNb2RlKSwgc3RhdGljX2Nhc3Q8aW50Pihk
aXJlY3Rpb24pKSk7Cit9CisKK2NvbnN0IHVuc2lnbmVkIFRleHRGbG93UmV2ZXJzZWRNYXNrID0g
MTsKK2NvbnN0IHVuc2lnbmVkIFRleHRGbG93RmxpcHBlZE1hc2sgPSAyOworY29uc3QgdW5zaWdu
ZWQgVGV4dEZsb3dWZXJ0aWNhbE1hc2sgPSA0OworCitpbmxpbmUgYm9vbCBpc1RleHRGbG93UmV2
ZXJzZWQoVGV4dEZsb3cgdGV4dGZsb3cpCit7CisgICAgcmV0dXJuIHRleHRmbG93ICYgVGV4dEZs
b3dSZXZlcnNlZE1hc2s7Cit9CisKK2lubGluZSBib29sIGlzVGV4dEZsb3dGbGlwcGVkKFRleHRG
bG93IHRleHRmbG93KQoreworICAgIHJldHVybiB0ZXh0ZmxvdyAmIFRleHRGbG93RmxpcHBlZE1h
c2s7Cit9CisKK2lubGluZSBib29sIGlzVGV4dEZsb3dWZXJ0aWNhbChUZXh0RmxvdyB0ZXh0Zmxv
dykKK3sKKyAgICByZXR1cm4gdGV4dGZsb3cgJiBUZXh0Rmxvd1ZlcnRpY2FsTWFzazsKK30KKwor
Ly8gTGluZXMgaGF2ZSB2ZXJ0aWNhbCBvcmllbnRhdGlvbjsgbW9kZXMgdmVydGljYWwtbHIgb3Ig
dmVydGljYWwtcmwuCitpbmxpbmUgYm9vbCBpc1ZlcnRpY2FsV3JpdGluZ01vZGUoV3JpdGluZ01v
ZGUgd3JpdGluZ01vZGUpCit7CisgICAgcmV0dXJuIGlzVGV4dEZsb3dWZXJ0aWNhbChtYWtlVGV4
dEZsb3cod3JpdGluZ01vZGUsIExUUikpOworfQorCisvLyBCbG9jayBwcm9ncmVzc2lvbiBpbmNy
ZWFzZXMgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiB0byBub3JtYWw7IG1vZGVzIHZlcnRpY2Fs
LXJsIG9yIGhvcml6b250YWwtYnQuCitpbmxpbmUgYm9vbCBpc0ZsaXBwZWRCbG9ja3NXcml0aW5n
TW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkKK3sKKyAgICByZXR1cm4gaXNUZXh0Rmxvd0Zs
aXBwZWQobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBMVFIpKTsKK30KKwogLy8gTGluZXMgaGF2
ZSBob3Jpem9udGFsIG9yaWVudGF0aW9uOyBtb2RlcyBob3Jpem9udGFsLXRiIG9yIGhvcml6b250
YWwtYnQuCiBpbmxpbmUgYm9vbCBpc0hvcml6b250YWxXcml0aW5nTW9kZShXcml0aW5nTW9kZSB3
cml0aW5nTW9kZSkKIHsKLSAgICByZXR1cm4gd3JpdGluZ01vZGUgPT0gVG9wVG9Cb3R0b21Xcml0
aW5nTW9kZSB8fCB3cml0aW5nTW9kZSA9PSBCb3R0b21Ub1RvcFdyaXRpbmdNb2RlOworICAgIHJl
dHVybiAhaXNWZXJ0aWNhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKTsKIH0KIAogLy8gQm90dG9t
IG9mIHRoZSBsaW5lIG9jY3VycyBlYXJsaWVyIGluIHRoZSBibG9jazsgbW9kZXMgdmVydGljYWwt
bHIgb3IgaG9yaXpvbnRhbC1idC4KIGlubGluZSBib29sIGlzRmxpcHBlZExpbmVzV3JpdGluZ01v
ZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCiB7Ci0gICAgcmV0dXJuIHdyaXRpbmdNb2RlID09
IExlZnRUb1JpZ2h0V3JpdGluZ01vZGUgfHwgd3JpdGluZ01vZGUgPT0gQm90dG9tVG9Ub3BXcml0
aW5nTW9kZTsKKyAgICByZXR1cm4gaXNWZXJ0aWNhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSAh
PSBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSh3cml0aW5nTW9kZSk7CiB9CiAKLS8vIEJsb2Nr
IHByb2dyZXNzaW9uIGluY3JlYXNlcyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIHRvIG5vcm1h
bDsgbW9kZXMgdmVydGljYWwtcmwgb3IgaG9yaXpvbnRhbC1idC4KLWlubGluZSBib29sIGlzRmxp
cHBlZEJsb2Nrc1dyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQorZW51bSBMb2dp
Y2FsQm94U2lkZSB7IEJlZm9yZVNpZGUsIEVuZFNpZGUsIEFmdGVyU2lkZSwgU3RhcnRTaWRlIH07
CitlbnVtIFBoeXNpY2FsQm94U2lkZSB7IFRvcFNpZGUsIFJpZ2h0U2lkZSwgQm90dG9tU2lkZSwg
TGVmdFNpZGUgfTsKKworaW5saW5lIFBoeXNpY2FsQm94U2lkZSBtYXBMb2dpY2FsVG9QaHlzaWNh
bEJveFNpZGUoVGV4dEZsb3cgdGV4dGZsb3csIExvZ2ljYWxCb3hTaWRlIGxvZ2ljYWxTaWRlKQog
ewotICAgIHJldHVybiB3cml0aW5nTW9kZSA9PSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlIHx8IHdy
aXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGU7CisgICAgaW50IHBoeXNpY2FsU2lk
ZSA9IGxvZ2ljYWxTaWRlOworICAgIGJvb2wgaXNTdGFydEVuZFNpZGUgPSBwaHlzaWNhbFNpZGUg
JSAyID09IDE7CisKKyAgICAvLyBTd2FwIHRoZSBsZWZ0L3JpZ2h0IHNpZGUgd2l0aCB0aGUgdG9w
L2JvdHRvbSBzaWRlIGlmIHRleHRGbG93IGlzIHZlcnRpY2FsCisgICAgaWYgKGlzVGV4dEZsb3dW
ZXJ0aWNhbCh0ZXh0ZmxvdykpIHsKKyAgICAgICAgaWYgKGlzU3RhcnRFbmRTaWRlKQorICAgICAg
ICAgICAgcGh5c2ljYWxTaWRlID0gKHBoeXNpY2FsU2lkZSArIDEpICUgNDsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcGh5c2ljYWxTaWRlID0gKHBoeXNpY2FsU2lkZSArIDMpICUgNDsKKyAg
ICB9CisKKyAgICAvLyBTd2FwIHRoZSBsZWZ0IGFuZCByaWdodCBzaWRlcyBpZiB0ZXh0RmxvdyBp
cyByZXZlcnNlZCBhbmQgdGhlIHRvcCBhbmQgYm90dG9tIHNpZGVzIGlmIHRleHRGbG93IGlzIGZs
aXBwZWQKKyAgICBpZiAoKGlzU3RhcnRFbmRTaWRlICYmIGlzVGV4dEZsb3dSZXZlcnNlZCh0ZXh0
ZmxvdykpIHx8ICghaXNTdGFydEVuZFNpZGUgJiYgaXNUZXh0Rmxvd0ZsaXBwZWQodGV4dGZsb3cp
KSkKKyAgICAgICAgcGh5c2ljYWxTaWRlID0gKHBoeXNpY2FsU2lkZSArIDIpICUgNDsKKworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxQaHlzaWNhbEJveFNpZGU+KHBoeXNpY2FsU2lkZSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTIxLDEwICs5MjEsMTAgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0TWFza0ltYWdlKGNvbnN0IFZl
Ywogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q2xpcChMZW5ndGggdG9wLCBMZW5ndGggcmlnaHQsIExl
bmd0aCBib3R0b20sIExlbmd0aCBsZWZ0KQogewogICAgIFN0eWxlVmlzdWFsRGF0YSogZGF0YSA9
IHZpc3VhbC5hY2Nlc3MoKTsKLSAgICBkYXRhLT5jbGlwLm1fdG9wID0gdG9wOwotICAgIGRhdGEt
PmNsaXAubV9yaWdodCA9IHJpZ2h0OwotICAgIGRhdGEtPmNsaXAubV9ib3R0b20gPSBib3R0b207
Ci0gICAgZGF0YS0+Y2xpcC5tX2xlZnQgPSBsZWZ0OworICAgIGRhdGEtPmNsaXAudG9wKCkgPSB0
b3A7CisgICAgZGF0YS0+Y2xpcC5yaWdodCgpID0gcmlnaHQ7CisgICAgZGF0YS0+Y2xpcC5ib3R0
b20oKSA9IGJvdHRvbTsKKyAgICBkYXRhLT5jbGlwLmxlZnQoKSA9IGxlZnQ7CiB9CiAKIHZvaWQg
UmVuZGVyU3R5bGU6OmFkZEN1cnNvcihQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlLCBjb25z
dCBJbnRQb2ludCYgaG90U3BvdCkKQEAgLTEzMDksMTAgKzEzMDksMTAgQEAgY29uc3QgVmVjdG9y
PFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgUmVuZAogICAgIGlmICghbm9uZUxpc3RJbml0aWFsaXpl
ZCkgewogICAgICAgICBTdHlsZURhc2hib2FyZFJlZ2lvbiByZWdpb247CiAgICAgICAgIHJlZ2lv
bi5sYWJlbCA9ICIiOwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fdG9wICA9IExlbmd0aCgpOwot
ICAgICAgICByZWdpb24ub2Zmc2V0Lm1fcmlnaHQgPSBMZW5ndGgoKTsKLSAgICAgICAgcmVnaW9u
Lm9mZnNldC5tX2JvdHRvbSA9IExlbmd0aCgpOwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fbGVm
dCA9IExlbmd0aCgpOworICAgICAgICByZWdpb24ub2Zmc2V0LnRvcCgpICA9IExlbmd0aCgpOwor
ICAgICAgICByZWdpb24ub2Zmc2V0LnJpZ2h0KCkgPSBMZW5ndGgoKTsKKyAgICAgICAgcmVnaW9u
Lm9mZnNldC5ib3R0b20oKSA9IExlbmd0aCgpOworICAgICAgICByZWdpb24ub2Zmc2V0LmxlZnQo
KSA9IExlbmd0aCgpOwogICAgICAgICByZWdpb24udHlwZSA9IFN0eWxlRGFzaGJvYXJkUmVnaW9u
OjpOb25lOwogICAgICAgICBub25lTGlzdC5hcHBlbmQocmVnaW9uKTsKICAgICAgICAgbm9uZUxp
c3RJbml0aWFsaXplZCA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzMSwxMiAr
NTMxLDEyIEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVuZGVyU3R5bGUm
IG90aGVyKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVuZGVyU3R5bGUmIG90
aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIGJvb2wgaXNGbG9h
dGluZygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5pc0Zsb2F0aW5nKCk7IH0K
LSAgICBib29sIGhhc01hcmdpbigpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4ubm9u
WmVybygpOyB9CisgICAgYm9vbCBoYXNNYXJnaW4oKSBjb25zdCB7IHJldHVybiAhc3Vycm91bmQt
Pm1hcmdpbi5pc1plcm8oKTsgfQogICAgIGJvb2wgaGFzQm9yZGVyKCkgY29uc3QgeyByZXR1cm4g
c3Vycm91bmQtPmJvcmRlci5oYXNCb3JkZXIoKTsgfQogICAgIGJvb2wgaGFzQm9yZGVyRmlsbCgp
IGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuaGFzRmlsbCgpOyB9CiAgICAgYm9vbCBo
YXNCb3JkZXJEZWNvcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gaGFzQm9yZGVyKCkgfHwgaGFzQm9y
ZGVyRmlsbCgpOyB9Ci0gICAgYm9vbCBoYXNQYWRkaW5nKCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPnBhZGRpbmcubm9uWmVybygpOyB9Ci0gICAgYm9vbCBoYXNPZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBzdXJyb3VuZC0+b2Zmc2V0Lm5vblplcm8oKTsgfQorICAgIGJvb2wgaGFzUGFkZGluZygp
IGNvbnN0IHsgcmV0dXJuICFzdXJyb3VuZC0+cGFkZGluZy5pc1plcm8oKTsgfQorICAgIGJvb2wg
aGFzT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gIXN1cnJvdW5kLT5vZmZzZXQuaXNaZXJvKCk7IH0K
ICAgICBib29sIGhhc01hcmdpbkJlZm9yZVF1aXJrKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQmVm
b3JlKCkuaGFzUXVpcmsoKTsgfQogICAgIGJvb2wgaGFzTWFyZ2luQWZ0ZXJRdWlyaygpIGNvbnN0
IHsgcmV0dXJuIG1hcmdpbkFmdGVyKCkuaGFzUXVpcmsoKTsgfQogCkBAIC01NTgsNyArNTU4LDcg
QEAgcHVibGljOgogICAgIExheW91dEJveEV4dGVudCBpbWFnZU91dHNldHMoY29uc3QgTmluZVBp
ZWNlSW1hZ2UmKSBjb25zdDsKICAgICBib29sIGhhc0JvcmRlckltYWdlT3V0c2V0cygpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gYm9yZGVySW1hZ2UoKS5oYXNJbWFnZSgpICYmIGJvcmRl
ckltYWdlKCkub3V0c2V0KCkubm9uWmVybygpOworICAgICAgICByZXR1cm4gYm9yZGVySW1hZ2Uo
KS5oYXNJbWFnZSgpICYmICFib3JkZXJJbWFnZSgpLm91dHNldCgpLmlzWmVybygpOwogICAgIH0K
ICAgICBMYXlvdXRCb3hFeHRlbnQgYm9yZGVySW1hZ2VPdXRzZXRzKCkgY29uc3QKICAgICB7CkBA
IC01OTUsOCArNTk1LDggQEAgcHVibGljOgogICAgIGNvbnN0IExlbmd0aCYgYm90dG9tKCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5ib3R0b20oKTsgfQogCiAgICAgLy8gQWNjZXNz
b3JzIGZvciBwb3NpdGlvbmVkIG9iamVjdCBlZGdlcyB0aGF0IHRha2UgaW50byBhY2NvdW50IHdy
aXRpbmcgbW9kZS4KLSAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1
cm4gc3Vycm91bmQtPm9mZnNldC5sb2dpY2FsTGVmdCh3cml0aW5nTW9kZSgpKTsgfQotICAgIGNv
bnN0IExlbmd0aCYgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNl
dC5sb2dpY2FsUmlnaHQod3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGxvZ2lj
YWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5zdGFydCh3cml0aW5nTW9k
ZSgpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4g
c3Vycm91bmQtPm9mZnNldC5lbmQod3JpdGluZ01vZGUoKSk7IH0KICAgICBjb25zdCBMZW5ndGgm
IGxvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LmJlZm9yZSh3cml0
aW5nTW9kZSgpKTsgfQogICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbEJvdHRvbSgpIGNvbnN0IHsg
cmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuYWZ0ZXIod3JpdGluZ01vZGUoKSk7IH0KIApAQCAtMTIw
MCwxMCArMTIwMCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQb3NpdGlvbihFUG9zaXRpb24g
dikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0UG9zaXRpb24odik7IH0KICAgICB2b2lkIHNldEZs
b2F0aW5nKEVGbG9hdCB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRGbG9hdGluZyh2KTsgfQog
Ci0gICAgdm9pZCBzZXRMZWZ0KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5t
X2xlZnQsIFdURjo6bW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldFJpZ2h0KExlbmd0aCB2KSB7IFNF
VF9WQVIoc3Vycm91bmQsIG9mZnNldC5tX3JpZ2h0LCBXVEY6Om1vdmUodikpOyB9Ci0gICAgdm9p
ZCBzZXRUb3AoTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0Lm1fdG9wLCBXVEY6
Om1vdmUodikpOyB9Ci0gICAgdm9pZCBzZXRCb3R0b20oTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJy
b3VuZCwgb2Zmc2V0Lm1fYm90dG9tLCBXVEY6Om1vdmUodikpOyB9CisgICAgdm9pZCBzZXRMZWZ0
KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5sZWZ0KCksIFdURjo6bW92ZSh2
KSk7IH0KKyAgICB2b2lkIHNldFJpZ2h0KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9m
ZnNldC5yaWdodCgpLCBXVEY6Om1vdmUodikpOyB9CisgICAgdm9pZCBzZXRUb3AoTGVuZ3RoIHYp
IHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0LnRvcCgpLCBXVEY6Om1vdmUodikpOyB9CisgICAg
dm9pZCBzZXRCb3R0b20oTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0LmJvdHRv
bSgpLCBXVEY6Om1vdmUodikpOyB9CiAKICAgICB2b2lkIHNldFdpZHRoKExlbmd0aCB2KSB7IFNF
VF9WQVIobV9ib3gsIG1fd2lkdGgsIFdURjo6bW92ZSh2KSk7IH0KICAgICB2b2lkIHNldEhlaWdo
dChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX2hlaWdodCwgV1RGOjptb3ZlKHYpKTsgfQpA
QCAtMTIzOSwxMCArMTIzOSwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBTdHlsZURhc2hi
b2FyZFJlZ2lvbiByZWdpb247CiAgICAgICAgIHJlZ2lvbi5sYWJlbCA9IGxhYmVsOwotICAgICAg
ICByZWdpb24ub2Zmc2V0Lm1fdG9wID0gV1RGOjptb3ZlKHQpOwotICAgICAgICByZWdpb24ub2Zm
c2V0Lm1fcmlnaHQgPSBXVEY6Om1vdmUocik7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubV9ib3R0
b20gPSBXVEY6Om1vdmUoYik7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubV9sZWZ0ID0gV1RGOjpt
b3ZlKGwpOworICAgICAgICByZWdpb24ub2Zmc2V0LnRvcCgpID0gV1RGOjptb3ZlKHQpOworICAg
ICAgICByZWdpb24ub2Zmc2V0LnJpZ2h0KCkgPSBXVEY6Om1vdmUocik7CisgICAgICAgIHJlZ2lv
bi5vZmZzZXQuYm90dG9tKCkgPSBXVEY6Om1vdmUoYik7CisgICAgICAgIHJlZ2lvbi5vZmZzZXQu
bGVmdCgpID0gV1RGOjptb3ZlKGwpOwogICAgICAgICByZWdpb24udHlwZSA9IHR5cGU7CiAgICAg
ICAgIGlmICghYXBwZW5kKQogICAgICAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCktPm1fZGFzaGJvYXJkUmVnaW9ucy5jbGVhcigpOwpAQCAtMTMyMywxMCArMTMyMywxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRWZXJ0aWNhbEFsaWduTGVuZ3RoKExlbmd0aCBsZW5ndGgpIHsg
c2V0VmVydGljYWxBbGlnbihMRU5HVEgpOyBTRVRfVkFSKG1fYm94LCBtX3ZlcnRpY2FsQWxpZ24s
IFdURjo6bW92ZShsZW5ndGgpKTsgfQogCiAgICAgdm9pZCBzZXRIYXNDbGlwKGJvb2wgYiA9IHRy
dWUpIHsgU0VUX1ZBUih2aXN1YWwsIGhhc0NsaXAsIGIpOyB9Ci0gICAgdm9pZCBzZXRDbGlwTGVm
dChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLm1fbGVmdCwgV1RGOjptb3Zl
KGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRDbGlwUmlnaHQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRf
VkFSKHZpc3VhbCwgY2xpcC5tX3JpZ2h0LCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lk
IHNldENsaXBUb3AoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5tX3RvcCwg
V1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRDbGlwQm90dG9tKExlbmd0aCBsZW5n
dGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAubV9ib3R0b20sIFdURjo6bW92ZShsZW5ndGgpKTsg
fQorICAgIHZvaWQgc2V0Q2xpcExlZnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwg
Y2xpcC5sZWZ0KCksIFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0Q2xpcFJpZ2h0
KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAucmlnaHQoKSwgV1RGOjptb3Zl
KGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRDbGlwVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZB
Uih2aXN1YWwsIGNsaXAudG9wKCksIFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0
Q2xpcEJvdHRvbShMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLmJvdHRvbSgp
LCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KICAgICB2b2lkIHNldENsaXAoTGVuZ3RoIHRvcCwgTGVu
Z3RoIHJpZ2h0LCBMZW5ndGggYm90dG9tLCBMZW5ndGggbGVmdCk7CiAgICAgdm9pZCBzZXRDbGlw
KExlbmd0aEJveCBib3gpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAsIFdURjo6bW92ZShib3gpKTsg
fQogCkBAIC0xNDM0LDE5ICsxNDM0LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExpc3RTdHls
ZVBvc2l0aW9uKEVMaXN0U3R5bGVQb3NpdGlvbiB2KSB7IGluaGVyaXRlZF9mbGFncy5fbGlzdF9z
dHlsZV9wb3NpdGlvbiA9IHY7IH0KIAogICAgIHZvaWQgcmVzZXRNYXJnaW4oKSB7IFNFVF9WQVIo
c3Vycm91bmQsIG1hcmdpbiwgTGVuZ3RoQm94KEZpeGVkKSk7IH0KLSAgICB2b2lkIHNldE1hcmdp
blRvcChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5tX3RvcCwgV1RG
Ojptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5Cb3R0b20oTGVuZ3RoIGxlbmd0
aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ubV9ib3R0b20sIFdURjo6bW92ZShsZW5ndGgp
KTsgfQotICAgIHZvaWQgc2V0TWFyZ2luTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vy
cm91bmQsIG1hcmdpbi5tX2xlZnQsIFdURjo6bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0
TWFyZ2luUmlnaHQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ubV9y
aWdodCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5Ub3AoTGVuZ3Ro
IGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4udG9wKCksIFdURjo6bW92ZShsZW5n
dGgpKTsgfQorICAgIHZvaWQgc2V0TWFyZ2luQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZB
UihzdXJyb3VuZCwgbWFyZ2luLmJvdHRvbSgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2
b2lkIHNldE1hcmdpbkxlZnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJn
aW4ubGVmdCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1hcmdpblJpZ2h0
KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLnJpZ2h0KCksIFdURjo6
bW92ZShsZW5ndGgpKTsgfQogICAgIHZvaWQgc2V0TWFyZ2luU3RhcnQoTGVuZ3RoKTsKICAgICB2
b2lkIHNldE1hcmdpbkVuZChMZW5ndGgpOwogCiAgICAgdm9pZCByZXNldFBhZGRpbmcoKSB7IFNF
VF9WQVIoc3Vycm91bmQsIHBhZGRpbmcsIExlbmd0aEJveChBdXRvKSk7IH0KICAgICB2b2lkIHNl
dFBhZGRpbmdCb3goTGVuZ3RoQm94IGJveCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLCBX
VEY6Om1vdmUoYm94KSk7IH0KLSAgICB2b2lkIHNldFBhZGRpbmdUb3AoTGVuZ3RoIGxlbmd0aCkg
eyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLm1fdG9wLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0K
LSAgICB2b2lkIHNldFBhZGRpbmdCb3R0b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJv
dW5kLCBwYWRkaW5nLm1fYm90dG9tLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNl
dFBhZGRpbmdMZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5t
X2xlZnQsIFdURjo6bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0UGFkZGluZ1JpZ2h0KExl
bmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5tX3JpZ2h0LCBXVEY6Om1v
dmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdUb3AoTGVuZ3RoIGxlbmd0aCkgeyBT
RVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLnRvcCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAg
ICB2b2lkIHNldFBhZGRpbmdCb3R0b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5k
LCBwYWRkaW5nLmJvdHRvbSgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBh
ZGRpbmdMZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5sZWZ0
KCksIFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0UGFkZGluZ1JpZ2h0KExlbmd0
aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5yaWdodCgpLCBXVEY6Om1vdmUo
bGVuZ3RoKSk7IH0KIAogICAgIHZvaWQgc2V0Q3Vyc29yKEVDdXJzb3IgYykgeyBpbmhlcml0ZWRf
ZmxhZ3MuX2N1cnNvcl9zdHlsZSA9IGM7IH0KICAgICB2b2lkIGFkZEN1cnNvcihQYXNzUmVmUHRy
PFN0eWxlSW1hZ2U+LCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCA9IEludFBvaW50KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252927</attachid>
            <date>2015-05-11 20:55:47 -0700</date>
            <delta_ts>2015-05-11 21:12:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143399-20150511205426.patch</filename>
            <type>text/plain</type>
            <size>40583</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDE1LTA1LTExICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29kZSBjbGVh
biB1cCBmb3IgZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtaXggb2YgV3JpdGluZ01v
ZGUgYW5kIFRleHREaXJlY3Rpb24gLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQzMzk5LgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBlaWdodCBUZXh0Rmxvd3MuIEEgVGV4dEZsb3cg
Y29uc2lzdHMgb2YgdHdvIGRpcmVjdGlvbnMuIFRoZQorICAgICAgICBmaXJzdCBvbmUgY29udHJv
bHMgdGhlIGxpbmUgZ3Jvd2luZyBkaXJlY3Rpb24gYW5kIHRoZSBzZWNvbmQgb25lIGNvbnRyb2xz
IHRoZQorICAgICAgICBibG9jayBncm93aW5nIGRpcmVjdGlvbi4KKyAgICAgICAgCisgICAgICAg
IFdlIG5lZWQgdG8gZXh0cmFjdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGVhc2lseSBmcm9t
IHRoZSBUZXh0RmxvdworCisgICAgICAgIC0tIGlzVGV4dEZsb3dSZXZlcnNlZCgpIC8vIFJUTAor
ICAgICAgICAtLSBpc1RleHRGbG93RmxpcHBlZCgpICAvLyB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9u
IHRvIG5vcm1hbAorICAgICAgICAtLSBpc1RleHRGbG93VmVydGljYWwoKSAvLyBUaGUgbGluZSBn
cm93cyB2ZXJ0aWNhbGx5CisKKyAgICAgICAgTWl4aW5nIFdyaXRpbmdNb2RlIGFuZCBUZXh0RGly
ZWN0aW9uIGludG8gVGV4dEZsb3cgYW5kIGNob29zaW5nIHRoZWlyIHZhbHVlcworICAgICAgICBj
YXJlZnVsbHkgdG8gZWFzZSBpbXBsZW1lbnRpbmcgdGhlIGFib3ZlIGZ1bmN0aW9ucyBjYW4gbWFr
ZSB0aGluZ3MgY2xlYXJlci4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhCb3guY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzOgorICAgICAgICBSZW1vdmUgTGVuZ3RoQm94LmNwcCBzaW5jZSBhbGwgaXRzIGZ1bmN0aW9u
cyBiZWNvbWUgc2luZ2xlIGxpbmUgZnVuY3Rpb25zCisgICAgICAgIGFuZCBjb3VsZCBiZSBtb3Zl
ZCB0byB0aGUgaGVhZGVyIGZpbGUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0
aEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpMZW5ndGhCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpsZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aEJv
eDo6cmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94Ojp0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6TGVuZ3RoQm94Ojpib3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6Om9wZXJhdG9yIT0pOiBVc2UgYW4gYXJyYXkg
b2YgTGVuZ3RocyBmb3IgdGhlIGZvdXIgc2lkZXMuCisgICAgICAgIEFuZCB1c2UgdGhlIGVudW0g
UGh5c2ljYWxCb3hTaWRlIHRvIGFjY2VzcyB0aGlzIGFycmF5LgorCisgICAgICAgIChXZWJDb3Jl
OjpMZW5ndGhCb3g6OmlzWmVybyk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6Om5vblpl
cm8pOiBEZWxldGVkLgorICAgICAgICBVc2UgaXNaZXJvKCkgaW5zdGVhZCBvZiBub25aZXJvKCkg
c2luY2UgdGhlIGZvcm1lciBpcyBjbGVhcmVyLgorCisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhC
b3g6OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6OmFmdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3Ro
Qm94OjplbmQpOgorICAgICAgICBVc2UgdGhlIG1hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZSgp
IGdldCB0aGUgcGh5c2ljYWwgc2lkZSBvZiB0aGUgYm94IGJhc2VkCisgICAgICAgIG9uIHRoZSBk
aXJlY3Rpb24gYW5kIHRoZSB3cml0aW5nIG1vZGUuIAorICAgICAgICAKKyAgICAgICAgKiBjc3Mv
Q1NTUHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZVRvUGh5c2ljYWxQcm9w
ZXJ0eSk6IEluc3RlYWQgb2YgaGFuZGxpbmcgdGhlIGVpZ2h0IHBvc3NpYmxlCisgICAgICAgIGNh
c2VzIG9mIHRoZSB0ZXh0IGZsb3dzIG9uZSBieSBvbmUsIHdlIGNhbiBhbmFseXplIHRoZSB0ZXh0
IGZsb3cgYW5kIHN3YXAgdGhlCisgICAgICAgIHNpZGUgcHJvcGVydHkgaW5kZXggdG8gZ2V0IHRo
ZSBwcm9wZXIgdmFsdWUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEZs
YWdzLmg6IFVzdWFsbHkgdGhlIGRlZmF1bHQgdmFsdWUgaXMgZGVmaW5lZCBmaXJzdC4KKyAgICAg
ICAgQW5kIGlmIHRoZSB2YWx1ZSBpcyBpbnRlZ2VyIG9yIGVudW0sIGl0IHNob3VsZCBiZSBlcXVh
bCB0byB6ZXJvLiBTaW5jZSBMVFIKKyAgICAgICAgaXMgdGhlIGRlZmF1bHQgZm9yIHRoZSB0ZXh0
IGRpcmVjdGlvbiwgaXQgc2hvdWxkIGJlIGRlZmluZWQgYmVmb3JlIFJUTC4KKyAgICAgICAgCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6
bWFrZVRleHRGbG93KTogIERlZmluaW5nIGEgZnVuY3Rpb24gdG8gbWFrZSBhIFRleHRGbG93IG91
dCBmcm9tCisgICAgICAgIFdyaXRpbmdNb2RlIGFuZCBUZXh0RGlyZWN0aW9uLgorICAgICAgICAK
KyAgICAgICAgKFdlYkNvcmU6OmlzVGV4dEZsb3dSZXZlcnNlZCk6IFJldHVybnMgdHJ1ZSBpZiB0
aGUgdGV4dCBkaXJlY3Rpb24gaXMgUlRMLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6Omlz
VGV4dEZsb3dGbGlwcGVkKTogUmV0dXJucyB0cnVlIGlmIGJsb2NrIGdyb3dpbmcgZGlyZWN0aW9u
CisgICAgICAgIGlzIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gbm9ybWFsLgorICAgICAg
ICAKKyAgICAgICAgKFdlYkNvcmU6OmlzVGV4dEZsb3dWZXJ0aWNhbCk6CisgICAgICAgIChXZWJD
b3JlOjppc1ZlcnRpY2FsV3JpdGluZ01vZGUpOiBSZXR1cm5zIHRydWUgaWYgVGhlIGxpbmUgZ3Jv
d3MgdmVydGljYWxseS4KKworICAgICAgICAoV2ViQ29yZTo6aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUpOiAKKyAgICAgICAgKFdlYkNvcmU6OmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUpOiBVc2UgdGhlIHRleHQg
ZmxvdyBmdW5jdGlvbnMgaW5zdGVhZC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjptYXBM
b2dpY2FsVG9QaHlzaWNhbEJveFNpZGUpOiBJdCBtYXBzIGEgbG9naWNhbCBzaWRlIG9mIGEgYm94
CisgICAgICAgIGdpdmVuIHRoZSBjdXJyZW50IHRleHQgZGlyZWN0aW9uIGFuZCB0aGUgd3JpdGlu
ZyBtb2RlLgorCisgICAgICAgICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VTbGljZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVF1YWQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2V0Q2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6bm9uZURh
c2hib2FyZFJlZ2lvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
OiBVc2UgdGhlIExlbmd0aEJveCBzaWRlcycgYWNjZXNzIG1ldGhvZHMgaW5zdGVhZAorICAgICAg
ICBvZiBkaXJlY3RseSB1c2luZyB0aGUgc2lkZXMnIGFycmF5LgorCiAyMDE1LTA1LTExICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNtYWxsIHRpZHl1
cCBpbiBhbmltYXRpb25zIGNvZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
ODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMjAzOCw3ICsyMDM4LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL0tp
bGxSaW5nTm9uZS5jcHAKICAgICBwbGF0Zm9ybS9MYW5ndWFnZS5jcHAKICAgICBwbGF0Zm9ybS9M
ZW5ndGguY3BwCi0gICAgcGxhdGZvcm0vTGVuZ3RoQm94LmNwcAogICAgIHBsYXRmb3JtL0xpbmtI
YXNoLmNwcAogICAgIHBsYXRmb3JtL0xvZ2dpbmcuY3BwCiAgICAgcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvagkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODAwNiw3ICs4MDA2
LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXFVSTC5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMYW5ndWFnZS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMZW5ndGguY3BwIiAvPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGVuZ3RoQm94LmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExpbmtIYXNoLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExvY2FsaXplZFN0cmluZ3MuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTG9nZ2luZy5jcHAiIC8+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCShyZXZpc2lvbiAxODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTExMTMsOSArMTExMyw2
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMZW5ndGguY3BwIj4KICAg
ICAgIDxGaWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExlbmd0aEJveC5jcHAiPgotICAgICAgPEZpbHRl
cj5wbGF0Zm9ybTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cTGlua0hhc2guY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm08
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4NDExNikKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNjA1LDcgKzYwNSw2IEBACiAJCTE0NDc2QUE4MTVEQzRCQjEwMDMwNURCMiAvKiBX
cml0aW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQ0NzZBQTcxNURDNEJCMTAwMzA1REIyIC8qIFdyaXRpbmdNb2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ0OUUyNEMxMDdENEE4NDAw
QjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDQ5RTI0QTEwN0Q0QTg0MDBCNTc5M0YgLyogSlNDYWxsYmFja0Rh
dGEuaCAqLzsgfTsKIAkJMTQ0OUUyODcxMDdENERCNDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDlF
Mjg2MTA3RDREQjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5jcHAgKi87IH07Ci0JCTE0NkND
MTE1MTU2OTg4RTQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ2Q0MxMTMxNTY5ODhCRDAwMTA5RTM3IC8qIExl
bmd0aEJveC5jcHAgKi87IH07CiAJCTE0NzdFNzc2MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2Fj
aGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3
N0U3NzQwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgKi87IH07CiAJCTE0NzdFNzc3
MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NzdFNzc1MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2Fj
aGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
NDc5RkFFRDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDc5RkFFNTEwOUFFMzc1MDBERUQ2NTUg
LyogUmVuZGVyUnVieS5jcHAgKi87IH07CkBAIC03NjgwLDcgKzc2NzksNiBAQAogCQkxNDQ3NkFB
NzE1REM0QkIxMDAzMDVEQjIgLyogV3JpdGluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV3JpdGluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTQ0OUUyNEExMDdENEE4NDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FsbGJhY2tEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0NDlFMjg2MTA3RDREQjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbGxiYWNrRGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0NkNDMTEzMTU2OTg4QkQwMDEwOUUz
NyAvKiBMZW5ndGhCb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TGVuZ3RoQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ3N0U3NzQwQkY0
MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUGFnZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTQ3N0U3NzUwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGFnZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTE0NzlGQUU1MTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclJ1YnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjE3NjAsNyArMjE3NTgsNiBAQAogCQkJCTE0MURDMDQ3MTY0ODM0
OEYwMDM3MUU1QSAvKiBMYXlvdXRVbml0LmggKi8sCiAJCQkJQkNFNjVCRTgwRUFDREYxNjAwN0U0
NTMzIC8qIExlbmd0aC5jcHAgKi8sCiAJCQkJQkNFNjVCRTkwRUFDREYxNjAwN0U0NTMzIC8qIExl
bmd0aC5oICovLAotCQkJCTE0NkNDMTEzMTU2OTg4QkQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3Bw
ICovLAogCQkJCUJDRkY2NDhGMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCAqLywKIAkJ
CQlCQ0ZGNjQ5MDBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oICovLAogCQkJCUE3QUQy
Rjg1MEVDODlEMDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5jcHAgKi8sCkBAIC0yOTMwNiw3ICsyOTMw
Myw2IEBACiAJCQkJNTEyREQ4RjQwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hpdmUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCMjQxN0IwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2Fj
eVdlYkFyY2hpdmVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0U2NUJFQTBFQUNERjE2MDA3
RTQ1MzMgLyogTGVuZ3RoLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTE0NkNDMTE1MTU2OTg4RTQw
MDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTU1RjQ5N0ExNTFC
ODg4MDAwQkI2N0RCIC8qIExlbmd0aEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RkI2OThDQzE4MzNFRTBEMDAxNThBMzEgLyogTGluZUJyZWFrZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODlCNUVBQTExMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuY3BwIGluIFNvdXJj
ZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDE4NDEx
NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU0LDExMiArNTQsMTAgQEAgdm9pZCBDU1NQcm9wZXJ0eTo6d3JhcFZhbHVlSW5Db21tYVNl
cGFyYQogICAgIG1fdmFsdWUgPSBXVEY6Om1vdmUobGlzdCk7CiB9CiAKLWVudW0gTG9naWNhbEJv
eFNpZGUgeyBCZWZvcmVTaWRlLCBFbmRTaWRlLCBBZnRlclNpZGUsIFN0YXJ0U2lkZSB9OwotZW51
bSBQaHlzaWNhbEJveFNpZGUgeyBUb3BTaWRlLCBSaWdodFNpZGUsIEJvdHRvbVNpZGUsIExlZnRT
aWRlIH07Ci0KIHN0YXRpYyBDU1NQcm9wZXJ0eUlEIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHko
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2Fs
Qm94U2lkZSBsb2dpY2FsU2lkZSwgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRo
YW5kKQogewotICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKSB7Ci0gICAgICAgIGlmICh3cml0aW5n
TW9kZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlKSB7Ci0gICAgICAgICAgICAvLyBUaGUgY29t
bW9uIGNhc2UuIFRoZSBsb2dpY2FsIGFuZCBwaHlzaWNhbCBib3ggc2lkZXMgbWF0Y2guCi0gICAg
ICAgICAgICAvLyBMZWZ0ID0gU3RhcnQsIFJpZ2h0ID0gRW5kLCBCZWZvcmUgPSBUb3AsIEFmdGVy
ID0gQm90dG9tCi0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtsb2dp
Y2FsU2lkZV07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAod3JpdGluZ01vZGUgPT0gQm90dG9t
VG9Ub3BXcml0aW5nTW9kZSkgewotICAgICAgICAgICAgLy8gU3RhcnQgPSBMZWZ0LCBFbmQgPSBS
aWdodCwgQmVmb3JlID0gQm90dG9tLCBBZnRlciA9IFRvcC4KLSAgICAgICAgICAgIHN3aXRjaCAo
bG9naWNhbFNpZGUpIHsKLSAgICAgICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAg
ICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICAgICAgICAg
IGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtSaWdodFNpZGVdOwotICAgICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAg
ICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICh3
cml0aW5nTW9kZSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlKSB7Ci0gICAgICAgICAgICAvLyBT
dGFydCA9IFRvcCwgRW5kID0gQm90dG9tLCBCZWZvcmUgPSBMZWZ0LCBBZnRlciA9IFJpZ2h0Lgot
ICAgICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewotICAgICAgICAgICAgY2FzZSBTdGFy
dFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9w
U2lkZV07Ci0gICAgICAgICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgICAgICAgICBjYXNlIEJl
Zm9yZVNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClb
TGVmdFNpZGVdOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
c2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gU3RhcnQgPSBUb3AsIEVuZCA9IEJvdHRvbSwgQmVmb3JlID0gUmln
aHQsIEFmdGVyID0gTGVmdAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAg
IGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVz
KClbVG9wU2lkZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBz
aG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNp
ZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVd
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0
aWVzKClbTGVmdFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdyaXRpbmdNb2Rl
ID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8gU3RhcnQgPSBSaWdodCwg
RW5kID0gTGVmdCwgQmVmb3JlID0gVG9wLCBBZnRlciA9IEJvdHRvbQotICAgICAgICBzd2l0Y2gg
KGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0
dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKLSAgICAgICAgY2FzZSBFbmRT
aWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVd
OwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5k
LnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUpIHsKLSAg
ICAgICAgLy8gU3RhcnQgPSBSaWdodCwgRW5kID0gTGVmdCwgQmVmb3JlID0gQm90dG9tLCBBZnRl
ciA9IFRvcAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3Rh
cnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRT
aWRlXTsKLSAgICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFu
ZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAg
ICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1Rv
cFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09IExlZnRU
b1JpZ2h0V3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRv
cCwgQmVmb3JlID0gTGVmdCwgQWZ0ZXIgPSBSaWdodAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxT
aWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0
aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAg
ICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwotICAgICAg
ICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtMZWZ0U2lkZV07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
Ly8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRvcCwgQmVmb3JlID0gUmlnaHQsIEFmdGVyID0gTGVm
dAotICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKLSAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAg
ICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgY2FzZSBF
bmRTaWRlOgotICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsK
LSAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGll
cygpW1JpZ2h0U2lkZV07Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgIH0KKyAgICBQaHlzaWNhbEJveFNpZGUgcGh5c2lj
YWxTaWRlID0gbWFwTG9naWNhbFRvUGh5c2ljYWxCb3hTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5n
TW9kZSwgZGlyZWN0aW9uKSwgbG9naWNhbFNpZGUpOworICAgIHJldHVybiBzaG9ydGhhbmQucHJv
cGVydGllcygpW3BoeXNpY2FsU2lkZV07CiB9CiAKIGVudW0gTG9naWNhbEV4dGVudCB7IExvZ2lj
YWxXaWR0aCwgTG9naWNhbEhlaWdodCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Rv
U3R5bGVNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxl
TWFwLmNwcAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5
bGVNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTgsMjEgKzYxOCwyMSBAQCB2b2lkIENTU1Rv
U3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlU2xpCiAgICAgTGVuZ3RoQm94IGJveDsKICAgICBR
dWFkKiBzbGljZXMgPSBib3JkZXJJbWFnZVNsaWNlLnNsaWNlcygpOwogICAgIGlmIChzbGljZXMt
PnRvcCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNl
cy0+dG9wKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICBib3gudG9wKCkg
PSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAg
ZWxzZQotICAgICAgICBib3gubV90b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0SW50VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgICAgIGJveC50
b3AoKSA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQZXJj
ZW50YWdlKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgp
LT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVu
Z3RoKHNsaWNlcy0+Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgIGVs
c2UKLSAgICAgICAgYm94Lm1fYm90dG9tID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+
Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAg
ICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+Z2V0Rmxv
YXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKICAgICBpZiAo
c2xpY2VzLT5sZWZ0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9sZWZ0ID0gTGVu
Z3RoKHNsaWNlcy0+bGVmdCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAg
Ym94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVy
Y2VudCk7CiAgICAgZWxzZQotICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVm
dCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsK
KyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0SW50VmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CiAgICAgaWYgKHNsaWNlcy0+
cmlnaHQoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX3JpZ2h0ID0gTGVuZ3RoKHNs
aWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIGJveC5y
aWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2Vu
dCk7CiAgICAgZWxzZQotICAgICAgICBib3gubV9yaWdodCA9IExlbmd0aChzbGljZXMtPnJpZ2h0
KCktPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwor
ICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwogICAgIGltYWdlLnNldElt
YWdlU2xpY2VzKGJveCk7CiAKICAgICAvLyBTZXQgb3VyIGZpbGwgbW9kZS4KQEAgLTY1NCwzMiAr
NjU0LDMyIEBAIExlbmd0aEJveCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWEKICAgICBM
ZW5ndGhCb3ggYm94OyAvLyBEZWZhdWx0cyB0byAnYXV0bycgc28gd2UgZG9uJ3QgaGF2ZSB0byBo
YW5kbGUgdGhhdCBleHBsaWNpdGx5IGJlbG93LgogICAgIFF1YWQqIHNsaWNlcyA9IGJvcmRlcldp
ZHRocy5nZXRRdWFkVmFsdWUoKTsKICAgICBpZiAoc2xpY2VzLT50b3AoKS0+aXNOdW1iZXIoKSkK
LSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldEludFZhbHVlKCks
IFJlbGF0aXZlKTsKKyAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdl
dEludFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChzbGljZXMtPnRvcCgpLT5pc1Bl
cmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdl
dERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQp
OworICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CiAgICAgZWxz
ZSBpZiAoc2xpY2VzLT50b3AoKS0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAg
ICAgYm94Lm1fdG9wID0gc2xpY2VzLT50b3AoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZl
cnNpb25EYXRhKTsKKyAgICAgICAgYm94LnRvcCgpID0gc2xpY2VzLT50b3AoKS0+Y29tcHV0ZUxl
bmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIGlmIChzbGljZXMtPnJpZ2h0KCkt
PmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC5tX3JpZ2h0ID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQo
KS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0
aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlm
IChzbGljZXMtPnJpZ2h0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9yaWdodCA9
IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0
aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+cmlnaHQoKS0+Z2V0
VmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAgICAgYm94Lm1fcmlnaHQgPSBzbGljZXMt
PnJpZ2h0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAg
IGJveC5yaWdodCgpID0gc2xpY2VzLT5yaWdodCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29u
dmVyc2lvbkRhdGEpOwogCiAgICAgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmlzTnVtYmVyKCkpCi0g
ICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXRJbnRWYWx1
ZSgpLCBSZWxhdGl2ZSk7CisgICAgICAgIGJveC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJv
dHRvbSgpLT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5i
b3R0b20oKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChz
bGljZXMtPmJvdHRvbSgpLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BF
UkNFTlRBR0UpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNl
cy0+Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VO
VEFHRSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmdldFZhbHVl
SUQoKSAhPSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IHNsaWNlcy0+Ym90
dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJv
eC5ib3R0b20oKSA9IHNsaWNlcy0+Ym90dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252
ZXJzaW9uRGF0YSk7CiAKICAgICBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzTnVtYmVyKCkpCi0gICAg
ICAgIGJveC5tX2xlZnQgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldEludFZhbHVlKCksIFJl
bGF0aXZlKTsKKyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0
SW50VmFsdWUoKSwgUmVsYXRpdmUpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc1Bl
cmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+
Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2Vu
dCk7CisgICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldERvdWJs
ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwogICAg
IGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQot
ICAgICAgICBib3gubV9sZWZ0ID0gc2xpY2VzLT5sZWZ0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3Ro
Pihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJveC5sZWZ0KCkgPSBzbGljZXMtPmxlZnQoKS0+
Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIHJldHVybiBib3g7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5jcHAJKHJldmlzaW9uIDE4
NDExNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGVu
Z3RoQm94LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgTGVuZ3RoJiBMZW5ndGhC
b3g6OmxvZ2ljYWxMZWZ0KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAotewotICAgIHJl
dHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyBtX2xlZnQgOiBtX3Rv
cDsKLX0KLQotY29uc3QgTGVuZ3RoJiBMZW5ndGhCb3g6OmxvZ2ljYWxSaWdodChXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUod3JpdGluZ01vZGUpID8gbV9yaWdodCA6IG1fYm90dG9tOwotfQotCi1jb25zdCBMZW5ndGgm
IExlbmd0aEJveDo6YmVmb3JlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAotewotICAg
IHN3aXRjaCAod3JpdGluZ01vZGUpIHsKLSAgICBjYXNlIFRvcFRvQm90dG9tV3JpdGluZ01vZGU6
Ci0gICAgICAgIHJldHVybiBtX3RvcDsKLSAgICBjYXNlIEJvdHRvbVRvVG9wV3JpdGluZ01vZGU6
Ci0gICAgICAgIHJldHVybiBtX2JvdHRvbTsKLSAgICBjYXNlIExlZnRUb1JpZ2h0V3JpdGluZ01v
ZGU6Ci0gICAgICAgIHJldHVybiBtX2xlZnQ7Ci0gICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdN
b2RlOgotICAgICAgICByZXR1cm4gbV9yaWdodDsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIG1fdG9wOwotfQotCi1jb25zdCBMZW5ndGgmIExlbmd0aEJveDo6
YWZ0ZXIoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIGNvbnN0Ci17Ci0gICAgc3dpdGNoICh3cml0
aW5nTW9kZSkgewotICAgIGNhc2UgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZToKLSAgICAgICAgcmV0
dXJuIG1fYm90dG9tOwotICAgIGNhc2UgQm90dG9tVG9Ub3BXcml0aW5nTW9kZToKLSAgICAgICAg
cmV0dXJuIG1fdG9wOwotICAgIGNhc2UgTGVmdFRvUmlnaHRXcml0aW5nTW9kZToKLSAgICAgICAg
cmV0dXJuIG1fcmlnaHQ7Ci0gICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlOgotICAgICAg
ICByZXR1cm4gbV9sZWZ0OwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gbV9ib3R0b207Ci19Ci0KLWNvbnN0IExlbmd0aCYgTGVuZ3RoQm94OjpzdGFydChXcml0
aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Ci17Ci0g
ICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSkKLSAgICAgICAgcmV0
dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IG1fbGVmdCA6IG1fcmlnaHQ7
Ci0gICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IG1fdG9wIDog
bV9ib3R0b207Ci19Ci0KLWNvbnN0IExlbmd0aCYgTGVuZ3RoQm94OjplbmQoV3JpdGluZ01vZGUg
d3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAotewotICAgIGlmIChp
c0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkpCi0gICAgICAgIHJldHVybiBpc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBtX3JpZ2h0IDogbV9sZWZ0OwotICAgIHJl
dHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBtX2JvdHRvbSA6IG1fdG9w
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGhCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZW5ndGhCb3guaAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHly
aWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICAgIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAgICBDb3B5cmlnaHQgKGMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCkBAIC0zMCw3MyArMzAsNjYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dHJ1Y3QgTGVuZ3RoQm94IHsKICAgICBMZW5ndGhCb3goKQorICAgICAgICA6IG1fc2lkZXMoNCkK
ICAgICB7CiAgICAgfQogCiAgICAgZXhwbGljaXQgTGVuZ3RoQm94KExlbmd0aFR5cGUgdHlwZSkK
LSAgICAgICAgOiBtX2xlZnQodHlwZSkKLSAgICAgICAgLCBtX3JpZ2h0KHR5cGUpCi0gICAgICAg
ICwgbV90b3AodHlwZSkKLSAgICAgICAgLCBtX2JvdHRvbSh0eXBlKQorICAgICAgICA6IG1fc2lk
ZXMoeyB0eXBlLCB0eXBlLCB0eXBlLCB0eXBlIH0pCiAgICAgewogICAgIH0KIAogICAgIGV4cGxp
Y2l0IExlbmd0aEJveChpbnQgdikKLSAgICAgICAgOiBtX2xlZnQoTGVuZ3RoKHYsIEZpeGVkKSkK
LSAgICAgICAgLCBtX3JpZ2h0KExlbmd0aCh2LCBGaXhlZCkpCi0gICAgICAgICwgbV90b3AoTGVu
Z3RoKHYsIEZpeGVkKSkKLSAgICAgICAgLCBtX2JvdHRvbShMZW5ndGgodiwgRml4ZWQpKQorICAg
ICAgICA6IG1fc2lkZXMoeyBMZW5ndGgodiwgRml4ZWQpLCBMZW5ndGgodiwgRml4ZWQpLCBMZW5n
dGgodiwgRml4ZWQpLCBMZW5ndGgodiwgRml4ZWQpIH0pCiAgICAgewogICAgIH0KIAogICAgIExl
bmd0aEJveChMZW5ndGggdG9wLCBMZW5ndGggcmlnaHQsIExlbmd0aCBib3R0b20sIExlbmd0aCBs
ZWZ0KQotICAgICAgICA6IG1fbGVmdChXVEY6Om1vdmUobGVmdCkpCi0gICAgICAgICwgbV9yaWdo
dChXVEY6Om1vdmUocmlnaHQpKQotICAgICAgICAsIG1fdG9wKFdURjo6bW92ZSh0b3ApKQotICAg
ICAgICAsIG1fYm90dG9tKFdURjo6bW92ZShib3R0b20pKQorICAgICAgICA6IG1fc2lkZXMoeyBX
VEY6Om1vdmUodG9wKSwgV1RGOjptb3ZlKHJpZ2h0KSwgV1RGOjptb3ZlKGJvdHRvbSksIFdURjo6
bW92ZShsZWZ0KSB9KQogICAgIHsKICAgICB9CiAKICAgICBMZW5ndGhCb3goaW50IHRvcCwgaW50
IHJpZ2h0LCBpbnQgYm90dG9tLCBpbnQgbGVmdCkKLSAgICAgICAgOiBtX2xlZnQoTGVuZ3RoKGxl
ZnQsIEZpeGVkKSkKLSAgICAgICAgLCBtX3JpZ2h0KExlbmd0aChyaWdodCwgRml4ZWQpKQotICAg
ICAgICAsIG1fdG9wKExlbmd0aCh0b3AsIEZpeGVkKSkKLSAgICAgICAgLCBtX2JvdHRvbShMZW5n
dGgoYm90dG9tLCBGaXhlZCkpCisgICAgICAgIDogbV9zaWRlcyh7IExlbmd0aCh0b3AsIEZpeGVk
KSwgTGVuZ3RoKHJpZ2h0LCBGaXhlZCksIExlbmd0aChib3R0b20sIEZpeGVkKSwgTGVuZ3RoKGxl
ZnQsIEZpeGVkKSB9KQogICAgIHsKICAgICB9CiAKLSAgICBjb25zdCBMZW5ndGgmIGxlZnQoKSBj
b25zdCB7IHJldHVybiBtX2xlZnQ7IH0KLSAgICBjb25zdCBMZW5ndGgmIHJpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gbV9yaWdodDsgfQotICAgIGNvbnN0IExlbmd0aCYgdG9wKCkgY29uc3QgeyByZXR1
cm4gbV90b3A7IH0KLSAgICBjb25zdCBMZW5ndGgmIGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1f
Ym90dG9tOyB9CisgICAgTGVuZ3RoJiBsZWZ0KCkgeyByZXR1cm4gbV9zaWRlc1tMZWZ0U2lkZV07
IH0KKyAgICBMZW5ndGgmIHJpZ2h0KCkgeyByZXR1cm4gbV9zaWRlc1tSaWdodFNpZGVdOyB9Cisg
ICAgTGVuZ3RoJiB0b3AoKSB7IHJldHVybiBtX3NpZGVzW1RvcFNpZGVdOyB9CisgICAgTGVuZ3Ro
JiBib3R0b20oKSB7IHJldHVybiBtX3NpZGVzW0JvdHRvbVNpZGVdOyB9CiAKLSAgICBjb25zdCBM
ZW5ndGgmIGxvZ2ljYWxMZWZ0KFdyaXRpbmdNb2RlKSBjb25zdDsKLSAgICBjb25zdCBMZW5ndGgm
IGxvZ2ljYWxSaWdodChXcml0aW5nTW9kZSkgY29uc3Q7CisgICAgY29uc3QgTGVuZ3RoJiBsZWZ0
KCkgY29uc3QgeyByZXR1cm4gbV9zaWRlc1tMZWZ0U2lkZV07IH0KKyAgICBjb25zdCBMZW5ndGgm
IHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zaWRlc1tSaWdodFNpZGVdOyB9CisgICAgY29uc3Qg
TGVuZ3RoJiB0b3AoKSBjb25zdCB7IHJldHVybiBtX3NpZGVzW1RvcFNpZGVdOyB9CisgICAgY29u
c3QgTGVuZ3RoJiBib3R0b20oKSBjb25zdCB7IHJldHVybiBtX3NpZGVzW0JvdHRvbVNpZGVdOyB9
CiAKLSAgICBjb25zdCBMZW5ndGgmIGJlZm9yZShXcml0aW5nTW9kZSkgY29uc3Q7Ci0gICAgY29u
c3QgTGVuZ3RoJiBhZnRlcihXcml0aW5nTW9kZSkgY29uc3Q7Ci0gICAgY29uc3QgTGVuZ3RoJiBz
dGFydChXcml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbikgY29uc3Q7Ci0gICAgY29uc3QgTGVuZ3Ro
JiBlbmQoV3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24pIGNvbnN0OworICAgIGNvbnN0IExlbmd0
aCYgYmVmb3JlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
biA9IExUUikgY29uc3QgeyByZXR1cm4gbV9zaWRlc1ttYXBMb2dpY2FsVG9QaHlzaWNhbEJveFNp
ZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBCZWZvcmVTaWRlKV07IH0K
KyAgICBjb25zdCBMZW5ndGgmIGFmdGVyKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbiA9IExUUikgY29uc3QgeyByZXR1cm4gbV9zaWRlc1ttYXBMb2dpY2Fs
VG9QaHlzaWNhbEJveFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBB
ZnRlclNpZGUpXTsgfQorICAgIGNvbnN0IExlbmd0aCYgc3RhcnQoV3JpdGluZ01vZGUgd3JpdGlu
Z01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBtX3Np
ZGVzW21hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUs
IGRpcmVjdGlvbiksIFN0YXJ0U2lkZSldOyB9CisgICAgY29uc3QgTGVuZ3RoJiBlbmQoV3JpdGlu
Z01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7
IHJldHVybiBtX3NpZGVzW21hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZShtYWtlVGV4dEZsb3co
d3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIEVuZFNpZGUpXTsgfQogCiAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IExlbmd0aEJveCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
bV9sZWZ0ID09IG90aGVyLm1fbGVmdCAmJiBtX3JpZ2h0ID09IG90aGVyLm1fcmlnaHQgJiYgbV90
b3AgPT0gb3RoZXIubV90b3AgJiYgbV9ib3R0b20gPT0gb3RoZXIubV9ib3R0b207CisgICAgICAg
IHJldHVybiBtX3NpZGVzID09IG90aGVyLm1fc2lkZXM7CiAgICAgfQogCiAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IExlbmd0aEJveCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgICAgIHJldHVybiBtX3NpZGVzICE9IG90aGVyLm1f
c2lkZXM7CiAgICAgfQogCi0gICAgYm9vbCBub25aZXJvKCkgY29uc3QKKyAgICBib29sIGlzWmVy
bygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gIShtX2xlZnQuaXNaZXJvKCkgJiYgbV9y
aWdodC5pc1plcm8oKSAmJiBtX3RvcC5pc1plcm8oKSAmJiBtX2JvdHRvbS5pc1plcm8oKSk7Cisg
ICAgICAgIGZvciAoYXV0byBzaWRlIDogbV9zaWRlcykgeworICAgICAgICAgICAgaWYgKCFzaWRl
LmlzWmVybygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBMZW5ndGggbV9sZWZ0OwotICAgIExlbmd0
aCBtX3JpZ2h0OwotICAgIExlbmd0aCBtX3RvcDsKLSAgICBMZW5ndGggbV9ib3R0b207Citwcml2
YXRlOgorICAgIFZlY3RvcjxMZW5ndGgsIDQ+IG1fc2lkZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgJ
KHJldmlzaW9uIDE4NDExNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZs
YWdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1lbnVtIFRleHREaXJlY3Rpb24geyBSVEwsIExUUiB9OworZW51bSBUZXh0RGlyZWN0
aW9uIHsgTFRSLCBSVEwgfTsKIAogZW51bSBUZXh0UmVuZGVyaW5nTW9kZSB7IEF1dG9UZXh0UmVu
ZGVyaW5nLCBPcHRpbWl6ZVNwZWVkLCBPcHRpbWl6ZUxlZ2liaWxpdHksIEdlb21ldHJpY1ByZWNp
c2lvbiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9k
ZS5oCShyZXZpc2lvbiAxODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1dy
aXRpbmdNb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChjKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNCwyNSArMzUsOTkgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogZW51bSBXcml0aW5nTW9kZSB7Ci0gICAgVG9wVG9Cb3R0b21Xcml0aW5nTW9k
ZSwgUmlnaHRUb0xlZnRXcml0aW5nTW9kZSwgTGVmdFRvUmlnaHRXcml0aW5nTW9kZSwgQm90dG9t
VG9Ub3BXcml0aW5nTW9kZQorICAgIFRvcFRvQm90dG9tV3JpdGluZ01vZGUgPSAwLCAvLyBob3Jp
em9udGFsLXRiCisgICAgQm90dG9tVG9Ub3BXcml0aW5nTW9kZSA9IDEsIC8vIGhvcml6b250YWwt
YnQKKyAgICBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlID0gMiwgLy8gdmVydGljYWwtbHIKKyAgICBS
aWdodFRvTGVmdFdyaXRpbmdNb2RlID0gMywgLy8gdmVydGljYWwtcmwKIH07CiAKK2NvbnN0ZXhw
ciBpbnQgbWFrZVRleHRGbG93KGludCB3cml0aW5nTW9kZSwgaW50IGRpcmVjdGlvbikKK3sKKyAg
ICByZXR1cm4gKHdyaXRpbmdNb2RlKSA8PCAxIHwgKGRpcmVjdGlvbik7Cit9CisKKy8vIERlZmlu
ZSB0aGUgdGV4dCBmbG93IGluIHRlcm1zIG9mIHRoZSB3cml0aW5nIG1vZGUgYW5kIHRoZSB0ZXh0
IGRpcmVjdGlvbi4gVGhlIGZpcnN0CisvLyBwYXJ0IGlzIHRoZSBsaW5lIGdyb3dpbmcgZGlyZWN0
aW9uIGFuZCB0aGUgc2Vjb25kIHBhcnQgaXMgdGhlIGJsb2NrIGdyb3dpbmcgZGlyZWN0aW9uLgor
ZW51bSBUZXh0RmxvdyB7CisgICAgVGV4dEZsb3dFYXN0U291dGggPSBtYWtlVGV4dEZsb3coVG9w
VG9Cb3R0b21Xcml0aW5nTW9kZSwgTFRSKSwKKyAgICBUZXh0Rmxvd1dlc3RTb3V0aCA9IG1ha2VU
ZXh0RmxvdyhUb3BUb0JvdHRvbVdyaXRpbmdNb2RlLCBSVEwpLAorICAgIFRleHRGbG93RWFzdE5v
cnRoID0gbWFrZVRleHRGbG93KEJvdHRvbVRvVG9wV3JpdGluZ01vZGUsIExUUiksCisgICAgVGV4
dEZsb3dXZXN0Tm9ydGggPSBtYWtlVGV4dEZsb3coQm90dG9tVG9Ub3BXcml0aW5nTW9kZSwgUlRM
KSwKKyAgICBUZXh0Rmxvd1NvdXRoRWFzdCA9IG1ha2VUZXh0RmxvdyhMZWZ0VG9SaWdodFdyaXRp
bmdNb2RlLCBMVFIpLAorICAgIFRleHRGbG93U291dGhXZXN0ID0gbWFrZVRleHRGbG93KExlZnRU
b1JpZ2h0V3JpdGluZ01vZGUsIFJUTCksCisgICAgVGV4dEZsb3dOb3J0aEVhc3QgPSBtYWtlVGV4
dEZsb3coUmlnaHRUb0xlZnRXcml0aW5nTW9kZSwgTFRSKSwKKyAgICBUZXh0Rmxvd05vcnRoV2Vz
dCA9IG1ha2VUZXh0RmxvdyhSaWdodFRvTGVmdFdyaXRpbmdNb2RlLCBSVEwpCit9OworCitpbmxp
bmUgVGV4dEZsb3cgbWFrZVRleHRGbG93KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEZsb3c+KG1h
a2VUZXh0RmxvdyhzdGF0aWNfY2FzdDxpbnQ+KHdyaXRpbmdNb2RlKSwgc3RhdGljX2Nhc3Q8aW50
PihkaXJlY3Rpb24pKSk7Cit9CisKK2NvbnN0IHVuc2lnbmVkIFRleHRGbG93UmV2ZXJzZWRNYXNr
ID0gMTsKK2NvbnN0IHVuc2lnbmVkIFRleHRGbG93RmxpcHBlZE1hc2sgPSAyOworY29uc3QgdW5z
aWduZWQgVGV4dEZsb3dWZXJ0aWNhbE1hc2sgPSA0OworCitpbmxpbmUgYm9vbCBpc1RleHRGbG93
UmV2ZXJzZWQoVGV4dEZsb3cgdGV4dGZsb3cpCit7CisgICAgcmV0dXJuIHRleHRmbG93ICYgVGV4
dEZsb3dSZXZlcnNlZE1hc2s7Cit9CisKK2lubGluZSBib29sIGlzVGV4dEZsb3dGbGlwcGVkKFRl
eHRGbG93IHRleHRmbG93KQoreworICAgIHJldHVybiB0ZXh0ZmxvdyAmIFRleHRGbG93RmxpcHBl
ZE1hc2s7Cit9CisKK2lubGluZSBib29sIGlzVGV4dEZsb3dWZXJ0aWNhbChUZXh0RmxvdyB0ZXh0
ZmxvdykKK3sKKyAgICByZXR1cm4gdGV4dGZsb3cgJiBUZXh0Rmxvd1ZlcnRpY2FsTWFzazsKK30K
KworLy8gTGluZXMgaGF2ZSB2ZXJ0aWNhbCBvcmllbnRhdGlvbjsgbW9kZXMgdmVydGljYWwtbHIg
b3IgdmVydGljYWwtcmwuCitpbmxpbmUgYm9vbCBpc1ZlcnRpY2FsV3JpdGluZ01vZGUoV3JpdGlu
Z01vZGUgd3JpdGluZ01vZGUpCit7CisgICAgcmV0dXJuIGlzVGV4dEZsb3dWZXJ0aWNhbChtYWtl
VGV4dEZsb3cod3JpdGluZ01vZGUsIExUUikpOworfQorCisvLyBCbG9jayBwcm9ncmVzc2lvbiBp
bmNyZWFzZXMgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiB0byBub3JtYWw7IG1vZGVzIHZlcnRp
Y2FsLXJsIG9yIGhvcml6b250YWwtYnQuCitpbmxpbmUgYm9vbCBpc0ZsaXBwZWRCbG9ja3NXcml0
aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkKK3sKKyAgICByZXR1cm4gaXNUZXh0Rmxv
d0ZsaXBwZWQobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBMVFIpKTsKK30KKwogLy8gTGluZXMg
aGF2ZSBob3Jpem9udGFsIG9yaWVudGF0aW9uOyBtb2RlcyBob3Jpem9udGFsLXRiIG9yIGhvcml6
b250YWwtYnQuCiBpbmxpbmUgYm9vbCBpc0hvcml6b250YWxXcml0aW5nTW9kZShXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSkKIHsKLSAgICByZXR1cm4gd3JpdGluZ01vZGUgPT0gVG9wVG9Cb3R0b21X
cml0aW5nTW9kZSB8fCB3cml0aW5nTW9kZSA9PSBCb3R0b21Ub1RvcFdyaXRpbmdNb2RlOworICAg
IHJldHVybiAhaXNWZXJ0aWNhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKTsKIH0KIAogLy8gQm90
dG9tIG9mIHRoZSBsaW5lIG9jY3VycyBlYXJsaWVyIGluIHRoZSBibG9jazsgbW9kZXMgdmVydGlj
YWwtbHIgb3IgaG9yaXpvbnRhbC1idC4KIGlubGluZSBib29sIGlzRmxpcHBlZExpbmVzV3JpdGlu
Z01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCiB7Ci0gICAgcmV0dXJuIHdyaXRpbmdNb2Rl
ID09IExlZnRUb1JpZ2h0V3JpdGluZ01vZGUgfHwgd3JpdGluZ01vZGUgPT0gQm90dG9tVG9Ub3BX
cml0aW5nTW9kZTsKKyAgICByZXR1cm4gaXNWZXJ0aWNhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2Rl
KSAhPSBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSh3cml0aW5nTW9kZSk7CiB9CiAKLS8vIEJs
b2NrIHByb2dyZXNzaW9uIGluY3JlYXNlcyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIHRvIG5v
cm1hbDsgbW9kZXMgdmVydGljYWwtcmwgb3IgaG9yaXpvbnRhbC1idC4KLWlubGluZSBib29sIGlz
RmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQorZW51bSBM
b2dpY2FsQm94U2lkZSB7IEJlZm9yZVNpZGUsIEVuZFNpZGUsIEFmdGVyU2lkZSwgU3RhcnRTaWRl
IH07CitlbnVtIFBoeXNpY2FsQm94U2lkZSB7IFRvcFNpZGUsIFJpZ2h0U2lkZSwgQm90dG9tU2lk
ZSwgTGVmdFNpZGUgfTsKKworaW5saW5lIFBoeXNpY2FsQm94U2lkZSBtYXBMb2dpY2FsVG9QaHlz
aWNhbEJveFNpZGUoVGV4dEZsb3cgdGV4dGZsb3csIExvZ2ljYWxCb3hTaWRlIGxvZ2ljYWxTaWRl
KQogewotICAgIHJldHVybiB3cml0aW5nTW9kZSA9PSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlIHx8
IHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGU7CisgICAgaW50IHBoeXNpY2Fs
U2lkZSA9IGxvZ2ljYWxTaWRlOworICAgIGJvb2wgaXNTdGFydEVuZFNpZGUgPSBwaHlzaWNhbFNp
ZGUgJSAyID09IDE7CisKKyAgICAvLyBTd2FwIHRoZSBsZWZ0L3JpZ2h0IHNpZGUgd2l0aCB0aGUg
dG9wL2JvdHRvbSBzaWRlIGlmIHRleHRGbG93IGlzIHZlcnRpY2FsCisgICAgaWYgKGlzVGV4dEZs
b3dWZXJ0aWNhbCh0ZXh0ZmxvdykpIHsKKyAgICAgICAgaWYgKGlzU3RhcnRFbmRTaWRlKQorICAg
ICAgICAgICAgcGh5c2ljYWxTaWRlID0gKHBoeXNpY2FsU2lkZSArIDEpICUgNDsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcGh5c2ljYWxTaWRlID0gKHBoeXNpY2FsU2lkZSArIDMpICUgNDsK
KyAgICB9CisKKyAgICAvLyBTd2FwIHRoZSBsZWZ0IGFuZCByaWdodCBzaWRlcyBpZiB0ZXh0Rmxv
dyBpcyByZXZlcnNlZCBhbmQgdGhlIHRvcCBhbmQgYm90dG9tIHNpZGVzIGlmIHRleHRGbG93IGlz
IGZsaXBwZWQKKyAgICBpZiAoKGlzU3RhcnRFbmRTaWRlICYmIGlzVGV4dEZsb3dSZXZlcnNlZCh0
ZXh0ZmxvdykpIHx8ICghaXNTdGFydEVuZFNpZGUgJiYgaXNUZXh0Rmxvd0ZsaXBwZWQodGV4dGZs
b3cpKSkKKyAgICAgICAgcGh5c2ljYWxTaWRlID0gKHBoeXNpY2FsU2lkZSArIDIpICUgNDsKKwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxQaHlzaWNhbEJveFNpZGU+KHBoeXNpY2FsU2lkZSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTIxLDEwICs5MjEsMTAgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0TWFza0ltYWdlKGNvbnN0
IFZlYwogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q2xpcChMZW5ndGggdG9wLCBMZW5ndGggcmlnaHQs
IExlbmd0aCBib3R0b20sIExlbmd0aCBsZWZ0KQogewogICAgIFN0eWxlVmlzdWFsRGF0YSogZGF0
YSA9IHZpc3VhbC5hY2Nlc3MoKTsKLSAgICBkYXRhLT5jbGlwLm1fdG9wID0gdG9wOwotICAgIGRh
dGEtPmNsaXAubV9yaWdodCA9IHJpZ2h0OwotICAgIGRhdGEtPmNsaXAubV9ib3R0b20gPSBib3R0
b207Ci0gICAgZGF0YS0+Y2xpcC5tX2xlZnQgPSBsZWZ0OworICAgIGRhdGEtPmNsaXAudG9wKCkg
PSB0b3A7CisgICAgZGF0YS0+Y2xpcC5yaWdodCgpID0gcmlnaHQ7CisgICAgZGF0YS0+Y2xpcC5i
b3R0b20oKSA9IGJvdHRvbTsKKyAgICBkYXRhLT5jbGlwLmxlZnQoKSA9IGxlZnQ7CiB9CiAKIHZv
aWQgUmVuZGVyU3R5bGU6OmFkZEN1cnNvcihQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlLCBj
b25zdCBJbnRQb2ludCYgaG90U3BvdCkKQEAgLTEzMDksMTAgKzEzMDksMTAgQEAgY29uc3QgVmVj
dG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgUmVuZAogICAgIGlmICghbm9uZUxpc3RJbml0aWFs
aXplZCkgewogICAgICAgICBTdHlsZURhc2hib2FyZFJlZ2lvbiByZWdpb247CiAgICAgICAgIHJl
Z2lvbi5sYWJlbCA9ICIiOwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fdG9wICA9IExlbmd0aCgp
OwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fcmlnaHQgPSBMZW5ndGgoKTsKLSAgICAgICAgcmVn
aW9uLm9mZnNldC5tX2JvdHRvbSA9IExlbmd0aCgpOwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1f
bGVmdCA9IExlbmd0aCgpOworICAgICAgICByZWdpb24ub2Zmc2V0LnRvcCgpICA9IExlbmd0aCgp
OworICAgICAgICByZWdpb24ub2Zmc2V0LnJpZ2h0KCkgPSBMZW5ndGgoKTsKKyAgICAgICAgcmVn
aW9uLm9mZnNldC5ib3R0b20oKSA9IExlbmd0aCgpOworICAgICAgICByZWdpb24ub2Zmc2V0Lmxl
ZnQoKSA9IExlbmd0aCgpOwogICAgICAgICByZWdpb24udHlwZSA9IFN0eWxlRGFzaGJvYXJkUmVn
aW9uOjpOb25lOwogICAgICAgICBub25lTGlzdC5hcHBlbmQocmVnaW9uKTsKICAgICAgICAgbm9u
ZUxpc3RJbml0aWFsaXplZCA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzMSwx
MiArNTMxLDEyIEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVuZGVyU3R5
bGUmIG90aGVyKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVuZGVyU3R5bGUm
IG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIGJvb2wgaXNG
bG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5pc0Zsb2F0aW5nKCk7
IH0KLSAgICBib29sIGhhc01hcmdpbigpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4u
bm9uWmVybygpOyB9CisgICAgYm9vbCBoYXNNYXJnaW4oKSBjb25zdCB7IHJldHVybiAhc3Vycm91
bmQtPm1hcmdpbi5pc1plcm8oKTsgfQogICAgIGJvb2wgaGFzQm9yZGVyKCkgY29uc3QgeyByZXR1
cm4gc3Vycm91bmQtPmJvcmRlci5oYXNCb3JkZXIoKTsgfQogICAgIGJvb2wgaGFzQm9yZGVyRmls
bCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuaGFzRmlsbCgpOyB9CiAgICAgYm9v
bCBoYXNCb3JkZXJEZWNvcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gaGFzQm9yZGVyKCkgfHwgaGFz
Qm9yZGVyRmlsbCgpOyB9Ci0gICAgYm9vbCBoYXNQYWRkaW5nKCkgY29uc3QgeyByZXR1cm4gc3Vy
cm91bmQtPnBhZGRpbmcubm9uWmVybygpOyB9Ci0gICAgYm9vbCBoYXNPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0Lm5vblplcm8oKTsgfQorICAgIGJvb2wgaGFzUGFkZGlu
ZygpIGNvbnN0IHsgcmV0dXJuICFzdXJyb3VuZC0+cGFkZGluZy5pc1plcm8oKTsgfQorICAgIGJv
b2wgaGFzT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gIXN1cnJvdW5kLT5vZmZzZXQuaXNaZXJvKCk7
IH0KICAgICBib29sIGhhc01hcmdpbkJlZm9yZVF1aXJrKCkgY29uc3QgeyByZXR1cm4gbWFyZ2lu
QmVmb3JlKCkuaGFzUXVpcmsoKTsgfQogICAgIGJvb2wgaGFzTWFyZ2luQWZ0ZXJRdWlyaygpIGNv
bnN0IHsgcmV0dXJuIG1hcmdpbkFmdGVyKCkuaGFzUXVpcmsoKTsgfQogCkBAIC01NTgsNyArNTU4
LDcgQEAgcHVibGljOgogICAgIExheW91dEJveEV4dGVudCBpbWFnZU91dHNldHMoY29uc3QgTmlu
ZVBpZWNlSW1hZ2UmKSBjb25zdDsKICAgICBib29sIGhhc0JvcmRlckltYWdlT3V0c2V0cygpIGNv
bnN0CiAgICAgewotICAgICAgICByZXR1cm4gYm9yZGVySW1hZ2UoKS5oYXNJbWFnZSgpICYmIGJv
cmRlckltYWdlKCkub3V0c2V0KCkubm9uWmVybygpOworICAgICAgICByZXR1cm4gYm9yZGVySW1h
Z2UoKS5oYXNJbWFnZSgpICYmICFib3JkZXJJbWFnZSgpLm91dHNldCgpLmlzWmVybygpOwogICAg
IH0KICAgICBMYXlvdXRCb3hFeHRlbnQgYm9yZGVySW1hZ2VPdXRzZXRzKCkgY29uc3QKICAgICB7
CkBAIC01OTUsOCArNTk1LDggQEAgcHVibGljOgogICAgIGNvbnN0IExlbmd0aCYgYm90dG9tKCkg
Y29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5ib3R0b20oKTsgfQogCiAgICAgLy8gQWNj
ZXNzb3JzIGZvciBwb3NpdGlvbmVkIG9iamVjdCBlZGdlcyB0aGF0IHRha2UgaW50byBhY2NvdW50
IHdyaXRpbmcgbW9kZS4KLSAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyBy
ZXR1cm4gc3Vycm91bmQtPm9mZnNldC5sb2dpY2FsTGVmdCh3cml0aW5nTW9kZSgpKTsgfQotICAg
IGNvbnN0IExlbmd0aCYgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9m
ZnNldC5sb2dpY2FsUmlnaHQod3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGxv
Z2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5zdGFydCh3cml0aW5n
TW9kZSgpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1
cm4gc3Vycm91bmQtPm9mZnNldC5lbmQod3JpdGluZ01vZGUoKSk7IH0KICAgICBjb25zdCBMZW5n
dGgmIGxvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LmJlZm9yZSh3
cml0aW5nTW9kZSgpKTsgfQogICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbEJvdHRvbSgpIGNvbnN0
IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuYWZ0ZXIod3JpdGluZ01vZGUoKSk7IH0KIApAQCAt
MTIwMCwxMCArMTIwMCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQb3NpdGlvbihFUG9zaXRp
b24gdikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0UG9zaXRpb24odik7IH0KICAgICB2b2lkIHNl
dEZsb2F0aW5nKEVGbG9hdCB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRGbG9hdGluZyh2KTsg
fQogCi0gICAgdm9pZCBzZXRMZWZ0KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNl
dC5tX2xlZnQsIFdURjo6bW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldFJpZ2h0KExlbmd0aCB2KSB7
IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5tX3JpZ2h0LCBXVEY6Om1vdmUodikpOyB9Ci0gICAg
dm9pZCBzZXRUb3AoTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0Lm1fdG9wLCBX
VEY6Om1vdmUodikpOyB9Ci0gICAgdm9pZCBzZXRCb3R0b20oTGVuZ3RoIHYpIHsgU0VUX1ZBUihz
dXJyb3VuZCwgb2Zmc2V0Lm1fYm90dG9tLCBXVEY6Om1vdmUodikpOyB9CisgICAgdm9pZCBzZXRM
ZWZ0KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5sZWZ0KCksIFdURjo6bW92
ZSh2KSk7IH0KKyAgICB2b2lkIHNldFJpZ2h0KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQs
IG9mZnNldC5yaWdodCgpLCBXVEY6Om1vdmUodikpOyB9CisgICAgdm9pZCBzZXRUb3AoTGVuZ3Ro
IHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0LnRvcCgpLCBXVEY6Om1vdmUodikpOyB9Cisg
ICAgdm9pZCBzZXRCb3R0b20oTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0LmJv
dHRvbSgpLCBXVEY6Om1vdmUodikpOyB9CiAKICAgICB2b2lkIHNldFdpZHRoKExlbmd0aCB2KSB7
IFNFVF9WQVIobV9ib3gsIG1fd2lkdGgsIFdURjo6bW92ZSh2KSk7IH0KICAgICB2b2lkIHNldEhl
aWdodChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX2hlaWdodCwgV1RGOjptb3ZlKHYpKTsg
fQpAQCAtMTIzOSwxMCArMTIzOSwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBTdHlsZURh
c2hib2FyZFJlZ2lvbiByZWdpb247CiAgICAgICAgIHJlZ2lvbi5sYWJlbCA9IGxhYmVsOwotICAg
ICAgICByZWdpb24ub2Zmc2V0Lm1fdG9wID0gV1RGOjptb3ZlKHQpOwotICAgICAgICByZWdpb24u
b2Zmc2V0Lm1fcmlnaHQgPSBXVEY6Om1vdmUocik7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubV9i
b3R0b20gPSBXVEY6Om1vdmUoYik7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubV9sZWZ0ID0gV1RG
Ojptb3ZlKGwpOworICAgICAgICByZWdpb24ub2Zmc2V0LnRvcCgpID0gV1RGOjptb3ZlKHQpOwor
ICAgICAgICByZWdpb24ub2Zmc2V0LnJpZ2h0KCkgPSBXVEY6Om1vdmUocik7CisgICAgICAgIHJl
Z2lvbi5vZmZzZXQuYm90dG9tKCkgPSBXVEY6Om1vdmUoYik7CisgICAgICAgIHJlZ2lvbi5vZmZz
ZXQubGVmdCgpID0gV1RGOjptb3ZlKGwpOwogICAgICAgICByZWdpb24udHlwZSA9IHR5cGU7CiAg
ICAgICAgIGlmICghYXBwZW5kKQogICAgICAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCktPm1fZGFzaGJvYXJkUmVnaW9ucy5jbGVhcigpOwpAQCAtMTMyMywxMCArMTMyMywxMCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWZXJ0aWNhbEFsaWduTGVuZ3RoKExlbmd0aCBsZW5ndGgp
IHsgc2V0VmVydGljYWxBbGlnbihMRU5HVEgpOyBTRVRfVkFSKG1fYm94LCBtX3ZlcnRpY2FsQWxp
Z24sIFdURjo6bW92ZShsZW5ndGgpKTsgfQogCiAgICAgdm9pZCBzZXRIYXNDbGlwKGJvb2wgYiA9
IHRydWUpIHsgU0VUX1ZBUih2aXN1YWwsIGhhc0NsaXAsIGIpOyB9Ci0gICAgdm9pZCBzZXRDbGlw
TGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLm1fbGVmdCwgV1RGOjpt
b3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRDbGlwUmlnaHQoTGVuZ3RoIGxlbmd0aCkgeyBT
RVRfVkFSKHZpc3VhbCwgY2xpcC5tX3JpZ2h0LCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2
b2lkIHNldENsaXBUb3AoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5tX3Rv
cCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRDbGlwQm90dG9tKExlbmd0aCBs
ZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAubV9ib3R0b20sIFdURjo6bW92ZShsZW5ndGgp
KTsgfQorICAgIHZvaWQgc2V0Q2xpcExlZnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3Vh
bCwgY2xpcC5sZWZ0KCksIFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0Q2xpcFJp
Z2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAucmlnaHQoKSwgV1RGOjpt
b3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRDbGlwVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VU
X1ZBUih2aXN1YWwsIGNsaXAudG9wKCksIFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQg
c2V0Q2xpcEJvdHRvbShMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLmJvdHRv
bSgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KICAgICB2b2lkIHNldENsaXAoTGVuZ3RoIHRvcCwg
TGVuZ3RoIHJpZ2h0LCBMZW5ndGggYm90dG9tLCBMZW5ndGggbGVmdCk7CiAgICAgdm9pZCBzZXRD
bGlwKExlbmd0aEJveCBib3gpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAsIFdURjo6bW92ZShib3gp
KTsgfQogCkBAIC0xNDM0LDE5ICsxNDM0LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExpc3RT
dHlsZVBvc2l0aW9uKEVMaXN0U3R5bGVQb3NpdGlvbiB2KSB7IGluaGVyaXRlZF9mbGFncy5fbGlz
dF9zdHlsZV9wb3NpdGlvbiA9IHY7IH0KIAogICAgIHZvaWQgcmVzZXRNYXJnaW4oKSB7IFNFVF9W
QVIoc3Vycm91bmQsIG1hcmdpbiwgTGVuZ3RoQm94KEZpeGVkKSk7IH0KLSAgICB2b2lkIHNldE1h
cmdpblRvcChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5tX3RvcCwg
V1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5Cb3R0b20oTGVuZ3RoIGxl
bmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ubV9ib3R0b20sIFdURjo6bW92ZShsZW5n
dGgpKTsgfQotICAgIHZvaWQgc2V0TWFyZ2luTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIo
c3Vycm91bmQsIG1hcmdpbi5tX2xlZnQsIFdURjo6bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQg
c2V0TWFyZ2luUmlnaHQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4u
bV9yaWdodCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5Ub3AoTGVu
Z3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4udG9wKCksIFdURjo6bW92ZShs
ZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFyZ2luQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VU
X1ZBUihzdXJyb3VuZCwgbWFyZ2luLmJvdHRvbSgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAg
ICB2b2lkIHNldE1hcmdpbkxlZnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBt
YXJnaW4ubGVmdCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1hcmdpblJp
Z2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLnJpZ2h0KCksIFdU
Rjo6bW92ZShsZW5ndGgpKTsgfQogICAgIHZvaWQgc2V0TWFyZ2luU3RhcnQoTGVuZ3RoKTsKICAg
ICB2b2lkIHNldE1hcmdpbkVuZChMZW5ndGgpOwogCiAgICAgdm9pZCByZXNldFBhZGRpbmcoKSB7
IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcsIExlbmd0aEJveChBdXRvKSk7IH0KICAgICB2b2lk
IHNldFBhZGRpbmdCb3goTGVuZ3RoQm94IGJveCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5n
LCBXVEY6Om1vdmUoYm94KSk7IH0KLSAgICB2b2lkIHNldFBhZGRpbmdUb3AoTGVuZ3RoIGxlbmd0
aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLm1fdG9wLCBXVEY6Om1vdmUobGVuZ3RoKSk7
IH0KLSAgICB2b2lkIHNldFBhZGRpbmdCb3R0b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1
cnJvdW5kLCBwYWRkaW5nLm1fYm90dG9tLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lk
IHNldFBhZGRpbmdMZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGlu
Zy5tX2xlZnQsIFdURjo6bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0UGFkZGluZ1JpZ2h0
KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5tX3JpZ2h0LCBXVEY6
Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdUb3AoTGVuZ3RoIGxlbmd0aCkg
eyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLnRvcCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0K
KyAgICB2b2lkIHNldFBhZGRpbmdCb3R0b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJv
dW5kLCBwYWRkaW5nLmJvdHRvbSgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNl
dFBhZGRpbmdMZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5s
ZWZ0KCksIFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0UGFkZGluZ1JpZ2h0KExl
bmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5yaWdodCgpLCBXVEY6Om1v
dmUobGVuZ3RoKSk7IH0KIAogICAgIHZvaWQgc2V0Q3Vyc29yKEVDdXJzb3IgYykgeyBpbmhlcml0
ZWRfZmxhZ3MuX2N1cnNvcl9zdHlsZSA9IGM7IH0KICAgICB2b2lkIGFkZEN1cnNvcihQYXNzUmVm
UHRyPFN0eWxlSW1hZ2U+LCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCA9IEludFBvaW50KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252930</attachid>
            <date>2015-05-11 21:12:20 -0700</date>
            <delta_ts>2015-05-11 21:53:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143399-20150511211059.patch</filename>
            <type>text/plain</type>
            <size>40682</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDE1LTA1LTExICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29kZSBjbGVh
biB1cCBmb3IgZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtaXggb2YgV3JpdGluZ01v
ZGUgYW5kIFRleHREaXJlY3Rpb24gLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQzMzk5LgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBlaWdodCBUZXh0Rmxvd3MuIEEgVGV4dEZsb3cg
Y29uc2lzdHMgb2YgdHdvIGRpcmVjdGlvbnMuIFRoZQorICAgICAgICBmaXJzdCBvbmUgY29udHJv
bHMgdGhlIGxpbmUgZ3Jvd2luZyBkaXJlY3Rpb24gYW5kIHRoZSBzZWNvbmQgb25lIGNvbnRyb2xz
IHRoZQorICAgICAgICBibG9jayBncm93aW5nIGRpcmVjdGlvbi4KKyAgICAgICAgCisgICAgICAg
IFdlIG5lZWQgdG8gZXh0cmFjdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGVhc2lseSBmcm9t
IHRoZSBUZXh0RmxvdworCisgICAgICAgIC0tIGlzVGV4dEZsb3dSZXZlcnNlZCgpIC8vIFJUTAor
ICAgICAgICAtLSBpc1RleHRGbG93RmxpcHBlZCgpICAvLyB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9u
IHRvIG5vcm1hbAorICAgICAgICAtLSBpc1RleHRGbG93VmVydGljYWwoKSAvLyBUaGUgbGluZSBn
cm93cyB2ZXJ0aWNhbGx5CisKKyAgICAgICAgTWl4aW5nIFdyaXRpbmdNb2RlIGFuZCBUZXh0RGly
ZWN0aW9uIGludG8gVGV4dEZsb3cgYW5kIGNob29zaW5nIHRoZWlyIHZhbHVlcworICAgICAgICBj
YXJlZnVsbHkgdG8gZWFzZSBpbXBsZW1lbnRpbmcgdGhlIGFib3ZlIGZ1bmN0aW9ucyBjYW4gbWFr
ZSB0aGluZ3MgY2xlYXJlci4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhCb3guY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzOgorICAgICAgICBSZW1vdmUgTGVuZ3RoQm94LmNwcCBzaW5jZSBhbGwgaXRzIGZ1bmN0aW9u
cyBiZWNvbWUgc2luZ2xlIGxpbmUgZnVuY3Rpb25zCisgICAgICAgIGFuZCBjb3VsZCBiZSBtb3Zl
ZCB0byB0aGUgaGVhZGVyIGZpbGUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0
aEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpMZW5ndGhCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpsZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aEJv
eDo6cmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94Ojp0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6TGVuZ3RoQm94Ojpib3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6Om9wZXJhdG9yIT0pOiBVc2UgYW4gYXJyYXkg
b2YgTGVuZ3RocyBmb3IgdGhlIGZvdXIgc2lkZXMuCisgICAgICAgIEFuZCB1c2UgdGhlIGVudW0g
UGh5c2ljYWxCb3hTaWRlIHRvIGFjY2VzcyB0aGlzIGFycmF5LgorCisgICAgICAgIChXZWJDb3Jl
OjpMZW5ndGhCb3g6OmlzWmVybyk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6Om5vblpl
cm8pOiBEZWxldGVkLgorICAgICAgICBVc2UgaXNaZXJvKCkgaW5zdGVhZCBvZiBub25aZXJvKCkg
c2luY2UgdGhlIGZvcm1lciBpcyBjbGVhcmVyLgorCisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhC
b3g6OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6OmFmdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3Ro
Qm94OjplbmQpOgorICAgICAgICBVc2UgdGhlIG1hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZSgp
IGdldCB0aGUgcGh5c2ljYWwgc2lkZSBvZiB0aGUgYm94IGJhc2VkCisgICAgICAgIG9uIHRoZSBk
aXJlY3Rpb24gYW5kIHRoZSB3cml0aW5nIG1vZGUuIAorICAgICAgICAKKyAgICAgICAgKiBjc3Mv
Q1NTUHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZVRvUGh5c2ljYWxQcm9w
ZXJ0eSk6IEluc3RlYWQgb2YgaGFuZGxpbmcgdGhlIGVpZ2h0IHBvc3NpYmxlCisgICAgICAgIGNh
c2VzIG9mIHRoZSB0ZXh0IGZsb3dzIG9uZSBieSBvbmUsIHdlIGNhbiBhbmFseXplIHRoZSB0ZXh0
IGZsb3cgYW5kIHN3YXAgdGhlCisgICAgICAgIHNpZGUgcHJvcGVydHkgaW5kZXggdG8gZ2V0IHRo
ZSBwcm9wZXIgdmFsdWUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEZs
YWdzLmg6IFVzdWFsbHkgdGhlIGRlZmF1bHQgdmFsdWUgaXMgZGVmaW5lZCBmaXJzdC4KKyAgICAg
ICAgQW5kIGlmIHRoZSB2YWx1ZSBpcyBpbnRlZ2VyIG9yIGVudW0sIGl0IHNob3VsZCBiZSBlcXVh
bCB0byB6ZXJvLiBTaW5jZSBMVFIKKyAgICAgICAgaXMgdGhlIGRlZmF1bHQgZm9yIHRoZSB0ZXh0
IGRpcmVjdGlvbiwgaXQgc2hvdWxkIGJlIGRlZmluZWQgYmVmb3JlIFJUTC4KKyAgICAgICAgCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6
bWFrZVRleHRGbG93KTogIERlZmluaW5nIGEgZnVuY3Rpb24gdG8gbWFrZSBhIFRleHRGbG93IG91
dCBmcm9tCisgICAgICAgIFdyaXRpbmdNb2RlIGFuZCBUZXh0RGlyZWN0aW9uLgorICAgICAgICAK
KyAgICAgICAgKFdlYkNvcmU6OmlzVGV4dEZsb3dSZXZlcnNlZCk6IFJldHVybnMgdHJ1ZSBpZiB0
aGUgdGV4dCBkaXJlY3Rpb24gaXMgUlRMLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6Omlz
VGV4dEZsb3dGbGlwcGVkKTogUmV0dXJucyB0cnVlIGlmIGJsb2NrIGdyb3dpbmcgZGlyZWN0aW9u
CisgICAgICAgIGlzIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gbm9ybWFsLgorICAgICAg
ICAKKyAgICAgICAgKFdlYkNvcmU6OmlzVGV4dEZsb3dWZXJ0aWNhbCk6CisgICAgICAgIChXZWJD
b3JlOjppc1ZlcnRpY2FsV3JpdGluZ01vZGUpOiBSZXR1cm5zIHRydWUgaWYgVGhlIGxpbmUgZ3Jv
d3MgdmVydGljYWxseS4KKworICAgICAgICAoV2ViQ29yZTo6aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUpOiAKKyAgICAgICAgKFdlYkNvcmU6OmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUpOiBVc2UgdGhlIHRleHQg
ZmxvdyBmdW5jdGlvbnMgaW5zdGVhZC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjptYXBM
b2dpY2FsVG9QaHlzaWNhbEJveFNpZGUpOiBJdCBtYXBzIGEgbG9naWNhbCBzaWRlIG9mIGEgYm94
CisgICAgICAgIGdpdmVuIHRoZSBjdXJyZW50IHRleHQgZGlyZWN0aW9uIGFuZCB0aGUgd3JpdGlu
ZyBtb2RlLgorCisgICAgICAgICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VTbGljZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVF1YWQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2V0Q2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6bm9uZURh
c2hib2FyZFJlZ2lvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
OiBVc2UgdGhlIExlbmd0aEJveCBzaWRlcycgYWNjZXNzIG1ldGhvZHMgaW5zdGVhZAorICAgICAg
ICBvZiBkaXJlY3RseSB1c2luZyB0aGUgc2lkZXMnIGFycmF5LgorCiAyMDE1LTA1LTExICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNtYWxsIHRpZHl1
cCBpbiBhbmltYXRpb25zIGNvZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
ODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMjAzOCw3ICsyMDM4LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL0tp
bGxSaW5nTm9uZS5jcHAKICAgICBwbGF0Zm9ybS9MYW5ndWFnZS5jcHAKICAgICBwbGF0Zm9ybS9M
ZW5ndGguY3BwCi0gICAgcGxhdGZvcm0vTGVuZ3RoQm94LmNwcAogICAgIHBsYXRmb3JtL0xpbmtI
YXNoLmNwcAogICAgIHBsYXRmb3JtL0xvZ2dpbmcuY3BwCiAgICAgcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvagkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODAwNiw3ICs4MDA2
LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXFVSTC5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMYW5ndWFnZS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMZW5ndGguY3BwIiAvPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGVuZ3RoQm94LmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExpbmtIYXNoLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExvY2FsaXplZFN0cmluZ3MuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTG9nZ2luZy5jcHAiIC8+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCShyZXZpc2lvbiAxODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTExMTMsOSArMTExMyw2
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMZW5ndGguY3BwIj4KICAg
ICAgIDxGaWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExlbmd0aEJveC5jcHAiPgotICAgICAgPEZpbHRl
cj5wbGF0Zm9ybTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cTGlua0hhc2guY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm08
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4NDExNikKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNjA1LDcgKzYwNSw2IEBACiAJCTE0NDc2QUE4MTVEQzRCQjEwMDMwNURCMiAvKiBX
cml0aW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQ0NzZBQTcxNURDNEJCMTAwMzA1REIyIC8qIFdyaXRpbmdNb2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ0OUUyNEMxMDdENEE4NDAw
QjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDQ5RTI0QTEwN0Q0QTg0MDBCNTc5M0YgLyogSlNDYWxsYmFja0Rh
dGEuaCAqLzsgfTsKIAkJMTQ0OUUyODcxMDdENERCNDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDlF
Mjg2MTA3RDREQjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5jcHAgKi87IH07Ci0JCTE0NkND
MTE1MTU2OTg4RTQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ2Q0MxMTMxNTY5ODhCRDAwMTA5RTM3IC8qIExl
bmd0aEJveC5jcHAgKi87IH07CiAJCTE0NzdFNzc2MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2Fj
aGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3
N0U3NzQwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgKi87IH07CiAJCTE0NzdFNzc3
MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NzdFNzc1MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2Fj
aGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
NDc5RkFFRDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDc5RkFFNTEwOUFFMzc1MDBERUQ2NTUg
LyogUmVuZGVyUnVieS5jcHAgKi87IH07CkBAIC03NjgwLDcgKzc2NzksNiBAQAogCQkxNDQ3NkFB
NzE1REM0QkIxMDAzMDVEQjIgLyogV3JpdGluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV3JpdGluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTQ0OUUyNEExMDdENEE4NDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FsbGJhY2tEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0NDlFMjg2MTA3RDREQjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbGxiYWNrRGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0NkNDMTEzMTU2OTg4QkQwMDEwOUUz
NyAvKiBMZW5ndGhCb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TGVuZ3RoQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ3N0U3NzQwQkY0
MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUGFnZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTQ3N0U3NzUwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGFnZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTE0NzlGQUU1MTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclJ1YnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjE3NjAsNyArMjE3NTgsNiBAQAogCQkJCTE0MURDMDQ3MTY0ODM0
OEYwMDM3MUU1QSAvKiBMYXlvdXRVbml0LmggKi8sCiAJCQkJQkNFNjVCRTgwRUFDREYxNjAwN0U0
NTMzIC8qIExlbmd0aC5jcHAgKi8sCiAJCQkJQkNFNjVCRTkwRUFDREYxNjAwN0U0NTMzIC8qIExl
bmd0aC5oICovLAotCQkJCTE0NkNDMTEzMTU2OTg4QkQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3Bw
ICovLAogCQkJCUJDRkY2NDhGMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCAqLywKIAkJ
CQlCQ0ZGNjQ5MDBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oICovLAogCQkJCUE3QUQy
Rjg1MEVDODlEMDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5jcHAgKi8sCkBAIC0yOTMwNiw3ICsyOTMw
Myw2IEBACiAJCQkJNTEyREQ4RjQwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hpdmUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCMjQxN0IwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2Fj
eVdlYkFyY2hpdmVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0U2NUJFQTBFQUNERjE2MDA3
RTQ1MzMgLyogTGVuZ3RoLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTE0NkNDMTE1MTU2OTg4RTQw
MDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTU1RjQ5N0ExNTFC
ODg4MDAwQkI2N0RCIC8qIExlbmd0aEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RkI2OThDQzE4MzNFRTBEMDAxNThBMzEgLyogTGluZUJyZWFrZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODlCNUVBQTExMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuY3BwIGluIFNvdXJj
ZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDE4NDEx
NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU0LDExMiArNTQsMTAgQEAgdm9pZCBDU1NQcm9wZXJ0eTo6d3JhcFZhbHVlSW5Db21tYVNl
cGFyYQogICAgIG1fdmFsdWUgPSBXVEY6Om1vdmUobGlzdCk7CiB9CiAKLWVudW0gTG9naWNhbEJv
eFNpZGUgeyBCZWZvcmVTaWRlLCBFbmRTaWRlLCBBZnRlclNpZGUsIFN0YXJ0U2lkZSB9OwotZW51
bSBQaHlzaWNhbEJveFNpZGUgeyBUb3BTaWRlLCBSaWdodFNpZGUsIEJvdHRvbVNpZGUsIExlZnRT
aWRlIH07Ci0KIHN0YXRpYyBDU1NQcm9wZXJ0eUlEIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHko
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2Fs
Qm94U2lkZSBsb2dpY2FsU2lkZSwgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRo
YW5kKQogewotICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKSB7Ci0gICAgICAgIGlmICh3cml0aW5n
TW9kZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlKSB7Ci0gICAgICAgICAgICAvLyBUaGUgY29t
bW9uIGNhc2UuIFRoZSBsb2dpY2FsIGFuZCBwaHlzaWNhbCBib3ggc2lkZXMgbWF0Y2guCi0gICAg
ICAgICAgICAvLyBMZWZ0ID0gU3RhcnQsIFJpZ2h0ID0gRW5kLCBCZWZvcmUgPSBUb3AsIEFmdGVy
ID0gQm90dG9tCi0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtsb2dp
Y2FsU2lkZV07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAod3JpdGluZ01vZGUgPT0gQm90dG9t
VG9Ub3BXcml0aW5nTW9kZSkgewotICAgICAgICAgICAgLy8gU3RhcnQgPSBMZWZ0LCBFbmQgPSBS
aWdodCwgQmVmb3JlID0gQm90dG9tLCBBZnRlciA9IFRvcC4KLSAgICAgICAgICAgIHN3aXRjaCAo
bG9naWNhbFNpZGUpIHsKLSAgICAgICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAg
ICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICAgICAgICAg
IGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtSaWdodFNpZGVdOwotICAgICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAg
ICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICh3
cml0aW5nTW9kZSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlKSB7Ci0gICAgICAgICAgICAvLyBT
dGFydCA9IFRvcCwgRW5kID0gQm90dG9tLCBCZWZvcmUgPSBMZWZ0LCBBZnRlciA9IFJpZ2h0Lgot
ICAgICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewotICAgICAgICAgICAgY2FzZSBTdGFy
dFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9w
U2lkZV07Ci0gICAgICAgICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgICAgICAgICBjYXNlIEJl
Zm9yZVNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClb
TGVmdFNpZGVdOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
c2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gU3RhcnQgPSBUb3AsIEVuZCA9IEJvdHRvbSwgQmVmb3JlID0gUmln
aHQsIEFmdGVyID0gTGVmdAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAg
IGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVz
KClbVG9wU2lkZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBz
aG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNp
ZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVd
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0
aWVzKClbTGVmdFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdyaXRpbmdNb2Rl
ID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8gU3RhcnQgPSBSaWdodCwg
RW5kID0gTGVmdCwgQmVmb3JlID0gVG9wLCBBZnRlciA9IEJvdHRvbQotICAgICAgICBzd2l0Y2gg
KGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0
dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKLSAgICAgICAgY2FzZSBFbmRT
aWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVd
OwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5k
LnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUpIHsKLSAg
ICAgICAgLy8gU3RhcnQgPSBSaWdodCwgRW5kID0gTGVmdCwgQmVmb3JlID0gQm90dG9tLCBBZnRl
ciA9IFRvcAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3Rh
cnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRT
aWRlXTsKLSAgICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFu
ZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAg
ICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1Rv
cFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09IExlZnRU
b1JpZ2h0V3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRv
cCwgQmVmb3JlID0gTGVmdCwgQWZ0ZXIgPSBSaWdodAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxT
aWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0
aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAg
ICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwotICAgICAg
ICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtMZWZ0U2lkZV07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
Ly8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRvcCwgQmVmb3JlID0gUmlnaHQsIEFmdGVyID0gTGVm
dAotICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKLSAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAg
ICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgY2FzZSBF
bmRTaWRlOgotICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsK
LSAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGll
cygpW1JpZ2h0U2lkZV07Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgIH0KKyAgICBQaHlzaWNhbEJveFNpZGUgcGh5c2lj
YWxTaWRlID0gbWFwTG9naWNhbFRvUGh5c2ljYWxCb3hTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5n
TW9kZSwgZGlyZWN0aW9uKSwgbG9naWNhbFNpZGUpOworICAgIHJldHVybiBzaG9ydGhhbmQucHJv
cGVydGllcygpW3BoeXNpY2FsU2lkZV07CiB9CiAKIGVudW0gTG9naWNhbEV4dGVudCB7IExvZ2lj
YWxXaWR0aCwgTG9naWNhbEhlaWdodCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Rv
U3R5bGVNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxl
TWFwLmNwcAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5
bGVNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTgsMjEgKzYxOCwyMSBAQCB2b2lkIENTU1Rv
U3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlU2xpCiAgICAgTGVuZ3RoQm94IGJveDsKICAgICBR
dWFkKiBzbGljZXMgPSBib3JkZXJJbWFnZVNsaWNlLnNsaWNlcygpOwogICAgIGlmIChzbGljZXMt
PnRvcCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNl
cy0+dG9wKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICBib3gudG9wKCkg
PSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAg
ZWxzZQotICAgICAgICBib3gubV90b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0SW50VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgICAgIGJveC50
b3AoKSA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQZXJj
ZW50YWdlKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgp
LT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVu
Z3RoKHNsaWNlcy0+Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgIGVs
c2UKLSAgICAgICAgYm94Lm1fYm90dG9tID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+
Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAg
ICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+Z2V0Rmxv
YXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKICAgICBpZiAo
c2xpY2VzLT5sZWZ0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9sZWZ0ID0gTGVu
Z3RoKHNsaWNlcy0+bGVmdCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAg
Ym94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVy
Y2VudCk7CiAgICAgZWxzZQotICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVm
dCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsK
KyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0SW50VmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CiAgICAgaWYgKHNsaWNlcy0+
cmlnaHQoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX3JpZ2h0ID0gTGVuZ3RoKHNs
aWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIGJveC5y
aWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2Vu
dCk7CiAgICAgZWxzZQotICAgICAgICBib3gubV9yaWdodCA9IExlbmd0aChzbGljZXMtPnJpZ2h0
KCktPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwor
ICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwogICAgIGltYWdlLnNldElt
YWdlU2xpY2VzKGJveCk7CiAKICAgICAvLyBTZXQgb3VyIGZpbGwgbW9kZS4KQEAgLTY1NCwzMiAr
NjU0LDMyIEBAIExlbmd0aEJveCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWEKICAgICBM
ZW5ndGhCb3ggYm94OyAvLyBEZWZhdWx0cyB0byAnYXV0bycgc28gd2UgZG9uJ3QgaGF2ZSB0byBo
YW5kbGUgdGhhdCBleHBsaWNpdGx5IGJlbG93LgogICAgIFF1YWQqIHNsaWNlcyA9IGJvcmRlcldp
ZHRocy5nZXRRdWFkVmFsdWUoKTsKICAgICBpZiAoc2xpY2VzLT50b3AoKS0+aXNOdW1iZXIoKSkK
LSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldEludFZhbHVlKCks
IFJlbGF0aXZlKTsKKyAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdl
dEludFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChzbGljZXMtPnRvcCgpLT5pc1Bl
cmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdl
dERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQp
OworICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CiAgICAgZWxz
ZSBpZiAoc2xpY2VzLT50b3AoKS0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAg
ICAgYm94Lm1fdG9wID0gc2xpY2VzLT50b3AoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZl
cnNpb25EYXRhKTsKKyAgICAgICAgYm94LnRvcCgpID0gc2xpY2VzLT50b3AoKS0+Y29tcHV0ZUxl
bmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIGlmIChzbGljZXMtPnJpZ2h0KCkt
PmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC5tX3JpZ2h0ID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQo
KS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0
aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlm
IChzbGljZXMtPnJpZ2h0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9yaWdodCA9
IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0
aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+cmlnaHQoKS0+Z2V0
VmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAgICAgYm94Lm1fcmlnaHQgPSBzbGljZXMt
PnJpZ2h0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAg
IGJveC5yaWdodCgpID0gc2xpY2VzLT5yaWdodCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29u
dmVyc2lvbkRhdGEpOwogCiAgICAgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmlzTnVtYmVyKCkpCi0g
ICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXRJbnRWYWx1
ZSgpLCBSZWxhdGl2ZSk7CisgICAgICAgIGJveC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJv
dHRvbSgpLT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5i
b3R0b20oKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChz
bGljZXMtPmJvdHRvbSgpLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BF
UkNFTlRBR0UpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNl
cy0+Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VO
VEFHRSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmdldFZhbHVl
SUQoKSAhPSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IHNsaWNlcy0+Ym90
dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJv
eC5ib3R0b20oKSA9IHNsaWNlcy0+Ym90dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252
ZXJzaW9uRGF0YSk7CiAKICAgICBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzTnVtYmVyKCkpCi0gICAg
ICAgIGJveC5tX2xlZnQgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldEludFZhbHVlKCksIFJl
bGF0aXZlKTsKKyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0
SW50VmFsdWUoKSwgUmVsYXRpdmUpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc1Bl
cmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+
Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2Vu
dCk7CisgICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldERvdWJs
ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwogICAg
IGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQot
ICAgICAgICBib3gubV9sZWZ0ID0gc2xpY2VzLT5sZWZ0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3Ro
Pihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJveC5sZWZ0KCkgPSBzbGljZXMtPmxlZnQoKS0+
Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIHJldHVybiBib3g7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5jcHAJKHJldmlzaW9uIDE4
NDExNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGVu
Z3RoQm94LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgTGVuZ3RoJiBMZW5ndGhC
b3g6OmxvZ2ljYWxMZWZ0KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAotewotICAgIHJl
dHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyBtX2xlZnQgOiBtX3Rv
cDsKLX0KLQotY29uc3QgTGVuZ3RoJiBMZW5ndGhCb3g6OmxvZ2ljYWxSaWdodChXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUod3JpdGluZ01vZGUpID8gbV9yaWdodCA6IG1fYm90dG9tOwotfQotCi1jb25zdCBMZW5ndGgm
IExlbmd0aEJveDo6YmVmb3JlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAotewotICAg
IHN3aXRjaCAod3JpdGluZ01vZGUpIHsKLSAgICBjYXNlIFRvcFRvQm90dG9tV3JpdGluZ01vZGU6
Ci0gICAgICAgIHJldHVybiBtX3RvcDsKLSAgICBjYXNlIEJvdHRvbVRvVG9wV3JpdGluZ01vZGU6
Ci0gICAgICAgIHJldHVybiBtX2JvdHRvbTsKLSAgICBjYXNlIExlZnRUb1JpZ2h0V3JpdGluZ01v
ZGU6Ci0gICAgICAgIHJldHVybiBtX2xlZnQ7Ci0gICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdN
b2RlOgotICAgICAgICByZXR1cm4gbV9yaWdodDsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIG1fdG9wOwotfQotCi1jb25zdCBMZW5ndGgmIExlbmd0aEJveDo6
YWZ0ZXIoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIGNvbnN0Ci17Ci0gICAgc3dpdGNoICh3cml0
aW5nTW9kZSkgewotICAgIGNhc2UgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZToKLSAgICAgICAgcmV0
dXJuIG1fYm90dG9tOwotICAgIGNhc2UgQm90dG9tVG9Ub3BXcml0aW5nTW9kZToKLSAgICAgICAg
cmV0dXJuIG1fdG9wOwotICAgIGNhc2UgTGVmdFRvUmlnaHRXcml0aW5nTW9kZToKLSAgICAgICAg
cmV0dXJuIG1fcmlnaHQ7Ci0gICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlOgotICAgICAg
ICByZXR1cm4gbV9sZWZ0OwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gbV9ib3R0b207Ci19Ci0KLWNvbnN0IExlbmd0aCYgTGVuZ3RoQm94OjpzdGFydChXcml0
aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Ci17Ci0g
ICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSkKLSAgICAgICAgcmV0
dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IG1fbGVmdCA6IG1fcmlnaHQ7
Ci0gICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IG1fdG9wIDog
bV9ib3R0b207Ci19Ci0KLWNvbnN0IExlbmd0aCYgTGVuZ3RoQm94OjplbmQoV3JpdGluZ01vZGUg
d3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAotewotICAgIGlmIChp
c0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkpCi0gICAgICAgIHJldHVybiBpc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBtX3JpZ2h0IDogbV9sZWZ0OwotICAgIHJl
dHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBtX2JvdHRvbSA6IG1fdG9w
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGhCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZW5ndGhCb3guaAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHly
aWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICAgIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAgICBDb3B5cmlnaHQgKGMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCkBAIC0yNSw3OCArMjUsNzIgQEAKICNpbmNsdWRlICJMZW5ndGguaCIKICNp
bmNsdWRlICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgTGVuZ3RoQm94
IHsKICAgICBMZW5ndGhCb3goKQorICAgICAgICA6IG1fc2lkZXMoNCkKICAgICB7CiAgICAgfQog
CiAgICAgZXhwbGljaXQgTGVuZ3RoQm94KExlbmd0aFR5cGUgdHlwZSkKLSAgICAgICAgOiBtX2xl
ZnQodHlwZSkKLSAgICAgICAgLCBtX3JpZ2h0KHR5cGUpCi0gICAgICAgICwgbV90b3AodHlwZSkK
LSAgICAgICAgLCBtX2JvdHRvbSh0eXBlKQorICAgICAgICA6IG1fc2lkZXMoeyB0eXBlLCB0eXBl
LCB0eXBlLCB0eXBlIH0pCiAgICAgewogICAgIH0KIAogICAgIGV4cGxpY2l0IExlbmd0aEJveChp
bnQgdikKLSAgICAgICAgOiBtX2xlZnQoTGVuZ3RoKHYsIEZpeGVkKSkKLSAgICAgICAgLCBtX3Jp
Z2h0KExlbmd0aCh2LCBGaXhlZCkpCi0gICAgICAgICwgbV90b3AoTGVuZ3RoKHYsIEZpeGVkKSkK
LSAgICAgICAgLCBtX2JvdHRvbShMZW5ndGgodiwgRml4ZWQpKQorICAgICAgICA6IG1fc2lkZXMo
eyBMZW5ndGgodiwgRml4ZWQpLCBMZW5ndGgodiwgRml4ZWQpLCBMZW5ndGgodiwgRml4ZWQpLCBM
ZW5ndGgodiwgRml4ZWQpIH0pCiAgICAgewogICAgIH0KIAogICAgIExlbmd0aEJveChMZW5ndGgg
dG9wLCBMZW5ndGggcmlnaHQsIExlbmd0aCBib3R0b20sIExlbmd0aCBsZWZ0KQotICAgICAgICA6
IG1fbGVmdChXVEY6Om1vdmUobGVmdCkpCi0gICAgICAgICwgbV9yaWdodChXVEY6Om1vdmUocmln
aHQpKQotICAgICAgICAsIG1fdG9wKFdURjo6bW92ZSh0b3ApKQotICAgICAgICAsIG1fYm90dG9t
KFdURjo6bW92ZShib3R0b20pKQorICAgICAgICA6IG1fc2lkZXMoeyBXVEY6Om1vdmUodG9wKSwg
V1RGOjptb3ZlKHJpZ2h0KSwgV1RGOjptb3ZlKGJvdHRvbSksIFdURjo6bW92ZShsZWZ0KSB9KQog
ICAgIHsKICAgICB9CiAKICAgICBMZW5ndGhCb3goaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90
dG9tLCBpbnQgbGVmdCkKLSAgICAgICAgOiBtX2xlZnQoTGVuZ3RoKGxlZnQsIEZpeGVkKSkKLSAg
ICAgICAgLCBtX3JpZ2h0KExlbmd0aChyaWdodCwgRml4ZWQpKQotICAgICAgICAsIG1fdG9wKExl
bmd0aCh0b3AsIEZpeGVkKSkKLSAgICAgICAgLCBtX2JvdHRvbShMZW5ndGgoYm90dG9tLCBGaXhl
ZCkpCisgICAgICAgIDogbV9zaWRlcyh7IExlbmd0aCh0b3AsIEZpeGVkKSwgTGVuZ3RoKHJpZ2h0
LCBGaXhlZCksIExlbmd0aChib3R0b20sIEZpeGVkKSwgTGVuZ3RoKGxlZnQsIEZpeGVkKSB9KQog
ICAgIHsKICAgICB9CiAKLSAgICBjb25zdCBMZW5ndGgmIGxlZnQoKSBjb25zdCB7IHJldHVybiBt
X2xlZnQ7IH0KLSAgICBjb25zdCBMZW5ndGgmIHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yaWdo
dDsgfQotICAgIGNvbnN0IExlbmd0aCYgdG9wKCkgY29uc3QgeyByZXR1cm4gbV90b3A7IH0KLSAg
ICBjb25zdCBMZW5ndGgmIGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tOyB9CisgICAg
TGVuZ3RoJiBsZWZ0KCkgeyByZXR1cm4gbV9zaWRlc1tMZWZ0U2lkZV07IH0KKyAgICBMZW5ndGgm
IHJpZ2h0KCkgeyByZXR1cm4gbV9zaWRlc1tSaWdodFNpZGVdOyB9CisgICAgTGVuZ3RoJiB0b3Ao
KSB7IHJldHVybiBtX3NpZGVzW1RvcFNpZGVdOyB9CisgICAgTGVuZ3RoJiBib3R0b20oKSB7IHJl
dHVybiBtX3NpZGVzW0JvdHRvbVNpZGVdOyB9CiAKLSAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxM
ZWZ0KFdyaXRpbmdNb2RlKSBjb25zdDsKLSAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxSaWdodChX
cml0aW5nTW9kZSkgY29uc3Q7CisgICAgY29uc3QgTGVuZ3RoJiBsZWZ0KCkgY29uc3QgeyByZXR1
cm4gbV9zaWRlc1tMZWZ0U2lkZV07IH0KKyAgICBjb25zdCBMZW5ndGgmIHJpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gbV9zaWRlc1tSaWdodFNpZGVdOyB9CisgICAgY29uc3QgTGVuZ3RoJiB0b3AoKSBj
b25zdCB7IHJldHVybiBtX3NpZGVzW1RvcFNpZGVdOyB9CisgICAgY29uc3QgTGVuZ3RoJiBib3R0
b20oKSBjb25zdCB7IHJldHVybiBtX3NpZGVzW0JvdHRvbVNpZGVdOyB9CiAKLSAgICBjb25zdCBM
ZW5ndGgmIGJlZm9yZShXcml0aW5nTW9kZSkgY29uc3Q7Ci0gICAgY29uc3QgTGVuZ3RoJiBhZnRl
cihXcml0aW5nTW9kZSkgY29uc3Q7Ci0gICAgY29uc3QgTGVuZ3RoJiBzdGFydChXcml0aW5nTW9k
ZSwgVGV4dERpcmVjdGlvbikgY29uc3Q7Ci0gICAgY29uc3QgTGVuZ3RoJiBlbmQoV3JpdGluZ01v
ZGUsIFRleHREaXJlY3Rpb24pIGNvbnN0OworICAgIGNvbnN0IExlbmd0aCYgYmVmb3JlKFdyaXRp
bmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUikgY29uc3Qg
eyByZXR1cm4gbV9zaWRlc1ttYXBMb2dpY2FsVG9QaHlzaWNhbEJveFNpZGUobWFrZVRleHRGbG93
KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBCZWZvcmVTaWRlKV07IH0KKyAgICBjb25zdCBMZW5n
dGgmIGFmdGVyKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
biA9IExUUikgY29uc3QgeyByZXR1cm4gbV9zaWRlc1ttYXBMb2dpY2FsVG9QaHlzaWNhbEJveFNp
ZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBBZnRlclNpZGUpXTsgfQor
ICAgIGNvbnN0IExlbmd0aCYgc3RhcnQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJl
Y3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBtX3NpZGVzW21hcExvZ2ljYWxU
b1BoeXNpY2FsQm94U2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIFN0
YXJ0U2lkZSldOyB9CisgICAgY29uc3QgTGVuZ3RoJiBlbmQoV3JpdGluZ01vZGUgd3JpdGluZ01v
ZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBtX3NpZGVz
W21hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRp
cmVjdGlvbiksIEVuZFNpZGUpXTsgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlbmd0
aEJveCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9sZWZ0ID09IG90aGVy
Lm1fbGVmdCAmJiBtX3JpZ2h0ID09IG90aGVyLm1fcmlnaHQgJiYgbV90b3AgPT0gb3RoZXIubV90
b3AgJiYgbV9ib3R0b20gPT0gb3RoZXIubV9ib3R0b207CisgICAgICAgIHJldHVybiBtX3NpZGVz
ID09IG90aGVyLm1fc2lkZXM7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExl
bmd0aEJveCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7CisgICAgICAgIHJldHVybiBtX3NpZGVzICE9IG90aGVyLm1fc2lkZXM7CiAgICAgfQog
Ci0gICAgYm9vbCBub25aZXJvKCkgY29uc3QKKyAgICBib29sIGlzWmVybygpIGNvbnN0CiAgICAg
ewotICAgICAgICByZXR1cm4gIShtX2xlZnQuaXNaZXJvKCkgJiYgbV9yaWdodC5pc1plcm8oKSAm
JiBtX3RvcC5pc1plcm8oKSAmJiBtX2JvdHRvbS5pc1plcm8oKSk7CisgICAgICAgIGZvciAoYXV0
byBzaWRlIDogbV9zaWRlcykgeworICAgICAgICAgICAgaWYgKCFzaWRlLmlzWmVybygpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBMZW5ndGggbV9sZWZ0OwotICAgIExlbmd0aCBtX3JpZ2h0OwotICAg
IExlbmd0aCBtX3RvcDsKLSAgICBMZW5ndGggbV9ib3R0b207Citwcml2YXRlOgorICAgIFZlY3Rv
cjxMZW5ndGgsIDQ+IG1fc2lkZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgJKHJldmlzaW9uIDE4NDEx
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIFRl
eHREaXJlY3Rpb24geyBSVEwsIExUUiB9OworZW51bSBUZXh0RGlyZWN0aW9uIHsgTFRSLCBSVEwg
fTsKIAogZW51bSBUZXh0UmVuZGVyaW5nTW9kZSB7IEF1dG9UZXh0UmVuZGVyaW5nLCBPcHRpbWl6
ZVNwZWVkLCBPcHRpbWl6ZUxlZ2liaWxpdHksIEdlb21ldHJpY1ByZWNpc2lvbiB9OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oCShyZXZpc2lvbiAx
ODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDEyLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCkBAIC0zNCwyNSArMzUsOTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51
bSBXcml0aW5nTW9kZSB7Ci0gICAgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwgUmlnaHRUb0xlZnRX
cml0aW5nTW9kZSwgTGVmdFRvUmlnaHRXcml0aW5nTW9kZSwgQm90dG9tVG9Ub3BXcml0aW5nTW9k
ZQorICAgIFRvcFRvQm90dG9tV3JpdGluZ01vZGUgPSAwLCAvLyBob3Jpem9udGFsLXRiCisgICAg
Qm90dG9tVG9Ub3BXcml0aW5nTW9kZSA9IDEsIC8vIGhvcml6b250YWwtYnQKKyAgICBMZWZ0VG9S
aWdodFdyaXRpbmdNb2RlID0gMiwgLy8gdmVydGljYWwtbHIKKyAgICBSaWdodFRvTGVmdFdyaXRp
bmdNb2RlID0gMywgLy8gdmVydGljYWwtcmwKIH07CiAKK2NvbnN0ZXhwciBpbnQgbWFrZVRleHRG
bG93KGludCB3cml0aW5nTW9kZSwgaW50IGRpcmVjdGlvbikKK3sKKyAgICByZXR1cm4gKHdyaXRp
bmdNb2RlKSA8PCAxIHwgKGRpcmVjdGlvbik7Cit9CisKKy8vIERlZmluZSB0aGUgdGV4dCBmbG93
IGluIHRlcm1zIG9mIHRoZSB3cml0aW5nIG1vZGUgYW5kIHRoZSB0ZXh0IGRpcmVjdGlvbi4gVGhl
IGZpcnN0CisvLyBwYXJ0IGlzIHRoZSBsaW5lIGdyb3dpbmcgZGlyZWN0aW9uIGFuZCB0aGUgc2Vj
b25kIHBhcnQgaXMgdGhlIGJsb2NrIGdyb3dpbmcgZGlyZWN0aW9uLgorZW51bSBUZXh0RmxvdyB7
CisgICAgVGV4dEZsb3dFYXN0U291dGggPSBtYWtlVGV4dEZsb3coVG9wVG9Cb3R0b21Xcml0aW5n
TW9kZSwgTFRSKSwKKyAgICBUZXh0Rmxvd1dlc3RTb3V0aCA9IG1ha2VUZXh0RmxvdyhUb3BUb0Jv
dHRvbVdyaXRpbmdNb2RlLCBSVEwpLAorICAgIFRleHRGbG93RWFzdE5vcnRoID0gbWFrZVRleHRG
bG93KEJvdHRvbVRvVG9wV3JpdGluZ01vZGUsIExUUiksCisgICAgVGV4dEZsb3dXZXN0Tm9ydGgg
PSBtYWtlVGV4dEZsb3coQm90dG9tVG9Ub3BXcml0aW5nTW9kZSwgUlRMKSwKKyAgICBUZXh0Rmxv
d1NvdXRoRWFzdCA9IG1ha2VUZXh0RmxvdyhMZWZ0VG9SaWdodFdyaXRpbmdNb2RlLCBMVFIpLAor
ICAgIFRleHRGbG93U291dGhXZXN0ID0gbWFrZVRleHRGbG93KExlZnRUb1JpZ2h0V3JpdGluZ01v
ZGUsIFJUTCksCisgICAgVGV4dEZsb3dOb3J0aEVhc3QgPSBtYWtlVGV4dEZsb3coUmlnaHRUb0xl
ZnRXcml0aW5nTW9kZSwgTFRSKSwKKyAgICBUZXh0Rmxvd05vcnRoV2VzdCA9IG1ha2VUZXh0Rmxv
dyhSaWdodFRvTGVmdFdyaXRpbmdNb2RlLCBSVEwpCit9OworCitpbmxpbmUgVGV4dEZsb3cgbWFr
ZVRleHRGbG93KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
bikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEZsb3c+KG1ha2VUZXh0RmxvdyhzdGF0
aWNfY2FzdDxpbnQ+KHdyaXRpbmdNb2RlKSwgc3RhdGljX2Nhc3Q8aW50PihkaXJlY3Rpb24pKSk7
Cit9CisKK2NvbnN0IHVuc2lnbmVkIFRleHRGbG93UmV2ZXJzZWRNYXNrID0gMTsKK2NvbnN0IHVu
c2lnbmVkIFRleHRGbG93RmxpcHBlZE1hc2sgPSAyOworY29uc3QgdW5zaWduZWQgVGV4dEZsb3dW
ZXJ0aWNhbE1hc2sgPSA0OworCitpbmxpbmUgYm9vbCBpc1RleHRGbG93UmV2ZXJzZWQoVGV4dEZs
b3cgdGV4dGZsb3cpCit7CisgICAgcmV0dXJuIHRleHRmbG93ICYgVGV4dEZsb3dSZXZlcnNlZE1h
c2s7Cit9CisKK2lubGluZSBib29sIGlzVGV4dEZsb3dGbGlwcGVkKFRleHRGbG93IHRleHRmbG93
KQoreworICAgIHJldHVybiB0ZXh0ZmxvdyAmIFRleHRGbG93RmxpcHBlZE1hc2s7Cit9CisKK2lu
bGluZSBib29sIGlzVGV4dEZsb3dWZXJ0aWNhbChUZXh0RmxvdyB0ZXh0ZmxvdykKK3sKKyAgICBy
ZXR1cm4gdGV4dGZsb3cgJiBUZXh0Rmxvd1ZlcnRpY2FsTWFzazsKK30KKworLy8gTGluZXMgaGF2
ZSB2ZXJ0aWNhbCBvcmllbnRhdGlvbjsgbW9kZXMgdmVydGljYWwtbHIgb3IgdmVydGljYWwtcmwu
CitpbmxpbmUgYm9vbCBpc1ZlcnRpY2FsV3JpdGluZ01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01v
ZGUpCit7CisgICAgcmV0dXJuIGlzVGV4dEZsb3dWZXJ0aWNhbChtYWtlVGV4dEZsb3cod3JpdGlu
Z01vZGUsIExUUikpOworfQorCisvLyBCbG9jayBwcm9ncmVzc2lvbiBpbmNyZWFzZXMgaW4gdGhl
IG9wcG9zaXRlIGRpcmVjdGlvbiB0byBub3JtYWw7IG1vZGVzIHZlcnRpY2FsLXJsIG9yIGhvcml6
b250YWwtYnQuCitpbmxpbmUgYm9vbCBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZShXcml0aW5n
TW9kZSB3cml0aW5nTW9kZSkKK3sKKyAgICByZXR1cm4gaXNUZXh0Rmxvd0ZsaXBwZWQobWFrZVRl
eHRGbG93KHdyaXRpbmdNb2RlLCBMVFIpKTsKK30KKwogLy8gTGluZXMgaGF2ZSBob3Jpem9udGFs
IG9yaWVudGF0aW9uOyBtb2RlcyBob3Jpem9udGFsLXRiIG9yIGhvcml6b250YWwtYnQuCiBpbmxp
bmUgYm9vbCBpc0hvcml6b250YWxXcml0aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkK
IHsKLSAgICByZXR1cm4gd3JpdGluZ01vZGUgPT0gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSB8fCB3
cml0aW5nTW9kZSA9PSBCb3R0b21Ub1RvcFdyaXRpbmdNb2RlOworICAgIHJldHVybiAhaXNWZXJ0
aWNhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKTsKIH0KIAogLy8gQm90dG9tIG9mIHRoZSBsaW5l
IG9jY3VycyBlYXJsaWVyIGluIHRoZSBibG9jazsgbW9kZXMgdmVydGljYWwtbHIgb3IgaG9yaXpv
bnRhbC1idC4KIGlubGluZSBib29sIGlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoV3JpdGluZ01v
ZGUgd3JpdGluZ01vZGUpCiB7Ci0gICAgcmV0dXJuIHdyaXRpbmdNb2RlID09IExlZnRUb1JpZ2h0
V3JpdGluZ01vZGUgfHwgd3JpdGluZ01vZGUgPT0gQm90dG9tVG9Ub3BXcml0aW5nTW9kZTsKKyAg
ICByZXR1cm4gaXNWZXJ0aWNhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSAhPSBpc0ZsaXBwZWRC
bG9ja3NXcml0aW5nTW9kZSh3cml0aW5nTW9kZSk7CiB9CiAKLS8vIEJsb2NrIHByb2dyZXNzaW9u
IGluY3JlYXNlcyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIHRvIG5vcm1hbDsgbW9kZXMgdmVy
dGljYWwtcmwgb3IgaG9yaXpvbnRhbC1idC4KLWlubGluZSBib29sIGlzRmxpcHBlZEJsb2Nrc1dy
aXRpbmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQorZW51bSBMb2dpY2FsQm94U2lkZSB7
IEJlZm9yZVNpZGUsIEVuZFNpZGUsIEFmdGVyU2lkZSwgU3RhcnRTaWRlIH07CitlbnVtIFBoeXNp
Y2FsQm94U2lkZSB7IFRvcFNpZGUsIFJpZ2h0U2lkZSwgQm90dG9tU2lkZSwgTGVmdFNpZGUgfTsK
KworaW5saW5lIFBoeXNpY2FsQm94U2lkZSBtYXBMb2dpY2FsVG9QaHlzaWNhbEJveFNpZGUoVGV4
dEZsb3cgdGV4dGZsb3csIExvZ2ljYWxCb3hTaWRlIGxvZ2ljYWxTaWRlKQogewotICAgIHJldHVy
biB3cml0aW5nTW9kZSA9PSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlIHx8IHdyaXRpbmdNb2RlID09
IEJvdHRvbVRvVG9wV3JpdGluZ01vZGU7CisgICAgaW50IHBoeXNpY2FsU2lkZSA9IGxvZ2ljYWxT
aWRlOworICAgIGJvb2wgaXNTdGFydEVuZFNpZGUgPSBwaHlzaWNhbFNpZGUgJSAyID09IDE7CisK
KyAgICAvLyBTd2FwIHRoZSBsZWZ0L3JpZ2h0IHNpZGUgd2l0aCB0aGUgdG9wL2JvdHRvbSBzaWRl
IGlmIHRleHRGbG93IGlzIHZlcnRpY2FsCisgICAgaWYgKGlzVGV4dEZsb3dWZXJ0aWNhbCh0ZXh0
ZmxvdykpIHsKKyAgICAgICAgaWYgKGlzU3RhcnRFbmRTaWRlKQorICAgICAgICAgICAgcGh5c2lj
YWxTaWRlID0gKHBoeXNpY2FsU2lkZSArIDEpICUgNDsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcGh5c2ljYWxTaWRlID0gKHBoeXNpY2FsU2lkZSArIDMpICUgNDsKKyAgICB9CisKKyAgICAv
LyBTd2FwIHRoZSBsZWZ0IGFuZCByaWdodCBzaWRlcyBpZiB0ZXh0RmxvdyBpcyByZXZlcnNlZCBh
bmQgdGhlIHRvcCBhbmQgYm90dG9tIHNpZGVzIGlmIHRleHRGbG93IGlzIGZsaXBwZWQKKyAgICBp
ZiAoKGlzU3RhcnRFbmRTaWRlICYmIGlzVGV4dEZsb3dSZXZlcnNlZCh0ZXh0ZmxvdykpIHx8ICgh
aXNTdGFydEVuZFNpZGUgJiYgaXNUZXh0Rmxvd0ZsaXBwZWQodGV4dGZsb3cpKSkKKyAgICAgICAg
cGh5c2ljYWxTaWRlID0gKHBoeXNpY2FsU2lkZSArIDIpICUgNDsKKworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxQaHlzaWNhbEJveFNpZGU+KHBoeXNpY2FsU2lkZSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIxLDEwICs5MjEs
MTAgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0TWFza0ltYWdlKGNvbnN0IFZlYwogdm9pZCBSZW5k
ZXJTdHlsZTo6c2V0Q2xpcChMZW5ndGggdG9wLCBMZW5ndGggcmlnaHQsIExlbmd0aCBib3R0b20s
IExlbmd0aCBsZWZ0KQogewogICAgIFN0eWxlVmlzdWFsRGF0YSogZGF0YSA9IHZpc3VhbC5hY2Nl
c3MoKTsKLSAgICBkYXRhLT5jbGlwLm1fdG9wID0gdG9wOwotICAgIGRhdGEtPmNsaXAubV9yaWdo
dCA9IHJpZ2h0OwotICAgIGRhdGEtPmNsaXAubV9ib3R0b20gPSBib3R0b207Ci0gICAgZGF0YS0+
Y2xpcC5tX2xlZnQgPSBsZWZ0OworICAgIGRhdGEtPmNsaXAudG9wKCkgPSB0b3A7CisgICAgZGF0
YS0+Y2xpcC5yaWdodCgpID0gcmlnaHQ7CisgICAgZGF0YS0+Y2xpcC5ib3R0b20oKSA9IGJvdHRv
bTsKKyAgICBkYXRhLT5jbGlwLmxlZnQoKSA9IGxlZnQ7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6
OmFkZEN1cnNvcihQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlLCBjb25zdCBJbnRQb2ludCYg
aG90U3BvdCkKQEAgLTEzMDksMTAgKzEzMDksMTAgQEAgY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJv
YXJkUmVnaW9uPiYgUmVuZAogICAgIGlmICghbm9uZUxpc3RJbml0aWFsaXplZCkgewogICAgICAg
ICBTdHlsZURhc2hib2FyZFJlZ2lvbiByZWdpb247CiAgICAgICAgIHJlZ2lvbi5sYWJlbCA9ICIi
OwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fdG9wICA9IExlbmd0aCgpOwotICAgICAgICByZWdp
b24ub2Zmc2V0Lm1fcmlnaHQgPSBMZW5ndGgoKTsKLSAgICAgICAgcmVnaW9uLm9mZnNldC5tX2Jv
dHRvbSA9IExlbmd0aCgpOwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fbGVmdCA9IExlbmd0aCgp
OworICAgICAgICByZWdpb24ub2Zmc2V0LnRvcCgpICA9IExlbmd0aCgpOworICAgICAgICByZWdp
b24ub2Zmc2V0LnJpZ2h0KCkgPSBMZW5ndGgoKTsKKyAgICAgICAgcmVnaW9uLm9mZnNldC5ib3R0
b20oKSA9IExlbmd0aCgpOworICAgICAgICByZWdpb24ub2Zmc2V0LmxlZnQoKSA9IExlbmd0aCgp
OwogICAgICAgICByZWdpb24udHlwZSA9IFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpOb25lOwogICAg
ICAgICBub25lTGlzdC5hcHBlbmQocmVnaW9uKTsKICAgICAgICAgbm9uZUxpc3RJbml0aWFsaXpl
ZCA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzMSwxMiArNTMxLDEyIEBAIHB1
YmxpYzoKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25z
dDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdCB7
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIGJvb2wgaXNGbG9hdGluZygpIGNvbnN0
IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5pc0Zsb2F0aW5nKCk7IH0KLSAgICBib29sIGhh
c01hcmdpbigpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4ubm9uWmVybygpOyB9Cisg
ICAgYm9vbCBoYXNNYXJnaW4oKSBjb25zdCB7IHJldHVybiAhc3Vycm91bmQtPm1hcmdpbi5pc1pl
cm8oKTsgfQogICAgIGJvb2wgaGFzQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJv
cmRlci5oYXNCb3JkZXIoKTsgfQogICAgIGJvb2wgaGFzQm9yZGVyRmlsbCgpIGNvbnN0IHsgcmV0
dXJuIHN1cnJvdW5kLT5ib3JkZXIuaGFzRmlsbCgpOyB9CiAgICAgYm9vbCBoYXNCb3JkZXJEZWNv
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gaGFzQm9yZGVyKCkgfHwgaGFzQm9yZGVyRmlsbCgpOyB9
Ci0gICAgYm9vbCBoYXNQYWRkaW5nKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcu
bm9uWmVybygpOyB9Ci0gICAgYm9vbCBoYXNPZmZzZXQoKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+b2Zmc2V0Lm5vblplcm8oKTsgfQorICAgIGJvb2wgaGFzUGFkZGluZygpIGNvbnN0IHsgcmV0
dXJuICFzdXJyb3VuZC0+cGFkZGluZy5pc1plcm8oKTsgfQorICAgIGJvb2wgaGFzT2Zmc2V0KCkg
Y29uc3QgeyByZXR1cm4gIXN1cnJvdW5kLT5vZmZzZXQuaXNaZXJvKCk7IH0KICAgICBib29sIGhh
c01hcmdpbkJlZm9yZVF1aXJrKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQmVmb3JlKCkuaGFzUXVp
cmsoKTsgfQogICAgIGJvb2wgaGFzTWFyZ2luQWZ0ZXJRdWlyaygpIGNvbnN0IHsgcmV0dXJuIG1h
cmdpbkFmdGVyKCkuaGFzUXVpcmsoKTsgfQogCkBAIC01NTgsNyArNTU4LDcgQEAgcHVibGljOgog
ICAgIExheW91dEJveEV4dGVudCBpbWFnZU91dHNldHMoY29uc3QgTmluZVBpZWNlSW1hZ2UmKSBj
b25zdDsKICAgICBib29sIGhhc0JvcmRlckltYWdlT3V0c2V0cygpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gYm9yZGVySW1hZ2UoKS5oYXNJbWFnZSgpICYmIGJvcmRlckltYWdlKCkub3V0
c2V0KCkubm9uWmVybygpOworICAgICAgICByZXR1cm4gYm9yZGVySW1hZ2UoKS5oYXNJbWFnZSgp
ICYmICFib3JkZXJJbWFnZSgpLm91dHNldCgpLmlzWmVybygpOwogICAgIH0KICAgICBMYXlvdXRC
b3hFeHRlbnQgYm9yZGVySW1hZ2VPdXRzZXRzKCkgY29uc3QKICAgICB7CkBAIC01OTUsOCArNTk1
LDggQEAgcHVibGljOgogICAgIGNvbnN0IExlbmd0aCYgYm90dG9tKCkgY29uc3QgeyByZXR1cm4g
c3Vycm91bmQtPm9mZnNldC5ib3R0b20oKTsgfQogCiAgICAgLy8gQWNjZXNzb3JzIGZvciBwb3Np
dGlvbmVkIG9iamVjdCBlZGdlcyB0aGF0IHRha2UgaW50byBhY2NvdW50IHdyaXRpbmcgbW9kZS4K
LSAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQt
Pm9mZnNldC5sb2dpY2FsTGVmdCh3cml0aW5nTW9kZSgpKTsgfQotICAgIGNvbnN0IExlbmd0aCYg
bG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5sb2dpY2FsUmln
aHQod3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxMZWZ0KCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5zdGFydCh3cml0aW5nTW9kZSgpKTsgfQorICAg
IGNvbnN0IExlbmd0aCYgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9m
ZnNldC5lbmQod3JpdGluZ01vZGUoKSk7IH0KICAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxUb3Ao
KSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LmJlZm9yZSh3cml0aW5nTW9kZSgpKTsg
fQogICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJv
dW5kLT5vZmZzZXQuYWZ0ZXIod3JpdGluZ01vZGUoKSk7IH0KIApAQCAtMTIwMCwxMCArMTIwMCwx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQb3NpdGlvbihFUG9zaXRpb24gdikgeyBub25pbmhl
cml0ZWRfZmxhZ3Muc2V0UG9zaXRpb24odik7IH0KICAgICB2b2lkIHNldEZsb2F0aW5nKEVGbG9h
dCB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRGbG9hdGluZyh2KTsgfQogCi0gICAgdm9pZCBz
ZXRMZWZ0KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5tX2xlZnQsIFdURjo6
bW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldFJpZ2h0KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91
bmQsIG9mZnNldC5tX3JpZ2h0LCBXVEY6Om1vdmUodikpOyB9Ci0gICAgdm9pZCBzZXRUb3AoTGVu
Z3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0Lm1fdG9wLCBXVEY6Om1vdmUodikpOyB9
Ci0gICAgdm9pZCBzZXRCb3R0b20oTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0
Lm1fYm90dG9tLCBXVEY6Om1vdmUodikpOyB9CisgICAgdm9pZCBzZXRMZWZ0KExlbmd0aCB2KSB7
IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5sZWZ0KCksIFdURjo6bW92ZSh2KSk7IH0KKyAgICB2
b2lkIHNldFJpZ2h0KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5yaWdodCgp
LCBXVEY6Om1vdmUodikpOyB9CisgICAgdm9pZCBzZXRUb3AoTGVuZ3RoIHYpIHsgU0VUX1ZBUihz
dXJyb3VuZCwgb2Zmc2V0LnRvcCgpLCBXVEY6Om1vdmUodikpOyB9CisgICAgdm9pZCBzZXRCb3R0
b20oTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0LmJvdHRvbSgpLCBXVEY6Om1v
dmUodikpOyB9CiAKICAgICB2b2lkIHNldFdpZHRoKExlbmd0aCB2KSB7IFNFVF9WQVIobV9ib3gs
IG1fd2lkdGgsIFdURjo6bW92ZSh2KSk7IH0KICAgICB2b2lkIHNldEhlaWdodChMZW5ndGggdikg
eyBTRVRfVkFSKG1fYm94LCBtX2hlaWdodCwgV1RGOjptb3ZlKHYpKTsgfQpAQCAtMTIzOSwxMCAr
MTIzOSwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBTdHlsZURhc2hib2FyZFJlZ2lvbiBy
ZWdpb247CiAgICAgICAgIHJlZ2lvbi5sYWJlbCA9IGxhYmVsOwotICAgICAgICByZWdpb24ub2Zm
c2V0Lm1fdG9wID0gV1RGOjptb3ZlKHQpOwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fcmlnaHQg
PSBXVEY6Om1vdmUocik7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubV9ib3R0b20gPSBXVEY6Om1v
dmUoYik7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubV9sZWZ0ID0gV1RGOjptb3ZlKGwpOworICAg
ICAgICByZWdpb24ub2Zmc2V0LnRvcCgpID0gV1RGOjptb3ZlKHQpOworICAgICAgICByZWdpb24u
b2Zmc2V0LnJpZ2h0KCkgPSBXVEY6Om1vdmUocik7CisgICAgICAgIHJlZ2lvbi5vZmZzZXQuYm90
dG9tKCkgPSBXVEY6Om1vdmUoYik7CisgICAgICAgIHJlZ2lvbi5vZmZzZXQubGVmdCgpID0gV1RG
Ojptb3ZlKGwpOwogICAgICAgICByZWdpb24udHlwZSA9IHR5cGU7CiAgICAgICAgIGlmICghYXBw
ZW5kKQogICAgICAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZGFzaGJv
YXJkUmVnaW9ucy5jbGVhcigpOwpAQCAtMTMyMywxMCArMTMyMywxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRWZXJ0aWNhbEFsaWduTGVuZ3RoKExlbmd0aCBsZW5ndGgpIHsgc2V0VmVydGljYWxB
bGlnbihMRU5HVEgpOyBTRVRfVkFSKG1fYm94LCBtX3ZlcnRpY2FsQWxpZ24sIFdURjo6bW92ZShs
ZW5ndGgpKTsgfQogCiAgICAgdm9pZCBzZXRIYXNDbGlwKGJvb2wgYiA9IHRydWUpIHsgU0VUX1ZB
Uih2aXN1YWwsIGhhc0NsaXAsIGIpOyB9Ci0gICAgdm9pZCBzZXRDbGlwTGVmdChMZW5ndGggbGVu
Z3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLm1fbGVmdCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9
Ci0gICAgdm9pZCBzZXRDbGlwUmlnaHQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwg
Y2xpcC5tX3JpZ2h0LCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldENsaXBUb3Ao
TGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5tX3RvcCwgV1RGOjptb3ZlKGxl
bmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRDbGlwQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZB
Uih2aXN1YWwsIGNsaXAubV9ib3R0b20sIFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQg
c2V0Q2xpcExlZnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5sZWZ0KCks
IFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0Q2xpcFJpZ2h0KExlbmd0aCBsZW5n
dGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAucmlnaHQoKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9
CisgICAgdm9pZCBzZXRDbGlwVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNs
aXAudG9wKCksIFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0Q2xpcEJvdHRvbShM
ZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLmJvdHRvbSgpLCBXVEY6Om1vdmUo
bGVuZ3RoKSk7IH0KICAgICB2b2lkIHNldENsaXAoTGVuZ3RoIHRvcCwgTGVuZ3RoIHJpZ2h0LCBM
ZW5ndGggYm90dG9tLCBMZW5ndGggbGVmdCk7CiAgICAgdm9pZCBzZXRDbGlwKExlbmd0aEJveCBi
b3gpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAsIFdURjo6bW92ZShib3gpKTsgfQogCkBAIC0xNDM0
LDE5ICsxNDM0LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExpc3RTdHlsZVBvc2l0aW9uKEVM
aXN0U3R5bGVQb3NpdGlvbiB2KSB7IGluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV9wb3NpdGlv
biA9IHY7IH0KIAogICAgIHZvaWQgcmVzZXRNYXJnaW4oKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1h
cmdpbiwgTGVuZ3RoQm94KEZpeGVkKSk7IH0KLSAgICB2b2lkIHNldE1hcmdpblRvcChMZW5ndGgg
bGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5tX3RvcCwgV1RGOjptb3ZlKGxlbmd0
aCkpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5Cb3R0b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFS
KHN1cnJvdW5kLCBtYXJnaW4ubV9ib3R0b20sIFdURjo6bW92ZShsZW5ndGgpKTsgfQotICAgIHZv
aWQgc2V0TWFyZ2luTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdp
bi5tX2xlZnQsIFdURjo6bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0TWFyZ2luUmlnaHQo
TGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ubV9yaWdodCwgV1RGOjpt
b3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5Ub3AoTGVuZ3RoIGxlbmd0aCkgeyBT
RVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4udG9wKCksIFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAg
IHZvaWQgc2V0TWFyZ2luQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwg
bWFyZ2luLmJvdHRvbSgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1hcmdp
bkxlZnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ubGVmdCgpLCBX
VEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1hcmdpblJpZ2h0KExlbmd0aCBsZW5n
dGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLnJpZ2h0KCksIFdURjo6bW92ZShsZW5ndGgp
KTsgfQogICAgIHZvaWQgc2V0TWFyZ2luU3RhcnQoTGVuZ3RoKTsKICAgICB2b2lkIHNldE1hcmdp
bkVuZChMZW5ndGgpOwogCiAgICAgdm9pZCByZXNldFBhZGRpbmcoKSB7IFNFVF9WQVIoc3Vycm91
bmQsIHBhZGRpbmcsIExlbmd0aEJveChBdXRvKSk7IH0KICAgICB2b2lkIHNldFBhZGRpbmdCb3go
TGVuZ3RoQm94IGJveCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLCBXVEY6Om1vdmUoYm94
KSk7IH0KLSAgICB2b2lkIHNldFBhZGRpbmdUb3AoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1
cnJvdW5kLCBwYWRkaW5nLm1fdG9wLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNl
dFBhZGRpbmdCb3R0b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5n
Lm1fYm90dG9tLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldFBhZGRpbmdMZWZ0
KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5tX2xlZnQsIFdURjo6
bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0UGFkZGluZ1JpZ2h0KExlbmd0aCBsZW5ndGgp
IHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5tX3JpZ2h0LCBXVEY6Om1vdmUobGVuZ3RoKSk7
IH0KKyAgICB2b2lkIHNldFBhZGRpbmdUb3AoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJv
dW5kLCBwYWRkaW5nLnRvcCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBh
ZGRpbmdCb3R0b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLmJv
dHRvbSgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdMZWZ0KExl
bmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5sZWZ0KCksIFdURjo6bW92
ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0UGFkZGluZ1JpZ2h0KExlbmd0aCBsZW5ndGgpIHsg
U0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5yaWdodCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0K
IAogICAgIHZvaWQgc2V0Q3Vyc29yKEVDdXJzb3IgYykgeyBpbmhlcml0ZWRfZmxhZ3MuX2N1cnNv
cl9zdHlsZSA9IGM7IH0KICAgICB2b2lkIGFkZEN1cnNvcihQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+
LCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCA9IEludFBvaW50KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252933</attachid>
            <date>2015-05-11 21:53:19 -0700</date>
            <delta_ts>2015-05-12 09:15:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143399-20150511215158.patch</filename>
            <type>text/plain</type>
            <size>40661</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDE1LTA1LTExICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29kZSBjbGVh
biB1cCBmb3IgZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtaXggb2YgV3JpdGluZ01v
ZGUgYW5kIFRleHREaXJlY3Rpb24gLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQzMzk5LgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBlaWdodCBUZXh0Rmxvd3MuIEEgVGV4dEZsb3cg
Y29uc2lzdHMgb2YgdHdvIGRpcmVjdGlvbnMuIFRoZQorICAgICAgICBmaXJzdCBvbmUgY29udHJv
bHMgdGhlIGxpbmUgZ3Jvd2luZyBkaXJlY3Rpb24gYW5kIHRoZSBzZWNvbmQgb25lIGNvbnRyb2xz
IHRoZQorICAgICAgICBibG9jayBncm93aW5nIGRpcmVjdGlvbi4KKyAgICAgICAgCisgICAgICAg
IFdlIG5lZWQgdG8gZXh0cmFjdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGVhc2lseSBmcm9t
IHRoZSBUZXh0RmxvdworCisgICAgICAgIC0tIGlzVGV4dEZsb3dSZXZlcnNlZCgpIC8vIFJUTAor
ICAgICAgICAtLSBpc1RleHRGbG93RmxpcHBlZCgpICAvLyB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9u
IHRvIG5vcm1hbAorICAgICAgICAtLSBpc1RleHRGbG93VmVydGljYWwoKSAvLyBUaGUgbGluZSBn
cm93cyB2ZXJ0aWNhbGx5CisKKyAgICAgICAgTWl4aW5nIFdyaXRpbmdNb2RlIGFuZCBUZXh0RGly
ZWN0aW9uIGludG8gVGV4dEZsb3cgYW5kIGNob29zaW5nIHRoZWlyIHZhbHVlcworICAgICAgICBj
YXJlZnVsbHkgdG8gZWFzZSBpbXBsZW1lbnRpbmcgdGhlIGFib3ZlIGZ1bmN0aW9ucyBjYW4gbWFr
ZSB0aGluZ3MgY2xlYXJlci4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhCb3guY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzOgorICAgICAgICBSZW1vdmUgTGVuZ3RoQm94LmNwcCBzaW5jZSBhbGwgaXRzIGZ1bmN0aW9u
cyBiZWNvbWUgc2luZ2xlIGxpbmUgZnVuY3Rpb25zCisgICAgICAgIGFuZCBjb3VsZCBiZSBtb3Zl
ZCB0byB0aGUgaGVhZGVyIGZpbGUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0
aEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpMZW5ndGhCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpsZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aEJv
eDo6cmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94Ojp0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6TGVuZ3RoQm94Ojpib3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6Om9wZXJhdG9yIT0pOiBVc2UgYW4gYXJyYXkg
b2YgTGVuZ3RocyBmb3IgdGhlIGZvdXIgc2lkZXMuCisgICAgICAgIEFuZCB1c2UgdGhlIGVudW0g
UGh5c2ljYWxCb3hTaWRlIHRvIGFjY2VzcyB0aGlzIGFycmF5LgorCisgICAgICAgIChXZWJDb3Jl
OjpMZW5ndGhCb3g6OmlzWmVybyk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6Om5vblpl
cm8pOiBEZWxldGVkLgorICAgICAgICBVc2UgaXNaZXJvKCkgaW5zdGVhZCBvZiBub25aZXJvKCkg
c2luY2UgdGhlIGZvcm1lciBpcyBjbGVhcmVyLgorCisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhC
b3g6OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6OmFmdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3Ro
Qm94OjplbmQpOgorICAgICAgICBVc2UgdGhlIG1hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZSgp
IGdldCB0aGUgcGh5c2ljYWwgc2lkZSBvZiB0aGUgYm94IGJhc2VkCisgICAgICAgIG9uIHRoZSBk
aXJlY3Rpb24gYW5kIHRoZSB3cml0aW5nIG1vZGUuIAorICAgICAgICAKKyAgICAgICAgKiBjc3Mv
Q1NTUHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZVRvUGh5c2ljYWxQcm9w
ZXJ0eSk6IEluc3RlYWQgb2YgaGFuZGxpbmcgdGhlIGVpZ2h0IHBvc3NpYmxlCisgICAgICAgIGNh
c2VzIG9mIHRoZSB0ZXh0IGZsb3dzIG9uZSBieSBvbmUsIHdlIGNhbiBhbmFseXplIHRoZSB0ZXh0
IGZsb3cgYW5kIHN3YXAgdGhlCisgICAgICAgIHNpZGUgcHJvcGVydHkgaW5kZXggdG8gZ2V0IHRo
ZSBwcm9wZXIgdmFsdWUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEZs
YWdzLmg6IFVzdWFsbHkgdGhlIGRlZmF1bHQgdmFsdWUgaXMgZGVmaW5lZCBmaXJzdC4KKyAgICAg
ICAgQW5kIGlmIHRoZSB2YWx1ZSBpcyBpbnRlZ2VyIG9yIGVudW0sIGl0IHNob3VsZCBiZSBlcXVh
bCB0byB6ZXJvLiBTaW5jZSBMVFIKKyAgICAgICAgaXMgdGhlIGRlZmF1bHQgZm9yIHRoZSB0ZXh0
IGRpcmVjdGlvbiwgaXQgc2hvdWxkIGJlIGRlZmluZWQgYmVmb3JlIFJUTC4KKyAgICAgICAgCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6
bWFrZVRleHRGbG93KTogIERlZmluaW5nIGEgZnVuY3Rpb24gdG8gbWFrZSBhIFRleHRGbG93IG91
dCBmcm9tCisgICAgICAgIFdyaXRpbmdNb2RlIGFuZCBUZXh0RGlyZWN0aW9uLgorICAgICAgICAK
KyAgICAgICAgKFdlYkNvcmU6OmlzVGV4dEZsb3dSZXZlcnNlZCk6IFJldHVybnMgdHJ1ZSBpZiB0
aGUgdGV4dCBkaXJlY3Rpb24gaXMgUlRMLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6Omlz
VGV4dEZsb3dGbGlwcGVkKTogUmV0dXJucyB0cnVlIGlmIGJsb2NrIGdyb3dpbmcgZGlyZWN0aW9u
CisgICAgICAgIGlzIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gbm9ybWFsLgorICAgICAg
ICAKKyAgICAgICAgKFdlYkNvcmU6OmlzVGV4dEZsb3dWZXJ0aWNhbCk6CisgICAgICAgIChXZWJD
b3JlOjppc1ZlcnRpY2FsV3JpdGluZ01vZGUpOiBSZXR1cm5zIHRydWUgaWYgVGhlIGxpbmUgZ3Jv
d3MgdmVydGljYWxseS4KKworICAgICAgICAoV2ViQ29yZTo6aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUpOiAKKyAgICAgICAgKFdlYkNvcmU6OmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUpOiBVc2UgdGhlIHRleHQg
ZmxvdyBmdW5jdGlvbnMgaW5zdGVhZC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjptYXBM
b2dpY2FsVG9QaHlzaWNhbEJveFNpZGUpOiBJdCBtYXBzIGEgbG9naWNhbCBzaWRlIG9mIGEgYm94
CisgICAgICAgIGdpdmVuIHRoZSBjdXJyZW50IHRleHQgZGlyZWN0aW9uIGFuZCB0aGUgd3JpdGlu
ZyBtb2RlLgorCisgICAgICAgICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VTbGljZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVF1YWQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2V0Q2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6bm9uZURh
c2hib2FyZFJlZ2lvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
OiBVc2UgdGhlIExlbmd0aEJveCBzaWRlcycgYWNjZXNzIG1ldGhvZHMgaW5zdGVhZAorICAgICAg
ICBvZiBkaXJlY3RseSB1c2luZyB0aGUgc2lkZXMnIGFycmF5LgorCiAyMDE1LTA1LTExICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNtYWxsIHRpZHl1
cCBpbiBhbmltYXRpb25zIGNvZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
ODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMjAzOCw3ICsyMDM4LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL0tp
bGxSaW5nTm9uZS5jcHAKICAgICBwbGF0Zm9ybS9MYW5ndWFnZS5jcHAKICAgICBwbGF0Zm9ybS9M
ZW5ndGguY3BwCi0gICAgcGxhdGZvcm0vTGVuZ3RoQm94LmNwcAogICAgIHBsYXRmb3JtL0xpbmtI
YXNoLmNwcAogICAgIHBsYXRmb3JtL0xvZ2dpbmcuY3BwCiAgICAgcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvagkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODAwNiw3ICs4MDA2
LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXFVSTC5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMYW5ndWFnZS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMZW5ndGguY3BwIiAvPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGVuZ3RoQm94LmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExpbmtIYXNoLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExvY2FsaXplZFN0cmluZ3MuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTG9nZ2luZy5jcHAiIC8+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCShyZXZpc2lvbiAxODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTExMTMsOSArMTExMyw2
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMZW5ndGguY3BwIj4KICAg
ICAgIDxGaWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExlbmd0aEJveC5jcHAiPgotICAgICAgPEZpbHRl
cj5wbGF0Zm9ybTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cTGlua0hhc2guY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm08
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4NDExNikKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNjA1LDcgKzYwNSw2IEBACiAJCTE0NDc2QUE4MTVEQzRCQjEwMDMwNURCMiAvKiBX
cml0aW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQ0NzZBQTcxNURDNEJCMTAwMzA1REIyIC8qIFdyaXRpbmdNb2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ0OUUyNEMxMDdENEE4NDAw
QjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDQ5RTI0QTEwN0Q0QTg0MDBCNTc5M0YgLyogSlNDYWxsYmFja0Rh
dGEuaCAqLzsgfTsKIAkJMTQ0OUUyODcxMDdENERCNDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDlF
Mjg2MTA3RDREQjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5jcHAgKi87IH07Ci0JCTE0NkND
MTE1MTU2OTg4RTQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ2Q0MxMTMxNTY5ODhCRDAwMTA5RTM3IC8qIExl
bmd0aEJveC5jcHAgKi87IH07CiAJCTE0NzdFNzc2MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2Fj
aGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3
N0U3NzQwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgKi87IH07CiAJCTE0NzdFNzc3
MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NzdFNzc1MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2Fj
aGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
NDc5RkFFRDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDc5RkFFNTEwOUFFMzc1MDBERUQ2NTUg
LyogUmVuZGVyUnVieS5jcHAgKi87IH07CkBAIC03NjgwLDcgKzc2NzksNiBAQAogCQkxNDQ3NkFB
NzE1REM0QkIxMDAzMDVEQjIgLyogV3JpdGluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV3JpdGluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTQ0OUUyNEExMDdENEE4NDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FsbGJhY2tEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0NDlFMjg2MTA3RDREQjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbGxiYWNrRGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0NkNDMTEzMTU2OTg4QkQwMDEwOUUz
NyAvKiBMZW5ndGhCb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TGVuZ3RoQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ3N0U3NzQwQkY0
MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUGFnZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTQ3N0U3NzUwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGFnZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTE0NzlGQUU1MTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclJ1YnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjE3NjAsNyArMjE3NTgsNiBAQAogCQkJCTE0MURDMDQ3MTY0ODM0
OEYwMDM3MUU1QSAvKiBMYXlvdXRVbml0LmggKi8sCiAJCQkJQkNFNjVCRTgwRUFDREYxNjAwN0U0
NTMzIC8qIExlbmd0aC5jcHAgKi8sCiAJCQkJQkNFNjVCRTkwRUFDREYxNjAwN0U0NTMzIC8qIExl
bmd0aC5oICovLAotCQkJCTE0NkNDMTEzMTU2OTg4QkQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3Bw
ICovLAogCQkJCUJDRkY2NDhGMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCAqLywKIAkJ
CQlCQ0ZGNjQ5MDBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oICovLAogCQkJCUE3QUQy
Rjg1MEVDODlEMDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5jcHAgKi8sCkBAIC0yOTMwNiw3ICsyOTMw
Myw2IEBACiAJCQkJNTEyREQ4RjQwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hpdmUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCMjQxN0IwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2Fj
eVdlYkFyY2hpdmVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0U2NUJFQTBFQUNERjE2MDA3
RTQ1MzMgLyogTGVuZ3RoLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTE0NkNDMTE1MTU2OTg4RTQw
MDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTU1RjQ5N0ExNTFC
ODg4MDAwQkI2N0RCIC8qIExlbmd0aEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RkI2OThDQzE4MzNFRTBEMDAxNThBMzEgLyogTGluZUJyZWFrZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODlCNUVBQTExMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuY3BwIGluIFNvdXJj
ZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDE4NDEx
NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU0LDExMiArNTQsMTAgQEAgdm9pZCBDU1NQcm9wZXJ0eTo6d3JhcFZhbHVlSW5Db21tYVNl
cGFyYQogICAgIG1fdmFsdWUgPSBXVEY6Om1vdmUobGlzdCk7CiB9CiAKLWVudW0gTG9naWNhbEJv
eFNpZGUgeyBCZWZvcmVTaWRlLCBFbmRTaWRlLCBBZnRlclNpZGUsIFN0YXJ0U2lkZSB9OwotZW51
bSBQaHlzaWNhbEJveFNpZGUgeyBUb3BTaWRlLCBSaWdodFNpZGUsIEJvdHRvbVNpZGUsIExlZnRT
aWRlIH07Ci0KIHN0YXRpYyBDU1NQcm9wZXJ0eUlEIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHko
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2Fs
Qm94U2lkZSBsb2dpY2FsU2lkZSwgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRo
YW5kKQogewotICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKSB7Ci0gICAgICAgIGlmICh3cml0aW5n
TW9kZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlKSB7Ci0gICAgICAgICAgICAvLyBUaGUgY29t
bW9uIGNhc2UuIFRoZSBsb2dpY2FsIGFuZCBwaHlzaWNhbCBib3ggc2lkZXMgbWF0Y2guCi0gICAg
ICAgICAgICAvLyBMZWZ0ID0gU3RhcnQsIFJpZ2h0ID0gRW5kLCBCZWZvcmUgPSBUb3AsIEFmdGVy
ID0gQm90dG9tCi0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtsb2dp
Y2FsU2lkZV07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAod3JpdGluZ01vZGUgPT0gQm90dG9t
VG9Ub3BXcml0aW5nTW9kZSkgewotICAgICAgICAgICAgLy8gU3RhcnQgPSBMZWZ0LCBFbmQgPSBS
aWdodCwgQmVmb3JlID0gQm90dG9tLCBBZnRlciA9IFRvcC4KLSAgICAgICAgICAgIHN3aXRjaCAo
bG9naWNhbFNpZGUpIHsKLSAgICAgICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAg
ICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICAgICAgICAg
IGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtSaWdodFNpZGVdOwotICAgICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAg
ICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICh3
cml0aW5nTW9kZSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlKSB7Ci0gICAgICAgICAgICAvLyBT
dGFydCA9IFRvcCwgRW5kID0gQm90dG9tLCBCZWZvcmUgPSBMZWZ0LCBBZnRlciA9IFJpZ2h0Lgot
ICAgICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewotICAgICAgICAgICAgY2FzZSBTdGFy
dFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9w
U2lkZV07Ci0gICAgICAgICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgICAgICAgICBjYXNlIEJl
Zm9yZVNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClb
TGVmdFNpZGVdOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
c2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gU3RhcnQgPSBUb3AsIEVuZCA9IEJvdHRvbSwgQmVmb3JlID0gUmln
aHQsIEFmdGVyID0gTGVmdAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAg
IGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVz
KClbVG9wU2lkZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBz
aG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNp
ZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVd
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0
aWVzKClbTGVmdFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdyaXRpbmdNb2Rl
ID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8gU3RhcnQgPSBSaWdodCwg
RW5kID0gTGVmdCwgQmVmb3JlID0gVG9wLCBBZnRlciA9IEJvdHRvbQotICAgICAgICBzd2l0Y2gg
KGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0
dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKLSAgICAgICAgY2FzZSBFbmRT
aWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVd
OwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5k
LnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUpIHsKLSAg
ICAgICAgLy8gU3RhcnQgPSBSaWdodCwgRW5kID0gTGVmdCwgQmVmb3JlID0gQm90dG9tLCBBZnRl
ciA9IFRvcAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3Rh
cnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRT
aWRlXTsKLSAgICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFu
ZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAg
ICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1Rv
cFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09IExlZnRU
b1JpZ2h0V3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRv
cCwgQmVmb3JlID0gTGVmdCwgQWZ0ZXIgPSBSaWdodAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxT
aWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0
aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAg
ICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwotICAgICAg
ICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtMZWZ0U2lkZV07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
Ly8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRvcCwgQmVmb3JlID0gUmlnaHQsIEFmdGVyID0gTGVm
dAotICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKLSAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAg
ICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgY2FzZSBF
bmRTaWRlOgotICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsK
LSAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGll
cygpW1JpZ2h0U2lkZV07Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgIH0KKyAgICBQaHlzaWNhbEJveFNpZGUgcGh5c2lj
YWxTaWRlID0gbWFwTG9naWNhbFRvUGh5c2ljYWxCb3hTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5n
TW9kZSwgZGlyZWN0aW9uKSwgbG9naWNhbFNpZGUpOworICAgIHJldHVybiBzaG9ydGhhbmQucHJv
cGVydGllcygpW3BoeXNpY2FsU2lkZV07CiB9CiAKIGVudW0gTG9naWNhbEV4dGVudCB7IExvZ2lj
YWxXaWR0aCwgTG9naWNhbEhlaWdodCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Rv
U3R5bGVNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxl
TWFwLmNwcAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5
bGVNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTgsMjEgKzYxOCwyMSBAQCB2b2lkIENTU1Rv
U3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlU2xpCiAgICAgTGVuZ3RoQm94IGJveDsKICAgICBR
dWFkKiBzbGljZXMgPSBib3JkZXJJbWFnZVNsaWNlLnNsaWNlcygpOwogICAgIGlmIChzbGljZXMt
PnRvcCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNl
cy0+dG9wKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICBib3gudG9wKCkg
PSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAg
ZWxzZQotICAgICAgICBib3gubV90b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0SW50VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgICAgIGJveC50
b3AoKSA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQZXJj
ZW50YWdlKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgp
LT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVu
Z3RoKHNsaWNlcy0+Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgIGVs
c2UKLSAgICAgICAgYm94Lm1fYm90dG9tID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+
Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAg
ICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+Z2V0Rmxv
YXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKICAgICBpZiAo
c2xpY2VzLT5sZWZ0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9sZWZ0ID0gTGVu
Z3RoKHNsaWNlcy0+bGVmdCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAg
Ym94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVy
Y2VudCk7CiAgICAgZWxzZQotICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVm
dCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsK
KyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0SW50VmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CiAgICAgaWYgKHNsaWNlcy0+
cmlnaHQoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX3JpZ2h0ID0gTGVuZ3RoKHNs
aWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIGJveC5y
aWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2Vu
dCk7CiAgICAgZWxzZQotICAgICAgICBib3gubV9yaWdodCA9IExlbmd0aChzbGljZXMtPnJpZ2h0
KCktPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwor
ICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwogICAgIGltYWdlLnNldElt
YWdlU2xpY2VzKGJveCk7CiAKICAgICAvLyBTZXQgb3VyIGZpbGwgbW9kZS4KQEAgLTY1NCwzMiAr
NjU0LDMyIEBAIExlbmd0aEJveCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWEKICAgICBM
ZW5ndGhCb3ggYm94OyAvLyBEZWZhdWx0cyB0byAnYXV0bycgc28gd2UgZG9uJ3QgaGF2ZSB0byBo
YW5kbGUgdGhhdCBleHBsaWNpdGx5IGJlbG93LgogICAgIFF1YWQqIHNsaWNlcyA9IGJvcmRlcldp
ZHRocy5nZXRRdWFkVmFsdWUoKTsKICAgICBpZiAoc2xpY2VzLT50b3AoKS0+aXNOdW1iZXIoKSkK
LSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldEludFZhbHVlKCks
IFJlbGF0aXZlKTsKKyAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdl
dEludFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChzbGljZXMtPnRvcCgpLT5pc1Bl
cmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdl
dERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQp
OworICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CiAgICAgZWxz
ZSBpZiAoc2xpY2VzLT50b3AoKS0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAg
ICAgYm94Lm1fdG9wID0gc2xpY2VzLT50b3AoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZl
cnNpb25EYXRhKTsKKyAgICAgICAgYm94LnRvcCgpID0gc2xpY2VzLT50b3AoKS0+Y29tcHV0ZUxl
bmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIGlmIChzbGljZXMtPnJpZ2h0KCkt
PmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC5tX3JpZ2h0ID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQo
KS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0
aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlm
IChzbGljZXMtPnJpZ2h0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9yaWdodCA9
IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0
aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+cmlnaHQoKS0+Z2V0
VmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAgICAgYm94Lm1fcmlnaHQgPSBzbGljZXMt
PnJpZ2h0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAg
IGJveC5yaWdodCgpID0gc2xpY2VzLT5yaWdodCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29u
dmVyc2lvbkRhdGEpOwogCiAgICAgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmlzTnVtYmVyKCkpCi0g
ICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXRJbnRWYWx1
ZSgpLCBSZWxhdGl2ZSk7CisgICAgICAgIGJveC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJv
dHRvbSgpLT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5i
b3R0b20oKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChz
bGljZXMtPmJvdHRvbSgpLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BF
UkNFTlRBR0UpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNl
cy0+Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VO
VEFHRSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmdldFZhbHVl
SUQoKSAhPSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IHNsaWNlcy0+Ym90
dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJv
eC5ib3R0b20oKSA9IHNsaWNlcy0+Ym90dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252
ZXJzaW9uRGF0YSk7CiAKICAgICBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzTnVtYmVyKCkpCi0gICAg
ICAgIGJveC5tX2xlZnQgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldEludFZhbHVlKCksIFJl
bGF0aXZlKTsKKyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0
SW50VmFsdWUoKSwgUmVsYXRpdmUpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc1Bl
cmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+
Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2Vu
dCk7CisgICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldERvdWJs
ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwogICAg
IGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQot
ICAgICAgICBib3gubV9sZWZ0ID0gc2xpY2VzLT5sZWZ0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3Ro
Pihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJveC5sZWZ0KCkgPSBzbGljZXMtPmxlZnQoKS0+
Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIHJldHVybiBib3g7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5jcHAJKHJldmlzaW9uIDE4
NDExNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGVu
Z3RoQm94LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgTGVuZ3RoJiBMZW5ndGhC
b3g6OmxvZ2ljYWxMZWZ0KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAotewotICAgIHJl
dHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyBtX2xlZnQgOiBtX3Rv
cDsKLX0KLQotY29uc3QgTGVuZ3RoJiBMZW5ndGhCb3g6OmxvZ2ljYWxSaWdodChXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUod3JpdGluZ01vZGUpID8gbV9yaWdodCA6IG1fYm90dG9tOwotfQotCi1jb25zdCBMZW5ndGgm
IExlbmd0aEJveDo6YmVmb3JlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAotewotICAg
IHN3aXRjaCAod3JpdGluZ01vZGUpIHsKLSAgICBjYXNlIFRvcFRvQm90dG9tV3JpdGluZ01vZGU6
Ci0gICAgICAgIHJldHVybiBtX3RvcDsKLSAgICBjYXNlIEJvdHRvbVRvVG9wV3JpdGluZ01vZGU6
Ci0gICAgICAgIHJldHVybiBtX2JvdHRvbTsKLSAgICBjYXNlIExlZnRUb1JpZ2h0V3JpdGluZ01v
ZGU6Ci0gICAgICAgIHJldHVybiBtX2xlZnQ7Ci0gICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdN
b2RlOgotICAgICAgICByZXR1cm4gbV9yaWdodDsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIG1fdG9wOwotfQotCi1jb25zdCBMZW5ndGgmIExlbmd0aEJveDo6
YWZ0ZXIoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIGNvbnN0Ci17Ci0gICAgc3dpdGNoICh3cml0
aW5nTW9kZSkgewotICAgIGNhc2UgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZToKLSAgICAgICAgcmV0
dXJuIG1fYm90dG9tOwotICAgIGNhc2UgQm90dG9tVG9Ub3BXcml0aW5nTW9kZToKLSAgICAgICAg
cmV0dXJuIG1fdG9wOwotICAgIGNhc2UgTGVmdFRvUmlnaHRXcml0aW5nTW9kZToKLSAgICAgICAg
cmV0dXJuIG1fcmlnaHQ7Ci0gICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlOgotICAgICAg
ICByZXR1cm4gbV9sZWZ0OwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gbV9ib3R0b207Ci19Ci0KLWNvbnN0IExlbmd0aCYgTGVuZ3RoQm94OjpzdGFydChXcml0
aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Ci17Ci0g
ICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSkKLSAgICAgICAgcmV0
dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IG1fbGVmdCA6IG1fcmlnaHQ7
Ci0gICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IG1fdG9wIDog
bV9ib3R0b207Ci19Ci0KLWNvbnN0IExlbmd0aCYgTGVuZ3RoQm94OjplbmQoV3JpdGluZ01vZGUg
d3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAotewotICAgIGlmIChp
c0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkpCi0gICAgICAgIHJldHVybiBpc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBtX3JpZ2h0IDogbV9sZWZ0OwotICAgIHJl
dHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBtX2JvdHRvbSA6IG1fdG9w
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGhCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZW5ndGhCb3guaAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHly
aWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICAgIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAgICBDb3B5cmlnaHQgKGMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCkBAIC0yNSw3OCArMjUsNzIgQEAKICNpbmNsdWRlICJMZW5ndGguaCIKICNp
bmNsdWRlICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgTGVuZ3RoQm94
IHsKICAgICBMZW5ndGhCb3goKQorICAgICAgICA6IG1fc2lkZXMoNCkKICAgICB7CiAgICAgfQog
CiAgICAgZXhwbGljaXQgTGVuZ3RoQm94KExlbmd0aFR5cGUgdHlwZSkKLSAgICAgICAgOiBtX2xl
ZnQodHlwZSkKLSAgICAgICAgLCBtX3JpZ2h0KHR5cGUpCi0gICAgICAgICwgbV90b3AodHlwZSkK
LSAgICAgICAgLCBtX2JvdHRvbSh0eXBlKQorICAgICAgICA6IG1fc2lkZXMoeyB0eXBlLCB0eXBl
LCB0eXBlLCB0eXBlIH0pCiAgICAgewogICAgIH0KIAogICAgIGV4cGxpY2l0IExlbmd0aEJveChp
bnQgdikKLSAgICAgICAgOiBtX2xlZnQoTGVuZ3RoKHYsIEZpeGVkKSkKLSAgICAgICAgLCBtX3Jp
Z2h0KExlbmd0aCh2LCBGaXhlZCkpCi0gICAgICAgICwgbV90b3AoTGVuZ3RoKHYsIEZpeGVkKSkK
LSAgICAgICAgLCBtX2JvdHRvbShMZW5ndGgodiwgRml4ZWQpKQorICAgICAgICA6IG1fc2lkZXMo
eyBMZW5ndGgodiwgRml4ZWQpLCBMZW5ndGgodiwgRml4ZWQpLCBMZW5ndGgodiwgRml4ZWQpLCBM
ZW5ndGgodiwgRml4ZWQpIH0pCiAgICAgewogICAgIH0KIAogICAgIExlbmd0aEJveChMZW5ndGgg
dG9wLCBMZW5ndGggcmlnaHQsIExlbmd0aCBib3R0b20sIExlbmd0aCBsZWZ0KQotICAgICAgICA6
IG1fbGVmdChXVEY6Om1vdmUobGVmdCkpCi0gICAgICAgICwgbV9yaWdodChXVEY6Om1vdmUocmln
aHQpKQotICAgICAgICAsIG1fdG9wKFdURjo6bW92ZSh0b3ApKQotICAgICAgICAsIG1fYm90dG9t
KFdURjo6bW92ZShib3R0b20pKQorICAgICAgICA6IG1fc2lkZXMoeyBXVEY6Om1vdmUodG9wKSwg
V1RGOjptb3ZlKHJpZ2h0KSwgV1RGOjptb3ZlKGJvdHRvbSksIFdURjo6bW92ZShsZWZ0KSB9KQog
ICAgIHsKICAgICB9CiAKICAgICBMZW5ndGhCb3goaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90
dG9tLCBpbnQgbGVmdCkKLSAgICAgICAgOiBtX2xlZnQoTGVuZ3RoKGxlZnQsIEZpeGVkKSkKLSAg
ICAgICAgLCBtX3JpZ2h0KExlbmd0aChyaWdodCwgRml4ZWQpKQotICAgICAgICAsIG1fdG9wKExl
bmd0aCh0b3AsIEZpeGVkKSkKLSAgICAgICAgLCBtX2JvdHRvbShMZW5ndGgoYm90dG9tLCBGaXhl
ZCkpCisgICAgICAgIDogbV9zaWRlcyh7IExlbmd0aCh0b3AsIEZpeGVkKSwgTGVuZ3RoKHJpZ2h0
LCBGaXhlZCksIExlbmd0aChib3R0b20sIEZpeGVkKSwgTGVuZ3RoKGxlZnQsIEZpeGVkKSB9KQog
ICAgIHsKICAgICB9CiAKLSAgICBjb25zdCBMZW5ndGgmIGxlZnQoKSBjb25zdCB7IHJldHVybiBt
X2xlZnQ7IH0KLSAgICBjb25zdCBMZW5ndGgmIHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yaWdo
dDsgfQotICAgIGNvbnN0IExlbmd0aCYgdG9wKCkgY29uc3QgeyByZXR1cm4gbV90b3A7IH0KLSAg
ICBjb25zdCBMZW5ndGgmIGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tOyB9CisgICAg
TGVuZ3RoJiBsZWZ0KCkgeyByZXR1cm4gbV9zaWRlc1tMZWZ0U2lkZV07IH0KKyAgICBMZW5ndGgm
IHJpZ2h0KCkgeyByZXR1cm4gbV9zaWRlc1tSaWdodFNpZGVdOyB9CisgICAgTGVuZ3RoJiB0b3Ao
KSB7IHJldHVybiBtX3NpZGVzW1RvcFNpZGVdOyB9CisgICAgTGVuZ3RoJiBib3R0b20oKSB7IHJl
dHVybiBtX3NpZGVzW0JvdHRvbVNpZGVdOyB9CiAKLSAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxM
ZWZ0KFdyaXRpbmdNb2RlKSBjb25zdDsKLSAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxSaWdodChX
cml0aW5nTW9kZSkgY29uc3Q7CisgICAgY29uc3QgTGVuZ3RoJiBsZWZ0KCkgY29uc3QgeyByZXR1
cm4gbV9zaWRlc1tMZWZ0U2lkZV07IH0KKyAgICBjb25zdCBMZW5ndGgmIHJpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gbV9zaWRlc1tSaWdodFNpZGVdOyB9CisgICAgY29uc3QgTGVuZ3RoJiB0b3AoKSBj
b25zdCB7IHJldHVybiBtX3NpZGVzW1RvcFNpZGVdOyB9CisgICAgY29uc3QgTGVuZ3RoJiBib3R0
b20oKSBjb25zdCB7IHJldHVybiBtX3NpZGVzW0JvdHRvbVNpZGVdOyB9CiAKLSAgICBjb25zdCBM
ZW5ndGgmIGJlZm9yZShXcml0aW5nTW9kZSkgY29uc3Q7Ci0gICAgY29uc3QgTGVuZ3RoJiBhZnRl
cihXcml0aW5nTW9kZSkgY29uc3Q7Ci0gICAgY29uc3QgTGVuZ3RoJiBzdGFydChXcml0aW5nTW9k
ZSwgVGV4dERpcmVjdGlvbikgY29uc3Q7Ci0gICAgY29uc3QgTGVuZ3RoJiBlbmQoV3JpdGluZ01v
ZGUsIFRleHREaXJlY3Rpb24pIGNvbnN0OworICAgIGNvbnN0IExlbmd0aCYgYmVmb3JlKFdyaXRp
bmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUikgY29uc3Qg
eyByZXR1cm4gbV9zaWRlc1ttYXBMb2dpY2FsVG9QaHlzaWNhbEJveFNpZGUobWFrZVRleHRGbG93
KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBCZWZvcmVTaWRlKV07IH0KKyAgICBjb25zdCBMZW5n
dGgmIGFmdGVyKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
biA9IExUUikgY29uc3QgeyByZXR1cm4gbV9zaWRlc1ttYXBMb2dpY2FsVG9QaHlzaWNhbEJveFNp
ZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBBZnRlclNpZGUpXTsgfQor
ICAgIGNvbnN0IExlbmd0aCYgc3RhcnQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJl
Y3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBtX3NpZGVzW21hcExvZ2ljYWxU
b1BoeXNpY2FsQm94U2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIFN0
YXJ0U2lkZSldOyB9CisgICAgY29uc3QgTGVuZ3RoJiBlbmQoV3JpdGluZ01vZGUgd3JpdGluZ01v
ZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBtX3NpZGVz
W21hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRp
cmVjdGlvbiksIEVuZFNpZGUpXTsgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlbmd0
aEJveCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9sZWZ0ID09IG90aGVy
Lm1fbGVmdCAmJiBtX3JpZ2h0ID09IG90aGVyLm1fcmlnaHQgJiYgbV90b3AgPT0gb3RoZXIubV90
b3AgJiYgbV9ib3R0b20gPT0gb3RoZXIubV9ib3R0b207CisgICAgICAgIHJldHVybiBtX3NpZGVz
ID09IG90aGVyLm1fc2lkZXM7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExl
bmd0aEJveCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7CisgICAgICAgIHJldHVybiBtX3NpZGVzICE9IG90aGVyLm1fc2lkZXM7CiAgICAgfQog
Ci0gICAgYm9vbCBub25aZXJvKCkgY29uc3QKKyAgICBib29sIGlzWmVybygpIGNvbnN0CiAgICAg
ewotICAgICAgICByZXR1cm4gIShtX2xlZnQuaXNaZXJvKCkgJiYgbV9yaWdodC5pc1plcm8oKSAm
JiBtX3RvcC5pc1plcm8oKSAmJiBtX2JvdHRvbS5pc1plcm8oKSk7CisgICAgICAgIGZvciAoYXV0
byBzaWRlIDogbV9zaWRlcykgeworICAgICAgICAgICAgaWYgKCFzaWRlLmlzWmVybygpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBMZW5ndGggbV9sZWZ0OwotICAgIExlbmd0aCBtX3JpZ2h0OwotICAg
IExlbmd0aCBtX3RvcDsKLSAgICBMZW5ndGggbV9ib3R0b207Citwcml2YXRlOgorICAgIFZlY3Rv
cjxMZW5ndGgsIDQ+IG1fc2lkZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgJKHJldmlzaW9uIDE4NDEx
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIFRl
eHREaXJlY3Rpb24geyBSVEwsIExUUiB9OworZW51bSBUZXh0RGlyZWN0aW9uIHsgTFRSLCBSVEwg
fTsKIAogZW51bSBUZXh0UmVuZGVyaW5nTW9kZSB7IEF1dG9UZXh0UmVuZGVyaW5nLCBPcHRpbWl6
ZVNwZWVkLCBPcHRpbWl6ZUxlZ2liaWxpdHksIEdlb21ldHJpY1ByZWNpc2lvbiB9OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oCShyZXZpc2lvbiAx
ODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDEyLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCkBAIC0zNCwyNSArMzUsOTggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51
bSBXcml0aW5nTW9kZSB7Ci0gICAgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwgUmlnaHRUb0xlZnRX
cml0aW5nTW9kZSwgTGVmdFRvUmlnaHRXcml0aW5nTW9kZSwgQm90dG9tVG9Ub3BXcml0aW5nTW9k
ZQorICAgIFRvcFRvQm90dG9tV3JpdGluZ01vZGUgPSAwLCAvLyBob3Jpem9udGFsLXRiCisgICAg
Qm90dG9tVG9Ub3BXcml0aW5nTW9kZSA9IDEsIC8vIGhvcml6b250YWwtYnQKKyAgICBMZWZ0VG9S
aWdodFdyaXRpbmdNb2RlID0gMiwgLy8gdmVydGljYWwtbHIKKyAgICBSaWdodFRvTGVmdFdyaXRp
bmdNb2RlID0gMywgLy8gdmVydGljYWwtcmwKIH07CiAKKyNkZWZpbmUgTUFLRV9URVhUX0ZMT1co
d3JpdGluZ01vZGUsIGRpcmVjdGlvbikgICgod3JpdGluZ01vZGUpIDw8IDEgfCAoZGlyZWN0aW9u
KSkKKworLy8gRGVmaW5lIHRoZSB0ZXh0IGZsb3cgaW4gdGVybXMgb2YgdGhlIHdyaXRpbmcgbW9k
ZSBhbmQgdGhlIHRleHQgZGlyZWN0aW9uLiBUaGUgZmlyc3QKKy8vIHBhcnQgaXMgdGhlIGxpbmUg
Z3Jvd2luZyBkaXJlY3Rpb24gYW5kIHRoZSBzZWNvbmQgcGFydCBpcyB0aGUgYmxvY2sgZ3Jvd2lu
ZyBkaXJlY3Rpb24uCitlbnVtIFRleHRGbG93IHsKKyAgICBUZXh0Rmxvd0Vhc3RTb3V0aCA9IE1B
S0VfVEVYVF9GTE9XKFRvcFRvQm90dG9tV3JpdGluZ01vZGUsIExUUiksCisgICAgVGV4dEZsb3dX
ZXN0U291dGggPSBNQUtFX1RFWFRfRkxPVyhUb3BUb0JvdHRvbVdyaXRpbmdNb2RlLCBSVEwpLAor
ICAgIFRleHRGbG93RWFzdE5vcnRoID0gTUFLRV9URVhUX0ZMT1coQm90dG9tVG9Ub3BXcml0aW5n
TW9kZSwgTFRSKSwKKyAgICBUZXh0Rmxvd1dlc3ROb3J0aCA9IE1BS0VfVEVYVF9GTE9XKEJvdHRv
bVRvVG9wV3JpdGluZ01vZGUsIFJUTCksCisgICAgVGV4dEZsb3dTb3V0aEVhc3QgPSBNQUtFX1RF
WFRfRkxPVyhMZWZ0VG9SaWdodFdyaXRpbmdNb2RlLCBMVFIpLAorICAgIFRleHRGbG93U291dGhX
ZXN0ID0gTUFLRV9URVhUX0ZMT1coTGVmdFRvUmlnaHRXcml0aW5nTW9kZSwgUlRMKSwKKyAgICBU
ZXh0Rmxvd05vcnRoRWFzdCA9IE1BS0VfVEVYVF9GTE9XKFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUs
IExUUiksCisgICAgVGV4dEZsb3dOb3J0aFdlc3QgPSBNQUtFX1RFWFRfRkxPVyhSaWdodFRvTGVm
dFdyaXRpbmdNb2RlLCBSVEwpCit9OworCitpbmxpbmUgVGV4dEZsb3cgbWFrZVRleHRGbG93KFdy
aXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEZsb3c+KE1BS0VfVEVYVF9GTE9XKHdyaXRpbmdNb2RlLCBk
aXJlY3Rpb24pKTsKK30KKworI3VuZGVmIE1BS0VfVEVYVF9GTE9XCisKK2NvbnN0IHVuc2lnbmVk
IFRleHRGbG93UmV2ZXJzZWRNYXNrID0gMTsKK2NvbnN0IHVuc2lnbmVkIFRleHRGbG93RmxpcHBl
ZE1hc2sgPSAyOworY29uc3QgdW5zaWduZWQgVGV4dEZsb3dWZXJ0aWNhbE1hc2sgPSA0OworCitp
bmxpbmUgYm9vbCBpc1RleHRGbG93UmV2ZXJzZWQoVGV4dEZsb3cgdGV4dGZsb3cpCit7CisgICAg
cmV0dXJuIHRleHRmbG93ICYgVGV4dEZsb3dSZXZlcnNlZE1hc2s7Cit9CisKK2lubGluZSBib29s
IGlzVGV4dEZsb3dGbGlwcGVkKFRleHRGbG93IHRleHRmbG93KQoreworICAgIHJldHVybiB0ZXh0
ZmxvdyAmIFRleHRGbG93RmxpcHBlZE1hc2s7Cit9CisKK2lubGluZSBib29sIGlzVGV4dEZsb3dW
ZXJ0aWNhbChUZXh0RmxvdyB0ZXh0ZmxvdykKK3sKKyAgICByZXR1cm4gdGV4dGZsb3cgJiBUZXh0
Rmxvd1ZlcnRpY2FsTWFzazsKK30KKworLy8gTGluZXMgaGF2ZSB2ZXJ0aWNhbCBvcmllbnRhdGlv
bjsgbW9kZXMgdmVydGljYWwtbHIgb3IgdmVydGljYWwtcmwuCitpbmxpbmUgYm9vbCBpc1ZlcnRp
Y2FsV3JpdGluZ01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCit7CisgICAgcmV0dXJuIGlz
VGV4dEZsb3dWZXJ0aWNhbChtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIExUUikpOworfQorCisv
LyBCbG9jayBwcm9ncmVzc2lvbiBpbmNyZWFzZXMgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiB0
byBub3JtYWw7IG1vZGVzIHZlcnRpY2FsLXJsIG9yIGhvcml6b250YWwtYnQuCitpbmxpbmUgYm9v
bCBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkKK3sK
KyAgICByZXR1cm4gaXNUZXh0Rmxvd0ZsaXBwZWQobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBM
VFIpKTsKK30KKwogLy8gTGluZXMgaGF2ZSBob3Jpem9udGFsIG9yaWVudGF0aW9uOyBtb2RlcyBo
b3Jpem9udGFsLXRiIG9yIGhvcml6b250YWwtYnQuCiBpbmxpbmUgYm9vbCBpc0hvcml6b250YWxX
cml0aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkKIHsKLSAgICByZXR1cm4gd3JpdGlu
Z01vZGUgPT0gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSB8fCB3cml0aW5nTW9kZSA9PSBCb3R0b21U
b1RvcFdyaXRpbmdNb2RlOworICAgIHJldHVybiAhaXNWZXJ0aWNhbFdyaXRpbmdNb2RlKHdyaXRp
bmdNb2RlKTsKIH0KIAogLy8gQm90dG9tIG9mIHRoZSBsaW5lIG9jY3VycyBlYXJsaWVyIGluIHRo
ZSBibG9jazsgbW9kZXMgdmVydGljYWwtbHIgb3IgaG9yaXpvbnRhbC1idC4KIGlubGluZSBib29s
IGlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCiB7Ci0g
ICAgcmV0dXJuIHdyaXRpbmdNb2RlID09IExlZnRUb1JpZ2h0V3JpdGluZ01vZGUgfHwgd3JpdGlu
Z01vZGUgPT0gQm90dG9tVG9Ub3BXcml0aW5nTW9kZTsKKyAgICByZXR1cm4gaXNWZXJ0aWNhbFdy
aXRpbmdNb2RlKHdyaXRpbmdNb2RlKSAhPSBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSh3cml0
aW5nTW9kZSk7CiB9CiAKLS8vIEJsb2NrIHByb2dyZXNzaW9uIGluY3JlYXNlcyBpbiB0aGUgb3Bw
b3NpdGUgZGlyZWN0aW9uIHRvIG5vcm1hbDsgbW9kZXMgdmVydGljYWwtcmwgb3IgaG9yaXpvbnRh
bC1idC4KLWlubGluZSBib29sIGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKFdyaXRpbmdNb2Rl
IHdyaXRpbmdNb2RlKQorZW51bSBMb2dpY2FsQm94U2lkZSB7IEJlZm9yZVNpZGUsIEVuZFNpZGUs
IEFmdGVyU2lkZSwgU3RhcnRTaWRlIH07CitlbnVtIFBoeXNpY2FsQm94U2lkZSB7IFRvcFNpZGUs
IFJpZ2h0U2lkZSwgQm90dG9tU2lkZSwgTGVmdFNpZGUgfTsKKworaW5saW5lIFBoeXNpY2FsQm94
U2lkZSBtYXBMb2dpY2FsVG9QaHlzaWNhbEJveFNpZGUoVGV4dEZsb3cgdGV4dGZsb3csIExvZ2lj
YWxCb3hTaWRlIGxvZ2ljYWxTaWRlKQogewotICAgIHJldHVybiB3cml0aW5nTW9kZSA9PSBSaWdo
dFRvTGVmdFdyaXRpbmdNb2RlIHx8IHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01v
ZGU7CisgICAgaW50IHBoeXNpY2FsU2lkZSA9IGxvZ2ljYWxTaWRlOworICAgIGJvb2wgaXNTdGFy
dEVuZFNpZGUgPSBwaHlzaWNhbFNpZGUgJSAyID09IDE7CisKKyAgICAvLyBTd2FwIHRoZSBsZWZ0
L3JpZ2h0IHNpZGUgd2l0aCB0aGUgdG9wL2JvdHRvbSBzaWRlIGlmIHRleHRGbG93IGlzIHZlcnRp
Y2FsCisgICAgaWYgKGlzVGV4dEZsb3dWZXJ0aWNhbCh0ZXh0ZmxvdykpIHsKKyAgICAgICAgaWYg
KGlzU3RhcnRFbmRTaWRlKQorICAgICAgICAgICAgcGh5c2ljYWxTaWRlID0gKHBoeXNpY2FsU2lk
ZSArIDEpICUgNDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGh5c2ljYWxTaWRlID0gKHBo
eXNpY2FsU2lkZSArIDMpICUgNDsKKyAgICB9CisKKyAgICAvLyBTd2FwIHRoZSBsZWZ0IGFuZCBy
aWdodCBzaWRlcyBpZiB0ZXh0RmxvdyBpcyByZXZlcnNlZCBhbmQgdGhlIHRvcCBhbmQgYm90dG9t
IHNpZGVzIGlmIHRleHRGbG93IGlzIGZsaXBwZWQKKyAgICBpZiAoKGlzU3RhcnRFbmRTaWRlICYm
IGlzVGV4dEZsb3dSZXZlcnNlZCh0ZXh0ZmxvdykpIHx8ICghaXNTdGFydEVuZFNpZGUgJiYgaXNU
ZXh0Rmxvd0ZsaXBwZWQodGV4dGZsb3cpKSkKKyAgICAgICAgcGh5c2ljYWxTaWRlID0gKHBoeXNp
Y2FsU2lkZSArIDIpICUgNDsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQaHlzaWNhbEJveFNp
ZGU+KHBoeXNpY2FsU2lkZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkocmV2aXNp
b24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIxLDEwICs5MjEsMTAgQEAgdm9pZCBSZW5kZXJTdHls
ZTo6c2V0TWFza0ltYWdlKGNvbnN0IFZlYwogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q2xpcChMZW5n
dGggdG9wLCBMZW5ndGggcmlnaHQsIExlbmd0aCBib3R0b20sIExlbmd0aCBsZWZ0KQogewogICAg
IFN0eWxlVmlzdWFsRGF0YSogZGF0YSA9IHZpc3VhbC5hY2Nlc3MoKTsKLSAgICBkYXRhLT5jbGlw
Lm1fdG9wID0gdG9wOwotICAgIGRhdGEtPmNsaXAubV9yaWdodCA9IHJpZ2h0OwotICAgIGRhdGEt
PmNsaXAubV9ib3R0b20gPSBib3R0b207Ci0gICAgZGF0YS0+Y2xpcC5tX2xlZnQgPSBsZWZ0Owor
ICAgIGRhdGEtPmNsaXAudG9wKCkgPSB0b3A7CisgICAgZGF0YS0+Y2xpcC5yaWdodCgpID0gcmln
aHQ7CisgICAgZGF0YS0+Y2xpcC5ib3R0b20oKSA9IGJvdHRvbTsKKyAgICBkYXRhLT5jbGlwLmxl
ZnQoKSA9IGxlZnQ7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OmFkZEN1cnNvcihQYXNzUmVmUHRy
PFN0eWxlSW1hZ2U+IGltYWdlLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCkKQEAgLTEzMDksMTAg
KzEzMDksMTAgQEAgY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgUmVuZAogICAg
IGlmICghbm9uZUxpc3RJbml0aWFsaXplZCkgewogICAgICAgICBTdHlsZURhc2hib2FyZFJlZ2lv
biByZWdpb247CiAgICAgICAgIHJlZ2lvbi5sYWJlbCA9ICIiOwotICAgICAgICByZWdpb24ub2Zm
c2V0Lm1fdG9wICA9IExlbmd0aCgpOwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fcmlnaHQgPSBM
ZW5ndGgoKTsKLSAgICAgICAgcmVnaW9uLm9mZnNldC5tX2JvdHRvbSA9IExlbmd0aCgpOwotICAg
ICAgICByZWdpb24ub2Zmc2V0Lm1fbGVmdCA9IExlbmd0aCgpOworICAgICAgICByZWdpb24ub2Zm
c2V0LnRvcCgpICA9IExlbmd0aCgpOworICAgICAgICByZWdpb24ub2Zmc2V0LnJpZ2h0KCkgPSBM
ZW5ndGgoKTsKKyAgICAgICAgcmVnaW9uLm9mZnNldC5ib3R0b20oKSA9IExlbmd0aCgpOworICAg
ICAgICByZWdpb24ub2Zmc2V0LmxlZnQoKSA9IExlbmd0aCgpOwogICAgICAgICByZWdpb24udHlw
ZSA9IFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpOb25lOwogICAgICAgICBub25lTGlzdC5hcHBlbmQo
cmVnaW9uKTsKICAgICAgICAgbm9uZUxpc3RJbml0aWFsaXplZCA9IHRydWU7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMTg0
MTE2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUzMSwxMiArNTMxLDEyIEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsgfQogICAgIGJvb2wgaXNGbG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRl
ZF9mbGFncy5pc0Zsb2F0aW5nKCk7IH0KLSAgICBib29sIGhhc01hcmdpbigpIGNvbnN0IHsgcmV0
dXJuIHN1cnJvdW5kLT5tYXJnaW4ubm9uWmVybygpOyB9CisgICAgYm9vbCBoYXNNYXJnaW4oKSBj
b25zdCB7IHJldHVybiAhc3Vycm91bmQtPm1hcmdpbi5pc1plcm8oKTsgfQogICAgIGJvb2wgaGFz
Qm9yZGVyKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5oYXNCb3JkZXIoKTsgfQog
ICAgIGJvb2wgaGFzQm9yZGVyRmlsbCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIu
aGFzRmlsbCgpOyB9CiAgICAgYm9vbCBoYXNCb3JkZXJEZWNvcmF0aW9uKCkgY29uc3QgeyByZXR1
cm4gaGFzQm9yZGVyKCkgfHwgaGFzQm9yZGVyRmlsbCgpOyB9Ci0gICAgYm9vbCBoYXNQYWRkaW5n
KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcubm9uWmVybygpOyB9Ci0gICAgYm9v
bCBoYXNPZmZzZXQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0Lm5vblplcm8oKTsg
fQorICAgIGJvb2wgaGFzUGFkZGluZygpIGNvbnN0IHsgcmV0dXJuICFzdXJyb3VuZC0+cGFkZGlu
Zy5pc1plcm8oKTsgfQorICAgIGJvb2wgaGFzT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gIXN1cnJv
dW5kLT5vZmZzZXQuaXNaZXJvKCk7IH0KICAgICBib29sIGhhc01hcmdpbkJlZm9yZVF1aXJrKCkg
Y29uc3QgeyByZXR1cm4gbWFyZ2luQmVmb3JlKCkuaGFzUXVpcmsoKTsgfQogICAgIGJvb2wgaGFz
TWFyZ2luQWZ0ZXJRdWlyaygpIGNvbnN0IHsgcmV0dXJuIG1hcmdpbkFmdGVyKCkuaGFzUXVpcmso
KTsgfQogCkBAIC01NTgsNyArNTU4LDcgQEAgcHVibGljOgogICAgIExheW91dEJveEV4dGVudCBp
bWFnZU91dHNldHMoY29uc3QgTmluZVBpZWNlSW1hZ2UmKSBjb25zdDsKICAgICBib29sIGhhc0Jv
cmRlckltYWdlT3V0c2V0cygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gYm9yZGVySW1h
Z2UoKS5oYXNJbWFnZSgpICYmIGJvcmRlckltYWdlKCkub3V0c2V0KCkubm9uWmVybygpOworICAg
ICAgICByZXR1cm4gYm9yZGVySW1hZ2UoKS5oYXNJbWFnZSgpICYmICFib3JkZXJJbWFnZSgpLm91
dHNldCgpLmlzWmVybygpOwogICAgIH0KICAgICBMYXlvdXRCb3hFeHRlbnQgYm9yZGVySW1hZ2VP
dXRzZXRzKCkgY29uc3QKICAgICB7CkBAIC01OTUsOCArNTk1LDggQEAgcHVibGljOgogICAgIGNv
bnN0IExlbmd0aCYgYm90dG9tKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5ib3R0
b20oKTsgfQogCiAgICAgLy8gQWNjZXNzb3JzIGZvciBwb3NpdGlvbmVkIG9iamVjdCBlZGdlcyB0
aGF0IHRha2UgaW50byBhY2NvdW50IHdyaXRpbmcgbW9kZS4KLSAgICBjb25zdCBMZW5ndGgmIGxv
Z2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5sb2dpY2FsTGVmdCh3
cml0aW5nTW9kZSgpKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbFJpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5sb2dpY2FsUmlnaHQod3JpdGluZ01vZGUoKSk7IH0K
KyAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQt
Pm9mZnNldC5zdGFydCh3cml0aW5nTW9kZSgpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbG9naWNh
bFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5lbmQod3JpdGluZ01vZGUo
KSk7IH0KICAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBzdXJy
b3VuZC0+b2Zmc2V0LmJlZm9yZSh3cml0aW5nTW9kZSgpKTsgfQogICAgIGNvbnN0IExlbmd0aCYg
bG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuYWZ0ZXIod3Jp
dGluZ01vZGUoKSk7IH0KIApAQCAtMTIwMCwxMCArMTIwMCwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRQb3NpdGlvbihFUG9zaXRpb24gdikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0UG9zaXRp
b24odik7IH0KICAgICB2b2lkIHNldEZsb2F0aW5nKEVGbG9hdCB2KSB7IG5vbmluaGVyaXRlZF9m
bGFncy5zZXRGbG9hdGluZyh2KTsgfQogCi0gICAgdm9pZCBzZXRMZWZ0KExlbmd0aCB2KSB7IFNF
VF9WQVIoc3Vycm91bmQsIG9mZnNldC5tX2xlZnQsIFdURjo6bW92ZSh2KSk7IH0KLSAgICB2b2lk
IHNldFJpZ2h0KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5tX3JpZ2h0LCBX
VEY6Om1vdmUodikpOyB9Ci0gICAgdm9pZCBzZXRUb3AoTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJy
b3VuZCwgb2Zmc2V0Lm1fdG9wLCBXVEY6Om1vdmUodikpOyB9Ci0gICAgdm9pZCBzZXRCb3R0b20o
TGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0Lm1fYm90dG9tLCBXVEY6Om1vdmUo
dikpOyB9CisgICAgdm9pZCBzZXRMZWZ0KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9m
ZnNldC5sZWZ0KCksIFdURjo6bW92ZSh2KSk7IH0KKyAgICB2b2lkIHNldFJpZ2h0KExlbmd0aCB2
KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5yaWdodCgpLCBXVEY6Om1vdmUodikpOyB9Cisg
ICAgdm9pZCBzZXRUb3AoTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0LnRvcCgp
LCBXVEY6Om1vdmUodikpOyB9CisgICAgdm9pZCBzZXRCb3R0b20oTGVuZ3RoIHYpIHsgU0VUX1ZB
UihzdXJyb3VuZCwgb2Zmc2V0LmJvdHRvbSgpLCBXVEY6Om1vdmUodikpOyB9CiAKICAgICB2b2lk
IHNldFdpZHRoKExlbmd0aCB2KSB7IFNFVF9WQVIobV9ib3gsIG1fd2lkdGgsIFdURjo6bW92ZSh2
KSk7IH0KICAgICB2b2lkIHNldEhlaWdodChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX2hl
aWdodCwgV1RGOjptb3ZlKHYpKTsgfQpAQCAtMTIzOSwxMCArMTIzOSwxMCBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBTdHlsZURhc2hib2FyZFJlZ2lvbiByZWdpb247CiAgICAgICAgIHJlZ2lv
bi5sYWJlbCA9IGxhYmVsOwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fdG9wID0gV1RGOjptb3Zl
KHQpOwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fcmlnaHQgPSBXVEY6Om1vdmUocik7Ci0gICAg
ICAgIHJlZ2lvbi5vZmZzZXQubV9ib3R0b20gPSBXVEY6Om1vdmUoYik7Ci0gICAgICAgIHJlZ2lv
bi5vZmZzZXQubV9sZWZ0ID0gV1RGOjptb3ZlKGwpOworICAgICAgICByZWdpb24ub2Zmc2V0LnRv
cCgpID0gV1RGOjptb3ZlKHQpOworICAgICAgICByZWdpb24ub2Zmc2V0LnJpZ2h0KCkgPSBXVEY6
Om1vdmUocik7CisgICAgICAgIHJlZ2lvbi5vZmZzZXQuYm90dG9tKCkgPSBXVEY6Om1vdmUoYik7
CisgICAgICAgIHJlZ2lvbi5vZmZzZXQubGVmdCgpID0gV1RGOjptb3ZlKGwpOwogICAgICAgICBy
ZWdpb24udHlwZSA9IHR5cGU7CiAgICAgICAgIGlmICghYXBwZW5kKQogICAgICAgICAgICAgcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZGFzaGJvYXJkUmVnaW9ucy5jbGVhcigpOwpA
QCAtMTMyMywxMCArMTMyMywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWZXJ0aWNhbEFsaWdu
TGVuZ3RoKExlbmd0aCBsZW5ndGgpIHsgc2V0VmVydGljYWxBbGlnbihMRU5HVEgpOyBTRVRfVkFS
KG1fYm94LCBtX3ZlcnRpY2FsQWxpZ24sIFdURjo6bW92ZShsZW5ndGgpKTsgfQogCiAgICAgdm9p
ZCBzZXRIYXNDbGlwKGJvb2wgYiA9IHRydWUpIHsgU0VUX1ZBUih2aXN1YWwsIGhhc0NsaXAsIGIp
OyB9Ci0gICAgdm9pZCBzZXRDbGlwTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFs
LCBjbGlwLm1fbGVmdCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRDbGlwUmln
aHQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5tX3JpZ2h0LCBXVEY6Om1v
dmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldENsaXBUb3AoTGVuZ3RoIGxlbmd0aCkgeyBTRVRf
VkFSKHZpc3VhbCwgY2xpcC5tX3RvcCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBz
ZXRDbGlwQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAubV9ib3R0
b20sIFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0Q2xpcExlZnQoTGVuZ3RoIGxl
bmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5sZWZ0KCksIFdURjo6bW92ZShsZW5ndGgpKTsg
fQorICAgIHZvaWQgc2V0Q2xpcFJpZ2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWws
IGNsaXAucmlnaHQoKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRDbGlwVG9w
KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAudG9wKCksIFdURjo6bW92ZShs
ZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0Q2xpcEJvdHRvbShMZW5ndGggbGVuZ3RoKSB7IFNFVF9W
QVIodmlzdWFsLCBjbGlwLmJvdHRvbSgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KICAgICB2b2lk
IHNldENsaXAoTGVuZ3RoIHRvcCwgTGVuZ3RoIHJpZ2h0LCBMZW5ndGggYm90dG9tLCBMZW5ndGgg
bGVmdCk7CiAgICAgdm9pZCBzZXRDbGlwKExlbmd0aEJveCBib3gpIHsgU0VUX1ZBUih2aXN1YWws
IGNsaXAsIFdURjo6bW92ZShib3gpKTsgfQogCkBAIC0xNDM0LDE5ICsxNDM0LDE5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldExpc3RTdHlsZVBvc2l0aW9uKEVMaXN0U3R5bGVQb3NpdGlvbiB2KSB7
IGluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV9wb3NpdGlvbiA9IHY7IH0KIAogICAgIHZvaWQg
cmVzZXRNYXJnaW4oKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbiwgTGVuZ3RoQm94KEZpeGVk
KSk7IH0KLSAgICB2b2lkIHNldE1hcmdpblRvcChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vy
cm91bmQsIG1hcmdpbi5tX3RvcCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRN
YXJnaW5Cb3R0b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ubV9i
b3R0b20sIFdURjo6bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0TWFyZ2luTGVmdChMZW5n
dGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5tX2xlZnQsIFdURjo6bW92ZShs
ZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0TWFyZ2luUmlnaHQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRf
VkFSKHN1cnJvdW5kLCBtYXJnaW4ubV9yaWdodCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAg
dm9pZCBzZXRNYXJnaW5Ub3AoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJn
aW4udG9wKCksIFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFyZ2luQm90dG9t
KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLmJvdHRvbSgpLCBXVEY6
Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1hcmdpbkxlZnQoTGVuZ3RoIGxlbmd0aCkg
eyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ubGVmdCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0K
KyAgICB2b2lkIHNldE1hcmdpblJpZ2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3Vu
ZCwgbWFyZ2luLnJpZ2h0KCksIFdURjo6bW92ZShsZW5ndGgpKTsgfQogICAgIHZvaWQgc2V0TWFy
Z2luU3RhcnQoTGVuZ3RoKTsKICAgICB2b2lkIHNldE1hcmdpbkVuZChMZW5ndGgpOwogCiAgICAg
dm9pZCByZXNldFBhZGRpbmcoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcsIExlbmd0aEJv
eChBdXRvKSk7IH0KICAgICB2b2lkIHNldFBhZGRpbmdCb3goTGVuZ3RoQm94IGJveCkgeyBTRVRf
VkFSKHN1cnJvdW5kLCBwYWRkaW5nLCBXVEY6Om1vdmUoYm94KSk7IH0KLSAgICB2b2lkIHNldFBh
ZGRpbmdUb3AoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLm1fdG9w
LCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldFBhZGRpbmdCb3R0b20oTGVuZ3Ro
IGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLm1fYm90dG9tLCBXVEY6Om1vdmUo
bGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldFBhZGRpbmdMZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VU
X1ZBUihzdXJyb3VuZCwgcGFkZGluZy5tX2xlZnQsIFdURjo6bW92ZShsZW5ndGgpKTsgfQotICAg
IHZvaWQgc2V0UGFkZGluZ1JpZ2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwg
cGFkZGluZy5tX3JpZ2h0LCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZGRp
bmdUb3AoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLnRvcCgpLCBX
VEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdCb3R0b20oTGVuZ3RoIGxl
bmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLmJvdHRvbSgpLCBXVEY6Om1vdmUobGVu
Z3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdMZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZB
UihzdXJyb3VuZCwgcGFkZGluZy5sZWZ0KCksIFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZv
aWQgc2V0UGFkZGluZ1JpZ2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFk
ZGluZy5yaWdodCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KIAogICAgIHZvaWQgc2V0Q3Vyc29y
KEVDdXJzb3IgYykgeyBpbmhlcml0ZWRfZmxhZ3MuX2N1cnNvcl9zdHlsZSA9IGM7IH0KICAgICB2
b2lkIGFkZEN1cnNvcihQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+LCBjb25zdCBJbnRQb2ludCYgaG90
U3BvdCA9IEludFBvaW50KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252966</attachid>
            <date>2015-05-12 09:15:36 -0700</date>
            <delta_ts>2015-05-12 09:51:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143399-20150512091414.patch</filename>
            <type>text/plain</type>
            <size>40663</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDE1LTA1LTExICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29kZSBjbGVh
biB1cCBmb3IgZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtaXggb2YgV3JpdGluZ01v
ZGUgYW5kIFRleHREaXJlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MzM5OQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBlaWdodCBUZXh0Rmxvd3MuIEEgVGV4dEZsb3cgY29u
c2lzdHMgb2YgdHdvIGRpcmVjdGlvbnMuIFRoZQorICAgICAgICBmaXJzdCBvbmUgY29udHJvbHMg
dGhlIGxpbmUgZ3Jvd2luZyBkaXJlY3Rpb24gYW5kIHRoZSBzZWNvbmQgb25lIGNvbnRyb2xzIHRo
ZQorICAgICAgICBibG9jayBncm93aW5nIGRpcmVjdGlvbi4KKyAgICAgICAgCisgICAgICAgIFdl
IG5lZWQgdG8gZXh0cmFjdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGVhc2lseSBmcm9tIHRo
ZSBUZXh0RmxvdworCisgICAgICAgIC0tIGlzVGV4dEZsb3dSZXZlcnNlZCgpIC8vIFJUTAorICAg
ICAgICAtLSBpc1RleHRGbG93RmxpcHBlZCgpICAvLyB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIHRv
IG5vcm1hbAorICAgICAgICAtLSBpc1RleHRGbG93VmVydGljYWwoKSAvLyBUaGUgbGluZSBncm93
cyB2ZXJ0aWNhbGx5CisKKyAgICAgICAgTWl4aW5nIFdyaXRpbmdNb2RlIGFuZCBUZXh0RGlyZWN0
aW9uIGludG8gVGV4dEZsb3cgYW5kIGNob29zaW5nIHRoZWlyIHZhbHVlcworICAgICAgICBjYXJl
ZnVsbHkgdG8gZWFzZSBpbXBsZW1lbnRpbmcgdGhlIGFib3ZlIGZ1bmN0aW9ucyBjYW4gbWFrZSB0
aGluZ3MgY2xlYXJlci4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhCb3guY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
OgorICAgICAgICBSZW1vdmUgTGVuZ3RoQm94LmNwcCBzaW5jZSBhbGwgaXRzIGZ1bmN0aW9ucyBi
ZWNvbWUgc2luZ2xlIGxpbmUgZnVuY3Rpb25zCisgICAgICAgIGFuZCBjb3VsZCBiZSBtb3ZlZCB0
byB0aGUgaGVhZGVyIGZpbGUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aEJv
eC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpMZW5ndGhCb3gpOgorICAgICAgICAo
V2ViQ29yZTo6TGVuZ3RoQm94OjpsZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6
cmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94Ojp0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6TGVuZ3RoQm94Ojpib3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94Ojpv
cGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6Om9wZXJhdG9yIT0pOiBVc2UgYW4gYXJyYXkgb2Yg
TGVuZ3RocyBmb3IgdGhlIGZvdXIgc2lkZXMuCisgICAgICAgIEFuZCB1c2UgdGhlIGVudW0gUGh5
c2ljYWxCb3hTaWRlIHRvIGFjY2VzcyB0aGlzIGFycmF5LgorCisgICAgICAgIChXZWJDb3JlOjpM
ZW5ndGhCb3g6OmlzWmVybyk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6Om5vblplcm8p
OiBEZWxldGVkLgorICAgICAgICBVc2UgaXNaZXJvKCkgaW5zdGVhZCBvZiBub25aZXJvKCkgc2lu
Y2UgdGhlIGZvcm1lciBpcyBjbGVhcmVyLgorCisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6
OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6OmFmdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Okxlbmd0aEJveDo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94
OjplbmQpOgorICAgICAgICBVc2UgdGhlIG1hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZSgpIGdl
dCB0aGUgcGh5c2ljYWwgc2lkZSBvZiB0aGUgYm94IGJhc2VkCisgICAgICAgIG9uIHRoZSBkaXJl
Y3Rpb24gYW5kIHRoZSB3cml0aW5nIG1vZGUuIAorICAgICAgICAKKyAgICAgICAgKiBjc3MvQ1NT
UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0
eSk6IEluc3RlYWQgb2YgaGFuZGxpbmcgdGhlIGVpZ2h0IHBvc3NpYmxlCisgICAgICAgIGNhc2Vz
IG9mIHRoZSB0ZXh0IGZsb3dzIG9uZSBieSBvbmUsIHdlIGNhbiBhbmFseXplIHRoZSB0ZXh0IGZs
b3cgYW5kIHN3YXAgdGhlCisgICAgICAgIHNpZGUgcHJvcGVydHkgaW5kZXggdG8gZ2V0IHRoZSBw
cm9wZXIgdmFsdWUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEZsYWdz
Lmg6IFVzdWFsbHkgdGhlIGRlZmF1bHQgdmFsdWUgaXMgZGVmaW5lZCBmaXJzdC4KKyAgICAgICAg
QW5kIGlmIHRoZSB2YWx1ZSBpcyBpbnRlZ2VyIG9yIGVudW0sIGl0IHNob3VsZCBiZSBlcXVhbCB0
byB6ZXJvLiBTaW5jZSBMVFIKKyAgICAgICAgaXMgdGhlIGRlZmF1bHQgZm9yIHRoZSB0ZXh0IGRp
cmVjdGlvbiwgaXQgc2hvdWxkIGJlIGRlZmluZWQgYmVmb3JlIFJUTC4KKyAgICAgICAgCisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6bWFr
ZVRleHRGbG93KTogIERlZmluaW5nIGEgZnVuY3Rpb24gdG8gbWFrZSBhIFRleHRGbG93IG91dCBm
cm9tCisgICAgICAgIFdyaXRpbmdNb2RlIGFuZCBUZXh0RGlyZWN0aW9uLgorICAgICAgICAKKyAg
ICAgICAgKFdlYkNvcmU6OmlzVGV4dEZsb3dSZXZlcnNlZCk6IFJldHVybnMgdHJ1ZSBpZiB0aGUg
dGV4dCBkaXJlY3Rpb24gaXMgUlRMLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OmlzVGV4
dEZsb3dGbGlwcGVkKTogUmV0dXJucyB0cnVlIGlmIGJsb2NrIGdyb3dpbmcgZGlyZWN0aW9uCisg
ICAgICAgIGlzIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gbm9ybWFsLgorICAgICAgICAK
KyAgICAgICAgKFdlYkNvcmU6OmlzVGV4dEZsb3dWZXJ0aWNhbCk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1ZlcnRpY2FsV3JpdGluZ01vZGUpOiBSZXR1cm5zIHRydWUgaWYgVGhlIGxpbmUgZ3Jvd3Mg
dmVydGljYWxseS4KKworICAgICAgICAoV2ViQ29yZTo6aXNIb3Jpem9udGFsV3JpdGluZ01vZGUp
OiAKKyAgICAgICAgKFdlYkNvcmU6OmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUpOiBVc2UgdGhlIHRleHQgZmxv
dyBmdW5jdGlvbnMgaW5zdGVhZC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjptYXBMb2dp
Y2FsVG9QaHlzaWNhbEJveFNpZGUpOiBJdCBtYXBzIGEgbG9naWNhbCBzaWRlIG9mIGEgYm94Cisg
ICAgICAgIGdpdmVuIHRoZSBjdXJyZW50IHRleHQgZGlyZWN0aW9uIGFuZCB0aGUgd3JpdGluZyBt
b2RlLgorCisgICAgICAgICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VTbGljZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVF1YWQpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6c2V0Q2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6bm9uZURhc2hi
b2FyZFJlZ2lvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOiBV
c2UgdGhlIExlbmd0aEJveCBzaWRlcycgYWNjZXNzIG1ldGhvZHMgaW5zdGVhZAorICAgICAgICBv
ZiBkaXJlY3RseSB1c2luZyB0aGUgc2lkZXMnIGFycmF5LgorCiAyMDE1LTA1LTExICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNtYWxsIHRpZHl1cCBp
biBhbmltYXRpb25zIGNvZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxODQx
MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MjAzOCw3ICsyMDM4LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL0tpbGxS
aW5nTm9uZS5jcHAKICAgICBwbGF0Zm9ybS9MYW5ndWFnZS5jcHAKICAgICBwbGF0Zm9ybS9MZW5n
dGguY3BwCi0gICAgcGxhdGZvcm0vTGVuZ3RoQm94LmNwcAogICAgIHBsYXRmb3JtL0xpbmtIYXNo
LmNwcAogICAgIHBsYXRmb3JtL0xvZ2dpbmcuY3BwCiAgICAgcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvagkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODAwNiw3ICs4MDA2LDYg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXFVSTC5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMYW5ndWFnZS5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMZW5ndGguY3BwIiAvPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGVuZ3RoQm94LmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExpbmtIYXNoLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXExvY2FsaXplZFN0cmluZ3MuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTG9nZ2luZy5jcHAiIC8+CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
CShyZXZpc2lvbiAxODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTExMTMsOSArMTExMyw2IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMZW5ndGguY3BwIj4KICAgICAg
IDxGaWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExlbmd0aEJveC5jcHAiPgotICAgICAgPEZpbHRlcj5w
bGF0Zm9ybTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cTGlua0hhc2guY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm08L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4NDExNikKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNjA1LDcgKzYwNSw2IEBACiAJCTE0NDc2QUE4MTVEQzRCQjEwMDMwNURCMiAvKiBXcml0
aW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTQ0NzZBQTcxNURDNEJCMTAwMzA1REIyIC8qIFdyaXRpbmdNb2RlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ0OUUyNEMxMDdENEE4NDAwQjU3
OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDQ5RTI0QTEwN0Q0QTg0MDBCNTc5M0YgLyogSlNDYWxsYmFja0RhdGEu
aCAqLzsgfTsKIAkJMTQ0OUUyODcxMDdENERCNDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDlFMjg2
MTA3RDREQjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5jcHAgKi87IH07Ci0JCTE0NkNDMTE1
MTU2OTg4RTQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ2Q0MxMTMxNTY5ODhCRDAwMTA5RTM3IC8qIExlbmd0
aEJveC5jcHAgKi87IH07CiAJCTE0NzdFNzc2MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3N0U3
NzQwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgKi87IH07CiAJCTE0NzdFNzc3MEJG
NDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0NzdFNzc1MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDc5
RkFFRDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDc5RkFFNTEwOUFFMzc1MDBERUQ2NTUgLyog
UmVuZGVyUnVieS5jcHAgKi87IH07CkBAIC03NjgwLDcgKzc2NzksNiBAQAogCQkxNDQ3NkFBNzE1
REM0QkIxMDAzMDVEQjIgLyogV3JpdGluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV3JpdGluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0
OUUyNEExMDdENEE4NDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FsbGJhY2tEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0NDlFMjg2MTA3RDREQjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbGxiYWNrRGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0NkNDMTEzMTU2OTg4QkQwMDEwOUUzNyAv
KiBMZW5ndGhCb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVu
Z3RoQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ3N0U3NzQwQkY0MTM0
QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUGFnZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ3
N0U3NzUwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGFnZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTE0NzlGQUU1MTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclJ1YnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjE3NjAsNyArMjE3NTgsNiBAQAogCQkJCTE0MURDMDQ3MTY0ODM0OEYw
MDM3MUU1QSAvKiBMYXlvdXRVbml0LmggKi8sCiAJCQkJQkNFNjVCRTgwRUFDREYxNjAwN0U0NTMz
IC8qIExlbmd0aC5jcHAgKi8sCiAJCQkJQkNFNjVCRTkwRUFDREYxNjAwN0U0NTMzIC8qIExlbmd0
aC5oICovLAotCQkJCTE0NkNDMTEzMTU2OTg4QkQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwICov
LAogCQkJCUJDRkY2NDhGMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCAqLywKIAkJCQlC
Q0ZGNjQ5MDBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oICovLAogCQkJCUE3QUQyRjg1
MEVDODlEMDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5jcHAgKi8sCkBAIC0yOTMwNiw3ICsyOTMwMyw2
IEBACiAJCQkJNTEyREQ4RjQwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hpdmUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCMjQxN0IwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdl
YkFyY2hpdmVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0U2NUJFQTBFQUNERjE2MDA3RTQ1
MzMgLyogTGVuZ3RoLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTE0NkNDMTE1MTU2OTg4RTQwMDEw
OUUzNyAvKiBMZW5ndGhCb3guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTU1RjQ5N0ExNTFCODg4
MDAwQkI2N0RCIC8qIExlbmd0aEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRkI2
OThDQzE4MzNFRTBEMDAxNThBMzEgLyogTGluZUJyZWFrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODlCNUVBQTExMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDE4NDExNikK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDExMiArNTQsMTAgQEAgdm9pZCBDU1NQcm9wZXJ0eTo6d3JhcFZhbHVlSW5Db21tYVNlcGFy
YQogICAgIG1fdmFsdWUgPSBXVEY6Om1vdmUobGlzdCk7CiB9CiAKLWVudW0gTG9naWNhbEJveFNp
ZGUgeyBCZWZvcmVTaWRlLCBFbmRTaWRlLCBBZnRlclNpZGUsIFN0YXJ0U2lkZSB9OwotZW51bSBQ
aHlzaWNhbEJveFNpZGUgeyBUb3BTaWRlLCBSaWdodFNpZGUsIEJvdHRvbVNpZGUsIExlZnRTaWRl
IH07Ci0KIHN0YXRpYyBDU1NQcm9wZXJ0eUlEIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94
U2lkZSBsb2dpY2FsU2lkZSwgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5k
KQogewotICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKSB7Ci0gICAgICAgIGlmICh3cml0aW5nTW9k
ZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlKSB7Ci0gICAgICAgICAgICAvLyBUaGUgY29tbW9u
IGNhc2UuIFRoZSBsb2dpY2FsIGFuZCBwaHlzaWNhbCBib3ggc2lkZXMgbWF0Y2guCi0gICAgICAg
ICAgICAvLyBMZWZ0ID0gU3RhcnQsIFJpZ2h0ID0gRW5kLCBCZWZvcmUgPSBUb3AsIEFmdGVyID0g
Qm90dG9tCi0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtsb2dpY2Fs
U2lkZV07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAod3JpdGluZ01vZGUgPT0gQm90dG9tVG9U
b3BXcml0aW5nTW9kZSkgewotICAgICAgICAgICAgLy8gU3RhcnQgPSBMZWZ0LCBFbmQgPSBSaWdo
dCwgQmVmb3JlID0gQm90dG9tLCBBZnRlciA9IFRvcC4KLSAgICAgICAgICAgIHN3aXRjaCAobG9n
aWNhbFNpZGUpIHsKLSAgICAgICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgICAg
IHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICAgICAgICAgIGNh
c2UgRW5kU2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMo
KVtSaWdodFNpZGVdOwotICAgICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAg
ICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMo
KVtUb3BTaWRlXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICh3cml0
aW5nTW9kZSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlKSB7Ci0gICAgICAgICAgICAvLyBTdGFy
dCA9IFRvcCwgRW5kID0gQm90dG9tLCBCZWZvcmUgPSBMZWZ0LCBBZnRlciA9IFJpZ2h0LgotICAg
ICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewotICAgICAgICAgICAgY2FzZSBTdGFydFNp
ZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lk
ZV07Ci0gICAgICAgICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNo
b3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgICAgICAgICBjYXNlIEJlZm9y
ZVNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVm
dFNpZGVdOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gU3RhcnQgPSBUb3AsIEVuZCA9IEJvdHRvbSwgQmVmb3JlID0gUmlnaHQs
IEFmdGVyID0gTGVmdAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNh
c2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClb
VG9wU2lkZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBzaG9y
dGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6
Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVz
KClbTGVmdFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09
IFRvcFRvQm90dG9tV3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8gU3RhcnQgPSBSaWdodCwgRW5k
ID0gTGVmdCwgQmVmb3JlID0gVG9wLCBBZnRlciA9IEJvdHRvbQotICAgICAgICBzd2l0Y2ggKGxv
Z2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJu
IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKLSAgICAgICAgY2FzZSBFbmRTaWRl
OgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwot
ICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnBy
b3BlcnRpZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVy
biBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgaWYgKHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUpIHsKLSAgICAg
ICAgLy8gU3RhcnQgPSBSaWdodCwgRW5kID0gTGVmdCwgQmVmb3JlID0gQm90dG9tLCBBZnRlciA9
IFRvcAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRT
aWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRl
XTsKLSAgICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAg
ICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNp
ZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09IExlZnRUb1Jp
Z2h0V3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRvcCwg
QmVmb3JlID0gTGVmdCwgQWZ0ZXIgPSBSaWdodAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRl
KSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFu
ZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAg
ICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwotICAgICAgICBj
YXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMo
KVtMZWZ0U2lkZV07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRo
YW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8g
U3RhcnQgPSBCb3R0b20sIEVuZCA9IFRvcCwgQmVmb3JlID0gUmlnaHQsIEFmdGVyID0gTGVmdAot
ICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKLSAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAg
cmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgY2FzZSBFbmRT
aWRlOgotICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKLSAg
ICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygp
W1JpZ2h0U2lkZV07Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9w
ZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgIH0KKyAgICBQaHlzaWNhbEJveFNpZGUgcGh5c2ljYWxT
aWRlID0gbWFwTG9naWNhbFRvUGh5c2ljYWxCb3hTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9k
ZSwgZGlyZWN0aW9uKSwgbG9naWNhbFNpZGUpOworICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVy
dGllcygpW3BoeXNpY2FsU2lkZV07CiB9CiAKIGVudW0gTG9naWNhbEV4dGVudCB7IExvZ2ljYWxX
aWR0aCwgTG9naWNhbEhlaWdodCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5
bGVNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFw
LmNwcAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVN
YXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTgsMjEgKzYxOCwyMSBAQCB2b2lkIENTU1RvU3R5
bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlU2xpCiAgICAgTGVuZ3RoQm94IGJveDsKICAgICBRdWFk
KiBzbGljZXMgPSBib3JkZXJJbWFnZVNsaWNlLnNsaWNlcygpOwogICAgIGlmIChzbGljZXMtPnRv
cCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+
dG9wKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICBib3gudG9wKCkgPSBM
ZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgZWxz
ZQotICAgICAgICBib3gubV90b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0SW50VmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgICAgIGJveC50b3Ao
KSA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUiksIEZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQZXJjZW50
YWdlKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5n
ZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3Ro
KHNsaWNlcy0+Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgIGVsc2UK
LSAgICAgICAgYm94Lm1fYm90dG9tID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+Z2V0
RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAgICAg
ICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+Z2V0RmxvYXRW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKICAgICBpZiAoc2xp
Y2VzLT5sZWZ0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3Ro
KHNsaWNlcy0+bGVmdCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94
LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2Vu
dCk7CiAgICAgZWxzZQotICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgp
LT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAg
ICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0SW50VmFsdWUoQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CiAgICAgaWYgKHNsaWNlcy0+cmln
aHQoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX3JpZ2h0ID0gTGVuZ3RoKHNsaWNl
cy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIGJveC5yaWdo
dCgpID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7
CiAgICAgZWxzZQotICAgICAgICBib3gubV9yaWdodCA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCkt
PmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOworICAg
ICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwogICAgIGltYWdlLnNldEltYWdl
U2xpY2VzKGJveCk7CiAKICAgICAvLyBTZXQgb3VyIGZpbGwgbW9kZS4KQEAgLTY1NCwzMiArNjU0
LDMyIEBAIExlbmd0aEJveCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWEKICAgICBMZW5n
dGhCb3ggYm94OyAvLyBEZWZhdWx0cyB0byAnYXV0bycgc28gd2UgZG9uJ3QgaGF2ZSB0byBoYW5k
bGUgdGhhdCBleHBsaWNpdGx5IGJlbG93LgogICAgIFF1YWQqIHNsaWNlcyA9IGJvcmRlcldpZHRo
cy5nZXRRdWFkVmFsdWUoKTsKICAgICBpZiAoc2xpY2VzLT50b3AoKS0+aXNOdW1iZXIoKSkKLSAg
ICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldEludFZhbHVlKCksIFJl
bGF0aXZlKTsKKyAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldElu
dFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChzbGljZXMtPnRvcCgpLT5pc1BlcmNl
bnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldERv
dWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwor
ICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CiAgICAgZWxzZSBp
ZiAoc2xpY2VzLT50b3AoKS0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAgICAg
Ym94Lm1fdG9wID0gc2xpY2VzLT50b3AoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNp
b25EYXRhKTsKKyAgICAgICAgYm94LnRvcCgpID0gc2xpY2VzLT50b3AoKS0+Y29tcHV0ZUxlbmd0
aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIGlmIChzbGljZXMtPnJpZ2h0KCktPmlz
TnVtYmVyKCkpCi0gICAgICAgIGJveC5tX3JpZ2h0ID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+
Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChz
bGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChz
bGljZXMtPnJpZ2h0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9yaWdodCA9IExl
bmd0aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChz
bGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVS
Q0VOVEFHRSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+cmlnaHQoKS0+Z2V0VmFs
dWVJRCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAgICAgYm94Lm1fcmlnaHQgPSBzbGljZXMtPnJp
Z2h0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJv
eC5yaWdodCgpID0gc2xpY2VzLT5yaWdodCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29udmVy
c2lvbkRhdGEpOwogCiAgICAgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmlzTnVtYmVyKCkpCi0gICAg
ICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXRJbnRWYWx1ZSgp
LCBSZWxhdGl2ZSk7CisgICAgICAgIGJveC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJvdHRv
bSgpLT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5ib3R0
b20oKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGlj
ZXMtPmJvdHRvbSgpLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNF
TlRBR0UpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNlcy0+
Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFH
RSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmdldFZhbHVlSUQo
KSAhPSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IHNsaWNlcy0+Ym90dG9t
KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJveC5i
b3R0b20oKSA9IHNsaWNlcy0+Ym90dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJz
aW9uRGF0YSk7CiAKICAgICBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzTnVtYmVyKCkpCi0gICAgICAg
IGJveC5tX2xlZnQgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldEludFZhbHVlKCksIFJlbGF0
aXZlKTsKKyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0SW50
VmFsdWUoKSwgUmVsYXRpdmUpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc1BlcmNl
bnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0
RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7
CisgICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldERvdWJsZVZh
bHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwogICAgIGVs
c2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQotICAg
ICAgICBib3gubV9sZWZ0ID0gc2xpY2VzLT5sZWZ0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihj
b252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJveC5sZWZ0KCkgPSBzbGljZXMtPmxlZnQoKS0+Y29t
cHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIHJldHVybiBib3g7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5jcHAJKHJldmlzaW9uIDE4NDEx
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGVuZ3Ro
Qm94LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgTGVuZ3RoJiBMZW5ndGhCb3g6
OmxvZ2ljYWxMZWZ0KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAotewotICAgIHJldHVy
biBpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyBtX2xlZnQgOiBtX3RvcDsK
LX0KLQotY29uc3QgTGVuZ3RoJiBMZW5ndGhCb3g6OmxvZ2ljYWxSaWdodChXcml0aW5nTW9kZSB3
cml0aW5nTW9kZSkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
d3JpdGluZ01vZGUpID8gbV9yaWdodCA6IG1fYm90dG9tOwotfQotCi1jb25zdCBMZW5ndGgmIExl
bmd0aEJveDo6YmVmb3JlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAotewotICAgIHN3
aXRjaCAod3JpdGluZ01vZGUpIHsKLSAgICBjYXNlIFRvcFRvQm90dG9tV3JpdGluZ01vZGU6Ci0g
ICAgICAgIHJldHVybiBtX3RvcDsKLSAgICBjYXNlIEJvdHRvbVRvVG9wV3JpdGluZ01vZGU6Ci0g
ICAgICAgIHJldHVybiBtX2JvdHRvbTsKLSAgICBjYXNlIExlZnRUb1JpZ2h0V3JpdGluZ01vZGU6
Ci0gICAgICAgIHJldHVybiBtX2xlZnQ7Ci0gICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2Rl
OgotICAgICAgICByZXR1cm4gbV9yaWdodDsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIG1fdG9wOwotfQotCi1jb25zdCBMZW5ndGgmIExlbmd0aEJveDo6YWZ0
ZXIoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIGNvbnN0Ci17Ci0gICAgc3dpdGNoICh3cml0aW5n
TW9kZSkgewotICAgIGNhc2UgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZToKLSAgICAgICAgcmV0dXJu
IG1fYm90dG9tOwotICAgIGNhc2UgQm90dG9tVG9Ub3BXcml0aW5nTW9kZToKLSAgICAgICAgcmV0
dXJuIG1fdG9wOwotICAgIGNhc2UgTGVmdFRvUmlnaHRXcml0aW5nTW9kZToKLSAgICAgICAgcmV0
dXJuIG1fcmlnaHQ7Ci0gICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlOgotICAgICAgICBy
ZXR1cm4gbV9sZWZ0OwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gbV9ib3R0b207Ci19Ci0KLWNvbnN0IExlbmd0aCYgTGVuZ3RoQm94OjpzdGFydChXcml0aW5n
TW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Ci17Ci0gICAg
aWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSkKLSAgICAgICAgcmV0dXJu
IGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IG1fbGVmdCA6IG1fcmlnaHQ7Ci0g
ICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IG1fdG9wIDogbV9i
b3R0b207Ci19Ci0KLWNvbnN0IExlbmd0aCYgTGVuZ3RoQm94OjplbmQoV3JpdGluZ01vZGUgd3Jp
dGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAotewotICAgIGlmIChpc0hv
cml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkpCi0gICAgICAgIHJldHVybiBpc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBtX3JpZ2h0IDogbV9sZWZ0OwotICAgIHJldHVy
biBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBtX2JvdHRvbSA6IG1fdG9wOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGhCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGhCb3guaAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVu
Z3RoQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdo
dCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICAgIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAg
ICBDb3B5cmlnaHQgKGMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAK
ICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCkBAIC0yNSw3OCArMjUsNzIgQEAKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNs
dWRlICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgTGVuZ3RoQm94IHsK
ICAgICBMZW5ndGhCb3goKQorICAgICAgICA6IExlbmd0aEJveChBdXRvKQogICAgIHsKICAgICB9
CiAKICAgICBleHBsaWNpdCBMZW5ndGhCb3goTGVuZ3RoVHlwZSB0eXBlKQotICAgICAgICA6IG1f
bGVmdCh0eXBlKQotICAgICAgICAsIG1fcmlnaHQodHlwZSkKLSAgICAgICAgLCBtX3RvcCh0eXBl
KQotICAgICAgICAsIG1fYm90dG9tKHR5cGUpCisgICAgICAgIDogbV9zaWRlcyh7IHR5cGUsIHR5
cGUsIHR5cGUsIHR5cGUgfSkKICAgICB7CiAgICAgfQogCiAgICAgZXhwbGljaXQgTGVuZ3RoQm94
KGludCB2KQotICAgICAgICA6IG1fbGVmdChMZW5ndGgodiwgRml4ZWQpKQotICAgICAgICAsIG1f
cmlnaHQoTGVuZ3RoKHYsIEZpeGVkKSkKLSAgICAgICAgLCBtX3RvcChMZW5ndGgodiwgRml4ZWQp
KQotICAgICAgICAsIG1fYm90dG9tKExlbmd0aCh2LCBGaXhlZCkpCisgICAgICAgIDogbV9zaWRl
cyh7IExlbmd0aCh2LCBGaXhlZCksIExlbmd0aCh2LCBGaXhlZCksIExlbmd0aCh2LCBGaXhlZCks
IExlbmd0aCh2LCBGaXhlZCkgfSkKICAgICB7CiAgICAgfQogCiAgICAgTGVuZ3RoQm94KExlbmd0
aCB0b3AsIExlbmd0aCByaWdodCwgTGVuZ3RoIGJvdHRvbSwgTGVuZ3RoIGxlZnQpCi0gICAgICAg
IDogbV9sZWZ0KFdURjo6bW92ZShsZWZ0KSkKLSAgICAgICAgLCBtX3JpZ2h0KFdURjo6bW92ZShy
aWdodCkpCi0gICAgICAgICwgbV90b3AoV1RGOjptb3ZlKHRvcCkpCi0gICAgICAgICwgbV9ib3R0
b20oV1RGOjptb3ZlKGJvdHRvbSkpCisgICAgICAgIDogbV9zaWRlcyh7IFdURjo6bW92ZSh0b3Ap
LCBXVEY6Om1vdmUocmlnaHQpLCBXVEY6Om1vdmUoYm90dG9tKSwgV1RGOjptb3ZlKGxlZnQpIH0p
CiAgICAgewogICAgIH0KIAogICAgIExlbmd0aEJveChpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBi
b3R0b20sIGludCBsZWZ0KQotICAgICAgICA6IG1fbGVmdChMZW5ndGgobGVmdCwgRml4ZWQpKQot
ICAgICAgICAsIG1fcmlnaHQoTGVuZ3RoKHJpZ2h0LCBGaXhlZCkpCi0gICAgICAgICwgbV90b3Ao
TGVuZ3RoKHRvcCwgRml4ZWQpKQotICAgICAgICAsIG1fYm90dG9tKExlbmd0aChib3R0b20sIEZp
eGVkKSkKKyAgICAgICAgOiBtX3NpZGVzKHsgTGVuZ3RoKHRvcCwgRml4ZWQpLCBMZW5ndGgocmln
aHQsIEZpeGVkKSwgTGVuZ3RoKGJvdHRvbSwgRml4ZWQpLCBMZW5ndGgobGVmdCwgRml4ZWQpIH0p
CiAgICAgewogICAgIH0KIAotICAgIGNvbnN0IExlbmd0aCYgbGVmdCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGVmdDsgfQotICAgIGNvbnN0IExlbmd0aCYgcmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3Jp
Z2h0OyB9Ci0gICAgY29uc3QgTGVuZ3RoJiB0b3AoKSBjb25zdCB7IHJldHVybiBtX3RvcDsgfQot
ICAgIGNvbnN0IExlbmd0aCYgYm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b207IH0KKyAg
ICBMZW5ndGgmIGxlZnQoKSB7IHJldHVybiBtX3NpZGVzW0xlZnRTaWRlXTsgfQorICAgIExlbmd0
aCYgcmlnaHQoKSB7IHJldHVybiBtX3NpZGVzW1JpZ2h0U2lkZV07IH0KKyAgICBMZW5ndGgmIHRv
cCgpIHsgcmV0dXJuIG1fc2lkZXNbVG9wU2lkZV07IH0KKyAgICBMZW5ndGgmIGJvdHRvbSgpIHsg
cmV0dXJuIG1fc2lkZXNbQm90dG9tU2lkZV07IH0KIAotICAgIGNvbnN0IExlbmd0aCYgbG9naWNh
bExlZnQoV3JpdGluZ01vZGUpIGNvbnN0OwotICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbFJpZ2h0
KFdyaXRpbmdNb2RlKSBjb25zdDsKKyAgICBjb25zdCBMZW5ndGgmIGxlZnQoKSBjb25zdCB7IHJl
dHVybiBtX3NpZGVzW0xlZnRTaWRlXTsgfQorICAgIGNvbnN0IExlbmd0aCYgcmlnaHQoKSBjb25z
dCB7IHJldHVybiBtX3NpZGVzW1JpZ2h0U2lkZV07IH0KKyAgICBjb25zdCBMZW5ndGgmIHRvcCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2lkZXNbVG9wU2lkZV07IH0KKyAgICBjb25zdCBMZW5ndGgmIGJv
dHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXNbQm90dG9tU2lkZV07IH0KIAotICAgIGNvbnN0
IExlbmd0aCYgYmVmb3JlKFdyaXRpbmdNb2RlKSBjb25zdDsKLSAgICBjb25zdCBMZW5ndGgmIGFm
dGVyKFdyaXRpbmdNb2RlKSBjb25zdDsKLSAgICBjb25zdCBMZW5ndGgmIHN0YXJ0KFdyaXRpbmdN
b2RlLCBUZXh0RGlyZWN0aW9uKSBjb25zdDsKLSAgICBjb25zdCBMZW5ndGgmIGVuZChXcml0aW5n
TW9kZSwgVGV4dERpcmVjdGlvbikgY29uc3Q7CisgICAgY29uc3QgTGVuZ3RoJiBiZWZvcmUoV3Jp
dGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25z
dCB7IHJldHVybiBtX3NpZGVzW21hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZShtYWtlVGV4dEZs
b3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIEJlZm9yZVNpZGUpXTsgfQorICAgIGNvbnN0IExl
bmd0aCYgYWZ0ZXIoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0
aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBtX3NpZGVzW21hcExvZ2ljYWxUb1BoeXNpY2FsQm94
U2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIEFmdGVyU2lkZSldOyB9
CisgICAgY29uc3QgTGVuZ3RoJiBzdGFydChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERp
cmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXNbbWFwTG9naWNh
bFRvUGh5c2ljYWxCb3hTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwg
U3RhcnRTaWRlKV07IH0KKyAgICBjb25zdCBMZW5ndGgmIGVuZChXcml0aW5nTW9kZSB3cml0aW5n
TW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpIGNvbnN0IHsgcmV0dXJuIG1fc2lk
ZXNbbWFwTG9naWNhbFRvUGh5c2ljYWxCb3hTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwg
ZGlyZWN0aW9uKSwgRW5kU2lkZSldOyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVu
Z3RoQm94JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2xlZnQgPT0gb3Ro
ZXIubV9sZWZ0ICYmIG1fcmlnaHQgPT0gb3RoZXIubV9yaWdodCAmJiBtX3RvcCA9PSBvdGhlci5t
X3RvcCAmJiBtX2JvdHRvbSA9PSBvdGhlci5tX2JvdHRvbTsKKyAgICAgICAgcmV0dXJuIG1fc2lk
ZXMgPT0gb3RoZXIubV9zaWRlczsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
TGVuZ3RoQm94JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKKyAgICAgICAgcmV0dXJuIG1fc2lkZXMgIT0gb3RoZXIubV9zaWRlczsKICAgICB9
CiAKLSAgICBib29sIG5vblplcm8oKSBjb25zdAorICAgIGJvb2wgaXNaZXJvKCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiAhKG1fbGVmdC5pc1plcm8oKSAmJiBtX3JpZ2h0LmlzWmVybygp
ICYmIG1fdG9wLmlzWmVybygpICYmIG1fYm90dG9tLmlzWmVybygpKTsKKyAgICAgICAgZm9yIChh
dXRvIHNpZGUgOiBtX3NpZGVzKSB7CisgICAgICAgICAgICBpZiAoIXNpZGUuaXNaZXJvKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIExlbmd0aCBtX2xlZnQ7Ci0gICAgTGVuZ3RoIG1fcmlnaHQ7Ci0g
ICAgTGVuZ3RoIG1fdG9wOwotICAgIExlbmd0aCBtX2JvdHRvbTsKK3ByaXZhdGU6CisgICAgVmVj
dG9yPExlbmd0aCwgND4gbV9zaWRlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaAkocmV2aXNpb24gMTg0
MTE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0g
VGV4dERpcmVjdGlvbiB7IFJUTCwgTFRSIH07CitlbnVtIFRleHREaXJlY3Rpb24geyBMVFIsIFJU
TCB9OwogCiBlbnVtIFRleHRSZW5kZXJpbmdNb2RlIHsgQXV0b1RleHRSZW5kZXJpbmcsIE9wdGlt
aXplU3BlZWQsIE9wdGltaXplTGVnaWJpbGl0eSwgR2VvbWV0cmljUHJlY2lzaW9uIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvV3JpdGluZ01vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgJKHJldmlzaW9u
IDE4NDExNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvV3JpdGluZ01vZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTIs
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUs
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKQEAgLTM0LDI1ICszNSw5OCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBl
bnVtIFdyaXRpbmdNb2RlIHsKLSAgICBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlLCBSaWdodFRvTGVm
dFdyaXRpbmdNb2RlLCBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlLCBCb3R0b21Ub1RvcFdyaXRpbmdN
b2RlCisgICAgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSA9IDAsIC8vIGhvcml6b250YWwtdGIKKyAg
ICBCb3R0b21Ub1RvcFdyaXRpbmdNb2RlID0gMSwgLy8gaG9yaXpvbnRhbC1idAorICAgIExlZnRU
b1JpZ2h0V3JpdGluZ01vZGUgPSAyLCAvLyB2ZXJ0aWNhbC1scgorICAgIFJpZ2h0VG9MZWZ0V3Jp
dGluZ01vZGUgPSAzLCAvLyB2ZXJ0aWNhbC1ybAogfTsKIAorI2RlZmluZSBNQUtFX1RFWFRfRkxP
Vyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSAgKCh3cml0aW5nTW9kZSkgPDwgMSB8IChkaXJlY3Rp
b24pKQorCisvLyBEZWZpbmUgdGhlIHRleHQgZmxvdyBpbiB0ZXJtcyBvZiB0aGUgd3JpdGluZyBt
b2RlIGFuZCB0aGUgdGV4dCBkaXJlY3Rpb24uIFRoZSBmaXJzdAorLy8gcGFydCBpcyB0aGUgbGlu
ZSBncm93aW5nIGRpcmVjdGlvbiBhbmQgdGhlIHNlY29uZCBwYXJ0IGlzIHRoZSBibG9jayBncm93
aW5nIGRpcmVjdGlvbi4KK2VudW0gVGV4dEZsb3cgeworICAgIFRleHRGbG93RWFzdFNvdXRoID0g
TUFLRV9URVhUX0ZMT1coVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwgTFRSKSwKKyAgICBUZXh0Rmxv
d1dlc3RTb3V0aCA9IE1BS0VfVEVYVF9GTE9XKFRvcFRvQm90dG9tV3JpdGluZ01vZGUsIFJUTCks
CisgICAgVGV4dEZsb3dFYXN0Tm9ydGggPSBNQUtFX1RFWFRfRkxPVyhCb3R0b21Ub1RvcFdyaXRp
bmdNb2RlLCBMVFIpLAorICAgIFRleHRGbG93V2VzdE5vcnRoID0gTUFLRV9URVhUX0ZMT1coQm90
dG9tVG9Ub3BXcml0aW5nTW9kZSwgUlRMKSwKKyAgICBUZXh0Rmxvd1NvdXRoRWFzdCA9IE1BS0Vf
VEVYVF9GTE9XKExlZnRUb1JpZ2h0V3JpdGluZ01vZGUsIExUUiksCisgICAgVGV4dEZsb3dTb3V0
aFdlc3QgPSBNQUtFX1RFWFRfRkxPVyhMZWZ0VG9SaWdodFdyaXRpbmdNb2RlLCBSVEwpLAorICAg
IFRleHRGbG93Tm9ydGhFYXN0ID0gTUFLRV9URVhUX0ZMT1coUmlnaHRUb0xlZnRXcml0aW5nTW9k
ZSwgTFRSKSwKKyAgICBUZXh0Rmxvd05vcnRoV2VzdCA9IE1BS0VfVEVYVF9GTE9XKFJpZ2h0VG9M
ZWZ0V3JpdGluZ01vZGUsIFJUTCkKK307CisKK2lubGluZSBUZXh0RmxvdyBtYWtlVGV4dEZsb3co
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0Rmxvdz4oTUFLRV9URVhUX0ZMT1cod3JpdGluZ01vZGUs
IGRpcmVjdGlvbikpOworfQorCisjdW5kZWYgTUFLRV9URVhUX0ZMT1cKKworY29uc3QgdW5zaWdu
ZWQgVGV4dEZsb3dSZXZlcnNlZE1hc2sgPSAxOworY29uc3QgdW5zaWduZWQgVGV4dEZsb3dGbGlw
cGVkTWFzayA9IDI7Citjb25zdCB1bnNpZ25lZCBUZXh0Rmxvd1ZlcnRpY2FsTWFzayA9IDQ7CisK
K2lubGluZSBib29sIGlzVGV4dEZsb3dSZXZlcnNlZChUZXh0RmxvdyB0ZXh0ZmxvdykKK3sKKyAg
ICByZXR1cm4gdGV4dGZsb3cgJiBUZXh0Rmxvd1JldmVyc2VkTWFzazsKK30KKworaW5saW5lIGJv
b2wgaXNUZXh0Rmxvd0ZsaXBwZWQoVGV4dEZsb3cgdGV4dGZsb3cpCit7CisgICAgcmV0dXJuIHRl
eHRmbG93ICYgVGV4dEZsb3dGbGlwcGVkTWFzazsKK30KKworaW5saW5lIGJvb2wgaXNUZXh0Rmxv
d1ZlcnRpY2FsKFRleHRGbG93IHRleHRmbG93KQoreworICAgIHJldHVybiB0ZXh0ZmxvdyAmIFRl
eHRGbG93VmVydGljYWxNYXNrOworfQorCisvLyBMaW5lcyBoYXZlIHZlcnRpY2FsIG9yaWVudGF0
aW9uOyBtb2RlcyB2ZXJ0aWNhbC1sciBvciB2ZXJ0aWNhbC1ybC4KK2lubGluZSBib29sIGlzVmVy
dGljYWxXcml0aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkKK3sKKyAgICByZXR1cm4g
aXNUZXh0Rmxvd1ZlcnRpY2FsKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgTFRSKSk7Cit9CisK
Ky8vIEJsb2NrIHByb2dyZXNzaW9uIGluY3JlYXNlcyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9u
IHRvIG5vcm1hbDsgbW9kZXMgdmVydGljYWwtcmwgb3IgaG9yaXpvbnRhbC1idC4KK2lubGluZSBi
b29sIGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQor
eworICAgIHJldHVybiBpc1RleHRGbG93RmxpcHBlZChtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUs
IExUUikpOworfQorCiAvLyBMaW5lcyBoYXZlIGhvcml6b250YWwgb3JpZW50YXRpb247IG1vZGVz
IGhvcml6b250YWwtdGIgb3IgaG9yaXpvbnRhbC1idC4KIGlubGluZSBib29sIGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQogewotICAgIHJldHVybiB3cml0
aW5nTW9kZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlIHx8IHdyaXRpbmdNb2RlID09IEJvdHRv
bVRvVG9wV3JpdGluZ01vZGU7CisgICAgcmV0dXJuICFpc1ZlcnRpY2FsV3JpdGluZ01vZGUod3Jp
dGluZ01vZGUpOwogfQogCiAvLyBCb3R0b20gb2YgdGhlIGxpbmUgb2NjdXJzIGVhcmxpZXIgaW4g
dGhlIGJsb2NrOyBtb2RlcyB2ZXJ0aWNhbC1sciBvciBob3Jpem9udGFsLWJ0LgogaW5saW5lIGJv
b2wgaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkKIHsK
LSAgICByZXR1cm4gd3JpdGluZ01vZGUgPT0gTGVmdFRvUmlnaHRXcml0aW5nTW9kZSB8fCB3cml0
aW5nTW9kZSA9PSBCb3R0b21Ub1RvcFdyaXRpbmdNb2RlOworICAgIHJldHVybiBpc1ZlcnRpY2Fs
V3JpdGluZ01vZGUod3JpdGluZ01vZGUpICE9IGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKHdy
aXRpbmdNb2RlKTsKIH0KIAotLy8gQmxvY2sgcHJvZ3Jlc3Npb24gaW5jcmVhc2VzIGluIHRoZSBv
cHBvc2l0ZSBkaXJlY3Rpb24gdG8gbm9ybWFsOyBtb2RlcyB2ZXJ0aWNhbC1ybCBvciBob3Jpem9u
dGFsLWJ0LgotaW5saW5lIGJvb2wgaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoV3JpdGluZ01v
ZGUgd3JpdGluZ01vZGUpCitlbnVtIExvZ2ljYWxCb3hTaWRlIHsgQmVmb3JlU2lkZSwgRW5kU2lk
ZSwgQWZ0ZXJTaWRlLCBTdGFydFNpZGUgfTsKK2VudW0gUGh5c2ljYWxCb3hTaWRlIHsgVG9wU2lk
ZSwgUmlnaHRTaWRlLCBCb3R0b21TaWRlLCBMZWZ0U2lkZSB9OworCitpbmxpbmUgUGh5c2ljYWxC
b3hTaWRlIG1hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZShUZXh0RmxvdyB0ZXh0ZmxvdywgTG9n
aWNhbEJveFNpZGUgbG9naWNhbFNpZGUpCiB7Ci0gICAgcmV0dXJuIHdyaXRpbmdNb2RlID09IFJp
Z2h0VG9MZWZ0V3JpdGluZ01vZGUgfHwgd3JpdGluZ01vZGUgPT0gQm90dG9tVG9Ub3BXcml0aW5n
TW9kZTsKKyAgICBpbnQgcGh5c2ljYWxTaWRlID0gbG9naWNhbFNpZGU7CisgICAgYm9vbCBpc1N0
YXJ0RW5kU2lkZSA9IHBoeXNpY2FsU2lkZSAlIDIgPT0gMTsKKworICAgIC8vIFN3YXAgdGhlIGxl
ZnQvcmlnaHQgc2lkZSB3aXRoIHRoZSB0b3AvYm90dG9tIHNpZGUgaWYgdGV4dEZsb3cgaXMgdmVy
dGljYWwKKyAgICBpZiAoaXNUZXh0Rmxvd1ZlcnRpY2FsKHRleHRmbG93KSkgeworICAgICAgICBp
ZiAoaXNTdGFydEVuZFNpZGUpCisgICAgICAgICAgICBwaHlzaWNhbFNpZGUgPSAocGh5c2ljYWxT
aWRlICsgMSkgJSA0OworICAgICAgICBlbHNlCisgICAgICAgICAgICBwaHlzaWNhbFNpZGUgPSAo
cGh5c2ljYWxTaWRlICsgMykgJSA0OworICAgIH0KKworICAgIC8vIFN3YXAgdGhlIGxlZnQgYW5k
IHJpZ2h0IHNpZGVzIGlmIHRleHRGbG93IGlzIHJldmVyc2VkIGFuZCB0aGUgdG9wIGFuZCBib3R0
b20gc2lkZXMgaWYgdGV4dEZsb3cgaXMgZmxpcHBlZAorICAgIGlmICgoaXNTdGFydEVuZFNpZGUg
JiYgaXNUZXh0Rmxvd1JldmVyc2VkKHRleHRmbG93KSkgfHwgKCFpc1N0YXJ0RW5kU2lkZSAmJiBp
c1RleHRGbG93RmxpcHBlZCh0ZXh0ZmxvdykpKQorICAgICAgICBwaHlzaWNhbFNpZGUgPSAocGh5
c2ljYWxTaWRlICsgMikgJSA0OworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBoeXNpY2FsQm94
U2lkZT4ocGh5c2ljYWxTaWRlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZp
c2lvbiAxODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjEsMTAgKzkyMSwxMCBAQCB2b2lkIFJlbmRlclN0
eWxlOjpzZXRNYXNrSW1hZ2UoY29uc3QgVmVjCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDbGlwKExl
bmd0aCB0b3AsIExlbmd0aCByaWdodCwgTGVuZ3RoIGJvdHRvbSwgTGVuZ3RoIGxlZnQpCiB7CiAg
ICAgU3R5bGVWaXN1YWxEYXRhKiBkYXRhID0gdmlzdWFsLmFjY2VzcygpOwotICAgIGRhdGEtPmNs
aXAubV90b3AgPSB0b3A7Ci0gICAgZGF0YS0+Y2xpcC5tX3JpZ2h0ID0gcmlnaHQ7Ci0gICAgZGF0
YS0+Y2xpcC5tX2JvdHRvbSA9IGJvdHRvbTsKLSAgICBkYXRhLT5jbGlwLm1fbGVmdCA9IGxlZnQ7
CisgICAgZGF0YS0+Y2xpcC50b3AoKSA9IHRvcDsKKyAgICBkYXRhLT5jbGlwLnJpZ2h0KCkgPSBy
aWdodDsKKyAgICBkYXRhLT5jbGlwLmJvdHRvbSgpID0gYm90dG9tOworICAgIGRhdGEtPmNsaXAu
bGVmdCgpID0gbGVmdDsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6YWRkQ3Vyc29yKFBhc3NSZWZQ
dHI8U3R5bGVJbWFnZT4gaW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQpAQCAtMTMwOSwx
MCArMTMwOSwxMCBAQCBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBSZW5kCiAg
ICAgaWYgKCFub25lTGlzdEluaXRpYWxpemVkKSB7CiAgICAgICAgIFN0eWxlRGFzaGJvYXJkUmVn
aW9uIHJlZ2lvbjsKICAgICAgICAgcmVnaW9uLmxhYmVsID0gIiI7Ci0gICAgICAgIHJlZ2lvbi5v
ZmZzZXQubV90b3AgID0gTGVuZ3RoKCk7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubV9yaWdodCA9
IExlbmd0aCgpOwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fYm90dG9tID0gTGVuZ3RoKCk7Ci0g
ICAgICAgIHJlZ2lvbi5vZmZzZXQubV9sZWZ0ID0gTGVuZ3RoKCk7CisgICAgICAgIHJlZ2lvbi5v
ZmZzZXQudG9wKCkgID0gTGVuZ3RoKCk7CisgICAgICAgIHJlZ2lvbi5vZmZzZXQucmlnaHQoKSA9
IExlbmd0aCgpOworICAgICAgICByZWdpb24ub2Zmc2V0LmJvdHRvbSgpID0gTGVuZ3RoKCk7Cisg
ICAgICAgIHJlZ2lvbi5vZmZzZXQubGVmdCgpID0gTGVuZ3RoKCk7CiAgICAgICAgIHJlZ2lvbi50
eXBlID0gU3R5bGVEYXNoYm9hcmRSZWdpb246Ok5vbmU7CiAgICAgICAgIG5vbmVMaXN0LmFwcGVu
ZChyZWdpb24pOwogICAgICAgICBub25lTGlzdEluaXRpYWxpemVkID0gdHJ1ZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAx
ODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTMxLDEyICs1MzEsMTIgQEAgcHVibGljOgogICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOyB9CiAgICAgYm9vbCBpc0Zsb2F0aW5nKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJp
dGVkX2ZsYWdzLmlzRmxvYXRpbmcoKTsgfQotICAgIGJvb2wgaGFzTWFyZ2luKCkgY29uc3QgeyBy
ZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5ub25aZXJvKCk7IH0KKyAgICBib29sIGhhc01hcmdpbigp
IGNvbnN0IHsgcmV0dXJuICFzdXJyb3VuZC0+bWFyZ2luLmlzWmVybygpOyB9CiAgICAgYm9vbCBo
YXNCb3JkZXIoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmhhc0JvcmRlcigpOyB9
CiAgICAgYm9vbCBoYXNCb3JkZXJGaWxsKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRl
ci5oYXNGaWxsKCk7IH0KICAgICBib29sIGhhc0JvcmRlckRlY29yYXRpb24oKSBjb25zdCB7IHJl
dHVybiBoYXNCb3JkZXIoKSB8fCBoYXNCb3JkZXJGaWxsKCk7IH0KLSAgICBib29sIGhhc1BhZGRp
bmcoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy5ub25aZXJvKCk7IH0KLSAgICBi
b29sIGhhc09mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQubm9uWmVybygp
OyB9CisgICAgYm9vbCBoYXNQYWRkaW5nKCkgY29uc3QgeyByZXR1cm4gIXN1cnJvdW5kLT5wYWRk
aW5nLmlzWmVybygpOyB9CisgICAgYm9vbCBoYXNPZmZzZXQoKSBjb25zdCB7IHJldHVybiAhc3Vy
cm91bmQtPm9mZnNldC5pc1plcm8oKTsgfQogICAgIGJvb2wgaGFzTWFyZ2luQmVmb3JlUXVpcmso
KSBjb25zdCB7IHJldHVybiBtYXJnaW5CZWZvcmUoKS5oYXNRdWlyaygpOyB9CiAgICAgYm9vbCBo
YXNNYXJnaW5BZnRlclF1aXJrKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQWZ0ZXIoKS5oYXNRdWly
aygpOyB9CiAKQEAgLTU1OCw3ICs1NTgsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0Qm94RXh0ZW50
IGltYWdlT3V0c2V0cyhjb25zdCBOaW5lUGllY2VJbWFnZSYpIGNvbnN0OwogICAgIGJvb2wgaGFz
Qm9yZGVySW1hZ2VPdXRzZXRzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBib3JkZXJJ
bWFnZSgpLmhhc0ltYWdlKCkgJiYgYm9yZGVySW1hZ2UoKS5vdXRzZXQoKS5ub25aZXJvKCk7Cisg
ICAgICAgIHJldHVybiBib3JkZXJJbWFnZSgpLmhhc0ltYWdlKCkgJiYgIWJvcmRlckltYWdlKCku
b3V0c2V0KCkuaXNaZXJvKCk7CiAgICAgfQogICAgIExheW91dEJveEV4dGVudCBib3JkZXJJbWFn
ZU91dHNldHMoKSBjb25zdAogICAgIHsKQEAgLTU5NSw4ICs1OTUsOCBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgTGVuZ3RoJiBib3R0b20oKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LmJv
dHRvbSgpOyB9CiAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIHBvc2l0aW9uZWQgb2JqZWN0IGVkZ2Vz
IHRoYXQgdGFrZSBpbnRvIGFjY291bnQgd3JpdGluZyBtb2RlLgotICAgIGNvbnN0IExlbmd0aCYg
bG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LmxvZ2ljYWxMZWZ0
KHdyaXRpbmdNb2RlKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsUmlnaHQoKSBjb25z
dCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LmxvZ2ljYWxSaWdodCh3cml0aW5nTW9kZSgpKTsg
fQorICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+b2Zmc2V0LnN0YXJ0KHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBsb2dp
Y2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LmVuZCh3cml0aW5nTW9k
ZSgpKTsgfQogICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIHN1
cnJvdW5kLT5vZmZzZXQuYmVmb3JlKHdyaXRpbmdNb2RlKCkpOyB9CiAgICAgY29uc3QgTGVuZ3Ro
JiBsb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5hZnRlcih3
cml0aW5nTW9kZSgpKTsgfQogCkBAIC0xMjAwLDEwICsxMjAwLDEwIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFBvc2l0aW9uKEVQb3NpdGlvbiB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRQb3Np
dGlvbih2KTsgfQogICAgIHZvaWQgc2V0RmxvYXRpbmcoRUZsb2F0IHYpIHsgbm9uaW5oZXJpdGVk
X2ZsYWdzLnNldEZsb2F0aW5nKHYpOyB9CiAKLSAgICB2b2lkIHNldExlZnQoTGVuZ3RoIHYpIHsg
U0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0Lm1fbGVmdCwgV1RGOjptb3ZlKHYpKTsgfQotICAgIHZv
aWQgc2V0UmlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0Lm1fcmlnaHQs
IFdURjo6bW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldFRvcChMZW5ndGggdikgeyBTRVRfVkFSKHN1
cnJvdW5kLCBvZmZzZXQubV90b3AsIFdURjo6bW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldEJvdHRv
bShMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQubV9ib3R0b20sIFdURjo6bW92
ZSh2KSk7IH0KKyAgICB2b2lkIHNldExlZnQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwg
b2Zmc2V0LmxlZnQoKSwgV1RGOjptb3ZlKHYpKTsgfQorICAgIHZvaWQgc2V0UmlnaHQoTGVuZ3Ro
IHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0LnJpZ2h0KCksIFdURjo6bW92ZSh2KSk7IH0K
KyAgICB2b2lkIHNldFRvcChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQudG9w
KCksIFdURjo6bW92ZSh2KSk7IH0KKyAgICB2b2lkIHNldEJvdHRvbShMZW5ndGggdikgeyBTRVRf
VkFSKHN1cnJvdW5kLCBvZmZzZXQuYm90dG9tKCksIFdURjo6bW92ZSh2KSk7IH0KIAogICAgIHZv
aWQgc2V0V2lkdGgoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2JveCwgbV93aWR0aCwgV1RGOjptb3Zl
KHYpKTsgfQogICAgIHZvaWQgc2V0SGVpZ2h0KExlbmd0aCB2KSB7IFNFVF9WQVIobV9ib3gsIG1f
aGVpZ2h0LCBXVEY6Om1vdmUodikpOyB9CkBAIC0xMjM5LDEwICsxMjM5LDEwIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIFN0eWxlRGFzaGJvYXJkUmVnaW9uIHJlZ2lvbjsKICAgICAgICAgcmVn
aW9uLmxhYmVsID0gbGFiZWw7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubV90b3AgPSBXVEY6Om1v
dmUodCk7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubV9yaWdodCA9IFdURjo6bW92ZShyKTsKLSAg
ICAgICAgcmVnaW9uLm9mZnNldC5tX2JvdHRvbSA9IFdURjo6bW92ZShiKTsKLSAgICAgICAgcmVn
aW9uLm9mZnNldC5tX2xlZnQgPSBXVEY6Om1vdmUobCk7CisgICAgICAgIHJlZ2lvbi5vZmZzZXQu
dG9wKCkgPSBXVEY6Om1vdmUodCk7CisgICAgICAgIHJlZ2lvbi5vZmZzZXQucmlnaHQoKSA9IFdU
Rjo6bW92ZShyKTsKKyAgICAgICAgcmVnaW9uLm9mZnNldC5ib3R0b20oKSA9IFdURjo6bW92ZShi
KTsKKyAgICAgICAgcmVnaW9uLm9mZnNldC5sZWZ0KCkgPSBXVEY6Om1vdmUobCk7CiAgICAgICAg
IHJlZ2lvbi50eXBlID0gdHlwZTsKICAgICAgICAgaWYgKCFhcHBlbmQpCiAgICAgICAgICAgICBy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9kYXNoYm9hcmRSZWdpb25zLmNsZWFyKCk7
CkBAIC0xMzIzLDEwICsxMzIzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFZlcnRpY2FsQWxp
Z25MZW5ndGgoTGVuZ3RoIGxlbmd0aCkgeyBzZXRWZXJ0aWNhbEFsaWduKExFTkdUSCk7IFNFVF9W
QVIobV9ib3gsIG1fdmVydGljYWxBbGlnbiwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CiAKICAgICB2
b2lkIHNldEhhc0NsaXAoYm9vbCBiID0gdHJ1ZSkgeyBTRVRfVkFSKHZpc3VhbCwgaGFzQ2xpcCwg
Yik7IH0KLSAgICB2b2lkIHNldENsaXBMZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1
YWwsIGNsaXAubV9sZWZ0LCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldENsaXBS
aWdodChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLm1fcmlnaHQsIFdURjo6
bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0Q2xpcFRvcChMZW5ndGggbGVuZ3RoKSB7IFNF
VF9WQVIodmlzdWFsLCBjbGlwLm1fdG9wLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lk
IHNldENsaXBCb3R0b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5tX2Jv
dHRvbSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRDbGlwTGVmdChMZW5ndGgg
bGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLmxlZnQoKSwgV1RGOjptb3ZlKGxlbmd0aCkp
OyB9CisgICAgdm9pZCBzZXRDbGlwUmlnaHQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3Vh
bCwgY2xpcC5yaWdodCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldENsaXBU
b3AoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC50b3AoKSwgV1RGOjptb3Zl
KGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRDbGlwQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VU
X1ZBUih2aXN1YWwsIGNsaXAuYm90dG9tKCksIFdURjo6bW92ZShsZW5ndGgpKTsgfQogICAgIHZv
aWQgc2V0Q2xpcChMZW5ndGggdG9wLCBMZW5ndGggcmlnaHQsIExlbmd0aCBib3R0b20sIExlbmd0
aCBsZWZ0KTsKICAgICB2b2lkIHNldENsaXAoTGVuZ3RoQm94IGJveCkgeyBTRVRfVkFSKHZpc3Vh
bCwgY2xpcCwgV1RGOjptb3ZlKGJveCkpOyB9CiAKQEAgLTE0MzQsMTkgKzE0MzQsMTkgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0TGlzdFN0eWxlUG9zaXRpb24oRUxpc3RTdHlsZVBvc2l0aW9uIHYp
IHsgaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3Bvc2l0aW9uID0gdjsgfQogCiAgICAgdm9p
ZCByZXNldE1hcmdpbigpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLCBMZW5ndGhCb3goRml4
ZWQpKTsgfQotICAgIHZvaWQgc2V0TWFyZ2luVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihz
dXJyb3VuZCwgbWFyZ2luLm1fdG9wLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNl
dE1hcmdpbkJvdHRvbShMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5t
X2JvdHRvbSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5MZWZ0KExl
bmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLm1fbGVmdCwgV1RGOjptb3Zl
KGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5SaWdodChMZW5ndGggbGVuZ3RoKSB7IFNF
VF9WQVIoc3Vycm91bmQsIG1hcmdpbi5tX3JpZ2h0LCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAg
ICB2b2lkIHNldE1hcmdpblRvcChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1h
cmdpbi50b3AoKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5Cb3R0
b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4uYm90dG9tKCksIFdU
Rjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFyZ2luTGVmdChMZW5ndGggbGVuZ3Ro
KSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5sZWZ0KCksIFdURjo6bW92ZShsZW5ndGgpKTsg
fQorICAgIHZvaWQgc2V0TWFyZ2luUmlnaHQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJv
dW5kLCBtYXJnaW4ucmlnaHQoKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CiAgICAgdm9pZCBzZXRN
YXJnaW5TdGFydChMZW5ndGgpOwogICAgIHZvaWQgc2V0TWFyZ2luRW5kKExlbmd0aCk7CiAKICAg
ICB2b2lkIHJlc2V0UGFkZGluZygpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZywgTGVuZ3Ro
Qm94KEF1dG8pKTsgfQogICAgIHZvaWQgc2V0UGFkZGluZ0JveChMZW5ndGhCb3ggYm94KSB7IFNF
VF9WQVIoc3Vycm91bmQsIHBhZGRpbmcsIFdURjo6bW92ZShib3gpKTsgfQotICAgIHZvaWQgc2V0
UGFkZGluZ1RvcChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubV90
b3AsIFdURjo6bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0UGFkZGluZ0JvdHRvbShMZW5n
dGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubV9ib3R0b20sIFdURjo6bW92
ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0UGFkZGluZ0xlZnQoTGVuZ3RoIGxlbmd0aCkgeyBT
RVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLm1fbGVmdCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0g
ICAgdm9pZCBzZXRQYWRkaW5nUmlnaHQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5k
LCBwYWRkaW5nLm1fcmlnaHQsIFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0UGFk
ZGluZ1RvcChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcudG9wKCks
IFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0UGFkZGluZ0JvdHRvbShMZW5ndGgg
bGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcuYm90dG9tKCksIFdURjo6bW92ZShs
ZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0UGFkZGluZ0xlZnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRf
VkFSKHN1cnJvdW5kLCBwYWRkaW5nLmxlZnQoKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAg
dm9pZCBzZXRQYWRkaW5nUmlnaHQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBw
YWRkaW5nLnJpZ2h0KCksIFdURjo6bW92ZShsZW5ndGgpKTsgfQogCiAgICAgdm9pZCBzZXRDdXJz
b3IoRUN1cnNvciBjKSB7IGluaGVyaXRlZF9mbGFncy5fY3Vyc29yX3N0eWxlID0gYzsgfQogICAg
IHZvaWQgYWRkQ3Vyc29yKFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4sIGNvbnN0IEludFBvaW50JiBo
b3RTcG90ID0gSW50UG9pbnQoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252967</attachid>
            <date>2015-05-12 09:51:23 -0700</date>
            <delta_ts>2015-05-28 12:27:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143399-20150512095001.patch</filename>
            <type>text/plain</type>
            <size>40695</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDE1LTA1LTExICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29kZSBjbGVh
biB1cCBmb3IgZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtaXggb2YgV3JpdGluZ01v
ZGUgYW5kIFRleHREaXJlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MzM5OQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBlaWdodCBUZXh0Rmxvd3MuIEEgVGV4dEZsb3cgY29u
c2lzdHMgb2YgdHdvIGRpcmVjdGlvbnMuIFRoZQorICAgICAgICBmaXJzdCBvbmUgY29udHJvbHMg
dGhlIGxpbmUgZ3Jvd2luZyBkaXJlY3Rpb24gYW5kIHRoZSBzZWNvbmQgb25lIGNvbnRyb2xzIHRo
ZQorICAgICAgICBibG9jayBncm93aW5nIGRpcmVjdGlvbi4KKyAgICAgICAgCisgICAgICAgIFdl
IG5lZWQgdG8gZXh0cmFjdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGVhc2lseSBmcm9tIHRo
ZSBUZXh0RmxvdworCisgICAgICAgIC0tIGlzVGV4dEZsb3dSZXZlcnNlZCgpIC8vIFJUTAorICAg
ICAgICAtLSBpc1RleHRGbG93RmxpcHBlZCgpICAvLyB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIHRv
IG5vcm1hbAorICAgICAgICAtLSBpc1RleHRGbG93VmVydGljYWwoKSAvLyBUaGUgbGluZSBncm93
cyB2ZXJ0aWNhbGx5CisKKyAgICAgICAgTWl4aW5nIFdyaXRpbmdNb2RlIGFuZCBUZXh0RGlyZWN0
aW9uIGludG8gVGV4dEZsb3cgYW5kIGNob29zaW5nIHRoZWlyIHZhbHVlcworICAgICAgICBjYXJl
ZnVsbHkgdG8gZWFzZSBpbXBsZW1lbnRpbmcgdGhlIGFib3ZlIGZ1bmN0aW9ucyBjYW4gbWFrZSB0
aGluZ3MgY2xlYXJlci4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhCb3guY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
OgorICAgICAgICBSZW1vdmUgTGVuZ3RoQm94LmNwcCBzaW5jZSBhbGwgaXRzIGZ1bmN0aW9ucyBi
ZWNvbWUgc2luZ2xlIGxpbmUgZnVuY3Rpb25zCisgICAgICAgIGFuZCBjb3VsZCBiZSBtb3ZlZCB0
byB0aGUgaGVhZGVyIGZpbGUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aEJv
eC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpMZW5ndGhCb3gpOgorICAgICAgICAo
V2ViQ29yZTo6TGVuZ3RoQm94OjpsZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6
cmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94Ojp0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6TGVuZ3RoQm94Ojpib3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94Ojpv
cGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6Om9wZXJhdG9yIT0pOiBVc2UgYW4gYXJyYXkgb2Yg
TGVuZ3RocyBmb3IgdGhlIGZvdXIgc2lkZXMuCisgICAgICAgIEFuZCB1c2UgdGhlIGVudW0gUGh5
c2ljYWxCb3hTaWRlIHRvIGFjY2VzcyB0aGlzIGFycmF5LgorCisgICAgICAgIChXZWJDb3JlOjpM
ZW5ndGhCb3g6OmlzWmVybyk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6Om5vblplcm8p
OiBEZWxldGVkLgorICAgICAgICBVc2UgaXNaZXJvKCkgaW5zdGVhZCBvZiBub25aZXJvKCkgc2lu
Y2UgdGhlIGZvcm1lciBpcyBjbGVhcmVyLgorCisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6
OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6OmFmdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Okxlbmd0aEJveDo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94
OjplbmQpOgorICAgICAgICBVc2UgdGhlIG1hcExvZ2ljYWxUb1BoeXNpY2FsQm94U2lkZSgpIGdl
dCB0aGUgcGh5c2ljYWwgc2lkZSBvZiB0aGUgYm94IGJhc2VkCisgICAgICAgIG9uIHRoZSBkaXJl
Y3Rpb24gYW5kIHRoZSB3cml0aW5nIG1vZGUuIAorICAgICAgICAKKyAgICAgICAgKiBjc3MvQ1NT
UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0
eSk6IEluc3RlYWQgb2YgaGFuZGxpbmcgdGhlIGVpZ2h0IHBvc3NpYmxlCisgICAgICAgIGNhc2Vz
IG9mIHRoZSB0ZXh0IGZsb3dzIG9uZSBieSBvbmUsIHdlIGNhbiBhbmFseXplIHRoZSB0ZXh0IGZs
b3cgYW5kIHN3YXAgdGhlCisgICAgICAgIHNpZGUgcHJvcGVydHkgaW5kZXggdG8gZ2V0IHRoZSBw
cm9wZXIgdmFsdWUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEZsYWdz
Lmg6IFVzdWFsbHkgdGhlIGRlZmF1bHQgdmFsdWUgaXMgZGVmaW5lZCBmaXJzdC4KKyAgICAgICAg
QW5kIGlmIHRoZSB2YWx1ZSBpcyBpbnRlZ2VyIG9yIGVudW0sIGl0IHNob3VsZCBiZSBlcXVhbCB0
byB6ZXJvLiBTaW5jZSBMVFIKKyAgICAgICAgaXMgdGhlIGRlZmF1bHQgZm9yIHRoZSB0ZXh0IGRp
cmVjdGlvbiwgaXQgc2hvdWxkIGJlIGRlZmluZWQgYmVmb3JlIFJUTC4KKyAgICAgICAgCisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6bWFr
ZVRleHRGbG93KTogIERlZmluaW5nIGEgZnVuY3Rpb24gdG8gbWFrZSBhIFRleHRGbG93IG91dCBm
cm9tCisgICAgICAgIFdyaXRpbmdNb2RlIGFuZCBUZXh0RGlyZWN0aW9uLgorICAgICAgICAKKyAg
ICAgICAgKFdlYkNvcmU6OmlzVGV4dEZsb3dSZXZlcnNlZCk6IFJldHVybnMgdHJ1ZSBpZiB0aGUg
dGV4dCBkaXJlY3Rpb24gaXMgUlRMLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OmlzVGV4
dEZsb3dGbGlwcGVkKTogUmV0dXJucyB0cnVlIGlmIGJsb2NrIGdyb3dpbmcgZGlyZWN0aW9uCisg
ICAgICAgIGlzIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gbm9ybWFsLgorICAgICAgICAK
KyAgICAgICAgKFdlYkNvcmU6OmlzVGV4dEZsb3dWZXJ0aWNhbCk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1ZlcnRpY2FsV3JpdGluZ01vZGUpOiBSZXR1cm5zIHRydWUgaWYgVGhlIGxpbmUgZ3Jvd3Mg
dmVydGljYWxseS4KKworICAgICAgICAoV2ViQ29yZTo6aXNIb3Jpem9udGFsV3JpdGluZ01vZGUp
OiAKKyAgICAgICAgKFdlYkNvcmU6OmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUpOiBVc2UgdGhlIHRleHQgZmxv
dyBmdW5jdGlvbnMgaW5zdGVhZC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjptYXBMb2dp
Y2FsVG9QaHlzaWNhbEJveFNpZGUpOiBJdCBtYXBzIGEgbG9naWNhbCBzaWRlIG9mIGEgYm94Cisg
ICAgICAgIGdpdmVuIHRoZSBjdXJyZW50IHRleHQgZGlyZWN0aW9uIGFuZCB0aGUgd3JpdGluZyBt
b2RlLgorCisgICAgICAgICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VTbGljZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVF1YWQpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6c2V0Q2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6bm9uZURhc2hi
b2FyZFJlZ2lvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOiBV
c2UgdGhlIExlbmd0aEJveCBzaWRlcycgYWNjZXNzIG1ldGhvZHMgaW5zdGVhZAorICAgICAgICBv
ZiBkaXJlY3RseSB1c2luZyB0aGUgc2lkZXMnIGFycmF5LgorCiAyMDE1LTA1LTExICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNtYWxsIHRpZHl1cCBp
biBhbmltYXRpb25zIGNvZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxODQx
MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MjAzOCw3ICsyMDM4LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL0tpbGxS
aW5nTm9uZS5jcHAKICAgICBwbGF0Zm9ybS9MYW5ndWFnZS5jcHAKICAgICBwbGF0Zm9ybS9MZW5n
dGguY3BwCi0gICAgcGxhdGZvcm0vTGVuZ3RoQm94LmNwcAogICAgIHBsYXRmb3JtL0xpbmtIYXNo
LmNwcAogICAgIHBsYXRmb3JtL0xvZ2dpbmcuY3BwCiAgICAgcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvagkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODAwNiw3ICs4MDA2LDYg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXFVSTC5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMYW5ndWFnZS5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMZW5ndGguY3BwIiAvPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGVuZ3RoQm94LmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExpbmtIYXNoLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXExvY2FsaXplZFN0cmluZ3MuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTG9nZ2luZy5jcHAiIC8+CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
CShyZXZpc2lvbiAxODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTExMTMsOSArMTExMyw2IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMZW5ndGguY3BwIj4KICAgICAg
IDxGaWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExlbmd0aEJveC5jcHAiPgotICAgICAgPEZpbHRlcj5w
bGF0Zm9ybTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cTGlua0hhc2guY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm08L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4NDExNikKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNjA1LDcgKzYwNSw2IEBACiAJCTE0NDc2QUE4MTVEQzRCQjEwMDMwNURCMiAvKiBXcml0
aW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTQ0NzZBQTcxNURDNEJCMTAwMzA1REIyIC8qIFdyaXRpbmdNb2RlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ0OUUyNEMxMDdENEE4NDAwQjU3
OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDQ5RTI0QTEwN0Q0QTg0MDBCNTc5M0YgLyogSlNDYWxsYmFja0RhdGEu
aCAqLzsgfTsKIAkJMTQ0OUUyODcxMDdENERCNDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDlFMjg2
MTA3RDREQjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5jcHAgKi87IH07Ci0JCTE0NkNDMTE1
MTU2OTg4RTQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ2Q0MxMTMxNTY5ODhCRDAwMTA5RTM3IC8qIExlbmd0
aEJveC5jcHAgKi87IH07CiAJCTE0NzdFNzc2MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3N0U3
NzQwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgKi87IH07CiAJCTE0NzdFNzc3MEJG
NDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0NzdFNzc1MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDc5
RkFFRDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDc5RkFFNTEwOUFFMzc1MDBERUQ2NTUgLyog
UmVuZGVyUnVieS5jcHAgKi87IH07CkBAIC03NjgwLDcgKzc2NzksNiBAQAogCQkxNDQ3NkFBNzE1
REM0QkIxMDAzMDVEQjIgLyogV3JpdGluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV3JpdGluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0
OUUyNEExMDdENEE4NDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FsbGJhY2tEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0NDlFMjg2MTA3RDREQjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbGxiYWNrRGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0NkNDMTEzMTU2OTg4QkQwMDEwOUUzNyAv
KiBMZW5ndGhCb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVu
Z3RoQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ3N0U3NzQwQkY0MTM0
QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUGFnZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ3
N0U3NzUwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGFnZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTE0NzlGQUU1MTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclJ1YnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjE3NjAsNyArMjE3NTgsNiBAQAogCQkJCTE0MURDMDQ3MTY0ODM0OEYw
MDM3MUU1QSAvKiBMYXlvdXRVbml0LmggKi8sCiAJCQkJQkNFNjVCRTgwRUFDREYxNjAwN0U0NTMz
IC8qIExlbmd0aC5jcHAgKi8sCiAJCQkJQkNFNjVCRTkwRUFDREYxNjAwN0U0NTMzIC8qIExlbmd0
aC5oICovLAotCQkJCTE0NkNDMTEzMTU2OTg4QkQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwICov
LAogCQkJCUJDRkY2NDhGMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCAqLywKIAkJCQlC
Q0ZGNjQ5MDBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oICovLAogCQkJCUE3QUQyRjg1
MEVDODlEMDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5jcHAgKi8sCkBAIC0yOTMwNiw3ICsyOTMwMyw2
IEBACiAJCQkJNTEyREQ4RjQwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hpdmUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCMjQxN0IwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdl
YkFyY2hpdmVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0U2NUJFQTBFQUNERjE2MDA3RTQ1
MzMgLyogTGVuZ3RoLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTE0NkNDMTE1MTU2OTg4RTQwMDEw
OUUzNyAvKiBMZW5ndGhCb3guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTU1RjQ5N0ExNTFCODg4
MDAwQkI2N0RCIC8qIExlbmd0aEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRkI2
OThDQzE4MzNFRTBEMDAxNThBMzEgLyogTGluZUJyZWFrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODlCNUVBQTExMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDE4NDExNikK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDExMiArNTQsMTAgQEAgdm9pZCBDU1NQcm9wZXJ0eTo6d3JhcFZhbHVlSW5Db21tYVNlcGFy
YQogICAgIG1fdmFsdWUgPSBXVEY6Om1vdmUobGlzdCk7CiB9CiAKLWVudW0gTG9naWNhbEJveFNp
ZGUgeyBCZWZvcmVTaWRlLCBFbmRTaWRlLCBBZnRlclNpZGUsIFN0YXJ0U2lkZSB9OwotZW51bSBQ
aHlzaWNhbEJveFNpZGUgeyBUb3BTaWRlLCBSaWdodFNpZGUsIEJvdHRvbVNpZGUsIExlZnRTaWRl
IH07Ci0KIHN0YXRpYyBDU1NQcm9wZXJ0eUlEIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94
U2lkZSBsb2dpY2FsU2lkZSwgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5k
KQogewotICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKSB7Ci0gICAgICAgIGlmICh3cml0aW5nTW9k
ZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlKSB7Ci0gICAgICAgICAgICAvLyBUaGUgY29tbW9u
IGNhc2UuIFRoZSBsb2dpY2FsIGFuZCBwaHlzaWNhbCBib3ggc2lkZXMgbWF0Y2guCi0gICAgICAg
ICAgICAvLyBMZWZ0ID0gU3RhcnQsIFJpZ2h0ID0gRW5kLCBCZWZvcmUgPSBUb3AsIEFmdGVyID0g
Qm90dG9tCi0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtsb2dpY2Fs
U2lkZV07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAod3JpdGluZ01vZGUgPT0gQm90dG9tVG9U
b3BXcml0aW5nTW9kZSkgewotICAgICAgICAgICAgLy8gU3RhcnQgPSBMZWZ0LCBFbmQgPSBSaWdo
dCwgQmVmb3JlID0gQm90dG9tLCBBZnRlciA9IFRvcC4KLSAgICAgICAgICAgIHN3aXRjaCAobG9n
aWNhbFNpZGUpIHsKLSAgICAgICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgICAg
IHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICAgICAgICAgIGNh
c2UgRW5kU2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMo
KVtSaWdodFNpZGVdOwotICAgICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAg
ICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMo
KVtUb3BTaWRlXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICh3cml0
aW5nTW9kZSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlKSB7Ci0gICAgICAgICAgICAvLyBTdGFy
dCA9IFRvcCwgRW5kID0gQm90dG9tLCBCZWZvcmUgPSBMZWZ0LCBBZnRlciA9IFJpZ2h0LgotICAg
ICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewotICAgICAgICAgICAgY2FzZSBTdGFydFNp
ZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lk
ZV07Ci0gICAgICAgICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNo
b3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgICAgICAgICBjYXNlIEJlZm9y
ZVNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVm
dFNpZGVdOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gU3RhcnQgPSBUb3AsIEVuZCA9IEJvdHRvbSwgQmVmb3JlID0gUmlnaHQs
IEFmdGVyID0gTGVmdAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNh
c2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClb
VG9wU2lkZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBzaG9y
dGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6
Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVz
KClbTGVmdFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09
IFRvcFRvQm90dG9tV3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8gU3RhcnQgPSBSaWdodCwgRW5k
ID0gTGVmdCwgQmVmb3JlID0gVG9wLCBBZnRlciA9IEJvdHRvbQotICAgICAgICBzd2l0Y2ggKGxv
Z2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJu
IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKLSAgICAgICAgY2FzZSBFbmRTaWRl
OgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwot
ICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnBy
b3BlcnRpZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVy
biBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgaWYgKHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUpIHsKLSAgICAg
ICAgLy8gU3RhcnQgPSBSaWdodCwgRW5kID0gTGVmdCwgQmVmb3JlID0gQm90dG9tLCBBZnRlciA9
IFRvcAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgIGNhc2UgU3RhcnRT
aWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRl
XTsKLSAgICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAg
ICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNp
ZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdyaXRpbmdNb2RlID09IExlZnRUb1Jp
Z2h0V3JpdGluZ01vZGUpIHsKLSAgICAgICAgLy8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRvcCwg
QmVmb3JlID0gTGVmdCwgQWZ0ZXIgPSBSaWdodAotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRl
KSB7Ci0gICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFu
ZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAg
ICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwotICAgICAgICBj
YXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMo
KVtMZWZ0U2lkZV07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRo
YW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8g
U3RhcnQgPSBCb3R0b20sIEVuZCA9IFRvcCwgQmVmb3JlID0gUmlnaHQsIEFmdGVyID0gTGVmdAot
ICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKLSAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAg
cmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07Ci0gICAgY2FzZSBFbmRT
aWRlOgotICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKLSAg
ICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygp
W1JpZ2h0U2lkZV07Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9w
ZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgIH0KKyAgICBQaHlzaWNhbEJveFNpZGUgcGh5c2ljYWxT
aWRlID0gbWFwTG9naWNhbFRvUGh5c2ljYWxCb3hTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9k
ZSwgZGlyZWN0aW9uKSwgbG9naWNhbFNpZGUpOworICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVy
dGllcygpW3BoeXNpY2FsU2lkZV07CiB9CiAKIGVudW0gTG9naWNhbEV4dGVudCB7IExvZ2ljYWxX
aWR0aCwgTG9naWNhbEhlaWdodCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5
bGVNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFw
LmNwcAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVN
YXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTgsMjEgKzYxOCwyMSBAQCB2b2lkIENTU1RvU3R5
bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlU2xpCiAgICAgTGVuZ3RoQm94IGJveDsKICAgICBRdWFk
KiBzbGljZXMgPSBib3JkZXJJbWFnZVNsaWNlLnNsaWNlcygpOwogICAgIGlmIChzbGljZXMtPnRv
cCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+
dG9wKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICBib3gudG9wKCkgPSBM
ZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgZWxz
ZQotICAgICAgICBib3gubV90b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0SW50VmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgICAgIGJveC50b3Ao
KSA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUiksIEZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQZXJjZW50
YWdlKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5n
ZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3Ro
KHNsaWNlcy0+Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgIGVsc2UK
LSAgICAgICAgYm94Lm1fYm90dG9tID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+Z2V0
RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAgICAg
ICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+Z2V0RmxvYXRW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKICAgICBpZiAoc2xp
Y2VzLT5sZWZ0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3Ro
KHNsaWNlcy0+bGVmdCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94
LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2Vu
dCk7CiAgICAgZWxzZQotICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgp
LT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAg
ICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0SW50VmFsdWUoQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CiAgICAgaWYgKHNsaWNlcy0+cmln
aHQoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX3JpZ2h0ID0gTGVuZ3RoKHNsaWNl
cy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIGJveC5yaWdo
dCgpID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7
CiAgICAgZWxzZQotICAgICAgICBib3gubV9yaWdodCA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCkt
PmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOworICAg
ICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwogICAgIGltYWdlLnNldEltYWdl
U2xpY2VzKGJveCk7CiAKICAgICAvLyBTZXQgb3VyIGZpbGwgbW9kZS4KQEAgLTY1NCwzMiArNjU0
LDMyIEBAIExlbmd0aEJveCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWEKICAgICBMZW5n
dGhCb3ggYm94OyAvLyBEZWZhdWx0cyB0byAnYXV0bycgc28gd2UgZG9uJ3QgaGF2ZSB0byBoYW5k
bGUgdGhhdCBleHBsaWNpdGx5IGJlbG93LgogICAgIFF1YWQqIHNsaWNlcyA9IGJvcmRlcldpZHRo
cy5nZXRRdWFkVmFsdWUoKTsKICAgICBpZiAoc2xpY2VzLT50b3AoKS0+aXNOdW1iZXIoKSkKLSAg
ICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldEludFZhbHVlKCksIFJl
bGF0aXZlKTsKKyAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldElu
dFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChzbGljZXMtPnRvcCgpLT5pc1BlcmNl
bnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldERv
dWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwor
ICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CiAgICAgZWxzZSBp
ZiAoc2xpY2VzLT50b3AoKS0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAgICAg
Ym94Lm1fdG9wID0gc2xpY2VzLT50b3AoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNp
b25EYXRhKTsKKyAgICAgICAgYm94LnRvcCgpID0gc2xpY2VzLT50b3AoKS0+Y29tcHV0ZUxlbmd0
aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIGlmIChzbGljZXMtPnJpZ2h0KCktPmlz
TnVtYmVyKCkpCi0gICAgICAgIGJveC5tX3JpZ2h0ID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+
Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChz
bGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChz
bGljZXMtPnJpZ2h0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9yaWdodCA9IExl
bmd0aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChz
bGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVS
Q0VOVEFHRSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+cmlnaHQoKS0+Z2V0VmFs
dWVJRCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAgICAgYm94Lm1fcmlnaHQgPSBzbGljZXMtPnJp
Z2h0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJv
eC5yaWdodCgpID0gc2xpY2VzLT5yaWdodCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29udmVy
c2lvbkRhdGEpOwogCiAgICAgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmlzTnVtYmVyKCkpCi0gICAg
ICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXRJbnRWYWx1ZSgp
LCBSZWxhdGl2ZSk7CisgICAgICAgIGJveC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJvdHRv
bSgpLT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5ib3R0
b20oKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGlj
ZXMtPmJvdHRvbSgpLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNF
TlRBR0UpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNlcy0+
Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFH
RSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmdldFZhbHVlSUQo
KSAhPSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IHNsaWNlcy0+Ym90dG9t
KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJveC5i
b3R0b20oKSA9IHNsaWNlcy0+Ym90dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJz
aW9uRGF0YSk7CiAKICAgICBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzTnVtYmVyKCkpCi0gICAgICAg
IGJveC5tX2xlZnQgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldEludFZhbHVlKCksIFJlbGF0
aXZlKTsKKyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0SW50
VmFsdWUoKSwgUmVsYXRpdmUpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc1BlcmNl
bnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0
RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7
CisgICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldERvdWJsZVZh
bHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwogICAgIGVs
c2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQotICAg
ICAgICBib3gubV9sZWZ0ID0gc2xpY2VzLT5sZWZ0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihj
b252ZXJzaW9uRGF0YSk7CisgICAgICAgIGJveC5sZWZ0KCkgPSBzbGljZXMtPmxlZnQoKS0+Y29t
cHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIHJldHVybiBib3g7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5jcHAJKHJldmlzaW9uIDE4NDEx
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGVuZ3Ro
Qm94LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgTGVuZ3RoJiBMZW5ndGhCb3g6
OmxvZ2ljYWxMZWZ0KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAotewotICAgIHJldHVy
biBpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyBtX2xlZnQgOiBtX3RvcDsK
LX0KLQotY29uc3QgTGVuZ3RoJiBMZW5ndGhCb3g6OmxvZ2ljYWxSaWdodChXcml0aW5nTW9kZSB3
cml0aW5nTW9kZSkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
d3JpdGluZ01vZGUpID8gbV9yaWdodCA6IG1fYm90dG9tOwotfQotCi1jb25zdCBMZW5ndGgmIExl
bmd0aEJveDo6YmVmb3JlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAotewotICAgIHN3
aXRjaCAod3JpdGluZ01vZGUpIHsKLSAgICBjYXNlIFRvcFRvQm90dG9tV3JpdGluZ01vZGU6Ci0g
ICAgICAgIHJldHVybiBtX3RvcDsKLSAgICBjYXNlIEJvdHRvbVRvVG9wV3JpdGluZ01vZGU6Ci0g
ICAgICAgIHJldHVybiBtX2JvdHRvbTsKLSAgICBjYXNlIExlZnRUb1JpZ2h0V3JpdGluZ01vZGU6
Ci0gICAgICAgIHJldHVybiBtX2xlZnQ7Ci0gICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2Rl
OgotICAgICAgICByZXR1cm4gbV9yaWdodDsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIG1fdG9wOwotfQotCi1jb25zdCBMZW5ndGgmIExlbmd0aEJveDo6YWZ0
ZXIoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIGNvbnN0Ci17Ci0gICAgc3dpdGNoICh3cml0aW5n
TW9kZSkgewotICAgIGNhc2UgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZToKLSAgICAgICAgcmV0dXJu
IG1fYm90dG9tOwotICAgIGNhc2UgQm90dG9tVG9Ub3BXcml0aW5nTW9kZToKLSAgICAgICAgcmV0
dXJuIG1fdG9wOwotICAgIGNhc2UgTGVmdFRvUmlnaHRXcml0aW5nTW9kZToKLSAgICAgICAgcmV0
dXJuIG1fcmlnaHQ7Ci0gICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlOgotICAgICAgICBy
ZXR1cm4gbV9sZWZ0OwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gbV9ib3R0b207Ci19Ci0KLWNvbnN0IExlbmd0aCYgTGVuZ3RoQm94OjpzdGFydChXcml0aW5n
TW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Ci17Ci0gICAg
aWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSkKLSAgICAgICAgcmV0dXJu
IGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IG1fbGVmdCA6IG1fcmlnaHQ7Ci0g
ICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IG1fdG9wIDogbV9i
b3R0b207Ci19Ci0KLWNvbnN0IExlbmd0aCYgTGVuZ3RoQm94OjplbmQoV3JpdGluZ01vZGUgd3Jp
dGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAotewotICAgIGlmIChpc0hv
cml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkpCi0gICAgICAgIHJldHVybiBpc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBtX3JpZ2h0IDogbV9sZWZ0OwotICAgIHJldHVy
biBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBtX2JvdHRvbSA6IG1fdG9wOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGhCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGhCb3guaAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVu
Z3RoQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdo
dCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICAgIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAg
ICBDb3B5cmlnaHQgKGMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAK
ICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCkBAIC0yNSw3OCArMjUsNzIgQEAKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNs
dWRlICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgTGVuZ3RoQm94IHsK
ICAgICBMZW5ndGhCb3goKQorICAgICAgICA6IExlbmd0aEJveChBdXRvKQogICAgIHsKICAgICB9
CiAKICAgICBleHBsaWNpdCBMZW5ndGhCb3goTGVuZ3RoVHlwZSB0eXBlKQotICAgICAgICA6IG1f
bGVmdCh0eXBlKQotICAgICAgICAsIG1fcmlnaHQodHlwZSkKLSAgICAgICAgLCBtX3RvcCh0eXBl
KQotICAgICAgICAsIG1fYm90dG9tKHR5cGUpCisgICAgICAgIDogbV9zaWRlcyh7IExlbmd0aCh0
eXBlKSwgTGVuZ3RoKHR5cGUpLCBMZW5ndGgodHlwZSksIExlbmd0aCh0eXBlKSB9KQogICAgIHsK
ICAgICB9CiAKICAgICBleHBsaWNpdCBMZW5ndGhCb3goaW50IHYpCi0gICAgICAgIDogbV9sZWZ0
KExlbmd0aCh2LCBGaXhlZCkpCi0gICAgICAgICwgbV9yaWdodChMZW5ndGgodiwgRml4ZWQpKQot
ICAgICAgICAsIG1fdG9wKExlbmd0aCh2LCBGaXhlZCkpCi0gICAgICAgICwgbV9ib3R0b20oTGVu
Z3RoKHYsIEZpeGVkKSkKKyAgICAgICAgOiBtX3NpZGVzKHsgTGVuZ3RoKHYsIEZpeGVkKSwgTGVu
Z3RoKHYsIEZpeGVkKSwgTGVuZ3RoKHYsIEZpeGVkKSwgTGVuZ3RoKHYsIEZpeGVkKSB9KQogICAg
IHsKICAgICB9CiAKICAgICBMZW5ndGhCb3goTGVuZ3RoIHRvcCwgTGVuZ3RoIHJpZ2h0LCBMZW5n
dGggYm90dG9tLCBMZW5ndGggbGVmdCkKLSAgICAgICAgOiBtX2xlZnQoV1RGOjptb3ZlKGxlZnQp
KQotICAgICAgICAsIG1fcmlnaHQoV1RGOjptb3ZlKHJpZ2h0KSkKLSAgICAgICAgLCBtX3RvcChX
VEY6Om1vdmUodG9wKSkKLSAgICAgICAgLCBtX2JvdHRvbShXVEY6Om1vdmUoYm90dG9tKSkKKyAg
ICAgICAgOiBtX3NpZGVzKHsgV1RGOjptb3ZlKHRvcCksIFdURjo6bW92ZShyaWdodCksIFdURjo6
bW92ZShib3R0b20pLCBXVEY6Om1vdmUobGVmdCkgfSkKICAgICB7CiAgICAgfQogCiAgICAgTGVu
Z3RoQm94KGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSwgaW50IGxlZnQpCi0gICAgICAg
IDogbV9sZWZ0KExlbmd0aChsZWZ0LCBGaXhlZCkpCi0gICAgICAgICwgbV9yaWdodChMZW5ndGgo
cmlnaHQsIEZpeGVkKSkKLSAgICAgICAgLCBtX3RvcChMZW5ndGgodG9wLCBGaXhlZCkpCi0gICAg
ICAgICwgbV9ib3R0b20oTGVuZ3RoKGJvdHRvbSwgRml4ZWQpKQorICAgICAgICA6IG1fc2lkZXMo
eyBMZW5ndGgodG9wLCBGaXhlZCksIExlbmd0aChyaWdodCwgRml4ZWQpLCBMZW5ndGgoYm90dG9t
LCBGaXhlZCksIExlbmd0aChsZWZ0LCBGaXhlZCkgfSkKICAgICB7CiAgICAgfQogCi0gICAgY29u
c3QgTGVuZ3RoJiBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0OyB9Ci0gICAgY29uc3QgTGVu
Z3RoJiByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHQ7IH0KLSAgICBjb25zdCBMZW5ndGgm
IHRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBib3R0b20o
KSBjb25zdCB7IHJldHVybiBtX2JvdHRvbTsgfQorICAgIExlbmd0aCYgbGVmdCgpIHsgcmV0dXJu
IG1fc2lkZXNbTGVmdFNpZGVdOyB9CisgICAgTGVuZ3RoJiByaWdodCgpIHsgcmV0dXJuIG1fc2lk
ZXNbUmlnaHRTaWRlXTsgfQorICAgIExlbmd0aCYgdG9wKCkgeyByZXR1cm4gbV9zaWRlc1tUb3BT
aWRlXTsgfQorICAgIExlbmd0aCYgYm90dG9tKCkgeyByZXR1cm4gbV9zaWRlc1tCb3R0b21TaWRl
XTsgfQogCi0gICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTGVmdChXcml0aW5nTW9kZSkgY29uc3Q7
Ci0gICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsUmlnaHQoV3JpdGluZ01vZGUpIGNvbnN0OworICAg
IGNvbnN0IExlbmd0aCYgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXNbTGVmdFNpZGVdOyB9
CisgICAgY29uc3QgTGVuZ3RoJiByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXNbUmlnaHRT
aWRlXTsgfQorICAgIGNvbnN0IExlbmd0aCYgdG9wKCkgY29uc3QgeyByZXR1cm4gbV9zaWRlc1tU
b3BTaWRlXTsgfQorICAgIGNvbnN0IExlbmd0aCYgYm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9z
aWRlc1tCb3R0b21TaWRlXTsgfQogCi0gICAgY29uc3QgTGVuZ3RoJiBiZWZvcmUoV3JpdGluZ01v
ZGUpIGNvbnN0OwotICAgIGNvbnN0IExlbmd0aCYgYWZ0ZXIoV3JpdGluZ01vZGUpIGNvbnN0Owot
ICAgIGNvbnN0IExlbmd0aCYgc3RhcnQoV3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24pIGNvbnN0
OwotICAgIGNvbnN0IExlbmd0aCYgZW5kKFdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uKSBjb25z
dDsKKyAgICBjb25zdCBMZW5ndGgmIGJlZm9yZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXNbbWFwTG9n
aWNhbFRvUGh5c2ljYWxCb3hTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9u
KSwgQmVmb3JlU2lkZSldOyB9CisgICAgY29uc3QgTGVuZ3RoJiBhZnRlcihXcml0aW5nTW9kZSB3
cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpIGNvbnN0IHsgcmV0dXJu
IG1fc2lkZXNbbWFwTG9naWNhbFRvUGh5c2ljYWxCb3hTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5n
TW9kZSwgZGlyZWN0aW9uKSwgQWZ0ZXJTaWRlKV07IH0KKyAgICBjb25zdCBMZW5ndGgmIHN0YXJ0
KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUikg
Y29uc3QgeyByZXR1cm4gbV9zaWRlc1ttYXBMb2dpY2FsVG9QaHlzaWNhbEJveFNpZGUobWFrZVRl
eHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBTdGFydFNpZGUpXTsgfQorICAgIGNvbnN0
IExlbmd0aCYgZW5kKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiA9IExUUikgY29uc3QgeyByZXR1cm4gbV9zaWRlc1ttYXBMb2dpY2FsVG9QaHlzaWNhbEJv
eFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBFbmRTaWRlKV07IH0K
IAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5ndGhCb3gmIG90aGVyKSBjb25zdAogICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fbGVmdCA9PSBvdGhlci5tX2xlZnQgJiYgbV9yaWdodCA9PSBv
dGhlci5tX3JpZ2h0ICYmIG1fdG9wID09IG90aGVyLm1fdG9wICYmIG1fYm90dG9tID09IG90aGVy
Lm1fYm90dG9tOworICAgICAgICByZXR1cm4gbV9zaWRlcyA9PSBvdGhlci5tX3NpZGVzOwogICAg
IH0KIAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMZW5ndGhCb3gmIG90aGVyKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgICAgICByZXR1cm4g
bV9zaWRlcyAhPSBvdGhlci5tX3NpZGVzOwogICAgIH0KIAotICAgIGJvb2wgbm9uWmVybygpIGNv
bnN0CisgICAgYm9vbCBpc1plcm8oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICEobV9s
ZWZ0LmlzWmVybygpICYmIG1fcmlnaHQuaXNaZXJvKCkgJiYgbV90b3AuaXNaZXJvKCkgJiYgbV9i
b3R0b20uaXNaZXJvKCkpOworICAgICAgICBmb3IgKGF1dG8gc2lkZSA6IG1fc2lkZXMpIHsKKyAg
ICAgICAgICAgIGlmICghc2lkZS5pc1plcm8oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgTGVuZ3Ro
IG1fbGVmdDsKLSAgICBMZW5ndGggbV9yaWdodDsKLSAgICBMZW5ndGggbV90b3A7Ci0gICAgTGVu
Z3RoIG1fYm90dG9tOworcHJpdmF0ZToKKyAgICBWZWN0b3I8TGVuZ3RoLCA0PiBtX3NpZGVzOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0RmxhZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRGbGFncy5oCShyZXZpc2lvbiAxODQxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBUZXh0RGlyZWN0aW9uIHsgUlRMLCBMVFIg
fTsKK2VudW0gVGV4dERpcmVjdGlvbiB7IExUUiwgUlRMIH07CiAKIGVudW0gVGV4dFJlbmRlcmlu
Z01vZGUgeyBBdXRvVGV4dFJlbmRlcmluZywgT3B0aW1pemVTcGVlZCwgT3B0aW1pemVMZWdpYmls
aXR5LCBHZW9tZXRyaWNQcmVjaXNpb24gfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Xcml0aW5nTW9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvV3JpdGluZ01vZGUuaAkocmV2aXNpb24gMTg0MTE2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoYykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzQsMjUgKzM1
LDk4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gV3JpdGluZ01vZGUgewotICAgIFRv
cFRvQm90dG9tV3JpdGluZ01vZGUsIFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUsIExlZnRUb1JpZ2h0
V3JpdGluZ01vZGUsIEJvdHRvbVRvVG9wV3JpdGluZ01vZGUKKyAgICBUb3BUb0JvdHRvbVdyaXRp
bmdNb2RlID0gMCwgLy8gaG9yaXpvbnRhbC10YgorICAgIEJvdHRvbVRvVG9wV3JpdGluZ01vZGUg
PSAxLCAvLyBob3Jpem9udGFsLWJ0CisgICAgTGVmdFRvUmlnaHRXcml0aW5nTW9kZSA9IDIsIC8v
IHZlcnRpY2FsLWxyCisgICAgUmlnaHRUb0xlZnRXcml0aW5nTW9kZSA9IDMsIC8vIHZlcnRpY2Fs
LXJsCiB9OwogCisjZGVmaW5lIE1BS0VfVEVYVF9GTE9XKHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24p
ICAoKHdyaXRpbmdNb2RlKSA8PCAxIHwgKGRpcmVjdGlvbikpCisKKy8vIERlZmluZSB0aGUgdGV4
dCBmbG93IGluIHRlcm1zIG9mIHRoZSB3cml0aW5nIG1vZGUgYW5kIHRoZSB0ZXh0IGRpcmVjdGlv
bi4gVGhlIGZpcnN0CisvLyBwYXJ0IGlzIHRoZSBsaW5lIGdyb3dpbmcgZGlyZWN0aW9uIGFuZCB0
aGUgc2Vjb25kIHBhcnQgaXMgdGhlIGJsb2NrIGdyb3dpbmcgZGlyZWN0aW9uLgorZW51bSBUZXh0
RmxvdyB7CisgICAgVGV4dEZsb3dFYXN0U291dGggPSBNQUtFX1RFWFRfRkxPVyhUb3BUb0JvdHRv
bVdyaXRpbmdNb2RlLCBMVFIpLAorICAgIFRleHRGbG93V2VzdFNvdXRoID0gTUFLRV9URVhUX0ZM
T1coVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwgUlRMKSwKKyAgICBUZXh0Rmxvd0Vhc3ROb3J0aCA9
IE1BS0VfVEVYVF9GTE9XKEJvdHRvbVRvVG9wV3JpdGluZ01vZGUsIExUUiksCisgICAgVGV4dEZs
b3dXZXN0Tm9ydGggPSBNQUtFX1RFWFRfRkxPVyhCb3R0b21Ub1RvcFdyaXRpbmdNb2RlLCBSVEwp
LAorICAgIFRleHRGbG93U291dGhFYXN0ID0gTUFLRV9URVhUX0ZMT1coTGVmdFRvUmlnaHRXcml0
aW5nTW9kZSwgTFRSKSwKKyAgICBUZXh0Rmxvd1NvdXRoV2VzdCA9IE1BS0VfVEVYVF9GTE9XKExl
ZnRUb1JpZ2h0V3JpdGluZ01vZGUsIFJUTCksCisgICAgVGV4dEZsb3dOb3J0aEVhc3QgPSBNQUtF
X1RFWFRfRkxPVyhSaWdodFRvTGVmdFdyaXRpbmdNb2RlLCBMVFIpLAorICAgIFRleHRGbG93Tm9y
dGhXZXN0ID0gTUFLRV9URVhUX0ZMT1coUmlnaHRUb0xlZnRXcml0aW5nTW9kZSwgUlRMKQorfTsK
KworaW5saW5lIFRleHRGbG93IG1ha2VUZXh0RmxvdyhXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwg
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRG
bG93PihNQUtFX1RFWFRfRkxPVyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSk7Cit9CisKKyN1bmRl
ZiBNQUtFX1RFWFRfRkxPVworCitjb25zdCB1bnNpZ25lZCBUZXh0Rmxvd1JldmVyc2VkTWFzayA9
IDE7Citjb25zdCB1bnNpZ25lZCBUZXh0Rmxvd0ZsaXBwZWRNYXNrID0gMjsKK2NvbnN0IHVuc2ln
bmVkIFRleHRGbG93VmVydGljYWxNYXNrID0gNDsKKworaW5saW5lIGJvb2wgaXNUZXh0Rmxvd1Jl
dmVyc2VkKFRleHRGbG93IHRleHRmbG93KQoreworICAgIHJldHVybiB0ZXh0ZmxvdyAmIFRleHRG
bG93UmV2ZXJzZWRNYXNrOworfQorCitpbmxpbmUgYm9vbCBpc1RleHRGbG93RmxpcHBlZChUZXh0
RmxvdyB0ZXh0ZmxvdykKK3sKKyAgICByZXR1cm4gdGV4dGZsb3cgJiBUZXh0Rmxvd0ZsaXBwZWRN
YXNrOworfQorCitpbmxpbmUgYm9vbCBpc1RleHRGbG93VmVydGljYWwoVGV4dEZsb3cgdGV4dGZs
b3cpCit7CisgICAgcmV0dXJuIHRleHRmbG93ICYgVGV4dEZsb3dWZXJ0aWNhbE1hc2s7Cit9CisK
Ky8vIExpbmVzIGhhdmUgdmVydGljYWwgb3JpZW50YXRpb247IG1vZGVzIHZlcnRpY2FsLWxyIG9y
IHZlcnRpY2FsLXJsLgoraW5saW5lIGJvb2wgaXNWZXJ0aWNhbFdyaXRpbmdNb2RlKFdyaXRpbmdN
b2RlIHdyaXRpbmdNb2RlKQoreworICAgIHJldHVybiBpc1RleHRGbG93VmVydGljYWwobWFrZVRl
eHRGbG93KHdyaXRpbmdNb2RlLCBMVFIpKTsKK30KKworLy8gQmxvY2sgcHJvZ3Jlc3Npb24gaW5j
cmVhc2VzIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gbm9ybWFsOyBtb2RlcyB2ZXJ0aWNh
bC1ybCBvciBob3Jpem9udGFsLWJ0LgoraW5saW5lIGJvb2wgaXNGbGlwcGVkQmxvY2tzV3JpdGlu
Z01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCit7CisgICAgcmV0dXJuIGlzVGV4dEZsb3dG
bGlwcGVkKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgTFRSKSk7Cit9CisKIC8vIExpbmVzIGhh
dmUgaG9yaXpvbnRhbCBvcmllbnRhdGlvbjsgbW9kZXMgaG9yaXpvbnRhbC10YiBvciBob3Jpem9u
dGFsLWJ0LgogaW5saW5lIGJvb2wgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoV3JpdGluZ01vZGUg
d3JpdGluZ01vZGUpCiB7Ci0gICAgcmV0dXJuIHdyaXRpbmdNb2RlID09IFRvcFRvQm90dG9tV3Jp
dGluZ01vZGUgfHwgd3JpdGluZ01vZGUgPT0gQm90dG9tVG9Ub3BXcml0aW5nTW9kZTsKKyAgICBy
ZXR1cm4gIWlzVmVydGljYWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSk7CiB9CiAKIC8vIEJvdHRv
bSBvZiB0aGUgbGluZSBvY2N1cnMgZWFybGllciBpbiB0aGUgYmxvY2s7IG1vZGVzIHZlcnRpY2Fs
LWxyIG9yIGhvcml6b250YWwtYnQuCiBpbmxpbmUgYm9vbCBpc0ZsaXBwZWRMaW5lc1dyaXRpbmdN
b2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQogewotICAgIHJldHVybiB3cml0aW5nTW9kZSA9
PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlIHx8IHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3Jp
dGluZ01vZGU7CisgICAgcmV0dXJuIGlzVmVydGljYWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkg
IT0gaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUod3JpdGluZ01vZGUpOwogfQogCi0vLyBCbG9j
ayBwcm9ncmVzc2lvbiBpbmNyZWFzZXMgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiB0byBub3Jt
YWw7IG1vZGVzIHZlcnRpY2FsLXJsIG9yIGhvcml6b250YWwtYnQuCi1pbmxpbmUgYm9vbCBpc0Zs
aXBwZWRCbG9ja3NXcml0aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkKK2VudW0gTG9n
aWNhbEJveFNpZGUgeyBCZWZvcmVTaWRlLCBFbmRTaWRlLCBBZnRlclNpZGUsIFN0YXJ0U2lkZSB9
OworZW51bSBQaHlzaWNhbEJveFNpZGUgeyBUb3BTaWRlLCBSaWdodFNpZGUsIEJvdHRvbVNpZGUs
IExlZnRTaWRlIH07CisKK2lubGluZSBQaHlzaWNhbEJveFNpZGUgbWFwTG9naWNhbFRvUGh5c2lj
YWxCb3hTaWRlKFRleHRGbG93IHRleHRmbG93LCBMb2dpY2FsQm94U2lkZSBsb2dpY2FsU2lkZSkK
IHsKLSAgICByZXR1cm4gd3JpdGluZ01vZGUgPT0gUmlnaHRUb0xlZnRXcml0aW5nTW9kZSB8fCB3
cml0aW5nTW9kZSA9PSBCb3R0b21Ub1RvcFdyaXRpbmdNb2RlOworICAgIGludCBwaHlzaWNhbFNp
ZGUgPSBsb2dpY2FsU2lkZTsKKyAgICBib29sIGlzU3RhcnRFbmRTaWRlID0gcGh5c2ljYWxTaWRl
ICUgMiA9PSAxOworCisgICAgLy8gU3dhcCB0aGUgbGVmdC9yaWdodCBzaWRlIHdpdGggdGhlIHRv
cC9ib3R0b20gc2lkZSBpZiB0ZXh0RmxvdyBpcyB2ZXJ0aWNhbAorICAgIGlmIChpc1RleHRGbG93
VmVydGljYWwodGV4dGZsb3cpKSB7CisgICAgICAgIGlmIChpc1N0YXJ0RW5kU2lkZSkKKyAgICAg
ICAgICAgIHBoeXNpY2FsU2lkZSA9IChwaHlzaWNhbFNpZGUgKyAxKSAlIDQ7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHBoeXNpY2FsU2lkZSA9IChwaHlzaWNhbFNpZGUgKyAzKSAlIDQ7Cisg
ICAgfQorCisgICAgLy8gU3dhcCB0aGUgbGVmdCBhbmQgcmlnaHQgc2lkZXMgaWYgdGV4dEZsb3cg
aXMgcmV2ZXJzZWQgYW5kIHRoZSB0b3AgYW5kIGJvdHRvbSBzaWRlcyBpZiB0ZXh0RmxvdyBpcyBm
bGlwcGVkCisgICAgaWYgKChpc1N0YXJ0RW5kU2lkZSAmJiBpc1RleHRGbG93UmV2ZXJzZWQodGV4
dGZsb3cpKSB8fCAoIWlzU3RhcnRFbmRTaWRlICYmIGlzVGV4dEZsb3dGbGlwcGVkKHRleHRmbG93
KSkpCisgICAgICAgIHBoeXNpY2FsU2lkZSA9IChwaHlzaWNhbFNpZGUgKyAyKSAlIDQ7CisKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8UGh5c2ljYWxCb3hTaWRlPihwaHlzaWNhbFNpZGUpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDE4NDExNikKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkyMSwxMCArOTIxLDEwIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldE1hc2tJbWFnZShjb25zdCBW
ZWMKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENsaXAoTGVuZ3RoIHRvcCwgTGVuZ3RoIHJpZ2h0LCBM
ZW5ndGggYm90dG9tLCBMZW5ndGggbGVmdCkKIHsKICAgICBTdHlsZVZpc3VhbERhdGEqIGRhdGEg
PSB2aXN1YWwuYWNjZXNzKCk7Ci0gICAgZGF0YS0+Y2xpcC5tX3RvcCA9IHRvcDsKLSAgICBkYXRh
LT5jbGlwLm1fcmlnaHQgPSByaWdodDsKLSAgICBkYXRhLT5jbGlwLm1fYm90dG9tID0gYm90dG9t
OwotICAgIGRhdGEtPmNsaXAubV9sZWZ0ID0gbGVmdDsKKyAgICBkYXRhLT5jbGlwLnRvcCgpID0g
dG9wOworICAgIGRhdGEtPmNsaXAucmlnaHQoKSA9IHJpZ2h0OworICAgIGRhdGEtPmNsaXAuYm90
dG9tKCkgPSBib3R0b207CisgICAgZGF0YS0+Y2xpcC5sZWZ0KCkgPSBsZWZ0OwogfQogCiB2b2lk
IFJlbmRlclN0eWxlOjphZGRDdXJzb3IoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBpbWFnZSwgY29u
c3QgSW50UG9pbnQmIGhvdFNwb3QpCkBAIC0xMzA5LDEwICsxMzA5LDEwIEBAIGNvbnN0IFZlY3Rv
cjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIFJlbmQKICAgICBpZiAoIW5vbmVMaXN0SW5pdGlhbGl6
ZWQpIHsKICAgICAgICAgU3R5bGVEYXNoYm9hcmRSZWdpb24gcmVnaW9uOwogICAgICAgICByZWdp
b24ubGFiZWwgPSAiIjsKLSAgICAgICAgcmVnaW9uLm9mZnNldC5tX3RvcCAgPSBMZW5ndGgoKTsK
LSAgICAgICAgcmVnaW9uLm9mZnNldC5tX3JpZ2h0ID0gTGVuZ3RoKCk7Ci0gICAgICAgIHJlZ2lv
bi5vZmZzZXQubV9ib3R0b20gPSBMZW5ndGgoKTsKLSAgICAgICAgcmVnaW9uLm9mZnNldC5tX2xl
ZnQgPSBMZW5ndGgoKTsKKyAgICAgICAgcmVnaW9uLm9mZnNldC50b3AoKSAgPSBMZW5ndGgoKTsK
KyAgICAgICAgcmVnaW9uLm9mZnNldC5yaWdodCgpID0gTGVuZ3RoKCk7CisgICAgICAgIHJlZ2lv
bi5vZmZzZXQuYm90dG9tKCkgPSBMZW5ndGgoKTsKKyAgICAgICAgcmVnaW9uLm9mZnNldC5sZWZ0
KCkgPSBMZW5ndGgoKTsKICAgICAgICAgcmVnaW9uLnR5cGUgPSBTdHlsZURhc2hib2FyZFJlZ2lv
bjo6Tm9uZTsKICAgICAgICAgbm9uZUxpc3QuYXBwZW5kKHJlZ2lvbik7CiAgICAgICAgIG5vbmVM
aXN0SW5pdGlhbGl6ZWQgPSB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDE4NDExNikKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MzEsMTIg
KzUzMSwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlbmRlclN0eWxl
JiBvdGhlcikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlbmRlclN0eWxlJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICBib29sIGlzRmxv
YXRpbmcoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuaXNGbG9hdGluZygpOyB9
Ci0gICAgYm9vbCBoYXNNYXJnaW4oKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLm5v
blplcm8oKTsgfQorICAgIGJvb2wgaGFzTWFyZ2luKCkgY29uc3QgeyByZXR1cm4gIXN1cnJvdW5k
LT5tYXJnaW4uaXNaZXJvKCk7IH0KICAgICBib29sIGhhc0JvcmRlcigpIGNvbnN0IHsgcmV0dXJu
IHN1cnJvdW5kLT5ib3JkZXIuaGFzQm9yZGVyKCk7IH0KICAgICBib29sIGhhc0JvcmRlckZpbGwo
KSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmhhc0ZpbGwoKTsgfQogICAgIGJvb2wg
aGFzQm9yZGVyRGVjb3JhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGhhc0JvcmRlcigpIHx8IGhhc0Jv
cmRlckZpbGwoKTsgfQotICAgIGJvb2wgaGFzUGFkZGluZygpIGNvbnN0IHsgcmV0dXJuIHN1cnJv
dW5kLT5wYWRkaW5nLm5vblplcm8oKTsgfQotICAgIGJvb2wgaGFzT2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gc3Vycm91bmQtPm9mZnNldC5ub25aZXJvKCk7IH0KKyAgICBib29sIGhhc1BhZGRpbmco
KSBjb25zdCB7IHJldHVybiAhc3Vycm91bmQtPnBhZGRpbmcuaXNaZXJvKCk7IH0KKyAgICBib29s
IGhhc09mZnNldCgpIGNvbnN0IHsgcmV0dXJuICFzdXJyb3VuZC0+b2Zmc2V0LmlzWmVybygpOyB9
CiAgICAgYm9vbCBoYXNNYXJnaW5CZWZvcmVRdWlyaygpIGNvbnN0IHsgcmV0dXJuIG1hcmdpbkJl
Zm9yZSgpLmhhc1F1aXJrKCk7IH0KICAgICBib29sIGhhc01hcmdpbkFmdGVyUXVpcmsoKSBjb25z
dCB7IHJldHVybiBtYXJnaW5BZnRlcigpLmhhc1F1aXJrKCk7IH0KIApAQCAtNTU4LDcgKzU1OCw3
IEBAIHB1YmxpYzoKICAgICBMYXlvdXRCb3hFeHRlbnQgaW1hZ2VPdXRzZXRzKGNvbnN0IE5pbmVQ
aWVjZUltYWdlJikgY29uc3Q7CiAgICAgYm9vbCBoYXNCb3JkZXJJbWFnZU91dHNldHMoKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuIGJvcmRlckltYWdlKCkuaGFzSW1hZ2UoKSAmJiBib3Jk
ZXJJbWFnZSgpLm91dHNldCgpLm5vblplcm8oKTsKKyAgICAgICAgcmV0dXJuIGJvcmRlckltYWdl
KCkuaGFzSW1hZ2UoKSAmJiAhYm9yZGVySW1hZ2UoKS5vdXRzZXQoKS5pc1plcm8oKTsKICAgICB9
CiAgICAgTGF5b3V0Qm94RXh0ZW50IGJvcmRlckltYWdlT3V0c2V0cygpIGNvbnN0CiAgICAgewpA
QCAtNTk1LDggKzU5NSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBMZW5ndGgmIGJvdHRvbSgpIGNv
bnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuYm90dG9tKCk7IH0KIAogICAgIC8vIEFjY2Vz
c29ycyBmb3IgcG9zaXRpb25lZCBvYmplY3QgZWRnZXMgdGhhdCB0YWtlIGludG8gYWNjb3VudCB3
cml0aW5nIG1vZGUuCi0gICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0
dXJuIHN1cnJvdW5kLT5vZmZzZXQubG9naWNhbExlZnQod3JpdGluZ01vZGUoKSk7IH0KLSAgICBj
b25zdCBMZW5ndGgmIGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZz
ZXQubG9naWNhbFJpZ2h0KHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBsb2dp
Y2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuc3RhcnQod3JpdGluZ01v
ZGUoKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJu
IHN1cnJvdW5kLT5vZmZzZXQuZW5kKHdyaXRpbmdNb2RlKCkpOyB9CiAgICAgY29uc3QgTGVuZ3Ro
JiBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5iZWZvcmUod3Jp
dGluZ01vZGUoKSk7IH0KICAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxCb3R0b20oKSBjb25zdCB7
IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LmFmdGVyKHdyaXRpbmdNb2RlKCkpOyB9CiAKQEAgLTEy
MDAsMTAgKzEyMDAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UG9zaXRpb24oRVBvc2l0aW9u
IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldFBvc2l0aW9uKHYpOyB9CiAgICAgdm9pZCBzZXRG
bG9hdGluZyhFRmxvYXQgdikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0RmxvYXRpbmcodik7IH0K
IAotICAgIHZvaWQgc2V0TGVmdChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQu
bV9sZWZ0LCBXVEY6Om1vdmUodikpOyB9Ci0gICAgdm9pZCBzZXRSaWdodChMZW5ndGggdikgeyBT
RVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQubV9yaWdodCwgV1RGOjptb3ZlKHYpKTsgfQotICAgIHZv
aWQgc2V0VG9wKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5tX3RvcCwgV1RG
Ojptb3ZlKHYpKTsgfQotICAgIHZvaWQgc2V0Qm90dG9tKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vy
cm91bmQsIG9mZnNldC5tX2JvdHRvbSwgV1RGOjptb3ZlKHYpKTsgfQorICAgIHZvaWQgc2V0TGVm
dChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQubGVmdCgpLCBXVEY6Om1vdmUo
dikpOyB9CisgICAgdm9pZCBzZXRSaWdodChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBv
ZmZzZXQucmlnaHQoKSwgV1RGOjptb3ZlKHYpKTsgfQorICAgIHZvaWQgc2V0VG9wKExlbmd0aCB2
KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC50b3AoKSwgV1RGOjptb3ZlKHYpKTsgfQorICAg
IHZvaWQgc2V0Qm90dG9tKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5ib3R0
b20oKSwgV1RGOjptb3ZlKHYpKTsgfQogCiAgICAgdm9pZCBzZXRXaWR0aChMZW5ndGggdikgeyBT
RVRfVkFSKG1fYm94LCBtX3dpZHRoLCBXVEY6Om1vdmUodikpOyB9CiAgICAgdm9pZCBzZXRIZWln
aHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2JveCwgbV9oZWlnaHQsIFdURjo6bW92ZSh2KSk7IH0K
QEAgLTEyMzksMTAgKzEyMzksMTAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgU3R5bGVEYXNo
Ym9hcmRSZWdpb24gcmVnaW9uOwogICAgICAgICByZWdpb24ubGFiZWwgPSBsYWJlbDsKLSAgICAg
ICAgcmVnaW9uLm9mZnNldC5tX3RvcCA9IFdURjo6bW92ZSh0KTsKLSAgICAgICAgcmVnaW9uLm9m
ZnNldC5tX3JpZ2h0ID0gV1RGOjptb3ZlKHIpOwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fYm90
dG9tID0gV1RGOjptb3ZlKGIpOwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fbGVmdCA9IFdURjo6
bW92ZShsKTsKKyAgICAgICAgcmVnaW9uLm9mZnNldC50b3AoKSA9IFdURjo6bW92ZSh0KTsKKyAg
ICAgICAgcmVnaW9uLm9mZnNldC5yaWdodCgpID0gV1RGOjptb3ZlKHIpOworICAgICAgICByZWdp
b24ub2Zmc2V0LmJvdHRvbSgpID0gV1RGOjptb3ZlKGIpOworICAgICAgICByZWdpb24ub2Zmc2V0
LmxlZnQoKSA9IFdURjo6bW92ZShsKTsKICAgICAgICAgcmVnaW9uLnR5cGUgPSB0eXBlOwogICAg
ICAgICBpZiAoIWFwcGVuZCkKICAgICAgICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vz
cygpLT5tX2Rhc2hib2FyZFJlZ2lvbnMuY2xlYXIoKTsKQEAgLTEzMjMsMTAgKzEzMjMsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0VmVydGljYWxBbGlnbkxlbmd0aChMZW5ndGggbGVuZ3RoKSB7
IHNldFZlcnRpY2FsQWxpZ24oTEVOR1RIKTsgU0VUX1ZBUihtX2JveCwgbV92ZXJ0aWNhbEFsaWdu
LCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KIAogICAgIHZvaWQgc2V0SGFzQ2xpcChib29sIGIgPSB0
cnVlKSB7IFNFVF9WQVIodmlzdWFsLCBoYXNDbGlwLCBiKTsgfQotICAgIHZvaWQgc2V0Q2xpcExl
ZnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5tX2xlZnQsIFdURjo6bW92
ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0Q2xpcFJpZ2h0KExlbmd0aCBsZW5ndGgpIHsgU0VU
X1ZBUih2aXN1YWwsIGNsaXAubV9yaWdodCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9p
ZCBzZXRDbGlwVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAubV90b3As
IFdURjo6bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0Q2xpcEJvdHRvbShMZW5ndGggbGVu
Z3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLm1fYm90dG9tLCBXVEY6Om1vdmUobGVuZ3RoKSk7
IH0KKyAgICB2b2lkIHNldENsaXBMZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWws
IGNsaXAubGVmdCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldENsaXBSaWdo
dChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLnJpZ2h0KCksIFdURjo6bW92
ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0Q2xpcFRvcChMZW5ndGggbGVuZ3RoKSB7IFNFVF9W
QVIodmlzdWFsLCBjbGlwLnRvcCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNl
dENsaXBCb3R0b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5ib3R0b20o
KSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CiAgICAgdm9pZCBzZXRDbGlwKExlbmd0aCB0b3AsIExl
bmd0aCByaWdodCwgTGVuZ3RoIGJvdHRvbSwgTGVuZ3RoIGxlZnQpOwogICAgIHZvaWQgc2V0Q2xp
cChMZW5ndGhCb3ggYm94KSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLCBXVEY6Om1vdmUoYm94KSk7
IH0KIApAQCAtMTQzNCwxOSArMTQzNCwxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMaXN0U3R5
bGVQb3NpdGlvbihFTGlzdFN0eWxlUG9zaXRpb24gdikgeyBpbmhlcml0ZWRfZmxhZ3MuX2xpc3Rf
c3R5bGVfcG9zaXRpb24gPSB2OyB9CiAKICAgICB2b2lkIHJlc2V0TWFyZ2luKCkgeyBTRVRfVkFS
KHN1cnJvdW5kLCBtYXJnaW4sIExlbmd0aEJveChGaXhlZCkpOyB9Ci0gICAgdm9pZCBzZXRNYXJn
aW5Ub3AoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ubV90b3AsIFdU
Rjo6bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0TWFyZ2luQm90dG9tKExlbmd0aCBsZW5n
dGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLm1fYm90dG9tLCBXVEY6Om1vdmUobGVuZ3Ro
KSk7IH0KLSAgICB2b2lkIHNldE1hcmdpbkxlZnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1
cnJvdW5kLCBtYXJnaW4ubV9sZWZ0LCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNl
dE1hcmdpblJpZ2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLm1f
cmlnaHQsIFdURjo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFyZ2luVG9wKExlbmd0
aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLnRvcCgpLCBXVEY6Om1vdmUobGVu
Z3RoKSk7IH0KKyAgICB2b2lkIHNldE1hcmdpbkJvdHRvbShMZW5ndGggbGVuZ3RoKSB7IFNFVF9W
QVIoc3Vycm91bmQsIG1hcmdpbi5ib3R0b20oKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAg
dm9pZCBzZXRNYXJnaW5MZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFy
Z2luLmxlZnQoKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5SaWdo
dChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5yaWdodCgpLCBXVEY6
Om1vdmUobGVuZ3RoKSk7IH0KICAgICB2b2lkIHNldE1hcmdpblN0YXJ0KExlbmd0aCk7CiAgICAg
dm9pZCBzZXRNYXJnaW5FbmQoTGVuZ3RoKTsKIAogICAgIHZvaWQgcmVzZXRQYWRkaW5nKCkgeyBT
RVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLCBMZW5ndGhCb3goQXV0bykpOyB9CiAgICAgdm9pZCBz
ZXRQYWRkaW5nQm94KExlbmd0aEJveCBib3gpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZywg
V1RGOjptb3ZlKGJveCkpOyB9Ci0gICAgdm9pZCBzZXRQYWRkaW5nVG9wKExlbmd0aCBsZW5ndGgp
IHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5tX3RvcCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9
Ci0gICAgdm9pZCBzZXRQYWRkaW5nQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJy
b3VuZCwgcGFkZGluZy5tX2JvdHRvbSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBz
ZXRQYWRkaW5nTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcu
bV9sZWZ0LCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldFBhZGRpbmdSaWdodChM
ZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubV9yaWdodCwgV1RGOjpt
b3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQYWRkaW5nVG9wKExlbmd0aCBsZW5ndGgpIHsg
U0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy50b3AoKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Cisg
ICAgdm9pZCBzZXRQYWRkaW5nQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3Vu
ZCwgcGFkZGluZy5ib3R0b20oKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQ
YWRkaW5nTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubGVm
dCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdSaWdodChMZW5n
dGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcucmlnaHQoKSwgV1RGOjptb3Zl
KGxlbmd0aCkpOyB9CiAKICAgICB2b2lkIHNldEN1cnNvcihFQ3Vyc29yIGMpIHsgaW5oZXJpdGVk
X2ZsYWdzLl9jdXJzb3Jfc3R5bGUgPSBjOyB9CiAgICAgdm9pZCBhZGRDdXJzb3IoUGFzc1JlZlB0
cjxTdHlsZUltYWdlPiwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QgPSBJbnRQb2ludCgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253855</attachid>
            <date>2015-05-28 12:27:11 -0700</date>
            <delta_ts>2015-05-28 13:19:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143399-20150528122658.patch</filename>
            <type>text/plain</type>
            <size>25461</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDk1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDE1LTA1LTI4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29kZSBjbGVh
biB1cCBmb3IgZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtaXggb2YgV3JpdGluZ01v
ZGUgYW5kIFRleHREaXJlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MzM5OQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
ICAgICAgICAKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIGVpZ2h0IFRleHRGbG93cy4gQSBUZXh0
RmxvdyBjb25zaXN0cyBvZiB0d28gZGlyZWN0aW9ucy4KKyAgICAgICAgVGhlIGZpcnN0IG9uZSBj
b250cm9scyB0aGUgaW5saW5lIGdyb3dpbmcgZGlyZWN0aW9uIGFuZCB0aGUgc2Vjb25kIG9uZQor
ICAgICAgICBjb250cm9scyB0aGUgYmxvY2sgZ3Jvd2luZyBkaXJlY3Rpb24uIFdlIGFyZSBnb2lu
ZyB0byB1c2UgdGhlIGNhcmRpbmFsCisgICAgICAgIGRpcmVjdGlvbnMgdG8gZGVmaW5lIHRoZXNl
IGNvbWJpbmF0aW9ucy4KKworICAgICAgICBXZSBuZWVkIHRvIGV4dHJhY3QgdGhlIGZvbGxvd2lu
ZyBpbmZvcm1hdGlvbiBlYXNpbHkgZnJvbSB0aGUgVGV4dEZsb3cKKworICAgICAgICAtLSBpc1Rl
eHRGbG93UmV2ZXJzZWQoKSAvLyBSVEwKKyAgICAgICAgLS0gaXNUZXh0Rmxvd0ZsaXBwZWQoKSAg
Ly8gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiB0byBub3JtYWwKKyAgICAgICAgLS0gaXNUZXh0Rmxv
d1ZlcnRpY2FsKCkgLy8gVGhlIGxpbmUgZ3Jvd3MgdmVydGljYWxseQorICAgICAgICAKKyAgICAg
ICAgTWl4aW5nIFdyaXRpbmdNb2RlIGFuZCBUZXh0RGlyZWN0aW9uIGludG8gVGV4dEZsb3cgYW5k
IGNob29zaW5nIHRoZWlyIHZhbHVlcworICAgICAgICBjYXJlZnVsbHkgdG8gZWFzZSBpbXBsZW1l
bnRpbmcgdGhlIGFib3ZlIGZ1bmN0aW9ucyBjYW4gbWFrZSB0aGluZ3MgY2xlYXJlci4KKworICAg
ICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1NlbGVj
dGlvblJlY3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvVGV4dEZsYWdzLmg6CisgICAgICAgIChXZWJDb3JlOjppc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgZW51bSBUZXh0RGlyZWN0aW9uIGlzIG1vdmVk
IGZyb20gVGV4dEZsYWdzLmggdG8gV3JpdGluZ01vZGUuaC4gU28gaW5jbHVkZQorICAgICAgICBX
cml0aW5nTW9kZS5oIGluc3RlYWQgb2YgaW5jbHVkaW5nIFRleHRGbGFncy5oLgorICAgICAgICAK
KyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2
ZVRvUGh5c2ljYWxQcm9wZXJ0eSk6IEluc3RlYWQgb2YgaGFuZGxpbmcgdGhlIGVpZ2h0IHBvc3Np
YmxlCisgICAgICAgIGNhc2VzIG9mIHRoZSB0ZXh0IGZsb3dzIG9uZSBieSBvbmUsIHdlIGNhbiBt
YXAgZnJvbSBhIExvZ2ljYWxTaWRlIHRvIGEKKyAgICAgICAgUGh5c2ljYWxTaWRlIHVzaW5nIHRo
ZSBUZXh0RmxvdyB2YWx1ZS4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoQm94
Lmg6CisgICAgICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6OmJlZm9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpCb3hFeHRlbnQ6OmFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkJveEV4dGVudDo6c3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50OjplbmQpOgorICAgICAgICBVc2UgbWFw
TG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZSgpIHRvIGNvbnZlcnQgZnJvbSBhIExvZ2ljYWxTaWRl
IHRvIGEgUGh5c2ljYWxTaWRlLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1dy
aXRpbmdNb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjppc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKTog
VXN1YWxseSB0aGUgZGVmYXVsdCBlbnVtIGlzIGRlZmluZWQKKyAgICAgICAgZmlyc3QuIEFuZCB1
c3VhbGx5IHRoZSBkZWZhdWx0IHZhbHVlIGlzIGVxdWFsIHRvIHplcm8uIFNpbmNlIExUUiBpcyB0
aGUKKyAgICAgICAgZGVmYXVsdCBmb3IgdGhlIHRleHQgZGlyZWN0aW9uLCBpdCBzaG91bGQgYmUg
ZGVmaW5lZCBiZWZvcmUgUlRMLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VUZXh0
Rmxvdyk6IFJldHVybnMgYSBUZXh0RmxvdyBnaXZlbiBhIFdyaXRpbmdNb2RlIGFuZCBhCisgICAg
ICAgIFRleHREaXJlY3Rpb24uCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6aXNSZXZlcnNl
ZFRleHRGbG93KTogUmV0dXJucyB0cnVlIGlmIHRoZSB0ZXh0IGRpcmVjdGlvbiBpcyBSVEwuCisg
ICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6aXNGbGlwcGVkVGV4dEZsb3cpOgorICAgICAgICAo
V2ViQ29yZTo6aXNGbGlwcGVkV3JpdGluZ01vZGUpOiBSZXR1cm5zIHRydWUgaWYgdGhlIGJsb2Nr
IGdyb3dpbmcgZGlyZWN0aW9uCisgICAgICAgIGlzIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24g
b2Ygbm9ybWFsLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OmlzVmVydGljYWxUZXh0Rmxv
dyk6CisgICAgICAgIChXZWJDb3JlOjppc1ZlcnRpY2FsV3JpdGluZ01vZGUpOiBSZXR1cm5zIHRy
dWUgaWYgdGhlIGxpbmUgZ3Jvd3MgdmVydGljYWxseS4KKyAgICAgICAgICAgICAgIAorICAgICAg
ICAoV2ViQ29yZTo6aXNIb3Jpem9udGFsV3JpdGluZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
aXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSk6IFVzZSBpc1ZlcnRpY2FsV3JpdGluZ01vZGUoKSBh
bmQgCisgICAgICAgIGlzRmxpcHBlZFdyaXRpbmdNb2RlKCkgdG8gYW5zd2VyIHRoZXNlIHF1ZXN0
aW9ucy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjppc0hvcml6b250YWxQaHlzaWNhbFNp
ZGUpOiAKKyAgICAgICAgKFdlYkNvcmU6Om1pcnJvclBoeXNpY2FsU2lkZSk6IHRvcCA8LT4gYm90
dG9tIGFuZCBsZWZ0IDwtPiByaWdodCBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6cm90
YXRlUGh5c2ljYWxTaWRlKTogdG9wIDwtPiBsZWZ0IGFuZCByaWdodCA8LT4gYm90dG9tIGNvbnZl
cnNpb24uCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6bWFwTG9naWNhbFNpZGVUb1BoeXNp
Y2FsU2lkZSk6IE1hcHMgYSBMb2dpY2FsU2lkZSB0byBhIFBoeXNpY2FsU2lkZQorICAgICAgICB1
c2luZyBlaXRoZXIgdGhlIFRleHRGbG93IG9yIHRoZSBXcml0aW5nTW9kZS4KKyAgICAgICAgCisg
ICAgICAgIChXZWJDb3JlOjppc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSk6IERlbGV0ZWQuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0Ojpjb2xsZWN0TGF5ZXJGcmFnbWVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmNvbHVtblRyYW5zbGF0aW9uRm9y
T2Zmc2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBoeXNpY2FsUmVjdFRvTG9naWNhbCk6CisgICAgICAgIChXZWJDb3JlOjpwaHlz
aWNhbFBvaW50VG9Mb2dpY2FsKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaDoKKyAgICAgICAgUmVuYW1lIGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgdG8gYmUg
aXNGbGlwcGVkV3JpdGluZ01vZGUoKSBzbyB3ZSBjYW4KKyAgICAgICAgYmUgY29uc2lzdGVudCB3
aXRoIG90aGVyIFdyaXRpbmdNb2RlIHF1ZXJ5IGZ1bmN0aW9ucy4KKwogMjAxNS0wNS0yOCAgTWF0
dCBSYWpjYSAgPG1yYWpjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEVOQUJMRV9NRURJQV9T
RVNTSU9OIGZlYXR1cmUgZmxhZyAod2hpY2ggaXMgb2ZmIGJ5IGRlZmF1bHQpLgpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
aAkocmV2aXNpb24gMTg0OTAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMCArMzUsMTAgQEAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5j
bHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOb3RpZmlj
YXRpb25DbGllbnQuaCIKLSNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlICJUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSAiV3JpdGluZ01v
ZGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJv
cGVydHkuY3BwCShyZXZpc2lvbiAxODQ5MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJv
cGVydHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMDcgKzU2LDcgQEAgdm9pZCBDU1NQcm9w
ZXJ0eTo6d3JhcFZhbHVlSW5Db21tYVNlcGFyYQogCiBzdGF0aWMgQ1NTUHJvcGVydHlJRCByZXNv
bHZlVG9QaHlzaWNhbFByb3BlcnR5KFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGUgbG9naWNhbFNpZGUsIGNvbnN0IFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKIHsKLSAgICBpZiAoZGlyZWN0aW9uID09IExUUikg
ewotICAgICAgICBpZiAod3JpdGluZ01vZGUgPT0gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSkgewot
ICAgICAgICAgICAgLy8gVGhlIGNvbW1vbiBjYXNlLiBUaGUgbG9naWNhbCBhbmQgcGh5c2ljYWwg
Ym94IHNpZGVzIG1hdGNoLgotICAgICAgICAgICAgLy8gTGVmdCA9IFN0YXJ0LCBSaWdodCA9IEVu
ZCwgQmVmb3JlID0gVG9wLCBBZnRlciA9IEJvdHRvbQotICAgICAgICAgICAgcmV0dXJuIHNob3J0
aGFuZC5wcm9wZXJ0aWVzKClbbG9naWNhbFNpZGVdOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUpIHsKLSAgICAgICAgICAgIC8v
IFN0YXJ0ID0gTGVmdCwgRW5kID0gUmlnaHQsIEJlZm9yZSA9IEJvdHRvbSwgQWZ0ZXIgPSBUb3Au
Ci0gICAgICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgICAgICBjYXNlIFN0
YXJ0U2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtM
ZWZ0U2lkZV07Ci0gICAgICAgICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKLSAgICAgICAgICAgIGNhc2Ug
QmVmb3JlU2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMo
KVtCb3R0b21TaWRlXTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAod3JpdGluZ01vZGUgPT0gTGVmdFRvUmlnaHRXcml0aW5nTW9k
ZSkgewotICAgICAgICAgICAgLy8gU3RhcnQgPSBUb3AsIEVuZCA9IEJvdHRvbSwgQmVmb3JlID0g
TGVmdCwgQWZ0ZXIgPSBSaWdodC4KLSAgICAgICAgICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsK
LSAgICAgICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgICAgIHJldHVybiBzaG9y
dGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwotICAgICAgICAgICAgY2FzZSBFbmRTaWRlOgot
ICAgICAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVd
OwotICAgICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgICAgIHJldHVybiBz
aG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFN0YXJ0ID0gVG9wLCBFbmQg
PSBCb3R0b20sIEJlZm9yZSA9IFJpZ2h0LCBBZnRlciA9IExlZnQKLSAgICAgICAgc3dpdGNoIChs
b2dpY2FsU2lkZSkgewotICAgICAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgICAgIHJldHVy
biBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwotICAgICAgICBjYXNlIEVuZFNpZGU6
Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsK
LSAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIGlmICh3cml0aW5nTW9kZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlKSB7Ci0gICAg
ICAgIC8vIFN0YXJ0ID0gUmlnaHQsIEVuZCA9IExlZnQsIEJlZm9yZSA9IFRvcCwgQWZ0ZXIgPSBC
b3R0b20KLSAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewotICAgICAgICBjYXNlIFN0YXJ0
U2lkZToKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1JpZ2h0U2lk
ZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQu
cHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAg
ICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07Ci0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21T
aWRlXTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICh3cml0aW5nTW9kZSA9PSBCb3R0b21U
b1RvcFdyaXRpbmdNb2RlKSB7Ci0gICAgICAgIC8vIFN0YXJ0ID0gUmlnaHQsIEVuZCA9IExlZnQs
IEJlZm9yZSA9IEJvdHRvbSwgQWZ0ZXIgPSBUb3AKLSAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lk
ZSkgewotICAgICAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhh
bmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAg
ICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICAgICAg
Y2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVz
KClbQm90dG9tU2lkZV07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlm
ICh3cml0aW5nTW9kZSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlKSB7Ci0gICAgICAgIC8vIFN0
YXJ0ID0gQm90dG9tLCBFbmQgPSBUb3AsIEJlZm9yZSA9IExlZnQsIEFmdGVyID0gUmlnaHQKLSAg
ICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewotICAgICAgICBjYXNlIFN0YXJ0U2lkZToKLSAg
ICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAg
ICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgcmV0
dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIC8vIFN0YXJ0ID0gQm90dG9tLCBFbmQgPSBUb3AsIEJlZm9y
ZSA9IFJpZ2h0LCBBZnRlciA9IExlZnQKLSAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAg
Y2FzZSBTdGFydFNpZGU6Ci0gICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0Jv
dHRvbVNpZGVdOwotICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbVG9wU2lkZV07Ci0gICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICByZXR1
cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICB9CisgICAg
cmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbbWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lk
ZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIGxvZ2ljYWxTaWRlKV07CiB9
CiAKIGVudW0gTG9naWNhbEV4dGVudCB7IExvZ2ljYWxXaWR0aCwgTG9naWNhbEhlaWdodCB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmgJKHJldmlzaW9uIDE4NDkwMykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MSw1OCArNjEsNDIgQEAgcHVibGljOgogCiAgICAgVCYgYmVmb3JlKFdyaXRpbmdNb2RlIHdyaXRp
bmdNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdy
aXRpbmdNb2RlKSA/Ci0gICAgICAgICAgICAoaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUod3Jp
dGluZ01vZGUpID8gYm90dG9tKCkgOiB0b3AoKSkgOgotICAgICAgICAgICAgKGlzRmxpcHBlZEJs
b2Nrc1dyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSA/IHJpZ2h0KCkgOiBsZWZ0KCkpOworICAgICAg
ICByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZSh3cml0aW5nTW9kZSwgQmVm
b3JlU2lkZSkpOwogICAgIH0KIAogICAgIFQmIGFmdGVyKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2Rl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdN
b2RlKSA/Ci0gICAgICAgICAgICAoaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUod3JpdGluZ01v
ZGUpID8gdG9wKCkgOiBib3R0b20oKSkgOgotICAgICAgICAgICAgKGlzRmxpcHBlZEJsb2Nrc1dy
aXRpbmdNb2RlKHdyaXRpbmdNb2RlKSA/IGxlZnQoKSA6IHJpZ2h0KCkpOworICAgICAgICByZXR1
cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZSh3cml0aW5nTW9kZSwgQWZ0ZXJTaWRl
KSk7CiAgICAgfQogCiAgICAgVCYgc3RhcnQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSA/Ci0gICAgICAgICAgICAoaXNMZWZ0VG9SaWdo
dERpcmVjdGlvbihkaXJlY3Rpb24pID8gbGVmdCgpIDogcmlnaHQoKSkgOgotICAgICAgICAgICAg
KGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IHRvcCgpIDogYm90dG9tKCkpOwor
ICAgICAgICByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShtYWtlVGV4dEZs
b3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIFN0YXJ0U2lkZSkpOwogICAgIH0KIAogICAgIFQm
IGVuZChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBM
VFIpCiAgICAgewotICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUod3JpdGlu
Z01vZGUpID8KLSAgICAgICAgICAgIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikg
PyByaWdodCgpIDogbGVmdCgpKSA6Ci0gICAgICAgICAgICAoaXNMZWZ0VG9SaWdodERpcmVjdGlv
bihkaXJlY3Rpb24pID8gYm90dG9tKCkgOiB0b3AoKSk7CisgICAgICAgIHJldHVybiBhdChtYXBM
b2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0
aW9uKSwgRW5kU2lkZSkpOwogICAgIH0KIAogICAgIGNvbnN0IFQmIGJlZm9yZShXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBpc0hvcml6b250YWxX
cml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPwotICAgICAgICAgICAgKGlzRmxpcHBlZEJsb2Nrc1dy
aXRpbmdNb2RlKHdyaXRpbmdNb2RlKSA/IGJvdHRvbSgpIDogdG9wKCkpIDoKLSAgICAgICAgICAg
IChpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyByaWdodCgpIDogbGVm
dCgpKTsKKyAgICAgICAgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUod3Jp
dGluZ01vZGUsIEJlZm9yZVNpZGUpKTsKICAgICB9CiAKICAgICBjb25zdCBUJiBhZnRlcihXcml0
aW5nTW9kZSB3cml0aW5nTW9kZSkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBpc0hvcml6
b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPwotICAgICAgICAgICAgKGlzRmxpcHBlZEJs
b2Nrc1dyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSA/IHRvcCgpIDogYm90dG9tKCkpIDoKLSAgICAg
ICAgICAgIChpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyBsZWZ0KCkg
OiByaWdodCgpKTsKKyAgICAgICAgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNp
ZGUod3JpdGluZ01vZGUsIEFmdGVyU2lkZSkpOwogICAgIH0KIAogICAgIGNvbnN0IFQmIHN0YXJ0
KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUikg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0
aW5nTW9kZSkgPwotICAgICAgICAgICAgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9u
KSA/IGxlZnQoKSA6IHJpZ2h0KCkpIDoKLSAgICAgICAgICAgIChpc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKGRpcmVjdGlvbikgPyB0b3AoKSA6IGJvdHRvbSgpKTsKKyAgICAgICAgcmV0dXJuIGF0KG1h
cExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJl
Y3Rpb24pLCBTdGFydFNpZGUpKTsKICAgICB9CiAKICAgICBjb25zdCBUJiBlbmQoV3JpdGluZ01v
ZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdAogICAg
IHsKLSAgICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSA/
Ci0gICAgICAgICAgICAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbihkaXJlY3Rpb24pID8gcmlnaHQo
KSA6IGxlZnQoKSkgOgotICAgICAgICAgICAgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0
aW9uKSA/IGJvdHRvbSgpIDogdG9wKCkpOworICAgICAgICByZXR1cm4gYXQobWFwTG9naWNhbFNp
ZGVUb1BoeXNpY2FsU2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIEVu
ZFNpZGUpKTsKICAgICB9CiAKICAgICB2b2lkIHNldEJlZm9yZShjb25zdCBUJiBiZWZvcmUsIFdy
aXRpbmdNb2RlIHdyaXRpbmdNb2RlKSB7IHRoaXMtPmJlZm9yZSh3cml0aW5nTW9kZSkgPSBiZWZv
cmU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgJ
KHJldmlzaW9uIDE4NDkwMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Rl
eHRSdW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBUZXh0UnVu
X2gKIAogI2luY2x1ZGUgIlRleHRGbGFncy5oIgorI2luY2x1ZGUgIldyaXRpbmdNb2RlLmgiCiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3
Lmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1NlbGVjdGlvblJlY3Qu
aAkocmV2aXNpb24gMTg0OTAzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1NlbGVj
dGlvblJlY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBTZWxl
Y3Rpb25SZWN0X2gKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJUZXh0RmxhZ3Mu
aCIKKyNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvQmlkaVJlc29sdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9CaWRpUmVzb2x2ZXIuaAkocmV2aXNpb24gMTg0OTAzKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQs
NyBAQAogCiAjaW5jbHVkZSAiQmlkaUNvbnRleHQuaCIKICNpbmNsdWRlICJCaWRpUnVuTGlzdC5o
IgotI2luY2x1ZGUgIlRleHRGbGFncy5oIgorI2luY2x1ZGUgIldyaXRpbmdNb2RlLmgiCiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1N0cmluZ1dpdGhEaXJlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaAkocmV2aXNpb24gMTg0OTAzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgU3RyaW5nV2l0aERpcmVjdGlvbl9oCiAj
ZGVmaW5lIFN0cmluZ1dpdGhEaXJlY3Rpb25faAogCi0jaW5jbHVkZSAiVGV4dEZsYWdzLmgiCisj
aW5jbHVkZSAiV3JpdGluZ01vZGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0RmxhZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRGbGFncy5oCShyZXZpc2lvbiAxODQ5MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRGbGFncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBUZXh0RGlyZWN0aW9uIHsgUlRMLCBMVFIgfTsKLQog
ZW51bSBUZXh0UmVuZGVyaW5nTW9kZSB7IEF1dG9UZXh0UmVuZGVyaW5nLCBPcHRpbWl6ZVNwZWVk
LCBPcHRpbWl6ZUxlZ2liaWxpdHksIEdlb21ldHJpY1ByZWNpc2lvbiB9OwogCiBlbnVtIEZvbnRT
bW9vdGhpbmdNb2RlIHsgQXV0b1Ntb290aGluZywgTm9TbW9vdGhpbmcsIEFudGlhbGlhc2VkLCBT
dWJwaXhlbEFudGlhbGlhc2VkIH07CkBAIC00Miw4ICs0MCw2IEBAIGVudW0gRm9udE9yaWVudGF0
aW9uIHsgSG9yaXpvbnRhbCwgVmVydGkKIAogZW51bSBOb25DSktHbHlwaE9yaWVudGF0aW9uIHsg
Tm9uQ0pLR2x5cGhPcmllbnRhdGlvblZlcnRpY2FsUmlnaHQsIE5vbkNKS0dseXBoT3JpZW50YXRp
b25VcHJpZ2h0IH07CiAKLWlubGluZSBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oVGV4dERp
cmVjdGlvbiBkaXJlY3Rpb24pIHsgcmV0dXJuIGRpcmVjdGlvbiA9PSBMVFI7IH0KLQogLy8gSGVy
ZSwgIkxlYWRpbmciIGFuZCAiVHJhaWxpbmciIGFyZSByZWxldmFudCBhZnRlciB0aGUgbGluZSBo
YXMgYmVlbiByZWFycmFuZ2VkIGZvciBiaWRpLgogLy8gKCJMZWFkaW5nIiBtZWFucyAibGVmdCIg
YW5kICJUcmFpbGluZyIgbWVhbnMgInJpZ2h0LiIpCiBlbnVtIEV4cGFuc2lvbkJlaGF2aW9yRmxh
Z3MgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvV3JpdGluZ01vZGUuaAko
cmV2aXNpb24gMTg0OTAzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Xcml0aW5n
TW9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
YykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNSwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzMsMjYgKzM0LDgzIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorZW51bSBUZXh0RGlyZWN0aW9uIHsgTFRSLCBSVEwgfTsKKworaW5saW5lIGJvb2wg
aXNMZWZ0VG9SaWdodERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBy
ZXR1cm4gZGlyZWN0aW9uID09IExUUjsKK30KKwogZW51bSBXcml0aW5nTW9kZSB7Ci0gICAgVG9w
VG9Cb3R0b21Xcml0aW5nTW9kZSwgUmlnaHRUb0xlZnRXcml0aW5nTW9kZSwgTGVmdFRvUmlnaHRX
cml0aW5nTW9kZSwgQm90dG9tVG9Ub3BXcml0aW5nTW9kZQorICAgIFRvcFRvQm90dG9tV3JpdGlu
Z01vZGUgPSAwLCAvLyBob3Jpem9udGFsLXRiCisgICAgQm90dG9tVG9Ub3BXcml0aW5nTW9kZSA9
IDEsIC8vIGhvcml6b250YWwtYnQKKyAgICBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlID0gMiwgLy8g
dmVydGljYWwtbHIKKyAgICBSaWdodFRvTGVmdFdyaXRpbmdNb2RlID0gMywgLy8gdmVydGljYWwt
cmwKIH07CiAKLS8vIExpbmVzIGhhdmUgaG9yaXpvbnRhbCBvcmllbnRhdGlvbjsgbW9kZXMgaG9y
aXpvbnRhbC10YiBvciBob3Jpem9udGFsLWJ0LgotaW5saW5lIGJvb2wgaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCisjZGVmaW5lIE1BS0VfVEVYVF9GTE9X
KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pICAoKHdyaXRpbmdNb2RlKSA8PCAxIHwgKGRpcmVjdGlv
bikpCisKKy8vIERlZmluZSB0aGUgdGV4dCBmbG93IGluIHRlcm1zIG9mIHRoZSB3cml0aW5nIG1v
ZGUgYW5kIHRoZSB0ZXh0IGRpcmVjdGlvbi4gVGhlIGZpcnN0CisvLyBwYXJ0IGlzIHRoZSBsaW5l
IGdyb3dpbmcgZGlyZWN0aW9uIGFuZCB0aGUgc2Vjb25kIHBhcnQgaXMgdGhlIGJsb2NrIGdyb3dp
bmcgZGlyZWN0aW9uLgorZW51bSBUZXh0RmxvdyB7CisgICAgSW5saW5lRWFzdEJsb2NrU291dGgg
PSBNQUtFX1RFWFRfRkxPVyhUb3BUb0JvdHRvbVdyaXRpbmdNb2RlLCBMVFIpLAorICAgIElubGlu
ZVdlc3RCbG9ja1NvdXRoID0gTUFLRV9URVhUX0ZMT1coVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwg
UlRMKSwKKyAgICBJbmxpbmVFYXN0QmxvY2tOb3J0aCA9IE1BS0VfVEVYVF9GTE9XKEJvdHRvbVRv
VG9wV3JpdGluZ01vZGUsIExUUiksCisgICAgSW5saW5lV2VzdEJsb2NrTm9ydGggPSBNQUtFX1RF
WFRfRkxPVyhCb3R0b21Ub1RvcFdyaXRpbmdNb2RlLCBSVEwpLAorICAgIElubGluZVNvdXRoQmxv
Y2tFYXN0ID0gTUFLRV9URVhUX0ZMT1coTGVmdFRvUmlnaHRXcml0aW5nTW9kZSwgTFRSKSwKKyAg
ICBJbmxpbmVTb3V0aEJsb2NrV2VzdCA9IE1BS0VfVEVYVF9GTE9XKExlZnRUb1JpZ2h0V3JpdGlu
Z01vZGUsIFJUTCksCisgICAgSW5saW5lTm9ydGhCbG9ja0Vhc3QgPSBNQUtFX1RFWFRfRkxPVyhS
aWdodFRvTGVmdFdyaXRpbmdNb2RlLCBMVFIpLAorICAgIElubGluZU5vcnRoQmxvY2tXZXN0ID0g
TUFLRV9URVhUX0ZMT1coUmlnaHRUb0xlZnRXcml0aW5nTW9kZSwgUlRMKQorfTsKKworaW5saW5l
IFRleHRGbG93IG1ha2VUZXh0RmxvdyhXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVj
dGlvbiBkaXJlY3Rpb24pCiB7Ci0gICAgcmV0dXJuIHdyaXRpbmdNb2RlID09IFRvcFRvQm90dG9t
V3JpdGluZ01vZGUgfHwgd3JpdGluZ01vZGUgPT0gQm90dG9tVG9Ub3BXcml0aW5nTW9kZTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEZsb3c+KE1BS0VfVEVYVF9GTE9XKHdyaXRpbmdNb2Rl
LCBkaXJlY3Rpb24pKTsKIH0KIAotLy8gQm90dG9tIG9mIHRoZSBsaW5lIG9jY3VycyBlYXJsaWVy
IGluIHRoZSBibG9jazsgbW9kZXMgdmVydGljYWwtbHIgb3IgaG9yaXpvbnRhbC1idC4KLWlubGlu
ZSBib29sIGlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUp
CisjdW5kZWYgTUFLRV9URVhUX0ZMT1cKKworY29uc3QgdW5zaWduZWQgVGV4dEZsb3dSZXZlcnNl
ZE1hc2sgPSAxOworY29uc3QgdW5zaWduZWQgVGV4dEZsb3dGbGlwcGVkTWFzayA9IDI7Citjb25z
dCB1bnNpZ25lZCBUZXh0Rmxvd1ZlcnRpY2FsTWFzayA9IDQ7CisKK2lubGluZSBib29sIGlzUmV2
ZXJzZWRUZXh0RmxvdyhUZXh0RmxvdyB0ZXh0ZmxvdykKIHsKLSAgICByZXR1cm4gd3JpdGluZ01v
ZGUgPT0gTGVmdFRvUmlnaHRXcml0aW5nTW9kZSB8fCB3cml0aW5nTW9kZSA9PSBCb3R0b21Ub1Rv
cFdyaXRpbmdNb2RlOworICAgIHJldHVybiB0ZXh0ZmxvdyAmIFRleHRGbG93UmV2ZXJzZWRNYXNr
OworfQorCitpbmxpbmUgYm9vbCBpc0ZsaXBwZWRUZXh0RmxvdyhUZXh0RmxvdyB0ZXh0ZmxvdykK
K3sKKyAgICByZXR1cm4gdGV4dGZsb3cgJiBUZXh0Rmxvd0ZsaXBwZWRNYXNrOworfQorCitpbmxp
bmUgYm9vbCBpc1ZlcnRpY2FsVGV4dEZsb3coVGV4dEZsb3cgdGV4dGZsb3cpCit7CisgICAgcmV0
dXJuIHRleHRmbG93ICYgVGV4dEZsb3dWZXJ0aWNhbE1hc2s7Cit9CisKKy8vIExpbmVzIGhhdmUg
dmVydGljYWwgb3JpZW50YXRpb247IG1vZGVzIHZlcnRpY2FsLWxyIG9yIHZlcnRpY2FsLXJsLgor
aW5saW5lIGJvb2wgaXNWZXJ0aWNhbFdyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2Rl
KQoreworICAgIHJldHVybiBpc1ZlcnRpY2FsVGV4dEZsb3cobWFrZVRleHRGbG93KHdyaXRpbmdN
b2RlLCBMVFIpKTsKIH0KIAogLy8gQmxvY2sgcHJvZ3Jlc3Npb24gaW5jcmVhc2VzIGluIHRoZSBv
cHBvc2l0ZSBkaXJlY3Rpb24gdG8gbm9ybWFsOyBtb2RlcyB2ZXJ0aWNhbC1ybCBvciBob3Jpem9u
dGFsLWJ0LgotaW5saW5lIGJvb2wgaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoV3JpdGluZ01v
ZGUgd3JpdGluZ01vZGUpCitpbmxpbmUgYm9vbCBpc0ZsaXBwZWRXcml0aW5nTW9kZShXcml0aW5n
TW9kZSB3cml0aW5nTW9kZSkKK3sKKyAgICByZXR1cm4gaXNGbGlwcGVkVGV4dEZsb3cobWFrZVRl
eHRGbG93KHdyaXRpbmdNb2RlLCBMVFIpKTsKK30KKworLy8gTGluZXMgaGF2ZSBob3Jpem9udGFs
IG9yaWVudGF0aW9uOyBtb2RlcyBob3Jpem9udGFsLXRiIG9yIGhvcml6b250YWwtYnQuCitpbmxp
bmUgYm9vbCBpc0hvcml6b250YWxXcml0aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkK
K3sKKyAgICByZXR1cm4gIWlzVmVydGljYWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSk7Cit9CisK
Ky8vIEJvdHRvbSBvZiB0aGUgbGluZSBvY2N1cnMgZWFybGllciBpbiB0aGUgYmxvY2s7IG1vZGVz
IHZlcnRpY2FsLWxyIG9yIGhvcml6b250YWwtYnQuCitpbmxpbmUgYm9vbCBpc0ZsaXBwZWRMaW5l
c1dyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQogewotICAgIHJldHVybiB3cml0
aW5nTW9kZSA9PSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlIHx8IHdyaXRpbmdNb2RlID09IEJvdHRv
bVRvVG9wV3JpdGluZ01vZGU7CisgICAgcmV0dXJuIGlzVmVydGljYWxXcml0aW5nTW9kZSh3cml0
aW5nTW9kZSkgIT0gaXNGbGlwcGVkV3JpdGluZ01vZGUod3JpdGluZ01vZGUpOwogfQogCiBlbnVt
IExvZ2ljYWxCb3hTaWRlIHsKQEAgLTcwLDYgKzEyOCw0NSBAQCBlbnVtIFBoeXNpY2FsQm94U2lk
ZSB7CiAgICAgTGVmdFNpZGUKIH07CiAKK2lubGluZSBib29sIGlzSG9yaXpvbnRhbFBoeXNpY2Fs
U2lkZShQaHlzaWNhbEJveFNpZGUgcGh5c2ljYWxTaWRlKQoreworICAgIHJldHVybiBwaHlzaWNh
bFNpZGUgPT0gTGVmdFNpZGUgfHwgcGh5c2ljYWxTaWRlID09IFJpZ2h0U2lkZTsKK30KKworaW5s
aW5lIFBoeXNpY2FsQm94U2lkZSBtaXJyb3JQaHlzaWNhbFNpZGUoUGh5c2ljYWxCb3hTaWRlIHBo
eXNpY2FsU2lkZSkKK3sKKyAgICAvLyB0b3AgPC0+IGJvdHRvbSBhbmQgbGVmdCA8LT4gcmlnaHQg
Y29udmVyc2lvbgorICAgIHJldHVybiBzdGF0aWNfY2FzdDxQaHlzaWNhbEJveFNpZGU+KChzdGF0
aWNfY2FzdDxpbnQ+KHBoeXNpY2FsU2lkZSkgKyAyKSAlIDQpOworfQorCitpbmxpbmUgUGh5c2lj
YWxCb3hTaWRlIHJvdGF0ZVBoeXNpY2FsU2lkZShQaHlzaWNhbEJveFNpZGUgcGh5c2ljYWxTaWRl
KQoreworICAgIC8vIHRvcCA8LT4gbGVmdCBhbmQgcmlnaHQgPC0+IGJvdHRvbSBjb252ZXJzaW9u
CisgICAgYm9vbCBob3Jpem9udGFsU2lkZSA9IGlzSG9yaXpvbnRhbFBoeXNpY2FsU2lkZShwaHlz
aWNhbFNpZGUpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQaHlzaWNhbEJveFNpZGU+KChzdGF0
aWNfY2FzdDxpbnQ+KHBoeXNpY2FsU2lkZSkgKyAoaG9yaXpvbnRhbFNpZGUgPyAxIDogMykpICUg
NCk7Cit9CisKK2lubGluZSBQaHlzaWNhbEJveFNpZGUgbWFwTG9naWNhbFNpZGVUb1BoeXNpY2Fs
U2lkZShUZXh0RmxvdyB0ZXh0ZmxvdywgTG9naWNhbEJveFNpZGUgbG9naWNhbFNpZGUpCit7Cisg
ICAgUGh5c2ljYWxCb3hTaWRlIHBoeXNpY2FsU2lkZSA9IHN0YXRpY19jYXN0PFBoeXNpY2FsQm94
U2lkZT4obG9naWNhbFNpZGUpOworICAgIGJvb2wgaG9yaXpvbnRhbFNpZGUgPSBpc0hvcml6b250
YWxQaHlzaWNhbFNpZGUocGh5c2ljYWxTaWRlKTsKKworICAgIGlmIChpc1ZlcnRpY2FsVGV4dEZs
b3codGV4dGZsb3cpKQorICAgICAgICBwaHlzaWNhbFNpZGUgPSByb3RhdGVQaHlzaWNhbFNpZGUo
cGh5c2ljYWxTaWRlKTsKKworICAgIGlmICgoaG9yaXpvbnRhbFNpZGUgJiYgaXNSZXZlcnNlZFRl
eHRGbG93KHRleHRmbG93KSkgfHwgKCFob3Jpem9udGFsU2lkZSAmJiBpc0ZsaXBwZWRUZXh0Rmxv
dyh0ZXh0ZmxvdykpKQorICAgICAgICBwaHlzaWNhbFNpZGUgPSBtaXJyb3JQaHlzaWNhbFNpZGUo
cGh5c2ljYWxTaWRlKTsKKworICAgIHJldHVybiBwaHlzaWNhbFNpZGU7Cit9CisKK2lubGluZSBQ
aHlzaWNhbEJveFNpZGUgbWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShXcml0aW5nTW9kZSB3
cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGUgbG9naWNhbFNpZGUpCit7CisgICAgLy8gU2V0IHRo
ZSBkaXJlY3Rpb24gc3VjaCB0aGF0IHNpZGUgaXMgbWlycm9yZWQgaWYgaXNGbGlwcGVkV3JpdGlu
Z01vZGUoKSBpcyB0cnVlCisgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBpc0ZsaXBwZWRX
cml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyBSVEwgOiBMVFI7CisgICAgcmV0dXJuIG1hcExvZ2lj
YWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24p
LCBsb2dpY2FsU2lkZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IFdyaXRpbmdNb2RlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uU2V0LmNwcAkocmV2aXNpb24gMTg0OTAzKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Nzk5LDcgKzc5OSw3IEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmNvbGxlY3RMYXllckYK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBibG9ja09mZnNldCAtPSBpICogKGNv
bXB1dGVkQ29sdW1uSGVpZ2h0KCkgKyBjb2xHYXApOwogICAgICAgICB9Ci0gICAgICAgIGlmIChp
c0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZShzdHlsZSgpLndyaXRpbmdNb2RlKCkpKQorICAgICAg
ICBpZiAoaXNGbGlwcGVkV3JpdGluZ01vZGUoc3R5bGUoKS53cml0aW5nTW9kZSgpKSkKICAgICAg
ICAgICAgIGJsb2NrT2Zmc2V0ID0gLWJsb2NrT2Zmc2V0OwogICAgICAgICB0cmFuc2xhdGlvbk9m
ZnNldC5zZXRIZWlnaHQoYmxvY2tPZmZzZXQpOwogICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkpCkBAIC04NTEsNyArODUxLDcgQEAgTGF5b3V0UG9pbnQgUmVuZGVyTXVsdGlD
b2x1bW5TZXQ6OmNvbHVtbgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBibG9ja09mZnNldCAt
PSBzdGFydENvbHVtbiAqIChjb21wdXRlZENvbHVtbkhlaWdodCgpICsgY29sR2FwKTsKICAgICB9
Ci0gICAgaWYgKGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKHN0eWxlKCkud3JpdGluZ01vZGUo
KSkpCisgICAgaWYgKGlzRmxpcHBlZFdyaXRpbmdNb2RlKHN0eWxlKCkud3JpdGluZ01vZGUoKSkp
CiAgICAgICAgIGJsb2NrT2Zmc2V0ID0gLWJsb2NrT2Zmc2V0OwogICAgIHRyYW5zbGF0aW9uT2Zm
c2V0LnNldFkoYmxvY2tPZmZzZXQpOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9TaGFwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9TaGFwZS5jcHAJKHJldmlzaW9uIDE4NDkwMykKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3
IEBAIHN0YXRpYyBpbmxpbmUgRmxvYXRSZWN0IHBoeXNpY2FsUmVjdFRvTG8KIHsKICAgICBpZiAo
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUod3JpdGluZ01vZGUpKQogICAgICAgICByZXR1cm4gcmVj
dDsKLSAgICBpZiAoaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUod3JpdGluZ01vZGUpKQorICAg
IGlmIChpc0ZsaXBwZWRXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkpCiAgICAgICAgIHJldHVybiBG
bG9hdFJlY3QocmVjdC55KCksIGxvZ2ljYWxCb3hIZWlnaHQgLSByZWN0Lm1heFgoKSwgcmVjdC5o
ZWlnaHQoKSwgcmVjdC53aWR0aCgpKTsKICAgICByZXR1cm4gcmVjdC50cmFuc3Bvc2VkUmVjdCgp
OwogfQpAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgaW5saW5lIEZsb2F0UG9pbnQgcGh5c2ljYWxQ
b2ludFRvCiB7CiAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSkK
ICAgICAgICAgcmV0dXJuIHBvaW50OwotICAgIGlmIChpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9k
ZSh3cml0aW5nTW9kZSkpCisgICAgaWYgKGlzRmxpcHBlZFdyaXRpbmdNb2RlKHdyaXRpbmdNb2Rl
KSkKICAgICAgICAgcmV0dXJuIEZsb2F0UG9pbnQocG9pbnQueSgpLCBsb2dpY2FsQm94SGVpZ2h0
IC0gcG9pbnQueCgpKTsKICAgICByZXR1cm4gcG9pbnQudHJhbnNwb3NlZFBvaW50KCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2
aXNpb24gMTg0OTAzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMzYsNyArMTEzNiw3IEBAIHB1YmxpYzoKICAgICBX
cml0aW5nTW9kZSB3cml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFdyaXRp
bmdNb2RlPihpbmhlcml0ZWRfZmxhZ3MubV93cml0aW5nTW9kZSk7IH0KICAgICBib29sIGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6aXNIb3Jpem9udGFs
V3JpdGluZ01vZGUod3JpdGluZ01vZGUoKSk7IH0KICAgICBib29sIGlzRmxpcHBlZExpbmVzV3Jp
dGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjppc0ZsaXBwZWRMaW5lc1dyaXRpbmdN
b2RlKHdyaXRpbmdNb2RlKCkpOyB9Ci0gICAgYm9vbCBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKHdy
aXRpbmdNb2RlKCkpOyB9CisgICAgYm9vbCBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIFdlYkNvcmU6OmlzRmxpcHBlZFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKCkp
OyB9CiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgIEltYWdlT3JpZW50
YXRpb25FbnVtIGltYWdlT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJ
bWFnZU9yaWVudGF0aW9uRW51bT4ocmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VPcmllbnRhdGlv
bik7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDk1NykKKysrIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA1LTI4ICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29k
ZSBjbGVhbiB1cCBmb3IgZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtaXggb2YgV3Jp
dGluZ01vZGUgYW5kIFRleHREaXJlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MzM5OQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgICogU2hhcmVkL1dlYlBvcHVwSXRlbS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oOgorICAgICAgICBlbnVtIFRleHREaXJlY3Rpb24gaXMg
bW92ZWQgZnJvbSBUZXh0RmxhZ3MuaCB0byBXcml0aW5nTW9kZS5oLiBTbyBpbmNsdWRlCisgICAg
ICAgIFdyaXRpbmdNb2RlLmggaW5zdGVhZCBvZiBpbmNsdWRpbmcgVGV4dEZsYWdzLmguCisKIDIw
MTUtMDUtMjggIE1hdHQgUmFqY2EgIDxtcmFqY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBF
TkFCTEVfTUVESUFfU0VTU0lPTiBmZWF0dXJlIGZsYWcgKHdoaWNoIGlzIG9mZiBieSBkZWZhdWx0
KS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQb3B1cEl0ZW0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmgJKHJldmlzaW9uIDE4NDkw
MykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQb3B1cEl0ZW0uaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBXZWJQb3B1cEl0ZW1faAogI2RlZmluZSBXZWJQ
b3B1cEl0ZW1faAogCi0jaW5jbHVkZSA8V2ViQ29yZS9UZXh0RmxhZ3MuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1dyaXRpbmdNb2RlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBJUEMgewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBvcHVw
TWVudVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBv
cHVwTWVudVByb3h5LmgJKHJldmlzaW9uIDE4NDkwMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaWZuZGVmIFdlYlBvcHVwTWVudVByb3h5X2gKICNkZWZpbmUgV2ViUG9wdXBNZW51UHJveHlf
aAogCi0jaW5jbHVkZSA8V2ViQ29yZS9UZXh0RmxhZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dy
aXRpbmdNb2RlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253857</attachid>
            <date>2015-05-28 13:19:30 -0700</date>
            <delta_ts>2015-05-28 14:55:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143399-20150528131917.patch</filename>
            <type>text/plain</type>
            <size>26560</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDk1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDE1LTA1LTI4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29kZSBjbGVh
biB1cCBmb3IgZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtaXggb2YgV3JpdGluZ01v
ZGUgYW5kIFRleHREaXJlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MzM5OQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
ICAgICAgICAKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIGVpZ2h0IFRleHRGbG93cy4gQSBUZXh0
RmxvdyBjb25zaXN0cyBvZiB0d28gZGlyZWN0aW9ucy4KKyAgICAgICAgVGhlIGZpcnN0IG9uZSBj
b250cm9scyB0aGUgaW5saW5lIGdyb3dpbmcgZGlyZWN0aW9uIGFuZCB0aGUgc2Vjb25kIG9uZQor
ICAgICAgICBjb250cm9scyB0aGUgYmxvY2sgZ3Jvd2luZyBkaXJlY3Rpb24uIFdlIGFyZSBnb2lu
ZyB0byB1c2UgdGhlIGNhcmRpbmFsCisgICAgICAgIGRpcmVjdGlvbnMgdG8gZGVmaW5lIHRoZXNl
IGNvbWJpbmF0aW9ucy4KKworICAgICAgICBXZSBuZWVkIHRvIGV4dHJhY3QgdGhlIGZvbGxvd2lu
ZyBpbmZvcm1hdGlvbiBlYXNpbHkgZnJvbSB0aGUgVGV4dEZsb3cKKworICAgICAgICAtLSBpc1Rl
eHRGbG93UmV2ZXJzZWQoKSAvLyBSVEwKKyAgICAgICAgLS0gaXNUZXh0Rmxvd0ZsaXBwZWQoKSAg
Ly8gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiB0byBub3JtYWwKKyAgICAgICAgLS0gaXNUZXh0Rmxv
d1ZlcnRpY2FsKCkgLy8gVGhlIGxpbmUgZ3Jvd3MgdmVydGljYWxseQorICAgICAgICAKKyAgICAg
ICAgTWl4aW5nIFdyaXRpbmdNb2RlIGFuZCBUZXh0RGlyZWN0aW9uIGludG8gVGV4dEZsb3cgYW5k
IGNob29zaW5nIHRoZWlyIHZhbHVlcworICAgICAgICBjYXJlZnVsbHkgdG8gZWFzZSBpbXBsZW1l
bnRpbmcgdGhlIGFib3ZlIGZ1bmN0aW9ucyBjYW4gbWFrZSB0aGluZ3MgY2xlYXJlci4KKworICAg
ICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1NlbGVj
dGlvblJlY3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvVGV4dEZsYWdzLmg6CisgICAgICAgIChXZWJDb3JlOjppc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgZW51bSBUZXh0RGlyZWN0aW9uIGlzIG1vdmVk
IGZyb20gVGV4dEZsYWdzLmggdG8gV3JpdGluZ01vZGUuaC4gU28gaW5jbHVkZQorICAgICAgICBX
cml0aW5nTW9kZS5oIGluc3RlYWQgb2YgaW5jbHVkaW5nIFRleHRGbGFncy5oLgorICAgICAgICAK
KyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2
ZVRvUGh5c2ljYWxQcm9wZXJ0eSk6IEluc3RlYWQgb2YgaGFuZGxpbmcgdGhlIGVpZ2h0IHBvc3Np
YmxlCisgICAgICAgIGNhc2VzIG9mIHRoZSB0ZXh0IGZsb3dzIG9uZSBieSBvbmUsIHdlIGNhbiBt
YXAgZnJvbSBhIExvZ2ljYWxTaWRlIHRvIGEKKyAgICAgICAgUGh5c2ljYWxTaWRlIHVzaW5nIHRo
ZSBUZXh0RmxvdyB2YWx1ZS4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoQm94
Lmg6CisgICAgICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6OmJlZm9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpCb3hFeHRlbnQ6OmFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkJveEV4dGVudDo6c3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50OjplbmQpOgorICAgICAgICBVc2UgbWFw
TG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZSgpIHRvIGNvbnZlcnQgZnJvbSBhIExvZ2ljYWxTaWRl
IHRvIGEgUGh5c2ljYWxTaWRlLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1dy
aXRpbmdNb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjppc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKTog
VXN1YWxseSB0aGUgZGVmYXVsdCBlbnVtIGlzIGRlZmluZWQKKyAgICAgICAgZmlyc3QuIEFuZCB1
c3VhbGx5IHRoZSBkZWZhdWx0IHZhbHVlIGlzIGVxdWFsIHRvIHplcm8uIFNpbmNlIExUUiBpcyB0
aGUKKyAgICAgICAgZGVmYXVsdCBmb3IgdGhlIHRleHQgZGlyZWN0aW9uLCBpdCBzaG91bGQgYmUg
ZGVmaW5lZCBiZWZvcmUgUlRMLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VUZXh0
Rmxvdyk6IFJldHVybnMgYSBUZXh0RmxvdyBnaXZlbiBhIFdyaXRpbmdNb2RlIGFuZCBhCisgICAg
ICAgIFRleHREaXJlY3Rpb24uCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6aXNSZXZlcnNl
ZFRleHRGbG93KTogUmV0dXJucyB0cnVlIGlmIHRoZSB0ZXh0IGRpcmVjdGlvbiBpcyBSVEwuCisg
ICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6aXNGbGlwcGVkVGV4dEZsb3cpOgorICAgICAgICAo
V2ViQ29yZTo6aXNGbGlwcGVkV3JpdGluZ01vZGUpOiBSZXR1cm5zIHRydWUgaWYgdGhlIGJsb2Nr
IGdyb3dpbmcgZGlyZWN0aW9uCisgICAgICAgIGlzIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24g
b2Ygbm9ybWFsLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OmlzVmVydGljYWxUZXh0Rmxv
dyk6CisgICAgICAgIChXZWJDb3JlOjppc1ZlcnRpY2FsV3JpdGluZ01vZGUpOiBSZXR1cm5zIHRy
dWUgaWYgdGhlIGxpbmUgZ3Jvd3MgdmVydGljYWxseS4KKyAgICAgICAgICAgICAgIAorICAgICAg
ICAoV2ViQ29yZTo6aXNIb3Jpem9udGFsV3JpdGluZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
aXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSk6IFVzZSBpc1ZlcnRpY2FsV3JpdGluZ01vZGUoKSBh
bmQgCisgICAgICAgIGlzRmxpcHBlZFdyaXRpbmdNb2RlKCkgdG8gYW5zd2VyIHRoZXNlIHF1ZXN0
aW9ucy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjppc0hvcml6b250YWxQaHlzaWNhbFNp
ZGUpOiAKKyAgICAgICAgKFdlYkNvcmU6Om1pcnJvclBoeXNpY2FsU2lkZSk6IHRvcCA8LT4gYm90
dG9tIGFuZCBsZWZ0IDwtPiByaWdodCBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6cm90
YXRlUGh5c2ljYWxTaWRlKTogdG9wIDwtPiBsZWZ0IGFuZCByaWdodCA8LT4gYm90dG9tIGNvbnZl
cnNpb24uCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6bWFwTG9naWNhbFNpZGVUb1BoeXNp
Y2FsU2lkZSk6IE1hcHMgYSBMb2dpY2FsU2lkZSB0byBhIFBoeXNpY2FsU2lkZQorICAgICAgICB1
c2luZyBlaXRoZXIgdGhlIFRleHRGbG93IG9yIHRoZSBXcml0aW5nTW9kZS4KKyAgICAgICAgCisg
ICAgICAgIChXZWJDb3JlOjppc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSk6IERlbGV0ZWQuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0Ojpjb2xsZWN0TGF5ZXJGcmFnbWVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmNvbHVtblRyYW5zbGF0aW9uRm9y
T2Zmc2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBoeXNpY2FsUmVjdFRvTG9naWNhbCk6CisgICAgICAgIChXZWJDb3JlOjpwaHlz
aWNhbFBvaW50VG9Mb2dpY2FsKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaDoKKyAgICAgICAgUmVuYW1lIGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgdG8gYmUg
aXNGbGlwcGVkV3JpdGluZ01vZGUoKSBzbyB3ZSBjYW4KKyAgICAgICAgYmUgY29uc2lzdGVudCB3
aXRoIG90aGVyIFdyaXRpbmdNb2RlIHF1ZXJ5IGZ1bmN0aW9ucy4KKwogMjAxNS0wNS0yOCAgTWF0
dCBSYWpjYSAgPG1yYWpjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEVOQUJMRV9NRURJQV9T
RVNTSU9OIGZlYXR1cmUgZmxhZyAod2hpY2ggaXMgb2ZmIGJ5IGRlZmF1bHQpLgpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
aAkocmV2aXNpb24gMTg0OTAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMCArMzUsMTAgQEAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5j
bHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOb3RpZmlj
YXRpb25DbGllbnQuaCIKLSNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlICJUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSAiV3JpdGluZ01v
ZGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJv
cGVydHkuY3BwCShyZXZpc2lvbiAxODQ5MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJv
cGVydHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMDcgKzU2LDcgQEAgdm9pZCBDU1NQcm9w
ZXJ0eTo6d3JhcFZhbHVlSW5Db21tYVNlcGFyYQogCiBzdGF0aWMgQ1NTUHJvcGVydHlJRCByZXNv
bHZlVG9QaHlzaWNhbFByb3BlcnR5KFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGUgbG9naWNhbFNpZGUsIGNvbnN0IFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKIHsKLSAgICBpZiAoZGlyZWN0aW9uID09IExUUikg
ewotICAgICAgICBpZiAod3JpdGluZ01vZGUgPT0gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSkgewot
ICAgICAgICAgICAgLy8gVGhlIGNvbW1vbiBjYXNlLiBUaGUgbG9naWNhbCBhbmQgcGh5c2ljYWwg
Ym94IHNpZGVzIG1hdGNoLgotICAgICAgICAgICAgLy8gTGVmdCA9IFN0YXJ0LCBSaWdodCA9IEVu
ZCwgQmVmb3JlID0gVG9wLCBBZnRlciA9IEJvdHRvbQotICAgICAgICAgICAgcmV0dXJuIHNob3J0
aGFuZC5wcm9wZXJ0aWVzKClbbG9naWNhbFNpZGVdOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUpIHsKLSAgICAgICAgICAgIC8v
IFN0YXJ0ID0gTGVmdCwgRW5kID0gUmlnaHQsIEJlZm9yZSA9IEJvdHRvbSwgQWZ0ZXIgPSBUb3Au
Ci0gICAgICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAgICAgICAgICBjYXNlIFN0
YXJ0U2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtM
ZWZ0U2lkZV07Ci0gICAgICAgICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKLSAgICAgICAgICAgIGNhc2Ug
QmVmb3JlU2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMo
KVtCb3R0b21TaWRlXTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAod3JpdGluZ01vZGUgPT0gTGVmdFRvUmlnaHRXcml0aW5nTW9k
ZSkgewotICAgICAgICAgICAgLy8gU3RhcnQgPSBUb3AsIEVuZCA9IEJvdHRvbSwgQmVmb3JlID0g
TGVmdCwgQWZ0ZXIgPSBSaWdodC4KLSAgICAgICAgICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsK
LSAgICAgICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgICAgIHJldHVybiBzaG9y
dGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwotICAgICAgICAgICAgY2FzZSBFbmRTaWRlOgot
ICAgICAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVd
OwotICAgICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgICAgIHJldHVybiBz
aG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFN0YXJ0ID0gVG9wLCBFbmQg
PSBCb3R0b20sIEJlZm9yZSA9IFJpZ2h0LCBBZnRlciA9IExlZnQKLSAgICAgICAgc3dpdGNoIChs
b2dpY2FsU2lkZSkgewotICAgICAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgICAgIHJldHVy
biBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwotICAgICAgICBjYXNlIEVuZFNpZGU6
Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsK
LSAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIGlmICh3cml0aW5nTW9kZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlKSB7Ci0gICAg
ICAgIC8vIFN0YXJ0ID0gUmlnaHQsIEVuZCA9IExlZnQsIEJlZm9yZSA9IFRvcCwgQWZ0ZXIgPSBC
b3R0b20KLSAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewotICAgICAgICBjYXNlIFN0YXJ0
U2lkZToKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1JpZ2h0U2lk
ZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQu
cHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAg
ICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07Ci0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21T
aWRlXTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICh3cml0aW5nTW9kZSA9PSBCb3R0b21U
b1RvcFdyaXRpbmdNb2RlKSB7Ci0gICAgICAgIC8vIFN0YXJ0ID0gUmlnaHQsIEVuZCA9IExlZnQs
IEJlZm9yZSA9IEJvdHRvbSwgQWZ0ZXIgPSBUb3AKLSAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lk
ZSkgewotICAgICAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgICAgIHJldHVybiBzaG9ydGhh
bmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07Ci0gICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAg
ICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICAgICAg
Y2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVz
KClbQm90dG9tU2lkZV07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlm
ICh3cml0aW5nTW9kZSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlKSB7Ci0gICAgICAgIC8vIFN0
YXJ0ID0gQm90dG9tLCBFbmQgPSBUb3AsIEJlZm9yZSA9IExlZnQsIEFmdGVyID0gUmlnaHQKLSAg
ICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewotICAgICAgICBjYXNlIFN0YXJ0U2lkZToKLSAg
ICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwotICAg
ICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtUb3BTaWRlXTsKLSAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgcmV0
dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIC8vIFN0YXJ0ID0gQm90dG9tLCBFbmQgPSBUb3AsIEJlZm9y
ZSA9IFJpZ2h0LCBBZnRlciA9IExlZnQKLSAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7Ci0gICAg
Y2FzZSBTdGFydFNpZGU6Ci0gICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0Jv
dHRvbVNpZGVdOwotICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbVG9wU2lkZV07Ci0gICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICByZXR1
cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKLSAgICB9CisgICAg
cmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbbWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lk
ZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIGxvZ2ljYWxTaWRlKV07CiB9
CiAKIGVudW0gTG9naWNhbEV4dGVudCB7IExvZ2ljYWxXaWR0aCwgTG9naWNhbEhlaWdodCB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmgJKHJldmlzaW9uIDE4NDkwMykKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2
IEBACiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKLSNpbmNsdWRlICJUZXh0RmxhZ3Mu
aCIKICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3Ro
Qm94LmgJKHJldmlzaW9uIDE4NDkwMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aEJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw2IEBACiAjZGVmaW5lIExlbmd0aEJv
eF9oCiAKICNpbmNsdWRlICJMZW5ndGguaCIKLSNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKICNpbmNs
dWRlICJXcml0aW5nTW9kZS5oIgogI2luY2x1ZGUgPGFycmF5PgogCkBAIC02MSw1OCArNjAsNDIg
QEAgcHVibGljOgogCiAgICAgVCYgYmVmb3JlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSA/
Ci0gICAgICAgICAgICAoaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUod3JpdGluZ01vZGUpID8g
Ym90dG9tKCkgOiB0b3AoKSkgOgotICAgICAgICAgICAgKGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdN
b2RlKHdyaXRpbmdNb2RlKSA/IHJpZ2h0KCkgOiBsZWZ0KCkpOworICAgICAgICByZXR1cm4gYXQo
bWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZSh3cml0aW5nTW9kZSwgQmVmb3JlU2lkZSkpOwog
ICAgIH0KIAogICAgIFQmIGFmdGVyKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSA/Ci0gICAg
ICAgICAgICAoaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUod3JpdGluZ01vZGUpID8gdG9wKCkg
OiBib3R0b20oKSkgOgotICAgICAgICAgICAgKGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKHdy
aXRpbmdNb2RlKSA/IGxlZnQoKSA6IHJpZ2h0KCkpOworICAgICAgICByZXR1cm4gYXQobWFwTG9n
aWNhbFNpZGVUb1BoeXNpY2FsU2lkZSh3cml0aW5nTW9kZSwgQWZ0ZXJTaWRlKSk7CiAgICAgfQog
CiAgICAgVCYgc3RhcnQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGly
ZWN0aW9uID0gTFRSKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKHdyaXRpbmdNb2RlKSA/Ci0gICAgICAgICAgICAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbihk
aXJlY3Rpb24pID8gbGVmdCgpIDogcmlnaHQoKSkgOgotICAgICAgICAgICAgKGlzTGVmdFRvUmln
aHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IHRvcCgpIDogYm90dG9tKCkpOworICAgICAgICByZXR1
cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01v
ZGUsIGRpcmVjdGlvbiksIFN0YXJ0U2lkZSkpOwogICAgIH0KIAogICAgIFQmIGVuZChXcml0aW5n
TW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpCiAgICAgewot
ICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUod3JpdGluZ01vZGUpID8KLSAg
ICAgICAgICAgIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyByaWdodCgpIDog
bGVmdCgpKSA6Ci0gICAgICAgICAgICAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbihkaXJlY3Rpb24p
ID8gYm90dG9tKCkgOiB0b3AoKSk7CisgICAgICAgIHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRv
UGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgRW5kU2lk
ZSkpOwogICAgIH0KIAogICAgIGNvbnN0IFQmIGJlZm9yZShXcml0aW5nTW9kZSB3cml0aW5nTW9k
ZSkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSh3
cml0aW5nTW9kZSkgPwotICAgICAgICAgICAgKGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKHdy
aXRpbmdNb2RlKSA/IGJvdHRvbSgpIDogdG9wKCkpIDoKLSAgICAgICAgICAgIChpc0ZsaXBwZWRC
bG9ja3NXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyByaWdodCgpIDogbGVmdCgpKTsKKyAgICAg
ICAgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUod3JpdGluZ01vZGUsIEJl
Zm9yZVNpZGUpKTsKICAgICB9CiAKICAgICBjb25zdCBUJiBhZnRlcihXcml0aW5nTW9kZSB3cml0
aW5nTW9kZSkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5n
TW9kZSh3cml0aW5nTW9kZSkgPwotICAgICAgICAgICAgKGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdN
b2RlKHdyaXRpbmdNb2RlKSA/IHRvcCgpIDogYm90dG9tKCkpIDoKLSAgICAgICAgICAgIChpc0Zs
aXBwZWRCbG9ja3NXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyBsZWZ0KCkgOiByaWdodCgpKTsK
KyAgICAgICAgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUod3JpdGluZ01v
ZGUsIEFmdGVyU2lkZSkpOwogICAgIH0KIAogICAgIGNvbnN0IFQmIHN0YXJ0KFdyaXRpbmdNb2Rl
IHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUikgY29uc3QKICAgICB7
Ci0gICAgICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPwot
ICAgICAgICAgICAgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IGxlZnQoKSA6
IHJpZ2h0KCkpIDoKLSAgICAgICAgICAgIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlv
bikgPyB0b3AoKSA6IGJvdHRvbSgpKTsKKyAgICAgICAgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRl
VG9QaHlzaWNhbFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBTdGFy
dFNpZGUpKTsKICAgICB9CiAKICAgICBjb25zdCBUJiBlbmQoV3JpdGluZ01vZGUgd3JpdGluZ01v
ZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSA/Ci0gICAgICAgICAg
ICAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbihkaXJlY3Rpb24pID8gcmlnaHQoKSA6IGxlZnQoKSkg
OgotICAgICAgICAgICAgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSA/IGJvdHRv
bSgpIDogdG9wKCkpOworICAgICAgICByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2Fs
U2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIEVuZFNpZGUpKTsKICAg
ICB9CiAKICAgICB2b2lkIHNldEJlZm9yZShjb25zdCBUJiBiZWZvcmUsIFdyaXRpbmdNb2RlIHdy
aXRpbmdNb2RlKSB7IHRoaXMtPmJlZm9yZSh3cml0aW5nTW9kZSkgPSBiZWZvcmU7IH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgJKHJldmlzaW9uIDE4
NDkwMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaAkod29y
a2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBUZXh0UnVuX2gKIAogI2luY2x1
ZGUgIlRleHRGbGFncy5oIgorI2luY2x1ZGUgIldyaXRpbmdNb2RlLmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1NlbGVjdGlvblJlY3QuaAkocmV2aXNpb24g
MTg0OTAzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1NlbGVjdGlvblJlY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBTZWxlY3Rpb25SZWN0X2gK
IAogI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKKyNpbmNsdWRl
ICJXcml0aW5nTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29s
dmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVz
b2x2ZXIuaAkocmV2aXNpb24gMTg0OTAzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9CaWRpUmVzb2x2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogCiAjaW5j
bHVkZSAiQmlkaUNvbnRleHQuaCIKICNpbmNsdWRlICJCaWRpUnVuTGlzdC5oIgotI2luY2x1ZGUg
IlRleHRGbGFncy5oIgorI2luY2x1ZGUgIldyaXRpbmdNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhE
aXJlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0
cmluZ1dpdGhEaXJlY3Rpb24uaAkocmV2aXNpb24gMTg0OTAzKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDcgKzMxLDcgQEAKICNpZm5kZWYgU3RyaW5nV2l0aERpcmVjdGlvbl9oCiAjZGVmaW5lIFN0cmlu
Z1dpdGhEaXJlY3Rpb25faAogCi0jaW5jbHVkZSAiVGV4dEZsYWdzLmgiCisjaW5jbHVkZSAiV3Jp
dGluZ01vZGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5o
CShyZXZpc2lvbiAxODQ5MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRG
bGFncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotZW51bSBUZXh0RGlyZWN0aW9uIHsgUlRMLCBMVFIgfTsKLQogZW51bSBUZXh0UmVu
ZGVyaW5nTW9kZSB7IEF1dG9UZXh0UmVuZGVyaW5nLCBPcHRpbWl6ZVNwZWVkLCBPcHRpbWl6ZUxl
Z2liaWxpdHksIEdlb21ldHJpY1ByZWNpc2lvbiB9OwogCiBlbnVtIEZvbnRTbW9vdGhpbmdNb2Rl
IHsgQXV0b1Ntb290aGluZywgTm9TbW9vdGhpbmcsIEFudGlhbGlhc2VkLCBTdWJwaXhlbEFudGlh
bGlhc2VkIH07CkBAIC00Miw4ICs0MCw2IEBAIGVudW0gRm9udE9yaWVudGF0aW9uIHsgSG9yaXpv
bnRhbCwgVmVydGkKIAogZW51bSBOb25DSktHbHlwaE9yaWVudGF0aW9uIHsgTm9uQ0pLR2x5cGhP
cmllbnRhdGlvblZlcnRpY2FsUmlnaHQsIE5vbkNKS0dseXBoT3JpZW50YXRpb25VcHJpZ2h0IH07
CiAKLWlubGluZSBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24pIHsgcmV0dXJuIGRpcmVjdGlvbiA9PSBMVFI7IH0KLQogLy8gSGVyZSwgIkxlYWRpbmci
IGFuZCAiVHJhaWxpbmciIGFyZSByZWxldmFudCBhZnRlciB0aGUgbGluZSBoYXMgYmVlbiByZWFy
cmFuZ2VkIGZvciBiaWRpLgogLy8gKCJMZWFkaW5nIiBtZWFucyAibGVmdCIgYW5kICJUcmFpbGlu
ZyIgbWVhbnMgInJpZ2h0LiIpCiBlbnVtIEV4cGFuc2lvbkJlaGF2aW9yRmxhZ3MgewpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvV3JpdGluZ01vZGUuaAkocmV2aXNpb24gMTg0
OTAzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoYykgMjAxMiwgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSwgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQpAQCAtMzMsMjYgKzM0LDgzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZW51
bSBUZXh0RGlyZWN0aW9uIHsgTFRSLCBSVEwgfTsKKworaW5saW5lIGJvb2wgaXNMZWZ0VG9SaWdo
dERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICByZXR1cm4gZGlyZWN0
aW9uID09IExUUjsKK30KKwogZW51bSBXcml0aW5nTW9kZSB7Ci0gICAgVG9wVG9Cb3R0b21Xcml0
aW5nTW9kZSwgUmlnaHRUb0xlZnRXcml0aW5nTW9kZSwgTGVmdFRvUmlnaHRXcml0aW5nTW9kZSwg
Qm90dG9tVG9Ub3BXcml0aW5nTW9kZQorICAgIFRvcFRvQm90dG9tV3JpdGluZ01vZGUgPSAwLCAv
LyBob3Jpem9udGFsLXRiCisgICAgQm90dG9tVG9Ub3BXcml0aW5nTW9kZSA9IDEsIC8vIGhvcml6
b250YWwtYnQKKyAgICBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlID0gMiwgLy8gdmVydGljYWwtbHIK
KyAgICBSaWdodFRvTGVmdFdyaXRpbmdNb2RlID0gMywgLy8gdmVydGljYWwtcmwKIH07CiAKLS8v
IExpbmVzIGhhdmUgaG9yaXpvbnRhbCBvcmllbnRhdGlvbjsgbW9kZXMgaG9yaXpvbnRhbC10YiBv
ciBob3Jpem9udGFsLWJ0LgotaW5saW5lIGJvb2wgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoV3Jp
dGluZ01vZGUgd3JpdGluZ01vZGUpCisjZGVmaW5lIE1BS0VfVEVYVF9GTE9XKHdyaXRpbmdNb2Rl
LCBkaXJlY3Rpb24pICAoKHdyaXRpbmdNb2RlKSA8PCAxIHwgKGRpcmVjdGlvbikpCisKKy8vIERl
ZmluZSB0aGUgdGV4dCBmbG93IGluIHRlcm1zIG9mIHRoZSB3cml0aW5nIG1vZGUgYW5kIHRoZSB0
ZXh0IGRpcmVjdGlvbi4gVGhlIGZpcnN0CisvLyBwYXJ0IGlzIHRoZSBsaW5lIGdyb3dpbmcgZGly
ZWN0aW9uIGFuZCB0aGUgc2Vjb25kIHBhcnQgaXMgdGhlIGJsb2NrIGdyb3dpbmcgZGlyZWN0aW9u
LgorZW51bSBUZXh0RmxvdyB7CisgICAgSW5saW5lRWFzdEJsb2NrU291dGggPSBNQUtFX1RFWFRf
RkxPVyhUb3BUb0JvdHRvbVdyaXRpbmdNb2RlLCBMVFIpLAorICAgIElubGluZVdlc3RCbG9ja1Nv
dXRoID0gTUFLRV9URVhUX0ZMT1coVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwgUlRMKSwKKyAgICBJ
bmxpbmVFYXN0QmxvY2tOb3J0aCA9IE1BS0VfVEVYVF9GTE9XKEJvdHRvbVRvVG9wV3JpdGluZ01v
ZGUsIExUUiksCisgICAgSW5saW5lV2VzdEJsb2NrTm9ydGggPSBNQUtFX1RFWFRfRkxPVyhCb3R0
b21Ub1RvcFdyaXRpbmdNb2RlLCBSVEwpLAorICAgIElubGluZVNvdXRoQmxvY2tFYXN0ID0gTUFL
RV9URVhUX0ZMT1coTGVmdFRvUmlnaHRXcml0aW5nTW9kZSwgTFRSKSwKKyAgICBJbmxpbmVTb3V0
aEJsb2NrV2VzdCA9IE1BS0VfVEVYVF9GTE9XKExlZnRUb1JpZ2h0V3JpdGluZ01vZGUsIFJUTCks
CisgICAgSW5saW5lTm9ydGhCbG9ja0Vhc3QgPSBNQUtFX1RFWFRfRkxPVyhSaWdodFRvTGVmdFdy
aXRpbmdNb2RlLCBMVFIpLAorICAgIElubGluZU5vcnRoQmxvY2tXZXN0ID0gTUFLRV9URVhUX0ZM
T1coUmlnaHRUb0xlZnRXcml0aW5nTW9kZSwgUlRMKQorfTsKKworaW5saW5lIFRleHRGbG93IG1h
a2VUZXh0RmxvdyhXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rp
b24pCiB7Ci0gICAgcmV0dXJuIHdyaXRpbmdNb2RlID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUg
fHwgd3JpdGluZ01vZGUgPT0gQm90dG9tVG9Ub3BXcml0aW5nTW9kZTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VGV4dEZsb3c+KE1BS0VfVEVYVF9GTE9XKHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24p
KTsKIH0KIAotLy8gQm90dG9tIG9mIHRoZSBsaW5lIG9jY3VycyBlYXJsaWVyIGluIHRoZSBibG9j
azsgbW9kZXMgdmVydGljYWwtbHIgb3IgaG9yaXpvbnRhbC1idC4KLWlubGluZSBib29sIGlzRmxp
cHBlZExpbmVzV3JpdGluZ01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCisjdW5kZWYgTUFL
RV9URVhUX0ZMT1cKKworY29uc3QgdW5zaWduZWQgVGV4dEZsb3dSZXZlcnNlZE1hc2sgPSAxOwor
Y29uc3QgdW5zaWduZWQgVGV4dEZsb3dGbGlwcGVkTWFzayA9IDI7Citjb25zdCB1bnNpZ25lZCBU
ZXh0Rmxvd1ZlcnRpY2FsTWFzayA9IDQ7CisKK2lubGluZSBib29sIGlzUmV2ZXJzZWRUZXh0Rmxv
dyhUZXh0RmxvdyB0ZXh0ZmxvdykKIHsKLSAgICByZXR1cm4gd3JpdGluZ01vZGUgPT0gTGVmdFRv
UmlnaHRXcml0aW5nTW9kZSB8fCB3cml0aW5nTW9kZSA9PSBCb3R0b21Ub1RvcFdyaXRpbmdNb2Rl
OworICAgIHJldHVybiB0ZXh0ZmxvdyAmIFRleHRGbG93UmV2ZXJzZWRNYXNrOworfQorCitpbmxp
bmUgYm9vbCBpc0ZsaXBwZWRUZXh0RmxvdyhUZXh0RmxvdyB0ZXh0ZmxvdykKK3sKKyAgICByZXR1
cm4gdGV4dGZsb3cgJiBUZXh0Rmxvd0ZsaXBwZWRNYXNrOworfQorCitpbmxpbmUgYm9vbCBpc1Zl
cnRpY2FsVGV4dEZsb3coVGV4dEZsb3cgdGV4dGZsb3cpCit7CisgICAgcmV0dXJuIHRleHRmbG93
ICYgVGV4dEZsb3dWZXJ0aWNhbE1hc2s7Cit9CisKKy8vIExpbmVzIGhhdmUgdmVydGljYWwgb3Jp
ZW50YXRpb247IG1vZGVzIHZlcnRpY2FsLWxyIG9yIHZlcnRpY2FsLXJsLgoraW5saW5lIGJvb2wg
aXNWZXJ0aWNhbFdyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQoreworICAgIHJl
dHVybiBpc1ZlcnRpY2FsVGV4dEZsb3cobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBMVFIpKTsK
IH0KIAogLy8gQmxvY2sgcHJvZ3Jlc3Npb24gaW5jcmVhc2VzIGluIHRoZSBvcHBvc2l0ZSBkaXJl
Y3Rpb24gdG8gbm9ybWFsOyBtb2RlcyB2ZXJ0aWNhbC1ybCBvciBob3Jpem9udGFsLWJ0LgotaW5s
aW5lIGJvb2wgaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01v
ZGUpCitpbmxpbmUgYm9vbCBpc0ZsaXBwZWRXcml0aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5n
TW9kZSkKK3sKKyAgICByZXR1cm4gaXNGbGlwcGVkVGV4dEZsb3cobWFrZVRleHRGbG93KHdyaXRp
bmdNb2RlLCBMVFIpKTsKK30KKworLy8gTGluZXMgaGF2ZSBob3Jpem9udGFsIG9yaWVudGF0aW9u
OyBtb2RlcyBob3Jpem9udGFsLXRiIG9yIGhvcml6b250YWwtYnQuCitpbmxpbmUgYm9vbCBpc0hv
cml6b250YWxXcml0aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkKK3sKKyAgICByZXR1
cm4gIWlzVmVydGljYWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSk7Cit9CisKKy8vIEJvdHRvbSBv
ZiB0aGUgbGluZSBvY2N1cnMgZWFybGllciBpbiB0aGUgYmxvY2s7IG1vZGVzIHZlcnRpY2FsLWxy
IG9yIGhvcml6b250YWwtYnQuCitpbmxpbmUgYm9vbCBpc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2Rl
KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQogewotICAgIHJldHVybiB3cml0aW5nTW9kZSA9PSBS
aWdodFRvTGVmdFdyaXRpbmdNb2RlIHx8IHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGlu
Z01vZGU7CisgICAgcmV0dXJuIGlzVmVydGljYWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgIT0g
aXNGbGlwcGVkV3JpdGluZ01vZGUod3JpdGluZ01vZGUpOwogfQogCiBlbnVtIExvZ2ljYWxCb3hT
aWRlIHsKQEAgLTcwLDYgKzEyOCw0NSBAQCBlbnVtIFBoeXNpY2FsQm94U2lkZSB7CiAgICAgTGVm
dFNpZGUKIH07CiAKK2lubGluZSBib29sIGlzSG9yaXpvbnRhbFBoeXNpY2FsU2lkZShQaHlzaWNh
bEJveFNpZGUgcGh5c2ljYWxTaWRlKQoreworICAgIHJldHVybiBwaHlzaWNhbFNpZGUgPT0gTGVm
dFNpZGUgfHwgcGh5c2ljYWxTaWRlID09IFJpZ2h0U2lkZTsKK30KKworaW5saW5lIFBoeXNpY2Fs
Qm94U2lkZSBtaXJyb3JQaHlzaWNhbFNpZGUoUGh5c2ljYWxCb3hTaWRlIHBoeXNpY2FsU2lkZSkK
K3sKKyAgICAvLyB0b3AgPC0+IGJvdHRvbSBhbmQgbGVmdCA8LT4gcmlnaHQgY29udmVyc2lvbgor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxQaHlzaWNhbEJveFNpZGU+KChzdGF0aWNfY2FzdDxpbnQ+
KHBoeXNpY2FsU2lkZSkgKyAyKSAlIDQpOworfQorCitpbmxpbmUgUGh5c2ljYWxCb3hTaWRlIHJv
dGF0ZVBoeXNpY2FsU2lkZShQaHlzaWNhbEJveFNpZGUgcGh5c2ljYWxTaWRlKQoreworICAgIC8v
IHRvcCA8LT4gbGVmdCBhbmQgcmlnaHQgPC0+IGJvdHRvbSBjb252ZXJzaW9uCisgICAgYm9vbCBo
b3Jpem9udGFsU2lkZSA9IGlzSG9yaXpvbnRhbFBoeXNpY2FsU2lkZShwaHlzaWNhbFNpZGUpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxQaHlzaWNhbEJveFNpZGU+KChzdGF0aWNfY2FzdDxpbnQ+
KHBoeXNpY2FsU2lkZSkgKyAoaG9yaXpvbnRhbFNpZGUgPyAxIDogMykpICUgNCk7Cit9CisKK2lu
bGluZSBQaHlzaWNhbEJveFNpZGUgbWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShUZXh0Rmxv
dyB0ZXh0ZmxvdywgTG9naWNhbEJveFNpZGUgbG9naWNhbFNpZGUpCit7CisgICAgUGh5c2ljYWxC
b3hTaWRlIHBoeXNpY2FsU2lkZSA9IHN0YXRpY19jYXN0PFBoeXNpY2FsQm94U2lkZT4obG9naWNh
bFNpZGUpOworICAgIGJvb2wgaG9yaXpvbnRhbFNpZGUgPSBpc0hvcml6b250YWxQaHlzaWNhbFNp
ZGUocGh5c2ljYWxTaWRlKTsKKworICAgIGlmIChpc1ZlcnRpY2FsVGV4dEZsb3codGV4dGZsb3cp
KQorICAgICAgICBwaHlzaWNhbFNpZGUgPSByb3RhdGVQaHlzaWNhbFNpZGUocGh5c2ljYWxTaWRl
KTsKKworICAgIGlmICgoaG9yaXpvbnRhbFNpZGUgJiYgaXNSZXZlcnNlZFRleHRGbG93KHRleHRm
bG93KSkgfHwgKCFob3Jpem9udGFsU2lkZSAmJiBpc0ZsaXBwZWRUZXh0Rmxvdyh0ZXh0Zmxvdykp
KQorICAgICAgICBwaHlzaWNhbFNpZGUgPSBtaXJyb3JQaHlzaWNhbFNpZGUocGh5c2ljYWxTaWRl
KTsKKworICAgIHJldHVybiBwaHlzaWNhbFNpZGU7Cit9CisKK2lubGluZSBQaHlzaWNhbEJveFNp
ZGUgbWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwg
TG9naWNhbEJveFNpZGUgbG9naWNhbFNpZGUpCit7CisgICAgLy8gU2V0IHRoZSBkaXJlY3Rpb24g
c3VjaCB0aGF0IHNpZGUgaXMgbWlycm9yZWQgaWYgaXNGbGlwcGVkV3JpdGluZ01vZGUoKSBpcyB0
cnVlCisgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBpc0ZsaXBwZWRXcml0aW5nTW9kZSh3
cml0aW5nTW9kZSkgPyBSVEwgOiBMVFI7CisgICAgcmV0dXJuIG1hcExvZ2ljYWxTaWRlVG9QaHlz
aWNhbFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBsb2dpY2FsU2lk
ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFdyaXRpbmdNb2Rl
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uU2V0LmNwcAkocmV2aXNpb24gMTg0OTAzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzk5LDcgKzc5OSw3
IEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmNvbGxlY3RMYXllckYKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBibG9ja09mZnNldCAtPSBpICogKGNvbXB1dGVkQ29sdW1u
SGVpZ2h0KCkgKyBjb2xHYXApOwogICAgICAgICB9Ci0gICAgICAgIGlmIChpc0ZsaXBwZWRCbG9j
a3NXcml0aW5nTW9kZShzdHlsZSgpLndyaXRpbmdNb2RlKCkpKQorICAgICAgICBpZiAoaXNGbGlw
cGVkV3JpdGluZ01vZGUoc3R5bGUoKS53cml0aW5nTW9kZSgpKSkKICAgICAgICAgICAgIGJsb2Nr
T2Zmc2V0ID0gLWJsb2NrT2Zmc2V0OwogICAgICAgICB0cmFuc2xhdGlvbk9mZnNldC5zZXRIZWln
aHQoYmxvY2tPZmZzZXQpOwogICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkp
CkBAIC04NTEsNyArODUxLDcgQEAgTGF5b3V0UG9pbnQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmNv
bHVtbgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBibG9ja09mZnNldCAtPSBzdGFydENvbHVt
biAqIChjb21wdXRlZENvbHVtbkhlaWdodCgpICsgY29sR2FwKTsKICAgICB9Ci0gICAgaWYgKGlz
RmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKHN0eWxlKCkud3JpdGluZ01vZGUoKSkpCisgICAgaWYg
KGlzRmxpcHBlZFdyaXRpbmdNb2RlKHN0eWxlKCkud3JpdGluZ01vZGUoKSkpCiAgICAgICAgIGJs
b2NrT2Zmc2V0ID0gLWJsb2NrT2Zmc2V0OwogICAgIHRyYW5zbGF0aW9uT2Zmc2V0LnNldFkoYmxv
Y2tPZmZzZXQpOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZS5jcHAJKHJldmlzaW9uIDE4NDkwMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBp
bmxpbmUgRmxvYXRSZWN0IHBoeXNpY2FsUmVjdFRvTG8KIHsKICAgICBpZiAoaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUod3JpdGluZ01vZGUpKQogICAgICAgICByZXR1cm4gcmVjdDsKLSAgICBpZiAo
aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUod3JpdGluZ01vZGUpKQorICAgIGlmIChpc0ZsaXBw
ZWRXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkpCiAgICAgICAgIHJldHVybiBGbG9hdFJlY3QocmVj
dC55KCksIGxvZ2ljYWxCb3hIZWlnaHQgLSByZWN0Lm1heFgoKSwgcmVjdC5oZWlnaHQoKSwgcmVj
dC53aWR0aCgpKTsKICAgICByZXR1cm4gcmVjdC50cmFuc3Bvc2VkUmVjdCgpOwogfQpAQCAtNzgs
NyArNzgsNyBAQCBzdGF0aWMgaW5saW5lIEZsb2F0UG9pbnQgcGh5c2ljYWxQb2ludFRvCiB7CiAg
ICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSkKICAgICAgICAgcmV0
dXJuIHBvaW50OwotICAgIGlmIChpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSh3cml0aW5nTW9k
ZSkpCisgICAgaWYgKGlzRmxpcHBlZFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSkKICAgICAgICAg
cmV0dXJuIEZsb2F0UG9pbnQocG9pbnQueSgpLCBsb2dpY2FsQm94SGVpZ2h0IC0gcG9pbnQueCgp
KTsKICAgICByZXR1cm4gcG9pbnQudHJhbnNwb3NlZFBvaW50KCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMTg0OTAz
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExMzYsNyArMTEzNiw3IEBAIHB1YmxpYzoKICAgICBXcml0aW5nTW9kZSB3
cml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFdyaXRpbmdNb2RlPihpbmhl
cml0ZWRfZmxhZ3MubV93cml0aW5nTW9kZSk7IH0KICAgICBib29sIGlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6aXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
d3JpdGluZ01vZGUoKSk7IH0KICAgICBib29sIGlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSBj
b25zdCB7IHJldHVybiBXZWJDb3JlOjppc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKHdyaXRpbmdN
b2RlKCkpOyB9Ci0gICAgYm9vbCBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIFdlYkNvcmU6OmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKCkp
OyB9CisgICAgYm9vbCBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IFdlYkNvcmU6OmlzRmxpcHBlZFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKCkpOyB9CiAKICNpZiBF
TkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgIEltYWdlT3JpZW50YXRpb25FbnVtIGlt
YWdlT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZU9yaWVudGF0
aW9uRW51bT4ocmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VPcmllbnRhdGlvbik7IH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4NDk1OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE1LTA1LTI4ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29kZSBjbGVhbiB1cCBm
b3IgZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtaXggb2YgV3JpdGluZ01vZGUgYW5k
IFRleHREaXJlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MzM5OQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgICogU2hhcmVkL1dlYlBvcHVwSXRlbS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9l
ZmwvV0tBUElDYXN0RWZsLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBvcHVwTWVudVByb3h5
Lmg6CisgICAgICAgIGVudW0gVGV4dERpcmVjdGlvbiBpcyBtb3ZlZCBmcm9tIFRleHRGbGFncy5o
IHRvIFdyaXRpbmdNb2RlLmguIFNvIGluY2x1ZGUKKyAgICAgICAgV3JpdGluZ01vZGUuaCBpbnN0
ZWFkIG9mIGluY2x1ZGluZyBUZXh0RmxhZ3MuaC4KKwogMjAxNS0wNS0yOCAgTWF0dCBSYWpjYSAg
PG1yYWpjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEVOQUJMRV9NRURJQV9TRVNTSU9OIGZl
YXR1cmUgZmxhZyAod2hpY2ggaXMgb2ZmIGJ5IGRlZmF1bHQpLgpJbmRleDogU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQb3B1cEl0ZW0uaAkocmV2aXNpb24gMTg0OTAzKQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlBvcHVwSXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAj
aWZuZGVmIFdlYlBvcHVwSXRlbV9oCiAjZGVmaW5lIFdlYlBvcHVwSXRlbV9oCiAKLSNpbmNsdWRl
IDxXZWJDb3JlL1RleHRGbGFncy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV3JpdGluZ01vZGUuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIElQQyB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUG9wdXBNZW51UHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUG9wdXBNZW51UHJveHkuaAkocmV2aXNp
b24gMTg0OTAzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBvcHVwTWVudVByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgV2ViUG9wdXBNZW51
UHJveHlfaAogI2RlZmluZSBXZWJQb3B1cE1lbnVQcm94eV9oCiAKLSNpbmNsdWRlIDxXZWJDb3Jl
L1RleHRGbGFncy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV3JpdGluZ01vZGUuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2Vm
bC9XS0FQSUNhc3RFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvZWZsL1dLQVBJQ2FzdEVmbC5oCShyZXZpc2lvbiAxODQ5MDMpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLQVBJQ2FzdEVmbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw3ICsyNCw3IEBACiAjZXJyb3IgIlBsZWFzZSAjaW5jbHVkZSBcIldLQVBJQ2FzdC5oXCIg
aW5zdGVhZCBvZiB0aGlzIGZpbGUgZGlyZWN0bHkuIgogI2VuZGlmCiAKLSNpbmNsdWRlIDxXZWJD
b3JlL1RleHRGbGFncy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV3JpdGluZ01vZGUuaD4KICNpbmNs
dWRlIDxXZWJLaXQvV0tQb3B1cEl0ZW0uaD4KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>