<?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>213981</bug_id>
          
          <creation_ts>2020-07-05 20:20:15 -0700</creation_ts>
          <short_desc>Part 2 of SimpleColor and SRGBA&lt;uint8_t&gt; are essentially the same - let&apos;s converge them</short_desc>
          <delta_ts>2020-07-07 17:58:07 -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>Platform</component>
          <version>WebKit 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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1668964</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-05 20:20:15 -0700</bug_when>
    <thetext>Part 2 of SimpleColor and SRGBA&lt;uint8_t&gt; are essentially the same - let&apos;s converge them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668965</commentid>
    <comment_count>1</comment_count>
      <attachid>403571</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-05 20:22:15 -0700</bug_when>
    <thetext>Created attachment 403571
Checkpoint

A bit of noodling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668968</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-05 20:50:52 -0700</bug_when>
    <thetext>Goals for this stage:
- Remove uses of SimpleColor class that are not implementation details of Color. 
    - Mostly replacing them with direct use of SRGBA&lt;uint8_t&gt; either explicitly or by using auto. 
- Remove implicit conversions from ARGB8888 uint32_ts to SimpleColor
    - Replaced by explicit use of asSRGBA(Packed::ARGB { value }) to get a SRGBA&lt;uint8_t&gt; where the value is not a constant
    - Replaced by either SRGBA&lt;uint8_t&gt;(uint8_t, uint8_t, uint8_t, uint8_t) or the very incorrectly named makeSimpleColor() (as it now returns a SRGBA&lt;uint8_t&gt;).


- Current change has makeSimpleColor(SRGBA&lt;float&gt;) being replaced by convertToComponentBytesLossy(SRGBA&lt;float&gt;). I think the latter needs a better name and to look more cast-like. I want to keep the &quot;Lossy&quot;, as I think many of these sites are unnecessarily getting rid of the precision. Perhaps convertToLossy&lt;SRGBA&lt;uint8_t&gt;&gt;(SRGBA&lt;float&gt;)? Maybe convertTo&lt;SRGBA&lt;uint8_t&gt;&gt;(SRGBA&lt;float&gt;) is nicer?

- As noted above, the current change still has makeSimpleColor(int, int, int, int), but it now returns SRGBA&lt;uint8_t&gt;. Many callers, specifically the ones passing constants, could probably switch to just using SRGBA&lt;uint8_t&gt; { int, int, int, int }, which has the benefit of being very clear what color space and component type is being created. Non-constant users should likely switch to clampToComponentBytes&lt;SRGBA&lt;uint8_t&gt;&gt;(int, int, int, int).

- To keep support for the Color::yellow.colorWithAlpha(...) and switching on Color::white.value() idioms, I added a new type, tentatively called ConstexprColor which wraps a SRGBA&lt;uint8_t&gt; and exposes the needed functionality. This needs more iteration. I think the ideal solution would be to make Color itself constexpr-able, and have Color::yellow return a Color. Not sure how feasible that is.

Regardless of all this, probably want to break this up a bit. I think maybe a good first step here will be just removing the SimpleColor constructor that takes an unsigned, and updating all callers to pass each component or convert to SRGBA&lt;uint8_t&gt; first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669288</commentid>
    <comment_count>3</comment_count>
      <attachid>403650</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-06 18:27:53 -0700</bug_when>
    <thetext>Created attachment 403650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669291</commentid>
    <comment_count>4</comment_count>
      <attachid>403651</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-06 18:36:50 -0700</bug_when>
    <thetext>Created attachment 403651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669294</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-06 18:47:54 -0700</bug_when>
    <thetext>I decided to focus on getting rid of the ARGB heritage of SimpleColor for this change. That means:

- Remove SimpleColor constructor taking a uint32_t.
- Remove SimpleColor functions value() and valueAsARGB() (both did the same thing).
- Replace internal representation with SRGBA&lt;uint8_t&gt;.

In practice, this meant finding all the call sites that used long hex constants to hard code a color, and switching them to calling makeSimpleColor with the individual components instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669299</commentid>
    <comment_count>6</comment_count>
      <attachid>403655</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-06 19:31:59 -0700</bug_when>
    <thetext>Created attachment 403655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669431</commentid>
    <comment_count>7</comment_count>
      <attachid>403700</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-07 09:38:20 -0700</bug_when>
    <thetext>Created attachment 403700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669446</commentid>
    <comment_count>8</comment_count>
      <attachid>403700</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-07 10:05:48 -0700</bug_when>
    <thetext>Comment on attachment 403700
Patch

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

Seems like a step in the right direction.

&gt; Source/WebCore/ChangeLog:12
&gt; +        - Replaces internal representation of SimpleColor based on an ARGB uint32_t with SRGBA&lt;uint8_t&gt;.
&gt; +        - Removes SimpleColor constructor taking a uint32_t. Callers that still need to convert from ARGB
&gt; +          now do makeSimpleColor(asSRGBA(Packed::ARGB { value })).
&gt; +        - Removes value() and valueAsARGB() member functions from SimpleColor. Callers that need a packed
&gt; +          representation now do Packed::ARGB { simpleColor.asSRGBA&lt;uint8_t&gt;() }.value.

Not sure these all 3 had to happen in a single patch. This is not huge, but a Iittle bigger than the idea size to review.

&gt; Source/WebCore/editing/CompositionHighlight.h:45
&gt; +    static constexpr auto defaultCompositionFillColor = makeSimpleColor(0xE1, 0xDD, 0x55, 0xFF);

No need for the explicit 0xFF alpha.

&gt; Source/WebCore/page/cocoa/ResourceUsageOverlayCocoa.mm:131
&gt; +    HistoricMemoryCategoryInfo(unsigned category, SimpleColor simpleColor, String name, bool subcategory = false)

I totally would have named the argument just &quot;color&quot;; the harmless name conflict would not have caused trouble. But I’m not sure I want to convince you to do it.

&gt; Source/WebCore/page/cocoa/ResourceUsageOverlayCocoa.mm:174
&gt; +    categories[MemoryCategory::JSJIT] = HistoricMemoryCategoryInfo(MemoryCategory::JSJIT, makeSimpleColor(0xFF, 0x60, 0xFF, 0xFF), &quot;JS JIT&quot;);
&gt; +    categories[MemoryCategory::Gigacage] = HistoricMemoryCategoryInfo(MemoryCategory::Gigacage, makeSimpleColor(0x65, 0x4F, 0xF0, 0xFF), &quot;Gigacage&quot;);
&gt; +    categories[MemoryCategory::Images] = HistoricMemoryCategoryInfo(MemoryCategory::Images, makeSimpleColor(0xFF, 0xFF, 0x00, 0xFF), &quot;Images&quot;);
&gt; +    categories[MemoryCategory::Layers] = HistoricMemoryCategoryInfo(MemoryCategory::Layers, makeSimpleColor(0x00, 0xFF, 0xFF, 0xFF), &quot;Layers&quot;);
&gt; +    categories[MemoryCategory::LibcMalloc] = HistoricMemoryCategoryInfo(MemoryCategory::LibcMalloc, makeSimpleColor(0x00, 0xFF, 0x00, 0xFF), &quot;libc malloc&quot;);
&gt; +    categories[MemoryCategory::bmalloc] = HistoricMemoryCategoryInfo(MemoryCategory::bmalloc, makeSimpleColor(0xFF, 0x60, 0x60, 0xFF), &quot;bmalloc&quot;);
&gt; +    categories[MemoryCategory::IsoHeap] = HistoricMemoryCategoryInfo(MemoryCategory::IsoHeap, makeSimpleColor(0x80, 0x9F, 0x40, 0xFF), &quot;IsoHeap&quot;);
&gt; +    categories[MemoryCategory::Other] = HistoricMemoryCategoryInfo(MemoryCategory::Other, makeSimpleColor(0xC0, 0xFF, 0x00, 0xFF), &quot;Other&quot;);
&gt;  
&gt;      // Sub categories (e.g breakdown of bmalloc tag.)
&gt; -    categories[MemoryCategory::GCHeap] = HistoricMemoryCategoryInfo(MemoryCategory::GCHeap, 0xFFA0A0FF, &quot;GC heap&quot;, true);
&gt; -    categories[MemoryCategory::GCOwned] = HistoricMemoryCategoryInfo(MemoryCategory::GCOwned, 0xFFFFC060, &quot;GC owned&quot;, true);
&gt; +    categories[MemoryCategory::GCHeap] = HistoricMemoryCategoryInfo(MemoryCategory::GCHeap, makeSimpleColor(0xA0, 0xA0, 0xFF, 0xFF), &quot;GC heap&quot;, true);
&gt; +    categories[MemoryCategory::GCOwned] = HistoricMemoryCategoryInfo(MemoryCategory::GCOwned, makeSimpleColor(0xFF, 0xC0, 0x60, 0xFF), &quot;GC owned&quot;, true);

No need for the explicit 0xFF alpha.

&gt; Source/WebCore/platform/graphics/Color.cpp:40
&gt; +static constexpr auto lightenedBlack = makeSimpleColor(0x54, 0x54, 0x54, 0xFF);
&gt; +static constexpr auto darkenedWhite = makeSimpleColor(0xAB, 0xAB, 0xAB, 0xFF);

No need for the explicit 0xFF alpha.

&gt; Source/WebCore/platform/graphics/SimpleColor.h:110
&gt; +constexpr SimpleColor makeSimpleColor(int r, int g, int b)

This clamps silently. Consider changing the argument types to uint8_t. Perhaps will need overloading so we don’t silently chop instead of clamping?

&gt; Source/WebCore/platform/graphics/SimpleColor.h:115
&gt; +constexpr SimpleColor makeSimpleColor(int r, int g, int b, int a)

Ditto.

&gt; Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp:271
&gt; +    static constexpr auto magenta = makeSimpleColor(0xFF, 0x00, 0xFF, 0xFF);
&gt; +    static constexpr auto blue = makeSimpleColor(0x00, 0x00, 0xFF, 0xFF);
&gt; +    static constexpr auto red = makeSimpleColor(0xFF, 0x00, 0x00, 0xFF);
&gt; +    static constexpr auto darkGreen = makeSimpleColor(0x00, 0x80, 0x00, 0xFF);

No need for the explicit 0xFF alpha.

&gt; Source/WebCore/rendering/RenderObject.cpp:1809
&gt; +    constexpr float baseDarkColorLuminance { 0.014443844f }; // Luminance of SRGBA&lt;uint8_t&gt; { 0x20, 0x20, 0x20, 0xFF }
&gt; +    constexpr float baseLightColorLuminance { 0.83077f }; // Luminance of SRGBA&lt;uint8_t&gt; { 0xEB, 0xEB, 0xEB, 0xFF }

No need for the explicit 0xFF alpha.

&gt; Source/WebCore/rendering/RenderThemeMac.mm:2426
&gt; +constexpr auto attachmentTitleInactiveBackgroundColor = makeSimpleColor(204, 204, 204, 255);
&gt; +constexpr auto attachmentTitleInactiveTextColor = makeSimpleColor(100, 100, 100, 255);

No need for the explicit 255 alpha.

&gt; Source/WebCore/rendering/RenderThemeMac.mm:2430
&gt; +constexpr auto attachmentSubtitleTextColor = makeSimpleColor(82, 145, 214, 255);

No need for the explicit 255 alpha.

&gt; Source/WebKitLegacy/win/FullscreenVideoController.cpp:81
&gt; +static constexpr auto textColor = makeSimpleColor(0xFF, 0xFF, 0xFF);

No need for the explicit 0XFF alpha.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669498</commentid>
    <comment_count>9</comment_count>
      <attachid>403713</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-07 12:58:13 -0700</bug_when>
    <thetext>Created attachment 403713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669511</commentid>
    <comment_count>10</comment_count>
      <attachid>403717</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-07 13:33:04 -0700</bug_when>
    <thetext>Created attachment 403717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669537</commentid>
    <comment_count>11</comment_count>
      <attachid>403700</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-07 14:35:50 -0700</bug_when>
    <thetext>Comment on attachment 403700
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderObject.cpp:1809
&gt;&gt; +    constexpr float baseLightColorLuminance { 0.83077f }; // Luminance of SRGBA&lt;uint8_t&gt; { 0xEB, 0xEB, 0xEB, 0xFF }
&gt; 
&gt; No need for the explicit 0xFF alpha.

Heh, this particular explicit alpha is in a comment, and in place where it’s not optional, I think!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669572</commentid>
    <comment_count>12</comment_count>
      <attachid>403717</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-07 15:53:26 -0700</bug_when>
    <thetext>Comment on attachment 403717
Patch

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

&gt; Source/WebCore/platform/graphics/ColorUtilities.h:57
&gt; +constexpr uint8_t clampToComponentByte(int c)

Word instead of letter?

&gt; Source/WebCore/platform/graphics/ColorUtilities.h:59
&gt; +    return static_cast&lt;uint8_t&gt;(std::clamp(c, 0, 0xFF));

I think this can be written:

    return clampTo&lt;uint8_t&gt;(c);

We have this clampTo template in our MathExtras.h file (or some other WTF file).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669603</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-07 17:53:14 -0700</bug_when>
    <thetext>Committed r264050: &lt;https://trac.webkit.org/changeset/264050&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403717.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669604</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-07 17:54:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/65201889&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669607</commentid>
    <comment_count>15</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-07 17:58:07 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #12)
&gt; Comment on attachment 403717 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=403717&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ColorUtilities.h:57
&gt; &gt; +constexpr uint8_t clampToComponentByte(int c)
&gt; 
&gt; Word instead of letter?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ColorUtilities.h:59
&gt; &gt; +    return static_cast&lt;uint8_t&gt;(std::clamp(c, 0, 0xFF));
&gt; 
&gt; I think this can be written:
&gt; 
&gt;     return clampTo&lt;uint8_t&gt;(c);
&gt; 
&gt; We have this clampTo template in our MathExtras.h file (or some other WTF
&gt; file).

Oops, sorry, didn&apos;t see these before landing. Will address these in the next part.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403571</attachid>
            <date>2020-07-05 20:22:15 -0700</date>
            <delta_ts>2020-07-06 18:27:50 -0700</delta_ts>
            <desc>Checkpoint</desc>
            <filename>makeSimpleOut.diff</filename>
            <type>text/plain</type>
            <size>100163</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01SR0JDb2xvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01SR0JDb2xvci5oCShy
ZXZpc2lvbiAyNjM5NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZENTU09NUkdC
Q29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgRGVw
cmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUmIGJsdWUoKSB7IHJldHVybiBtX2JsdWU7IH0KICAg
ICBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZSYgYWxwaGEoKSB7IHJldHVybiBtX2FscGhh
OyB9CiAKLSAgICBTaW1wbGVDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1ha2VTaW1wbGVD
b2xvcihtX2NvbG9yKTsgfQorICAgIENvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xv
cjsgfQogCiBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE51bWJlclR5cGU+IHN0YXRp
YyBSZWY8RGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVdyYXBwZXIoQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgb3duZXIsIE51bWJlclR5cGUgbnVtYmVyKQpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZUNvbG9yLmNwcAkocmV2aXNpb24gMjYzOTUzKQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIENvbG9yIFN0
eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdvcmQoQ1NTVmEKIHsKICAgICBpZiAoY29uc3QgY2hhciog
dmFsdWVOYW1lID0gZ2V0VmFsdWVOYW1lKGtleXdvcmQpKSB7CiAgICAgICAgIGlmIChjb25zdCBO
YW1lZENvbG9yKiBuYW1lZENvbG9yID0gZmluZENvbG9yKHZhbHVlTmFtZSwgc3RybGVuKHZhbHVl
TmFtZSkpKQotICAgICAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgbmFtZWRDb2xvci0+QVJH
QlZhbHVlIH07CisgICAgICAgICAgICByZXR1cm4gYXNTUkdCQShQYWNrZWQ6OkFSR0IgeyBuYW1l
ZENvbG9yLT5BUkdCVmFsdWUgfSk7CiAgICAgfQogCiAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpz
aW5nbGV0b24oKS5zeXN0ZW1Db2xvcihrZXl3b3JkLCBvcHRpb25zKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDI2Mzk1MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0
LDEyICsxMjQsMTIgQEAgQ29sb3IgQ1NTUGFyc2VyOjpwYXJzZVN5c3RlbUNvbG9yKFN0cmluZwog
ICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc3lzdGVtQ29sb3Ioa2V5d29yZCwg
eyB9KTsKIH0KIAotT3B0aW9uYWw8U2ltcGxlQ29sb3I+IENTU1BhcnNlcjo6cGFyc2VOYW1lZENv
bG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQorT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IENTU1BhcnNl
cjo6cGFyc2VOYW1lZENvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIHJldHVybiBDU1NQ
YXJzZXJGYXN0UGF0aHM6OnBhcnNlTmFtZWRDb2xvcihzdHJpbmcpOwogfQogCi1PcHRpb25hbDxT
aW1wbGVDb2xvcj4gQ1NTUGFyc2VyOjpwYXJzZUhleENvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQor
T3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IENTU1BhcnNlcjo6cGFyc2VIZXhDb2xvcihTdHJpbmdW
aWV3IHN0cmluZykKIHsKICAgICByZXR1cm4gQ1NTUGFyc2VyRmFzdFBhdGhzOjpwYXJzZUhleENv
bG9yKHN0cmluZyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmgJ
KHJldmlzaW9uIDI2Mzk1MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDExICszNywxMSBAQCBjbGFzcyBDb2xvcjsKIGNsYXNz
IEVsZW1lbnQ7CiBjbGFzcyBJbW11dGFibGVTdHlsZVByb3BlcnRpZXM7CiBjbGFzcyBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzOwotY2xhc3MgU2ltcGxlQ29sb3I7CiBjbGFzcyBTdHlsZVJ1bGVCYXNl
OwogY2xhc3MgU3R5bGVSdWxlS2V5ZnJhbWU7CiBjbGFzcyBTdHlsZVNoZWV0Q29udGVudHM7CiBj
bGFzcyBSZW5kZXJTdHlsZTsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgU1JHQkE7CiAKIG5h
bWVzcGFjZSBTdHlsZSB7CiBjbGFzcyBCdWlsZGVyU3RhdGU7CkBAIC04OCw4ICs4OCw4IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvcihjb25zdCBT
dHJpbmcmLCBib29sIHN0cmljdCA9IGZhbHNlKTsKICAgICBzdGF0aWMgQ29sb3IgcGFyc2VDb2xv
cldvcmtlclNhZmUoU3RyaW5nVmlldyk7CiAgICAgc3RhdGljIENvbG9yIHBhcnNlU3lzdGVtQ29s
b3IoU3RyaW5nVmlldyk7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFNpbXBsZUNvbG9yPiBwYXJzZU5h
bWVkQ29sb3IoU3RyaW5nVmlldyk7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFNpbXBsZUNvbG9yPiBw
YXJzZUhleENvbG9yKFN0cmluZ1ZpZXcpOworICAgIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50
OF90Pj4gcGFyc2VOYW1lZENvbG9yKFN0cmluZ1ZpZXcpOworICAgIHN0YXRpYyBPcHRpb25hbDxT
UkdCQTx1aW50OF90Pj4gcGFyc2VIZXhDb2xvcihTdHJpbmdWaWV3KTsKIAogcHJpdmF0ZToKICAg
ICBQYXJzZVJlc3VsdCBwYXJzZVZhbHVlKE11dGFibGVTdHlsZVByb3BlcnRpZXMmLCBDU1NQcm9w
ZXJ0eUlELCBjb25zdCBTdHJpbmcmLCBib29sIGltcG9ydGFudCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCShyZXZpc2lvbiAy
NjM5NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw4ICsyNDksNyBAQCBzdGF0aWMgaW50IHBhcnNlRG91
YmxlKGNvbnN0IENoYXJhY3RlclR5CiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgYm9vbCBwYXJzZUNvbG9ySW50T3JQZXJj
ZW50YWdlKGNvbnN0IENoYXJhY3RlclR5cGUqJiBzdHJpbmcsIGNvbnN0IENoYXJhY3RlclR5cGUq
IGVuZCwgY29uc3QgY2hhciB0ZXJtaW5hdG9yLCBDU1NVbml0VHlwZSYgZXhwZWN0LCBpbnQmIHZh
bHVlKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPHVp
bnQ4X3Q+IHBhcnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY29uc3QgQ2hhcmFjdGVyVHlwZSomIHN0
cmluZywgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kLCBjb25zdCBjaGFyIHRlcm1pbmF0b3IsIENT
U1VuaXRUeXBlJiBleHBlY3QpCiB7CiAgICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogY3VycmVudCA9
IHN0cmluZzsKICAgICBkb3VibGUgbG9jYWxWYWx1ZSA9IDA7CkBAIC0yNjIsNyArMjYxLDcgQEAg
c3RhdGljIGJvb2wgcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjbwogICAgICAgICBjdXJyZW50
Kys7CiAgICAgfQogICAgIGlmIChjdXJyZW50ID09IGVuZCB8fCAhaXNBU0NJSURpZ2l0KCpjdXJy
ZW50KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgIHdoaWxlIChjdXJyZW50ICE9IGVuZCAmJiBpc0FTQ0lJRGlnaXQoKmN1cnJlbnQpKSB7
CiAgICAgICAgIGRvdWJsZSBuZXdWYWx1ZSA9IGxvY2FsVmFsdWUgKiAxMCArICpjdXJyZW50Kysg
LSAnMCc7CiAgICAgICAgIGlmIChuZXdWYWx1ZSA+PSAyNTUpIHsKQEAgLTI3NiwxMCArMjc1LDEw
IEBAIHN0YXRpYyBib29sIHBhcnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY28KICAgICB9CiAKICAg
ICBpZiAoY3VycmVudCA9PSBlbmQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIGlmIChleHBlY3QgPT0gQ1NTVW5pdFR5cGU6OkNTU19O
VU1CRVIgJiYgKCpjdXJyZW50ID09ICcuJyB8fCAqY3VycmVudCA9PSAnJScpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBpZiAoKmN1
cnJlbnQgPT0gJy4nKSB7CiAgICAgICAgIC8vIFdlIGFscmVhZHkgcGFyc2VkIHRoZSBpbnRlZ3Jh
bCBwYXJ0LCB0cnkgdG8gcGFyc2UKQEAgLTI4NywxNSArMjg2LDE1IEBAIHN0YXRpYyBib29sIHBh
cnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY28KICAgICAgICAgZG91YmxlIHBlcmNlbnRhZ2UgPSAw
OwogICAgICAgICBpbnQgbnVtQ2hhcmFjdGVyc1BhcnNlZCA9IHBhcnNlRG91YmxlKGN1cnJlbnQs
IGVuZCwgJyUnLCBwZXJjZW50YWdlKTsKICAgICAgICAgaWYgKCFudW1DaGFyYWN0ZXJzUGFyc2Vk
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICAgICAgY3VycmVudCArPSBudW1DaGFyYWN0ZXJzUGFyc2VkOwogICAgICAgICBp
ZiAoKmN1cnJlbnQgIT0gJyUnKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgbG9jYWxWYWx1ZSArPSBwZXJjZW50YWdl
OwogICAgIH0KIAogICAgIGlmIChleHBlY3QgPT0gQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdF
ICYmICpjdXJyZW50ICE9ICclJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCiAgICAgaWYgKCpjdXJyZW50ID09ICclJykgewogICAgICAgICBl
eHBlY3QgPSBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0U7CkBAIC0zMTEsMTEgKzMxMCwxNyBA
QCBzdGF0aWMgYm9vbCBwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGNvCiAgICAgd2hpbGUgKGN1
cnJlbnQgIT0gZW5kICYmIGlzSFRNTFNwYWNlPENoYXJhY3RlclR5cGU+KCpjdXJyZW50KSkKICAg
ICAgICAgY3VycmVudCsrOwogICAgIGlmIChjdXJyZW50ID09IGVuZCB8fCAqY3VycmVudCsrICE9
IHRlcm1pbmF0b3IpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAvLyBDbGFtcCBuZWdhdGl2
ZSB2YWx1ZXMgYXQgemVyby4KLSAgICB2YWx1ZSA9IG5lZ2F0aXZlID8gMCA6IHN0YXRpY19jYXN0
PGludD4obG9jYWxWYWx1ZSk7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgc3Ry
aW5nID0gY3VycmVudDsKLSAgICByZXR1cm4gdHJ1ZTsKKworICAgIEFTU0VSVChsb2NhbFZhbHVl
ID49IDAgJiYgbG9jYWxWYWx1ZSA8PSAyNTUpOworCisgICAgLy8gRklYTUU6IEl0IGlzIG9kZCB0
aGF0IGlzIHVzZXMgdHJ1Y2F0aW9uIHZpYSBjYXN0aW5nIHJhdGhlciB0aGFuIHJvdW5kaW5nLCBh
cyBtb3N0IG90aGVyCisgICAgLy8gY29sb3IgY29tcG9uZW50IGNvbnZlcnNpb25zIGRvIChlLmcu
IGNvbnZlcnRUb0NvbXBvbmVudEJ5dGUpLiBUaGlzIHNob3VsZCBiZSB0ZXN0ZWQKKyAgICAvLyBh
Z2FpbnN0IG90aGVyIGltcGxlbWVudGF0aW9ucyB0byBzZWUgaWYgdGhpcyBpcyBjb25zaXN0ZW50
LgorCisgICAgLy8gQ2xhbXAgbmVnYXRpdmUgdmFsdWVzIGF0IHplcm8uCisgICAgcmV0dXJuIG5l
Z2F0aXZlID8gMCA6IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGxvY2FsVmFsdWUpOwogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KQEAgLTMzMiw4ICszMzcsNyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgaXNUZW50aEFscGhhKGNvbnN0IENoCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBpbmxpbmUgYm9vbCBw
YXJzZUFscGhhVmFsdWUoY29uc3QgQ2hhcmFjdGVyVHlwZSomIHN0cmluZywgY29uc3QgQ2hhcmFj
dGVyVHlwZSogZW5kLCBjb25zdCBjaGFyIHRlcm1pbmF0b3IsIGludCYgdmFsdWUpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPHVpbnQ4X3Q+
IHBhcnNlQWxwaGFWYWx1ZShjb25zdCBDaGFyYWN0ZXJUeXBlKiYgc3RyaW5nLCBjb25zdCBDaGFy
YWN0ZXJUeXBlKiBlbmQsIGNvbnN0IGNoYXIgdGVybWluYXRvcikKIHsKICAgICB3aGlsZSAoc3Ry
aW5nICE9IGVuZCAmJiBpc0hUTUxTcGFjZTxDaGFyYWN0ZXJUeXBlPigqc3RyaW5nKSkKICAgICAg
ICAgc3RyaW5nKys7CkBAIC0zNDUsNDUgKzM0OSwzOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcGFy
c2VBbHBoYVZhbHVlKGNvbnN0CiAgICAgICAgIHN0cmluZysrOwogICAgIH0KIAotICAgIHZhbHVl
ID0gMDsKLQogICAgIGludCBsZW5ndGggPSBlbmQgLSBzdHJpbmc7CiAgICAgaWYgKGxlbmd0aCA8
IDIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
IAogICAgIGlmIChzdHJpbmdbbGVuZ3RoIC0gMV0gIT0gdGVybWluYXRvciB8fCAhaXNBU0NJSURp
Z2l0KHN0cmluZ1tsZW5ndGggLSAyXSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIGlmIChzdHJpbmdbMF0gIT0gJzAnICYmIHN0cmlu
Z1swXSAhPSAnMScgJiYgc3RyaW5nWzBdICE9ICcuJykgewogICAgICAgICBpZiAoY2hlY2tGb3JW
YWxpZERvdWJsZShzdHJpbmcsIGVuZCwgdGVybWluYXRvcikpIHsKLSAgICAgICAgICAgIHZhbHVl
ID0gbmVnYXRpdmUgPyAwIDogMjU1OwogICAgICAgICAgICAgc3RyaW5nID0gZW5kOwotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gbmVnYXRpdmUgPyAwIDogMjU1
OwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKICAgICB9CiAKICAgICBpZiAobGVuZ3RoID09IDIgJiYgc3RyaW5nWzBdICE9ICcu
JykgewotICAgICAgICB2YWx1ZSA9ICFuZWdhdGl2ZSAmJiBzdHJpbmdbMF0gPT0gJzEnID8gMjU1
IDogMDsKICAgICAgICAgc3RyaW5nID0gZW5kOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuICFuZWdhdGl2ZSAmJiBzdHJpbmdbMF0gPT0gJzEnID8gMjU1IDogMDsKICAgICB9
CiAKICAgICBpZiAoaXNUZW50aEFscGhhKHN0cmluZywgbGVuZ3RoIC0gMSkpIHsKLSAgICAgICAg
c3RhdGljIGNvbnN0IGludCB0ZW50aEFscGhhVmFsdWVzW10gPSB7IDAsIDI2LCA1MSwgNzcsIDEw
MiwgMTI4LCAxNTMsIDE3OSwgMjA0LCAyMzAgfTsKLSAgICAgICAgdmFsdWUgPSBuZWdhdGl2ZSA/
IDAgOiB0ZW50aEFscGhhVmFsdWVzW3N0cmluZ1tsZW5ndGggLSAyXSAtICcwJ107CisgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB0ZW50aEFscGhhVmFsdWVzW10gPSB7IDAsIDI2LCA1
MSwgNzcsIDEwMiwgMTI4LCAxNTMsIDE3OSwgMjA0LCAyMzAgfTsKICAgICAgICAgc3RyaW5nID0g
ZW5kOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG5lZ2F0aXZlID8gMCA6
IHRlbnRoQWxwaGFWYWx1ZXNbc3RyaW5nW2xlbmd0aCAtIDJdIC0gJzAnXTsKICAgICB9CiAKICAg
ICBkb3VibGUgYWxwaGEgPSAwOwogICAgIGlmICghcGFyc2VEb3VibGUoc3RyaW5nLCBlbmQsIHRl
cm1pbmF0b3IsIGFscGhhKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCi0gICAgLy8gVzMgc3RhbmRhcmQgc3RpcHVsYXRlcyBhIDIuNTUgYWxw
aGEgdmFsdWUgbXVsdGlwbGljYXRpb24gZmFjdG9yLgotICAgIHZhbHVlID0gbmVnYXRpdmUgPyAw
IDogc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKGNsYW1wVG88ZG91YmxlPihhbHBoYSwgMC4wLCAx
LjApICogMjU1LjBmKSk7CiAgICAgc3RyaW5nID0gZW5kOwotICAgIHJldHVybiB0cnVlOworICAg
IHJldHVybiBuZWdhdGl2ZSA/IDAgOiBjb252ZXJ0VG9Db21wb25lbnRCeXRlKGFscGhhKTsKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CkBAIC00MDksMzEgKzQwNiwzMSBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgbWlnaHRCZVJHQihjb25zdCBDaGFyCiAgICAgICAgICYmIGlz
QVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hhcmFjdGVyc1syXSwgJ2InKTsKIH0KIAotc3RhdGlj
IE9wdGlvbmFsPFNpbXBsZUNvbG9yPiBmaW5pc2hQYXJzaW5nSGV4Q29sb3IodWludDMyX3QgdmFs
dWUsIHVuc2lnbmVkIGxlbmd0aCkKK3N0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gZmlu
aXNoUGFyc2luZ0hleENvbG9yKHVpbnQzMl90IHZhbHVlLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAg
ICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICBjYXNlIDM6CiAgICAgICAgIC8vICNhYmMgY29udmVy
dHMgdG8gI2FhYmJjYwotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGMDAwMDAwCisg
ICAgICAgIHJldHVybiBhc1NSR0JBKFBhY2tlZDo6QVJHQiB7IDB4RkYwMDAwMDAKICAgICAgICAg
ICAgIHwgKHZhbHVlICYgMHhGMDApIDw8IDEyIHwgKHZhbHVlICYgMHhGMDApIDw8IDgKICAgICAg
ICAgICAgIHwgKHZhbHVlICYgMHhGMCkgPDwgOCB8ICh2YWx1ZSAmIDB4RjApIDw8IDQKLSAgICAg
ICAgICAgIHwgKHZhbHVlICYgMHhGKSA8PCA0IHwgKHZhbHVlICYgMHhGKSB9OworICAgICAgICAg
ICAgfCAodmFsdWUgJiAweEYpIDw8IDQgfCAodmFsdWUgJiAweEYpIH0pOwogICAgIGNhc2UgNDoK
ICAgICAgICAgLy8gI2FiY2QgY29udmVydHMgdG8gZGRhYWJiY2Mgc2luY2UgYWxwaGEgYnl0ZXMg
YXJlIHRoZSBoaWdoIGJ5dGVzLgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAodmFsdWUg
JiAweEYpIDw8IDI4IHwgKHZhbHVlICYgMHhGKSA8PCAyNAorICAgICAgICByZXR1cm4gYXNTUkdC
QShQYWNrZWQ6OkFSR0IgeyAodmFsdWUgJiAweEYpIDw8IDI4IHwgKHZhbHVlICYgMHhGKSA8PCAy
NAogICAgICAgICAgICAgfCAodmFsdWUgJiAweEYwMDApIDw8IDggfCAodmFsdWUgJiAweEYwMDAp
IDw8IDQKICAgICAgICAgICAgIHwgKHZhbHVlICYgMHhGMDApIDw8IDQgfCAodmFsdWUgJiAweEYw
MCkKLSAgICAgICAgICAgIHwgKHZhbHVlICYgMHhGMCkgfCAodmFsdWUgJiAweEYwKSA+PiA0IH07
CisgICAgICAgICAgICB8ICh2YWx1ZSAmIDB4RjApIHwgKHZhbHVlICYgMHhGMCkgPj4gNCB9KTsK
ICAgICBjYXNlIDY6Ci0gICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkYwMDAwMDAgfCB2
YWx1ZSB9OworICAgICAgICByZXR1cm4gYXNTUkdCQShQYWNrZWQ6OkFSR0IgeyAweEZGMDAwMDAw
IHwgdmFsdWUgfSk7CiAgICAgY2FzZSA4OgogICAgICAgICAvLyBXZSBwYXJzZWQgdGhlIHZhbHVl
cyBpbnRvIFJHQkEgb3JkZXIsIGJ1dCB3ZSBzdG9yZSB0aGVtIGluIEFSR0Igb3JkZXIuCi0gICAg
ICAgIHJldHVybiBTaW1wbGVDb2xvciB7IHZhbHVlIDw8IDI0IHwgdmFsdWUgPj4gOCB9OworICAg
ICAgICByZXR1cm4gYXNTUkdCQShQYWNrZWQ6OkFSR0IgeyB2YWx1ZSA8PCAyNCB8IHZhbHVlID4+
IDggfSk7CiAgICAgfQogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTaW1wbGVDb2xvcj4gcGFyc2VI
ZXhDb2xvckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25h
bDxTUkdCQTx1aW50OF90Pj4gcGFyc2VIZXhDb2xvckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5
cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAobGVuZ3RoICE9IDMg
JiYgbGVuZ3RoICE9IDQgJiYgbGVuZ3RoICE9IDYgJiYgbGVuZ3RoICE9IDgpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CkBAIC00NDgsNyArNDQ1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RhdGljIAogICAgIHJldHVybiBmaW5pc2hQYXJzaW5nSGV4Q29sb3Io
dmFsdWUsIGxlbmd0aCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
YXRpYyBPcHRpb25hbDxTaW1wbGVDb2xvcj4gcGFyc2VOdW1lcmljQ29sb3IoY29uc3QgQ2hhcmFj
dGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBib29sIHN0cmljdCkKK3RlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90
Pj4gcGFyc2VOdW1lcmljQ29sb3IoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoLCBib29sIHN0cmljdCkKIHsKICAgICBpZiAobGVuZ3RoID49IDQgJiYgY2hh
cmFjdGVyc1swXSA9PSAnIycpIHsKICAgICAgICAgaWYgKGF1dG8gaGV4Q29sb3IgPSBwYXJzZUhl
eENvbG9ySW50ZXJuYWwoY2hhcmFjdGVycyArIDEsIGxlbmd0aCAtIDEpKQpAQCAtNDY2LDQ1ICs0
NjMsNDUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIAogICAgIGlm
IChtaWdodEJlUkdCQShjaGFyYWN0ZXJzLCBsZW5ndGgpKSB7CiAgICAgICAgIGF1dG8gY3VycmVu
dCA9IGNoYXJhY3RlcnMgKyA1OwogICAgICAgICBhdXRvIGVuZCA9IGNoYXJhY3RlcnMgKyBsZW5n
dGg7Ci0gICAgICAgIGludCByZWQ7Ci0gICAgICAgIGlmICghcGFyc2VDb2xvckludE9yUGVyY2Vu
dGFnZShjdXJyZW50LCBlbmQsICcsJywgZXhwZWN0LCByZWQpKQorICAgICAgICBhdXRvIHJlZCA9
IHBhcnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY3VycmVudCwgZW5kLCAnLCcsIGV4cGVjdCk7Cisg
ICAgICAgIGlmICghcmVkKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAg
ICAgaW50IGdyZWVuOwotICAgICAgICBpZiAoIXBhcnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY3Vy
cmVudCwgZW5kLCAnLCcsIGV4cGVjdCwgZ3JlZW4pKQorICAgICAgICBhdXRvIGdyZWVuID0gcGFy
c2VDb2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQsICcsJywgZXhwZWN0KTsKKyAgICAg
ICAgaWYgKCFncmVlbikKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAg
IGludCBibHVlOwotICAgICAgICBpZiAoIXBhcnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY3VycmVu
dCwgZW5kLCAnLCcsIGV4cGVjdCwgYmx1ZSkpCisgICAgICAgIGF1dG8gYmx1ZSA9IHBhcnNlQ29s
b3JJbnRPclBlcmNlbnRhZ2UoY3VycmVudCwgZW5kLCAnLCcsIGV4cGVjdCk7CisgICAgICAgIGlm
ICghYmx1ZSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGludCBh
bHBoYTsKLSAgICAgICAgaWYgKCFwYXJzZUFscGhhVmFsdWUoY3VycmVudCwgZW5kLCAnKScsIGFs
cGhhKSkKKyAgICAgICAgYXV0byBhbHBoYSA9IHBhcnNlQWxwaGFWYWx1ZShjdXJyZW50LCBlbmQs
ICcpJyk7CisgICAgICAgIGlmICghYWxwaGEpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgICAgICBpZiAoY3VycmVudCAhPSBlbmQpCiAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKHJlZCwgZ3JlZW4sIGJs
dWUsIGFscGhhKTsgLy8gRklYTUU6IEFscmVhZHkgY2xhbXBlZCwgZG9uJ3QgbmVlZCB0byByZS1j
bGFtcCBhcyBtYWtlU2ltcGxlQ29sb3IgZG9lcy4KKyAgICAgICAgcmV0dXJuIFNSR0JBIHsgKnJl
ZCwgKmdyZWVuLCAqYmx1ZSwgKmFscGhhIH07CiAgICAgfQogCiAgICAgLy8gVHJ5IHJnYigpIHN5
bnRheC4KICAgICBpZiAobWlnaHRCZVJHQihjaGFyYWN0ZXJzLCBsZW5ndGgpKSB7CiAgICAgICAg
IGF1dG8gY3VycmVudCA9IGNoYXJhY3RlcnMgKyA0OwogICAgICAgICBhdXRvIGVuZCA9IGNoYXJh
Y3RlcnMgKyBsZW5ndGg7Ci0gICAgICAgIGludCByZWQ7Ci0gICAgICAgIGlmICghcGFyc2VDb2xv
ckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQsICcsJywgZXhwZWN0LCByZWQpKQorICAgICAg
ICBhdXRvIHJlZCA9IHBhcnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY3VycmVudCwgZW5kLCAnLCcs
IGV4cGVjdCk7CisgICAgICAgIGlmICghcmVkKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICAgICAgaW50IGdyZWVuOwotICAgICAgICBpZiAoIXBhcnNlQ29sb3JJbnRPclBl
cmNlbnRhZ2UoY3VycmVudCwgZW5kLCAnLCcsIGV4cGVjdCwgZ3JlZW4pKQorICAgICAgICBhdXRv
IGdyZWVuID0gcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQsICcsJywgZXhw
ZWN0KTsKKyAgICAgICAgaWYgKCFncmVlbikKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0gICAgICAgIGludCBibHVlOwotICAgICAgICBpZiAoIXBhcnNlQ29sb3JJbnRPclBlcmNl
bnRhZ2UoY3VycmVudCwgZW5kLCAnKScsIGV4cGVjdCwgYmx1ZSkpCisgICAgICAgIGF1dG8gYmx1
ZSA9IHBhcnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY3VycmVudCwgZW5kLCAnKScsIGV4cGVjdCk7
CisgICAgICAgIGlmICghYmx1ZSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAg
ICAgICAgIGlmIChjdXJyZW50ICE9IGVuZCkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0gICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IocmVkLCBncmVlbiwgYmx1ZSk7IC8v
IEZJWE1FOiBBbHJlYWR5IGNsYW1wZWQsIGRvbid0IG5lZWQgdG8gcmUtY2xhbXAgYXMgbWFrZVNp
bXBsZUNvbG9yIGRvZXMuCisgICAgICAgIHJldHVybiBTUkdCQSB7ICpyZWQsICpncmVlbiwgKmJs
dWUsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KDB4RkYpIH07CiAgICAgfQogCiAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFNpbXBsZUNvbG9yPiBwYXJzZU51bWVy
aWNDb2xvcihTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4
dCkKK3N0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VOdW1lcmljQ29sb3IoU3Ry
aW5nVmlldyBzdHJpbmcsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAg
Ym9vbCBzdHJpY3QgPSAhaXNRdWlya3NNb2RlQmVoYXZpb3IoY29udGV4dC5tb2RlKTsKICAgICBp
ZiAoc3RyaW5nLmlzOEJpdCgpKQpAQCAtNTI2LDE2ICs1MjMsMTYgQEAgc3RhdGljIFJlZlB0cjxD
U1NWYWx1ZT4gcGFyc2VDb2xvcihTdHJpbgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0
aWMgT3B0aW9uYWw8U2ltcGxlQ29sb3I+IGZpbmlzaFBhcnNpbmdOYW1lZENvbG9yKGNoYXIqIGJ1
ZmZlciwgdW5zaWduZWQgbGVuZ3RoKQorc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBm
aW5pc2hQYXJzaW5nTmFtZWRDb2xvcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkKIHsK
ICAgICBidWZmZXJbbGVuZ3RoXSA9ICdcMCc7CiAgICAgYXV0byBuYW1lZENvbG9yID0gZmluZENv
bG9yKGJ1ZmZlciwgbGVuZ3RoKTsKICAgICBpZiAoIW5hbWVkQ29sb3IpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgbmFtZWRDb2xvci0+QVJH
QlZhbHVlIH07CisgICAgcmV0dXJuIGFzU1JHQkEoUGFja2VkOjpBUkdCIHsgbmFtZWRDb2xvci0+
QVJHQlZhbHVlIH0pOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0
aWMgT3B0aW9uYWw8U2ltcGxlQ29sb3I+IHBhcnNlTmFtZWRDb2xvckludGVybmFsKGNvbnN0IENo
YXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3RlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VO
YW1lZENvbG9ySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKQogewogICAgIGNoYXIgYnVmZmVyWzY0XTsgLy8gRWFzaWx5IGJpZyBlbm91Z2gg
Zm9yIHRoZSBsb25nZXN0IGNvbG9yIG5hbWUuCiAgICAgaWYgKGxlbmd0aCA+IHNpemVvZihidWZm
ZXIpIC0gMSkKQEAgLTU0OSwyOCArNTQ2LDI4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHN0YXRpYyAKICAgICByZXR1cm4gZmluaXNoUGFyc2luZ05hbWVkQ29sb3IoYnVmZmVy
LCBsZW5ndGgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMg
T3B0aW9uYWw8U2ltcGxlQ29sb3I+IHBhcnNlU2ltcGxlQ29sb3JJbnRlcm5hbChjb25zdCBDaGFy
YWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgc3RyaWN0KQordGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4
X3Q+PiBwYXJzZVNpbXBsZUNvbG9ySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoLCBib29sIHN0cmljdCkKIHsKICAgICBpZiAoYXV0byBjb2xv
ciA9IHBhcnNlTnVtZXJpY0NvbG9yKGNoYXJhY3RlcnMsIGxlbmd0aCwgc3RyaWN0KSkKICAgICAg
ICAgcmV0dXJuIGNvbG9yOwogICAgIHJldHVybiBwYXJzZU5hbWVkQ29sb3JJbnRlcm5hbChjaGFy
YWN0ZXJzLCBsZW5ndGgpOwogfQogCi1PcHRpb25hbDxTaW1wbGVDb2xvcj4gQ1NTUGFyc2VyRmFz
dFBhdGhzOjpwYXJzZVNpbXBsZUNvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBib29sIHN0cmljdCkK
K09wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBDU1NQYXJzZXJGYXN0UGF0aHM6OnBhcnNlU2ltcGxl
Q29sb3IoU3RyaW5nVmlldyBzdHJpbmcsIGJvb2wgc3RyaWN0KQogewogICAgIGlmIChzdHJpbmcu
aXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZVNpbXBsZUNvbG9ySW50ZXJuYWwoc3RyaW5n
LmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwgc3RyaWN0KTsKICAgICByZXR1cm4gcGFy
c2VTaW1wbGVDb2xvckludGVybmFsKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0
aCgpLCBzdHJpY3QpOwogfQogCi1PcHRpb25hbDxTaW1wbGVDb2xvcj4gQ1NTUGFyc2VyRmFzdFBh
dGhzOjpwYXJzZUhleENvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQorT3B0aW9uYWw8U1JHQkE8dWlu
dDhfdD4+IENTU1BhcnNlckZhc3RQYXRoczo6cGFyc2VIZXhDb2xvcihTdHJpbmdWaWV3IHN0cmlu
ZykKIHsKICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gcGFyc2VIZXhD
b2xvckludGVybmFsKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwogICAg
IHJldHVybiBwYXJzZUhleENvbG9ySW50ZXJuYWwoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJp
bmcubGVuZ3RoKCkpOwogfQogCi1PcHRpb25hbDxTaW1wbGVDb2xvcj4gQ1NTUGFyc2VyRmFzdFBh
dGhzOjpwYXJzZU5hbWVkQ29sb3IoU3RyaW5nVmlldyBzdHJpbmcpCitPcHRpb25hbDxTUkdCQTx1
aW50OF90Pj4gQ1NTUGFyc2VyRmFzdFBhdGhzOjpwYXJzZU5hbWVkQ29sb3IoU3RyaW5nVmlldyBz
dHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKICAgICAgICAgcmV0dXJuIHBhcnNl
TmFtZWRDb2xvckludGVybmFsKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRo
cy5oCShyZXZpc2lvbiAyNjM5NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlckZhc3RQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiw4IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1ZhbHVlOwotY2xhc3MgU2ltcGxlQ29sb3I7Ci0KIHN0
cnVjdCBDU1NQYXJzZXJDb250ZXh0OwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBTUkdCQTsK
IAogY2xhc3MgQ1NTUGFyc2VyRmFzdFBhdGhzIHsKIHB1YmxpYzoKQEAgLTUwLDkgKzQ5LDkgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIGlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShD
U1NQcm9wZXJ0eUlELCBDU1NWYWx1ZUlELCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CiAKICAg
ICAvLyBQYXJzZXMgbnVtZXJpYyBhbmQgbmFtZWQgY29sb3JzLgotICAgIHN0YXRpYyBPcHRpb25h
bDxTaW1wbGVDb2xvcj4gcGFyc2VTaW1wbGVDb2xvcihTdHJpbmdWaWV3LCBib29sIHN0cmljdCA9
IGZhbHNlKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8U2ltcGxlQ29sb3I+IHBhcnNlSGV4Q29sb3Io
U3RyaW5nVmlldyk7IC8vIEhleCBjb2xvcnMgb2YgbGVuZ3RoIDMsIDQsIDYsIG9yIDgsIHdpdGhv
dXQgbGVhZGluZyAiIyIuCi0gICAgc3RhdGljIE9wdGlvbmFsPFNpbXBsZUNvbG9yPiBwYXJzZU5h
bWVkQ29sb3IoU3RyaW5nVmlldyk7CisgICAgc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+
PiBwYXJzZVNpbXBsZUNvbG9yKFN0cmluZ1ZpZXcsIGJvb2wgc3RyaWN0ID0gZmFsc2UpOworICAg
IHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VIZXhDb2xvcihTdHJpbmdWaWV3
KTsgLy8gSGV4IGNvbG9ycyBvZiBsZW5ndGggMywgNCwgNiwgb3IgOCwgd2l0aG91dCBsZWFkaW5n
ICIjIi4KKyAgICBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBhcnNlTmFtZWRDb2xv
cihTdHJpbmdWaWV3KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVy
cy5jcHAJKHJldmlzaW9uIDI2Mzk1MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg5LDcgKzU4OSw3
IEBAIHN0YXRpYyBDb2xvciBwYXJzZVJHQlBhcmFtZXRlcnMoQ1NTUGFyc2UKICAgICBpZiAoIWFy
Z3MuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKLSAgICByZXR1cm4gbWFrZVNp
bXBsZUNvbG9yKGNvbG9yQXJyYXlbMF0sIGNvbG9yQXJyYXlbMV0sIGNvbG9yQXJyYXlbMl0sIGFs
cGhhQ29tcG9uZW50KTsKKyAgICByZXR1cm4gU1JHQkEgeyBjb2xvckFycmF5WzBdLCBjb2xvckFy
cmF5WzFdLCBjb2xvckFycmF5WzJdLCBhbHBoYUNvbXBvbmVudCB9OwogfQogCiBzdGF0aWMgQ29s
b3IgcGFyc2VIU0xQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJz
ZXJNb2RlIGNzc1BhcnNlck1vZGUpCkBAIC02NDEsNyArNjQxLDcgQEAgc3RhdGljIENvbG9yIHBh
cnNlSFNMUGFyYW1ldGVycyhDU1NQYXJzZQogICAgIGlmICghYXJncy5hdEVuZCgpKQogICAgICAg
ICByZXR1cm4gQ29sb3IoKTsKIAotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IodG9TUkdCQShI
U0xBPGZsb2F0PiB7IHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvckFycmF5WzBdKSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGNvbG9yQXJyYXlbMV0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3JBcnJheVsy
XSksIHN0YXRpY19jYXN0PGZsb2F0PihhbHBoYSkgfSkpOworICAgIHJldHVybiBjb252ZXJ0VG9D
b21wb25lbnRCeXRlc0xvc3N5KHRvU1JHQkEoSFNMQTxmbG9hdD4geyBzdGF0aWNfY2FzdDxmbG9h
dD4oY29sb3JBcnJheVswXSksIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvckFycmF5WzFdKSwgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yQXJyYXlbMl0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oYWxwaGEp
IH0pKTsKIH0KIAogc3RhdGljIENvbG9yIHBhcnNlQ29sb3JGdW5jdGlvblBhcmFtZXRlcnMoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCkBAIC02ODksNyArNjg5LDcgQEAgc3RhdGljIENvbG9y
IHBhcnNlQ29sb3JGdW5jdGlvblBhcmFtZXRlcgogICAgIHJldHVybiBtYWtlRXh0ZW5kZWRDb2xv
cihjb2xvckNoYW5uZWxzWzBdLCBjb2xvckNoYW5uZWxzWzFdLCBjb2xvckNoYW5uZWxzWzJdLCBj
b2xvckNoYW5uZWxzWzNdLCBjb2xvclNwYWNlKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFNpbXBs
ZUNvbG9yPiBwYXJzZUhleENvbG9yKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBib29sIGFj
Y2VwdFF1aXJreUNvbG9ycykKK3N0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VI
ZXhDb2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgYm9vbCBhY2NlcHRRdWlya3lDb2xv
cnMpCiB7CiAgICAgU3RyaW5nIHN0cmluZzsKICAgICBTdHJpbmdWaWV3IHZpZXc7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCShyZXZpc2lv
biAyNjM5NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDkgKzQwLDkgQEAgc3RydWN0IENvbXBvc2l0aW9uSGln
aGxpZ2h0IHsKICAgICB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHN0YXRpYyBj
b25zdGV4cHIgU2ltcGxlQ29sb3IgZGVmYXVsdENvbXBvc2l0aW9uRmlsbENvbG9yIHsgMHgzQ0FG
QzBFMyB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBkZWZhdWx0Q29tcG9zaXRpb25GaWxs
Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMHhBRiwgMHhDMCwgMHhFMywgMHgzQyk7CiAjZWxzZQot
ICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgZGVmYXVsdENvbXBvc2l0aW9uRmlsbENv
bG9yIHsgMHhGRkUxREQ1NSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBkZWZhdWx0Q29t
cG9zaXRpb25GaWxsQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMHhFMSwgMHhERCwgMHg1NSwgMHhG
Rik7CiAjZW5kaWYKIAogICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0IHsgMCB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQkocmV2aXNpb24g
MjYzOTUzKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC02MjcsNyArNjI3LDcgQEAgTlNBcnJheSAqRGF0YURldGVjdGlv
bjo6ZGV0ZWN0Q29udGVudEluUgogICAgICAgICAgICAgICAgICAgICAgICAgLy8gc28gdGhlIGNv
bG9yIHdpbGwgYXBwZWFyIG9uIGxpZ2h0IGFuZCBkYXJrIGJhY2tncm91bmRzLCBzaW5jZSBvbmx5
IG9uZSBjb2xvciBjYW4gYmUgc3BlY2lmaWVkLgogICAgICAgICAgICAgICAgICAgICAgICAgaHNs
YS5saWdodG5lc3MgPSAwLjVmOwogICAgICAgICAgICAgICAgICAgICAgICAgaHNsYS5hbHBoYSAq
PSAwLjM4ZjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdW5kZXJsaW5lQ29sb3IgPSBt
YWtlU2ltcGxlQ29sb3IodG9TUkdCQShoc2xhKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBh
dXRvIHVuZGVybGluZUNvbG9yID0gdG9TUkdCQShoc2xhKTsKIAogICAgICAgICAgICAgICAgICAg
ICAgICAgYW5jaG9yRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUNv
bG9yLCBDU1NWYWx1ZUN1cnJlbnRjb2xvcik7CiAgICAgICAgICAgICAgICAgICAgICAgICBhbmNo
b3JFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRp
b25Db2xvciwgc2VyaWFsaXphdGlvbkZvckNTUyh1bmRlcmxpbmVDb2xvcikpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAJKHJldmlzaW9uIDI2Mzk1MykKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
OSwxMSArNjksMTEgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFNpbXBsZUNvbG9yKFN0cmluZ1ZpZQog
fQogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9jb21tb24tbWlj
cm9zeW50YXhlcy5odG1sI3J1bGVzLWZvci1wYXJzaW5nLXNpbXBsZS1jb2xvdXItdmFsdWVzCi1z
dGF0aWMgT3B0aW9uYWw8U2ltcGxlQ29sb3I+IHBhcnNlU2ltcGxlQ29sb3JWYWx1ZShTdHJpbmdW
aWV3IHN0cmluZykKK3N0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VTaW1wbGVD
b2xvclZhbHVlKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIGlmICghaXNWYWxpZFNpbXBsZUNv
bG9yKHN0cmluZykpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG1h
a2VTaW1wbGVDb2xvcih0b0FTQ0lJSGV4VmFsdWUoc3RyaW5nWzFdLCBzdHJpbmdbMl0pLCB0b0FT
Q0lJSGV4VmFsdWUoc3RyaW5nWzNdLCBzdHJpbmdbNF0pLCB0b0FTQ0lJSGV4VmFsdWUoc3RyaW5n
WzVdLCBzdHJpbmdbNl0pKTsKKyAgICByZXR1cm4gU1JHQkEgeyB0b0FTQ0lJSGV4VmFsdWUoc3Ry
aW5nWzFdLCBzdHJpbmdbMl0pLCB0b0FTQ0lJSGV4VmFsdWUoc3RyaW5nWzNdLCBzdHJpbmdbNF0p
LCB0b0FTQ0lJSGV4VmFsdWUoc3RyaW5nWzVdLCBzdHJpbmdbNl0pLCBzdGF0aWNfY2FzdDx1aW50
OF90PigweEZGKSB9OwogfQogCiBDb2xvcklucHV0VHlwZTo6fkNvbG9ySW5wdXRUeXBlKCkKQEAg
LTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgQ29sb3JJbnB1dFR5cGU6OnNhbml0aXplVmFsdWUoY29u
CiBDb2xvciBDb2xvcklucHV0VHlwZTo6dmFsdWVBc0NvbG9yKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoZWxlbWVudCgpKTsKLSAgICByZXR1cm4gcGFyc2VTaW1wbGVDb2xvclZhbHVlKGVsZW1lbnQo
KS0+dmFsdWUoKSkudmFsdWUoKTsKKyAgICByZXR1cm4gcGFyc2VTaW1wbGVDb2xvclZhbHVlKGVs
ZW1lbnQoKS0+dmFsdWUoKSk7CiB9CiAKIHZvaWQgQ29sb3JJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWUoKQpAQCAtMzAzLDcgKzMwMyw3IEBAIFZlY3RvcjxDb2xvcj4gQ29sb3JJbnB1dFR5
cGU6OnN1Z2dlc3RlZEMKIHZvaWQgQ29sb3JJbnB1dFR5cGU6OnNlbGVjdENvbG9yKFN0cmluZ1Zp
ZXcgc3RyaW5nKQogewogICAgIGlmIChhdXRvIGNvbG9yID0gcGFyc2VTaW1wbGVDb2xvclZhbHVl
KHN0cmluZykpCi0gICAgICAgIGRpZENob29zZUNvbG9yKGNvbG9yLnZhbHVlKCkpOworICAgICAg
ICBkaWRDaG9vc2VDb2xvcigqY29sb3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNpb24gMjYzOTUzKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MDYsNyArMTAwNiw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmFkZEhUTUxMZW5ndGhUb1N0eWxlKE0K
IAogLy8gQ29sb3IgcGFyc2luZyB0aGF0IG1hdGNoZXMgSFRNTCdzICJydWxlcyBmb3IgcGFyc2lu
ZyBhIGxlZ2FjeSBjb2xvciB2YWx1ZSIKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
I3J1bGVzLWZvci1wYXJzaW5nLWEtbGVnYWN5LWNvbG91ci12YWx1ZQotc3RhdGljIE9wdGlvbmFs
PFNpbXBsZUNvbG9yPiBwYXJzZUxlZ2FjeUNvbG9yVmFsdWUoU3RyaW5nVmlldyBzdHJpbmcpCitz
dGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBhcnNlTGVnYWN5Q29sb3JWYWx1ZShTdHJp
bmdWaWV3IHN0cmluZykKIHsKICAgICAvLyBBbiBlbXB0eSBzdHJpbmcgZG9lc24ndCBhcHBseSBh
IGNvbG9yLgogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQpAQCAtMTAxNCw3ICsxMDE0LDcgQEAg
c3RhdGljIE9wdGlvbmFsPFNpbXBsZUNvbG9yPiBwYXJzZUxlZ2FjeQogCiAgICAgc3RyaW5nID0g
c3RyaW5nLnN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nTWF0Y2hlZENoYXJhY3RlcnMoaXNIVE1MU3Bh
Y2U8VUNoYXI+KTsKICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIENv
bG9yOjpibGFjazsKKyAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjay5jb2xvcjsKIAogICAgIC8v
ICJ0cmFuc3BhcmVudCIgZG9lc24ndCBhcHBseSBhIGNvbG9yIGVpdGhlci4KICAgICBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAidHJhbnNwYXJlbnQiKSkKQEAgLTEw
NDUsNyArMTA0NSw3IEBAIHN0YXRpYyBPcHRpb25hbDxTaW1wbGVDb2xvcj4gcGFyc2VMZWdhY3kK
ICAgICB9CiAKICAgICBpZiAoZGlnaXRCdWZmZXIuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
Q29sb3I6OmJsYWNrOworICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrLmNvbG9yOwogCiAgICAg
Ly8gUGFkIHRoZSBidWZmZXIgb3V0IHRvIGF0IGxlYXN0IHRoZSBuZXh0IG11bHRpcGxlIG9mIHRo
cmVlIGluIHNpemUuCiAgICAgZGlnaXRCdWZmZXIuYXBwZW5kKCcwJyk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmNwcAkocmV2aXNpb24gMjYzOTUzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzMTUsMTcgKzEzMTUsMTcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpz
ZXRTaAogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldFNoYWRvdyhmbG9h
dCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCBncmF5TGV2ZWwsIGZsb2F0
IGFscGhhKQogewotICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIs
IG1ha2VTaW1wbGVDb2xvcihTUkdCQSB7IGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWws
IGFscGhhIH0pKTsKKyAgICBzZXRTaGFkb3coRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBibHVy
LCBjb252ZXJ0VG9Db21wb25lbnRCeXRlc0xvc3N5KFNSR0JBIHsgZ3JheUxldmVsLCBncmF5TGV2
ZWwsIGdyYXlMZXZlbCwgYWxwaGEgfSkpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVy
LCBmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKQogewotICAgIHNldFNoYWRvdyhG
bG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIG1ha2VTaW1wbGVDb2xvcihTUkdCQSB7IHIs
IGcsIGIsIGEgfSkpOworICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJs
dXIsIGNvbnZlcnRUb0NvbXBvbmVudEJ5dGVzTG9zc3koU1JHQkEgeyByLCBnLCBiLCBhIH0pKTsK
IH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpzZXRTaGFkb3coZmxvYXQg
d2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQg
eSwgZmxvYXQgaywgZmxvYXQgYSkKIHsKLSAgICBzZXRTaGFkb3coRmxvYXRTaXplKHdpZHRoLCBo
ZWlnaHQpLCBibHVyLCBtYWtlU2ltcGxlQ29sb3IodG9TUkdCQShDTVlLQSB7IGMsIG0sIHksIGss
IGEgfSkpKTsKKyAgICBzZXRTaGFkb3coRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBibHVyLCBj
b252ZXJ0VG9Db21wb25lbnRCeXRlc0xvc3N5KHRvU1JHQkEoQ01ZS0EgeyBjLCBtLCB5LCBrLCBh
IH0pKSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y2xlYXJTaGFk
b3coKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAko
cmV2aXNpb24gMjYzOTUzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCwxMiArOTQsMTIgQEAgQ2FudmFzU3R5bGU6OkNh
bnZhc1N0eWxlKENvbG9yIGNvbG9yKQogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoY29u
c3QgU1JHQkE8ZmxvYXQ+JiBjb2xvckNvbXBvbmVudHMpCi0gICAgOiBtX3N0eWxlKG1ha2VTaW1w
bGVDb2xvcihjb2xvckNvbXBvbmVudHMpKQorICAgIDogbV9zdHlsZShjb252ZXJ0VG9Db21wb25l
bnRCeXRlc0xvc3N5KGNvbG9yQ29tcG9uZW50cykpCiB7CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52
YXNTdHlsZShjb25zdCBDTVlLQTxmbG9hdD4mIGNvbG9yQ29tcG9uZW50cykKLSAgICA6IG1fc3R5
bGUoQ01ZS0FDb2xvciB7IG1ha2VTaW1wbGVDb2xvcih0b1NSR0JBKGNvbG9yQ29tcG9uZW50cykp
LCBjb2xvckNvbXBvbmVudHMgfSkKKyAgICA6IG1fc3R5bGUoQ01ZS0FDb2xvciB7IGNvbnZlcnRU
b0NvbXBvbmVudEJ5dGVzTG9zc3kodG9TUkdCQShjb2xvckNvbXBvbmVudHMpKSwgY29sb3JDb21w
b25lbnRzIH0pCiB7CiB9CiAKQEAgLTE1NSw3ICsxNTUsNyBAQCBib29sIENhbnZhc1N0eWxlOjpp
c0VxdWl2YWxlbnRDb2xvcihjb25zCiAKIGJvb2wgQ2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudChj
b25zdCBTUkdCQTxmbG9hdD4mIGNvbXBvbmVudHMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8Q29sb3I+KG1fc3R5bGUpICYmIFdURjo6Z2V0PENvbG9yPihtX3N0
eWxlKSA9PSBtYWtlU2ltcGxlQ29sb3IoY29tcG9uZW50cyk7CisgICAgcmV0dXJuIFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8Q29sb3I+KG1fc3R5bGUpICYmIFdURjo6Z2V0PENvbG9yPihtX3N0eWxl
KSA9PSBjb252ZXJ0VG9Db21wb25lbnRCeXRlc0xvc3N5KGNvbXBvbmVudHMpOwogfQogCiBib29s
IENhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnQoY29uc3QgQ01ZS0E8ZmxvYXQ+JiBjb21wb25lbnRz
KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAJ
KHJldmlzaW9uIDI2Mzk1MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAgYm9vbCBOb25GYXN0U2Ny
b2xsYWJsZVJlZ2lvbk92ZXJsYXk6OnVwZAogICAgIHJldHVybiByZWdpb25DaGFuZ2VkOwogfQog
Ci1zdGF0aWMgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFNpbXBsZUNvbG9yPiYgdG91Y2hFdmVudFJl
Z2lvbkNvbG9ycygpCitzdGF0aWMgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFNSR0JBPHVpbnQ4X3Q+
PiYgdG91Y2hFdmVudFJlZ2lvbkNvbG9ycygpCiB7CiAgICAgc3RhdGljIGNvbnN0IGF1dG8gcmVn
aW9uQ29sb3JzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKICAgICAgICAgc3RydWN0IE1hcEVu
dHJ5IHsKQEAgLTE2Myw3ICsxNjMsNyBAQCBzdGF0aWMgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFNp
bXBsZUNvbG9yCiAgICAgICAgICAgICB7ICJtb3VzZW1vdmUiX3MsIDI0NSwgMjQ1LCA4MCB9LAog
ICAgICAgICAgICAgeyAibW91c2V1cCJfcywgODAsIDI0NSwgMTc2IH0sCiAgICAgICAgIH07Ci0g
ICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTaW1wbGVDb2xvcj4gbWFwOworICAgICAgICBIYXNoTWFw
PFN0cmluZywgU1JHQkE8dWludDhfdD4+IG1hcDsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6
IGVudHJpZXMpCiAgICAgICAgICAgICBtYXAuYWRkKGVudHJ5Lm5hbWUsIG1ha2VTaW1wbGVDb2xv
cihlbnRyeS5yLCBlbnRyeS5nLCBlbnRyeS5iLCA1MCkpOwogICAgICAgICByZXR1cm4gbWFwOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI2Mzk1
MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDQ1LDcgKzE0NDUsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjppbnNlcnREcm9w
cGVkSW1hZ2VQCiAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoc2l6ZS53aWR0aCgp
KSk7CiAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6aGVpZ2h0QXR0ciwgQXRvbVN0cmluZzo6bnVtYmVyKHNpemUuaGVpZ2h0KCkpKTsK
ICAgICAgICAgaW1hZ2UtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXhXaWR0
aCwgMTAwLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOwotICAgICAgICBpbWFnZS0+c2V0
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgc2VyaWFsaXph
dGlvbkZvckNTUyhDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoMTMpKSk7CisgICAgICAgIGlt
YWdlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBz
ZXJpYWxpemF0aW9uRm9yQ1NTKENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSgxMykuY29sb3Ip
KTsKICAgICAgICAgaW1hZ2UtPnNldElzRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIoKTsKICAgICAg
ICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdURk1vdmUoaW1hZ2UpKTsKICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3Zlcmxh
eUNvY29hLm1tCShyZXZpc2lvbiAyNjM5NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29h
L1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyOCwxMiAr
MTI4LDEyIEBAIHN0YXRpYyBDR0NvbG9yUmVmIGNyZWF0ZUNvbG9yKGZsb2F0IHIsIGYKIHN0cnVj
dCBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyB7CiAgICAgSGlzdG9yaWNNZW1vcnlDYXRlZ29y
eUluZm8oKSB7IH0gLy8gTmVlZGVkIGZvciBzdGQ6OmFycmF5LgogCi0gICAgSGlzdG9yaWNNZW1v
cnlDYXRlZ29yeUluZm8odW5zaWduZWQgY2F0ZWdvcnksIHVpbnQzMl90IGFyZ2IsIFN0cmluZyBu
YW1lLCBib29sIHN1YmNhdGVnb3J5ID0gZmFsc2UpCisgICAgSGlzdG9yaWNNZW1vcnlDYXRlZ29y
eUluZm8odW5zaWduZWQgY2F0ZWdvcnksIFNSR0JBPHVpbnQ4X3Q+IHJnYmEsIFN0cmluZyBuYW1l
LCBib29sIHN1YmNhdGVnb3J5ID0gZmFsc2UpCiAgICAgICAgIDogbmFtZShXVEZNb3ZlKG5hbWUp
KQorICAgICAgICAsIGNvbG9yKGNhY2hlZENHQ29sb3IocmdiYSkpCiAgICAgICAgICwgaXNTdWJj
YXRlZ29yeShzdWJjYXRlZ29yeSkKICAgICAgICAgLCB0eXBlKGNhdGVnb3J5KQogICAgIHsKLSAg
ICAgICAgY29sb3IgPSBjYWNoZWRDR0NvbG9yKFNpbXBsZUNvbG9yIHsgYXJnYiB9KTsKICAgICB9
CiAKICAgICBTdHJpbmcgbmFtZTsKQEAgLTE2MCwxOCArMTYwLDE4IEBAIHN0cnVjdCBIaXN0b3Jp
Y1Jlc291cmNlVXNhZ2VEYXRhIHsKIEhpc3RvcmljUmVzb3VyY2VVc2FnZURhdGE6Okhpc3Rvcmlj
UmVzb3VyY2VVc2FnZURhdGEoKQogewogICAgIC8vIFZNIHRhZyBjYXRlZ29yaWVzLgotICAgIGNh
dGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkpTSklUXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJ
bmZvKE1lbW9yeUNhdGVnb3J5OjpKU0pJVCwgMHhGRkZGNjBGRiwgIkpTIEpJVCIpOwotICAgIGNh
dGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkdpZ2FjYWdlXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdv
cnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZSwgMHhGRjY1NEZGMCwgIkdpZ2FjYWdlIik7
Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6SW1hZ2VzXSA9IEhpc3RvcmljTWVtb3J5
Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpJbWFnZXMsIDB4RkZGRkZGMDAsICJJbWFnZXMi
KTsKLSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpMYXllcnNdID0gSGlzdG9yaWNNZW1v
cnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkxheWVycywgMHhGRjAwRkZGRiwgIkxheWVy
cyIpOwotICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkxpYmNNYWxsb2NdID0gSGlzdG9y
aWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkxpYmNNYWxsb2MsIDB4RkYwMEZG
MDAsICJsaWJjIG1hbGxvYyIpOwotICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OmJtYWxs
b2NdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OmJtYWxsb2Ms
IDB4RkZGRjYwNjAsICJibWFsbG9jIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6
SXNvSGVhcF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6SXNv
SGVhcCwgMHhGRjgwOUY0MCwgIklzb0hlYXAiKTsKLSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVn
b3J5OjpPdGhlcl0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6
T3RoZXIsIDB4RkZDMEZGMDAsICJPdGhlciIpOworICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdv
cnk6OkpTSklUXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpK
U0pJVCwgeyAweEZGLCAweDYwLCAweEZGLCAweEZGIH0sICJKUyBKSVQiKTsKKyAgICBjYXRlZ29y
aWVzW01lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZV0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5m
byhNZW1vcnlDYXRlZ29yeTo6R2lnYWNhZ2UsIHsgMHg2NSwgMHg0RiwgMHhGMCwgMHhGRiB9LCAi
R2lnYWNhZ2UiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpJbWFnZXNdID0gSGlz
dG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkltYWdlcywgeyAweEZGLCAw
eEZGLCAweDAwLCAweEZGIH0sICJJbWFnZXMiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVn
b3J5OjpMYXllcnNdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6
OkxheWVycywgeyAweDAwLCAweEZGLCAweEZGLCAweEZGIH0sICJMYXllcnMiKTsKKyAgICBjYXRl
Z29yaWVzW01lbW9yeUNhdGVnb3J5OjpMaWJjTWFsbG9jXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdv
cnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpMaWJjTWFsbG9jLCB7IDB4MDAsIDB4RkYsIDB4MDAsIDB4
RkYgfSwgImxpYmMgbWFsbG9jIik7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6Ym1h
bGxvY10gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6Ym1hbGxv
YywgeyAweEZGLCAweDYwLCAweDYwLCAweEZGIH0sICJibWFsbG9jIik7CisgICAgY2F0ZWdvcmll
c1tNZW1vcnlDYXRlZ29yeTo6SXNvSGVhcF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhN
ZW1vcnlDYXRlZ29yeTo6SXNvSGVhcCwgeyAweDgwLCAweDlGLCAweDQwLCAweEZGIH0sICJJc29I
ZWFwIik7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6T3RoZXJdID0gSGlzdG9yaWNN
ZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6Ok90aGVyLCB7IDB4QzAsIDB4RkYsIDB4
MDAsIDB4RkYgfSwgIk90aGVyIik7CiAKICAgICAvLyBTdWIgY2F0ZWdvcmllcyAoZS5nIGJyZWFr
ZG93biBvZiBibWFsbG9jIHRhZy4pCi0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6R0NI
ZWFwXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ0hlYXAs
IDB4RkZBMEEwRkYsICJHQyBoZWFwIiwgdHJ1ZSk7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRl
Z29yeTo6R0NPd25lZF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29y
eTo6R0NPd25lZCwgMHhGRkZGQzA2MCwgIkdDIG93bmVkIiwgdHJ1ZSk7CisgICAgY2F0ZWdvcmll
c1tNZW1vcnlDYXRlZ29yeTo6R0NIZWFwXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1l
bW9yeUNhdGVnb3J5OjpHQ0hlYXAsIHsgMHhBMCwgMHhBMCwgMHhGRiwgMHhGRiB9LCAiR0MgaGVh
cCIsIHRydWUpOworICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkdDT3duZWRdID0gSGlz
dG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkdDT3duZWQsIHsgMHhGRiwg
MHhDMCwgMHg2MCwgMHhGRiB9LCAiR0Mgb3duZWQiLCB0cnVlKTsKIAogI2lmbmRlZiBOREVCVUcK
ICAgICAvLyBFbnN1cmUgdGhpcyBhbGlnbnMgd2l0aCBSZXNvdXJjZVVzYWdlRGF0YSdzIGNhdGVn
b3J5IG9yZGVyLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYWR3YWl0YS9TY3JvbGxi
YXJUaGVtZUFkd2FpdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Fkd2FpdGEvU2Nyb2xsYmFyVGhlbWVBZHdhaXRhLmNwcAkocmV2aXNpb24gMjYzOTUzKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYWR3YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MywxMyArNDMsMTMgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG92ZXJsYXlUaHVtYlNpemUgPQogc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1UaHVtYlNp
emUgPSA0MDsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB0aHVtYlNpemUgPSA2Owogc3RhdGljIGNv
bnN0IGRvdWJsZSBzY3JvbGxiYXJPcGFjaXR5ID0gMC44Owotc3RhdGljIGNvbnN0IENvbG9yIHNj
cm9sbGJhckJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTIsIDI1MiwgMjUyKTsK
LXN0YXRpYyBjb25zdCBDb2xvciBzY3JvbGxiYXJCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xv
cigyMjAsIDIyMywgMjI3KTsKLXN0YXRpYyBjb25zdCBDb2xvciBvdmVybGF5VGh1bWJCb3JkZXJD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1LCAxMDApOwotc3RhdGljIGNvbnN0
IENvbG9yIG92ZXJsYXlUaHVtYkNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDQ2LCA1MiwgNTQsIDEw
MCk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgdGh1bWJIb3ZlcmVkQ29sb3IgPSBtYWtlU2ltcGxlQ29s
b3IoODYsIDkxLCA5Mik7Ci1zdGF0aWMgY29uc3QgQ29sb3IgdGh1bWJQcmVzc2VkQ29sb3IgPSBt
YWtlU2ltcGxlQ29sb3IoMjcsIDEwNiwgMjAzKTsKLXN0YXRpYyBjb25zdCBDb2xvciB0aHVtYkNv
bG9yID0gbWFrZVNpbXBsZUNvbG9yKDEyNiwgMTI5LCAxMzApOworc3RhdGljIGNvbnN0ZXhwciBh
dXRvIHNjcm9sbGJhckJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTIsIDI1Miwg
MjUyKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JvbGxiYXJCb3JkZXJDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigyMjAsIDIyMywgMjI3KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBvdmVybGF5
VGh1bWJCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1LCAxMDApOwor
c3RhdGljIGNvbnN0ZXhwciBhdXRvIG92ZXJsYXlUaHVtYkNvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDQ2LCA1MiwgNTQsIDEwMCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gdGh1bWJIb3ZlcmVkQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoODYsIDkxLCA5Mik7CitzdGF0aWMgY29uc3RleHByIGF1dG8g
dGh1bWJQcmVzc2VkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjcsIDEwNiwgMjAzKTsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byB0aHVtYkNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDEyNiwgMTI5LCAx
MzApOwogCiBib29sIFNjcm9sbGJhclRoZW1lQWR3YWl0YTo6dXNlc092ZXJsYXlTY3JvbGxiYXJz
KCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5jcHAJKHJldmlzaW9uIDI2Mzk1MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTggKzI2LDE0IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKIAotI2luY2x1ZGUgIkFuaW1hdGlvblV0
aWxpdGllcy5oIgogI2luY2x1ZGUgIkNvbG9yU2VyaWFsaXphdGlvbi5oIgotI2luY2x1ZGUgIkNv
bG9yVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBsaWdodGVuZWRCbGFjayB7IDB4RkY1NDU0NTQg
fTsKLXN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgZGFya2VuZWRXaGl0ZSB7IDB4RkZBQkFC
QUIgfTsKK3N0YXRpYyBjb25zdGV4cHIgQ29uc3RleHByQ29sb3IgbGlnaHRlbmVkQmxhY2sgeyAw
eDU0LCAweDU0LCAweDU0LCAweEZGIH07CitzdGF0aWMgY29uc3RleHByIENvbnN0ZXhwckNvbG9y
IGRhcmtlbmVkV2hpdGUgeyAweEFCLCAweEFCLCAweEFCLCAweEZGIH07CiAKIENvbG9yOjpDb2xv
cihjb25zdCBDb2xvciYgb3RoZXIpCiAgICAgOiBtX2NvbG9yRGF0YShvdGhlci5tX2NvbG9yRGF0
YSkKQEAgLTc1LDcgKzcxLDcgQEAgQ29sb3ImIENvbG9yOjpvcGVyYXRvcj0oQ29sb3ImJiBvdGhl
cikKICAgICAgICAgbV9jb2xvckRhdGEuZXh0ZW5kZWRDb2xvci0+ZGVyZWYoKTsKIAogICAgIG1f
Y29sb3JEYXRhID0gb3RoZXIubV9jb2xvckRhdGE7Ci0gICAgb3RoZXIubV9jb2xvckRhdGEuc2lt
cGxlQ29sb3JBbmRGbGFncyA9IGludmFsaWRTaW1wbGVDb2xvcjsKKyAgICBvdGhlci5tX2NvbG9y
RGF0YS5pbmxpbmVDb2xvckFuZEZsYWdzID0gaW52YWxpZElubGluZUNvbG9yOwogCiAgICAgcmV0
dXJuICp0aGlzOwogfQpAQCAtODMsNyArNzksNyBAQCBDb2xvciYgQ29sb3I6Om9wZXJhdG9yPShD
b2xvciYmIG90aGVyKQogQ29sb3IgQ29sb3I6OmxpZ2h0ZW5lZCgpIGNvbnN0CiB7CiAgICAgLy8g
SGFyZGNvZGUgdGhpcyBjb21tb24gY2FzZSBmb3Igc3BlZWQuCi0gICAgaWYgKGlzU2ltcGxlKCkg
JiYgYXNTaW1wbGUoKSA9PSBibGFjaykKKyAgICBpZiAoaXNJbmxpbmUoKSAmJiBhc1NpbXBsZSgp
ID09IGJsYWNrKQogICAgICAgICByZXR1cm4gbGlnaHRlbmVkQmxhY2s7CiAKICAgICBhdXRvIFty
LCBnLCBiLCBhXSA9IHRvU1JHQkFMb3NzeTxmbG9hdD4oKTsKQEAgLTk0LDEzICs5MCwxMyBAQCBD
b2xvciBDb2xvcjo6bGlnaHRlbmVkKCkgY29uc3QKIAogICAgIGZsb2F0IG11bHRpcGxpZXIgPSBz
dGQ6Om1pbigxLjBmLCB2ICsgMC4zM2YpIC8gdjsKIAotICAgIHJldHVybiBtYWtlU2ltcGxlQ29s
b3IoU1JHQkEgeyBtdWx0aXBsaWVyICogciwgbXVsdGlwbGllciAqIGcsIG11bHRpcGxpZXIgKiBi
LCBhIH0pOworICAgIHJldHVybiBjb252ZXJ0VG9Db21wb25lbnRCeXRlc0xvc3N5KFNSR0JBIHsg
bXVsdGlwbGllciAqIHIsIG11bHRpcGxpZXIgKiBnLCBtdWx0aXBsaWVyICogYiwgYSB9KTsKIH0K
IAogQ29sb3IgQ29sb3I6OmRhcmtlbmVkKCkgY29uc3QKIHsKICAgICAvLyBIYXJkY29kZSB0aGlz
IGNvbW1vbiBjYXNlIGZvciBzcGVlZC4KLSAgICBpZiAoaXNTaW1wbGUoKSAmJiBhc1NpbXBsZSgp
ID09IHdoaXRlKQorICAgIGlmIChpc0lubGluZSgpICYmIGFzU2ltcGxlKCkgPT0gd2hpdGUpCiAg
ICAgICAgIHJldHVybiBkYXJrZW5lZFdoaXRlOwogICAgIAogICAgIGF1dG8gW3IsIGcsIGIsIGFd
ID0gdG9TUkdCQUxvc3N5PGZsb2F0PigpOwpAQCAtMTA4LDcgKzEwNCw3IEBAIENvbG9yIENvbG9y
OjpkYXJrZW5lZCgpIGNvbnN0CiAgICAgZmxvYXQgdiA9IHN0ZDo6bWF4KHsgciwgZywgYiB9KTsK
ICAgICBmbG9hdCBtdWx0aXBsaWVyID0gc3RkOjptYXgoMC4wZiwgKHYgLSAwLjMzZikgLyB2KTsK
IAotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoU1JHQkEgeyBtdWx0aXBsaWVyICogciwgbXVs
dGlwbGllciAqIGcsIG11bHRpcGxpZXIgKiBiLCBhIH0pOworICAgIHJldHVybiBjb252ZXJ0VG9D
b21wb25lbnRCeXRlc0xvc3N5KFNSR0JBIHsgbXVsdGlwbGllciAqIHIsIG11bHRpcGxpZXIgKiBn
LCBtdWx0aXBsaWVyICogYiwgYSB9KTsKIH0KIAogZmxvYXQgQ29sb3I6OmxpZ2h0bmVzcygpIGNv
bnN0CkBAIC0xNDgsOCArMTQ0LDcgQEAgQ29sb3IgQ29sb3I6OnNlbWFudGljQ29sb3IoKSBjb25z
dAogewogICAgIGlmIChpc1NlbWFudGljKCkpCiAgICAgICAgIHJldHVybiAqdGhpczsKLQotICAg
IHJldHVybiB7IG1ha2VTaW1wbGVDb2xvcih0b1NSR0JBTG9zc3k8dWludDhfdD4oKSksIFNlbWFu
dGljIH07CisgICAgcmV0dXJuIHsgdG9TUkdCQUxvc3N5PHVpbnQ4X3Q+KCksIFNlbWFudGljIH07
CiB9CiAKIHN0ZDo6cGFpcjxDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+PiBDb2xv
cjo6Y29sb3JTcGFjZUFuZENvbXBvbmVudHMoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNjM5NTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxOCAr
NTEsNjcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0dka1JHQkEgR2RrUkdCQTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBDb2xvcjsKKworc3RydWN0IENvbnN0ZXhwckNvbG9yIHsKKyAgICBj
b25zdGV4cHIgQ29uc3RleHByQ29sb3IoU1JHQkE8dWludDhfdD4gcmdiYSkKKyAgICAgICAgOiBj
b2xvciB7IHJnYmEgfQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgQ29uc3RleHByQ29s
b3IodWludDhfdCByLCB1aW50OF90IGcsIHVpbnQ4X3QgYiwgdWludDhfdCBhKQorICAgICAgICA6
IGNvbG9yIHsgciwgZywgYiwgYSB9CisgICAgeworICAgIH0KKworICAgIGNvbnN0ZXhwciBvcGVy
YXRvciBTUkdCQTx1aW50OF90PigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY29sb3I7
CisgICAgfQorCisgICAgY29uc3RleHByIHVpbnQzMl90IHZhbHVlKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhc1BhY2tlZFJHQkEoY29sb3IpLnZhbHVlOworICAgIH0KKworICAgIGNv
bnN0ZXhwciBDb25zdGV4cHJDb2xvciBjb2xvcldpdGhBbHBoYSh1aW50OF90IGFscGhhKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG92ZXJyaWRlQWxwaGFDb21wb25lbnQoY29sb3IsIGFs
cGhhKTsKKyAgICB9CisKKyAgICBTUkdCQTx1aW50OF90PiBjb2xvcjsKK307CisKIGNsYXNzIENv
bG9yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBDb2xvcigp
IHsgfQorICAgIENvbG9yKCkKKyAgICB7CisgICAgfQorCisgICAgQ29sb3IoU1JHQkE8dWludDhf
dD4gY29sb3IpCisgICAgeworICAgICAgICBzZXRJbmxpbmVDb2xvcihjb2xvcik7CisgICAgfQor
CisgICAgQ29sb3IoT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IGNvbG9yKQorICAgIHsKKyAgICAg
ICAgaWYgKGNvbG9yKQorICAgICAgICAgICAgc2V0SW5saW5lQ29sb3IoKmNvbG9yKTsKKyAgICB9
CiAKICAgICBDb2xvcihTaW1wbGVDb2xvciBjb2xvcikKKyAgICAgICAgOiBDb2xvcihjb2xvci5h
c1NSR0JBPHVpbnQ4X3Q+KCkpCisgICAgeworICAgIH0KKworICAgIENvbG9yKENvbnN0ZXhwckNv
bG9yIGNvbG9yKQorICAgICAgICA6IENvbG9yKGNvbG9yLmNvbG9yKQogICAgIHsKLSAgICAgICAg
c2V0U2ltcGxlQ29sb3IoY29sb3IpOwogICAgIH0KIAogICAgIGVudW0gU2VtYW50aWNUYWcgeyBT
ZW1hbnRpYyB9OwotICAgIENvbG9yKFNpbXBsZUNvbG9yIGNvbG9yLCBTZW1hbnRpY1RhZykKKyAg
ICBDb2xvcihTUkdCQTx1aW50OF90PiBjb2xvciwgU2VtYW50aWNUYWcpCiAgICAgICAgIDogQ29s
b3IoY29sb3IpCiAgICAgewogICAgICAgICB0YWdBc1NlbWFudGljKCk7CkBAIC03MiwzMCArMTIx
LDMwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8vIFplcm8gdGhlIHVuaW9uLCBqdXN0IGlu
IGNhc2UgYSAzMi1iaXQgc3lzdGVtIG9ubHkgYXNzaWducyB0aGUKICAgICAgICAgLy8gdG9wIDMy
IGJpdHMgd2hlbiBjb3B5aW5nIHRoZSBFeHRlbmRlZENvbG9yIHBvaW50ZXIgYmVsb3cuCi0gICAg
ICAgIG1fY29sb3JEYXRhLnNpbXBsZUNvbG9yQW5kRmxhZ3MgPSAwOworICAgICAgICBtX2NvbG9y
RGF0YS5pbmxpbmVDb2xvckFuZEZsYWdzID0gMDsKICAgICAgICAgbV9jb2xvckRhdGEuZXh0ZW5k
ZWRDb2xvciA9ICZleHRlbmRlZENvbG9yLmxlYWtSZWYoKTsKICAgICAgICAgQVNTRVJUKGlzRXh0
ZW5kZWQoKSk7CiAgICAgfQogCiAgICAgZXhwbGljaXQgQ29sb3IoV1RGOjpIYXNoVGFibGVEZWxl
dGVkVmFsdWVUeXBlKQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChkZWxldGVkSGFzaFZh
bHVlICYgaW52YWxpZFNpbXBsZUNvbG9yLCAiQ29sb3IncyBkZWxldGVkIGhhc2ggdmFsdWUgbXVz
dCBub3QgbG9vayBsaWtlIGFuIEV4dGVuZGVkQ29sb3IiKTsKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dCghKGRlbGV0ZWRIYXNoVmFsdWUgJiB2YWxpZFNpbXBsZUNvbG9yQml0KSwgIkNvbG9yJ3MgZGVs
ZXRlZCBoYXNoIHZhbHVlIG11c3Qgbm90IGxvb2sgbGlrZSBhIHZhbGlkIFNpbXBsZUNvbG9yIik7
CisgICAgICAgIHN0YXRpY19hc3NlcnQoZGVsZXRlZEhhc2hWYWx1ZSAmIGludmFsaWRJbmxpbmVD
b2xvciwgIkNvbG9yJ3MgZGVsZXRlZCBoYXNoIHZhbHVlIG11c3Qgbm90IGxvb2sgbGlrZSBhbiBF
eHRlbmRlZENvbG9yIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoIShkZWxldGVkSGFzaFZhbHVl
ICYgdmFsaWRJbmxpbmVDb2xvckJpdCksICJDb2xvcidzIGRlbGV0ZWQgaGFzaCB2YWx1ZSBtdXN0
IG5vdCBsb29rIGxpa2UgYSB2YWxpZCBTaW1wbGVDb2xvciIpOwogICAgICAgICBzdGF0aWNfYXNz
ZXJ0KGRlbGV0ZWRIYXNoVmFsdWUgJiAoMSA8PCA0KSwgIkNvbG9yJ3MgZGVsZXRlZCBoYXNoIHZh
bHVlIG11c3QgaGF2ZSBzb21lIGJpdHMgc2V0IHRoYXQgYW4gU2ltcGxlQ29sb3Igd291bGRuJ3Qg
aGF2ZSIpOwotICAgICAgICBtX2NvbG9yRGF0YS5zaW1wbGVDb2xvckFuZEZsYWdzID0gZGVsZXRl
ZEhhc2hWYWx1ZTsKKyAgICAgICAgbV9jb2xvckRhdGEuaW5saW5lQ29sb3JBbmRGbGFncyA9IGRl
bGV0ZWRIYXNoVmFsdWU7CiAgICAgICAgIEFTU0VSVCghaXNFeHRlbmRlZCgpKTsKICAgICB9CiAK
ICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBtX2NvbG9yRGF0YS5zaW1wbGVDb2xvckFuZEZsYWdzID09IGRlbGV0ZWRIYXNoVmFs
dWU7CisgICAgICAgIHJldHVybiBtX2NvbG9yRGF0YS5pbmxpbmVDb2xvckFuZEZsYWdzID09IGRl
bGV0ZWRIYXNoVmFsdWU7CiAgICAgfQogCiAgICAgZXhwbGljaXQgQ29sb3IoV1RGOjpIYXNoVGFi
bGVFbXB0eVZhbHVlVHlwZSkKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoZW1wdHlIYXNo
VmFsdWUgJiBpbnZhbGlkU2ltcGxlQ29sb3IsICJDb2xvcidzIGVtcHR5IGhhc2ggdmFsdWUgbXVz
dCBub3QgbG9vayBsaWtlIGFuIEV4dGVuZGVkQ29sb3IiKTsKKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChlbXB0eUhhc2hWYWx1ZSAmIGludmFsaWRJbmxpbmVDb2xvciwgIkNvbG9yJ3MgZW1wdHkgaGFz
aCB2YWx1ZSBtdXN0IG5vdCBsb29rIGxpa2UgYW4gRXh0ZW5kZWRDb2xvciIpOwogICAgICAgICBz
dGF0aWNfYXNzZXJ0KGVtcHR5SGFzaFZhbHVlICYgKDEgPDwgNCksICJDb2xvcidzIGRlbGV0ZWQg
aGFzaCB2YWx1ZSBtdXN0IGhhdmUgc29tZSBiaXRzIHNldCB0aGF0IGFuIFNpbXBsZUNvbG9yIHdv
dWxkbid0IGhhdmUiKTsKLSAgICAgICAgbV9jb2xvckRhdGEuc2ltcGxlQ29sb3JBbmRGbGFncyA9
IGVtcHR5SGFzaFZhbHVlOworICAgICAgICBtX2NvbG9yRGF0YS5pbmxpbmVDb2xvckFuZEZsYWdz
ID0gZW1wdHlIYXNoVmFsdWU7CiAgICAgICAgIEFTU0VSVCghaXNFeHRlbmRlZCgpKTsKICAgICB9
CiAKQEAgLTEwOCw3ICsxNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2NvbG9yRGF0YS5l
eHRlbmRlZENvbG9yLT5kZXJlZigpOwogICAgIH0KIAotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIGlzRXh0ZW5kZWQoKSB8fCAobV9jb2xvckRhdGEuc2ltcGxlQ29sb3JBbmRGbGFn
cyAmIHZhbGlkU2ltcGxlQ29sb3JCaXQpOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gaXNFeHRlbmRlZCgpIHx8IChtX2NvbG9yRGF0YS5pbmxpbmVDb2xvckFuZEZsYWdzICYg
dmFsaWRJbmxpbmVDb2xvckJpdCk7IH0KIAogICAgIGJvb2wgaXNPcGFxdWUoKSBjb25zdCB7IHJl
dHVybiBpc0V4dGVuZGVkKCkgPyBhc0V4dGVuZGVkKCkuYWxwaGEoKSA9PSAxLjAgOiBhc1NpbXBs
ZSgpLmlzT3BhcXVlKCk7IH0KICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIGlz
RXh0ZW5kZWQoKSA/IGFzRXh0ZW5kZWQoKS5hbHBoYSgpID4gMC4wIDogYXNTaW1wbGUoKS5pc1Zp
c2libGUoKTsgfQpAQCAtMTQ1LDcgKzE5NCw3IEBAIHB1YmxpYzoKICAgICBDb2xvciBzZW1hbnRp
Y0NvbG9yKCkgY29uc3Q7CiAKICAgICAvLyBUcnVlIGlmIHRoZSBjb2xvciBvcmlnaW5hdGVkIGZy
b20gYSBDU1Mgc2VtYW50aWMgY29sb3IgbmFtZS4KLSAgICBib29sIGlzU2VtYW50aWMoKSBjb25z
dCB7IHJldHVybiBpc1NpbXBsZSgpICYmIChtX2NvbG9yRGF0YS5zaW1wbGVDb2xvckFuZEZsYWdz
ICYgaXNTZW1hbnRpY1NpbXBsZUNvbG9yQml0KTsgfQorICAgIGJvb2wgaXNTZW1hbnRpYygpIGNv
bnN0IHsgcmV0dXJuIGlzSW5saW5lKCkgJiYgKG1fY29sb3JEYXRhLmlubGluZUNvbG9yQW5kRmxh
Z3MgJiBpc1NlbWFudGljSW5saW5lQ29sb3JCaXQpOyB9CiAKICNpZiBQTEFURk9STShHVEspCiAg
ICAgQ29sb3IoY29uc3QgR2RrUkdCQSYpOwpAQCAtMTYzLDIwICsyMTIsMjEgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIEQyRDFfVkVDVE9SXzRGKCkgY29uc3Q7CiAjZW5k
aWYKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgYmxhY2sgeyAweEZGMDAwMDAw
IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciB3aGl0ZSB7IDB4RkZGRkZGRkYg
fTsKLSAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIGRhcmtHcmF5IHsgMHhGRjgwODA4
MCB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgZ3JheSB7IDB4RkZBMEEwQTAg
fTsKLSAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIGxpZ2h0R3JheSB7IDB4RkZDMEMw
QzAgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIHRyYW5zcGFyZW50IHsgMHgw
MDAwMDAwMCB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgY3lhbiB7IDB4RkYw
MEZGRkYgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIHllbGxvdyB7IDB4RkZG
RkZGMDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gYmxhY2sgPSBDb25zdGV4cHJDb2xv
ciB7IDB4MDAsIDB4MDAsIDB4MDAsIDB4RkYgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8g
d2hpdGUgPSBDb25zdGV4cHJDb2xvciB7IDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYgfTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGF1dG8gZGFya0dyYXkgPSBDb25zdGV4cHJDb2xvciB7IDB4ODAsIDB4
ODAsIDB4ODAsIDB4RkYgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZ3JheSA9IENvbnN0
ZXhwckNvbG9yIHsgMHhBMCwgMHhBMCwgMHhBMCwgMHhGRiB9OworICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBsaWdodEdyYXkgPSBDb25zdGV4cHJDb2xvciB7IDB4QzAsIDB4QzAsIDB4QzAsIDB4
RkYgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gdHJhbnNwYXJlbnQgPSBDb25zdGV4cHJD
b2xvciB7IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1
dG8gY3lhbiA9IENvbnN0ZXhwckNvbG9yIHsgMHgwMCwgMHhGRiwgMHhGRiwgMHhGRiB9OworICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byB5ZWxsb3cgPSBDb25zdGV4cHJDb2xvciB7IDB4RkYsIDB4
RkYsIDB4MDAsIDB4RkYgfTsKIAotICAgIGJvb2wgaXNFeHRlbmRlZCgpIGNvbnN0IHsgcmV0dXJu
ICEobV9jb2xvckRhdGEuc2ltcGxlQ29sb3JBbmRGbGFncyAmIGludmFsaWRTaW1wbGVDb2xvcik7
IH0KLSAgICBib29sIGlzU2ltcGxlKCkgY29uc3QgeyByZXR1cm4gIWlzRXh0ZW5kZWQoKTsgfQor
ICAgIGJvb2wgaXNFeHRlbmRlZCgpIGNvbnN0IHsgcmV0dXJuICEobV9jb2xvckRhdGEuaW5saW5l
Q29sb3JBbmRGbGFncyAmIGludmFsaWRJbmxpbmVDb2xvcik7IH0KKyAgICBib29sIGlzSW5saW5l
KCkgY29uc3QgeyByZXR1cm4gIWlzRXh0ZW5kZWQoKTsgfQogCiAgICAgY29uc3QgRXh0ZW5kZWRD
b2xvciYgYXNFeHRlbmRlZCgpIGNvbnN0OwogICAgIGNvbnN0IFNpbXBsZUNvbG9yIGFzU2ltcGxl
KCkgY29uc3Q7CisgICAgY29uc3QgU1JHQkE8dWludDhfdD4gYXNJbmxpbmUoKSBjb25zdDsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yJiBvcGVyYXRvcj0oY29uc3QgQ29sb3ImKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBDb2xvciYgb3BlcmF0b3I9KENvbG9yJiYpOwpAQCAtMTkzLDI1ICsyNDMs
MjUgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxDb2xvcj4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHNldFNpbXBs
ZUNvbG9yKFNpbXBsZUNvbG9yKTsKKyAgICB2b2lkIHNldElubGluZUNvbG9yKFNSR0JBPHVpbnQ4
X3Q+KTsKIAotICAgIHZvaWQgdGFnQXNTZW1hbnRpYygpIHsgbV9jb2xvckRhdGEuc2ltcGxlQ29s
b3JBbmRGbGFncyB8PSBpc1NlbWFudGljU2ltcGxlQ29sb3JCaXQ7IH0KLSAgICB2b2lkIHRhZ0Fz
VmFsaWQoKSB7IG1fY29sb3JEYXRhLnNpbXBsZUNvbG9yQW5kRmxhZ3MgfD0gdmFsaWRTaW1wbGVD
b2xvcjsgfQorICAgIHZvaWQgdGFnQXNTZW1hbnRpYygpIHsgbV9jb2xvckRhdGEuaW5saW5lQ29s
b3JBbmRGbGFncyB8PSBpc1NlbWFudGljSW5saW5lQ29sb3JCaXQ7IH0KKyAgICB2b2lkIHRhZ0Fz
VmFsaWQoKSB7IG1fY29sb3JEYXRhLmlubGluZUNvbG9yQW5kRmxhZ3MgfD0gdmFsaWRJbmxpbmVD
b2xvcjsgfQogCiAgICAgLy8gMHhfX19fX19fMDAgaXMgYW4gRXh0ZW5kZWRDb2xvciBwb2ludGVy
LgogICAgIC8vIDB4X19fX19fXzAxIGlzIGFuIGludmFsaWQgU2ltcGxlQ29sb3IuCiAgICAgLy8g
MHhfX19fX19fMTEgaXMgYSB2YWxpZCBTaW1wbGVDb2xvci4KICAgICBzdGF0aWMgY29uc3QgdWlu
dDY0X3QgZXh0ZW5kZWRDb2xvciA9IDB4MDsKLSAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgaW52
YWxpZFNpbXBsZUNvbG9yID0gMHgxOwotICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCB2YWxpZFNp
bXBsZUNvbG9yQml0ID0gMHgyOwotICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCB2YWxpZFNpbXBs
ZUNvbG9yID0gMHgzOwotICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBpc1NlbWFudGljU2ltcGxl
Q29sb3JCaXQgPSAweDQ7CisgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGludmFsaWRJbmxpbmVD
b2xvciA9IDB4MTsKKyAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgdmFsaWRJbmxpbmVDb2xvckJp
dCA9IDB4MjsKKyAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgdmFsaWRJbmxpbmVDb2xvciA9IDB4
MzsKKyAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgaXNTZW1hbnRpY0lubGluZUNvbG9yQml0ID0g
MHg0OwogCiAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGRlbGV0ZWRIYXNoVmFsdWUgPSAweEZG
RkZGRkZGRkZGRkZGRkQ7CiAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGVtcHR5SGFzaFZhbHVl
ID0gMHhGRkZGRkZGRkZGRkZGRkZCOwogCiAgICAgdW5pb24gewotICAgICAgICB1aW50NjRfdCBz
aW1wbGVDb2xvckFuZEZsYWdzIHsgaW52YWxpZFNpbXBsZUNvbG9yIH07CisgICAgICAgIHVpbnQ2
NF90IGlubGluZUNvbG9yQW5kRmxhZ3MgeyBpbnZhbGlkSW5saW5lQ29sb3IgfTsKICAgICAgICAg
RXh0ZW5kZWRDb2xvciogZXh0ZW5kZWRDb2xvcjsKICAgICB9IG1fY29sb3JEYXRhOwogfTsKQEAg
LTIzNCw3ICsyODQsNyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9yJiBhLCBj
CiAgICAgaWYgKGEuaXNFeHRlbmRlZCgpIHx8IGIuaXNFeHRlbmRlZCgpKQogICAgICAgICByZXR1
cm4gZXh0ZW5kZWRDb2xvcnNFcXVhbChhLCBiKTsKIAotICAgIHJldHVybiBhLm1fY29sb3JEYXRh
LnNpbXBsZUNvbG9yQW5kRmxhZ3MgPT0gYi5tX2NvbG9yRGF0YS5zaW1wbGVDb2xvckFuZEZsYWdz
OworICAgIHJldHVybiBhLm1fY29sb3JEYXRhLmlubGluZUNvbG9yQW5kRmxhZ3MgPT0gYi5tX2Nv
bG9yRGF0YS5pbmxpbmVDb2xvckFuZEZsYWdzOwogfQogCiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IENvbG9yJiBhLCBjb25zdCBDb2xvciYgYikKQEAgLTI1NSwxNCArMzA1LDE0IEBAIGlu
bGluZSBib29sIGVxdWFsSWdub3JpbmdTZW1hbnRpY0NvbG9yKGMKIHsKICAgICBpZiAoYS5pc0V4
dGVuZGVkKCkgfHwgYi5pc0V4dGVuZGVkKCkpCiAgICAgICAgIHJldHVybiBleHRlbmRlZENvbG9y
c0VxdWFsKGEsIGIpOwotICAgIHJldHVybiAoYS5tX2NvbG9yRGF0YS5zaW1wbGVDb2xvckFuZEZs
YWdzICYgfkNvbG9yOjppc1NlbWFudGljU2ltcGxlQ29sb3JCaXQpID09IChiLm1fY29sb3JEYXRh
LnNpbXBsZUNvbG9yQW5kRmxhZ3MgJiB+Q29sb3I6OmlzU2VtYW50aWNTaW1wbGVDb2xvckJpdCk7
CisgICAgcmV0dXJuIChhLm1fY29sb3JEYXRhLmlubGluZUNvbG9yQW5kRmxhZ3MgJiB+Q29sb3I6
OmlzU2VtYW50aWNJbmxpbmVDb2xvckJpdCkgPT0gKGIubV9jb2xvckRhdGEuaW5saW5lQ29sb3JB
bmRGbGFncyAmIH5Db2xvcjo6aXNTZW1hbnRpY0lubGluZUNvbG9yQml0KTsKIH0KIAogaW5saW5l
IHVuc2lnbmVkIENvbG9yOjpoYXNoKCkgY29uc3QKIHsKICAgICBpZiAoaXNFeHRlbmRlZCgpKQog
ICAgICAgICByZXR1cm4gYXNFeHRlbmRlZCgpLmhhc2goKTsKLSAgICByZXR1cm4gV1RGOjppbnRI
YXNoKG1fY29sb3JEYXRhLnNpbXBsZUNvbG9yQW5kRmxhZ3MpOworICAgIHJldHVybiBXVEY6Omlu
dEhhc2gobV9jb2xvckRhdGEuaW5saW5lQ29sb3JBbmRGbGFncyk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IFNSR0JBPFQ+IENvbG9yOjp0b1NSR0JBTG9zc3koKSBjb25zdApAQCAtMzAwLDEz
ICszNTAsMTkgQEAgaW5saW5lIGNvbnN0IEV4dGVuZGVkQ29sb3ImIENvbG9yOjphc0V4dAogCiBp
bmxpbmUgY29uc3QgU2ltcGxlQ29sb3IgQ29sb3I6OmFzU2ltcGxlKCkgY29uc3QKIHsKLSAgICBB
U1NFUlQoaXNTaW1wbGUoKSk7Ci0gICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1f
Y29sb3JEYXRhLnNpbXBsZUNvbG9yQW5kRmxhZ3MgPj4gMzIpIH07CisgICAgQVNTRVJUKGlzSW5s
aW5lKCkpOworICAgIHJldHVybiBQYWNrZWQ6OlJHQkEgeyBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
bV9jb2xvckRhdGEuaW5saW5lQ29sb3JBbmRGbGFncyA+PiAzMikgfTsKK30KKworaW5saW5lIGNv
bnN0IFNSR0JBPHVpbnQ4X3Q+IENvbG9yOjphc0lubGluZSgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KGlzSW5saW5lKCkpOworICAgIHJldHVybiBhc1NSR0JBKFBhY2tlZDo6UkdCQSB7IHN0YXRpY19j
YXN0PHVpbnQzMl90PihtX2NvbG9yRGF0YS5pbmxpbmVDb2xvckFuZEZsYWdzID4+IDMyKSB9KTsK
IH0KIAotaW5saW5lIHZvaWQgQ29sb3I6OnNldFNpbXBsZUNvbG9yKFNpbXBsZUNvbG9yIHNpbXBs
ZUNvbG9yKQoraW5saW5lIHZvaWQgQ29sb3I6OnNldElubGluZUNvbG9yKFNSR0JBPHVpbnQ4X3Q+
IGNvbG9yKQogewotICAgIG1fY29sb3JEYXRhLnNpbXBsZUNvbG9yQW5kRmxhZ3MgPSBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oc2ltcGxlQ29sb3IudmFsdWUoKSkgPDwgMzI7CisgICAgbV9jb2xvckRh
dGEuaW5saW5lQ29sb3JBbmRGbGFncyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhc1BhY2tlZFJH
QkEoY29sb3IpLnZhbHVlKSA8PCAzMjsKICAgICB0YWdBc1ZhbGlkKCk7CiB9CiAKQEAgLTM1MCw3
ICs0MDYsNyBAQCB2b2lkIENvbG9yOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uCiAgICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIGVuY29kZSB3aGV0aGVyIHRoZSBjb2xvciBpcyBzZW1hbnRp
Yy4KIAogICAgIGVuY29kZXIgPDwgdHJ1ZTsKLSAgICBlbmNvZGVyIDw8IGFzU2ltcGxlKCkudmFs
dWUoKTsKKyAgICBlbmNvZGVyIDw8IGFzUGFja2VkUkdCQShhc1NpbXBsZSgpLmFzU1JHQkE8dWlu
dDhfdD4oKSkudmFsdWU7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0zOTAsNyAr
NDQ2LDcgQEAgT3B0aW9uYWw8Q29sb3I+IENvbG9yOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
Ci0gICAgcmV0dXJuIENvbG9yIHsgU2ltcGxlQ29sb3IgeyB2YWx1ZSB9IH07CisgICAgcmV0dXJu
IENvbG9yIHsgYXNTUkdCQShQYWNrZWQ6OlJHQkEgeyB2YWx1ZSB9KSB9OwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvckJsZW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvckJsZW5kaW5nLmNwcAkocmV2aXNpb24gMjYzOTUzKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCbGVuZGluZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDcgKzQ4LDcgQEAgQ29sb3IgYmxlbmRTb3VyY2VPdmVyKGNvbnN0IENvbG9yJiBiYWNr
ZAogICAgIGludCBnID0gKGJhY2tkcm9wRyAqIGJhY2tkcm9wQSAqICgweEZGIC0gc291cmNlQSkg
KyAweEZGICogc291cmNlQSAqIHNvdXJjZUcpIC8gZDsKICAgICBpbnQgYiA9IChiYWNrZHJvcEIg
KiBiYWNrZHJvcEEgKiAoMHhGRiAtIHNvdXJjZUEpICsgMHhGRiAqIHNvdXJjZUEgKiBzb3VyY2VC
KSAvIGQ7CiAKLSAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKHIsIGcsIGIsIGEpOworICAgIHJl
dHVybiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE8dWludDhfdD4+KHIsIGcsIGIsIGEpOwog
fQogCiBDb2xvciBibGVuZFdpdGhXaGl0ZShjb25zdCBDb2xvciYgY29sb3IpCkBAIC03MCw3ICs3
MCw3IEBAIENvbG9yIGJsZW5kV2l0aFdoaXRlKGNvbnN0IENvbG9yJiBjb2xvcikKIAogICAgIGF1
dG8gW2V4aXN0aW5nUiwgZXhpc3RpbmdHLCBleGlzdGluZ0IsIGV4aXN0aW5nQWxwaGFdID0gY29s
b3IudG9TUkdCQUxvc3N5PHVpbnQ4X3Q+KCk7CiAKLSAgICBTaW1wbGVDb2xvciByZXN1bHQ7Cisg
ICAgU1JHQkE8dWludDhfdD4gcmVzdWx0OwogICAgIGZvciAoaW50IGFscGhhID0gc3RhcnRBbHBo
YTsgYWxwaGEgPD0gZW5kQWxwaGE7IGFscGhhICs9IGFscGhhSW5jcmVtZW50KSB7CiAgICAgICAg
IC8vIFdlIGhhdmUgYSBzb2xpZCBjb2xvci4gIENvbnZlcnQgdG8gYW4gZXF1aXZhbGVudCBjb2xv
ciB0aGF0IGxvb2tzIHRoZSBzYW1lIHdoZW4gYmxlbmRlZCB3aXRoIHdoaXRlCiAgICAgICAgIC8v
IGF0IHRoZSBjdXJyZW50IGFscGhhLiAgVHJ5IHVzaW5nIGxlc3MgdHJhbnNwYXJlbmN5IGlmIHRo
ZSBudW1iZXJzIGVuZCB1cCBiZWluZyBuZWdhdGl2ZS4KQEAgLTc4LDcgKzc4LDcgQEAgQ29sb3Ig
YmxlbmRXaXRoV2hpdGUoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgICAgICBpbnQgZyA9IGJsZW5k
Q29tcG9uZW50KGV4aXN0aW5nRywgYWxwaGEpOwogICAgICAgICBpbnQgYiA9IGJsZW5kQ29tcG9u
ZW50KGV4aXN0aW5nQiwgYWxwaGEpOwogCi0gICAgICAgIHJlc3VsdCA9IG1ha2VTaW1wbGVDb2xv
cihyLCBnLCBiLCBhbHBoYSk7CisgICAgICAgIHJlc3VsdCA9IGNsYW1wVG9Db21wb25lbnRCeXRl
czxTUkdCQTx1aW50OF90Pj4ociwgZywgYiwgYWxwaGEpOwogCiAgICAgICAgIGlmIChyID49IDAg
JiYgZyA+PSAwICYmIGIgPj0gMCkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtODYsNyArODYsNyBA
QCBDb2xvciBibGVuZFdpdGhXaGl0ZShjb25zdCBDb2xvciYgY29sb3IpCiAKICAgICAvLyBGSVhN
RTogV2h5IGlzIHByZXNlcnZpbmcgdGhlIHNlbWFudGljIGJpdCBkZXNpcmVkIGFuZC9vciBjb3Jy
ZWN0IGhlcmU/CiAgICAgaWYgKGNvbG9yLmlzU2VtYW50aWMoKSkKLSAgICAgICAgcmV0dXJuIENv
bG9yKHJlc3VsdCwgQ29sb3I6OlNlbWFudGljKTsKKyAgICAgICAgcmV0dXJuIENvbG9yIHsgcmVz
dWx0LCBDb2xvcjo6U2VtYW50aWMgfTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMDAs
MTQgKzEwMCwxNCBAQCBDb2xvciBibGVuZChjb25zdCBDb2xvciYgZnJvbSwgY29uc3QgQ29sCiAg
ICAgYXV0byBwcmVtdWx0aXBsaWVkRnJvbSA9IHByZW11bHRpcGxpZWRDZWlsaW5nKGZyb20udG9T
UkdCQUxvc3N5PHVpbnQ4X3Q+KCkpOwogICAgIGF1dG8gcHJlbXVsdGlwbGllZFRvID0gcHJlbXVs
dGlwbGllZENlaWxpbmcodG8udG9TUkdCQUxvc3N5PHVpbnQ4X3Q+KCkpOwogCi0gICAgYXV0byBw
cmVtdWx0aXBsaWVkQmxlbmRlZCA9IGNvbnZlcnRUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPigKKyAg
ICBhdXRvIHByZW11bHRpcGxpZWRCbGVuZGVkID0gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JB
PHVpbnQ4X3Q+PigKICAgICAgICAgV2ViQ29yZTo6YmxlbmQocHJlbXVsdGlwbGllZEZyb20ucmVk
LCBwcmVtdWx0aXBsaWVkVG8ucmVkLCBwcm9ncmVzcyksCiAgICAgICAgIFdlYkNvcmU6OmJsZW5k
KHByZW11bHRpcGxpZWRGcm9tLmdyZWVuLCBwcmVtdWx0aXBsaWVkVG8uZ3JlZW4sIHByb2dyZXNz
KSwKICAgICAgICAgV2ViQ29yZTo6YmxlbmQocHJlbXVsdGlwbGllZEZyb20uYmx1ZSwgcHJlbXVs
dGlwbGllZFRvLmJsdWUsIHByb2dyZXNzKSwKICAgICAgICAgV2ViQ29yZTo6YmxlbmQocHJlbXVs
dGlwbGllZEZyb20uYWxwaGEsIHByZW11bHRpcGxpZWRUby5hbHBoYSwgcHJvZ3Jlc3MpCiAgICAg
KTsKIAotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IodW5wcmVtdWx0aXBsaWVkKHByZW11bHRp
cGxpZWRCbGVuZGVkKSk7CisgICAgcmV0dXJuIHVucHJlbXVsdGlwbGllZChwcmVtdWx0aXBsaWVk
QmxlbmRlZCk7CiB9CiAKIENvbG9yIGJsZW5kV2l0aG91dFByZW11bHRpcGx5KGNvbnN0IENvbG9y
JiBmcm9tLCBjb25zdCBDb2xvciYgdG8sIGRvdWJsZSBwcm9ncmVzcykKQEAgLTEyMCw3ICsxMjAs
NyBAQCBDb2xvciBibGVuZFdpdGhvdXRQcmVtdWx0aXBseShjb25zdCBDb2xvCiAgICAgYXV0byBm
cm9tU1JHQiA9IGZyb20udG9TUkdCQUxvc3N5PHVpbnQ4X3Q+KCk7CiAgICAgYXV0byB0b1NSR0Ig
PSBmcm9tLnRvU1JHQkFMb3NzeTx1aW50OF90PigpOwogCi0gICAgcmV0dXJuIG1ha2VTaW1wbGVD
b2xvcigKKyAgICByZXR1cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPHVpbnQ4X3Q+PigK
ICAgICAgICAgV2ViQ29yZTo6YmxlbmQoZnJvbVNSR0IucmVkLCB0b1NSR0IucmVkLCBwcm9ncmVz
cyksCiAgICAgICAgIFdlYkNvcmU6OmJsZW5kKGZyb21TUkdCLmdyZWVuLCB0b1NSR0IuZ3JlZW4s
IHByb2dyZXNzKSwKICAgICAgICAgV2ViQ29yZTo6YmxlbmQoZnJvbVNSR0IuYmx1ZSwgdG9TUkdC
LmJsdWUsIHByb2dyZXNzKSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yU2VyaWFsaXphdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JTZXJpYWxpemF0aW9uLmNwcAkocmV2aXNpb24gMjYzOTUzKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTZXJpYWxpemF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLS8vIFNpbXBsZUNvbG9yIG92ZXJsb2FkcworLy8gU1JHQkE8dWludDhfdD4gb3ZlcmxvYWRz
CiAKIHN0YXRpYyBjaGFyIGRlY2ltYWxEaWdpdCh1bnNpZ25lZCBudW1iZXIpCiB7CkBAIC01Myw3
ICs1Myw3IEBAIHN0YXRpYyBzdGQ6OmFycmF5PGNoYXIsIDQ+IGZyYWN0aW9uRGlnaXQKICAgICBy
ZXR1cm4geyB7IGRlY2ltYWxEaWdpdCgoYWxwaGEgKiAxMCArIDB4N0YpIC8gMHhGRiksICdcMCcs
ICdcMCcsICdcMCcgfSB9OwogfQogCi1TdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUyhTaW1wbGVD
b2xvciBjb2xvcikKK1N0cmluZyBzZXJpYWxpemF0aW9uRm9yQ1NTKFNSR0JBPHVpbnQ4X3Q+IGNv
bG9yKQogewogICAgIGF1dG8gW3JlZCwgZ3JlZW4sIGJsdWUsIGFscGhhXSA9IGNvbG9yOwogICAg
IHN3aXRjaCAoYWxwaGEpIHsKQEAgLTY2LDE1ICs2NiwxNSBAQCBTdHJpbmcgc2VyaWFsaXphdGlv
bkZvckNTUyhTaW1wbGVDb2xvciBjCiAgICAgfQogfQogCi1TdHJpbmcgc2VyaWFsaXphdGlvbkZv
ckhUTUwoU2ltcGxlQ29sb3IgY29sb3IpCitTdHJpbmcgc2VyaWFsaXphdGlvbkZvckhUTUwoU1JH
QkE8dWludDhfdD4gY29sb3IpCiB7CiAgICAgYXV0byBbcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGFd
ID0gY29sb3I7Ci0gICAgaWYgKGNvbG9yLmlzT3BhcXVlKCkpCisgICAgaWYgKGFscGhhID09IDB4
RkYpCiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCcjJywgaGV4KHJlZCwgMiwgTG93ZXJjYXNl
KSwgaGV4KGdyZWVuLCAyLCBMb3dlcmNhc2UpLCBoZXgoYmx1ZSwgMiwgTG93ZXJjYXNlKSk7CiAg
ICAgcmV0dXJuIHNlcmlhbGl6YXRpb25Gb3JDU1MoY29sb3IpOwogfQogCi1TdHJpbmcgc2VyaWFs
aXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoU2ltcGxlQ29sb3IgY29sb3IpCitTdHJpbmcgc2Vy
aWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoU1JHQkE8dWludDhfdD4gY29sb3IpCiB7CiAg
ICAgYXV0byBbcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGFdID0gY29sb3I7CiAgICAgaWYgKGFscGhh
IDwgMHhGRikKQEAgLTEyNCwyMSArMTI0LDIxIEBAIFN0cmluZyBzZXJpYWxpemF0aW9uRm9yQ1NT
KGNvbnN0IENvbG9yJiAKIHsKICAgICBpZiAoY29sb3IuaXNFeHRlbmRlZCgpKQogICAgICAgICBy
ZXR1cm4gc2VyaWFsaXphdGlvbkZvckNTUyhjb2xvci5hc0V4dGVuZGVkKCkpOwotICAgIHJldHVy
biBzZXJpYWxpemF0aW9uRm9yQ1NTKGNvbG9yLmFzU2ltcGxlKCkpOworICAgIHJldHVybiBzZXJp
YWxpemF0aW9uRm9yQ1NTKGNvbG9yLmFzSW5saW5lKCkpOwogfQogCiBTdHJpbmcgc2VyaWFsaXph
dGlvbkZvckhUTUwoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmIChjb2xvci5pc0V4dGVu
ZGVkKCkpCiAgICAgICAgIHJldHVybiBzZXJpYWxpemF0aW9uRm9ySFRNTChjb2xvci5hc0V4dGVu
ZGVkKCkpOwotICAgIHJldHVybiBzZXJpYWxpemF0aW9uRm9ySFRNTChjb2xvci5hc1NpbXBsZSgp
KTsKKyAgICByZXR1cm4gc2VyaWFsaXphdGlvbkZvckhUTUwoY29sb3IuYXNJbmxpbmUoKSk7CiB9
CiAKIFN0cmluZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dChjb25zdCBDb2xvciYg
Y29sb3IpCiB7CiAgICAgaWYgKGNvbG9yLmlzRXh0ZW5kZWQoKSkKICAgICAgICAgcmV0dXJuIHNl
cmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNUZXh0KGNvbG9yLmFzRXh0ZW5kZWQoKSk7Ci0gICAg
cmV0dXJuIHNlcmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNUZXh0KGNvbG9yLmFzU2ltcGxlKCkp
OworICAgIHJldHVybiBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dChjb2xvci5hc0lu
bGluZSgpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JTZXJpYWxpemF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JTZXJpYWxpemF0aW9uLmgJKHJldmlzaW9uIDI2Mzk1MykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXphdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSwxNSArMjksMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDb2xvcjsKIGNsYXNzIEV4dGVuZGVkQ29sb3I7Ci1jbGFzcyBTaW1wbGVDb2xvcjsKK3RlbXBs
YXRlPHR5cGVuYW1lPiBzdHJ1Y3QgU1JHQkE7CiAKIC8vIHNlcmlhbGl6YXRpb25Gb3JIVE1MIHJl
dHVybnMgdGhlIGNvbG9yIHNlcmlhbGl6ZWQgYWNjb3JkaW5nIHRvIEhUTUw1IDxodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNmaWxsLWFuZC1zdHJv
a2Utc3R5bGVzPiAoMTAgU2VwdGVtYmVyIDIwMTUpCiAvLyBzZXJpYWxpemF0aW9uRm9yQ1NTIHJl
dHVybnMgdGhlIGNvbG9yIHNlcmlhbGl6ZWQgYWNjb3JkaW5nIHRvIENTUwogLy8gc2VyaWFsaXph
dGlvbkZvclJlbmRlclRyZWVBc1RleHQgcmV0dXJucyB0aGUgY29sb3Igc2VyaWFsaXplZCBmb3Ig
RHVtcFJlbmRlclRyZWUsICNSUkdHQkIsICNSUkdHQkJBQSBvciB0aGUgQ1NTIHNlcmlhbGl6YXRp
b24KIAotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JDU1MoU2ltcGxlQ29s
b3IpOwotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JIVE1MKFNpbXBsZUNv
bG9yKTsKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFz
VGV4dChTaW1wbGVDb2xvcik7CitXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZv
ckNTUyhTUkdCQTx1aW50OF90Pik7CitXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlv
bkZvckhUTUwoU1JHQkE8dWludDhfdD4pOworV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6
YXRpb25Gb3JSZW5kZXJUcmVlQXNUZXh0KFNSR0JBPHVpbnQ4X3Q+KTsKIAogV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JDU1MoY29uc3QgRXh0ZW5kZWRDb2xvciYpOwogV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JIVE1MKGNvbnN0IEV4dGVuZGVkQ29s
b3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5
cGVzLmgJKHJldmlzaW9uIDI2Mzk1MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsMTMgKzU4LDYgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcgogICAgIHJldHVybiAhKGEgPT0gYik7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFj
aE5vbkFscGhhQ29tcG9uZW50KFNSR0JBPFQ+JiBjb2xvciwgRnVuY3RvciYmIGYpCi17Ci0gICAg
Y29sb3IucmVkID0gZihjb2xvci5yZWQpOwotICAgIGNvbG9yLmdyZWVuID0gZihjb2xvci5ncmVl
bik7Ci0gICAgY29sb3IuYmx1ZSA9IGYoY29sb3IuYmx1ZSk7Ci19Ci0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IExpbmVhclNSR0JBIHsKICAgICBUIHJlZDsKQEAgLTI0MCwxNiArMjMz
LDM0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9wZXIKIAogLy8gUGFj
a2VkIENvbG9yIEZvcm1hdHMKIAorbmFtZXNwYWNlIFBhY2tlZCB7CisKK3N0cnVjdCBSR0JBIHsK
KyAgICB1aW50MzJfdCB2YWx1ZTsKK307CisKIHN0cnVjdCBBUkdCIHsKICAgICB1aW50MzJfdCB2
YWx1ZTsKIH07CiAKLWNvbnN0ZXhwciBBUkdCIGFzQVJHQihTUkdCQTx1aW50OF90PiBjb2xvcikK
K30KKworY29uc3RleHByIFBhY2tlZDo6UkdCQSBhc1BhY2tlZFJHQkEoU1JHQkE8dWludDhfdD4g
Y29sb3IpCit7CisgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbG9yLnJlZCA8
PCAyNCB8IGNvbG9yLmdyZWVuIDw8IDE2IHwgY29sb3IuYmx1ZSA8PCA4IHwgY29sb3IuYWxwaGEp
IH07Cit9CisKK2NvbnN0ZXhwciBTUkdCQTx1aW50OF90PiBhc1NSR0JBKFBhY2tlZDo6UkdCQSBj
b2xvcikKK3sKKyAgICByZXR1cm4geyBzdGF0aWNfY2FzdDx1aW50OF90Pihjb2xvci52YWx1ZSA+
PiAyNCksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGNvbG9yLnZhbHVlID4+IDE2KSwgc3RhdGljX2Nh
c3Q8dWludDhfdD4oY29sb3IudmFsdWUgPj4gOCksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGNvbG9y
LnZhbHVlKSB9OworfQorCitjb25zdGV4cHIgUGFja2VkOjpBUkdCIGFzUGFja2VkQVJHQihTUkdC
QTx1aW50OF90PiBjb2xvcikKIHsKICAgICByZXR1cm4geyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Y29sb3IuYWxwaGEgPDwgMjQgfCBjb2xvci5yZWQgPDwgMTYgfCBjb2xvci5ncmVlbiA8PCA4IHwg
Y29sb3IuYmx1ZSkgfTsKIH0KIAotY29uc3RleHByIFNSR0JBPHVpbnQ4X3Q+IGFzU1JHQkEoQVJH
QiBjb2xvcikKK2NvbnN0ZXhwciBTUkdCQTx1aW50OF90PiBhc1NSR0JBKFBhY2tlZDo6QVJHQiBj
b2xvcikKIHsKICAgICByZXR1cm4geyBzdGF0aWNfY2FzdDx1aW50OF90Pihjb2xvci52YWx1ZSA+
PiAxNiksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGNvbG9yLnZhbHVlID4+IDgpLCBzdGF0aWNfY2Fz
dDx1aW50OF90Pihjb2xvci52YWx1ZSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGNvbG9yLnZhbHVl
ID4+IDI0KSB9OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjYzOTUzKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03OSw3ICs3OSw3IEBAIFNSR0JBPHVpbnQ4X3Q+IHByZW11bHRpcGxpZWRGbG9vcmluZyhT
UkcKICAgICAgICAgcmV0dXJuIHsgMCwgMCwgMCwgMCB9OwogICAgIGlmIChhID09IDI1NSkKICAg
ICAgICAgcmV0dXJuIGNvbG9yOwotICAgIHJldHVybiBjb252ZXJ0VG9Db21wb25lbnRCeXRlczxT
UkdCQT4oZmFzdERpdmlkZUJ5MjU1KHIgKiBhKSwgZmFzdERpdmlkZUJ5MjU1KGcgKiBhKSwgZmFz
dERpdmlkZUJ5MjU1KGIgKiBhKSwgYSk7CisgICAgcmV0dXJuIGNsYW1wVG9Db21wb25lbnRCeXRl
czxTUkdCQTx1aW50OF90Pj4oZmFzdERpdmlkZUJ5MjU1KHIgKiBhKSwgZmFzdERpdmlkZUJ5MjU1
KGcgKiBhKSwgZmFzdERpdmlkZUJ5MjU1KGIgKiBhKSwgYSk7CiB9CiAKIFNSR0JBPHVpbnQ4X3Q+
IHByZW11bHRpcGxpZWRDZWlsaW5nKFNSR0JBPHVpbnQ4X3Q+IGNvbG9yKQpAQCAtODksNyArODks
NyBAQCBTUkdCQTx1aW50OF90PiBwcmVtdWx0aXBsaWVkQ2VpbGluZyhTUkdCCiAgICAgICAgIHJl
dHVybiB7IDAsIDAsIDAsIDAgfTsKICAgICBpZiAoYSA9PSAyNTUpCiAgICAgICAgIHJldHVybiBj
b2xvcjsKLSAgICByZXR1cm4gY29udmVydFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KGZhc3REaXZp
ZGVCeTI1NShyICogYSArIDI1NCksIGZhc3REaXZpZGVCeTI1NShnICogYSArIDI1NCksIGZhc3RE
aXZpZGVCeTI1NShiICogYSArIDI1NCksIGEpOworICAgIHJldHVybiBjbGFtcFRvQ29tcG9uZW50
Qnl0ZXM8U1JHQkE8dWludDhfdD4+KGZhc3REaXZpZGVCeTI1NShyICogYSArIDI1NCksIGZhc3RE
aXZpZGVCeTI1NShnICogYSArIDI1NCksIGZhc3REaXZpZGVCeTI1NShiICogYSArIDI1NCksIGEp
OwogfQogCiBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHVucHJlbXVsdGlwbGllZENvbXBvbmVudEJ5
dGUodWludDhfdCBjLCB1aW50OF90IGEpCkBAIC0xMDIsNyArMTAyLDcgQEAgU1JHQkE8dWludDhf
dD4gdW5wcmVtdWx0aXBsaWVkKFNSR0JBPHVpbgogICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29s
b3I7CiAgICAgaWYgKCFhIHx8IGEgPT0gMjU1KQogICAgICAgICByZXR1cm4gY29sb3I7Ci0gICAg
cmV0dXJuIGNvbnZlcnRUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPih1bnByZW11bHRpcGxpZWRDb21w
b25lbnRCeXRlKHIsIGEpLCB1bnByZW11bHRpcGxpZWRDb21wb25lbnRCeXRlKGcsIGEpLCB1bnBy
ZW11bHRpcGxpZWRDb21wb25lbnRCeXRlKGIsIGEpLCBhKTsKKyAgICByZXR1cm4gY2xhbXBUb0Nv
bXBvbmVudEJ5dGVzPFNSR0JBPHVpbnQ4X3Q+Pih1bnByZW11bHRpcGxpZWRDb21wb25lbnRCeXRl
KHIsIGEpLCB1bnByZW11bHRpcGxpZWRDb21wb25lbnRCeXRlKGcsIGEpLCB1bnByZW11bHRpcGxp
ZWRDb21wb25lbnRCeXRlKGIsIGEpLCBhKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxp
dGllcy5oCShyZXZpc2lvbiAyNjM5NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIFNS
R0JBPHVpbnQ4X3Q+IHByZW11bHRpcGxpZWRGbG9vcmluZyhTUkcKIFNSR0JBPHVpbnQ4X3Q+IHBy
ZW11bHRpcGxpZWRDZWlsaW5nKFNSR0JBPHVpbnQ4X3Q+KTsKIFNSR0JBPHVpbnQ4X3Q+IHVucHJl
bXVsdGlwbGllZChTUkdCQTx1aW50OF90Pik7CiAKKwogaW5saW5lIHVpbnQ4X3QgY29udmVydFBy
ZXNjYWxlZFRvQ29tcG9uZW50Qnl0ZShmbG9hdCBmKQogewogICAgIHJldHVybiBzdGQ6OmNsYW1w
KHN0ZDo6bHJvdW5kKGYpLCAwbCwgMjU1bCk7CkBAIC01NCwzMyArNTUsNDQgQEAgaW5saW5lIHVp
bnQ4X3QgY29udmVydFRvQ29tcG9uZW50Qnl0ZShmbAogICAgIHJldHVybiBzdGQ6OmNsYW1wKHN0
ZDo6bHJvdW5kKGYgKiAyNTUuMGYpLCAwbCwgMjU1bCk7CiB9CiAKK2lubGluZSB1aW50OF90IGNs
YW1wVG9Db21wb25lbnRCeXRlKGludCBjKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50
OF90PihzdGQ6OmNsYW1wKGMsIDAsIDB4RkYpKTsKK30KKwogY29uc3RleHByIGZsb2F0IGNvbnZl
cnRUb0NvbXBvbmVudEZsb2F0KHVpbnQ4X3QgYnl0ZSkKIHsKICAgICByZXR1cm4gYnl0ZSAvIDI1
NS4wZjsKIH0KIAotdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlw
ZT4gaW5saW5lIENvbG9yVHlwZTx1aW50OF90PiBjb252ZXJ0VG9Db21wb25lbnRCeXRlcyhjb25z
dCBDb2xvclR5cGU8ZmxvYXQ+JiBjb2xvcikKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0
eXBlbmFtZSBDb2xvclR5cGU+IGlubGluZSBDb2xvclR5cGU8dWludDhfdD4gY29udmVydFRvQ29t
cG9uZW50Qnl0ZXNMb3NzeShjb25zdCBDb2xvclR5cGU8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICBh
dXRvIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvcik7CiAgICAgcmV0dXJuIHsg
Y29udmVydFRvQ29tcG9uZW50Qnl0ZShjb21wb25lbnRzWzBdKSwgY29udmVydFRvQ29tcG9uZW50
Qnl0ZShjb21wb25lbnRzWzFdKSwgY29udmVydFRvQ29tcG9uZW50Qnl0ZShjb21wb25lbnRzWzJd
KSwgY29udmVydFRvQ29tcG9uZW50Qnl0ZShjb21wb25lbnRzWzNdKSB9OwogfQogCi10ZW1wbGF0
ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JU
eXBlPHVpbnQ4X3Q+IGNvbnZlcnRUb0NvbXBvbmVudEJ5dGVzKGludCByLCBpbnQgZywgaW50IGIs
IGludCBhKQordGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBl
IGNsYW1wVG9Db21wb25lbnRCeXRlcyhpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKIHsKLSAg
ICByZXR1cm4geyBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1wKHIsIDAsIDB4RkYpKSwg
c3RhdGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFtcChnLCAwLCAweEZGKSksIHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoYiwgMCwgMHhGRikpLCBzdGF0aWNfY2FzdDx1aW50OF90Pihz
dGQ6OmNsYW1wKGEsIDAsIDB4RkYpKSB9OworICAgIHJldHVybiB7IGNsYW1wVG9Db21wb25lbnRC
eXRlKHIpLCBjbGFtcFRvQ29tcG9uZW50Qnl0ZShnKSwgY2xhbXBUb0NvbXBvbmVudEJ5dGUoYiks
IGNsYW1wVG9Db21wb25lbnRCeXRlKGEpIH07CiB9CiAKLXRlbXBsYXRlPHRlbXBsYXRlPHR5cGVu
YW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNvbnZl
cnRUb0NvbXBvbmVudEZsb2F0cyhjb25zdCBDb2xvclR5cGU8dWludDhfdD4mIGNvbG9yKQordGVt
cGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBGdW5jdG9yPiBjb25zdGV4cHIgQ29s
b3JUeXBlIG11dGF0ZUVhY2hOb25BbHBoYUNvbXBvbmVudChjb25zdCBDb2xvclR5cGUmIGNvbG9y
LCBGdW5jdG9yJiYgZnVuY3RvcikKIHsKLSAgICBhdXRvIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29t
cG9uZW50cyhjb2xvcik7Ci0gICAgcmV0dXJuIHsgY29udmVydFRvQ29tcG9uZW50RmxvYXQoY29t
cG9uZW50c1swXSksIGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0KGNvbXBvbmVudHNbMV0pLCBjb252
ZXJ0VG9Db21wb25lbnRGbG9hdChjb21wb25lbnRzWzJdKSwgY29udmVydFRvQ29tcG9uZW50Rmxv
YXQoY29tcG9uZW50c1szXSkgfTsKKyAgICBDb2xvclR5cGUgY29weSA9IGNvbG9yOworICAgIGNv
cHkucmVkID0gZnVuY3Rvcihjb2xvci5yZWQpOworICAgIGNvcHkuZ3JlZW4gPSBmdW5jdG9yKGNv
bG9yLmdyZWVuKTsKKyAgICBjb3B5LmJsdWUgPSBmdW5jdG9yKGNvbG9yLmJsdWUpOworICAgIHJl
dHVybiBjb3B5OwogfQogCi10ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29s
b3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlPGZsb2F0PiBjb252ZXJ0VG9Db21wb25lbnRGbG9h
dHMoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKK3RlbXBsYXRlPHR5cGVuYW1l
IENvbG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZSBvdmVycmlkZUFscGhhQ29tcG9uZW50KGNv
bnN0IENvbG9yVHlwZSYgY29sb3IsIGRlY2x0eXBlKENvbG9yVHlwZSgpLmFscGhhKSBhbHBoYSkK
IHsKLSAgICByZXR1cm4geyBzdGQ6OmNsYW1wKHIsIDAuMGYsIDEuMGYpLCBzdGQ6OmNsYW1wKGcs
IDAuMGYsIDEuMGYpLCBzdGQ6OmNsYW1wKGIsIDAuMGYsIDEuMGYpLCBzdGQ6OmNsYW1wKGEsIDAu
MGYsIDEuMGYpIH07CisgICAgQ29sb3JUeXBlIGNvcHkgPSBjb2xvcjsKKyAgICBjb3B5LmFscGhh
ID0gYWxwaGE7CisgICAgcmV0dXJuIGNvcHk7CiB9CiAKKwogY29uc3RleHByIHVpbnQxNl90IGZh
c3RNdWx0aXBseUJ5MjU1KHVpbnQxNl90IHZhbHVlKQogewogICAgIHJldHVybiAodmFsdWUgPDwg
OCkgLSB2YWx1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVu
ZGVkQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbmRlZENvbG9yLmgJKHJldmlzaW9uIDI2Mzk1MykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyAr
NjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8VCwg
ZmxvYXQ+KQogICAgICAgICAgICAgcmV0dXJuIHRvU1JHQkFGbG9hdENvbXBvbmVudHNMb3NzeSgp
OwogICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8VCwgdWludDhfdD4p
Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvQ29tcG9uZW50Qnl0ZXModG9TUkdCQUZsb2F0
Q29tcG9uZW50c0xvc3N5KCkpOworICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb0NvbXBvbmVu
dEJ5dGVzTG9zc3kodG9TUkdCQUZsb2F0Q29tcG9uZW50c0xvc3N5KCkpOwogICAgIH0KIAogcHJp
dmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2lu
Z1N0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCYWNraW5nU3RvcmUuaAkocmV2aXNpb24gMjYzOTUzKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFhKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGF1dG8gcGl4ZWwgPSBhc1NSR0JBKEFSR0IgeyAqZGVzdCB9KTsKKyAg
ICAgICAgYXV0byBwaXhlbCA9IGFzU1JHQkEoUGFja2VkOjpBUkdCIHsgKmRlc3QgfSk7CiAKICAg
ICAgICAgaWYgKGEgPj0gMjU1IHx8ICFwaXhlbC5hbHBoYSkgewogICAgICAgICAgICAgc2V0UGl4
ZWwoZGVzdCwgciwgZywgYiwgYSk7CkBAIC0xNzQsNyArMTc0LDcgQEAgcHVibGljOgogICAgICAg
ICBpZiAoIW1fcHJlbXVsdGlwbHlBbHBoYSkKICAgICAgICAgICAgIHJlc3VsdCA9IHVucHJlbXVs
dGlwbGllZChyZXN1bHQpOwogCi0gICAgICAgICpkZXN0ID0gYXNBUkdCKHJlc3VsdCkudmFsdWU7
CisgICAgICAgICpkZXN0ID0gYXNQYWNrZWRBUkdCKHJlc3VsdCkudmFsdWU7CiAgICAgfQogCiAg
ICAgc3RhdGljIGJvb2wgaXNPdmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtMjMxLDcg
KzIzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChtX3ByZW11bHRpcGx5QWxwaGEgJiYgYSA8
IDI1NSkKICAgICAgICAgICAgIHJlc3VsdCA9IHByZW11bHRpcGxpZWRGbG9vcmluZyhyZXN1bHQp
OwogCi0gICAgICAgIHJldHVybiBhc0FSR0IocmVzdWx0KS52YWx1ZTsKKyAgICAgICAgcmV0dXJu
IGFzUGFja2VkQVJHQihyZXN1bHQpLnZhbHVlOwogICAgIH0KIAogICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50PiBtX3BpeGVsczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuaAkocmV2aXNpb24gMjYzOTUzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsMTAgKzM2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEZvciBoaXN0b3Jp
Y2FsIHJlYXNvbnMsIHN0b3JlZCBhcyBhIDMyLWJpdCBpbnRlZ2VyLCB3aXRoIGFscGhhIGluIHRo
ZSBoaWdoIGJpdHM6IEFSR0IuCiBjbGFzcyBTaW1wbGVDb2xvciB7CiBwdWJsaWM6Ci0gICAgY29u
c3RleHByIFNpbXBsZUNvbG9yKHVpbnQzMl90IHZhbHVlID0gMCkgOiBtX3ZhbHVlIHsgdmFsdWUg
fSB7IH0KLSAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IodWludDhfdCByLCB1aW50OF90IGcsIHVp
bnQ4X3QgYiwgdWludDhfdCBhKSA6IG1fdmFsdWUgeyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYSA8
PCAyNCB8IHIgPDwgMTYgfCBnIDw8IDggfCBiKSB9IHsgfQorICAgIGNvbnN0ZXhwciBTaW1wbGVD
b2xvcihQYWNrZWQ6OkFSR0IgdmFsdWUpIDogbV92YWx1ZSB7IHZhbHVlLnZhbHVlIH0geyB9Cisg
ICAgY29uc3RleHByIFNpbXBsZUNvbG9yKFBhY2tlZDo6UkdCQSB2YWx1ZSkgOiBTaW1wbGVDb2xv
cihhc1BhY2tlZEFSR0IoV2ViQ29yZTo6YXNTUkdCQSh2YWx1ZSkpKSB7IH0KKyAgICBjb25zdGV4
cHIgU2ltcGxlQ29sb3IodWludDhfdCByLCB1aW50OF90IGcsIHVpbnQ4X3QgYiwgdWludDhfdCBh
KSA6IFNpbXBsZUNvbG9yKGFzUGFja2VkQVJHQihTUkdCQSB7IHIsIGcsIGIsIGEgfSkpIHsgfQog
Ci0gICAgY29uc3RleHByIHVpbnQzMl90IHZhbHVlQXNBUkdCKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZTsgfQogICAgIGNvbnN0ZXhwciB1aW50MzJfdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWU7IH0KIAogICAgIGNvbnN0ZXhwciB1aW50OF90IGFscGhhQ29tcG9uZW50KCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZSA+PiAyNDsgfQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdGV4cHIgU2ltcGxlQ29sb3IgY29sb3JXaXRoQWxwaGEodWludDhfdCBhbHBoYSkgY29u
c3QKICAgICB7Ci0gICAgICAgIHJldHVybiB7IChtX3ZhbHVlICYgMHgwMEZGRkZGRikgfCBhbHBo
YSA8PCAyNCB9OworICAgICAgICByZXR1cm4geyByZWRDb21wb25lbnQoKSwgZ3JlZW5Db21wb25l
bnQoKSwgYmx1ZUNvbXBvbmVudCgpLCBhbHBoYSB9OwogICAgIH0KIAogICAgIGNvbnN0ZXhwciBT
aW1wbGVDb2xvciBpbnZlcnRlZENvbG9yV2l0aEFscGhhKHVpbnQ4X3QgYWxwaGEpIGNvbnN0CkBA
IC05MCwxMSArOTAsMTMgQEAgcHJpdmF0ZToKIAogYm9vbCBvcGVyYXRvcj09KFNpbXBsZUNvbG9y
LCBTaW1wbGVDb2xvcik7CiBib29sIG9wZXJhdG9yIT0oU2ltcGxlQ29sb3IsIFNpbXBsZUNvbG9y
KTsKK2Jvb2wgb3BlcmF0b3I9PShTaW1wbGVDb2xvciwgU1JHQkE8dWludDhfdD4pOworYm9vbCBv
cGVyYXRvciE9KFNpbXBsZUNvbG9yLCBTUkdCQTx1aW50OF90Pik7Citib29sIG9wZXJhdG9yPT0o
U1JHQkE8dWludDhfdD4sIFNpbXBsZUNvbG9yKTsKK2Jvb2wgb3BlcmF0b3IhPShTUkdCQTx1aW50
OF90PiwgU2ltcGxlQ29sb3IpOwogCi1jb25zdGV4cHIgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNv
bG9yKGludCByLCBpbnQgZywgaW50IGIpOwotY29uc3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1w
bGVDb2xvcihpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7Ci1jb25zdGV4cHIgU2ltcGxlQ29s
b3IgbWFrZVNpbXBsZUNvbG9yKGNvbnN0IFNSR0JBPHVpbnQ4X3Q+Jik7Ci1TaW1wbGVDb2xvciBt
YWtlU2ltcGxlQ29sb3IoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7Citjb25zdGV4cHIgU1JHQkE8dWlu
dDhfdD4gbWFrZVNpbXBsZUNvbG9yKGludCByLCBpbnQgZywgaW50IGIpOworY29uc3RleHByIFNS
R0JBPHVpbnQ4X3Q+IG1ha2VTaW1wbGVDb2xvcihpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7
CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oU2ltcGxlQ29sb3IgYSwgU2ltcGxlQ29sb3IgYikK
IHsKQEAgLTEwNiwyNCArMTA4LDM0IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oU2ltcGxlQ29s
b3IgYSwgU2kKICAgICByZXR1cm4gIShhID09IGIpOwogfQogCi1jb25zdGV4cHIgU2ltcGxlQ29s
b3IgbWFrZVNpbXBsZUNvbG9yKGludCByLCBpbnQgZywgaW50IGIpCitpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KFNpbXBsZUNvbG9yIGEsIFNSR0JBPHVpbnQ4X3Q+IGIpCiB7Ci0gICAgcmV0dXJuIHsg
c3RhdGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFtcChyLCAwLCAweEZGKSksIHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoZywgMCwgMHhGRikpLCBzdGF0aWNfY2FzdDx1aW50OF90Pihz
dGQ6OmNsYW1wKGIsIDAsIDB4RkYpKSwgMHhGRiB9OworICAgIHJldHVybiBhLmFzU1JHQkE8dWlu
dDhfdD4oKSA9PSBiOwogfQogCi1jb25zdGV4cHIgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9y
KGludCByLCBpbnQgZywgaW50IGIsIGludCBhKQoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShTaW1w
bGVDb2xvciBhLCBTUkdCQTx1aW50OF90PiBiKQogewotICAgIHJldHVybiB7IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAociwgMCwgMHhGRikpLCBzdGF0aWNfY2FzdDx1aW50OF90Pihz
dGQ6OmNsYW1wKGcsIDAsIDB4RkYpKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFtcChi
LCAwLCAweEZGKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoYSwgMCwgMHhGRikp
IH07CisgICAgcmV0dXJuICEoYSA9PSBiKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShT
UkdCQTx1aW50OF90PiBhLCBTaW1wbGVDb2xvciBiKQoreworICAgIHJldHVybiBhID09IGIuYXNT
UkdCQTx1aW50OF90PigpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFNSR0JBPHVpbnQ4
X3Q+IGEsIFNpbXBsZUNvbG9yIGIpCit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAotY29u
c3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihjb25zdCBTUkdCQTx1aW50OF90PiYg
c1JHQkEpCitjb25zdGV4cHIgU1JHQkE8dWludDhfdD4gbWFrZVNpbXBsZUNvbG9yKGludCByLCBp
bnQgZywgaW50IGIpCiB7Ci0gICAgcmV0dXJuIHsgc1JHQkEucmVkLCBzUkdCQS5ncmVlbiwgc1JH
QkEuYmx1ZSwgc1JHQkEuYWxwaGEgfTsKKyAgICByZXR1cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVz
PFNSR0JBPHVpbnQ4X3Q+PihyLCBnLCBiLCAweEZGKTsKIH0KIAotaW5saW5lIFNpbXBsZUNvbG9y
IG1ha2VTaW1wbGVDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4mIHNSR0JBKQorY29uc3RleHByIFNS
R0JBPHVpbnQ4X3Q+IG1ha2VTaW1wbGVDb2xvcihpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkK
IHsKLSAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKGNvbnZlcnRUb0NvbXBvbmVudEJ5dGVzKHNS
R0JBKSk7CisgICAgcmV0dXJuIGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQTx1aW50OF90Pj4o
ciwgZywgYiwgYSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAJKHJldmlzaW9uIDI2
Mzk1MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQs
NyBAQCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjp+SW5iYW5kVGV4dFRyCiAgICAgZGlzY29u
bmVjdCgpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2ltcGxlQ29sb3I+IG1ha2VTaW1wbGVDb2xv
ckZyb21BUkdCQ0ZBcnJheShDRkFycmF5UmVmIGNvbG9yQXJyYXkpCitzdGF0aWMgT3B0aW9uYWw8
U1JHQkE8dWludDhfdD4+IG1ha2VTaW1wbGVDb2xvckZyb21BUkdCQ0ZBcnJheShDRkFycmF5UmVm
IGNvbG9yQXJyYXkpCiB7CiAgICAgaWYgKENGQXJyYXlHZXRDb3VudChjb2xvckFycmF5KSA8IDQp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC04MCw3ICs4MCw3IEBAIHN0YXRpYyBP
cHRpb25hbDxTaW1wbGVDb2xvcj4gbWFrZVNpbXBsZUMKICAgICAgICAgY29tcG9uZW50QXJyYXlb
aV0gPSBjb21wb25lbnQ7CiAgICAgfQogCi0gICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcihTUkdC
QSB7IGNvbXBvbmVudEFycmF5WzFdLCBjb21wb25lbnRBcnJheVsyXSwgY29tcG9uZW50QXJyYXlb
M10sIGNvbXBvbmVudEFycmF5WzBdIH0pOworICAgIHJldHVybiBjb252ZXJ0VG9Db21wb25lbnRC
eXRlc0xvc3N5KFNSR0JBIHsgY29tcG9uZW50QXJyYXlbMV0sIGNvbXBvbmVudEFycmF5WzJdLCBj
b21wb25lbnRBcnJheVszXSwgY29tcG9uZW50QXJyYXlbMF0gfSk7CiB9CiAKIFJlZjxJbmJhbmRH
ZW5lcmljQ3VlPiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRl
cyhDRkF0dHJpYnV0ZWRTdHJpbmdSZWYgYXR0cmlidXRlZFN0cmluZykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCShyZXZpc2lvbiAy
NjM5NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTAgKzUxLDEzIEBAIFJldGFpblB0cjxDR0NvbG9yUmVm
PiBUaW55TFJVQ2FjaGVQb2xpY3kKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgU2lt
cGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yRnJvbUNHQ29sb3IoQ0dDb2xvclJlZiBjb2xvcikKK3N0
YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gbWFrZVNpbXBsZUNvbG9yRnJvbUNHQ29sb3Io
Q0dDb2xvclJlZiBjb2xvcikKIHsKICAgICAvLyBGSVhNRTogRXh0ZW5kZWRDb2xvciAtIG5lZWRz
IHRvIGhhbmRsZSBjb2xvciBzcGFjZXMuCiAKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCiAgICAgc2l6ZV90IG51bUNvbXBvbmVudHMgPSBDR0NvbG9yR2V0
TnVtYmVyT2ZDb21wb25lbnRzKGNvbG9yKTsKICAgICBjb25zdCBDR0Zsb2F0KiBjb21wb25lbnRz
ID0gQ0dDb2xvckdldENvbXBvbmVudHMoY29sb3IpOwogCkBAIC03OCwzMSArODEsMTkgQEAgc3Rh
dGljIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvckZyb21DRwogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKFNSR0JBIHsg
ciwgZywgYiwgYSB9KTsKKyAgICByZXR1cm4gY29udmVydFRvQ29tcG9uZW50Qnl0ZXNMb3NzeShT
UkdCQSB7IHIsIGcsIGIsIGEgfSk7CiB9CiAKKy8vIEZJWE1FOiBFeHRlbmRlZENvbG9yIC0gbmVl
ZHMgdG8gaGFuZGxlIGNvbG9yIHNwYWNlcy4KIENvbG9yOjpDb2xvcihDR0NvbG9yUmVmIGNvbG9y
KQorICAgIDogQ29sb3IobWFrZVNpbXBsZUNvbG9yRnJvbUNHQ29sb3IoY29sb3IpKQogewotICAg
IC8vIEZJWE1FOiBFeHRlbmRlZENvbG9yIC0gbmVlZHMgdG8gaGFuZGxlIGNvbG9yIHNwYWNlcy4K
LQotICAgIGlmICghY29sb3IpIHsKLSAgICAgICAgbV9jb2xvckRhdGEuc2ltcGxlQ29sb3JBbmRG
bGFncyA9IGludmFsaWRTaW1wbGVDb2xvcjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IHNldFNpbXBsZUNvbG9yKG1ha2VTaW1wbGVDb2xvckZyb21DR0NvbG9yKGNvbG9yKSk7CiB9CiAK
Ky8vIEZJWE1FOiBFeHRlbmRlZENvbG9yIC0gbmVlZHMgdG8gaGFuZGxlIGNvbG9yIHNwYWNlcy4K
IENvbG9yOjpDb2xvcihDR0NvbG9yUmVmIGNvbG9yLCBTZW1hbnRpY1RhZykKKyAgICA6IENvbG9y
KG1ha2VTaW1wbGVDb2xvckZyb21DR0NvbG9yKGNvbG9yKSkKIHsKLSAgICAvLyBGSVhNRTogRXh0
ZW5kZWRDb2xvciAtIG5lZWRzIHRvIGhhbmRsZSBjb2xvciBzcGFjZXMuCi0KLSAgICBpZiAoIWNv
bG9yKSB7Ci0gICAgICAgIG1fY29sb3JEYXRhLnNpbXBsZUNvbG9yQW5kRmxhZ3MgPSBpbnZhbGlk
U2ltcGxlQ29sb3I7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzZXRTaW1wbGVDb2xv
cihtYWtlU2ltcGxlQ29sb3JGcm9tQ0dDb2xvcihjb2xvcikpOwogICAgIHRhZ0FzU2VtYW50aWMo
KTsKIH0KIApAQCAtMTI4LDggKzExOSw4IEBAIHN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9y
KGNvbnN0IENvbG8KIAogQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xv
cikKIHsKLSAgICBpZiAoY29sb3IuaXNTaW1wbGUoKSkgewotICAgICAgICBzd2l0Y2ggKGNvbG9y
LmFzU2ltcGxlKCkudmFsdWUoKSkgeworICAgIGlmIChjb2xvci5pc0lubGluZSgpKSB7CisgICAg
ICAgIHN3aXRjaCAoYXNQYWNrZWRSR0JBKGNvbG9yLmFzSW5saW5lKCkpLnZhbHVlKSB7CiAgICAg
ICAgIGNhc2UgQ29sb3I6OnRyYW5zcGFyZW50LnZhbHVlKCk6IHsKICAgICAgICAgICAgIHN0YXRp
YyBDR0NvbG9yUmVmIHRyYW5zcGFyZW50Q0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsKICAg
ICAgICAgICAgIHJldHVybiB0cmFuc3BhcmVudENHQ29sb3I7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVy
YXRpb24uY3BwCShyZXZpc2lvbiAyNjM5NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
OCwyMCArMTU4LDIwIEBAIGJvb2wgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBJTlZFUlQ6IHsKICAgICAgICAgZmxvYXQg
b25lTWludXNBbW91bnQgPSAxLjBmIC0gbV9hbW91bnQ7Ci0gICAgICAgIGZvckVhY2hOb25BbHBo
YUNvbXBvbmVudChjb2xvciwgWyZdKGZsb2F0IGNvbXBvbmVudCkgeworICAgICAgICBjb2xvciA9
IG11dGF0ZUVhY2hOb25BbHBoYUNvbXBvbmVudChjb2xvciwgWyZdKGZsb2F0IGNvbXBvbmVudCkg
ewogICAgICAgICAgICAgcmV0dXJuIDEuMGYgLSAob25lTWludXNBbW91bnQgKyBjb21wb25lbnQg
KiAobV9hbW91bnQgLSBvbmVNaW51c0Ftb3VudCkpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIGNhc2UgQ09OVFJBU1Q6IHsKICAgICAgICAgZmxvYXQgaW50
ZXJjZXB0ID0gLSgwLjVmICogbV9hbW91bnQpICsgMC41ZjsKLSAgICAgICAgZm9yRWFjaE5vbkFs
cGhhQ29tcG9uZW50KGNvbG9yLCBbJl0oZmxvYXQgY29tcG9uZW50KSB7CisgICAgICAgIGNvbG9y
ID0gbXV0YXRlRWFjaE5vbkFscGhhQ29tcG9uZW50KGNvbG9yLCBbJl0oZmxvYXQgY29tcG9uZW50
KSB7CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpjbGFtcDxmbG9hdD4oaW50ZXJjZXB0ICsgbV9h
bW91bnQgKiBjb21wb25lbnQsIDAuMGYsIDEuMGYpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIGNhc2UgQlJJR0hUTkVTUzoKLSAgICAgICAgZm9yRWFjaE5v
bkFscGhhQ29tcG9uZW50KGNvbG9yLCBbJl0oZmxvYXQgY29tcG9uZW50KSB7CisgICAgICAgIGNv
bG9yID0gbXV0YXRlRWFjaE5vbkFscGhhQ29tcG9uZW50KGNvbG9yLCBbJl0oZmxvYXQgY29tcG9u
ZW50KSB7CiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYXg8ZmxvYXQ+KG1fYW1vdW50ICogY29t
cG9uZW50LCAwLjBmKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNjM5NTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjp0cmFu
c2Zvcm1Db2xvcihDbwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNv
bG9yID0gbWFrZVNpbXBsZUNvbG9yKHNSR0JBQ29sb3IpOworICAgIGNvbG9yID0gY29udmVydFRv
Q29tcG9uZW50Qnl0ZXNMb3NzeShzUkdCQUNvbG9yKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMTM2LDcgKzEzNiw3IEBAIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6aW52ZXJzZVRyYW5zZm9y
bUMKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBjb2xvciA9IG1ha2VT
aW1wbGVDb2xvcihzUkdCQUNvbG9yKTsKKyAgICBjb2xvciA9IGNvbnZlcnRUb0NvbXBvbmVudEJ5
dGVzTG9zc3koc1JHQkFDb2xvcik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0JKHJldmlz
aW9uIDI2Mzk1MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xv
ck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgYm9vbCB1c2VP
bGRBcXVhRm9jdXNSaW5nQ29sb3I7CiAKIENvbG9yIG9sZEFxdWFGb2N1c1JpbmdDb2xvcigpCiB7
Ci0gICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjdEQUREOSB9OworICAgIHJldHVybiBTUkdC
QTx1aW50OF90PiB7IDB4N0QsIDB4QUQsIDB4RDksIDB4RkYgfTsKIH0KIAogdm9pZCBzZXRVc2Vz
VGVzdE1vZGVGb2N1c1JpbmdDb2xvcihib29sIG5ld1ZhbHVlKQpAQCAtNjIsNyArNjIsNyBAQCBi
b29sIHVzZXNUZXN0TW9kZUZvY3VzUmluZ0NvbG9yKCkKICAgICByZXR1cm4gdXNlT2xkQXF1YUZv
Y3VzUmluZ0NvbG9yOwogfQogCi1zdGF0aWMgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yRnJv
bU5TQ29sb3IoTlNDb2xvciAqY29sb3IpCitzdGF0aWMgU1JHQkE8dWludDhfdD4gbWFrZVNpbXBs
ZUNvbG9yRnJvbU5TQ29sb3IoTlNDb2xvciAqY29sb3IpCiB7CiAgICAgLy8gRklYTUU6IEV4dGVu
ZGVkQ29sb3IgLSBuZWVkcyB0byBoYW5kbGUgY29sb3Igc3BhY2VzLgogCkBAIC05Nyw3ICs5Nyw3
IEBAIHN0YXRpYyBTaW1wbGVDb2xvciBtYWtlU2ltcGxlQ29sb3JGcm9tTlMKICAgICBbcmdiQ29s
b3IgZ2V0UmVkOiZyZWRDb21wb25lbnQgZ3JlZW46JmdyZWVuQ29tcG9uZW50IGJsdWU6JmJsdWVD
b21wb25lbnQgYWxwaGE6JmFscGhhXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwog
Ci0gICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcihTUkdCQSB7IHN0YXRpY19jYXN0PGZsb2F0Pihy
ZWRDb21wb25lbnQpLCBzdGF0aWNfY2FzdDxmbG9hdD4oZ3JlZW5Db21wb25lbnQpLCBzdGF0aWNf
Y2FzdDxmbG9hdD4oYmx1ZUNvbXBvbmVudCksIHN0YXRpY19jYXN0PGZsb2F0PihhbHBoYSkgfSk7
CisgICAgcmV0dXJuIGNvbnZlcnRUb0NvbXBvbmVudEJ5dGVzTG9zc3koU1JHQkEgeyBzdGF0aWNf
Y2FzdDxmbG9hdD4ocmVkQ29tcG9uZW50KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGdyZWVuQ29tcG9u
ZW50KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJsdWVDb21wb25lbnQpLCBzdGF0aWNfY2FzdDxmbG9h
dD4oYWxwaGEpIH0pOwogfQogCiBDb2xvciBjb2xvckZyb21OU0NvbG9yKE5TQ29sb3IgKmNvbG9y
KQpAQCAtMTIyLDggKzEyMiw4IEBAIENvbG9yIHNlbWFudGljQ29sb3JGcm9tTlNDb2xvcihOU0Nv
bG9yICoKIAogTlNDb2xvciAqbnNDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7Ci0gICAgaWYg
KGNvbG9yLmlzU2ltcGxlKCkpIHsKLSAgICAgICAgc3dpdGNoIChjb2xvci5hc1NpbXBsZSgpLnZh
bHVlKCkpIHsKKyAgICBpZiAoY29sb3IuaXNJbmxpbmUoKSkgeworICAgICAgICBzd2l0Y2ggKGFz
UGFja2VkUkdCQShjb2xvci5hc0lubGluZSgpKS52YWx1ZSkgewogICAgICAgICBjYXNlIENvbG9y
Ojp0cmFuc3BhcmVudC52YWx1ZSgpOiB7CiAgICAgICAgICAgICBzdGF0aWMgTlNDb2xvciAqY2xl
YXJDb2xvciA9IFtbTlNDb2xvciBjb2xvcldpdGhTUkdCUmVkOjAgZ3JlZW46MCBibHVlOjAgYWxw
aGE6MF0gcmV0YWluXTsKICAgICAgICAgICAgIHJldHVybiBjbGVhckNvbG9yOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0Q0dXaW4uY3BwCShyZXZpc2lvbiAyNjM5NTMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTgsMTIgKzE5OCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0Rv
dHNGb3JEb2N1bWVuCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQo
KTsKICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogCi0gICAgc3RhdGljIGNvbnN0
ZXhwciBTaW1wbGVDb2xvciBzcGVsbGluZ1BhdHRlcm5Db2xvciB7IG1ha2VTaW1wbGVDb2xvcigy
NTUsIDAsIDApIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBncmFtbWFyUGF0
dGVybkNvbG9yIHsgbWFrZVNpbXBsZUNvbG9yKDAsIDEyOCwgMCkgfTsKKyAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gc3BlbGxpbmdQYXR0ZXJuQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAw
LCAwKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZ3JhbW1hclBhdHRlcm5Db2xvciA9IG1h
a2VTaW1wbGVDb2xvcigwLCAxMjgsIDApOwogCi0gICAgY29uc3QgU2ltcGxlQ29sb3ImIHBhdHRl
cm5Db2xvciA9IHN0eWxlLm1vZGUgPT0gRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGU6Okdy
YW1tYXIgPyBncmFtbWFyUGF0dGVybkNvbG9yIDogc3BlbGxpbmdQYXR0ZXJuQ29sb3I7Ci0gICAg
YXV0byBwYXR0ZXJuQ29sb3JDb21wb25lbnRzID0gcGF0dGVybkNvbG9yLmFzU1JHQkE8dWludDhf
dD4oKTsKLSAgICBDR0NvbnRleHRTZXRSR0JTdHJva2VDb2xvcihjb250ZXh0LCBwYXR0ZXJuQ29s
b3JDb21wb25lbnRzLnJlZCwgcGF0dGVybkNvbG9yQ29tcG9uZW50cy5ncmVlbiwgcGF0dGVybkNv
bG9yQ29tcG9uZW50cy5ibHVlLCBwYXR0ZXJuQ29sb3JDb21wb25lbnRzLmFscGhhKTsKKyAgICBj
b25zdCBhdXRvJiBwYXR0ZXJuQ29sb3IgPSBzdHlsZS5tb2RlID09IERvY3VtZW50TWFya2VyTGlu
ZVN0eWxlOjpNb2RlOjpHcmFtbWFyID8gZ3JhbW1hclBhdHRlcm5Db2xvciA6IHNwZWxsaW5nUGF0
dGVybkNvbG9yOworICAgIENHQ29udGV4dFNldFJHQlN0cm9rZUNvbG9yKGNvbnRleHQsIHBhdHRl
cm5Db2xvci5yZWQsIHBhdHRlcm5Db2xvci5ncmVlbiwgcGF0dGVybkNvbG9yLmJsdWUsIHBhdHRl
cm5Db2xvci5hbHBoYSk7CiAKICAgICBDR0FmZmluZVRyYW5zZm9ybSB1c2VyVG9CYXNlID0gZ2V0
VXNlclRvQmFzZUNUTShjb250ZXh0KTsKICAgICBDR1BvaW50IHBoYXNlID0gQ0dQb2ludEFwcGx5
QWZmaW5lVHJhbnNmb3JtKHBvaW50LCB1c2VyVG9CYXNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9Db2xvcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvQ29sb3JJT1MubW0JKHJldmlzaW9uIDI2Mzk1MykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9Db2xvcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcs
NyBAQCBDb2xvciBjb2xvckZyb21VSUNvbG9yKFVJQ29sb3IgKmNvbG9yKQogCiAgICAgW2NvbG9y
IGdldFJlZDomcmVkQ29tcG9uZW50IGdyZWVuOiZncmVlbkNvbXBvbmVudCBibHVlOiZibHVlQ29t
cG9uZW50IGFscGhhOiZhbHBoYV07CiAKLSAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKFNSR0JB
IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlZENvbXBvbmVudCksIHN0YXRpY19jYXN0PGZsb2F0Pihn
cmVlbkNvbXBvbmVudCksIHN0YXRpY19jYXN0PGZsb2F0PihibHVlQ29tcG9uZW50KSwgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGFscGhhKSB9KTsKKyAgICByZXR1cm4gY29udmVydFRvQ29tcG9uZW50Qnl0
ZXNMb3NzeShTUkdCQSB7IHN0YXRpY19jYXN0PGZsb2F0PihyZWRDb21wb25lbnQpLCBzdGF0aWNf
Y2FzdDxmbG9hdD4oZ3JlZW5Db21wb25lbnQpLCBzdGF0aWNfY2FzdDxmbG9hdD4oYmx1ZUNvbXBv
bmVudCksIHN0YXRpY19jYXN0PGZsb2F0PihhbHBoYSkgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCShyZXZpc2lvbiAyNjM5
NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsOCArODYsOCBAQCBzdGF0aWMgaW5s
aW5lIFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+IGRlCiAgICAgICAgIE1vY2tNZWRpYURldmljZSB7
ICJTQ1JFRU4tMSJfcywgIk1vY2sgc2NyZWVuIGRldmljZSAxIl9zLCBNb2NrRGlzcGxheVByb3Bl
cnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIENvbG9yOjpsaWdodEdy
YXksIHsgMzg0MCwgMjE2MCB9IH0gfSwKICAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIlNDUkVF
Ti0yIl9zLCAiTW9jayBzY3JlZW4gZGV2aWNlIDIiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7
IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgQ29sb3I6OnllbGxvdywgeyAxOTIw
LCAxMDgwIH0gfSB9LAogCi0gICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJXSU5ET1ctMiJfcywg
Ik1vY2sgd2luZG93IDEiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGU6OlNjcmVlbiwgU2ltcGxlQ29sb3IgeyAweGZmZjFiNSB9LCB7IDY0MCwgNDgw
IH0gfSB9LAotICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdp
bmRvdyAyIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlOjpTY3JlZW4sIFNpbXBsZUNvbG9yIHsgMHhmZmQwYjUgfSwgeyAxMjgwLCA2MDAgfSB9IH0s
CisgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJXSU5ET1ctMiJfcywgIk1vY2sgd2luZG93IDEi
X3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNj
cmVlbiwgU1JHQkE8dWludDhfdD4geyAweEZGLCAweEYxLCAweEI1LCAweDAwIH0sIHsgNjQwLCA0
ODAgfSB9IH0sCisgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJXSU5ET1ctMiJfcywgIk1vY2sg
d2luZG93IDIiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmlj
ZVR5cGU6OlNjcmVlbiwgU1JHQkE8dWludDhfdD4geyAweGZmLCAweEQwLCAweEI1LCAweDAwIH0s
IHsgMTI4MCwgNjAwIH0gfSB9LAogICAgIH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCShy
ZXZpc2lvbiAyNjM5NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZVZpZGVvU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDEwICsyNjUsMTAgQEAg
dm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd0FuaW1hdAogCiB2b2lkIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlOjpkcmF3Qm94ZXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewot
ICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBtYWdlbnRhIHsgMHhmZmZmMDBmZiB9OwotICAgIGNv
bnN0ZXhwciBTaW1wbGVDb2xvciBibHVlIHsgMHhmZjAwMDBmZiB9OwotICAgIGNvbnN0ZXhwciBT
aW1wbGVDb2xvciByZWQgeyAweGZmZmYwMDAwIH07Ci0gICAgY29uc3RleHByIFNpbXBsZUNvbG9y
IGRhcmtHcmVlbiB7IDB4ZmYwMDgwMDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gbWFn
ZW50YSA9IG1ha2VTaW1wbGVDb2xvcigweEZGLCAweDAwLCAweEZGLCAweEZGKTsKKyAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gYmx1ZSA9IG1ha2VTaW1wbGVDb2xvcigweDAwLCAweDAwLCAweEZG
LCAweEZGKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gcmVkID0gbWFrZVNpbXBsZUNvbG9y
KDB4RkYsIDB4MDAsIDB4MDAsIDB4RkYpOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBkYXJr
R3JlZW4gPSBtYWtlU2ltcGxlQ29sb3IoMHgwMCwgMHg4MCwgMHgwMCwgMHhGRik7CiAKICAgICBJ
bnRTaXplIHNpemUgPSBjYXB0dXJlU2l6ZSgpOwogICAgIGZsb2F0IGJveFNpemUgPSBzaXplLndp
ZHRoKCkgKiAuMDM1OwpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U6OmRyYXdCb3hlcygKIAogICAgIGJveFRvcCArPSBib3hTaXplICsgMjsKICAgICBib3hM
ZWZ0ID0gYm94U2l6ZTsKLSAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IgYm94Q29sb3JzW10gPSB7
IENvbG9yOjp3aGl0ZSwgQ29sb3I6OnllbGxvdywgQ29sb3I6OmN5YW4sIGRhcmtHcmVlbiwgbWFn
ZW50YSwgcmVkLCBibHVlIH07CisgICAgY29uc3RleHByIFNSR0JBPHVpbnQ4X3Q+IGJveENvbG9y
c1tdID0geyBDb2xvcjo6d2hpdGUsIENvbG9yOjp5ZWxsb3csIENvbG9yOjpjeWFuLCBkYXJrR3Jl
ZW4sIG1hZ2VudGEsIHJlZCwgYmx1ZSB9OwogICAgIGZvciAoYXV0byYgYm94Q29sb3IgOiBib3hD
b2xvcnMpIHsKICAgICAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoYm94TGVmdCwgYm94
VG9wLCBib3hTaXplICsgMSwgYm94U2l6ZSArIDEpLCBib3hDb2xvcik7CiAgICAgICAgIGJveExl
ZnQgKz0gYm94U2l6ZSArIDE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Nj
cm9sbGJhclRoZW1lTW9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCShyZXZpc2lvbiAyNjM5NTMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgaW50IFNjcm9sbGJhclRoZW1lTW9jazo6c2Nyb2xsYmFy
VGhpY2tuZQogCiB2b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50
UmVjdCYgdHJhY2tSZWN0KQogewotICAgIGNvbnRleHQuZmlsbFJlY3QodHJhY2tSZWN0LCBzY3Jv
bGxiYXIuZW5hYmxlZCgpID8gQ29sb3I6OmxpZ2h0R3JheSA6IFNpbXBsZUNvbG9yIHsgMHhGRkUw
RTBFMCB9KTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xsYmFyLmVuYWJs
ZWQoKSA/IENvbG9yOjpsaWdodEdyYXkuY29sb3IgOiBTUkdCQTx1aW50OF90PiB7IDB4RTAsIDB4
RTAsIDB4RTAsIDB4RkYgfSk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRo
dW1iKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIHRodW1iUmVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAyNjM5NTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzA5OSw3ICszMDk5LDcgQEAgT3B0aW9uU2V0PFJlbmRlckxheWVyOjpQYWludExheWVyRmxhZz4g
Ugogc3RydWN0IFBhdHRlcm5EZXNjcmlwdGlvbiB7CiAgICAgQVNDSUlMaXRlcmFsIG5hbWU7CiAg
ICAgRmxvYXRTaXplIHBoYXNlOwotICAgIFNpbXBsZUNvbG9yIGZpbGxDb2xvcjsKKyAgICBTUkdC
QTx1aW50OF90PiBmaWxsQ29sb3I7CiB9OwogCiBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRl
cm5Gb3JEZXNjcmlwdGlvbihQYXR0ZXJuRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIEZsb2F0U2l6
ZSBjb250ZW50T2Zmc2V0LCBHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0KQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDI2Mzk1MykK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODA1LDggKzE4MDUsOCBAQCB2b2lkIFJlbmRlck9iamVjdDo6Y2FsY3VsYXRlQm9y
ZGVyU3R5bGVDCiAgICAgQVNTRVJUKHN0eWxlID09IEJvcmRlclN0eWxlOjpJbnNldCB8fCBzdHls
ZSA9PSBCb3JkZXJTdHlsZTo6T3V0c2V0KTsKIAogICAgIC8vIFRoaXMgdmFsdWVzIHdlcmUgZGVy
aXZlZCBlbXBpcmljYWxseS4KLSAgICBjb25zdGV4cHIgZmxvYXQgYmFzZURhcmtDb2xvckx1bWlu
YW5jZSB7IDAuMDE0NDQzODQ0ZiB9OyAvLyBMdW1pbmFuY2Ugb2YgU2ltcGxlQ29sb3IgeyAweEZG
MjAyMDIwIH0KLSAgICBjb25zdGV4cHIgZmxvYXQgYmFzZUxpZ2h0Q29sb3JMdW1pbmFuY2UgeyAw
LjgzMDc3ZiB9OyAvLyBMdW1pbmFuY2Ugb2YgU2ltcGxlQ29sb3IgeyAweEZGRUJFQkVCIH0KKyAg
ICBjb25zdGV4cHIgZmxvYXQgYmFzZURhcmtDb2xvckx1bWluYW5jZSB7IDAuMDE0NDQzODQ0ZiB9
OyAvLyBMdW1pbmFuY2Ugb2YgU1JHQkE8dWludDhfdD4geyAweDIwLCAweDIwLCAweDIwLCAweEZG
IH0KKyAgICBjb25zdGV4cHIgZmxvYXQgYmFzZUxpZ2h0Q29sb3JMdW1pbmFuY2UgeyAwLjgzMDc3
ZiB9OyAvLyBMdW1pbmFuY2Ugb2YgU1JHQkE8dWludDhfdD4geyAweEVCLCAweEVCLCAweEVCLCAw
eEZGIH0KIAogICAgIGVudW0gT3BlcmF0aW9uIHsgRGFya2VuLCBMaWdodGVuIH07CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkocmV2aXNpb24gMjYzOTUz
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI4MCwzMCArMTI4MCwzMCBAQCBDb2xvciBSZW5kZXJUaGVtZTo6c3lzdGVtQ29s
b3IoQ1NTVmFsdWVJCiB7CiAgICAgc3dpdGNoIChjc3NWYWx1ZUlkKSB7CiAgICAgY2FzZSBDU1NW
YWx1ZVdlYmtpdExpbms6Ci0gICAgICAgIHJldHVybiBvcHRpb25zLmNvbnRhaW5zKFN0eWxlQ29s
b3I6Ok9wdGlvbnM6OkZvclZpc2l0ZWRMaW5rKSA/IFNpbXBsZUNvbG9yIHsgMHhGRjU1MUE4QiB9
IDogU2ltcGxlQ29sb3IgeyAweEZGMDAwMEVFIH07CisgICAgICAgIHJldHVybiBvcHRpb25zLmNv
bnRhaW5zKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OkZvclZpc2l0ZWRMaW5rKSA/IFNSR0JBPHVpbnQ4
X3Q+IHsgMHg1NSwgMHgxQSwgMHg4QiwgMHhGRiB9IDogU1JHQkE8dWludDhfdD4geyAweDAwLCAw
eDAwLCAweEVFLCAweEZGIH07CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEFjdGl2ZWxpbms6CiAg
ICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZXRleHQ6Ci0gICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7
IDB4RkZGRjAwMDAgfTsKKyAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgMHhGRiwgMHgw
MCwgMHgwMCwgMHhGRiB9OwogICAgIGNhc2UgQ1NTVmFsdWVMaW5rdGV4dDoKLSAgICAgICAgcmV0
dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjAwMDBFRSB9OworICAgICAgICByZXR1cm4gU1JHQkE8dWlu
dDhfdD4geyAweDAwLCAweDAwLCAweEVFLCAweEZGIH07CiAgICAgY2FzZSBDU1NWYWx1ZVZpc2l0
ZWR0ZXh0OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGNTUxQThCIH07CisgICAg
ICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDB4NTUsIDB4MUEsIDB4OEIsIDB4RkYgfTsKICAg
ICBjYXNlIENTU1ZhbHVlQWN0aXZlYm9yZGVyOgogICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRl
OwogICAgIGNhc2UgQ1NTVmFsdWVBY3RpdmVidXR0b250ZXh0OgogICAgICAgICByZXR1cm4gQ29s
b3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVBY3RpdmVjYXB0aW9uOgotICAgICAgICByZXR1
cm4gU2ltcGxlQ29sb3IgeyAweEZGQ0NDQ0NDIH07CisgICAgICAgIHJldHVybiBTUkdCQTx1aW50
OF90PiB7IDB4Q0MsIDB4Q0MsIDB4Q0MsIDB4RkYgfTsKICAgICBjYXNlIENTU1ZhbHVlQXBwd29y
a3NwYWNlOgogICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRlOwogICAgIGNhc2UgQ1NTVmFsdWVC
YWNrZ3JvdW5kOgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGNjM2M0NFIH07Cisg
ICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDB4NjMsIDB4NjMsIDB4Q0UsIDB4RkYgfTsK
ICAgICBjYXNlIENTU1ZhbHVlQnV0dG9uZmFjZToKICAgICAgICAgcmV0dXJuIENvbG9yOjpsaWdo
dEdyYXk7CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbmhpZ2hsaWdodDoKLSAgICAgICAgcmV0dXJu
IFNpbXBsZUNvbG9yIHsgMHhGRkRERERERCB9OworICAgICAgICByZXR1cm4gU1JHQkE8dWludDhf
dD4geyAweERELCAweERELCAweERELCAweEZGIH07CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbnNo
YWRvdzoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjg4ODg4OCB9OworICAgICAg
ICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAweDg4LCAweDg4LCAweDg4LCAweEZGIH07CiAgICAg
Y2FzZSBDU1NWYWx1ZUJ1dHRvbnRleHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAg
ICAgY2FzZSBDU1NWYWx1ZUNhcHRpb250ZXh0OgpAQCAtMTMxNyw5ICsxMzE3LDkgQEAgQ29sb3Ig
UmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSQogICAgIGNhc2UgQ1NTVmFsdWVGaWVs
ZHRleHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZUdy
YXl0ZXh0OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGODA4MDgwIH07CisgICAg
ICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDB4ODAsIDB4ODAsIDB4ODAsIDB4RkYgfTsKICAg
ICBjYXNlIENTU1ZhbHVlSGlnaGxpZ2h0OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAw
eEZGQjVENUZGIH07CisgICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDB4QjUsIDB4RDUs
IDB4RkYsIDB4RkYgfTsKICAgICBjYXNlIENTU1ZhbHVlSGlnaGxpZ2h0dGV4dDoKICAgICAgICAg
cmV0dXJuIENvbG9yOjpibGFjazsKICAgICBjYXNlIENTU1ZhbHVlSW5hY3RpdmVib3JkZXI6CkBA
IC0xMzI3LDkgKzEzMjcsOSBAQCBDb2xvciBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoQ1NTVmFs
dWVJCiAgICAgY2FzZSBDU1NWYWx1ZUluYWN0aXZlY2FwdGlvbjoKICAgICAgICAgcmV0dXJuIENv
bG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1ZhbHVlSW5hY3RpdmVjYXB0aW9udGV4dDoKLSAgICAg
ICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjdGN0Y3RiB9OworICAgICAgICByZXR1cm4gU1JH
QkE8dWludDhfdD4geyAweDdGLCAweDdGLCAweDdGLCAweEZGIH07CiAgICAgY2FzZSBDU1NWYWx1
ZUluZm9iYWNrZ3JvdW5kOgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGRkJGQ0M1
IH07CisgICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDB4RkIsIDB4RkMsIDB4QzUsIDB4
RkYgfTsKICAgICBjYXNlIENTU1ZhbHVlSW5mb3RleHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6
YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZU1lbnU6CkBAIC0xMzQxLDE5ICsxMzQxLDE5IEBAIENv
bG9yIFJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUkKICAgICBjYXNlIENTU1ZhbHVl
VGV4dDoKICAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBjYXNlIENTU1ZhbHVlVGhy
ZWVkZGFya3NoYWRvdzoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjY2NjY2NiB9
OworICAgICAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAweDY2LCAweDY2LCAweDY2LCAweEZG
IH07CiAgICAgY2FzZSBDU1NWYWx1ZVRocmVlZGZhY2U6CiAgICAgICAgIHJldHVybiBDb2xvcjo6
bGlnaHRHcmF5OwogICAgIGNhc2UgQ1NTVmFsdWVUaHJlZWRoaWdobGlnaHQ6Ci0gICAgICAgIHJl
dHVybiBTaW1wbGVDb2xvciB7IDB4RkZEREREREQgfTsKKyAgICAgICAgcmV0dXJuIFNSR0JBPHVp
bnQ4X3Q+IHsgMHhERCwgMHhERCwgMHhERCwgMHhGRiB9OwogICAgIGNhc2UgQ1NTVmFsdWVUaHJl
ZWRsaWdodHNoYWRvdzoKICAgICAgICAgcmV0dXJuIENvbG9yOjpsaWdodEdyYXk7CiAgICAgY2Fz
ZSBDU1NWYWx1ZVRocmVlZHNoYWRvdzoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhG
Rjg4ODg4OCB9OworICAgICAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAweDg4LCAweDg4LCAw
eDg4LCAweEZGIH07CiAgICAgY2FzZSBDU1NWYWx1ZVdpbmRvdzoKICAgICAgICAgcmV0dXJuIENv
bG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1ZhbHVlV2luZG93ZnJhbWU6Ci0gICAgICAgIHJldHVy
biBTaW1wbGVDb2xvciB7IDB4RkZDQ0NDQ0MgfTsKKyAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4
X3Q+IHsgMHhDQywgMHhDQywgMHhDQywgMHhGRiB9OwogICAgIGNhc2UgQ1NTVmFsdWVXaW5kb3d0
ZXh0OgogICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGRlZmF1bHQ6CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVBZHdhaXRhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVBZHdhaXRhLmNwcAkocmV2
aXNpb24gMjYzOTUzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQWR3
YWl0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSwxMCBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgY29uc3QgaW50IHRleHRGaWVsZEJvcmRlclNpemUgPSAxOwotc3Rh
dGljIGNvbnN0IENvbG9yIHRleHRGaWVsZEJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIw
NSwgMTk5LCAxOTQpOwotc3RhdGljIGNvbnN0IENvbG9yIHRleHRGaWVsZEJvcmRlckRpc2FibGVk
Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjEzLCAyMDgsIDIwNCk7Ci1zdGF0aWMgY29uc3QgQ29s
b3IgdGV4dEZpZWxkQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAy
NTUpOwotc3RhdGljIGNvbnN0IENvbG9yIHRleHRGaWVsZEJhY2tncm91bmREaXNhYmxlZENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOworc3RhdGljIGNvbnN0ZXhwciBhdXRv
IHRleHRGaWVsZEJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOwor
c3RhdGljIGNvbnN0ZXhwciBhdXRvIHRleHRGaWVsZEJvcmRlckRpc2FibGVkQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMjEzLCAyMDgsIDIwNCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gdGV4dEZp
ZWxkQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAyNTUpOworc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIHRleHRGaWVsZEJhY2tncm91bmREaXNhYmxlZENvbG9yID0gbWFr
ZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1lbnVM
aXN0QnV0dG9uQXJyb3dTaXplID0gMTY7CiBzdGF0aWMgY29uc3QgaW50IG1lbnVMaXN0QnV0dG9u
Rm9jdXNPZmZzZXQgPSAtMzsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtZW51TGlzdEJ1dHRvblBh
ZGRpbmcgPSA1OwpAQCAtNTcsMjMgKzU3LDIzIEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwcm9n
cmVzc0FjdGl2aXR5QmwKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwcm9ncmVzc0FuaW1hdGlvbkZy
YW1lQ291bnQgPSA3NTsKIHN0YXRpYyBjb25zdCBTZWNvbmRzIHByb2dyZXNzQW5pbWF0aW9uRnJh
bWVSYXRlID0gMzNfbXM7IC8vIDMwZnBzLgogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHByb2dyZXNz
QmFyU2l6ZSA9IDY7Ci1zdGF0aWMgY29uc3QgQ29sb3IgcHJvZ3Jlc3NCYXJCb3JkZXJDb2xvciA9
IG1ha2VTaW1wbGVDb2xvcigyMDUsIDE5OSwgMTk0KTsKLXN0YXRpYyBjb25zdCBDb2xvciBwcm9n
cmVzc0JhckJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMjUsIDIyMiwgMjE5KTsK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBwcm9ncmVzc0JhckJvcmRlckNvbG9yID0gbWFrZVNpbXBs
ZUNvbG9yKDIwNSwgMTk5LCAxOTQpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHByb2dyZXNzQmFy
QmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyNSwgMjIyLCAyMTkpOwogc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHNsaWRlclRyYWNrU2l6ZSA9IDY7CiBzdGF0aWMgY29uc3QgaW50IHNs
aWRlclRyYWNrQm9yZGVyU2l6ZSA9IDE7Ci1zdGF0aWMgY29uc3QgQ29sb3Igc2xpZGVyVHJhY2tC
b3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDUsIDE5OSwgMTk0KTsKLXN0YXRpYyBjb25z
dCBDb2xvciBzbGlkZXJUcmFja0JhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMjUs
IDIyMiwgMjE5KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJUcmFja0JvcmRlckNvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOworc3RhdGljIGNvbnN0ZXhwciBhdXRv
IHNsaWRlclRyYWNrQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyNSwgMjIyLCAy
MTkpOwogc3RhdGljIGNvbnN0IGludCBzbGlkZXJUcmFja0ZvY3VzT2Zmc2V0ID0gMjsKIHN0YXRp
YyBjb25zdCBpbnQgc2xpZGVyVGh1bWJTaXplID0gMjA7CiBzdGF0aWMgY29uc3QgaW50IHNsaWRl
clRodW1iQm9yZGVyU2l6ZSA9IDE7Ci1zdGF0aWMgY29uc3QgQ29sb3Igc2xpZGVyVGh1bWJCb3Jk
ZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDUsIDE5OSwgMTk0KTsKLXN0YXRpYyBjb25zdCBD
b2xvciBzbGlkZXJUaHVtYkJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDQsIDI0
MiwgMjQxKTsKLXN0YXRpYyBjb25zdCBDb2xvciBzbGlkZXJUaHVtYkJhY2tncm91bmRIb3ZlcmVk
Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjQ4LCAyNDgsIDI0Nyk7Ci1zdGF0aWMgY29uc3QgQ29s
b3Igc2xpZGVyVGh1bWJCYWNrZ3JvdW5kRGlzYWJsZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigy
NDQsIDI0MiwgMjQxKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJUaHVtYkJvcmRlckNv
bG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOworc3RhdGljIGNvbnN0ZXhwciBh
dXRvIHNsaWRlclRodW1iQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI0NCwgMjQy
LCAyNDEpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlclRodW1iQmFja2dyb3VuZEhvdmVy
ZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDgsIDI0OCwgMjQ3KTsKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byBzbGlkZXJUaHVtYkJhY2tncm91bmREaXNhYmxlZENvbG9yID0gbWFrZVNpbXBsZUNv
bG9yKDI0NCwgMjQyLCAyNDEpOwogI2lmIEVOQUJMRShWSURFTykKLXN0YXRpYyBjb25zdCBDb2xv
ciBtZWRpYVNsaWRlclRyYWNrQmFja2dyb3VuZGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDc3LCA3
NywgNzcpOwotc3RhdGljIGNvbnN0IENvbG9yIG1lZGlhU2xpZGVyVHJhY2tCdWZmZXJlZENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDE3MywgMTczLCAxNzMpOwotc3RhdGljIGNvbnN0IENvbG9yIG1l
ZGlhU2xpZGVyVHJhY2tBY3RpdmVDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTIsIDI1MiwgMjUy
KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtZWRpYVNsaWRlclRyYWNrQmFja2dyb3VuZGNvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDc3LCA3NywgNzcpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1l
ZGlhU2xpZGVyVHJhY2tCdWZmZXJlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDE3MywgMTczLCAx
NzMpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1lZGlhU2xpZGVyVHJhY2tBY3RpdmVDb2xvciA9
IG1ha2VTaW1wbGVDb2xvcigyNTIsIDI1MiwgMjUyKTsKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JN
KEdUSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCShy
ZXZpc2lvbiAyNjM5NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MuaAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDcgKzEyMSw3IEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgQ29sb3IgcGxhdGZvcm1UYXBIaWdobGln
aHRDb2xvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHg0RDFBMUEx
QSB9OyB9CisgICAgQ29sb3IgcGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgMHgxQSwgMHgxQSwgMHgxQSwgMHg0RCB9OyB9
CiAjZW5kaWYKIAogICAgIGJvb2wgc2hvdWxkSGF2ZVNwaW5CdXR0b24oY29uc3QgSFRNTElucHV0
RWxlbWVudCYpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5tbQkocmV2aXNpb24gMjYzOTUzKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MTYsMTAgKzkx
NiwxMCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvCiAKICAgICBj
b25zdCBmbG9hdCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uID0gcmVjdC55KCkgKyB2ZXJ0aWNh
bE9mZnNldDsKICAgICBhdXRvIHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFk
aWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5n
UG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9u
ICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKLSAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29s
b3JTdG9wKDAuMCwgbWFrZVNpbXBsZUNvbG9yKDB4OGQsIDB4OGQsIDB4OGQpKTsKLSAgICBzdHJv
a2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIG1ha2VTaW1wbGVDb2xvcigweGVlLCAweGVl
LCAweGVlKSk7Ci0gICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjU1LCBtYWtlU2lt
cGxlQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwotICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xv
clN0b3AoMS4wLCBtYWtlU2ltcGxlQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOworICAgIHN0cm9r
ZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBtYWtlU2ltcGxlQ29sb3IoMHg4RCwgMHg4RCwg
MHg4RCkpOworICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC40NSwgbWFrZVNpbXBs
ZUNvbG9yKDB4RUUsIDB4RUUsIDB4RUUpKTsKKyAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JT
dG9wKDAuNTUsIG1ha2VTaW1wbGVDb2xvcigweEVFLCAweEVFLCAweEVFKSk7CisgICAgc3Ryb2tl
R3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIG1ha2VTaW1wbGVDb2xvcigweDhELCAweDhELCAw
eDhEKSk7CiAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKHN0cm9rZUdyYWRp
ZW50KSk7CiAKICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwpAQCAtMTM4
MiwxMCArMTM4MiwxMCBAQCBDb2xvciBSZW5kZXJUaGVtZUlPUzo6c3lzdGVtQ29sb3IoQ1NTVmFs
CiBjb25zdCBDR1NpemUgYXR0YWNobWVudFNpemUgPSB7IDE2MCwgMTE5IH07CiAKIGNvbnN0IENH
RmxvYXQgYXR0YWNobWVudEJvcmRlclJhZGl1cyA9IDE2OwotY29uc3RleHByIFNpbXBsZUNvbG9y
IGF0dGFjaG1lbnRCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDQsIDIwNCwgMjA0KTsK
K2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigy
MDQsIDIwNCwgMjA0KTsKIHN0YXRpYyBDR0Zsb2F0IGF0dGFjaG1lbnRCb3JkZXJUaGlja25lc3Mg
PSAxOwogCi1jb25zdGV4cHIgU2ltcGxlQ29sb3IgYXR0YWNobWVudFByb2dyZXNzQ29sb3IgPSBt
YWtlU2ltcGxlQ29sb3IoMjIyLCAyMjIsIDIyMik7Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50
UHJvZ3Jlc3NDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMjIsIDIyMiwgMjIyKTsKIGNvbnN0IENH
RmxvYXQgYXR0YWNobWVudFByb2dyZXNzQm9yZGVyVGhpY2tuZXNzID0gMzsKIAogY29uc3QgQ0dG
bG9hdCBhdHRhY2htZW50UHJvZ3Jlc3NTaXplID0gMzY7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiAyNjM5NTMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ4
NCw3ICs0ODQsNyBAQCBDb2xvciBSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1UZXh0U2VhcmNoCiAg
ICAgcmV0dXJuIGNvbG9yRnJvbU5TQ29sb3IoW05TQ29sb3IgZmluZEhpZ2hsaWdodENvbG9yXSk7
CiB9CiAKLXN0YXRpYyBTaW1wbGVDb2xvciBtZW51QmFja2dyb3VuZENvbG9yKCkKK3N0YXRpYyBT
UkdCQTx1aW50OF90PiBtZW51QmFja2dyb3VuZENvbG9yKCkKIHsKICAgICBSZXRhaW5QdHI8TlNC
aXRtYXBJbWFnZVJlcD4gb2Zmc2NyZWVuUmVwID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAg
YWxsb2NdIGluaXRXaXRoQml0bWFwRGF0YVBsYW5lczpuaWwgcGl4ZWxzV2lkZToxIHBpeGVsc0hp
Z2g6MQogICAgICAgICBiaXRzUGVyU2FtcGxlOjggc2FtcGxlc1BlclBpeGVsOjQgaGFzQWxwaGE6
WUVTIGlzUGxhbmFyOk5PIGNvbG9yU3BhY2VOYW1lOk5TRGV2aWNlUkdCQ29sb3JTcGFjZSBieXRl
c1BlclJvdzo0IGJpdHNQZXJQaXhlbDozMl0pOwpAQCAtNzM3LDExICs3MzcsMTEgQEAgQ29sb3Ig
UmVuZGVyVGhlbWVNYWM6OnN5c3RlbUNvbG9yKENTU1ZhbAogICAgICAgICBjYXNlIENTU1ZhbHVl
VGhyZWVkZmFjZToKICAgICAgICAgICAgIC8vIFdlIHNlbGVjdGVkIHRoaXMgdmFsdWUgaW5zdGVh
ZCBvZiBbTlNDb2xvciBjb250cm9sQ29sb3JdIHRvIGF2b2lkIHdlYnNpdGUgaW5jb21wYXRpYmls
aXRpZXMuCiAgICAgICAgICAgICAvLyBXZSBtYXkgd2FudCB0byBjb25zaWRlciBjaGFuZ2luZyB0
byBbTlNDb2xvciBjb250cm9sQ29sb3JdIHNvbWUgZGF5LgotICAgICAgICAgICAgcmV0dXJuIFNp
bXBsZUNvbG9yIHsgMHhGRkMwQzBDMCB9OworICAgICAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4
X3Q+IHsgMHhDMCwgMHhDMCwgMHhDMCwgMHhGRiB9OwogCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVJ
bmZvYmFja2dyb3VuZDoKICAgICAgICAgICAgIC8vIE5vIGNvcnJlc3BvbmRpbmcgTlNDb2xvciBm
b3IgdGhpcyBzbyB3ZSB1c2UgYSBoYXJkIGNvZGVkIHZhbHVlLgotICAgICAgICAgICAgcmV0dXJu
IFNpbXBsZUNvbG9yIHsgMHhGRkZCRkNDNSB9OworICAgICAgICAgICAgcmV0dXJuIFNSR0JBPHVp
bnQ4X3Q+IHsgMHhGQiwgMHhGQywgMHhDNSwgMHhGRiB9OwogCiAgICAgICAgIGNhc2UgQ1NTVmFs
dWVNZW51OgogICAgICAgICAgICAgcmV0dXJuIG1lbnVCYWNrZ3JvdW5kQ29sb3IoKTsKQEAgLTc1
MCwzMCArNzUwLDMwIEBAIENvbG9yIFJlbmRlclRoZW1lTWFjOjpzeXN0ZW1Db2xvcihDU1NWYWwK
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZWJvcmRlcjoKICAgICAgICAgICAgIC8vIEhhcmRj
b2RlZCB0byBhdm9pZCBleHBvc2luZyBhIHVzZXIgYXBwZWFyYW5jZSBwcmVmZXJlbmNlIHRvIHRo
ZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5nLgogICAgICAgICAgICAgaWYgKGxvY2FsQXBwZWFyYW5j
ZS51c2luZ0RhcmtBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgU2ltcGxl
Q29sb3IgeyAweEZGMUFBOUZGIH0sIENvbG9yOjpTZW1hbnRpYyB9OwotICAgICAgICAgICAgcmV0
dXJuIHsgU2ltcGxlQ29sb3IgeyAweEZGMDA2N0Y0IH0sIENvbG9yOjpTZW1hbnRpYyB9OworICAg
ICAgICAgICAgICAgIHJldHVybiB7IFNSR0JBPHVpbnQ4X3Q+IHsgMHgxQSwgMHhBOSwgMHhGRiwg
MHhGRiB9LCBDb2xvcjo6U2VtYW50aWMgfTsKKyAgICAgICAgICAgIHJldHVybiB7IFNSR0JBPHVp
bnQ4X3Q+IHsgMHgwMCwgMHg2NywgMHhGNCwgMHhGRiB9LCBDb2xvcjo6U2VtYW50aWMgfTsKIAog
ICAgICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1Db250cm9sQWNjZW50OgogICAgICAgICAg
ICAgLy8gSGFyZGNvZGVkIHRvIGF2b2lkIGV4cG9zaW5nIGEgdXNlciBhcHBlYXJhbmNlIHByZWZl
cmVuY2UgdG8gdGhlIHdlYiBmb3IgZmluZ2VycHJpbnRpbmcuCiAgICAgICAgICAgICAvLyBTYW1l
IGNvbG9yIGluIGxpZ2h0IGFuZCBkYXJrIGFwcGVhcmFuY2VzLgotICAgICAgICAgICAgcmV0dXJu
IHsgU2ltcGxlQ29sb3IgeyAweEZGMDA3QUZGIH0sIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAg
ICAgICAgcmV0dXJuIHsgU1JHQkE8dWludDhfdD4geyAweDAwLCAweDdBLCAweEZGLCAweEZGIH0s
IENvbG9yOjpTZW1hbnRpYyB9OwogCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVNl
bGVjdGVkQ29udGVudEJhY2tncm91bmQ6CiAgICAgICAgICAgICAvLyBIYXJkY29kZWQgdG8gYXZv
aWQgZXhwb3NpbmcgYSB1c2VyIGFwcGVhcmFuY2UgcHJlZmVyZW5jZSB0byB0aGUgd2ViIGZvciBm
aW5nZXJwcmludGluZy4KICAgICAgICAgICAgIGlmIChsb2NhbEFwcGVhcmFuY2UudXNpbmdEYXJr
QXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiB7IFNpbXBsZUNvbG9yIHsgMHhG
RjAwNThEMCB9LCBDb2xvcjo6U2VtYW50aWMgfTsKLSAgICAgICAgICAgIHJldHVybiB7IFNpbXBs
ZUNvbG9yIHsgMHhGRjAwNjNFMSB9LCBDb2xvcjo6U2VtYW50aWMgfTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4geyBTUkdCQTx1aW50OF90PiB7IDB4MDAsIDB4NTgsIDB4RDAsIDB4RkYgfSwgQ29s
b3I6OlNlbWFudGljIH07CisgICAgICAgICAgICByZXR1cm4geyBTUkdCQTx1aW50OF90PiB7IDB4
MDAsIDB4NjMsIDB4RTEsIDB4RkYgfSwgQ29sb3I6OlNlbWFudGljIH07CiAKICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZUhpZ2hsaWdodDoKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU2Vs
ZWN0ZWRUZXh0QmFja2dyb3VuZDoKICAgICAgICAgICAgIC8vIEhhcmRjb2RlZCB0byBhdm9pZCBl
eHBvc2luZyBhIHVzZXIgYXBwZWFyYW5jZSBwcmVmZXJlbmNlIHRvIHRoZSB3ZWIgZm9yIGZpbmdl
cnByaW50aW5nLgogICAgICAgICAgICAgaWYgKGxvY2FsQXBwZWFyYW5jZS51c2luZ0RhcmtBcHBl
YXJhbmNlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAweENDM0Y2
MzhCIH0sIENvbG9yOjpTZW1hbnRpYyB9OwotICAgICAgICAgICAgcmV0dXJuIHsgU2ltcGxlQ29s
b3IgeyAweDk5ODBCQ0ZFIH0sIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAgICAgICAgIHJl
dHVybiB7IFNSR0JBPHVpbnQ4X3Q+IHsgMHgzRiwgMHg2MywgMHg4QiwgMHhDQyB9LCBDb2xvcjo6
U2VtYW50aWMgfTsKKyAgICAgICAgICAgIHJldHVybiB7IFNSR0JBPHVpbnQ4X3Q+IHsgMHg4MCwg
MHhCQywgMHhGRSwgMHg5OSB9LCBDb2xvcjo6U2VtYW50aWMgfTsKIAogI2lmICFIQVZFKE9TX0RB
UktfTU9ERV9TVVBQT1JUKQogICAgICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1Db250YWlu
ZXJCb3JkZXI6Ci0gICAgICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGQzVDNUM1IH07
CisgICAgICAgICAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAweEM1LCAweEM1LCAweEM1LCAw
eEZGIH07CiAjZW5kaWYKIAogICAgICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1FdmVuQWx0
ZXJuYXRpbmdDb250ZW50QmFja2dyb3VuZDogewpAQCAtMjQxMyw4ICsyNDEzLDggQEAgY29uc3Qg
Q0dGbG9hdCBhdHRhY2htZW50SWNvblNlbGVjdGlvbkJvcgogY29uc3QgQ0dGbG9hdCBhdHRhY2ht
ZW50SWNvbkJhY2tncm91bmRSYWRpdXMgPSAzOwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50SWNv
blRvVGl0bGVNYXJnaW4gPSAyOwogCi1jb25zdGV4cHIgU2ltcGxlQ29sb3IgYXR0YWNobWVudElj
b25CYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMzApOwotY29uc3Rl
eHByIFNpbXBsZUNvbG9yIGF0dGFjaG1lbnRJY29uQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29s
b3IoMjU1LCAyNTUsIDI1NSwgMTI1KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRJY29uQmFj
a2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDMwKTsKK2NvbnN0ZXhwciBh
dXRvIGF0dGFjaG1lbnRJY29uQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUs
IDI1NSwgMTI1KTsKIAogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50VGl0bGVGb250U2l6ZSA9IDEy
OwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kUmFkaXVzID0gMzsKQEAg
LTI0MjIsMjMgKzI0MjIsMjMgQEAgY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50VGl0bGVCYWNrZ3Jv
dW5kUAogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50VGl0bGVNYXhpbXVtV2lkdGggPSAxMDAgLSAo
YXR0YWNobWVudFRpdGxlQmFja2dyb3VuZFBhZGRpbmcgKiAyKTsKIGNvbnN0IENGSW5kZXggYXR0
YWNobWVudFRpdGxlTWF4aW11bUxpbmVDb3VudCA9IDI7CiAKLWNvbnN0ZXhwciBTaW1wbGVDb2xv
ciBhdHRhY2htZW50VGl0bGVJbmFjdGl2ZUJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xv
cigyMDQsIDIwNCwgMjA0LCAyNTUpOwotY29uc3RleHByIFNpbXBsZUNvbG9yIGF0dGFjaG1lbnRU
aXRsZUluYWN0aXZlVGV4dENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDEwMCwgMTAwLCAxMDAsIDI1
NSk7Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50VGl0bGVJbmFjdGl2ZUJhY2tncm91bmRDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcigyMDQsIDIwNCwgMjA0LCAyNTUpOworY29uc3RleHByIGF1dG8g
YXR0YWNobWVudFRpdGxlSW5hY3RpdmVUZXh0Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTAwLCAx
MDAsIDEwMCwgMjU1KTsKIAogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50U3VidGl0bGVGb250U2l6
ZSA9IDEwOwogY29uc3QgaW50IGF0dGFjaG1lbnRTdWJ0aXRsZVdpZHRoSW5jcmVtZW50ID0gMTA7
Ci1jb25zdGV4cHIgU2ltcGxlQ29sb3IgYXR0YWNobWVudFN1YnRpdGxlVGV4dENvbG9yID0gbWFr
ZVNpbXBsZUNvbG9yKDgyLCAxNDUsIDIxNCwgMjU1KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1l
bnRTdWJ0aXRsZVRleHRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcig4MiwgMTQ1LCAyMTQsIDI1NSk7
CiAKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFByb2dyZXNzQmFyV2lkdGggPSAzMDsKIGNvbnN0
IENHRmxvYXQgYXR0YWNobWVudFByb2dyZXNzQmFySGVpZ2h0ID0gNTsKIGNvbnN0IENHRmxvYXQg
YXR0YWNobWVudFByb2dyZXNzQmFyT2Zmc2V0ID0gLTk7CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1l
bnRQcm9ncmVzc0JhckJvcmRlcldpZHRoID0gMTsKLWNvbnN0ZXhwciBTaW1wbGVDb2xvciBhdHRh
Y2htZW50UHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwg
MCwgODkpOwotY29uc3RleHByIFNpbXBsZUNvbG9yIGF0dGFjaG1lbnRQcm9ncmVzc0JhckZpbGxD
b2xvciA9IENvbG9yOjp3aGl0ZTsKLWNvbnN0ZXhwciBTaW1wbGVDb2xvciBhdHRhY2htZW50UHJv
Z3Jlc3NCYXJCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCAxMjgpOworY29u
c3RleHByIGF1dG8gYXR0YWNobWVudFByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yID0gbWFrZVNp
bXBsZUNvbG9yKDAsIDAsIDAsIDg5KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRQcm9ncmVz
c0JhckZpbGxDb2xvciA9IENvbG9yOjp3aGl0ZTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRQ
cm9ncmVzc0JhckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDEyOCk7CiAK
IGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFBsYWNlaG9sZGVyQm9yZGVyUmFkaXVzID0gNTsKLWNv
bnN0ZXhwciBTaW1wbGVDb2xvciBhdHRhY2htZW50UGxhY2Vob2xkZXJCb3JkZXJDb2xvciA9IG1h
a2VTaW1wbGVDb2xvcigwLCAwLCAwLCA1Nik7Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50UGxh
Y2Vob2xkZXJCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCA1Nik7CiBjb25z
dCBDR0Zsb2F0IGF0dGFjaG1lbnRQbGFjZWhvbGRlckJvcmRlcldpZHRoID0gMjsKIGNvbnN0IENH
RmxvYXQgYXR0YWNobWVudFBsYWNlaG9sZGVyQm9yZGVyRGFzaExlbmd0aCA9IDY7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwCShy
ZXZpc2lvbiAyNjM5NTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dENvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBHX0RFRklORV9CT1hF
RF9UWVBFKFdlYktpdENvbG9yLCB3ZWJraXRfCiAKIGNvbnN0IFdlYkNvcmU6OkNvbG9yIHdlYmtp
dENvbG9yVG9XZWJDb3JlQ29sb3IoV2ViS2l0Q29sb3IqIGNvbG9yKQogewotICAgIHJldHVybiBX
ZWJDb3JlOjptYWtlU2ltcGxlQ29sb3IoV2ViQ29yZTo6U1JHQkEgeyBzdGF0aWNfY2FzdDxmbG9h
dD4oY29sb3ItPnJlZCksIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci0+Z3JlZW4pLCBzdGF0aWNf
Y2FzdDxmbG9hdD4oY29sb3ItPmJsdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3ItPmFscGhh
KSB9KTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29udmVydFRvQ29tcG9uZW50Qnl0ZXNMb3NzeShX
ZWJDb3JlOjpTUkdCQSB7IHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci0+cmVkKSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGNvbG9yLT5ncmVlbiksIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci0+Ymx1ZSks
IHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci0+YWxwaGEpIH0pOwogfQogCiB2b2lkIHdlYmtpdENv
bG9yRmlsbEZyb21XZWJDb3JlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIHdlYkNvcmVDb2xv
ciwgV2ViS2l0Q29sb3IqIGNvbG9yKQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NvbG9yVGVzdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9Db2xvclRlc3RzLmNwcAkocmV2aXNpb24gMjYzOTUzKQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbG9yVGVzdHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw3ICs0Niw3IEBAIFRFU1QoQ29sb3IsIFJHQlRvSFNMX1doaXRlKQogICAgIAogICAg
IEVYUEVDVF9GTE9BVF9FUShjb2xvci5saWdodG5lc3MoKSwgaHNsYUNvbG9yLmxpZ2h0bmVzcyk7
CiAgICAgCi0gICAgYXV0byByb3VuZFRyaXBwZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcih0b1NS
R0JBKGhzbGFDb2xvcikpOworICAgIGF1dG8gcm91bmRUcmlwcGVkQ29sb3IgPSBjb252ZXJ0VG9D
b21wb25lbnRCeXRlc0xvc3N5KHRvU1JHQkEoaHNsYUNvbG9yKSk7CiAgICAgRVhQRUNUX0VRKGNv
bG9yLCByb3VuZFRyaXBwZWRDb2xvcik7CiB9CiAKQEAgLTYyLDcgKzYyLDcgQEAgVEVTVChDb2xv
ciwgUkdCVG9IU0xfQmxhY2spCiAKICAgICBFWFBFQ1RfRkxPQVRfRVEoY29sb3IubGlnaHRuZXNz
KCksIGhzbGFDb2xvci5saWdodG5lc3MpOwogCi0gICAgYXV0byByb3VuZFRyaXBwZWRDb2xvciA9
IG1ha2VTaW1wbGVDb2xvcih0b1NSR0JBKGhzbGFDb2xvcikpOworICAgIGF1dG8gcm91bmRUcmlw
cGVkQ29sb3IgPSBjb252ZXJ0VG9Db21wb25lbnRCeXRlc0xvc3N5KHRvU1JHQkEoaHNsYUNvbG9y
KSk7CiAgICAgRVhQRUNUX0VRKGNvbG9yLCByb3VuZFRyaXBwZWRDb2xvcik7CiB9CiAKQEAgLTc4
LDcgKzc4LDcgQEAgVEVTVChDb2xvciwgUkdCVG9IU0xfUmVkKQogCiAgICAgRVhQRUNUX0ZMT0FU
X0VRKGNvbG9yLmxpZ2h0bmVzcygpLCBoc2xhQ29sb3IubGlnaHRuZXNzKTsKIAotICAgIGF1dG8g
cm91bmRUcmlwcGVkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IodG9TUkdCQShoc2xhQ29sb3IpKTsK
KyAgICBhdXRvIHJvdW5kVHJpcHBlZENvbG9yID0gY29udmVydFRvQ29tcG9uZW50Qnl0ZXNMb3Nz
eSh0b1NSR0JBKGhzbGFDb2xvcikpOwogICAgIEVYUEVDVF9FUShjb2xvciwgcm91bmRUcmlwcGVk
Q29sb3IpOwogfQogCkBAIC05NCw3ICs5NCw3IEBAIFRFU1QoQ29sb3IsIFJHQlRvSFNMX0dyZWVu
KQogCiAgICAgRVhQRUNUX0ZMT0FUX0VRKGNvbG9yLmxpZ2h0bmVzcygpLCBoc2xhQ29sb3IubGln
aHRuZXNzKTsKIAotICAgIGF1dG8gcm91bmRUcmlwcGVkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3Io
dG9TUkdCQShoc2xhQ29sb3IpKTsKKyAgICBhdXRvIHJvdW5kVHJpcHBlZENvbG9yID0gY29udmVy
dFRvQ29tcG9uZW50Qnl0ZXNMb3NzeSh0b1NSR0JBKGhzbGFDb2xvcikpOwogICAgIEVYUEVDVF9F
UShjb2xvciwgcm91bmRUcmlwcGVkQ29sb3IpOwogfQogCkBAIC0xMTAsNyArMTEwLDcgQEAgVEVT
VChDb2xvciwgUkdCVG9IU0xfQmx1ZSkKIAogICAgIEVYUEVDVF9GTE9BVF9FUShjb2xvci5saWdo
dG5lc3MoKSwgaHNsYUNvbG9yLmxpZ2h0bmVzcyk7CiAKLSAgICBhdXRvIHJvdW5kVHJpcHBlZENv
bG9yID0gbWFrZVNpbXBsZUNvbG9yKHRvU1JHQkEoaHNsYUNvbG9yKSk7CisgICAgYXV0byByb3Vu
ZFRyaXBwZWRDb2xvciA9IGNvbnZlcnRUb0NvbXBvbmVudEJ5dGVzTG9zc3kodG9TUkdCQShoc2xh
Q29sb3IpKTsKICAgICBFWFBFQ1RfRVEoY29sb3IsIHJvdW5kVHJpcHBlZENvbG9yKTsKIH0KIApA
QCAtMTI2LDcgKzEyNiw3IEBAIFRFU1QoQ29sb3IsIFJHQlRvSFNMX0RhcmtHcmF5KQogICAgIAog
ICAgIEVYUEVDVF9GTE9BVF9FUShjb2xvci5saWdodG5lc3MoKSwgaHNsYUNvbG9yLmxpZ2h0bmVz
cyk7CiAKLSAgICBhdXRvIHJvdW5kVHJpcHBlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKHRvU1JH
QkEoaHNsYUNvbG9yKSk7CisgICAgYXV0byByb3VuZFRyaXBwZWRDb2xvciA9IGNvbnZlcnRUb0Nv
bXBvbmVudEJ5dGVzTG9zc3kodG9TUkdCQShoc2xhQ29sb3IpKTsKICAgICBFWFBFQ1RfRVEoY29s
b3IsIHJvdW5kVHJpcHBlZENvbG9yKTsKIH0KIApAQCAtMTQyLDcgKzE0Miw3IEBAIFRFU1QoQ29s
b3IsIFJHQlRvSFNMX0dyYXkpCiAKICAgICBFWFBFQ1RfRkxPQVRfRVEoY29sb3IubGlnaHRuZXNz
KCksIGhzbGFDb2xvci5saWdodG5lc3MpOwogCi0gICAgYXV0byByb3VuZFRyaXBwZWRDb2xvciA9
IG1ha2VTaW1wbGVDb2xvcih0b1NSR0JBKGhzbGFDb2xvcikpOworICAgIGF1dG8gcm91bmRUcmlw
cGVkQ29sb3IgPSBjb252ZXJ0VG9Db21wb25lbnRCeXRlc0xvc3N5KHRvU1JHQkEoaHNsYUNvbG9y
KSk7CiAgICAgRVhQRUNUX0VRKGNvbG9yLCByb3VuZFRyaXBwZWRDb2xvcik7CiB9CiAKQEAgLTE1
OCw3ICsxNTgsNyBAQCBURVNUKENvbG9yLCBSR0JUb0hTTF9MaWdodEdyYXkpCiAKICAgICBFWFBF
Q1RfRkxPQVRfRVEoY29sb3IubGlnaHRuZXNzKCksIGhzbGFDb2xvci5saWdodG5lc3MpOwogCi0g
ICAgYXV0byByb3VuZFRyaXBwZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcih0b1NSR0JBKGhzbGFD
b2xvcikpOworICAgIGF1dG8gcm91bmRUcmlwcGVkQ29sb3IgPSBjb252ZXJ0VG9Db21wb25lbnRC
eXRlc0xvc3N5KHRvU1JHQkEoaHNsYUNvbG9yKSk7CiAgICAgRVhQRUNUX0VRKGNvbG9yLCByb3Vu
ZFRyaXBwZWRDb2xvcik7CiB9CiAKQEAgLTIyMiwxMyArMjIyLDEzIEBAIFRFU1QoQ29sb3IsIEx1
bWluYW5jZSkKICAgICBFWFBFQ1RfRVEoY0NvbXBvbmVudHMuYmx1ZSwgMTYwKTsKIAogICAgIGF1
dG8gY0xpZ3RlbmVkID0gQ29sb3IoYykubGlnaHRlbmVkKCkudG9TUkdCQUxvc3N5PHVpbnQ4X3Q+
KCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKENvbG9yKG1ha2VTaW1wbGVDb2xvcihjTGlndGVuZWQp
KS5sdW1pbmFuY2UoKSwgMC4yOTE2ODgwOCk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKENvbG9yKGNM
aWd0ZW5lZCkubHVtaW5hbmNlKCksIDAuMjkxNjg4MDgpOwogICAgIEVYUEVDVF9FUShjTGlndGVu
ZWQucmVkLCAxMzApOwogICAgIEVYUEVDVF9FUShjTGlndGVuZWQuZ3JlZW4sIDEzNyk7CiAgICAg
RVhQRUNUX0VRKGNMaWd0ZW5lZC5ibHVlLCAyNDQpOwogCiAgICAgYXV0byBjRGFya2VuZWQgPSBD
b2xvcihjKS5kYXJrZW5lZCgpLnRvU1JHQkFMb3NzeTx1aW50OF90PigpOwotICAgIEVYUEVDVF9G
TE9BVF9FUShDb2xvcihtYWtlU2ltcGxlQ29sb3IoY0RhcmtlbmVkKSkubHVtaW5hbmNlKCksIDAu
MDI3MDA2NzI3KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoQ29sb3IoY0RhcmtlbmVkKS5sdW1pbmFu
Y2UoKSwgMC4wMjcwMDY3MjcpOwogICAgIEVYUEVDVF9FUShjRGFya2VuZWQucmVkLCA0MCk7CiAg
ICAgRVhQRUNUX0VRKGNEYXJrZW5lZC5ncmVlbiwgNDMpOwogICAgIEVYUEVDVF9FUShjRGFya2Vu
ZWQuYmx1ZSwgNzYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403650</attachid>
            <date>2020-07-06 18:27:53 -0700</date>
            <delta_ts>2020-07-06 18:36:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213981-20200706182752.patch</filename>
            <type>text/plain</type>
            <size>55932</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzk5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzNSBAQAorMjAyMC0wNy0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGFydCAyIG9mIFNpbXBsZUNvbG9y
IGFuZCBTUkdCQTx1aW50OF90PiBhcmUgZXNzZW50aWFsbHkgdGhlIHNhbWUgLSBsZXQncyBjb252
ZXJnZSB0aGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTM5ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAtIFJlcGxhY2VzIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIFNpbXBsZUNvbG9yIGJhc2Vk
IG9uIGFuIEFSR0IgdWludDMyX3Qgd2l0aCBTUkdCQTx1aW50OF90Pi4KKyAgICAgICAgLSBSZW1v
dmVzIFNpbXBsZUNvbG9yIGNvbnN0cnVjdG9yIHRha2luZyBhIHVpbnQzMl90LiBDYWxsZXJzIHRo
YXQgc3RpbGwgbmVlZCB0byBjb252ZXJ0IGZyb20gQVJHQgorICAgICAgICAgIG5vdyBkbyBtYWtl
U2ltcGxlQ29sb3IoYXNTUkdCQShQYWNrZWQ6OkFSR0IgeyB2YWx1ZSB9KSkuCisgICAgICAgIC0g
UmVtb3ZlcyB2YWx1ZSgpIGFuZCB2YWx1ZUFzQVJHQigpIG1lbWJlciBmdW5jdGlvbnMgZnJvbSBT
aW1wbGVDb2xvci4gQ2FsbGVycyB0aGF0IG5lZWQgYSBwYWNrZWQKKyAgICAgICAgICByZXByZXNl
bnRhdGlvbiBub3cgZG8gUGFja2VkOjpBUkdCIHsgc2ltcGxlQ29sb3IuYXNTUkdCQTx1aW50OF90
PigpIH0udmFsdWUuCisKKyAgICAgICAgKiBjc3MvU3R5bGVDb2xvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKToKKyAgICAgICAgVXNlIGFzU1JH
QkEoUGFja2VkOjpBUkdCey4uLn0pIHRvIGNvbnN0dWN0IHRoZSBjb2xvci4KKworICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZp
bmlzaFBhcnNpbmdOYW1lZENvbG9yKToKKyAgICAgICAgVXNlIGFzU1JHQkEoUGFja2VkOjpBUkdC
ey4uLn0pIChvciBpbiBvbmUgY2FzZSwgUGFja2VkOjpSR0JBKSB0byBjb25zdHVjdCB0aGUgY29s
b3IuCisgICAgICAgIFRoZXNlIGNhbiBhbG1vc3QgY2VydGFpbmx5IGJlIHNpbXBsaWZpZWQsIGJ1
dCBpbiB0aGUgaW50ZXJlc3Qgb2Yga2VlcGluZyB0aGluZ3Mgc21hbGxpc2gsCisgICAgICAgIEkg
aGF2ZSBsZWZ0IHRoYXQgZm9yIGEgc3Vic2VxdWVudCBjaGFuZ2UuCisKKyAgICAgICAgKiBlZGl0
aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRv
L21ha2VTaW1wbGVDb2xvci4KKworICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92
ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIG1ha2VTaW1wbGVDb2xvci4K
KworICAgICAgICAoV2ViQ29yZTo6SGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm86Okhpc3Rvcmlj
TWVtb3J5Q2F0ZWdvcnlJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcmljUmVzb3VyY2VV
c2FnZURhdGE6Okhpc3RvcmljUmVzb3VyY2VVc2FnZURhdGEpOgorICAgICAgICBTd2l0Y2ggdG8g
dXNpbmcgYXV0by9tYWtlU2ltcGxlQ29sb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hZHdhaXRh
L1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHA6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRv
L21ha2VTaW1wbGVDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAtIFN3aXRj
aCB0byB1c2luZyBhdXRvL21ha2VTaW1wbGVDb2xvciBmb3IgbmFtZWQgY29sb3JzLgorICAgICAg
ICAtIFN3aXRjaCB0byBzdG9yaW5nL2VuY29kaW5nIHRoZSBpbmxpbmUgU2ltcGxlQ29sb3IgYXMg
YSBQYWNrZWQ6OlJHQkEgdmFsdWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ckJsZW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kKToKKyAgICAgICAgVXBkYXRl
IGZvciBuZXcgbmFtZSBvZiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWNrZWQ6OlJH
QkE6OlJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6UGFja2VkOjpBUkdCOjpBUkdCKToKKyAgICAg
ICAgKFdlYkNvcmU6OmFzU1JHQkEpOgorICAgICAgICBSZW5hbWUgV2ViQ29yZTo6QVJHQiB0byBX
ZWJDb3JlOjpQYWNrZWQ6OkFSR0IuIEFkZHMgY29tcGFuaW9uLCBXZWJDb3JlOjpQYWNrZWQ6OlJH
QkEuIEFuZCBhZGRzIGNvbnN0cnVjdG9ycworICAgICAgICB3aGljaCBtYWtlIGEgcGFja2VkIHR5
cGUgZnJvbSBhbiBTUkdCQTx1aW50OF90Pi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50Qnl0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50RmxvYXQpOgorICAgICAgICBF
eHRyYWN0IG91dCBoZWxwZXIgZnVuY3Rpb25zIHdoaWNoIGp1c3QgZG8gdGhlIGNsYW1waW5nIGZv
ciB0aGUgdHlwZS4gCisKKyAgICAgICAgKFdlYkNvcmU6OmNsYW1wVG9Db21wb25lbnRCeXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50RmxvYXRzKToKKyAgICAgICAgUmVu
YW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHRoYXQganVzdCBjbGFtcCB0byB1c2UgImNsYW1wIiBw
cmVmaXggcmF0aGVyIHRoYW4gImNvbnZlcnQiLiBNYWtlIHVzZQorICAgICAgICBvZiBleHRyYWN0
ZWQgaGVscGVycy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0
b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6YmxlbmRQaXhlbCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6cGl4ZWxWYWx1ZSBjb25zdCk6
CisgICAgICAgIFVwZGF0ZSB1c2luZyBuZXcgcGFja2VkIGNvbG9yIHR5cGVzIGFuZCBmdW50aW9u
cy4gCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVDb2xvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6OlNpbXBsZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUNvbG9yOjphbHBoYUNvbXBvbmVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVDb2xvcjo6YWxwaGFDb21wb25lbnRBc0Zsb2F0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNpbXBsZUNvbG9yOjppc09wYXF1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVDb2xvcjo6aXNWaXNpYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNvbG9y
Ojpjb2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVDb2xvcjo6
aW52ZXJ0ZWRDb2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVD
b2xvcjo6YXNTUkdCQSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVDb2xvcjo6Z2V0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VTaW1wbGVDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVDb2xvcjo6dmFsdWVBc0FSR0IgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6OnZhbHVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNpbXBsZUNvbG9yOjpyZWRDb21wb25lbnQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6OmdyZWVuQ29tcG9uZW50IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNvbG9yOjpibHVlQ29tcG9uZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgLSBSZW1vdmVzIGNvbnN0cnVjdG9yIHRha2luZyBhbiBBUkdCIHVp
bnQzMl90LgorICAgICAgICAtIFJlbW92ZXMgdmFsdWVBc0FSR0IoKS92YWx1ZSgpIGZ1bmN0aW9u
cyAoY2FuIHVzZSBQYWNrZWQ6OkFSR0IgZGlyZWN0bHkgaWYgbmVlZGVkKS4KKyAgICAgICAgLSBT
d2l0Y2hlcyBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiB0byBTUkdCQTx1aW50OF90Pi4KKyAgICAg
ICAgLSBTdHJlYW1saW5lIG1ha2VTaW1wbGVDb2xvciBmdW5jdGlvbnMgdG8gdXNlIHNoYXJlZCBo
ZWxwZXJzIGZyb20gQ29sb3JVdGlsaXRpZXMuaAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpuc0NvbG9yKToKKyAgICAgICAgVXNlIFBhY2tlZDo6UkdCQSB0byBleHRyYWN0IHVpbnQz
Ml90IGZvciBxdWljayBsb29rdXAgb2YgdHJhbnNwYXJlbnQvd2hpdGUvYmxhY2sgU2ltcGxlQ29s
b3JzLiBEZXNwaXRlIHRoZQorICAgICAgICBsZW5ndGggb2YgdGhlIGNhbGxzLCBTaW1wbGVDb2xv
ciBpcyBmdWxseSBjb25zdGV4cHIsIHNvIHRoZXNlIGFjdHVhbGx5IGNvbGxhcHNlIGRvd24gdG8g
dGhlIHVpbnQzMl90IHJlcHJlc2VudGF0aW9uCisgICAgICAgIGF0IGNvbXBpbGUgdGltZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdEb3RzRm9yRG9jdW1lbnRN
YXJrZXIpOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgYXV0by9tYWtlU2ltcGxlQ29sb3IuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHREZXZpY2VzKToKKyAgICAgICAgU3dpdGNoIHRv
IHVzaW5nIG1ha2VTaW1wbGVDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2U6OmRyYXdCb3hlcyk6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRvL21ha2VT
aW1wbGVDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2Nr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0Jh
Y2tncm91bmQpOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgbWFrZVNpbXBsZUNvbG9yLgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmNhbGN1bGF0ZUJvcmRlclN0eWxlQ29sb3IpOgorICAgICAgICBVcGRhdGUg
Y29tbWVudCB0byB1c2UgcGVyLWNvbXBvbmVudCB2YWx1ZXMuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnN5c3Rl
bUNvbG9yIGNvbnN0KToKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIG1ha2VTaW1wbGVDb2xvci4K
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2FpdGEuY3BwOgorICAgICAgICBT
d2l0Y2ggdG8gdXNpbmcgYXV0by9tYWtlU2ltcGxlQ29sb3IuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWVJT1MuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcik6
CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRvL21ha2VTaW1wbGVDb2xvci4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lTWFjOjpzeXN0ZW1Db2xvciBjb25zdCk6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBh
dXRvL21ha2VTaW1wbGVDb2xvci4KKwogMjAyMC0wNy0wNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogKHIyNjM5NzcpOiBbIGlPUyBEZWJ1ZyBX
SzIgXSAzNiBmYXN0IGZvcm0gYW5kIHdlYi1wbGF0Zm9ybSB0ZXN0IGNvbnNpc3RlbnRseSBjcmFz
aGluZwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQ29sb3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUNvbG9yLmNwcAkocmV2aXNpb24gMjYzOTc4KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MSw3ICs0MSw3IEBAIENvbG9yIFN0eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdvcmQoQ1NTVmEKIHsK
ICAgICBpZiAoY29uc3QgY2hhciogdmFsdWVOYW1lID0gZ2V0VmFsdWVOYW1lKGtleXdvcmQpKSB7
CiAgICAgICAgIGlmIChjb25zdCBOYW1lZENvbG9yKiBuYW1lZENvbG9yID0gZmluZENvbG9yKHZh
bHVlTmFtZSwgc3RybGVuKHZhbHVlTmFtZSkpKQotICAgICAgICAgICAgcmV0dXJuIFNpbXBsZUNv
bG9yIHsgbmFtZWRDb2xvci0+QVJHQlZhbHVlIH07CisgICAgICAgICAgICByZXR1cm4gbWFrZVNp
bXBsZUNvbG9yKGFzU1JHQkEoUGFja2VkOjpBUkdCIHsgbmFtZWRDb2xvci0+QVJHQlZhbHVlIH0p
KTsKICAgICB9CiAKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnN5c3RlbUNv
bG9yKGtleXdvcmQsIG9wdGlvbnMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJGYXN0UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MTQsMjEgKzQxNCwyOCBAQCBzdGF0aWMgT3B0aW9uYWw8U2ltcGxlQ29sb3I+IGZpbmlz
aFBhcnNpCiAgICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICBjYXNlIDM6CiAgICAgICAgIC8vICNh
YmMgY29udmVydHMgdG8gI2FhYmJjYwotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZG
MDAwMDAwCisgICAgICAgIC8vIEZJWE1FOiBSZXBsYWNlIGNvbnZlcnNpb24gdG8gUGFja2VkOjpB
UkdCIHdpdGggc2ltcGxlciBiaXQgbWF0aCB0byBjb25zdHJ1Y3QKKyAgICAgICAgLy8gdGhlIFNS
R0JBPHVpbnQ4X3Q+IGRpcmVjdGx5LgorICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKGFz
U1JHQkEoUGFja2VkOjpBUkdCIHsKKyAgICAgICAgICAgICAgIDB4RkYwMDAwMDAKICAgICAgICAg
ICAgIHwgKHZhbHVlICYgMHhGMDApIDw8IDEyIHwgKHZhbHVlICYgMHhGMDApIDw8IDgKICAgICAg
ICAgICAgIHwgKHZhbHVlICYgMHhGMCkgPDwgOCB8ICh2YWx1ZSAmIDB4RjApIDw8IDQKLSAgICAg
ICAgICAgIHwgKHZhbHVlICYgMHhGKSA8PCA0IHwgKHZhbHVlICYgMHhGKSB9OworICAgICAgICAg
ICAgfCAodmFsdWUgJiAweEYpIDw8IDQgfCAodmFsdWUgJiAweEYpIH0pKTsKICAgICBjYXNlIDQ6
CiAgICAgICAgIC8vICNhYmNkIGNvbnZlcnRzIHRvIGRkYWFiYmNjIHNpbmNlIGFscGhhIGJ5dGVz
IGFyZSB0aGUgaGlnaCBieXRlcy4KLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgKHZhbHVl
ICYgMHhGKSA8PCAyOCB8ICh2YWx1ZSAmIDB4RikgPDwgMjQKKyAgICAgICAgLy8gRklYTUU6IFJl
cGxhY2UgY29udmVyc2lvbiB0byBQYWNrZWQ6OkFSR0Igd2l0aCBzaW1wbGVyIGJpdCBtYXRoIHRv
IGNvbnN0cnVjdAorICAgICAgICAvLyB0aGUgU1JHQkE8dWludDhfdD4gZGlyZWN0bHkuCisgICAg
ICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoYXNTUkdCQShQYWNrZWQ6OkFSR0IgeworICAgICAg
ICAgICAgICAodmFsdWUgJiAweEYpIDw8IDI4IHwgKHZhbHVlICYgMHhGKSA8PCAyNAogICAgICAg
ICAgICAgfCAodmFsdWUgJiAweEYwMDApIDw8IDggfCAodmFsdWUgJiAweEYwMDApIDw8IDQKICAg
ICAgICAgICAgIHwgKHZhbHVlICYgMHhGMDApIDw8IDQgfCAodmFsdWUgJiAweEYwMCkKLSAgICAg
ICAgICAgIHwgKHZhbHVlICYgMHhGMCkgfCAodmFsdWUgJiAweEYwKSA+PiA0IH07CisgICAgICAg
ICAgICB8ICh2YWx1ZSAmIDB4RjApIHwgKHZhbHVlICYgMHhGMCkgPj4gNCB9KSk7CiAgICAgY2Fz
ZSA2OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGMDAwMDAwIHwgdmFsdWUgfTsK
KyAgICAgICAgLy8gRklYTUU6IFJlcGxhY2UgY29udmVyc2lvbiB0byBQYWNrZWQ6OkFSR0Igd2l0
aCBzaW1wbGVyIGJpdCBtYXRoIHRvIGNvbnN0cnVjdAorICAgICAgICAvLyB0aGUgU1JHQkE8dWlu
dDhfdD4gZGlyZWN0bHkuCisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoYXNTUkdCQShQ
YWNrZWQ6OkFSR0IgeyAweEZGMDAwMDAwIHwgdmFsdWUgfSkpOwogICAgIGNhc2UgODoKLSAgICAg
ICAgLy8gV2UgcGFyc2VkIHRoZSB2YWx1ZXMgaW50byBSR0JBIG9yZGVyLCBidXQgd2Ugc3RvcmUg
dGhlbSBpbiBBUkdCIG9yZGVyLgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyB2YWx1ZSA8
PCAyNCB8IHZhbHVlID4+IDggfTsKKyAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcihhc1NS
R0JBKFBhY2tlZDo6UkdCQSB7IHZhbHVlIH0pKTsKICAgICB9CiAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIH0KQEAgLTUzMiw3ICs1MzksNyBAQCBzdGF0aWMgT3B0aW9uYWw8U2ltcGxlQ29sb3I+
IGZpbmlzaFBhcnNpCiAgICAgYXV0byBuYW1lZENvbG9yID0gZmluZENvbG9yKGJ1ZmZlciwgbGVu
Z3RoKTsKICAgICBpZiAoIW5hbWVkQ29sb3IpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0gICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgbmFtZWRDb2xvci0+QVJHQlZhbHVlIH07CisgICAg
cmV0dXJuIG1ha2VTaW1wbGVDb2xvcihhc1NSR0JBKFBhY2tlZDo6QVJHQiB7IG5hbWVkQ29sb3It
PkFSR0JWYWx1ZSB9KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
YXRpYyBPcHRpb25hbDxTaW1wbGVDb2xvcj4gcGFyc2VOYW1lZENvbG9ySW50ZXJuYWwoY29uc3Qg
Q2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRpb25IaWdobGlnaHQuaAkocmV2aXNpb24gMjYz
OTc4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCw5IEBAIHN0cnVjdCBDb21wb3NpdGlvbkhpZ2hsaWdo
dCB7CiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGF0aWMgY29uc3Rl
eHByIFNpbXBsZUNvbG9yIGRlZmF1bHRDb21wb3NpdGlvbkZpbGxDb2xvciB7IDB4M0NBRkMwRTMg
fTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdENvbXBvc2l0aW9uRmlsbENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDB4QUYsIDB4QzAsIDB4RTMsIDB4M0MpOwogI2Vsc2UKLSAgICBz
dGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIGRlZmF1bHRDb21wb3NpdGlvbkZpbGxDb2xvciB7
IDB4RkZFMURENTUgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdENvbXBvc2l0
aW9uRmlsbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDB4RTEsIDB4REQsIDB4NTUsIDB4RkYpOwog
I2VuZGlmCiAKICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCB7IDAgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2Eu
bW0JKHJldmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3Vy
Y2VVc2FnZU92ZXJsYXlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI4LDEyICsxMjgsMTIg
QEAgc3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ29sb3IoZmxvYXQgciwgZgogc3RydWN0IEhpc3Rv
cmljTWVtb3J5Q2F0ZWdvcnlJbmZvIHsKICAgICBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbygp
IHsgfSAvLyBOZWVkZWQgZm9yIHN0ZDo6YXJyYXkuCiAKLSAgICBIaXN0b3JpY01lbW9yeUNhdGVn
b3J5SW5mbyh1bnNpZ25lZCBjYXRlZ29yeSwgdWludDMyX3QgYXJnYiwgU3RyaW5nIG5hbWUsIGJv
b2wgc3ViY2F0ZWdvcnkgPSBmYWxzZSkKKyAgICBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyh1
bnNpZ25lZCBjYXRlZ29yeSwgU2ltcGxlQ29sb3Igc2ltcGxlQ29sb3IsIFN0cmluZyBuYW1lLCBi
b29sIHN1YmNhdGVnb3J5ID0gZmFsc2UpCiAgICAgICAgIDogbmFtZShXVEZNb3ZlKG5hbWUpKQor
ICAgICAgICAsIGNvbG9yKGNhY2hlZENHQ29sb3Ioc2ltcGxlQ29sb3IpKQogICAgICAgICAsIGlz
U3ViY2F0ZWdvcnkoc3ViY2F0ZWdvcnkpCiAgICAgICAgICwgdHlwZShjYXRlZ29yeSkKICAgICB7
Ci0gICAgICAgIGNvbG9yID0gY2FjaGVkQ0dDb2xvcihTaW1wbGVDb2xvciB7IGFyZ2IgfSk7CiAg
ICAgfQogCiAgICAgU3RyaW5nIG5hbWU7CkBAIC0xNjAsMTggKzE2MCwxOCBAQCBzdHJ1Y3QgSGlz
dG9yaWNSZXNvdXJjZVVzYWdlRGF0YSB7CiBIaXN0b3JpY1Jlc291cmNlVXNhZ2VEYXRhOjpIaXN0
b3JpY1Jlc291cmNlVXNhZ2VEYXRhKCkKIHsKICAgICAvLyBWTSB0YWcgY2F0ZWdvcmllcy4KLSAg
ICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpKU0pJVF0gPSBIaXN0b3JpY01lbW9yeUNhdGVn
b3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6SlNKSVQsIDB4RkZGRjYwRkYsICJKUyBKSVQiKTsKLSAg
ICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZV0gPSBIaXN0b3JpY01lbW9yeUNh
dGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6R2lnYWNhZ2UsIDB4RkY2NTRGRjAsICJHaWdhY2Fn
ZSIpOwotICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkltYWdlc10gPSBIaXN0b3JpY01l
bW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6SW1hZ2VzLCAweEZGRkZGRjAwLCAiSW1h
Z2VzIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6TGF5ZXJzXSA9IEhpc3Rvcmlj
TWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpMYXllcnMsIDB4RkYwMEZGRkYsICJM
YXllcnMiKTsKLSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpMaWJjTWFsbG9jXSA9IEhp
c3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpMaWJjTWFsbG9jLCAweEZG
MDBGRjAwLCAibGliYyBtYWxsb2MiKTsKLSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5Ojpi
bWFsbG9jXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpibWFs
bG9jLCAweEZGRkY2MDYwLCAiYm1hbGxvYyIpOwotICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdv
cnk6Oklzb0hlYXBdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6
Oklzb0hlYXAsIDB4RkY4MDlGNDAsICJJc29IZWFwIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlD
YXRlZ29yeTo6T3RoZXJdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdv
cnk6Ok90aGVyLCAweEZGQzBGRjAwLCAiT3RoZXIiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNh
dGVnb3J5OjpKU0pJVF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29y
eTo6SlNKSVQsIG1ha2VTaW1wbGVDb2xvcigweEZGLCAweDYwLCAweEZGLCAweEZGKSwgIkpTIEpJ
VCIpOworICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkdpZ2FjYWdlXSA9IEhpc3Rvcmlj
TWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZSwgbWFrZVNpbXBsZUNv
bG9yKDB4NjUsIDB4NEYsIDB4RjAsIDB4RkYpLCAiR2lnYWNhZ2UiKTsKKyAgICBjYXRlZ29yaWVz
W01lbW9yeUNhdGVnb3J5OjpJbWFnZXNdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVt
b3J5Q2F0ZWdvcnk6OkltYWdlcywgbWFrZVNpbXBsZUNvbG9yKDB4RkYsIDB4RkYsIDB4MDAsIDB4
RkYpLCAiSW1hZ2VzIik7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6TGF5ZXJzXSA9
IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpMYXllcnMsIG1ha2VT
aW1wbGVDb2xvcigweDAwLCAweEZGLCAweEZGLCAweEZGKSwgIkxheWVycyIpOworICAgIGNhdGVn
b3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkxpYmNNYWxsb2NdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29y
eUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkxpYmNNYWxsb2MsIG1ha2VTaW1wbGVDb2xvcigweDAwLCAw
eEZGLCAweDAwLCAweEZGKSwgImxpYmMgbWFsbG9jIik7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlD
YXRlZ29yeTo6Ym1hbGxvY10gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRl
Z29yeTo6Ym1hbGxvYywgbWFrZVNpbXBsZUNvbG9yKDB4RkYsIDB4NjAsIDB4NjAsIDB4RkYpLCAi
Ym1hbGxvYyIpOworICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6Oklzb0hlYXBdID0gSGlz
dG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6Oklzb0hlYXAsIG1ha2VTaW1w
bGVDb2xvcigweDgwLCAweDlGLCAweDQwLCAweEZGKSwgIklzb0hlYXAiKTsKKyAgICBjYXRlZ29y
aWVzW01lbW9yeUNhdGVnb3J5OjpPdGhlcl0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhN
ZW1vcnlDYXRlZ29yeTo6T3RoZXIsIG1ha2VTaW1wbGVDb2xvcigweEMwLCAweEZGLCAweDAwLCAw
eEZGKSwgIk90aGVyIik7CiAKICAgICAvLyBTdWIgY2F0ZWdvcmllcyAoZS5nIGJyZWFrZG93biBv
ZiBibWFsbG9jIHRhZy4pCi0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6R0NIZWFwXSA9
IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ0hlYXAsIDB4RkZB
MEEwRkYsICJHQyBoZWFwIiwgdHJ1ZSk7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6
R0NPd25lZF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6R0NP
d25lZCwgMHhGRkZGQzA2MCwgIkdDIG93bmVkIiwgdHJ1ZSk7CisgICAgY2F0ZWdvcmllc1tNZW1v
cnlDYXRlZ29yeTo6R0NIZWFwXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNh
dGVnb3J5OjpHQ0hlYXAsIG1ha2VTaW1wbGVDb2xvcigweEEwLCAweEEwLCAweEZGLCAweEZGKSwg
IkdDIGhlYXAiLCB0cnVlKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHQ093bmVk
XSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ093bmVkLCBt
YWtlU2ltcGxlQ29sb3IoMHhGRiwgMHhDMCwgMHg2MCwgMHhGRiksICJHQyBvd25lZCIsIHRydWUp
OwogCiAjaWZuZGVmIE5ERUJVRwogICAgIC8vIEVuc3VyZSB0aGlzIGFsaWducyB3aXRoIFJlc291
cmNlVXNhZ2VEYXRhJ3MgY2F0ZWdvcnkgb3JkZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hZHdhaXRhL1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYWR3YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEuY3BwCShy
ZXZpc2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hZHdhaXRhL1Njcm9s
bGJhclRoZW1lQWR3YWl0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEzICs0MywxMyBAQCBz
dGF0aWMgY29uc3QgdW5zaWduZWQgb3ZlcmxheVRodW1iU2l6ZSA9CiBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbWluaW11bVRodW1iU2l6ZSA9IDQwOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRodW1i
U2l6ZSA9IDY7CiBzdGF0aWMgY29uc3QgZG91YmxlIHNjcm9sbGJhck9wYWNpdHkgPSAwLjg7Ci1z
dGF0aWMgY29uc3QgQ29sb3Igc2Nyb2xsYmFyQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNv
bG9yKDI1MiwgMjUyLCAyNTIpOwotc3RhdGljIGNvbnN0IENvbG9yIHNjcm9sbGJhckJvcmRlckNv
bG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyMCwgMjIzLCAyMjcpOwotc3RhdGljIGNvbnN0IENvbG9y
IG92ZXJsYXlUaHVtYkJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAyNTUs
IDEwMCk7Ci1zdGF0aWMgY29uc3QgQ29sb3Igb3ZlcmxheVRodW1iQ29sb3IgPSBtYWtlU2ltcGxl
Q29sb3IoNDYsIDUyLCA1NCwgMTAwKTsKLXN0YXRpYyBjb25zdCBDb2xvciB0aHVtYkhvdmVyZWRD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcig4NiwgOTEsIDkyKTsKLXN0YXRpYyBjb25zdCBDb2xvciB0
aHVtYlByZXNzZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNywgMTA2LCAyMDMpOwotc3RhdGlj
IGNvbnN0IENvbG9yIHRodW1iQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTI2LCAxMjksIDEzMCk7
CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2Nyb2xsYmFyQmFja2dyb3VuZENvbG9yID0gbWFrZVNp
bXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcm9sbGJh
ckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyMCwgMjIzLCAyMjcpOworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIG92ZXJsYXlUaHVtYkJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1
NSwgMjU1LCAyNTUsIDEwMCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gb3ZlcmxheVRodW1iQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoNDYsIDUyLCA1NCwgMTAwKTsKK3N0YXRpYyBjb25zdGV4cHIg
YXV0byB0aHVtYkhvdmVyZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcig4NiwgOTEsIDkyKTsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byB0aHVtYlByZXNzZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigy
NywgMTA2LCAyMDMpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRodW1iQ29sb3IgPSBtYWtlU2lt
cGxlQ29sb3IoMTI2LCAxMjksIDEzMCk7CiAKIGJvb2wgU2Nyb2xsYmFyVGhlbWVBZHdhaXRhOjp1
c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4
ICszNiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0ZXhwciBTaW1w
bGVDb2xvciBsaWdodGVuZWRCbGFjayB7IDB4RkY1NDU0NTQgfTsKLXN0YXRpYyBjb25zdGV4cHIg
U2ltcGxlQ29sb3IgZGFya2VuZWRXaGl0ZSB7IDB4RkZBQkFCQUIgfTsKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byBsaWdodGVuZWRCbGFjayA9IG1ha2VTaW1wbGVDb2xvcigweDU0LCAweDU0LCAweDU0
LCAweEZGKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBkYXJrZW5lZFdoaXRlID0gbWFrZVNpbXBs
ZUNvbG9yKDB4QUIsIDB4QUIsIDB4QUIsIDB4RkYpOwogCiBDb2xvcjo6Q29sb3IoY29uc3QgQ29s
b3ImIG90aGVyKQogICAgIDogbV9jb2xvckRhdGEob3RoZXIubV9jb2xvckRhdGEpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI2Mzk3OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE2MywxNCArMTYzLDE0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBvcGVy
YXRvciBEMkQxX1ZFQ1RPUl80RigpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBzdGF0aWMgY29uc3Rl
eHByIFNpbXBsZUNvbG9yIGJsYWNrIHsgMHhGRjAwMDAwMCB9OwotICAgIHN0YXRpYyBjb25zdGV4
cHIgU2ltcGxlQ29sb3Igd2hpdGUgeyAweEZGRkZGRkZGIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBTaW1wbGVDb2xvciBkYXJrR3JheSB7IDB4RkY4MDgwODAgfTsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIFNpbXBsZUNvbG9yIGdyYXkgeyAweEZGQTBBMEEwIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBTaW1wbGVDb2xvciBsaWdodEdyYXkgeyAweEZGQzBDMEMwIH07Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBTaW1wbGVDb2xvciB0cmFuc3BhcmVudCB7IDB4MDAwMDAwMDAgfTsKLSAgICBzdGF0aWMg
Y29uc3RleHByIFNpbXBsZUNvbG9yIGN5YW4geyAweEZGMDBGRkZGIH07Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBTaW1wbGVDb2xvciB5ZWxsb3cgeyAweEZGRkZGRjAwIH07CisgICAgc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGJsYWNrID0gbWFrZVNpbXBsZUNvbG9yKDB4MDAsIDB4MDAsIDB4MDApOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byB3aGl0ZSA9IG1ha2VTaW1wbGVDb2xvcigweEZGLCAw
eEZGLCAweEZGKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGFya0dyYXkgPSBtYWtlU2lt
cGxlQ29sb3IoMHg4MCwgMHg4MCwgMHg4MCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGdy
YXkgPSBtYWtlU2ltcGxlQ29sb3IoMHhBMCwgMHhBMCwgMHhBMCk7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGxpZ2h0R3JheSA9IG1ha2VTaW1wbGVDb2xvcigweEMwLCAweEMwLCAweEMwKTsK
KyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gdHJhbnNwYXJlbnQgPSBtYWtlU2ltcGxlQ29sb3Io
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGN5YW4g
PSBtYWtlU2ltcGxlQ29sb3IoMHgwMCwgMHhGRiwgMHhGRik7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIHllbGxvdyA9IG1ha2VTaW1wbGVDb2xvcigweEZGLCAweEZGLCAweDAwKTsKIAogICAg
IGJvb2wgaXNFeHRlbmRlZCgpIGNvbnN0IHsgcmV0dXJuICEobV9jb2xvckRhdGEuc2ltcGxlQ29s
b3JBbmRGbGFncyAmIGludmFsaWRTaW1wbGVDb2xvcik7IH0KICAgICBib29sIGlzU2ltcGxlKCkg
Y29uc3QgeyByZXR1cm4gIWlzRXh0ZW5kZWQoKTsgfQpAQCAtMzAxLDEyICszMDEsMTIgQEAgaW5s
aW5lIGNvbnN0IEV4dGVuZGVkQ29sb3ImIENvbG9yOjphc0V4dAogaW5saW5lIGNvbnN0IFNpbXBs
ZUNvbG9yIENvbG9yOjphc1NpbXBsZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzU2ltcGxlKCkp
OwotICAgIHJldHVybiB7IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2NvbG9yRGF0YS5zaW1wbGVD
b2xvckFuZEZsYWdzID4+IDMyKSB9OworICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoYXNTUkdC
QShQYWNrZWQ6OlJHQkEgeyBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9jb2xvckRhdGEuc2ltcGxl
Q29sb3JBbmRGbGFncyA+PiAzMikgfSkpOwogfQogCiBpbmxpbmUgdm9pZCBDb2xvcjo6c2V0U2lt
cGxlQ29sb3IoU2ltcGxlQ29sb3Igc2ltcGxlQ29sb3IpCiB7Ci0gICAgbV9jb2xvckRhdGEuc2lt
cGxlQ29sb3JBbmRGbGFncyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaW1wbGVDb2xvci52YWx1
ZSgpKSA8PCAzMjsKKyAgICBtX2NvbG9yRGF0YS5zaW1wbGVDb2xvckFuZEZsYWdzID0gc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KFBhY2tlZDo6UkdCQSB7IHNpbXBsZUNvbG9yLmFzU1JHQkE8dWludDhf
dD4oKSB9LnZhbHVlKSA8PCAzMjsKICAgICB0YWdBc1ZhbGlkKCk7CiB9CiAKQEAgLTM1MCw3ICsz
NTAsNyBAQCB2b2lkIENvbG9yOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uCiAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGVuY29kZSB3aGV0aGVyIHRoZSBjb2xvciBpcyBzZW1hbnRpYy4K
IAogICAgIGVuY29kZXIgPDwgdHJ1ZTsKLSAgICBlbmNvZGVyIDw8IGFzU2ltcGxlKCkudmFsdWUo
KTsKKyAgICBlbmNvZGVyIDw8IFBhY2tlZDo6UkdCQSB7IGFzU2ltcGxlKCkuYXNTUkdCQTx1aW50
OF90PigpIH0udmFsdWU7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0zOTAsNyAr
MzkwLDcgQEAgT3B0aW9uYWw8Q29sb3I+IENvbG9yOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
Ci0gICAgcmV0dXJuIENvbG9yIHsgU2ltcGxlQ29sb3IgeyB2YWx1ZSB9IH07CisgICAgcmV0dXJu
IENvbG9yIHsgbWFrZVNpbXBsZUNvbG9yKGFzU1JHQkEoUGFja2VkOjpSR0JBIHsgdmFsdWUgfSkp
IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCShyZXZpc2lvbiAyNjM5
NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJsZW5kaW5nLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIENvbG9yIGJsZW5kKGNvbnN0IENv
bG9yJiBmcm9tLCBjb25zdCBDb2wKICAgICBhdXRvIHByZW11bHRpcGxpZWRGcm9tID0gcHJlbXVs
dGlwbGllZENlaWxpbmcoZnJvbS50b1NSR0JBTG9zc3k8dWludDhfdD4oKSk7CiAgICAgYXV0byBw
cmVtdWx0aXBsaWVkVG8gPSBwcmVtdWx0aXBsaWVkQ2VpbGluZyh0by50b1NSR0JBTG9zc3k8dWlu
dDhfdD4oKSk7CiAKLSAgICBhdXRvIHByZW11bHRpcGxpZWRCbGVuZGVkID0gY29udmVydFRvQ29t
cG9uZW50Qnl0ZXM8U1JHQkE+KAorICAgIGF1dG8gcHJlbXVsdGlwbGllZEJsZW5kZWQgPSBjbGFt
cFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KAogICAgICAgICBXZWJDb3JlOjpibGVuZChwcmVtdWx0
aXBsaWVkRnJvbS5yZWQsIHByZW11bHRpcGxpZWRUby5yZWQsIHByb2dyZXNzKSwKICAgICAgICAg
V2ViQ29yZTo6YmxlbmQocHJlbXVsdGlwbGllZEZyb20uZ3JlZW4sIHByZW11bHRpcGxpZWRUby5n
cmVlbiwgcHJvZ3Jlc3MpLAogICAgICAgICBXZWJDb3JlOjpibGVuZChwcmVtdWx0aXBsaWVkRnJv
bS5ibHVlLCBwcmVtdWx0aXBsaWVkVG8uYmx1ZSwgcHJvZ3Jlc3MpLApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkocmV2aXNpb24gMjYzOTc4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDAsMTYgKzI0MCw0NCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25z
dGV4cHIgYm9vbCBvcGVyCiAKIC8vIFBhY2tlZCBDb2xvciBGb3JtYXRzCiAKK25hbWVzcGFjZSBQ
YWNrZWQgeworCitzdHJ1Y3QgUkdCQSB7CisgICAgY29uc3RleHByIGV4cGxpY2l0IFJHQkEodWlu
dDMyX3QgcmdiYSkKKyAgICAgICAgOiB2YWx1ZSB7IHJnYmEgfQorICAgIHsKKyAgICB9CisKKyAg
ICBjb25zdGV4cHIgZXhwbGljaXQgUkdCQShTUkdCQTx1aW50OF90PiBjb2xvcikKKyAgICAgICAg
OiB2YWx1ZSB7IHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb2xvci5yZWQgPDwgMjQgfCBjb2xvci5n
cmVlbiA8PCAxNiB8IGNvbG9yLmJsdWUgPDwgOCB8IGNvbG9yLmFscGhhKSB9CisgICAgeworICAg
IH0KKworICAgIHVpbnQzMl90IHZhbHVlOworfTsKKwogc3RydWN0IEFSR0IgeworICAgIGNvbnN0
ZXhwciBleHBsaWNpdCBBUkdCKHVpbnQzMl90IGFyZ2IpCisgICAgICAgIDogdmFsdWUgeyBhcmdi
IH0KKyAgICB7CisgICAgfQorCisgICAgY29uc3RleHByIGV4cGxpY2l0IEFSR0IoU1JHQkE8dWlu
dDhfdD4gY29sb3IpCisgICAgICAgIDogdmFsdWUgeyBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY29s
b3IuYWxwaGEgPDwgMjQgfCBjb2xvci5yZWQgPDwgMTYgfCBjb2xvci5ncmVlbiA8PCA4IHwgY29s
b3IuYmx1ZSkgfQorICAgIHsKKyAgICB9CisKICAgICB1aW50MzJfdCB2YWx1ZTsKIH07CiAKLWNv
bnN0ZXhwciBBUkdCIGFzQVJHQihTUkdCQTx1aW50OF90PiBjb2xvcikKK30KKworY29uc3RleHBy
IFNSR0JBPHVpbnQ4X3Q+IGFzU1JHQkEoUGFja2VkOjpSR0JBIGNvbG9yKQogewotICAgIHJldHVy
biB7IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2xvci5hbHBoYSA8PCAyNCB8IGNvbG9yLnJlZCA8
PCAxNiB8IGNvbG9yLmdyZWVuIDw8IDggfCBjb2xvci5ibHVlKSB9OworICAgIHJldHVybiB7IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KGNvbG9yLnZhbHVlID4+IDI0KSwgc3RhdGljX2Nhc3Q8dWludDhf
dD4oY29sb3IudmFsdWUgPj4gMTYpLCBzdGF0aWNfY2FzdDx1aW50OF90Pihjb2xvci52YWx1ZSA+
PiA4KSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oY29sb3IudmFsdWUpIH07CiB9CiAKLWNvbnN0ZXhw
ciBTUkdCQTx1aW50OF90PiBhc1NSR0JBKEFSR0IgY29sb3IpCitjb25zdGV4cHIgU1JHQkE8dWlu
dDhfdD4gYXNTUkdCQShQYWNrZWQ6OkFSR0IgY29sb3IpCiB7CiAgICAgcmV0dXJuIHsgc3RhdGlj
X2Nhc3Q8dWludDhfdD4oY29sb3IudmFsdWUgPj4gMTYpLCBzdGF0aWNfY2FzdDx1aW50OF90Pihj
b2xvci52YWx1ZSA+PiA4KSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oY29sb3IudmFsdWUpLCBzdGF0
aWNfY2FzdDx1aW50OF90Pihjb2xvci52YWx1ZSA+PiAyNCkgfTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAJKHJl
dmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
VXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBTUkdCQTx1aW50
OF90PiBwcmVtdWx0aXBsaWVkRmxvb3JpbmcoU1JHCiAgICAgICAgIHJldHVybiB7IDAsIDAsIDAs
IDAgfTsKICAgICBpZiAoYSA9PSAyNTUpCiAgICAgICAgIHJldHVybiBjb2xvcjsKLSAgICByZXR1
cm4gY29udmVydFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KGZhc3REaXZpZGVCeTI1NShyICogYSks
IGZhc3REaXZpZGVCeTI1NShnICogYSksIGZhc3REaXZpZGVCeTI1NShiICogYSksIGEpOworICAg
IHJldHVybiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KGZhc3REaXZpZGVCeTI1NShyICog
YSksIGZhc3REaXZpZGVCeTI1NShnICogYSksIGZhc3REaXZpZGVCeTI1NShiICogYSksIGEpOwog
fQogCiBTUkdCQTx1aW50OF90PiBwcmVtdWx0aXBsaWVkQ2VpbGluZyhTUkdCQTx1aW50OF90PiBj
b2xvcikKQEAgLTg5LDcgKzg5LDcgQEAgU1JHQkE8dWludDhfdD4gcHJlbXVsdGlwbGllZENlaWxp
bmcoU1JHQgogICAgICAgICByZXR1cm4geyAwLCAwLCAwLCAwIH07CiAgICAgaWYgKGEgPT0gMjU1
KQogICAgICAgICByZXR1cm4gY29sb3I7Ci0gICAgcmV0dXJuIGNvbnZlcnRUb0NvbXBvbmVudEJ5
dGVzPFNSR0JBPihmYXN0RGl2aWRlQnkyNTUociAqIGEgKyAyNTQpLCBmYXN0RGl2aWRlQnkyNTUo
ZyAqIGEgKyAyNTQpLCBmYXN0RGl2aWRlQnkyNTUoYiAqIGEgKyAyNTQpLCBhKTsKKyAgICByZXR1
cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihmYXN0RGl2aWRlQnkyNTUociAqIGEgKyAy
NTQpLCBmYXN0RGl2aWRlQnkyNTUoZyAqIGEgKyAyNTQpLCBmYXN0RGl2aWRlQnkyNTUoYiAqIGEg
KyAyNTQpLCBhKTsKIH0KIAogc3RhdGljIGlubGluZSB1aW50MTZfdCB1bnByZW11bHRpcGxpZWRD
b21wb25lbnRCeXRlKHVpbnQ4X3QgYywgdWludDhfdCBhKQpAQCAtMTAyLDcgKzEwMiw3IEBAIFNS
R0JBPHVpbnQ4X3Q+IHVucHJlbXVsdGlwbGllZChTUkdCQTx1aW4KICAgICBhdXRvIFtyLCBnLCBi
LCBhXSA9IGNvbG9yOwogICAgIGlmICghYSB8fCBhID09IDI1NSkKICAgICAgICAgcmV0dXJuIGNv
bG9yOwotICAgIHJldHVybiBjb252ZXJ0VG9Db21wb25lbnRCeXRlczxTUkdCQT4odW5wcmVtdWx0
aXBsaWVkQ29tcG9uZW50Qnl0ZShyLCBhKSwgdW5wcmVtdWx0aXBsaWVkQ29tcG9uZW50Qnl0ZShn
LCBhKSwgdW5wcmVtdWx0aXBsaWVkQ29tcG9uZW50Qnl0ZShiLCBhKSwgYSk7CisgICAgcmV0dXJu
IGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4odW5wcmVtdWx0aXBsaWVkQ29tcG9uZW50Qnl0
ZShyLCBhKSwgdW5wcmVtdWx0aXBsaWVkQ29tcG9uZW50Qnl0ZShnLCBhKSwgdW5wcmVtdWx0aXBs
aWVkQ29tcG9uZW50Qnl0ZShiLCBhKSwgYSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGls
aXRpZXMuaAkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsMTYgQEAg
aW5saW5lIHVpbnQ4X3QgY29udmVydFRvQ29tcG9uZW50Qnl0ZShmbAogICAgIHJldHVybiBzdGQ6
OmNsYW1wKHN0ZDo6bHJvdW5kKGYgKiAyNTUuMGYpLCAwbCwgMjU1bCk7CiB9CiAKK2NvbnN0ZXhw
ciB1aW50OF90IGNsYW1wVG9Db21wb25lbnRCeXRlKGludCBjKQoreworICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1wKGMsIDAsIDB4RkYpKTsKK30KKworY29uc3RleHBy
IHVpbnQ4X3QgY2xhbXBUb0NvbXBvbmVudEZsb2F0KGZsb2F0IGYpCit7CisgICAgcmV0dXJuIHN0
ZDo6Y2xhbXAoZiwgMC4wZiwgMS4wZik7Cit9CisKIGNvbnN0ZXhwciBmbG9hdCBjb252ZXJ0VG9D
b21wb25lbnRGbG9hdCh1aW50OF90IGJ5dGUpCiB7CiAgICAgcmV0dXJuIGJ5dGUgLyAyNTUuMGY7
CkBAIC02NSwyMCArNzUsMjAgQEAgdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1l
IENvbAogICAgIHJldHVybiB7IGNvbnZlcnRUb0NvbXBvbmVudEJ5dGUoY29tcG9uZW50c1swXSks
IGNvbnZlcnRUb0NvbXBvbmVudEJ5dGUoY29tcG9uZW50c1sxXSksIGNvbnZlcnRUb0NvbXBvbmVu
dEJ5dGUoY29tcG9uZW50c1syXSksIGNvbnZlcnRUb0NvbXBvbmVudEJ5dGUoY29tcG9uZW50c1sz
XSkgfTsKIH0KIAotdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlw
ZT4gY29uc3RleHByIENvbG9yVHlwZTx1aW50OF90PiBjb252ZXJ0VG9Db21wb25lbnRCeXRlcyhp
bnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKLXsKLSAgICByZXR1cm4geyBzdGF0aWNfY2FzdDx1
aW50OF90PihzdGQ6OmNsYW1wKHIsIDAsIDB4RkYpKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3Rk
OjpjbGFtcChnLCAwLCAweEZGKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoYiwg
MCwgMHhGRikpLCBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1wKGEsIDAsIDB4RkYpKSB9
OwotfQotCiB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBj
b25zdGV4cHIgQ29sb3JUeXBlPGZsb2F0PiBjb252ZXJ0VG9Db21wb25lbnRGbG9hdHMoY29uc3Qg
Q29sb3JUeXBlPHVpbnQ4X3Q+JiBjb2xvcikKIHsKICAgICBhdXRvIGNvbXBvbmVudHMgPSBhc0Nv
bG9yQ29tcG9uZW50cyhjb2xvcik7CiAgICAgcmV0dXJuIHsgY29udmVydFRvQ29tcG9uZW50Rmxv
YXQoY29tcG9uZW50c1swXSksIGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0KGNvbXBvbmVudHNbMV0p
LCBjb252ZXJ0VG9Db21wb25lbnRGbG9hdChjb21wb25lbnRzWzJdKSwgY29udmVydFRvQ29tcG9u
ZW50RmxvYXQoY29tcG9uZW50c1szXSkgfTsKIH0KIAotdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5h
bWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZTxmbG9hdD4gY29udmVy
dFRvQ29tcG9uZW50RmxvYXRzKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCit0
ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIg
Q29sb3JUeXBlPHVpbnQ4X3Q+IGNsYW1wVG9Db21wb25lbnRCeXRlcyhpbnQgciwgaW50IGcsIGlu
dCBiLCBpbnQgYSkKK3sKKyAgICByZXR1cm4geyBjbGFtcFRvQ29tcG9uZW50Qnl0ZShyKSwgY2xh
bXBUb0NvbXBvbmVudEJ5dGUoZyksIGNsYW1wVG9Db21wb25lbnRCeXRlKGIpLCBjbGFtcFRvQ29t
cG9uZW50Qnl0ZShhKSB9OworfQorCit0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5h
bWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlPGZsb2F0PiBjbGFtcFRvQ29tcG9uZW50
RmxvYXRzKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCiB7Ci0gICAgcmV0dXJu
IHsgc3RkOjpjbGFtcChyLCAwLjBmLCAxLjBmKSwgc3RkOjpjbGFtcChnLCAwLjBmLCAxLjBmKSwg
c3RkOjpjbGFtcChiLCAwLjBmLCAxLjBmKSwgc3RkOjpjbGFtcChhLCAwLjBmLCAxLjBmKSB9Owor
ICAgIHJldHVybiB7IGNsYW1wVG9Db21wb25lbnRGbG9hdChyKSwgY2xhbXBUb0NvbXBvbmVudEZs
b2F0KGcpLCBjbGFtcFRvQ29tcG9uZW50RmxvYXQoYiksIGNsYW1wVG9Db21wb25lbnRGbG9hdChh
KSB9OwogfQogCiBjb25zdGV4cHIgdWludDE2X3QgZmFzdE11bHRpcGx5QnkyNTUodWludDE2X3Qg
dmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tp
bmdTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQmFja2luZ1N0b3JlLmgJKHJldmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghYSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBhdXRvIHBpeGVsID0gYXNTUkdCQShBUkdCIHsgKmRlc3QgfSk7Cisg
ICAgICAgIGF1dG8gcGl4ZWwgPSBhc1NSR0JBKFBhY2tlZDo6QVJHQiB7ICpkZXN0IH0pOwogCiAg
ICAgICAgIGlmIChhID49IDI1NSB8fCAhcGl4ZWwuYWxwaGEpIHsKICAgICAgICAgICAgIHNldFBp
eGVsKGRlc3QsIHIsIGcsIGIsIGEpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgaWYgKCFtX3ByZW11bHRpcGx5QWxwaGEpCiAgICAgICAgICAgICByZXN1bHQgPSB1bnByZW11
bHRpcGxpZWQocmVzdWx0KTsKIAotICAgICAgICAqZGVzdCA9IGFzQVJHQihyZXN1bHQpLnZhbHVl
OworICAgICAgICAqZGVzdCA9IFBhY2tlZDo6QVJHQiB7IHJlc3VsdCB9LnZhbHVlOwogICAgIH0K
IAogICAgIHN0YXRpYyBib29sIGlzT3ZlclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTIz
MSw3ICsyMzEsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAobV9wcmVtdWx0aXBseUFscGhhICYm
IGEgPCAyNTUpCiAgICAgICAgICAgICByZXN1bHQgPSBwcmVtdWx0aXBsaWVkRmxvb3JpbmcocmVz
dWx0KTsKIAotICAgICAgICByZXR1cm4gYXNBUkdCKHJlc3VsdCkudmFsdWU7CisgICAgICAgIHJl
dHVybiBQYWNrZWQ6OkFSR0IgeyByZXN1bHQgfS52YWx1ZTsKICAgICB9CiAKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVDb2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmgJKHJldmlzaW9uIDI2Mzk3OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDM4ICszMiwzMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8v
IENvbG9yIHZhbHVlIHdpdGggOC1iaXQgY29tcG9uZW50cyBmb3IgcmVkLCBncmVlbiwgYmx1ZSwg
YW5kIGFscGhhLgotLy8gRm9yIGhpc3RvcmljYWwgcmVhc29ucywgc3RvcmVkIGFzIGEgMzItYml0
IGludGVnZXIsIHdpdGggYWxwaGEgaW4gdGhlIGhpZ2ggYml0czogQVJHQi4KIGNsYXNzIFNpbXBs
ZUNvbG9yIHsKIHB1YmxpYzoKLSAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IodWludDMyX3QgdmFs
dWUgPSAwKSA6IG1fdmFsdWUgeyB2YWx1ZSB9IHsgfQotICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xv
cih1aW50OF90IHIsIHVpbnQ4X3QgZywgdWludDhfdCBiLCB1aW50OF90IGEpIDogbV92YWx1ZSB7
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhIDw8IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGIpIH0g
eyB9CisgICAgY29uc3RleHByIFNpbXBsZUNvbG9yKCkgOiBtX3ZhbHVlIHsgfSB7IH0KKyAgICBj
b25zdGV4cHIgU2ltcGxlQ29sb3IodWludDhfdCByLCB1aW50OF90IGcsIHVpbnQ4X3QgYiwgdWlu
dDhfdCBhKSA6IG1fdmFsdWUgeyByLCBnLCBiLCBhIH0geyB9CiAKLSAgICBjb25zdGV4cHIgdWlu
dDMyX3QgdmFsdWVBc0FSR0IoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0gICAgY29uc3Rl
eHByIHVpbnQzMl90IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgIGNvbnN0
ZXhwciB1aW50OF90IGFscGhhQ29tcG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5hbHBo
YTsgfQorICAgIGNvbnN0ZXhwciBmbG9hdCBhbHBoYUNvbXBvbmVudEFzRmxvYXQoKSBjb25zdCB7
IHJldHVybiBjb252ZXJ0VG9Db21wb25lbnRGbG9hdChtX3ZhbHVlLmFscGhhKTsgfQogCi0gICAg
Y29uc3RleHByIHVpbnQ4X3QgYWxwaGFDb21wb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVl
ID4+IDI0OyB9Ci0gICAgY29uc3RleHByIGZsb2F0IGFscGhhQ29tcG9uZW50QXNGbG9hdCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0KGFscGhhQ29tcG9uZW50KCkpOyB9
Ci0KLSAgICBjb25zdGV4cHIgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIGFscGhhQ29t
cG9uZW50KCkgPT0gMHhGRjsgfQotICAgIGNvbnN0ZXhwciBib29sIGlzVmlzaWJsZSgpIGNvbnN0
IHsgcmV0dXJuIGFscGhhQ29tcG9uZW50KCk7IH0KKyAgICBjb25zdGV4cHIgYm9vbCBpc09wYXF1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuYWxwaGEgPT0gMHhGRjsgfQorICAgIGNvbnN0ZXhw
ciBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuYWxwaGE7IH0KIAogICAg
IGNvbnN0ZXhwciBTaW1wbGVDb2xvciBjb2xvcldpdGhBbHBoYSh1aW50OF90IGFscGhhKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuIHsgKG1fdmFsdWUgJiAweDAwRkZGRkZGKSB8IGFscGhh
IDw8IDI0IH07CisgICAgICAgIHJldHVybiB7IG1fdmFsdWUucmVkLCBtX3ZhbHVlLmdyZWVuLCBt
X3ZhbHVlLmJsdWUsIGFscGhhIH07CiAgICAgfQogCiAgICAgY29uc3RleHByIFNpbXBsZUNvbG9y
IGludmVydGVkQ29sb3JXaXRoQWxwaGEodWludDhfdCBhbHBoYSkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiB7IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KDB4RkYgLSByZWRDb21wb25lbnQoKSks
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KDB4RkYgLSBncmVlbkNvbXBvbmVudCgpKSwgc3RhdGljX2Nh
c3Q8dWludDhfdD4oMHhGRiAtIGJsdWVDb21wb25lbnQoKSksIGFscGhhIH07CisgICAgICAgIHJl
dHVybiB7IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KDB4RkYgLSBtX3ZhbHVlLnJlZCksIHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KDB4RkYgLSBtX3ZhbHVlLmdyZWVuKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4o
MHhGRiAtIG1fdmFsdWUuYmx1ZSksIGFscGhhIH07CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gY29uc3RleHByIFNSR0JBPFQ+IGFzU1JHQkEoKSBjb25zdAogICAgIHsKICAgICAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxULCBmbG9hdD4pCi0gICAgICAgICAgICBy
ZXR1cm4geyBjb252ZXJ0VG9Db21wb25lbnRGbG9hdChyZWRDb21wb25lbnQoKSksIGNvbnZlcnRU
b0NvbXBvbmVudEZsb2F0KGdyZWVuQ29tcG9uZW50KCkpLCBjb252ZXJ0VG9Db21wb25lbnRGbG9h
dChibHVlQ29tcG9uZW50KCkpLCAgY29udmVydFRvQ29tcG9uZW50RmxvYXQoYWxwaGFDb21wb25l
bnQoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9Db21wb25lbnRGbG9hdHMobV92
YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxULCB1aW50
OF90PikKLSAgICAgICAgICAgIHJldHVybiB7IHJlZENvbXBvbmVudCgpLCBncmVlbkNvbXBvbmVu
dCgpLCBibHVlQ29tcG9uZW50KCksIGFscGhhQ29tcG9uZW50KCkgfTsKKyAgICAgICAgICAgIHJl
dHVybiBtX3ZhbHVlOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IE4+CkBAIC03
MSwyMSArNjYsMTcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChOIDwg
NCk7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoIU4pCi0gICAgICAgICAgICByZXR1cm4gcmVkQ29t
cG9uZW50KCk7CisgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS5yZWQ7CiAgICAgICAgIGVsc2Ug
aWYgY29uc3RleHByIChOID09IDEpCi0gICAgICAgICAgICByZXR1cm4gZ3JlZW5Db21wb25lbnQo
KTsKKyAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLmdyZWVuOwogICAgICAgICBlbHNlIGlmIGNv
bnN0ZXhwciAoTiA9PSAyKQotICAgICAgICAgICAgcmV0dXJuIGJsdWVDb21wb25lbnQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBtX3ZhbHVlLmJsdWU7CiAgICAgICAgIGVsc2UgaWYgY29uc3RleHBy
IChOID09IDMpCi0gICAgICAgICAgICByZXR1cm4gYWxwaGFDb21wb25lbnQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBtX3ZhbHVlLmFscGhhOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBjb25zdGV4
cHIgdWludDhfdCByZWRDb21wb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID4+IDE2OyB9
Ci0gICAgY29uc3RleHByIHVpbnQ4X3QgZ3JlZW5Db21wb25lbnQoKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlID4+IDg7IH0KLSAgICBjb25zdGV4cHIgdWludDhfdCBibHVlQ29tcG9uZW50KCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZTsgfQotCi0gICAgdWludDMyX3QgbV92YWx1ZSB7IDAgfTsKKyAg
ICBTUkdCQTx1aW50OF90PiBtX3ZhbHVlIHsgMCwgMCwgMCwgMCB9OwogfTsKIAogYm9vbCBvcGVy
YXRvcj09KFNpbXBsZUNvbG9yLCBTaW1wbGVDb2xvcik7CkBAIC05OCw3ICs4OSw3IEBAIFNpbXBs
ZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihjb25zdCBTUkdCQTwKIAogaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShTaW1wbGVDb2xvciBhLCBTaW1wbGVDb2xvciBiKQogewotICAgIHJldHVybiBhLnZhbHVl
KCkgPT0gYi52YWx1ZSgpOworICAgIHJldHVybiBhLmFzU1JHQkE8dWludDhfdD4oKSA9PSBiLmFz
U1JHQkE8dWludDhfdD4oKTsKIH0KIAogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShTaW1wbGVDb2xv
ciBhLCBTaW1wbGVDb2xvciBiKQpAQCAtMTA2LDI0ICs5NywyNCBAQCBpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KFNpbXBsZUNvbG9yIGEsIFNpCiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAotY29u
c3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihpbnQgciwgaW50IGcsIGludCBiKQor
Y29uc3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihjb25zdCBTUkdCQTx1aW50OF90
PiYgc1JHQkEpCiB7Ci0gICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFt
cChyLCAwLCAweEZGKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoZywgMCwgMHhG
RikpLCBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1wKGIsIDAsIDB4RkYpKSwgMHhGRiB9
OworICAgIHJldHVybiB7IHNSR0JBLnJlZCwgc1JHQkEuZ3JlZW4sIHNSR0JBLmJsdWUsIHNSR0JB
LmFscGhhIH07CiB9CiAKLWNvbnN0ZXhwciBTaW1wbGVDb2xvciBtYWtlU2ltcGxlQ29sb3IoaW50
IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCitpbmxpbmUgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNv
bG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYgc1JHQkEpCiB7Ci0gICAgcmV0dXJuIHsgc3RhdGljX2Nh
c3Q8dWludDhfdD4oc3RkOjpjbGFtcChyLCAwLCAweEZGKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KHN0ZDo6Y2xhbXAoZywgMCwgMHhGRikpLCBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1w
KGIsIDAsIDB4RkYpKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFtcChhLCAwLCAweEZG
KSkgfTsKKyAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKGNvbnZlcnRUb0NvbXBvbmVudEJ5dGVz
KHNSR0JBKSk7CiB9CiAKLWNvbnN0ZXhwciBTaW1wbGVDb2xvciBtYWtlU2ltcGxlQ29sb3IoY29u
c3QgU1JHQkE8dWludDhfdD4mIHNSR0JBKQorY29uc3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1w
bGVDb2xvcihpbnQgciwgaW50IGcsIGludCBiKQogewotICAgIHJldHVybiB7IHNSR0JBLnJlZCwg
c1JHQkEuZ3JlZW4sIHNSR0JBLmJsdWUsIHNSR0JBLmFscGhhIH07CisgICAgcmV0dXJuIG1ha2VT
aW1wbGVDb2xvcihjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHIsIGcsIGIsIDB4RkYpKTsK
IH0KIAotaW5saW5lIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihjb25zdCBTUkdCQTxmbG9h
dD4mIHNSR0JBKQorY29uc3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihpbnQgciwg
aW50IGcsIGludCBiLCBpbnQgYSkKIHsKLSAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKGNvbnZl
cnRUb0NvbXBvbmVudEJ5dGVzKHNSR0JBKSk7CisgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcihj
bGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHIsIGcsIGIsIGEpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Q29sb3JDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JDRy5jcHAJKHJldmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksMjQg
KzEyOSwyMiBAQCBzdGF0aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvCiBDR0Nv
bG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmIChjb2xv
ci5pc1NpbXBsZSgpKSB7Ci0gICAgICAgIHN3aXRjaCAoY29sb3IuYXNTaW1wbGUoKS52YWx1ZSgp
KSB7Ci0gICAgICAgIGNhc2UgQ29sb3I6OnRyYW5zcGFyZW50LnZhbHVlKCk6IHsKKyAgICAgICAg
c3dpdGNoIChQYWNrZWQ6OlJHQkEgeyBjb2xvci5hc1NpbXBsZSgpLmFzU1JHQkE8dWludDhfdD4o
KSB9LnZhbHVlKSB7CisgICAgICAgIGNhc2UgUGFja2VkOjpSR0JBIHsgQ29sb3I6OnRyYW5zcGFy
ZW50LmFzU1JHQkE8dWludDhfdD4oKSB9LnZhbHVlOiB7CiAgICAgICAgICAgICBzdGF0aWMgQ0dD
b2xvclJlZiB0cmFuc3BhcmVudENHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7CiAgICAgICAg
ICAgICByZXR1cm4gdHJhbnNwYXJlbnRDR0NvbG9yOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
Q29sb3I6OmJsYWNrLnZhbHVlKCk6IHsKKyAgICAgICAgY2FzZSBQYWNrZWQ6OlJHQkEgeyBDb2xv
cjo6YmxhY2suYXNTUkdCQTx1aW50OF90PigpIH0udmFsdWU6IHsKICAgICAgICAgICAgIHN0YXRp
YyBDR0NvbG9yUmVmIGJsYWNrQ0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsKICAgICAgICAg
ICAgIHJldHVybiBibGFja0NHQ29sb3I7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBDb2xvcjo6
d2hpdGUudmFsdWUoKTogeworICAgICAgICBjYXNlIFBhY2tlZDo6UkdCQSB7IENvbG9yOjp3aGl0
ZS5hc1NSR0JBPHVpbnQ4X3Q+KCkgfS52YWx1ZTogewogICAgICAgICAgICAgc3RhdGljIENHQ29s
b3JSZWYgd2hpdGVDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogICAgICAgICAgICAgcmV0
dXJuIHdoaXRlQ0dDb2xvcjsKICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgQVNT
RVJUKGNvbG9yLmlzRXh0ZW5kZWQoKSB8fCBjb2xvci5hc1NpbXBsZSgpLnZhbHVlKCkpOwotCiAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRpbnlMUlVDYWNoZTxDb2xvciwgUmV0YWluUHRyPENH
Q29sb3JSZWY+LCAzMj4+IGNhY2hlOwogICAgIHJldHVybiBjYWNoZS5nZXQoKS5nZXQoY29sb3Ip
LmdldCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db2xvck1hYy5tbQkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0
OSw3IEBAIHN0YXRpYyBib29sIHVzZU9sZEFxdWFGb2N1c1JpbmdDb2xvcjsKIAogQ29sb3Igb2xk
QXF1YUZvY3VzUmluZ0NvbG9yKCkKIHsKLSAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGN0RB
REQ5IH07CisgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigweDdELCAweEFELCAweEQ5LCAweEZG
KTsKIH0KIAogdm9pZCBzZXRVc2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcihib29sIG5ld1ZhbHVl
KQpAQCAtMTIzLDE2ICsxMjMsMTYgQEAgQ29sb3Igc2VtYW50aWNDb2xvckZyb21OU0NvbG9yKE5T
Q29sb3IgKgogTlNDb2xvciAqbnNDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYg
KGNvbG9yLmlzU2ltcGxlKCkpIHsKLSAgICAgICAgc3dpdGNoIChjb2xvci5hc1NpbXBsZSgpLnZh
bHVlKCkpIHsKLSAgICAgICAgY2FzZSBDb2xvcjo6dHJhbnNwYXJlbnQudmFsdWUoKTogeworICAg
ICAgICBzd2l0Y2ggKFBhY2tlZDo6UkdCQSB7IGNvbG9yLmFzU2ltcGxlKCkuYXNTUkdCQTx1aW50
OF90PigpIH0udmFsdWUpIHsKKyAgICAgICAgY2FzZSBQYWNrZWQ6OlJHQkEgeyBDb2xvcjo6dHJh
bnNwYXJlbnQuYXNTUkdCQTx1aW50OF90PigpIH0udmFsdWU6IHsKICAgICAgICAgICAgIHN0YXRp
YyBOU0NvbG9yICpjbGVhckNvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MCBncmVl
bjowIGJsdWU6MCBhbHBoYTowXSByZXRhaW5dOwogICAgICAgICAgICAgcmV0dXJuIGNsZWFyQ29s
b3I7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBDb2xvcjo6YmxhY2sudmFsdWUoKTogeworICAg
ICAgICBjYXNlIFBhY2tlZDo6UkdCQSB7IENvbG9yOjpibGFjay5hc1NSR0JBPHVpbnQ4X3Q+KCkg
fS52YWx1ZTogewogICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IgKmJsYWNrQ29sb3IgPSBbW05T
Q29sb3IgY29sb3JXaXRoU1JHQlJlZDowIGdyZWVuOjAgYmx1ZTowIGFscGhhOjFdIHJldGFpbl07
CiAgICAgICAgICAgICByZXR1cm4gYmxhY2tDb2xvcjsKICAgICAgICAgfQotICAgICAgICBjYXNl
IENvbG9yOjp3aGl0ZS52YWx1ZSgpOiB7CisgICAgICAgIGNhc2UgUGFja2VkOjpSR0JBIHsgQ29s
b3I6OndoaXRlLmFzU1JHQkE8dWludDhfdD4oKSB9LnZhbHVlOiB7CiAgICAgICAgICAgICBzdGF0
aWMgTlNDb2xvciAqd2hpdGVDb2xvciA9IFtbTlNDb2xvciBjb2xvcldpdGhTUkdCUmVkOjEgZ3Jl
ZW46MSBibHVlOjEgYWxwaGE6MV0gcmV0YWluXTsKICAgICAgICAgICAgIHJldHVybiB3aGl0ZUNv
bG9yOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAJKHJldmlzaW9u
IDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRDR1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCwxMiArMTk4LDExIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RG90c0ZvckRvY3VtZW4KICAgICBDR0NvbnRleHRSZWYg
Y29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29u
dGV4dCk7CiAKLSAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIHNwZWxsaW5nUGF0dGVy
bkNvbG9yIHsgbWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCkgfTsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIFNpbXBsZUNvbG9yIGdyYW1tYXJQYXR0ZXJuQ29sb3IgeyBtYWtlU2ltcGxlQ29sb3IoMCwg
MTI4LCAwKSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBzcGVsbGluZ1BhdHRlcm5Db2xv
ciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDApOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0
byBncmFtbWFyUGF0dGVybkNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDEyOCwgMCk7CiAKLSAg
ICBjb25zdCBTaW1wbGVDb2xvciYgcGF0dGVybkNvbG9yID0gc3R5bGUubW9kZSA9PSBEb2N1bWVu
dE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6R3JhbW1hciA/IGdyYW1tYXJQYXR0ZXJuQ29sb3IgOiBz
cGVsbGluZ1BhdHRlcm5Db2xvcjsKLSAgICBhdXRvIHBhdHRlcm5Db2xvckNvbXBvbmVudHMgPSBw
YXR0ZXJuQ29sb3IuYXNTUkdCQTx1aW50OF90PigpOwotICAgIENHQ29udGV4dFNldFJHQlN0cm9r
ZUNvbG9yKGNvbnRleHQsIHBhdHRlcm5Db2xvckNvbXBvbmVudHMucmVkLCBwYXR0ZXJuQ29sb3JD
b21wb25lbnRzLmdyZWVuLCBwYXR0ZXJuQ29sb3JDb21wb25lbnRzLmJsdWUsIHBhdHRlcm5Db2xv
ckNvbXBvbmVudHMuYWxwaGEpOworICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gc3R5bGUubW9kZSA9
PSBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6R3JhbW1hciA/IGdyYW1tYXJQYXR0ZXJu
Q29sb3IgOiBzcGVsbGluZ1BhdHRlcm5Db2xvcjsKKyAgICBDR0NvbnRleHRTZXRSR0JTdHJva2VD
b2xvcihjb250ZXh0LCByLCBnLCBiLCBhKTsKIAogICAgIENHQWZmaW5lVHJhbnNmb3JtIHVzZXJU
b0Jhc2UgPSBnZXRVc2VyVG9CYXNlQ1RNKGNvbnRleHQpOwogICAgIENHUG9pbnQgcGhhc2UgPSBD
R1BvaW50QXBwbHlBZmZpbmVUcmFuc2Zvcm0ocG9pbnQsIHVzZXJUb0Jhc2UpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJKHJldmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw4ICs4Niw4IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPE1vY2tNZWRp
YURldmljZT4gZGUKICAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIlNDUkVFTi0xIl9zLCAiTW9j
ayBzY3JlZW4gZGV2aWNlIDEiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGU6OlNjcmVlbiwgQ29sb3I6OmxpZ2h0R3JheSwgeyAzODQwLCAyMTYwIH0g
fSB9LAogICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiU0NSRUVOLTIiX3MsICJNb2NrIHNjcmVl
biBkZXZpY2UgMiJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZTo6U2NyZWVuLCBDb2xvcjo6eWVsbG93LCB7IDE5MjAsIDEwODAgfSB9IH0sCiAKLSAg
ICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIldJTkRPVy0yIl9zLCAiTW9jayB3aW5kb3cgMSJfcywg
TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVu
LCBTaW1wbGVDb2xvciB7IDB4ZmZmMWI1IH0sIHsgNjQwLCA0ODAgfSB9IH0sCi0gICAgICAgIE1v
Y2tNZWRpYURldmljZSB7ICJXSU5ET1ctMiJfcywgIk1vY2sgd2luZG93IDIiX3MsIE1vY2tEaXNw
bGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgU2ltcGxl
Q29sb3IgeyAweGZmZDBiNSB9LCB7IDEyODAsIDYwMCB9IH0gfSwKKyAgICAgICAgTW9ja01lZGlh
RGV2aWNlIHsgIldJTkRPVy0yIl9zLCAiTW9jayB3aW5kb3cgMSJfcywgTW9ja0Rpc3BsYXlQcm9w
ZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBtYWtlU2ltcGxlQ29s
b3IoMHhGRiwgMHhGMSwgMHhCNSksIHsgNjQwLCA0ODAgfSB9IH0sCisgICAgICAgIE1vY2tNZWRp
YURldmljZSB7ICJXSU5ET1ctMiJfcywgIk1vY2sgd2luZG93IDIiX3MsIE1vY2tEaXNwbGF5UHJv
cGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgbWFrZVNpbXBsZUNv
bG9yKDB4ZmYsIDB4RDAsIDB4QjUpLCB7IDEyODAsIDYwMCB9IH0gfSwKICAgICB9OwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZVZpZGVvU291cmNlLmNwcAkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2NSwxMCArMjY1LDEwIEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdB
bmltYXQKIAogdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd0JveGVzKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkKIHsKLSAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IgbWFnZW50YSB7
IDB4ZmZmZjAwZmYgfTsKLSAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IgYmx1ZSB7IDB4ZmYwMDAw
ZmYgfTsKLSAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IgcmVkIHsgMHhmZmZmMDAwMCB9OwotICAg
IGNvbnN0ZXhwciBTaW1wbGVDb2xvciBkYXJrR3JlZW4geyAweGZmMDA4MDAwIH07CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIG1hZ2VudGEgPSBtYWtlU2ltcGxlQ29sb3IoMHhGRiwgMHgwMCwg
MHhGRiwgMHhGRik7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJsdWUgPSBtYWtlU2ltcGxl
Q29sb3IoMHgwMCwgMHgwMCwgMHhGRiwgMHhGRik7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRv
IHJlZCA9IG1ha2VTaW1wbGVDb2xvcigweEZGLCAweDAwLCAweDAwLCAweEZGKTsKKyAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gZGFya0dyZWVuID0gbWFrZVNpbXBsZUNvbG9yKDB4MDAsIDB4ODAs
IDB4MDAsIDB4RkYpOwogCiAgICAgSW50U2l6ZSBzaXplID0gY2FwdHVyZVNpemUoKTsKICAgICBm
bG9hdCBib3hTaXplID0gc2l6ZS53aWR0aCgpICogLjAzNTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAJKHJldmlzaW9u
IDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVN
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBpbnQgU2Nyb2xsYmFyVGhl
bWVNb2NrOjpzY3JvbGxiYXJUaGlja25lCiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWlu
dFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Ny
b2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCiB7Ci0gICAgY29udGV4dC5maWxsUmVj
dCh0cmFja1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGlnaHRHcmF5IDogU2lt
cGxlQ29sb3IgeyAweEZGRTBFMEUwIH0pOworICAgIGNvbnRleHQuZmlsbFJlY3QodHJhY2tSZWN0
LCBzY3JvbGxiYXIuZW5hYmxlZCgpID8gQ29sb3I6OmxpZ2h0R3JheSA6IG1ha2VTaW1wbGVDb2xv
cigweEUwLCAweEUwLCAweEUwKSk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWlu
dFRodW1iKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNv
bnN0IEludFJlY3QmIHRodW1iUmVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwNSw4ICsxODA1LDgg
QEAgdm9pZCBSZW5kZXJPYmplY3Q6OmNhbGN1bGF0ZUJvcmRlclN0eWxlQwogICAgIEFTU0VSVChz
dHlsZSA9PSBCb3JkZXJTdHlsZTo6SW5zZXQgfHwgc3R5bGUgPT0gQm9yZGVyU3R5bGU6Ok91dHNl
dCk7CiAKICAgICAvLyBUaGlzIHZhbHVlcyB3ZXJlIGRlcml2ZWQgZW1waXJpY2FsbHkuCi0gICAg
Y29uc3RleHByIGZsb2F0IGJhc2VEYXJrQ29sb3JMdW1pbmFuY2UgeyAwLjAxNDQ0Mzg0NGYgfTsg
Ly8gTHVtaW5hbmNlIG9mIFNpbXBsZUNvbG9yIHsgMHhGRjIwMjAyMCB9Ci0gICAgY29uc3RleHBy
IGZsb2F0IGJhc2VMaWdodENvbG9yTHVtaW5hbmNlIHsgMC44MzA3N2YgfTsgLy8gTHVtaW5hbmNl
IG9mIFNpbXBsZUNvbG9yIHsgMHhGRkVCRUJFQiB9CisgICAgY29uc3RleHByIGZsb2F0IGJhc2VE
YXJrQ29sb3JMdW1pbmFuY2UgeyAwLjAxNDQ0Mzg0NGYgfTsgLy8gTHVtaW5hbmNlIG9mIFNSR0JB
PHVpbnQ4X3Q+IHsgMHgyMCwgMHgyMCwgMHgyMCwgMHhGRiB9CisgICAgY29uc3RleHByIGZsb2F0
IGJhc2VMaWdodENvbG9yTHVtaW5hbmNlIHsgMC44MzA3N2YgfTsgLy8gTHVtaW5hbmNlIG9mIFNS
R0JBPHVpbnQ4X3Q+IHsgMHhFQiwgMHhFQiwgMHhFQiwgMHhGRiB9CiAKICAgICBlbnVtIE9wZXJh
dGlvbiB7IERhcmtlbiwgTGlnaHRlbiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHAJKHJldmlzaW9uIDI2Mzk5MykKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMzQsMzAgKzEzMzQs
MzAgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSQogewogICAgIHN3
aXRjaCAoY3NzVmFsdWVJZCkgewogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRMaW5rOgotICAgICAg
ICByZXR1cm4gb3B0aW9ucy5jb250YWlucyhTdHlsZUNvbG9yOjpPcHRpb25zOjpGb3JWaXNpdGVk
TGluaykgPyBTaW1wbGVDb2xvciB7IDB4RkY1NTFBOEIgfSA6IFNpbXBsZUNvbG9yIHsgMHhGRjAw
MDBFRSB9OworICAgICAgICByZXR1cm4gb3B0aW9ucy5jb250YWlucyhTdHlsZUNvbG9yOjpPcHRp
b25zOjpGb3JWaXNpdGVkTGluaykgPyBtYWtlU2ltcGxlQ29sb3IoMHg1NSwgMHgxQSwgMHg4Qikg
OiBtYWtlU2ltcGxlQ29sb3IoMHgwMCwgMHgwMCwgMHhFRSk7CiAgICAgY2FzZSBDU1NWYWx1ZVdl
YmtpdEFjdGl2ZWxpbms6CiAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZXRleHQ6Ci0gICAgICAgIHJl
dHVybiBTaW1wbGVDb2xvciB7IDB4RkZGRjAwMDAgfTsKKyAgICAgICAgcmV0dXJuIG1ha2VTaW1w
bGVDb2xvcigweEZGLCAweDAwLCAweDAwKTsKICAgICBjYXNlIENTU1ZhbHVlTGlua3RleHQ6Ci0g
ICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkYwMDAwRUUgfTsKKyAgICAgICAgcmV0dXJu
IG1ha2VTaW1wbGVDb2xvcigweDAwLCAweDAwLCAweEVFKTsKICAgICBjYXNlIENTU1ZhbHVlVmlz
aXRlZHRleHQ6Ci0gICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkY1NTFBOEIgfTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigweDU1LCAweDFBLCAweDhCKTsKICAgICBjYXNl
IENTU1ZhbHVlQWN0aXZlYm9yZGVyOgogICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRlOwogICAg
IGNhc2UgQ1NTVmFsdWVBY3RpdmVidXR0b250ZXh0OgogICAgICAgICByZXR1cm4gQ29sb3I6OmJs
YWNrOwogICAgIGNhc2UgQ1NTVmFsdWVBY3RpdmVjYXB0aW9uOgotICAgICAgICByZXR1cm4gU2lt
cGxlQ29sb3IgeyAweEZGQ0NDQ0NDIH07CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3Io
MHhDQywgMHhDQywgMHhDQyk7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcHdvcmtzcGFjZToKICAgICAg
ICAgcmV0dXJuIENvbG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1ZhbHVlQmFja2dyb3VuZDoKLSAg
ICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjYzNjNDRSB9OworICAgICAgICByZXR1cm4g
bWFrZVNpbXBsZUNvbG9yKDB4NjMsIDB4NjMsIDB4Q0UpOwogICAgIGNhc2UgQ1NTVmFsdWVCdXR0
b25mYWNlOgogICAgICAgICByZXR1cm4gQ29sb3I6OmxpZ2h0R3JheTsKICAgICBjYXNlIENTU1Zh
bHVlQnV0dG9uaGlnaGxpZ2h0OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGRERE
REREIH07CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMHhERCwgMHhERCwgMHhERCk7
CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbnNoYWRvdzoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNv
bG9yIHsgMHhGRjg4ODg4OCB9OworICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDB4ODgs
IDB4ODgsIDB4ODgpOwogICAgIGNhc2UgQ1NTVmFsdWVCdXR0b250ZXh0OgogICAgICAgICByZXR1
cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVDYXB0aW9udGV4dDoKQEAgLTEzNzEs
OSArMTM3MSw5IEBAIENvbG9yIFJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUkKICAg
ICBjYXNlIENTU1ZhbHVlRmllbGR0ZXh0OgogICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwog
ICAgIGNhc2UgQ1NTVmFsdWVHcmF5dGV4dDoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsg
MHhGRjgwODA4MCB9OworICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDB4ODAsIDB4ODAs
IDB4ODApOwogICAgIGNhc2UgQ1NTVmFsdWVIaWdobGlnaHQ6Ci0gICAgICAgIHJldHVybiBTaW1w
bGVDb2xvciB7IDB4RkZCNUQ1RkYgfTsKKyAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigw
eEI1LCAweEQ1LCAweEZGKTsKICAgICBjYXNlIENTU1ZhbHVlSGlnaGxpZ2h0dGV4dDoKICAgICAg
ICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBjYXNlIENTU1ZhbHVlSW5hY3RpdmVib3JkZXI6
CkBAIC0xMzgxLDkgKzEzODEsOSBAQCBDb2xvciBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoQ1NT
VmFsdWVJCiAgICAgY2FzZSBDU1NWYWx1ZUluYWN0aXZlY2FwdGlvbjoKICAgICAgICAgcmV0dXJu
IENvbG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1ZhbHVlSW5hY3RpdmVjYXB0aW9udGV4dDoKLSAg
ICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjdGN0Y3RiB9OworICAgICAgICByZXR1cm4g
bWFrZVNpbXBsZUNvbG9yKDB4N0YsIDB4N0YsIDB4N0YpOwogICAgIGNhc2UgQ1NTVmFsdWVJbmZv
YmFja2dyb3VuZDoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkZCRkNDNSB9Owor
ICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDB4RkIsIDB4RkMsIDB4QzUpOwogICAgIGNh
c2UgQ1NTVmFsdWVJbmZvdGV4dDoKICAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBj
YXNlIENTU1ZhbHVlTWVudToKQEAgLTEzOTUsMTkgKzEzOTUsMTkgQEAgQ29sb3IgUmVuZGVyVGhl
bWU6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSQogICAgIGNhc2UgQ1NTVmFsdWVUZXh0OgogICAgICAg
ICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVUaHJlZWRkYXJrc2hhZG93
OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGNjY2NjY2IH07CisgICAgICAgIHJl
dHVybiBtYWtlU2ltcGxlQ29sb3IoMHg2NiwgMHg2NiwgMHg2Nik7CiAgICAgY2FzZSBDU1NWYWx1
ZVRocmVlZGZhY2U6CiAgICAgICAgIHJldHVybiBDb2xvcjo6bGlnaHRHcmF5OwogICAgIGNhc2Ug
Q1NTVmFsdWVUaHJlZWRoaWdobGlnaHQ6Ci0gICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4
RkZEREREREQgfTsKKyAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigweERELCAweERELCAw
eEREKTsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkbGlnaHRzaGFkb3c6CiAgICAgICAgIHJldHVy
biBDb2xvcjo6bGlnaHRHcmF5OwogICAgIGNhc2UgQ1NTVmFsdWVUaHJlZWRzaGFkb3c6Ci0gICAg
ICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkY4ODg4ODggfTsKKyAgICAgICAgcmV0dXJuIG1h
a2VTaW1wbGVDb2xvcigweDg4LCAweDg4LCAweDg4KTsKICAgICBjYXNlIENTU1ZhbHVlV2luZG93
OgogICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRlOwogICAgIGNhc2UgQ1NTVmFsdWVXaW5kb3dm
cmFtZToKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkNDQ0NDQyB9OworICAgICAg
ICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDB4Q0MsIDB4Q0MsIDB4Q0MpOwogICAgIGNhc2UgQ1NT
VmFsdWVXaW5kb3d0ZXh0OgogICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGRlZmF1
bHQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVBZHdhaXRhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVBZHdh
aXRhLmNwcAkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQWR3YWl0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSwxMCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgaW50IHRleHRGaWVsZEJvcmRlclNp
emUgPSAxOwotc3RhdGljIGNvbnN0IENvbG9yIHRleHRGaWVsZEJvcmRlckNvbG9yID0gbWFrZVNp
bXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOwotc3RhdGljIGNvbnN0IENvbG9yIHRleHRGaWVsZEJv
cmRlckRpc2FibGVkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjEzLCAyMDgsIDIwNCk7Ci1zdGF0
aWMgY29uc3QgQ29sb3IgdGV4dEZpZWxkQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDI1NSwgMjU1LCAyNTUpOwotc3RhdGljIGNvbnN0IENvbG9yIHRleHRGaWVsZEJhY2tncm91bmRE
aXNhYmxlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIHRleHRGaWVsZEJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNSwg
MTk5LCAxOTQpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRleHRGaWVsZEJvcmRlckRpc2FibGVk
Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjEzLCAyMDgsIDIwNCk7CitzdGF0aWMgY29uc3RleHBy
IGF1dG8gdGV4dEZpZWxkQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1
LCAyNTUpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRleHRGaWVsZEJhY2tncm91bmREaXNhYmxl
ZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOwogc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG1lbnVMaXN0QnV0dG9uQXJyb3dTaXplID0gMTY7CiBzdGF0aWMgY29uc3QgaW50IG1l
bnVMaXN0QnV0dG9uRm9jdXNPZmZzZXQgPSAtMzsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtZW51
TGlzdEJ1dHRvblBhZGRpbmcgPSA1OwpAQCAtNTcsMjMgKzU3LDIzIEBAIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBwcm9ncmVzc0FjdGl2aXR5QmwKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwcm9ncmVz
c0FuaW1hdGlvbkZyYW1lQ291bnQgPSA3NTsKIHN0YXRpYyBjb25zdCBTZWNvbmRzIHByb2dyZXNz
QW5pbWF0aW9uRnJhbWVSYXRlID0gMzNfbXM7IC8vIDMwZnBzLgogc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHByb2dyZXNzQmFyU2l6ZSA9IDY7Ci1zdGF0aWMgY29uc3QgQ29sb3IgcHJvZ3Jlc3NCYXJC
b3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDUsIDE5OSwgMTk0KTsKLXN0YXRpYyBjb25z
dCBDb2xvciBwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMjUs
IDIyMiwgMjE5KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBwcm9ncmVzc0JhckJvcmRlckNvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOworc3RhdGljIGNvbnN0ZXhwciBhdXRv
IHByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyNSwgMjIyLCAy
MTkpOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNsaWRlclRyYWNrU2l6ZSA9IDY7CiBzdGF0aWMg
Y29uc3QgaW50IHNsaWRlclRyYWNrQm9yZGVyU2l6ZSA9IDE7Ci1zdGF0aWMgY29uc3QgQ29sb3Ig
c2xpZGVyVHJhY2tCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDUsIDE5OSwgMTk0KTsK
LXN0YXRpYyBjb25zdCBDb2xvciBzbGlkZXJUcmFja0JhY2tncm91bmRDb2xvciA9IG1ha2VTaW1w
bGVDb2xvcigyMjUsIDIyMiwgMjE5KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJUcmFj
a0JvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIHNsaWRlclRyYWNrQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDIyNSwgMjIyLCAyMTkpOwogc3RhdGljIGNvbnN0IGludCBzbGlkZXJUcmFja0ZvY3VzT2Zmc2V0
ID0gMjsKIHN0YXRpYyBjb25zdCBpbnQgc2xpZGVyVGh1bWJTaXplID0gMjA7CiBzdGF0aWMgY29u
c3QgaW50IHNsaWRlclRodW1iQm9yZGVyU2l6ZSA9IDE7Ci1zdGF0aWMgY29uc3QgQ29sb3Igc2xp
ZGVyVGh1bWJCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDUsIDE5OSwgMTk0KTsKLXN0
YXRpYyBjb25zdCBDb2xvciBzbGlkZXJUaHVtYkJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVD
b2xvcigyNDQsIDI0MiwgMjQxKTsKLXN0YXRpYyBjb25zdCBDb2xvciBzbGlkZXJUaHVtYkJhY2tn
cm91bmRIb3ZlcmVkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjQ4LCAyNDgsIDI0Nyk7Ci1zdGF0
aWMgY29uc3QgQ29sb3Igc2xpZGVyVGh1bWJCYWNrZ3JvdW5kRGlzYWJsZWRDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigyNDQsIDI0MiwgMjQxKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJU
aHVtYkJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOworc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIHNsaWRlclRodW1iQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNv
bG9yKDI0NCwgMjQyLCAyNDEpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlclRodW1iQmFj
a2dyb3VuZEhvdmVyZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDgsIDI0OCwgMjQ3KTsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJUaHVtYkJhY2tncm91bmREaXNhYmxlZENvbG9yID0g
bWFrZVNpbXBsZUNvbG9yKDI0NCwgMjQyLCAyNDEpOwogI2lmIEVOQUJMRShWSURFTykKLXN0YXRp
YyBjb25zdCBDb2xvciBtZWRpYVNsaWRlclRyYWNrQmFja2dyb3VuZGNvbG9yID0gbWFrZVNpbXBs
ZUNvbG9yKDc3LCA3NywgNzcpOwotc3RhdGljIGNvbnN0IENvbG9yIG1lZGlhU2xpZGVyVHJhY2tC
dWZmZXJlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDE3MywgMTczLCAxNzMpOwotc3RhdGljIGNv
bnN0IENvbG9yIG1lZGlhU2xpZGVyVHJhY2tBY3RpdmVDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigy
NTIsIDI1MiwgMjUyKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtZWRpYVNsaWRlclRyYWNrQmFj
a2dyb3VuZGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDc3LCA3NywgNzcpOworc3RhdGljIGNvbnN0
ZXhwciBhdXRvIG1lZGlhU2xpZGVyVHJhY2tCdWZmZXJlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDE3MywgMTczLCAxNzMpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1lZGlhU2xpZGVyVHJhY2tB
Y3RpdmVDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTIsIDI1MiwgMjUyKTsKICNlbmRpZgogCiAj
aWYgIVBMQVRGT1JNKEdUSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5oCShyZXZpc2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDcgKzEyMSw3IEBAIHByaXZh
dGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgQ29sb3IgcGxhdGZv
cm1UYXBIaWdobGlnaHRDb2xvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNpbXBsZUNvbG9y
IHsgMHg0RDFBMUExQSB9OyB9CisgICAgQ29sb3IgcGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigweDFBLCAweDFBLCAweDFB
LCAweDREKTsgfQogI2VuZGlmCiAKICAgICBib29sIHNob3VsZEhhdmVTcGluQnV0dG9uKGNvbnN0
IEhUTUxJbnB1dEVsZW1lbnQmKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0JKHJldmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAt
OTE2LDEwICs5MTYsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihj
bwogCiAgICAgY29uc3QgZmxvYXQgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiA9IHJlY3QueSgp
ICsgdmVydGljYWxPZmZzZXQ7CiAgICAgYXV0byBzdHJva2VHcmFkaWVudCA9IEdyYWRpZW50Ojpj
cmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNh
bFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJp
bmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7Ci0gICAgc3Ryb2tlR3JhZGll
bnQtPmFkZENvbG9yU3RvcCgwLjAsIG1ha2VTaW1wbGVDb2xvcigweDhkLCAweDhkLCAweDhkKSk7
Ci0gICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ1LCBtYWtlU2ltcGxlQ29sb3Io
MHhlZSwgMHhlZSwgMHhlZSkpOwotICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41
NSwgbWFrZVNpbXBsZUNvbG9yKDB4ZWUsIDB4ZWUsIDB4ZWUpKTsKLSAgICBzdHJva2VHcmFkaWVu
dC0+YWRkQ29sb3JTdG9wKDEuMCwgbWFrZVNpbXBsZUNvbG9yKDB4OGQsIDB4OGQsIDB4OGQpKTsK
KyAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgbWFrZVNpbXBsZUNvbG9yKDB4
OEQsIDB4OEQsIDB4OEQpKTsKKyAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUs
IG1ha2VTaW1wbGVDb2xvcigweEVFLCAweEVFLCAweEVFKSk7CisgICAgc3Ryb2tlR3JhZGllbnQt
PmFkZENvbG9yU3RvcCgwLjU1LCBtYWtlU2ltcGxlQ29sb3IoMHhFRSwgMHhFRSwgMHhFRSkpOwor
ICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBtYWtlU2ltcGxlQ29sb3IoMHg4
RCwgMHg4RCwgMHg4RCkpOwogICAgIGNvbnRleHQuc2V0U3Ryb2tlR3JhZGllbnQoV1RGTW92ZShz
dHJva2VHcmFkaWVudCkpOwogCiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNr
KTsKQEAgLTEzODIsMTAgKzEzODIsMTAgQEAgQ29sb3IgUmVuZGVyVGhlbWVJT1M6OnN5c3RlbUNv
bG9yKENTU1ZhbAogY29uc3QgQ0dTaXplIGF0dGFjaG1lbnRTaXplID0geyAxNjAsIDExOSB9Owog
CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRCb3JkZXJSYWRpdXMgPSAxNjsKLWNvbnN0ZXhwciBT
aW1wbGVDb2xvciBhdHRhY2htZW50Qm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA0LCAy
MDQsIDIwNCk7Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50Qm9yZGVyQ29sb3IgPSBtYWtlU2lt
cGxlQ29sb3IoMjA0LCAyMDQsIDIwNCk7CiBzdGF0aWMgQ0dGbG9hdCBhdHRhY2htZW50Qm9yZGVy
VGhpY2tuZXNzID0gMTsKIAotY29uc3RleHByIFNpbXBsZUNvbG9yIGF0dGFjaG1lbnRQcm9ncmVz
c0NvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyMiwgMjIyLCAyMjIpOworY29uc3RleHByIGF1dG8g
YXR0YWNobWVudFByb2dyZXNzQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjIyLCAyMjIsIDIyMik7
CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQcm9ncmVzc0JvcmRlclRoaWNrbmVzcyA9IDM7CiAK
IGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFByb2dyZXNzU2l6ZSA9IDM2OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMjYzOTc4KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC03MzcsMTEgKzczNywxMSBAQCBDb2xvciBSZW5kZXJUaGVtZU1hYzo6c3lzdGVtQ29s
b3IoQ1NTVmFsCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVUaHJlZWRmYWNlOgogICAgICAgICAgICAg
Ly8gV2Ugc2VsZWN0ZWQgdGhpcyB2YWx1ZSBpbnN0ZWFkIG9mIFtOU0NvbG9yIGNvbnRyb2xDb2xv
cl0gdG8gYXZvaWQgd2Vic2l0ZSBpbmNvbXBhdGliaWxpdGllcy4KICAgICAgICAgICAgIC8vIFdl
IG1heSB3YW50IHRvIGNvbnNpZGVyIGNoYW5naW5nIHRvIFtOU0NvbG9yIGNvbnRyb2xDb2xvcl0g
c29tZSBkYXkuCi0gICAgICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGQzBDMEMwIH07
CisgICAgICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDB4QzAsIDB4QzAsIDB4QzApOwog
CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVJbmZvYmFja2dyb3VuZDoKICAgICAgICAgICAgIC8vIE5v
IGNvcnJlc3BvbmRpbmcgTlNDb2xvciBmb3IgdGhpcyBzbyB3ZSB1c2UgYSBoYXJkIGNvZGVkIHZh
bHVlLgotICAgICAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkZCRkNDNSB9OworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigweEZCLCAweEZDLCAweEM1KTsKIAogICAg
ICAgICBjYXNlIENTU1ZhbHVlTWVudToKICAgICAgICAgICAgIHJldHVybiBtZW51QmFja2dyb3Vu
ZENvbG9yKCk7CkBAIC03NTAsMzAgKzc1MCwzMCBAQCBDb2xvciBSZW5kZXJUaGVtZU1hYzo6c3lz
dGVtQ29sb3IoQ1NTVmFsCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVBY3RpdmVib3JkZXI6CiAgICAg
ICAgICAgICAvLyBIYXJkY29kZWQgdG8gYXZvaWQgZXhwb3NpbmcgYSB1c2VyIGFwcGVhcmFuY2Ug
cHJlZmVyZW5jZSB0byB0aGUgd2ViIGZvciBmaW5nZXJwcmludGluZy4KICAgICAgICAgICAgIGlm
IChsb2NhbEFwcGVhcmFuY2UudXNpbmdEYXJrQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAg
IHJldHVybiB7IFNpbXBsZUNvbG9yIHsgMHhGRjFBQTlGRiB9LCBDb2xvcjo6U2VtYW50aWMgfTsK
LSAgICAgICAgICAgIHJldHVybiB7IFNpbXBsZUNvbG9yIHsgMHhGRjAwNjdGNCB9LCBDb2xvcjo6
U2VtYW50aWMgfTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyBtYWtlU2ltcGxlQ29sb3IoMHgx
QSwgMHhBOSwgMHhGRiksIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAgICAgcmV0dXJuIHsg
bWFrZVNpbXBsZUNvbG9yKDB4MDAsIDB4NjcsIDB4RjQpLCBDb2xvcjo6U2VtYW50aWMgfTsKIAog
ICAgICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1Db250cm9sQWNjZW50OgogICAgICAgICAg
ICAgLy8gSGFyZGNvZGVkIHRvIGF2b2lkIGV4cG9zaW5nIGEgdXNlciBhcHBlYXJhbmNlIHByZWZl
cmVuY2UgdG8gdGhlIHdlYiBmb3IgZmluZ2VycHJpbnRpbmcuCiAgICAgICAgICAgICAvLyBTYW1l
IGNvbG9yIGluIGxpZ2h0IGFuZCBkYXJrIGFwcGVhcmFuY2VzLgotICAgICAgICAgICAgcmV0dXJu
IHsgU2ltcGxlQ29sb3IgeyAweEZGMDA3QUZGIH0sIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAg
ICAgICAgcmV0dXJuIHsgbWFrZVNpbXBsZUNvbG9yKDB4MDAsIDB4N0EsIDB4RkYpLCBDb2xvcjo6
U2VtYW50aWMgfTsKIAogICAgICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1TZWxlY3RlZENv
bnRlbnRCYWNrZ3JvdW5kOgogICAgICAgICAgICAgLy8gSGFyZGNvZGVkIHRvIGF2b2lkIGV4cG9z
aW5nIGEgdXNlciBhcHBlYXJhbmNlIHByZWZlcmVuY2UgdG8gdGhlIHdlYiBmb3IgZmluZ2VycHJp
bnRpbmcuCiAgICAgICAgICAgICBpZiAobG9jYWxBcHBlYXJhbmNlLnVzaW5nRGFya0FwcGVhcmFu
Y2UoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4RkYwMDU4RDAg
fSwgQ29sb3I6OlNlbWFudGljIH07Ci0gICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7
IDB4RkYwMDYzRTEgfSwgQ29sb3I6OlNlbWFudGljIH07CisgICAgICAgICAgICAgICAgcmV0dXJu
IHsgbWFrZVNpbXBsZUNvbG9yKDB4MDAsIDB4NTgsIDB4RDApLCBDb2xvcjo6U2VtYW50aWMgfTsK
KyAgICAgICAgICAgIHJldHVybiB7IG1ha2VTaW1wbGVDb2xvcigweDAwLCAweDYzLCAweEUxKSwg
Q29sb3I6OlNlbWFudGljIH07CiAKICAgICAgICAgY2FzZSBDU1NWYWx1ZUhpZ2hsaWdodDoKICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU2VsZWN0ZWRUZXh0QmFja2dyb3VuZDoKICAg
ICAgICAgICAgIC8vIEhhcmRjb2RlZCB0byBhdm9pZCBleHBvc2luZyBhIHVzZXIgYXBwZWFyYW5j
ZSBwcmVmZXJlbmNlIHRvIHRoZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5nLgogICAgICAgICAgICAg
aWYgKGxvY2FsQXBwZWFyYW5jZS51c2luZ0RhcmtBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAweENDM0Y2MzhCIH0sIENvbG9yOjpTZW1hbnRpYyB9
OwotICAgICAgICAgICAgcmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAweDk5ODBCQ0ZFIH0sIENvbG9y
OjpTZW1hbnRpYyB9OworICAgICAgICAgICAgICAgIHJldHVybiB7IG1ha2VTaW1wbGVDb2xvcigw
eDNGLCAweDYzLCAweDhCLCAweENDKSwgQ29sb3I6OlNlbWFudGljIH07CisgICAgICAgICAgICBy
ZXR1cm4geyBtYWtlU2ltcGxlQ29sb3IoMHg4MCwgMHhCQywgMHhGRSwgMHg5OSksIENvbG9yOjpT
ZW1hbnRpYyB9OwogCiAjaWYgIUhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCiAgICAgICAgIGNh
c2UgQ1NTVmFsdWVBcHBsZVN5c3RlbUNvbnRhaW5lckJvcmRlcjoKLSAgICAgICAgICAgIHJldHVy
biBTaW1wbGVDb2xvciB7IDB4RkZDNUM1QzUgfTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlU2lt
cGxlQ29sb3IoMHhDNSwgMHhDNSwgMHhDNSk7CiAjZW5kaWYKIAogICAgICAgICBjYXNlIENTU1Zh
bHVlQXBwbGVTeXN0ZW1FdmVuQWx0ZXJuYXRpbmdDb250ZW50QmFja2dyb3VuZDogewpAQCAtMjQx
Myw4ICsyNDEzLDggQEAgY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50SWNvblNlbGVjdGlvbkJvcgog
Y29uc3QgQ0dGbG9hdCBhdHRhY2htZW50SWNvbkJhY2tncm91bmRSYWRpdXMgPSAzOwogY29uc3Qg
Q0dGbG9hdCBhdHRhY2htZW50SWNvblRvVGl0bGVNYXJnaW4gPSAyOwogCi1jb25zdGV4cHIgU2lt
cGxlQ29sb3IgYXR0YWNobWVudEljb25CYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3Io
MCwgMCwgMCwgMzApOwotY29uc3RleHByIFNpbXBsZUNvbG9yIGF0dGFjaG1lbnRJY29uQm9yZGVy
Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSwgMTI1KTsKK2NvbnN0ZXhwciBh
dXRvIGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAs
IDAsIDMwKTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRJY29uQm9yZGVyQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSwgMTI1KTsKIAogY29uc3QgQ0dGbG9hdCBhdHRhY2ht
ZW50VGl0bGVGb250U2l6ZSA9IDEyOwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50VGl0bGVCYWNr
Z3JvdW5kUmFkaXVzID0gMzsKQEAgLTI0MjIsMjMgKzI0MjIsMjMgQEAgY29uc3QgQ0dGbG9hdCBh
dHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kUAogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50VGl0bGVN
YXhpbXVtV2lkdGggPSAxMDAgLSAoYXR0YWNobWVudFRpdGxlQmFja2dyb3VuZFBhZGRpbmcgKiAy
KTsKIGNvbnN0IENGSW5kZXggYXR0YWNobWVudFRpdGxlTWF4aW11bUxpbmVDb3VudCA9IDI7CiAK
LWNvbnN0ZXhwciBTaW1wbGVDb2xvciBhdHRhY2htZW50VGl0bGVJbmFjdGl2ZUJhY2tncm91bmRD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDQsIDIwNCwgMjA0LCAyNTUpOwotY29uc3RleHByIFNp
bXBsZUNvbG9yIGF0dGFjaG1lbnRUaXRsZUluYWN0aXZlVGV4dENvbG9yID0gbWFrZVNpbXBsZUNv
bG9yKDEwMCwgMTAwLCAxMDAsIDI1NSk7Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50VGl0bGVJ
bmFjdGl2ZUJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDQsIDIwNCwgMjA0LCAy
NTUpOworY29uc3RleHByIGF1dG8gYXR0YWNobWVudFRpdGxlSW5hY3RpdmVUZXh0Q29sb3IgPSBt
YWtlU2ltcGxlQ29sb3IoMTAwLCAxMDAsIDEwMCwgMjU1KTsKIAogY29uc3QgQ0dGbG9hdCBhdHRh
Y2htZW50U3VidGl0bGVGb250U2l6ZSA9IDEwOwogY29uc3QgaW50IGF0dGFjaG1lbnRTdWJ0aXRs
ZVdpZHRoSW5jcmVtZW50ID0gMTA7Ci1jb25zdGV4cHIgU2ltcGxlQ29sb3IgYXR0YWNobWVudFN1
YnRpdGxlVGV4dENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDgyLCAxNDUsIDIxNCwgMjU1KTsKK2Nv
bnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRTdWJ0aXRsZVRleHRDb2xvciA9IG1ha2VTaW1wbGVDb2xv
cig4MiwgMTQ1LCAyMTQsIDI1NSk7CiAKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFByb2dyZXNz
QmFyV2lkdGggPSAzMDsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFByb2dyZXNzQmFySGVpZ2h0
ID0gNTsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFByb2dyZXNzQmFyT2Zmc2V0ID0gLTk7CiBj
b25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQcm9ncmVzc0JhckJvcmRlcldpZHRoID0gMTsKLWNvbnN0
ZXhwciBTaW1wbGVDb2xvciBhdHRhY2htZW50UHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3IgPSBt
YWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgODkpOwotY29uc3RleHByIFNpbXBsZUNvbG9yIGF0dGFj
aG1lbnRQcm9ncmVzc0JhckZpbGxDb2xvciA9IENvbG9yOjp3aGl0ZTsKLWNvbnN0ZXhwciBTaW1w
bGVDb2xvciBhdHRhY2htZW50UHJvZ3Jlc3NCYXJCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xv
cigwLCAwLCAwLCAxMjgpOworY29uc3RleHByIGF1dG8gYXR0YWNobWVudFByb2dyZXNzQmFyQmFj
a2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDg5KTsKK2NvbnN0ZXhwciBh
dXRvIGF0dGFjaG1lbnRQcm9ncmVzc0JhckZpbGxDb2xvciA9IENvbG9yOjp3aGl0ZTsKK2NvbnN0
ZXhwciBhdXRvIGF0dGFjaG1lbnRQcm9ncmVzc0JhckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNv
bG9yKDAsIDAsIDAsIDEyOCk7CiAKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFBsYWNlaG9sZGVy
Qm9yZGVyUmFkaXVzID0gNTsKLWNvbnN0ZXhwciBTaW1wbGVDb2xvciBhdHRhY2htZW50UGxhY2Vo
b2xkZXJCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCA1Nik7Citjb25zdGV4
cHIgYXV0byBhdHRhY2htZW50UGxhY2Vob2xkZXJCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xv
cigwLCAwLCAwLCA1Nik7CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQbGFjZWhvbGRlckJvcmRl
cldpZHRoID0gMjsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFBsYWNlaG9sZGVyQm9yZGVyRGFz
aExlbmd0aCA9IDY7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403651</attachid>
            <date>2020-07-06 18:36:50 -0700</date>
            <delta_ts>2020-07-06 19:31:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213981-20200706183649.patch</filename>
            <type>text/plain</type>
            <size>57971</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzk5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzNSBAQAorMjAyMC0wNy0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGFydCAyIG9mIFNpbXBsZUNvbG9y
IGFuZCBTUkdCQTx1aW50OF90PiBhcmUgZXNzZW50aWFsbHkgdGhlIHNhbWUgLSBsZXQncyBjb252
ZXJnZSB0aGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTM5ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAtIFJlcGxhY2VzIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIFNpbXBsZUNvbG9yIGJhc2Vk
IG9uIGFuIEFSR0IgdWludDMyX3Qgd2l0aCBTUkdCQTx1aW50OF90Pi4KKyAgICAgICAgLSBSZW1v
dmVzIFNpbXBsZUNvbG9yIGNvbnN0cnVjdG9yIHRha2luZyBhIHVpbnQzMl90LiBDYWxsZXJzIHRo
YXQgc3RpbGwgbmVlZCB0byBjb252ZXJ0IGZyb20gQVJHQgorICAgICAgICAgIG5vdyBkbyBtYWtl
U2ltcGxlQ29sb3IoYXNTUkdCQShQYWNrZWQ6OkFSR0IgeyB2YWx1ZSB9KSkuCisgICAgICAgIC0g
UmVtb3ZlcyB2YWx1ZSgpIGFuZCB2YWx1ZUFzQVJHQigpIG1lbWJlciBmdW5jdGlvbnMgZnJvbSBT
aW1wbGVDb2xvci4gQ2FsbGVycyB0aGF0IG5lZWQgYSBwYWNrZWQKKyAgICAgICAgICByZXByZXNl
bnRhdGlvbiBub3cgZG8gUGFja2VkOjpBUkdCIHsgc2ltcGxlQ29sb3IuYXNTUkdCQTx1aW50OF90
PigpIH0udmFsdWUuCisKKyAgICAgICAgKiBjc3MvU3R5bGVDb2xvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKToKKyAgICAgICAgVXNlIGFzU1JH
QkEoUGFja2VkOjpBUkdCey4uLn0pIHRvIGNvbnN0dWN0IHRoZSBjb2xvci4KKworICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZp
bmlzaFBhcnNpbmdOYW1lZENvbG9yKToKKyAgICAgICAgVXNlIGFzU1JHQkEoUGFja2VkOjpBUkdC
ey4uLn0pIChvciBpbiBvbmUgY2FzZSwgUGFja2VkOjpSR0JBKSB0byBjb25zdHVjdCB0aGUgY29s
b3IuCisgICAgICAgIFRoZXNlIGNhbiBhbG1vc3QgY2VydGFpbmx5IGJlIHNpbXBsaWZpZWQsIGJ1
dCBpbiB0aGUgaW50ZXJlc3Qgb2Yga2VlcGluZyB0aGluZ3Mgc21hbGxpc2gsCisgICAgICAgIEkg
aGF2ZSBsZWZ0IHRoYXQgZm9yIGEgc3Vic2VxdWVudCBjaGFuZ2UuCisKKyAgICAgICAgKiBlZGl0
aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRv
L21ha2VTaW1wbGVDb2xvci4KKworICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92
ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIG1ha2VTaW1wbGVDb2xvci4K
KworICAgICAgICAoV2ViQ29yZTo6SGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm86Okhpc3Rvcmlj
TWVtb3J5Q2F0ZWdvcnlJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcmljUmVzb3VyY2VV
c2FnZURhdGE6Okhpc3RvcmljUmVzb3VyY2VVc2FnZURhdGEpOgorICAgICAgICBTd2l0Y2ggdG8g
dXNpbmcgYXV0by9tYWtlU2ltcGxlQ29sb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hZHdhaXRh
L1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHA6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRv
L21ha2VTaW1wbGVDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAtIFN3aXRj
aCB0byB1c2luZyBhdXRvL21ha2VTaW1wbGVDb2xvciBmb3IgbmFtZWQgY29sb3JzLgorICAgICAg
ICAtIFN3aXRjaCB0byBzdG9yaW5nL2VuY29kaW5nIHRoZSBpbmxpbmUgU2ltcGxlQ29sb3IgYXMg
YSBQYWNrZWQ6OlJHQkEgdmFsdWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ckJsZW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kKToKKyAgICAgICAgVXBkYXRl
IGZvciBuZXcgbmFtZSBvZiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWNrZWQ6OlJH
QkE6OlJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6UGFja2VkOjpBUkdCOjpBUkdCKToKKyAgICAg
ICAgKFdlYkNvcmU6OmFzU1JHQkEpOgorICAgICAgICBSZW5hbWUgV2ViQ29yZTo6QVJHQiB0byBX
ZWJDb3JlOjpQYWNrZWQ6OkFSR0IuIEFkZHMgY29tcGFuaW9uLCBXZWJDb3JlOjpQYWNrZWQ6OlJH
QkEuIEFuZCBhZGRzIGNvbnN0cnVjdG9ycworICAgICAgICB3aGljaCBtYWtlIGEgcGFja2VkIHR5
cGUgZnJvbSBhbiBTUkdCQTx1aW50OF90Pi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50Qnl0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50RmxvYXQpOgorICAgICAgICBF
eHRyYWN0IG91dCBoZWxwZXIgZnVuY3Rpb25zIHdoaWNoIGp1c3QgZG8gdGhlIGNsYW1waW5nIGZv
ciB0aGUgdHlwZS4gCisKKyAgICAgICAgKFdlYkNvcmU6OmNsYW1wVG9Db21wb25lbnRCeXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50RmxvYXRzKToKKyAgICAgICAgUmVu
YW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHRoYXQganVzdCBjbGFtcCB0byB1c2UgImNsYW1wIiBw
cmVmaXggcmF0aGVyIHRoYW4gImNvbnZlcnQiLiBNYWtlIHVzZQorICAgICAgICBvZiBleHRyYWN0
ZWQgaGVscGVycy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0
b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6YmxlbmRQaXhlbCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6cGl4ZWxWYWx1ZSBjb25zdCk6
CisgICAgICAgIFVwZGF0ZSB1c2luZyBuZXcgcGFja2VkIGNvbG9yIHR5cGVzIGFuZCBmdW50aW9u
cy4gCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVDb2xvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6OlNpbXBsZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUNvbG9yOjphbHBoYUNvbXBvbmVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVDb2xvcjo6YWxwaGFDb21wb25lbnRBc0Zsb2F0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNpbXBsZUNvbG9yOjppc09wYXF1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVDb2xvcjo6aXNWaXNpYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNvbG9y
Ojpjb2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVDb2xvcjo6
aW52ZXJ0ZWRDb2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVD
b2xvcjo6YXNTUkdCQSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVDb2xvcjo6Z2V0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VTaW1wbGVDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVDb2xvcjo6dmFsdWVBc0FSR0IgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6OnZhbHVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNpbXBsZUNvbG9yOjpyZWRDb21wb25lbnQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6OmdyZWVuQ29tcG9uZW50IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNvbG9yOjpibHVlQ29tcG9uZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgLSBSZW1vdmVzIGNvbnN0cnVjdG9yIHRha2luZyBhbiBBUkdCIHVp
bnQzMl90LgorICAgICAgICAtIFJlbW92ZXMgdmFsdWVBc0FSR0IoKS92YWx1ZSgpIGZ1bmN0aW9u
cyAoY2FuIHVzZSBQYWNrZWQ6OkFSR0IgZGlyZWN0bHkgaWYgbmVlZGVkKS4KKyAgICAgICAgLSBT
d2l0Y2hlcyBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiB0byBTUkdCQTx1aW50OF90Pi4KKyAgICAg
ICAgLSBTdHJlYW1saW5lIG1ha2VTaW1wbGVDb2xvciBmdW5jdGlvbnMgdG8gdXNlIHNoYXJlZCBo
ZWxwZXJzIGZyb20gQ29sb3JVdGlsaXRpZXMuaAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpuc0NvbG9yKToKKyAgICAgICAgVXNlIFBhY2tlZDo6UkdCQSB0byBleHRyYWN0IHVpbnQz
Ml90IGZvciBxdWljayBsb29rdXAgb2YgdHJhbnNwYXJlbnQvd2hpdGUvYmxhY2sgU2ltcGxlQ29s
b3JzLiBEZXNwaXRlIHRoZQorICAgICAgICBsZW5ndGggb2YgdGhlIGNhbGxzLCBTaW1wbGVDb2xv
ciBpcyBmdWxseSBjb25zdGV4cHIsIHNvIHRoZXNlIGFjdHVhbGx5IGNvbGxhcHNlIGRvd24gdG8g
dGhlIHVpbnQzMl90IHJlcHJlc2VudGF0aW9uCisgICAgICAgIGF0IGNvbXBpbGUgdGltZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdEb3RzRm9yRG9jdW1lbnRN
YXJrZXIpOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgYXV0by9tYWtlU2ltcGxlQ29sb3IuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHREZXZpY2VzKToKKyAgICAgICAgU3dpdGNoIHRv
IHVzaW5nIG1ha2VTaW1wbGVDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2U6OmRyYXdCb3hlcyk6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRvL21ha2VT
aW1wbGVDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2Nr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0Jh
Y2tncm91bmQpOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgbWFrZVNpbXBsZUNvbG9yLgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmNhbGN1bGF0ZUJvcmRlclN0eWxlQ29sb3IpOgorICAgICAgICBVcGRhdGUg
Y29tbWVudCB0byB1c2UgcGVyLWNvbXBvbmVudCB2YWx1ZXMuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnN5c3Rl
bUNvbG9yIGNvbnN0KToKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIG1ha2VTaW1wbGVDb2xvci4K
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2FpdGEuY3BwOgorICAgICAgICBT
d2l0Y2ggdG8gdXNpbmcgYXV0by9tYWtlU2ltcGxlQ29sb3IuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWVJT1MuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcik6
CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRvL21ha2VTaW1wbGVDb2xvci4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lTWFjOjpzeXN0ZW1Db2xvciBjb25zdCk6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBh
dXRvL21ha2VTaW1wbGVDb2xvci4KKwogMjAyMC0wNy0wNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogKHIyNjM5NzcpOiBbIGlPUyBEZWJ1ZyBX
SzIgXSAzNiBmYXN0IGZvcm0gYW5kIHdlYi1wbGF0Zm9ybSB0ZXN0IGNvbnNpc3RlbnRseSBjcmFz
aGluZwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQ29sb3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUNvbG9yLmNwcAkocmV2aXNpb24gMjYzOTc4KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MSw3ICs0MSw3IEBAIENvbG9yIFN0eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdvcmQoQ1NTVmEKIHsK
ICAgICBpZiAoY29uc3QgY2hhciogdmFsdWVOYW1lID0gZ2V0VmFsdWVOYW1lKGtleXdvcmQpKSB7
CiAgICAgICAgIGlmIChjb25zdCBOYW1lZENvbG9yKiBuYW1lZENvbG9yID0gZmluZENvbG9yKHZh
bHVlTmFtZSwgc3RybGVuKHZhbHVlTmFtZSkpKQotICAgICAgICAgICAgcmV0dXJuIFNpbXBsZUNv
bG9yIHsgbmFtZWRDb2xvci0+QVJHQlZhbHVlIH07CisgICAgICAgICAgICByZXR1cm4gbWFrZVNp
bXBsZUNvbG9yKGFzU1JHQkEoUGFja2VkOjpBUkdCIHsgbmFtZWRDb2xvci0+QVJHQlZhbHVlIH0p
KTsKICAgICB9CiAKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnN5c3RlbUNv
bG9yKGtleXdvcmQsIG9wdGlvbnMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJGYXN0UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MTQsMjEgKzQxNCwyOCBAQCBzdGF0aWMgT3B0aW9uYWw8U2ltcGxlQ29sb3I+IGZpbmlz
aFBhcnNpCiAgICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICBjYXNlIDM6CiAgICAgICAgIC8vICNh
YmMgY29udmVydHMgdG8gI2FhYmJjYwotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZG
MDAwMDAwCisgICAgICAgIC8vIEZJWE1FOiBSZXBsYWNlIGNvbnZlcnNpb24gdG8gUGFja2VkOjpB
UkdCIHdpdGggc2ltcGxlciBiaXQgbWF0aCB0byBjb25zdHJ1Y3QKKyAgICAgICAgLy8gdGhlIFNS
R0JBPHVpbnQ4X3Q+IGRpcmVjdGx5LgorICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKGFz
U1JHQkEoUGFja2VkOjpBUkdCIHsKKyAgICAgICAgICAgICAgIDB4RkYwMDAwMDAKICAgICAgICAg
ICAgIHwgKHZhbHVlICYgMHhGMDApIDw8IDEyIHwgKHZhbHVlICYgMHhGMDApIDw8IDgKICAgICAg
ICAgICAgIHwgKHZhbHVlICYgMHhGMCkgPDwgOCB8ICh2YWx1ZSAmIDB4RjApIDw8IDQKLSAgICAg
ICAgICAgIHwgKHZhbHVlICYgMHhGKSA8PCA0IHwgKHZhbHVlICYgMHhGKSB9OworICAgICAgICAg
ICAgfCAodmFsdWUgJiAweEYpIDw8IDQgfCAodmFsdWUgJiAweEYpIH0pKTsKICAgICBjYXNlIDQ6
CiAgICAgICAgIC8vICNhYmNkIGNvbnZlcnRzIHRvIGRkYWFiYmNjIHNpbmNlIGFscGhhIGJ5dGVz
IGFyZSB0aGUgaGlnaCBieXRlcy4KLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgKHZhbHVl
ICYgMHhGKSA8PCAyOCB8ICh2YWx1ZSAmIDB4RikgPDwgMjQKKyAgICAgICAgLy8gRklYTUU6IFJl
cGxhY2UgY29udmVyc2lvbiB0byBQYWNrZWQ6OkFSR0Igd2l0aCBzaW1wbGVyIGJpdCBtYXRoIHRv
IGNvbnN0cnVjdAorICAgICAgICAvLyB0aGUgU1JHQkE8dWludDhfdD4gZGlyZWN0bHkuCisgICAg
ICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoYXNTUkdCQShQYWNrZWQ6OkFSR0IgeworICAgICAg
ICAgICAgICAodmFsdWUgJiAweEYpIDw8IDI4IHwgKHZhbHVlICYgMHhGKSA8PCAyNAogICAgICAg
ICAgICAgfCAodmFsdWUgJiAweEYwMDApIDw8IDggfCAodmFsdWUgJiAweEYwMDApIDw8IDQKICAg
ICAgICAgICAgIHwgKHZhbHVlICYgMHhGMDApIDw8IDQgfCAodmFsdWUgJiAweEYwMCkKLSAgICAg
ICAgICAgIHwgKHZhbHVlICYgMHhGMCkgfCAodmFsdWUgJiAweEYwKSA+PiA0IH07CisgICAgICAg
ICAgICB8ICh2YWx1ZSAmIDB4RjApIHwgKHZhbHVlICYgMHhGMCkgPj4gNCB9KSk7CiAgICAgY2Fz
ZSA2OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGMDAwMDAwIHwgdmFsdWUgfTsK
KyAgICAgICAgLy8gRklYTUU6IFJlcGxhY2UgY29udmVyc2lvbiB0byBQYWNrZWQ6OkFSR0Igd2l0
aCBzaW1wbGVyIGJpdCBtYXRoIHRvIGNvbnN0cnVjdAorICAgICAgICAvLyB0aGUgU1JHQkE8dWlu
dDhfdD4gZGlyZWN0bHkuCisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoYXNTUkdCQShQ
YWNrZWQ6OkFSR0IgeyAweEZGMDAwMDAwIHwgdmFsdWUgfSkpOwogICAgIGNhc2UgODoKLSAgICAg
ICAgLy8gV2UgcGFyc2VkIHRoZSB2YWx1ZXMgaW50byBSR0JBIG9yZGVyLCBidXQgd2Ugc3RvcmUg
dGhlbSBpbiBBUkdCIG9yZGVyLgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyB2YWx1ZSA8
PCAyNCB8IHZhbHVlID4+IDggfTsKKyAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcihhc1NS
R0JBKFBhY2tlZDo6UkdCQSB7IHZhbHVlIH0pKTsKICAgICB9CiAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIH0KQEAgLTUzMiw3ICs1MzksNyBAQCBzdGF0aWMgT3B0aW9uYWw8U2ltcGxlQ29sb3I+
IGZpbmlzaFBhcnNpCiAgICAgYXV0byBuYW1lZENvbG9yID0gZmluZENvbG9yKGJ1ZmZlciwgbGVu
Z3RoKTsKICAgICBpZiAoIW5hbWVkQ29sb3IpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0gICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgbmFtZWRDb2xvci0+QVJHQlZhbHVlIH07CisgICAg
cmV0dXJuIG1ha2VTaW1wbGVDb2xvcihhc1NSR0JBKFBhY2tlZDo6QVJHQiB7IG5hbWVkQ29sb3It
PkFSR0JWYWx1ZSB9KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
YXRpYyBPcHRpb25hbDxTaW1wbGVDb2xvcj4gcGFyc2VOYW1lZENvbG9ySW50ZXJuYWwoY29uc3Qg
Q2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRpb25IaWdobGlnaHQuaAkocmV2aXNpb24gMjYz
OTc4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCw5IEBAIHN0cnVjdCBDb21wb3NpdGlvbkhpZ2hsaWdo
dCB7CiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGF0aWMgY29uc3Rl
eHByIFNpbXBsZUNvbG9yIGRlZmF1bHRDb21wb3NpdGlvbkZpbGxDb2xvciB7IDB4M0NBRkMwRTMg
fTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdENvbXBvc2l0aW9uRmlsbENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDB4QUYsIDB4QzAsIDB4RTMsIDB4M0MpOwogI2Vsc2UKLSAgICBz
dGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIGRlZmF1bHRDb21wb3NpdGlvbkZpbGxDb2xvciB7
IDB4RkZFMURENTUgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdENvbXBvc2l0
aW9uRmlsbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDB4RTEsIDB4REQsIDB4NTUsIDB4RkYpOwog
I2VuZGlmCiAKICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCB7IDAgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2Eu
bW0JKHJldmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3Vy
Y2VVc2FnZU92ZXJsYXlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI4LDEyICsxMjgsMTIg
QEAgc3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ29sb3IoZmxvYXQgciwgZgogc3RydWN0IEhpc3Rv
cmljTWVtb3J5Q2F0ZWdvcnlJbmZvIHsKICAgICBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbygp
IHsgfSAvLyBOZWVkZWQgZm9yIHN0ZDo6YXJyYXkuCiAKLSAgICBIaXN0b3JpY01lbW9yeUNhdGVn
b3J5SW5mbyh1bnNpZ25lZCBjYXRlZ29yeSwgdWludDMyX3QgYXJnYiwgU3RyaW5nIG5hbWUsIGJv
b2wgc3ViY2F0ZWdvcnkgPSBmYWxzZSkKKyAgICBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyh1
bnNpZ25lZCBjYXRlZ29yeSwgU2ltcGxlQ29sb3Igc2ltcGxlQ29sb3IsIFN0cmluZyBuYW1lLCBi
b29sIHN1YmNhdGVnb3J5ID0gZmFsc2UpCiAgICAgICAgIDogbmFtZShXVEZNb3ZlKG5hbWUpKQor
ICAgICAgICAsIGNvbG9yKGNhY2hlZENHQ29sb3Ioc2ltcGxlQ29sb3IpKQogICAgICAgICAsIGlz
U3ViY2F0ZWdvcnkoc3ViY2F0ZWdvcnkpCiAgICAgICAgICwgdHlwZShjYXRlZ29yeSkKICAgICB7
Ci0gICAgICAgIGNvbG9yID0gY2FjaGVkQ0dDb2xvcihTaW1wbGVDb2xvciB7IGFyZ2IgfSk7CiAg
ICAgfQogCiAgICAgU3RyaW5nIG5hbWU7CkBAIC0xNjAsMTggKzE2MCwxOCBAQCBzdHJ1Y3QgSGlz
dG9yaWNSZXNvdXJjZVVzYWdlRGF0YSB7CiBIaXN0b3JpY1Jlc291cmNlVXNhZ2VEYXRhOjpIaXN0
b3JpY1Jlc291cmNlVXNhZ2VEYXRhKCkKIHsKICAgICAvLyBWTSB0YWcgY2F0ZWdvcmllcy4KLSAg
ICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpKU0pJVF0gPSBIaXN0b3JpY01lbW9yeUNhdGVn
b3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6SlNKSVQsIDB4RkZGRjYwRkYsICJKUyBKSVQiKTsKLSAg
ICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZV0gPSBIaXN0b3JpY01lbW9yeUNh
dGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6R2lnYWNhZ2UsIDB4RkY2NTRGRjAsICJHaWdhY2Fn
ZSIpOwotICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkltYWdlc10gPSBIaXN0b3JpY01l
bW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6SW1hZ2VzLCAweEZGRkZGRjAwLCAiSW1h
Z2VzIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6TGF5ZXJzXSA9IEhpc3Rvcmlj
TWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpMYXllcnMsIDB4RkYwMEZGRkYsICJM
YXllcnMiKTsKLSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpMaWJjTWFsbG9jXSA9IEhp
c3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpMaWJjTWFsbG9jLCAweEZG
MDBGRjAwLCAibGliYyBtYWxsb2MiKTsKLSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5Ojpi
bWFsbG9jXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpibWFs
bG9jLCAweEZGRkY2MDYwLCAiYm1hbGxvYyIpOwotICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdv
cnk6Oklzb0hlYXBdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6
Oklzb0hlYXAsIDB4RkY4MDlGNDAsICJJc29IZWFwIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlD
YXRlZ29yeTo6T3RoZXJdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdv
cnk6Ok90aGVyLCAweEZGQzBGRjAwLCAiT3RoZXIiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNh
dGVnb3J5OjpKU0pJVF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29y
eTo6SlNKSVQsIG1ha2VTaW1wbGVDb2xvcigweEZGLCAweDYwLCAweEZGLCAweEZGKSwgIkpTIEpJ
VCIpOworICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkdpZ2FjYWdlXSA9IEhpc3Rvcmlj
TWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZSwgbWFrZVNpbXBsZUNv
bG9yKDB4NjUsIDB4NEYsIDB4RjAsIDB4RkYpLCAiR2lnYWNhZ2UiKTsKKyAgICBjYXRlZ29yaWVz
W01lbW9yeUNhdGVnb3J5OjpJbWFnZXNdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVt
b3J5Q2F0ZWdvcnk6OkltYWdlcywgbWFrZVNpbXBsZUNvbG9yKDB4RkYsIDB4RkYsIDB4MDAsIDB4
RkYpLCAiSW1hZ2VzIik7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6TGF5ZXJzXSA9
IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpMYXllcnMsIG1ha2VT
aW1wbGVDb2xvcigweDAwLCAweEZGLCAweEZGLCAweEZGKSwgIkxheWVycyIpOworICAgIGNhdGVn
b3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkxpYmNNYWxsb2NdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29y
eUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkxpYmNNYWxsb2MsIG1ha2VTaW1wbGVDb2xvcigweDAwLCAw
eEZGLCAweDAwLCAweEZGKSwgImxpYmMgbWFsbG9jIik7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlD
YXRlZ29yeTo6Ym1hbGxvY10gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRl
Z29yeTo6Ym1hbGxvYywgbWFrZVNpbXBsZUNvbG9yKDB4RkYsIDB4NjAsIDB4NjAsIDB4RkYpLCAi
Ym1hbGxvYyIpOworICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6Oklzb0hlYXBdID0gSGlz
dG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6Oklzb0hlYXAsIG1ha2VTaW1w
bGVDb2xvcigweDgwLCAweDlGLCAweDQwLCAweEZGKSwgIklzb0hlYXAiKTsKKyAgICBjYXRlZ29y
aWVzW01lbW9yeUNhdGVnb3J5OjpPdGhlcl0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhN
ZW1vcnlDYXRlZ29yeTo6T3RoZXIsIG1ha2VTaW1wbGVDb2xvcigweEMwLCAweEZGLCAweDAwLCAw
eEZGKSwgIk90aGVyIik7CiAKICAgICAvLyBTdWIgY2F0ZWdvcmllcyAoZS5nIGJyZWFrZG93biBv
ZiBibWFsbG9jIHRhZy4pCi0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6R0NIZWFwXSA9
IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ0hlYXAsIDB4RkZB
MEEwRkYsICJHQyBoZWFwIiwgdHJ1ZSk7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6
R0NPd25lZF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6R0NP
d25lZCwgMHhGRkZGQzA2MCwgIkdDIG93bmVkIiwgdHJ1ZSk7CisgICAgY2F0ZWdvcmllc1tNZW1v
cnlDYXRlZ29yeTo6R0NIZWFwXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNh
dGVnb3J5OjpHQ0hlYXAsIG1ha2VTaW1wbGVDb2xvcigweEEwLCAweEEwLCAweEZGLCAweEZGKSwg
IkdDIGhlYXAiLCB0cnVlKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHQ093bmVk
XSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ093bmVkLCBt
YWtlU2ltcGxlQ29sb3IoMHhGRiwgMHhDMCwgMHg2MCwgMHhGRiksICJHQyBvd25lZCIsIHRydWUp
OwogCiAjaWZuZGVmIE5ERUJVRwogICAgIC8vIEVuc3VyZSB0aGlzIGFsaWducyB3aXRoIFJlc291
cmNlVXNhZ2VEYXRhJ3MgY2F0ZWdvcnkgb3JkZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hZHdhaXRhL1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYWR3YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEuY3BwCShy
ZXZpc2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hZHdhaXRhL1Njcm9s
bGJhclRoZW1lQWR3YWl0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEzICs0MywxMyBAQCBz
dGF0aWMgY29uc3QgdW5zaWduZWQgb3ZlcmxheVRodW1iU2l6ZSA9CiBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbWluaW11bVRodW1iU2l6ZSA9IDQwOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRodW1i
U2l6ZSA9IDY7CiBzdGF0aWMgY29uc3QgZG91YmxlIHNjcm9sbGJhck9wYWNpdHkgPSAwLjg7Ci1z
dGF0aWMgY29uc3QgQ29sb3Igc2Nyb2xsYmFyQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNv
bG9yKDI1MiwgMjUyLCAyNTIpOwotc3RhdGljIGNvbnN0IENvbG9yIHNjcm9sbGJhckJvcmRlckNv
bG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyMCwgMjIzLCAyMjcpOwotc3RhdGljIGNvbnN0IENvbG9y
IG92ZXJsYXlUaHVtYkJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAyNTUs
IDEwMCk7Ci1zdGF0aWMgY29uc3QgQ29sb3Igb3ZlcmxheVRodW1iQ29sb3IgPSBtYWtlU2ltcGxl
Q29sb3IoNDYsIDUyLCA1NCwgMTAwKTsKLXN0YXRpYyBjb25zdCBDb2xvciB0aHVtYkhvdmVyZWRD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcig4NiwgOTEsIDkyKTsKLXN0YXRpYyBjb25zdCBDb2xvciB0
aHVtYlByZXNzZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNywgMTA2LCAyMDMpOwotc3RhdGlj
IGNvbnN0IENvbG9yIHRodW1iQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTI2LCAxMjksIDEzMCk7
CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2Nyb2xsYmFyQmFja2dyb3VuZENvbG9yID0gbWFrZVNp
bXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcm9sbGJh
ckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyMCwgMjIzLCAyMjcpOworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIG92ZXJsYXlUaHVtYkJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1
NSwgMjU1LCAyNTUsIDEwMCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gb3ZlcmxheVRodW1iQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoNDYsIDUyLCA1NCwgMTAwKTsKK3N0YXRpYyBjb25zdGV4cHIg
YXV0byB0aHVtYkhvdmVyZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcig4NiwgOTEsIDkyKTsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byB0aHVtYlByZXNzZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigy
NywgMTA2LCAyMDMpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRodW1iQ29sb3IgPSBtYWtlU2lt
cGxlQ29sb3IoMTI2LCAxMjksIDEzMCk7CiAKIGJvb2wgU2Nyb2xsYmFyVGhlbWVBZHdhaXRhOjp1
c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4
ICszNiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0ZXhwciBTaW1w
bGVDb2xvciBsaWdodGVuZWRCbGFjayB7IDB4RkY1NDU0NTQgfTsKLXN0YXRpYyBjb25zdGV4cHIg
U2ltcGxlQ29sb3IgZGFya2VuZWRXaGl0ZSB7IDB4RkZBQkFCQUIgfTsKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byBsaWdodGVuZWRCbGFjayA9IG1ha2VTaW1wbGVDb2xvcigweDU0LCAweDU0LCAweDU0
LCAweEZGKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBkYXJrZW5lZFdoaXRlID0gbWFrZVNpbXBs
ZUNvbG9yKDB4QUIsIDB4QUIsIDB4QUIsIDB4RkYpOwogCiBDb2xvcjo6Q29sb3IoY29uc3QgQ29s
b3ImIG90aGVyKQogICAgIDogbV9jb2xvckRhdGEob3RoZXIubV9jb2xvckRhdGEpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI2Mzk3OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE2MywxNCArMTYzLDE0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBvcGVy
YXRvciBEMkQxX1ZFQ1RPUl80RigpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBzdGF0aWMgY29uc3Rl
eHByIFNpbXBsZUNvbG9yIGJsYWNrIHsgMHhGRjAwMDAwMCB9OwotICAgIHN0YXRpYyBjb25zdGV4
cHIgU2ltcGxlQ29sb3Igd2hpdGUgeyAweEZGRkZGRkZGIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBTaW1wbGVDb2xvciBkYXJrR3JheSB7IDB4RkY4MDgwODAgfTsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIFNpbXBsZUNvbG9yIGdyYXkgeyAweEZGQTBBMEEwIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBTaW1wbGVDb2xvciBsaWdodEdyYXkgeyAweEZGQzBDMEMwIH07Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBTaW1wbGVDb2xvciB0cmFuc3BhcmVudCB7IDB4MDAwMDAwMDAgfTsKLSAgICBzdGF0aWMg
Y29uc3RleHByIFNpbXBsZUNvbG9yIGN5YW4geyAweEZGMDBGRkZGIH07Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBTaW1wbGVDb2xvciB5ZWxsb3cgeyAweEZGRkZGRjAwIH07CisgICAgc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGJsYWNrID0gbWFrZVNpbXBsZUNvbG9yKDB4MDAsIDB4MDAsIDB4MDApOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byB3aGl0ZSA9IG1ha2VTaW1wbGVDb2xvcigweEZGLCAw
eEZGLCAweEZGKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGFya0dyYXkgPSBtYWtlU2lt
cGxlQ29sb3IoMHg4MCwgMHg4MCwgMHg4MCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGdy
YXkgPSBtYWtlU2ltcGxlQ29sb3IoMHhBMCwgMHhBMCwgMHhBMCk7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGxpZ2h0R3JheSA9IG1ha2VTaW1wbGVDb2xvcigweEMwLCAweEMwLCAweEMwKTsK
KyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gdHJhbnNwYXJlbnQgPSBtYWtlU2ltcGxlQ29sb3Io
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGN5YW4g
PSBtYWtlU2ltcGxlQ29sb3IoMHgwMCwgMHhGRiwgMHhGRik7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIHllbGxvdyA9IG1ha2VTaW1wbGVDb2xvcigweEZGLCAweEZGLCAweDAwKTsKIAogICAg
IGJvb2wgaXNFeHRlbmRlZCgpIGNvbnN0IHsgcmV0dXJuICEobV9jb2xvckRhdGEuc2ltcGxlQ29s
b3JBbmRGbGFncyAmIGludmFsaWRTaW1wbGVDb2xvcik7IH0KICAgICBib29sIGlzU2ltcGxlKCkg
Y29uc3QgeyByZXR1cm4gIWlzRXh0ZW5kZWQoKTsgfQpAQCAtMzAxLDEyICszMDEsMTIgQEAgaW5s
aW5lIGNvbnN0IEV4dGVuZGVkQ29sb3ImIENvbG9yOjphc0V4dAogaW5saW5lIGNvbnN0IFNpbXBs
ZUNvbG9yIENvbG9yOjphc1NpbXBsZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzU2ltcGxlKCkp
OwotICAgIHJldHVybiB7IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2NvbG9yRGF0YS5zaW1wbGVD
b2xvckFuZEZsYWdzID4+IDMyKSB9OworICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoYXNTUkdC
QShQYWNrZWQ6OlJHQkEgeyBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9jb2xvckRhdGEuc2ltcGxl
Q29sb3JBbmRGbGFncyA+PiAzMikgfSkpOwogfQogCiBpbmxpbmUgdm9pZCBDb2xvcjo6c2V0U2lt
cGxlQ29sb3IoU2ltcGxlQ29sb3Igc2ltcGxlQ29sb3IpCiB7Ci0gICAgbV9jb2xvckRhdGEuc2lt
cGxlQ29sb3JBbmRGbGFncyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaW1wbGVDb2xvci52YWx1
ZSgpKSA8PCAzMjsKKyAgICBtX2NvbG9yRGF0YS5zaW1wbGVDb2xvckFuZEZsYWdzID0gc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KFBhY2tlZDo6UkdCQSB7IHNpbXBsZUNvbG9yLmFzU1JHQkE8dWludDhf
dD4oKSB9LnZhbHVlKSA8PCAzMjsKICAgICB0YWdBc1ZhbGlkKCk7CiB9CiAKQEAgLTM1MCw3ICsz
NTAsNyBAQCB2b2lkIENvbG9yOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uCiAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGVuY29kZSB3aGV0aGVyIHRoZSBjb2xvciBpcyBzZW1hbnRpYy4K
IAogICAgIGVuY29kZXIgPDwgdHJ1ZTsKLSAgICBlbmNvZGVyIDw8IGFzU2ltcGxlKCkudmFsdWUo
KTsKKyAgICBlbmNvZGVyIDw8IFBhY2tlZDo6UkdCQSB7IGFzU2ltcGxlKCkuYXNTUkdCQTx1aW50
OF90PigpIH0udmFsdWU7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0zOTAsNyAr
MzkwLDcgQEAgT3B0aW9uYWw8Q29sb3I+IENvbG9yOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
Ci0gICAgcmV0dXJuIENvbG9yIHsgU2ltcGxlQ29sb3IgeyB2YWx1ZSB9IH07CisgICAgcmV0dXJu
IENvbG9yIHsgbWFrZVNpbXBsZUNvbG9yKGFzU1JHQkEoUGFja2VkOjpSR0JBIHsgdmFsdWUgfSkp
IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCShyZXZpc2lvbiAyNjM5
NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJsZW5kaW5nLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIENvbG9yIGJsZW5kKGNvbnN0IENv
bG9yJiBmcm9tLCBjb25zdCBDb2wKICAgICBhdXRvIHByZW11bHRpcGxpZWRGcm9tID0gcHJlbXVs
dGlwbGllZENlaWxpbmcoZnJvbS50b1NSR0JBTG9zc3k8dWludDhfdD4oKSk7CiAgICAgYXV0byBw
cmVtdWx0aXBsaWVkVG8gPSBwcmVtdWx0aXBsaWVkQ2VpbGluZyh0by50b1NSR0JBTG9zc3k8dWlu
dDhfdD4oKSk7CiAKLSAgICBhdXRvIHByZW11bHRpcGxpZWRCbGVuZGVkID0gY29udmVydFRvQ29t
cG9uZW50Qnl0ZXM8U1JHQkE+KAorICAgIGF1dG8gcHJlbXVsdGlwbGllZEJsZW5kZWQgPSBjbGFt
cFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KAogICAgICAgICBXZWJDb3JlOjpibGVuZChwcmVtdWx0
aXBsaWVkRnJvbS5yZWQsIHByZW11bHRpcGxpZWRUby5yZWQsIHByb2dyZXNzKSwKICAgICAgICAg
V2ViQ29yZTo6YmxlbmQocHJlbXVsdGlwbGllZEZyb20uZ3JlZW4sIHByZW11bHRpcGxpZWRUby5n
cmVlbiwgcHJvZ3Jlc3MpLAogICAgICAgICBXZWJDb3JlOjpibGVuZChwcmVtdWx0aXBsaWVkRnJv
bS5ibHVlLCBwcmVtdWx0aXBsaWVkVG8uYmx1ZSwgcHJvZ3Jlc3MpLApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkocmV2aXNpb24gMjYzOTc4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDAsMTYgKzI0MCw0NCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25z
dGV4cHIgYm9vbCBvcGVyCiAKIC8vIFBhY2tlZCBDb2xvciBGb3JtYXRzCiAKK25hbWVzcGFjZSBQ
YWNrZWQgeworCitzdHJ1Y3QgUkdCQSB7CisgICAgY29uc3RleHByIGV4cGxpY2l0IFJHQkEodWlu
dDMyX3QgcmdiYSkKKyAgICAgICAgOiB2YWx1ZSB7IHJnYmEgfQorICAgIHsKKyAgICB9CisKKyAg
ICBjb25zdGV4cHIgZXhwbGljaXQgUkdCQShTUkdCQTx1aW50OF90PiBjb2xvcikKKyAgICAgICAg
OiB2YWx1ZSB7IHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb2xvci5yZWQgPDwgMjQgfCBjb2xvci5n
cmVlbiA8PCAxNiB8IGNvbG9yLmJsdWUgPDwgOCB8IGNvbG9yLmFscGhhKSB9CisgICAgeworICAg
IH0KKworICAgIHVpbnQzMl90IHZhbHVlOworfTsKKwogc3RydWN0IEFSR0IgeworICAgIGNvbnN0
ZXhwciBleHBsaWNpdCBBUkdCKHVpbnQzMl90IGFyZ2IpCisgICAgICAgIDogdmFsdWUgeyBhcmdi
IH0KKyAgICB7CisgICAgfQorCisgICAgY29uc3RleHByIGV4cGxpY2l0IEFSR0IoU1JHQkE8dWlu
dDhfdD4gY29sb3IpCisgICAgICAgIDogdmFsdWUgeyBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY29s
b3IuYWxwaGEgPDwgMjQgfCBjb2xvci5yZWQgPDwgMTYgfCBjb2xvci5ncmVlbiA8PCA4IHwgY29s
b3IuYmx1ZSkgfQorICAgIHsKKyAgICB9CisKICAgICB1aW50MzJfdCB2YWx1ZTsKIH07CiAKLWNv
bnN0ZXhwciBBUkdCIGFzQVJHQihTUkdCQTx1aW50OF90PiBjb2xvcikKK30KKworY29uc3RleHBy
IFNSR0JBPHVpbnQ4X3Q+IGFzU1JHQkEoUGFja2VkOjpSR0JBIGNvbG9yKQogewotICAgIHJldHVy
biB7IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2xvci5hbHBoYSA8PCAyNCB8IGNvbG9yLnJlZCA8
PCAxNiB8IGNvbG9yLmdyZWVuIDw8IDggfCBjb2xvci5ibHVlKSB9OworICAgIHJldHVybiB7IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KGNvbG9yLnZhbHVlID4+IDI0KSwgc3RhdGljX2Nhc3Q8dWludDhf
dD4oY29sb3IudmFsdWUgPj4gMTYpLCBzdGF0aWNfY2FzdDx1aW50OF90Pihjb2xvci52YWx1ZSA+
PiA4KSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oY29sb3IudmFsdWUpIH07CiB9CiAKLWNvbnN0ZXhw
ciBTUkdCQTx1aW50OF90PiBhc1NSR0JBKEFSR0IgY29sb3IpCitjb25zdGV4cHIgU1JHQkE8dWlu
dDhfdD4gYXNTUkdCQShQYWNrZWQ6OkFSR0IgY29sb3IpCiB7CiAgICAgcmV0dXJuIHsgc3RhdGlj
X2Nhc3Q8dWludDhfdD4oY29sb3IudmFsdWUgPj4gMTYpLCBzdGF0aWNfY2FzdDx1aW50OF90Pihj
b2xvci52YWx1ZSA+PiA4KSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oY29sb3IudmFsdWUpLCBzdGF0
aWNfY2FzdDx1aW50OF90Pihjb2xvci52YWx1ZSA+PiAyNCkgfTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAJKHJl
dmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
VXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBTUkdCQTx1aW50
OF90PiBwcmVtdWx0aXBsaWVkRmxvb3JpbmcoU1JHCiAgICAgICAgIHJldHVybiB7IDAsIDAsIDAs
IDAgfTsKICAgICBpZiAoYSA9PSAyNTUpCiAgICAgICAgIHJldHVybiBjb2xvcjsKLSAgICByZXR1
cm4gY29udmVydFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KGZhc3REaXZpZGVCeTI1NShyICogYSks
IGZhc3REaXZpZGVCeTI1NShnICogYSksIGZhc3REaXZpZGVCeTI1NShiICogYSksIGEpOworICAg
IHJldHVybiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KGZhc3REaXZpZGVCeTI1NShyICog
YSksIGZhc3REaXZpZGVCeTI1NShnICogYSksIGZhc3REaXZpZGVCeTI1NShiICogYSksIGEpOwog
fQogCiBTUkdCQTx1aW50OF90PiBwcmVtdWx0aXBsaWVkQ2VpbGluZyhTUkdCQTx1aW50OF90PiBj
b2xvcikKQEAgLTg5LDcgKzg5LDcgQEAgU1JHQkE8dWludDhfdD4gcHJlbXVsdGlwbGllZENlaWxp
bmcoU1JHQgogICAgICAgICByZXR1cm4geyAwLCAwLCAwLCAwIH07CiAgICAgaWYgKGEgPT0gMjU1
KQogICAgICAgICByZXR1cm4gY29sb3I7Ci0gICAgcmV0dXJuIGNvbnZlcnRUb0NvbXBvbmVudEJ5
dGVzPFNSR0JBPihmYXN0RGl2aWRlQnkyNTUociAqIGEgKyAyNTQpLCBmYXN0RGl2aWRlQnkyNTUo
ZyAqIGEgKyAyNTQpLCBmYXN0RGl2aWRlQnkyNTUoYiAqIGEgKyAyNTQpLCBhKTsKKyAgICByZXR1
cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihmYXN0RGl2aWRlQnkyNTUociAqIGEgKyAy
NTQpLCBmYXN0RGl2aWRlQnkyNTUoZyAqIGEgKyAyNTQpLCBmYXN0RGl2aWRlQnkyNTUoYiAqIGEg
KyAyNTQpLCBhKTsKIH0KIAogc3RhdGljIGlubGluZSB1aW50MTZfdCB1bnByZW11bHRpcGxpZWRD
b21wb25lbnRCeXRlKHVpbnQ4X3QgYywgdWludDhfdCBhKQpAQCAtMTAyLDcgKzEwMiw3IEBAIFNS
R0JBPHVpbnQ4X3Q+IHVucHJlbXVsdGlwbGllZChTUkdCQTx1aW4KICAgICBhdXRvIFtyLCBnLCBi
LCBhXSA9IGNvbG9yOwogICAgIGlmICghYSB8fCBhID09IDI1NSkKICAgICAgICAgcmV0dXJuIGNv
bG9yOwotICAgIHJldHVybiBjb252ZXJ0VG9Db21wb25lbnRCeXRlczxTUkdCQT4odW5wcmVtdWx0
aXBsaWVkQ29tcG9uZW50Qnl0ZShyLCBhKSwgdW5wcmVtdWx0aXBsaWVkQ29tcG9uZW50Qnl0ZShn
LCBhKSwgdW5wcmVtdWx0aXBsaWVkQ29tcG9uZW50Qnl0ZShiLCBhKSwgYSk7CisgICAgcmV0dXJu
IGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4odW5wcmVtdWx0aXBsaWVkQ29tcG9uZW50Qnl0
ZShyLCBhKSwgdW5wcmVtdWx0aXBsaWVkQ29tcG9uZW50Qnl0ZShnLCBhKSwgdW5wcmVtdWx0aXBs
aWVkQ29tcG9uZW50Qnl0ZShiLCBhKSwgYSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGls
aXRpZXMuaAkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsMTYgQEAg
aW5saW5lIHVpbnQ4X3QgY29udmVydFRvQ29tcG9uZW50Qnl0ZShmbAogICAgIHJldHVybiBzdGQ6
OmNsYW1wKHN0ZDo6bHJvdW5kKGYgKiAyNTUuMGYpLCAwbCwgMjU1bCk7CiB9CiAKK2NvbnN0ZXhw
ciB1aW50OF90IGNsYW1wVG9Db21wb25lbnRCeXRlKGludCBjKQoreworICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1wKGMsIDAsIDB4RkYpKTsKK30KKworY29uc3RleHBy
IHVpbnQ4X3QgY2xhbXBUb0NvbXBvbmVudEZsb2F0KGZsb2F0IGYpCit7CisgICAgcmV0dXJuIHN0
ZDo6Y2xhbXAoZiwgMC4wZiwgMS4wZik7Cit9CisKIGNvbnN0ZXhwciBmbG9hdCBjb252ZXJ0VG9D
b21wb25lbnRGbG9hdCh1aW50OF90IGJ5dGUpCiB7CiAgICAgcmV0dXJuIGJ5dGUgLyAyNTUuMGY7
CkBAIC02NSwyMCArNzUsMjAgQEAgdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1l
IENvbAogICAgIHJldHVybiB7IGNvbnZlcnRUb0NvbXBvbmVudEJ5dGUoY29tcG9uZW50c1swXSks
IGNvbnZlcnRUb0NvbXBvbmVudEJ5dGUoY29tcG9uZW50c1sxXSksIGNvbnZlcnRUb0NvbXBvbmVu
dEJ5dGUoY29tcG9uZW50c1syXSksIGNvbnZlcnRUb0NvbXBvbmVudEJ5dGUoY29tcG9uZW50c1sz
XSkgfTsKIH0KIAotdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlw
ZT4gY29uc3RleHByIENvbG9yVHlwZTx1aW50OF90PiBjb252ZXJ0VG9Db21wb25lbnRCeXRlcyhp
bnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKLXsKLSAgICByZXR1cm4geyBzdGF0aWNfY2FzdDx1
aW50OF90PihzdGQ6OmNsYW1wKHIsIDAsIDB4RkYpKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3Rk
OjpjbGFtcChnLCAwLCAweEZGKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoYiwg
MCwgMHhGRikpLCBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1wKGEsIDAsIDB4RkYpKSB9
OwotfQotCiB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBj
b25zdGV4cHIgQ29sb3JUeXBlPGZsb2F0PiBjb252ZXJ0VG9Db21wb25lbnRGbG9hdHMoY29uc3Qg
Q29sb3JUeXBlPHVpbnQ4X3Q+JiBjb2xvcikKIHsKICAgICBhdXRvIGNvbXBvbmVudHMgPSBhc0Nv
bG9yQ29tcG9uZW50cyhjb2xvcik7CiAgICAgcmV0dXJuIHsgY29udmVydFRvQ29tcG9uZW50Rmxv
YXQoY29tcG9uZW50c1swXSksIGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0KGNvbXBvbmVudHNbMV0p
LCBjb252ZXJ0VG9Db21wb25lbnRGbG9hdChjb21wb25lbnRzWzJdKSwgY29udmVydFRvQ29tcG9u
ZW50RmxvYXQoY29tcG9uZW50c1szXSkgfTsKIH0KIAotdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5h
bWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZTxmbG9hdD4gY29udmVy
dFRvQ29tcG9uZW50RmxvYXRzKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCit0
ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIg
Q29sb3JUeXBlPHVpbnQ4X3Q+IGNsYW1wVG9Db21wb25lbnRCeXRlcyhpbnQgciwgaW50IGcsIGlu
dCBiLCBpbnQgYSkKK3sKKyAgICByZXR1cm4geyBjbGFtcFRvQ29tcG9uZW50Qnl0ZShyKSwgY2xh
bXBUb0NvbXBvbmVudEJ5dGUoZyksIGNsYW1wVG9Db21wb25lbnRCeXRlKGIpLCBjbGFtcFRvQ29t
cG9uZW50Qnl0ZShhKSB9OworfQorCit0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5h
bWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlPGZsb2F0PiBjbGFtcFRvQ29tcG9uZW50
RmxvYXRzKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCiB7Ci0gICAgcmV0dXJu
IHsgc3RkOjpjbGFtcChyLCAwLjBmLCAxLjBmKSwgc3RkOjpjbGFtcChnLCAwLjBmLCAxLjBmKSwg
c3RkOjpjbGFtcChiLCAwLjBmLCAxLjBmKSwgc3RkOjpjbGFtcChhLCAwLjBmLCAxLjBmKSB9Owor
ICAgIHJldHVybiB7IGNsYW1wVG9Db21wb25lbnRGbG9hdChyKSwgY2xhbXBUb0NvbXBvbmVudEZs
b2F0KGcpLCBjbGFtcFRvQ29tcG9uZW50RmxvYXQoYiksIGNsYW1wVG9Db21wb25lbnRGbG9hdChh
KSB9OwogfQogCiBjb25zdGV4cHIgdWludDE2X3QgZmFzdE11bHRpcGx5QnkyNTUodWludDE2X3Qg
dmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tp
bmdTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQmFja2luZ1N0b3JlLmgJKHJldmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghYSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBhdXRvIHBpeGVsID0gYXNTUkdCQShBUkdCIHsgKmRlc3QgfSk7Cisg
ICAgICAgIGF1dG8gcGl4ZWwgPSBhc1NSR0JBKFBhY2tlZDo6QVJHQiB7ICpkZXN0IH0pOwogCiAg
ICAgICAgIGlmIChhID49IDI1NSB8fCAhcGl4ZWwuYWxwaGEpIHsKICAgICAgICAgICAgIHNldFBp
eGVsKGRlc3QsIHIsIGcsIGIsIGEpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgaWYgKCFtX3ByZW11bHRpcGx5QWxwaGEpCiAgICAgICAgICAgICByZXN1bHQgPSB1bnByZW11
bHRpcGxpZWQocmVzdWx0KTsKIAotICAgICAgICAqZGVzdCA9IGFzQVJHQihyZXN1bHQpLnZhbHVl
OworICAgICAgICAqZGVzdCA9IFBhY2tlZDo6QVJHQiB7IHJlc3VsdCB9LnZhbHVlOwogICAgIH0K
IAogICAgIHN0YXRpYyBib29sIGlzT3ZlclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTIz
MSw3ICsyMzEsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAobV9wcmVtdWx0aXBseUFscGhhICYm
IGEgPCAyNTUpCiAgICAgICAgICAgICByZXN1bHQgPSBwcmVtdWx0aXBsaWVkRmxvb3JpbmcocmVz
dWx0KTsKIAotICAgICAgICByZXR1cm4gYXNBUkdCKHJlc3VsdCkudmFsdWU7CisgICAgICAgIHJl
dHVybiBQYWNrZWQ6OkFSR0IgeyByZXN1bHQgfS52YWx1ZTsKICAgICB9CiAKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVDb2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmgJKHJldmlzaW9uIDI2Mzk3OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDM4ICszMiwzMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8v
IENvbG9yIHZhbHVlIHdpdGggOC1iaXQgY29tcG9uZW50cyBmb3IgcmVkLCBncmVlbiwgYmx1ZSwg
YW5kIGFscGhhLgotLy8gRm9yIGhpc3RvcmljYWwgcmVhc29ucywgc3RvcmVkIGFzIGEgMzItYml0
IGludGVnZXIsIHdpdGggYWxwaGEgaW4gdGhlIGhpZ2ggYml0czogQVJHQi4KIGNsYXNzIFNpbXBs
ZUNvbG9yIHsKIHB1YmxpYzoKLSAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IodWludDMyX3QgdmFs
dWUgPSAwKSA6IG1fdmFsdWUgeyB2YWx1ZSB9IHsgfQotICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xv
cih1aW50OF90IHIsIHVpbnQ4X3QgZywgdWludDhfdCBiLCB1aW50OF90IGEpIDogbV92YWx1ZSB7
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhIDw8IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGIpIH0g
eyB9CisgICAgY29uc3RleHByIFNpbXBsZUNvbG9yKCkgOiBtX3ZhbHVlIHsgfSB7IH0KKyAgICBj
b25zdGV4cHIgU2ltcGxlQ29sb3IodWludDhfdCByLCB1aW50OF90IGcsIHVpbnQ4X3QgYiwgdWlu
dDhfdCBhKSA6IG1fdmFsdWUgeyByLCBnLCBiLCBhIH0geyB9CiAKLSAgICBjb25zdGV4cHIgdWlu
dDMyX3QgdmFsdWVBc0FSR0IoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0gICAgY29uc3Rl
eHByIHVpbnQzMl90IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgIGNvbnN0
ZXhwciB1aW50OF90IGFscGhhQ29tcG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5hbHBo
YTsgfQorICAgIGNvbnN0ZXhwciBmbG9hdCBhbHBoYUNvbXBvbmVudEFzRmxvYXQoKSBjb25zdCB7
IHJldHVybiBjb252ZXJ0VG9Db21wb25lbnRGbG9hdChtX3ZhbHVlLmFscGhhKTsgfQogCi0gICAg
Y29uc3RleHByIHVpbnQ4X3QgYWxwaGFDb21wb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVl
ID4+IDI0OyB9Ci0gICAgY29uc3RleHByIGZsb2F0IGFscGhhQ29tcG9uZW50QXNGbG9hdCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0KGFscGhhQ29tcG9uZW50KCkpOyB9
Ci0KLSAgICBjb25zdGV4cHIgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIGFscGhhQ29t
cG9uZW50KCkgPT0gMHhGRjsgfQotICAgIGNvbnN0ZXhwciBib29sIGlzVmlzaWJsZSgpIGNvbnN0
IHsgcmV0dXJuIGFscGhhQ29tcG9uZW50KCk7IH0KKyAgICBjb25zdGV4cHIgYm9vbCBpc09wYXF1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuYWxwaGEgPT0gMHhGRjsgfQorICAgIGNvbnN0ZXhw
ciBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuYWxwaGE7IH0KIAogICAg
IGNvbnN0ZXhwciBTaW1wbGVDb2xvciBjb2xvcldpdGhBbHBoYSh1aW50OF90IGFscGhhKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuIHsgKG1fdmFsdWUgJiAweDAwRkZGRkZGKSB8IGFscGhh
IDw8IDI0IH07CisgICAgICAgIHJldHVybiB7IG1fdmFsdWUucmVkLCBtX3ZhbHVlLmdyZWVuLCBt
X3ZhbHVlLmJsdWUsIGFscGhhIH07CiAgICAgfQogCiAgICAgY29uc3RleHByIFNpbXBsZUNvbG9y
IGludmVydGVkQ29sb3JXaXRoQWxwaGEodWludDhfdCBhbHBoYSkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiB7IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KDB4RkYgLSByZWRDb21wb25lbnQoKSks
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KDB4RkYgLSBncmVlbkNvbXBvbmVudCgpKSwgc3RhdGljX2Nh
c3Q8dWludDhfdD4oMHhGRiAtIGJsdWVDb21wb25lbnQoKSksIGFscGhhIH07CisgICAgICAgIHJl
dHVybiB7IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KDB4RkYgLSBtX3ZhbHVlLnJlZCksIHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KDB4RkYgLSBtX3ZhbHVlLmdyZWVuKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4o
MHhGRiAtIG1fdmFsdWUuYmx1ZSksIGFscGhhIH07CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gY29uc3RleHByIFNSR0JBPFQ+IGFzU1JHQkEoKSBjb25zdAogICAgIHsKICAgICAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxULCBmbG9hdD4pCi0gICAgICAgICAgICBy
ZXR1cm4geyBjb252ZXJ0VG9Db21wb25lbnRGbG9hdChyZWRDb21wb25lbnQoKSksIGNvbnZlcnRU
b0NvbXBvbmVudEZsb2F0KGdyZWVuQ29tcG9uZW50KCkpLCBjb252ZXJ0VG9Db21wb25lbnRGbG9h
dChibHVlQ29tcG9uZW50KCkpLCAgY29udmVydFRvQ29tcG9uZW50RmxvYXQoYWxwaGFDb21wb25l
bnQoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9Db21wb25lbnRGbG9hdHMobV92
YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxULCB1aW50
OF90PikKLSAgICAgICAgICAgIHJldHVybiB7IHJlZENvbXBvbmVudCgpLCBncmVlbkNvbXBvbmVu
dCgpLCBibHVlQ29tcG9uZW50KCksIGFscGhhQ29tcG9uZW50KCkgfTsKKyAgICAgICAgICAgIHJl
dHVybiBtX3ZhbHVlOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IE4+CkBAIC03
MSwyMSArNjYsMTcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChOIDwg
NCk7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoIU4pCi0gICAgICAgICAgICByZXR1cm4gcmVkQ29t
cG9uZW50KCk7CisgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS5yZWQ7CiAgICAgICAgIGVsc2Ug
aWYgY29uc3RleHByIChOID09IDEpCi0gICAgICAgICAgICByZXR1cm4gZ3JlZW5Db21wb25lbnQo
KTsKKyAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLmdyZWVuOwogICAgICAgICBlbHNlIGlmIGNv
bnN0ZXhwciAoTiA9PSAyKQotICAgICAgICAgICAgcmV0dXJuIGJsdWVDb21wb25lbnQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBtX3ZhbHVlLmJsdWU7CiAgICAgICAgIGVsc2UgaWYgY29uc3RleHBy
IChOID09IDMpCi0gICAgICAgICAgICByZXR1cm4gYWxwaGFDb21wb25lbnQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBtX3ZhbHVlLmFscGhhOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBjb25zdGV4
cHIgdWludDhfdCByZWRDb21wb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID4+IDE2OyB9
Ci0gICAgY29uc3RleHByIHVpbnQ4X3QgZ3JlZW5Db21wb25lbnQoKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlID4+IDg7IH0KLSAgICBjb25zdGV4cHIgdWludDhfdCBibHVlQ29tcG9uZW50KCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZTsgfQotCi0gICAgdWludDMyX3QgbV92YWx1ZSB7IDAgfTsKKyAg
ICBTUkdCQTx1aW50OF90PiBtX3ZhbHVlIHsgMCwgMCwgMCwgMCB9OwogfTsKIAogYm9vbCBvcGVy
YXRvcj09KFNpbXBsZUNvbG9yLCBTaW1wbGVDb2xvcik7CkBAIC05OCw3ICs4OSw3IEBAIFNpbXBs
ZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihjb25zdCBTUkdCQTwKIAogaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShTaW1wbGVDb2xvciBhLCBTaW1wbGVDb2xvciBiKQogewotICAgIHJldHVybiBhLnZhbHVl
KCkgPT0gYi52YWx1ZSgpOworICAgIHJldHVybiBhLmFzU1JHQkE8dWludDhfdD4oKSA9PSBiLmFz
U1JHQkE8dWludDhfdD4oKTsKIH0KIAogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShTaW1wbGVDb2xv
ciBhLCBTaW1wbGVDb2xvciBiKQpAQCAtMTA2LDI0ICs5NywyNCBAQCBpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KFNpbXBsZUNvbG9yIGEsIFNpCiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAotY29u
c3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihpbnQgciwgaW50IGcsIGludCBiKQor
Y29uc3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihjb25zdCBTUkdCQTx1aW50OF90
PiYgc1JHQkEpCiB7Ci0gICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFt
cChyLCAwLCAweEZGKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoZywgMCwgMHhG
RikpLCBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1wKGIsIDAsIDB4RkYpKSwgMHhGRiB9
OworICAgIHJldHVybiB7IHNSR0JBLnJlZCwgc1JHQkEuZ3JlZW4sIHNSR0JBLmJsdWUsIHNSR0JB
LmFscGhhIH07CiB9CiAKLWNvbnN0ZXhwciBTaW1wbGVDb2xvciBtYWtlU2ltcGxlQ29sb3IoaW50
IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCitpbmxpbmUgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNv
bG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYgc1JHQkEpCiB7Ci0gICAgcmV0dXJuIHsgc3RhdGljX2Nh
c3Q8dWludDhfdD4oc3RkOjpjbGFtcChyLCAwLCAweEZGKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KHN0ZDo6Y2xhbXAoZywgMCwgMHhGRikpLCBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1w
KGIsIDAsIDB4RkYpKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFtcChhLCAwLCAweEZG
KSkgfTsKKyAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKGNvbnZlcnRUb0NvbXBvbmVudEJ5dGVz
KHNSR0JBKSk7CiB9CiAKLWNvbnN0ZXhwciBTaW1wbGVDb2xvciBtYWtlU2ltcGxlQ29sb3IoY29u
c3QgU1JHQkE8dWludDhfdD4mIHNSR0JBKQorY29uc3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1w
bGVDb2xvcihpbnQgciwgaW50IGcsIGludCBiKQogewotICAgIHJldHVybiB7IHNSR0JBLnJlZCwg
c1JHQkEuZ3JlZW4sIHNSR0JBLmJsdWUsIHNSR0JBLmFscGhhIH07CisgICAgcmV0dXJuIG1ha2VT
aW1wbGVDb2xvcihjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHIsIGcsIGIsIDB4RkYpKTsK
IH0KIAotaW5saW5lIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihjb25zdCBTUkdCQTxmbG9h
dD4mIHNSR0JBKQorY29uc3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihpbnQgciwg
aW50IGcsIGludCBiLCBpbnQgYSkKIHsKLSAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKGNvbnZl
cnRUb0NvbXBvbmVudEJ5dGVzKHNSR0JBKSk7CisgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcihj
bGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHIsIGcsIGIsIGEpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9J
bWFnZVN1cmZhY2VCYWNrZW5kLmNwcAkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJh
Y2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw5ICs4MCw5IEBAIHZvaWQgSW1hZ2VCdWZm
ZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQKICAgICAgICAgdW5zaWduZWQqIHJvdyA9IHJlaW50
ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4oZGF0YVNyYyArIHN0cmlkZSAqIHkpOwogICAgICAg
ICBmb3IgKGludCB4ID0gMDsgeCA8IG1fbG9naWNhbFNpemUud2lkdGgoKTsgeCsrKSB7CiAgICAg
ICAgICAgICB1bnNpZ25lZCogcGl4ZWwgPSByb3cgKyB4OwotICAgICAgICAgICAgYXV0byBwaXhl
bENvbXBvbmVudHMgPSB1bnByZW11bHRpcGxpZWQoYXNTUkdCQShBUkdCIHsgKnBpeGVsIH0pKTsK
KyAgICAgICAgICAgIGF1dG8gcGl4ZWxDb21wb25lbnRzID0gdW5wcmVtdWx0aXBsaWVkKGFzU1JH
QkEoUGFja2VkOjpBUkdCIHsgKnBpeGVsIH0pKTsKICAgICAgICAgICAgIHBpeGVsQ29tcG9uZW50
cyA9IHsgbG9va1VwVGFibGVbcGl4ZWxDb21wb25lbnRzLnJlZF0sIGxvb2tVcFRhYmxlW3BpeGVs
Q29tcG9uZW50cy5ncmVlbl0sIGxvb2tVcFRhYmxlW3BpeGVsQ29tcG9uZW50cy5ibHVlXSwgcGl4
ZWxDb21wb25lbnRzLmFscGhhIH07Ci0gICAgICAgICAgICAqcGl4ZWwgPSBhc0FSR0IocHJlbXVs
dGlwbGllZENlaWxpbmcocGl4ZWxDb21wb25lbnRzKSkudmFsdWU7CisgICAgICAgICAgICAqcGl4
ZWwgPSBQYWNrZWQ6OkFSR0IgeyBwcmVtdWx0aXBsaWVkQ2VpbGluZyhwaXhlbENvbXBvbmVudHMp
IH0udmFsdWU7CiAgICAgICAgIH0KICAgICB9CiAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5
X3JlY3RhbmdsZShtX3N1cmZhY2UuZ2V0KCksIDAsIDAsIG1fbG9naWNhbFNpemUud2lkdGgoKSwg
bV9sb2dpY2FsU2l6ZS5oZWlnaHQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAkocmV2
aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
TmF0aXZlSW1hZ2VDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgQ29s
b3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoYwogICAgICAgICByZXR1cm4gQ29s
b3IoKTsKIAogICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2ln
bmVkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShpbWFnZS5nZXQoKSkpOwotICAgIHJl
dHVybiBtYWtlU2ltcGxlQ29sb3IodW5wcmVtdWx0aXBsaWVkKGFzU1JHQkEoQVJHQiB7ICpwaXhl
bCB9KSkpOworICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IodW5wcmVtdWx0aXBsaWVkKGFzU1JH
QkEoUGFja2VkOjpBUkdCIHsgKnBpeGVsIH0pKSk7CiB9CiAKIHZvaWQgZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNH
LmNwcAkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSwyNCArMTI5LDIyIEBAIHN0
YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG8KIENHQ29sb3JSZWYgY2FjaGVk
Q0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKGNvbG9yLmlzU2ltcGxlKCkp
IHsKLSAgICAgICAgc3dpdGNoIChjb2xvci5hc1NpbXBsZSgpLnZhbHVlKCkpIHsKLSAgICAgICAg
Y2FzZSBDb2xvcjo6dHJhbnNwYXJlbnQudmFsdWUoKTogeworICAgICAgICBzd2l0Y2ggKFBhY2tl
ZDo6UkdCQSB7IGNvbG9yLmFzU2ltcGxlKCkuYXNTUkdCQTx1aW50OF90PigpIH0udmFsdWUpIHsK
KyAgICAgICAgY2FzZSBQYWNrZWQ6OlJHQkEgeyBDb2xvcjo6dHJhbnNwYXJlbnQuYXNTUkdCQTx1
aW50OF90PigpIH0udmFsdWU6IHsKICAgICAgICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIHRyYW5z
cGFyZW50Q0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsKICAgICAgICAgICAgIHJldHVybiB0
cmFuc3BhcmVudENHQ29sb3I7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBDb2xvcjo6YmxhY2su
dmFsdWUoKTogeworICAgICAgICBjYXNlIFBhY2tlZDo6UkdCQSB7IENvbG9yOjpibGFjay5hc1NS
R0JBPHVpbnQ4X3Q+KCkgfS52YWx1ZTogewogICAgICAgICAgICAgc3RhdGljIENHQ29sb3JSZWYg
YmxhY2tDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogICAgICAgICAgICAgcmV0dXJuIGJs
YWNrQ0dDb2xvcjsKICAgICAgICAgfQotICAgICAgICBjYXNlIENvbG9yOjp3aGl0ZS52YWx1ZSgp
OiB7CisgICAgICAgIGNhc2UgUGFja2VkOjpSR0JBIHsgQ29sb3I6OndoaXRlLmFzU1JHQkE8dWlu
dDhfdD4oKSB9LnZhbHVlOiB7CiAgICAgICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiB3aGl0ZUNH
Q29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7CiAgICAgICAgICAgICByZXR1cm4gd2hpdGVDR0Nv
bG9yOwogICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBBU1NFUlQoY29sb3IuaXNF
eHRlbmRlZCgpIHx8IGNvbG9yLmFzU2ltcGxlKCkudmFsdWUoKSk7Ci0KICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPENvbG9yLCBSZXRhaW5QdHI8Q0dDb2xvclJlZj4sIDMy
Pj4gY2FjaGU7CiAgICAgcmV0dXJuIGNhY2hlLmdldCgpLmdldChjb2xvcikuZ2V0KCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFj
Lm1tCShyZXZpc2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvQ29sb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGlj
IGJvb2wgdXNlT2xkQXF1YUZvY3VzUmluZ0NvbG9yOwogCiBDb2xvciBvbGRBcXVhRm9jdXNSaW5n
Q29sb3IoKQogewotICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkY3REFERDkgfTsKKyAgICBy
ZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDB4N0QsIDB4QUQsIDB4RDksIDB4RkYpOwogfQogCiB2b2lk
IHNldFVzZXNUZXN0TW9kZUZvY3VzUmluZ0NvbG9yKGJvb2wgbmV3VmFsdWUpCkBAIC0xMjMsMTYg
KzEyMywxNiBAQCBDb2xvciBzZW1hbnRpY0NvbG9yRnJvbU5TQ29sb3IoTlNDb2xvciAqCiBOU0Nv
bG9yICpuc0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAoY29sb3IuaXNTaW1w
bGUoKSkgewotICAgICAgICBzd2l0Y2ggKGNvbG9yLmFzU2ltcGxlKCkudmFsdWUoKSkgewotICAg
ICAgICBjYXNlIENvbG9yOjp0cmFuc3BhcmVudC52YWx1ZSgpOiB7CisgICAgICAgIHN3aXRjaCAo
UGFja2VkOjpSR0JBIHsgY29sb3IuYXNTaW1wbGUoKS5hc1NSR0JBPHVpbnQ4X3Q+KCkgfS52YWx1
ZSkgeworICAgICAgICBjYXNlIFBhY2tlZDo6UkdCQSB7IENvbG9yOjp0cmFuc3BhcmVudC5hc1NS
R0JBPHVpbnQ4X3Q+KCkgfS52YWx1ZTogewogICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IgKmNs
ZWFyQ29sb3IgPSBbW05TQ29sb3IgY29sb3JXaXRoU1JHQlJlZDowIGdyZWVuOjAgYmx1ZTowIGFs
cGhhOjBdIHJldGFpbl07CiAgICAgICAgICAgICByZXR1cm4gY2xlYXJDb2xvcjsKICAgICAgICAg
fQotICAgICAgICBjYXNlIENvbG9yOjpibGFjay52YWx1ZSgpOiB7CisgICAgICAgIGNhc2UgUGFj
a2VkOjpSR0JBIHsgQ29sb3I6OmJsYWNrLmFzU1JHQkE8dWludDhfdD4oKSB9LnZhbHVlOiB7CiAg
ICAgICAgICAgICBzdGF0aWMgTlNDb2xvciAqYmxhY2tDb2xvciA9IFtbTlNDb2xvciBjb2xvcldp
dGhTUkdCUmVkOjAgZ3JlZW46MCBibHVlOjAgYWxwaGE6MV0gcmV0YWluXTsKICAgICAgICAgICAg
IHJldHVybiBibGFja0NvbG9yOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ29sb3I6OndoaXRl
LnZhbHVlKCk6IHsKKyAgICAgICAgY2FzZSBQYWNrZWQ6OlJHQkEgeyBDb2xvcjo6d2hpdGUuYXNT
UkdCQTx1aW50OF90PigpIH0udmFsdWU6IHsKICAgICAgICAgICAgIHN0YXRpYyBOU0NvbG9yICp3
aGl0ZUNvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MSBncmVlbjoxIGJsdWU6MSBh
bHBoYToxXSByZXRhaW5dOwogICAgICAgICAgICAgcmV0dXJuIHdoaXRlQ29sb3I7CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRDR1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAkocmV2aXNpb24gMjYzOTc4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDEyICsxOTgsMTEgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdEb3RzRm9yRG9jdW1lbgogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxh
dGZvcm1Db250ZXh0KCk7CiAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKIAotICAg
IHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3Igc3BlbGxpbmdQYXR0ZXJuQ29sb3IgeyBtYWtl
U2ltcGxlQ29sb3IoMjU1LCAwLCAwKSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29s
b3IgZ3JhbW1hclBhdHRlcm5Db2xvciB7IG1ha2VTaW1wbGVDb2xvcigwLCAxMjgsIDApIH07Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNwZWxsaW5nUGF0dGVybkNvbG9yID0gbWFrZVNpbXBs
ZUNvbG9yKDI1NSwgMCwgMCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGdyYW1tYXJQYXR0
ZXJuQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMTI4LCAwKTsKIAotICAgIGNvbnN0IFNpbXBs
ZUNvbG9yJiBwYXR0ZXJuQ29sb3IgPSBzdHlsZS5tb2RlID09IERvY3VtZW50TWFya2VyTGluZVN0
eWxlOjpNb2RlOjpHcmFtbWFyID8gZ3JhbW1hclBhdHRlcm5Db2xvciA6IHNwZWxsaW5nUGF0dGVy
bkNvbG9yOwotICAgIGF1dG8gcGF0dGVybkNvbG9yQ29tcG9uZW50cyA9IHBhdHRlcm5Db2xvci5h
c1NSR0JBPHVpbnQ4X3Q+KCk7Ci0gICAgQ0dDb250ZXh0U2V0UkdCU3Ryb2tlQ29sb3IoY29udGV4
dCwgcGF0dGVybkNvbG9yQ29tcG9uZW50cy5yZWQsIHBhdHRlcm5Db2xvckNvbXBvbmVudHMuZ3Jl
ZW4sIHBhdHRlcm5Db2xvckNvbXBvbmVudHMuYmx1ZSwgcGF0dGVybkNvbG9yQ29tcG9uZW50cy5h
bHBoYSk7CisgICAgYXV0byBbciwgZywgYiwgYV0gPSBzdHlsZS5tb2RlID09IERvY3VtZW50TWFy
a2VyTGluZVN0eWxlOjpNb2RlOjpHcmFtbWFyID8gZ3JhbW1hclBhdHRlcm5Db2xvciA6IHNwZWxs
aW5nUGF0dGVybkNvbG9yOworICAgIENHQ29udGV4dFNldFJHQlN0cm9rZUNvbG9yKGNvbnRleHQs
IHIsIGcsIGIsIGEpOwogCiAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdXNlclRvQmFzZSA9IGdldFVz
ZXJUb0Jhc2VDVE0oY29udGV4dCk7CiAgICAgQ0dQb2ludCBwaGFzZSA9IENHUG9pbnRBcHBseUFm
ZmluZVRyYW5zZm9ybShwb2ludCwgdXNlclRvQmFzZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcAkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg2LDggKzg2LDggQEAgc3RhdGljIGlubGluZSBWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiBkZQog
ICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiU0NSRUVOLTEiX3MsICJNb2NrIHNjcmVlbiBkZXZp
Y2UgMSJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlw
ZTo6U2NyZWVuLCBDb2xvcjo6bGlnaHRHcmF5LCB7IDM4NDAsIDIxNjAgfSB9IH0sCiAgICAgICAg
IE1vY2tNZWRpYURldmljZSB7ICJTQ1JFRU4tMiJfcywgIk1vY2sgc2NyZWVuIGRldmljZSAyIl9z
LCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3Jl
ZW4sIENvbG9yOjp5ZWxsb3csIHsgMTkyMCwgMTA4MCB9IH0gfSwKIAotICAgICAgICBNb2NrTWVk
aWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAxIl9zLCBNb2NrRGlzcGxheVBy
b3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIFNpbXBsZUNvbG9y
IHsgMHhmZmYxYjUgfSwgeyA2NDAsIDQ4MCB9IH0gfSwKLSAgICAgICAgTW9ja01lZGlhRGV2aWNl
IHsgIldJTkRPVy0yIl9zLCAiTW9jayB3aW5kb3cgMiJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVz
IHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBTaW1wbGVDb2xvciB7IDB4ZmZk
MGI1IH0sIHsgMTI4MCwgNjAwIH0gfSB9LAorICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lO
RE9XLTIiX3MsICJNb2NrIHdpbmRvdyAxIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIG1ha2VTaW1wbGVDb2xvcigweEZGLCAweEYx
LCAweEI1KSwgeyA2NDAsIDQ4MCB9IH0gfSwKKyAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIldJ
TkRPVy0yIl9zLCAiTW9jayB3aW5kb3cgMiJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBtYWtlU2ltcGxlQ29sb3IoMHhmZiwgMHhE
MCwgMHhCNSksIHsgMTI4MCwgNjAwIH0gfSB9LAogICAgIH07CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwCShyZXZpc2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDEwICsy
NjUsMTAgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd0FuaW1hdAogCiB2b2lk
IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3Qm94ZXMoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQogewotICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBtYWdlbnRhIHsgMHhmZmZmMDBmZiB9
OwotICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBibHVlIHsgMHhmZjAwMDBmZiB9OwotICAgIGNv
bnN0ZXhwciBTaW1wbGVDb2xvciByZWQgeyAweGZmZmYwMDAwIH07Ci0gICAgY29uc3RleHByIFNp
bXBsZUNvbG9yIGRhcmtHcmVlbiB7IDB4ZmYwMDgwMDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGF1dG8gbWFnZW50YSA9IG1ha2VTaW1wbGVDb2xvcigweEZGLCAweDAwLCAweEZGLCAweEZGKTsK
KyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gYmx1ZSA9IG1ha2VTaW1wbGVDb2xvcigweDAwLCAw
eDAwLCAweEZGLCAweEZGKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gcmVkID0gbWFrZVNp
bXBsZUNvbG9yKDB4RkYsIDB4MDAsIDB4MDAsIDB4RkYpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
YXV0byBkYXJrR3JlZW4gPSBtYWtlU2ltcGxlQ29sb3IoMHgwMCwgMHg4MCwgMHgwMCwgMHhGRik7
CiAKICAgICBJbnRTaXplIHNpemUgPSBjYXB0dXJlU2l6ZSgpOwogICAgIGZsb2F0IGJveFNpemUg
PSBzaXplLndpZHRoKCkgKiAuMDM1OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAkocmV2aXNpb24gMjYzOTc4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGludCBTY3JvbGxiYXJUaGVtZU1vY2s6OnNjcm9s
bGJhclRoaWNrbmUKIAogdm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tCYWNrZ3Jv
dW5kKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIHRyYWNrUmVjdCkKIHsKLSAgICBjb250ZXh0LmZpbGxSZWN0KHRyYWNrUmVjdCwg
c2Nyb2xsYmFyLmVuYWJsZWQoKSA/IENvbG9yOjpsaWdodEdyYXkgOiBTaW1wbGVDb2xvciB7IDB4
RkZFMEUwRTAgfSk7CisgICAgY29udGV4dC5maWxsUmVjdCh0cmFja1JlY3QsIHNjcm9sbGJhci5l
bmFibGVkKCkgPyBDb2xvcjo6bGlnaHRHcmF5IDogbWFrZVNpbXBsZUNvbG9yKDB4RTAsIDB4RTAs
IDB4RTApKTsKIH0KIAogdm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
dGh1bWJSZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAJKHJldmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODA1LDggKzE4MDUsOCBAQCB2b2lkIFJlbmRl
ck9iamVjdDo6Y2FsY3VsYXRlQm9yZGVyU3R5bGVDCiAgICAgQVNTRVJUKHN0eWxlID09IEJvcmRl
clN0eWxlOjpJbnNldCB8fCBzdHlsZSA9PSBCb3JkZXJTdHlsZTo6T3V0c2V0KTsKIAogICAgIC8v
IFRoaXMgdmFsdWVzIHdlcmUgZGVyaXZlZCBlbXBpcmljYWxseS4KLSAgICBjb25zdGV4cHIgZmxv
YXQgYmFzZURhcmtDb2xvckx1bWluYW5jZSB7IDAuMDE0NDQzODQ0ZiB9OyAvLyBMdW1pbmFuY2Ug
b2YgU2ltcGxlQ29sb3IgeyAweEZGMjAyMDIwIH0KLSAgICBjb25zdGV4cHIgZmxvYXQgYmFzZUxp
Z2h0Q29sb3JMdW1pbmFuY2UgeyAwLjgzMDc3ZiB9OyAvLyBMdW1pbmFuY2Ugb2YgU2ltcGxlQ29s
b3IgeyAweEZGRUJFQkVCIH0KKyAgICBjb25zdGV4cHIgZmxvYXQgYmFzZURhcmtDb2xvckx1bWlu
YW5jZSB7IDAuMDE0NDQzODQ0ZiB9OyAvLyBMdW1pbmFuY2Ugb2YgU1JHQkE8dWludDhfdD4geyAw
eDIwLCAweDIwLCAweDIwLCAweEZGIH0KKyAgICBjb25zdGV4cHIgZmxvYXQgYmFzZUxpZ2h0Q29s
b3JMdW1pbmFuY2UgeyAwLjgzMDc3ZiB9OyAvLyBMdW1pbmFuY2Ugb2YgU1JHQkE8dWludDhfdD4g
eyAweEVCLCAweEVCLCAweEVCLCAweEZGIH0KIAogICAgIGVudW0gT3BlcmF0aW9uIHsgRGFya2Vu
LCBMaWdodGVuIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcAkocmV2aXNpb24gMjYzOTkzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzNCwzMCArMTMzNCwzMCBAQCBDb2xvciBS
ZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJCiB7CiAgICAgc3dpdGNoIChjc3NWYWx1
ZUlkKSB7CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdExpbms6Ci0gICAgICAgIHJldHVybiBvcHRp
b25zLmNvbnRhaW5zKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OkZvclZpc2l0ZWRMaW5rKSA/IFNpbXBs
ZUNvbG9yIHsgMHhGRjU1MUE4QiB9IDogU2ltcGxlQ29sb3IgeyAweEZGMDAwMEVFIH07CisgICAg
ICAgIHJldHVybiBvcHRpb25zLmNvbnRhaW5zKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OkZvclZpc2l0
ZWRMaW5rKSA/IG1ha2VTaW1wbGVDb2xvcigweDU1LCAweDFBLCAweDhCKSA6IG1ha2VTaW1wbGVD
b2xvcigweDAwLCAweDAwLCAweEVFKTsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0QWN0aXZlbGlu
azoKICAgICBjYXNlIENTU1ZhbHVlQWN0aXZldGV4dDoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNv
bG9yIHsgMHhGRkZGMDAwMCB9OworICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDB4RkYs
IDB4MDAsIDB4MDApOwogICAgIGNhc2UgQ1NTVmFsdWVMaW5rdGV4dDoKLSAgICAgICAgcmV0dXJu
IFNpbXBsZUNvbG9yIHsgMHhGRjAwMDBFRSB9OworICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNv
bG9yKDB4MDAsIDB4MDAsIDB4RUUpOwogICAgIGNhc2UgQ1NTVmFsdWVWaXNpdGVkdGV4dDoKLSAg
ICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjU1MUE4QiB9OworICAgICAgICByZXR1cm4g
bWFrZVNpbXBsZUNvbG9yKDB4NTUsIDB4MUEsIDB4OEIpOwogICAgIGNhc2UgQ1NTVmFsdWVBY3Rp
dmVib3JkZXI6CiAgICAgICAgIHJldHVybiBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1
ZUFjdGl2ZWJ1dHRvbnRleHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2Fz
ZSBDU1NWYWx1ZUFjdGl2ZWNhcHRpb246Ci0gICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4
RkZDQ0NDQ0MgfTsKKyAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigweENDLCAweENDLCAw
eENDKTsKICAgICBjYXNlIENTU1ZhbHVlQXBwd29ya3NwYWNlOgogICAgICAgICByZXR1cm4gQ29s
b3I6OndoaXRlOwogICAgIGNhc2UgQ1NTVmFsdWVCYWNrZ3JvdW5kOgotICAgICAgICByZXR1cm4g
U2ltcGxlQ29sb3IgeyAweEZGNjM2M0NFIH07CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29s
b3IoMHg2MywgMHg2MywgMHhDRSk7CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbmZhY2U6CiAgICAg
ICAgIHJldHVybiBDb2xvcjo6bGlnaHRHcmF5OwogICAgIGNhc2UgQ1NTVmFsdWVCdXR0b25oaWdo
bGlnaHQ6Ci0gICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkZEREREREQgfTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigweERELCAweERELCAweEREKTsKICAgICBjYXNlIENT
U1ZhbHVlQnV0dG9uc2hhZG93OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGODg4
ODg4IH07CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMHg4OCwgMHg4OCwgMHg4OCk7
CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbnRleHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6Ymxh
Y2s7CiAgICAgY2FzZSBDU1NWYWx1ZUNhcHRpb250ZXh0OgpAQCAtMTM3MSw5ICsxMzcxLDkgQEAg
Q29sb3IgUmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSQogICAgIGNhc2UgQ1NTVmFs
dWVGaWVsZHRleHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2FzZSBDU1NW
YWx1ZUdyYXl0ZXh0OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGODA4MDgwIH07
CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMHg4MCwgMHg4MCwgMHg4MCk7CiAgICAg
Y2FzZSBDU1NWYWx1ZUhpZ2hsaWdodDoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhG
RkI1RDVGRiB9OworICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDB4QjUsIDB4RDUsIDB4
RkYpOwogICAgIGNhc2UgQ1NTVmFsdWVIaWdobGlnaHR0ZXh0OgogICAgICAgICByZXR1cm4gQ29s
b3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVJbmFjdGl2ZWJvcmRlcjoKQEAgLTEzODEsOSAr
MTM4MSw5IEBAIENvbG9yIFJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUkKICAgICBj
YXNlIENTU1ZhbHVlSW5hY3RpdmVjYXB0aW9uOgogICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRl
OwogICAgIGNhc2UgQ1NTVmFsdWVJbmFjdGl2ZWNhcHRpb250ZXh0OgotICAgICAgICByZXR1cm4g
U2ltcGxlQ29sb3IgeyAweEZGN0Y3RjdGIH07CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29s
b3IoMHg3RiwgMHg3RiwgMHg3Rik7CiAgICAgY2FzZSBDU1NWYWx1ZUluZm9iYWNrZ3JvdW5kOgot
ICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGRkJGQ0M1IH07CisgICAgICAgIHJldHVy
biBtYWtlU2ltcGxlQ29sb3IoMHhGQiwgMHhGQywgMHhDNSk7CiAgICAgY2FzZSBDU1NWYWx1ZUlu
Zm90ZXh0OgogICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVN
ZW51OgpAQCAtMTM5NSwxOSArMTM5NSwxOSBAQCBDb2xvciBSZW5kZXJUaGVtZTo6c3lzdGVtQ29s
b3IoQ1NTVmFsdWVJCiAgICAgY2FzZSBDU1NWYWx1ZVRleHQ6CiAgICAgICAgIHJldHVybiBDb2xv
cjo6YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZVRocmVlZGRhcmtzaGFkb3c6Ci0gICAgICAgIHJl
dHVybiBTaW1wbGVDb2xvciB7IDB4RkY2NjY2NjYgfTsKKyAgICAgICAgcmV0dXJuIG1ha2VTaW1w
bGVDb2xvcigweDY2LCAweDY2LCAweDY2KTsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkZmFjZToK
ICAgICAgICAgcmV0dXJuIENvbG9yOjpsaWdodEdyYXk7CiAgICAgY2FzZSBDU1NWYWx1ZVRocmVl
ZGhpZ2hsaWdodDoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkRERERERCB9Owor
ICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDB4REQsIDB4REQsIDB4REQpOwogICAgIGNh
c2UgQ1NTVmFsdWVUaHJlZWRsaWdodHNoYWRvdzoKICAgICAgICAgcmV0dXJuIENvbG9yOjpsaWdo
dEdyYXk7CiAgICAgY2FzZSBDU1NWYWx1ZVRocmVlZHNoYWRvdzoKLSAgICAgICAgcmV0dXJuIFNp
bXBsZUNvbG9yIHsgMHhGRjg4ODg4OCB9OworICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9y
KDB4ODgsIDB4ODgsIDB4ODgpOwogICAgIGNhc2UgQ1NTVmFsdWVXaW5kb3c6CiAgICAgICAgIHJl
dHVybiBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1ZVdpbmRvd2ZyYW1lOgotICAgICAg
ICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGQ0NDQ0NDIH07CisgICAgICAgIHJldHVybiBtYWtl
U2ltcGxlQ29sb3IoMHhDQywgMHhDQywgMHhDQyk7CiAgICAgY2FzZSBDU1NWYWx1ZVdpbmRvd3Rl
eHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgZGVmYXVsdDoKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2FpdGEuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2FpdGEuY3BwCShyZXZp
c2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVBZHdh
aXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDEwIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBjb25zdCBpbnQgdGV4dEZpZWxkQm9yZGVyU2l6ZSA9IDE7Ci1zdGF0
aWMgY29uc3QgQ29sb3IgdGV4dEZpZWxkQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA1
LCAxOTksIDE5NCk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgdGV4dEZpZWxkQm9yZGVyRGlzYWJsZWRD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMTMsIDIwOCwgMjA0KTsKLXN0YXRpYyBjb25zdCBDb2xv
ciB0ZXh0RmllbGRCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1
NSk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgdGV4dEZpZWxkQmFja2dyb3VuZERpc2FibGVkQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMjUyLCAyNTIsIDI1Mik7CitzdGF0aWMgY29uc3RleHByIGF1dG8g
dGV4dEZpZWxkQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA1LCAxOTksIDE5NCk7Citz
dGF0aWMgY29uc3RleHByIGF1dG8gdGV4dEZpZWxkQm9yZGVyRGlzYWJsZWRDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigyMTMsIDIwOCwgMjA0KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB0ZXh0Rmll
bGRCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSk7CitzdGF0
aWMgY29uc3RleHByIGF1dG8gdGV4dEZpZWxkQmFja2dyb3VuZERpc2FibGVkQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMjUyLCAyNTIsIDI1Mik7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWVudUxp
c3RCdXR0b25BcnJvd1NpemUgPSAxNjsKIHN0YXRpYyBjb25zdCBpbnQgbWVudUxpc3RCdXR0b25G
b2N1c09mZnNldCA9IC0zOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1lbnVMaXN0QnV0dG9uUGFk
ZGluZyA9IDU7CkBAIC01NywyMyArNTcsMjMgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHByb2dy
ZXNzQWN0aXZpdHlCbAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHByb2dyZXNzQW5pbWF0aW9uRnJh
bWVDb3VudCA9IDc1Owogc3RhdGljIGNvbnN0IFNlY29uZHMgcHJvZ3Jlc3NBbmltYXRpb25GcmFt
ZVJhdGUgPSAzM19tczsgLy8gMzBmcHMuCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHJvZ3Jlc3NC
YXJTaXplID0gNjsKLXN0YXRpYyBjb25zdCBDb2xvciBwcm9ncmVzc0JhckJvcmRlckNvbG9yID0g
bWFrZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOwotc3RhdGljIGNvbnN0IENvbG9yIHByb2dy
ZXNzQmFyQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyNSwgMjIyLCAyMTkpOwor
c3RhdGljIGNvbnN0ZXhwciBhdXRvIHByb2dyZXNzQmFyQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxl
Q29sb3IoMjA1LCAxOTksIDE5NCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcHJvZ3Jlc3NCYXJC
YWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjI1LCAyMjIsIDIxOSk7CiBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgc2xpZGVyVHJhY2tTaXplID0gNjsKIHN0YXRpYyBjb25zdCBpbnQgc2xp
ZGVyVHJhY2tCb3JkZXJTaXplID0gMTsKLXN0YXRpYyBjb25zdCBDb2xvciBzbGlkZXJUcmFja0Jv
cmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOwotc3RhdGljIGNvbnN0
IENvbG9yIHNsaWRlclRyYWNrQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyNSwg
MjIyLCAyMTkpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlclRyYWNrQm9yZGVyQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMjA1LCAxOTksIDE5NCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8g
c2xpZGVyVHJhY2tCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjI1LCAyMjIsIDIx
OSk7CiBzdGF0aWMgY29uc3QgaW50IHNsaWRlclRyYWNrRm9jdXNPZmZzZXQgPSAyOwogc3RhdGlj
IGNvbnN0IGludCBzbGlkZXJUaHVtYlNpemUgPSAyMDsKIHN0YXRpYyBjb25zdCBpbnQgc2xpZGVy
VGh1bWJCb3JkZXJTaXplID0gMTsKLXN0YXRpYyBjb25zdCBDb2xvciBzbGlkZXJUaHVtYkJvcmRl
ckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOwotc3RhdGljIGNvbnN0IENv
bG9yIHNsaWRlclRodW1iQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI0NCwgMjQy
LCAyNDEpOwotc3RhdGljIGNvbnN0IENvbG9yIHNsaWRlclRodW1iQmFja2dyb3VuZEhvdmVyZWRD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDgsIDI0OCwgMjQ3KTsKLXN0YXRpYyBjb25zdCBDb2xv
ciBzbGlkZXJUaHVtYkJhY2tncm91bmREaXNhYmxlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI0
NCwgMjQyLCAyNDEpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlclRodW1iQm9yZGVyQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA1LCAxOTksIDE5NCk7CitzdGF0aWMgY29uc3RleHByIGF1
dG8gc2xpZGVyVGh1bWJCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjQ0LCAyNDIs
IDI0MSk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyVGh1bWJCYWNrZ3JvdW5kSG92ZXJl
ZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI0OCwgMjQ4LCAyNDcpOworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIHNsaWRlclRodW1iQmFja2dyb3VuZERpc2FibGVkQ29sb3IgPSBtYWtlU2ltcGxlQ29s
b3IoMjQ0LCAyNDIsIDI0MSk7CiAjaWYgRU5BQkxFKFZJREVPKQotc3RhdGljIGNvbnN0IENvbG9y
IG1lZGlhU2xpZGVyVHJhY2tCYWNrZ3JvdW5kY29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoNzcsIDc3
LCA3Nyk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgbWVkaWFTbGlkZXJUcmFja0J1ZmZlcmVkQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMTczLCAxNzMsIDE3Myk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgbWVk
aWFTbGlkZXJUcmFja0FjdGl2ZUNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIp
Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1lZGlhU2xpZGVyVHJhY2tCYWNrZ3JvdW5kY29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoNzcsIDc3LCA3Nyk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gbWVk
aWFTbGlkZXJUcmFja0J1ZmZlcmVkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTczLCAxNzMsIDE3
Myk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gbWVkaWFTbGlkZXJUcmFja0FjdGl2ZUNvbG9yID0g
bWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0o
R1RLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgJKHJl
dmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBDb2xvciBwbGF0Zm9ybVRhcEhpZ2hsaWdo
dENvbG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU2ltcGxlQ29sb3IgeyAweDREMUExQTFB
IH07IH0KKyAgICBDb2xvciBwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDB4MUEsIDB4MUEsIDB4MUEsIDB4NEQpOyB9CiAj
ZW5kaWYKIAogICAgIGJvb2wgc2hvdWxkSGF2ZVNwaW5CdXR0b24oY29uc3QgSFRNTElucHV0RWxl
bWVudCYpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5tbQkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MTYsMTAgKzkxNiwx
MCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvCiAKICAgICBjb25z
dCBmbG9hdCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uID0gcmVjdC55KCkgKyB2ZXJ0aWNhbE9m
ZnNldDsKICAgICBhdXRvIHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVu
dDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9z
aXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsg
cHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKLSAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JT
dG9wKDAuMCwgbWFrZVNpbXBsZUNvbG9yKDB4OGQsIDB4OGQsIDB4OGQpKTsKLSAgICBzdHJva2VH
cmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIG1ha2VTaW1wbGVDb2xvcigweGVlLCAweGVlLCAw
eGVlKSk7Ci0gICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjU1LCBtYWtlU2ltcGxl
Q29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwotICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0
b3AoMS4wLCBtYWtlU2ltcGxlQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOworICAgIHN0cm9rZUdy
YWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBtYWtlU2ltcGxlQ29sb3IoMHg4RCwgMHg4RCwgMHg4
RCkpOworICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC40NSwgbWFrZVNpbXBsZUNv
bG9yKDB4RUUsIDB4RUUsIDB4RUUpKTsKKyAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9w
KDAuNTUsIG1ha2VTaW1wbGVDb2xvcigweEVFLCAweEVFLCAweEVFKSk7CisgICAgc3Ryb2tlR3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIG1ha2VTaW1wbGVDb2xvcigweDhELCAweDhELCAweDhE
KSk7CiAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKHN0cm9rZUdyYWRpZW50
KSk7CiAKICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwpAQCAtMTM4Miwx
MCArMTM4MiwxMCBAQCBDb2xvciBSZW5kZXJUaGVtZUlPUzo6c3lzdGVtQ29sb3IoQ1NTVmFsCiBj
b25zdCBDR1NpemUgYXR0YWNobWVudFNpemUgPSB7IDE2MCwgMTE5IH07CiAKIGNvbnN0IENHRmxv
YXQgYXR0YWNobWVudEJvcmRlclJhZGl1cyA9IDE2OwotY29uc3RleHByIFNpbXBsZUNvbG9yIGF0
dGFjaG1lbnRCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDQsIDIwNCwgMjA0KTsKK2Nv
bnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDQs
IDIwNCwgMjA0KTsKIHN0YXRpYyBDR0Zsb2F0IGF0dGFjaG1lbnRCb3JkZXJUaGlja25lc3MgPSAx
OwogCi1jb25zdGV4cHIgU2ltcGxlQ29sb3IgYXR0YWNobWVudFByb2dyZXNzQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMjIyLCAyMjIsIDIyMik7Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50UHJv
Z3Jlc3NDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMjIsIDIyMiwgMjIyKTsKIGNvbnN0IENHRmxv
YXQgYXR0YWNobWVudFByb2dyZXNzQm9yZGVyVGhpY2tuZXNzID0gMzsKIAogY29uc3QgQ0dGbG9h
dCBhdHRhY2htZW50UHJvZ3Jlc3NTaXplID0gMzY7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTczNywx
MSArNzM3LDExIEBAIENvbG9yIFJlbmRlclRoZW1lTWFjOjpzeXN0ZW1Db2xvcihDU1NWYWwKICAg
ICAgICAgY2FzZSBDU1NWYWx1ZVRocmVlZGZhY2U6CiAgICAgICAgICAgICAvLyBXZSBzZWxlY3Rl
ZCB0aGlzIHZhbHVlIGluc3RlYWQgb2YgW05TQ29sb3IgY29udHJvbENvbG9yXSB0byBhdm9pZCB3
ZWJzaXRlIGluY29tcGF0aWJpbGl0aWVzLgogICAgICAgICAgICAgLy8gV2UgbWF5IHdhbnQgdG8g
Y29uc2lkZXIgY2hhbmdpbmcgdG8gW05TQ29sb3IgY29udHJvbENvbG9yXSBzb21lIGRheS4KLSAg
ICAgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkZDMEMwQzAgfTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMHhDMCwgMHhDMCwgMHhDMCk7CiAKICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZUluZm9iYWNrZ3JvdW5kOgogICAgICAgICAgICAgLy8gTm8gY29ycmVzcG9uZGlu
ZyBOU0NvbG9yIGZvciB0aGlzIHNvIHdlIHVzZSBhIGhhcmQgY29kZWQgdmFsdWUuCi0gICAgICAg
ICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGRkJGQ0M1IH07CisgICAgICAgICAgICByZXR1
cm4gbWFrZVNpbXBsZUNvbG9yKDB4RkIsIDB4RkMsIDB4QzUpOwogCiAgICAgICAgIGNhc2UgQ1NT
VmFsdWVNZW51OgogICAgICAgICAgICAgcmV0dXJuIG1lbnVCYWNrZ3JvdW5kQ29sb3IoKTsKQEAg
LTc1MCwzMCArNzUwLDMwIEBAIENvbG9yIFJlbmRlclRoZW1lTWFjOjpzeXN0ZW1Db2xvcihDU1NW
YWwKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZWJvcmRlcjoKICAgICAgICAgICAgIC8vIEhh
cmRjb2RlZCB0byBhdm9pZCBleHBvc2luZyBhIHVzZXIgYXBwZWFyYW5jZSBwcmVmZXJlbmNlIHRv
IHRoZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5nLgogICAgICAgICAgICAgaWYgKGxvY2FsQXBwZWFy
YW5jZS51c2luZ0RhcmtBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgU2lt
cGxlQ29sb3IgeyAweEZGMUFBOUZGIH0sIENvbG9yOjpTZW1hbnRpYyB9OwotICAgICAgICAgICAg
cmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAweEZGMDA2N0Y0IH0sIENvbG9yOjpTZW1hbnRpYyB9Owor
ICAgICAgICAgICAgICAgIHJldHVybiB7IG1ha2VTaW1wbGVDb2xvcigweDFBLCAweEE5LCAweEZG
KSwgQ29sb3I6OlNlbWFudGljIH07CisgICAgICAgICAgICByZXR1cm4geyBtYWtlU2ltcGxlQ29s
b3IoMHgwMCwgMHg2NywgMHhGNCksIENvbG9yOjpTZW1hbnRpYyB9OwogCiAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVBcHBsZVN5c3RlbUNvbnRyb2xBY2NlbnQ6CiAgICAgICAgICAgICAvLyBIYXJkY29k
ZWQgdG8gYXZvaWQgZXhwb3NpbmcgYSB1c2VyIGFwcGVhcmFuY2UgcHJlZmVyZW5jZSB0byB0aGUg
d2ViIGZvciBmaW5nZXJwcmludGluZy4KICAgICAgICAgICAgIC8vIFNhbWUgY29sb3IgaW4gbGln
aHQgYW5kIGRhcmsgYXBwZWFyYW5jZXMuCi0gICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xv
ciB7IDB4RkYwMDdBRkYgfSwgQ29sb3I6OlNlbWFudGljIH07CisgICAgICAgICAgICByZXR1cm4g
eyBtYWtlU2ltcGxlQ29sb3IoMHgwMCwgMHg3QSwgMHhGRiksIENvbG9yOjpTZW1hbnRpYyB9Owog
CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVNlbGVjdGVkQ29udGVudEJhY2tncm91
bmQ6CiAgICAgICAgICAgICAvLyBIYXJkY29kZWQgdG8gYXZvaWQgZXhwb3NpbmcgYSB1c2VyIGFw
cGVhcmFuY2UgcHJlZmVyZW5jZSB0byB0aGUgd2ViIGZvciBmaW5nZXJwcmludGluZy4KICAgICAg
ICAgICAgIGlmIChsb2NhbEFwcGVhcmFuY2UudXNpbmdEYXJrQXBwZWFyYW5jZSgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiB7IFNpbXBsZUNvbG9yIHsgMHhGRjAwNThEMCB9LCBDb2xvcjo6U2Vt
YW50aWMgfTsKLSAgICAgICAgICAgIHJldHVybiB7IFNpbXBsZUNvbG9yIHsgMHhGRjAwNjNFMSB9
LCBDb2xvcjo6U2VtYW50aWMgfTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyBtYWtlU2ltcGxl
Q29sb3IoMHgwMCwgMHg1OCwgMHhEMCksIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAgICAg
cmV0dXJuIHsgbWFrZVNpbXBsZUNvbG9yKDB4MDAsIDB4NjMsIDB4RTEpLCBDb2xvcjo6U2VtYW50
aWMgfTsKIAogICAgICAgICBjYXNlIENTU1ZhbHVlSGlnaGxpZ2h0OgogICAgICAgICBjYXNlIENT
U1ZhbHVlQXBwbGVTeXN0ZW1TZWxlY3RlZFRleHRCYWNrZ3JvdW5kOgogICAgICAgICAgICAgLy8g
SGFyZGNvZGVkIHRvIGF2b2lkIGV4cG9zaW5nIGEgdXNlciBhcHBlYXJhbmNlIHByZWZlcmVuY2Ug
dG8gdGhlIHdlYiBmb3IgZmluZ2VycHJpbnRpbmcuCiAgICAgICAgICAgICBpZiAobG9jYWxBcHBl
YXJhbmNlLnVzaW5nRGFya0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4geyBT
aW1wbGVDb2xvciB7IDB4Q0MzRjYzOEIgfSwgQ29sb3I6OlNlbWFudGljIH07Ci0gICAgICAgICAg
ICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4OTk4MEJDRkUgfSwgQ29sb3I6OlNlbWFudGljIH07
CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVNpbXBsZUNvbG9yKDB4M0YsIDB4NjMsIDB4
OEIsIDB4Q0MpLCBDb2xvcjo6U2VtYW50aWMgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1ha2VT
aW1wbGVDb2xvcigweDgwLCAweEJDLCAweEZFLCAweDk5KSwgQ29sb3I6OlNlbWFudGljIH07CiAK
ICNpZiAhSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFw
cGxlU3lzdGVtQ29udGFpbmVyQm9yZGVyOgotICAgICAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9y
IHsgMHhGRkM1QzVDNSB9OworICAgICAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigweEM1
LCAweEM1LCAweEM1KTsKICNlbmRpZgogCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3Rl
bUV2ZW5BbHRlcm5hdGluZ0NvbnRlbnRCYWNrZ3JvdW5kOiB7CkBAIC0yNDEzLDggKzI0MTMsOCBA
QCBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRJY29uU2VsZWN0aW9uQm9yCiBjb25zdCBDR0Zsb2F0
IGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZFJhZGl1cyA9IDM7CiBjb25zdCBDR0Zsb2F0IGF0dGFj
aG1lbnRJY29uVG9UaXRsZU1hcmdpbiA9IDI7CiAKLWNvbnN0ZXhwciBTaW1wbGVDb2xvciBhdHRh
Y2htZW50SWNvbkJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCAzMCk7
Ci1jb25zdGV4cHIgU2ltcGxlQ29sb3IgYXR0YWNobWVudEljb25Cb3JkZXJDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1LCAxMjUpOworY29uc3RleHByIGF1dG8gYXR0YWNobWVu
dEljb25CYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMzApOworY29u
c3RleHByIGF1dG8gYXR0YWNobWVudEljb25Cb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigy
NTUsIDI1NSwgMjU1LCAxMjUpOwogCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRUaXRsZUZvbnRT
aXplID0gMTI7CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRUaXRsZUJhY2tncm91bmRSYWRpdXMg
PSAzOwpAQCAtMjQyMiwyMyArMjQyMiwyMyBAQCBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRUaXRs
ZUJhY2tncm91bmRQCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRUaXRsZU1heGltdW1XaWR0aCA9
IDEwMCAtIChhdHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kUGFkZGluZyAqIDIpOwogY29uc3QgQ0ZJ
bmRleCBhdHRhY2htZW50VGl0bGVNYXhpbXVtTGluZUNvdW50ID0gMjsKIAotY29uc3RleHByIFNp
bXBsZUNvbG9yIGF0dGFjaG1lbnRUaXRsZUluYWN0aXZlQmFja2dyb3VuZENvbG9yID0gbWFrZVNp
bXBsZUNvbG9yKDIwNCwgMjA0LCAyMDQsIDI1NSk7Ci1jb25zdGV4cHIgU2ltcGxlQ29sb3IgYXR0
YWNobWVudFRpdGxlSW5hY3RpdmVUZXh0Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTAwLCAxMDAs
IDEwMCwgMjU1KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRUaXRsZUluYWN0aXZlQmFja2dy
b3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNCwgMjA0LCAyMDQsIDI1NSk7Citjb25zdGV4
cHIgYXV0byBhdHRhY2htZW50VGl0bGVJbmFjdGl2ZVRleHRDb2xvciA9IG1ha2VTaW1wbGVDb2xv
cigxMDAsIDEwMCwgMTAwLCAyNTUpOwogCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRTdWJ0aXRs
ZUZvbnRTaXplID0gMTA7CiBjb25zdCBpbnQgYXR0YWNobWVudFN1YnRpdGxlV2lkdGhJbmNyZW1l
bnQgPSAxMDsKLWNvbnN0ZXhwciBTaW1wbGVDb2xvciBhdHRhY2htZW50U3VidGl0bGVUZXh0Q29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoODIsIDE0NSwgMjE0LCAyNTUpOworY29uc3RleHByIGF1dG8g
YXR0YWNobWVudFN1YnRpdGxlVGV4dENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDgyLCAxNDUsIDIx
NCwgMjU1KTsKIAogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJXaWR0aCA9IDMw
OwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJIZWlnaHQgPSA1OwogY29uc3Qg
Q0dGbG9hdCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJPZmZzZXQgPSAtOTsKIGNvbnN0IENHRmxvYXQg
YXR0YWNobWVudFByb2dyZXNzQmFyQm9yZGVyV2lkdGggPSAxOwotY29uc3RleHByIFNpbXBsZUNv
bG9yIGF0dGFjaG1lbnRQcm9ncmVzc0JhckJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xv
cigwLCAwLCAwLCA4OSk7Ci1jb25zdGV4cHIgU2ltcGxlQ29sb3IgYXR0YWNobWVudFByb2dyZXNz
QmFyRmlsbENvbG9yID0gQ29sb3I6OndoaXRlOwotY29uc3RleHByIFNpbXBsZUNvbG9yIGF0dGFj
aG1lbnRQcm9ncmVzc0JhckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDEy
OCk7Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50UHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgODkpOworY29uc3RleHByIGF1dG8gYXR0YWNobWVu
dFByb2dyZXNzQmFyRmlsbENvbG9yID0gQ29sb3I6OndoaXRlOworY29uc3RleHByIGF1dG8gYXR0
YWNobWVudFByb2dyZXNzQmFyQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwg
MTI4KTsKIAogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UGxhY2Vob2xkZXJCb3JkZXJSYWRpdXMg
PSA1OwotY29uc3RleHByIFNpbXBsZUNvbG9yIGF0dGFjaG1lbnRQbGFjZWhvbGRlckJvcmRlckNv
bG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDU2KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFj
aG1lbnRQbGFjZWhvbGRlckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDU2
KTsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFBsYWNlaG9sZGVyQm9yZGVyV2lkdGggPSAyOwog
Y29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UGxhY2Vob2xkZXJCb3JkZXJEYXNoTGVuZ3RoID0gNjsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403655</attachid>
            <date>2020-07-06 19:31:59 -0700</date>
            <delta_ts>2020-07-07 09:38:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213981-20200706193158.patch</filename>
            <type>text/plain</type>
            <size>60758</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCShyZXZpc2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUhhdmUuaAkod29ya2luZyBjb3B5KQpAQCAtNjIwLDE1ICs2MjAsMTUgQEAK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkKLSNkZWZpbmUgSEFWRV9QQVNTS0lU
X0JPVU5EX0lOVEVSRkFDRV9JREVOVElGSUVSIDEKKyNkZWZpbmUgSEFWRV9QQVNTS0lUX0JPVU5E
X0lOVEVSRkFDRV9JREVOVElGSUVSIDAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUw
MCkKLSNkZWZpbmUgSEFWRV9QQVNTS0lUX0lOU1RBTExNRU5UUyAxCisjZGVmaW5lIEhBVkVfUEFT
U0tJVF9JTlNUQUxMTUVOVFMgMAogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKQot
I2RlZmluZSBIQVZFX1BBU1NLSVRfUEFZTUVOVF9NRVRIT0RfQklMTElOR19BRERSRVNTIDEKKyNk
ZWZpbmUgSEFWRV9QQVNTS0lUX1BBWU1FTlRfTUVUSE9EX0JJTExJTkdfQUREUkVTUyAwCiAjZW5k
aWYKIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxNTAwKSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYzOTkzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTM1IEBACisyMDIwLTA3LTA2ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBQYXJ0IDIgb2YgU2ltcGxlQ29sb3Ig
YW5kIFNSR0JBPHVpbnQ4X3Q+IGFyZSBlc3NlbnRpYWxseSB0aGUgc2FtZSAtIGxldCdzIGNvbnZl
cmdlIHRoZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMzk4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IC0gUmVwbGFjZXMgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgU2ltcGxlQ29sb3IgYmFzZWQg
b24gYW4gQVJHQiB1aW50MzJfdCB3aXRoIFNSR0JBPHVpbnQ4X3Q+LgorICAgICAgICAtIFJlbW92
ZXMgU2ltcGxlQ29sb3IgY29uc3RydWN0b3IgdGFraW5nIGEgdWludDMyX3QuIENhbGxlcnMgdGhh
dCBzdGlsbCBuZWVkIHRvIGNvbnZlcnQgZnJvbSBBUkdCCisgICAgICAgICAgbm93IGRvIG1ha2VT
aW1wbGVDb2xvcihhc1NSR0JBKFBhY2tlZDo6QVJHQiB7IHZhbHVlIH0pKS4KKyAgICAgICAgLSBS
ZW1vdmVzIHZhbHVlKCkgYW5kIHZhbHVlQXNBUkdCKCkgbWVtYmVyIGZ1bmN0aW9ucyBmcm9tIFNp
bXBsZUNvbG9yLiBDYWxsZXJzIHRoYXQgbmVlZCBhIHBhY2tlZAorICAgICAgICAgIHJlcHJlc2Vu
dGF0aW9uIG5vdyBkbyBQYWNrZWQ6OkFSR0IgeyBzaW1wbGVDb2xvci5hc1NSR0JBPHVpbnQ4X3Q+
KCkgfS52YWx1ZS4KKworICAgICAgICAqIGNzcy9TdHlsZUNvbG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdvcmQpOgorICAgICAgICBVc2UgYXNTUkdC
QShQYWNrZWQ6OkFSR0J7Li4ufSkgdG8gY29uc3R1Y3QgdGhlIGNvbG9yLgorCisgICAgICAgICog
Y3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zmlu
aXNoUGFyc2luZ05hbWVkQ29sb3IpOgorICAgICAgICBVc2UgYXNTUkdCQShQYWNrZWQ6OkFSR0J7
Li4ufSkgKG9yIGluIG9uZSBjYXNlLCBQYWNrZWQ6OlJHQkEpIHRvIGNvbnN0dWN0IHRoZSBjb2xv
ci4KKyAgICAgICAgVGhlc2UgY2FuIGFsbW9zdCBjZXJ0YWlubHkgYmUgc2ltcGxpZmllZCwgYnV0
IGluIHRoZSBpbnRlcmVzdCBvZiBrZWVwaW5nIHRoaW5ncyBzbWFsbGlzaCwKKyAgICAgICAgSSBo
YXZlIGxlZnQgdGhhdCBmb3IgYSBzdWJzZXF1ZW50IGNoYW5nZS4KKworICAgICAgICAqIGVkaXRp
bmcvQ29tcG9zaXRpb25IaWdobGlnaHQuaDoKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIGF1dG8v
bWFrZVNpbXBsZUNvbG9yLgorCisgICAgICAgICogcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3Zl
cmxheUNvY29hLm1tOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgbWFrZVNpbXBsZUNvbG9yLgor
CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbzo6SGlzdG9yaWNN
ZW1vcnlDYXRlZ29yeUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yaWNSZXNvdXJjZVVz
YWdlRGF0YTo6SGlzdG9yaWNSZXNvdXJjZVVzYWdlRGF0YSk6CisgICAgICAgIFN3aXRjaCB0byB1
c2luZyBhdXRvL21ha2VTaW1wbGVDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL2Fkd2FpdGEv
U2Nyb2xsYmFyVGhlbWVBZHdhaXRhLmNwcDoKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIGF1dG8v
bWFrZVNpbXBsZUNvbG9yLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAgICAgIC0gU3dpdGNo
IHRvIHVzaW5nIGF1dG8vbWFrZVNpbXBsZUNvbG9yIGZvciBuYW1lZCBjb2xvcnMuCisgICAgICAg
IC0gU3dpdGNoIHRvIHN0b3JpbmcvZW5jb2RpbmcgdGhlIGlubGluZSBTaW1wbGVDb2xvciBhcyBh
IFBhY2tlZDo6UkdCQSB2YWx1ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
QmxlbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmQpOgorICAgICAgICBVcGRhdGUg
Zm9yIG5ldyBuYW1lIG9mIGNsYW1wVG9Db21wb25lbnRCeXRlcy4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhY2tlZDo6UkdC
QTo6UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpQYWNrZWQ6OkFSR0I6OkFSR0IpOgorICAgICAg
ICAoV2ViQ29yZTo6YXNTUkdCQSk6CisgICAgICAgIFJlbmFtZSBXZWJDb3JlOjpBUkdCIHRvIFdl
YkNvcmU6OlBhY2tlZDo6QVJHQi4gQWRkcyBjb21wYW5pb24sIFdlYkNvcmU6OlBhY2tlZDo6UkdC
QS4gQW5kIGFkZHMgY29uc3RydWN0b3JzCisgICAgICAgIHdoaWNoIG1ha2UgYSBwYWNrZWQgdHlw
ZSBmcm9tIGFuIFNSR0JBPHVpbnQ4X3Q+LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNsYW1wVG9Db21wb25lbnRCeXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OmNsYW1wVG9Db21wb25lbnRGbG9hdCk6CisgICAgICAgIEV4
dHJhY3Qgb3V0IGhlbHBlciBmdW5jdGlvbnMgd2hpY2gganVzdCBkbyB0aGUgY2xhbXBpbmcgZm9y
IHRoZSB0eXBlLiAKKworICAgICAgICAoV2ViQ29yZTo6Y2xhbXBUb0NvbXBvbmVudEJ5dGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OmNsYW1wVG9Db21wb25lbnRGbG9hdHMpOgorICAgICAgICBSZW5h
bWUgY29udmVyc2lvbiBmdW5jdGlvbnMgdGhhdCBqdXN0IGNsYW1wIHRvIHVzZSAiY2xhbXAiIHBy
ZWZpeCByYXRoZXIgdGhhbiAiY29udmVydCIuIE1ha2UgdXNlCisgICAgICAgIG9mIGV4dHJhY3Rl
ZCBoZWxwZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3Rv
cmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjpibGVuZFBpeGVsKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjpwaXhlbFZhbHVlIGNvbnN0KToK
KyAgICAgICAgVXBkYXRlIHVzaW5nIG5ldyBwYWNrZWQgY29sb3IgdHlwZXMgYW5kIGZ1bnRpb25z
LiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVDb2xvcjo6U2ltcGxlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
U2ltcGxlQ29sb3I6OmFscGhhQ29tcG9uZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUNvbG9yOjphbHBoYUNvbXBvbmVudEFzRmxvYXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2ltcGxlQ29sb3I6OmlzT3BhcXVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBs
ZUNvbG9yOjppc1Zpc2libGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6
OmNvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNvbG9yOjpp
bnZlcnRlZENvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNv
bG9yOjphc1NSR0JBIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNvbG9yOjpnZXQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNpbXBsZUNvbG9yOjp2YWx1ZUFzQVJHQiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVDb2xvcjo6dmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlQ29sb3I6OnJlZENvbXBvbmVudCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaW1wbGVDb2xvcjo6Z3JlZW5Db21wb25lbnQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6OmJsdWVDb21wb25lbnQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAtIFJlbW92ZXMgY29uc3RydWN0b3IgdGFraW5nIGFuIEFSR0IgdWlu
dDMyX3QuCisgICAgICAgIC0gUmVtb3ZlcyB2YWx1ZUFzQVJHQigpL3ZhbHVlKCkgZnVuY3Rpb25z
IChjYW4gdXNlIFBhY2tlZDo6QVJHQiBkaXJlY3RseSBpZiBuZWVkZWQpLgorICAgICAgICAtIFN3
aXRjaGVzIGludGVybmFsIHJlcHJlc2VudGF0aW9uIHRvIFNSR0JBPHVpbnQ4X3Q+LgorICAgICAg
ICAtIFN0cmVhbWxpbmUgbWFrZVNpbXBsZUNvbG9yIGZ1bmN0aW9ucyB0byB1c2Ugc2hhcmVkIGhl
bHBlcnMgZnJvbSBDb2xvclV0aWxpdGllcy5oCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6Om5zQ29sb3IpOgorICAgICAgICBVc2UgUGFja2VkOjpSR0JBIHRvIGV4dHJhY3QgdWludDMy
X3QgZm9yIHF1aWNrIGxvb2t1cCBvZiB0cmFuc3BhcmVudC93aGl0ZS9ibGFjayBTaW1wbGVDb2xv
cnMuIERlc3BpdGUgdGhlCisgICAgICAgIGxlbmd0aCBvZiB0aGUgY2FsbHMsIFNpbXBsZUNvbG9y
IGlzIGZ1bGx5IGNvbnN0ZXhwciwgc28gdGhlc2UgYWN0dWFsbHkgY29sbGFwc2UgZG93biB0byB0
aGUgdWludDMyX3QgcmVwcmVzZW50YXRpb24KKyAgICAgICAgYXQgY29tcGlsZSB0aW1lLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0RvdHNGb3JEb2N1bWVudE1h
cmtlcik6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRvL21ha2VTaW1wbGVDb2xvci4KKwor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdERldmljZXMpOgorICAgICAgICBTd2l0Y2ggdG8g
dXNpbmcgbWFrZVNpbXBsZUNvbG9yLgorCisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6ZHJhd0JveGVzKToKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIGF1dG8vbWFrZVNp
bXBsZUNvbG9yLgorCisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRyYWNrQmFj
a2dyb3VuZCk6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBtYWtlU2ltcGxlQ29sb3IuCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck9iamVjdDo6Y2FsY3VsYXRlQm9yZGVyU3R5bGVDb2xvcik6CisgICAgICAgIFVwZGF0ZSBj
b21tZW50IHRvIHVzZSBwZXItY29tcG9uZW50IHZhbHVlcy4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6c3lzdGVt
Q29sb3IgY29uc3QpOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgbWFrZVNpbXBsZUNvbG9yLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQWR3YWl0YS5jcHA6CisgICAgICAgIFN3
aXRjaCB0byB1c2luZyBhdXRvL21ha2VTaW1wbGVDb2xvci4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToK
KyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIGF1dG8vbWFrZVNpbXBsZUNvbG9yLgorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVNYWM6OnN5c3RlbUNvbG9yIGNvbnN0KToKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIGF1
dG8vbWFrZVNpbXBsZUNvbG9yLgorCiAyMDIwLTA3LTA2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiAocjI2Mzk3Nyk6IFsgaU9TIERlYnVnIFdL
MiBdIDM2IGZhc3QgZm9ybSBhbmQgd2ViLXBsYXRmb3JtIHRlc3QgY29uc2lzdGVudGx5IGNyYXNo
aW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVDb2xvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQ29sb3IuY3BwCShyZXZpc2lvbiAyNjM5NzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVDb2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDcgKzQxLDcgQEAgQ29sb3IgU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29yZChDU1NWYQogewog
ICAgIGlmIChjb25zdCBjaGFyKiB2YWx1ZU5hbWUgPSBnZXRWYWx1ZU5hbWUoa2V5d29yZCkpIHsK
ICAgICAgICAgaWYgKGNvbnN0IE5hbWVkQ29sb3IqIG5hbWVkQ29sb3IgPSBmaW5kQ29sb3IodmFs
dWVOYW1lLCBzdHJsZW4odmFsdWVOYW1lKSkpCi0gICAgICAgICAgICByZXR1cm4gU2ltcGxlQ29s
b3IgeyBuYW1lZENvbG9yLT5BUkdCVmFsdWUgfTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlU2lt
cGxlQ29sb3IoYXNTUkdCQShQYWNrZWQ6OkFSR0IgeyBuYW1lZENvbG9yLT5BUkdCVmFsdWUgfSkp
OwogICAgIH0KIAogICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc3lzdGVtQ29s
b3Ioa2V5d29yZCwgb3B0aW9ucyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlckZhc3RQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCShyZXZpc2lvbiAyNjM5NzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxNCwyMSArNDE0LDI4IEBAIHN0YXRpYyBPcHRpb25hbDxTaW1wbGVDb2xvcj4gZmluaXNo
UGFyc2kKICAgICBzd2l0Y2ggKGxlbmd0aCkgewogICAgIGNhc2UgMzoKICAgICAgICAgLy8gI2Fi
YyBjb252ZXJ0cyB0byAjYWFiYmNjCi0gICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkYw
MDAwMDAKKyAgICAgICAgLy8gRklYTUU6IFJlcGxhY2UgY29udmVyc2lvbiB0byBQYWNrZWQ6OkFS
R0Igd2l0aCBzaW1wbGVyIGJpdCBtYXRoIHRvIGNvbnN0cnVjdAorICAgICAgICAvLyB0aGUgU1JH
QkE8dWludDhfdD4gZGlyZWN0bHkuCisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoYXNT
UkdCQShQYWNrZWQ6OkFSR0IgeworICAgICAgICAgICAgICAgMHhGRjAwMDAwMAogICAgICAgICAg
ICAgfCAodmFsdWUgJiAweEYwMCkgPDwgMTIgfCAodmFsdWUgJiAweEYwMCkgPDwgOAogICAgICAg
ICAgICAgfCAodmFsdWUgJiAweEYwKSA8PCA4IHwgKHZhbHVlICYgMHhGMCkgPDwgNAotICAgICAg
ICAgICAgfCAodmFsdWUgJiAweEYpIDw8IDQgfCAodmFsdWUgJiAweEYpIH07CisgICAgICAgICAg
ICB8ICh2YWx1ZSAmIDB4RikgPDwgNCB8ICh2YWx1ZSAmIDB4RikgfSkpOwogICAgIGNhc2UgNDoK
ICAgICAgICAgLy8gI2FiY2QgY29udmVydHMgdG8gZGRhYWJiY2Mgc2luY2UgYWxwaGEgYnl0ZXMg
YXJlIHRoZSBoaWdoIGJ5dGVzLgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAodmFsdWUg
JiAweEYpIDw8IDI4IHwgKHZhbHVlICYgMHhGKSA8PCAyNAorICAgICAgICAvLyBGSVhNRTogUmVw
bGFjZSBjb252ZXJzaW9uIHRvIFBhY2tlZDo6QVJHQiB3aXRoIHNpbXBsZXIgYml0IG1hdGggdG8g
Y29uc3RydWN0CisgICAgICAgIC8vIHRoZSBTUkdCQTx1aW50OF90PiBkaXJlY3RseS4KKyAgICAg
ICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcihhc1NSR0JBKFBhY2tlZDo6QVJHQiB7CisgICAgICAg
ICAgICAgICh2YWx1ZSAmIDB4RikgPDwgMjggfCAodmFsdWUgJiAweEYpIDw8IDI0CiAgICAgICAg
ICAgICB8ICh2YWx1ZSAmIDB4RjAwMCkgPDwgOCB8ICh2YWx1ZSAmIDB4RjAwMCkgPDwgNAogICAg
ICAgICAgICAgfCAodmFsdWUgJiAweEYwMCkgPDwgNCB8ICh2YWx1ZSAmIDB4RjAwKQotICAgICAg
ICAgICAgfCAodmFsdWUgJiAweEYwKSB8ICh2YWx1ZSAmIDB4RjApID4+IDQgfTsKKyAgICAgICAg
ICAgIHwgKHZhbHVlICYgMHhGMCkgfCAodmFsdWUgJiAweEYwKSA+PiA0IH0pKTsKICAgICBjYXNl
IDY6Ci0gICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkYwMDAwMDAgfCB2YWx1ZSB9Owor
ICAgICAgICAvLyBGSVhNRTogUmVwbGFjZSBjb252ZXJzaW9uIHRvIFBhY2tlZDo6QVJHQiB3aXRo
IHNpbXBsZXIgYml0IG1hdGggdG8gY29uc3RydWN0CisgICAgICAgIC8vIHRoZSBTUkdCQTx1aW50
OF90PiBkaXJlY3RseS4KKyAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcihhc1NSR0JBKFBh
Y2tlZDo6QVJHQiB7IDB4RkYwMDAwMDAgfCB2YWx1ZSB9KSk7CiAgICAgY2FzZSA4OgotICAgICAg
ICAvLyBXZSBwYXJzZWQgdGhlIHZhbHVlcyBpbnRvIFJHQkEgb3JkZXIsIGJ1dCB3ZSBzdG9yZSB0
aGVtIGluIEFSR0Igb3JkZXIuCi0gICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IHZhbHVlIDw8
IDI0IHwgdmFsdWUgPj4gOCB9OworICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKGFzU1JH
QkEoUGFja2VkOjpSR0JBIHsgdmFsdWUgfSkpOwogICAgIH0KICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogfQpAQCAtNTMyLDcgKzUzOSw3IEBAIHN0YXRpYyBPcHRpb25hbDxTaW1wbGVDb2xvcj4g
ZmluaXNoUGFyc2kKICAgICBhdXRvIG5hbWVkQ29sb3IgPSBmaW5kQ29sb3IoYnVmZmVyLCBsZW5n
dGgpOwogICAgIGlmICghbmFtZWRDb2xvcikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LSAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyBuYW1lZENvbG9yLT5BUkdCVmFsdWUgfTsKKyAgICBy
ZXR1cm4gbWFrZVNpbXBsZUNvbG9yKGFzU1JHQkEoUGFja2VkOjpBUkdCIHsgbmFtZWRDb2xvci0+
QVJHQlZhbHVlIH0pKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3Rh
dGljIE9wdGlvbmFsPFNpbXBsZUNvbG9yPiBwYXJzZU5hbWVkQ29sb3JJbnRlcm5hbChjb25zdCBD
aGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCShyZXZpc2lvbiAyNjM5
NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDkgKzQwLDkgQEAgc3RydWN0IENvbXBvc2l0aW9uSGlnaGxpZ2h0
IHsKICAgICB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHN0YXRpYyBjb25zdGV4
cHIgU2ltcGxlQ29sb3IgZGVmYXVsdENvbXBvc2l0aW9uRmlsbENvbG9yIHsgMHgzQ0FGQzBFMyB9
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBkZWZhdWx0Q29tcG9zaXRpb25GaWxsQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMHhBRiwgMHhDMCwgMHhFMywgMHgzQyk7CiAjZWxzZQotICAgIHN0
YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgZGVmYXVsdENvbXBvc2l0aW9uRmlsbENvbG9yIHsg
MHhGRkUxREQ1NSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBkZWZhdWx0Q29tcG9zaXRp
b25GaWxsQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMHhFMSwgMHhERCwgMHg1NSwgMHhGRik7CiAj
ZW5kaWYKIAogICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0IHsgMCB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5t
bQkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJj
ZVVzYWdlT3ZlcmxheUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsMTIgKzEyOCwxMiBA
QCBzdGF0aWMgQ0dDb2xvclJlZiBjcmVhdGVDb2xvcihmbG9hdCByLCBmCiBzdHJ1Y3QgSGlzdG9y
aWNNZW1vcnlDYXRlZ29yeUluZm8gewogICAgIEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKCkg
eyB9IC8vIE5lZWRlZCBmb3Igc3RkOjphcnJheS4KIAotICAgIEhpc3RvcmljTWVtb3J5Q2F0ZWdv
cnlJbmZvKHVuc2lnbmVkIGNhdGVnb3J5LCB1aW50MzJfdCBhcmdiLCBTdHJpbmcgbmFtZSwgYm9v
bCBzdWJjYXRlZ29yeSA9IGZhbHNlKQorICAgIEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKHVu
c2lnbmVkIGNhdGVnb3J5LCBTaW1wbGVDb2xvciBzaW1wbGVDb2xvciwgU3RyaW5nIG5hbWUsIGJv
b2wgc3ViY2F0ZWdvcnkgPSBmYWxzZSkKICAgICAgICAgOiBuYW1lKFdURk1vdmUobmFtZSkpCisg
ICAgICAgICwgY29sb3IoY2FjaGVkQ0dDb2xvcihzaW1wbGVDb2xvcikpCiAgICAgICAgICwgaXNT
dWJjYXRlZ29yeShzdWJjYXRlZ29yeSkKICAgICAgICAgLCB0eXBlKGNhdGVnb3J5KQogICAgIHsK
LSAgICAgICAgY29sb3IgPSBjYWNoZWRDR0NvbG9yKFNpbXBsZUNvbG9yIHsgYXJnYiB9KTsKICAg
ICB9CiAKICAgICBTdHJpbmcgbmFtZTsKQEAgLTE2MCwxOCArMTYwLDE4IEBAIHN0cnVjdCBIaXN0
b3JpY1Jlc291cmNlVXNhZ2VEYXRhIHsKIEhpc3RvcmljUmVzb3VyY2VVc2FnZURhdGE6Okhpc3Rv
cmljUmVzb3VyY2VVc2FnZURhdGEoKQogewogICAgIC8vIFZNIHRhZyBjYXRlZ29yaWVzLgotICAg
IGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkpTSklUXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdv
cnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpKU0pJVCwgMHhGRkZGNjBGRiwgIkpTIEpJVCIpOwotICAg
IGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkdpZ2FjYWdlXSA9IEhpc3RvcmljTWVtb3J5Q2F0
ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZSwgMHhGRjY1NEZGMCwgIkdpZ2FjYWdl
Iik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6SW1hZ2VzXSA9IEhpc3RvcmljTWVt
b3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpJbWFnZXMsIDB4RkZGRkZGMDAsICJJbWFn
ZXMiKTsKLSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpMYXllcnNdID0gSGlzdG9yaWNN
ZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkxheWVycywgMHhGRjAwRkZGRiwgIkxh
eWVycyIpOwotICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkxpYmNNYWxsb2NdID0gSGlz
dG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkxpYmNNYWxsb2MsIDB4RkYw
MEZGMDAsICJsaWJjIG1hbGxvYyIpOwotICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OmJt
YWxsb2NdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OmJtYWxs
b2MsIDB4RkZGRjYwNjAsICJibWFsbG9jIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29y
eTo6SXNvSGVhcF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6
SXNvSGVhcCwgMHhGRjgwOUY0MCwgIklzb0hlYXAiKTsKLSAgICBjYXRlZ29yaWVzW01lbW9yeUNh
dGVnb3J5OjpPdGhlcl0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29y
eTo6T3RoZXIsIDB4RkZDMEZGMDAsICJPdGhlciIpOworICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0
ZWdvcnk6OkpTSklUXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5
OjpKU0pJVCwgbWFrZVNpbXBsZUNvbG9yKDB4RkYsIDB4NjAsIDB4RkYsIDB4RkYpLCAiSlMgSklU
Iik7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6R2lnYWNhZ2VdID0gSGlzdG9yaWNN
ZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkdpZ2FjYWdlLCBtYWtlU2ltcGxlQ29s
b3IoMHg2NSwgMHg0RiwgMHhGMCwgMHhGRiksICJHaWdhY2FnZSIpOworICAgIGNhdGVnb3JpZXNb
TWVtb3J5Q2F0ZWdvcnk6OkltYWdlc10gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1v
cnlDYXRlZ29yeTo6SW1hZ2VzLCBtYWtlU2ltcGxlQ29sb3IoMHhGRiwgMHhGRiwgMHgwMCwgMHhG
RiksICJJbWFnZXMiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpMYXllcnNdID0g
SGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkxheWVycywgbWFrZVNp
bXBsZUNvbG9yKDB4MDAsIDB4RkYsIDB4RkYsIDB4RkYpLCAiTGF5ZXJzIik7CisgICAgY2F0ZWdv
cmllc1tNZW1vcnlDYXRlZ29yeTo6TGliY01hbGxvY10gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5
SW5mbyhNZW1vcnlDYXRlZ29yeTo6TGliY01hbGxvYywgbWFrZVNpbXBsZUNvbG9yKDB4MDAsIDB4
RkYsIDB4MDAsIDB4RkYpLCAibGliYyBtYWxsb2MiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNh
dGVnb3J5OjpibWFsbG9jXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVn
b3J5OjpibWFsbG9jLCBtYWtlU2ltcGxlQ29sb3IoMHhGRiwgMHg2MCwgMHg2MCwgMHhGRiksICJi
bWFsbG9jIik7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6SXNvSGVhcF0gPSBIaXN0
b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6SXNvSGVhcCwgbWFrZVNpbXBs
ZUNvbG9yKDB4ODAsIDB4OUYsIDB4NDAsIDB4RkYpLCAiSXNvSGVhcCIpOworICAgIGNhdGVnb3Jp
ZXNbTWVtb3J5Q2F0ZWdvcnk6Ok90aGVyXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1l
bW9yeUNhdGVnb3J5OjpPdGhlciwgbWFrZVNpbXBsZUNvbG9yKDB4QzAsIDB4RkYsIDB4MDAsIDB4
RkYpLCAiT3RoZXIiKTsKIAogICAgIC8vIFN1YiBjYXRlZ29yaWVzIChlLmcgYnJlYWtkb3duIG9m
IGJtYWxsb2MgdGFnLikKLSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHQ0hlYXBdID0g
SGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkdDSGVhcCwgMHhGRkEw
QTBGRiwgIkdDIGhlYXAiLCB0cnVlKTsKLSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpH
Q093bmVkXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ093
bmVkLCAweEZGRkZDMDYwLCAiR0Mgb3duZWQiLCB0cnVlKTsKKyAgICBjYXRlZ29yaWVzW01lbW9y
eUNhdGVnb3J5OjpHQ0hlYXBdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0
ZWdvcnk6OkdDSGVhcCwgbWFrZVNpbXBsZUNvbG9yKDB4QTAsIDB4QTAsIDB4RkYsIDB4RkYpLCAi
R0MgaGVhcCIsIHRydWUpOworICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkdDT3duZWRd
ID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkdDT3duZWQsIG1h
a2VTaW1wbGVDb2xvcigweEZGLCAweEMwLCAweDYwLCAweEZGKSwgIkdDIG93bmVkIiwgdHJ1ZSk7
CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gRW5zdXJlIHRoaXMgYWxpZ25zIHdpdGggUmVzb3Vy
Y2VVc2FnZURhdGEncyBjYXRlZ29yeSBvcmRlci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Fkd2FpdGEvU2Nyb2xsYmFyVGhlbWVBZHdhaXRhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hZHdhaXRhL1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHAJKHJl
dmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Fkd2FpdGEvU2Nyb2xs
YmFyVGhlbWVBZHdhaXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTMgKzQzLDEzIEBAIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBvdmVybGF5VGh1bWJTaXplID0KIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBtaW5pbXVtVGh1bWJTaXplID0gNDA7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgdGh1bWJT
aXplID0gNjsKIHN0YXRpYyBjb25zdCBkb3VibGUgc2Nyb2xsYmFyT3BhY2l0eSA9IDAuODsKLXN0
YXRpYyBjb25zdCBDb2xvciBzY3JvbGxiYXJCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29s
b3IoMjUyLCAyNTIsIDI1Mik7Ci1zdGF0aWMgY29uc3QgQ29sb3Igc2Nyb2xsYmFyQm9yZGVyQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMjIwLCAyMjMsIDIyNyk7Ci1zdGF0aWMgY29uc3QgQ29sb3Ig
b3ZlcmxheVRodW1iQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSwg
MTAwKTsKLXN0YXRpYyBjb25zdCBDb2xvciBvdmVybGF5VGh1bWJDb2xvciA9IG1ha2VTaW1wbGVD
b2xvcig0NiwgNTIsIDU0LCAxMDApOwotc3RhdGljIGNvbnN0IENvbG9yIHRodW1iSG92ZXJlZENv
bG9yID0gbWFrZVNpbXBsZUNvbG9yKDg2LCA5MSwgOTIpOwotc3RhdGljIGNvbnN0IENvbG9yIHRo
dW1iUHJlc3NlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI3LCAxMDYsIDIwMyk7Ci1zdGF0aWMg
Y29uc3QgQ29sb3IgdGh1bWJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigxMjYsIDEyOSwgMTMwKTsK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JvbGxiYXJCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2lt
cGxlQ29sb3IoMjUyLCAyNTIsIDI1Mik7CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2Nyb2xsYmFy
Qm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjIwLCAyMjMsIDIyNyk7CitzdGF0aWMgY29u
c3RleHByIGF1dG8gb3ZlcmxheVRodW1iQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1
LCAyNTUsIDI1NSwgMTAwKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBvdmVybGF5VGh1bWJDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcig0NiwgNTIsIDU0LCAxMDApOworc3RhdGljIGNvbnN0ZXhwciBh
dXRvIHRodW1iSG92ZXJlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDg2LCA5MSwgOTIpOworc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIHRodW1iUHJlc3NlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI3
LCAxMDYsIDIwMyk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gdGh1bWJDb2xvciA9IG1ha2VTaW1w
bGVDb2xvcigxMjYsIDEyOSwgMTMwKTsKIAogYm9vbCBTY3JvbGxiYXJUaGVtZUFkd2FpdGE6OnVz
ZXNPdmVybGF5U2Nyb2xsYmFycygpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDgg
KzM2LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3RleHByIFNpbXBs
ZUNvbG9yIGxpZ2h0ZW5lZEJsYWNrIHsgMHhGRjU0NTQ1NCB9Owotc3RhdGljIGNvbnN0ZXhwciBT
aW1wbGVDb2xvciBkYXJrZW5lZFdoaXRlIHsgMHhGRkFCQUJBQiB9Oworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIGxpZ2h0ZW5lZEJsYWNrID0gbWFrZVNpbXBsZUNvbG9yKDB4NTQsIDB4NTQsIDB4NTQs
IDB4RkYpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRhcmtlbmVkV2hpdGUgPSBtYWtlU2ltcGxl
Q29sb3IoMHhBQiwgMHhBQiwgMHhBQiwgMHhGRik7CiAKIENvbG9yOjpDb2xvcihjb25zdCBDb2xv
ciYgb3RoZXIpCiAgICAgOiBtX2NvbG9yRGF0YShvdGhlci5tX2NvbG9yRGF0YSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAkocmV2aXNpb24gMjYzOTc4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMTYzLDE0ICsxNjMsMTQgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJh
dG9yIEQyRDFfVkVDVE9SXzRGKCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBjb25zdGV4
cHIgU2ltcGxlQ29sb3IgYmxhY2sgeyAweEZGMDAwMDAwIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBTaW1wbGVDb2xvciB3aGl0ZSB7IDB4RkZGRkZGRkYgfTsKLSAgICBzdGF0aWMgY29uc3RleHBy
IFNpbXBsZUNvbG9yIGRhcmtHcmF5IHsgMHhGRjgwODA4MCB9OwotICAgIHN0YXRpYyBjb25zdGV4
cHIgU2ltcGxlQ29sb3IgZ3JheSB7IDB4RkZBMEEwQTAgfTsKLSAgICBzdGF0aWMgY29uc3RleHBy
IFNpbXBsZUNvbG9yIGxpZ2h0R3JheSB7IDB4RkZDMEMwQzAgfTsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIFNpbXBsZUNvbG9yIHRyYW5zcGFyZW50IHsgMHgwMDAwMDAwMCB9OwotICAgIHN0YXRpYyBj
b25zdGV4cHIgU2ltcGxlQ29sb3IgY3lhbiB7IDB4RkYwMEZGRkYgfTsKLSAgICBzdGF0aWMgY29u
c3RleHByIFNpbXBsZUNvbG9yIHllbGxvdyB7IDB4RkZGRkZGMDAgfTsKKyAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gYmxhY2sgPSBtYWtlU2ltcGxlQ29sb3IoMHgwMCwgMHgwMCwgMHgwMCk7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHdoaXRlID0gbWFrZVNpbXBsZUNvbG9yKDB4RkYsIDB4
RkYsIDB4RkYpOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBkYXJrR3JheSA9IG1ha2VTaW1w
bGVDb2xvcigweDgwLCAweDgwLCAweDgwKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZ3Jh
eSA9IG1ha2VTaW1wbGVDb2xvcigweEEwLCAweEEwLCAweEEwKTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGF1dG8gbGlnaHRHcmF5ID0gbWFrZVNpbXBsZUNvbG9yKDB4QzAsIDB4QzAsIDB4QzApOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byB0cmFuc3BhcmVudCA9IG1ha2VTaW1wbGVDb2xvcigw
eDAwLCAweDAwLCAweDAwLCAweDAwKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY3lhbiA9
IG1ha2VTaW1wbGVDb2xvcigweDAwLCAweEZGLCAweEZGKTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGF1dG8geWVsbG93ID0gbWFrZVNpbXBsZUNvbG9yKDB4RkYsIDB4RkYsIDB4MDApOwogCiAgICAg
Ym9vbCBpc0V4dGVuZGVkKCkgY29uc3QgeyByZXR1cm4gIShtX2NvbG9yRGF0YS5zaW1wbGVDb2xv
ckFuZEZsYWdzICYgaW52YWxpZFNpbXBsZUNvbG9yKTsgfQogICAgIGJvb2wgaXNTaW1wbGUoKSBj
b25zdCB7IHJldHVybiAhaXNFeHRlbmRlZCgpOyB9CkBAIC0zMDEsMTIgKzMwMSwxMiBAQCBpbmxp
bmUgY29uc3QgRXh0ZW5kZWRDb2xvciYgQ29sb3I6OmFzRXh0CiBpbmxpbmUgY29uc3QgU2ltcGxl
Q29sb3IgQ29sb3I6OmFzU2ltcGxlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNTaW1wbGUoKSk7
Ci0gICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fY29sb3JEYXRhLnNpbXBsZUNv
bG9yQW5kRmxhZ3MgPj4gMzIpIH07CisgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcihhc1NSR0JB
KFBhY2tlZDo6UkdCQSB7IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2NvbG9yRGF0YS5zaW1wbGVD
b2xvckFuZEZsYWdzID4+IDMyKSB9KSk7CiB9CiAKIGlubGluZSB2b2lkIENvbG9yOjpzZXRTaW1w
bGVDb2xvcihTaW1wbGVDb2xvciBzaW1wbGVDb2xvcikKIHsKLSAgICBtX2NvbG9yRGF0YS5zaW1w
bGVDb2xvckFuZEZsYWdzID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpbXBsZUNvbG9yLnZhbHVl
KCkpIDw8IDMyOworICAgIG1fY29sb3JEYXRhLnNpbXBsZUNvbG9yQW5kRmxhZ3MgPSBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oUGFja2VkOjpSR0JBIHsgc2ltcGxlQ29sb3IuYXNTUkdCQTx1aW50OF90
PigpIH0udmFsdWUpIDw8IDMyOwogICAgIHRhZ0FzVmFsaWQoKTsKIH0KIApAQCAtMzUwLDcgKzM1
MCw3IEBAIHZvaWQgQ29sb3I6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb24KICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgZW5jb2RlIHdoZXRoZXIgdGhlIGNvbG9yIGlzIHNlbWFudGljLgog
CiAgICAgZW5jb2RlciA8PCB0cnVlOwotICAgIGVuY29kZXIgPDwgYXNTaW1wbGUoKS52YWx1ZSgp
OworICAgIGVuY29kZXIgPDwgUGFja2VkOjpSR0JBIHsgYXNTaW1wbGUoKS5hc1NSR0JBPHVpbnQ4
X3Q+KCkgfS52YWx1ZTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTM5MCw3ICsz
OTAsNyBAQCBPcHRpb25hbDxDb2xvcj4gQ29sb3I6OmRlY29kZShEZWNvZGVyJiBkCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
LSAgICByZXR1cm4gQ29sb3IgeyBTaW1wbGVDb2xvciB7IHZhbHVlIH0gfTsKKyAgICByZXR1cm4g
Q29sb3IgeyBtYWtlU2ltcGxlQ29sb3IoYXNTUkdCQShQYWNrZWQ6OlJHQkEgeyB2YWx1ZSB9KSkg
fTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JCbGVuZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCbGVuZGluZy5jcHAJKHJldmlzaW9uIDI2Mzk3
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgQ29sb3IgYmxlbmQoY29uc3QgQ29s
b3ImIGZyb20sIGNvbnN0IENvbAogICAgIGF1dG8gcHJlbXVsdGlwbGllZEZyb20gPSBwcmVtdWx0
aXBsaWVkQ2VpbGluZyhmcm9tLnRvU1JHQkFMb3NzeTx1aW50OF90PigpKTsKICAgICBhdXRvIHBy
ZW11bHRpcGxpZWRUbyA9IHByZW11bHRpcGxpZWRDZWlsaW5nKHRvLnRvU1JHQkFMb3NzeTx1aW50
OF90PigpKTsKIAotICAgIGF1dG8gcHJlbXVsdGlwbGllZEJsZW5kZWQgPSBjb252ZXJ0VG9Db21w
b25lbnRCeXRlczxTUkdCQT4oCisgICAgYXV0byBwcmVtdWx0aXBsaWVkQmxlbmRlZCA9IGNsYW1w
VG9Db21wb25lbnRCeXRlczxTUkdCQT4oCiAgICAgICAgIFdlYkNvcmU6OmJsZW5kKHByZW11bHRp
cGxpZWRGcm9tLnJlZCwgcHJlbXVsdGlwbGllZFRvLnJlZCwgcHJvZ3Jlc3MpLAogICAgICAgICBX
ZWJDb3JlOjpibGVuZChwcmVtdWx0aXBsaWVkRnJvbS5ncmVlbiwgcHJlbXVsdGlwbGllZFRvLmdy
ZWVuLCBwcm9ncmVzcyksCiAgICAgICAgIFdlYkNvcmU6OmJsZW5kKHByZW11bHRpcGxpZWRGcm9t
LmJsdWUsIHByZW11bHRpcGxpZWRUby5ibHVlLCBwcm9ncmVzcyksCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCShyZXZpc2lvbiAyNjM5Nzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI0MCwxNiArMjQwLDQ0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0
ZXhwciBib29sIG9wZXIKIAogLy8gUGFja2VkIENvbG9yIEZvcm1hdHMKIAorbmFtZXNwYWNlIFBh
Y2tlZCB7CisKK3N0cnVjdCBSR0JBIHsKKyAgICBjb25zdGV4cHIgZXhwbGljaXQgUkdCQSh1aW50
MzJfdCByZ2JhKQorICAgICAgICA6IHZhbHVlIHsgcmdiYSB9CisgICAgeworICAgIH0KKworICAg
IGNvbnN0ZXhwciBleHBsaWNpdCBSR0JBKFNSR0JBPHVpbnQ4X3Q+IGNvbG9yKQorICAgICAgICA6
IHZhbHVlIHsgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNvbG9yLnJlZCA8PCAyNCB8IGNvbG9yLmdy
ZWVuIDw8IDE2IHwgY29sb3IuYmx1ZSA8PCA4IHwgY29sb3IuYWxwaGEpIH0KKyAgICB7CisgICAg
fQorCisgICAgdWludDMyX3QgdmFsdWU7Cit9OworCiBzdHJ1Y3QgQVJHQiB7CisgICAgY29uc3Rl
eHByIGV4cGxpY2l0IEFSR0IodWludDMyX3QgYXJnYikKKyAgICAgICAgOiB2YWx1ZSB7IGFyZ2Ig
fQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgZXhwbGljaXQgQVJHQihTUkdCQTx1aW50
OF90PiBjb2xvcikKKyAgICAgICAgOiB2YWx1ZSB7IHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb2xv
ci5hbHBoYSA8PCAyNCB8IGNvbG9yLnJlZCA8PCAxNiB8IGNvbG9yLmdyZWVuIDw8IDggfCBjb2xv
ci5ibHVlKSB9CisgICAgeworICAgIH0KKwogICAgIHVpbnQzMl90IHZhbHVlOwogfTsKIAotY29u
c3RleHByIEFSR0IgYXNBUkdCKFNSR0JBPHVpbnQ4X3Q+IGNvbG9yKQorfQorCitjb25zdGV4cHIg
U1JHQkE8dWludDhfdD4gYXNTUkdCQShQYWNrZWQ6OlJHQkEgY29sb3IpCiB7Ci0gICAgcmV0dXJu
IHsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbG9yLmFscGhhIDw8IDI0IHwgY29sb3IucmVkIDw8
IDE2IHwgY29sb3IuZ3JlZW4gPDwgOCB8IGNvbG9yLmJsdWUpIH07CisgICAgcmV0dXJuIHsgc3Rh
dGljX2Nhc3Q8dWludDhfdD4oY29sb3IudmFsdWUgPj4gMjQpLCBzdGF0aWNfY2FzdDx1aW50OF90
Pihjb2xvci52YWx1ZSA+PiAxNiksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGNvbG9yLnZhbHVlID4+
IDgpLCBzdGF0aWNfY2FzdDx1aW50OF90Pihjb2xvci52YWx1ZSkgfTsKIH0KIAotY29uc3RleHBy
IFNSR0JBPHVpbnQ4X3Q+IGFzU1JHQkEoQVJHQiBjb2xvcikKK2NvbnN0ZXhwciBTUkdCQTx1aW50
OF90PiBhc1NSR0JBKFBhY2tlZDo6QVJHQiBjb2xvcikKIHsKICAgICByZXR1cm4geyBzdGF0aWNf
Y2FzdDx1aW50OF90Pihjb2xvci52YWx1ZSA+PiAxNiksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGNv
bG9yLnZhbHVlID4+IDgpLCBzdGF0aWNfY2FzdDx1aW50OF90Pihjb2xvci52YWx1ZSksIHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KGNvbG9yLnZhbHVlID4+IDI0KSB9OwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAkocmV2
aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JV
dGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIFNSR0JBPHVpbnQ4
X3Q+IHByZW11bHRpcGxpZWRGbG9vcmluZyhTUkcKICAgICAgICAgcmV0dXJuIHsgMCwgMCwgMCwg
MCB9OwogICAgIGlmIChhID09IDI1NSkKICAgICAgICAgcmV0dXJuIGNvbG9yOwotICAgIHJldHVy
biBjb252ZXJ0VG9Db21wb25lbnRCeXRlczxTUkdCQT4oZmFzdERpdmlkZUJ5MjU1KHIgKiBhKSwg
ZmFzdERpdmlkZUJ5MjU1KGcgKiBhKSwgZmFzdERpdmlkZUJ5MjU1KGIgKiBhKSwgYSk7CisgICAg
cmV0dXJuIGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4oZmFzdERpdmlkZUJ5MjU1KHIgKiBh
KSwgZmFzdERpdmlkZUJ5MjU1KGcgKiBhKSwgZmFzdERpdmlkZUJ5MjU1KGIgKiBhKSwgYSk7CiB9
CiAKIFNSR0JBPHVpbnQ4X3Q+IHByZW11bHRpcGxpZWRDZWlsaW5nKFNSR0JBPHVpbnQ4X3Q+IGNv
bG9yKQpAQCAtODksNyArODksNyBAQCBTUkdCQTx1aW50OF90PiBwcmVtdWx0aXBsaWVkQ2VpbGlu
ZyhTUkdCCiAgICAgICAgIHJldHVybiB7IDAsIDAsIDAsIDAgfTsKICAgICBpZiAoYSA9PSAyNTUp
CiAgICAgICAgIHJldHVybiBjb2xvcjsKLSAgICByZXR1cm4gY29udmVydFRvQ29tcG9uZW50Qnl0
ZXM8U1JHQkE+KGZhc3REaXZpZGVCeTI1NShyICogYSArIDI1NCksIGZhc3REaXZpZGVCeTI1NShn
ICogYSArIDI1NCksIGZhc3REaXZpZGVCeTI1NShiICogYSArIDI1NCksIGEpOworICAgIHJldHVy
biBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KGZhc3REaXZpZGVCeTI1NShyICogYSArIDI1
NCksIGZhc3REaXZpZGVCeTI1NShnICogYSArIDI1NCksIGZhc3REaXZpZGVCeTI1NShiICogYSAr
IDI1NCksIGEpOwogfQogCiBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHVucHJlbXVsdGlwbGllZENv
bXBvbmVudEJ5dGUodWludDhfdCBjLCB1aW50OF90IGEpCkBAIC0xMDIsNyArMTAyLDcgQEAgU1JH
QkE8dWludDhfdD4gdW5wcmVtdWx0aXBsaWVkKFNSR0JBPHVpbgogICAgIGF1dG8gW3IsIGcsIGIs
IGFdID0gY29sb3I7CiAgICAgaWYgKCFhIHx8IGEgPT0gMjU1KQogICAgICAgICByZXR1cm4gY29s
b3I7Ci0gICAgcmV0dXJuIGNvbnZlcnRUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPih1bnByZW11bHRp
cGxpZWRDb21wb25lbnRCeXRlKHIsIGEpLCB1bnByZW11bHRpcGxpZWRDb21wb25lbnRCeXRlKGcs
IGEpLCB1bnByZW11bHRpcGxpZWRDb21wb25lbnRCeXRlKGIsIGEpLCBhKTsKKyAgICByZXR1cm4g
Y2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPih1bnByZW11bHRpcGxpZWRDb21wb25lbnRCeXRl
KHIsIGEpLCB1bnByZW11bHRpcGxpZWRDb21wb25lbnRCeXRlKGcsIGEpLCB1bnByZW11bHRpcGxp
ZWRDb21wb25lbnRCeXRlKGIsIGEpLCBhKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxp
dGllcy5oCShyZXZpc2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCwxNiBAQCBp
bmxpbmUgdWludDhfdCBjb252ZXJ0VG9Db21wb25lbnRCeXRlKGZsCiAgICAgcmV0dXJuIHN0ZDo6
Y2xhbXAoc3RkOjpscm91bmQoZiAqIDI1NS4wZiksIDBsLCAyNTVsKTsKIH0KIAorY29uc3RleHBy
IHVpbnQ4X3QgY2xhbXBUb0NvbXBvbmVudEJ5dGUoaW50IGMpCit7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoYywgMCwgMHhGRikpOworfQorCitjb25zdGV4cHIg
dWludDhfdCBjbGFtcFRvQ29tcG9uZW50RmxvYXQoZmxvYXQgZikKK3sKKyAgICByZXR1cm4gc3Rk
OjpjbGFtcChmLCAwLjBmLCAxLjBmKTsKK30KKwogY29uc3RleHByIGZsb2F0IGNvbnZlcnRUb0Nv
bXBvbmVudEZsb2F0KHVpbnQ4X3QgYnl0ZSkKIHsKICAgICByZXR1cm4gYnl0ZSAvIDI1NS4wZjsK
QEAgLTY1LDIwICs3NSwyMCBAQCB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUg
Q29sCiAgICAgcmV0dXJuIHsgY29udmVydFRvQ29tcG9uZW50Qnl0ZShjb21wb25lbnRzWzBdKSwg
Y29udmVydFRvQ29tcG9uZW50Qnl0ZShjb21wb25lbnRzWzFdKSwgY29udmVydFRvQ29tcG9uZW50
Qnl0ZShjb21wb25lbnRzWzJdKSwgY29udmVydFRvQ29tcG9uZW50Qnl0ZShjb21wb25lbnRzWzNd
KSB9OwogfQogCi10ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBl
PiBjb25zdGV4cHIgQ29sb3JUeXBlPHVpbnQ4X3Q+IGNvbnZlcnRUb0NvbXBvbmVudEJ5dGVzKGlu
dCByLCBpbnQgZywgaW50IGIsIGludCBhKQotewotICAgIHJldHVybiB7IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHN0ZDo6Y2xhbXAociwgMCwgMHhGRikpLCBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6
OmNsYW1wKGcsIDAsIDB4RkYpKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFtcChiLCAw
LCAweEZGKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoYSwgMCwgMHhGRikpIH07
Ci19Ci0KIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IGNv
bnN0ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0cyhjb25zdCBD
b2xvclR5cGU8dWludDhfdD4mIGNvbG9yKQogewogICAgIGF1dG8gY29tcG9uZW50cyA9IGFzQ29s
b3JDb21wb25lbnRzKGNvbG9yKTsKICAgICByZXR1cm4geyBjb252ZXJ0VG9Db21wb25lbnRGbG9h
dChjb21wb25lbnRzWzBdKSwgY29udmVydFRvQ29tcG9uZW50RmxvYXQoY29tcG9uZW50c1sxXSks
IGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0KGNvbXBvbmVudHNbMl0pLCBjb252ZXJ0VG9Db21wb25l
bnRGbG9hdChjb21wb25lbnRzWzNdKSB9OwogfQogCi10ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFt
ZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlPGZsb2F0PiBjb252ZXJ0
VG9Db21wb25lbnRGbG9hdHMoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKK3Rl
bXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBD
b2xvclR5cGU8dWludDhfdD4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzKGludCByLCBpbnQgZywgaW50
IGIsIGludCBhKQoreworICAgIHJldHVybiB7IGNsYW1wVG9Db21wb25lbnRCeXRlKHIpLCBjbGFt
cFRvQ29tcG9uZW50Qnl0ZShnKSwgY2xhbXBUb0NvbXBvbmVudEJ5dGUoYiksIGNsYW1wVG9Db21w
b25lbnRCeXRlKGEpIH07Cit9CisKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFt
ZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNsYW1wVG9Db21wb25lbnRG
bG9hdHMoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKIHsKLSAgICByZXR1cm4g
eyBzdGQ6OmNsYW1wKHIsIDAuMGYsIDEuMGYpLCBzdGQ6OmNsYW1wKGcsIDAuMGYsIDEuMGYpLCBz
dGQ6OmNsYW1wKGIsIDAuMGYsIDEuMGYpLCBzdGQ6OmNsYW1wKGEsIDAuMGYsIDEuMGYpIH07Cisg
ICAgcmV0dXJuIHsgY2xhbXBUb0NvbXBvbmVudEZsb2F0KHIpLCBjbGFtcFRvQ29tcG9uZW50Rmxv
YXQoZyksIGNsYW1wVG9Db21wb25lbnRGbG9hdChiKSwgY2xhbXBUb0NvbXBvbmVudEZsb2F0KGEp
IH07CiB9CiAKIGNvbnN0ZXhwciB1aW50MTZfdCBmYXN0TXVsdGlwbHlCeTI1NSh1aW50MTZfdCB2
YWx1ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2lu
Z1N0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCYWNraW5nU3RvcmUuaAkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFhKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGF1dG8gcGl4ZWwgPSBhc1NSR0JBKEFSR0IgeyAqZGVzdCB9KTsKKyAg
ICAgICAgYXV0byBwaXhlbCA9IGFzU1JHQkEoUGFja2VkOjpBUkdCIHsgKmRlc3QgfSk7CiAKICAg
ICAgICAgaWYgKGEgPj0gMjU1IHx8ICFwaXhlbC5hbHBoYSkgewogICAgICAgICAgICAgc2V0UGl4
ZWwoZGVzdCwgciwgZywgYiwgYSk7CkBAIC0xNzQsNyArMTc0LDcgQEAgcHVibGljOgogICAgICAg
ICBpZiAoIW1fcHJlbXVsdGlwbHlBbHBoYSkKICAgICAgICAgICAgIHJlc3VsdCA9IHVucHJlbXVs
dGlwbGllZChyZXN1bHQpOwogCi0gICAgICAgICpkZXN0ID0gYXNBUkdCKHJlc3VsdCkudmFsdWU7
CisgICAgICAgICpkZXN0ID0gUGFja2VkOjpBUkdCIHsgcmVzdWx0IH0udmFsdWU7CiAgICAgfQog
CiAgICAgc3RhdGljIGJvb2wgaXNPdmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtMjMx
LDcgKzIzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChtX3ByZW11bHRpcGx5QWxwaGEgJiYg
YSA8IDI1NSkKICAgICAgICAgICAgIHJlc3VsdCA9IHByZW11bHRpcGxpZWRGbG9vcmluZyhyZXN1
bHQpOwogCi0gICAgICAgIHJldHVybiBhc0FSR0IocmVzdWx0KS52YWx1ZTsKKyAgICAgICAgcmV0
dXJuIFBhY2tlZDo6QVJHQiB7IHJlc3VsdCB9LnZhbHVlOwogICAgIH0KIAogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3BpeGVsczsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuaAkocmV2aXNpb24gMjYzOTc4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsMzggKzMyLDMzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8g
Q29sb3IgdmFsdWUgd2l0aCA4LWJpdCBjb21wb25lbnRzIGZvciByZWQsIGdyZWVuLCBibHVlLCBh
bmQgYWxwaGEuCi0vLyBGb3IgaGlzdG9yaWNhbCByZWFzb25zLCBzdG9yZWQgYXMgYSAzMi1iaXQg
aW50ZWdlciwgd2l0aCBhbHBoYSBpbiB0aGUgaGlnaCBiaXRzOiBBUkdCLgogY2xhc3MgU2ltcGxl
Q29sb3IgewogcHVibGljOgotICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvcih1aW50MzJfdCB2YWx1
ZSA9IDApIDogbV92YWx1ZSB7IHZhbHVlIH0geyB9Ci0gICAgY29uc3RleHByIFNpbXBsZUNvbG9y
KHVpbnQ4X3QgciwgdWludDhfdCBnLCB1aW50OF90IGIsIHVpbnQ4X3QgYSkgOiBtX3ZhbHVlIHsg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGEgPDwgMjQgfCByIDw8IDE2IHwgZyA8PCA4IHwgYikgfSB7
IH0KKyAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IoKSA6IG1fdmFsdWUgeyB9IHsgfQorICAgIGNv
bnN0ZXhwciBTaW1wbGVDb2xvcih1aW50OF90IHIsIHVpbnQ4X3QgZywgdWludDhfdCBiLCB1aW50
OF90IGEpIDogbV92YWx1ZSB7IHIsIGcsIGIsIGEgfSB7IH0KIAotICAgIGNvbnN0ZXhwciB1aW50
MzJfdCB2YWx1ZUFzQVJHQigpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KLSAgICBjb25zdGV4
cHIgdWludDMyX3QgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgY29uc3Rl
eHByIHVpbnQ4X3QgYWxwaGFDb21wb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmFscGhh
OyB9CisgICAgY29uc3RleHByIGZsb2F0IGFscGhhQ29tcG9uZW50QXNGbG9hdCgpIGNvbnN0IHsg
cmV0dXJuIGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0KG1fdmFsdWUuYWxwaGEpOyB9CiAKLSAgICBj
b25zdGV4cHIgdWludDhfdCBhbHBoYUNvbXBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUg
Pj4gMjQ7IH0KLSAgICBjb25zdGV4cHIgZmxvYXQgYWxwaGFDb21wb25lbnRBc0Zsb2F0KCkgY29u
c3QgeyByZXR1cm4gY29udmVydFRvQ29tcG9uZW50RmxvYXQoYWxwaGFDb21wb25lbnQoKSk7IH0K
LQotICAgIGNvbnN0ZXhwciBib29sIGlzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gYWxwaGFDb21w
b25lbnQoKSA9PSAweEZGOyB9Ci0gICAgY29uc3RleHByIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Qg
eyByZXR1cm4gYWxwaGFDb21wb25lbnQoKTsgfQorICAgIGNvbnN0ZXhwciBib29sIGlzT3BhcXVl
KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5hbHBoYSA9PSAweEZGOyB9CisgICAgY29uc3RleHBy
IGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5hbHBoYTsgfQogCiAgICAg
Y29uc3RleHByIFNpbXBsZUNvbG9yIGNvbG9yV2l0aEFscGhhKHVpbnQ4X3QgYWxwaGEpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4geyAobV92YWx1ZSAmIDB4MDBGRkZGRkYpIHwgYWxwaGEg
PDwgMjQgfTsKKyAgICAgICAgcmV0dXJuIHsgbV92YWx1ZS5yZWQsIG1fdmFsdWUuZ3JlZW4sIG1f
dmFsdWUuYmx1ZSwgYWxwaGEgfTsKICAgICB9CiAKICAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3Ig
aW52ZXJ0ZWRDb2xvcldpdGhBbHBoYSh1aW50OF90IGFscGhhKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dWludDhfdD4oMHhGRiAtIHJlZENvbXBvbmVudCgpKSwg
c3RhdGljX2Nhc3Q8dWludDhfdD4oMHhGRiAtIGdyZWVuQ29tcG9uZW50KCkpLCBzdGF0aWNfY2Fz
dDx1aW50OF90PigweEZGIC0gYmx1ZUNvbXBvbmVudCgpKSwgYWxwaGEgfTsKKyAgICAgICAgcmV0
dXJuIHsgc3RhdGljX2Nhc3Q8dWludDhfdD4oMHhGRiAtIG1fdmFsdWUucmVkKSwgc3RhdGljX2Nh
c3Q8dWludDhfdD4oMHhGRiAtIG1fdmFsdWUuZ3JlZW4pLCBzdGF0aWNfY2FzdDx1aW50OF90Pigw
eEZGIC0gbV92YWx1ZS5ibHVlKSwgYWxwaGEgfTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBjb25zdGV4cHIgU1JHQkE8VD4gYXNTUkdCQSgpIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PFQsIGZsb2F0PikKLSAgICAgICAgICAgIHJl
dHVybiB7IGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0KHJlZENvbXBvbmVudCgpKSwgY29udmVydFRv
Q29tcG9uZW50RmxvYXQoZ3JlZW5Db21wb25lbnQoKSksIGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0
KGJsdWVDb21wb25lbnQoKSksICBjb252ZXJ0VG9Db21wb25lbnRGbG9hdChhbHBoYUNvbXBvbmVu
dCgpKSB9OworICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0cyhtX3Zh
bHVlKTsKICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PFQsIHVpbnQ4
X3Q+KQotICAgICAgICAgICAgcmV0dXJuIHsgcmVkQ29tcG9uZW50KCksIGdyZWVuQ29tcG9uZW50
KCksIGJsdWVDb21wb25lbnQoKSwgYWxwaGFDb21wb25lbnQoKSB9OworICAgICAgICAgICAgcmV0
dXJuIG1fdmFsdWU7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8c3RkOjpzaXplX3QgTj4KQEAgLTcx
LDIxICs2NiwxNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KE4gPCA0
KTsKICAgICAgICAgaWYgY29uc3RleHByICghTikKLSAgICAgICAgICAgIHJldHVybiByZWRDb21w
b25lbnQoKTsKKyAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLnJlZDsKICAgICAgICAgZWxzZSBp
ZiBjb25zdGV4cHIgKE4gPT0gMSkKLSAgICAgICAgICAgIHJldHVybiBncmVlbkNvbXBvbmVudCgp
OworICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUuZ3JlZW47CiAgICAgICAgIGVsc2UgaWYgY29u
c3RleHByIChOID09IDIpCi0gICAgICAgICAgICByZXR1cm4gYmx1ZUNvbXBvbmVudCgpOworICAg
ICAgICAgICAgcmV0dXJuIG1fdmFsdWUuYmx1ZTsKICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIg
KE4gPT0gMykKLSAgICAgICAgICAgIHJldHVybiBhbHBoYUNvbXBvbmVudCgpOworICAgICAgICAg
ICAgcmV0dXJuIG1fdmFsdWUuYWxwaGE7CiAgICAgfQogCiBwcml2YXRlOgotICAgIGNvbnN0ZXhw
ciB1aW50OF90IHJlZENvbXBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPj4gMTY7IH0K
LSAgICBjb25zdGV4cHIgdWludDhfdCBncmVlbkNvbXBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWUgPj4gODsgfQotICAgIGNvbnN0ZXhwciB1aW50OF90IGJsdWVDb21wb25lbnQoKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0KLSAgICB1aW50MzJfdCBtX3ZhbHVlIHsgMCB9OworICAg
IFNSR0JBPHVpbnQ4X3Q+IG1fdmFsdWUgeyAwLCAwLCAwLCAwIH07CiB9OwogCiBib29sIG9wZXJh
dG9yPT0oU2ltcGxlQ29sb3IsIFNpbXBsZUNvbG9yKTsKQEAgLTk4LDcgKzg5LDcgQEAgU2ltcGxl
Q29sb3IgbWFrZVNpbXBsZUNvbG9yKGNvbnN0IFNSR0JBPAogCiBpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KFNpbXBsZUNvbG9yIGEsIFNpbXBsZUNvbG9yIGIpCiB7Ci0gICAgcmV0dXJuIGEudmFsdWUo
KSA9PSBiLnZhbHVlKCk7CisgICAgcmV0dXJuIGEuYXNTUkdCQTx1aW50OF90PigpID09IGIuYXNT
UkdCQTx1aW50OF90PigpOwogfQogCiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFNpbXBsZUNvbG9y
IGEsIFNpbXBsZUNvbG9yIGIpCkBAIC0xMDYsMjQgKzk3LDI0IEBAIGlubGluZSBib29sIG9wZXJh
dG9yIT0oU2ltcGxlQ29sb3IgYSwgU2kKICAgICByZXR1cm4gIShhID09IGIpOwogfQogCi1jb25z
dGV4cHIgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yKGludCByLCBpbnQgZywgaW50IGIpCitj
b25zdGV4cHIgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yKGNvbnN0IFNSR0JBPHVpbnQ4X3Q+
JiBzUkdCQSkKIHsKLSAgICByZXR1cm4geyBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1w
KHIsIDAsIDB4RkYpKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFtcChnLCAwLCAweEZG
KSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoYiwgMCwgMHhGRikpLCAweEZGIH07
CisgICAgcmV0dXJuIHsgc1JHQkEucmVkLCBzUkdCQS5ncmVlbiwgc1JHQkEuYmx1ZSwgc1JHQkEu
YWxwaGEgfTsKIH0KIAotY29uc3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihpbnQg
ciwgaW50IGcsIGludCBiLCBpbnQgYSkKK2lubGluZSBTaW1wbGVDb2xvciBtYWtlU2ltcGxlQ29s
b3IoY29uc3QgU1JHQkE8ZmxvYXQ+JiBzUkdCQSkKIHsKLSAgICByZXR1cm4geyBzdGF0aWNfY2Fz
dDx1aW50OF90PihzdGQ6OmNsYW1wKHIsIDAsIDB4RkYpKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4o
c3RkOjpjbGFtcChnLCAwLCAweEZGKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAo
YiwgMCwgMHhGRikpLCBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1wKGEsIDAsIDB4RkYp
KSB9OworICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoY29udmVydFRvQ29tcG9uZW50Qnl0ZXMo
c1JHQkEpKTsKIH0KIAotY29uc3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihjb25z
dCBTUkdCQTx1aW50OF90PiYgc1JHQkEpCitjb25zdGV4cHIgU2ltcGxlQ29sb3IgbWFrZVNpbXBs
ZUNvbG9yKGludCByLCBpbnQgZywgaW50IGIpCiB7Ci0gICAgcmV0dXJuIHsgc1JHQkEucmVkLCBz
UkdCQS5ncmVlbiwgc1JHQkEuYmx1ZSwgc1JHQkEuYWxwaGEgfTsKKyAgICByZXR1cm4gbWFrZVNp
bXBsZUNvbG9yKGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4ociwgZywgYiwgMHhGRikpOwog
fQogCi1pbmxpbmUgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yKGNvbnN0IFNSR0JBPGZsb2F0
PiYgc1JHQkEpCitjb25zdGV4cHIgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yKGludCByLCBp
bnQgZywgaW50IGIsIGludCBhKQogewotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoY29udmVy
dFRvQ29tcG9uZW50Qnl0ZXMoc1JHQkEpKTsKKyAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKGNs
YW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4ociwgZywgYiwgYSkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0lt
YWdlU3VyZmFjZUJhY2tlbmQuY3BwCShyZXZpc2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFj
a2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDkgKzgwLDkgQEAgdm9pZCBJbWFnZUJ1ZmZl
ckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZAogICAgICAgICB1bnNpZ25lZCogcm93ID0gcmVpbnRl
cnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihkYXRhU3JjICsgc3RyaWRlICogeSk7CiAgICAgICAg
IGZvciAoaW50IHggPSAwOyB4IDwgbV9sb2dpY2FsU2l6ZS53aWR0aCgpOyB4KyspIHsKICAgICAg
ICAgICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJvdyArIHg7Ci0gICAgICAgICAgICBhdXRvIHBpeGVs
Q29tcG9uZW50cyA9IHVucHJlbXVsdGlwbGllZChhc1NSR0JBKEFSR0IgeyAqcGl4ZWwgfSkpOwor
ICAgICAgICAgICAgYXV0byBwaXhlbENvbXBvbmVudHMgPSB1bnByZW11bHRpcGxpZWQoYXNTUkdC
QShQYWNrZWQ6OkFSR0IgeyAqcGl4ZWwgfSkpOwogICAgICAgICAgICAgcGl4ZWxDb21wb25lbnRz
ID0geyBsb29rVXBUYWJsZVtwaXhlbENvbXBvbmVudHMucmVkXSwgbG9va1VwVGFibGVbcGl4ZWxD
b21wb25lbnRzLmdyZWVuXSwgbG9va1VwVGFibGVbcGl4ZWxDb21wb25lbnRzLmJsdWVdLCBwaXhl
bENvbXBvbmVudHMuYWxwaGEgfTsKLSAgICAgICAgICAgICpwaXhlbCA9IGFzQVJHQihwcmVtdWx0
aXBsaWVkQ2VpbGluZyhwaXhlbENvbXBvbmVudHMpKS52YWx1ZTsKKyAgICAgICAgICAgICpwaXhl
bCA9IFBhY2tlZDo6QVJHQiB7IHByZW11bHRpcGxpZWRDZWlsaW5nKHBpeGVsQ29tcG9uZW50cykg
fS52YWx1ZTsKICAgICAgICAgfQogICAgIH0KICAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlf
cmVjdGFuZ2xlKG1fc3VyZmFjZS5nZXQoKSwgMCwgMCwgbV9sb2dpY2FsU2l6ZS53aWR0aCgpLCBt
X2xvZ2ljYWxTaXplLmhlaWdodCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCShyZXZp
c2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9O
YXRpdmVJbWFnZUNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBDb2xv
ciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjCiAgICAgICAgIHJldHVybiBDb2xv
cigpOwogCiAgICAgdW5zaWduZWQqIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWdu
ZWQqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlLmdldCgpKSk7Ci0gICAgcmV0
dXJuIG1ha2VTaW1wbGVDb2xvcih1bnByZW11bHRpcGxpZWQoYXNTUkdCQShBUkdCIHsgKnBpeGVs
IH0pKSk7CisgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcih1bnByZW11bHRpcGxpZWQoYXNTUkdC
QShQYWNrZWQ6OkFSR0IgeyAqcGl4ZWwgfSkpKTsKIH0KIAogdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cu
Y3BwCShyZXZpc2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDI0ICsxMjksMjIgQEAgc3Rh
dGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sbwogQ0dDb2xvclJlZiBjYWNoZWRD
R0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAoY29sb3IuaXNTaW1wbGUoKSkg
ewotICAgICAgICBzd2l0Y2ggKGNvbG9yLmFzU2ltcGxlKCkudmFsdWUoKSkgewotICAgICAgICBj
YXNlIENvbG9yOjp0cmFuc3BhcmVudC52YWx1ZSgpOiB7CisgICAgICAgIHN3aXRjaCAoUGFja2Vk
OjpSR0JBIHsgY29sb3IuYXNTaW1wbGUoKS5hc1NSR0JBPHVpbnQ4X3Q+KCkgfS52YWx1ZSkgewor
ICAgICAgICBjYXNlIFBhY2tlZDo6UkdCQSB7IENvbG9yOjp0cmFuc3BhcmVudC5hc1NSR0JBPHVp
bnQ4X3Q+KCkgfS52YWx1ZTogewogICAgICAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgdHJhbnNw
YXJlbnRDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogICAgICAgICAgICAgcmV0dXJuIHRy
YW5zcGFyZW50Q0dDb2xvcjsKICAgICAgICAgfQotICAgICAgICBjYXNlIENvbG9yOjpibGFjay52
YWx1ZSgpOiB7CisgICAgICAgIGNhc2UgUGFja2VkOjpSR0JBIHsgQ29sb3I6OmJsYWNrLmFzU1JH
QkE8dWludDhfdD4oKSB9LnZhbHVlOiB7CiAgICAgICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiBi
bGFja0NHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7CiAgICAgICAgICAgICByZXR1cm4gYmxh
Y2tDR0NvbG9yOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ29sb3I6OndoaXRlLnZhbHVlKCk6
IHsKKyAgICAgICAgY2FzZSBQYWNrZWQ6OlJHQkEgeyBDb2xvcjo6d2hpdGUuYXNTUkdCQTx1aW50
OF90PigpIH0udmFsdWU6IHsKICAgICAgICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIHdoaXRlQ0dD
b2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsKICAgICAgICAgICAgIHJldHVybiB3aGl0ZUNHQ29s
b3I7CiAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIEFTU0VSVChjb2xvci5pc0V4
dGVuZGVkKCkgfHwgY29sb3IuYXNTaW1wbGUoKS52YWx1ZSgpKTsKLQogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8Q29sb3IsIFJldGFpblB0cjxDR0NvbG9yUmVmPiwgMzI+
PiBjYWNoZTsKICAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KGNvbG9yKS5nZXQoKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMu
bW0JKHJldmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db2xvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMg
Ym9vbCB1c2VPbGRBcXVhRm9jdXNSaW5nQ29sb3I7CiAKIENvbG9yIG9sZEFxdWFGb2N1c1JpbmdD
b2xvcigpCiB7Ci0gICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjdEQUREOSB9OworICAgIHJl
dHVybiBtYWtlU2ltcGxlQ29sb3IoMHg3RCwgMHhBRCwgMHhEOSwgMHhGRik7CiB9CiAKIHZvaWQg
c2V0VXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3IoYm9vbCBuZXdWYWx1ZSkKQEAgLTEyMywxNiAr
MTIzLDE2IEBAIENvbG9yIHNlbWFudGljQ29sb3JGcm9tTlNDb2xvcihOU0NvbG9yICoKIE5TQ29s
b3IgKm5zQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmIChjb2xvci5pc1NpbXBs
ZSgpKSB7Ci0gICAgICAgIHN3aXRjaCAoY29sb3IuYXNTaW1wbGUoKS52YWx1ZSgpKSB7Ci0gICAg
ICAgIGNhc2UgQ29sb3I6OnRyYW5zcGFyZW50LnZhbHVlKCk6IHsKKyAgICAgICAgc3dpdGNoIChQ
YWNrZWQ6OlJHQkEgeyBjb2xvci5hc1NpbXBsZSgpLmFzU1JHQkE8dWludDhfdD4oKSB9LnZhbHVl
KSB7CisgICAgICAgIGNhc2UgUGFja2VkOjpSR0JBIHsgQ29sb3I6OnRyYW5zcGFyZW50LmFzU1JH
QkE8dWludDhfdD4oKSB9LnZhbHVlOiB7CiAgICAgICAgICAgICBzdGF0aWMgTlNDb2xvciAqY2xl
YXJDb2xvciA9IFtbTlNDb2xvciBjb2xvcldpdGhTUkdCUmVkOjAgZ3JlZW46MCBibHVlOjAgYWxw
aGE6MF0gcmV0YWluXTsKICAgICAgICAgICAgIHJldHVybiBjbGVhckNvbG9yOwogICAgICAgICB9
Ci0gICAgICAgIGNhc2UgQ29sb3I6OmJsYWNrLnZhbHVlKCk6IHsKKyAgICAgICAgY2FzZSBQYWNr
ZWQ6OlJHQkEgeyBDb2xvcjo6YmxhY2suYXNTUkdCQTx1aW50OF90PigpIH0udmFsdWU6IHsKICAg
ICAgICAgICAgIHN0YXRpYyBOU0NvbG9yICpibGFja0NvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0
aFNSR0JSZWQ6MCBncmVlbjowIGJsdWU6MCBhbHBoYToxXSByZXRhaW5dOwogICAgICAgICAgICAg
cmV0dXJuIGJsYWNrQ29sb3I7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBDb2xvcjo6d2hpdGUu
dmFsdWUoKTogeworICAgICAgICBjYXNlIFBhY2tlZDo6UkdCQSB7IENvbG9yOjp3aGl0ZS5hc1NS
R0JBPHVpbnQ4X3Q+KCkgfS52YWx1ZTogewogICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IgKndo
aXRlQ29sb3IgPSBbW05TQ29sb3IgY29sb3JXaXRoU1JHQlJlZDoxIGdyZWVuOjEgYmx1ZToxIGFs
cGhhOjFdIHJldGFpbl07CiAgICAgICAgICAgICByZXR1cm4gd2hpdGVDb2xvcjsKICAgICAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dENHV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCShyZXZpc2lvbiAyNjM5NzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsMTIgKzE5OCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0RvdHNGb3JEb2N1bWVuCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0
Zm9ybUNvbnRleHQoKTsKICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogCi0gICAg
c3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBzcGVsbGluZ1BhdHRlcm5Db2xvciB7IG1ha2VT
aW1wbGVDb2xvcigyNTUsIDAsIDApIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xv
ciBncmFtbWFyUGF0dGVybkNvbG9yIHsgbWFrZVNpbXBsZUNvbG9yKDAsIDEyOCwgMCkgfTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gc3BlbGxpbmdQYXR0ZXJuQ29sb3IgPSBtYWtlU2ltcGxl
Q29sb3IoMjU1LCAwLCAwKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZ3JhbW1hclBhdHRl
cm5Db2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAxMjgsIDApOwogCi0gICAgY29uc3QgU2ltcGxl
Q29sb3ImIHBhdHRlcm5Db2xvciA9IHN0eWxlLm1vZGUgPT0gRG9jdW1lbnRNYXJrZXJMaW5lU3R5
bGU6Ok1vZGU6OkdyYW1tYXIgPyBncmFtbWFyUGF0dGVybkNvbG9yIDogc3BlbGxpbmdQYXR0ZXJu
Q29sb3I7Ci0gICAgYXV0byBwYXR0ZXJuQ29sb3JDb21wb25lbnRzID0gcGF0dGVybkNvbG9yLmFz
U1JHQkE8dWludDhfdD4oKTsKLSAgICBDR0NvbnRleHRTZXRSR0JTdHJva2VDb2xvcihjb250ZXh0
LCBwYXR0ZXJuQ29sb3JDb21wb25lbnRzLnJlZCwgcGF0dGVybkNvbG9yQ29tcG9uZW50cy5ncmVl
biwgcGF0dGVybkNvbG9yQ29tcG9uZW50cy5ibHVlLCBwYXR0ZXJuQ29sb3JDb21wb25lbnRzLmFs
cGhhKTsKKyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IHN0eWxlLm1vZGUgPT0gRG9jdW1lbnRNYXJr
ZXJMaW5lU3R5bGU6Ok1vZGU6OkdyYW1tYXIgPyBncmFtbWFyUGF0dGVybkNvbG9yIDogc3BlbGxp
bmdQYXR0ZXJuQ29sb3I7CisgICAgQ0dDb250ZXh0U2V0UkdCU3Ryb2tlQ29sb3IoY29udGV4dCwg
ciwgZywgYiwgYSk7CiAKICAgICBDR0FmZmluZVRyYW5zZm9ybSB1c2VyVG9CYXNlID0gZ2V0VXNl
clRvQmFzZUNUTShjb250ZXh0KTsKICAgICBDR1BvaW50IHBoYXNlID0gQ0dQb2ludEFwcGx5QWZm
aW5lVHJhbnNmb3JtKHBvaW50LCB1c2VyVG9CYXNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuY3BwCShyZXZpc2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODYsOCArODYsOCBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+IGRlCiAg
ICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJTQ1JFRU4tMSJfcywgIk1vY2sgc2NyZWVuIGRldmlj
ZSAxIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpTY3JlZW4sIENvbG9yOjpsaWdodEdyYXksIHsgMzg0MCwgMjE2MCB9IH0gfSwKICAgICAgICAg
TW9ja01lZGlhRGV2aWNlIHsgIlNDUkVFTi0yIl9zLCAiTW9jayBzY3JlZW4gZGV2aWNlIDIiX3Ms
IE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVl
biwgQ29sb3I6OnllbGxvdywgeyAxOTIwLCAxMDgwIH0gfSB9LAogCi0gICAgICAgIE1vY2tNZWRp
YURldmljZSB7ICJXSU5ET1ctMiJfcywgIk1vY2sgd2luZG93IDEiX3MsIE1vY2tEaXNwbGF5UHJv
cGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgU2ltcGxlQ29sb3Ig
eyAweGZmZjFiNSB9LCB7IDY0MCwgNDgwIH0gfSB9LAotICAgICAgICBNb2NrTWVkaWFEZXZpY2Ug
eyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAyIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMg
eyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIFNpbXBsZUNvbG9yIHsgMHhmZmQw
YjUgfSwgeyAxMjgwLCA2MDAgfSB9IH0sCisgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJXSU5E
T1ctMiJfcywgIk1vY2sgd2luZG93IDEiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgbWFrZVNpbXBsZUNvbG9yKDB4RkYsIDB4RjEs
IDB4QjUpLCB7IDY0MCwgNDgwIH0gfSB9LAorICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lO
RE9XLTIiX3MsICJNb2NrIHdpbmRvdyAyIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIG1ha2VTaW1wbGVDb2xvcigweEZGLCAweEQw
LCAweEI1KSwgeyAxMjgwLCA2MDAgfSB9IH0sCiAgICAgfTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZS5jcHAJKHJldmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsMTAgKzI2
NSwxMCBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3QW5pbWF0CiAKIHZvaWQg
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdCb3hlcyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCiB7Ci0gICAgY29uc3RleHByIFNpbXBsZUNvbG9yIG1hZ2VudGEgeyAweGZmZmYwMGZmIH07
Ci0gICAgY29uc3RleHByIFNpbXBsZUNvbG9yIGJsdWUgeyAweGZmMDAwMGZmIH07Ci0gICAgY29u
c3RleHByIFNpbXBsZUNvbG9yIHJlZCB7IDB4ZmZmZjAwMDAgfTsKLSAgICBjb25zdGV4cHIgU2lt
cGxlQ29sb3IgZGFya0dyZWVuIHsgMHhmZjAwODAwMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIg
YXV0byBtYWdlbnRhID0gbWFrZVNpbXBsZUNvbG9yKDB4RkYsIDB4MDAsIDB4RkYsIDB4RkYpOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBibHVlID0gbWFrZVNpbXBsZUNvbG9yKDB4MDAsIDB4
MDAsIDB4RkYsIDB4RkYpOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byByZWQgPSBtYWtlU2lt
cGxlQ29sb3IoMHhGRiwgMHgwMCwgMHgwMCwgMHhGRik7CisgICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGRhcmtHcmVlbiA9IG1ha2VTaW1wbGVDb2xvcigweDAwLCAweDgwLCAweDAwLCAweEZGKTsK
IAogICAgIEludFNpemUgc2l6ZSA9IGNhcHR1cmVTaXplKCk7CiAgICAgZmxvYXQgYm94U2l6ZSA9
IHNpemUud2lkdGgoKSAqIC4wMzU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1Njcm9sbGJhclRoZW1lTW9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCShyZXZpc2lvbiAyNjM5NzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgaW50IFNjcm9sbGJhclRoZW1lTW9jazo6c2Nyb2xs
YmFyVGhpY2tuZQogCiB2b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91
bmQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgdHJhY2tSZWN0KQogewotICAgIGNvbnRleHQuZmlsbFJlY3QodHJhY2tSZWN0LCBz
Y3JvbGxiYXIuZW5hYmxlZCgpID8gQ29sb3I6OmxpZ2h0R3JheSA6IFNpbXBsZUNvbG9yIHsgMHhG
RkUwRTBFMCB9KTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xsYmFyLmVu
YWJsZWQoKSA/IENvbG9yOjpsaWdodEdyYXkgOiBtYWtlU2ltcGxlQ29sb3IoMHhFMCwgMHhFMCwg
MHhFMCkpOwogfQogCiB2b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUaHVtYihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0
aHVtYlJlY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MDUsOCArMTgwNSw4IEBAIHZvaWQgUmVuZGVy
T2JqZWN0OjpjYWxjdWxhdGVCb3JkZXJTdHlsZUMKICAgICBBU1NFUlQoc3R5bGUgPT0gQm9yZGVy
U3R5bGU6Okluc2V0IHx8IHN0eWxlID09IEJvcmRlclN0eWxlOjpPdXRzZXQpOwogCiAgICAgLy8g
VGhpcyB2YWx1ZXMgd2VyZSBkZXJpdmVkIGVtcGlyaWNhbGx5LgotICAgIGNvbnN0ZXhwciBmbG9h
dCBiYXNlRGFya0NvbG9yTHVtaW5hbmNlIHsgMC4wMTQ0NDM4NDRmIH07IC8vIEx1bWluYW5jZSBv
ZiBTaW1wbGVDb2xvciB7IDB4RkYyMDIwMjAgfQotICAgIGNvbnN0ZXhwciBmbG9hdCBiYXNlTGln
aHRDb2xvckx1bWluYW5jZSB7IDAuODMwNzdmIH07IC8vIEx1bWluYW5jZSBvZiBTaW1wbGVDb2xv
ciB7IDB4RkZFQkVCRUIgfQorICAgIGNvbnN0ZXhwciBmbG9hdCBiYXNlRGFya0NvbG9yTHVtaW5h
bmNlIHsgMC4wMTQ0NDM4NDRmIH07IC8vIEx1bWluYW5jZSBvZiBTUkdCQTx1aW50OF90PiB7IDB4
MjAsIDB4MjAsIDB4MjAsIDB4RkYgfQorICAgIGNvbnN0ZXhwciBmbG9hdCBiYXNlTGlnaHRDb2xv
ckx1bWluYW5jZSB7IDAuODMwNzdmIH07IC8vIEx1bWluYW5jZSBvZiBTUkdCQTx1aW50OF90PiB7
IDB4RUIsIDB4RUIsIDB4RUIsIDB4RkYgfQogCiAgICAgZW51bSBPcGVyYXRpb24geyBEYXJrZW4s
IExpZ2h0ZW4gfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUu
Y3BwCShyZXZpc2lvbiAyNjM5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzM0LDMwICsxMzM0LDMwIEBAIENvbG9yIFJl
bmRlclRoZW1lOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUkKIHsKICAgICBzd2l0Y2ggKGNzc1ZhbHVl
SWQpIHsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0TGluazoKLSAgICAgICAgcmV0dXJuIG9wdGlv
bnMuY29udGFpbnMoU3R5bGVDb2xvcjo6T3B0aW9uczo6Rm9yVmlzaXRlZExpbmspID8gU2ltcGxl
Q29sb3IgeyAweEZGNTUxQThCIH0gOiBTaW1wbGVDb2xvciB7IDB4RkYwMDAwRUUgfTsKKyAgICAg
ICAgcmV0dXJuIG9wdGlvbnMuY29udGFpbnMoU3R5bGVDb2xvcjo6T3B0aW9uczo6Rm9yVmlzaXRl
ZExpbmspID8gbWFrZVNpbXBsZUNvbG9yKDB4NTUsIDB4MUEsIDB4OEIpIDogbWFrZVNpbXBsZUNv
bG9yKDB4MDAsIDB4MDAsIDB4RUUpOwogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRBY3RpdmVsaW5r
OgogICAgIGNhc2UgQ1NTVmFsdWVBY3RpdmV0ZXh0OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29s
b3IgeyAweEZGRkYwMDAwIH07CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMHhGRiwg
MHgwMCwgMHgwMCk7CiAgICAgY2FzZSBDU1NWYWx1ZUxpbmt0ZXh0OgotICAgICAgICByZXR1cm4g
U2ltcGxlQ29sb3IgeyAweEZGMDAwMEVFIH07CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29s
b3IoMHgwMCwgMHgwMCwgMHhFRSk7CiAgICAgY2FzZSBDU1NWYWx1ZVZpc2l0ZWR0ZXh0OgotICAg
ICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGNTUxQThCIH07CisgICAgICAgIHJldHVybiBt
YWtlU2ltcGxlQ29sb3IoMHg1NSwgMHgxQSwgMHg4Qik7CiAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2
ZWJvcmRlcjoKICAgICAgICAgcmV0dXJuIENvbG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1ZhbHVl
QWN0aXZlYnV0dG9udGV4dDoKICAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBjYXNl
IENTU1ZhbHVlQWN0aXZlY2FwdGlvbjoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhG
RkNDQ0NDQyB9OworICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDB4Q0MsIDB4Q0MsIDB4
Q0MpOwogICAgIGNhc2UgQ1NTVmFsdWVBcHB3b3Jrc3BhY2U6CiAgICAgICAgIHJldHVybiBDb2xv
cjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1ZUJhY2tncm91bmQ6Ci0gICAgICAgIHJldHVybiBT
aW1wbGVDb2xvciB7IDB4RkY2MzYzQ0UgfTsKKyAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xv
cigweDYzLCAweDYzLCAweENFKTsKICAgICBjYXNlIENTU1ZhbHVlQnV0dG9uZmFjZToKICAgICAg
ICAgcmV0dXJuIENvbG9yOjpsaWdodEdyYXk7CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbmhpZ2hs
aWdodDoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkRERERERCB9OworICAgICAg
ICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDB4REQsIDB4REQsIDB4REQpOwogICAgIGNhc2UgQ1NT
VmFsdWVCdXR0b25zaGFkb3c6Ci0gICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkY4ODg4
ODggfTsKKyAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigweDg4LCAweDg4LCAweDg4KTsK
ICAgICBjYXNlIENTU1ZhbHVlQnV0dG9udGV4dDoKICAgICAgICAgcmV0dXJuIENvbG9yOjpibGFj
azsKICAgICBjYXNlIENTU1ZhbHVlQ2FwdGlvbnRleHQ6CkBAIC0xMzcxLDkgKzEzNzEsOSBAQCBD
b2xvciBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJCiAgICAgY2FzZSBDU1NWYWx1
ZUZpZWxkdGV4dDoKICAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBjYXNlIENTU1Zh
bHVlR3JheXRleHQ6Ci0gICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkY4MDgwODAgfTsK
KyAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigweDgwLCAweDgwLCAweDgwKTsKICAgICBj
YXNlIENTU1ZhbHVlSGlnaGxpZ2h0OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZG
QjVENUZGIH07CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMHhCNSwgMHhENSwgMHhG
Rik7CiAgICAgY2FzZSBDU1NWYWx1ZUhpZ2hsaWdodHRleHQ6CiAgICAgICAgIHJldHVybiBDb2xv
cjo6YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZUluYWN0aXZlYm9yZGVyOgpAQCAtMTM4MSw5ICsx
MzgxLDkgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSQogICAgIGNh
c2UgQ1NTVmFsdWVJbmFjdGl2ZWNhcHRpb246CiAgICAgICAgIHJldHVybiBDb2xvcjo6d2hpdGU7
CiAgICAgY2FzZSBDU1NWYWx1ZUluYWN0aXZlY2FwdGlvbnRleHQ6Ci0gICAgICAgIHJldHVybiBT
aW1wbGVDb2xvciB7IDB4RkY3RjdGN0YgfTsKKyAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xv
cigweDdGLCAweDdGLCAweDdGKTsKICAgICBjYXNlIENTU1ZhbHVlSW5mb2JhY2tncm91bmQ6Ci0g
ICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkZGQkZDQzUgfTsKKyAgICAgICAgcmV0dXJu
IG1ha2VTaW1wbGVDb2xvcigweEZCLCAweEZDLCAweEM1KTsKICAgICBjYXNlIENTU1ZhbHVlSW5m
b3RleHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZU1l
bnU6CkBAIC0xMzk1LDE5ICsxMzk1LDE5IEBAIENvbG9yIFJlbmRlclRoZW1lOjpzeXN0ZW1Db2xv
cihDU1NWYWx1ZUkKICAgICBjYXNlIENTU1ZhbHVlVGV4dDoKICAgICAgICAgcmV0dXJuIENvbG9y
OjpibGFjazsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkZGFya3NoYWRvdzoKLSAgICAgICAgcmV0
dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjY2NjY2NiB9OworICAgICAgICByZXR1cm4gbWFrZVNpbXBs
ZUNvbG9yKDB4NjYsIDB4NjYsIDB4NjYpOwogICAgIGNhc2UgQ1NTVmFsdWVUaHJlZWRmYWNlOgog
ICAgICAgICByZXR1cm4gQ29sb3I6OmxpZ2h0R3JheTsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVk
aGlnaGxpZ2h0OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGREREREREIH07Cisg
ICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMHhERCwgMHhERCwgMHhERCk7CiAgICAgY2Fz
ZSBDU1NWYWx1ZVRocmVlZGxpZ2h0c2hhZG93OgogICAgICAgICByZXR1cm4gQ29sb3I6OmxpZ2h0
R3JheTsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkc2hhZG93OgotICAgICAgICByZXR1cm4gU2lt
cGxlQ29sb3IgeyAweEZGODg4ODg4IH07CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3Io
MHg4OCwgMHg4OCwgMHg4OCk7CiAgICAgY2FzZSBDU1NWYWx1ZVdpbmRvdzoKICAgICAgICAgcmV0
dXJuIENvbG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1ZhbHVlV2luZG93ZnJhbWU6Ci0gICAgICAg
IHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkZDQ0NDQ0MgfTsKKyAgICAgICAgcmV0dXJuIG1ha2VT
aW1wbGVDb2xvcigweENDLCAweENDLCAweENDKTsKICAgICBjYXNlIENTU1ZhbHVlV2luZG93dGV4
dDoKICAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBkZWZhdWx0OgpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQWR3YWl0YS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQWR3YWl0YS5jcHAJKHJldmlz
aW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2Fp
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsMTAgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIGNvbnN0IGludCB0ZXh0RmllbGRCb3JkZXJTaXplID0gMTsKLXN0YXRp
YyBjb25zdCBDb2xvciB0ZXh0RmllbGRCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDUs
IDE5OSwgMTk0KTsKLXN0YXRpYyBjb25zdCBDb2xvciB0ZXh0RmllbGRCb3JkZXJEaXNhYmxlZENv
bG9yID0gbWFrZVNpbXBsZUNvbG9yKDIxMywgMjA4LCAyMDQpOwotc3RhdGljIGNvbnN0IENvbG9y
IHRleHRGaWVsZEJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1
KTsKLXN0YXRpYyBjb25zdCBDb2xvciB0ZXh0RmllbGRCYWNrZ3JvdW5kRGlzYWJsZWRDb2xvciA9
IG1ha2VTaW1wbGVDb2xvcigyNTIsIDI1MiwgMjUyKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB0
ZXh0RmllbGRCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDUsIDE5OSwgMTk0KTsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byB0ZXh0RmllbGRCb3JkZXJEaXNhYmxlZENvbG9yID0gbWFrZVNp
bXBsZUNvbG9yKDIxMywgMjA4LCAyMDQpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRleHRGaWVs
ZEJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1KTsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byB0ZXh0RmllbGRCYWNrZ3JvdW5kRGlzYWJsZWRDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigyNTIsIDI1MiwgMjUyKTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtZW51TGlz
dEJ1dHRvbkFycm93U2l6ZSA9IDE2Owogc3RhdGljIGNvbnN0IGludCBtZW51TGlzdEJ1dHRvbkZv
Y3VzT2Zmc2V0ID0gLTM7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWVudUxpc3RCdXR0b25QYWRk
aW5nID0gNTsKQEAgLTU3LDIzICs1NywyMyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHJvZ3Jl
c3NBY3Rpdml0eUJsCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHJvZ3Jlc3NBbmltYXRpb25GcmFt
ZUNvdW50ID0gNzU7CiBzdGF0aWMgY29uc3QgU2Vjb25kcyBwcm9ncmVzc0FuaW1hdGlvbkZyYW1l
UmF0ZSA9IDMzX21zOyAvLyAzMGZwcy4KIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwcm9ncmVzc0Jh
clNpemUgPSA2Owotc3RhdGljIGNvbnN0IENvbG9yIHByb2dyZXNzQmFyQm9yZGVyQ29sb3IgPSBt
YWtlU2ltcGxlQ29sb3IoMjA1LCAxOTksIDE5NCk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgcHJvZ3Jl
c3NCYXJCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjI1LCAyMjIsIDIxOSk7Citz
dGF0aWMgY29uc3RleHByIGF1dG8gcHJvZ3Jlc3NCYXJCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVD
b2xvcigyMDUsIDE5OSwgMTk0KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBwcm9ncmVzc0JhckJh
Y2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMjUsIDIyMiwgMjE5KTsKIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBzbGlkZXJUcmFja1NpemUgPSA2Owogc3RhdGljIGNvbnN0IGludCBzbGlk
ZXJUcmFja0JvcmRlclNpemUgPSAxOwotc3RhdGljIGNvbnN0IENvbG9yIHNsaWRlclRyYWNrQm9y
ZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA1LCAxOTksIDE5NCk7Ci1zdGF0aWMgY29uc3Qg
Q29sb3Igc2xpZGVyVHJhY2tCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjI1LCAy
MjIsIDIxOSk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyVHJhY2tCb3JkZXJDb2xvciA9
IG1ha2VTaW1wbGVDb2xvcigyMDUsIDE5OSwgMTk0KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBz
bGlkZXJUcmFja0JhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMjUsIDIyMiwgMjE5
KTsKIHN0YXRpYyBjb25zdCBpbnQgc2xpZGVyVHJhY2tGb2N1c09mZnNldCA9IDI7CiBzdGF0aWMg
Y29uc3QgaW50IHNsaWRlclRodW1iU2l6ZSA9IDIwOwogc3RhdGljIGNvbnN0IGludCBzbGlkZXJU
aHVtYkJvcmRlclNpemUgPSAxOwotc3RhdGljIGNvbnN0IENvbG9yIHNsaWRlclRodW1iQm9yZGVy
Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA1LCAxOTksIDE5NCk7Ci1zdGF0aWMgY29uc3QgQ29s
b3Igc2xpZGVyVGh1bWJCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjQ0LCAyNDIs
IDI0MSk7Ci1zdGF0aWMgY29uc3QgQ29sb3Igc2xpZGVyVGh1bWJCYWNrZ3JvdW5kSG92ZXJlZENv
bG9yID0gbWFrZVNpbXBsZUNvbG9yKDI0OCwgMjQ4LCAyNDcpOwotc3RhdGljIGNvbnN0IENvbG9y
IHNsaWRlclRodW1iQmFja2dyb3VuZERpc2FibGVkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjQ0
LCAyNDIsIDI0MSk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyVGh1bWJCb3JkZXJDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcigyMDUsIDE5OSwgMTk0KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBzbGlkZXJUaHVtYkJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDQsIDI0Miwg
MjQxKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJUaHVtYkJhY2tncm91bmRIb3ZlcmVk
Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjQ4LCAyNDgsIDI0Nyk7CitzdGF0aWMgY29uc3RleHBy
IGF1dG8gc2xpZGVyVGh1bWJCYWNrZ3JvdW5kRGlzYWJsZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xv
cigyNDQsIDI0MiwgMjQxKTsKICNpZiBFTkFCTEUoVklERU8pCi1zdGF0aWMgY29uc3QgQ29sb3Ig
bWVkaWFTbGlkZXJUcmFja0JhY2tncm91bmRjb2xvciA9IG1ha2VTaW1wbGVDb2xvcig3NywgNzcs
IDc3KTsKLXN0YXRpYyBjb25zdCBDb2xvciBtZWRpYVNsaWRlclRyYWNrQnVmZmVyZWRDb2xvciA9
IG1ha2VTaW1wbGVDb2xvcigxNzMsIDE3MywgMTczKTsKLXN0YXRpYyBjb25zdCBDb2xvciBtZWRp
YVNsaWRlclRyYWNrQWN0aXZlQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjUyLCAyNTIsIDI1Mik7
CitzdGF0aWMgY29uc3RleHByIGF1dG8gbWVkaWFTbGlkZXJUcmFja0JhY2tncm91bmRjb2xvciA9
IG1ha2VTaW1wbGVDb2xvcig3NywgNzcsIDc3KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtZWRp
YVNsaWRlclRyYWNrQnVmZmVyZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigxNzMsIDE3MywgMTcz
KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtZWRpYVNsaWRlclRyYWNrQWN0aXZlQ29sb3IgPSBt
YWtlU2ltcGxlQ29sb3IoMjUyLCAyNTIsIDI1Mik7CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShH
VEspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAkocmV2
aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIENvbG9yIHBsYXRmb3JtVGFwSGlnaGxpZ2h0
Q29sb3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTaW1wbGVDb2xvciB7IDB4NEQxQTFBMUEg
fTsgfQorICAgIENvbG9yIHBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMHgxQSwgMHgxQSwgMHgxQSwgMHg0RCk7IH0KICNl
bmRpZgogCiAgICAgYm9vbCBzaG91bGRIYXZlU3BpbkJ1dHRvbihjb25zdCBIVE1MSW5wdXRFbGVt
ZW50JikgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lSU9TLm1tCShyZXZpc2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTkxNiwxMCArOTE2LDEw
IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY28KIAogICAgIGNvbnN0
IGZsb2F0IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gPSByZWN0LnkoKSArIHZlcnRpY2FsT2Zm
c2V0OwogICAgIGF1dG8gc3Ryb2tlR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50
OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3Np
dGlvbiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBw
cm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOwotICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0
b3AoMC4wLCBtYWtlU2ltcGxlQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOwotICAgIHN0cm9rZUdy
YWRpZW50LT5hZGRDb2xvclN0b3AoMC40NSwgbWFrZVNpbXBsZUNvbG9yKDB4ZWUsIDB4ZWUsIDB4
ZWUpKTsKLSAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNTUsIG1ha2VTaW1wbGVD
b2xvcigweGVlLCAweGVlLCAweGVlKSk7Ci0gICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3Rv
cCgxLjAsIG1ha2VTaW1wbGVDb2xvcigweDhkLCAweDhkLCAweDhkKSk7CisgICAgc3Ryb2tlR3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCgwLjAsIG1ha2VTaW1wbGVDb2xvcigweDhELCAweDhELCAweDhE
KSk7CisgICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ1LCBtYWtlU2ltcGxlQ29s
b3IoMHhFRSwgMHhFRSwgMHhFRSkpOworICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
MC41NSwgbWFrZVNpbXBsZUNvbG9yKDB4RUUsIDB4RUUsIDB4RUUpKTsKKyAgICBzdHJva2VHcmFk
aWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgbWFrZVNpbXBsZUNvbG9yKDB4OEQsIDB4OEQsIDB4OEQp
KTsKICAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KFdURk1vdmUoc3Ryb2tlR3JhZGllbnQp
KTsKIAogICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CkBAIC0xMzgyLDEw
ICsxMzgyLDEwIEBAIENvbG9yIFJlbmRlclRoZW1lSU9TOjpzeXN0ZW1Db2xvcihDU1NWYWwKIGNv
bnN0IENHU2l6ZSBhdHRhY2htZW50U2l6ZSA9IHsgMTYwLCAxMTkgfTsKIAogY29uc3QgQ0dGbG9h
dCBhdHRhY2htZW50Qm9yZGVyUmFkaXVzID0gMTY7Ci1jb25zdGV4cHIgU2ltcGxlQ29sb3IgYXR0
YWNobWVudEJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNCwgMjA0LCAyMDQpOworY29u
c3RleHByIGF1dG8gYXR0YWNobWVudEJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNCwg
MjA0LCAyMDQpOwogc3RhdGljIENHRmxvYXQgYXR0YWNobWVudEJvcmRlclRoaWNrbmVzcyA9IDE7
CiAKLWNvbnN0ZXhwciBTaW1wbGVDb2xvciBhdHRhY2htZW50UHJvZ3Jlc3NDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigyMjIsIDIyMiwgMjIyKTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRQcm9n
cmVzc0NvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyMiwgMjIyLCAyMjIpOwogY29uc3QgQ0dGbG9h
dCBhdHRhY2htZW50UHJvZ3Jlc3NCb3JkZXJUaGlja25lc3MgPSAzOwogCiBjb25zdCBDR0Zsb2F0
IGF0dGFjaG1lbnRQcm9ncmVzc1NpemUgPSAzNjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHJldmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzM3LDEx
ICs3MzcsMTEgQEAgQ29sb3IgUmVuZGVyVGhlbWVNYWM6OnN5c3RlbUNvbG9yKENTU1ZhbAogICAg
ICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkZmFjZToKICAgICAgICAgICAgIC8vIFdlIHNlbGVjdGVk
IHRoaXMgdmFsdWUgaW5zdGVhZCBvZiBbTlNDb2xvciBjb250cm9sQ29sb3JdIHRvIGF2b2lkIHdl
YnNpdGUgaW5jb21wYXRpYmlsaXRpZXMuCiAgICAgICAgICAgICAvLyBXZSBtYXkgd2FudCB0byBj
b25zaWRlciBjaGFuZ2luZyB0byBbTlNDb2xvciBjb250cm9sQ29sb3JdIHNvbWUgZGF5LgotICAg
ICAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkMwQzBDMCB9OworICAgICAgICAgICAg
cmV0dXJuIG1ha2VTaW1wbGVDb2xvcigweEMwLCAweEMwLCAweEMwKTsKIAogICAgICAgICBjYXNl
IENTU1ZhbHVlSW5mb2JhY2tncm91bmQ6CiAgICAgICAgICAgICAvLyBObyBjb3JyZXNwb25kaW5n
IE5TQ29sb3IgZm9yIHRoaXMgc28gd2UgdXNlIGEgaGFyZCBjb2RlZCB2YWx1ZS4KLSAgICAgICAg
ICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkZGQkZDQzUgfTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlU2ltcGxlQ29sb3IoMHhGQiwgMHhGQywgMHhDNSk7CiAKICAgICAgICAgY2FzZSBDU1NW
YWx1ZU1lbnU6CiAgICAgICAgICAgICByZXR1cm4gbWVudUJhY2tncm91bmRDb2xvcigpOwpAQCAt
NzUwLDMwICs3NTAsMzAgQEAgQ29sb3IgUmVuZGVyVGhlbWVNYWM6OnN5c3RlbUNvbG9yKENTU1Zh
bAogICAgICAgICBjYXNlIENTU1ZhbHVlQWN0aXZlYm9yZGVyOgogICAgICAgICAgICAgLy8gSGFy
ZGNvZGVkIHRvIGF2b2lkIGV4cG9zaW5nIGEgdXNlciBhcHBlYXJhbmNlIHByZWZlcmVuY2UgdG8g
dGhlIHdlYiBmb3IgZmluZ2VycHJpbnRpbmcuCiAgICAgICAgICAgICBpZiAobG9jYWxBcHBlYXJh
bmNlLnVzaW5nRGFya0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4geyBTaW1w
bGVDb2xvciB7IDB4RkYxQUE5RkYgfSwgQ29sb3I6OlNlbWFudGljIH07Ci0gICAgICAgICAgICBy
ZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4RkYwMDY3RjQgfSwgQ29sb3I6OlNlbWFudGljIH07Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVNpbXBsZUNvbG9yKDB4MUEsIDB4QTksIDB4RkYp
LCBDb2xvcjo6U2VtYW50aWMgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1ha2VTaW1wbGVDb2xv
cigweDAwLCAweDY3LCAweEY0KSwgQ29sb3I6OlNlbWFudGljIH07CiAKICAgICAgICAgY2FzZSBD
U1NWYWx1ZUFwcGxlU3lzdGVtQ29udHJvbEFjY2VudDoKICAgICAgICAgICAgIC8vIEhhcmRjb2Rl
ZCB0byBhdm9pZCBleHBvc2luZyBhIHVzZXIgYXBwZWFyYW5jZSBwcmVmZXJlbmNlIHRvIHRoZSB3
ZWIgZm9yIGZpbmdlcnByaW50aW5nLgogICAgICAgICAgICAgLy8gU2FtZSBjb2xvciBpbiBsaWdo
dCBhbmQgZGFyayBhcHBlYXJhbmNlcy4KLSAgICAgICAgICAgIHJldHVybiB7IFNpbXBsZUNvbG9y
IHsgMHhGRjAwN0FGRiB9LCBDb2xvcjo6U2VtYW50aWMgfTsKKyAgICAgICAgICAgIHJldHVybiB7
IG1ha2VTaW1wbGVDb2xvcigweDAwLCAweDdBLCAweEZGKSwgQ29sb3I6OlNlbWFudGljIH07CiAK
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU2VsZWN0ZWRDb250ZW50QmFja2dyb3Vu
ZDoKICAgICAgICAgICAgIC8vIEhhcmRjb2RlZCB0byBhdm9pZCBleHBvc2luZyBhIHVzZXIgYXBw
ZWFyYW5jZSBwcmVmZXJlbmNlIHRvIHRoZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5nLgogICAgICAg
ICAgICAgaWYgKGxvY2FsQXBwZWFyYW5jZS51c2luZ0RhcmtBcHBlYXJhbmNlKCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAweEZGMDA1OEQwIH0sIENvbG9yOjpTZW1h
bnRpYyB9OwotICAgICAgICAgICAgcmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAweEZGMDA2M0UxIH0s
IENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAgICAgICAgIHJldHVybiB7IG1ha2VTaW1wbGVD
b2xvcigweDAwLCAweDU4LCAweEQwKSwgQ29sb3I6OlNlbWFudGljIH07CisgICAgICAgICAgICBy
ZXR1cm4geyBtYWtlU2ltcGxlQ29sb3IoMHgwMCwgMHg2MywgMHhFMSksIENvbG9yOjpTZW1hbnRp
YyB9OwogCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVIaWdobGlnaHQ6CiAgICAgICAgIGNhc2UgQ1NT
VmFsdWVBcHBsZVN5c3RlbVNlbGVjdGVkVGV4dEJhY2tncm91bmQ6CiAgICAgICAgICAgICAvLyBI
YXJkY29kZWQgdG8gYXZvaWQgZXhwb3NpbmcgYSB1c2VyIGFwcGVhcmFuY2UgcHJlZmVyZW5jZSB0
byB0aGUgd2ViIGZvciBmaW5nZXJwcmludGluZy4KICAgICAgICAgICAgIGlmIChsb2NhbEFwcGVh
cmFuY2UudXNpbmdEYXJrQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiB7IFNp
bXBsZUNvbG9yIHsgMHhDQzNGNjM4QiB9LCBDb2xvcjo6U2VtYW50aWMgfTsKLSAgICAgICAgICAg
IHJldHVybiB7IFNpbXBsZUNvbG9yIHsgMHg5OTgwQkNGRSB9LCBDb2xvcjo6U2VtYW50aWMgfTsK
KyAgICAgICAgICAgICAgICByZXR1cm4geyBtYWtlU2ltcGxlQ29sb3IoMHgzRiwgMHg2MywgMHg4
QiwgMHhDQyksIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVNp
bXBsZUNvbG9yKDB4ODAsIDB4QkMsIDB4RkUsIDB4OTkpLCBDb2xvcjo6U2VtYW50aWMgfTsKIAog
I2lmICFIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQogICAgICAgICBjYXNlIENTU1ZhbHVlQXBw
bGVTeXN0ZW1Db250YWluZXJCb3JkZXI6Ci0gICAgICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3Ig
eyAweEZGQzVDNUM1IH07CisgICAgICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDB4QzUs
IDB4QzUsIDB4QzUpOwogI2VuZGlmCiAKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVt
RXZlbkFsdGVybmF0aW5nQ29udGVudEJhY2tncm91bmQ6IHsKQEAgLTI0MTMsOCArMjQxMyw4IEBA
IGNvbnN0IENHRmxvYXQgYXR0YWNobWVudEljb25TZWxlY3Rpb25Cb3IKIGNvbnN0IENHRmxvYXQg
YXR0YWNobWVudEljb25CYWNrZ3JvdW5kUmFkaXVzID0gMzsKIGNvbnN0IENHRmxvYXQgYXR0YWNo
bWVudEljb25Ub1RpdGxlTWFyZ2luID0gMjsKIAotY29uc3RleHByIFNpbXBsZUNvbG9yIGF0dGFj
aG1lbnRJY29uQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDMwKTsK
LWNvbnN0ZXhwciBTaW1wbGVDb2xvciBhdHRhY2htZW50SWNvbkJvcmRlckNvbG9yID0gbWFrZVNp
bXBsZUNvbG9yKDI1NSwgMjU1LCAyNTUsIDEyNSk7Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50
SWNvbkJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCAzMCk7Citjb25z
dGV4cHIgYXV0byBhdHRhY2htZW50SWNvbkJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1
NSwgMjU1LCAyNTUsIDEyNSk7CiAKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFRpdGxlRm9udFNp
emUgPSAxMjsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFRpdGxlQmFja2dyb3VuZFJhZGl1cyA9
IDM7CkBAIC0yNDIyLDIzICsyNDIyLDIzIEBAIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFRpdGxl
QmFja2dyb3VuZFAKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFRpdGxlTWF4aW11bVdpZHRoID0g
MTAwIC0gKGF0dGFjaG1lbnRUaXRsZUJhY2tncm91bmRQYWRkaW5nICogMik7CiBjb25zdCBDRklu
ZGV4IGF0dGFjaG1lbnRUaXRsZU1heGltdW1MaW5lQ291bnQgPSAyOwogCi1jb25zdGV4cHIgU2lt
cGxlQ29sb3IgYXR0YWNobWVudFRpdGxlSW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2lt
cGxlQ29sb3IoMjA0LCAyMDQsIDIwNCwgMjU1KTsKLWNvbnN0ZXhwciBTaW1wbGVDb2xvciBhdHRh
Y2htZW50VGl0bGVJbmFjdGl2ZVRleHRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigxMDAsIDEwMCwg
MTAwLCAyNTUpOworY29uc3RleHByIGF1dG8gYXR0YWNobWVudFRpdGxlSW5hY3RpdmVCYWNrZ3Jv
dW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA0LCAyMDQsIDIwNCwgMjU1KTsKK2NvbnN0ZXhw
ciBhdXRvIGF0dGFjaG1lbnRUaXRsZUluYWN0aXZlVGV4dENvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDEwMCwgMTAwLCAxMDAsIDI1NSk7CiAKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFN1YnRpdGxl
Rm9udFNpemUgPSAxMDsKIGNvbnN0IGludCBhdHRhY2htZW50U3VidGl0bGVXaWR0aEluY3JlbWVu
dCA9IDEwOwotY29uc3RleHByIFNpbXBsZUNvbG9yIGF0dGFjaG1lbnRTdWJ0aXRsZVRleHRDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcig4MiwgMTQ1LCAyMTQsIDI1NSk7Citjb25zdGV4cHIgYXV0byBh
dHRhY2htZW50U3VidGl0bGVUZXh0Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoODIsIDE0NSwgMjE0
LCAyNTUpOwogCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQcm9ncmVzc0JhcldpZHRoID0gMzA7
CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQcm9ncmVzc0JhckhlaWdodCA9IDU7CiBjb25zdCBD
R0Zsb2F0IGF0dGFjaG1lbnRQcm9ncmVzc0Jhck9mZnNldCA9IC05OwogY29uc3QgQ0dGbG9hdCBh
dHRhY2htZW50UHJvZ3Jlc3NCYXJCb3JkZXJXaWR0aCA9IDE7Ci1jb25zdGV4cHIgU2ltcGxlQ29s
b3IgYXR0YWNobWVudFByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDAsIDAsIDAsIDg5KTsKLWNvbnN0ZXhwciBTaW1wbGVDb2xvciBhdHRhY2htZW50UHJvZ3Jlc3NC
YXJGaWxsQ29sb3IgPSBDb2xvcjo6d2hpdGU7Ci1jb25zdGV4cHIgU2ltcGxlQ29sb3IgYXR0YWNo
bWVudFByb2dyZXNzQmFyQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMTI4
KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRQcm9ncmVzc0JhckJhY2tncm91bmRDb2xvciA9
IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCA4OSk7Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50
UHJvZ3Jlc3NCYXJGaWxsQ29sb3IgPSBDb2xvcjo6d2hpdGU7Citjb25zdGV4cHIgYXV0byBhdHRh
Y2htZW50UHJvZ3Jlc3NCYXJCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCAx
MjgpOwogCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQbGFjZWhvbGRlckJvcmRlclJhZGl1cyA9
IDU7Ci1jb25zdGV4cHIgU2ltcGxlQ29sb3IgYXR0YWNobWVudFBsYWNlaG9sZGVyQm9yZGVyQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgNTYpOworY29uc3RleHByIGF1dG8gYXR0YWNo
bWVudFBsYWNlaG9sZGVyQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgNTYp
OwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UGxhY2Vob2xkZXJCb3JkZXJXaWR0aCA9IDI7CiBj
b25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQbGFjZWhvbGRlckJvcmRlckRhc2hMZW5ndGggPSA2Owog
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQwMDUpCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAyMC0wNy0wNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgUGFydCAyIG9mIFNpbXBsZUNvbG9yIGFuZCBTUkdCQTx1aW50OF90PiBhcmUgZXNzZW50
aWFsbHkgdGhlIHNhbWUgLSBsZXQncyBjb252ZXJnZSB0aGVtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM5ODEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIu
Y3BwOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgYXV0by9tYWtlU2ltcGxlQ29sb3IuCisKIDIw
MjAtMDctMDMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDaGFuZ2UgdGhlIG5hbWVzIG9mIE1JTUVUeXBlUmVnaXN0cnkgbWV0aG9kcyB0byBj
b21wbHkgd2l0aCB3ZWJraXQgbmFtaW5nIHN0eWxlCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAkocmV2aXNpb24g
MjYzOTc4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDExICs3NCwxMSBAQCBzdGF0aWMgY29uc3Qg
aW50IGJvcmRlclJhZGl1cyA9IDEyOwogc3RhdGljIGNvbnN0IGludCBib3JkZXJUaGlja25lc3Mg
PSAyOwogCiAvLyBDb2xvcnMKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgYmFja2dyb3VuZENv
bG9yID0gMHhBMDIwMjAyMDsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgYm9yZGVyQ29sb3Ig
PSAweEZGQTBBMEEwOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBzbGlkZXJHdXR0ZXJDb2xv
ciA9IDB4RkYxNDE0MTQ7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHNsaWRlckJ1dHRvbkNv
bG9yID0gMHhGRjgwODA4MDsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgdGV4dENvbG9yID0g
MHhGRkZGRkZGRjsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBiYWNrZ3JvdW5kQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMHgyMCwgMHgyMCwgMHgyMCwgMHhBMCk7CitzdGF0aWMgY29uc3RleHByIGF1
dG8gYm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMHhBMCwgMHhBMCwgMHhBMCk7CitzdGF0
aWMgY29uc3RleHByIGF1dG8gc2xpZGVyR3V0dGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMHgx
NCwgMHgxNCwgMHgxNCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyQnV0dG9uQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMHg4MCwgMHg4MCwgMHg4MCk7CitzdGF0aWMgY29uc3RleHByIGF1
dG8gdGV4dENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDB4RkYsIDB4RkYsIDB4RkYpOwogCiBIVURC
dXR0b246OkhVREJ1dHRvbihIVURCdXR0b25UeXBlIHR5cGUsIGNvbnN0IEludFBvaW50JiBwb3Np
dGlvbikKICAgICA6IEhVRFdpZGdldChJbnRSZWN0KHBvc2l0aW9uLCBJbnRTaXplKCkpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403700</attachid>
            <date>2020-07-07 09:38:20 -0700</date>
            <delta_ts>2020-07-07 12:58:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213981-20200707093819.patch</filename>
            <type>text/plain</type>
            <size>59847</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzk5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzNSBAQAorMjAyMC0wNy0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGFydCAyIG9mIFNpbXBsZUNvbG9y
IGFuZCBTUkdCQTx1aW50OF90PiBhcmUgZXNzZW50aWFsbHkgdGhlIHNhbWUgLSBsZXQncyBjb252
ZXJnZSB0aGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTM5ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAtIFJlcGxhY2VzIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIFNpbXBsZUNvbG9yIGJhc2Vk
IG9uIGFuIEFSR0IgdWludDMyX3Qgd2l0aCBTUkdCQTx1aW50OF90Pi4KKyAgICAgICAgLSBSZW1v
dmVzIFNpbXBsZUNvbG9yIGNvbnN0cnVjdG9yIHRha2luZyBhIHVpbnQzMl90LiBDYWxsZXJzIHRo
YXQgc3RpbGwgbmVlZCB0byBjb252ZXJ0IGZyb20gQVJHQgorICAgICAgICAgIG5vdyBkbyBtYWtl
U2ltcGxlQ29sb3IoYXNTUkdCQShQYWNrZWQ6OkFSR0IgeyB2YWx1ZSB9KSkuCisgICAgICAgIC0g
UmVtb3ZlcyB2YWx1ZSgpIGFuZCB2YWx1ZUFzQVJHQigpIG1lbWJlciBmdW5jdGlvbnMgZnJvbSBT
aW1wbGVDb2xvci4gQ2FsbGVycyB0aGF0IG5lZWQgYSBwYWNrZWQKKyAgICAgICAgICByZXByZXNl
bnRhdGlvbiBub3cgZG8gUGFja2VkOjpBUkdCIHsgc2ltcGxlQ29sb3IuYXNTUkdCQTx1aW50OF90
PigpIH0udmFsdWUuCisKKyAgICAgICAgKiBjc3MvU3R5bGVDb2xvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKToKKyAgICAgICAgVXNlIGFzU1JH
QkEoUGFja2VkOjpBUkdCey4uLn0pIHRvIGNvbnN0dWN0IHRoZSBjb2xvci4KKworICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZp
bmlzaFBhcnNpbmdOYW1lZENvbG9yKToKKyAgICAgICAgVXNlIGFzU1JHQkEoUGFja2VkOjpBUkdC
ey4uLn0pIChvciBpbiBvbmUgY2FzZSwgUGFja2VkOjpSR0JBKSB0byBjb25zdHVjdCB0aGUgY29s
b3IuCisgICAgICAgIFRoZXNlIGNhbiBhbG1vc3QgY2VydGFpbmx5IGJlIHNpbXBsaWZpZWQsIGJ1
dCBpbiB0aGUgaW50ZXJlc3Qgb2Yga2VlcGluZyB0aGluZ3Mgc21hbGxpc2gsCisgICAgICAgIEkg
aGF2ZSBsZWZ0IHRoYXQgZm9yIGEgc3Vic2VxdWVudCBjaGFuZ2UuCisKKyAgICAgICAgKiBlZGl0
aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRv
L21ha2VTaW1wbGVDb2xvci4KKworICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92
ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIG1ha2VTaW1wbGVDb2xvci4K
KworICAgICAgICAoV2ViQ29yZTo6SGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm86Okhpc3Rvcmlj
TWVtb3J5Q2F0ZWdvcnlJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcmljUmVzb3VyY2VV
c2FnZURhdGE6Okhpc3RvcmljUmVzb3VyY2VVc2FnZURhdGEpOgorICAgICAgICBTd2l0Y2ggdG8g
dXNpbmcgYXV0by9tYWtlU2ltcGxlQ29sb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hZHdhaXRh
L1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHA6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRv
L21ha2VTaW1wbGVDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAtIFN3aXRj
aCB0byB1c2luZyBhdXRvL21ha2VTaW1wbGVDb2xvciBmb3IgbmFtZWQgY29sb3JzLgorICAgICAg
ICAtIFN3aXRjaCB0byBzdG9yaW5nL2VuY29kaW5nIHRoZSBpbmxpbmUgU2ltcGxlQ29sb3IgYXMg
YSBQYWNrZWQ6OlJHQkEgdmFsdWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ckJsZW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kKToKKyAgICAgICAgVXBkYXRl
IGZvciBuZXcgbmFtZSBvZiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWNrZWQ6OlJH
QkE6OlJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6UGFja2VkOjpBUkdCOjpBUkdCKToKKyAgICAg
ICAgKFdlYkNvcmU6OmFzU1JHQkEpOgorICAgICAgICBSZW5hbWUgV2ViQ29yZTo6QVJHQiB0byBX
ZWJDb3JlOjpQYWNrZWQ6OkFSR0IuIEFkZHMgY29tcGFuaW9uLCBXZWJDb3JlOjpQYWNrZWQ6OlJH
QkEuIEFuZCBhZGRzIGNvbnN0cnVjdG9ycworICAgICAgICB3aGljaCBtYWtlIGEgcGFja2VkIHR5
cGUgZnJvbSBhbiBTUkdCQTx1aW50OF90Pi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50Qnl0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50RmxvYXQpOgorICAgICAgICBF
eHRyYWN0IG91dCBoZWxwZXIgZnVuY3Rpb25zIHdoaWNoIGp1c3QgZG8gdGhlIGNsYW1waW5nIGZv
ciB0aGUgdHlwZS4gCisKKyAgICAgICAgKFdlYkNvcmU6OmNsYW1wVG9Db21wb25lbnRCeXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50RmxvYXRzKToKKyAgICAgICAgUmVu
YW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHRoYXQganVzdCBjbGFtcCB0byB1c2UgImNsYW1wIiBw
cmVmaXggcmF0aGVyIHRoYW4gImNvbnZlcnQiLiBNYWtlIHVzZQorICAgICAgICBvZiBleHRyYWN0
ZWQgaGVscGVycy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0
b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6YmxlbmRQaXhlbCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6cGl4ZWxWYWx1ZSBjb25zdCk6
CisgICAgICAgIFVwZGF0ZSB1c2luZyBuZXcgcGFja2VkIGNvbG9yIHR5cGVzIGFuZCBmdW50aW9u
cy4gCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVDb2xvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6OlNpbXBsZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUNvbG9yOjphbHBoYUNvbXBvbmVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVDb2xvcjo6YWxwaGFDb21wb25lbnRBc0Zsb2F0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNpbXBsZUNvbG9yOjppc09wYXF1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVDb2xvcjo6aXNWaXNpYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNvbG9y
Ojpjb2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVDb2xvcjo6
aW52ZXJ0ZWRDb2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVD
b2xvcjo6YXNTUkdCQSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVDb2xvcjo6Z2V0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VTaW1wbGVDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVDb2xvcjo6dmFsdWVBc0FSR0IgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6OnZhbHVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNpbXBsZUNvbG9yOjpyZWRDb21wb25lbnQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6OmdyZWVuQ29tcG9uZW50IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNvbG9yOjpibHVlQ29tcG9uZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgLSBSZW1vdmVzIGNvbnN0cnVjdG9yIHRha2luZyBhbiBBUkdCIHVp
bnQzMl90LgorICAgICAgICAtIFJlbW92ZXMgdmFsdWVBc0FSR0IoKS92YWx1ZSgpIGZ1bmN0aW9u
cyAoY2FuIHVzZSBQYWNrZWQ6OkFSR0IgZGlyZWN0bHkgaWYgbmVlZGVkKS4KKyAgICAgICAgLSBT
d2l0Y2hlcyBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiB0byBTUkdCQTx1aW50OF90Pi4KKyAgICAg
ICAgLSBTdHJlYW1saW5lIG1ha2VTaW1wbGVDb2xvciBmdW5jdGlvbnMgdG8gdXNlIHNoYXJlZCBo
ZWxwZXJzIGZyb20gQ29sb3JVdGlsaXRpZXMuaAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpuc0NvbG9yKToKKyAgICAgICAgVXNlIFBhY2tlZDo6UkdCQSB0byBleHRyYWN0IHVpbnQz
Ml90IGZvciBxdWljayBsb29rdXAgb2YgdHJhbnNwYXJlbnQvd2hpdGUvYmxhY2sgU2ltcGxlQ29s
b3JzLiBEZXNwaXRlIHRoZQorICAgICAgICBsZW5ndGggb2YgdGhlIGNhbGxzLCBTaW1wbGVDb2xv
ciBpcyBmdWxseSBjb25zdGV4cHIsIHNvIHRoZXNlIGFjdHVhbGx5IGNvbGxhcHNlIGRvd24gdG8g
dGhlIHVpbnQzMl90IHJlcHJlc2VudGF0aW9uCisgICAgICAgIGF0IGNvbXBpbGUgdGltZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdEb3RzRm9yRG9jdW1lbnRN
YXJrZXIpOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgYXV0by9tYWtlU2ltcGxlQ29sb3IuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHREZXZpY2VzKToKKyAgICAgICAgU3dpdGNoIHRv
IHVzaW5nIG1ha2VTaW1wbGVDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2U6OmRyYXdCb3hlcyk6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRvL21ha2VT
aW1wbGVDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2Nr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0Jh
Y2tncm91bmQpOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgbWFrZVNpbXBsZUNvbG9yLgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmNhbGN1bGF0ZUJvcmRlclN0eWxlQ29sb3IpOgorICAgICAgICBVcGRhdGUg
Y29tbWVudCB0byB1c2UgcGVyLWNvbXBvbmVudCB2YWx1ZXMuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnN5c3Rl
bUNvbG9yIGNvbnN0KToKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIG1ha2VTaW1wbGVDb2xvci4K
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2FpdGEuY3BwOgorICAgICAgICBT
d2l0Y2ggdG8gdXNpbmcgYXV0by9tYWtlU2ltcGxlQ29sb3IuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWVJT1MuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcik6
CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRvL21ha2VTaW1wbGVDb2xvci4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lTWFjOjpzeXN0ZW1Db2xvciBjb25zdCk6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBh
dXRvL21ha2VTaW1wbGVDb2xvci4KKwogMjAyMC0wNy0wNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogKHIyNjM5NzcpOiBbIGlPUyBEZWJ1ZyBX
SzIgXSAzNiBmYXN0IGZvcm0gYW5kIHdlYi1wbGF0Zm9ybSB0ZXN0IGNvbnNpc3RlbnRseSBjcmFz
aGluZwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQ29sb3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUNvbG9yLmNwcAkocmV2aXNpb24gMjYzOTc4KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MSw3ICs0MSw3IEBAIENvbG9yIFN0eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdvcmQoQ1NTVmEKIHsK
ICAgICBpZiAoY29uc3QgY2hhciogdmFsdWVOYW1lID0gZ2V0VmFsdWVOYW1lKGtleXdvcmQpKSB7
CiAgICAgICAgIGlmIChjb25zdCBOYW1lZENvbG9yKiBuYW1lZENvbG9yID0gZmluZENvbG9yKHZh
bHVlTmFtZSwgc3RybGVuKHZhbHVlTmFtZSkpKQotICAgICAgICAgICAgcmV0dXJuIFNpbXBsZUNv
bG9yIHsgbmFtZWRDb2xvci0+QVJHQlZhbHVlIH07CisgICAgICAgICAgICByZXR1cm4gbWFrZVNp
bXBsZUNvbG9yKGFzU1JHQkEoUGFja2VkOjpBUkdCIHsgbmFtZWRDb2xvci0+QVJHQlZhbHVlIH0p
KTsKICAgICB9CiAKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnN5c3RlbUNv
bG9yKGtleXdvcmQsIG9wdGlvbnMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJGYXN0UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MTQsMjEgKzQxNCwyOCBAQCBzdGF0aWMgT3B0aW9uYWw8U2ltcGxlQ29sb3I+IGZpbmlz
aFBhcnNpCiAgICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICBjYXNlIDM6CiAgICAgICAgIC8vICNh
YmMgY29udmVydHMgdG8gI2FhYmJjYwotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZG
MDAwMDAwCisgICAgICAgIC8vIEZJWE1FOiBSZXBsYWNlIGNvbnZlcnNpb24gdG8gUGFja2VkOjpB
UkdCIHdpdGggc2ltcGxlciBiaXQgbWF0aCB0byBjb25zdHJ1Y3QKKyAgICAgICAgLy8gdGhlIFNS
R0JBPHVpbnQ4X3Q+IGRpcmVjdGx5LgorICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKGFz
U1JHQkEoUGFja2VkOjpBUkdCIHsKKyAgICAgICAgICAgICAgIDB4RkYwMDAwMDAKICAgICAgICAg
ICAgIHwgKHZhbHVlICYgMHhGMDApIDw8IDEyIHwgKHZhbHVlICYgMHhGMDApIDw8IDgKICAgICAg
ICAgICAgIHwgKHZhbHVlICYgMHhGMCkgPDwgOCB8ICh2YWx1ZSAmIDB4RjApIDw8IDQKLSAgICAg
ICAgICAgIHwgKHZhbHVlICYgMHhGKSA8PCA0IHwgKHZhbHVlICYgMHhGKSB9OworICAgICAgICAg
ICAgfCAodmFsdWUgJiAweEYpIDw8IDQgfCAodmFsdWUgJiAweEYpIH0pKTsKICAgICBjYXNlIDQ6
CiAgICAgICAgIC8vICNhYmNkIGNvbnZlcnRzIHRvIGRkYWFiYmNjIHNpbmNlIGFscGhhIGJ5dGVz
IGFyZSB0aGUgaGlnaCBieXRlcy4KLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgKHZhbHVl
ICYgMHhGKSA8PCAyOCB8ICh2YWx1ZSAmIDB4RikgPDwgMjQKKyAgICAgICAgLy8gRklYTUU6IFJl
cGxhY2UgY29udmVyc2lvbiB0byBQYWNrZWQ6OkFSR0Igd2l0aCBzaW1wbGVyIGJpdCBtYXRoIHRv
IGNvbnN0cnVjdAorICAgICAgICAvLyB0aGUgU1JHQkE8dWludDhfdD4gZGlyZWN0bHkuCisgICAg
ICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoYXNTUkdCQShQYWNrZWQ6OkFSR0IgeworICAgICAg
ICAgICAgICAodmFsdWUgJiAweEYpIDw8IDI4IHwgKHZhbHVlICYgMHhGKSA8PCAyNAogICAgICAg
ICAgICAgfCAodmFsdWUgJiAweEYwMDApIDw8IDggfCAodmFsdWUgJiAweEYwMDApIDw8IDQKICAg
ICAgICAgICAgIHwgKHZhbHVlICYgMHhGMDApIDw8IDQgfCAodmFsdWUgJiAweEYwMCkKLSAgICAg
ICAgICAgIHwgKHZhbHVlICYgMHhGMCkgfCAodmFsdWUgJiAweEYwKSA+PiA0IH07CisgICAgICAg
ICAgICB8ICh2YWx1ZSAmIDB4RjApIHwgKHZhbHVlICYgMHhGMCkgPj4gNCB9KSk7CiAgICAgY2Fz
ZSA2OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGMDAwMDAwIHwgdmFsdWUgfTsK
KyAgICAgICAgLy8gRklYTUU6IFJlcGxhY2UgY29udmVyc2lvbiB0byBQYWNrZWQ6OkFSR0Igd2l0
aCBzaW1wbGVyIGJpdCBtYXRoIHRvIGNvbnN0cnVjdAorICAgICAgICAvLyB0aGUgU1JHQkE8dWlu
dDhfdD4gZGlyZWN0bHkuCisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoYXNTUkdCQShQ
YWNrZWQ6OkFSR0IgeyAweEZGMDAwMDAwIHwgdmFsdWUgfSkpOwogICAgIGNhc2UgODoKLSAgICAg
ICAgLy8gV2UgcGFyc2VkIHRoZSB2YWx1ZXMgaW50byBSR0JBIG9yZGVyLCBidXQgd2Ugc3RvcmUg
dGhlbSBpbiBBUkdCIG9yZGVyLgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyB2YWx1ZSA8
PCAyNCB8IHZhbHVlID4+IDggfTsKKyAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcihhc1NS
R0JBKFBhY2tlZDo6UkdCQSB7IHZhbHVlIH0pKTsKICAgICB9CiAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIH0KQEAgLTUzMiw3ICs1MzksNyBAQCBzdGF0aWMgT3B0aW9uYWw8U2ltcGxlQ29sb3I+
IGZpbmlzaFBhcnNpCiAgICAgYXV0byBuYW1lZENvbG9yID0gZmluZENvbG9yKGJ1ZmZlciwgbGVu
Z3RoKTsKICAgICBpZiAoIW5hbWVkQ29sb3IpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0gICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgbmFtZWRDb2xvci0+QVJHQlZhbHVlIH07CisgICAg
cmV0dXJuIG1ha2VTaW1wbGVDb2xvcihhc1NSR0JBKFBhY2tlZDo6QVJHQiB7IG5hbWVkQ29sb3It
PkFSR0JWYWx1ZSB9KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
YXRpYyBPcHRpb25hbDxTaW1wbGVDb2xvcj4gcGFyc2VOYW1lZENvbG9ySW50ZXJuYWwoY29uc3Qg
Q2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRpb25IaWdobGlnaHQuaAkocmV2aXNpb24gMjYz
OTc4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCw5IEBAIHN0cnVjdCBDb21wb3NpdGlvbkhpZ2hsaWdo
dCB7CiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGF0aWMgY29uc3Rl
eHByIFNpbXBsZUNvbG9yIGRlZmF1bHRDb21wb3NpdGlvbkZpbGxDb2xvciB7IDB4M0NBRkMwRTMg
fTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdENvbXBvc2l0aW9uRmlsbENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDB4QUYsIDB4QzAsIDB4RTMsIDB4M0MpOwogI2Vsc2UKLSAgICBz
dGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIGRlZmF1bHRDb21wb3NpdGlvbkZpbGxDb2xvciB7
IDB4RkZFMURENTUgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdENvbXBvc2l0
aW9uRmlsbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDB4RTEsIDB4REQsIDB4NTUsIDB4RkYpOwog
I2VuZGlmCiAKICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCB7IDAgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2Eu
bW0JKHJldmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3Vy
Y2VVc2FnZU92ZXJsYXlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI4LDEyICsxMjgsMTIg
QEAgc3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ29sb3IoZmxvYXQgciwgZgogc3RydWN0IEhpc3Rv
cmljTWVtb3J5Q2F0ZWdvcnlJbmZvIHsKICAgICBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbygp
IHsgfSAvLyBOZWVkZWQgZm9yIHN0ZDo6YXJyYXkuCiAKLSAgICBIaXN0b3JpY01lbW9yeUNhdGVn
b3J5SW5mbyh1bnNpZ25lZCBjYXRlZ29yeSwgdWludDMyX3QgYXJnYiwgU3RyaW5nIG5hbWUsIGJv
b2wgc3ViY2F0ZWdvcnkgPSBmYWxzZSkKKyAgICBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyh1
bnNpZ25lZCBjYXRlZ29yeSwgU2ltcGxlQ29sb3Igc2ltcGxlQ29sb3IsIFN0cmluZyBuYW1lLCBi
b29sIHN1YmNhdGVnb3J5ID0gZmFsc2UpCiAgICAgICAgIDogbmFtZShXVEZNb3ZlKG5hbWUpKQor
ICAgICAgICAsIGNvbG9yKGNhY2hlZENHQ29sb3Ioc2ltcGxlQ29sb3IpKQogICAgICAgICAsIGlz
U3ViY2F0ZWdvcnkoc3ViY2F0ZWdvcnkpCiAgICAgICAgICwgdHlwZShjYXRlZ29yeSkKICAgICB7
Ci0gICAgICAgIGNvbG9yID0gY2FjaGVkQ0dDb2xvcihTaW1wbGVDb2xvciB7IGFyZ2IgfSk7CiAg
ICAgfQogCiAgICAgU3RyaW5nIG5hbWU7CkBAIC0xNjAsMTggKzE2MCwxOCBAQCBzdHJ1Y3QgSGlz
dG9yaWNSZXNvdXJjZVVzYWdlRGF0YSB7CiBIaXN0b3JpY1Jlc291cmNlVXNhZ2VEYXRhOjpIaXN0
b3JpY1Jlc291cmNlVXNhZ2VEYXRhKCkKIHsKICAgICAvLyBWTSB0YWcgY2F0ZWdvcmllcy4KLSAg
ICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpKU0pJVF0gPSBIaXN0b3JpY01lbW9yeUNhdGVn
b3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6SlNKSVQsIDB4RkZGRjYwRkYsICJKUyBKSVQiKTsKLSAg
ICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZV0gPSBIaXN0b3JpY01lbW9yeUNh
dGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6R2lnYWNhZ2UsIDB4RkY2NTRGRjAsICJHaWdhY2Fn
ZSIpOwotICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkltYWdlc10gPSBIaXN0b3JpY01l
bW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6SW1hZ2VzLCAweEZGRkZGRjAwLCAiSW1h
Z2VzIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6TGF5ZXJzXSA9IEhpc3Rvcmlj
TWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpMYXllcnMsIDB4RkYwMEZGRkYsICJM
YXllcnMiKTsKLSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpMaWJjTWFsbG9jXSA9IEhp
c3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpMaWJjTWFsbG9jLCAweEZG
MDBGRjAwLCAibGliYyBtYWxsb2MiKTsKLSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5Ojpi
bWFsbG9jXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpibWFs
bG9jLCAweEZGRkY2MDYwLCAiYm1hbGxvYyIpOwotICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdv
cnk6Oklzb0hlYXBdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6
Oklzb0hlYXAsIDB4RkY4MDlGNDAsICJJc29IZWFwIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlD
YXRlZ29yeTo6T3RoZXJdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdv
cnk6Ok90aGVyLCAweEZGQzBGRjAwLCAiT3RoZXIiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNh
dGVnb3J5OjpKU0pJVF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29y
eTo6SlNKSVQsIG1ha2VTaW1wbGVDb2xvcigweEZGLCAweDYwLCAweEZGLCAweEZGKSwgIkpTIEpJ
VCIpOworICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkdpZ2FjYWdlXSA9IEhpc3Rvcmlj
TWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZSwgbWFrZVNpbXBsZUNv
bG9yKDB4NjUsIDB4NEYsIDB4RjAsIDB4RkYpLCAiR2lnYWNhZ2UiKTsKKyAgICBjYXRlZ29yaWVz
W01lbW9yeUNhdGVnb3J5OjpJbWFnZXNdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVt
b3J5Q2F0ZWdvcnk6OkltYWdlcywgbWFrZVNpbXBsZUNvbG9yKDB4RkYsIDB4RkYsIDB4MDAsIDB4
RkYpLCAiSW1hZ2VzIik7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6TGF5ZXJzXSA9
IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpMYXllcnMsIG1ha2VT
aW1wbGVDb2xvcigweDAwLCAweEZGLCAweEZGLCAweEZGKSwgIkxheWVycyIpOworICAgIGNhdGVn
b3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkxpYmNNYWxsb2NdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29y
eUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkxpYmNNYWxsb2MsIG1ha2VTaW1wbGVDb2xvcigweDAwLCAw
eEZGLCAweDAwLCAweEZGKSwgImxpYmMgbWFsbG9jIik7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlD
YXRlZ29yeTo6Ym1hbGxvY10gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRl
Z29yeTo6Ym1hbGxvYywgbWFrZVNpbXBsZUNvbG9yKDB4RkYsIDB4NjAsIDB4NjAsIDB4RkYpLCAi
Ym1hbGxvYyIpOworICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6Oklzb0hlYXBdID0gSGlz
dG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6Oklzb0hlYXAsIG1ha2VTaW1w
bGVDb2xvcigweDgwLCAweDlGLCAweDQwLCAweEZGKSwgIklzb0hlYXAiKTsKKyAgICBjYXRlZ29y
aWVzW01lbW9yeUNhdGVnb3J5OjpPdGhlcl0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhN
ZW1vcnlDYXRlZ29yeTo6T3RoZXIsIG1ha2VTaW1wbGVDb2xvcigweEMwLCAweEZGLCAweDAwLCAw
eEZGKSwgIk90aGVyIik7CiAKICAgICAvLyBTdWIgY2F0ZWdvcmllcyAoZS5nIGJyZWFrZG93biBv
ZiBibWFsbG9jIHRhZy4pCi0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6R0NIZWFwXSA9
IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ0hlYXAsIDB4RkZB
MEEwRkYsICJHQyBoZWFwIiwgdHJ1ZSk7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6
R0NPd25lZF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6R0NP
d25lZCwgMHhGRkZGQzA2MCwgIkdDIG93bmVkIiwgdHJ1ZSk7CisgICAgY2F0ZWdvcmllc1tNZW1v
cnlDYXRlZ29yeTo6R0NIZWFwXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNh
dGVnb3J5OjpHQ0hlYXAsIG1ha2VTaW1wbGVDb2xvcigweEEwLCAweEEwLCAweEZGLCAweEZGKSwg
IkdDIGhlYXAiLCB0cnVlKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHQ093bmVk
XSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ093bmVkLCBt
YWtlU2ltcGxlQ29sb3IoMHhGRiwgMHhDMCwgMHg2MCwgMHhGRiksICJHQyBvd25lZCIsIHRydWUp
OwogCiAjaWZuZGVmIE5ERUJVRwogICAgIC8vIEVuc3VyZSB0aGlzIGFsaWducyB3aXRoIFJlc291
cmNlVXNhZ2VEYXRhJ3MgY2F0ZWdvcnkgb3JkZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hZHdhaXRhL1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYWR3YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEuY3BwCShy
ZXZpc2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hZHdhaXRhL1Njcm9s
bGJhclRoZW1lQWR3YWl0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEzICs0MywxMyBAQCBz
dGF0aWMgY29uc3QgdW5zaWduZWQgb3ZlcmxheVRodW1iU2l6ZSA9CiBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbWluaW11bVRodW1iU2l6ZSA9IDQwOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRodW1i
U2l6ZSA9IDY7CiBzdGF0aWMgY29uc3QgZG91YmxlIHNjcm9sbGJhck9wYWNpdHkgPSAwLjg7Ci1z
dGF0aWMgY29uc3QgQ29sb3Igc2Nyb2xsYmFyQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNv
bG9yKDI1MiwgMjUyLCAyNTIpOwotc3RhdGljIGNvbnN0IENvbG9yIHNjcm9sbGJhckJvcmRlckNv
bG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyMCwgMjIzLCAyMjcpOwotc3RhdGljIGNvbnN0IENvbG9y
IG92ZXJsYXlUaHVtYkJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAyNTUs
IDEwMCk7Ci1zdGF0aWMgY29uc3QgQ29sb3Igb3ZlcmxheVRodW1iQ29sb3IgPSBtYWtlU2ltcGxl
Q29sb3IoNDYsIDUyLCA1NCwgMTAwKTsKLXN0YXRpYyBjb25zdCBDb2xvciB0aHVtYkhvdmVyZWRD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcig4NiwgOTEsIDkyKTsKLXN0YXRpYyBjb25zdCBDb2xvciB0
aHVtYlByZXNzZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNywgMTA2LCAyMDMpOwotc3RhdGlj
IGNvbnN0IENvbG9yIHRodW1iQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTI2LCAxMjksIDEzMCk7
CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2Nyb2xsYmFyQmFja2dyb3VuZENvbG9yID0gbWFrZVNp
bXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcm9sbGJh
ckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyMCwgMjIzLCAyMjcpOworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIG92ZXJsYXlUaHVtYkJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1
NSwgMjU1LCAyNTUsIDEwMCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gb3ZlcmxheVRodW1iQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoNDYsIDUyLCA1NCwgMTAwKTsKK3N0YXRpYyBjb25zdGV4cHIg
YXV0byB0aHVtYkhvdmVyZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcig4NiwgOTEsIDkyKTsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byB0aHVtYlByZXNzZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigy
NywgMTA2LCAyMDMpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRodW1iQ29sb3IgPSBtYWtlU2lt
cGxlQ29sb3IoMTI2LCAxMjksIDEzMCk7CiAKIGJvb2wgU2Nyb2xsYmFyVGhlbWVBZHdhaXRhOjp1
c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4
ICszNiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0ZXhwciBTaW1w
bGVDb2xvciBsaWdodGVuZWRCbGFjayB7IDB4RkY1NDU0NTQgfTsKLXN0YXRpYyBjb25zdGV4cHIg
U2ltcGxlQ29sb3IgZGFya2VuZWRXaGl0ZSB7IDB4RkZBQkFCQUIgfTsKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byBsaWdodGVuZWRCbGFjayA9IG1ha2VTaW1wbGVDb2xvcigweDU0LCAweDU0LCAweDU0
LCAweEZGKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBkYXJrZW5lZFdoaXRlID0gbWFrZVNpbXBs
ZUNvbG9yKDB4QUIsIDB4QUIsIDB4QUIsIDB4RkYpOwogCiBDb2xvcjo6Q29sb3IoY29uc3QgQ29s
b3ImIG90aGVyKQogICAgIDogbV9jb2xvckRhdGEob3RoZXIubV9jb2xvckRhdGEpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI2Mzk3OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE2MywxNCArMTYzLDE0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBvcGVy
YXRvciBEMkQxX1ZFQ1RPUl80RigpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBzdGF0aWMgY29uc3Rl
eHByIFNpbXBsZUNvbG9yIGJsYWNrIHsgMHhGRjAwMDAwMCB9OwotICAgIHN0YXRpYyBjb25zdGV4
cHIgU2ltcGxlQ29sb3Igd2hpdGUgeyAweEZGRkZGRkZGIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBTaW1wbGVDb2xvciBkYXJrR3JheSB7IDB4RkY4MDgwODAgfTsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIFNpbXBsZUNvbG9yIGdyYXkgeyAweEZGQTBBMEEwIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBTaW1wbGVDb2xvciBsaWdodEdyYXkgeyAweEZGQzBDMEMwIH07Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBTaW1wbGVDb2xvciB0cmFuc3BhcmVudCB7IDB4MDAwMDAwMDAgfTsKLSAgICBzdGF0aWMg
Y29uc3RleHByIFNpbXBsZUNvbG9yIGN5YW4geyAweEZGMDBGRkZGIH07Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBTaW1wbGVDb2xvciB5ZWxsb3cgeyAweEZGRkZGRjAwIH07CisgICAgc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGJsYWNrID0gbWFrZVNpbXBsZUNvbG9yKDB4MDAsIDB4MDAsIDB4MDApOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byB3aGl0ZSA9IG1ha2VTaW1wbGVDb2xvcigweEZGLCAw
eEZGLCAweEZGKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGFya0dyYXkgPSBtYWtlU2lt
cGxlQ29sb3IoMHg4MCwgMHg4MCwgMHg4MCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGdy
YXkgPSBtYWtlU2ltcGxlQ29sb3IoMHhBMCwgMHhBMCwgMHhBMCk7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGxpZ2h0R3JheSA9IG1ha2VTaW1wbGVDb2xvcigweEMwLCAweEMwLCAweEMwKTsK
KyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gdHJhbnNwYXJlbnQgPSBtYWtlU2ltcGxlQ29sb3Io
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGN5YW4g
PSBtYWtlU2ltcGxlQ29sb3IoMHgwMCwgMHhGRiwgMHhGRik7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIHllbGxvdyA9IG1ha2VTaW1wbGVDb2xvcigweEZGLCAweEZGLCAweDAwKTsKIAogICAg
IGJvb2wgaXNFeHRlbmRlZCgpIGNvbnN0IHsgcmV0dXJuICEobV9jb2xvckRhdGEuc2ltcGxlQ29s
b3JBbmRGbGFncyAmIGludmFsaWRTaW1wbGVDb2xvcik7IH0KICAgICBib29sIGlzU2ltcGxlKCkg
Y29uc3QgeyByZXR1cm4gIWlzRXh0ZW5kZWQoKTsgfQpAQCAtMzAxLDEyICszMDEsMTIgQEAgaW5s
aW5lIGNvbnN0IEV4dGVuZGVkQ29sb3ImIENvbG9yOjphc0V4dAogaW5saW5lIGNvbnN0IFNpbXBs
ZUNvbG9yIENvbG9yOjphc1NpbXBsZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzU2ltcGxlKCkp
OwotICAgIHJldHVybiB7IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2NvbG9yRGF0YS5zaW1wbGVD
b2xvckFuZEZsYWdzID4+IDMyKSB9OworICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoYXNTUkdC
QShQYWNrZWQ6OlJHQkEgeyBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9jb2xvckRhdGEuc2ltcGxl
Q29sb3JBbmRGbGFncyA+PiAzMikgfSkpOwogfQogCiBpbmxpbmUgdm9pZCBDb2xvcjo6c2V0U2lt
cGxlQ29sb3IoU2ltcGxlQ29sb3Igc2ltcGxlQ29sb3IpCiB7Ci0gICAgbV9jb2xvckRhdGEuc2lt
cGxlQ29sb3JBbmRGbGFncyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaW1wbGVDb2xvci52YWx1
ZSgpKSA8PCAzMjsKKyAgICBtX2NvbG9yRGF0YS5zaW1wbGVDb2xvckFuZEZsYWdzID0gc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KFBhY2tlZDo6UkdCQSB7IHNpbXBsZUNvbG9yLmFzU1JHQkE8dWludDhf
dD4oKSB9LnZhbHVlKSA8PCAzMjsKICAgICB0YWdBc1ZhbGlkKCk7CiB9CiAKQEAgLTM1MCw3ICsz
NTAsNyBAQCB2b2lkIENvbG9yOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uCiAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGVuY29kZSB3aGV0aGVyIHRoZSBjb2xvciBpcyBzZW1hbnRpYy4K
IAogICAgIGVuY29kZXIgPDwgdHJ1ZTsKLSAgICBlbmNvZGVyIDw8IGFzU2ltcGxlKCkudmFsdWUo
KTsKKyAgICBlbmNvZGVyIDw8IFBhY2tlZDo6UkdCQSB7IGFzU2ltcGxlKCkuYXNTUkdCQTx1aW50
OF90PigpIH0udmFsdWU7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0zOTAsNyAr
MzkwLDcgQEAgT3B0aW9uYWw8Q29sb3I+IENvbG9yOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
Ci0gICAgcmV0dXJuIENvbG9yIHsgU2ltcGxlQ29sb3IgeyB2YWx1ZSB9IH07CisgICAgcmV0dXJu
IENvbG9yIHsgbWFrZVNpbXBsZUNvbG9yKGFzU1JHQkEoUGFja2VkOjpSR0JBIHsgdmFsdWUgfSkp
IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCShyZXZpc2lvbiAyNjM5
NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJsZW5kaW5nLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIENvbG9yIGJsZW5kKGNvbnN0IENv
bG9yJiBmcm9tLCBjb25zdCBDb2wKICAgICBhdXRvIHByZW11bHRpcGxpZWRGcm9tID0gcHJlbXVs
dGlwbGllZENlaWxpbmcoZnJvbS50b1NSR0JBTG9zc3k8dWludDhfdD4oKSk7CiAgICAgYXV0byBw
cmVtdWx0aXBsaWVkVG8gPSBwcmVtdWx0aXBsaWVkQ2VpbGluZyh0by50b1NSR0JBTG9zc3k8dWlu
dDhfdD4oKSk7CiAKLSAgICBhdXRvIHByZW11bHRpcGxpZWRCbGVuZGVkID0gY29udmVydFRvQ29t
cG9uZW50Qnl0ZXM8U1JHQkE+KAorICAgIGF1dG8gcHJlbXVsdGlwbGllZEJsZW5kZWQgPSBjbGFt
cFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KAogICAgICAgICBXZWJDb3JlOjpibGVuZChwcmVtdWx0
aXBsaWVkRnJvbS5yZWQsIHByZW11bHRpcGxpZWRUby5yZWQsIHByb2dyZXNzKSwKICAgICAgICAg
V2ViQ29yZTo6YmxlbmQocHJlbXVsdGlwbGllZEZyb20uZ3JlZW4sIHByZW11bHRpcGxpZWRUby5n
cmVlbiwgcHJvZ3Jlc3MpLAogICAgICAgICBXZWJDb3JlOjpibGVuZChwcmVtdWx0aXBsaWVkRnJv
bS5ibHVlLCBwcmVtdWx0aXBsaWVkVG8uYmx1ZSwgcHJvZ3Jlc3MpLApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkocmV2aXNpb24gMjYzOTc4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDAsMTYgKzI0MCw0NCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25z
dGV4cHIgYm9vbCBvcGVyCiAKIC8vIFBhY2tlZCBDb2xvciBGb3JtYXRzCiAKK25hbWVzcGFjZSBQ
YWNrZWQgeworCitzdHJ1Y3QgUkdCQSB7CisgICAgY29uc3RleHByIGV4cGxpY2l0IFJHQkEodWlu
dDMyX3QgcmdiYSkKKyAgICAgICAgOiB2YWx1ZSB7IHJnYmEgfQorICAgIHsKKyAgICB9CisKKyAg
ICBjb25zdGV4cHIgZXhwbGljaXQgUkdCQShTUkdCQTx1aW50OF90PiBjb2xvcikKKyAgICAgICAg
OiB2YWx1ZSB7IHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb2xvci5yZWQgPDwgMjQgfCBjb2xvci5n
cmVlbiA8PCAxNiB8IGNvbG9yLmJsdWUgPDwgOCB8IGNvbG9yLmFscGhhKSB9CisgICAgeworICAg
IH0KKworICAgIHVpbnQzMl90IHZhbHVlOworfTsKKwogc3RydWN0IEFSR0IgeworICAgIGNvbnN0
ZXhwciBleHBsaWNpdCBBUkdCKHVpbnQzMl90IGFyZ2IpCisgICAgICAgIDogdmFsdWUgeyBhcmdi
IH0KKyAgICB7CisgICAgfQorCisgICAgY29uc3RleHByIGV4cGxpY2l0IEFSR0IoU1JHQkE8dWlu
dDhfdD4gY29sb3IpCisgICAgICAgIDogdmFsdWUgeyBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY29s
b3IuYWxwaGEgPDwgMjQgfCBjb2xvci5yZWQgPDwgMTYgfCBjb2xvci5ncmVlbiA8PCA4IHwgY29s
b3IuYmx1ZSkgfQorICAgIHsKKyAgICB9CisKICAgICB1aW50MzJfdCB2YWx1ZTsKIH07CiAKLWNv
bnN0ZXhwciBBUkdCIGFzQVJHQihTUkdCQTx1aW50OF90PiBjb2xvcikKK30KKworY29uc3RleHBy
IFNSR0JBPHVpbnQ4X3Q+IGFzU1JHQkEoUGFja2VkOjpSR0JBIGNvbG9yKQogewotICAgIHJldHVy
biB7IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2xvci5hbHBoYSA8PCAyNCB8IGNvbG9yLnJlZCA8
PCAxNiB8IGNvbG9yLmdyZWVuIDw8IDggfCBjb2xvci5ibHVlKSB9OworICAgIHJldHVybiB7IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KGNvbG9yLnZhbHVlID4+IDI0KSwgc3RhdGljX2Nhc3Q8dWludDhf
dD4oY29sb3IudmFsdWUgPj4gMTYpLCBzdGF0aWNfY2FzdDx1aW50OF90Pihjb2xvci52YWx1ZSA+
PiA4KSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oY29sb3IudmFsdWUpIH07CiB9CiAKLWNvbnN0ZXhw
ciBTUkdCQTx1aW50OF90PiBhc1NSR0JBKEFSR0IgY29sb3IpCitjb25zdGV4cHIgU1JHQkE8dWlu
dDhfdD4gYXNTUkdCQShQYWNrZWQ6OkFSR0IgY29sb3IpCiB7CiAgICAgcmV0dXJuIHsgc3RhdGlj
X2Nhc3Q8dWludDhfdD4oY29sb3IudmFsdWUgPj4gMTYpLCBzdGF0aWNfY2FzdDx1aW50OF90Pihj
b2xvci52YWx1ZSA+PiA4KSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oY29sb3IudmFsdWUpLCBzdGF0
aWNfY2FzdDx1aW50OF90Pihjb2xvci52YWx1ZSA+PiAyNCkgfTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAJKHJl
dmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
VXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBTUkdCQTx1aW50
OF90PiBwcmVtdWx0aXBsaWVkRmxvb3JpbmcoU1JHCiAgICAgICAgIHJldHVybiB7IDAsIDAsIDAs
IDAgfTsKICAgICBpZiAoYSA9PSAyNTUpCiAgICAgICAgIHJldHVybiBjb2xvcjsKLSAgICByZXR1
cm4gY29udmVydFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KGZhc3REaXZpZGVCeTI1NShyICogYSks
IGZhc3REaXZpZGVCeTI1NShnICogYSksIGZhc3REaXZpZGVCeTI1NShiICogYSksIGEpOworICAg
IHJldHVybiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KGZhc3REaXZpZGVCeTI1NShyICog
YSksIGZhc3REaXZpZGVCeTI1NShnICogYSksIGZhc3REaXZpZGVCeTI1NShiICogYSksIGEpOwog
fQogCiBTUkdCQTx1aW50OF90PiBwcmVtdWx0aXBsaWVkQ2VpbGluZyhTUkdCQTx1aW50OF90PiBj
b2xvcikKQEAgLTg5LDcgKzg5LDcgQEAgU1JHQkE8dWludDhfdD4gcHJlbXVsdGlwbGllZENlaWxp
bmcoU1JHQgogICAgICAgICByZXR1cm4geyAwLCAwLCAwLCAwIH07CiAgICAgaWYgKGEgPT0gMjU1
KQogICAgICAgICByZXR1cm4gY29sb3I7Ci0gICAgcmV0dXJuIGNvbnZlcnRUb0NvbXBvbmVudEJ5
dGVzPFNSR0JBPihmYXN0RGl2aWRlQnkyNTUociAqIGEgKyAyNTQpLCBmYXN0RGl2aWRlQnkyNTUo
ZyAqIGEgKyAyNTQpLCBmYXN0RGl2aWRlQnkyNTUoYiAqIGEgKyAyNTQpLCBhKTsKKyAgICByZXR1
cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihmYXN0RGl2aWRlQnkyNTUociAqIGEgKyAy
NTQpLCBmYXN0RGl2aWRlQnkyNTUoZyAqIGEgKyAyNTQpLCBmYXN0RGl2aWRlQnkyNTUoYiAqIGEg
KyAyNTQpLCBhKTsKIH0KIAogc3RhdGljIGlubGluZSB1aW50MTZfdCB1bnByZW11bHRpcGxpZWRD
b21wb25lbnRCeXRlKHVpbnQ4X3QgYywgdWludDhfdCBhKQpAQCAtMTAyLDcgKzEwMiw3IEBAIFNS
R0JBPHVpbnQ4X3Q+IHVucHJlbXVsdGlwbGllZChTUkdCQTx1aW4KICAgICBhdXRvIFtyLCBnLCBi
LCBhXSA9IGNvbG9yOwogICAgIGlmICghYSB8fCBhID09IDI1NSkKICAgICAgICAgcmV0dXJuIGNv
bG9yOwotICAgIHJldHVybiBjb252ZXJ0VG9Db21wb25lbnRCeXRlczxTUkdCQT4odW5wcmVtdWx0
aXBsaWVkQ29tcG9uZW50Qnl0ZShyLCBhKSwgdW5wcmVtdWx0aXBsaWVkQ29tcG9uZW50Qnl0ZShn
LCBhKSwgdW5wcmVtdWx0aXBsaWVkQ29tcG9uZW50Qnl0ZShiLCBhKSwgYSk7CisgICAgcmV0dXJu
IGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4odW5wcmVtdWx0aXBsaWVkQ29tcG9uZW50Qnl0
ZShyLCBhKSwgdW5wcmVtdWx0aXBsaWVkQ29tcG9uZW50Qnl0ZShnLCBhKSwgdW5wcmVtdWx0aXBs
aWVkQ29tcG9uZW50Qnl0ZShiLCBhKSwgYSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGls
aXRpZXMuaAkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsMTYgQEAg
aW5saW5lIHVpbnQ4X3QgY29udmVydFRvQ29tcG9uZW50Qnl0ZShmbAogICAgIHJldHVybiBzdGQ6
OmNsYW1wKHN0ZDo6bHJvdW5kKGYgKiAyNTUuMGYpLCAwbCwgMjU1bCk7CiB9CiAKK2NvbnN0ZXhw
ciB1aW50OF90IGNsYW1wVG9Db21wb25lbnRCeXRlKGludCBjKQoreworICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1wKGMsIDAsIDB4RkYpKTsKK30KKworY29uc3RleHBy
IHVpbnQ4X3QgY2xhbXBUb0NvbXBvbmVudEZsb2F0KGZsb2F0IGYpCit7CisgICAgcmV0dXJuIHN0
ZDo6Y2xhbXAoZiwgMC4wZiwgMS4wZik7Cit9CisKIGNvbnN0ZXhwciBmbG9hdCBjb252ZXJ0VG9D
b21wb25lbnRGbG9hdCh1aW50OF90IGJ5dGUpCiB7CiAgICAgcmV0dXJuIGJ5dGUgLyAyNTUuMGY7
CkBAIC02NSwyMCArNzUsMjAgQEAgdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1l
IENvbAogICAgIHJldHVybiB7IGNvbnZlcnRUb0NvbXBvbmVudEJ5dGUoY29tcG9uZW50c1swXSks
IGNvbnZlcnRUb0NvbXBvbmVudEJ5dGUoY29tcG9uZW50c1sxXSksIGNvbnZlcnRUb0NvbXBvbmVu
dEJ5dGUoY29tcG9uZW50c1syXSksIGNvbnZlcnRUb0NvbXBvbmVudEJ5dGUoY29tcG9uZW50c1sz
XSkgfTsKIH0KIAotdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlw
ZT4gY29uc3RleHByIENvbG9yVHlwZTx1aW50OF90PiBjb252ZXJ0VG9Db21wb25lbnRCeXRlcyhp
bnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKLXsKLSAgICByZXR1cm4geyBzdGF0aWNfY2FzdDx1
aW50OF90PihzdGQ6OmNsYW1wKHIsIDAsIDB4RkYpKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3Rk
OjpjbGFtcChnLCAwLCAweEZGKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoYiwg
MCwgMHhGRikpLCBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1wKGEsIDAsIDB4RkYpKSB9
OwotfQotCiB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBj
b25zdGV4cHIgQ29sb3JUeXBlPGZsb2F0PiBjb252ZXJ0VG9Db21wb25lbnRGbG9hdHMoY29uc3Qg
Q29sb3JUeXBlPHVpbnQ4X3Q+JiBjb2xvcikKIHsKICAgICBhdXRvIGNvbXBvbmVudHMgPSBhc0Nv
bG9yQ29tcG9uZW50cyhjb2xvcik7CiAgICAgcmV0dXJuIHsgY29udmVydFRvQ29tcG9uZW50Rmxv
YXQoY29tcG9uZW50c1swXSksIGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0KGNvbXBvbmVudHNbMV0p
LCBjb252ZXJ0VG9Db21wb25lbnRGbG9hdChjb21wb25lbnRzWzJdKSwgY29udmVydFRvQ29tcG9u
ZW50RmxvYXQoY29tcG9uZW50c1szXSkgfTsKIH0KIAotdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5h
bWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZTxmbG9hdD4gY29udmVy
dFRvQ29tcG9uZW50RmxvYXRzKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCit0
ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIg
Q29sb3JUeXBlPHVpbnQ4X3Q+IGNsYW1wVG9Db21wb25lbnRCeXRlcyhpbnQgciwgaW50IGcsIGlu
dCBiLCBpbnQgYSkKK3sKKyAgICByZXR1cm4geyBjbGFtcFRvQ29tcG9uZW50Qnl0ZShyKSwgY2xh
bXBUb0NvbXBvbmVudEJ5dGUoZyksIGNsYW1wVG9Db21wb25lbnRCeXRlKGIpLCBjbGFtcFRvQ29t
cG9uZW50Qnl0ZShhKSB9OworfQorCit0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5h
bWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlPGZsb2F0PiBjbGFtcFRvQ29tcG9uZW50
RmxvYXRzKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCiB7Ci0gICAgcmV0dXJu
IHsgc3RkOjpjbGFtcChyLCAwLjBmLCAxLjBmKSwgc3RkOjpjbGFtcChnLCAwLjBmLCAxLjBmKSwg
c3RkOjpjbGFtcChiLCAwLjBmLCAxLjBmKSwgc3RkOjpjbGFtcChhLCAwLjBmLCAxLjBmKSB9Owor
ICAgIHJldHVybiB7IGNsYW1wVG9Db21wb25lbnRGbG9hdChyKSwgY2xhbXBUb0NvbXBvbmVudEZs
b2F0KGcpLCBjbGFtcFRvQ29tcG9uZW50RmxvYXQoYiksIGNsYW1wVG9Db21wb25lbnRGbG9hdChh
KSB9OwogfQogCiBjb25zdGV4cHIgdWludDE2X3QgZmFzdE11bHRpcGx5QnkyNTUodWludDE2X3Qg
dmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tp
bmdTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQmFja2luZ1N0b3JlLmgJKHJldmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghYSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBhdXRvIHBpeGVsID0gYXNTUkdCQShBUkdCIHsgKmRlc3QgfSk7Cisg
ICAgICAgIGF1dG8gcGl4ZWwgPSBhc1NSR0JBKFBhY2tlZDo6QVJHQiB7ICpkZXN0IH0pOwogCiAg
ICAgICAgIGlmIChhID49IDI1NSB8fCAhcGl4ZWwuYWxwaGEpIHsKICAgICAgICAgICAgIHNldFBp
eGVsKGRlc3QsIHIsIGcsIGIsIGEpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgaWYgKCFtX3ByZW11bHRpcGx5QWxwaGEpCiAgICAgICAgICAgICByZXN1bHQgPSB1bnByZW11
bHRpcGxpZWQocmVzdWx0KTsKIAotICAgICAgICAqZGVzdCA9IGFzQVJHQihyZXN1bHQpLnZhbHVl
OworICAgICAgICAqZGVzdCA9IFBhY2tlZDo6QVJHQiB7IHJlc3VsdCB9LnZhbHVlOwogICAgIH0K
IAogICAgIHN0YXRpYyBib29sIGlzT3ZlclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTIz
MSw3ICsyMzEsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAobV9wcmVtdWx0aXBseUFscGhhICYm
IGEgPCAyNTUpCiAgICAgICAgICAgICByZXN1bHQgPSBwcmVtdWx0aXBsaWVkRmxvb3JpbmcocmVz
dWx0KTsKIAotICAgICAgICByZXR1cm4gYXNBUkdCKHJlc3VsdCkudmFsdWU7CisgICAgICAgIHJl
dHVybiBQYWNrZWQ6OkFSR0IgeyByZXN1bHQgfS52YWx1ZTsKICAgICB9CiAKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVDb2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmgJKHJldmlzaW9uIDI2Mzk3OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDM4ICszMiwzMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8v
IENvbG9yIHZhbHVlIHdpdGggOC1iaXQgY29tcG9uZW50cyBmb3IgcmVkLCBncmVlbiwgYmx1ZSwg
YW5kIGFscGhhLgotLy8gRm9yIGhpc3RvcmljYWwgcmVhc29ucywgc3RvcmVkIGFzIGEgMzItYml0
IGludGVnZXIsIHdpdGggYWxwaGEgaW4gdGhlIGhpZ2ggYml0czogQVJHQi4KIGNsYXNzIFNpbXBs
ZUNvbG9yIHsKIHB1YmxpYzoKLSAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IodWludDMyX3QgdmFs
dWUgPSAwKSA6IG1fdmFsdWUgeyB2YWx1ZSB9IHsgfQotICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xv
cih1aW50OF90IHIsIHVpbnQ4X3QgZywgdWludDhfdCBiLCB1aW50OF90IGEpIDogbV92YWx1ZSB7
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhIDw8IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGIpIH0g
eyB9CisgICAgY29uc3RleHByIFNpbXBsZUNvbG9yKCkgOiBtX3ZhbHVlIHsgfSB7IH0KKyAgICBj
b25zdGV4cHIgU2ltcGxlQ29sb3IodWludDhfdCByLCB1aW50OF90IGcsIHVpbnQ4X3QgYiwgdWlu
dDhfdCBhKSA6IG1fdmFsdWUgeyByLCBnLCBiLCBhIH0geyB9CiAKLSAgICBjb25zdGV4cHIgdWlu
dDMyX3QgdmFsdWVBc0FSR0IoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0gICAgY29uc3Rl
eHByIHVpbnQzMl90IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgIGNvbnN0
ZXhwciB1aW50OF90IGFscGhhQ29tcG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5hbHBo
YTsgfQorICAgIGNvbnN0ZXhwciBmbG9hdCBhbHBoYUNvbXBvbmVudEFzRmxvYXQoKSBjb25zdCB7
IHJldHVybiBjb252ZXJ0VG9Db21wb25lbnRGbG9hdChtX3ZhbHVlLmFscGhhKTsgfQogCi0gICAg
Y29uc3RleHByIHVpbnQ4X3QgYWxwaGFDb21wb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVl
ID4+IDI0OyB9Ci0gICAgY29uc3RleHByIGZsb2F0IGFscGhhQ29tcG9uZW50QXNGbG9hdCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0KGFscGhhQ29tcG9uZW50KCkpOyB9
Ci0KLSAgICBjb25zdGV4cHIgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIGFscGhhQ29t
cG9uZW50KCkgPT0gMHhGRjsgfQotICAgIGNvbnN0ZXhwciBib29sIGlzVmlzaWJsZSgpIGNvbnN0
IHsgcmV0dXJuIGFscGhhQ29tcG9uZW50KCk7IH0KKyAgICBjb25zdGV4cHIgYm9vbCBpc09wYXF1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuYWxwaGEgPT0gMHhGRjsgfQorICAgIGNvbnN0ZXhw
ciBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuYWxwaGE7IH0KIAogICAg
IGNvbnN0ZXhwciBTaW1wbGVDb2xvciBjb2xvcldpdGhBbHBoYSh1aW50OF90IGFscGhhKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuIHsgKG1fdmFsdWUgJiAweDAwRkZGRkZGKSB8IGFscGhh
IDw8IDI0IH07CisgICAgICAgIHJldHVybiB7IG1fdmFsdWUucmVkLCBtX3ZhbHVlLmdyZWVuLCBt
X3ZhbHVlLmJsdWUsIGFscGhhIH07CiAgICAgfQogCiAgICAgY29uc3RleHByIFNpbXBsZUNvbG9y
IGludmVydGVkQ29sb3JXaXRoQWxwaGEodWludDhfdCBhbHBoYSkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiB7IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KDB4RkYgLSByZWRDb21wb25lbnQoKSks
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KDB4RkYgLSBncmVlbkNvbXBvbmVudCgpKSwgc3RhdGljX2Nh
c3Q8dWludDhfdD4oMHhGRiAtIGJsdWVDb21wb25lbnQoKSksIGFscGhhIH07CisgICAgICAgIHJl
dHVybiB7IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KDB4RkYgLSBtX3ZhbHVlLnJlZCksIHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KDB4RkYgLSBtX3ZhbHVlLmdyZWVuKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4o
MHhGRiAtIG1fdmFsdWUuYmx1ZSksIGFscGhhIH07CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gY29uc3RleHByIFNSR0JBPFQ+IGFzU1JHQkEoKSBjb25zdAogICAgIHsKICAgICAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxULCBmbG9hdD4pCi0gICAgICAgICAgICBy
ZXR1cm4geyBjb252ZXJ0VG9Db21wb25lbnRGbG9hdChyZWRDb21wb25lbnQoKSksIGNvbnZlcnRU
b0NvbXBvbmVudEZsb2F0KGdyZWVuQ29tcG9uZW50KCkpLCBjb252ZXJ0VG9Db21wb25lbnRGbG9h
dChibHVlQ29tcG9uZW50KCkpLCAgY29udmVydFRvQ29tcG9uZW50RmxvYXQoYWxwaGFDb21wb25l
bnQoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9Db21wb25lbnRGbG9hdHMobV92
YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxULCB1aW50
OF90PikKLSAgICAgICAgICAgIHJldHVybiB7IHJlZENvbXBvbmVudCgpLCBncmVlbkNvbXBvbmVu
dCgpLCBibHVlQ29tcG9uZW50KCksIGFscGhhQ29tcG9uZW50KCkgfTsKKyAgICAgICAgICAgIHJl
dHVybiBtX3ZhbHVlOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IE4+CkBAIC03
MSwyMSArNjYsMTcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChOIDwg
NCk7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoIU4pCi0gICAgICAgICAgICByZXR1cm4gcmVkQ29t
cG9uZW50KCk7CisgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS5yZWQ7CiAgICAgICAgIGVsc2Ug
aWYgY29uc3RleHByIChOID09IDEpCi0gICAgICAgICAgICByZXR1cm4gZ3JlZW5Db21wb25lbnQo
KTsKKyAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLmdyZWVuOwogICAgICAgICBlbHNlIGlmIGNv
bnN0ZXhwciAoTiA9PSAyKQotICAgICAgICAgICAgcmV0dXJuIGJsdWVDb21wb25lbnQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBtX3ZhbHVlLmJsdWU7CiAgICAgICAgIGVsc2UgaWYgY29uc3RleHBy
IChOID09IDMpCi0gICAgICAgICAgICByZXR1cm4gYWxwaGFDb21wb25lbnQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBtX3ZhbHVlLmFscGhhOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBjb25zdGV4
cHIgdWludDhfdCByZWRDb21wb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID4+IDE2OyB9
Ci0gICAgY29uc3RleHByIHVpbnQ4X3QgZ3JlZW5Db21wb25lbnQoKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlID4+IDg7IH0KLSAgICBjb25zdGV4cHIgdWludDhfdCBibHVlQ29tcG9uZW50KCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZTsgfQotCi0gICAgdWludDMyX3QgbV92YWx1ZSB7IDAgfTsKKyAg
ICBTUkdCQTx1aW50OF90PiBtX3ZhbHVlIHsgMCwgMCwgMCwgMCB9OwogfTsKIAogYm9vbCBvcGVy
YXRvcj09KFNpbXBsZUNvbG9yLCBTaW1wbGVDb2xvcik7CkBAIC05OCw3ICs4OSw3IEBAIFNpbXBs
ZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihjb25zdCBTUkdCQTwKIAogaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShTaW1wbGVDb2xvciBhLCBTaW1wbGVDb2xvciBiKQogewotICAgIHJldHVybiBhLnZhbHVl
KCkgPT0gYi52YWx1ZSgpOworICAgIHJldHVybiBhLmFzU1JHQkE8dWludDhfdD4oKSA9PSBiLmFz
U1JHQkE8dWludDhfdD4oKTsKIH0KIAogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShTaW1wbGVDb2xv
ciBhLCBTaW1wbGVDb2xvciBiKQpAQCAtMTA2LDI0ICs5NywyNCBAQCBpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KFNpbXBsZUNvbG9yIGEsIFNpCiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAotY29u
c3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihpbnQgciwgaW50IGcsIGludCBiKQor
Y29uc3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihjb25zdCBTUkdCQTx1aW50OF90
PiYgc1JHQkEpCiB7Ci0gICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFt
cChyLCAwLCAweEZGKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoZywgMCwgMHhG
RikpLCBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1wKGIsIDAsIDB4RkYpKSwgMHhGRiB9
OworICAgIHJldHVybiB7IHNSR0JBLnJlZCwgc1JHQkEuZ3JlZW4sIHNSR0JBLmJsdWUsIHNSR0JB
LmFscGhhIH07CiB9CiAKLWNvbnN0ZXhwciBTaW1wbGVDb2xvciBtYWtlU2ltcGxlQ29sb3IoaW50
IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCitpbmxpbmUgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNv
bG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYgc1JHQkEpCiB7Ci0gICAgcmV0dXJuIHsgc3RhdGljX2Nh
c3Q8dWludDhfdD4oc3RkOjpjbGFtcChyLCAwLCAweEZGKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KHN0ZDo6Y2xhbXAoZywgMCwgMHhGRikpLCBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1w
KGIsIDAsIDB4RkYpKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFtcChhLCAwLCAweEZG
KSkgfTsKKyAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKGNvbnZlcnRUb0NvbXBvbmVudEJ5dGVz
KHNSR0JBKSk7CiB9CiAKLWNvbnN0ZXhwciBTaW1wbGVDb2xvciBtYWtlU2ltcGxlQ29sb3IoY29u
c3QgU1JHQkE8dWludDhfdD4mIHNSR0JBKQorY29uc3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1w
bGVDb2xvcihpbnQgciwgaW50IGcsIGludCBiKQogewotICAgIHJldHVybiB7IHNSR0JBLnJlZCwg
c1JHQkEuZ3JlZW4sIHNSR0JBLmJsdWUsIHNSR0JBLmFscGhhIH07CisgICAgcmV0dXJuIG1ha2VT
aW1wbGVDb2xvcihjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHIsIGcsIGIsIDB4RkYpKTsK
IH0KIAotaW5saW5lIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihjb25zdCBTUkdCQTxmbG9h
dD4mIHNSR0JBKQorY29uc3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihpbnQgciwg
aW50IGcsIGludCBiLCBpbnQgYSkKIHsKLSAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKGNvbnZl
cnRUb0NvbXBvbmVudEJ5dGVzKHNSR0JBKSk7CisgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcihj
bGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHIsIGcsIGIsIGEpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9J
bWFnZVN1cmZhY2VCYWNrZW5kLmNwcAkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJh
Y2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw5ICs4MCw5IEBAIHZvaWQgSW1hZ2VCdWZm
ZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQKICAgICAgICAgdW5zaWduZWQqIHJvdyA9IHJlaW50
ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4oZGF0YVNyYyArIHN0cmlkZSAqIHkpOwogICAgICAg
ICBmb3IgKGludCB4ID0gMDsgeCA8IG1fbG9naWNhbFNpemUud2lkdGgoKTsgeCsrKSB7CiAgICAg
ICAgICAgICB1bnNpZ25lZCogcGl4ZWwgPSByb3cgKyB4OwotICAgICAgICAgICAgYXV0byBwaXhl
bENvbXBvbmVudHMgPSB1bnByZW11bHRpcGxpZWQoYXNTUkdCQShBUkdCIHsgKnBpeGVsIH0pKTsK
KyAgICAgICAgICAgIGF1dG8gcGl4ZWxDb21wb25lbnRzID0gdW5wcmVtdWx0aXBsaWVkKGFzU1JH
QkEoUGFja2VkOjpBUkdCIHsgKnBpeGVsIH0pKTsKICAgICAgICAgICAgIHBpeGVsQ29tcG9uZW50
cyA9IHsgbG9va1VwVGFibGVbcGl4ZWxDb21wb25lbnRzLnJlZF0sIGxvb2tVcFRhYmxlW3BpeGVs
Q29tcG9uZW50cy5ncmVlbl0sIGxvb2tVcFRhYmxlW3BpeGVsQ29tcG9uZW50cy5ibHVlXSwgcGl4
ZWxDb21wb25lbnRzLmFscGhhIH07Ci0gICAgICAgICAgICAqcGl4ZWwgPSBhc0FSR0IocHJlbXVs
dGlwbGllZENlaWxpbmcocGl4ZWxDb21wb25lbnRzKSkudmFsdWU7CisgICAgICAgICAgICAqcGl4
ZWwgPSBQYWNrZWQ6OkFSR0IgeyBwcmVtdWx0aXBsaWVkQ2VpbGluZyhwaXhlbENvbXBvbmVudHMp
IH0udmFsdWU7CiAgICAgICAgIH0KICAgICB9CiAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5
X3JlY3RhbmdsZShtX3N1cmZhY2UuZ2V0KCksIDAsIDAsIG1fbG9naWNhbFNpemUud2lkdGgoKSwg
bV9sb2dpY2FsU2l6ZS5oZWlnaHQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAkocmV2
aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
TmF0aXZlSW1hZ2VDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgQ29s
b3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoYwogICAgICAgICByZXR1cm4gQ29s
b3IoKTsKIAogICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2ln
bmVkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShpbWFnZS5nZXQoKSkpOwotICAgIHJl
dHVybiBtYWtlU2ltcGxlQ29sb3IodW5wcmVtdWx0aXBsaWVkKGFzU1JHQkEoQVJHQiB7ICpwaXhl
bCB9KSkpOworICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IodW5wcmVtdWx0aXBsaWVkKGFzU1JH
QkEoUGFja2VkOjpBUkdCIHsgKnBpeGVsIH0pKSk7CiB9CiAKIHZvaWQgZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNH
LmNwcAkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSwyNCArMTI5LDIyIEBAIHN0
YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG8KIENHQ29sb3JSZWYgY2FjaGVk
Q0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKGNvbG9yLmlzU2ltcGxlKCkp
IHsKLSAgICAgICAgc3dpdGNoIChjb2xvci5hc1NpbXBsZSgpLnZhbHVlKCkpIHsKLSAgICAgICAg
Y2FzZSBDb2xvcjo6dHJhbnNwYXJlbnQudmFsdWUoKTogeworICAgICAgICBzd2l0Y2ggKFBhY2tl
ZDo6UkdCQSB7IGNvbG9yLmFzU2ltcGxlKCkuYXNTUkdCQTx1aW50OF90PigpIH0udmFsdWUpIHsK
KyAgICAgICAgY2FzZSBQYWNrZWQ6OlJHQkEgeyBDb2xvcjo6dHJhbnNwYXJlbnQuYXNTUkdCQTx1
aW50OF90PigpIH0udmFsdWU6IHsKICAgICAgICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIHRyYW5z
cGFyZW50Q0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsKICAgICAgICAgICAgIHJldHVybiB0
cmFuc3BhcmVudENHQ29sb3I7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBDb2xvcjo6YmxhY2su
dmFsdWUoKTogeworICAgICAgICBjYXNlIFBhY2tlZDo6UkdCQSB7IENvbG9yOjpibGFjay5hc1NS
R0JBPHVpbnQ4X3Q+KCkgfS52YWx1ZTogewogICAgICAgICAgICAgc3RhdGljIENHQ29sb3JSZWYg
YmxhY2tDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogICAgICAgICAgICAgcmV0dXJuIGJs
YWNrQ0dDb2xvcjsKICAgICAgICAgfQotICAgICAgICBjYXNlIENvbG9yOjp3aGl0ZS52YWx1ZSgp
OiB7CisgICAgICAgIGNhc2UgUGFja2VkOjpSR0JBIHsgQ29sb3I6OndoaXRlLmFzU1JHQkE8dWlu
dDhfdD4oKSB9LnZhbHVlOiB7CiAgICAgICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiB3aGl0ZUNH
Q29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7CiAgICAgICAgICAgICByZXR1cm4gd2hpdGVDR0Nv
bG9yOwogICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBBU1NFUlQoY29sb3IuaXNF
eHRlbmRlZCgpIHx8IGNvbG9yLmFzU2ltcGxlKCkudmFsdWUoKSk7Ci0KICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPENvbG9yLCBSZXRhaW5QdHI8Q0dDb2xvclJlZj4sIDMy
Pj4gY2FjaGU7CiAgICAgcmV0dXJuIGNhY2hlLmdldCgpLmdldChjb2xvcikuZ2V0KCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFj
Lm1tCShyZXZpc2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvQ29sb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGlj
IGJvb2wgdXNlT2xkQXF1YUZvY3VzUmluZ0NvbG9yOwogCiBDb2xvciBvbGRBcXVhRm9jdXNSaW5n
Q29sb3IoKQogewotICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkY3REFERDkgfTsKKyAgICBy
ZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDB4N0QsIDB4QUQsIDB4RDksIDB4RkYpOwogfQogCiB2b2lk
IHNldFVzZXNUZXN0TW9kZUZvY3VzUmluZ0NvbG9yKGJvb2wgbmV3VmFsdWUpCkBAIC0xMjMsMTYg
KzEyMywxNiBAQCBDb2xvciBzZW1hbnRpY0NvbG9yRnJvbU5TQ29sb3IoTlNDb2xvciAqCiBOU0Nv
bG9yICpuc0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAoY29sb3IuaXNTaW1w
bGUoKSkgewotICAgICAgICBzd2l0Y2ggKGNvbG9yLmFzU2ltcGxlKCkudmFsdWUoKSkgewotICAg
ICAgICBjYXNlIENvbG9yOjp0cmFuc3BhcmVudC52YWx1ZSgpOiB7CisgICAgICAgIHN3aXRjaCAo
UGFja2VkOjpSR0JBIHsgY29sb3IuYXNTaW1wbGUoKS5hc1NSR0JBPHVpbnQ4X3Q+KCkgfS52YWx1
ZSkgeworICAgICAgICBjYXNlIFBhY2tlZDo6UkdCQSB7IENvbG9yOjp0cmFuc3BhcmVudC5hc1NS
R0JBPHVpbnQ4X3Q+KCkgfS52YWx1ZTogewogICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IgKmNs
ZWFyQ29sb3IgPSBbW05TQ29sb3IgY29sb3JXaXRoU1JHQlJlZDowIGdyZWVuOjAgYmx1ZTowIGFs
cGhhOjBdIHJldGFpbl07CiAgICAgICAgICAgICByZXR1cm4gY2xlYXJDb2xvcjsKICAgICAgICAg
fQotICAgICAgICBjYXNlIENvbG9yOjpibGFjay52YWx1ZSgpOiB7CisgICAgICAgIGNhc2UgUGFj
a2VkOjpSR0JBIHsgQ29sb3I6OmJsYWNrLmFzU1JHQkE8dWludDhfdD4oKSB9LnZhbHVlOiB7CiAg
ICAgICAgICAgICBzdGF0aWMgTlNDb2xvciAqYmxhY2tDb2xvciA9IFtbTlNDb2xvciBjb2xvcldp
dGhTUkdCUmVkOjAgZ3JlZW46MCBibHVlOjAgYWxwaGE6MV0gcmV0YWluXTsKICAgICAgICAgICAg
IHJldHVybiBibGFja0NvbG9yOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ29sb3I6OndoaXRl
LnZhbHVlKCk6IHsKKyAgICAgICAgY2FzZSBQYWNrZWQ6OlJHQkEgeyBDb2xvcjo6d2hpdGUuYXNT
UkdCQTx1aW50OF90PigpIH0udmFsdWU6IHsKICAgICAgICAgICAgIHN0YXRpYyBOU0NvbG9yICp3
aGl0ZUNvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MSBncmVlbjoxIGJsdWU6MSBh
bHBoYToxXSByZXRhaW5dOwogICAgICAgICAgICAgcmV0dXJuIHdoaXRlQ29sb3I7CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRDR1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAkocmV2aXNpb24gMjYzOTc4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDEyICsxOTgsMTEgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdEb3RzRm9yRG9jdW1lbgogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxh
dGZvcm1Db250ZXh0KCk7CiAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKIAotICAg
IHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3Igc3BlbGxpbmdQYXR0ZXJuQ29sb3IgeyBtYWtl
U2ltcGxlQ29sb3IoMjU1LCAwLCAwKSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29s
b3IgZ3JhbW1hclBhdHRlcm5Db2xvciB7IG1ha2VTaW1wbGVDb2xvcigwLCAxMjgsIDApIH07Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNwZWxsaW5nUGF0dGVybkNvbG9yID0gbWFrZVNpbXBs
ZUNvbG9yKDI1NSwgMCwgMCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGdyYW1tYXJQYXR0
ZXJuQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMTI4LCAwKTsKIAotICAgIGNvbnN0IFNpbXBs
ZUNvbG9yJiBwYXR0ZXJuQ29sb3IgPSBzdHlsZS5tb2RlID09IERvY3VtZW50TWFya2VyTGluZVN0
eWxlOjpNb2RlOjpHcmFtbWFyID8gZ3JhbW1hclBhdHRlcm5Db2xvciA6IHNwZWxsaW5nUGF0dGVy
bkNvbG9yOwotICAgIGF1dG8gcGF0dGVybkNvbG9yQ29tcG9uZW50cyA9IHBhdHRlcm5Db2xvci5h
c1NSR0JBPHVpbnQ4X3Q+KCk7Ci0gICAgQ0dDb250ZXh0U2V0UkdCU3Ryb2tlQ29sb3IoY29udGV4
dCwgcGF0dGVybkNvbG9yQ29tcG9uZW50cy5yZWQsIHBhdHRlcm5Db2xvckNvbXBvbmVudHMuZ3Jl
ZW4sIHBhdHRlcm5Db2xvckNvbXBvbmVudHMuYmx1ZSwgcGF0dGVybkNvbG9yQ29tcG9uZW50cy5h
bHBoYSk7CisgICAgYXV0byBbciwgZywgYiwgYV0gPSBzdHlsZS5tb2RlID09IERvY3VtZW50TWFy
a2VyTGluZVN0eWxlOjpNb2RlOjpHcmFtbWFyID8gZ3JhbW1hclBhdHRlcm5Db2xvciA6IHNwZWxs
aW5nUGF0dGVybkNvbG9yOworICAgIENHQ29udGV4dFNldFJHQlN0cm9rZUNvbG9yKGNvbnRleHQs
IHIsIGcsIGIsIGEpOwogCiAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdXNlclRvQmFzZSA9IGdldFVz
ZXJUb0Jhc2VDVE0oY29udGV4dCk7CiAgICAgQ0dQb2ludCBwaGFzZSA9IENHUG9pbnRBcHBseUFm
ZmluZVRyYW5zZm9ybShwb2ludCwgdXNlclRvQmFzZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcAkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg2LDggKzg2LDggQEAgc3RhdGljIGlubGluZSBWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiBkZQog
ICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiU0NSRUVOLTEiX3MsICJNb2NrIHNjcmVlbiBkZXZp
Y2UgMSJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlw
ZTo6U2NyZWVuLCBDb2xvcjo6bGlnaHRHcmF5LCB7IDM4NDAsIDIxNjAgfSB9IH0sCiAgICAgICAg
IE1vY2tNZWRpYURldmljZSB7ICJTQ1JFRU4tMiJfcywgIk1vY2sgc2NyZWVuIGRldmljZSAyIl9z
LCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3Jl
ZW4sIENvbG9yOjp5ZWxsb3csIHsgMTkyMCwgMTA4MCB9IH0gfSwKIAotICAgICAgICBNb2NrTWVk
aWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAxIl9zLCBNb2NrRGlzcGxheVBy
b3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIFNpbXBsZUNvbG9y
IHsgMHhmZmYxYjUgfSwgeyA2NDAsIDQ4MCB9IH0gfSwKLSAgICAgICAgTW9ja01lZGlhRGV2aWNl
IHsgIldJTkRPVy0yIl9zLCAiTW9jayB3aW5kb3cgMiJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVz
IHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBTaW1wbGVDb2xvciB7IDB4ZmZk
MGI1IH0sIHsgMTI4MCwgNjAwIH0gfSB9LAorICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lO
RE9XLTIiX3MsICJNb2NrIHdpbmRvdyAxIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIG1ha2VTaW1wbGVDb2xvcigweEZGLCAweEYx
LCAweEI1KSwgeyA2NDAsIDQ4MCB9IH0gfSwKKyAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIldJ
TkRPVy0yIl9zLCAiTW9jayB3aW5kb3cgMiJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBtYWtlU2ltcGxlQ29sb3IoMHhGRiwgMHhE
MCwgMHhCNSksIHsgMTI4MCwgNjAwIH0gfSB9LAogICAgIH07CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwCShyZXZpc2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDEwICsy
NjUsMTAgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd0FuaW1hdAogCiB2b2lk
IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3Qm94ZXMoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQogewotICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBtYWdlbnRhIHsgMHhmZmZmMDBmZiB9
OwotICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBibHVlIHsgMHhmZjAwMDBmZiB9OwotICAgIGNv
bnN0ZXhwciBTaW1wbGVDb2xvciByZWQgeyAweGZmZmYwMDAwIH07Ci0gICAgY29uc3RleHByIFNp
bXBsZUNvbG9yIGRhcmtHcmVlbiB7IDB4ZmYwMDgwMDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGF1dG8gbWFnZW50YSA9IG1ha2VTaW1wbGVDb2xvcigweEZGLCAweDAwLCAweEZGLCAweEZGKTsK
KyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gYmx1ZSA9IG1ha2VTaW1wbGVDb2xvcigweDAwLCAw
eDAwLCAweEZGLCAweEZGKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gcmVkID0gbWFrZVNp
bXBsZUNvbG9yKDB4RkYsIDB4MDAsIDB4MDAsIDB4RkYpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
YXV0byBkYXJrR3JlZW4gPSBtYWtlU2ltcGxlQ29sb3IoMHgwMCwgMHg4MCwgMHgwMCwgMHhGRik7
CiAKICAgICBJbnRTaXplIHNpemUgPSBjYXB0dXJlU2l6ZSgpOwogICAgIGZsb2F0IGJveFNpemUg
PSBzaXplLndpZHRoKCkgKiAuMDM1OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAkocmV2aXNpb24gMjYzOTc4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGludCBTY3JvbGxiYXJUaGVtZU1vY2s6OnNjcm9s
bGJhclRoaWNrbmUKIAogdm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tCYWNrZ3Jv
dW5kKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIHRyYWNrUmVjdCkKIHsKLSAgICBjb250ZXh0LmZpbGxSZWN0KHRyYWNrUmVjdCwg
c2Nyb2xsYmFyLmVuYWJsZWQoKSA/IENvbG9yOjpsaWdodEdyYXkgOiBTaW1wbGVDb2xvciB7IDB4
RkZFMEUwRTAgfSk7CisgICAgY29udGV4dC5maWxsUmVjdCh0cmFja1JlY3QsIHNjcm9sbGJhci5l
bmFibGVkKCkgPyBDb2xvcjo6bGlnaHRHcmF5IDogbWFrZVNpbXBsZUNvbG9yKDB4RTAsIDB4RTAs
IDB4RTApKTsKIH0KIAogdm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
dGh1bWJSZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAJKHJldmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODA1LDggKzE4MDUsOCBAQCB2b2lkIFJlbmRl
ck9iamVjdDo6Y2FsY3VsYXRlQm9yZGVyU3R5bGVDCiAgICAgQVNTRVJUKHN0eWxlID09IEJvcmRl
clN0eWxlOjpJbnNldCB8fCBzdHlsZSA9PSBCb3JkZXJTdHlsZTo6T3V0c2V0KTsKIAogICAgIC8v
IFRoaXMgdmFsdWVzIHdlcmUgZGVyaXZlZCBlbXBpcmljYWxseS4KLSAgICBjb25zdGV4cHIgZmxv
YXQgYmFzZURhcmtDb2xvckx1bWluYW5jZSB7IDAuMDE0NDQzODQ0ZiB9OyAvLyBMdW1pbmFuY2Ug
b2YgU2ltcGxlQ29sb3IgeyAweEZGMjAyMDIwIH0KLSAgICBjb25zdGV4cHIgZmxvYXQgYmFzZUxp
Z2h0Q29sb3JMdW1pbmFuY2UgeyAwLjgzMDc3ZiB9OyAvLyBMdW1pbmFuY2Ugb2YgU2ltcGxlQ29s
b3IgeyAweEZGRUJFQkVCIH0KKyAgICBjb25zdGV4cHIgZmxvYXQgYmFzZURhcmtDb2xvckx1bWlu
YW5jZSB7IDAuMDE0NDQzODQ0ZiB9OyAvLyBMdW1pbmFuY2Ugb2YgU1JHQkE8dWludDhfdD4geyAw
eDIwLCAweDIwLCAweDIwLCAweEZGIH0KKyAgICBjb25zdGV4cHIgZmxvYXQgYmFzZUxpZ2h0Q29s
b3JMdW1pbmFuY2UgeyAwLjgzMDc3ZiB9OyAvLyBMdW1pbmFuY2Ugb2YgU1JHQkE8dWludDhfdD4g
eyAweEVCLCAweEVCLCAweEVCLCAweEZGIH0KIAogICAgIGVudW0gT3BlcmF0aW9uIHsgRGFya2Vu
LCBMaWdodGVuIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcAkocmV2aXNpb24gMjYzOTkzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzNCwzMCArMTMzNCwzMCBAQCBDb2xvciBS
ZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJCiB7CiAgICAgc3dpdGNoIChjc3NWYWx1
ZUlkKSB7CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdExpbms6Ci0gICAgICAgIHJldHVybiBvcHRp
b25zLmNvbnRhaW5zKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OkZvclZpc2l0ZWRMaW5rKSA/IFNpbXBs
ZUNvbG9yIHsgMHhGRjU1MUE4QiB9IDogU2ltcGxlQ29sb3IgeyAweEZGMDAwMEVFIH07CisgICAg
ICAgIHJldHVybiBvcHRpb25zLmNvbnRhaW5zKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OkZvclZpc2l0
ZWRMaW5rKSA/IG1ha2VTaW1wbGVDb2xvcigweDU1LCAweDFBLCAweDhCKSA6IG1ha2VTaW1wbGVD
b2xvcigweDAwLCAweDAwLCAweEVFKTsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0QWN0aXZlbGlu
azoKICAgICBjYXNlIENTU1ZhbHVlQWN0aXZldGV4dDoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNv
bG9yIHsgMHhGRkZGMDAwMCB9OworICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDB4RkYs
IDB4MDAsIDB4MDApOwogICAgIGNhc2UgQ1NTVmFsdWVMaW5rdGV4dDoKLSAgICAgICAgcmV0dXJu
IFNpbXBsZUNvbG9yIHsgMHhGRjAwMDBFRSB9OworICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNv
bG9yKDB4MDAsIDB4MDAsIDB4RUUpOwogICAgIGNhc2UgQ1NTVmFsdWVWaXNpdGVkdGV4dDoKLSAg
ICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjU1MUE4QiB9OworICAgICAgICByZXR1cm4g
bWFrZVNpbXBsZUNvbG9yKDB4NTUsIDB4MUEsIDB4OEIpOwogICAgIGNhc2UgQ1NTVmFsdWVBY3Rp
dmVib3JkZXI6CiAgICAgICAgIHJldHVybiBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1
ZUFjdGl2ZWJ1dHRvbnRleHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2Fz
ZSBDU1NWYWx1ZUFjdGl2ZWNhcHRpb246Ci0gICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4
RkZDQ0NDQ0MgfTsKKyAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigweENDLCAweENDLCAw
eENDKTsKICAgICBjYXNlIENTU1ZhbHVlQXBwd29ya3NwYWNlOgogICAgICAgICByZXR1cm4gQ29s
b3I6OndoaXRlOwogICAgIGNhc2UgQ1NTVmFsdWVCYWNrZ3JvdW5kOgotICAgICAgICByZXR1cm4g
U2ltcGxlQ29sb3IgeyAweEZGNjM2M0NFIH07CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29s
b3IoMHg2MywgMHg2MywgMHhDRSk7CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbmZhY2U6CiAgICAg
ICAgIHJldHVybiBDb2xvcjo6bGlnaHRHcmF5OwogICAgIGNhc2UgQ1NTVmFsdWVCdXR0b25oaWdo
bGlnaHQ6Ci0gICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkZEREREREQgfTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigweERELCAweERELCAweEREKTsKICAgICBjYXNlIENT
U1ZhbHVlQnV0dG9uc2hhZG93OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGODg4
ODg4IH07CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMHg4OCwgMHg4OCwgMHg4OCk7
CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbnRleHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6Ymxh
Y2s7CiAgICAgY2FzZSBDU1NWYWx1ZUNhcHRpb250ZXh0OgpAQCAtMTM3MSw5ICsxMzcxLDkgQEAg
Q29sb3IgUmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSQogICAgIGNhc2UgQ1NTVmFs
dWVGaWVsZHRleHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2FzZSBDU1NW
YWx1ZUdyYXl0ZXh0OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGODA4MDgwIH07
CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMHg4MCwgMHg4MCwgMHg4MCk7CiAgICAg
Y2FzZSBDU1NWYWx1ZUhpZ2hsaWdodDoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhG
RkI1RDVGRiB9OworICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDB4QjUsIDB4RDUsIDB4
RkYpOwogICAgIGNhc2UgQ1NTVmFsdWVIaWdobGlnaHR0ZXh0OgogICAgICAgICByZXR1cm4gQ29s
b3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVJbmFjdGl2ZWJvcmRlcjoKQEAgLTEzODEsOSAr
MTM4MSw5IEBAIENvbG9yIFJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUkKICAgICBj
YXNlIENTU1ZhbHVlSW5hY3RpdmVjYXB0aW9uOgogICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRl
OwogICAgIGNhc2UgQ1NTVmFsdWVJbmFjdGl2ZWNhcHRpb250ZXh0OgotICAgICAgICByZXR1cm4g
U2ltcGxlQ29sb3IgeyAweEZGN0Y3RjdGIH07CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29s
b3IoMHg3RiwgMHg3RiwgMHg3Rik7CiAgICAgY2FzZSBDU1NWYWx1ZUluZm9iYWNrZ3JvdW5kOgot
ICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGRkJGQ0M1IH07CisgICAgICAgIHJldHVy
biBtYWtlU2ltcGxlQ29sb3IoMHhGQiwgMHhGQywgMHhDNSk7CiAgICAgY2FzZSBDU1NWYWx1ZUlu
Zm90ZXh0OgogICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVN
ZW51OgpAQCAtMTM5NSwxOSArMTM5NSwxOSBAQCBDb2xvciBSZW5kZXJUaGVtZTo6c3lzdGVtQ29s
b3IoQ1NTVmFsdWVJCiAgICAgY2FzZSBDU1NWYWx1ZVRleHQ6CiAgICAgICAgIHJldHVybiBDb2xv
cjo6YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZVRocmVlZGRhcmtzaGFkb3c6Ci0gICAgICAgIHJl
dHVybiBTaW1wbGVDb2xvciB7IDB4RkY2NjY2NjYgfTsKKyAgICAgICAgcmV0dXJuIG1ha2VTaW1w
bGVDb2xvcigweDY2LCAweDY2LCAweDY2KTsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkZmFjZToK
ICAgICAgICAgcmV0dXJuIENvbG9yOjpsaWdodEdyYXk7CiAgICAgY2FzZSBDU1NWYWx1ZVRocmVl
ZGhpZ2hsaWdodDoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkRERERERCB9Owor
ICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDB4REQsIDB4REQsIDB4REQpOwogICAgIGNh
c2UgQ1NTVmFsdWVUaHJlZWRsaWdodHNoYWRvdzoKICAgICAgICAgcmV0dXJuIENvbG9yOjpsaWdo
dEdyYXk7CiAgICAgY2FzZSBDU1NWYWx1ZVRocmVlZHNoYWRvdzoKLSAgICAgICAgcmV0dXJuIFNp
bXBsZUNvbG9yIHsgMHhGRjg4ODg4OCB9OworICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9y
KDB4ODgsIDB4ODgsIDB4ODgpOwogICAgIGNhc2UgQ1NTVmFsdWVXaW5kb3c6CiAgICAgICAgIHJl
dHVybiBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1ZVdpbmRvd2ZyYW1lOgotICAgICAg
ICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGQ0NDQ0NDIH07CisgICAgICAgIHJldHVybiBtYWtl
U2ltcGxlQ29sb3IoMHhDQywgMHhDQywgMHhDQyk7CiAgICAgY2FzZSBDU1NWYWx1ZVdpbmRvd3Rl
eHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgZGVmYXVsdDoKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2FpdGEuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2FpdGEuY3BwCShyZXZp
c2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVBZHdh
aXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDEwIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBjb25zdCBpbnQgdGV4dEZpZWxkQm9yZGVyU2l6ZSA9IDE7Ci1zdGF0
aWMgY29uc3QgQ29sb3IgdGV4dEZpZWxkQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA1
LCAxOTksIDE5NCk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgdGV4dEZpZWxkQm9yZGVyRGlzYWJsZWRD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMTMsIDIwOCwgMjA0KTsKLXN0YXRpYyBjb25zdCBDb2xv
ciB0ZXh0RmllbGRCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1
NSk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgdGV4dEZpZWxkQmFja2dyb3VuZERpc2FibGVkQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMjUyLCAyNTIsIDI1Mik7CitzdGF0aWMgY29uc3RleHByIGF1dG8g
dGV4dEZpZWxkQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA1LCAxOTksIDE5NCk7Citz
dGF0aWMgY29uc3RleHByIGF1dG8gdGV4dEZpZWxkQm9yZGVyRGlzYWJsZWRDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigyMTMsIDIwOCwgMjA0KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB0ZXh0Rmll
bGRCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSk7CitzdGF0
aWMgY29uc3RleHByIGF1dG8gdGV4dEZpZWxkQmFja2dyb3VuZERpc2FibGVkQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMjUyLCAyNTIsIDI1Mik7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWVudUxp
c3RCdXR0b25BcnJvd1NpemUgPSAxNjsKIHN0YXRpYyBjb25zdCBpbnQgbWVudUxpc3RCdXR0b25G
b2N1c09mZnNldCA9IC0zOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1lbnVMaXN0QnV0dG9uUGFk
ZGluZyA9IDU7CkBAIC01NywyMyArNTcsMjMgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHByb2dy
ZXNzQWN0aXZpdHlCbAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHByb2dyZXNzQW5pbWF0aW9uRnJh
bWVDb3VudCA9IDc1Owogc3RhdGljIGNvbnN0IFNlY29uZHMgcHJvZ3Jlc3NBbmltYXRpb25GcmFt
ZVJhdGUgPSAzM19tczsgLy8gMzBmcHMuCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHJvZ3Jlc3NC
YXJTaXplID0gNjsKLXN0YXRpYyBjb25zdCBDb2xvciBwcm9ncmVzc0JhckJvcmRlckNvbG9yID0g
bWFrZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOwotc3RhdGljIGNvbnN0IENvbG9yIHByb2dy
ZXNzQmFyQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyNSwgMjIyLCAyMTkpOwor
c3RhdGljIGNvbnN0ZXhwciBhdXRvIHByb2dyZXNzQmFyQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxl
Q29sb3IoMjA1LCAxOTksIDE5NCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcHJvZ3Jlc3NCYXJC
YWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjI1LCAyMjIsIDIxOSk7CiBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgc2xpZGVyVHJhY2tTaXplID0gNjsKIHN0YXRpYyBjb25zdCBpbnQgc2xp
ZGVyVHJhY2tCb3JkZXJTaXplID0gMTsKLXN0YXRpYyBjb25zdCBDb2xvciBzbGlkZXJUcmFja0Jv
cmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOwotc3RhdGljIGNvbnN0
IENvbG9yIHNsaWRlclRyYWNrQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyNSwg
MjIyLCAyMTkpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlclRyYWNrQm9yZGVyQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMjA1LCAxOTksIDE5NCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8g
c2xpZGVyVHJhY2tCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjI1LCAyMjIsIDIx
OSk7CiBzdGF0aWMgY29uc3QgaW50IHNsaWRlclRyYWNrRm9jdXNPZmZzZXQgPSAyOwogc3RhdGlj
IGNvbnN0IGludCBzbGlkZXJUaHVtYlNpemUgPSAyMDsKIHN0YXRpYyBjb25zdCBpbnQgc2xpZGVy
VGh1bWJCb3JkZXJTaXplID0gMTsKLXN0YXRpYyBjb25zdCBDb2xvciBzbGlkZXJUaHVtYkJvcmRl
ckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOwotc3RhdGljIGNvbnN0IENv
bG9yIHNsaWRlclRodW1iQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI0NCwgMjQy
LCAyNDEpOwotc3RhdGljIGNvbnN0IENvbG9yIHNsaWRlclRodW1iQmFja2dyb3VuZEhvdmVyZWRD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDgsIDI0OCwgMjQ3KTsKLXN0YXRpYyBjb25zdCBDb2xv
ciBzbGlkZXJUaHVtYkJhY2tncm91bmREaXNhYmxlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI0
NCwgMjQyLCAyNDEpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlclRodW1iQm9yZGVyQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA1LCAxOTksIDE5NCk7CitzdGF0aWMgY29uc3RleHByIGF1
dG8gc2xpZGVyVGh1bWJCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjQ0LCAyNDIs
IDI0MSk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyVGh1bWJCYWNrZ3JvdW5kSG92ZXJl
ZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI0OCwgMjQ4LCAyNDcpOworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIHNsaWRlclRodW1iQmFja2dyb3VuZERpc2FibGVkQ29sb3IgPSBtYWtlU2ltcGxlQ29s
b3IoMjQ0LCAyNDIsIDI0MSk7CiAjaWYgRU5BQkxFKFZJREVPKQotc3RhdGljIGNvbnN0IENvbG9y
IG1lZGlhU2xpZGVyVHJhY2tCYWNrZ3JvdW5kY29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoNzcsIDc3
LCA3Nyk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgbWVkaWFTbGlkZXJUcmFja0J1ZmZlcmVkQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMTczLCAxNzMsIDE3Myk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgbWVk
aWFTbGlkZXJUcmFja0FjdGl2ZUNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIp
Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1lZGlhU2xpZGVyVHJhY2tCYWNrZ3JvdW5kY29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoNzcsIDc3LCA3Nyk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gbWVk
aWFTbGlkZXJUcmFja0J1ZmZlcmVkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTczLCAxNzMsIDE3
Myk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gbWVkaWFTbGlkZXJUcmFja0FjdGl2ZUNvbG9yID0g
bWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0o
R1RLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgJKHJl
dmlzaW9uIDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBDb2xvciBwbGF0Zm9ybVRhcEhpZ2hsaWdo
dENvbG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU2ltcGxlQ29sb3IgeyAweDREMUExQTFB
IH07IH0KKyAgICBDb2xvciBwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDB4MUEsIDB4MUEsIDB4MUEsIDB4NEQpOyB9CiAj
ZW5kaWYKIAogICAgIGJvb2wgc2hvdWxkSGF2ZVNwaW5CdXR0b24oY29uc3QgSFRNTElucHV0RWxl
bWVudCYpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5tbQkocmV2aXNpb24gMjYzOTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MTYsMTAgKzkxNiwx
MCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvCiAKICAgICBjb25z
dCBmbG9hdCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uID0gcmVjdC55KCkgKyB2ZXJ0aWNhbE9m
ZnNldDsKICAgICBhdXRvIHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVu
dDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9z
aXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsg
cHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKLSAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JT
dG9wKDAuMCwgbWFrZVNpbXBsZUNvbG9yKDB4OGQsIDB4OGQsIDB4OGQpKTsKLSAgICBzdHJva2VH
cmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIG1ha2VTaW1wbGVDb2xvcigweGVlLCAweGVlLCAw
eGVlKSk7Ci0gICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjU1LCBtYWtlU2ltcGxl
Q29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwotICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0
b3AoMS4wLCBtYWtlU2ltcGxlQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOworICAgIHN0cm9rZUdy
YWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBtYWtlU2ltcGxlQ29sb3IoMHg4RCwgMHg4RCwgMHg4
RCkpOworICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC40NSwgbWFrZVNpbXBsZUNv
bG9yKDB4RUUsIDB4RUUsIDB4RUUpKTsKKyAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9w
KDAuNTUsIG1ha2VTaW1wbGVDb2xvcigweEVFLCAweEVFLCAweEVFKSk7CisgICAgc3Ryb2tlR3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIG1ha2VTaW1wbGVDb2xvcigweDhELCAweDhELCAweDhE
KSk7CiAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKHN0cm9rZUdyYWRpZW50
KSk7CiAKICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwpAQCAtMTM4Miwx
MCArMTM4MiwxMCBAQCBDb2xvciBSZW5kZXJUaGVtZUlPUzo6c3lzdGVtQ29sb3IoQ1NTVmFsCiBj
b25zdCBDR1NpemUgYXR0YWNobWVudFNpemUgPSB7IDE2MCwgMTE5IH07CiAKIGNvbnN0IENHRmxv
YXQgYXR0YWNobWVudEJvcmRlclJhZGl1cyA9IDE2OwotY29uc3RleHByIFNpbXBsZUNvbG9yIGF0
dGFjaG1lbnRCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDQsIDIwNCwgMjA0KTsKK2Nv
bnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDQs
IDIwNCwgMjA0KTsKIHN0YXRpYyBDR0Zsb2F0IGF0dGFjaG1lbnRCb3JkZXJUaGlja25lc3MgPSAx
OwogCi1jb25zdGV4cHIgU2ltcGxlQ29sb3IgYXR0YWNobWVudFByb2dyZXNzQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMjIyLCAyMjIsIDIyMik7Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50UHJv
Z3Jlc3NDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMjIsIDIyMiwgMjIyKTsKIGNvbnN0IENHRmxv
YXQgYXR0YWNobWVudFByb2dyZXNzQm9yZGVyVGhpY2tuZXNzID0gMzsKIAogY29uc3QgQ0dGbG9h
dCBhdHRhY2htZW50UHJvZ3Jlc3NTaXplID0gMzY7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiAyNjM5NzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTczNywx
MSArNzM3LDExIEBAIENvbG9yIFJlbmRlclRoZW1lTWFjOjpzeXN0ZW1Db2xvcihDU1NWYWwKICAg
ICAgICAgY2FzZSBDU1NWYWx1ZVRocmVlZGZhY2U6CiAgICAgICAgICAgICAvLyBXZSBzZWxlY3Rl
ZCB0aGlzIHZhbHVlIGluc3RlYWQgb2YgW05TQ29sb3IgY29udHJvbENvbG9yXSB0byBhdm9pZCB3
ZWJzaXRlIGluY29tcGF0aWJpbGl0aWVzLgogICAgICAgICAgICAgLy8gV2UgbWF5IHdhbnQgdG8g
Y29uc2lkZXIgY2hhbmdpbmcgdG8gW05TQ29sb3IgY29udHJvbENvbG9yXSBzb21lIGRheS4KLSAg
ICAgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkZDMEMwQzAgfTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMHhDMCwgMHhDMCwgMHhDMCk7CiAKICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZUluZm9iYWNrZ3JvdW5kOgogICAgICAgICAgICAgLy8gTm8gY29ycmVzcG9uZGlu
ZyBOU0NvbG9yIGZvciB0aGlzIHNvIHdlIHVzZSBhIGhhcmQgY29kZWQgdmFsdWUuCi0gICAgICAg
ICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGRkJGQ0M1IH07CisgICAgICAgICAgICByZXR1
cm4gbWFrZVNpbXBsZUNvbG9yKDB4RkIsIDB4RkMsIDB4QzUpOwogCiAgICAgICAgIGNhc2UgQ1NT
VmFsdWVNZW51OgogICAgICAgICAgICAgcmV0dXJuIG1lbnVCYWNrZ3JvdW5kQ29sb3IoKTsKQEAg
LTc1MCwzMCArNzUwLDMwIEBAIENvbG9yIFJlbmRlclRoZW1lTWFjOjpzeXN0ZW1Db2xvcihDU1NW
YWwKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZWJvcmRlcjoKICAgICAgICAgICAgIC8vIEhh
cmRjb2RlZCB0byBhdm9pZCBleHBvc2luZyBhIHVzZXIgYXBwZWFyYW5jZSBwcmVmZXJlbmNlIHRv
IHRoZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5nLgogICAgICAgICAgICAgaWYgKGxvY2FsQXBwZWFy
YW5jZS51c2luZ0RhcmtBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgU2lt
cGxlQ29sb3IgeyAweEZGMUFBOUZGIH0sIENvbG9yOjpTZW1hbnRpYyB9OwotICAgICAgICAgICAg
cmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAweEZGMDA2N0Y0IH0sIENvbG9yOjpTZW1hbnRpYyB9Owor
ICAgICAgICAgICAgICAgIHJldHVybiB7IG1ha2VTaW1wbGVDb2xvcigweDFBLCAweEE5LCAweEZG
KSwgQ29sb3I6OlNlbWFudGljIH07CisgICAgICAgICAgICByZXR1cm4geyBtYWtlU2ltcGxlQ29s
b3IoMHgwMCwgMHg2NywgMHhGNCksIENvbG9yOjpTZW1hbnRpYyB9OwogCiAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVBcHBsZVN5c3RlbUNvbnRyb2xBY2NlbnQ6CiAgICAgICAgICAgICAvLyBIYXJkY29k
ZWQgdG8gYXZvaWQgZXhwb3NpbmcgYSB1c2VyIGFwcGVhcmFuY2UgcHJlZmVyZW5jZSB0byB0aGUg
d2ViIGZvciBmaW5nZXJwcmludGluZy4KICAgICAgICAgICAgIC8vIFNhbWUgY29sb3IgaW4gbGln
aHQgYW5kIGRhcmsgYXBwZWFyYW5jZXMuCi0gICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xv
ciB7IDB4RkYwMDdBRkYgfSwgQ29sb3I6OlNlbWFudGljIH07CisgICAgICAgICAgICByZXR1cm4g
eyBtYWtlU2ltcGxlQ29sb3IoMHgwMCwgMHg3QSwgMHhGRiksIENvbG9yOjpTZW1hbnRpYyB9Owog
CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVNlbGVjdGVkQ29udGVudEJhY2tncm91
bmQ6CiAgICAgICAgICAgICAvLyBIYXJkY29kZWQgdG8gYXZvaWQgZXhwb3NpbmcgYSB1c2VyIGFw
cGVhcmFuY2UgcHJlZmVyZW5jZSB0byB0aGUgd2ViIGZvciBmaW5nZXJwcmludGluZy4KICAgICAg
ICAgICAgIGlmIChsb2NhbEFwcGVhcmFuY2UudXNpbmdEYXJrQXBwZWFyYW5jZSgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiB7IFNpbXBsZUNvbG9yIHsgMHhGRjAwNThEMCB9LCBDb2xvcjo6U2Vt
YW50aWMgfTsKLSAgICAgICAgICAgIHJldHVybiB7IFNpbXBsZUNvbG9yIHsgMHhGRjAwNjNFMSB9
LCBDb2xvcjo6U2VtYW50aWMgfTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyBtYWtlU2ltcGxl
Q29sb3IoMHgwMCwgMHg1OCwgMHhEMCksIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAgICAg
cmV0dXJuIHsgbWFrZVNpbXBsZUNvbG9yKDB4MDAsIDB4NjMsIDB4RTEpLCBDb2xvcjo6U2VtYW50
aWMgfTsKIAogICAgICAgICBjYXNlIENTU1ZhbHVlSGlnaGxpZ2h0OgogICAgICAgICBjYXNlIENT
U1ZhbHVlQXBwbGVTeXN0ZW1TZWxlY3RlZFRleHRCYWNrZ3JvdW5kOgogICAgICAgICAgICAgLy8g
SGFyZGNvZGVkIHRvIGF2b2lkIGV4cG9zaW5nIGEgdXNlciBhcHBlYXJhbmNlIHByZWZlcmVuY2Ug
dG8gdGhlIHdlYiBmb3IgZmluZ2VycHJpbnRpbmcuCiAgICAgICAgICAgICBpZiAobG9jYWxBcHBl
YXJhbmNlLnVzaW5nRGFya0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4geyBT
aW1wbGVDb2xvciB7IDB4Q0MzRjYzOEIgfSwgQ29sb3I6OlNlbWFudGljIH07Ci0gICAgICAgICAg
ICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4OTk4MEJDRkUgfSwgQ29sb3I6OlNlbWFudGljIH07
CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVNpbXBsZUNvbG9yKDB4M0YsIDB4NjMsIDB4
OEIsIDB4Q0MpLCBDb2xvcjo6U2VtYW50aWMgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1ha2VT
aW1wbGVDb2xvcigweDgwLCAweEJDLCAweEZFLCAweDk5KSwgQ29sb3I6OlNlbWFudGljIH07CiAK
ICNpZiAhSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFw
cGxlU3lzdGVtQ29udGFpbmVyQm9yZGVyOgotICAgICAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9y
IHsgMHhGRkM1QzVDNSB9OworICAgICAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigweEM1
LCAweEM1LCAweEM1KTsKICNlbmRpZgogCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3Rl
bUV2ZW5BbHRlcm5hdGluZ0NvbnRlbnRCYWNrZ3JvdW5kOiB7CkBAIC0yNDEzLDggKzI0MTMsOCBA
QCBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRJY29uU2VsZWN0aW9uQm9yCiBjb25zdCBDR0Zsb2F0
IGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZFJhZGl1cyA9IDM7CiBjb25zdCBDR0Zsb2F0IGF0dGFj
aG1lbnRJY29uVG9UaXRsZU1hcmdpbiA9IDI7CiAKLWNvbnN0ZXhwciBTaW1wbGVDb2xvciBhdHRh
Y2htZW50SWNvbkJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCAzMCk7
Ci1jb25zdGV4cHIgU2ltcGxlQ29sb3IgYXR0YWNobWVudEljb25Cb3JkZXJDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1LCAxMjUpOworY29uc3RleHByIGF1dG8gYXR0YWNobWVu
dEljb25CYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMzApOworY29u
c3RleHByIGF1dG8gYXR0YWNobWVudEljb25Cb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigy
NTUsIDI1NSwgMjU1LCAxMjUpOwogCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRUaXRsZUZvbnRT
aXplID0gMTI7CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRUaXRsZUJhY2tncm91bmRSYWRpdXMg
PSAzOwpAQCAtMjQyMiwyMyArMjQyMiwyMyBAQCBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRUaXRs
ZUJhY2tncm91bmRQCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRUaXRsZU1heGltdW1XaWR0aCA9
IDEwMCAtIChhdHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kUGFkZGluZyAqIDIpOwogY29uc3QgQ0ZJ
bmRleCBhdHRhY2htZW50VGl0bGVNYXhpbXVtTGluZUNvdW50ID0gMjsKIAotY29uc3RleHByIFNp
bXBsZUNvbG9yIGF0dGFjaG1lbnRUaXRsZUluYWN0aXZlQmFja2dyb3VuZENvbG9yID0gbWFrZVNp
bXBsZUNvbG9yKDIwNCwgMjA0LCAyMDQsIDI1NSk7Ci1jb25zdGV4cHIgU2ltcGxlQ29sb3IgYXR0
YWNobWVudFRpdGxlSW5hY3RpdmVUZXh0Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTAwLCAxMDAs
IDEwMCwgMjU1KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRUaXRsZUluYWN0aXZlQmFja2dy
b3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNCwgMjA0LCAyMDQsIDI1NSk7Citjb25zdGV4
cHIgYXV0byBhdHRhY2htZW50VGl0bGVJbmFjdGl2ZVRleHRDb2xvciA9IG1ha2VTaW1wbGVDb2xv
cigxMDAsIDEwMCwgMTAwLCAyNTUpOwogCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRTdWJ0aXRs
ZUZvbnRTaXplID0gMTA7CiBjb25zdCBpbnQgYXR0YWNobWVudFN1YnRpdGxlV2lkdGhJbmNyZW1l
bnQgPSAxMDsKLWNvbnN0ZXhwciBTaW1wbGVDb2xvciBhdHRhY2htZW50U3VidGl0bGVUZXh0Q29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoODIsIDE0NSwgMjE0LCAyNTUpOworY29uc3RleHByIGF1dG8g
YXR0YWNobWVudFN1YnRpdGxlVGV4dENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDgyLCAxNDUsIDIx
NCwgMjU1KTsKIAogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJXaWR0aCA9IDMw
OwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJIZWlnaHQgPSA1OwogY29uc3Qg
Q0dGbG9hdCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJPZmZzZXQgPSAtOTsKIGNvbnN0IENHRmxvYXQg
YXR0YWNobWVudFByb2dyZXNzQmFyQm9yZGVyV2lkdGggPSAxOwotY29uc3RleHByIFNpbXBsZUNv
bG9yIGF0dGFjaG1lbnRQcm9ncmVzc0JhckJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xv
cigwLCAwLCAwLCA4OSk7Ci1jb25zdGV4cHIgU2ltcGxlQ29sb3IgYXR0YWNobWVudFByb2dyZXNz
QmFyRmlsbENvbG9yID0gQ29sb3I6OndoaXRlOwotY29uc3RleHByIFNpbXBsZUNvbG9yIGF0dGFj
aG1lbnRQcm9ncmVzc0JhckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDEy
OCk7Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50UHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgODkpOworY29uc3RleHByIGF1dG8gYXR0YWNobWVu
dFByb2dyZXNzQmFyRmlsbENvbG9yID0gQ29sb3I6OndoaXRlOworY29uc3RleHByIGF1dG8gYXR0
YWNobWVudFByb2dyZXNzQmFyQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwg
MTI4KTsKIAogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UGxhY2Vob2xkZXJCb3JkZXJSYWRpdXMg
PSA1OwotY29uc3RleHByIFNpbXBsZUNvbG9yIGF0dGFjaG1lbnRQbGFjZWhvbGRlckJvcmRlckNv
bG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDU2KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFj
aG1lbnRQbGFjZWhvbGRlckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDU2
KTsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFBsYWNlaG9sZGVyQm9yZGVyV2lkdGggPSAyOwog
Y29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UGxhY2Vob2xkZXJCb3JkZXJEYXNoTGVuZ3RoID0gNjsK
IApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MDA1KQorKysg
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMjAtMDctMDYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisg
ICAgICAgIFBhcnQgMiBvZiBTaW1wbGVDb2xvciBhbmQgU1JHQkE8dWludDhfdD4gYXJlIGVzc2Vu
dGlhbGx5IHRoZSBzYW1lIC0gbGV0J3MgY29udmVyZ2UgdGhlbQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzOTgxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
LmNwcDoKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIGF1dG8vbWFrZVNpbXBsZUNvbG9yLgorCiAy
MDIwLTA3LTAzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQ2hhbmdlIHRoZSBuYW1lcyBvZiBNSU1FVHlwZVJlZ2lzdHJ5IG1ldGhvZHMgdG8g
Y29tcGx5IHdpdGggd2Via2l0IG5hbWluZyBzdHlsZQpJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDI2Mzk3OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxMSArNzQsMTEgQEAgc3RhdGljIGNvbnN0
IGludCBib3JkZXJSYWRpdXMgPSAxMjsKIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyVGhpY2tuZXNz
ID0gMjsKIAogLy8gQ29sb3JzCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGJhY2tncm91bmRD
b2xvciA9IDB4QTAyMDIwMjA7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGJvcmRlckNvbG9y
ID0gMHhGRkEwQTBBMDsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgc2xpZGVyR3V0dGVyQ29s
b3IgPSAweEZGMTQxNDE0Owotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBzbGlkZXJCdXR0b25D
b2xvciA9IDB4RkY4MDgwODA7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHRleHRDb2xvciA9
IDB4RkZGRkZGRkY7CitzdGF0aWMgY29uc3RleHByIGF1dG8gYmFja2dyb3VuZENvbG9yID0gbWFr
ZVNpbXBsZUNvbG9yKDB4MjAsIDB4MjAsIDB4MjAsIDB4QTApOworc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDB4QTAsIDB4QTAsIDB4QTApOworc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlckd1dHRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDB4
MTQsIDB4MTQsIDB4MTQpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlckJ1dHRvbkNvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDB4ODAsIDB4ODAsIDB4ODApOworc3RhdGljIGNvbnN0ZXhwciBh
dXRvIHRleHRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigweEZGLCAweEZGLCAweEZGKTsKIAogSFVE
QnV0dG9uOjpIVURCdXR0b24oSFVEQnV0dG9uVHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9z
aXRpb24pCiAgICAgOiBIVURXaWRnZXQoSW50UmVjdChwb3NpdGlvbiwgSW50U2l6ZSgpKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403713</attachid>
            <date>2020-07-07 12:58:13 -0700</date>
            <delta_ts>2020-07-07 13:33:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213981-20200707125813.patch</filename>
            <type>text/plain</type>
            <size>65052</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzNSBAQAorMjAyMC0wNy0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGFydCAyIG9mIFNpbXBsZUNvbG9y
IGFuZCBTUkdCQTx1aW50OF90PiBhcmUgZXNzZW50aWFsbHkgdGhlIHNhbWUgLSBsZXQncyBjb252
ZXJnZSB0aGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTM5ODEKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAt
IFJlcGxhY2VzIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIFNpbXBsZUNvbG9yIGJhc2VkIG9u
IGFuIEFSR0IgdWludDMyX3Qgd2l0aCBTUkdCQTx1aW50OF90Pi4KKyAgICAgICAgLSBSZW1vdmVz
IFNpbXBsZUNvbG9yIGNvbnN0cnVjdG9yIHRha2luZyBhIHVpbnQzMl90LiBDYWxsZXJzIHRoYXQg
c3RpbGwgbmVlZCB0byBjb252ZXJ0IGZyb20gQVJHQgorICAgICAgICAgIG5vdyBkbyBtYWtlU2lt
cGxlQ29sb3IoYXNTUkdCQShQYWNrZWQ6OkFSR0IgeyB2YWx1ZSB9KSkuCisgICAgICAgIC0gUmVt
b3ZlcyB2YWx1ZSgpIGFuZCB2YWx1ZUFzQVJHQigpIG1lbWJlciBmdW5jdGlvbnMgZnJvbSBTaW1w
bGVDb2xvci4gQ2FsbGVycyB0aGF0IG5lZWQgYSBwYWNrZWQKKyAgICAgICAgICByZXByZXNlbnRh
dGlvbiBub3cgZG8gUGFja2VkOjpBUkdCIHsgc2ltcGxlQ29sb3IuYXNTUkdCQTx1aW50OF90Pigp
IH0udmFsdWUuCisKKyAgICAgICAgKiBjc3MvU3R5bGVDb2xvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKToKKyAgICAgICAgVXNlIGFzU1JHQkEo
UGFja2VkOjpBUkdCey4uLn0pIHRvIGNvbnN0dWN0IHRoZSBjb2xvci4KKworICAgICAgICAqIGNz
cy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmlz
aFBhcnNpbmdOYW1lZENvbG9yKToKKyAgICAgICAgVXNlIGFzU1JHQkEoUGFja2VkOjpBUkdCey4u
Ln0pIChvciBpbiBvbmUgY2FzZSwgUGFja2VkOjpSR0JBKSB0byBjb25zdHVjdCB0aGUgY29sb3Iu
CisgICAgICAgIFRoZXNlIGNhbiBhbG1vc3QgY2VydGFpbmx5IGJlIHNpbXBsaWZpZWQsIGJ1dCBp
biB0aGUgaW50ZXJlc3Qgb2Yga2VlcGluZyB0aGluZ3Mgc21hbGxpc2gsCisgICAgICAgIEkgaGF2
ZSBsZWZ0IHRoYXQgZm9yIGEgc3Vic2VxdWVudCBjaGFuZ2UuCisKKyAgICAgICAgKiBlZGl0aW5n
L0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRvL21h
a2VTaW1wbGVDb2xvci4KKworICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJs
YXlDb2NvYS5tbToKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIG1ha2VTaW1wbGVDb2xvci4KKwor
ICAgICAgICAoV2ViQ29yZTo6SGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm86Okhpc3RvcmljTWVt
b3J5Q2F0ZWdvcnlJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcmljUmVzb3VyY2VVc2Fn
ZURhdGE6Okhpc3RvcmljUmVzb3VyY2VVc2FnZURhdGEpOgorICAgICAgICBTd2l0Y2ggdG8gdXNp
bmcgYXV0by9tYWtlU2ltcGxlQ29sb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hZHdhaXRhL1Nj
cm9sbGJhclRoZW1lQWR3YWl0YS5jcHA6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRvL21h
a2VTaW1wbGVDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAtIFN3aXRjaCB0
byB1c2luZyBhdXRvL21ha2VTaW1wbGVDb2xvciBmb3IgbmFtZWQgY29sb3JzLgorICAgICAgICAt
IFN3aXRjaCB0byBzdG9yaW5nL2VuY29kaW5nIHRoZSBpbmxpbmUgU2ltcGxlQ29sb3IgYXMgYSBQ
YWNrZWQ6OlJHQkEgdmFsdWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJs
ZW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kKToKKyAgICAgICAgVXBkYXRlIGZv
ciBuZXcgbmFtZSBvZiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWNrZWQ6OlJHQkE6
OlJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6UGFja2VkOjpBUkdCOjpBUkdCKToKKyAgICAgICAg
KFdlYkNvcmU6OmFzU1JHQkEpOgorICAgICAgICBSZW5hbWUgV2ViQ29yZTo6QVJHQiB0byBXZWJD
b3JlOjpQYWNrZWQ6OkFSR0IuIEFkZHMgY29tcGFuaW9uLCBXZWJDb3JlOjpQYWNrZWQ6OlJHQkEu
IEFuZCBhZGRzIGNvbnN0cnVjdG9ycworICAgICAgICB3aGljaCBtYWtlIGEgcGFja2VkIHR5cGUg
ZnJvbSBhbiBTUkdCQTx1aW50OF90Pi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50Qnl0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50RmxvYXQpOgorICAgICAgICBFeHRy
YWN0IG91dCBoZWxwZXIgZnVuY3Rpb25zIHdoaWNoIGp1c3QgZG8gdGhlIGNsYW1waW5nIGZvciB0
aGUgdHlwZS4gCisKKyAgICAgICAgKFdlYkNvcmU6OmNsYW1wVG9Db21wb25lbnRCeXRlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50RmxvYXRzKToKKyAgICAgICAgUmVuYW1l
IGNvbnZlcnNpb24gZnVuY3Rpb25zIHRoYXQganVzdCBjbGFtcCB0byB1c2UgImNsYW1wIiBwcmVm
aXggcmF0aGVyIHRoYW4gImNvbnZlcnQiLiBNYWtlIHVzZQorICAgICAgICBvZiBleHRyYWN0ZWQg
aGVscGVycy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6YmxlbmRQaXhlbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6cGl4ZWxWYWx1ZSBjb25zdCk6Cisg
ICAgICAgIFVwZGF0ZSB1c2luZyBuZXcgcGFja2VkIGNvbG9yIHR5cGVzIGFuZCBmdW50aW9ucy4g
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVDb2xvci5oOgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlQ29sb3I6OlNpbXBsZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUNvbG9yOjphbHBoYUNvbXBvbmVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVDb2xvcjo6YWxwaGFDb21wb25lbnRBc0Zsb2F0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUNvbG9yOjppc09wYXF1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVD
b2xvcjo6aXNWaXNpYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNvbG9yOjpj
b2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVDb2xvcjo6aW52
ZXJ0ZWRDb2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVDb2xv
cjo6YXNTUkdCQSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVDb2xvcjo6Z2V0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VTaW1wbGVDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVDb2xvcjo6dmFsdWVBc0FSR0IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlQ29sb3I6OnZhbHVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNpbXBsZUNvbG9yOjpyZWRDb21wb25lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6OmdyZWVuQ29tcG9uZW50IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNvbG9yOjpibHVlQ29tcG9uZW50IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgLSBSZW1vdmVzIGNvbnN0cnVjdG9yIHRha2luZyBhbiBBUkdCIHVpbnQz
Ml90LgorICAgICAgICAtIFJlbW92ZXMgdmFsdWVBc0FSR0IoKS92YWx1ZSgpIGZ1bmN0aW9ucyAo
Y2FuIHVzZSBQYWNrZWQ6OkFSR0IgZGlyZWN0bHkgaWYgbmVlZGVkKS4KKyAgICAgICAgLSBTd2l0
Y2hlcyBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiB0byBTUkdCQTx1aW50OF90Pi4KKyAgICAgICAg
LSBTdHJlYW1saW5lIG1ha2VTaW1wbGVDb2xvciBmdW5jdGlvbnMgdG8gdXNlIHNoYXJlZCBoZWxw
ZXJzIGZyb20gQ29sb3JVdGlsaXRpZXMuaAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW06CisgICAgICAgIChXZWJDb3Jl
Ojpuc0NvbG9yKToKKyAgICAgICAgVXNlIFBhY2tlZDo6UkdCQSB0byBleHRyYWN0IHVpbnQzMl90
IGZvciBxdWljayBsb29rdXAgb2YgdHJhbnNwYXJlbnQvd2hpdGUvYmxhY2sgU2ltcGxlQ29sb3Jz
LiBEZXNwaXRlIHRoZQorICAgICAgICBsZW5ndGggb2YgdGhlIGNhbGxzLCBTaW1wbGVDb2xvciBp
cyBmdWxseSBjb25zdGV4cHIsIHNvIHRoZXNlIGFjdHVhbGx5IGNvbGxhcHNlIGRvd24gdG8gdGhl
IHVpbnQzMl90IHJlcHJlc2VudGF0aW9uCisgICAgICAgIGF0IGNvbXBpbGUgdGltZS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdEb3RzRm9yRG9jdW1lbnRNYXJr
ZXIpOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgYXV0by9tYWtlU2ltcGxlQ29sb3IuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHREZXZpY2VzKToKKyAgICAgICAgU3dpdGNoIHRvIHVz
aW5nIG1ha2VTaW1wbGVDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U6OmRyYXdCb3hlcyk6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRvL21ha2VTaW1w
bGVDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tn
cm91bmQpOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgbWFrZVNpbXBsZUNvbG9yLgorCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmNhbGN1bGF0ZUJvcmRlclN0eWxlQ29sb3IpOgorICAgICAgICBVcGRhdGUgY29t
bWVudCB0byB1c2UgcGVyLWNvbXBvbmVudCB2YWx1ZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnN5c3RlbUNv
bG9yIGNvbnN0KToKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIG1ha2VTaW1wbGVDb2xvci4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2FpdGEuY3BwOgorICAgICAgICBTd2l0
Y2ggdG8gdXNpbmcgYXV0by9tYWtlU2ltcGxlQ29sb3IuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcik6Cisg
ICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRvL21ha2VTaW1wbGVDb2xvci4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lTWFjOjpzeXN0ZW1Db2xvciBjb25zdCk6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRv
L21ha2VTaW1wbGVDb2xvci4KKwogMjAyMC0wNy0wNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBVbmFibGUgdG8gc2Nyb2xsIGVsY29tZXJpY28ucGUg
cGFnZSB1bnRpbCB0aGUgcGFnZSBmaW5pc2hlcyBsb2FkaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVDb2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQ29sb3IuY3BwCShyZXZpc2lvbiAyNjQwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVDb2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgQ29sb3IgU3R5bGVD
b2xvcjo6Y29sb3JGcm9tS2V5d29yZChDU1NWYQogewogICAgIGlmIChjb25zdCBjaGFyKiB2YWx1
ZU5hbWUgPSBnZXRWYWx1ZU5hbWUoa2V5d29yZCkpIHsKICAgICAgICAgaWYgKGNvbnN0IE5hbWVk
Q29sb3IqIG5hbWVkQ29sb3IgPSBmaW5kQ29sb3IodmFsdWVOYW1lLCBzdHJsZW4odmFsdWVOYW1l
KSkpCi0gICAgICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyBuYW1lZENvbG9yLT5BUkdCVmFs
dWUgfTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoYXNTUkdCQShQYWNrZWQ6
OkFSR0IgeyBuYW1lZENvbG9yLT5BUkdCVmFsdWUgfSkpOwogICAgIH0KIAogICAgIHJldHVybiBS
ZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc3lzdGVtQ29sb3Ioa2V5d29yZCwgb3B0aW9ucyk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMu
Y3BwCShyZXZpc2lvbiAyNjQwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlckZhc3RQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNCwyMSArNDE0LDI4IEBAIHN0
YXRpYyBPcHRpb25hbDxTaW1wbGVDb2xvcj4gZmluaXNoUGFyc2kKICAgICBzd2l0Y2ggKGxlbmd0
aCkgewogICAgIGNhc2UgMzoKICAgICAgICAgLy8gI2FiYyBjb252ZXJ0cyB0byAjYWFiYmNjCi0g
ICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkYwMDAwMDAKKyAgICAgICAgLy8gRklYTUU6
IFJlcGxhY2UgY29udmVyc2lvbiB0byBQYWNrZWQ6OkFSR0Igd2l0aCBzaW1wbGVyIGJpdCBtYXRo
IHRvIGNvbnN0cnVjdAorICAgICAgICAvLyB0aGUgU1JHQkE8dWludDhfdD4gZGlyZWN0bHkuCisg
ICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoYXNTUkdCQShQYWNrZWQ6OkFSR0IgeworICAg
ICAgICAgICAgICAgMHhGRjAwMDAwMAogICAgICAgICAgICAgfCAodmFsdWUgJiAweEYwMCkgPDwg
MTIgfCAodmFsdWUgJiAweEYwMCkgPDwgOAogICAgICAgICAgICAgfCAodmFsdWUgJiAweEYwKSA8
PCA4IHwgKHZhbHVlICYgMHhGMCkgPDwgNAotICAgICAgICAgICAgfCAodmFsdWUgJiAweEYpIDw8
IDQgfCAodmFsdWUgJiAweEYpIH07CisgICAgICAgICAgICB8ICh2YWx1ZSAmIDB4RikgPDwgNCB8
ICh2YWx1ZSAmIDB4RikgfSkpOwogICAgIGNhc2UgNDoKICAgICAgICAgLy8gI2FiY2QgY29udmVy
dHMgdG8gZGRhYWJiY2Mgc2luY2UgYWxwaGEgYnl0ZXMgYXJlIHRoZSBoaWdoIGJ5dGVzLgotICAg
ICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAodmFsdWUgJiAweEYpIDw8IDI4IHwgKHZhbHVlICYg
MHhGKSA8PCAyNAorICAgICAgICAvLyBGSVhNRTogUmVwbGFjZSBjb252ZXJzaW9uIHRvIFBhY2tl
ZDo6QVJHQiB3aXRoIHNpbXBsZXIgYml0IG1hdGggdG8gY29uc3RydWN0CisgICAgICAgIC8vIHRo
ZSBTUkdCQTx1aW50OF90PiBkaXJlY3RseS4KKyAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xv
cihhc1NSR0JBKFBhY2tlZDo6QVJHQiB7CisgICAgICAgICAgICAgICh2YWx1ZSAmIDB4RikgPDwg
MjggfCAodmFsdWUgJiAweEYpIDw8IDI0CiAgICAgICAgICAgICB8ICh2YWx1ZSAmIDB4RjAwMCkg
PDwgOCB8ICh2YWx1ZSAmIDB4RjAwMCkgPDwgNAogICAgICAgICAgICAgfCAodmFsdWUgJiAweEYw
MCkgPDwgNCB8ICh2YWx1ZSAmIDB4RjAwKQotICAgICAgICAgICAgfCAodmFsdWUgJiAweEYwKSB8
ICh2YWx1ZSAmIDB4RjApID4+IDQgfTsKKyAgICAgICAgICAgIHwgKHZhbHVlICYgMHhGMCkgfCAo
dmFsdWUgJiAweEYwKSA+PiA0IH0pKTsKICAgICBjYXNlIDY6Ci0gICAgICAgIHJldHVybiBTaW1w
bGVDb2xvciB7IDB4RkYwMDAwMDAgfCB2YWx1ZSB9OworICAgICAgICAvLyBGSVhNRTogUmVwbGFj
ZSBjb252ZXJzaW9uIHRvIFBhY2tlZDo6QVJHQiB3aXRoIHNpbXBsZXIgYml0IG1hdGggdG8gY29u
c3RydWN0CisgICAgICAgIC8vIHRoZSBTUkdCQTx1aW50OF90PiBkaXJlY3RseS4KKyAgICAgICAg
cmV0dXJuIG1ha2VTaW1wbGVDb2xvcihhc1NSR0JBKFBhY2tlZDo6QVJHQiB7IDB4RkYwMDAwMDAg
fCB2YWx1ZSB9KSk7CiAgICAgY2FzZSA4OgotICAgICAgICAvLyBXZSBwYXJzZWQgdGhlIHZhbHVl
cyBpbnRvIFJHQkEgb3JkZXIsIGJ1dCB3ZSBzdG9yZSB0aGVtIGluIEFSR0Igb3JkZXIuCi0gICAg
ICAgIHJldHVybiBTaW1wbGVDb2xvciB7IHZhbHVlIDw8IDI0IHwgdmFsdWUgPj4gOCB9OworICAg
ICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKGFzU1JHQkEoUGFja2VkOjpSR0JBIHsgdmFsdWUg
fSkpOwogICAgIH0KICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQpAQCAtNTMyLDcgKzUzOSw3
IEBAIHN0YXRpYyBPcHRpb25hbDxTaW1wbGVDb2xvcj4gZmluaXNoUGFyc2kKICAgICBhdXRvIG5h
bWVkQ29sb3IgPSBmaW5kQ29sb3IoYnVmZmVyLCBsZW5ndGgpOwogICAgIGlmICghbmFtZWRDb2xv
cikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXR1cm4gU2ltcGxlQ29sb3Ig
eyBuYW1lZENvbG9yLT5BUkdCVmFsdWUgfTsKKyAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKGFz
U1JHQkEoUGFja2VkOjpBUkdCIHsgbmFtZWRDb2xvci0+QVJHQlZhbHVlIH0pKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFNpbXBsZUNvbG9y
PiBwYXJzZU5hbWVkQ29sb3JJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0
aW9uSGlnaGxpZ2h0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21w
b3NpdGlvbkhpZ2hsaWdodC5oCShyZXZpc2lvbiAyNjQwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDkgKzQw
LDkgQEAgc3RydWN0IENvbXBvc2l0aW9uSGlnaGxpZ2h0IHsKICAgICB9CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgZGVmYXVsdENv
bXBvc2l0aW9uRmlsbENvbG9yIHsgMHgzQ0FGQzBFMyB9OworICAgIHN0YXRpYyBjb25zdGV4cHIg
YXV0byBkZWZhdWx0Q29tcG9zaXRpb25GaWxsQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTc1LCAx
OTIsIDIyNywgNjApOwogI2Vsc2UKLSAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIGRl
ZmF1bHRDb21wb3NpdGlvbkZpbGxDb2xvciB7IDB4RkZFMURENTUgfTsKKyAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gZGVmYXVsdENvbXBvc2l0aW9uRmlsbENvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDIyNSwgMjIxLCA4NSk7CiAjZW5kaWYKIAogICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0IHsgMCB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VV
c2FnZU92ZXJsYXlDb2NvYS5tbQkocmV2aXNpb24gMjY0MDMxKQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjgsMTIgKzEyOCwxMiBAQCBzdGF0aWMgQ0dDb2xvclJlZiBjcmVhdGVDb2xvcihmbG9hdCBy
LCBmCiBzdHJ1Y3QgSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8gewogICAgIEhpc3RvcmljTWVt
b3J5Q2F0ZWdvcnlJbmZvKCkgeyB9IC8vIE5lZWRlZCBmb3Igc3RkOjphcnJheS4KIAotICAgIEhp
c3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKHVuc2lnbmVkIGNhdGVnb3J5LCB1aW50MzJfdCBhcmdi
LCBTdHJpbmcgbmFtZSwgYm9vbCBzdWJjYXRlZ29yeSA9IGZhbHNlKQorICAgIEhpc3RvcmljTWVt
b3J5Q2F0ZWdvcnlJbmZvKHVuc2lnbmVkIGNhdGVnb3J5LCBTaW1wbGVDb2xvciBjb2xvciwgU3Ry
aW5nIG5hbWUsIGJvb2wgc3ViY2F0ZWdvcnkgPSBmYWxzZSkKICAgICAgICAgOiBuYW1lKFdURk1v
dmUobmFtZSkpCisgICAgICAgICwgY29sb3IoY2FjaGVkQ0dDb2xvcihzaW1wbGVDb2xvcikpCiAg
ICAgICAgICwgaXNTdWJjYXRlZ29yeShzdWJjYXRlZ29yeSkKICAgICAgICAgLCB0eXBlKGNhdGVn
b3J5KQogICAgIHsKLSAgICAgICAgY29sb3IgPSBjYWNoZWRDR0NvbG9yKFNpbXBsZUNvbG9yIHsg
YXJnYiB9KTsKICAgICB9CiAKICAgICBTdHJpbmcgbmFtZTsKQEAgLTE2MCwxOCArMTYwLDE4IEBA
IHN0cnVjdCBIaXN0b3JpY1Jlc291cmNlVXNhZ2VEYXRhIHsKIEhpc3RvcmljUmVzb3VyY2VVc2Fn
ZURhdGE6Okhpc3RvcmljUmVzb3VyY2VVc2FnZURhdGEoKQogewogICAgIC8vIFZNIHRhZyBjYXRl
Z29yaWVzLgotICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkpTSklUXSA9IEhpc3Rvcmlj
TWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpKU0pJVCwgMHhGRkZGNjBGRiwgIkpT
IEpJVCIpOwotICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkdpZ2FjYWdlXSA9IEhpc3Rv
cmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZSwgMHhGRjY1NEZG
MCwgIkdpZ2FjYWdlIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6SW1hZ2VzXSA9
IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpJbWFnZXMsIDB4RkZG
RkZGMDAsICJJbWFnZXMiKTsKLSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpMYXllcnNd
ID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkxheWVycywgMHhG
RjAwRkZGRiwgIkxheWVycyIpOwotICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkxpYmNN
YWxsb2NdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkxpYmNN
YWxsb2MsIDB4RkYwMEZGMDAsICJsaWJjIG1hbGxvYyIpOwotICAgIGNhdGVnb3JpZXNbTWVtb3J5
Q2F0ZWdvcnk6OmJtYWxsb2NdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0
ZWdvcnk6OmJtYWxsb2MsIDB4RkZGRjYwNjAsICJibWFsbG9jIik7Ci0gICAgY2F0ZWdvcmllc1tN
ZW1vcnlDYXRlZ29yeTo6SXNvSGVhcF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1v
cnlDYXRlZ29yeTo6SXNvSGVhcCwgMHhGRjgwOUY0MCwgIklzb0hlYXAiKTsKLSAgICBjYXRlZ29y
aWVzW01lbW9yeUNhdGVnb3J5OjpPdGhlcl0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhN
ZW1vcnlDYXRlZ29yeTo6T3RoZXIsIDB4RkZDMEZGMDAsICJPdGhlciIpOworICAgIGNhdGVnb3Jp
ZXNbTWVtb3J5Q2F0ZWdvcnk6OkpTSklUXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1l
bW9yeUNhdGVnb3J5OjpKU0pJVCwgbWFrZVNpbXBsZUNvbG9yKDI1NSwgOTYsIDI1NSksICJKUyBK
SVQiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZV0gPSBIaXN0b3Jp
Y01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6R2lnYWNhZ2UsIG1ha2VTaW1wbGVD
b2xvcigxMDEsIDc5LCAyNDApLCAiR2lnYWNhZ2UiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNh
dGVnb3J5OjpJbWFnZXNdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdv
cnk6OkltYWdlcywgbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAwKSwgIkltYWdlcyIpOworICAg
IGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkxheWVyc10gPSBIaXN0b3JpY01lbW9yeUNhdGVn
b3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6TGF5ZXJzLCBtYWtlU2ltcGxlQ29sb3IoMCwgMjU1LCAy
NTUpLCAiTGF5ZXJzIik7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6TGliY01hbGxv
Y10gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6TGliY01hbGxv
YywgbWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCksICJsaWJjIG1hbGxvYyIpOworICAgIGNhdGVn
b3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OmJtYWxsb2NdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUlu
Zm8oTWVtb3J5Q2F0ZWdvcnk6OmJtYWxsb2MsIG1ha2VTaW1wbGVDb2xvcigyNTUsIDk2LCA5Niks
ICJibWFsbG9jIik7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6SXNvSGVhcF0gPSBI
aXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6SXNvSGVhcCwgbWFrZVNp
bXBsZUNvbG9yKDEyOCwgMTU5LCA2NCksICJJc29IZWFwIik7CisgICAgY2F0ZWdvcmllc1tNZW1v
cnlDYXRlZ29yeTo6T3RoZXJdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0
ZWdvcnk6Ok90aGVyLCBtYWtlU2ltcGxlQ29sb3IoMTkyLCAyNTUsIDApLCAiT3RoZXIiKTsKIAog
ICAgIC8vIFN1YiBjYXRlZ29yaWVzIChlLmcgYnJlYWtkb3duIG9mIGJtYWxsb2MgdGFnLikKLSAg
ICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHQ0hlYXBdID0gSGlzdG9yaWNNZW1vcnlDYXRl
Z29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkdDSGVhcCwgMHhGRkEwQTBGRiwgIkdDIGhlYXAiLCB0
cnVlKTsKLSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHQ093bmVkXSA9IEhpc3Rvcmlj
TWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ093bmVkLCAweEZGRkZDMDYwLCAi
R0Mgb3duZWQiLCB0cnVlKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHQ0hlYXBd
ID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkdDSGVhcCwgbWFr
ZVNpbXBsZUNvbG9yKDE2MCwgMTYwLCAyNTUpLCAiR0MgaGVhcCIsIHRydWUpOworICAgIGNhdGVn
b3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkdDT3duZWRdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUlu
Zm8oTWVtb3J5Q2F0ZWdvcnk6OkdDT3duZWQsIG1ha2VTaW1wbGVDb2xvcigyNTUsIDE5MiwgOTYp
LCAiR0Mgb3duZWQiLCB0cnVlKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICAvLyBFbnN1cmUgdGhp
cyBhbGlnbnMgd2l0aCBSZXNvdXJjZVVzYWdlRGF0YSdzIGNhdGVnb3J5IG9yZGVyLgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVy
bGF5TGludXguY3BwCShyZXZpc2lvbiAyNjQwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2xp
bnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3
ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoY2xpcCwg
bWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDIwNCkpOwotICAgICAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihtYWtlU2ltcGxlQ29sb3IoMjMwLCAyMzAsIDIzMCwgMjU1KSk7CisgICAgICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKG1ha2VTaW1wbGVDb2xvcigyMzAsIDIzMCwgMjMwKSk7CiAKICAgICAg
ICAgRmxvYXRQb2ludCBwb3NpdGlvbiA9IHsgMTAsIDIwIH07CiAgICAgICAgIFN0cmluZyBzdHJp
bmcgPSAgIkNQVTogIiArIGNwdVVzYWdlU3RyaW5nKGdEYXRhLmNwdSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hZHdhaXRhL1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYWR3YWl0YS9TY3JvbGxiYXJUaGVtZUFk
d2FpdGEuY3BwCShyZXZpc2lvbiAyNjQwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
ZHdhaXRhL1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEz
ICs0MywxMyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgb3ZlcmxheVRodW1iU2l6ZSA9CiBzdGF0
aWMgY29uc3QgdW5zaWduZWQgbWluaW11bVRodW1iU2l6ZSA9IDQwOwogc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHRodW1iU2l6ZSA9IDY7CiBzdGF0aWMgY29uc3QgZG91YmxlIHNjcm9sbGJhck9wYWNp
dHkgPSAwLjg7Ci1zdGF0aWMgY29uc3QgQ29sb3Igc2Nyb2xsYmFyQmFja2dyb3VuZENvbG9yID0g
bWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOwotc3RhdGljIGNvbnN0IENvbG9yIHNjcm9s
bGJhckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyMCwgMjIzLCAyMjcpOwotc3RhdGlj
IGNvbnN0IENvbG9yIG92ZXJsYXlUaHVtYkJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1
NSwgMjU1LCAyNTUsIDEwMCk7Ci1zdGF0aWMgY29uc3QgQ29sb3Igb3ZlcmxheVRodW1iQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoNDYsIDUyLCA1NCwgMTAwKTsKLXN0YXRpYyBjb25zdCBDb2xvciB0
aHVtYkhvdmVyZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcig4NiwgOTEsIDkyKTsKLXN0YXRpYyBj
b25zdCBDb2xvciB0aHVtYlByZXNzZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNywgMTA2LCAy
MDMpOwotc3RhdGljIGNvbnN0IENvbG9yIHRodW1iQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTI2
LCAxMjksIDEzMCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2Nyb2xsYmFyQmFja2dyb3VuZENv
bG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOworc3RhdGljIGNvbnN0ZXhwciBh
dXRvIHNjcm9sbGJhckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyMCwgMjIzLCAyMjcp
Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIG92ZXJsYXlUaHVtYkJvcmRlckNvbG9yID0gbWFrZVNp
bXBsZUNvbG9yKDI1NSwgMjU1LCAyNTUsIDEwMCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gb3Zl
cmxheVRodW1iQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoNDYsIDUyLCA1NCwgMTAwKTsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byB0aHVtYkhvdmVyZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcig4Niwg
OTEsIDkyKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB0aHVtYlByZXNzZWRDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigyNywgMTA2LCAyMDMpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRodW1iQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMTI2LCAxMjksIDEzMCk7CiAKIGJvb2wgU2Nyb2xsYmFyVGhl
bWVBZHdhaXRhOjp1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdAogewpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNpb24gMjY0MDMxKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw4ICszNiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNv
bnN0ZXhwciBTaW1wbGVDb2xvciBsaWdodGVuZWRCbGFjayB7IDB4RkY1NDU0NTQgfTsKLXN0YXRp
YyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgZGFya2VuZWRXaGl0ZSB7IDB4RkZBQkFCQUIgfTsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBsaWdodGVuZWRCbGFjayA9IG1ha2VTaW1wbGVDb2xvcig4NCwg
ODQsIDg0KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBkYXJrZW5lZFdoaXRlID0gbWFrZVNpbXBs
ZUNvbG9yKDE3MSwgMTcxLCAxNzEpOwogCiBDb2xvcjo6Q29sb3IoY29uc3QgQ29sb3ImIG90aGVy
KQogICAgIDogbV9jb2xvckRhdGEob3RoZXIubV9jb2xvckRhdGEpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI2NDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2
MywxNCArMTYzLDE0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBvcGVyYXRvciBEMkQx
X1ZFQ1RPUl80RigpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBzdGF0aWMgY29uc3RleHByIFNpbXBs
ZUNvbG9yIGJsYWNrIHsgMHhGRjAwMDAwMCB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxl
Q29sb3Igd2hpdGUgeyAweEZGRkZGRkZGIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVD
b2xvciBkYXJrR3JheSB7IDB4RkY4MDgwODAgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIFNpbXBs
ZUNvbG9yIGdyYXkgeyAweEZGQTBBMEEwIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVD
b2xvciBsaWdodEdyYXkgeyAweEZGQzBDMEMwIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBTaW1w
bGVDb2xvciB0cmFuc3BhcmVudCB7IDB4MDAwMDAwMDAgfTsKLSAgICBzdGF0aWMgY29uc3RleHBy
IFNpbXBsZUNvbG9yIGN5YW4geyAweEZGMDBGRkZGIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBT
aW1wbGVDb2xvciB5ZWxsb3cgeyAweEZGRkZGRjAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGJsYWNrID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDApOworICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byB3aGl0ZSA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1KTsKKyAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gZGFya0dyYXkgPSBtYWtlU2ltcGxlQ29sb3IoMTI4LCAxMjgsIDEy
OCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGdyYXkgPSBtYWtlU2ltcGxlQ29sb3IoMTYw
LCAxNjAsIDE2MCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGxpZ2h0R3JheSA9IG1ha2VT
aW1wbGVDb2xvcigxOTIsIDE5MiwgMTkyKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gdHJh
bnNwYXJlbnQgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMCk7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGN5YW4gPSBtYWtlU2ltcGxlQ29sb3IoMCwgMjU1LCAyNTUpOworICAgIHN0YXRp
YyBjb25zdGV4cHIgYXV0byB5ZWxsb3cgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDApOwog
CiAgICAgYm9vbCBpc0V4dGVuZGVkKCkgY29uc3QgeyByZXR1cm4gIShtX2NvbG9yRGF0YS5zaW1w
bGVDb2xvckFuZEZsYWdzICYgaW52YWxpZFNpbXBsZUNvbG9yKTsgfQogICAgIGJvb2wgaXNTaW1w
bGUoKSBjb25zdCB7IHJldHVybiAhaXNFeHRlbmRlZCgpOyB9CkBAIC0zMDEsMTIgKzMwMSwxMiBA
QCBpbmxpbmUgY29uc3QgRXh0ZW5kZWRDb2xvciYgQ29sb3I6OmFzRXh0CiBpbmxpbmUgY29uc3Qg
U2ltcGxlQ29sb3IgQ29sb3I6OmFzU2ltcGxlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNTaW1w
bGUoKSk7Ci0gICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fY29sb3JEYXRhLnNp
bXBsZUNvbG9yQW5kRmxhZ3MgPj4gMzIpIH07CisgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcihh
c1NSR0JBKFBhY2tlZDo6UkdCQSB7IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2NvbG9yRGF0YS5z
aW1wbGVDb2xvckFuZEZsYWdzID4+IDMyKSB9KSk7CiB9CiAKIGlubGluZSB2b2lkIENvbG9yOjpz
ZXRTaW1wbGVDb2xvcihTaW1wbGVDb2xvciBzaW1wbGVDb2xvcikKIHsKLSAgICBtX2NvbG9yRGF0
YS5zaW1wbGVDb2xvckFuZEZsYWdzID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpbXBsZUNvbG9y
LnZhbHVlKCkpIDw8IDMyOworICAgIG1fY29sb3JEYXRhLnNpbXBsZUNvbG9yQW5kRmxhZ3MgPSBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oUGFja2VkOjpSR0JBIHsgc2ltcGxlQ29sb3IuYXNTUkdCQTx1
aW50OF90PigpIH0udmFsdWUpIDw8IDMyOwogICAgIHRhZ0FzVmFsaWQoKTsKIH0KIApAQCAtMzUw
LDcgKzM1MCw3IEBAIHZvaWQgQ29sb3I6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb24KICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgZW5jb2RlIHdoZXRoZXIgdGhlIGNvbG9yIGlzIHNlbWFu
dGljLgogCiAgICAgZW5jb2RlciA8PCB0cnVlOwotICAgIGVuY29kZXIgPDwgYXNTaW1wbGUoKS52
YWx1ZSgpOworICAgIGVuY29kZXIgPDwgUGFja2VkOjpSR0JBIHsgYXNTaW1wbGUoKS5hc1NSR0JB
PHVpbnQ4X3Q+KCkgfS52YWx1ZTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTM5
MCw3ICszOTAsNyBAQCBPcHRpb25hbDxDb2xvcj4gQ29sb3I6OmRlY29kZShEZWNvZGVyJiBkCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKLSAgICByZXR1cm4gQ29sb3IgeyBTaW1wbGVDb2xvciB7IHZhbHVlIH0gfTsKKyAgICBy
ZXR1cm4gQ29sb3IgeyBtYWtlU2ltcGxlQ29sb3IoYXNTUkdCQShQYWNrZWQ6OlJHQkEgeyB2YWx1
ZSB9KSkgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCbGVuZGluZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCbGVuZGluZy5jcHAJKHJldmlzaW9u
IDI2NDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgQ29sb3IgYmxlbmQoY29u
c3QgQ29sb3ImIGZyb20sIGNvbnN0IENvbAogICAgIGF1dG8gcHJlbXVsdGlwbGllZEZyb20gPSBw
cmVtdWx0aXBsaWVkQ2VpbGluZyhmcm9tLnRvU1JHQkFMb3NzeTx1aW50OF90PigpKTsKICAgICBh
dXRvIHByZW11bHRpcGxpZWRUbyA9IHByZW11bHRpcGxpZWRDZWlsaW5nKHRvLnRvU1JHQkFMb3Nz
eTx1aW50OF90PigpKTsKIAotICAgIGF1dG8gcHJlbXVsdGlwbGllZEJsZW5kZWQgPSBjb252ZXJ0
VG9Db21wb25lbnRCeXRlczxTUkdCQT4oCisgICAgYXV0byBwcmVtdWx0aXBsaWVkQmxlbmRlZCA9
IGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4oCiAgICAgICAgIFdlYkNvcmU6OmJsZW5kKHBy
ZW11bHRpcGxpZWRGcm9tLnJlZCwgcHJlbXVsdGlwbGllZFRvLnJlZCwgcHJvZ3Jlc3MpLAogICAg
ICAgICBXZWJDb3JlOjpibGVuZChwcmVtdWx0aXBsaWVkRnJvbS5ncmVlbiwgcHJlbXVsdGlwbGll
ZFRvLmdyZWVuLCBwcm9ncmVzcyksCiAgICAgICAgIFdlYkNvcmU6OmJsZW5kKHByZW11bHRpcGxp
ZWRGcm9tLmJsdWUsIHByZW11bHRpcGxpZWRUby5ibHVlLCBwcm9ncmVzcyksCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCShyZXZpc2lvbiAy
NjQwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI0MCwxNiArMjQwLDQ0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGNvbnN0ZXhwciBib29sIG9wZXIKIAogLy8gUGFja2VkIENvbG9yIEZvcm1hdHMKIAorbmFtZXNw
YWNlIFBhY2tlZCB7CisKK3N0cnVjdCBSR0JBIHsKKyAgICBjb25zdGV4cHIgZXhwbGljaXQgUkdC
QSh1aW50MzJfdCByZ2JhKQorICAgICAgICA6IHZhbHVlIHsgcmdiYSB9CisgICAgeworICAgIH0K
KworICAgIGNvbnN0ZXhwciBleHBsaWNpdCBSR0JBKFNSR0JBPHVpbnQ4X3Q+IGNvbG9yKQorICAg
ICAgICA6IHZhbHVlIHsgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNvbG9yLnJlZCA8PCAyNCB8IGNv
bG9yLmdyZWVuIDw8IDE2IHwgY29sb3IuYmx1ZSA8PCA4IHwgY29sb3IuYWxwaGEpIH0KKyAgICB7
CisgICAgfQorCisgICAgdWludDMyX3QgdmFsdWU7Cit9OworCiBzdHJ1Y3QgQVJHQiB7CisgICAg
Y29uc3RleHByIGV4cGxpY2l0IEFSR0IodWludDMyX3QgYXJnYikKKyAgICAgICAgOiB2YWx1ZSB7
IGFyZ2IgfQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgZXhwbGljaXQgQVJHQihTUkdC
QTx1aW50OF90PiBjb2xvcikKKyAgICAgICAgOiB2YWx1ZSB7IHN0YXRpY19jYXN0PHVpbnQzMl90
Pihjb2xvci5hbHBoYSA8PCAyNCB8IGNvbG9yLnJlZCA8PCAxNiB8IGNvbG9yLmdyZWVuIDw8IDgg
fCBjb2xvci5ibHVlKSB9CisgICAgeworICAgIH0KKwogICAgIHVpbnQzMl90IHZhbHVlOwogfTsK
IAotY29uc3RleHByIEFSR0IgYXNBUkdCKFNSR0JBPHVpbnQ4X3Q+IGNvbG9yKQorfQorCitjb25z
dGV4cHIgU1JHQkE8dWludDhfdD4gYXNTUkdCQShQYWNrZWQ6OlJHQkEgY29sb3IpCiB7Ci0gICAg
cmV0dXJuIHsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbG9yLmFscGhhIDw8IDI0IHwgY29sb3Iu
cmVkIDw8IDE2IHwgY29sb3IuZ3JlZW4gPDwgOCB8IGNvbG9yLmJsdWUpIH07CisgICAgcmV0dXJu
IHsgc3RhdGljX2Nhc3Q8dWludDhfdD4oY29sb3IudmFsdWUgPj4gMjQpLCBzdGF0aWNfY2FzdDx1
aW50OF90Pihjb2xvci52YWx1ZSA+PiAxNiksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGNvbG9yLnZh
bHVlID4+IDgpLCBzdGF0aWNfY2FzdDx1aW50OF90Pihjb2xvci52YWx1ZSkgfTsKIH0KIAotY29u
c3RleHByIFNSR0JBPHVpbnQ4X3Q+IGFzU1JHQkEoQVJHQiBjb2xvcikKK2NvbnN0ZXhwciBTUkdC
QTx1aW50OF90PiBhc1NSR0JBKFBhY2tlZDo6QVJHQiBjb2xvcikKIHsKICAgICByZXR1cm4geyBz
dGF0aWNfY2FzdDx1aW50OF90Pihjb2xvci52YWx1ZSA+PiAxNiksIHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KGNvbG9yLnZhbHVlID4+IDgpLCBzdGF0aWNfY2FzdDx1aW50OF90Pihjb2xvci52YWx1ZSks
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGNvbG9yLnZhbHVlID4+IDI0KSB9OwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNw
cAkocmV2aXNpb24gMjY0MDMxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIFNSR0JB
PHVpbnQ4X3Q+IHByZW11bHRpcGxpZWRGbG9vcmluZyhTUkcKICAgICAgICAgcmV0dXJuIHsgMCwg
MCwgMCwgMCB9OwogICAgIGlmIChhID09IDI1NSkKICAgICAgICAgcmV0dXJuIGNvbG9yOwotICAg
IHJldHVybiBjb252ZXJ0VG9Db21wb25lbnRCeXRlczxTUkdCQT4oZmFzdERpdmlkZUJ5MjU1KHIg
KiBhKSwgZmFzdERpdmlkZUJ5MjU1KGcgKiBhKSwgZmFzdERpdmlkZUJ5MjU1KGIgKiBhKSwgYSk7
CisgICAgcmV0dXJuIGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4oZmFzdERpdmlkZUJ5MjU1
KHIgKiBhKSwgZmFzdERpdmlkZUJ5MjU1KGcgKiBhKSwgZmFzdERpdmlkZUJ5MjU1KGIgKiBhKSwg
YSk7CiB9CiAKIFNSR0JBPHVpbnQ4X3Q+IHByZW11bHRpcGxpZWRDZWlsaW5nKFNSR0JBPHVpbnQ4
X3Q+IGNvbG9yKQpAQCAtODksNyArODksNyBAQCBTUkdCQTx1aW50OF90PiBwcmVtdWx0aXBsaWVk
Q2VpbGluZyhTUkdCCiAgICAgICAgIHJldHVybiB7IDAsIDAsIDAsIDAgfTsKICAgICBpZiAoYSA9
PSAyNTUpCiAgICAgICAgIHJldHVybiBjb2xvcjsKLSAgICByZXR1cm4gY29udmVydFRvQ29tcG9u
ZW50Qnl0ZXM8U1JHQkE+KGZhc3REaXZpZGVCeTI1NShyICogYSArIDI1NCksIGZhc3REaXZpZGVC
eTI1NShnICogYSArIDI1NCksIGZhc3REaXZpZGVCeTI1NShiICogYSArIDI1NCksIGEpOworICAg
IHJldHVybiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KGZhc3REaXZpZGVCeTI1NShyICog
YSArIDI1NCksIGZhc3REaXZpZGVCeTI1NShnICogYSArIDI1NCksIGZhc3REaXZpZGVCeTI1NShi
ICogYSArIDI1NCksIGEpOwogfQogCiBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHVucHJlbXVsdGlw
bGllZENvbXBvbmVudEJ5dGUodWludDhfdCBjLCB1aW50OF90IGEpCkBAIC0xMDIsNyArMTAyLDcg
QEAgU1JHQkE8dWludDhfdD4gdW5wcmVtdWx0aXBsaWVkKFNSR0JBPHVpbgogICAgIGF1dG8gW3Is
IGcsIGIsIGFdID0gY29sb3I7CiAgICAgaWYgKCFhIHx8IGEgPT0gMjU1KQogICAgICAgICByZXR1
cm4gY29sb3I7Ci0gICAgcmV0dXJuIGNvbnZlcnRUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPih1bnBy
ZW11bHRpcGxpZWRDb21wb25lbnRCeXRlKHIsIGEpLCB1bnByZW11bHRpcGxpZWRDb21wb25lbnRC
eXRlKGcsIGEpLCB1bnByZW11bHRpcGxpZWRDb21wb25lbnRCeXRlKGIsIGEpLCBhKTsKKyAgICBy
ZXR1cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPih1bnByZW11bHRpcGxpZWRDb21wb25l
bnRCeXRlKHIsIGEpLCB1bnByZW11bHRpcGxpZWRDb21wb25lbnRCeXRlKGcsIGEpLCB1bnByZW11
bHRpcGxpZWRDb21wb25lbnRCeXRlKGIsIGEpLCBhKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRp
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
clV0aWxpdGllcy5oCShyZXZpc2lvbiAyNjQwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCwx
NiBAQCBpbmxpbmUgdWludDhfdCBjb252ZXJ0VG9Db21wb25lbnRCeXRlKGZsCiAgICAgcmV0dXJu
IHN0ZDo6Y2xhbXAoc3RkOjpscm91bmQoZiAqIDI1NS4wZiksIDBsLCAyNTVsKTsKIH0KIAorY29u
c3RleHByIHVpbnQ4X3QgY2xhbXBUb0NvbXBvbmVudEJ5dGUoaW50IGMpCit7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoYywgMCwgMHhGRikpOworfQorCitjb25z
dGV4cHIgdWludDhfdCBjbGFtcFRvQ29tcG9uZW50RmxvYXQoZmxvYXQgZikKK3sKKyAgICByZXR1
cm4gc3RkOjpjbGFtcChmLCAwLjBmLCAxLjBmKTsKK30KKwogY29uc3RleHByIGZsb2F0IGNvbnZl
cnRUb0NvbXBvbmVudEZsb2F0KHVpbnQ4X3QgYnl0ZSkKIHsKICAgICByZXR1cm4gYnl0ZSAvIDI1
NS4wZjsKQEAgLTY1LDIwICs3NSwyMCBAQCB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlw
ZW5hbWUgQ29sCiAgICAgcmV0dXJuIHsgY29udmVydFRvQ29tcG9uZW50Qnl0ZShjb21wb25lbnRz
WzBdKSwgY29udmVydFRvQ29tcG9uZW50Qnl0ZShjb21wb25lbnRzWzFdKSwgY29udmVydFRvQ29t
cG9uZW50Qnl0ZShjb21wb25lbnRzWzJdKSwgY29udmVydFRvQ29tcG9uZW50Qnl0ZShjb21wb25l
bnRzWzNdKSB9OwogfQogCi10ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29s
b3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlPHVpbnQ4X3Q+IGNvbnZlcnRUb0NvbXBvbmVudEJ5
dGVzKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKQotewotICAgIHJldHVybiB7IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAociwgMCwgMHhGRikpLCBzdGF0aWNfY2FzdDx1aW50OF90
PihzdGQ6OmNsYW1wKGcsIDAsIDB4RkYpKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFt
cChiLCAwLCAweEZGKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoYSwgMCwgMHhG
RikpIH07Ci19Ci0KIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5
cGU+IGNvbnN0ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0cyhj
b25zdCBDb2xvclR5cGU8dWludDhfdD4mIGNvbG9yKQogewogICAgIGF1dG8gY29tcG9uZW50cyA9
IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKTsKICAgICByZXR1cm4geyBjb252ZXJ0VG9Db21wb25l
bnRGbG9hdChjb21wb25lbnRzWzBdKSwgY29udmVydFRvQ29tcG9uZW50RmxvYXQoY29tcG9uZW50
c1sxXSksIGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0KGNvbXBvbmVudHNbMl0pLCBjb252ZXJ0VG9D
b21wb25lbnRGbG9hdChjb21wb25lbnRzWzNdKSB9OwogfQogCi10ZW1wbGF0ZTx0ZW1wbGF0ZTx0
eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlPGZsb2F0PiBj
b252ZXJ0VG9Db21wb25lbnRGbG9hdHMoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQg
YSkKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0
ZXhwciBDb2xvclR5cGU8dWludDhfdD4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzKGludCByLCBpbnQg
ZywgaW50IGIsIGludCBhKQoreworICAgIHJldHVybiB7IGNsYW1wVG9Db21wb25lbnRCeXRlKHIp
LCBjbGFtcFRvQ29tcG9uZW50Qnl0ZShnKSwgY2xhbXBUb0NvbXBvbmVudEJ5dGUoYiksIGNsYW1w
VG9Db21wb25lbnRCeXRlKGEpIH07Cit9CisKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0
eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNsYW1wVG9Db21w
b25lbnRGbG9hdHMoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKIHsKLSAgICBy
ZXR1cm4geyBzdGQ6OmNsYW1wKHIsIDAuMGYsIDEuMGYpLCBzdGQ6OmNsYW1wKGcsIDAuMGYsIDEu
MGYpLCBzdGQ6OmNsYW1wKGIsIDAuMGYsIDEuMGYpLCBzdGQ6OmNsYW1wKGEsIDAuMGYsIDEuMGYp
IH07CisgICAgcmV0dXJuIHsgY2xhbXBUb0NvbXBvbmVudEZsb2F0KHIpLCBjbGFtcFRvQ29tcG9u
ZW50RmxvYXQoZyksIGNsYW1wVG9Db21wb25lbnRGbG9hdChiKSwgY2xhbXBUb0NvbXBvbmVudEZs
b2F0KGEpIH07CiB9CiAKIGNvbnN0ZXhwciB1aW50MTZfdCBmYXN0TXVsdGlwbHlCeTI1NSh1aW50
MTZfdCB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QmFja2luZ1N0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAkocmV2aXNpb24gMjY0MDMxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFhKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gcGl4ZWwgPSBhc1NSR0JBKEFSR0IgeyAqZGVzdCB9
KTsKKyAgICAgICAgYXV0byBwaXhlbCA9IGFzU1JHQkEoUGFja2VkOjpBUkdCIHsgKmRlc3QgfSk7
CiAKICAgICAgICAgaWYgKGEgPj0gMjU1IHx8ICFwaXhlbC5hbHBoYSkgewogICAgICAgICAgICAg
c2V0UGl4ZWwoZGVzdCwgciwgZywgYiwgYSk7CkBAIC0xNzQsNyArMTc0LDcgQEAgcHVibGljOgog
ICAgICAgICBpZiAoIW1fcHJlbXVsdGlwbHlBbHBoYSkKICAgICAgICAgICAgIHJlc3VsdCA9IHVu
cHJlbXVsdGlwbGllZChyZXN1bHQpOwogCi0gICAgICAgICpkZXN0ID0gYXNBUkdCKHJlc3VsdCku
dmFsdWU7CisgICAgICAgICpkZXN0ID0gUGFja2VkOjpBUkdCIHsgcmVzdWx0IH0udmFsdWU7CiAg
ICAgfQogCiAgICAgc3RhdGljIGJvb2wgaXNPdmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQpA
QCAtMjMxLDcgKzIzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChtX3ByZW11bHRpcGx5QWxw
aGEgJiYgYSA8IDI1NSkKICAgICAgICAgICAgIHJlc3VsdCA9IHByZW11bHRpcGxpZWRGbG9vcmlu
ZyhyZXN1bHQpOwogCi0gICAgICAgIHJldHVybiBhc0FSR0IocmVzdWx0KS52YWx1ZTsKKyAgICAg
ICAgcmV0dXJuIFBhY2tlZDo6QVJHQiB7IHJlc3VsdCB9LnZhbHVlOwogICAgIH0KIAogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3BpeGVsczsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuaAkocmV2aXNpb24gMjY0
MDMxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMzIsMzggKzMyLDMzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotLy8gQ29sb3IgdmFsdWUgd2l0aCA4LWJpdCBjb21wb25lbnRzIGZvciByZWQsIGdyZWVuLCBi
bHVlLCBhbmQgYWxwaGEuCi0vLyBGb3IgaGlzdG9yaWNhbCByZWFzb25zLCBzdG9yZWQgYXMgYSAz
Mi1iaXQgaW50ZWdlciwgd2l0aCBhbHBoYSBpbiB0aGUgaGlnaCBiaXRzOiBBUkdCLgogY2xhc3Mg
U2ltcGxlQ29sb3IgewogcHVibGljOgotICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvcih1aW50MzJf
dCB2YWx1ZSA9IDApIDogbV92YWx1ZSB7IHZhbHVlIH0geyB9Ci0gICAgY29uc3RleHByIFNpbXBs
ZUNvbG9yKHVpbnQ4X3QgciwgdWludDhfdCBnLCB1aW50OF90IGIsIHVpbnQ4X3QgYSkgOiBtX3Zh
bHVlIHsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGEgPDwgMjQgfCByIDw8IDE2IHwgZyA8PCA4IHwg
YikgfSB7IH0KKyAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IoKSA6IG1fdmFsdWUgeyB9IHsgfQor
ICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvcih1aW50OF90IHIsIHVpbnQ4X3QgZywgdWludDhfdCBi
LCB1aW50OF90IGEpIDogbV92YWx1ZSB7IHIsIGcsIGIsIGEgfSB7IH0KIAotICAgIGNvbnN0ZXhw
ciB1aW50MzJfdCB2YWx1ZUFzQVJHQigpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KLSAgICBj
b25zdGV4cHIgdWludDMyX3QgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAg
Y29uc3RleHByIHVpbnQ4X3QgYWxwaGFDb21wb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVl
LmFscGhhOyB9CisgICAgY29uc3RleHByIGZsb2F0IGFscGhhQ29tcG9uZW50QXNGbG9hdCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0KG1fdmFsdWUuYWxwaGEpOyB9CiAK
LSAgICBjb25zdGV4cHIgdWludDhfdCBhbHBoYUNvbXBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWUgPj4gMjQ7IH0KLSAgICBjb25zdGV4cHIgZmxvYXQgYWxwaGFDb21wb25lbnRBc0Zsb2F0
KCkgY29uc3QgeyByZXR1cm4gY29udmVydFRvQ29tcG9uZW50RmxvYXQoYWxwaGFDb21wb25lbnQo
KSk7IH0KLQotICAgIGNvbnN0ZXhwciBib29sIGlzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gYWxw
aGFDb21wb25lbnQoKSA9PSAweEZGOyB9Ci0gICAgY29uc3RleHByIGJvb2wgaXNWaXNpYmxlKCkg
Y29uc3QgeyByZXR1cm4gYWxwaGFDb21wb25lbnQoKTsgfQorICAgIGNvbnN0ZXhwciBib29sIGlz
T3BhcXVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5hbHBoYSA9PSAweEZGOyB9CisgICAgY29u
c3RleHByIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5hbHBoYTsgfQog
CiAgICAgY29uc3RleHByIFNpbXBsZUNvbG9yIGNvbG9yV2l0aEFscGhhKHVpbnQ4X3QgYWxwaGEp
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4geyAobV92YWx1ZSAmIDB4MDBGRkZGRkYpIHwg
YWxwaGEgPDwgMjQgfTsKKyAgICAgICAgcmV0dXJuIHsgbV92YWx1ZS5yZWQsIG1fdmFsdWUuZ3Jl
ZW4sIG1fdmFsdWUuYmx1ZSwgYWxwaGEgfTsKICAgICB9CiAKICAgICBjb25zdGV4cHIgU2ltcGxl
Q29sb3IgaW52ZXJ0ZWRDb2xvcldpdGhBbHBoYSh1aW50OF90IGFscGhhKSBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dWludDhfdD4oMHhGRiAtIHJlZENvbXBvbmVu
dCgpKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oMHhGRiAtIGdyZWVuQ29tcG9uZW50KCkpLCBzdGF0
aWNfY2FzdDx1aW50OF90PigweEZGIC0gYmx1ZUNvbXBvbmVudCgpKSwgYWxwaGEgfTsKKyAgICAg
ICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dWludDhfdD4oMHhGRiAtIG1fdmFsdWUucmVkKSwgc3Rh
dGljX2Nhc3Q8dWludDhfdD4oMHhGRiAtIG1fdmFsdWUuZ3JlZW4pLCBzdGF0aWNfY2FzdDx1aW50
OF90PigweEZGIC0gbV92YWx1ZS5ibHVlKSwgYWxwaGEgfTsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgU1JHQkE8VD4gYXNTUkdCQSgpIGNvbnN0CiAgICAgewog
ICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PFQsIGZsb2F0PikKLSAgICAgICAg
ICAgIHJldHVybiB7IGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0KHJlZENvbXBvbmVudCgpKSwgY29u
dmVydFRvQ29tcG9uZW50RmxvYXQoZ3JlZW5Db21wb25lbnQoKSksIGNvbnZlcnRUb0NvbXBvbmVu
dEZsb2F0KGJsdWVDb21wb25lbnQoKSksICBjb252ZXJ0VG9Db21wb25lbnRGbG9hdChhbHBoYUNv
bXBvbmVudCgpKSB9OworICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0
cyhtX3ZhbHVlKTsKICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PFQs
IHVpbnQ4X3Q+KQotICAgICAgICAgICAgcmV0dXJuIHsgcmVkQ29tcG9uZW50KCksIGdyZWVuQ29t
cG9uZW50KCksIGJsdWVDb21wb25lbnQoKSwgYWxwaGFDb21wb25lbnQoKSB9OworICAgICAgICAg
ICAgcmV0dXJuIG1fdmFsdWU7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8c3RkOjpzaXplX3QgTj4K
QEAgLTcxLDIxICs2NiwxNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0
KE4gPCA0KTsKICAgICAgICAgaWYgY29uc3RleHByICghTikKLSAgICAgICAgICAgIHJldHVybiBy
ZWRDb21wb25lbnQoKTsKKyAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLnJlZDsKICAgICAgICAg
ZWxzZSBpZiBjb25zdGV4cHIgKE4gPT0gMSkKLSAgICAgICAgICAgIHJldHVybiBncmVlbkNvbXBv
bmVudCgpOworICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUuZ3JlZW47CiAgICAgICAgIGVsc2Ug
aWYgY29uc3RleHByIChOID09IDIpCi0gICAgICAgICAgICByZXR1cm4gYmx1ZUNvbXBvbmVudCgp
OworICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUuYmx1ZTsKICAgICAgICAgZWxzZSBpZiBjb25z
dGV4cHIgKE4gPT0gMykKLSAgICAgICAgICAgIHJldHVybiBhbHBoYUNvbXBvbmVudCgpOworICAg
ICAgICAgICAgcmV0dXJuIG1fdmFsdWUuYWxwaGE7CiAgICAgfQogCiBwcml2YXRlOgotICAgIGNv
bnN0ZXhwciB1aW50OF90IHJlZENvbXBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPj4g
MTY7IH0KLSAgICBjb25zdGV4cHIgdWludDhfdCBncmVlbkNvbXBvbmVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWUgPj4gODsgfQotICAgIGNvbnN0ZXhwciB1aW50OF90IGJsdWVDb21wb25lbnQo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0KLSAgICB1aW50MzJfdCBtX3ZhbHVlIHsgMCB9
OworICAgIFNSR0JBPHVpbnQ4X3Q+IG1fdmFsdWUgeyAwLCAwLCAwLCAwIH07CiB9OwogCiBib29s
IG9wZXJhdG9yPT0oU2ltcGxlQ29sb3IsIFNpbXBsZUNvbG9yKTsKQEAgLTk4LDcgKzg5LDcgQEAg
U2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yKGNvbnN0IFNSR0JBPAogCiBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KFNpbXBsZUNvbG9yIGEsIFNpbXBsZUNvbG9yIGIpCiB7Ci0gICAgcmV0dXJuIGEu
dmFsdWUoKSA9PSBiLnZhbHVlKCk7CisgICAgcmV0dXJuIGEuYXNTUkdCQTx1aW50OF90PigpID09
IGIuYXNTUkdCQTx1aW50OF90PigpOwogfQogCiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFNpbXBs
ZUNvbG9yIGEsIFNpbXBsZUNvbG9yIGIpCkBAIC0xMDYsMjQgKzk3LDI0IEBAIGlubGluZSBib29s
IG9wZXJhdG9yIT0oU2ltcGxlQ29sb3IgYSwgU2kKICAgICByZXR1cm4gIShhID09IGIpOwogfQog
Ci1jb25zdGV4cHIgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yKGludCByLCBpbnQgZywgaW50
IGIpCitjb25zdGV4cHIgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yKGNvbnN0IFNSR0JBPHVp
bnQ4X3Q+JiBzUkdCQSkKIHsKLSAgICByZXR1cm4geyBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6
OmNsYW1wKHIsIDAsIDB4RkYpKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFtcChnLCAw
LCAweEZGKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoYiwgMCwgMHhGRikpLCAw
eEZGIH07CisgICAgcmV0dXJuIHsgc1JHQkEucmVkLCBzUkdCQS5ncmVlbiwgc1JHQkEuYmx1ZSwg
c1JHQkEuYWxwaGEgfTsKIH0KIAotY29uc3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xv
cihpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKK2lubGluZSBTaW1wbGVDb2xvciBtYWtlU2lt
cGxlQ29sb3IoY29uc3QgU1JHQkE8ZmxvYXQ+JiBzUkdCQSkKIHsKLSAgICByZXR1cm4geyBzdGF0
aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1wKHIsIDAsIDB4RkYpKSwgc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oc3RkOjpjbGFtcChnLCAwLCAweEZGKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6
Y2xhbXAoYiwgMCwgMHhGRikpLCBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1wKGEsIDAs
IDB4RkYpKSB9OworICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoY29udmVydFRvQ29tcG9uZW50
Qnl0ZXMoc1JHQkEpKTsKIH0KIAotY29uc3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xv
cihjb25zdCBTUkdCQTx1aW50OF90PiYgc1JHQkEpCitjb25zdGV4cHIgU2ltcGxlQ29sb3IgbWFr
ZVNpbXBsZUNvbG9yKGludCByLCBpbnQgZywgaW50IGIpCiB7Ci0gICAgcmV0dXJuIHsgc1JHQkEu
cmVkLCBzUkdCQS5ncmVlbiwgc1JHQkEuYmx1ZSwgc1JHQkEuYWxwaGEgfTsKKyAgICByZXR1cm4g
bWFrZVNpbXBsZUNvbG9yKGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4ociwgZywgYiwgMHhG
RikpOwogfQogCi1pbmxpbmUgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yKGNvbnN0IFNSR0JB
PGZsb2F0PiYgc1JHQkEpCitjb25zdGV4cHIgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yKGlu
dCByLCBpbnQgZywgaW50IGIsIGludCBhKQogewotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3Io
Y29udmVydFRvQ29tcG9uZW50Qnl0ZXMoc1JHQkEpKTsKKyAgICByZXR1cm4gbWFrZVNpbXBsZUNv
bG9yKGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4ociwgZywgYiwgYSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAJKHJldmlzaW9uIDI2NDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDkgKzg0LDkgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6
OmRyYXdSZXBhaW50SW5kaWNhdAogICAgIGNvbnN0IGZsb2F0IHZlcnRpY2FsTWFyZ2luID0gMi41
OwogICAgIGNvbnN0IGZsb2F0IGhvcml6b250YWxNYXJnaW4gPSA1OwogICAgIGNvbnN0IHVuc2ln
bmVkIGZvbnRTaXplID0gMjI7Ci0gICAgY29uc3RleHByIGF1dG8gYmFja2dyb3VuZENvbG9yID0g
bWFrZVNpbXBsZUNvbG9yKDEyOCwgNjQsIDI1NSwgMjU1KTsKLSAgICBjb25zdGV4cHIgYXV0byBh
Y2NlbGVyYXRlZENvbnRleHRMYWJlbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCwg
MjU1KTsKLSAgICBjb25zdGV4cHIgYXV0byB1bmFjY2VsZXJhdGVkQ29udGV4dExhYmVsQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSwgMjU1KTsKKyAgICBjb25zdGV4cHIgYXV0
byBiYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTI4LCA2NCwgMjU1KTsKKyAgICBj
b25zdGV4cHIgYXV0byBhY2NlbGVyYXRlZENvbnRleHRMYWJlbENvbG9yID0gbWFrZVNpbXBsZUNv
bG9yKDI1NSwgMCwgMCk7CisgICAgY29uc3RleHByIGF1dG8gdW5hY2NlbGVyYXRlZENvbnRleHRM
YWJlbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAyNTUpOwogICAgIGNvbnN0ZXhw
ciBhdXRvIGxpbmVhckdseXBoTWFza091dGxpbmVDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAw
LCAwLCAxOTIpOwogICAgIGNvbnN0ZXhwciBhdXRvIGRpc3BsYXlMaXN0Qm9yZGVyQ29sb3IgPSBt
YWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMTY2KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcAkocmV2aXNpb24gMjY0MDMx
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw5ICs4MCw5
IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQKICAgICAgICAgdW5z
aWduZWQqIHJvdyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4oZGF0YVNyYyArIHN0
cmlkZSAqIHkpOwogICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IG1fbG9naWNhbFNpemUud2lk
dGgoKTsgeCsrKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCogcGl4ZWwgPSByb3cgKyB4OwotICAg
ICAgICAgICAgYXV0byBwaXhlbENvbXBvbmVudHMgPSB1bnByZW11bHRpcGxpZWQoYXNTUkdCQShB
UkdCIHsgKnBpeGVsIH0pKTsKKyAgICAgICAgICAgIGF1dG8gcGl4ZWxDb21wb25lbnRzID0gdW5w
cmVtdWx0aXBsaWVkKGFzU1JHQkEoUGFja2VkOjpBUkdCIHsgKnBpeGVsIH0pKTsKICAgICAgICAg
ICAgIHBpeGVsQ29tcG9uZW50cyA9IHsgbG9va1VwVGFibGVbcGl4ZWxDb21wb25lbnRzLnJlZF0s
IGxvb2tVcFRhYmxlW3BpeGVsQ29tcG9uZW50cy5ncmVlbl0sIGxvb2tVcFRhYmxlW3BpeGVsQ29t
cG9uZW50cy5ibHVlXSwgcGl4ZWxDb21wb25lbnRzLmFscGhhIH07Ci0gICAgICAgICAgICAqcGl4
ZWwgPSBhc0FSR0IocHJlbXVsdGlwbGllZENlaWxpbmcocGl4ZWxDb21wb25lbnRzKSkudmFsdWU7
CisgICAgICAgICAgICAqcGl4ZWwgPSBQYWNrZWQ6OkFSR0IgeyBwcmVtdWx0aXBsaWVkQ2VpbGlu
ZyhwaXhlbENvbXBvbmVudHMpIH0udmFsdWU7CiAgICAgICAgIH0KICAgICB9CiAgICAgY2Fpcm9f
c3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZShtX3N1cmZhY2UuZ2V0KCksIDAsIDAsIG1fbG9n
aWNhbFNpemUud2lkdGgoKSwgbV9sb2dpY2FsU2l6ZS5oZWlnaHQoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJ
bWFnZUNhaXJvLmNwcAkocmV2aXNpb24gMjY0MDMxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDcgKzU0LDcgQEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoYwog
ICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAogICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJlaW50ZXJw
cmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShpbWFn
ZS5nZXQoKSkpOwotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IodW5wcmVtdWx0aXBsaWVkKGFz
U1JHQkEoQVJHQiB7ICpwaXhlbCB9KSkpOworICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IodW5w
cmVtdWx0aXBsaWVkKGFzU1JHQkEoUGFja2VkOjpBUkdCIHsgKnBpeGVsIH0pKSk7CiB9CiAKIHZv
aWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9Db2xvckNHLmNwcAkocmV2aXNpb24gMjY0MDMxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
OSwyNCArMTI5LDIyIEBAIHN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG8K
IENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYg
KGNvbG9yLmlzU2ltcGxlKCkpIHsKLSAgICAgICAgc3dpdGNoIChjb2xvci5hc1NpbXBsZSgpLnZh
bHVlKCkpIHsKLSAgICAgICAgY2FzZSBDb2xvcjo6dHJhbnNwYXJlbnQudmFsdWUoKTogeworICAg
ICAgICBzd2l0Y2ggKFBhY2tlZDo6UkdCQSB7IGNvbG9yLmFzU2ltcGxlKCkuYXNTUkdCQTx1aW50
OF90PigpIH0udmFsdWUpIHsKKyAgICAgICAgY2FzZSBQYWNrZWQ6OlJHQkEgeyBDb2xvcjo6dHJh
bnNwYXJlbnQuYXNTUkdCQTx1aW50OF90PigpIH0udmFsdWU6IHsKICAgICAgICAgICAgIHN0YXRp
YyBDR0NvbG9yUmVmIHRyYW5zcGFyZW50Q0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsKICAg
ICAgICAgICAgIHJldHVybiB0cmFuc3BhcmVudENHQ29sb3I7CiAgICAgICAgIH0KLSAgICAgICAg
Y2FzZSBDb2xvcjo6YmxhY2sudmFsdWUoKTogeworICAgICAgICBjYXNlIFBhY2tlZDo6UkdCQSB7
IENvbG9yOjpibGFjay5hc1NSR0JBPHVpbnQ4X3Q+KCkgfS52YWx1ZTogewogICAgICAgICAgICAg
c3RhdGljIENHQ29sb3JSZWYgYmxhY2tDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogICAg
ICAgICAgICAgcmV0dXJuIGJsYWNrQ0dDb2xvcjsKICAgICAgICAgfQotICAgICAgICBjYXNlIENv
bG9yOjp3aGl0ZS52YWx1ZSgpOiB7CisgICAgICAgIGNhc2UgUGFja2VkOjpSR0JBIHsgQ29sb3I6
OndoaXRlLmFzU1JHQkE8dWludDhfdD4oKSB9LnZhbHVlOiB7CiAgICAgICAgICAgICBzdGF0aWMg
Q0dDb2xvclJlZiB3aGl0ZUNHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7CiAgICAgICAgICAg
ICByZXR1cm4gd2hpdGVDR0NvbG9yOwogICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBBU1NFUlQoY29sb3IuaXNFeHRlbmRlZCgpIHx8IGNvbG9yLmFzU2ltcGxlKCkudmFsdWUoKSk7
Ci0KICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPENvbG9yLCBSZXRhaW5Q
dHI8Q0dDb2xvclJlZj4sIDMyPj4gY2FjaGU7CiAgICAgcmV0dXJuIGNhY2hlLmdldCgpLmdldChj
b2xvcikuZ2V0KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvQ29sb3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbG9yTWFjLm1tCShyZXZpc2lvbiAyNjQwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ5
LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgdXNlT2xkQXF1YUZvY3VzUmluZ0NvbG9yOwogCiBDb2xv
ciBvbGRBcXVhRm9jdXNSaW5nQ29sb3IoKQogewotICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4
RkY3REFERDkgfTsKKyAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDEyNSwgMTczLCAyMTcpOwog
fQogCiB2b2lkIHNldFVzZXNUZXN0TW9kZUZvY3VzUmluZ0NvbG9yKGJvb2wgbmV3VmFsdWUpCkBA
IC0xMjMsMTYgKzEyMywxNiBAQCBDb2xvciBzZW1hbnRpY0NvbG9yRnJvbU5TQ29sb3IoTlNDb2xv
ciAqCiBOU0NvbG9yICpuc0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAoY29s
b3IuaXNTaW1wbGUoKSkgewotICAgICAgICBzd2l0Y2ggKGNvbG9yLmFzU2ltcGxlKCkudmFsdWUo
KSkgewotICAgICAgICBjYXNlIENvbG9yOjp0cmFuc3BhcmVudC52YWx1ZSgpOiB7CisgICAgICAg
IHN3aXRjaCAoUGFja2VkOjpSR0JBIHsgY29sb3IuYXNTaW1wbGUoKS5hc1NSR0JBPHVpbnQ4X3Q+
KCkgfS52YWx1ZSkgeworICAgICAgICBjYXNlIFBhY2tlZDo6UkdCQSB7IENvbG9yOjp0cmFuc3Bh
cmVudC5hc1NSR0JBPHVpbnQ4X3Q+KCkgfS52YWx1ZTogewogICAgICAgICAgICAgc3RhdGljIE5T
Q29sb3IgKmNsZWFyQ29sb3IgPSBbW05TQ29sb3IgY29sb3JXaXRoU1JHQlJlZDowIGdyZWVuOjAg
Ymx1ZTowIGFscGhhOjBdIHJldGFpbl07CiAgICAgICAgICAgICByZXR1cm4gY2xlYXJDb2xvcjsK
ICAgICAgICAgfQotICAgICAgICBjYXNlIENvbG9yOjpibGFjay52YWx1ZSgpOiB7CisgICAgICAg
IGNhc2UgUGFja2VkOjpSR0JBIHsgQ29sb3I6OmJsYWNrLmFzU1JHQkE8dWludDhfdD4oKSB9LnZh
bHVlOiB7CiAgICAgICAgICAgICBzdGF0aWMgTlNDb2xvciAqYmxhY2tDb2xvciA9IFtbTlNDb2xv
ciBjb2xvcldpdGhTUkdCUmVkOjAgZ3JlZW46MCBibHVlOjAgYWxwaGE6MV0gcmV0YWluXTsKICAg
ICAgICAgICAgIHJldHVybiBibGFja0NvbG9yOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ29s
b3I6OndoaXRlLnZhbHVlKCk6IHsKKyAgICAgICAgY2FzZSBQYWNrZWQ6OlJHQkEgeyBDb2xvcjo6
d2hpdGUuYXNTUkdCQTx1aW50OF90PigpIH0udmFsdWU6IHsKICAgICAgICAgICAgIHN0YXRpYyBO
U0NvbG9yICp3aGl0ZUNvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MSBncmVlbjox
IGJsdWU6MSBhbHBoYToxXSByZXRhaW5dOwogICAgICAgICAgICAgcmV0dXJuIHdoaXRlQ29sb3I7
CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHRDR1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAkocmV2aXNpb24gMjY0
MDMxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dENHV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDEyICsxOTgsMTEgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdEb3RzRm9yRG9jdW1lbgogICAgIENHQ29udGV4dFJlZiBjb250
ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0
KTsKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3Igc3BlbGxpbmdQYXR0ZXJuQ29s
b3IgeyBtYWtlU2ltcGxlQ29sb3IoMjU1LCAwLCAwKSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIg
U2ltcGxlQ29sb3IgZ3JhbW1hclBhdHRlcm5Db2xvciB7IG1ha2VTaW1wbGVDb2xvcigwLCAxMjgs
IDApIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNwZWxsaW5nUGF0dGVybkNvbG9yID0g
bWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGdy
YW1tYXJQYXR0ZXJuQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMTI4LCAwKTsKIAotICAgIGNv
bnN0IFNpbXBsZUNvbG9yJiBwYXR0ZXJuQ29sb3IgPSBzdHlsZS5tb2RlID09IERvY3VtZW50TWFy
a2VyTGluZVN0eWxlOjpNb2RlOjpHcmFtbWFyID8gZ3JhbW1hclBhdHRlcm5Db2xvciA6IHNwZWxs
aW5nUGF0dGVybkNvbG9yOwotICAgIGF1dG8gcGF0dGVybkNvbG9yQ29tcG9uZW50cyA9IHBhdHRl
cm5Db2xvci5hc1NSR0JBPHVpbnQ4X3Q+KCk7Ci0gICAgQ0dDb250ZXh0U2V0UkdCU3Ryb2tlQ29s
b3IoY29udGV4dCwgcGF0dGVybkNvbG9yQ29tcG9uZW50cy5yZWQsIHBhdHRlcm5Db2xvckNvbXBv
bmVudHMuZ3JlZW4sIHBhdHRlcm5Db2xvckNvbXBvbmVudHMuYmx1ZSwgcGF0dGVybkNvbG9yQ29t
cG9uZW50cy5hbHBoYSk7CisgICAgYXV0byBbciwgZywgYiwgYV0gPSBzdHlsZS5tb2RlID09IERv
Y3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpHcmFtbWFyID8gZ3JhbW1hclBhdHRlcm5Db2xv
ciA6IHNwZWxsaW5nUGF0dGVybkNvbG9yOworICAgIENHQ29udGV4dFNldFJHQlN0cm9rZUNvbG9y
KGNvbnRleHQsIHIsIGcsIGIsIGEpOwogCiAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdXNlclRvQmFz
ZSA9IGdldFVzZXJUb0Jhc2VDVE0oY29udGV4dCk7CiAgICAgQ0dQb2ludCBwaGFzZSA9IENHUG9p
bnRBcHBseUFmZmluZVRyYW5zZm9ybShwb2ludCwgdXNlclRvQmFzZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmNwcAkocmV2aXNpb24gMjY0MDMxKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg2LDggKzg2LDggQEAgc3RhdGljIGlubGluZSBWZWN0b3I8TW9ja01lZGlhRGV2
aWNlPiBkZQogICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiU0NSRUVOLTEiX3MsICJNb2NrIHNj
cmVlbiBkZXZpY2UgMSJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZTo6U2NyZWVuLCBDb2xvcjo6bGlnaHRHcmF5LCB7IDM4NDAsIDIxNjAgfSB9IH0s
CiAgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJTQ1JFRU4tMiJfcywgIk1vY2sgc2NyZWVuIGRl
dmljZSAyIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlOjpTY3JlZW4sIENvbG9yOjp5ZWxsb3csIHsgMTkyMCwgMTA4MCB9IH0gfSwKIAotICAgICAg
ICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAxIl9zLCBNb2Nr
RGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIFNp
bXBsZUNvbG9yIHsgMHhmZmYxYjUgfSwgeyA2NDAsIDQ4MCB9IH0gfSwKLSAgICAgICAgTW9ja01l
ZGlhRGV2aWNlIHsgIldJTkRPVy0yIl9zLCAiTW9jayB3aW5kb3cgMiJfcywgTW9ja0Rpc3BsYXlQ
cm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBTaW1wbGVDb2xv
ciB7IDB4ZmZkMGI1IH0sIHsgMTI4MCwgNjAwIH0gfSB9LAorICAgICAgICBNb2NrTWVkaWFEZXZp
Y2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAxIl9zLCBNb2NrRGlzcGxheVByb3BlcnRp
ZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIG1ha2VTaW1wbGVDb2xvcigy
NTUsIDI0MSwgMTgxKSwgeyA2NDAsIDQ4MCB9IH0gfSwKKyAgICAgICAgTW9ja01lZGlhRGV2aWNl
IHsgIldJTkRPVy0yIl9zLCAiTW9jayB3aW5kb3cgMiJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVz
IHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBtYWtlU2ltcGxlQ29sb3IoMjU1
LCAyMDgsIDE4MSksIHsgMTI4MCwgNjAwIH0gfSB9LAogICAgIH07CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UuY3BwCShyZXZpc2lvbiAyNjQwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDEw
ICsyNjUsMTAgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd0FuaW1hdAogCiB2
b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3Qm94ZXMoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQogewotICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBtYWdlbnRhIHsgMHhmZmZmMDBm
ZiB9OwotICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBibHVlIHsgMHhmZjAwMDBmZiB9OwotICAg
IGNvbnN0ZXhwciBTaW1wbGVDb2xvciByZWQgeyAweGZmZmYwMDAwIH07Ci0gICAgY29uc3RleHBy
IFNpbXBsZUNvbG9yIGRhcmtHcmVlbiB7IDB4ZmYwMDgwMDAgfTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGF1dG8gbWFnZW50YSA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDI1NSk7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIGJsdWUgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMjU1KTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gcmVkID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCk7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRhcmtHcmVlbiA9IG1ha2VTaW1wbGVDb2xvcigw
LCAxMjgsIDApOwogCiAgICAgSW50U2l6ZSBzaXplID0gY2FwdHVyZVNpemUoKTsKICAgICBmbG9h
dCBib3hTaXplID0gc2l6ZS53aWR0aCgpICogLjAzNTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAJKHJldmlzaW9uIDI2
NDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVN
b2NrOjpzY3JvbGxiYXJUaGlja25lCiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRy
YWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCiB7Ci0gICAgY29udGV4dC5maWxsUmVjdCh0
cmFja1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGlnaHRHcmF5IDogU2ltcGxl
Q29sb3IgeyAweEZGRTBFMEUwIH0pOworICAgIGNvbnRleHQuZmlsbFJlY3QodHJhY2tSZWN0LCBz
Y3JvbGxiYXIuZW5hYmxlZCgpID8gQ29sb3I6OmxpZ2h0R3JheSA6IG1ha2VTaW1wbGVDb2xvcigy
MjQsIDIyNCwgMjI0KSk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRodW1i
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHRodW1iUmVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFn
SW1hZ2VXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VXaW4uY3BwCShyZXZpc2lvbiAyNjQwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3
IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKEVsZW0KICAgICBjb250ZXh0
LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJlY3QsIHJhZGlpLCByYWRpaSwgcmFk
aWksIHJhZGlpKSwgYmFja2dyb3VuZENvbG9yKTsKICAKICAgICAvLyBEcmF3IHRoZSB0ZXh0Ci0g
ICAgY29uc3RleHByIGF1dG8gdG9wQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMjU1
KTsgLy8gb3JpZ2luYWwgYWxwaGEgPSAwLjc1CisgICAgY29uc3RleHByIGF1dG8gdG9wQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCk7IC8vIG9yaWdpbmFsIGFscGhhID0gMC43NQogICAg
IGNvbnN0ZXhwciBhdXRvIGJvdHRvbUNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAy
NTUsIDEyNyk7IC8vIG9yaWdpbmFsIGFscGhhID0gMC41CiAgICAgaWYgKGRyYXdVUkxTdHJpbmcp
IHsKICAgICAgICAgaWYgKGNsaXBVUkxTdHJpbmcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAJKHJldmlzaW9uIDI2NDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHJlcGxhY2Vt
ZW50QXJyb3dDaXJjbAogCiBjb25zdGV4cHIgYXV0byByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVj
dFByZXNzZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigxMDUsIDEwNSwgMTA1LCAyNDIpOwogY29u
c3RleHByIGF1dG8gcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RDb2xvciA9IG1ha2VTaW1wbGVD
b2xvcigxMjUsIDEyNSwgMTI1LCAyNDIpOwotY29uc3RleHByIGF1dG8gcmVwbGFjZW1lbnRUZXh0
Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjQwLCAyNDAsIDI0MCwgMjU1KTsKK2NvbnN0ZXhwciBh
dXRvIHJlcGxhY2VtZW50VGV4dENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI0MCwgMjQwLCAyNDAp
OwogY29uc3RleHByIGF1dG8gdW5hdmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvciA9IG1ha2VTaW1w
bGVDb2xvcigyNTUsIDI1NSwgMjU1LCAyMTYpOwogCiBSZW5kZXJFbWJlZGRlZE9iamVjdDo6UmVu
ZGVyRW1iZWRkZWRPYmplY3QoSFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAJKHJldmlzaW9uIDI2NDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODA1LDggKzE4MDUsOCBAQCB2b2lkIFJl
bmRlck9iamVjdDo6Y2FsY3VsYXRlQm9yZGVyU3R5bGVDCiAgICAgQVNTRVJUKHN0eWxlID09IEJv
cmRlclN0eWxlOjpJbnNldCB8fCBzdHlsZSA9PSBCb3JkZXJTdHlsZTo6T3V0c2V0KTsKIAogICAg
IC8vIFRoaXMgdmFsdWVzIHdlcmUgZGVyaXZlZCBlbXBpcmljYWxseS4KLSAgICBjb25zdGV4cHIg
ZmxvYXQgYmFzZURhcmtDb2xvckx1bWluYW5jZSB7IDAuMDE0NDQzODQ0ZiB9OyAvLyBMdW1pbmFu
Y2Ugb2YgU2ltcGxlQ29sb3IgeyAweEZGMjAyMDIwIH0KLSAgICBjb25zdGV4cHIgZmxvYXQgYmFz
ZUxpZ2h0Q29sb3JMdW1pbmFuY2UgeyAwLjgzMDc3ZiB9OyAvLyBMdW1pbmFuY2Ugb2YgU2ltcGxl
Q29sb3IgeyAweEZGRUJFQkVCIH0KKyAgICBjb25zdGV4cHIgZmxvYXQgYmFzZURhcmtDb2xvckx1
bWluYW5jZSB7IDAuMDE0NDQzODQ0ZiB9OyAvLyBMdW1pbmFuY2Ugb2YgU1JHQkE8dWludDhfdD4g
eyAzMiwgMzIsIDMyIH0KKyAgICBjb25zdGV4cHIgZmxvYXQgYmFzZUxpZ2h0Q29sb3JMdW1pbmFu
Y2UgeyAwLjgzMDc3ZiB9OyAvLyBMdW1pbmFuY2Ugb2YgU1JHQkE8dWludDhfdD4geyAyMzUsIDIz
NSwgMjM1IH0KIAogICAgIGVudW0gT3BlcmF0aW9uIHsgRGFya2VuLCBMaWdodGVuIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkocmV2aXNpb24gMjY0
MDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMzNCwzMCArMTMzNCwzMCBAQCBDb2xvciBSZW5kZXJUaGVtZTo6c3lzdGVt
Q29sb3IoQ1NTVmFsdWVJCiB7CiAgICAgc3dpdGNoIChjc3NWYWx1ZUlkKSB7CiAgICAgY2FzZSBD
U1NWYWx1ZVdlYmtpdExpbms6Ci0gICAgICAgIHJldHVybiBvcHRpb25zLmNvbnRhaW5zKFN0eWxl
Q29sb3I6Ok9wdGlvbnM6OkZvclZpc2l0ZWRMaW5rKSA/IFNpbXBsZUNvbG9yIHsgMHhGRjU1MUE4
QiB9IDogU2ltcGxlQ29sb3IgeyAweEZGMDAwMEVFIH07CisgICAgICAgIHJldHVybiBvcHRpb25z
LmNvbnRhaW5zKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OkZvclZpc2l0ZWRMaW5rKSA/IG1ha2VTaW1w
bGVDb2xvcig4NSwgMjYsIDEzOSkgOiBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMjM4KTsKICAgICBj
YXNlIENTU1ZhbHVlV2Via2l0QWN0aXZlbGluazoKICAgICBjYXNlIENTU1ZhbHVlQWN0aXZldGV4
dDoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkZGMDAwMCB9OworICAgICAgICBy
ZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCk7CiAgICAgY2FzZSBDU1NWYWx1ZUxpbmt0
ZXh0OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGMDAwMEVFIH07CisgICAgICAg
IHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMjM4KTsKICAgICBjYXNlIENTU1ZhbHVlVmlz
aXRlZHRleHQ6Ci0gICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkY1NTFBOEIgfTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcig4NSwgMjYsIDEzOSk7CiAgICAgY2FzZSBDU1NW
YWx1ZUFjdGl2ZWJvcmRlcjoKICAgICAgICAgcmV0dXJuIENvbG9yOjp3aGl0ZTsKICAgICBjYXNl
IENTU1ZhbHVlQWN0aXZlYnV0dG9udGV4dDoKICAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsK
ICAgICBjYXNlIENTU1ZhbHVlQWN0aXZlY2FwdGlvbjoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNv
bG9yIHsgMHhGRkNDQ0NDQyB9OworICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDIwNCwg
MjA0LCAyMDQpOwogICAgIGNhc2UgQ1NTVmFsdWVBcHB3b3Jrc3BhY2U6CiAgICAgICAgIHJldHVy
biBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1ZUJhY2tncm91bmQ6Ci0gICAgICAgIHJl
dHVybiBTaW1wbGVDb2xvciB7IDB4RkY2MzYzQ0UgfTsKKyAgICAgICAgcmV0dXJuIG1ha2VTaW1w
bGVDb2xvcig5OSwgOTksIDIwNik7CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbmZhY2U6CiAgICAg
ICAgIHJldHVybiBDb2xvcjo6bGlnaHRHcmF5OwogICAgIGNhc2UgQ1NTVmFsdWVCdXR0b25oaWdo
bGlnaHQ6Ci0gICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkZEREREREQgfTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigyMjEsIDIyMSwgMjIxKTsKICAgICBjYXNlIENTU1Zh
bHVlQnV0dG9uc2hhZG93OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGODg4ODg4
IH07CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMTM2LCAxMzYsIDEzNik7CiAgICAg
Y2FzZSBDU1NWYWx1ZUJ1dHRvbnRleHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAg
ICAgY2FzZSBDU1NWYWx1ZUNhcHRpb250ZXh0OgpAQCAtMTM3MSw5ICsxMzcxLDkgQEAgQ29sb3Ig
UmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSQogICAgIGNhc2UgQ1NTVmFsdWVGaWVs
ZHRleHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZUdy
YXl0ZXh0OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGODA4MDgwIH07CisgICAg
ICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMTI4LCAxMjgsIDEyOCk7CiAgICAgY2FzZSBDU1NW
YWx1ZUhpZ2hsaWdodDoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkI1RDVGRiB9
OworICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDE4MSwgMjEzLCAyNTUpOwogICAgIGNh
c2UgQ1NTVmFsdWVIaWdobGlnaHR0ZXh0OgogICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwog
ICAgIGNhc2UgQ1NTVmFsdWVJbmFjdGl2ZWJvcmRlcjoKQEAgLTEzODEsOSArMTM4MSw5IEBAIENv
bG9yIFJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUkKICAgICBjYXNlIENTU1ZhbHVl
SW5hY3RpdmVjYXB0aW9uOgogICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRlOwogICAgIGNhc2Ug
Q1NTVmFsdWVJbmFjdGl2ZWNhcHRpb250ZXh0OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3Ig
eyAweEZGN0Y3RjdGIH07CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMTI3LCAxMjcs
IDEyNyk7CiAgICAgY2FzZSBDU1NWYWx1ZUluZm9iYWNrZ3JvdW5kOgotICAgICAgICByZXR1cm4g
U2ltcGxlQ29sb3IgeyAweEZGRkJGQ0M1IH07CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29s
b3IoMjUxLCAyNTIsIDE5Nyk7CiAgICAgY2FzZSBDU1NWYWx1ZUluZm90ZXh0OgogICAgICAgICBy
ZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVNZW51OgpAQCAtMTM5NSwxOSAr
MTM5NSwxOSBAQCBDb2xvciBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJCiAgICAg
Y2FzZSBDU1NWYWx1ZVRleHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2Fz
ZSBDU1NWYWx1ZVRocmVlZGRhcmtzaGFkb3c6Ci0gICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7
IDB4RkY2NjY2NjYgfTsKKyAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigxMDIsIDEwMiwg
MTAyKTsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkZmFjZToKICAgICAgICAgcmV0dXJuIENvbG9y
OjpsaWdodEdyYXk7CiAgICAgY2FzZSBDU1NWYWx1ZVRocmVlZGhpZ2hsaWdodDoKLSAgICAgICAg
cmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkRERERERCB9OworICAgICAgICByZXR1cm4gbWFrZVNp
bXBsZUNvbG9yKDIyMSwgMjIxLCAyMjEpOwogICAgIGNhc2UgQ1NTVmFsdWVUaHJlZWRsaWdodHNo
YWRvdzoKICAgICAgICAgcmV0dXJuIENvbG9yOjpsaWdodEdyYXk7CiAgICAgY2FzZSBDU1NWYWx1
ZVRocmVlZHNoYWRvdzoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjg4ODg4OCB9
OworICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDEzNiwgMTM2LCAxMzYpOwogICAgIGNh
c2UgQ1NTVmFsdWVXaW5kb3c6CiAgICAgICAgIHJldHVybiBDb2xvcjo6d2hpdGU7CiAgICAgY2Fz
ZSBDU1NWYWx1ZVdpbmRvd2ZyYW1lOgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZG
Q0NDQ0NDIH07CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMjA0LCAyMDQsIDIwNCk7
CiAgICAgY2FzZSBDU1NWYWx1ZVdpbmRvd3RleHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6Ymxh
Y2s7CiAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUFkd2FpdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUFkd2FpdGEuY3BwCShyZXZpc2lvbiAyNjQwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVBZHdhaXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUs
MTAgKzQ1LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBpbnQgdGV4
dEZpZWxkQm9yZGVyU2l6ZSA9IDE7Ci1zdGF0aWMgY29uc3QgQ29sb3IgdGV4dEZpZWxkQm9yZGVy
Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA1LCAxOTksIDE5NCk7Ci1zdGF0aWMgY29uc3QgQ29s
b3IgdGV4dEZpZWxkQm9yZGVyRGlzYWJsZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMTMsIDIw
OCwgMjA0KTsKLXN0YXRpYyBjb25zdCBDb2xvciB0ZXh0RmllbGRCYWNrZ3JvdW5kQ29sb3IgPSBt
YWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgdGV4dEZp
ZWxkQmFja2dyb3VuZERpc2FibGVkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjUyLCAyNTIsIDI1
Mik7CitzdGF0aWMgY29uc3RleHByIGF1dG8gdGV4dEZpZWxkQm9yZGVyQ29sb3IgPSBtYWtlU2lt
cGxlQ29sb3IoMjA1LCAxOTksIDE5NCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gdGV4dEZpZWxk
Qm9yZGVyRGlzYWJsZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMTMsIDIwOCwgMjA0KTsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byB0ZXh0RmllbGRCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxl
Q29sb3IoMjU1LCAyNTUsIDI1NSk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gdGV4dEZpZWxkQmFj
a2dyb3VuZERpc2FibGVkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjUyLCAyNTIsIDI1Mik7CiBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbWVudUxpc3RCdXR0b25BcnJvd1NpemUgPSAxNjsKIHN0YXRp
YyBjb25zdCBpbnQgbWVudUxpc3RCdXR0b25Gb2N1c09mZnNldCA9IC0zOwogc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG1lbnVMaXN0QnV0dG9uUGFkZGluZyA9IDU7CkBAIC01NywyMyArNTcsMjMgQEAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHByb2dyZXNzQWN0aXZpdHlCbAogc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHByb2dyZXNzQW5pbWF0aW9uRnJhbWVDb3VudCA9IDc1Owogc3RhdGljIGNvbnN0IFNl
Y29uZHMgcHJvZ3Jlc3NBbmltYXRpb25GcmFtZVJhdGUgPSAzM19tczsgLy8gMzBmcHMuCiBzdGF0
aWMgY29uc3QgdW5zaWduZWQgcHJvZ3Jlc3NCYXJTaXplID0gNjsKLXN0YXRpYyBjb25zdCBDb2xv
ciBwcm9ncmVzc0JhckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQp
Owotc3RhdGljIGNvbnN0IENvbG9yIHByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yID0gbWFrZVNp
bXBsZUNvbG9yKDIyNSwgMjIyLCAyMTkpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHByb2dyZXNz
QmFyQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA1LCAxOTksIDE5NCk7CitzdGF0aWMg
Y29uc3RleHByIGF1dG8gcHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29s
b3IoMjI1LCAyMjIsIDIxOSk7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2xpZGVyVHJhY2tTaXpl
ID0gNjsKIHN0YXRpYyBjb25zdCBpbnQgc2xpZGVyVHJhY2tCb3JkZXJTaXplID0gMTsKLXN0YXRp
YyBjb25zdCBDb2xvciBzbGlkZXJUcmFja0JvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIw
NSwgMTk5LCAxOTQpOwotc3RhdGljIGNvbnN0IENvbG9yIHNsaWRlclRyYWNrQmFja2dyb3VuZENv
bG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyNSwgMjIyLCAyMTkpOworc3RhdGljIGNvbnN0ZXhwciBh
dXRvIHNsaWRlclRyYWNrQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA1LCAxOTksIDE5
NCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyVHJhY2tCYWNrZ3JvdW5kQ29sb3IgPSBt
YWtlU2ltcGxlQ29sb3IoMjI1LCAyMjIsIDIxOSk7CiBzdGF0aWMgY29uc3QgaW50IHNsaWRlclRy
YWNrRm9jdXNPZmZzZXQgPSAyOwogc3RhdGljIGNvbnN0IGludCBzbGlkZXJUaHVtYlNpemUgPSAy
MDsKIHN0YXRpYyBjb25zdCBpbnQgc2xpZGVyVGh1bWJCb3JkZXJTaXplID0gMTsKLXN0YXRpYyBj
b25zdCBDb2xvciBzbGlkZXJUaHVtYkJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNSwg
MTk5LCAxOTQpOwotc3RhdGljIGNvbnN0IENvbG9yIHNsaWRlclRodW1iQmFja2dyb3VuZENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDI0NCwgMjQyLCAyNDEpOwotc3RhdGljIGNvbnN0IENvbG9yIHNs
aWRlclRodW1iQmFja2dyb3VuZEhvdmVyZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDgsIDI0
OCwgMjQ3KTsKLXN0YXRpYyBjb25zdCBDb2xvciBzbGlkZXJUaHVtYkJhY2tncm91bmREaXNhYmxl
ZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI0NCwgMjQyLCAyNDEpOworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIHNsaWRlclRodW1iQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA1LCAxOTks
IDE5NCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyVGh1bWJCYWNrZ3JvdW5kQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMjQ0LCAyNDIsIDI0MSk7CitzdGF0aWMgY29uc3RleHByIGF1dG8g
c2xpZGVyVGh1bWJCYWNrZ3JvdW5kSG92ZXJlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI0OCwg
MjQ4LCAyNDcpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlclRodW1iQmFja2dyb3VuZERp
c2FibGVkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjQ0LCAyNDIsIDI0MSk7CiAjaWYgRU5BQkxF
KFZJREVPKQotc3RhdGljIGNvbnN0IENvbG9yIG1lZGlhU2xpZGVyVHJhY2tCYWNrZ3JvdW5kY29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoNzcsIDc3LCA3Nyk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgbWVk
aWFTbGlkZXJUcmFja0J1ZmZlcmVkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTczLCAxNzMsIDE3
Myk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgbWVkaWFTbGlkZXJUcmFja0FjdGl2ZUNvbG9yID0gbWFr
ZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1lZGlh
U2xpZGVyVHJhY2tCYWNrZ3JvdW5kY29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoNzcsIDc3LCA3Nyk7
CitzdGF0aWMgY29uc3RleHByIGF1dG8gbWVkaWFTbGlkZXJUcmFja0J1ZmZlcmVkQ29sb3IgPSBt
YWtlU2ltcGxlQ29sb3IoMTczLCAxNzMsIDE3Myk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gbWVk
aWFTbGlkZXJUcmFja0FjdGl2ZUNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIp
OwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oR1RLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgJKHJldmlzaW9uIDI2NDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyAr
MTIxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAg
ICBDb2xvciBwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gU2ltcGxlQ29sb3IgeyAweDREMUExQTFBIH07IH0KKyAgICBDb2xvciBwbGF0Zm9ybVRhcEhp
Z2hsaWdodENvbG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDI2
LCAyNiwgMjYsIDB4NEQpOyB9CiAjZW5kaWYKIAogICAgIGJvb2wgc2hvdWxkSGF2ZVNwaW5CdXR0
b24oY29uc3QgSFRNTElucHV0RWxlbWVudCYpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQkocmV2aXNpb24gMjY0MDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC05MTcsMTAgKzkxNywxMCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dy
ZXNzQmFyKGNvCiAKICAgICBjb25zdCBmbG9hdCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uID0g
cmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldDsKICAgICBhdXRvIHN0cm9rZUdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCks
IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNh
bFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKLSAgICBzdHJv
a2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgbWFrZVNpbXBsZUNvbG9yKDB4OGQsIDB4OGQs
IDB4OGQpKTsKLSAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIG1ha2VTaW1w
bGVDb2xvcigweGVlLCAweGVlLCAweGVlKSk7Ci0gICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9y
U3RvcCgwLjU1LCBtYWtlU2ltcGxlQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwotICAgIHN0cm9r
ZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBtYWtlU2ltcGxlQ29sb3IoMHg4ZCwgMHg4ZCwg
MHg4ZCkpOworICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBtYWtlU2ltcGxl
Q29sb3IoMTQxLCAxNDEsIDE0MSkpOworICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
MC40NSwgbWFrZVNpbXBsZUNvbG9yKDIzOCwgMjM4LCAyMzgpKTsKKyAgICBzdHJva2VHcmFkaWVu
dC0+YWRkQ29sb3JTdG9wKDAuNTUsIG1ha2VTaW1wbGVDb2xvcigyMzgsIDIzOCwgMjM4KSk7Cisg
ICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIG1ha2VTaW1wbGVDb2xvcigxNDEs
IDE0MSwgMTQxKSk7CiAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKHN0cm9r
ZUdyYWRpZW50KSk7CiAKICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwpA
QCAtMTM4MywxMCArMTM4MywxMCBAQCBDb2xvciBSZW5kZXJUaGVtZUlPUzo6c3lzdGVtQ29sb3Io
Q1NTVmFsCiBjb25zdCBDR1NpemUgYXR0YWNobWVudFNpemUgPSB7IDE2MCwgMTE5IH07CiAKIGNv
bnN0IENHRmxvYXQgYXR0YWNobWVudEJvcmRlclJhZGl1cyA9IDE2OwotY29uc3RleHByIFNpbXBs
ZUNvbG9yIGF0dGFjaG1lbnRCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDQsIDIwNCwg
MjA0KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVD
b2xvcigyMDQsIDIwNCwgMjA0KTsKIHN0YXRpYyBDR0Zsb2F0IGF0dGFjaG1lbnRCb3JkZXJUaGlj
a25lc3MgPSAxOwogCi1jb25zdGV4cHIgU2ltcGxlQ29sb3IgYXR0YWNobWVudFByb2dyZXNzQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMjIyLCAyMjIsIDIyMik7Citjb25zdGV4cHIgYXV0byBhdHRh
Y2htZW50UHJvZ3Jlc3NDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMjIsIDIyMiwgMjIyKTsKIGNv
bnN0IENHRmxvYXQgYXR0YWNobWVudFByb2dyZXNzQm9yZGVyVGhpY2tuZXNzID0gMzsKIAogY29u
c3QgQ0dGbG9hdCBhdHRhY2htZW50UHJvZ3Jlc3NTaXplID0gMzY7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiAyNjQwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTczNywxMSArNzM3LDExIEBAIENvbG9yIFJlbmRlclRoZW1lTWFjOjpzeXN0ZW1Db2xvcihD
U1NWYWwKICAgICAgICAgY2FzZSBDU1NWYWx1ZVRocmVlZGZhY2U6CiAgICAgICAgICAgICAvLyBX
ZSBzZWxlY3RlZCB0aGlzIHZhbHVlIGluc3RlYWQgb2YgW05TQ29sb3IgY29udHJvbENvbG9yXSB0
byBhdm9pZCB3ZWJzaXRlIGluY29tcGF0aWJpbGl0aWVzLgogICAgICAgICAgICAgLy8gV2UgbWF5
IHdhbnQgdG8gY29uc2lkZXIgY2hhbmdpbmcgdG8gW05TQ29sb3IgY29udHJvbENvbG9yXSBzb21l
IGRheS4KLSAgICAgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkZDMEMwQzAgfTsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMTkyLCAxOTIsIDE5Mik7CiAKICAgICAg
ICAgY2FzZSBDU1NWYWx1ZUluZm9iYWNrZ3JvdW5kOgogICAgICAgICAgICAgLy8gTm8gY29ycmVz
cG9uZGluZyBOU0NvbG9yIGZvciB0aGlzIHNvIHdlIHVzZSBhIGhhcmQgY29kZWQgdmFsdWUuCi0g
ICAgICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGRkJGQ0M1IH07CisgICAgICAgICAg
ICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDI1MSwgMjUyLCAxOTcpOwogCiAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVNZW51OgogICAgICAgICAgICAgcmV0dXJuIG1lbnVCYWNrZ3JvdW5kQ29sb3IoKTsK
QEAgLTc1MCwzMCArNzUwLDMwIEBAIENvbG9yIFJlbmRlclRoZW1lTWFjOjpzeXN0ZW1Db2xvcihD
U1NWYWwKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZWJvcmRlcjoKICAgICAgICAgICAgIC8v
IEhhcmRjb2RlZCB0byBhdm9pZCBleHBvc2luZyBhIHVzZXIgYXBwZWFyYW5jZSBwcmVmZXJlbmNl
IHRvIHRoZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5nLgogICAgICAgICAgICAgaWYgKGxvY2FsQXBw
ZWFyYW5jZS51c2luZ0RhcmtBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsg
U2ltcGxlQ29sb3IgeyAweEZGMUFBOUZGIH0sIENvbG9yOjpTZW1hbnRpYyB9OwotICAgICAgICAg
ICAgcmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAweEZGMDA2N0Y0IH0sIENvbG9yOjpTZW1hbnRpYyB9
OworICAgICAgICAgICAgICAgIHJldHVybiB7IG1ha2VTaW1wbGVDb2xvcigyNiwgMTY5LCAyNTUp
LCBDb2xvcjo6U2VtYW50aWMgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1ha2VTaW1wbGVDb2xv
cigwLCAxMDMsIDI0NCksIENvbG9yOjpTZW1hbnRpYyB9OwogCiAgICAgICAgIGNhc2UgQ1NTVmFs
dWVBcHBsZVN5c3RlbUNvbnRyb2xBY2NlbnQ6CiAgICAgICAgICAgICAvLyBIYXJkY29kZWQgdG8g
YXZvaWQgZXhwb3NpbmcgYSB1c2VyIGFwcGVhcmFuY2UgcHJlZmVyZW5jZSB0byB0aGUgd2ViIGZv
ciBmaW5nZXJwcmludGluZy4KICAgICAgICAgICAgIC8vIFNhbWUgY29sb3IgaW4gbGlnaHQgYW5k
IGRhcmsgYXBwZWFyYW5jZXMuCi0gICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4
RkYwMDdBRkYgfSwgQ29sb3I6OlNlbWFudGljIH07CisgICAgICAgICAgICByZXR1cm4geyBtYWtl
U2ltcGxlQ29sb3IoMCwgMTIyLCAyNTUpLCBDb2xvcjo6U2VtYW50aWMgfTsKIAogICAgICAgICBj
YXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1TZWxlY3RlZENvbnRlbnRCYWNrZ3JvdW5kOgogICAgICAg
ICAgICAgLy8gSGFyZGNvZGVkIHRvIGF2b2lkIGV4cG9zaW5nIGEgdXNlciBhcHBlYXJhbmNlIHBy
ZWZlcmVuY2UgdG8gdGhlIHdlYiBmb3IgZmluZ2VycHJpbnRpbmcuCiAgICAgICAgICAgICBpZiAo
bG9jYWxBcHBlYXJhbmNlLnVzaW5nRGFya0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4RkYwMDU4RDAgfSwgQ29sb3I6OlNlbWFudGljIH07Ci0g
ICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4RkYwMDYzRTEgfSwgQ29sb3I6OlNl
bWFudGljIH07CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVNpbXBsZUNvbG9yKDAsIDg4
LCAyMDgpLCBDb2xvcjo6U2VtYW50aWMgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1ha2VTaW1w
bGVDb2xvcigwLCA5OSwgMjI1KSwgQ29sb3I6OlNlbWFudGljIH07CiAKICAgICAgICAgY2FzZSBD
U1NWYWx1ZUhpZ2hsaWdodDoKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU2VsZWN0
ZWRUZXh0QmFja2dyb3VuZDoKICAgICAgICAgICAgIC8vIEhhcmRjb2RlZCB0byBhdm9pZCBleHBv
c2luZyBhIHVzZXIgYXBwZWFyYW5jZSBwcmVmZXJlbmNlIHRvIHRoZSB3ZWIgZm9yIGZpbmdlcnBy
aW50aW5nLgogICAgICAgICAgICAgaWYgKGxvY2FsQXBwZWFyYW5jZS51c2luZ0RhcmtBcHBlYXJh
bmNlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAweENDM0Y2MzhC
IH0sIENvbG9yOjpTZW1hbnRpYyB9OwotICAgICAgICAgICAgcmV0dXJuIHsgU2ltcGxlQ29sb3Ig
eyAweDk5ODBCQ0ZFIH0sIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAgICAgICAgIHJldHVy
biB7IG1ha2VTaW1wbGVDb2xvcig2MywgOTksIDEzOSwgMjA0KSwgQ29sb3I6OlNlbWFudGljIH07
CisgICAgICAgICAgICByZXR1cm4geyBtYWtlU2ltcGxlQ29sb3IoMTI4LCAxODgsIDI1NCwgMTUz
KSwgQ29sb3I6OlNlbWFudGljIH07CiAKICNpZiAhSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkK
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtQ29udGFpbmVyQm9yZGVyOgotICAgICAg
ICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkM1QzVDNSB9OworICAgICAgICAgICAgcmV0
dXJuIG1ha2VTaW1wbGVDb2xvcigxOTcsIDE5NywgMTk3KTsKICNlbmRpZgogCiAgICAgICAgIGNh
c2UgQ1NTVmFsdWVBcHBsZVN5c3RlbUV2ZW5BbHRlcm5hdGluZ0NvbnRlbnRCYWNrZ3JvdW5kOiB7
CkBAIC0yNDEzLDggKzI0MTMsOCBAQCBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRJY29uU2VsZWN0
aW9uQm9yCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZFJhZGl1cyA9IDM7
CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRJY29uVG9UaXRsZU1hcmdpbiA9IDI7CiAKLWNvbnN0
ZXhwciBTaW1wbGVDb2xvciBhdHRhY2htZW50SWNvbkJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1w
bGVDb2xvcigwLCAwLCAwLCAzMCk7Ci1jb25zdGV4cHIgU2ltcGxlQ29sb3IgYXR0YWNobWVudElj
b25Cb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1LCAxMjUpOworY29u
c3RleHByIGF1dG8gYXR0YWNobWVudEljb25CYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29s
b3IoMCwgMCwgMCwgMzApOworY29uc3RleHByIGF1dG8gYXR0YWNobWVudEljb25Cb3JkZXJDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1LCAxMjUpOwogCiBjb25zdCBDR0Zsb2F0
IGF0dGFjaG1lbnRUaXRsZUZvbnRTaXplID0gMTI7CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRU
aXRsZUJhY2tncm91bmRSYWRpdXMgPSAzOwpAQCAtMjQyMiwyMyArMjQyMiwyMyBAQCBjb25zdCBD
R0Zsb2F0IGF0dGFjaG1lbnRUaXRsZUJhY2tncm91bmRQCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1l
bnRUaXRsZU1heGltdW1XaWR0aCA9IDEwMCAtIChhdHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kUGFk
ZGluZyAqIDIpOwogY29uc3QgQ0ZJbmRleCBhdHRhY2htZW50VGl0bGVNYXhpbXVtTGluZUNvdW50
ID0gMjsKIAotY29uc3RleHByIFNpbXBsZUNvbG9yIGF0dGFjaG1lbnRUaXRsZUluYWN0aXZlQmFj
a2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNCwgMjA0LCAyMDQsIDI1NSk7Ci1jb25z
dGV4cHIgU2ltcGxlQ29sb3IgYXR0YWNobWVudFRpdGxlSW5hY3RpdmVUZXh0Q29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMTAwLCAxMDAsIDEwMCwgMjU1KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1l
bnRUaXRsZUluYWN0aXZlQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNCwgMjA0
LCAyMDQpOworY29uc3RleHByIGF1dG8gYXR0YWNobWVudFRpdGxlSW5hY3RpdmVUZXh0Q29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMTAwLCAxMDAsIDEwMCk7CiAKIGNvbnN0IENHRmxvYXQgYXR0YWNo
bWVudFN1YnRpdGxlRm9udFNpemUgPSAxMDsKIGNvbnN0IGludCBhdHRhY2htZW50U3VidGl0bGVX
aWR0aEluY3JlbWVudCA9IDEwOwotY29uc3RleHByIFNpbXBsZUNvbG9yIGF0dGFjaG1lbnRTdWJ0
aXRsZVRleHRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcig4MiwgMTQ1LCAyMTQsIDI1NSk7Citjb25z
dGV4cHIgYXV0byBhdHRhY2htZW50U3VidGl0bGVUZXh0Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3Io
ODIsIDE0NSwgMjE0KTsKIAogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJXaWR0
aCA9IDMwOwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJIZWlnaHQgPSA1Owog
Y29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJPZmZzZXQgPSAtOTsKIGNvbnN0IENH
RmxvYXQgYXR0YWNobWVudFByb2dyZXNzQmFyQm9yZGVyV2lkdGggPSAxOwotY29uc3RleHByIFNp
bXBsZUNvbG9yIGF0dGFjaG1lbnRQcm9ncmVzc0JhckJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1w
bGVDb2xvcigwLCAwLCAwLCA4OSk7Ci1jb25zdGV4cHIgU2ltcGxlQ29sb3IgYXR0YWNobWVudFBy
b2dyZXNzQmFyRmlsbENvbG9yID0gQ29sb3I6OndoaXRlOwotY29uc3RleHByIFNpbXBsZUNvbG9y
IGF0dGFjaG1lbnRQcm9ncmVzc0JhckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAs
IDAsIDEyOCk7Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50UHJvZ3Jlc3NCYXJCYWNrZ3JvdW5k
Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgODkpOworY29uc3RleHByIGF1dG8gYXR0
YWNobWVudFByb2dyZXNzQmFyRmlsbENvbG9yID0gQ29sb3I6OndoaXRlOworY29uc3RleHByIGF1
dG8gYXR0YWNobWVudFByb2dyZXNzQmFyQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwg
MCwgMCwgMTI4KTsKIAogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UGxhY2Vob2xkZXJCb3JkZXJS
YWRpdXMgPSA1OwotY29uc3RleHByIFNpbXBsZUNvbG9yIGF0dGFjaG1lbnRQbGFjZWhvbGRlckJv
cmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDU2KTsKK2NvbnN0ZXhwciBhdXRv
IGF0dGFjaG1lbnRQbGFjZWhvbGRlckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAs
IDAsIDU2KTsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFBsYWNlaG9sZGVyQm9yZGVyV2lkdGgg
PSAyOwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UGxhY2Vob2xkZXJCb3JkZXJEYXNoTGVuZ3Ro
ID0gNjsKIApJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDAzNykKKysrIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDctMDcgIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFBhcnQgMiBvZiBTaW1wbGVD
b2xvciBhbmQgU1JHQkE8dWludDhfdD4gYXJlIGVzc2VudGlhbGx5IHRoZSBzYW1lIC0gbGV0J3Mg
Y29udmVyZ2UgdGhlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjEzOTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnBhaW50U25hcHNob3RBdFNpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIE1ha2UgY2FsbHMgdG8gbWFrZVNp
bXBsZUNvbG9yIG1vcmUgY29uc2lzdGVudC4gVXNlIGRlY2ltYWwgcmF0aGVyIHRoYW4gaGV4LCBk
b24ndCBwYXNzIHVubmNlc3NhcnkKKyAgICAgICAgMjU1IGFzIHRoZSA0dGggYXJndW1lbnQuCisK
IDIwMjAtMDctMDcgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBlLmNvbT4KIAogICAgICAgICBO
ZXR3b3JrIHByb2Nlc3MgY3Jhc2hlcyBpbiBXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpkZWxl
dGVTZXNzaW9uU3RvcmFnZUZvck9yaWdpbnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyNjQwMzEpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQw
OSw3ICsyNDA5LDcgQEAgdm9pZCBXZWJQYWdlOjpwYWludFNuYXBzaG90QXRTaXplKGNvbnN0IAog
CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvblJlY3Rhbmds
ZSkgewogICAgICAgICBGbG9hdFJlY3Qgc2VsZWN0aW9uUmVjdGFuZ2xlID0gZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uQm91bmRzKCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJv
a2VDb2xvcihtYWtlU2ltcGxlQ29sb3IoMHhGRiwgMCwgMCkpOworICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0U3Ryb2tlQ29sb3IobWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCkpOwogICAgICAg
ICBncmFwaGljc0NvbnRleHQuc3Ryb2tlUmVjdChzZWxlY3Rpb25SZWN0YW5nbGUsIDEpOwogICAg
IH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29u
dHJvbGxlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0JKHJldmlzaW9uIDI2NDAzMSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBjb25zdCBpbnQgdG90YWxWZXJ0aWNhbE1hcmdp
biA9IDE7CiAKIGNvbnN0ZXhwciBPcHRpb25TZXQ8VGV4dEluZGljYXRvck9wdGlvbj4gZmluZFRl
eHRJbmRpY2F0b3JPcHRpb25zIHsgVGV4dEluZGljYXRvck9wdGlvbjo6SW5jbHVkZU1hcmdpbklm
UmFuZ2VNYXRjaGVzU2VsZWN0aW9uLCBUZXh0SW5kaWNhdG9yT3B0aW9uOjpEb05vdENsaXBUb1Zp
c2libGVSZWN0IH07CiAKLWNvbnN0ZXhwciBhdXRvIGhpZ2hsaWdodENvbG9yID0gbWFrZVNpbXBs
ZUNvbG9yKDI1NSwgMjI4LCA1NiwgMjU1KTsKK2NvbnN0ZXhwciBhdXRvIGhpZ2hsaWdodENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjI4LCA1Nik7CiAKIHZvaWQgRmluZEluZGljYXRvck92
ZXJsYXlDbGllbnRJT1M6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiBvdmVybGF5LCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDAzMSkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIw
LTA3LTA2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBQYXJ0IDIg
b2YgU2ltcGxlQ29sb3IgYW5kIFNSR0JBPHVpbnQ4X3Q+IGFyZSBlc3NlbnRpYWxseSB0aGUgc2Ft
ZSAtIGxldCdzIGNvbnZlcmdlIHRoZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMzk4MQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHA6CisgICAgICAgIFN3
aXRjaCB0byB1c2luZyBhdXRvL21ha2VTaW1wbGVDb2xvci4KKwogMjAyMC0wNy0wMyAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSB0
aGUgbmFtZXMgb2YgTUlNRVR5cGVSZWdpc3RyeSBtZXRob2RzIHRvIGNvbXBseSB3aXRoIHdlYmtp
dCBuYW1pbmcgc3R5bGUKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNjQwMzEpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzQsMTEgKzc0LDExIEBAIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyUmFkaXVz
ID0gMTI7CiBzdGF0aWMgY29uc3QgaW50IGJvcmRlclRoaWNrbmVzcyA9IDI7CiAKIC8vIENvbG9y
cwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBiYWNrZ3JvdW5kQ29sb3IgPSAweEEwMjAyMDIw
Owotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBib3JkZXJDb2xvciA9IDB4RkZBMEEwQTA7Ci1z
dGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHNsaWRlckd1dHRlckNvbG9yID0gMHhGRjE0MTQxNDsK
LXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgc2xpZGVyQnV0dG9uQ29sb3IgPSAweEZGODA4MDgw
Owotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCB0ZXh0Q29sb3IgPSAweEZGRkZGRkZGOworc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIGJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigzMiwg
MzIsIDMyLCAxNjApOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJvcmRlckNvbG9yID0gbWFrZVNp
bXBsZUNvbG9yKDE2MCwgMTYwLCAxNjApOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlckd1
dHRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwLCAyMCwgMjApOworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIHNsaWRlckJ1dHRvbkNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDEyOCwgMTI4LCAxMjgp
Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRleHRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUs
IDI1NSwgMjU1KTsKIAogSFVEQnV0dG9uOjpIVURCdXR0b24oSFVEQnV0dG9uVHlwZSB0eXBlLCBj
b25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiAgICAgOiBIVURXaWRnZXQoSW50UmVjdChwb3NpdGlv
biwgSW50U2l6ZSgpKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403717</attachid>
            <date>2020-07-07 13:33:04 -0700</date>
            <delta_ts>2020-07-07 17:53:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213981-20200707133303.patch</filename>
            <type>text/plain</type>
            <size>65089</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDAzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzNSBAQAorMjAyMC0wNy0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGFydCAyIG9mIFNpbXBsZUNvbG9y
IGFuZCBTUkdCQTx1aW50OF90PiBhcmUgZXNzZW50aWFsbHkgdGhlIHNhbWUgLSBsZXQncyBjb252
ZXJnZSB0aGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTM5ODEKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAt
IFJlcGxhY2VzIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIFNpbXBsZUNvbG9yIGJhc2VkIG9u
IGFuIEFSR0IgdWludDMyX3Qgd2l0aCBTUkdCQTx1aW50OF90Pi4KKyAgICAgICAgLSBSZW1vdmVz
IFNpbXBsZUNvbG9yIGNvbnN0cnVjdG9yIHRha2luZyBhIHVpbnQzMl90LiBDYWxsZXJzIHRoYXQg
c3RpbGwgbmVlZCB0byBjb252ZXJ0IGZyb20gQVJHQgorICAgICAgICAgIG5vdyBkbyBtYWtlU2lt
cGxlQ29sb3IoYXNTUkdCQShQYWNrZWQ6OkFSR0IgeyB2YWx1ZSB9KSkuCisgICAgICAgIC0gUmVt
b3ZlcyB2YWx1ZSgpIGFuZCB2YWx1ZUFzQVJHQigpIG1lbWJlciBmdW5jdGlvbnMgZnJvbSBTaW1w
bGVDb2xvci4gQ2FsbGVycyB0aGF0IG5lZWQgYSBwYWNrZWQKKyAgICAgICAgICByZXByZXNlbnRh
dGlvbiBub3cgZG8gUGFja2VkOjpBUkdCIHsgc2ltcGxlQ29sb3IuYXNTUkdCQTx1aW50OF90Pigp
IH0udmFsdWUuCisKKyAgICAgICAgKiBjc3MvU3R5bGVDb2xvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKToKKyAgICAgICAgVXNlIGFzU1JHQkEo
UGFja2VkOjpBUkdCey4uLn0pIHRvIGNvbnN0dWN0IHRoZSBjb2xvci4KKworICAgICAgICAqIGNz
cy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmlz
aFBhcnNpbmdOYW1lZENvbG9yKToKKyAgICAgICAgVXNlIGFzU1JHQkEoUGFja2VkOjpBUkdCey4u
Ln0pIChvciBpbiBvbmUgY2FzZSwgUGFja2VkOjpSR0JBKSB0byBjb25zdHVjdCB0aGUgY29sb3Iu
CisgICAgICAgIFRoZXNlIGNhbiBhbG1vc3QgY2VydGFpbmx5IGJlIHNpbXBsaWZpZWQsIGJ1dCBp
biB0aGUgaW50ZXJlc3Qgb2Yga2VlcGluZyB0aGluZ3Mgc21hbGxpc2gsCisgICAgICAgIEkgaGF2
ZSBsZWZ0IHRoYXQgZm9yIGEgc3Vic2VxdWVudCBjaGFuZ2UuCisKKyAgICAgICAgKiBlZGl0aW5n
L0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRvL21h
a2VTaW1wbGVDb2xvci4KKworICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJs
YXlDb2NvYS5tbToKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIG1ha2VTaW1wbGVDb2xvci4KKwor
ICAgICAgICAoV2ViQ29yZTo6SGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm86Okhpc3RvcmljTWVt
b3J5Q2F0ZWdvcnlJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcmljUmVzb3VyY2VVc2Fn
ZURhdGE6Okhpc3RvcmljUmVzb3VyY2VVc2FnZURhdGEpOgorICAgICAgICBTd2l0Y2ggdG8gdXNp
bmcgYXV0by9tYWtlU2ltcGxlQ29sb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hZHdhaXRhL1Nj
cm9sbGJhclRoZW1lQWR3YWl0YS5jcHA6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRvL21h
a2VTaW1wbGVDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAtIFN3aXRjaCB0
byB1c2luZyBhdXRvL21ha2VTaW1wbGVDb2xvciBmb3IgbmFtZWQgY29sb3JzLgorICAgICAgICAt
IFN3aXRjaCB0byBzdG9yaW5nL2VuY29kaW5nIHRoZSBpbmxpbmUgU2ltcGxlQ29sb3IgYXMgYSBQ
YWNrZWQ6OlJHQkEgdmFsdWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJs
ZW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kKToKKyAgICAgICAgVXBkYXRlIGZv
ciBuZXcgbmFtZSBvZiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWNrZWQ6OlJHQkE6
OlJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6UGFja2VkOjpBUkdCOjpBUkdCKToKKyAgICAgICAg
KFdlYkNvcmU6OmFzU1JHQkEpOgorICAgICAgICBSZW5hbWUgV2ViQ29yZTo6QVJHQiB0byBXZWJD
b3JlOjpQYWNrZWQ6OkFSR0IuIEFkZHMgY29tcGFuaW9uLCBXZWJDb3JlOjpQYWNrZWQ6OlJHQkEu
IEFuZCBhZGRzIGNvbnN0cnVjdG9ycworICAgICAgICB3aGljaCBtYWtlIGEgcGFja2VkIHR5cGUg
ZnJvbSBhbiBTUkdCQTx1aW50OF90Pi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50Qnl0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50RmxvYXQpOgorICAgICAgICBFeHRy
YWN0IG91dCBoZWxwZXIgZnVuY3Rpb25zIHdoaWNoIGp1c3QgZG8gdGhlIGNsYW1waW5nIGZvciB0
aGUgdHlwZS4gCisKKyAgICAgICAgKFdlYkNvcmU6OmNsYW1wVG9Db21wb25lbnRCeXRlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50RmxvYXRzKToKKyAgICAgICAgUmVuYW1l
IGNvbnZlcnNpb24gZnVuY3Rpb25zIHRoYXQganVzdCBjbGFtcCB0byB1c2UgImNsYW1wIiBwcmVm
aXggcmF0aGVyIHRoYW4gImNvbnZlcnQiLiBNYWtlIHVzZQorICAgICAgICBvZiBleHRyYWN0ZWQg
aGVscGVycy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6YmxlbmRQaXhlbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6cGl4ZWxWYWx1ZSBjb25zdCk6Cisg
ICAgICAgIFVwZGF0ZSB1c2luZyBuZXcgcGFja2VkIGNvbG9yIHR5cGVzIGFuZCBmdW50aW9ucy4g
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVDb2xvci5oOgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlQ29sb3I6OlNpbXBsZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUNvbG9yOjphbHBoYUNvbXBvbmVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVDb2xvcjo6YWxwaGFDb21wb25lbnRBc0Zsb2F0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUNvbG9yOjppc09wYXF1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVD
b2xvcjo6aXNWaXNpYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNvbG9yOjpj
b2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVDb2xvcjo6aW52
ZXJ0ZWRDb2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVDb2xv
cjo6YXNTUkdCQSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVDb2xvcjo6Z2V0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VTaW1wbGVDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVDb2xvcjo6dmFsdWVBc0FSR0IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlQ29sb3I6OnZhbHVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNpbXBsZUNvbG9yOjpyZWRDb21wb25lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6OmdyZWVuQ29tcG9uZW50IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNvbG9yOjpibHVlQ29tcG9uZW50IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgLSBSZW1vdmVzIGNvbnN0cnVjdG9yIHRha2luZyBhbiBBUkdCIHVpbnQz
Ml90LgorICAgICAgICAtIFJlbW92ZXMgdmFsdWVBc0FSR0IoKS92YWx1ZSgpIGZ1bmN0aW9ucyAo
Y2FuIHVzZSBQYWNrZWQ6OkFSR0IgZGlyZWN0bHkgaWYgbmVlZGVkKS4KKyAgICAgICAgLSBTd2l0
Y2hlcyBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiB0byBTUkdCQTx1aW50OF90Pi4KKyAgICAgICAg
LSBTdHJlYW1saW5lIG1ha2VTaW1wbGVDb2xvciBmdW5jdGlvbnMgdG8gdXNlIHNoYXJlZCBoZWxw
ZXJzIGZyb20gQ29sb3JVdGlsaXRpZXMuaAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW06CisgICAgICAgIChXZWJDb3Jl
Ojpuc0NvbG9yKToKKyAgICAgICAgVXNlIFBhY2tlZDo6UkdCQSB0byBleHRyYWN0IHVpbnQzMl90
IGZvciBxdWljayBsb29rdXAgb2YgdHJhbnNwYXJlbnQvd2hpdGUvYmxhY2sgU2ltcGxlQ29sb3Jz
LiBEZXNwaXRlIHRoZQorICAgICAgICBsZW5ndGggb2YgdGhlIGNhbGxzLCBTaW1wbGVDb2xvciBp
cyBmdWxseSBjb25zdGV4cHIsIHNvIHRoZXNlIGFjdHVhbGx5IGNvbGxhcHNlIGRvd24gdG8gdGhl
IHVpbnQzMl90IHJlcHJlc2VudGF0aW9uCisgICAgICAgIGF0IGNvbXBpbGUgdGltZS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdEb3RzRm9yRG9jdW1lbnRNYXJr
ZXIpOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgYXV0by9tYWtlU2ltcGxlQ29sb3IuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHREZXZpY2VzKToKKyAgICAgICAgU3dpdGNoIHRvIHVz
aW5nIG1ha2VTaW1wbGVDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U6OmRyYXdCb3hlcyk6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRvL21ha2VTaW1w
bGVDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tn
cm91bmQpOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgbWFrZVNpbXBsZUNvbG9yLgorCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmNhbGN1bGF0ZUJvcmRlclN0eWxlQ29sb3IpOgorICAgICAgICBVcGRhdGUgY29t
bWVudCB0byB1c2UgcGVyLWNvbXBvbmVudCB2YWx1ZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnN5c3RlbUNv
bG9yIGNvbnN0KToKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIG1ha2VTaW1wbGVDb2xvci4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2FpdGEuY3BwOgorICAgICAgICBTd2l0
Y2ggdG8gdXNpbmcgYXV0by9tYWtlU2ltcGxlQ29sb3IuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcik6Cisg
ICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRvL21ha2VTaW1wbGVDb2xvci4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lTWFjOjpzeXN0ZW1Db2xvciBjb25zdCk6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhdXRv
L21ha2VTaW1wbGVDb2xvci4KKwogMjAyMC0wNy0wNyAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVz
Z18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIGNvbnRlbnQgcHJvY2VzcyBoYW5ncyBpbiBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdl
IGluIHNvbWUgY29ybmVyIGNhc2VzLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQ29s
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUNvbG9yLmNwcAko
cmV2aXNpb24gMjY0MDM3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQ29sb3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIENvbG9yIFN0eWxlQ29sb3I6OmNvbG9yRnJv
bUtleXdvcmQoQ1NTVmEKIHsKICAgICBpZiAoY29uc3QgY2hhciogdmFsdWVOYW1lID0gZ2V0VmFs
dWVOYW1lKGtleXdvcmQpKSB7CiAgICAgICAgIGlmIChjb25zdCBOYW1lZENvbG9yKiBuYW1lZENv
bG9yID0gZmluZENvbG9yKHZhbHVlTmFtZSwgc3RybGVuKHZhbHVlTmFtZSkpKQotICAgICAgICAg
ICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgbmFtZWRDb2xvci0+QVJHQlZhbHVlIH07CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKGFzU1JHQkEoUGFja2VkOjpBUkdCIHsgbmFtZWRD
b2xvci0+QVJHQlZhbHVlIH0pKTsKICAgICB9CiAKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnNp
bmdsZXRvbigpLnN5c3RlbUNvbG9yKGtleXdvcmQsIG9wdGlvbnMpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAkocmV2aXNpb24g
MjY0MDM3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsMjEgKzQxNCwyOCBAQCBzdGF0aWMgT3B0aW9uYWw8
U2ltcGxlQ29sb3I+IGZpbmlzaFBhcnNpCiAgICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICBjYXNl
IDM6CiAgICAgICAgIC8vICNhYmMgY29udmVydHMgdG8gI2FhYmJjYwotICAgICAgICByZXR1cm4g
U2ltcGxlQ29sb3IgeyAweEZGMDAwMDAwCisgICAgICAgIC8vIEZJWE1FOiBSZXBsYWNlIGNvbnZl
cnNpb24gdG8gUGFja2VkOjpBUkdCIHdpdGggc2ltcGxlciBiaXQgbWF0aCB0byBjb25zdHJ1Y3QK
KyAgICAgICAgLy8gdGhlIFNSR0JBPHVpbnQ4X3Q+IGRpcmVjdGx5LgorICAgICAgICByZXR1cm4g
bWFrZVNpbXBsZUNvbG9yKGFzU1JHQkEoUGFja2VkOjpBUkdCIHsKKyAgICAgICAgICAgICAgIDB4
RkYwMDAwMDAKICAgICAgICAgICAgIHwgKHZhbHVlICYgMHhGMDApIDw8IDEyIHwgKHZhbHVlICYg
MHhGMDApIDw8IDgKICAgICAgICAgICAgIHwgKHZhbHVlICYgMHhGMCkgPDwgOCB8ICh2YWx1ZSAm
IDB4RjApIDw8IDQKLSAgICAgICAgICAgIHwgKHZhbHVlICYgMHhGKSA8PCA0IHwgKHZhbHVlICYg
MHhGKSB9OworICAgICAgICAgICAgfCAodmFsdWUgJiAweEYpIDw8IDQgfCAodmFsdWUgJiAweEYp
IH0pKTsKICAgICBjYXNlIDQ6CiAgICAgICAgIC8vICNhYmNkIGNvbnZlcnRzIHRvIGRkYWFiYmNj
IHNpbmNlIGFscGhhIGJ5dGVzIGFyZSB0aGUgaGlnaCBieXRlcy4KLSAgICAgICAgcmV0dXJuIFNp
bXBsZUNvbG9yIHsgKHZhbHVlICYgMHhGKSA8PCAyOCB8ICh2YWx1ZSAmIDB4RikgPDwgMjQKKyAg
ICAgICAgLy8gRklYTUU6IFJlcGxhY2UgY29udmVyc2lvbiB0byBQYWNrZWQ6OkFSR0Igd2l0aCBz
aW1wbGVyIGJpdCBtYXRoIHRvIGNvbnN0cnVjdAorICAgICAgICAvLyB0aGUgU1JHQkE8dWludDhf
dD4gZGlyZWN0bHkuCisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoYXNTUkdCQShQYWNr
ZWQ6OkFSR0IgeworICAgICAgICAgICAgICAodmFsdWUgJiAweEYpIDw8IDI4IHwgKHZhbHVlICYg
MHhGKSA8PCAyNAogICAgICAgICAgICAgfCAodmFsdWUgJiAweEYwMDApIDw8IDggfCAodmFsdWUg
JiAweEYwMDApIDw8IDQKICAgICAgICAgICAgIHwgKHZhbHVlICYgMHhGMDApIDw8IDQgfCAodmFs
dWUgJiAweEYwMCkKLSAgICAgICAgICAgIHwgKHZhbHVlICYgMHhGMCkgfCAodmFsdWUgJiAweEYw
KSA+PiA0IH07CisgICAgICAgICAgICB8ICh2YWx1ZSAmIDB4RjApIHwgKHZhbHVlICYgMHhGMCkg
Pj4gNCB9KSk7CiAgICAgY2FzZSA2OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZG
MDAwMDAwIHwgdmFsdWUgfTsKKyAgICAgICAgLy8gRklYTUU6IFJlcGxhY2UgY29udmVyc2lvbiB0
byBQYWNrZWQ6OkFSR0Igd2l0aCBzaW1wbGVyIGJpdCBtYXRoIHRvIGNvbnN0cnVjdAorICAgICAg
ICAvLyB0aGUgU1JHQkE8dWludDhfdD4gZGlyZWN0bHkuCisgICAgICAgIHJldHVybiBtYWtlU2lt
cGxlQ29sb3IoYXNTUkdCQShQYWNrZWQ6OkFSR0IgeyAweEZGMDAwMDAwIHwgdmFsdWUgfSkpOwog
ICAgIGNhc2UgODoKLSAgICAgICAgLy8gV2UgcGFyc2VkIHRoZSB2YWx1ZXMgaW50byBSR0JBIG9y
ZGVyLCBidXQgd2Ugc3RvcmUgdGhlbSBpbiBBUkdCIG9yZGVyLgotICAgICAgICByZXR1cm4gU2lt
cGxlQ29sb3IgeyB2YWx1ZSA8PCAyNCB8IHZhbHVlID4+IDggfTsKKyAgICAgICAgcmV0dXJuIG1h
a2VTaW1wbGVDb2xvcihhc1NSR0JBKFBhY2tlZDo6UkdCQSB7IHZhbHVlIH0pKTsKICAgICB9CiAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KQEAgLTUzMiw3ICs1MzksNyBAQCBzdGF0aWMgT3B0
aW9uYWw8U2ltcGxlQ29sb3I+IGZpbmlzaFBhcnNpCiAgICAgYXV0byBuYW1lZENvbG9yID0gZmlu
ZENvbG9yKGJ1ZmZlciwgbGVuZ3RoKTsKICAgICBpZiAoIW5hbWVkQ29sb3IpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgbmFtZWRDb2xvci0+
QVJHQlZhbHVlIH07CisgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcihhc1NSR0JBKFBhY2tlZDo6
QVJHQiB7IG5hbWVkQ29sb3ItPkFSR0JWYWx1ZSB9KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTaW1wbGVDb2xvcj4gcGFyc2VOYW1lZENv
bG9ySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRpb25IaWdobGln
aHQuaAkocmV2aXNpb24gMjY0MDM3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGlvbkhpZ2hsaWdodC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCw5IEBAIHN0cnVjdCBD
b21wb3NpdGlvbkhpZ2hsaWdodCB7CiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIGRlZmF1bHRDb21wb3NpdGlvbkZpbGxD
b2xvciB7IDB4M0NBRkMwRTMgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdENv
bXBvc2l0aW9uRmlsbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDE3NSwgMTkyLCAyMjcsIDYwKTsK
ICNlbHNlCi0gICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBkZWZhdWx0Q29tcG9zaXRp
b25GaWxsQ29sb3IgeyAweEZGRTFERDU1IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRl
ZmF1bHRDb21wb3NpdGlvbkZpbGxDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMjUsIDIyMSwgODUp
OwogI2VuZGlmCiAKICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCB7IDAgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29j
b2EubW0JKHJldmlzaW9uIDI2NDAzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVz
b3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI4LDEyICsxMjgs
MTIgQEAgc3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ29sb3IoZmxvYXQgciwgZgogc3RydWN0IEhp
c3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvIHsKICAgICBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5m
bygpIHsgfSAvLyBOZWVkZWQgZm9yIHN0ZDo6YXJyYXkuCiAKLSAgICBIaXN0b3JpY01lbW9yeUNh
dGVnb3J5SW5mbyh1bnNpZ25lZCBjYXRlZ29yeSwgdWludDMyX3QgYXJnYiwgU3RyaW5nIG5hbWUs
IGJvb2wgc3ViY2F0ZWdvcnkgPSBmYWxzZSkKKyAgICBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5m
byh1bnNpZ25lZCBjYXRlZ29yeSwgU2ltcGxlQ29sb3IgY29sb3IsIFN0cmluZyBuYW1lLCBib29s
IHN1YmNhdGVnb3J5ID0gZmFsc2UpCiAgICAgICAgIDogbmFtZShXVEZNb3ZlKG5hbWUpKQorICAg
ICAgICAsIGNvbG9yKGNhY2hlZENHQ29sb3IoY29sb3IpKQogICAgICAgICAsIGlzU3ViY2F0ZWdv
cnkoc3ViY2F0ZWdvcnkpCiAgICAgICAgICwgdHlwZShjYXRlZ29yeSkKICAgICB7Ci0gICAgICAg
IGNvbG9yID0gY2FjaGVkQ0dDb2xvcihTaW1wbGVDb2xvciB7IGFyZ2IgfSk7CiAgICAgfQogCiAg
ICAgU3RyaW5nIG5hbWU7CkBAIC0xNjAsMTggKzE2MCwxOCBAQCBzdHJ1Y3QgSGlzdG9yaWNSZXNv
dXJjZVVzYWdlRGF0YSB7CiBIaXN0b3JpY1Jlc291cmNlVXNhZ2VEYXRhOjpIaXN0b3JpY1Jlc291
cmNlVXNhZ2VEYXRhKCkKIHsKICAgICAvLyBWTSB0YWcgY2F0ZWdvcmllcy4KLSAgICBjYXRlZ29y
aWVzW01lbW9yeUNhdGVnb3J5OjpKU0pJVF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhN
ZW1vcnlDYXRlZ29yeTo6SlNKSVQsIDB4RkZGRjYwRkYsICJKUyBKSVQiKTsKLSAgICBjYXRlZ29y
aWVzW01lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZV0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5m
byhNZW1vcnlDYXRlZ29yeTo6R2lnYWNhZ2UsIDB4RkY2NTRGRjAsICJHaWdhY2FnZSIpOwotICAg
IGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkltYWdlc10gPSBIaXN0b3JpY01lbW9yeUNhdGVn
b3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6SW1hZ2VzLCAweEZGRkZGRjAwLCAiSW1hZ2VzIik7Ci0g
ICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6TGF5ZXJzXSA9IEhpc3RvcmljTWVtb3J5Q2F0
ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpMYXllcnMsIDB4RkYwMEZGRkYsICJMYXllcnMiKTsK
LSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpMaWJjTWFsbG9jXSA9IEhpc3RvcmljTWVt
b3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpMaWJjTWFsbG9jLCAweEZGMDBGRjAwLCAi
bGliYyBtYWxsb2MiKTsKLSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpibWFsbG9jXSA9
IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpibWFsbG9jLCAweEZG
RkY2MDYwLCAiYm1hbGxvYyIpOwotICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6Oklzb0hl
YXBdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6Oklzb0hlYXAs
IDB4RkY4MDlGNDAsICJJc29IZWFwIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6
T3RoZXJdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6Ok90aGVy
LCAweEZGQzBGRjAwLCAiT3RoZXIiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpK
U0pJVF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6SlNKSVQs
IG1ha2VTaW1wbGVDb2xvcigyNTUsIDk2LCAyNTUpLCAiSlMgSklUIik7CisgICAgY2F0ZWdvcmll
c1tNZW1vcnlDYXRlZ29yeTo6R2lnYWNhZ2VdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8o
TWVtb3J5Q2F0ZWdvcnk6OkdpZ2FjYWdlLCBtYWtlU2ltcGxlQ29sb3IoMTAxLCA3OSwgMjQwKSwg
IkdpZ2FjYWdlIik7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6SW1hZ2VzXSA9IEhp
c3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpJbWFnZXMsIG1ha2VTaW1w
bGVDb2xvcigyNTUsIDI1NSwgMCksICJJbWFnZXMiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNh
dGVnb3J5OjpMYXllcnNdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdv
cnk6OkxheWVycywgbWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMjU1KSwgIkxheWVycyIpOworICAg
IGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkxpYmNNYWxsb2NdID0gSGlzdG9yaWNNZW1vcnlD
YXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkxpYmNNYWxsb2MsIG1ha2VTaW1wbGVDb2xvcigw
LCAyNTUsIDApLCAibGliYyBtYWxsb2MiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5
OjpibWFsbG9jXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5Ojpi
bWFsbG9jLCBtYWtlU2ltcGxlQ29sb3IoMjU1LCA5NiwgOTYpLCAiYm1hbGxvYyIpOworICAgIGNh
dGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6Oklzb0hlYXBdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29y
eUluZm8oTWVtb3J5Q2F0ZWdvcnk6Oklzb0hlYXAsIG1ha2VTaW1wbGVDb2xvcigxMjgsIDE1OSwg
NjQpLCAiSXNvSGVhcCIpOworICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6Ok90aGVyXSA9
IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpPdGhlciwgbWFrZVNp
bXBsZUNvbG9yKDE5MiwgMjU1LCAwKSwgIk90aGVyIik7CiAKICAgICAvLyBTdWIgY2F0ZWdvcmll
cyAoZS5nIGJyZWFrZG93biBvZiBibWFsbG9jIHRhZy4pCi0gICAgY2F0ZWdvcmllc1tNZW1vcnlD
YXRlZ29yeTo6R0NIZWFwXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVn
b3J5OjpHQ0hlYXAsIDB4RkZBMEEwRkYsICJHQyBoZWFwIiwgdHJ1ZSk7Ci0gICAgY2F0ZWdvcmll
c1tNZW1vcnlDYXRlZ29yeTo6R0NPd25lZF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhN
ZW1vcnlDYXRlZ29yeTo6R0NPd25lZCwgMHhGRkZGQzA2MCwgIkdDIG93bmVkIiwgdHJ1ZSk7Cisg
ICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6R0NIZWFwXSA9IEhpc3RvcmljTWVtb3J5Q2F0
ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ0hlYXAsIG1ha2VTaW1wbGVDb2xvcigxNjAsIDE2
MCwgMjU1KSwgIkdDIGhlYXAiLCB0cnVlKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5
OjpHQ093bmVkXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpH
Q093bmVkLCBtYWtlU2ltcGxlQ29sb3IoMjU1LCAxOTIsIDk2KSwgIkdDIG93bmVkIiwgdHJ1ZSk7
CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gRW5zdXJlIHRoaXMgYWxpZ25zIHdpdGggUmVzb3Vy
Y2VVc2FnZURhdGEncyBjYXRlZ29yeSBvcmRlci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
bGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAkocmV2aXNp
b24gMjY0MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3Zl
cmxheUxpbnV4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgog
ICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRl
eHQpOwogICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGNsaXAsIG1ha2VTaW1wbGVDb2xvcigwLCAw
LCAwLCAyMDQpKTsKLSAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IobWFrZVNpbXBsZUNvbG9y
KDIzMCwgMjMwLCAyMzAsIDI1NSkpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihtYWtl
U2ltcGxlQ29sb3IoMjMwLCAyMzAsIDIzMCkpOwogCiAgICAgICAgIEZsb2F0UG9pbnQgcG9zaXRp
b24gPSB7IDEwLCAyMCB9OwogICAgICAgICBTdHJpbmcgc3RyaW5nID0gICJDUFU6ICIgKyBjcHVV
c2FnZVN0cmluZyhnRGF0YS5jcHUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYWR3
YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Fkd2FpdGEvU2Nyb2xsYmFyVGhlbWVBZHdhaXRhLmNwcAkocmV2aXNpb24g
MjY0MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYWR3YWl0YS9TY3JvbGxiYXJUaGVt
ZUFkd2FpdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMyArNDMsMTMgQEAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG92ZXJsYXlUaHVtYlNpemUgPQogc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1p
bmltdW1UaHVtYlNpemUgPSA0MDsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB0aHVtYlNpemUgPSA2
Owogc3RhdGljIGNvbnN0IGRvdWJsZSBzY3JvbGxiYXJPcGFjaXR5ID0gMC44Owotc3RhdGljIGNv
bnN0IENvbG9yIHNjcm9sbGJhckJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTIs
IDI1MiwgMjUyKTsKLXN0YXRpYyBjb25zdCBDb2xvciBzY3JvbGxiYXJCb3JkZXJDb2xvciA9IG1h
a2VTaW1wbGVDb2xvcigyMjAsIDIyMywgMjI3KTsKLXN0YXRpYyBjb25zdCBDb2xvciBvdmVybGF5
VGh1bWJCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1LCAxMDApOwot
c3RhdGljIGNvbnN0IENvbG9yIG92ZXJsYXlUaHVtYkNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDQ2
LCA1MiwgNTQsIDEwMCk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgdGh1bWJIb3ZlcmVkQ29sb3IgPSBt
YWtlU2ltcGxlQ29sb3IoODYsIDkxLCA5Mik7Ci1zdGF0aWMgY29uc3QgQ29sb3IgdGh1bWJQcmVz
c2VkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjcsIDEwNiwgMjAzKTsKLXN0YXRpYyBjb25zdCBD
b2xvciB0aHVtYkNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDEyNiwgMTI5LCAxMzApOworc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIHNjcm9sbGJhckJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xv
cigyNTIsIDI1MiwgMjUyKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JvbGxiYXJCb3JkZXJD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMjAsIDIyMywgMjI3KTsKK3N0YXRpYyBjb25zdGV4cHIg
YXV0byBvdmVybGF5VGh1bWJCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwg
MjU1LCAxMDApOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIG92ZXJsYXlUaHVtYkNvbG9yID0gbWFr
ZVNpbXBsZUNvbG9yKDQ2LCA1MiwgNTQsIDEwMCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gdGh1
bWJIb3ZlcmVkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoODYsIDkxLCA5Mik7CitzdGF0aWMgY29u
c3RleHByIGF1dG8gdGh1bWJQcmVzc2VkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjcsIDEwNiwg
MjAzKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB0aHVtYkNvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDEyNiwgMTI5LCAxMzApOwogCiBib29sIFNjcm9sbGJhclRoZW1lQWR3YWl0YTo6dXNlc092ZXJs
YXlTY3JvbGxiYXJzKCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9uIDI2NDAzNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3Ig
bGlnaHRlbmVkQmxhY2sgeyAweEZGNTQ1NDU0IH07Ci1zdGF0aWMgY29uc3RleHByIFNpbXBsZUNv
bG9yIGRhcmtlbmVkV2hpdGUgeyAweEZGQUJBQkFCIH07CitzdGF0aWMgY29uc3RleHByIGF1dG8g
bGlnaHRlbmVkQmxhY2sgPSBtYWtlU2ltcGxlQ29sb3IoODQsIDg0LCA4NCk7CitzdGF0aWMgY29u
c3RleHByIGF1dG8gZGFya2VuZWRXaGl0ZSA9IG1ha2VTaW1wbGVDb2xvcigxNzEsIDE3MSwgMTcx
KTsKIAogQ29sb3I6OkNvbG9yKGNvbnN0IENvbG9yJiBvdGhlcikKICAgICA6IG1fY29sb3JEYXRh
KG90aGVyLm1fY29sb3JEYXRhKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvci5oCShyZXZpc2lvbiAyNjQwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsMTQgKzE2MywxNCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgRDJEMV9WRUNUT1JfNEYoKSBjb25zdDsK
ICNlbmRpZgogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBibGFjayB7IDB4RkYw
MDAwMDAgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIHdoaXRlIHsgMHhGRkZG
RkZGRiB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgZGFya0dyYXkgeyAweEZG
ODA4MDgwIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBncmF5IHsgMHhGRkEw
QTBBMCB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgbGlnaHRHcmF5IHsgMHhG
RkMwQzBDMCB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgdHJhbnNwYXJlbnQg
eyAweDAwMDAwMDAwIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBjeWFuIHsg
MHhGRjAwRkZGRiB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgeWVsbG93IHsg
MHhGRkZGRkYwMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBibGFjayA9IG1ha2VTaW1w
bGVDb2xvcigwLCAwLCAwKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gd2hpdGUgPSBtYWtl
U2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRh
cmtHcmF5ID0gbWFrZVNpbXBsZUNvbG9yKDEyOCwgMTI4LCAxMjgpOworICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBncmF5ID0gbWFrZVNpbXBsZUNvbG9yKDE2MCwgMTYwLCAxNjApOworICAgIHN0
YXRpYyBjb25zdGV4cHIgYXV0byBsaWdodEdyYXkgPSBtYWtlU2ltcGxlQ29sb3IoMTkyLCAxOTIs
IDE5Mik7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRyYW5zcGFyZW50ID0gbWFrZVNpbXBs
ZUNvbG9yKDAsIDAsIDAsIDApOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjeWFuID0gbWFr
ZVNpbXBsZUNvbG9yKDAsIDI1NSwgMjU1KTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8geWVs
bG93ID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAwKTsKIAogICAgIGJvb2wgaXNFeHRlbmRl
ZCgpIGNvbnN0IHsgcmV0dXJuICEobV9jb2xvckRhdGEuc2ltcGxlQ29sb3JBbmRGbGFncyAmIGlu
dmFsaWRTaW1wbGVDb2xvcik7IH0KICAgICBib29sIGlzU2ltcGxlKCkgY29uc3QgeyByZXR1cm4g
IWlzRXh0ZW5kZWQoKTsgfQpAQCAtMzAxLDEyICszMDEsMTIgQEAgaW5saW5lIGNvbnN0IEV4dGVu
ZGVkQ29sb3ImIENvbG9yOjphc0V4dAogaW5saW5lIGNvbnN0IFNpbXBsZUNvbG9yIENvbG9yOjph
c1NpbXBsZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzU2ltcGxlKCkpOwotICAgIHJldHVybiB7
IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2NvbG9yRGF0YS5zaW1wbGVDb2xvckFuZEZsYWdzID4+
IDMyKSB9OworICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoYXNTUkdCQShQYWNrZWQ6OlJHQkEg
eyBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9jb2xvckRhdGEuc2ltcGxlQ29sb3JBbmRGbGFncyA+
PiAzMikgfSkpOwogfQogCiBpbmxpbmUgdm9pZCBDb2xvcjo6c2V0U2ltcGxlQ29sb3IoU2ltcGxl
Q29sb3Igc2ltcGxlQ29sb3IpCiB7Ci0gICAgbV9jb2xvckRhdGEuc2ltcGxlQ29sb3JBbmRGbGFn
cyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaW1wbGVDb2xvci52YWx1ZSgpKSA8PCAzMjsKKyAg
ICBtX2NvbG9yRGF0YS5zaW1wbGVDb2xvckFuZEZsYWdzID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KFBhY2tlZDo6UkdCQSB7IHNpbXBsZUNvbG9yLmFzU1JHQkE8dWludDhfdD4oKSB9LnZhbHVlKSA8
PCAzMjsKICAgICB0YWdBc1ZhbGlkKCk7CiB9CiAKQEAgLTM1MCw3ICszNTAsNyBAQCB2b2lkIENv
bG9yOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uCiAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGVuY29kZSB3aGV0aGVyIHRoZSBjb2xvciBpcyBzZW1hbnRpYy4KIAogICAgIGVuY29kZXIg
PDwgdHJ1ZTsKLSAgICBlbmNvZGVyIDw8IGFzU2ltcGxlKCkudmFsdWUoKTsKKyAgICBlbmNvZGVy
IDw8IFBhY2tlZDo6UkdCQSB7IGFzU2ltcGxlKCkuYXNTUkdCQTx1aW50OF90PigpIH0udmFsdWU7
CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0zOTAsNyArMzkwLDcgQEAgT3B0aW9u
YWw8Q29sb3I+IENvbG9yOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUodmFsdWUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIENv
bG9yIHsgU2ltcGxlQ29sb3IgeyB2YWx1ZSB9IH07CisgICAgcmV0dXJuIENvbG9yIHsgbWFrZVNp
bXBsZUNvbG9yKGFzU1JHQkEoUGFja2VkOjpSR0JBIHsgdmFsdWUgfSkpIH07CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yQmxlbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCShyZXZpc2lvbiAyNjQwMzcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJsZW5kaW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAwLDcgKzEwMCw3IEBAIENvbG9yIGJsZW5kKGNvbnN0IENvbG9yJiBmcm9tLCBjb25z
dCBDb2wKICAgICBhdXRvIHByZW11bHRpcGxpZWRGcm9tID0gcHJlbXVsdGlwbGllZENlaWxpbmco
ZnJvbS50b1NSR0JBTG9zc3k8dWludDhfdD4oKSk7CiAgICAgYXV0byBwcmVtdWx0aXBsaWVkVG8g
PSBwcmVtdWx0aXBsaWVkQ2VpbGluZyh0by50b1NSR0JBTG9zc3k8dWludDhfdD4oKSk7CiAKLSAg
ICBhdXRvIHByZW11bHRpcGxpZWRCbGVuZGVkID0gY29udmVydFRvQ29tcG9uZW50Qnl0ZXM8U1JH
QkE+KAorICAgIGF1dG8gcHJlbXVsdGlwbGllZEJsZW5kZWQgPSBjbGFtcFRvQ29tcG9uZW50Qnl0
ZXM8U1JHQkE+KAogICAgICAgICBXZWJDb3JlOjpibGVuZChwcmVtdWx0aXBsaWVkRnJvbS5yZWQs
IHByZW11bHRpcGxpZWRUby5yZWQsIHByb2dyZXNzKSwKICAgICAgICAgV2ViQ29yZTo6YmxlbmQo
cHJlbXVsdGlwbGllZEZyb20uZ3JlZW4sIHByZW11bHRpcGxpZWRUby5ncmVlbiwgcHJvZ3Jlc3Mp
LAogICAgICAgICBXZWJDb3JlOjpibGVuZChwcmVtdWx0aXBsaWVkRnJvbS5ibHVlLCBwcmVtdWx0
aXBsaWVkVG8uYmx1ZSwgcHJvZ3Jlc3MpLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkocmV2aXNpb24gMjY0MDM3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDAsMTYgKzI0MCw0NCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVy
CiAKIC8vIFBhY2tlZCBDb2xvciBGb3JtYXRzCiAKK25hbWVzcGFjZSBQYWNrZWQgeworCitzdHJ1
Y3QgUkdCQSB7CisgICAgY29uc3RleHByIGV4cGxpY2l0IFJHQkEodWludDMyX3QgcmdiYSkKKyAg
ICAgICAgOiB2YWx1ZSB7IHJnYmEgfQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgZXhw
bGljaXQgUkdCQShTUkdCQTx1aW50OF90PiBjb2xvcikKKyAgICAgICAgOiB2YWx1ZSB7IHN0YXRp
Y19jYXN0PHVpbnQzMl90Pihjb2xvci5yZWQgPDwgMjQgfCBjb2xvci5ncmVlbiA8PCAxNiB8IGNv
bG9yLmJsdWUgPDwgOCB8IGNvbG9yLmFscGhhKSB9CisgICAgeworICAgIH0KKworICAgIHVpbnQz
Ml90IHZhbHVlOworfTsKKwogc3RydWN0IEFSR0IgeworICAgIGNvbnN0ZXhwciBleHBsaWNpdCBB
UkdCKHVpbnQzMl90IGFyZ2IpCisgICAgICAgIDogdmFsdWUgeyBhcmdiIH0KKyAgICB7CisgICAg
fQorCisgICAgY29uc3RleHByIGV4cGxpY2l0IEFSR0IoU1JHQkE8dWludDhfdD4gY29sb3IpCisg
ICAgICAgIDogdmFsdWUgeyBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY29sb3IuYWxwaGEgPDwgMjQg
fCBjb2xvci5yZWQgPDwgMTYgfCBjb2xvci5ncmVlbiA8PCA4IHwgY29sb3IuYmx1ZSkgfQorICAg
IHsKKyAgICB9CisKICAgICB1aW50MzJfdCB2YWx1ZTsKIH07CiAKLWNvbnN0ZXhwciBBUkdCIGFz
QVJHQihTUkdCQTx1aW50OF90PiBjb2xvcikKK30KKworY29uc3RleHByIFNSR0JBPHVpbnQ4X3Q+
IGFzU1JHQkEoUGFja2VkOjpSR0JBIGNvbG9yKQogewotICAgIHJldHVybiB7IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjb2xvci5hbHBoYSA8PCAyNCB8IGNvbG9yLnJlZCA8PCAxNiB8IGNvbG9yLmdy
ZWVuIDw8IDggfCBjb2xvci5ibHVlKSB9OworICAgIHJldHVybiB7IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KGNvbG9yLnZhbHVlID4+IDI0KSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oY29sb3IudmFsdWUg
Pj4gMTYpLCBzdGF0aWNfY2FzdDx1aW50OF90Pihjb2xvci52YWx1ZSA+PiA4KSwgc3RhdGljX2Nh
c3Q8dWludDhfdD4oY29sb3IudmFsdWUpIH07CiB9CiAKLWNvbnN0ZXhwciBTUkdCQTx1aW50OF90
PiBhc1NSR0JBKEFSR0IgY29sb3IpCitjb25zdGV4cHIgU1JHQkE8dWludDhfdD4gYXNTUkdCQShQ
YWNrZWQ6OkFSR0IgY29sb3IpCiB7CiAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dWludDhfdD4o
Y29sb3IudmFsdWUgPj4gMTYpLCBzdGF0aWNfY2FzdDx1aW50OF90Pihjb2xvci52YWx1ZSA+PiA4
KSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oY29sb3IudmFsdWUpLCBzdGF0aWNfY2FzdDx1aW50OF90
Pihjb2xvci52YWx1ZSA+PiAyNCkgfTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDI2NDAzNykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBTUkdCQTx1aW50OF90PiBwcmVtdWx0aXBs
aWVkRmxvb3JpbmcoU1JHCiAgICAgICAgIHJldHVybiB7IDAsIDAsIDAsIDAgfTsKICAgICBpZiAo
YSA9PSAyNTUpCiAgICAgICAgIHJldHVybiBjb2xvcjsKLSAgICByZXR1cm4gY29udmVydFRvQ29t
cG9uZW50Qnl0ZXM8U1JHQkE+KGZhc3REaXZpZGVCeTI1NShyICogYSksIGZhc3REaXZpZGVCeTI1
NShnICogYSksIGZhc3REaXZpZGVCeTI1NShiICogYSksIGEpOworICAgIHJldHVybiBjbGFtcFRv
Q29tcG9uZW50Qnl0ZXM8U1JHQkE+KGZhc3REaXZpZGVCeTI1NShyICogYSksIGZhc3REaXZpZGVC
eTI1NShnICogYSksIGZhc3REaXZpZGVCeTI1NShiICogYSksIGEpOwogfQogCiBTUkdCQTx1aW50
OF90PiBwcmVtdWx0aXBsaWVkQ2VpbGluZyhTUkdCQTx1aW50OF90PiBjb2xvcikKQEAgLTg5LDcg
Kzg5LDcgQEAgU1JHQkE8dWludDhfdD4gcHJlbXVsdGlwbGllZENlaWxpbmcoU1JHQgogICAgICAg
ICByZXR1cm4geyAwLCAwLCAwLCAwIH07CiAgICAgaWYgKGEgPT0gMjU1KQogICAgICAgICByZXR1
cm4gY29sb3I7Ci0gICAgcmV0dXJuIGNvbnZlcnRUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihmYXN0
RGl2aWRlQnkyNTUociAqIGEgKyAyNTQpLCBmYXN0RGl2aWRlQnkyNTUoZyAqIGEgKyAyNTQpLCBm
YXN0RGl2aWRlQnkyNTUoYiAqIGEgKyAyNTQpLCBhKTsKKyAgICByZXR1cm4gY2xhbXBUb0NvbXBv
bmVudEJ5dGVzPFNSR0JBPihmYXN0RGl2aWRlQnkyNTUociAqIGEgKyAyNTQpLCBmYXN0RGl2aWRl
QnkyNTUoZyAqIGEgKyAyNTQpLCBmYXN0RGl2aWRlQnkyNTUoYiAqIGEgKyAyNTQpLCBhKTsKIH0K
IAogc3RhdGljIGlubGluZSB1aW50MTZfdCB1bnByZW11bHRpcGxpZWRDb21wb25lbnRCeXRlKHVp
bnQ4X3QgYywgdWludDhfdCBhKQpAQCAtMTAyLDcgKzEwMiw3IEBAIFNSR0JBPHVpbnQ4X3Q+IHVu
cHJlbXVsdGlwbGllZChTUkdCQTx1aW4KICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbG9yOwog
ICAgIGlmICghYSB8fCBhID09IDI1NSkKICAgICAgICAgcmV0dXJuIGNvbG9yOwotICAgIHJldHVy
biBjb252ZXJ0VG9Db21wb25lbnRCeXRlczxTUkdCQT4odW5wcmVtdWx0aXBsaWVkQ29tcG9uZW50
Qnl0ZShyLCBhKSwgdW5wcmVtdWx0aXBsaWVkQ29tcG9uZW50Qnl0ZShnLCBhKSwgdW5wcmVtdWx0
aXBsaWVkQ29tcG9uZW50Qnl0ZShiLCBhKSwgYSk7CisgICAgcmV0dXJuIGNsYW1wVG9Db21wb25l
bnRCeXRlczxTUkdCQT4odW5wcmVtdWx0aXBsaWVkQ29tcG9uZW50Qnl0ZShyLCBhKSwgdW5wcmVt
dWx0aXBsaWVkQ29tcG9uZW50Qnl0ZShnLCBhKSwgdW5wcmVtdWx0aXBsaWVkQ29tcG9uZW50Qnl0
ZShiLCBhKSwgYSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAkocmV2aXNp
b24gMjY0MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGls
aXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsMTYgQEAgaW5saW5lIHVpbnQ4X3Qg
Y29udmVydFRvQ29tcG9uZW50Qnl0ZShmbAogICAgIHJldHVybiBzdGQ6OmNsYW1wKHN0ZDo6bHJv
dW5kKGYgKiAyNTUuMGYpLCAwbCwgMjU1bCk7CiB9CiAKK2NvbnN0ZXhwciB1aW50OF90IGNsYW1w
VG9Db21wb25lbnRCeXRlKGludCBjKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90
PihzdGQ6OmNsYW1wKGMsIDAsIDB4RkYpKTsKK30KKworY29uc3RleHByIHVpbnQ4X3QgY2xhbXBU
b0NvbXBvbmVudEZsb2F0KGZsb2F0IGYpCit7CisgICAgcmV0dXJuIHN0ZDo6Y2xhbXAoZiwgMC4w
ZiwgMS4wZik7Cit9CisKIGNvbnN0ZXhwciBmbG9hdCBjb252ZXJ0VG9Db21wb25lbnRGbG9hdCh1
aW50OF90IGJ5dGUpCiB7CiAgICAgcmV0dXJuIGJ5dGUgLyAyNTUuMGY7CkBAIC02NSwyMCArNzUs
MjAgQEAgdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbAogICAgIHJldHVy
biB7IGNvbnZlcnRUb0NvbXBvbmVudEJ5dGUoY29tcG9uZW50c1swXSksIGNvbnZlcnRUb0NvbXBv
bmVudEJ5dGUoY29tcG9uZW50c1sxXSksIGNvbnZlcnRUb0NvbXBvbmVudEJ5dGUoY29tcG9uZW50
c1syXSksIGNvbnZlcnRUb0NvbXBvbmVudEJ5dGUoY29tcG9uZW50c1szXSkgfTsKIH0KIAotdGVt
cGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHByIENv
bG9yVHlwZTx1aW50OF90PiBjb252ZXJ0VG9Db21wb25lbnRCeXRlcyhpbnQgciwgaW50IGcsIGlu
dCBiLCBpbnQgYSkKLXsKLSAgICByZXR1cm4geyBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OmNs
YW1wKHIsIDAsIDB4RkYpKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFtcChnLCAwLCAw
eEZGKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoYiwgMCwgMHhGRikpLCBzdGF0
aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1wKGEsIDAsIDB4RkYpKSB9OwotfQotCiB0ZW1wbGF0
ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JU
eXBlPGZsb2F0PiBjb252ZXJ0VG9Db21wb25lbnRGbG9hdHMoY29uc3QgQ29sb3JUeXBlPHVpbnQ4
X3Q+JiBjb2xvcikKIHsKICAgICBhdXRvIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhj
b2xvcik7CiAgICAgcmV0dXJuIHsgY29udmVydFRvQ29tcG9uZW50RmxvYXQoY29tcG9uZW50c1sw
XSksIGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0KGNvbXBvbmVudHNbMV0pLCBjb252ZXJ0VG9Db21w
b25lbnRGbG9hdChjb21wb25lbnRzWzJdKSwgY29udmVydFRvQ29tcG9uZW50RmxvYXQoY29tcG9u
ZW50c1szXSkgfTsKIH0KIAotdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENv
bG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZTxmbG9hdD4gY29udmVydFRvQ29tcG9uZW50Rmxv
YXRzKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCit0ZW1wbGF0ZTx0ZW1wbGF0
ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlPHVpbnQ4
X3Q+IGNsYW1wVG9Db21wb25lbnRCeXRlcyhpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKK3sK
KyAgICByZXR1cm4geyBjbGFtcFRvQ29tcG9uZW50Qnl0ZShyKSwgY2xhbXBUb0NvbXBvbmVudEJ5
dGUoZyksIGNsYW1wVG9Db21wb25lbnRCeXRlKGIpLCBjbGFtcFRvQ29tcG9uZW50Qnl0ZShhKSB9
OworfQorCit0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBj
b25zdGV4cHIgQ29sb3JUeXBlPGZsb2F0PiBjbGFtcFRvQ29tcG9uZW50RmxvYXRzKGZsb2F0IHIs
IGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCiB7Ci0gICAgcmV0dXJuIHsgc3RkOjpjbGFtcChy
LCAwLjBmLCAxLjBmKSwgc3RkOjpjbGFtcChnLCAwLjBmLCAxLjBmKSwgc3RkOjpjbGFtcChiLCAw
LjBmLCAxLjBmKSwgc3RkOjpjbGFtcChhLCAwLjBmLCAxLjBmKSB9OworICAgIHJldHVybiB7IGNs
YW1wVG9Db21wb25lbnRGbG9hdChyKSwgY2xhbXBUb0NvbXBvbmVudEZsb2F0KGcpLCBjbGFtcFRv
Q29tcG9uZW50RmxvYXQoYiksIGNsYW1wVG9Db21wb25lbnRGbG9hdChhKSB9OwogfQogCiBjb25z
dGV4cHIgdWludDE2X3QgZmFzdE11bHRpcGx5QnkyNTUodWludDE2X3QgdmFsdWUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0
b3JlLmgJKHJldmlzaW9uIDI2NDAzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQmFja2luZ1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3ICsxNTIsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGlmICghYSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBhdXRvIHBpeGVsID0gYXNTUkdCQShBUkdCIHsgKmRlc3QgfSk7CisgICAgICAgIGF1dG8gcGl4
ZWwgPSBhc1NSR0JBKFBhY2tlZDo6QVJHQiB7ICpkZXN0IH0pOwogCiAgICAgICAgIGlmIChhID49
IDI1NSB8fCAhcGl4ZWwuYWxwaGEpIHsKICAgICAgICAgICAgIHNldFBpeGVsKGRlc3QsIHIsIGcs
IGIsIGEpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFtX3ByZW11
bHRpcGx5QWxwaGEpCiAgICAgICAgICAgICByZXN1bHQgPSB1bnByZW11bHRpcGxpZWQocmVzdWx0
KTsKIAotICAgICAgICAqZGVzdCA9IGFzQVJHQihyZXN1bHQpLnZhbHVlOworICAgICAgICAqZGVz
dCA9IFBhY2tlZDo6QVJHQiB7IHJlc3VsdCB9LnZhbHVlOwogICAgIH0KIAogICAgIHN0YXRpYyBi
b29sIGlzT3ZlclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTIzMSw3ICsyMzEsNyBAQCBw
cml2YXRlOgogICAgICAgICBpZiAobV9wcmVtdWx0aXBseUFscGhhICYmIGEgPCAyNTUpCiAgICAg
ICAgICAgICByZXN1bHQgPSBwcmVtdWx0aXBsaWVkRmxvb3JpbmcocmVzdWx0KTsKIAotICAgICAg
ICByZXR1cm4gYXNBUkdCKHJlc3VsdCkudmFsdWU7CisgICAgICAgIHJldHVybiBQYWNrZWQ6OkFS
R0IgeyByZXN1bHQgfS52YWx1ZTsKICAgICB9CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4gbV9waXhlbHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaW1wbGVDb2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NpbXBsZUNvbG9yLmgJKHJldmlzaW9uIDI2NDAzNykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDM4ICszMiwzMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIENvbG9yIHZhbHVlIHdp
dGggOC1iaXQgY29tcG9uZW50cyBmb3IgcmVkLCBncmVlbiwgYmx1ZSwgYW5kIGFscGhhLgotLy8g
Rm9yIGhpc3RvcmljYWwgcmVhc29ucywgc3RvcmVkIGFzIGEgMzItYml0IGludGVnZXIsIHdpdGgg
YWxwaGEgaW4gdGhlIGhpZ2ggYml0czogQVJHQi4KIGNsYXNzIFNpbXBsZUNvbG9yIHsKIHB1Ymxp
YzoKLSAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IodWludDMyX3QgdmFsdWUgPSAwKSA6IG1fdmFs
dWUgeyB2YWx1ZSB9IHsgfQotICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvcih1aW50OF90IHIsIHVp
bnQ4X3QgZywgdWludDhfdCBiLCB1aW50OF90IGEpIDogbV92YWx1ZSB7IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihhIDw8IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGIpIH0geyB9CisgICAgY29uc3Rl
eHByIFNpbXBsZUNvbG9yKCkgOiBtX3ZhbHVlIHsgfSB7IH0KKyAgICBjb25zdGV4cHIgU2ltcGxl
Q29sb3IodWludDhfdCByLCB1aW50OF90IGcsIHVpbnQ4X3QgYiwgdWludDhfdCBhKSA6IG1fdmFs
dWUgeyByLCBnLCBiLCBhIH0geyB9CiAKLSAgICBjb25zdGV4cHIgdWludDMyX3QgdmFsdWVBc0FS
R0IoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0gICAgY29uc3RleHByIHVpbnQzMl90IHZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgIGNvbnN0ZXhwciB1aW50OF90IGFs
cGhhQ29tcG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5hbHBoYTsgfQorICAgIGNvbnN0
ZXhwciBmbG9hdCBhbHBoYUNvbXBvbmVudEFzRmxvYXQoKSBjb25zdCB7IHJldHVybiBjb252ZXJ0
VG9Db21wb25lbnRGbG9hdChtX3ZhbHVlLmFscGhhKTsgfQogCi0gICAgY29uc3RleHByIHVpbnQ4
X3QgYWxwaGFDb21wb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID4+IDI0OyB9Ci0gICAg
Y29uc3RleHByIGZsb2F0IGFscGhhQ29tcG9uZW50QXNGbG9hdCgpIGNvbnN0IHsgcmV0dXJuIGNv
bnZlcnRUb0NvbXBvbmVudEZsb2F0KGFscGhhQ29tcG9uZW50KCkpOyB9Ci0KLSAgICBjb25zdGV4
cHIgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIGFscGhhQ29tcG9uZW50KCkgPT0gMHhG
RjsgfQotICAgIGNvbnN0ZXhwciBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIGFscGhh
Q29tcG9uZW50KCk7IH0KKyAgICBjb25zdGV4cHIgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWUuYWxwaGEgPT0gMHhGRjsgfQorICAgIGNvbnN0ZXhwciBib29sIGlzVmlzaWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuYWxwaGE7IH0KIAogICAgIGNvbnN0ZXhwciBTaW1w
bGVDb2xvciBjb2xvcldpdGhBbHBoYSh1aW50OF90IGFscGhhKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHsgKG1fdmFsdWUgJiAweDAwRkZGRkZGKSB8IGFscGhhIDw8IDI0IH07CisgICAg
ICAgIHJldHVybiB7IG1fdmFsdWUucmVkLCBtX3ZhbHVlLmdyZWVuLCBtX3ZhbHVlLmJsdWUsIGFs
cGhhIH07CiAgICAgfQogCiAgICAgY29uc3RleHByIFNpbXBsZUNvbG9yIGludmVydGVkQ29sb3JX
aXRoQWxwaGEodWludDhfdCBhbHBoYSkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiB7IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KDB4RkYgLSByZWRDb21wb25lbnQoKSksIHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KDB4RkYgLSBncmVlbkNvbXBvbmVudCgpKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oMHhG
RiAtIGJsdWVDb21wb25lbnQoKSksIGFscGhhIH07CisgICAgICAgIHJldHVybiB7IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KDB4RkYgLSBtX3ZhbHVlLnJlZCksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KDB4
RkYgLSBtX3ZhbHVlLmdyZWVuKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oMHhGRiAtIG1fdmFsdWUu
Ymx1ZSksIGFscGhhIH07CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3Rl
eHByIFNSR0JBPFQ+IGFzU1JHQkEoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX3NhbWVfdjxULCBmbG9hdD4pCi0gICAgICAgICAgICByZXR1cm4geyBjb252ZXJ0
VG9Db21wb25lbnRGbG9hdChyZWRDb21wb25lbnQoKSksIGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0
KGdyZWVuQ29tcG9uZW50KCkpLCBjb252ZXJ0VG9Db21wb25lbnRGbG9hdChibHVlQ29tcG9uZW50
KCkpLCAgY29udmVydFRvQ29tcG9uZW50RmxvYXQoYWxwaGFDb21wb25lbnQoKSkgfTsKKyAgICAg
ICAgICAgIHJldHVybiBjb252ZXJ0VG9Db21wb25lbnRGbG9hdHMobV92YWx1ZSk7CiAgICAgICAg
IGVsc2UgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxULCB1aW50OF90PikKLSAgICAgICAg
ICAgIHJldHVybiB7IHJlZENvbXBvbmVudCgpLCBncmVlbkNvbXBvbmVudCgpLCBibHVlQ29tcG9u
ZW50KCksIGFscGhhQ29tcG9uZW50KCkgfTsKKyAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlOwog
ICAgIH0KIAogICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IE4+CkBAIC03MSwyMSArNjYsMTcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChOIDwgNCk7CiAgICAgICAgIGlm
IGNvbnN0ZXhwciAoIU4pCi0gICAgICAgICAgICByZXR1cm4gcmVkQ29tcG9uZW50KCk7CisgICAg
ICAgICAgICByZXR1cm4gbV92YWx1ZS5yZWQ7CiAgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChO
ID09IDEpCi0gICAgICAgICAgICByZXR1cm4gZ3JlZW5Db21wb25lbnQoKTsKKyAgICAgICAgICAg
IHJldHVybiBtX3ZhbHVlLmdyZWVuOwogICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoTiA9PSAy
KQotICAgICAgICAgICAgcmV0dXJuIGJsdWVDb21wb25lbnQoKTsKKyAgICAgICAgICAgIHJldHVy
biBtX3ZhbHVlLmJsdWU7CiAgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChOID09IDMpCi0gICAg
ICAgICAgICByZXR1cm4gYWxwaGFDb21wb25lbnQoKTsKKyAgICAgICAgICAgIHJldHVybiBtX3Zh
bHVlLmFscGhhOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBjb25zdGV4cHIgdWludDhfdCByZWRD
b21wb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID4+IDE2OyB9Ci0gICAgY29uc3RleHBy
IHVpbnQ4X3QgZ3JlZW5Db21wb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID4+IDg7IH0K
LSAgICBjb25zdGV4cHIgdWludDhfdCBibHVlQ29tcG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZTsgfQotCi0gICAgdWludDMyX3QgbV92YWx1ZSB7IDAgfTsKKyAgICBTUkdCQTx1aW50OF90
PiBtX3ZhbHVlIHsgMCwgMCwgMCwgMCB9OwogfTsKIAogYm9vbCBvcGVyYXRvcj09KFNpbXBsZUNv
bG9yLCBTaW1wbGVDb2xvcik7CkBAIC05OCw3ICs4OSw3IEBAIFNpbXBsZUNvbG9yIG1ha2VTaW1w
bGVDb2xvcihjb25zdCBTUkdCQTwKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShTaW1wbGVDb2xv
ciBhLCBTaW1wbGVDb2xvciBiKQogewotICAgIHJldHVybiBhLnZhbHVlKCkgPT0gYi52YWx1ZSgp
OworICAgIHJldHVybiBhLmFzU1JHQkE8dWludDhfdD4oKSA9PSBiLmFzU1JHQkE8dWludDhfdD4o
KTsKIH0KIAogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShTaW1wbGVDb2xvciBhLCBTaW1wbGVDb2xv
ciBiKQpAQCAtMTA2LDI0ICs5NywyNCBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFNpbXBsZUNv
bG9yIGEsIFNpCiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAotY29uc3RleHByIFNpbXBsZUNv
bG9yIG1ha2VTaW1wbGVDb2xvcihpbnQgciwgaW50IGcsIGludCBiKQorY29uc3RleHByIFNpbXBs
ZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihjb25zdCBTUkdCQTx1aW50OF90PiYgc1JHQkEpCiB7Ci0g
ICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFtcChyLCAwLCAweEZGKSks
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoZywgMCwgMHhGRikpLCBzdGF0aWNfY2Fz
dDx1aW50OF90PihzdGQ6OmNsYW1wKGIsIDAsIDB4RkYpKSwgMHhGRiB9OworICAgIHJldHVybiB7
IHNSR0JBLnJlZCwgc1JHQkEuZ3JlZW4sIHNSR0JBLmJsdWUsIHNSR0JBLmFscGhhIH07CiB9CiAK
LWNvbnN0ZXhwciBTaW1wbGVDb2xvciBtYWtlU2ltcGxlQ29sb3IoaW50IHIsIGludCBnLCBpbnQg
YiwgaW50IGEpCitpbmxpbmUgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yKGNvbnN0IFNSR0JB
PGZsb2F0PiYgc1JHQkEpCiB7Ci0gICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3Rk
OjpjbGFtcChyLCAwLCAweEZGKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoZywg
MCwgMHhGRikpLCBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1wKGIsIDAsIDB4RkYpKSwg
c3RhdGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFtcChhLCAwLCAweEZGKSkgfTsKKyAgICByZXR1
cm4gbWFrZVNpbXBsZUNvbG9yKGNvbnZlcnRUb0NvbXBvbmVudEJ5dGVzKHNSR0JBKSk7CiB9CiAK
LWNvbnN0ZXhwciBTaW1wbGVDb2xvciBtYWtlU2ltcGxlQ29sb3IoY29uc3QgU1JHQkE8dWludDhf
dD4mIHNSR0JBKQorY29uc3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihpbnQgciwg
aW50IGcsIGludCBiKQogewotICAgIHJldHVybiB7IHNSR0JBLnJlZCwgc1JHQkEuZ3JlZW4sIHNS
R0JBLmJsdWUsIHNSR0JBLmFscGhhIH07CisgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcihjbGFt
cFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHIsIGcsIGIsIDB4RkYpKTsKIH0KIAotaW5saW5lIFNp
bXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4mIHNSR0JBKQorY29u
c3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihpbnQgciwgaW50IGcsIGludCBiLCBp
bnQgYSkKIHsKLSAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKGNvbnZlcnRUb0NvbXBvbmVudEJ5
dGVzKHNSR0JBKSk7CisgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcihjbGFtcFRvQ29tcG9uZW50
Qnl0ZXM8U1JHQkE+KHIsIGcsIGIsIGEpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9Q
bGF0Zm9ybUNBTGF5ZXIuY3BwCShyZXZpc2lvbiAyNjQwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NCw5ICs4NCw5IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXQK
ICAgICBjb25zdCBmbG9hdCB2ZXJ0aWNhbE1hcmdpbiA9IDIuNTsKICAgICBjb25zdCBmbG9hdCBo
b3Jpem9udGFsTWFyZ2luID0gNTsKICAgICBjb25zdCB1bnNpZ25lZCBmb250U2l6ZSA9IDIyOwot
ICAgIGNvbnN0ZXhwciBhdXRvIGJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigxMjgs
IDY0LCAyNTUsIDI1NSk7Ci0gICAgY29uc3RleHByIGF1dG8gYWNjZWxlcmF0ZWRDb250ZXh0TGFi
ZWxDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDAsIDI1NSk7Ci0gICAgY29uc3RleHBy
IGF1dG8gdW5hY2NlbGVyYXRlZENvbnRleHRMYWJlbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1
NSwgMjU1LCAyNTUsIDI1NSk7CisgICAgY29uc3RleHByIGF1dG8gYmFja2dyb3VuZENvbG9yID0g
bWFrZVNpbXBsZUNvbG9yKDEyOCwgNjQsIDI1NSk7CisgICAgY29uc3RleHByIGF1dG8gYWNjZWxl
cmF0ZWRDb250ZXh0TGFiZWxDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDApOworICAg
IGNvbnN0ZXhwciBhdXRvIHVuYWNjZWxlcmF0ZWRDb250ZXh0TGFiZWxDb2xvciA9IG1ha2VTaW1w
bGVDb2xvcigyNTUsIDI1NSwgMjU1KTsKICAgICBjb25zdGV4cHIgYXV0byBsaW5lYXJHbHlwaE1h
c2tPdXRsaW5lQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMTkyKTsKICAgICBjb25z
dGV4cHIgYXV0byBkaXNwbGF5TGlzdEJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAs
IDAsIDE2Nik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1h
Z2VTdXJmYWNlQmFja2VuZC5jcHAJKHJldmlzaW9uIDI2NDAzNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsOSArODAsOSBAQCB2b2lkIEltYWdlQnVmZmVy
Q2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kCiAgICAgICAgIHVuc2lnbmVkKiByb3cgPSByZWludGVy
cHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGRhdGFTcmMgKyBzdHJpZGUgKiB5KTsKICAgICAgICAg
Zm9yIChpbnQgeCA9IDA7IHggPCBtX2xvZ2ljYWxTaXplLndpZHRoKCk7IHgrKykgewogICAgICAg
ICAgICAgdW5zaWduZWQqIHBpeGVsID0gcm93ICsgeDsKLSAgICAgICAgICAgIGF1dG8gcGl4ZWxD
b21wb25lbnRzID0gdW5wcmVtdWx0aXBsaWVkKGFzU1JHQkEoQVJHQiB7ICpwaXhlbCB9KSk7Cisg
ICAgICAgICAgICBhdXRvIHBpeGVsQ29tcG9uZW50cyA9IHVucHJlbXVsdGlwbGllZChhc1NSR0JB
KFBhY2tlZDo6QVJHQiB7ICpwaXhlbCB9KSk7CiAgICAgICAgICAgICBwaXhlbENvbXBvbmVudHMg
PSB7IGxvb2tVcFRhYmxlW3BpeGVsQ29tcG9uZW50cy5yZWRdLCBsb29rVXBUYWJsZVtwaXhlbENv
bXBvbmVudHMuZ3JlZW5dLCBsb29rVXBUYWJsZVtwaXhlbENvbXBvbmVudHMuYmx1ZV0sIHBpeGVs
Q29tcG9uZW50cy5hbHBoYSB9OwotICAgICAgICAgICAgKnBpeGVsID0gYXNBUkdCKHByZW11bHRp
cGxpZWRDZWlsaW5nKHBpeGVsQ29tcG9uZW50cykpLnZhbHVlOworICAgICAgICAgICAgKnBpeGVs
ID0gUGFja2VkOjpBUkdCIHsgcHJlbXVsdGlwbGllZENlaWxpbmcocGl4ZWxDb21wb25lbnRzKSB9
LnZhbHVlOwogICAgICAgICB9CiAgICAgfQogICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eV9y
ZWN0YW5nbGUobV9zdXJmYWNlLmdldCgpLCAwLCAwLCBtX2xvZ2ljYWxTaXplLndpZHRoKCksIG1f
bG9naWNhbFNpemUuaGVpZ2h0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAJKHJldmlz
aW9uIDI2NDAzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05h
dGl2ZUltYWdlQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIENvbG9y
IG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGMKICAgICAgICAgcmV0dXJuIENvbG9y
KCk7CiAKICAgICB1bnNpZ25lZCogcGl4ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25l
ZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2UuZ2V0KCkpKTsKLSAgICByZXR1
cm4gbWFrZVNpbXBsZUNvbG9yKHVucHJlbXVsdGlwbGllZChhc1NSR0JBKEFSR0IgeyAqcGl4ZWwg
fSkpKTsKKyAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKHVucHJlbXVsdGlwbGllZChhc1NSR0JB
KFBhY2tlZDo6QVJHQiB7ICpwaXhlbCB9KSkpOwogfQogCiB2b2lkIGRyYXdOYXRpdmVJbWFnZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAJKHJldmlzaW9uIDI2NDAzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksMjQgKzEyOSwyMiBAQCBzdGF0
aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvCiBDR0NvbG9yUmVmIGNhY2hlZENH
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmIChjb2xvci5pc1NpbXBsZSgpKSB7
Ci0gICAgICAgIHN3aXRjaCAoY29sb3IuYXNTaW1wbGUoKS52YWx1ZSgpKSB7Ci0gICAgICAgIGNh
c2UgQ29sb3I6OnRyYW5zcGFyZW50LnZhbHVlKCk6IHsKKyAgICAgICAgc3dpdGNoIChQYWNrZWQ6
OlJHQkEgeyBjb2xvci5hc1NpbXBsZSgpLmFzU1JHQkE8dWludDhfdD4oKSB9LnZhbHVlKSB7Cisg
ICAgICAgIGNhc2UgUGFja2VkOjpSR0JBIHsgQ29sb3I6OnRyYW5zcGFyZW50LmFzU1JHQkE8dWlu
dDhfdD4oKSB9LnZhbHVlOiB7CiAgICAgICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiB0cmFuc3Bh
cmVudENHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7CiAgICAgICAgICAgICByZXR1cm4gdHJh
bnNwYXJlbnRDR0NvbG9yOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ29sb3I6OmJsYWNrLnZh
bHVlKCk6IHsKKyAgICAgICAgY2FzZSBQYWNrZWQ6OlJHQkEgeyBDb2xvcjo6YmxhY2suYXNTUkdC
QTx1aW50OF90PigpIH0udmFsdWU6IHsKICAgICAgICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIGJs
YWNrQ0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsKICAgICAgICAgICAgIHJldHVybiBibGFj
a0NHQ29sb3I7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBDb2xvcjo6d2hpdGUudmFsdWUoKTog
eworICAgICAgICBjYXNlIFBhY2tlZDo6UkdCQSB7IENvbG9yOjp3aGl0ZS5hc1NSR0JBPHVpbnQ4
X3Q+KCkgfS52YWx1ZTogewogICAgICAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgd2hpdGVDR0Nv
bG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogICAgICAgICAgICAgcmV0dXJuIHdoaXRlQ0dDb2xv
cjsKICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgQVNTRVJUKGNvbG9yLmlzRXh0
ZW5kZWQoKSB8fCBjb2xvci5hc1NpbXBsZSgpLnZhbHVlKCkpOwotCiAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFRpbnlMUlVDYWNoZTxDb2xvciwgUmV0YWluUHRyPENHQ29sb3JSZWY+LCAzMj4+
IGNhY2hlOwogICAgIHJldHVybiBjYWNoZS5nZXQoKS5nZXQoY29sb3IpLmdldCgpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5t
bQkocmV2aXNpb24gMjY0MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBi
b29sIHVzZU9sZEFxdWFGb2N1c1JpbmdDb2xvcjsKIAogQ29sb3Igb2xkQXF1YUZvY3VzUmluZ0Nv
bG9yKCkKIHsKLSAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGN0RBREQ5IH07CisgICAgcmV0
dXJuIG1ha2VTaW1wbGVDb2xvcigxMjUsIDE3MywgMjE3KTsKIH0KIAogdm9pZCBzZXRVc2VzVGVz
dE1vZGVGb2N1c1JpbmdDb2xvcihib29sIG5ld1ZhbHVlKQpAQCAtMTIzLDE2ICsxMjMsMTYgQEAg
Q29sb3Igc2VtYW50aWNDb2xvckZyb21OU0NvbG9yKE5TQ29sb3IgKgogTlNDb2xvciAqbnNDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKGNvbG9yLmlzU2ltcGxlKCkpIHsKLSAg
ICAgICAgc3dpdGNoIChjb2xvci5hc1NpbXBsZSgpLnZhbHVlKCkpIHsKLSAgICAgICAgY2FzZSBD
b2xvcjo6dHJhbnNwYXJlbnQudmFsdWUoKTogeworICAgICAgICBzd2l0Y2ggKFBhY2tlZDo6UkdC
QSB7IGNvbG9yLmFzU2ltcGxlKCkuYXNTUkdCQTx1aW50OF90PigpIH0udmFsdWUpIHsKKyAgICAg
ICAgY2FzZSBQYWNrZWQ6OlJHQkEgeyBDb2xvcjo6dHJhbnNwYXJlbnQuYXNTUkdCQTx1aW50OF90
PigpIH0udmFsdWU6IHsKICAgICAgICAgICAgIHN0YXRpYyBOU0NvbG9yICpjbGVhckNvbG9yID0g
W1tOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MCBncmVlbjowIGJsdWU6MCBhbHBoYTowXSByZXRh
aW5dOwogICAgICAgICAgICAgcmV0dXJuIGNsZWFyQ29sb3I7CiAgICAgICAgIH0KLSAgICAgICAg
Y2FzZSBDb2xvcjo6YmxhY2sudmFsdWUoKTogeworICAgICAgICBjYXNlIFBhY2tlZDo6UkdCQSB7
IENvbG9yOjpibGFjay5hc1NSR0JBPHVpbnQ4X3Q+KCkgfS52YWx1ZTogewogICAgICAgICAgICAg
c3RhdGljIE5TQ29sb3IgKmJsYWNrQ29sb3IgPSBbW05TQ29sb3IgY29sb3JXaXRoU1JHQlJlZDow
IGdyZWVuOjAgYmx1ZTowIGFscGhhOjFdIHJldGFpbl07CiAgICAgICAgICAgICByZXR1cm4gYmxh
Y2tDb2xvcjsKICAgICAgICAgfQotICAgICAgICBjYXNlIENvbG9yOjp3aGl0ZS52YWx1ZSgpOiB7
CisgICAgICAgIGNhc2UgUGFja2VkOjpSR0JBIHsgQ29sb3I6OndoaXRlLmFzU1JHQkE8dWludDhf
dD4oKSB9LnZhbHVlOiB7CiAgICAgICAgICAgICBzdGF0aWMgTlNDb2xvciAqd2hpdGVDb2xvciA9
IFtbTlNDb2xvciBjb2xvcldpdGhTUkdCUmVkOjEgZ3JlZW46MSBibHVlOjEgYWxwaGE6MV0gcmV0
YWluXTsKICAgICAgICAgICAgIHJldHVybiB3aGl0ZUNvbG9yOwogICAgICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHRDR1dpbi5jcHAJKHJldmlzaW9uIDI2NDAzNykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5OCwxMiArMTk4LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
RG90c0ZvckRvY3VtZW4KICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4
dCgpOwogICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAKLSAgICBzdGF0aWMgY29u
c3RleHByIFNpbXBsZUNvbG9yIHNwZWxsaW5nUGF0dGVybkNvbG9yIHsgbWFrZVNpbXBsZUNvbG9y
KDI1NSwgMCwgMCkgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIGdyYW1tYXJQ
YXR0ZXJuQ29sb3IgeyBtYWtlU2ltcGxlQ29sb3IoMCwgMTI4LCAwKSB9OworICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBzcGVsbGluZ1BhdHRlcm5Db2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUs
IDAsIDApOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBncmFtbWFyUGF0dGVybkNvbG9yID0g
bWFrZVNpbXBsZUNvbG9yKDAsIDEyOCwgMCk7CiAKLSAgICBjb25zdCBTaW1wbGVDb2xvciYgcGF0
dGVybkNvbG9yID0gc3R5bGUubW9kZSA9PSBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6
R3JhbW1hciA/IGdyYW1tYXJQYXR0ZXJuQ29sb3IgOiBzcGVsbGluZ1BhdHRlcm5Db2xvcjsKLSAg
ICBhdXRvIHBhdHRlcm5Db2xvckNvbXBvbmVudHMgPSBwYXR0ZXJuQ29sb3IuYXNTUkdCQTx1aW50
OF90PigpOwotICAgIENHQ29udGV4dFNldFJHQlN0cm9rZUNvbG9yKGNvbnRleHQsIHBhdHRlcm5D
b2xvckNvbXBvbmVudHMucmVkLCBwYXR0ZXJuQ29sb3JDb21wb25lbnRzLmdyZWVuLCBwYXR0ZXJu
Q29sb3JDb21wb25lbnRzLmJsdWUsIHBhdHRlcm5Db2xvckNvbXBvbmVudHMuYWxwaGEpOworICAg
IGF1dG8gW3IsIGcsIGIsIGFdID0gc3R5bGUubW9kZSA9PSBEb2N1bWVudE1hcmtlckxpbmVTdHls
ZTo6TW9kZTo6R3JhbW1hciA/IGdyYW1tYXJQYXR0ZXJuQ29sb3IgOiBzcGVsbGluZ1BhdHRlcm5D
b2xvcjsKKyAgICBDR0NvbnRleHRTZXRSR0JTdHJva2VDb2xvcihjb250ZXh0LCByLCBnLCBiLCBh
KTsKIAogICAgIENHQWZmaW5lVHJhbnNmb3JtIHVzZXJUb0Jhc2UgPSBnZXRVc2VyVG9CYXNlQ1RN
KGNvbnRleHQpOwogICAgIENHUG9pbnQgcGhhc2UgPSBDR1BvaW50QXBwbHlBZmZpbmVUcmFuc2Zv
cm0ocG9pbnQsIHVzZXJUb0Jhc2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJ
KHJldmlzaW9uIDI2NDAzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw4ICs4Niw4
IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPE1vY2tNZWRpYURldmljZT4gZGUKICAgICAgICAgTW9j
a01lZGlhRGV2aWNlIHsgIlNDUkVFTi0xIl9zLCAiTW9jayBzY3JlZW4gZGV2aWNlIDEiX3MsIE1v
Y2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwg
Q29sb3I6OmxpZ2h0R3JheSwgeyAzODQwLCAyMTYwIH0gfSB9LAogICAgICAgICBNb2NrTWVkaWFE
ZXZpY2UgeyAiU0NSRUVOLTIiX3MsICJNb2NrIHNjcmVlbiBkZXZpY2UgMiJfcywgTW9ja0Rpc3Bs
YXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBDb2xvcjo6
eWVsbG93LCB7IDE5MjAsIDEwODAgfSB9IH0sCiAKLSAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsg
IldJTkRPVy0yIl9zLCAiTW9jayB3aW5kb3cgMSJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsg
Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBTaW1wbGVDb2xvciB7IDB4ZmZmMWI1
IH0sIHsgNjQwLCA0ODAgfSB9IH0sCi0gICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJXSU5ET1ct
MiJfcywgIk1vY2sgd2luZG93IDIiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgU2ltcGxlQ29sb3IgeyAweGZmZDBiNSB9LCB7IDEy
ODAsIDYwMCB9IH0gfSwKKyAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIldJTkRPVy0yIl9zLCAi
TW9jayB3aW5kb3cgMSJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZTo6U2NyZWVuLCBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNDEsIDE4MSksIHsgNjQw
LCA0ODAgfSB9IH0sCisgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJXSU5ET1ctMiJfcywgIk1v
Y2sgd2luZG93IDIiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRl
dmljZVR5cGU6OlNjcmVlbiwgbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjA4LCAxODEpLCB7IDEyODAs
IDYwMCB9IH0gfSwKICAgICB9OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkocmV2aXNpb24g
MjY0MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NSwxMCArMjY1LDEwIEBAIHZvaWQgTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdBbmltYXQKIAogdm9pZCBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6ZHJhd0JveGVzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBjb25z
dGV4cHIgU2ltcGxlQ29sb3IgbWFnZW50YSB7IDB4ZmZmZjAwZmYgfTsKLSAgICBjb25zdGV4cHIg
U2ltcGxlQ29sb3IgYmx1ZSB7IDB4ZmYwMDAwZmYgfTsKLSAgICBjb25zdGV4cHIgU2ltcGxlQ29s
b3IgcmVkIHsgMHhmZmZmMDAwMCB9OwotICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBkYXJrR3Jl
ZW4geyAweGZmMDA4MDAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1hZ2VudGEgPSBt
YWtlU2ltcGxlQ29sb3IoMjU1LCAwLCAyNTUpOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBi
bHVlID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDI1NSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIHJlZCA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDApOworICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBkYXJrR3JlZW4gPSBtYWtlU2ltcGxlQ29sb3IoMCwgMTI4LCAwKTsKIAogICAgIElu
dFNpemUgc2l6ZSA9IGNhcHR1cmVTaXplKCk7CiAgICAgZmxvYXQgYm94U2l6ZSA9IHNpemUud2lk
dGgoKSAqIC4wMzU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJh
clRoZW1lTW9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCShyZXZpc2lvbiAyNjQwMzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDcgKzQ2LDcgQEAgaW50IFNjcm9sbGJhclRoZW1lTW9jazo6c2Nyb2xsYmFyVGhpY2tu
ZQogCiB2b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
dHJhY2tSZWN0KQogewotICAgIGNvbnRleHQuZmlsbFJlY3QodHJhY2tSZWN0LCBzY3JvbGxiYXIu
ZW5hYmxlZCgpID8gQ29sb3I6OmxpZ2h0R3JheSA6IFNpbXBsZUNvbG9yIHsgMHhGRkUwRTBFMCB9
KTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xsYmFyLmVuYWJsZWQoKSA/
IENvbG9yOjpsaWdodEdyYXkgOiBtYWtlU2ltcGxlQ29sb3IoMjI0LCAyMjQsIDIyNCkpOwogfQog
CiB2b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3QpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAkocmV2
aXNpb24gMjY0MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw3ICsxOTUsNyBAQCBEcmFnSW1hZ2VSZWYgY3Jl
YXRlRHJhZ0ltYWdlRm9yTGluayhFbGVtCiAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdChyZWN0LCByYWRpaSwgcmFkaWksIHJhZGlpLCByYWRpaSksIGJhY2tncm91
bmRDb2xvcik7CiAgCiAgICAgLy8gRHJhdyB0aGUgdGV4dAotICAgIGNvbnN0ZXhwciBhdXRvIHRv
cENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDI1NSk7IC8vIG9yaWdpbmFsIGFscGhh
ID0gMC43NQorICAgIGNvbnN0ZXhwciBhdXRvIHRvcENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAs
IDAsIDApOyAvLyBvcmlnaW5hbCBhbHBoYSA9IDAuNzUKICAgICBjb25zdGV4cHIgYXV0byBib3R0
b21Db2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1LCAxMjcpOyAvLyBvcmlnaW5h
bCBhbHBoYSA9IDAuNQogICAgIGlmIChkcmF3VVJMU3RyaW5nKSB7CiAgICAgICAgIGlmIChjbGlw
VVJMU3RyaW5nKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVk
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuY3BwCShyZXZpc2lvbiAyNjQwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3
ICs3Niw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCByZXBsYWNlbWVudEFycm93Q2lyY2wKIAogY29u
c3RleHByIGF1dG8gcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RQcmVzc2VkQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMTA1LCAxMDUsIDEwNSwgMjQyKTsKIGNvbnN0ZXhwciBhdXRvIHJlcGxhY2Vt
ZW50VGV4dFJvdW5kZWRSZWN0Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTI1LCAxMjUsIDEyNSwg
MjQyKTsKLWNvbnN0ZXhwciBhdXRvIHJlcGxhY2VtZW50VGV4dENvbG9yID0gbWFrZVNpbXBsZUNv
bG9yKDI0MCwgMjQwLCAyNDAsIDI1NSk7Citjb25zdGV4cHIgYXV0byByZXBsYWNlbWVudFRleHRD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDAsIDI0MCwgMjQwKTsKIGNvbnN0ZXhwciBhdXRvIHVu
YXZhaWxhYmxlUGx1Z2luQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1
NSwgMjE2KTsKIAogUmVuZGVyRW1iZWRkZWRPYmplY3Q6OlJlbmRlckVtYmVkZGVkT2JqZWN0KEhU
TUxGcmFtZU93bmVyRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyNjQw
MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgwNSw4ICsxODA1LDggQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmNhbGN1bGF0
ZUJvcmRlclN0eWxlQwogICAgIEFTU0VSVChzdHlsZSA9PSBCb3JkZXJTdHlsZTo6SW5zZXQgfHwg
c3R5bGUgPT0gQm9yZGVyU3R5bGU6Ok91dHNldCk7CiAKICAgICAvLyBUaGlzIHZhbHVlcyB3ZXJl
IGRlcml2ZWQgZW1waXJpY2FsbHkuCi0gICAgY29uc3RleHByIGZsb2F0IGJhc2VEYXJrQ29sb3JM
dW1pbmFuY2UgeyAwLjAxNDQ0Mzg0NGYgfTsgLy8gTHVtaW5hbmNlIG9mIFNpbXBsZUNvbG9yIHsg
MHhGRjIwMjAyMCB9Ci0gICAgY29uc3RleHByIGZsb2F0IGJhc2VMaWdodENvbG9yTHVtaW5hbmNl
IHsgMC44MzA3N2YgfTsgLy8gTHVtaW5hbmNlIG9mIFNpbXBsZUNvbG9yIHsgMHhGRkVCRUJFQiB9
CisgICAgY29uc3RleHByIGZsb2F0IGJhc2VEYXJrQ29sb3JMdW1pbmFuY2UgeyAwLjAxNDQ0Mzg0
NGYgfTsgLy8gTHVtaW5hbmNlIG9mIFNSR0JBPHVpbnQ4X3Q+IHsgMzIsIDMyLCAzMiB9CisgICAg
Y29uc3RleHByIGZsb2F0IGJhc2VMaWdodENvbG9yTHVtaW5hbmNlIHsgMC44MzA3N2YgfTsgLy8g
THVtaW5hbmNlIG9mIFNSR0JBPHVpbnQ4X3Q+IHsgMjM1LCAyMzUsIDIzNSB9CiAKICAgICBlbnVt
IE9wZXJhdGlvbiB7IERhcmtlbiwgTGlnaHRlbiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHJldmlzaW9uIDI2NDAzNykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMzQsMzAg
KzEzMzQsMzAgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSQogewog
ICAgIHN3aXRjaCAoY3NzVmFsdWVJZCkgewogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRMaW5rOgot
ICAgICAgICByZXR1cm4gb3B0aW9ucy5jb250YWlucyhTdHlsZUNvbG9yOjpPcHRpb25zOjpGb3JW
aXNpdGVkTGluaykgPyBTaW1wbGVDb2xvciB7IDB4RkY1NTFBOEIgfSA6IFNpbXBsZUNvbG9yIHsg
MHhGRjAwMDBFRSB9OworICAgICAgICByZXR1cm4gb3B0aW9ucy5jb250YWlucyhTdHlsZUNvbG9y
OjpPcHRpb25zOjpGb3JWaXNpdGVkTGluaykgPyBtYWtlU2ltcGxlQ29sb3IoODUsIDI2LCAxMzkp
IDogbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDIzOCk7CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEFj
dGl2ZWxpbms6CiAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZXRleHQ6Ci0gICAgICAgIHJldHVybiBT
aW1wbGVDb2xvciB7IDB4RkZGRjAwMDAgfTsKKyAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xv
cigyNTUsIDAsIDApOwogICAgIGNhc2UgQ1NTVmFsdWVMaW5rdGV4dDoKLSAgICAgICAgcmV0dXJu
IFNpbXBsZUNvbG9yIHsgMHhGRjAwMDBFRSB9OworICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNv
bG9yKDAsIDAsIDIzOCk7CiAgICAgY2FzZSBDU1NWYWx1ZVZpc2l0ZWR0ZXh0OgotICAgICAgICBy
ZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGNTUxQThCIH07CisgICAgICAgIHJldHVybiBtYWtlU2lt
cGxlQ29sb3IoODUsIDI2LCAxMzkpOwogICAgIGNhc2UgQ1NTVmFsdWVBY3RpdmVib3JkZXI6CiAg
ICAgICAgIHJldHVybiBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZWJ1dHRv
bnRleHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZUFj
dGl2ZWNhcHRpb246Ci0gICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkZDQ0NDQ0MgfTsK
KyAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigyMDQsIDIwNCwgMjA0KTsKICAgICBjYXNl
IENTU1ZhbHVlQXBwd29ya3NwYWNlOgogICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRlOwogICAg
IGNhc2UgQ1NTVmFsdWVCYWNrZ3JvdW5kOgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAw
eEZGNjM2M0NFIH07CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoOTksIDk5LCAyMDYp
OwogICAgIGNhc2UgQ1NTVmFsdWVCdXR0b25mYWNlOgogICAgICAgICByZXR1cm4gQ29sb3I6Omxp
Z2h0R3JheTsKICAgICBjYXNlIENTU1ZhbHVlQnV0dG9uaGlnaGxpZ2h0OgotICAgICAgICByZXR1
cm4gU2ltcGxlQ29sb3IgeyAweEZGREREREREIH07CisgICAgICAgIHJldHVybiBtYWtlU2ltcGxl
Q29sb3IoMjIxLCAyMjEsIDIyMSk7CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbnNoYWRvdzoKLSAg
ICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjg4ODg4OCB9OworICAgICAgICByZXR1cm4g
bWFrZVNpbXBsZUNvbG9yKDEzNiwgMTM2LCAxMzYpOwogICAgIGNhc2UgQ1NTVmFsdWVCdXR0b250
ZXh0OgogICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVDYXB0
aW9udGV4dDoKQEAgLTEzNzEsOSArMTM3MSw5IEBAIENvbG9yIFJlbmRlclRoZW1lOjpzeXN0ZW1D
b2xvcihDU1NWYWx1ZUkKICAgICBjYXNlIENTU1ZhbHVlRmllbGR0ZXh0OgogICAgICAgICByZXR1
cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVHcmF5dGV4dDoKLSAgICAgICAgcmV0
dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjgwODA4MCB9OworICAgICAgICByZXR1cm4gbWFrZVNpbXBs
ZUNvbG9yKDEyOCwgMTI4LCAxMjgpOwogICAgIGNhc2UgQ1NTVmFsdWVIaWdobGlnaHQ6Ci0gICAg
ICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkZCNUQ1RkYgfTsKKyAgICAgICAgcmV0dXJuIG1h
a2VTaW1wbGVDb2xvcigxODEsIDIxMywgMjU1KTsKICAgICBjYXNlIENTU1ZhbHVlSGlnaGxpZ2h0
dGV4dDoKICAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBjYXNlIENTU1ZhbHVlSW5h
Y3RpdmVib3JkZXI6CkBAIC0xMzgxLDkgKzEzODEsOSBAQCBDb2xvciBSZW5kZXJUaGVtZTo6c3lz
dGVtQ29sb3IoQ1NTVmFsdWVJCiAgICAgY2FzZSBDU1NWYWx1ZUluYWN0aXZlY2FwdGlvbjoKICAg
ICAgICAgcmV0dXJuIENvbG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1ZhbHVlSW5hY3RpdmVjYXB0
aW9udGV4dDoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjdGN0Y3RiB9OworICAg
ICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDEyNywgMTI3LCAxMjcpOwogICAgIGNhc2UgQ1NT
VmFsdWVJbmZvYmFja2dyb3VuZDoKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkZC
RkNDNSB9OworICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDI1MSwgMjUyLCAxOTcpOwog
ICAgIGNhc2UgQ1NTVmFsdWVJbmZvdGV4dDoKICAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsK
ICAgICBjYXNlIENTU1ZhbHVlTWVudToKQEAgLTEzOTUsMTkgKzEzOTUsMTkgQEAgQ29sb3IgUmVu
ZGVyVGhlbWU6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSQogICAgIGNhc2UgQ1NTVmFsdWVUZXh0Ogog
ICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVUaHJlZWRkYXJr
c2hhZG93OgotICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGNjY2NjY2IH07CisgICAg
ICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMTAyLCAxMDIsIDEwMik7CiAgICAgY2FzZSBDU1NW
YWx1ZVRocmVlZGZhY2U6CiAgICAgICAgIHJldHVybiBDb2xvcjo6bGlnaHRHcmF5OwogICAgIGNh
c2UgQ1NTVmFsdWVUaHJlZWRoaWdobGlnaHQ6Ci0gICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7
IDB4RkZEREREREQgfTsKKyAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigyMjEsIDIyMSwg
MjIxKTsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkbGlnaHRzaGFkb3c6CiAgICAgICAgIHJldHVy
biBDb2xvcjo6bGlnaHRHcmF5OwogICAgIGNhc2UgQ1NTVmFsdWVUaHJlZWRzaGFkb3c6Ci0gICAg
ICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkY4ODg4ODggfTsKKyAgICAgICAgcmV0dXJuIG1h
a2VTaW1wbGVDb2xvcigxMzYsIDEzNiwgMTM2KTsKICAgICBjYXNlIENTU1ZhbHVlV2luZG93Ogog
ICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRlOwogICAgIGNhc2UgQ1NTVmFsdWVXaW5kb3dmcmFt
ZToKLSAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkNDQ0NDQyB9OworICAgICAgICBy
ZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDIwNCwgMjA0LCAyMDQpOwogICAgIGNhc2UgQ1NTVmFsdWVX
aW5kb3d0ZXh0OgogICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGRlZmF1bHQ6Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVBZHdhaXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVBZHdhaXRhLmNw
cAkocmV2aXNpb24gMjY0MDM3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQWR3YWl0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSwxMCBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgaW50IHRleHRGaWVsZEJvcmRlclNpemUgPSAx
Owotc3RhdGljIGNvbnN0IENvbG9yIHRleHRGaWVsZEJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNv
bG9yKDIwNSwgMTk5LCAxOTQpOwotc3RhdGljIGNvbnN0IENvbG9yIHRleHRGaWVsZEJvcmRlckRp
c2FibGVkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjEzLCAyMDgsIDIwNCk7Ci1zdGF0aWMgY29u
c3QgQ29sb3IgdGV4dEZpZWxkQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwg
MjU1LCAyNTUpOwotc3RhdGljIGNvbnN0IENvbG9yIHRleHRGaWVsZEJhY2tncm91bmREaXNhYmxl
ZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIHRleHRGaWVsZEJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAx
OTQpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRleHRGaWVsZEJvcmRlckRpc2FibGVkQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMjEzLCAyMDgsIDIwNCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8g
dGV4dEZpZWxkQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAyNTUp
Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRleHRGaWVsZEJhY2tncm91bmREaXNhYmxlZENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOwogc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG1lbnVMaXN0QnV0dG9uQXJyb3dTaXplID0gMTY7CiBzdGF0aWMgY29uc3QgaW50IG1lbnVMaXN0
QnV0dG9uRm9jdXNPZmZzZXQgPSAtMzsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtZW51TGlzdEJ1
dHRvblBhZGRpbmcgPSA1OwpAQCAtNTcsMjMgKzU3LDIzIEBAIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBwcm9ncmVzc0FjdGl2aXR5QmwKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwcm9ncmVzc0FuaW1h
dGlvbkZyYW1lQ291bnQgPSA3NTsKIHN0YXRpYyBjb25zdCBTZWNvbmRzIHByb2dyZXNzQW5pbWF0
aW9uRnJhbWVSYXRlID0gMzNfbXM7IC8vIDMwZnBzLgogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHBy
b2dyZXNzQmFyU2l6ZSA9IDY7Ci1zdGF0aWMgY29uc3QgQ29sb3IgcHJvZ3Jlc3NCYXJCb3JkZXJD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDUsIDE5OSwgMTk0KTsKLXN0YXRpYyBjb25zdCBDb2xv
ciBwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMjUsIDIyMiwg
MjE5KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBwcm9ncmVzc0JhckJvcmRlckNvbG9yID0gbWFr
ZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHByb2dy
ZXNzQmFyQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyNSwgMjIyLCAyMTkpOwog
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNsaWRlclRyYWNrU2l6ZSA9IDY7CiBzdGF0aWMgY29uc3Qg
aW50IHNsaWRlclRyYWNrQm9yZGVyU2l6ZSA9IDE7Ci1zdGF0aWMgY29uc3QgQ29sb3Igc2xpZGVy
VHJhY2tCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDUsIDE5OSwgMTk0KTsKLXN0YXRp
YyBjb25zdCBDb2xvciBzbGlkZXJUcmFja0JhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xv
cigyMjUsIDIyMiwgMjE5KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJUcmFja0JvcmRl
ckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIHNsaWRlclRyYWNrQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyNSwg
MjIyLCAyMTkpOwogc3RhdGljIGNvbnN0IGludCBzbGlkZXJUcmFja0ZvY3VzT2Zmc2V0ID0gMjsK
IHN0YXRpYyBjb25zdCBpbnQgc2xpZGVyVGh1bWJTaXplID0gMjA7CiBzdGF0aWMgY29uc3QgaW50
IHNsaWRlclRodW1iQm9yZGVyU2l6ZSA9IDE7Ci1zdGF0aWMgY29uc3QgQ29sb3Igc2xpZGVyVGh1
bWJCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDUsIDE5OSwgMTk0KTsKLXN0YXRpYyBj
b25zdCBDb2xvciBzbGlkZXJUaHVtYkJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigy
NDQsIDI0MiwgMjQxKTsKLXN0YXRpYyBjb25zdCBDb2xvciBzbGlkZXJUaHVtYkJhY2tncm91bmRI
b3ZlcmVkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjQ4LCAyNDgsIDI0Nyk7Ci1zdGF0aWMgY29u
c3QgQ29sb3Igc2xpZGVyVGh1bWJCYWNrZ3JvdW5kRGlzYWJsZWRDb2xvciA9IG1ha2VTaW1wbGVD
b2xvcigyNDQsIDI0MiwgMjQxKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJUaHVtYkJv
cmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOworc3RhdGljIGNvbnN0
ZXhwciBhdXRvIHNsaWRlclRodW1iQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI0
NCwgMjQyLCAyNDEpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlclRodW1iQmFja2dyb3Vu
ZEhvdmVyZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDgsIDI0OCwgMjQ3KTsKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byBzbGlkZXJUaHVtYkJhY2tncm91bmREaXNhYmxlZENvbG9yID0gbWFrZVNp
bXBsZUNvbG9yKDI0NCwgMjQyLCAyNDEpOwogI2lmIEVOQUJMRShWSURFTykKLXN0YXRpYyBjb25z
dCBDb2xvciBtZWRpYVNsaWRlclRyYWNrQmFja2dyb3VuZGNvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDc3LCA3NywgNzcpOwotc3RhdGljIGNvbnN0IENvbG9yIG1lZGlhU2xpZGVyVHJhY2tCdWZmZXJl
ZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDE3MywgMTczLCAxNzMpOwotc3RhdGljIGNvbnN0IENv
bG9yIG1lZGlhU2xpZGVyVHJhY2tBY3RpdmVDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTIsIDI1
MiwgMjUyKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtZWRpYVNsaWRlclRyYWNrQmFja2dyb3Vu
ZGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDc3LCA3NywgNzcpOworc3RhdGljIGNvbnN0ZXhwciBh
dXRvIG1lZGlhU2xpZGVyVHJhY2tCdWZmZXJlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDE3Mywg
MTczLCAxNzMpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1lZGlhU2xpZGVyVHJhY2tBY3RpdmVD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTIsIDI1MiwgMjUyKTsKICNlbmRpZgogCiAjaWYgIVBM
QVRGT1JNKEdUSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5oCShyZXZpc2lvbiAyNjQwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDcgKzEyMSw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgQ29sb3IgcGxhdGZvcm1UYXBI
aWdobGlnaHRDb2xvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHg0
RDFBMUExQSB9OyB9CisgICAgQ29sb3IgcGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigyNiwgMjYsIDI2LCAweDREKTsgfQog
I2VuZGlmCiAKICAgICBib29sIHNob3VsZEhhdmVTcGluQnV0dG9uKGNvbnN0IEhUTUxJbnB1dEVs
ZW1lbnQmKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0JKHJldmlzaW9uIDI2NDAzNykKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTE3LDEwICs5MTcs
MTAgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0JhcihjbwogCiAgICAgY29u
c3QgZmxvYXQgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiA9IHJlY3QueSgpICsgdmVydGljYWxP
ZmZzZXQ7CiAgICAgYXV0byBzdHJva2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGll
bnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bv
c2l0aW9uKSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiAr
IHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7Ci0gICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9y
U3RvcCgwLjAsIG1ha2VTaW1wbGVDb2xvcigweDhkLCAweDhkLCAweDhkKSk7Ci0gICAgc3Ryb2tl
R3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ1LCBtYWtlU2ltcGxlQ29sb3IoMHhlZSwgMHhlZSwg
MHhlZSkpOwotICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwgbWFrZVNpbXBs
ZUNvbG9yKDB4ZWUsIDB4ZWUsIDB4ZWUpKTsKLSAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JT
dG9wKDEuMCwgbWFrZVNpbXBsZUNvbG9yKDB4OGQsIDB4OGQsIDB4OGQpKTsKKyAgICBzdHJva2VH
cmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgbWFrZVNpbXBsZUNvbG9yKDE0MSwgMTQxLCAxNDEp
KTsKKyAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIG1ha2VTaW1wbGVDb2xv
cigyMzgsIDIzOCwgMjM4KSk7CisgICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjU1
LCBtYWtlU2ltcGxlQ29sb3IoMjM4LCAyMzgsIDIzOCkpOworICAgIHN0cm9rZUdyYWRpZW50LT5h
ZGRDb2xvclN0b3AoMS4wLCBtYWtlU2ltcGxlQ29sb3IoMTQxLCAxNDEsIDE0MSkpOwogICAgIGNv
bnRleHQuc2V0U3Ryb2tlR3JhZGllbnQoV1RGTW92ZShzdHJva2VHcmFkaWVudCkpOwogCiAgICAg
Y29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKQEAgLTEzODMsMTAgKzEzODMsMTAg
QEAgQ29sb3IgUmVuZGVyVGhlbWVJT1M6OnN5c3RlbUNvbG9yKENTU1ZhbAogY29uc3QgQ0dTaXpl
IGF0dGFjaG1lbnRTaXplID0geyAxNjAsIDExOSB9OwogCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1l
bnRCb3JkZXJSYWRpdXMgPSAxNjsKLWNvbnN0ZXhwciBTaW1wbGVDb2xvciBhdHRhY2htZW50Qm9y
ZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA0LCAyMDQsIDIwNCk7Citjb25zdGV4cHIgYXV0
byBhdHRhY2htZW50Qm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA0LCAyMDQsIDIwNCk7
CiBzdGF0aWMgQ0dGbG9hdCBhdHRhY2htZW50Qm9yZGVyVGhpY2tuZXNzID0gMTsKIAotY29uc3Rl
eHByIFNpbXBsZUNvbG9yIGF0dGFjaG1lbnRQcm9ncmVzc0NvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDIyMiwgMjIyLCAyMjIpOworY29uc3RleHByIGF1dG8gYXR0YWNobWVudFByb2dyZXNzQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMjIyLCAyMjIsIDIyMik7CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1l
bnRQcm9ncmVzc0JvcmRlclRoaWNrbmVzcyA9IDM7CiAKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVu
dFByb2dyZXNzU2l6ZSA9IDM2OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMjY0MDM3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MzcsMTEgKzczNywxMSBA
QCBDb2xvciBSZW5kZXJUaGVtZU1hYzo6c3lzdGVtQ29sb3IoQ1NTVmFsCiAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVUaHJlZWRmYWNlOgogICAgICAgICAgICAgLy8gV2Ugc2VsZWN0ZWQgdGhpcyB2YWx1
ZSBpbnN0ZWFkIG9mIFtOU0NvbG9yIGNvbnRyb2xDb2xvcl0gdG8gYXZvaWQgd2Vic2l0ZSBpbmNv
bXBhdGliaWxpdGllcy4KICAgICAgICAgICAgIC8vIFdlIG1heSB3YW50IHRvIGNvbnNpZGVyIGNo
YW5naW5nIHRvIFtOU0NvbG9yIGNvbnRyb2xDb2xvcl0gc29tZSBkYXkuCi0gICAgICAgICAgICBy
ZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGQzBDMEMwIH07CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVNpbXBsZUNvbG9yKDE5MiwgMTkyLCAxOTIpOwogCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVJbmZv
YmFja2dyb3VuZDoKICAgICAgICAgICAgIC8vIE5vIGNvcnJlc3BvbmRpbmcgTlNDb2xvciBmb3Ig
dGhpcyBzbyB3ZSB1c2UgYSBoYXJkIGNvZGVkIHZhbHVlLgotICAgICAgICAgICAgcmV0dXJuIFNp
bXBsZUNvbG9yIHsgMHhGRkZCRkNDNSB9OworICAgICAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVD
b2xvcigyNTEsIDI1MiwgMTk3KTsKIAogICAgICAgICBjYXNlIENTU1ZhbHVlTWVudToKICAgICAg
ICAgICAgIHJldHVybiBtZW51QmFja2dyb3VuZENvbG9yKCk7CkBAIC03NTAsMzAgKzc1MCwzMCBA
QCBDb2xvciBSZW5kZXJUaGVtZU1hYzo6c3lzdGVtQ29sb3IoQ1NTVmFsCiAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVBY3RpdmVib3JkZXI6CiAgICAgICAgICAgICAvLyBIYXJkY29kZWQgdG8gYXZvaWQg
ZXhwb3NpbmcgYSB1c2VyIGFwcGVhcmFuY2UgcHJlZmVyZW5jZSB0byB0aGUgd2ViIGZvciBmaW5n
ZXJwcmludGluZy4KICAgICAgICAgICAgIGlmIChsb2NhbEFwcGVhcmFuY2UudXNpbmdEYXJrQXBw
ZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiB7IFNpbXBsZUNvbG9yIHsgMHhGRjFB
QTlGRiB9LCBDb2xvcjo6U2VtYW50aWMgfTsKLSAgICAgICAgICAgIHJldHVybiB7IFNpbXBsZUNv
bG9yIHsgMHhGRjAwNjdGNCB9LCBDb2xvcjo6U2VtYW50aWMgfTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4geyBtYWtlU2ltcGxlQ29sb3IoMjYsIDE2OSwgMjU1KSwgQ29sb3I6OlNlbWFudGljIH07
CisgICAgICAgICAgICByZXR1cm4geyBtYWtlU2ltcGxlQ29sb3IoMCwgMTAzLCAyNDQpLCBDb2xv
cjo6U2VtYW50aWMgfTsKIAogICAgICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1Db250cm9s
QWNjZW50OgogICAgICAgICAgICAgLy8gSGFyZGNvZGVkIHRvIGF2b2lkIGV4cG9zaW5nIGEgdXNl
ciBhcHBlYXJhbmNlIHByZWZlcmVuY2UgdG8gdGhlIHdlYiBmb3IgZmluZ2VycHJpbnRpbmcuCiAg
ICAgICAgICAgICAvLyBTYW1lIGNvbG9yIGluIGxpZ2h0IGFuZCBkYXJrIGFwcGVhcmFuY2VzLgot
ICAgICAgICAgICAgcmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAweEZGMDA3QUZGIH0sIENvbG9yOjpT
ZW1hbnRpYyB9OworICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVNpbXBsZUNvbG9yKDAsIDEyMiwg
MjU1KSwgQ29sb3I6OlNlbWFudGljIH07CiAKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lz
dGVtU2VsZWN0ZWRDb250ZW50QmFja2dyb3VuZDoKICAgICAgICAgICAgIC8vIEhhcmRjb2RlZCB0
byBhdm9pZCBleHBvc2luZyBhIHVzZXIgYXBwZWFyYW5jZSBwcmVmZXJlbmNlIHRvIHRoZSB3ZWIg
Zm9yIGZpbmdlcnByaW50aW5nLgogICAgICAgICAgICAgaWYgKGxvY2FsQXBwZWFyYW5jZS51c2lu
Z0RhcmtBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgU2ltcGxlQ29sb3Ig
eyAweEZGMDA1OEQwIH0sIENvbG9yOjpTZW1hbnRpYyB9OwotICAgICAgICAgICAgcmV0dXJuIHsg
U2ltcGxlQ29sb3IgeyAweEZGMDA2M0UxIH0sIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAg
ICAgICAgIHJldHVybiB7IG1ha2VTaW1wbGVDb2xvcigwLCA4OCwgMjA4KSwgQ29sb3I6OlNlbWFu
dGljIH07CisgICAgICAgICAgICByZXR1cm4geyBtYWtlU2ltcGxlQ29sb3IoMCwgOTksIDIyNSks
IENvbG9yOjpTZW1hbnRpYyB9OwogCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVIaWdobGlnaHQ6CiAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVNlbGVjdGVkVGV4dEJhY2tncm91bmQ6CiAg
ICAgICAgICAgICAvLyBIYXJkY29kZWQgdG8gYXZvaWQgZXhwb3NpbmcgYSB1c2VyIGFwcGVhcmFu
Y2UgcHJlZmVyZW5jZSB0byB0aGUgd2ViIGZvciBmaW5nZXJwcmludGluZy4KICAgICAgICAgICAg
IGlmIChsb2NhbEFwcGVhcmFuY2UudXNpbmdEYXJrQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiB7IFNpbXBsZUNvbG9yIHsgMHhDQzNGNjM4QiB9LCBDb2xvcjo6U2VtYW50aWMg
fTsKLSAgICAgICAgICAgIHJldHVybiB7IFNpbXBsZUNvbG9yIHsgMHg5OTgwQkNGRSB9LCBDb2xv
cjo6U2VtYW50aWMgfTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyBtYWtlU2ltcGxlQ29sb3Io
NjMsIDk5LCAxMzksIDIwNCksIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAgICAgcmV0dXJu
IHsgbWFrZVNpbXBsZUNvbG9yKDEyOCwgMTg4LCAyNTQsIDE1MyksIENvbG9yOjpTZW1hbnRpYyB9
OwogCiAjaWYgIUhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCiAgICAgICAgIGNhc2UgQ1NTVmFs
dWVBcHBsZVN5c3RlbUNvbnRhaW5lckJvcmRlcjoKLSAgICAgICAgICAgIHJldHVybiBTaW1wbGVD
b2xvciB7IDB4RkZDNUM1QzUgfTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3Io
MTk3LCAxOTcsIDE5Nyk7CiAjZW5kaWYKIAogICAgICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0
ZW1FdmVuQWx0ZXJuYXRpbmdDb250ZW50QmFja2dyb3VuZDogewpAQCAtMjQxMyw4ICsyNDEzLDgg
QEAgY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50SWNvblNlbGVjdGlvbkJvcgogY29uc3QgQ0dGbG9h
dCBhdHRhY2htZW50SWNvbkJhY2tncm91bmRSYWRpdXMgPSAzOwogY29uc3QgQ0dGbG9hdCBhdHRh
Y2htZW50SWNvblRvVGl0bGVNYXJnaW4gPSAyOwogCi1jb25zdGV4cHIgU2ltcGxlQ29sb3IgYXR0
YWNobWVudEljb25CYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMzAp
OwotY29uc3RleHByIFNpbXBsZUNvbG9yIGF0dGFjaG1lbnRJY29uQm9yZGVyQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSwgMTI1KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1l
bnRJY29uQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDMwKTsKK2Nv
bnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRJY29uQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3Io
MjU1LCAyNTUsIDI1NSwgMTI1KTsKIAogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50VGl0bGVGb250
U2l6ZSA9IDEyOwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kUmFkaXVz
ID0gMzsKQEAgLTI0MjIsMjMgKzI0MjIsMjMgQEAgY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50VGl0
bGVCYWNrZ3JvdW5kUAogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50VGl0bGVNYXhpbXVtV2lkdGgg
PSAxMDAgLSAoYXR0YWNobWVudFRpdGxlQmFja2dyb3VuZFBhZGRpbmcgKiAyKTsKIGNvbnN0IENG
SW5kZXggYXR0YWNobWVudFRpdGxlTWF4aW11bUxpbmVDb3VudCA9IDI7CiAKLWNvbnN0ZXhwciBT
aW1wbGVDb2xvciBhdHRhY2htZW50VGl0bGVJbmFjdGl2ZUJhY2tncm91bmRDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigyMDQsIDIwNCwgMjA0LCAyNTUpOwotY29uc3RleHByIFNpbXBsZUNvbG9yIGF0
dGFjaG1lbnRUaXRsZUluYWN0aXZlVGV4dENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDEwMCwgMTAw
LCAxMDAsIDI1NSk7Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50VGl0bGVJbmFjdGl2ZUJhY2tn
cm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDQsIDIwNCwgMjA0KTsKK2NvbnN0ZXhwciBh
dXRvIGF0dGFjaG1lbnRUaXRsZUluYWN0aXZlVGV4dENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDEw
MCwgMTAwLCAxMDApOwogCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRTdWJ0aXRsZUZvbnRTaXpl
ID0gMTA7CiBjb25zdCBpbnQgYXR0YWNobWVudFN1YnRpdGxlV2lkdGhJbmNyZW1lbnQgPSAxMDsK
LWNvbnN0ZXhwciBTaW1wbGVDb2xvciBhdHRhY2htZW50U3VidGl0bGVUZXh0Q29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoODIsIDE0NSwgMjE0LCAyNTUpOworY29uc3RleHByIGF1dG8gYXR0YWNobWVu
dFN1YnRpdGxlVGV4dENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDgyLCAxNDUsIDIxNCk7CiAKIGNv
bnN0IENHRmxvYXQgYXR0YWNobWVudFByb2dyZXNzQmFyV2lkdGggPSAzMDsKIGNvbnN0IENHRmxv
YXQgYXR0YWNobWVudFByb2dyZXNzQmFySGVpZ2h0ID0gNTsKIGNvbnN0IENHRmxvYXQgYXR0YWNo
bWVudFByb2dyZXNzQmFyT2Zmc2V0ID0gLTk7CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQcm9n
cmVzc0JhckJvcmRlcldpZHRoID0gMTsKLWNvbnN0ZXhwciBTaW1wbGVDb2xvciBhdHRhY2htZW50
UHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgODkp
OwotY29uc3RleHByIFNpbXBsZUNvbG9yIGF0dGFjaG1lbnRQcm9ncmVzc0JhckZpbGxDb2xvciA9
IENvbG9yOjp3aGl0ZTsKLWNvbnN0ZXhwciBTaW1wbGVDb2xvciBhdHRhY2htZW50UHJvZ3Jlc3NC
YXJCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCAxMjgpOworY29uc3RleHBy
IGF1dG8gYXR0YWNobWVudFByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNv
bG9yKDAsIDAsIDAsIDg5KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRQcm9ncmVzc0JhckZp
bGxDb2xvciA9IENvbG9yOjp3aGl0ZTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRQcm9ncmVz
c0JhckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDEyOCk7CiAKIGNvbnN0
IENHRmxvYXQgYXR0YWNobWVudFBsYWNlaG9sZGVyQm9yZGVyUmFkaXVzID0gNTsKLWNvbnN0ZXhw
ciBTaW1wbGVDb2xvciBhdHRhY2htZW50UGxhY2Vob2xkZXJCb3JkZXJDb2xvciA9IG1ha2VTaW1w
bGVDb2xvcigwLCAwLCAwLCA1Nik7Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50UGxhY2Vob2xk
ZXJCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCA1Nik7CiBjb25zdCBDR0Zs
b2F0IGF0dGFjaG1lbnRQbGFjZWhvbGRlckJvcmRlcldpZHRoID0gMjsKIGNvbnN0IENHRmxvYXQg
YXR0YWNobWVudFBsYWNlaG9sZGVyQm9yZGVyRGFzaExlbmd0aCA9IDY7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjQwMzcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA3LTA3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KKworICAgICAgICBQYXJ0IDIgb2YgU2ltcGxlQ29sb3IgYW5kIFNSR0JBPHVpbnQ4
X3Q+IGFyZSBlc3NlbnRpYWxseSB0aGUgc2FtZSAtIGxldCdzIGNvbnZlcmdlIHRoZW0KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzk4MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwYWludFNuYXBzaG90
QXRTaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVy
SU9TLm1tOgorICAgICAgICBNYWtlIGNhbGxzIHRvIG1ha2VTaW1wbGVDb2xvciBtb3JlIGNvbnNp
c3RlbnQuIFVzZSBkZWNpbWFsIHJhdGhlciB0aGFuIGhleCwgZG9uJ3QgcGFzcyB1bm5jZXNzYXJ5
CisgICAgICAgIDI1NSBhcyB0aGUgNHRoIGFyZ3VtZW50LgorCiAyMDIwLTA3LTA3ICBTaWh1aSBM
aXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CiAKICAgICAgICAgTmV0d29yayBwcm9jZXNzIGNyYXNo
ZXMgaW4gV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlU2Vzc2lvblN0b3JhZ2VGb3JP
cmlnaW5zCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAkocmV2aXNpb24gMjY0MDM3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MDksNyArMjQwOSw3IEBAIHZvaWQg
V2ViUGFnZTo6cGFpbnRTbmFwc2hvdEF0U2l6ZShjb25zdCAKIAogICAgIGlmIChvcHRpb25zICYg
U25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rpb25SZWN0YW5nbGUpIHsKICAgICAgICAgRmxvYXRS
ZWN0IHNlbGVjdGlvblJlY3RhbmdsZSA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbkJvdW5k
cygpOwotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlQ29sb3IobWFrZVNpbXBsZUNv
bG9yKDB4RkYsIDAsIDApKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZUNvbG9y
KG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDApKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnN0
cm9rZVJlY3Qoc2VsZWN0aW9uUmVjdGFuZ2xlLCAxKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9s
bGVySU9TLm1tCShyZXZpc2lvbiAyNjQwMzcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzLDcg
KzUzLDcgQEAgY29uc3QgaW50IHRvdGFsVmVydGljYWxNYXJnaW4gPSAxOwogCiBjb25zdGV4cHIg
T3B0aW9uU2V0PFRleHRJbmRpY2F0b3JPcHRpb24+IGZpbmRUZXh0SW5kaWNhdG9yT3B0aW9ucyB7
IFRleHRJbmRpY2F0b3JPcHRpb246OkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlv
biwgVGV4dEluZGljYXRvck9wdGlvbjo6RG9Ob3RDbGlwVG9WaXNpYmxlUmVjdCB9OwogCi1jb25z
dGV4cHIgYXV0byBoaWdobGlnaHRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDIyOCwgNTYs
IDI1NSk7Citjb25zdGV4cHIgYXV0byBoaWdobGlnaHRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigy
NTUsIDIyOCwgNTYpOwogCiB2b2lkIEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TOjpkcmF3
UmVjdChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjQwMzcpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNy0wNiAgU2FtIFdlaW5pZyAg
PHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGFydCAyIG9mIFNpbXBsZUNvbG9yIGFuZCBT
UkdCQTx1aW50OF90PiBhcmUgZXNzZW50aWFsbHkgdGhlIHNhbWUgLSBsZXQncyBjb252ZXJnZSB0
aGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM5
ODEKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgYXV0by9t
YWtlU2ltcGxlQ29sb3IuCisKIDIwMjAtMDctMDMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3Vo
YWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2UgdGhlIG5hbWVzIG9mIE1JTUVUeXBl
UmVnaXN0cnkgbWV0aG9kcyB0byBjb21wbHkgd2l0aCB3ZWJraXQgbmFtaW5nIHN0eWxlCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyLmNwcAkocmV2aXNpb24gMjY0MDM3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4v
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDExICs3
NCwxMSBAQCBzdGF0aWMgY29uc3QgaW50IGJvcmRlclJhZGl1cyA9IDEyOwogc3RhdGljIGNvbnN0
IGludCBib3JkZXJUaGlja25lc3MgPSAyOwogCiAvLyBDb2xvcnMKLXN0YXRpYyBjb25zdCB1bnNp
Z25lZCBpbnQgYmFja2dyb3VuZENvbG9yID0gMHhBMDIwMjAyMDsKLXN0YXRpYyBjb25zdCB1bnNp
Z25lZCBpbnQgYm9yZGVyQ29sb3IgPSAweEZGQTBBMEEwOwotc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGludCBzbGlkZXJHdXR0ZXJDb2xvciA9IDB4RkYxNDE0MTQ7Ci1zdGF0aWMgY29uc3QgdW5zaWdu
ZWQgaW50IHNsaWRlckJ1dHRvbkNvbG9yID0gMHhGRjgwODA4MDsKLXN0YXRpYyBjb25zdCB1bnNp
Z25lZCBpbnQgdGV4dENvbG9yID0gMHhGRkZGRkZGRjsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBi
YWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMzIsIDMyLCAzMiwgMTYwKTsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBib3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigxNjAsIDE2MCwg
MTYwKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJHdXR0ZXJDb2xvciA9IG1ha2VTaW1w
bGVDb2xvcigyMCwgMjAsIDIwKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJCdXR0b25D
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigxMjgsIDEyOCwgMTI4KTsKK3N0YXRpYyBjb25zdGV4cHIg
YXV0byB0ZXh0Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSk7CiAKIEhVREJ1
dHRvbjo6SFVEQnV0dG9uKEhVREJ1dHRvblR5cGUgdHlwZSwgY29uc3QgSW50UG9pbnQmIHBvc2l0
aW9uKQogICAgIDogSFVEV2lkZ2V0KEludFJlY3QocG9zaXRpb24sIEludFNpemUoKSkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>