<?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>176437</bug_id>
          
          <creation_ts>2017-09-05 19:28:03 -0700</creation_ts>
          <short_desc>Modernize BoxExtent into RectEdge</short_desc>
          <delta_ts>2017-09-27 12:35:18 -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>New Bugs</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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1345762</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-05 19:28:03 -0700</bug_when>
    <thetext>Modernize BoxExtent into RectEdge</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345763</commentid>
    <comment_count>1</comment_count>
      <attachid>319969</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-05 19:29:44 -0700</bug_when>
    <thetext>Created attachment 319969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345803</commentid>
    <comment_count>2</comment_count>
      <attachid>319981</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-05 21:39:24 -0700</bug_when>
    <thetext>Created attachment 319981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345922</commentid>
    <comment_count>3</comment_count>
      <attachid>319981</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-06 08:20:57 -0700</bug_when>
    <thetext>Comment on attachment 319981
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        And give it its own header.

I would include a blurb in the ChangeLog here about why RectEdge is a better name than BoxExtent (from IRC, I learned from Alex that this is to better align with NSRectEdge/UIRectEdge).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345931</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-06 08:43:39 -0700</bug_when>
    <thetext>Hmmmm, maybe RectEdge isn&apos;t such a good name.  That&apos;s more what our *BoxSide enums are.  I&apos;ll talk with a few more people about this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345935</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-06 08:52:00 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; Hmmmm, maybe RectEdge isn&apos;t such a good name.  That&apos;s more what our *BoxSide
&gt; enums are.  I&apos;ll talk with a few more people about this.

Good call!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346064</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-06 13:14:58 -0700</bug_when>
    <thetext>RectEdge is like UIRectEdge.  Unfortunately NSRectEdge and CGRectEdge are conceptually different.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346070</commentid>
    <comment_count>7</comment_count>
      <attachid>319981</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-09-06 13:18:00 -0700</bug_when>
    <thetext>Comment on attachment 319981
Patch

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

&gt; Source/WebCore/platform/RectEdge.h:2
&gt; + * Copyright (C) 2017 Apple Inc. All rights reserved.

Too much code to replace the copyright. Inherit it from the original!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346071</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-09-06 13:18:54 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; Hmmmm, maybe RectEdge isn&apos;t such a good name.  That&apos;s more what our *BoxSide
&gt; enums are.  I&apos;ll talk with a few more people about this.

Should see what smfr/zalan think, since it is sort of layouty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346097</commentid>
    <comment_count>9</comment_count>
      <attachid>319981</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-09-06 14:23:48 -0700</bug_when>
    <thetext>Comment on attachment 319981
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        And give it its own header.
&gt; 
&gt; I would include a blurb in the ChangeLog here about why RectEdge is a better name than BoxExtent (from IRC, I learned from Alex that this is to better align with NSRectEdge/UIRectEdge).

But RectEdge is a single edge. UIEdgeInsets is the set of 4 edges for a box, so I don&apos;t think RectEdge is a good name. Maybe RectEdges?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346100</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-09-06 14:34:21 -0700</bug_when>
    <thetext>I do like the plural better too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346637</commentid>
    <comment_count>11</comment_count>
      <attachid>320203</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-07 16:26:44 -0700</bug_when>
    <thetext>Created attachment 320203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346651</commentid>
    <comment_count>12</comment_count>
      <attachid>320203</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-09-07 17:23:22 -0700</bug_when>
    <thetext>Comment on attachment 320203
Patch

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

&gt; Source/WebCore/platform/RectEdges.h:79
&gt; +    std::array&lt;T, 4&gt; m_sides {{0, 0, 0, 0}};

Any reason not to use Vector?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347323</commentid>
    <comment_count>13</comment_count>
      <attachid>320203</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-09-10 17:33:31 -0700</bug_when>
    <thetext>Comment on attachment 320203
Patch

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

&gt;&gt; Source/WebCore/platform/RectEdges.h:79
&gt;&gt; +    std::array&lt;T, 4&gt; m_sides {{0, 0, 0, 0}};
&gt; 
&gt; Any reason not to use Vector?

More storage, slower.

If we used a Vector&lt;T, 4&gt; instead of a std::array&lt;T, 4&gt; then we would have additional data members for the vector size, capacity, and pointer to the storage. The size is what makes a Vector resizable, the capacity is what makes it efficient to grow and shrink, and the buffer pointer lets it point either to its own preallocated storage or to the heap. Operations on the Vector will be a bit slower as well, initializing those additional data members, and following the pointer to access the storage.

On a 64-bit system std::array&lt;bool, 4&gt; is 4 bytes and WTF::Vector&lt;bool, 4&gt; is 20 bytes.
On a 64-bit system std::array&lt;float, 4&gt; is 16 bytes and WTF::Vector&lt;bool, 4&gt; is 32 bytes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347324</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-09-10 17:34:09 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #13)
&gt; On a 64-bit system std::array&lt;float, 4&gt; is 16 bytes and WTF::Vector&lt;bool, 4&gt;
&gt; is 32 bytes.

Oops, I meant:

On a 64-bit system std::array&lt;float, 4&gt; is 16 bytes and WTF::Vector&lt;float, 4&gt; is 32 bytes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347485</commentid>
    <comment_count>15</comment_count>
      <attachid>320203</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-11 10:57:59 -0700</bug_when>
    <thetext>Comment on attachment 320203
Patch

Clearing flags on attachment: 320203

Committed r221866: &lt;http://trac.webkit.org/changeset/221866&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347486</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-11 10:58:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353503</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:35:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693541&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319969</attachid>
            <date>2017-09-05 19:29:44 -0700</date>
            <delta_ts>2017-09-05 21:39:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176437-20170905192943.patch</filename>
            <type>text/plain</type>
            <size>39893</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTY1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkzIEBACisyMDE3LTA5LTA1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXpl
IEJveEV4dGVudCBpbnRvIFJlY3RFZGdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzY0MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBbmQgZ2l2ZSBpdCBpdHMgb3duIGhlYWRlci4KKyAgICAgICAgTm8g
Y2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eSk6CisgICAgICAgICogcGxhdGZv
cm0vTGVuZ3RoQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6Okxlbmd0aEJveCk6
CisgICAgICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6OkJveEV4dGVudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6OmF0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkJveEV4dGVudDo6dG9wKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJveEV4dGVudDo6
cmlnaHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50Ojpib3R0b20pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50OjpsZWZ0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJveEV4dGVudDo6YXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Qm94RXh0ZW50Ojp0b3AgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Qm94RXh0ZW50OjpyaWdodCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpC
b3hFeHRlbnQ6OmJvdHRvbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCb3hF
eHRlbnQ6OmxlZnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50
OjpzZXRBdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6OnNldFRvcCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6OnNldFJpZ2h0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkJveEV4dGVudDo6c2V0Qm90dG9tKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJveEV4dGVudDo6c2V0TGVmdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpCb3hFeHRlbnQ6OmJlZm9yZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpC
b3hFeHRlbnQ6OmFmdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJveEV4dGVudDo6
c3RhcnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50OjplbmQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50OjpiZWZvcmUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50OjphZnRlciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6OnN0YXJ0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkJveEV4dGVudDo6ZW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkJveEV4dGVudDo6c2V0QmVmb3JlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkJveEV4dGVudDo6c2V0QWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0
ZW50OjpzZXRTdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6OnNl
dEVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6Om9wZXJhdG9yPT0g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50OjpvcGVyYXRvciE9
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9SZWN0RWRnZS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlOjpSZWN0RWRnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWN0RWRnZTo6YXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2U6OnRvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6cmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVk
Z2U6OmJvdHRvbSk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6bGVmdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWN0RWRnZTo6YXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVk
Z2U6OnRvcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6cmlnaHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2U6OmJvdHRvbSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWN0RWRnZTo6bGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRn
ZTo6c2V0QXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2U6OnNldFRvcCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWN0RWRnZTo6c2V0UmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVk
Z2U6OnNldEJvdHRvbSk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6c2V0TGVmdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6YmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
Y3RFZGdlOjphZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6c3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVjdEVkZ2U6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRn
ZTo6YmVmb3JlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlOjphZnRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6c3RhcnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVjdEVkZ2U6OmVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRn
ZTo6c2V0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlOjpzZXRBZnRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6c2V0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVjdEVkZ2U6OnNldEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6b3BlcmF0b3I9
PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6b3BlcmF0b3IhPSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnNldEhhc01hcmdpbnMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9Xcml0aW5nTW9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6aXNIb3Jpem9udGFsUGh5
c2ljYWxTaWRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmluZVBpZWNlSW1hZ2U6OmlzRW1wdHlQaWVjZVJlY3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6aW1hZ2VQaWVjZUhvcml6b250YWxTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OmltYWdl
UGllY2VWZXJ0aWNhbFNpZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Z2V0U2hhZG93SW5zZXRFeHRl
bnQgY29uc3QpOgorCiAyMDE3LTA5LTA1ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjE0OTUuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAyMjE2NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3MzUsNiArMjczNSw3IEBACiAJCTVDRTVE
OUFDMURCODlBMDYwMENFN0E4RCAvKiBKU1RleHRFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTVEOUE5MURCODk5RkMwMENFN0E4RCAv
KiBKU1RleHRFbmNvZGVyLmNwcCAqLzsgfTsKIAkJNUNFNUQ5QUQxREI4OUEwRTAwQ0U3QThEIC8q
IFRleHREZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDRTVEOUEwMURCODk3QzMwMENFN0E4RCAvKiBUZXh0RGVjb2Rlci5jcHAgKi87IH07
CiAJCTVDRTVEOUFFMURCODlBMTMwMENFN0E4RCAvKiBUZXh0RW5jb2Rlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U1RDlBMzFEQjg5N0MzMDBD
RTdBOEQgLyogVGV4dEVuY29kZXIuY3BwICovOyB9OworCQk1Q0VFRTQzNjFGNUY4RjIxMDAxNEE1
RjUgLyogUmVjdEVkZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDOTdBMzM2MUY1RjdBNjUwMDEwNTIwNyAvKiBSZWN0RWRnZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDRkM0MzUwMTkyNDA5RTMw
MEEwRDNCNSAvKiBQb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNGQzQzNEUxOTI0MDZBOTAwQTBEM0I1IC8qIFBv
aW50ZXJMb2NrQ29udHJvbGxlci5jcHAgKi87IH07CiAJCTVEMjFBODAyMTNFQ0U1REYwMEJCNzA2
NCAvKiBXZWJWVFRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUQyMUE4MDAxM0VDRTVERjAwQkI3MDY0IC8qIFdlYlZUVFBhcnNlci5jcHAg
Ki87IH07CiAJCTVEMjFBODAzMTNFQ0U1REYwMEJCNzA2NCAvKiBXZWJWVFRQYXJzZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVEMjFBODAxMTNFQ0U1
REYwMEJCNzA2NCAvKiBXZWJWVFRQYXJzZXIuaCAqLzsgfTsKQEAgLTEwNjE0LDYgKzEwNjE1LDcg
QEAKIAkJNUM2RTY1M0YxRDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1QzZFNjU0MDFENUNFREM5MDBGNzg2MkUgLyogVVJMUGFyc2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTFBhcnNlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzdDODhENzFEMEYxRjJCMDA5RDJGNkQgLyogU29ja2V0UHJv
dmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0UHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM5N0EzMzYxRjVGN0E2NTAwMTA1MjA3
IC8qIFJlY3RFZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY3RFZGdl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUI4NjBCMUMyMUUzQzYwMDExMEYz
NiAvKiBOZXR3b3JrTG9hZE1ldHJpY3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBOZXR3b3JrTG9hZE1ldHJpY3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDOUVGMTZGMURGRjcxOTkwMEE0NTJFMyAvKiBYUGF0aEdyYW1tYXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWFBhdGhHcmFtbWFyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM5RUYxNzAxREZGNzE5OTAwQTQ1MkUzIC8qIFhQYXRo
R3JhbW1hci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUGF0aEdyYW1tYXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNTE4LDggKzExNTIwLDggQEAKIAkJ
N0NCQTVCQTYxRjBCNEJERTAwMzRENzQ1IC8qIEpTRE9NQ29udmVydFdlYkdMLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRE9NQ29udmVydFdlYkdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0NCQkJDQzQxRjU2MDU2NzAwNUVGQUFDIC8qIERPTU1hdHJpeDJESW5pdC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NTWF0cml4MkRJbml0LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0NCQkJDQzYxRjU2MDU2ODAwNUVGQUFDIC8qIERPTU1hdHJpeDJE
SW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01NYXRyaXgyREluaXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0NCQkJDQzgxRjU2MTdDMDAwNUVGQUFD
IC8qIEpTRE9NTWF0cml4MkRJbml0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTRE9NTWF0cml4
MkRJbml0LmNwcDsgcGF0aCA9IEpTRE9NTWF0cml4MkRJbml0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJN0NCQkJDQzkxRjU2MTdDMDAwNUVGQUFDIC8qIEpTRE9NTWF0cml4MkRJ
bml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTRE9NTWF0cml4MkRJbml0Lmg7IHBhdGggPSBKU0RPTU1h
dHJpeDJESW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0JCQkNDODFGNTYx
N0MwMDA1RUZBQUMgLyogSlNET01NYXRyaXgyREluaXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNET01NYXRyaXgyREluaXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0JC
QkNDOTFGNTYxN0MwMDA1RUZBQUMgLyogSlNET01NYXRyaXgyREluaXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNET01NYXRyaXgyREluaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0ND
MkRERjgxRUM5NDE1QTAwMjdCNzc0IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTm90aWZpY2F0aW9uUGVybWlzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3Q0MyRERGQTFFQzk0MTVBMDAyN0I3NzQgLyogTm90aWZpY2F0aW9uUGVybWlzc2lv
bi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gTm90aWZpY2F0aW9uUGVybWlzc2lvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDQzJEREZFMUVDOTVBNDQwMDI3Qjc3NCAvKiBKU05vdGlmaWNhdGlvblBl
cm1pc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0
NTUyLDYgKzI0NTU0LDcgQEAKIAkJCQlBQkMxMjg3NjBCMzNBQTZEMDBDNjkzRDUgLyogUG9wdXBN
ZW51Q2xpZW50LmggKi8sCiAJCQkJQkMzQkUxMkEwRTk4MDkyRjAwODM1NTg4IC8qIFBvcHVwTWVu
dVN0eWxlLmggKi8sCiAJCQkJMDA4MUZFRkQxNkIwQTI0NDAwOEFBQTdBIC8qIFB1YmxpY1N1ZmZp
eC5oICovLAorCQkJCTVDOTdBMzM2MUY1RjdBNjUwMDEwNTIwNyAvKiBSZWN0RWRnZS5oICovLAog
CQkJCTk4MzFBRTQ5MTU0MjI1QTIwMEZFMjY0NCAvKiBSZWZlcnJlclBvbGljeS5oICovLAogCQkJ
CUNERkMzNjAzMThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwICov
LAogCQkJCUNERkMzNjA0MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIu
aCAqLywKQEAgLTI5NTM2LDYgKzI5NTM5LDcgQEAKIAkJCQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlG
MDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzQzNjhFODBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0
NUE5NTgxNzVENDE0QzAwQzIxRUM4IC8qIFJlY3RhbmdsZVNoYXBlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1Q0VFRTQzNjFGNUY4RjIxMDAxNEE1RjUgLyogUmVjdEVkZ2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk4MzFBRTRBMTU0MjI1QzkwMEZFMjY0NCAvKiBSZWZlcnJlclBvbGljeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNBQjQxODIxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNkNEREU4RDAxNzcwQkIyMjAwMTZFMDcyIC8qIFJlZ2lvbk92ZXJzZXRT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJ
KHJldmlzaW9uIDIyMTY1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBDU1NQcm9wZXJ0eTo6d3JhcFZh
bHVlSW5Db21tYVNlcGFyYQogCiBzdGF0aWMgQ1NTUHJvcGVydHlJRCByZXNvbHZlVG9QaHlzaWNh
bFByb3BlcnR5KFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBXcml0aW5nTW9kZSB3cml0aW5nTW9k
ZSwgTG9naWNhbEJveFNpZGUgbG9naWNhbFNpZGUsIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQmIHNob3J0aGFuZCkKIHsKLSAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVttYXBM
b2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0
aW9uKSwgbG9naWNhbFNpZGUpXTsKKyAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtz
dGF0aWNfY2FzdDxzaXplX3Q+KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRleHRG
bG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBsb2dpY2FsU2lkZSkpXTsKIH0KIAogZW51bSBM
b2dpY2FsRXh0ZW50IHsgTG9naWNhbFdpZHRoLCBMb2dpY2FsSGVpZ2h0IH07CkBAIC03Nyw1MyAr
NzcsNTMgQEAgQ1NTUHJvcGVydHlJRCBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdAogewogICAg
IHN3aXRjaCAocHJvcGVydHlJRCkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5F
bmQ6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwg
d3JpdGluZ01vZGUsIEVuZFNpZGUsIG1hcmdpblNob3J0aGFuZCgpKTsKKyAgICAgICAgcmV0dXJu
IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgTG9naWNh
bEJveFNpZGU6OkVuZCwgbWFyZ2luU2hvcnRoYW5kKCkpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5TdGFydDoKLSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVy
dHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgU3RhcnRTaWRlLCBtYXJnaW5TaG9ydGhhbmQoKSk7
CisgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3Jp
dGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlOjpTdGFydCwgbWFyZ2luU2hvcnRoYW5kKCkpOwogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmU6Ci0gICAgICAgIHJldHVybiByZXNv
bHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEJlZm9yZVNpZGUs
IG1hcmdpblNob3J0aGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJv
cGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkJlZm9yZSwgbWFy
Z2luU2hvcnRoYW5kKCkpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlcjoK
LSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0
aW5nTW9kZSwgQWZ0ZXJTaWRlLCBtYXJnaW5TaG9ydGhhbmQoKSk7CisgICAgICAgIHJldHVybiBy
ZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIExvZ2ljYWxC
b3hTaWRlOjpBZnRlciwgbWFyZ2luU2hvcnRoYW5kKCkpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRQYWRkaW5nRW5kOgotICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0
eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBFbmRTaWRlLCBwYWRkaW5nU2hvcnRoYW5kKCkpOwor
ICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRp
bmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6RW5kLCBwYWRkaW5nU2hvcnRoYW5kKCkpOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQ6Ci0gICAgICAgIHJldHVybiByZXNvbHZl
VG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIFN0YXJ0U2lkZSwgcGFk
ZGluZ1Nob3J0aGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVy
dHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OlN0YXJ0LCBwYWRkaW5n
U2hvcnRoYW5kKCkpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQmVmb3JlOgot
ICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRp
bmdNb2RlLCBCZWZvcmVTaWRlLCBwYWRkaW5nU2hvcnRoYW5kKCkpOworICAgICAgICByZXR1cm4g
cmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBMb2dpY2Fs
Qm94U2lkZTo6QmVmb3JlLCBwYWRkaW5nU2hvcnRoYW5kKCkpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRQYWRkaW5nQWZ0ZXI6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFBy
b3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEFmdGVyU2lkZSwgcGFkZGluZ1Nob3J0aGFu
ZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9u
LCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkFmdGVyLCBwYWRkaW5nU2hvcnRoYW5kKCkp
OwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQ6Ci0gICAgICAgIHJldHVybiBy
ZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEVuZFNpZGUs
IGJvcmRlckRpcmVjdGlvbnMoKSk7CisgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFBy
b3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlOjpFbmQsIGJvcmRl
ckRpcmVjdGlvbnMoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Ogot
ICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRp
bmdNb2RlLCBTdGFydFNpZGUsIGJvcmRlckRpcmVjdGlvbnMoKSk7CisgICAgICAgIHJldHVybiBy
ZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIExvZ2ljYWxC
b3hTaWRlOjpTdGFydCwgYm9yZGVyRGlyZWN0aW9ucygpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyQmVmb3JlOgotICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9w
ZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBCZWZvcmVTaWRlLCBib3JkZXJEaXJlY3Rpb25z
KCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24s
IHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QmVmb3JlLCBib3JkZXJEaXJlY3Rpb25zKCkp
OwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcjoKLSAgICAgICAgcmV0dXJu
IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgQWZ0ZXJT
aWRlLCBib3JkZXJEaXJlY3Rpb25zKCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2lj
YWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QWZ0ZXIs
IGJvcmRlckRpcmVjdGlvbnMoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVu
ZENvbG9yOgotICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rp
b24sIHdyaXRpbmdNb2RlLCBFbmRTaWRlLCBib3JkZXJDb2xvclNob3J0aGFuZCgpKTsKKyAgICAg
ICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9k
ZSwgTG9naWNhbEJveFNpZGU6OkVuZCwgYm9yZGVyQ29sb3JTaG9ydGhhbmQoKSk7CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3I6Ci0gICAgICAgIHJldHVybiByZXNv
bHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIFN0YXJ0U2lkZSwg
Ym9yZGVyQ29sb3JTaG9ydGhhbmQoKSk7CisgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNh
bFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlOjpTdGFydCwg
Ym9yZGVyQ29sb3JTaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckJlZm9yZUNvbG9yOgotICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShk
aXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBCZWZvcmVTaWRlLCBib3JkZXJDb2xvclNob3J0aGFuZCgp
KTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3
cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkJlZm9yZSwgYm9yZGVyQ29sb3JTaG9ydGhhbmQo
KSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3I6Ci0gICAgICAg
IHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUs
IEFmdGVyU2lkZSwgYm9yZGVyQ29sb3JTaG9ydGhhbmQoKSk7CisgICAgICAgIHJldHVybiByZXNv
bHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIExvZ2ljYWxCb3hT
aWRlOjpBZnRlciwgYm9yZGVyQ29sb3JTaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckVuZFN0eWxlOgotICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQ
cm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBFbmRTaWRlLCBib3JkZXJTdHlsZVNob3J0
aGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0
aW9uLCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkVuZCwgYm9yZGVyU3R5bGVTaG9ydGhh
bmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGU6Ci0gICAg
ICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01v
ZGUsIFN0YXJ0U2lkZSwgYm9yZGVyU3R5bGVTaG9ydGhhbmQoKSk7CisgICAgICAgIHJldHVybiBy
ZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIExvZ2ljYWxC
b3hTaWRlOjpTdGFydCwgYm9yZGVyU3R5bGVTaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlOgotICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5
c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBCZWZvcmVTaWRlLCBib3JkZXJT
dHlsZVNob3J0aGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVy
dHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkJlZm9yZSwgYm9yZGVy
U3R5bGVTaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVy
U3R5bGU6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlv
biwgd3JpdGluZ01vZGUsIEFmdGVyU2lkZSwgYm9yZGVyU3R5bGVTaG9ydGhhbmQoKSk7CisgICAg
ICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01v
ZGUsIExvZ2ljYWxCb3hTaWRlOjpBZnRlciwgYm9yZGVyU3R5bGVTaG9ydGhhbmQoKSk7CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFdpZHRoOgotICAgICAgICByZXR1cm4gcmVz
b2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBFbmRTaWRlLCBi
b3JkZXJXaWR0aFNob3J0aGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2Fs
UHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkVuZCwgYm9y
ZGVyV2lkdGhTaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0
YXJ0V2lkdGg6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVj
dGlvbiwgd3JpdGluZ01vZGUsIFN0YXJ0U2lkZSwgYm9yZGVyV2lkdGhTaG9ydGhhbmQoKSk7Cisg
ICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGlu
Z01vZGUsIExvZ2ljYWxCb3hTaWRlOjpTdGFydCwgYm9yZGVyV2lkdGhTaG9ydGhhbmQoKSk7CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoOgotICAgICAgICByZXR1
cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBCZWZv
cmVTaWRlLCBib3JkZXJXaWR0aFNob3J0aGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVU
b1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6
OkJlZm9yZSwgYm9yZGVyV2lkdGhTaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckFmdGVyV2lkdGg6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFBy
b3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEFmdGVyU2lkZSwgYm9yZGVyV2lkdGhTaG9y
dGhhbmQoKSk7CisgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVj
dGlvbiwgd3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlOjpBZnRlciwgYm9yZGVyV2lkdGhTaG9y
dGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aDogewogICAg
ICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2lk
dGgsIENTU1Byb3BlcnR5SGVpZ2h0IH07CiAgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNh
bFByb3BlcnR5KHdyaXRpbmdNb2RlLCBMb2dpY2FsV2lkdGgsIHByb3BlcnRpZXMpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmgJKHJldmlzaW9uIDIyMTY1MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxMDYg
KzIyLDEyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUg
IlJlY3RFZGdlLmgiCiAjaW5jbHVkZSAiV3JpdGluZ01vZGUuaCIKLSNpbmNsdWRlIDxhcnJheT4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBCb3hF
eHRlbnQgewotcHVibGljOgotICAgIEJveEV4dGVudCgpCi0gICAgICAgIDogbV9zaWRlcyh7IHsg
MCwgMCwgMCwgMCB9IH0pCi0gICAgewotICAgIH0KLQotICAgIEJveEV4dGVudChjb25zdCBUJiB0
b3AsIGNvbnN0IFQmIHJpZ2h0LCBjb25zdCBUJiBib3R0b20sIGNvbnN0IFQmIGxlZnQpCi0gICAg
ICAgIDogbV9zaWRlcyh7IHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0IH0gfSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgQm94RXh0ZW50KFQmJiB0b3AsIFQmJiByaWdodCwgVCYmIGJvdHRvbSwgVCYm
IGxlZnQpCi0gICAgICAgIDogbV9zaWRlcyh7IHsgc3RkOjpmb3J3YXJkPFQ+KHRvcCksIHN0ZDo6
Zm9yd2FyZDxUPihyaWdodCksIHN0ZDo6Zm9yd2FyZDxUPihib3R0b20pLCBzdGQ6OmZvcndhcmQ8
VD4obGVmdCkgfSB9KQotICAgIHsKLSAgICB9Ci0KLSAgICBUJiBhdChQaHlzaWNhbEJveFNpZGUg
c2lkZSkgeyByZXR1cm4gbV9zaWRlc1tzaWRlXTsgfQotICAgIFQmIHRvcCgpIHsgcmV0dXJuIGF0
KFRvcFNpZGUpOyB9Ci0gICAgVCYgcmlnaHQoKSB7IHJldHVybiBhdChSaWdodFNpZGUpOyB9Ci0g
ICAgVCYgYm90dG9tKCkgeyByZXR1cm4gYXQoQm90dG9tU2lkZSk7IH0KLSAgICBUJiBsZWZ0KCkg
eyByZXR1cm4gYXQoTGVmdFNpZGUpOyB9Ci0KLSAgICBjb25zdCBUJiBhdChQaHlzaWNhbEJveFNp
ZGUgc2lkZSkgY29uc3QgeyByZXR1cm4gbV9zaWRlc1tzaWRlXTsgfQotICAgIGNvbnN0IFQmIHRv
cCgpIGNvbnN0IHsgcmV0dXJuIGF0KFRvcFNpZGUpOyB9Ci0gICAgY29uc3QgVCYgcmlnaHQoKSBj
b25zdCB7IHJldHVybiBhdChSaWdodFNpZGUpOyB9Ci0gICAgY29uc3QgVCYgYm90dG9tKCkgY29u
c3QgeyByZXR1cm4gYXQoQm90dG9tU2lkZSk7IH0KLSAgICBjb25zdCBUJiBsZWZ0KCkgY29uc3Qg
eyByZXR1cm4gYXQoTGVmdFNpZGUpOyB9Ci0KLSAgICB2b2lkIHNldEF0KFBoeXNpY2FsQm94U2lk
ZSBzaWRlLCBjb25zdCBUJiB2KSB7IGF0KHNpZGUpID0gdjsgfQotICAgIHZvaWQgc2V0VG9wKGNv
bnN0IFQmIHRvcCkgeyBzZXRBdChUb3BTaWRlLCB0b3ApOyB9Ci0gICAgdm9pZCBzZXRSaWdodChj
b25zdCBUJiByaWdodCkgeyBzZXRBdChSaWdodFNpZGUsIHJpZ2h0KTsgfQotICAgIHZvaWQgc2V0
Qm90dG9tKGNvbnN0IFQmIGJvdHRvbSkgeyBzZXRBdChCb3R0b21TaWRlLCBib3R0b20pOyB9Ci0g
ICAgdm9pZCBzZXRMZWZ0KGNvbnN0IFQmIGxlZnQpIHsgc2V0QXQoTGVmdFNpZGUsIGxlZnQpOyB9
Ci0KLSAgICBUJiBiZWZvcmUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCi0gICAgewotICAgICAg
ICByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZSh3cml0aW5nTW9kZSwgQmVm
b3JlU2lkZSkpOwotICAgIH0KLQotICAgIFQmIGFmdGVyKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2Rl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUo
d3JpdGluZ01vZGUsIEFmdGVyU2lkZSkpOwotICAgIH0KLQotICAgIFQmIHN0YXJ0KFdyaXRpbmdN
b2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUikKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxv
dyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgU3RhcnRTaWRlKSk7Ci0gICAgfQotCi0gICAgVCYg
ZW5kKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExU
UikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRl
KG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgRW5kU2lkZSkpOwotICAgIH0K
LQotICAgIGNvbnN0IFQmIGJlZm9yZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKHdyaXRp
bmdNb2RlLCBCZWZvcmVTaWRlKSk7Ci0gICAgfQotCi0gICAgY29uc3QgVCYgYWZ0ZXIoV3JpdGlu
Z01vZGUgd3JpdGluZ01vZGUpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gYXQobWFwTG9n
aWNhbFNpZGVUb1BoeXNpY2FsU2lkZSh3cml0aW5nTW9kZSwgQWZ0ZXJTaWRlKSk7Ci0gICAgfQot
Ci0gICAgY29uc3QgVCYgc3RhcnQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rp
b24gZGlyZWN0aW9uID0gTFRSKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0KG1hcExv
Z2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rp
b24pLCBTdGFydFNpZGUpKTsKLSAgICB9Ci0KLSAgICBjb25zdCBUJiBlbmQoV3JpdGluZ01vZGUg
d3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRleHRG
bG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBFbmRTaWRlKSk7Ci0gICAgfQotCi0gICAgdm9p
ZCBzZXRCZWZvcmUoY29uc3QgVCYgYmVmb3JlLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgeyB0
aGlzLT5iZWZvcmUod3JpdGluZ01vZGUpID0gYmVmb3JlOyB9Ci0gICAgdm9pZCBzZXRBZnRlcihj
b25zdCBUJiBhZnRlciwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIHsgdGhpcy0+YWZ0ZXIod3Jp
dGluZ01vZGUpID0gYWZ0ZXI7IH0KLSAgICB2b2lkIHNldFN0YXJ0KGNvbnN0IFQmIHN0YXJ0LCBX
cml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpIHsg
dGhpcy0+c3RhcnQod3JpdGluZ01vZGUsIGRpcmVjdGlvbikgPSBzdGFydDsgfQotICAgIHZvaWQg
c2V0RW5kKGNvbnN0IFQmIGVuZCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rp
b24gZGlyZWN0aW9uID0gTFRSKSB7IHRoaXMtPmVuZCh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSA9
IGVuZDsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJveEV4dGVudCYgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9zaWRlcyA9PSBvdGhlci5tX3NpZGVzOwotICAg
IH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCb3hFeHRlbnQmIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2lkZXMgIT0gb3RoZXIubV9zaWRlczsKLSAgICB9Ci0K
LXByb3RlY3RlZDoKLSAgICBzdGQ6OmFycmF5PFQsIDQ+IG1fc2lkZXM7Ci19OwotCi1jbGFzcyBM
ZW5ndGhCb3ggOiBwdWJsaWMgQm94RXh0ZW50PExlbmd0aD4geworY2xhc3MgTGVuZ3RoQm94IDog
cHVibGljIFJlY3RFZGdlPExlbmd0aD4gewogcHVibGljOgogICAgIExlbmd0aEJveCgpCiAgICAg
ICAgIDogTGVuZ3RoQm94KEF1dG8pCkBAIC0xMjksMjIgKzM1LDIyIEBAIHB1YmxpYzoKICAgICB9
CiAKICAgICBleHBsaWNpdCBMZW5ndGhCb3goTGVuZ3RoVHlwZSB0eXBlKQotICAgICAgICA6IEJv
eEV4dGVudChMZW5ndGgodHlwZSksIExlbmd0aCh0eXBlKSwgTGVuZ3RoKHR5cGUpLCBMZW5ndGgo
dHlwZSkpCisgICAgICAgIDogUmVjdEVkZ2UoTGVuZ3RoKHR5cGUpLCBMZW5ndGgodHlwZSksIExl
bmd0aCh0eXBlKSwgTGVuZ3RoKHR5cGUpKQogICAgIHsKICAgICB9CiAKICAgICBleHBsaWNpdCBM
ZW5ndGhCb3goaW50IHYpCi0gICAgICAgIDogQm94RXh0ZW50KExlbmd0aCh2LCBGaXhlZCksIExl
bmd0aCh2LCBGaXhlZCksIExlbmd0aCh2LCBGaXhlZCksIExlbmd0aCh2LCBGaXhlZCkpCisgICAg
ICAgIDogUmVjdEVkZ2UoTGVuZ3RoKHYsIEZpeGVkKSwgTGVuZ3RoKHYsIEZpeGVkKSwgTGVuZ3Ro
KHYsIEZpeGVkKSwgTGVuZ3RoKHYsIEZpeGVkKSkKICAgICB7CiAgICAgfQogCiAgICAgTGVuZ3Ro
Qm94KGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSwgaW50IGxlZnQpCi0gICAgICAgIDog
Qm94RXh0ZW50KExlbmd0aCh0b3AsIEZpeGVkKSwgTGVuZ3RoKHJpZ2h0LCBGaXhlZCksIExlbmd0
aChib3R0b20sIEZpeGVkKSwgTGVuZ3RoKGxlZnQsIEZpeGVkKSkKKyAgICAgICAgOiBSZWN0RWRn
ZShMZW5ndGgodG9wLCBGaXhlZCksIExlbmd0aChyaWdodCwgRml4ZWQpLCBMZW5ndGgoYm90dG9t
LCBGaXhlZCksIExlbmd0aChsZWZ0LCBGaXhlZCkpCiAgICAgewogICAgIH0KIAogICAgIExlbmd0
aEJveChMZW5ndGgmJiB0b3AsIExlbmd0aCYmIHJpZ2h0LCBMZW5ndGgmJiBib3R0b20sIExlbmd0
aCYmIGxlZnQpCi0gICAgICAgIDogQm94RXh0ZW50IHsgV1RGTW92ZSh0b3ApLCBXVEZNb3ZlKHJp
Z2h0KSwgV1RGTW92ZShib3R0b20pLCBXVEZNb3ZlKGxlZnQpIH0KKyAgICAgICAgOiBSZWN0RWRn
ZSB7IFdURk1vdmUodG9wKSwgV1RGTW92ZShyaWdodCksIFdURk1vdmUoYm90dG9tKSwgV1RGTW92
ZShsZWZ0KSB9CiAgICAgewogICAgIH0KIApAQCAtMTU0LDggKzYwLDggQEAgcHVibGljOgogICAg
IH0KIH07CiAKLXVzaW5nIExheW91dEJveEV4dGVudCA9IEJveEV4dGVudDxMYXlvdXRVbml0PjsK
LXVzaW5nIEZsb2F0Qm94RXh0ZW50ID0gQm94RXh0ZW50PGZsb2F0PjsKK3VzaW5nIExheW91dEJv
eEV4dGVudCA9IFJlY3RFZGdlPExheW91dFVuaXQ+OwordXNpbmcgRmxvYXRCb3hFeHRlbnQgPSBS
ZWN0RWRnZTxmbG9hdD47CiAKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBjb25zdCBMZW5ndGhCb3gmKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBGbG9hdEJveEV4dGVudCYpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVjdEVkZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWN0RWRnZS5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1JlY3RFZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiV3JpdGluZ01vZGUuaCIKKyNpbmNsdWRlIDxhcnJheT4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUmVj
dEVkZ2UgeworcHVibGljOgorICAgIFJlY3RFZGdlKCkgPSBkZWZhdWx0OworICAgIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFU+CisgICAgUmVjdEVkZ2UoVSYmIHRvcCwgVSYmIHJpZ2h0LCBVJiYg
Ym90dG9tLCBVJiYgbGVmdCkKKyAgICAgICAgOiBtX3NpZGVzKHsgeyBzdGQ6OmZvcndhcmQ8VD4o
dG9wKSwgc3RkOjpmb3J3YXJkPFQ+KHJpZ2h0KSwgc3RkOjpmb3J3YXJkPFQ+KGJvdHRvbSksIHN0
ZDo6Zm9yd2FyZDxUPihsZWZ0KSB9IH0pCisgICAgeyB9CisgICAgCisgICAgVCYgYXQoUGh5c2lj
YWxCb3hTaWRlIHNpZGUpIHsgcmV0dXJuIG1fc2lkZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzaWRl
KV07IH0KKyAgICBUJiB0b3AoKSB7IHJldHVybiBhdChQaHlzaWNhbEJveFNpZGU6OlRvcCk7IH0K
KyAgICBUJiByaWdodCgpIHsgcmV0dXJuIGF0KFBoeXNpY2FsQm94U2lkZTo6UmlnaHQpOyB9Cisg
ICAgVCYgYm90dG9tKCkgeyByZXR1cm4gYXQoUGh5c2ljYWxCb3hTaWRlOjpCb3R0b20pOyB9Cisg
ICAgVCYgbGVmdCgpIHsgcmV0dXJuIGF0KFBoeXNpY2FsQm94U2lkZTo6TGVmdCk7IH0KKyAgICAK
KyAgICBjb25zdCBUJiBhdChQaHlzaWNhbEJveFNpZGUgc2lkZSkgY29uc3QgeyByZXR1cm4gbV9z
aWRlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNpZGUpXTsgfQorICAgIGNvbnN0IFQmIHRvcCgpIGNv
bnN0IHsgcmV0dXJuIGF0KFBoeXNpY2FsQm94U2lkZTo6VG9wKTsgfQorICAgIGNvbnN0IFQmIHJp
Z2h0KCkgY29uc3QgeyByZXR1cm4gYXQoUGh5c2ljYWxCb3hTaWRlOjpSaWdodCk7IH0KKyAgICBj
b25zdCBUJiBib3R0b20oKSBjb25zdCB7IHJldHVybiBhdChQaHlzaWNhbEJveFNpZGU6OkJvdHRv
bSk7IH0KKyAgICBjb25zdCBUJiBsZWZ0KCkgY29uc3QgeyByZXR1cm4gYXQoUGh5c2ljYWxCb3hT
aWRlOjpMZWZ0KTsgfQorICAgIAorICAgIHZvaWQgc2V0QXQoUGh5c2ljYWxCb3hTaWRlIHNpZGUs
IGNvbnN0IFQmIHYpIHsgYXQoc2lkZSkgPSB2OyB9CisgICAgdm9pZCBzZXRUb3AoY29uc3QgVCYg
dG9wKSB7IHNldEF0KFBoeXNpY2FsQm94U2lkZTo6VG9wLCB0b3ApOyB9CisgICAgdm9pZCBzZXRS
aWdodChjb25zdCBUJiByaWdodCkgeyBzZXRBdChQaHlzaWNhbEJveFNpZGU6OlJpZ2h0LCByaWdo
dCk7IH0KKyAgICB2b2lkIHNldEJvdHRvbShjb25zdCBUJiBib3R0b20pIHsgc2V0QXQoUGh5c2lj
YWxCb3hTaWRlOjpCb3R0b20sIGJvdHRvbSk7IH0KKyAgICB2b2lkIHNldExlZnQoY29uc3QgVCYg
bGVmdCkgeyBzZXRBdChQaHlzaWNhbEJveFNpZGU6OkxlZnQsIGxlZnQpOyB9CisgICAgCisgICAg
VCYgYmVmb3JlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSB7IHJldHVybiBhdChtYXBMb2dpY2Fs
U2lkZVRvUGh5c2ljYWxTaWRlKHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QmVmb3JlKSk7
IH0KKyAgICBUJiBhZnRlcihXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgeyByZXR1cm4gYXQobWFw
TG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZSh3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkFm
dGVyKSk7IH0KKyAgICBUJiBzdGFydChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVj
dGlvbiBkaXJlY3Rpb24gPSBMVFIpIHsgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNh
bFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBMb2dpY2FsQm94U2lk
ZTo6U3RhcnQpKTsgfQorICAgIFQmIGVuZChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERp
cmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpIHsgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlz
aWNhbFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBMb2dpY2FsQm94
U2lkZTo6RW5kKSk7IH0KKyAgICAKKyAgICBjb25zdCBUJiBiZWZvcmUoV3JpdGluZ01vZGUgd3Jp
dGluZ01vZGUpIGNvbnN0IHsgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUo
d3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlOjpCZWZvcmUpKTsgfQorICAgIGNvbnN0IFQmIGFm
dGVyKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdCB7IHJldHVybiBhdChtYXBMb2dpY2Fs
U2lkZVRvUGh5c2ljYWxTaWRlKHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QWZ0ZXIpKTsg
fQorICAgIGNvbnN0IFQmIHN0YXJ0KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0
aW9uIGRpcmVjdGlvbiA9IExUUikgY29uc3QgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1Bo
eXNpY2FsU2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIExvZ2ljYWxC
b3hTaWRlOjpTdGFydCkpOyB9CisgICAgY29uc3QgVCYgZW5kKFdyaXRpbmdNb2RlIHdyaXRpbmdN
b2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUikgY29uc3QgeyByZXR1cm4gYXQobWFw
TG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVj
dGlvbiksIExvZ2ljYWxCb3hTaWRlOjpFbmQpKTsgfQorICAgIAorICAgIHZvaWQgc2V0QmVmb3Jl
KGNvbnN0IFQmIGJlZm9yZSwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIHsgdGhpcy0+YmVmb3Jl
KHdyaXRpbmdNb2RlKSA9IGJlZm9yZTsgfQorICAgIHZvaWQgc2V0QWZ0ZXIoY29uc3QgVCYgYWZ0
ZXIsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSB7IHRoaXMtPmFmdGVyKHdyaXRpbmdNb2RlKSA9
IGFmdGVyOyB9CisgICAgdm9pZCBzZXRTdGFydChjb25zdCBUJiBzdGFydCwgV3JpdGluZ01vZGUg
d3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSB7IHRoaXMtPnN0YXJ0
KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pID0gc3RhcnQ7IH0KKyAgICB2b2lkIHNldEVuZChjb25z
dCBUJiBlbmQsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
biA9IExUUikgeyB0aGlzLT5lbmQod3JpdGluZ01vZGUsIGRpcmVjdGlvbikgPSBlbmQ7IH0KKyAg
ICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVjdEVkZ2UmIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX3NpZGVzID09IG90aGVyLm1fc2lkZXM7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgUmVjdEVkZ2UmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3NpZGVzICE9IG90aGVyLm1fc2lk
ZXM7IH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OmFycmF5PFQsIDQ+IG1fc2lkZXMge3swLCAwLCAw
LCAwfX07Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9UaWxlQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMjE2NTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY2Nyw3ICs2NjcsNyBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRT
Y3JvbGxpbmdNb2RlSW5kCiAKIHZvaWQgVGlsZUNvbnRyb2xsZXI6OnNldEhhc01hcmdpbnMoYm9v
bCBtYXJnaW5Ub3AsIGJvb2wgbWFyZ2luQm90dG9tLCBib29sIG1hcmdpbkxlZnQsIGJvb2wgbWFy
Z2luUmlnaHQpCiB7Ci0gICAgQm94RXh0ZW50PGJvb2w+IG1hcmdpbkVkZ2VzKG1hcmdpblRvcCwg
bWFyZ2luUmlnaHQsIG1hcmdpbkJvdHRvbSwgbWFyZ2luTGVmdCk7CisgICAgUmVjdEVkZ2U8Ym9v
bD4gbWFyZ2luRWRnZXMobWFyZ2luVG9wLCBtYXJnaW5SaWdodCwgbWFyZ2luQm90dG9tLCBtYXJn
aW5MZWZ0KTsKICAgICBpZiAobWFyZ2luRWRnZXMgPT0gbV9tYXJnaW5FZGdlcykKICAgICAgICAg
cmV0dXJuOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
VGlsZUNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMjE2NTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTksNyArMjE5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBvZiB0aG9zZSB0aWxlcyB3
aWxsIGJlIGVxdWl2YWxlbnQgdG8gdGhlIHdpZHRoIG9mIHRoZSBvdGhlciB0aWxlcyBpbiB0aGUg
Z3JpZC4gbV9tYXJnaW5SaWdodCBhbmQKICAgICAvLyBtX21hcmdpbkxlZnQgYXJlIHRoZSB3aWR0
aCBpbiBwaXhlbHMgb2YgdGhlIHJpZ2h0IGFuZCBsZWZ0IG1hcmdpbiB0aWxlcywgcmVzcGVjdGl2
ZWx5LiBUaGUgaGVpZ2h0IG9mCiAgICAgLy8gdGhvc2UgdGlsZXMgd2lsbCBiZSBlcXVpdmFsZW50
IHRvIHRoZSBoZWlnaHQgb2YgdGhlIG90aGVyIHRpbGVzIGluIHRoZSBncmlkLgotICAgIEJveEV4
dGVudDxib29sPiBtX21hcmdpbkVkZ2VzOworICAgIFJlY3RFZGdlPGJvb2w+IG1fbWFyZ2luRWRn
ZXM7CiAgICAgCiAgICAgYm9vbCBtX2lzSW5XaW5kb3cgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9z
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvV3JpdGluZ01vZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgJKHJldmlzaW9uIDIyMTY1MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvV3JpdGluZ01vZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksOCArMjksNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdy
aXRpbmdNb2RlX2gKLSNkZWZpbmUgV3JpdGluZ01vZGVfaAorI3ByYWdtYSBvbmNlCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMTEzLDI0ICsxMTIsMjMgQEAgaW5saW5lIGJvb2wgaXNGbGlw
cGVkTGluZXNXcml0aW5nTW9kZShXcgogICAgIHJldHVybiBpc1ZlcnRpY2FsV3JpdGluZ01vZGUo
d3JpdGluZ01vZGUpICE9IGlzRmxpcHBlZFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKTsKIH0KIAot
ZW51bSBMb2dpY2FsQm94U2lkZSB7Ci0gICAgQmVmb3JlU2lkZSwKLSAgICBFbmRTaWRlLAotICAg
IEFmdGVyU2lkZSwKLSAgICBTdGFydFNpZGUKK2VudW0gY2xhc3MgTG9naWNhbEJveFNpZGUgOiB1
aW50OF90IHsKKyAgICBCZWZvcmUsCisgICAgRW5kLAorICAgIEFmdGVyLAorICAgIFN0YXJ0CiB9
OwogCi1lbnVtIFBoeXNpY2FsQm94U2lkZSB7Ci0gICAgTmlsU2lkZSA9IC0xLAotICAgIFRvcFNp
ZGUsCi0gICAgUmlnaHRTaWRlLAotICAgIEJvdHRvbVNpZGUsCi0gICAgTGVmdFNpZGUKK2VudW0g
Y2xhc3MgUGh5c2ljYWxCb3hTaWRlIDogdWludDhfdCB7CisgICAgVG9wLAorICAgIFJpZ2h0LAor
ICAgIEJvdHRvbSwKKyAgICBMZWZ0CiB9OwogCiBpbmxpbmUgYm9vbCBpc0hvcml6b250YWxQaHlz
aWNhbFNpZGUoUGh5c2ljYWxCb3hTaWRlIHBoeXNpY2FsU2lkZSkKIHsKLSAgICByZXR1cm4gcGh5
c2ljYWxTaWRlID09IExlZnRTaWRlIHx8IHBoeXNpY2FsU2lkZSA9PSBSaWdodFNpZGU7CisgICAg
cmV0dXJuIHBoeXNpY2FsU2lkZSA9PSBQaHlzaWNhbEJveFNpZGU6OkxlZnQgfHwgcGh5c2ljYWxT
aWRlID09IFBoeXNpY2FsQm94U2lkZTo6UmlnaHQ7CiB9CiAKIGlubGluZSBQaHlzaWNhbEJveFNp
ZGUgbWlycm9yUGh5c2ljYWxTaWRlKFBoeXNpY2FsQm94U2lkZSBwaHlzaWNhbFNpZGUpCkBAIC0x
NjgsNSArMTY2LDMgQEAgaW5saW5lIFBoeXNpY2FsQm94U2lkZSBtYXBMb2dpY2FsU2lkZVRvUAog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBXcml0aW5nTW9kZV9oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFn
ZS5jcHAJKHJldmlzaW9uIDIyMTY1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9OaW5lUGllY2VJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw5ICsxMDAsOSBAQCBi
b29sIE5pbmVQaWVjZUltYWdlOjppc0VtcHR5UGllY2VSZWN0KEltCiAgICAgaWYgKHBpZWNlID09
IE1pZGRsZVBpZWNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBQaHlzaWNhbEJveFNp
ZGUgaG9yaXpvbnRhbFNpZGUgPSBpbWFnZVBpZWNlSG9yaXpvbnRhbFNpZGUocGllY2UpOwotICAg
IFBoeXNpY2FsQm94U2lkZSB2ZXJ0aWNhbFNpZGUgPSBpbWFnZVBpZWNlVmVydGljYWxTaWRlKHBp
ZWNlKTsKLSAgICByZXR1cm4gISgoaG9yaXpvbnRhbFNpZGUgPT0gTmlsU2lkZSB8fCBzbGljZXMu
YXQoaG9yaXpvbnRhbFNpZGUpKSAmJiAodmVydGljYWxTaWRlID09IE5pbFNpZGUgfHwgc2xpY2Vz
LmF0KHZlcnRpY2FsU2lkZSkpKTsKKyAgICBhdXRvIGhvcml6b250YWxTaWRlID0gaW1hZ2VQaWVj
ZUhvcml6b250YWxTaWRlKHBpZWNlKTsKKyAgICBhdXRvIHZlcnRpY2FsU2lkZSA9IGltYWdlUGll
Y2VWZXJ0aWNhbFNpZGUocGllY2UpOworICAgIHJldHVybiAhKCghaG9yaXpvbnRhbFNpZGUgfHwg
c2xpY2VzLmF0KCpob3Jpem9udGFsU2lkZSkpICYmICghdmVydGljYWxTaWRlIHx8IHNsaWNlcy5h
dCgqdmVydGljYWxTaWRlKSkpOwogfQogCiBib29sIE5pbmVQaWVjZUltYWdlOjppc0VtcHR5UGll
Y2VSZWN0KEltYWdlUGllY2UgcGllY2UsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiBkZXN0aW5h
dGlvblJlY3RzLCBjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgc291cmNlUmVjdHMpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaAkocmV2
aXNpb24gMjIxNjUxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVj
ZUltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDI2ICs3NiwyNiBAQCBpbmxpbmUgYm9vbCBp
c1ZlcnRpY2FsUGllY2UoSW1hZ2VQaWVjZSBwCiAgICAgcmV0dXJuIHBpZWNlID09IExlZnRQaWVj
ZSB8fCBwaWVjZSA9PSBSaWdodFBpZWNlIHx8IHBpZWNlID09IE1pZGRsZVBpZWNlOwogfQogCi1p
bmxpbmUgUGh5c2ljYWxCb3hTaWRlIGltYWdlUGllY2VIb3Jpem9udGFsU2lkZShJbWFnZVBpZWNl
IHBpZWNlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8UGh5c2ljYWxCb3hTaWRlPiBpbWFnZVBpZWNl
SG9yaXpvbnRhbFNpZGUoSW1hZ2VQaWVjZSBwaWVjZSkKIHsKICAgICBpZiAocGllY2UgPT0gVG9w
TGVmdFBpZWNlIHx8IHBpZWNlID09IFRvcFBpZWNlIHx8IHBpZWNlID09IFRvcFJpZ2h0UGllY2Up
Ci0gICAgICAgIHJldHVybiBUb3BTaWRlOworICAgICAgICByZXR1cm4gUGh5c2ljYWxCb3hTaWRl
OjpUb3A7CiAKICAgICBpZiAocGllY2UgPT0gQm90dG9tTGVmdFBpZWNlIHx8IHBpZWNlID09IEJv
dHRvbVBpZWNlIHx8IHBpZWNlID09IEJvdHRvbVJpZ2h0UGllY2UpCi0gICAgICAgIHJldHVybiBC
b3R0b21TaWRlOworICAgICAgICByZXR1cm4gUGh5c2ljYWxCb3hTaWRlOjpCb3R0b207CiAKLSAg
ICByZXR1cm4gTmlsU2lkZTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1pbmxpbmUg
UGh5c2ljYWxCb3hTaWRlIGltYWdlUGllY2VWZXJ0aWNhbFNpZGUoSW1hZ2VQaWVjZSBwaWVjZSkK
K2lubGluZSBzdGQ6Om9wdGlvbmFsPFBoeXNpY2FsQm94U2lkZT4gaW1hZ2VQaWVjZVZlcnRpY2Fs
U2lkZShJbWFnZVBpZWNlIHBpZWNlKQogewogICAgIGlmIChwaWVjZSA9PSBUb3BMZWZ0UGllY2Ug
fHwgcGllY2UgPT0gTGVmdFBpZWNlIHx8IHBpZWNlID09IEJvdHRvbUxlZnRQaWVjZSkKLSAgICAg
ICAgcmV0dXJuIExlZnRTaWRlOworICAgICAgICByZXR1cm4gUGh5c2ljYWxCb3hTaWRlOjpMZWZ0
OwogCiAgICAgaWYgKHBpZWNlID09IFRvcFJpZ2h0UGllY2UgfHwgcGllY2UgPT0gUmlnaHRQaWVj
ZSB8fCBwaWVjZSA9PSBCb3R0b21SaWdodFBpZWNlKQotICAgICAgICByZXR1cm4gUmlnaHRTaWRl
OworICAgICAgICByZXR1cm4gUGh5c2ljYWxCb3hTaWRlOjpSaWdodDsKIAotICAgIHJldHVybiBO
aWxTaWRlOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGNsYXNzIE5pbmVQaWVjZUlt
YWdlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcAkocmV2aXNpb24gMjIxNjUxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyMCw3ICsxNzIwLDcgQEAg
TGF5b3V0Qm94RXh0ZW50IFJlbmRlclN0eWxlOjpnZXRTaGFkb3dJbgogICAgICAgICBsZWZ0ID0g
c3RkOjptYXg8TGF5b3V0VW5pdD4obGVmdCwgc2hhZG93LT54KCkgKyBleHRlbnRBbmRTcHJlYWQp
OwogICAgIH0KIAotICAgIHJldHVybiBMYXlvdXRCb3hFeHRlbnQodG9wLCByaWdodCwgYm90dG9t
LCBsZWZ0KTsKKyAgICByZXR1cm4gTGF5b3V0Qm94RXh0ZW50KFdURk1vdmUodG9wKSwgV1RGTW92
ZShyaWdodCksIFdURk1vdmUoYm90dG9tKSwgV1RGTW92ZShsZWZ0KSk7CiB9CiAKIHZvaWQgUmVu
ZGVyU3R5bGU6OmdldFNoYWRvd0hvcml6b250YWxFeHRlbnQoY29uc3QgU2hhZG93RGF0YSogc2hh
ZG93LCBMYXlvdXRVbml0ICZsZWZ0LCBMYXlvdXRVbml0ICZyaWdodCkgY29uc3QKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMjE2NTgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA5LTA1ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXplIEJveEV4dGVudCBp
bnRvIFJlY3RFZGdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzY0MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAoY2xhc3NfdGVtcGxh
dGVfaGVhZGVycyk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE3LTA5LTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFdLVUlEZWxlZ2F0ZVByaXZhdGUg
ZXF1aXZhbGVudCBvZiBXS1BhZ2VVSUNsaWVudCdzIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHJldmlzaW9uIDIy
MTY1MSkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHdvcmtp
bmcgY29weSkKQEAgLTI5Miw3ICsyOTIsNyBAQCBkZWYgY2xhc3NfdGVtcGxhdGVfaGVhZGVycyh0
ZW1wbGF0ZV9zdHJpCiAgICAgdGVtcGxhdGVfc3RyaW5nID0gdGVtcGxhdGVfc3RyaW5nLnN0cmlw
KCkKIAogICAgIGNsYXNzX3RlbXBsYXRlX3R5cGVzID0gewotICAgICAgICAnV2ViQ29yZTo6Qm94
RXh0ZW50JzogeydoZWFkZXJzJzogWyc8V2ViQ29yZS9MZW5ndGhCb3guaD4nXSwgJ2FyZ3VtZW50
X2NvZGVyX2hlYWRlcnMnOiBbJyJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCInXX0sCisgICAgICAg
ICdXZWJDb3JlOjpSZWN0RWRnZSc6IHsnaGVhZGVycyc6IFsnPFdlYkNvcmUvUmVjdEVkZ2UuaD4n
XSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKICAg
ICAgICAgJ0hhc2hNYXAnOiB7J2hlYWRlcnMnOiBbJzx3dGYvSGFzaE1hcC5oPiddLCAnYXJndW1l
bnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnc3Rk
OjpvcHRpb25hbCc6IHsnaGVhZGVycyc6IFsnPHd0Zi9PcHRpb25hbC5oPiddLCAnYXJndW1lbnRf
Y29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnT3B0aW9u
U2V0JzogeydoZWFkZXJzJzogWyc8d3RmL09wdGlvblNldC5oPiddLCAnYXJndW1lbnRfY29kZXJf
aGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LApJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDIyMTY1MSkKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NSwxMCArNDUsNiBAQCBjbGFzcyBNb25vdG9uaWNUaW1lOwogY2xhc3MgU2Vjb25kczsK
IH0KIAotbmFtZXNwYWNlIFBBTCB7Ci1jbGFzcyBTZXNzaW9uSUQ7Ci19Ci0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOwpAQCAtMTAzLDcgKzk5LDYgQEAgc3RydWN0IEdyYW1tYXJEZXRhaWw7CiBzdHJ1Y3Qg
TWltZUNsYXNzSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2Fy
ZFVSTDsKLXN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKIHN0cnVjdCBQbHVnaW5JbmZvOwog
c3RydWN0IFJlY2VudFNlYXJjaDsKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpAQCAt
MTEzLDcwICsxMDgsNTIgQEAgc3RydWN0IFRleHRJbmRpY2F0b3JEYXRhOwogc3RydWN0IFZpZXdw
b3J0QXR0cmlidXRlczsKIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKICAgICAKLXRlbXBsYXRlIDx0
eXBlbmFtZT4gY2xhc3MgQm94RXh0ZW50OwotdXNpbmcgRmxvYXRCb3hFeHRlbnQgPSBCb3hFeHRl
bnQ8ZmxvYXQ+OwotfQordGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBSZWN0RWRnZTsKK3VzaW5n
IEZsb2F0Qm94RXh0ZW50ID0gUmVjdEVkZ2U8ZmxvYXQ+OwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0Owogc3RydWN0IEtleXBy
ZXNzQ29tbWFuZDsKLX0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQotbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgRmxvYXRRdWFkOwogY2xhc3MgU2VsZWN0aW9uUmVjdDsKIHN0cnVjdCBI
aWdobGlnaHQ7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRXZWJD
b250ZW50Owogc3RydWN0IFZpZXdwb3J0QXJndW1lbnRzOwotfQogI2VuZGlmCiAKICNpZiBVU0Uo
U09VUCkKLW5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBTb3VwTmV0d29ya1Byb3h5U2V0dGlu
Z3M7Ci19CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdQRSkKLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LXN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudHM7Ci19CitzdHJ1Y3QgUGFzdGVib2FyZFdlYkNv
bnRlbnQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKLX0KICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLW5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OwotfQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLW5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlh
U2Vzc2lvbk1ldGFkYXRhOwotfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQot
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2FwdHVyZURldmljZTsKIHN0cnVjdCBNZWRpYUNv
bnN0cmFpbnRzOwotfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLW5h
bWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIElEQktleVBhdGggPSBWYXJpYW50PFN0cmluZywgVmVj
dG9yPFN0cmluZz4+OwotfQogI2VuZGlmCit9CiAKIG5hbWVzcGFjZSBJUEMgewogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjIxNjUxKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTE3MCw4ICsxNzAsOCBAQCBlbnVtIGNsYXNzIEhhc0luc2VjdXJlQ29udGVudDsKIGVudW0gY2xh
c3MgTm90aWZpY2F0aW9uRGlyZWN0aW9uOwogZW51bSBjbGFzcyBTaG91bGRTYW1wbGU7CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZT4gY2xhc3MgQm94RXh0ZW50OwotdXNpbmcgRmxvYXRCb3hFeHRlbnQg
PSBCb3hFeHRlbnQ8ZmxvYXQ+OwordGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBSZWN0RWRnZTsK
K3VzaW5nIEZsb2F0Qm94RXh0ZW50ID0gUmVjdEVkZ2U8ZmxvYXQ+OwogfQogCiAjaWYgUExBVEZP
Uk0oR1RLKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjIxNjUxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zODMsNyArMzgz
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBQTEFURk9STShJT1MpCiAgICAg
RHluYW1pY1ZpZXdwb3J0VXBkYXRlQ2hhbmdlZFRhcmdldChkb3VibGUgbmV3VGFyZ2V0U2NhbGUs
IFdlYkNvcmU6OkZsb2F0UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24sIHVpbnQ2NF90IGR5bmFtaWNW
aWV3cG9ydFNpemVVcGRhdGVJRCkKICAgICBDb3VsZE5vdFJlc3RvcmVQYWdlU3RhdGUoKQotICAg
IFJlc3RvcmVQYWdlU3RhdGUoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiBzY3Jv
bGxQb3NpdGlvbiwgV2ViQ29yZTo6RmxvYXRQb2ludCBzY3JvbGxPcmlnaW4sIFdlYkNvcmU6OkJv
eEV4dGVudDxmbG9hdD4gb2JzY3VyZWRJbnNldHNPblNhdmUsIGRvdWJsZSBzY2FsZSkKKyAgICBS
ZXN0b3JlUGFnZVN0YXRlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gc2Nyb2xs
UG9zaXRpb24sIFdlYkNvcmU6OkZsb2F0UG9pbnQgc2Nyb2xsT3JpZ2luLCBXZWJDb3JlOjpSZWN0
RWRnZTxmbG9hdD4gb2JzY3VyZWRJbnNldHNPblNhdmUsIGRvdWJsZSBzY2FsZSkKICAgICBSZXN0
b3JlUGFnZUNlbnRlckFuZFNjYWxlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4g
dW5vYnNjdXJlZENlbnRlciwgZG91YmxlIHNjYWxlKQogICAgIERpZEdldFRhcEhpZ2hsaWdodEdl
b21ldHJpZXModWludDY0X3QgcmVxdWVzdElELCBXZWJDb3JlOjpDb2xvciBjb2xvciwgVmVjdG9y
PFdlYkNvcmU6OkZsb2F0UXVhZD4gZ2VvbWV0cmllcywgV2ViQ29yZTo6SW50U2l6ZSB0b3BMZWZ0
UmFkaXVzLCBXZWJDb3JlOjpJbnRTaXplIHRvcFJpZ2h0UmFkaXVzLCBXZWJDb3JlOjpJbnRTaXpl
IGJvdHRvbUxlZnRSYWRpdXMsIFdlYkNvcmU6OkludFNpemUgYm90dG9tUmlnaHRSYWRpdXMpCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjIxNjUxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDQsNyAr
NDQsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRWaWV3
cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUgc2l6
ZSkKICAgICBTZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUp
CiAgICAgU2V0RGV2aWNlT3JpZW50YXRpb24oaW50MzJfdCBkZXZpY2VPcmllbnRhdGlvbikKLSAg
ICBEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKFdlYkNvcmU6OkZsb2F0U2l6ZSBtaW5pbXVtTGF5
b3V0U2l6ZSwgV2ViQ29yZTo6RmxvYXRTaXplIG1heGltdW1Vbm9ic2N1cmVkU2l6ZSwgV2ViQ29y
ZTo6RmxvYXRSZWN0IHRhcmdldEV4cG9zZWRDb250ZW50UmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0
IHRhcmdldFVub2JzY3VyZWRSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0VW5vYnNjdXJl
ZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywgV2ViQ29yZTo6Qm94RXh0ZW50PGZsb2F0PiB0
YXJnZXRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldHMsIGRvdWJsZSBzY2FsZSwgaW50MzJfdCBkZXZp
Y2VPcmllbnRhdGlvbiwgdWludDY0X3QgZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEKQorICAg
IER5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUoV2ViQ29yZTo6RmxvYXRTaXplIG1pbmltdW1MYXlv
dXRTaXplLCBXZWJDb3JlOjpGbG9hdFNpemUgbWF4aW11bVVub2JzY3VyZWRTaXplLCBXZWJDb3Jl
OjpGbG9hdFJlY3QgdGFyZ2V0RXhwb3NlZENvbnRlbnRSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3Qg
dGFyZ2V0VW5vYnNjdXJlZFJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRVbm9ic2N1cmVk
UmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpSZWN0RWRnZTxmbG9hdD4gdGFy
Z2V0VW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzLCBkb3VibGUgc2NhbGUsIGludDMyX3QgZGV2aWNl
T3JpZW50YXRpb24sIHVpbnQ2NF90IGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRCkKICAgICBT
eW5jaHJvbml6ZUR5bmFtaWNWaWV3cG9ydFVwZGF0ZSgpIC0+IChkb3VibGUgbmV3VGFyZ2V0U2Nh
bGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24sIHVpbnQ2NF90IG5leHRW
YWxpZExheWVyVHJlZVRyYW5zYWN0aW9uSUQpCiAKICAgICBIYW5kbGVUYXAoV2ViQ29yZTo6SW50
UG9pbnQgcG9pbnQsIHVpbnQ2NF90IGxhc3RMYXllclRyZWVUcmFuc2FjdGlvbklkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319981</attachid>
            <date>2017-09-05 21:39:24 -0700</date>
            <delta_ts>2017-09-07 16:26:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176437-20170905213924.patch</filename>
            <type>text/plain</type>
            <size>40466</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTY2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkzIEBACisyMDE3LTA5LTA1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXpl
IEJveEV4dGVudCBpbnRvIFJlY3RFZGdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzY0MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBbmQgZ2l2ZSBpdCBpdHMgb3duIGhlYWRlci4KKyAgICAgICAgTm8g
Y2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eSk6CisgICAgICAgICogcGxhdGZv
cm0vTGVuZ3RoQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6Okxlbmd0aEJveCk6
CisgICAgICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6OkJveEV4dGVudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6OmF0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkJveEV4dGVudDo6dG9wKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJveEV4dGVudDo6
cmlnaHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50Ojpib3R0b20pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50OjpsZWZ0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJveEV4dGVudDo6YXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Qm94RXh0ZW50Ojp0b3AgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Qm94RXh0ZW50OjpyaWdodCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpC
b3hFeHRlbnQ6OmJvdHRvbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCb3hF
eHRlbnQ6OmxlZnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50
OjpzZXRBdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6OnNldFRvcCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6OnNldFJpZ2h0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkJveEV4dGVudDo6c2V0Qm90dG9tKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJveEV4dGVudDo6c2V0TGVmdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpCb3hFeHRlbnQ6OmJlZm9yZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpC
b3hFeHRlbnQ6OmFmdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJveEV4dGVudDo6
c3RhcnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50OjplbmQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50OjpiZWZvcmUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50OjphZnRlciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6OnN0YXJ0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkJveEV4dGVudDo6ZW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkJveEV4dGVudDo6c2V0QmVmb3JlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkJveEV4dGVudDo6c2V0QWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0
ZW50OjpzZXRTdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6OnNl
dEVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6Om9wZXJhdG9yPT0g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50OjpvcGVyYXRvciE9
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9SZWN0RWRnZS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlOjpSZWN0RWRnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWN0RWRnZTo6YXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2U6OnRvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6cmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVk
Z2U6OmJvdHRvbSk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6bGVmdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWN0RWRnZTo6YXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVk
Z2U6OnRvcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6cmlnaHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2U6OmJvdHRvbSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWN0RWRnZTo6bGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRn
ZTo6c2V0QXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2U6OnNldFRvcCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWN0RWRnZTo6c2V0UmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVk
Z2U6OnNldEJvdHRvbSk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6c2V0TGVmdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6YmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
Y3RFZGdlOjphZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6c3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVjdEVkZ2U6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRn
ZTo6YmVmb3JlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlOjphZnRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6c3RhcnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVjdEVkZ2U6OmVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRn
ZTo6c2V0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlOjpzZXRBZnRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6c2V0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVjdEVkZ2U6OnNldEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6b3BlcmF0b3I9
PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZTo6b3BlcmF0b3IhPSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnNldEhhc01hcmdpbnMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9Xcml0aW5nTW9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6aXNIb3Jpem9udGFsUGh5
c2ljYWxTaWRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmluZVBpZWNlSW1hZ2U6OmlzRW1wdHlQaWVjZVJlY3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6aW1hZ2VQaWVjZUhvcml6b250YWxTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OmltYWdl
UGllY2VWZXJ0aWNhbFNpZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Z2V0U2hhZG93SW5zZXRFeHRl
bnQgY29uc3QpOgorCiAyMDE3LTA5LTA1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBGaXggYSBmZXcgbWlub3IgcHJvYmxlbXMgZm91bmQgd2hpbGUgd29ya2luZyB0
b3dhcmQgcmVtb3ZpbmcgdW5uZWVkZWQgY2FsbHMgdG8gdXBkYXRlU3R5bGUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDIyMTY2MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjczNSw2ICsyNzM1LDcgQEAKIAkJNUNFNUQ5QUMx
REI4OUEwNjAwQ0U3QThEIC8qIEpTVGV4dEVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFNUQ5QTkxREI4OTlGQzAwQ0U3QThEIC8qIEpT
VGV4dEVuY29kZXIuY3BwICovOyB9OwogCQk1Q0U1RDlBRDFEQjg5QTBFMDBDRTdBOEQgLyogVGV4
dERlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUNFNUQ5QTAxREI4OTdDMzAwQ0U3QThEIC8qIFRleHREZWNvZGVyLmNwcCAqLzsgfTsKIAkJ
NUNFNUQ5QUUxREI4OUExMzAwQ0U3QThEIC8qIFRleHRFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTVEOUEzMURCODk3QzMwMENFN0E4
RCAvKiBUZXh0RW5jb2Rlci5jcHAgKi87IH07CisJCTVDRUVFNDM2MUY1RjhGMjEwMDE0QTVGNSAv
KiBSZWN0RWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUM5N0EzMzYxRjVGN0E2NTAwMTA1MjA3IC8qIFJlY3RFZGdlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUNGQzQzNTAxOTI0MDlFMzAwQTBE
M0I1IC8qIFBvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZDNDM0RTE5MjQwNkE5MDBBMEQzQjUgLyogUG9pbnRl
ckxvY2tDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJNUQyMUE4MDIxM0VDRTVERjAwQkI3MDY0IC8q
IFdlYlZUVFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1RDIxQTgwMDEzRUNFNURGMDBCQjcwNjQgLyogV2ViVlRUUGFyc2VyLmNwcCAqLzsg
fTsKIAkJNUQyMUE4MDMxM0VDRTVERjAwQkI3MDY0IC8qIFdlYlZUVFBhcnNlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQyMUE4MDExM0VDRTVERjAw
QkI3MDY0IC8qIFdlYlZUVFBhcnNlci5oICovOyB9OwpAQCAtMTA2MTQsNiArMTA2MTUsNyBAQAog
CQk1QzZFNjUzRjFENUNFREM5MDBGNzg2MkUgLyogVVJMUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDNkU2NTQwMUQ1Q0VEQzkwMEY3ODYyRSAvKiBVUkxQYXJzZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVJMUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDN0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2NrZXRQcm92aWRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Qzk3QTMzNjFGNUY3QTY1MDAxMDUyMDcgLyog
UmVjdEVkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdEVkZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM5Qjg2MEIxQzIxRTNDNjAwMTEwRjM2IC8q
IE5ldHdvcmtMb2FkTWV0cmljcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IE5ldHdvcmtMb2FkTWV0cmljcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUM5RUYxNkYxREZGNzE5OTAwQTQ1MkUzIC8qIFhQYXRoR3JhbW1hci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUGF0aEdyYW1tYXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzlFRjE3MDFERkY3MTk5MDBBNDUyRTMgLyogWFBhdGhHcmFt
bWFyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQYXRoR3JhbW1hci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE1MTgsOCArMTE1MjAsOCBAQAogCQk3Q0JB
NUJBNjFGMEI0QkRFMDAzNEQ3NDUgLyogSlNET01Db252ZXJ0V2ViR0wuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNET01Db252ZXJ0V2ViR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3Q0JCQkNDNDFGNTYwNTY3MDA1RUZBQUMgLyogRE9NTWF0cml4MkRJbml0LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBET01NYXRyaXgyREluaXQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3Q0JCQkNDNjFGNTYwNTY4MDA1RUZBQUMgLyogRE9NTWF0cml4MkRJbml0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU1hdHJpeDJESW5pdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0JCQkNDODFGNTYxN0MwMDA1RUZBQUMgLyog
SlNET01NYXRyaXgyREluaXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNET01NYXRyaXgyRElu
aXQuY3BwOyBwYXRoID0gSlNET01NYXRyaXgyREluaXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk3Q0JCQkNDOTFGNTYxN0MwMDA1RUZBQUMgLyogSlNET01NYXRyaXgyREluaXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gSlNET01NYXRyaXgyREluaXQuaDsgcGF0aCA9IEpTRE9NTWF0cml4
MkRJbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQkJCQ0M4MUY1NjE3QzAw
MDVFRkFBQyAvKiBKU0RPTU1hdHJpeDJESW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RP
TU1hdHJpeDJESW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQkJCQ0M5
MUY1NjE3QzAwMDVFRkFBQyAvKiBKU0RPTU1hdHJpeDJESW5pdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0RPTU1hdHJpeDJESW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0MyRERG
ODFFQzk0MTVBMDAyN0I3NzQgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBOb3RpZmljYXRpb25QZXJtaXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDQzJEREZBMUVDOTQxNUEwMDI3Qjc3NCAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBOb3RpZmljYXRpb25QZXJtaXNzaW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0NDMkRERkUxRUM5NUE0NDAwMjdCNzc0IC8qIEpTTm90aWZpY2F0aW9uUGVybWlz
c2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vdGlmaWNh
dGlvblBlcm1pc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ1NTIs
NiArMjQ1NTQsNyBAQAogCQkJCUFCQzEyODc2MEIzM0FBNkQwMEM2OTNENSAvKiBQb3B1cE1lbnVD
bGllbnQuaCAqLywKIAkJCQlCQzNCRTEyQTBFOTgwOTJGMDA4MzU1ODggLyogUG9wdXBNZW51U3R5
bGUuaCAqLywKIAkJCQkwMDgxRkVGRDE2QjBBMjQ0MDA4QUFBN0EgLyogUHVibGljU3VmZml4Lmgg
Ki8sCisJCQkJNUM5N0EzMzYxRjVGN0E2NTAwMTA1MjA3IC8qIFJlY3RFZGdlLmggKi8sCiAJCQkJ
OTgzMUFFNDkxNTQyMjVBMjAwRkUyNjQ0IC8qIFJlZmVycmVyUG9saWN5LmggKi8sCiAJCQkJQ0RG
QzM2MDMxOENBNjFDMjAwMjZFNTZGIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAgKi8sCiAJ
CQkJQ0RGQzM2MDQxOENBNjFDMjAwMjZFNTZGIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lci5oICov
LApAQCAtMjk1MzYsNiArMjk1MzksNyBAQAogCQkJCTQxMTAzQUFDMUUzOTc5MTAwMDc2OUYwMyAv
KiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDM2
OEU4MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk1
ODE3NUQ0MTRDMDBDMjFFQzggLyogUmVjdGFuZ2xlU2hhcGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTVDRUVFNDM2MUY1RjhGMjEwMDE0QTVGNSAvKiBSZWN0RWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTgzMUFFNEExNTQyMjVDOTAwRkUyNjQ0IC8qIFJlZmVycmVyUG9saWN5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0FCNDE4MjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2Q0RERThEMDE3NzBCQjIyMDAxNkUwNzIgLyogUmVnaW9uT3ZlcnNldFN0YXRl
LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAkocmV2
aXNpb24gMjIxNjYyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCB2b2lkIENTU1Byb3BlcnR5Ojp3cmFwVmFsdWVJ
bkNvbW1hU2VwYXJhCiAKIHN0YXRpYyBDU1NQcm9wZXJ0eUlEIHJlc29sdmVUb1BoeXNpY2FsUHJv
cGVydHkoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBM
b2dpY2FsQm94U2lkZSBsb2dpY2FsU2lkZSwgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYg
c2hvcnRoYW5kKQogewotICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW21hcExvZ2lj
YWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24p
LCBsb2dpY2FsU2lkZSldOworICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW3N0YXRp
Y19jYXN0PHNpemVfdD4obWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShtYWtlVGV4dEZsb3co
d3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIGxvZ2ljYWxTaWRlKSldOwogfQogCiBlbnVtIExvZ2lj
YWxFeHRlbnQgeyBMb2dpY2FsV2lkdGgsIExvZ2ljYWxIZWlnaHQgfTsKQEAgLTc3LDUzICs3Nyw1
MyBAQCBDU1NQcm9wZXJ0eUlEIENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0CiB7CiAgICAgc3dp
dGNoIChwcm9wZXJ0eUlEKSB7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZDoK
LSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0
aW5nTW9kZSwgRW5kU2lkZSwgbWFyZ2luU2hvcnRoYW5kKCkpOworICAgICAgICByZXR1cm4gcmVz
b2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94
U2lkZTo6RW5kLCBtYXJnaW5TaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpblN0YXJ0OgotICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShk
aXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBTdGFydFNpZGUsIG1hcmdpblNob3J0aGFuZCgpKTsKKyAg
ICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5n
TW9kZSwgTG9naWNhbEJveFNpZGU6OlN0YXJ0LCBtYXJnaW5TaG9ydGhhbmQoKSk7CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZToKLSAgICAgICAgcmV0dXJuIHJlc29sdmVU
b1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgQmVmb3JlU2lkZSwgbWFy
Z2luU2hvcnRoYW5kKCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0
eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QmVmb3JlLCBtYXJnaW5T
aG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyOgotICAg
ICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdN
b2RlLCBBZnRlclNpZGUsIG1hcmdpblNob3J0aGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29s
dmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNp
ZGU6OkFmdGVyLCBtYXJnaW5TaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFBhZGRpbmdFbmQ6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRp
cmVjdGlvbiwgd3JpdGluZ01vZGUsIEVuZFNpZGUsIHBhZGRpbmdTaG9ydGhhbmQoKSk7CisgICAg
ICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01v
ZGUsIExvZ2ljYWxCb3hTaWRlOjpFbmQsIHBhZGRpbmdTaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFydDoKLSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1Bo
eXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgU3RhcnRTaWRlLCBwYWRkaW5n
U2hvcnRoYW5kKCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShk
aXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6U3RhcnQsIHBhZGRpbmdTaG9y
dGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmU6Ci0gICAg
ICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01v
ZGUsIEJlZm9yZVNpZGUsIHBhZGRpbmdTaG9ydGhhbmQoKSk7CisgICAgICAgIHJldHVybiByZXNv
bHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIExvZ2ljYWxCb3hT
aWRlOjpCZWZvcmUsIHBhZGRpbmdTaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFBhZGRpbmdBZnRlcjoKLSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVy
dHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgQWZ0ZXJTaWRlLCBwYWRkaW5nU2hvcnRoYW5kKCkp
OworICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdy
aXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QWZ0ZXIsIHBhZGRpbmdTaG9ydGhhbmQoKSk7CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZDoKLSAgICAgICAgcmV0dXJuIHJlc29s
dmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgRW5kU2lkZSwgYm9y
ZGVyRGlyZWN0aW9ucygpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVy
dHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkVuZCwgYm9yZGVyRGly
ZWN0aW9ucygpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnQ6Ci0gICAg
ICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01v
ZGUsIFN0YXJ0U2lkZSwgYm9yZGVyRGlyZWN0aW9ucygpKTsKKyAgICAgICAgcmV0dXJuIHJlc29s
dmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNp
ZGU6OlN0YXJ0LCBib3JkZXJEaXJlY3Rpb25zKCkpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJCZWZvcmU6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5
KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEJlZm9yZVNpZGUsIGJvcmRlckRpcmVjdGlvbnMoKSk7
CisgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3Jp
dGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlOjpCZWZvcmUsIGJvcmRlckRpcmVjdGlvbnMoKSk7CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyOgotICAgICAgICByZXR1cm4gcmVz
b2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBBZnRlclNpZGUs
IGJvcmRlckRpcmVjdGlvbnMoKSk7CisgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFBy
b3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlOjpBZnRlciwgYm9y
ZGVyRGlyZWN0aW9ucygpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29s
b3I6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwg
d3JpdGluZ01vZGUsIEVuZFNpZGUsIGJvcmRlckNvbG9yU2hvcnRoYW5kKCkpOworICAgICAgICBy
ZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBM
b2dpY2FsQm94U2lkZTo6RW5kLCBib3JkZXJDb2xvclNob3J0aGFuZCgpKTsKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvcjoKLSAgICAgICAgcmV0dXJuIHJlc29sdmVU
b1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgU3RhcnRTaWRlLCBib3Jk
ZXJDb2xvclNob3J0aGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJv
cGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OlN0YXJ0LCBib3Jk
ZXJDb2xvclNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVm
b3JlQ29sb3I6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVj
dGlvbiwgd3JpdGluZ01vZGUsIEJlZm9yZVNpZGUsIGJvcmRlckNvbG9yU2hvcnRoYW5kKCkpOwor
ICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRp
bmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QmVmb3JlLCBib3JkZXJDb2xvclNob3J0aGFuZCgpKTsK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcjoKLSAgICAgICAgcmV0
dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgQWZ0
ZXJTaWRlLCBib3JkZXJDb2xvclNob3J0aGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVU
b1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6
OkFmdGVyLCBib3JkZXJDb2xvclNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyRW5kU3R5bGU6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3Bl
cnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEVuZFNpZGUsIGJvcmRlclN0eWxlU2hvcnRoYW5k
KCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24s
IHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6RW5kLCBib3JkZXJTdHlsZVNob3J0aGFuZCgp
KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZToKLSAgICAgICAg
cmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwg
U3RhcnRTaWRlLCBib3JkZXJTdHlsZVNob3J0aGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29s
dmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNp
ZGU6OlN0YXJ0LCBib3JkZXJTdHlsZVNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGU6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNh
bFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEJlZm9yZVNpZGUsIGJvcmRlclN0eWxl
U2hvcnRoYW5kKCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShk
aXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QmVmb3JlLCBib3JkZXJTdHls
ZVNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHls
ZToKLSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3
cml0aW5nTW9kZSwgQWZ0ZXJTaWRlLCBib3JkZXJTdHlsZVNob3J0aGFuZCgpKTsKKyAgICAgICAg
cmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwg
TG9naWNhbEJveFNpZGU6OkFmdGVyLCBib3JkZXJTdHlsZVNob3J0aGFuZCgpKTsKICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGg6Ci0gICAgICAgIHJldHVybiByZXNvbHZl
VG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEVuZFNpZGUsIGJvcmRl
cldpZHRoU2hvcnRoYW5kKCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9w
ZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6RW5kLCBib3JkZXJX
aWR0aFNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRX
aWR0aDoKLSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9u
LCB3cml0aW5nTW9kZSwgU3RhcnRTaWRlLCBib3JkZXJXaWR0aFNob3J0aGFuZCgpKTsKKyAgICAg
ICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9k
ZSwgTG9naWNhbEJveFNpZGU6OlN0YXJ0LCBib3JkZXJXaWR0aFNob3J0aGFuZCgpKTsKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlV2lkdGg6Ci0gICAgICAgIHJldHVybiBy
ZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEJlZm9yZVNp
ZGUsIGJvcmRlcldpZHRoU2hvcnRoYW5kKCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5
c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QmVm
b3JlLCBib3JkZXJXaWR0aFNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQWZ0ZXJXaWR0aDoKLSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVy
dHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgQWZ0ZXJTaWRlLCBib3JkZXJXaWR0aFNob3J0aGFu
ZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9u
LCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkFmdGVyLCBib3JkZXJXaWR0aFNob3J0aGFu
ZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9naWNhbFdpZHRoOiB7CiAgICAgICAg
IGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlXaWR0aCwg
Q1NTUHJvcGVydHlIZWlnaHQgfTsKICAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJv
cGVydHkod3JpdGluZ01vZGUsIExvZ2ljYWxXaWR0aCwgcHJvcGVydGllcyk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guaAkocmV2aXNpb24gMjIxNjYyKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDEwNiArMjIs
MTIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCisjaW5jbHVkZSAiUmVj
dEVkZ2UuaCIKICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgotI2luY2x1ZGUgPGFycmF5PgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIEJveEV4dGVu
dCB7Ci1wdWJsaWM6Ci0gICAgQm94RXh0ZW50KCkKLSAgICAgICAgOiBtX3NpZGVzKHsgeyAwLCAw
LCAwLCAwIH0gfSkKLSAgICB7Ci0gICAgfQotCi0gICAgQm94RXh0ZW50KGNvbnN0IFQmIHRvcCwg
Y29uc3QgVCYgcmlnaHQsIGNvbnN0IFQmIGJvdHRvbSwgY29uc3QgVCYgbGVmdCkKLSAgICAgICAg
OiBtX3NpZGVzKHsgeyB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQgfSB9KQotICAgIHsKLSAgICB9
Ci0KLSAgICBCb3hFeHRlbnQoVCYmIHRvcCwgVCYmIHJpZ2h0LCBUJiYgYm90dG9tLCBUJiYgbGVm
dCkKLSAgICAgICAgOiBtX3NpZGVzKHsgeyBzdGQ6OmZvcndhcmQ8VD4odG9wKSwgc3RkOjpmb3J3
YXJkPFQ+KHJpZ2h0KSwgc3RkOjpmb3J3YXJkPFQ+KGJvdHRvbSksIHN0ZDo6Zm9yd2FyZDxUPihs
ZWZ0KSB9IH0pCi0gICAgewotICAgIH0KLQotICAgIFQmIGF0KFBoeXNpY2FsQm94U2lkZSBzaWRl
KSB7IHJldHVybiBtX3NpZGVzW3NpZGVdOyB9Ci0gICAgVCYgdG9wKCkgeyByZXR1cm4gYXQoVG9w
U2lkZSk7IH0KLSAgICBUJiByaWdodCgpIHsgcmV0dXJuIGF0KFJpZ2h0U2lkZSk7IH0KLSAgICBU
JiBib3R0b20oKSB7IHJldHVybiBhdChCb3R0b21TaWRlKTsgfQotICAgIFQmIGxlZnQoKSB7IHJl
dHVybiBhdChMZWZ0U2lkZSk7IH0KLQotICAgIGNvbnN0IFQmIGF0KFBoeXNpY2FsQm94U2lkZSBz
aWRlKSBjb25zdCB7IHJldHVybiBtX3NpZGVzW3NpZGVdOyB9Ci0gICAgY29uc3QgVCYgdG9wKCkg
Y29uc3QgeyByZXR1cm4gYXQoVG9wU2lkZSk7IH0KLSAgICBjb25zdCBUJiByaWdodCgpIGNvbnN0
IHsgcmV0dXJuIGF0KFJpZ2h0U2lkZSk7IH0KLSAgICBjb25zdCBUJiBib3R0b20oKSBjb25zdCB7
IHJldHVybiBhdChCb3R0b21TaWRlKTsgfQotICAgIGNvbnN0IFQmIGxlZnQoKSBjb25zdCB7IHJl
dHVybiBhdChMZWZ0U2lkZSk7IH0KLQotICAgIHZvaWQgc2V0QXQoUGh5c2ljYWxCb3hTaWRlIHNp
ZGUsIGNvbnN0IFQmIHYpIHsgYXQoc2lkZSkgPSB2OyB9Ci0gICAgdm9pZCBzZXRUb3AoY29uc3Qg
VCYgdG9wKSB7IHNldEF0KFRvcFNpZGUsIHRvcCk7IH0KLSAgICB2b2lkIHNldFJpZ2h0KGNvbnN0
IFQmIHJpZ2h0KSB7IHNldEF0KFJpZ2h0U2lkZSwgcmlnaHQpOyB9Ci0gICAgdm9pZCBzZXRCb3R0
b20oY29uc3QgVCYgYm90dG9tKSB7IHNldEF0KEJvdHRvbVNpZGUsIGJvdHRvbSk7IH0KLSAgICB2
b2lkIHNldExlZnQoY29uc3QgVCYgbGVmdCkgeyBzZXRBdChMZWZ0U2lkZSwgbGVmdCk7IH0KLQot
ICAgIFQmIGJlZm9yZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKHdyaXRpbmdNb2RlLCBCZWZvcmVT
aWRlKSk7Ci0gICAgfQotCi0gICAgVCYgYWZ0ZXIoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCi0g
ICAgewotICAgICAgICByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZSh3cml0
aW5nTW9kZSwgQWZ0ZXJTaWRlKSk7Ci0gICAgfQotCi0gICAgVCYgc3RhcnQoV3JpdGluZ01vZGUg
d3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRleHRGbG93KHdy
aXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBTdGFydFNpZGUpKTsKLSAgICB9Ci0KLSAgICBUJiBlbmQo
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUobWFr
ZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBFbmRTaWRlKSk7Ci0gICAgfQotCi0g
ICAgY29uc3QgVCYgYmVmb3JlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUod3JpdGluZ01v
ZGUsIEJlZm9yZVNpZGUpKTsKLSAgICB9Ci0KLSAgICBjb25zdCBUJiBhZnRlcihXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdChtYXBMb2dpY2Fs
U2lkZVRvUGh5c2ljYWxTaWRlKHdyaXRpbmdNb2RlLCBBZnRlclNpZGUpKTsKLSAgICB9Ci0KLSAg
ICBjb25zdCBUJiBzdGFydChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24gPSBMVFIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gYXQobWFwTG9naWNh
bFNpZGVUb1BoeXNpY2FsU2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiks
IFN0YXJ0U2lkZSkpOwotICAgIH0KLQotICAgIGNvbnN0IFQmIGVuZChXcml0aW5nTW9kZSB3cml0
aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShtYWtlVGV4dEZsb3co
d3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIEVuZFNpZGUpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNl
dEJlZm9yZShjb25zdCBUJiBiZWZvcmUsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSB7IHRoaXMt
PmJlZm9yZSh3cml0aW5nTW9kZSkgPSBiZWZvcmU7IH0KLSAgICB2b2lkIHNldEFmdGVyKGNvbnN0
IFQmIGFmdGVyLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgeyB0aGlzLT5hZnRlcih3cml0aW5n
TW9kZSkgPSBhZnRlcjsgfQotICAgIHZvaWQgc2V0U3RhcnQoY29uc3QgVCYgc3RhcnQsIFdyaXRp
bmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUikgeyB0aGlz
LT5zdGFydCh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSA9IHN0YXJ0OyB9Ci0gICAgdm9pZCBzZXRF
bmQoY29uc3QgVCYgZW5kLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24gPSBMVFIpIHsgdGhpcy0+ZW5kKHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pID0gZW5k
OyB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQm94RXh0ZW50JiBvdGhlcikgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX3NpZGVzID09IG90aGVyLm1fc2lkZXM7Ci0gICAgfQot
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJveEV4dGVudCYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9zaWRlcyAhPSBvdGhlci5tX3NpZGVzOwotICAgIH0KLQotcHJv
dGVjdGVkOgotICAgIHN0ZDo6YXJyYXk8VCwgND4gbV9zaWRlczsKLX07Ci0KLWNsYXNzIExlbmd0
aEJveCA6IHB1YmxpYyBCb3hFeHRlbnQ8TGVuZ3RoPiB7CitjbGFzcyBMZW5ndGhCb3ggOiBwdWJs
aWMgUmVjdEVkZ2U8TGVuZ3RoPiB7CiBwdWJsaWM6CiAgICAgTGVuZ3RoQm94KCkKICAgICAgICAg
OiBMZW5ndGhCb3goQXV0bykKQEAgLTEyOSwyMiArMzUsMjIgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIGV4cGxpY2l0IExlbmd0aEJveChMZW5ndGhUeXBlIHR5cGUpCi0gICAgICAgIDogQm94RXh0
ZW50KExlbmd0aCh0eXBlKSwgTGVuZ3RoKHR5cGUpLCBMZW5ndGgodHlwZSksIExlbmd0aCh0eXBl
KSkKKyAgICAgICAgOiBSZWN0RWRnZShMZW5ndGgodHlwZSksIExlbmd0aCh0eXBlKSwgTGVuZ3Ro
KHR5cGUpLCBMZW5ndGgodHlwZSkpCiAgICAgewogICAgIH0KIAogICAgIGV4cGxpY2l0IExlbmd0
aEJveChpbnQgdikKLSAgICAgICAgOiBCb3hFeHRlbnQoTGVuZ3RoKHYsIEZpeGVkKSwgTGVuZ3Ro
KHYsIEZpeGVkKSwgTGVuZ3RoKHYsIEZpeGVkKSwgTGVuZ3RoKHYsIEZpeGVkKSkKKyAgICAgICAg
OiBSZWN0RWRnZShMZW5ndGgodiwgRml4ZWQpLCBMZW5ndGgodiwgRml4ZWQpLCBMZW5ndGgodiwg
Rml4ZWQpLCBMZW5ndGgodiwgRml4ZWQpKQogICAgIHsKICAgICB9CiAKICAgICBMZW5ndGhCb3go
aW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tLCBpbnQgbGVmdCkKLSAgICAgICAgOiBCb3hF
eHRlbnQoTGVuZ3RoKHRvcCwgRml4ZWQpLCBMZW5ndGgocmlnaHQsIEZpeGVkKSwgTGVuZ3RoKGJv
dHRvbSwgRml4ZWQpLCBMZW5ndGgobGVmdCwgRml4ZWQpKQorICAgICAgICA6IFJlY3RFZGdlKExl
bmd0aCh0b3AsIEZpeGVkKSwgTGVuZ3RoKHJpZ2h0LCBGaXhlZCksIExlbmd0aChib3R0b20sIEZp
eGVkKSwgTGVuZ3RoKGxlZnQsIEZpeGVkKSkKICAgICB7CiAgICAgfQogCiAgICAgTGVuZ3RoQm94
KExlbmd0aCYmIHRvcCwgTGVuZ3RoJiYgcmlnaHQsIExlbmd0aCYmIGJvdHRvbSwgTGVuZ3RoJiYg
bGVmdCkKLSAgICAgICAgOiBCb3hFeHRlbnQgeyBXVEZNb3ZlKHRvcCksIFdURk1vdmUocmlnaHQp
LCBXVEZNb3ZlKGJvdHRvbSksIFdURk1vdmUobGVmdCkgfQorICAgICAgICA6IFJlY3RFZGdlIHsg
V1RGTW92ZSh0b3ApLCBXVEZNb3ZlKHJpZ2h0KSwgV1RGTW92ZShib3R0b20pLCBXVEZNb3ZlKGxl
ZnQpIH0KICAgICB7CiAgICAgfQogCkBAIC0xNTQsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgfQog
fTsKIAotdXNpbmcgTGF5b3V0Qm94RXh0ZW50ID0gQm94RXh0ZW50PExheW91dFVuaXQ+OwotdXNp
bmcgRmxvYXRCb3hFeHRlbnQgPSBCb3hFeHRlbnQ8ZmxvYXQ+OwordXNpbmcgTGF5b3V0Qm94RXh0
ZW50ID0gUmVjdEVkZ2U8TGF5b3V0VW5pdD47Cit1c2luZyBGbG9hdEJveEV4dGVudCA9IFJlY3RF
ZGdlPGZsb2F0PjsKIAogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVh
bSYsIGNvbnN0IExlbmd0aEJveCYpOwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEZsb2F0Qm94RXh0ZW50Jik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWN0RWRnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1JlY3RFZGdlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUmVjdEVkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgorI2luY2x1ZGUgPGFycmF5PgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisgICAgCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBSZWN0RWRn
ZSB7CitwdWJsaWM6CisgICAgUmVjdEVkZ2UoKSA9IGRlZmF1bHQ7CisgICAgCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVT4KKyAgICBSZWN0RWRnZShVJiYgdG9wLCBVJiYgcmlnaHQsIFUmJiBib3R0
b20sIFUmJiBsZWZ0KQorICAgICAgICA6IG1fc2lkZXMoeyB7IHN0ZDo6Zm9yd2FyZDxUPih0b3Ap
LCBzdGQ6OmZvcndhcmQ8VD4ocmlnaHQpLCBzdGQ6OmZvcndhcmQ8VD4oYm90dG9tKSwgc3RkOjpm
b3J3YXJkPFQ+KGxlZnQpIH0gfSkKKyAgICB7IH0KKyAgICAKKyAgICBUJiBhdChQaHlzaWNhbEJv
eFNpZGUgc2lkZSkgeyByZXR1cm4gbV9zaWRlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNpZGUpXTsg
fQorICAgIFQmIHRvcCgpIHsgcmV0dXJuIGF0KFBoeXNpY2FsQm94U2lkZTo6VG9wKTsgfQorICAg
IFQmIHJpZ2h0KCkgeyByZXR1cm4gYXQoUGh5c2ljYWxCb3hTaWRlOjpSaWdodCk7IH0KKyAgICBU
JiBib3R0b20oKSB7IHJldHVybiBhdChQaHlzaWNhbEJveFNpZGU6OkJvdHRvbSk7IH0KKyAgICBU
JiBsZWZ0KCkgeyByZXR1cm4gYXQoUGh5c2ljYWxCb3hTaWRlOjpMZWZ0KTsgfQorICAgIAorICAg
IGNvbnN0IFQmIGF0KFBoeXNpY2FsQm94U2lkZSBzaWRlKSBjb25zdCB7IHJldHVybiBtX3NpZGVz
W3N0YXRpY19jYXN0PHNpemVfdD4oc2lkZSldOyB9CisgICAgY29uc3QgVCYgdG9wKCkgY29uc3Qg
eyByZXR1cm4gYXQoUGh5c2ljYWxCb3hTaWRlOjpUb3ApOyB9CisgICAgY29uc3QgVCYgcmlnaHQo
KSBjb25zdCB7IHJldHVybiBhdChQaHlzaWNhbEJveFNpZGU6OlJpZ2h0KTsgfQorICAgIGNvbnN0
IFQmIGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIGF0KFBoeXNpY2FsQm94U2lkZTo6Qm90dG9tKTsg
fQorICAgIGNvbnN0IFQmIGxlZnQoKSBjb25zdCB7IHJldHVybiBhdChQaHlzaWNhbEJveFNpZGU6
OkxlZnQpOyB9CisgICAgCisgICAgdm9pZCBzZXRBdChQaHlzaWNhbEJveFNpZGUgc2lkZSwgY29u
c3QgVCYgdikgeyBhdChzaWRlKSA9IHY7IH0KKyAgICB2b2lkIHNldFRvcChjb25zdCBUJiB0b3Ap
IHsgc2V0QXQoUGh5c2ljYWxCb3hTaWRlOjpUb3AsIHRvcCk7IH0KKyAgICB2b2lkIHNldFJpZ2h0
KGNvbnN0IFQmIHJpZ2h0KSB7IHNldEF0KFBoeXNpY2FsQm94U2lkZTo6UmlnaHQsIHJpZ2h0KTsg
fQorICAgIHZvaWQgc2V0Qm90dG9tKGNvbnN0IFQmIGJvdHRvbSkgeyBzZXRBdChQaHlzaWNhbEJv
eFNpZGU6OkJvdHRvbSwgYm90dG9tKTsgfQorICAgIHZvaWQgc2V0TGVmdChjb25zdCBUJiBsZWZ0
KSB7IHNldEF0KFBoeXNpY2FsQm94U2lkZTo6TGVmdCwgbGVmdCk7IH0KKyAgICAKKyAgICBUJiBi
ZWZvcmUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIHsgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRl
VG9QaHlzaWNhbFNpZGUod3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlOjpCZWZvcmUpKTsgfQor
ICAgIFQmIGFmdGVyKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSB7IHJldHVybiBhdChtYXBMb2dp
Y2FsU2lkZVRvUGh5c2ljYWxTaWRlKHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QWZ0ZXIp
KTsgfQorICAgIFQmIHN0YXJ0KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbiA9IExUUikgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lk
ZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIExvZ2ljYWxCb3hTaWRlOjpT
dGFydCkpOyB9CisgICAgVCYgZW5kKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0
aW9uIGRpcmVjdGlvbiA9IExUUikgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2Fs
U2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIExvZ2ljYWxCb3hTaWRl
OjpFbmQpKTsgfQorICAgIAorICAgIGNvbnN0IFQmIGJlZm9yZShXcml0aW5nTW9kZSB3cml0aW5n
TW9kZSkgY29uc3QgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZSh3cml0
aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkJlZm9yZSkpOyB9CisgICAgY29uc3QgVCYgYWZ0ZXIo
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIGNvbnN0IHsgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRl
VG9QaHlzaWNhbFNpZGUod3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlOjpBZnRlcikpOyB9Cisg
ICAgY29uc3QgVCYgc3RhcnQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2lj
YWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgTG9naWNhbEJveFNp
ZGU6OlN0YXJ0KSk7IH0KKyAgICBjb25zdCBUJiBlbmQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUs
IFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBhdChtYXBMb2dp
Y2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9u
KSwgTG9naWNhbEJveFNpZGU6OkVuZCkpOyB9CisgICAgCisgICAgdm9pZCBzZXRCZWZvcmUoY29u
c3QgVCYgYmVmb3JlLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgeyB0aGlzLT5iZWZvcmUod3Jp
dGluZ01vZGUpID0gYmVmb3JlOyB9CisgICAgdm9pZCBzZXRBZnRlcihjb25zdCBUJiBhZnRlciwg
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIHsgdGhpcy0+YWZ0ZXIod3JpdGluZ01vZGUpID0gYWZ0
ZXI7IH0KKyAgICB2b2lkIHNldFN0YXJ0KGNvbnN0IFQmIHN0YXJ0LCBXcml0aW5nTW9kZSB3cml0
aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpIHsgdGhpcy0+c3RhcnQod3Jp
dGluZ01vZGUsIGRpcmVjdGlvbikgPSBzdGFydDsgfQorICAgIHZvaWQgc2V0RW5kKGNvbnN0IFQm
IGVuZCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0g
TFRSKSB7IHRoaXMtPmVuZCh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSA9IGVuZDsgfQorICAgIAor
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWN0RWRnZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1fc2lkZXMgPT0gb3RoZXIubV9zaWRlczsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBS
ZWN0RWRnZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXMgIT0gb3RoZXIubV9zaWRlczsg
fQorCitwcml2YXRlOgorICAgIHN0ZDo6YXJyYXk8VCwgND4gbV9zaWRlcyB7ezAsIDAsIDAsIDB9
fTsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Rp
bGVDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIyMTY2MikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjY3LDcgKzY2Nyw3IEBAIHZvaWQgVGlsZUNvbnRyb2xsZXI6OnNldFNjcm9s
bGluZ01vZGVJbmQKIAogdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0SGFzTWFyZ2lucyhib29sIG1h
cmdpblRvcCwgYm9vbCBtYXJnaW5Cb3R0b20sIGJvb2wgbWFyZ2luTGVmdCwgYm9vbCBtYXJnaW5S
aWdodCkKIHsKLSAgICBCb3hFeHRlbnQ8Ym9vbD4gbWFyZ2luRWRnZXMobWFyZ2luVG9wLCBtYXJn
aW5SaWdodCwgbWFyZ2luQm90dG9tLCBtYXJnaW5MZWZ0KTsKKyAgICBSZWN0RWRnZTxib29sPiBt
YXJnaW5FZGdlcyhtYXJnaW5Ub3AsIG1hcmdpblJpZ2h0LCBtYXJnaW5Cb3R0b20sIG1hcmdpbkxl
ZnQpOwogICAgIGlmIChtYXJnaW5FZGdlcyA9PSBtX21hcmdpbkVkZ2VzKQogICAgICAgICByZXR1
cm47CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxl
Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb250cm9sbGVyLmgJKHJldmlzaW9uIDIyMTY2MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIxOSw3ICsyMTksNyBAQCBwcml2YXRlOgogICAgIC8vIG9mIHRob3NlIHRpbGVzIHdpbGwg
YmUgZXF1aXZhbGVudCB0byB0aGUgd2lkdGggb2YgdGhlIG90aGVyIHRpbGVzIGluIHRoZSBncmlk
LiBtX21hcmdpblJpZ2h0IGFuZAogICAgIC8vIG1fbWFyZ2luTGVmdCBhcmUgdGhlIHdpZHRoIGlu
IHBpeGVscyBvZiB0aGUgcmlnaHQgYW5kIGxlZnQgbWFyZ2luIHRpbGVzLCByZXNwZWN0aXZlbHku
IFRoZSBoZWlnaHQgb2YKICAgICAvLyB0aG9zZSB0aWxlcyB3aWxsIGJlIGVxdWl2YWxlbnQgdG8g
dGhlIGhlaWdodCBvZiB0aGUgb3RoZXIgdGlsZXMgaW4gdGhlIGdyaWQuCi0gICAgQm94RXh0ZW50
PGJvb2w+IG1fbWFyZ2luRWRnZXM7CisgICAgUmVjdEVkZ2U8Ym9vbD4gbV9tYXJnaW5FZGdlczsK
ICAgICAKICAgICBib29sIG1faXNJbldpbmRvdyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Njcm9s
bGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvV3JpdGluZ01vZGUuaAkocmV2aXNpb24gMjIxNjYyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw4ICsyOSw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV3JpdGlu
Z01vZGVfaAotI2RlZmluZSBXcml0aW5nTW9kZV9oCisjcHJhZ21hIG9uY2UKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0xMTMsMjQgKzExMiwyMyBAQCBpbmxpbmUgYm9vbCBpc0ZsaXBwZWRM
aW5lc1dyaXRpbmdNb2RlKFdyCiAgICAgcmV0dXJuIGlzVmVydGljYWxXcml0aW5nTW9kZSh3cml0
aW5nTW9kZSkgIT0gaXNGbGlwcGVkV3JpdGluZ01vZGUod3JpdGluZ01vZGUpOwogfQogCi1lbnVt
IExvZ2ljYWxCb3hTaWRlIHsKLSAgICBCZWZvcmVTaWRlLAotICAgIEVuZFNpZGUsCi0gICAgQWZ0
ZXJTaWRlLAotICAgIFN0YXJ0U2lkZQorZW51bSBjbGFzcyBMb2dpY2FsQm94U2lkZSA6IHVpbnQ4
X3QgeworICAgIEJlZm9yZSwKKyAgICBFbmQsCisgICAgQWZ0ZXIsCisgICAgU3RhcnQKIH07CiAK
LWVudW0gUGh5c2ljYWxCb3hTaWRlIHsKLSAgICBOaWxTaWRlID0gLTEsCi0gICAgVG9wU2lkZSwK
LSAgICBSaWdodFNpZGUsCi0gICAgQm90dG9tU2lkZSwKLSAgICBMZWZ0U2lkZQorZW51bSBjbGFz
cyBQaHlzaWNhbEJveFNpZGUgOiB1aW50OF90IHsKKyAgICBUb3AsCisgICAgUmlnaHQsCisgICAg
Qm90dG9tLAorICAgIExlZnQKIH07CiAKIGlubGluZSBib29sIGlzSG9yaXpvbnRhbFBoeXNpY2Fs
U2lkZShQaHlzaWNhbEJveFNpZGUgcGh5c2ljYWxTaWRlKQogewotICAgIHJldHVybiBwaHlzaWNh
bFNpZGUgPT0gTGVmdFNpZGUgfHwgcGh5c2ljYWxTaWRlID09IFJpZ2h0U2lkZTsKKyAgICByZXR1
cm4gcGh5c2ljYWxTaWRlID09IFBoeXNpY2FsQm94U2lkZTo6TGVmdCB8fCBwaHlzaWNhbFNpZGUg
PT0gUGh5c2ljYWxCb3hTaWRlOjpSaWdodDsKIH0KIAogaW5saW5lIFBoeXNpY2FsQm94U2lkZSBt
aXJyb3JQaHlzaWNhbFNpZGUoUGh5c2ljYWxCb3hTaWRlIHBoeXNpY2FsU2lkZSkKQEAgLTE2OCw1
ICsxNjYsMyBAQCBpbmxpbmUgUGh5c2ljYWxCb3hTaWRlIG1hcExvZ2ljYWxTaWRlVG9QCiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFdyaXRpbmdNb2RlX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNw
cAkocmV2aXNpb24gMjIxNjYyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05p
bmVQaWVjZUltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDkgKzEwMCw5IEBAIGJvb2wg
TmluZVBpZWNlSW1hZ2U6OmlzRW1wdHlQaWVjZVJlY3QoSW0KICAgICBpZiAocGllY2UgPT0gTWlk
ZGxlUGllY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFBoeXNpY2FsQm94U2lkZSBo
b3Jpem9udGFsU2lkZSA9IGltYWdlUGllY2VIb3Jpem9udGFsU2lkZShwaWVjZSk7Ci0gICAgUGh5
c2ljYWxCb3hTaWRlIHZlcnRpY2FsU2lkZSA9IGltYWdlUGllY2VWZXJ0aWNhbFNpZGUocGllY2Up
OwotICAgIHJldHVybiAhKChob3Jpem9udGFsU2lkZSA9PSBOaWxTaWRlIHx8IHNsaWNlcy5hdCho
b3Jpem9udGFsU2lkZSkpICYmICh2ZXJ0aWNhbFNpZGUgPT0gTmlsU2lkZSB8fCBzbGljZXMuYXQo
dmVydGljYWxTaWRlKSkpOworICAgIGF1dG8gaG9yaXpvbnRhbFNpZGUgPSBpbWFnZVBpZWNlSG9y
aXpvbnRhbFNpZGUocGllY2UpOworICAgIGF1dG8gdmVydGljYWxTaWRlID0gaW1hZ2VQaWVjZVZl
cnRpY2FsU2lkZShwaWVjZSk7CisgICAgcmV0dXJuICEoKCFob3Jpem9udGFsU2lkZSB8fCBzbGlj
ZXMuYXQoKmhvcml6b250YWxTaWRlKSkgJiYgKCF2ZXJ0aWNhbFNpZGUgfHwgc2xpY2VzLmF0KCp2
ZXJ0aWNhbFNpZGUpKSk7CiB9CiAKIGJvb2wgTmluZVBpZWNlSW1hZ2U6OmlzRW1wdHlQaWVjZVJl
Y3QoSW1hZ2VQaWVjZSBwaWVjZSwgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIGRlc3RpbmF0aW9u
UmVjdHMsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiBzb3VyY2VSZWN0cykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCShyZXZpc2lv
biAyMjE2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1h
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsMjYgKzc2LDI2IEBAIGlubGluZSBib29sIGlzVmVy
dGljYWxQaWVjZShJbWFnZVBpZWNlIHAKICAgICByZXR1cm4gcGllY2UgPT0gTGVmdFBpZWNlIHx8
IHBpZWNlID09IFJpZ2h0UGllY2UgfHwgcGllY2UgPT0gTWlkZGxlUGllY2U7CiB9CiAKLWlubGlu
ZSBQaHlzaWNhbEJveFNpZGUgaW1hZ2VQaWVjZUhvcml6b250YWxTaWRlKEltYWdlUGllY2UgcGll
Y2UpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxQaHlzaWNhbEJveFNpZGU+IGltYWdlUGllY2VIb3Jp
em9udGFsU2lkZShJbWFnZVBpZWNlIHBpZWNlKQogewogICAgIGlmIChwaWVjZSA9PSBUb3BMZWZ0
UGllY2UgfHwgcGllY2UgPT0gVG9wUGllY2UgfHwgcGllY2UgPT0gVG9wUmlnaHRQaWVjZSkKLSAg
ICAgICAgcmV0dXJuIFRvcFNpZGU7CisgICAgICAgIHJldHVybiBQaHlzaWNhbEJveFNpZGU6OlRv
cDsKIAogICAgIGlmIChwaWVjZSA9PSBCb3R0b21MZWZ0UGllY2UgfHwgcGllY2UgPT0gQm90dG9t
UGllY2UgfHwgcGllY2UgPT0gQm90dG9tUmlnaHRQaWVjZSkKLSAgICAgICAgcmV0dXJuIEJvdHRv
bVNpZGU7CisgICAgICAgIHJldHVybiBQaHlzaWNhbEJveFNpZGU6OkJvdHRvbTsKIAotICAgIHJl
dHVybiBOaWxTaWRlOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLWlubGluZSBQaHlz
aWNhbEJveFNpZGUgaW1hZ2VQaWVjZVZlcnRpY2FsU2lkZShJbWFnZVBpZWNlIHBpZWNlKQoraW5s
aW5lIHN0ZDo6b3B0aW9uYWw8UGh5c2ljYWxCb3hTaWRlPiBpbWFnZVBpZWNlVmVydGljYWxTaWRl
KEltYWdlUGllY2UgcGllY2UpCiB7CiAgICAgaWYgKHBpZWNlID09IFRvcExlZnRQaWVjZSB8fCBw
aWVjZSA9PSBMZWZ0UGllY2UgfHwgcGllY2UgPT0gQm90dG9tTGVmdFBpZWNlKQotICAgICAgICBy
ZXR1cm4gTGVmdFNpZGU7CisgICAgICAgIHJldHVybiBQaHlzaWNhbEJveFNpZGU6OkxlZnQ7CiAK
ICAgICBpZiAocGllY2UgPT0gVG9wUmlnaHRQaWVjZSB8fCBwaWVjZSA9PSBSaWdodFBpZWNlIHx8
IHBpZWNlID09IEJvdHRvbVJpZ2h0UGllY2UpCi0gICAgICAgIHJldHVybiBSaWdodFNpZGU7Cisg
ICAgICAgIHJldHVybiBQaHlzaWNhbEJveFNpZGU6OlJpZ2h0OwogCi0gICAgcmV0dXJuIE5pbFNp
ZGU7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogY2xhc3MgTmluZVBpZWNlSW1hZ2Ug
ewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCShyZXZpc2lvbiAyMjE2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIwLDcgKzE3MjAsNyBAQCBMYXlv
dXRCb3hFeHRlbnQgUmVuZGVyU3R5bGU6OmdldFNoYWRvd0luCiAgICAgICAgIGxlZnQgPSBzdGQ6
Om1heDxMYXlvdXRVbml0PihsZWZ0LCBzaGFkb3ctPngoKSArIGV4dGVudEFuZFNwcmVhZCk7CiAg
ICAgfQogCi0gICAgcmV0dXJuIExheW91dEJveEV4dGVudCh0b3AsIHJpZ2h0LCBib3R0b20sIGxl
ZnQpOworICAgIHJldHVybiBMYXlvdXRCb3hFeHRlbnQoV1RGTW92ZSh0b3ApLCBXVEZNb3ZlKHJp
Z2h0KSwgV1RGTW92ZShib3R0b20pLCBXVEZNb3ZlKGxlZnQpKTsKIH0KIAogdm9pZCBSZW5kZXJT
dHlsZTo6Z2V0U2hhZG93SG9yaXpvbnRhbEV4dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3cs
IExheW91dFVuaXQgJmxlZnQsIExheW91dFVuaXQgJnJpZ2h0KSBjb25zdApJbmRleDogU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIyMTY2MikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDktMDUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb2Rlcm5pemUgQm94RXh0ZW50IGludG8g
UmVjdEVkZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NjQzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChjbGFzc190ZW1wbGF0ZV9o
ZWFkZXJzKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW46CisKIDIwMTctMDktMDUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyBXSzJdIEFkZCBwbHVtYmluZyBmb3IgV0tDb250
ZW50VmlldyB0byBhc2sgdGhlIHdlYiBwcm9jZXNzIGZvciBhZGRpdGlvbmFsIGRyYWcgaXRlbXMK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkocmV2aXNpb24g
MjIxNjYyKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkod29y
a2luZyBjb3B5KQpAQCAtMjkyLDcgKzI5Miw3IEBAIGRlZiBjbGFzc190ZW1wbGF0ZV9oZWFkZXJz
KHRlbXBsYXRlX3N0cmkKICAgICB0ZW1wbGF0ZV9zdHJpbmcgPSB0ZW1wbGF0ZV9zdHJpbmcuc3Ry
aXAoKQogCiAgICAgY2xhc3NfdGVtcGxhdGVfdHlwZXMgPSB7Ci0gICAgICAgICdXZWJDb3JlOjpC
b3hFeHRlbnQnOiB7J2hlYWRlcnMnOiBbJzxXZWJDb3JlL0xlbmd0aEJveC5oPiddLCAnYXJndW1l
bnRfY29kZXJfaGVhZGVycyc6IFsnIldlYkNvcmVBcmd1bWVudENvZGVycy5oIiddfSwKKyAgICAg
ICAgJ1dlYkNvcmU6OlJlY3RFZGdlJzogeydoZWFkZXJzJzogWyc8V2ViQ29yZS9SZWN0RWRnZS5o
PiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAog
ICAgICAgICAnSGFzaE1hcCc6IHsnaGVhZGVycyc6IFsnPHd0Zi9IYXNoTWFwLmg+J10sICdhcmd1
bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdz
dGQ6Om9wdGlvbmFsJzogeydoZWFkZXJzJzogWyc8d3RmL09wdGlvbmFsLmg+J10sICdhcmd1bWVu
dF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdPcHRp
b25TZXQnOiB7J2hlYWRlcnMnOiBbJzx3dGYvT3B0aW9uU2V0Lmg+J10sICdhcmd1bWVudF9jb2Rl
cl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHJldmlzaW9uIDIyMTY2MikK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhdGguaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb3RlY3Rp
b25TcGFjZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVjdEVkZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlZ2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgpJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDIyMTY2MikKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NSwxMCArNDUsNiBAQCBjbGFzcyBNb25vdG9uaWNUaW1lOwogY2xhc3MgU2Vjb25k
czsKIH0KIAotbmFtZXNwYWNlIFBBTCB7Ci1jbGFzcyBTZXNzaW9uSUQ7Ci19Ci0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOwpAQCAtMTAzLDcgKzk5LDYgQEAgc3RydWN0IEdyYW1tYXJEZXRhaWw7CiBzdHJ1
Y3QgTWltZUNsYXNzSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVi
b2FyZFVSTDsKLXN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKIHN0cnVjdCBQbHVnaW5JbmZv
Owogc3RydWN0IFJlY2VudFNlYXJjaDsKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpA
QCAtMTEzLDcwICsxMDgsNTIgQEAgc3RydWN0IFRleHRJbmRpY2F0b3JEYXRhOwogc3RydWN0IFZp
ZXdwb3J0QXR0cmlidXRlczsKIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKICAgICAKLXRlbXBsYXRl
IDx0eXBlbmFtZT4gY2xhc3MgQm94RXh0ZW50OwotdXNpbmcgRmxvYXRCb3hFeHRlbnQgPSBCb3hF
eHRlbnQ8ZmxvYXQ+OwotfQordGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBSZWN0RWRnZTsKK3Vz
aW5nIEZsb2F0Qm94RXh0ZW50ID0gUmVjdEVkZ2U8ZmxvYXQ+OwogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCi1uYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0Owogc3RydWN0IEtl
eXByZXNzQ29tbWFuZDsKLX0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQotbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgRmxvYXRRdWFkOwogY2xhc3MgU2VsZWN0aW9uUmVjdDsKIHN0cnVj
dCBIaWdobGlnaHQ7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRX
ZWJDb250ZW50Owogc3RydWN0IFZpZXdwb3J0QXJndW1lbnRzOwotfQogI2VuZGlmCiAKICNpZiBV
U0UoU09VUCkKLW5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBTb3VwTmV0d29ya1Byb3h5U2V0
dGluZ3M7Ci19CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdQRSkKLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLXN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudHM7Ci19CitzdHJ1Y3QgUGFzdGVib2FyZFdl
YkNvbnRlbnQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKLX0KICNl
bmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OwotfQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLW5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1l
ZGlhU2Vzc2lvbk1ldGFkYXRhOwotfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2FwdHVyZURldmljZTsKIHN0cnVjdCBNZWRp
YUNvbnN0cmFpbnRzOwotfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
LW5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIElEQktleVBhdGggPSBWYXJpYW50PFN0cmluZywg
VmVjdG9yPFN0cmluZz4+OwotfQogI2VuZGlmCit9CiAKIG5hbWVzcGFjZSBJUEMgewogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjIxNjYyKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE3MCw4ICsxNzAsOCBAQCBlbnVtIGNsYXNzIEhhc0luc2VjdXJlQ29udGVudDsKIGVudW0g
Y2xhc3MgTm90aWZpY2F0aW9uRGlyZWN0aW9uOwogZW51bSBjbGFzcyBTaG91bGRTYW1wbGU7CiAK
LXRlbXBsYXRlIDx0eXBlbmFtZT4gY2xhc3MgQm94RXh0ZW50OwotdXNpbmcgRmxvYXRCb3hFeHRl
bnQgPSBCb3hFeHRlbnQ8ZmxvYXQ+OwordGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBSZWN0RWRn
ZTsKK3VzaW5nIEZsb2F0Qm94RXh0ZW50ID0gUmVjdEVkZ2U8ZmxvYXQ+OwogfQogCiAjaWYgUExB
VEZPUk0oR1RLKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjIxNjYyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zODQsNyAr
Mzg0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBQTEFURk9STShJT1MpCiAg
ICAgRHluYW1pY1ZpZXdwb3J0VXBkYXRlQ2hhbmdlZFRhcmdldChkb3VibGUgbmV3VGFyZ2V0U2Nh
bGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24sIHVpbnQ2NF90IGR5bmFt
aWNWaWV3cG9ydFNpemVVcGRhdGVJRCkKICAgICBDb3VsZE5vdFJlc3RvcmVQYWdlU3RhdGUoKQot
ICAgIFJlc3RvcmVQYWdlU3RhdGUoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiBz
Y3JvbGxQb3NpdGlvbiwgV2ViQ29yZTo6RmxvYXRQb2ludCBzY3JvbGxPcmlnaW4sIFdlYkNvcmU6
OkJveEV4dGVudDxmbG9hdD4gb2JzY3VyZWRJbnNldHNPblNhdmUsIGRvdWJsZSBzY2FsZSkKKyAg
ICBSZXN0b3JlUGFnZVN0YXRlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gc2Ny
b2xsUG9zaXRpb24sIFdlYkNvcmU6OkZsb2F0UG9pbnQgc2Nyb2xsT3JpZ2luLCBXZWJDb3JlOjpS
ZWN0RWRnZTxmbG9hdD4gb2JzY3VyZWRJbnNldHNPblNhdmUsIGRvdWJsZSBzY2FsZSkKICAgICBS
ZXN0b3JlUGFnZUNlbnRlckFuZFNjYWxlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2lu
dD4gdW5vYnNjdXJlZENlbnRlciwgZG91YmxlIHNjYWxlKQogICAgIERpZEdldFRhcEhpZ2hsaWdo
dEdlb21ldHJpZXModWludDY0X3QgcmVxdWVzdElELCBXZWJDb3JlOjpDb2xvciBjb2xvciwgVmVj
dG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4gZ2VvbWV0cmllcywgV2ViQ29yZTo6SW50U2l6ZSB0b3BM
ZWZ0UmFkaXVzLCBXZWJDb3JlOjpJbnRTaXplIHRvcFJpZ2h0UmFkaXVzLCBXZWJDb3JlOjpJbnRT
aXplIGJvdHRvbUxlZnRSYWRpdXMsIFdlYkNvcmU6OkludFNpemUgYm90dG9tUmlnaHRSYWRpdXMp
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjIxNjYyKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDQs
NyArNDQsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRW
aWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUg
c2l6ZSkKICAgICBTZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6RmxvYXRTaXplIHNp
emUpCiAgICAgU2V0RGV2aWNlT3JpZW50YXRpb24oaW50MzJfdCBkZXZpY2VPcmllbnRhdGlvbikK
LSAgICBEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKFdlYkNvcmU6OkZsb2F0U2l6ZSBtaW5pbXVt
TGF5b3V0U2l6ZSwgV2ViQ29yZTo6RmxvYXRTaXplIG1heGltdW1Vbm9ic2N1cmVkU2l6ZSwgV2Vi
Q29yZTo6RmxvYXRSZWN0IHRhcmdldEV4cG9zZWRDb250ZW50UmVjdCwgV2ViQ29yZTo6RmxvYXRS
ZWN0IHRhcmdldFVub2JzY3VyZWRSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0VW5vYnNj
dXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywgV2ViQ29yZTo6Qm94RXh0ZW50PGZsb2F0
PiB0YXJnZXRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldHMsIGRvdWJsZSBzY2FsZSwgaW50MzJfdCBk
ZXZpY2VPcmllbnRhdGlvbiwgdWludDY0X3QgZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEKQor
ICAgIER5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUoV2ViQ29yZTo6RmxvYXRTaXplIG1pbmltdW1M
YXlvdXRTaXplLCBXZWJDb3JlOjpGbG9hdFNpemUgbWF4aW11bVVub2JzY3VyZWRTaXplLCBXZWJD
b3JlOjpGbG9hdFJlY3QgdGFyZ2V0RXhwb3NlZENvbnRlbnRSZWN0LCBXZWJDb3JlOjpGbG9hdFJl
Y3QgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRVbm9ic2N1
cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpSZWN0RWRnZTxmbG9hdD4g
dGFyZ2V0VW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzLCBkb3VibGUgc2NhbGUsIGludDMyX3QgZGV2
aWNlT3JpZW50YXRpb24sIHVpbnQ2NF90IGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRCkKICAg
ICBTeW5jaHJvbml6ZUR5bmFtaWNWaWV3cG9ydFVwZGF0ZSgpIC0+IChkb3VibGUgbmV3VGFyZ2V0
U2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24sIHVpbnQ2NF90IG5l
eHRWYWxpZExheWVyVHJlZVRyYW5zYWN0aW9uSUQpCiAKICAgICBIYW5kbGVUYXAoV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90IGxhc3RMYXllclRyZWVUcmFuc2FjdGlvbklkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320203</attachid>
            <date>2017-09-07 16:26:44 -0700</date>
            <delta_ts>2017-09-11 10:57:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176437-20170907162643.patch</filename>
            <type>text/plain</type>
            <size>38521</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTc2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkzIEBACisyMDE3LTA5LTA3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXpl
IEJveEV4dGVudCBpbnRvIFJlY3RFZGdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQW5kIGdpdmUgaXQgaXRzIG93biBoZWFkZXIuCisgICAgICAgIE5v
IGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkpOgorICAgICAgICAqIHBsYXRm
b3JtL0xlbmd0aEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpMZW5ndGhCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50OjpCb3hFeHRlbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50OjphdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpCb3hFeHRlbnQ6OnRvcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6
OnJpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJveEV4dGVudDo6Ym90dG9tKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJveEV4dGVudDo6bGVmdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6OmF0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkJveEV4dGVudDo6dG9wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkJveEV4dGVudDo6cmlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
Qm94RXh0ZW50Ojpib3R0b20gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94
RXh0ZW50OjpsZWZ0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJveEV4dGVu
dDo6c2V0QXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50OjpzZXRUb3Ap
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50OjpzZXRSaWdodCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6OnNldEJvdHRvbSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6OnNldExlZnQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Qm94RXh0ZW50OjpiZWZvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
Qm94RXh0ZW50OjphZnRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6
OnN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJveEV4dGVudDo6ZW5kKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJveEV4dGVudDo6YmVmb3JlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkJveEV4dGVudDo6YWZ0ZXIgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50OjpzdGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpCb3hFeHRlbnQ6OmVuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpCb3hFeHRlbnQ6OnNldEJlZm9yZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpCb3hFeHRlbnQ6OnNldEFmdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJveEV4
dGVudDo6c2V0U3RhcnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50Ojpz
ZXRFbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94RXh0ZW50OjpvcGVyYXRvcj09
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJveEV4dGVudDo6b3BlcmF0b3Ih
PSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vUmVjdEVkZ2VzLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpSZWN0RWRnZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVjdEVkZ2VzOjphdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZXM6OnRvcCk6
CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZXM6OnJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlY3RFZGdlczo6Ym90dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlczo6bGVmdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZXM6OmF0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlY3RFZGdlczo6dG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlczo6
cmlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpib3R0b20gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpsZWZ0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlY3RFZGdlczo6c2V0QXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpz
ZXRUb3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpzZXRSaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWN0RWRnZXM6OnNldEJvdHRvbSk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0
RWRnZXM6OnNldExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpiZWZvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjphZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZWN0RWRnZXM6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlczo6ZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlczo6YmVmb3JlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlY3RFZGdlczo6YWZ0ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2Vz
OjpzdGFydCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZXM6OmVuZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZXM6OnNldEJlZm9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZWN0RWRnZXM6OnNldEFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlczo6
c2V0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpzZXRFbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlY3RFZGdlczo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRy
b2xsZXI6OnNldEhhc01hcmdpbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1Rp
bGVDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6aXNIb3Jpem9udGFsUGh5c2ljYWxTaWRlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tmlu
ZVBpZWNlSW1hZ2U6OmlzRW1wdHlQaWVjZVJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9OaW5lUGllY2VJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VQaWVjZUhvcml6b250
YWxTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlUGllY2VWZXJ0aWNhbFNpZGUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6Z2V0U2hhZG93SW5zZXRFeHRlbnQgY29uc3QpOgorCiAyMDE3LTA5LTA3
ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBSZWdFeHAgbmFtZWQgY2FwdHVyZSBncm91cHMKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMTc2
OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjczMSw2ICsyNzMxLDcgQEAKIAkJNUNFNUQ5QUMxREI4OUEwNjAw
Q0U3QThEIC8qIEpTVGV4dEVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNFNUQ5QTkxREI4OTlGQzAwQ0U3QThEIC8qIEpTVGV4dEVuY29k
ZXIuY3BwICovOyB9OwogCQk1Q0U1RDlBRDFEQjg5QTBFMDBDRTdBOEQgLyogVGV4dERlY29kZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFNUQ5
QTAxREI4OTdDMzAwQ0U3QThEIC8qIFRleHREZWNvZGVyLmNwcCAqLzsgfTsKIAkJNUNFNUQ5QUUx
REI4OUExMzAwQ0U3QThEIC8qIFRleHRFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTVEOUEzMURCODk3QzMwMENFN0E4RCAvKiBUZXh0
RW5jb2Rlci5jcHAgKi87IH07CisJCTVDRUVFNDM2MUY1RjhGMjEwMDE0QTVGNSAvKiBSZWN0RWRn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOTdB
MzM2MUY1RjdBNjUwMDEwNTIwNyAvKiBSZWN0RWRnZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0ZDNDM1MDE5MjQwOUUzMDBBMEQzQjUgLyog
UG9pbnRlckxvY2tDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDRkM0MzRFMTkyNDA2QTkwMEEwRDNCNSAvKiBQb2ludGVyTG9ja0Nv
bnRyb2xsZXIuY3BwICovOyB9OwogCQk1RDIxQTgwMjEzRUNFNURGMDBCQjcwNjQgLyogV2ViVlRU
UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVEMjFBODAwMTNFQ0U1REYwMEJCNzA2NCAvKiBXZWJWVFRQYXJzZXIuY3BwICovOyB9OwogCQk1
RDIxQTgwMzEzRUNFNURGMDBCQjcwNjQgLyogV2ViVlRUUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDIxQTgwMTEzRUNFNURGMDBCQjcwNjQg
LyogV2ViVlRUUGFyc2VyLmggKi87IH07CkBAIC0xMDYxMCw2ICsxMDYxMSw3IEBACiAJCTVDNkU2
NTNGMUQ1Q0VEQzkwMEY3ODYyRSAvKiBVUkxQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVVJMUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUM2RTY1NDAxRDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUM3Qzg4RDcxRDBGMUYyQjAwOUQyRjZEIC8qIFNvY2tldFByb3ZpZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFByb3ZpZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDOTdBMzM2MUY1RjdBNjUwMDEwNTIwNyAvKiBSZWN0RWRn
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdEVkZ2VzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUI4NjBCMUMyMUUzQzYwMDExMEYzNiAvKiBOZXR3
b3JrTG9hZE1ldHJpY3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBOZXR3b3JrTG9hZE1ldHJpY3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
OUVGMTZGMURGRjcxOTkwMEE0NTJFMyAvKiBYUGF0aEdyYW1tYXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWFBhdGhHcmFtbWFyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUM5RUYxNzAxREZGNzE5OTAwQTQ1MkUzIC8qIFhQYXRoR3JhbW1hci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUGF0aEdyYW1tYXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0NTQ5LDYgKzI0NTUxLDcgQEAKIAkJCQlBQkMxMjg3
NjBCMzNBQTZEMDBDNjkzRDUgLyogUG9wdXBNZW51Q2xpZW50LmggKi8sCiAJCQkJQkMzQkUxMkEw
RTk4MDkyRjAwODM1NTg4IC8qIFBvcHVwTWVudVN0eWxlLmggKi8sCiAJCQkJMDA4MUZFRkQxNkIw
QTI0NDAwOEFBQTdBIC8qIFB1YmxpY1N1ZmZpeC5oICovLAorCQkJCTVDOTdBMzM2MUY1RjdBNjUw
MDEwNTIwNyAvKiBSZWN0RWRnZXMuaCAqLywKIAkJCQk5ODMxQUU0OTE1NDIyNUEyMDBGRTI2NDQg
LyogUmVmZXJyZXJQb2xpY3kuaCAqLywKIAkJCQlDREZDMzYwMzE4Q0E2MUMyMDAyNkU1NkYgLyog
UmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcCAqLywKIAkJCQlDREZDMzYwNDE4Q0E2MUMyMDAyNkU1
NkYgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyLmggKi8sCkBAIC0yOTUzMCw2ICsyOTUzMyw3IEBA
CiAJCQkJOTFCOTUyMjQxRjU4QTU4RjAwOTMxREMyIC8qIFJlY29yZGluZ1N3aXp6bGVUeXBlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MzY4RTgwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUZENDVBOTU4MTc1RDQxNEMwMEMyMUVDOCAvKiBSZWN0YW5nbGVT
aGFwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNFRUU0MzYxRjVGOEYyMTAwMTRBNUY1IC8qIFJl
Y3RFZGdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTgzMUFFNEExNTQyMjVDOTAwRkUyNjQ0IC8q
IFJlZmVycmVyUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0FCNDE4MjEzRTM1NkU4MDBE
OEFBRjMgLyogUmVnaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk2Q0RERThEMDE3NzBCQjIyMDAx
NkUwNzIgLyogUmVnaW9uT3ZlcnNldFN0YXRlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU1Byb3BlcnR5LmNwcAkocmV2aXNpb24gMjIxNzY5KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1Byb3BlcnR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCB2
b2lkIENTU1Byb3BlcnR5Ojp3cmFwVmFsdWVJbkNvbW1hU2VwYXJhCiAKIHN0YXRpYyBDU1NQcm9w
ZXJ0eUlEIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24s
IFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZSBsb2dpY2FsU2lkZSwgY29u
c3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQogewotICAgIHJldHVybiBzaG9y
dGhhbmQucHJvcGVydGllcygpW21hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRleHRG
bG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBsb2dpY2FsU2lkZSldOworICAgIHJldHVybiBz
aG9ydGhhbmQucHJvcGVydGllcygpW3N0YXRpY19jYXN0PHNpemVfdD4obWFwTG9naWNhbFNpZGVU
b1BoeXNpY2FsU2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIGxvZ2lj
YWxTaWRlKSldOwogfQogCiBlbnVtIExvZ2ljYWxFeHRlbnQgeyBMb2dpY2FsV2lkdGgsIExvZ2lj
YWxIZWlnaHQgfTsKQEAgLTc3LDUzICs3Nyw1MyBAQCBDU1NQcm9wZXJ0eUlEIENTU1Byb3BlcnR5
OjpyZXNvbHZlRGlyZWN0CiB7CiAgICAgc3dpdGNoIChwcm9wZXJ0eUlEKSB7CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZDoKLSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNp
Y2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgRW5kU2lkZSwgbWFyZ2luU2hvcnRo
YW5kKCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rp
b24sIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6RW5kLCBtYXJnaW5TaG9ydGhhbmQoKSk7
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0OgotICAgICAgICByZXR1cm4g
cmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBTdGFydFNp
ZGUsIG1hcmdpblNob3J0aGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2Fs
UHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OlN0YXJ0LCBt
YXJnaW5TaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9y
ZToKLSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3
cml0aW5nTW9kZSwgQmVmb3JlU2lkZSwgbWFyZ2luU2hvcnRoYW5kKCkpOworICAgICAgICByZXR1
cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBMb2dp
Y2FsQm94U2lkZTo6QmVmb3JlLCBtYXJnaW5TaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkFmdGVyOgotICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQ
cm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBBZnRlclNpZGUsIG1hcmdpblNob3J0aGFu
ZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9u
LCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkFmdGVyLCBtYXJnaW5TaG9ydGhhbmQoKSk7
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQ6Ci0gICAgICAgIHJldHVybiBy
ZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEVuZFNpZGUs
IHBhZGRpbmdTaG9ydGhhbmQoKSk7CisgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFBy
b3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlOjpFbmQsIHBhZGRp
bmdTaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFydDoK
LSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0
aW5nTW9kZSwgU3RhcnRTaWRlLCBwYWRkaW5nU2hvcnRoYW5kKCkpOworICAgICAgICByZXR1cm4g
cmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBMb2dpY2Fs
Qm94U2lkZTo6U3RhcnQsIHBhZGRpbmdTaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFBhZGRpbmdCZWZvcmU6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFBy
b3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEJlZm9yZVNpZGUsIHBhZGRpbmdTaG9ydGhh
bmQoKSk7CisgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlv
biwgd3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlOjpCZWZvcmUsIHBhZGRpbmdTaG9ydGhhbmQo
KSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcjoKLSAgICAgICAgcmV0
dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgQWZ0
ZXJTaWRlLCBwYWRkaW5nU2hvcnRoYW5kKCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5
c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QWZ0
ZXIsIHBhZGRpbmdTaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckVuZDoKLSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9u
LCB3cml0aW5nTW9kZSwgRW5kU2lkZSwgYm9yZGVyRGlyZWN0aW9ucygpKTsKKyAgICAgICAgcmV0
dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgTG9n
aWNhbEJveFNpZGU6OkVuZCwgYm9yZGVyRGlyZWN0aW9ucygpKTsKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyU3RhcnQ6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFBy
b3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIFN0YXJ0U2lkZSwgYm9yZGVyRGlyZWN0aW9u
cygpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9u
LCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OlN0YXJ0LCBib3JkZXJEaXJlY3Rpb25zKCkp
OwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmU6Ci0gICAgICAgIHJldHVy
biByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEJlZm9y
ZVNpZGUsIGJvcmRlckRpcmVjdGlvbnMoKSk7CisgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlz
aWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlOjpCZWZv
cmUsIGJvcmRlckRpcmVjdGlvbnMoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckFmdGVyOgotICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rp
b24sIHdyaXRpbmdNb2RlLCBBZnRlclNpZGUsIGJvcmRlckRpcmVjdGlvbnMoKSk7CisgICAgICAg
IHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUs
IExvZ2ljYWxCb3hTaWRlOjpBZnRlciwgYm9yZGVyRGlyZWN0aW9ucygpKTsKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3I6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9Q
aHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEVuZFNpZGUsIGJvcmRlckNv
bG9yU2hvcnRoYW5kKCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0
eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6RW5kLCBib3JkZXJDb2xv
clNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xv
cjoKLSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3
cml0aW5nTW9kZSwgU3RhcnRTaWRlLCBib3JkZXJDb2xvclNob3J0aGFuZCgpKTsKKyAgICAgICAg
cmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwg
TG9naWNhbEJveFNpZGU6OlN0YXJ0LCBib3JkZXJDb2xvclNob3J0aGFuZCgpKTsKICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlQ29sb3I6Ci0gICAgICAgIHJldHVybiByZXNv
bHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEJlZm9yZVNpZGUs
IGJvcmRlckNvbG9yU2hvcnRoYW5kKCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2lj
YWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QmVmb3Jl
LCBib3JkZXJDb2xvclNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyQWZ0ZXJDb2xvcjoKLSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHko
ZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgQWZ0ZXJTaWRlLCBib3JkZXJDb2xvclNob3J0aGFuZCgp
KTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3
cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkFmdGVyLCBib3JkZXJDb2xvclNob3J0aGFuZCgp
KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGU6Ci0gICAgICAgIHJl
dHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEVu
ZFNpZGUsIGJvcmRlclN0eWxlU2hvcnRoYW5kKCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRv
UGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6
RW5kLCBib3JkZXJTdHlsZVNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyU3RhcnRTdHlsZToKLSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVy
dHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgU3RhcnRTaWRlLCBib3JkZXJTdHlsZVNob3J0aGFu
ZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9u
LCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OlN0YXJ0LCBib3JkZXJTdHlsZVNob3J0aGFu
ZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGU6Ci0gICAg
ICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01v
ZGUsIEJlZm9yZVNpZGUsIGJvcmRlclN0eWxlU2hvcnRoYW5kKCkpOworICAgICAgICByZXR1cm4g
cmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBMb2dpY2Fs
Qm94U2lkZTo6QmVmb3JlLCBib3JkZXJTdHlsZVNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZToKLSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1Bo
eXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgQWZ0ZXJTaWRlLCBib3JkZXJT
dHlsZVNob3J0aGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVy
dHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkFmdGVyLCBib3JkZXJT
dHlsZVNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lk
dGg6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwg
d3JpdGluZ01vZGUsIEVuZFNpZGUsIGJvcmRlcldpZHRoU2hvcnRoYW5kKCkpOworICAgICAgICBy
ZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBM
b2dpY2FsQm94U2lkZTo6RW5kLCBib3JkZXJXaWR0aFNob3J0aGFuZCgpKTsKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRXaWR0aDoKLSAgICAgICAgcmV0dXJuIHJlc29sdmVU
b1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgU3RhcnRTaWRlLCBib3Jk
ZXJXaWR0aFNob3J0aGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJv
cGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OlN0YXJ0LCBib3Jk
ZXJXaWR0aFNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVm
b3JlV2lkdGg6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVj
dGlvbiwgd3JpdGluZ01vZGUsIEJlZm9yZVNpZGUsIGJvcmRlcldpZHRoU2hvcnRoYW5kKCkpOwor
ICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRp
bmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QmVmb3JlLCBib3JkZXJXaWR0aFNob3J0aGFuZCgpKTsK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aDoKLSAgICAgICAgcmV0
dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgQWZ0
ZXJTaWRlLCBib3JkZXJXaWR0aFNob3J0aGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVU
b1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6
OkFmdGVyLCBib3JkZXJXaWR0aFNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TG9naWNhbFdpZHRoOiB7CiAgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGll
c1syXSA9IHsgQ1NTUHJvcGVydHlXaWR0aCwgQ1NTUHJvcGVydHlIZWlnaHQgfTsKICAgICAgICAg
cmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkod3JpdGluZ01vZGUsIExvZ2ljYWxXaWR0
aCwgcHJvcGVydGllcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3gu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guaAkocmV2
aXNpb24gMjIxNzY5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmgJKHdv
cmtpbmcgY29weSkKQEAgLTIyLDEwNiArMjIsMTIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiTGVuZ3RoLmgiCisjaW5jbHVkZSAiUmVjdEVkZ2VzLmgiCiAjaW5jbHVkZSAiV3JpdGluZ01v
ZGUuaCIKLSNpbmNsdWRlIDxhcnJheT4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjbGFzcyBCb3hFeHRlbnQgewotcHVibGljOgotICAgIEJveEV4dGVudCgp
Ci0gICAgICAgIDogbV9zaWRlcyh7IHsgMCwgMCwgMCwgMCB9IH0pCi0gICAgewotICAgIH0KLQot
ICAgIEJveEV4dGVudChjb25zdCBUJiB0b3AsIGNvbnN0IFQmIHJpZ2h0LCBjb25zdCBUJiBib3R0
b20sIGNvbnN0IFQmIGxlZnQpCi0gICAgICAgIDogbV9zaWRlcyh7IHsgdG9wLCByaWdodCwgYm90
dG9tLCBsZWZ0IH0gfSkKLSAgICB7Ci0gICAgfQotCi0gICAgQm94RXh0ZW50KFQmJiB0b3AsIFQm
JiByaWdodCwgVCYmIGJvdHRvbSwgVCYmIGxlZnQpCi0gICAgICAgIDogbV9zaWRlcyh7IHsgc3Rk
Ojpmb3J3YXJkPFQ+KHRvcCksIHN0ZDo6Zm9yd2FyZDxUPihyaWdodCksIHN0ZDo6Zm9yd2FyZDxU
Pihib3R0b20pLCBzdGQ6OmZvcndhcmQ8VD4obGVmdCkgfSB9KQotICAgIHsKLSAgICB9Ci0KLSAg
ICBUJiBhdChQaHlzaWNhbEJveFNpZGUgc2lkZSkgeyByZXR1cm4gbV9zaWRlc1tzaWRlXTsgfQot
ICAgIFQmIHRvcCgpIHsgcmV0dXJuIGF0KFRvcFNpZGUpOyB9Ci0gICAgVCYgcmlnaHQoKSB7IHJl
dHVybiBhdChSaWdodFNpZGUpOyB9Ci0gICAgVCYgYm90dG9tKCkgeyByZXR1cm4gYXQoQm90dG9t
U2lkZSk7IH0KLSAgICBUJiBsZWZ0KCkgeyByZXR1cm4gYXQoTGVmdFNpZGUpOyB9Ci0KLSAgICBj
b25zdCBUJiBhdChQaHlzaWNhbEJveFNpZGUgc2lkZSkgY29uc3QgeyByZXR1cm4gbV9zaWRlc1tz
aWRlXTsgfQotICAgIGNvbnN0IFQmIHRvcCgpIGNvbnN0IHsgcmV0dXJuIGF0KFRvcFNpZGUpOyB9
Ci0gICAgY29uc3QgVCYgcmlnaHQoKSBjb25zdCB7IHJldHVybiBhdChSaWdodFNpZGUpOyB9Ci0g
ICAgY29uc3QgVCYgYm90dG9tKCkgY29uc3QgeyByZXR1cm4gYXQoQm90dG9tU2lkZSk7IH0KLSAg
ICBjb25zdCBUJiBsZWZ0KCkgY29uc3QgeyByZXR1cm4gYXQoTGVmdFNpZGUpOyB9Ci0KLSAgICB2
b2lkIHNldEF0KFBoeXNpY2FsQm94U2lkZSBzaWRlLCBjb25zdCBUJiB2KSB7IGF0KHNpZGUpID0g
djsgfQotICAgIHZvaWQgc2V0VG9wKGNvbnN0IFQmIHRvcCkgeyBzZXRBdChUb3BTaWRlLCB0b3Ap
OyB9Ci0gICAgdm9pZCBzZXRSaWdodChjb25zdCBUJiByaWdodCkgeyBzZXRBdChSaWdodFNpZGUs
IHJpZ2h0KTsgfQotICAgIHZvaWQgc2V0Qm90dG9tKGNvbnN0IFQmIGJvdHRvbSkgeyBzZXRBdChC
b3R0b21TaWRlLCBib3R0b20pOyB9Ci0gICAgdm9pZCBzZXRMZWZ0KGNvbnN0IFQmIGxlZnQpIHsg
c2V0QXQoTGVmdFNpZGUsIGxlZnQpOyB9Ci0KLSAgICBUJiBiZWZvcmUoV3JpdGluZ01vZGUgd3Jp
dGluZ01vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNp
Y2FsU2lkZSh3cml0aW5nTW9kZSwgQmVmb3JlU2lkZSkpOwotICAgIH0KLQotICAgIFQmIGFmdGVy
KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0KG1hcExv
Z2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUod3JpdGluZ01vZGUsIEFmdGVyU2lkZSkpOwotICAgIH0K
LQotICAgIFQmIHN0YXJ0KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbiA9IExUUikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRv
UGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgU3RhcnRT
aWRlKSk7Ci0gICAgfQotCi0gICAgVCYgZW5kKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0
RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdChtYXBM
b2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0
aW9uKSwgRW5kU2lkZSkpOwotICAgIH0KLQotICAgIGNvbnN0IFQmIGJlZm9yZShXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdChtYXBMb2dpY2Fs
U2lkZVRvUGh5c2ljYWxTaWRlKHdyaXRpbmdNb2RlLCBCZWZvcmVTaWRlKSk7Ci0gICAgfQotCi0g
ICAgY29uc3QgVCYgYWZ0ZXIoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZSh3cml0aW5nTW9k
ZSwgQWZ0ZXJTaWRlKSk7Ci0gICAgfQotCi0gICAgY29uc3QgVCYgc3RhcnQoV3JpdGluZ01vZGUg
d3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRleHRG
bG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBTdGFydFNpZGUpKTsKLSAgICB9Ci0KLSAgICBj
b25zdCBUJiBlbmQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0
aW9uID0gTFRSKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRl
VG9QaHlzaWNhbFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBFbmRT
aWRlKSk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRCZWZvcmUoY29uc3QgVCYgYmVmb3JlLCBXcml0
aW5nTW9kZSB3cml0aW5nTW9kZSkgeyB0aGlzLT5iZWZvcmUod3JpdGluZ01vZGUpID0gYmVmb3Jl
OyB9Ci0gICAgdm9pZCBzZXRBZnRlcihjb25zdCBUJiBhZnRlciwgV3JpdGluZ01vZGUgd3JpdGlu
Z01vZGUpIHsgdGhpcy0+YWZ0ZXIod3JpdGluZ01vZGUpID0gYWZ0ZXI7IH0KLSAgICB2b2lkIHNl
dFN0YXJ0KGNvbnN0IFQmIHN0YXJ0LCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVj
dGlvbiBkaXJlY3Rpb24gPSBMVFIpIHsgdGhpcy0+c3RhcnQod3JpdGluZ01vZGUsIGRpcmVjdGlv
bikgPSBzdGFydDsgfQotICAgIHZvaWQgc2V0RW5kKGNvbnN0IFQmIGVuZCwgV3JpdGluZ01vZGUg
d3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSB7IHRoaXMtPmVuZCh3
cml0aW5nTW9kZSwgZGlyZWN0aW9uKSA9IGVuZDsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEJveEV4dGVudCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9zaWRl
cyA9PSBvdGhlci5tX3NpZGVzOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBC
b3hFeHRlbnQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2lkZXMgIT0g
b3RoZXIubV9zaWRlczsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICBzdGQ6OmFycmF5PFQsIDQ+
IG1fc2lkZXM7Ci19OwotCi1jbGFzcyBMZW5ndGhCb3ggOiBwdWJsaWMgQm94RXh0ZW50PExlbmd0
aD4geworY2xhc3MgTGVuZ3RoQm94IDogcHVibGljIFJlY3RFZGdlczxMZW5ndGg+IHsKIHB1Ymxp
YzoKICAgICBMZW5ndGhCb3goKQogICAgICAgICA6IExlbmd0aEJveChBdXRvKQpAQCAtMTI5LDIy
ICszNSwyMiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgZXhwbGljaXQgTGVuZ3RoQm94KExlbmd0
aFR5cGUgdHlwZSkKLSAgICAgICAgOiBCb3hFeHRlbnQoTGVuZ3RoKHR5cGUpLCBMZW5ndGgodHlw
ZSksIExlbmd0aCh0eXBlKSwgTGVuZ3RoKHR5cGUpKQorICAgICAgICA6IFJlY3RFZGdlcyhMZW5n
dGgodHlwZSksIExlbmd0aCh0eXBlKSwgTGVuZ3RoKHR5cGUpLCBMZW5ndGgodHlwZSkpCiAgICAg
ewogICAgIH0KIAogICAgIGV4cGxpY2l0IExlbmd0aEJveChpbnQgdikKLSAgICAgICAgOiBCb3hF
eHRlbnQoTGVuZ3RoKHYsIEZpeGVkKSwgTGVuZ3RoKHYsIEZpeGVkKSwgTGVuZ3RoKHYsIEZpeGVk
KSwgTGVuZ3RoKHYsIEZpeGVkKSkKKyAgICAgICAgOiBSZWN0RWRnZXMoTGVuZ3RoKHYsIEZpeGVk
KSwgTGVuZ3RoKHYsIEZpeGVkKSwgTGVuZ3RoKHYsIEZpeGVkKSwgTGVuZ3RoKHYsIEZpeGVkKSkK
ICAgICB7CiAgICAgfQogCiAgICAgTGVuZ3RoQm94KGludCB0b3AsIGludCByaWdodCwgaW50IGJv
dHRvbSwgaW50IGxlZnQpCi0gICAgICAgIDogQm94RXh0ZW50KExlbmd0aCh0b3AsIEZpeGVkKSwg
TGVuZ3RoKHJpZ2h0LCBGaXhlZCksIExlbmd0aChib3R0b20sIEZpeGVkKSwgTGVuZ3RoKGxlZnQs
IEZpeGVkKSkKKyAgICAgICAgOiBSZWN0RWRnZXMoTGVuZ3RoKHRvcCwgRml4ZWQpLCBMZW5ndGgo
cmlnaHQsIEZpeGVkKSwgTGVuZ3RoKGJvdHRvbSwgRml4ZWQpLCBMZW5ndGgobGVmdCwgRml4ZWQp
KQogICAgIHsKICAgICB9CiAKICAgICBMZW5ndGhCb3goTGVuZ3RoJiYgdG9wLCBMZW5ndGgmJiBy
aWdodCwgTGVuZ3RoJiYgYm90dG9tLCBMZW5ndGgmJiBsZWZ0KQotICAgICAgICA6IEJveEV4dGVu
dCB7IFdURk1vdmUodG9wKSwgV1RGTW92ZShyaWdodCksIFdURk1vdmUoYm90dG9tKSwgV1RGTW92
ZShsZWZ0KSB9CisgICAgICAgIDogUmVjdEVkZ2VzIHsgV1RGTW92ZSh0b3ApLCBXVEZNb3ZlKHJp
Z2h0KSwgV1RGTW92ZShib3R0b20pLCBXVEZNb3ZlKGxlZnQpIH0KICAgICB7CiAgICAgfQogCkBA
IC0xNTQsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotdXNpbmcgTGF5b3V0Qm94RXh0
ZW50ID0gQm94RXh0ZW50PExheW91dFVuaXQ+OwotdXNpbmcgRmxvYXRCb3hFeHRlbnQgPSBCb3hF
eHRlbnQ8ZmxvYXQ+OwordXNpbmcgTGF5b3V0Qm94RXh0ZW50ID0gUmVjdEVkZ2VzPExheW91dFVu
aXQ+OwordXNpbmcgRmxvYXRCb3hFeHRlbnQgPSBSZWN0RWRnZXM8ZmxvYXQ+OwogCiBXVEY6OlRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTGVuZ3RoQm94Jik7
CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3Ry
ZWFtJiwgY29uc3QgRmxvYXRCb3hFeHRlbnQmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1JlY3RFZGdlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Jl
Y3RFZGdlcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlY3RF
ZGdlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldy
aXRpbmdNb2RlLmgiCisjaW5jbHVkZSA8YXJyYXk+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAg
ICAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJlY3RFZGdlcyB7CitwdWJsaWM6CisgICAg
UmVjdEVkZ2VzKCkgPSBkZWZhdWx0OworICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Cisg
ICAgUmVjdEVkZ2VzKFUmJiB0b3AsIFUmJiByaWdodCwgVSYmIGJvdHRvbSwgVSYmIGxlZnQpCisg
ICAgICAgIDogbV9zaWRlcyh7IHsgc3RkOjpmb3J3YXJkPFQ+KHRvcCksIHN0ZDo6Zm9yd2FyZDxU
PihyaWdodCksIHN0ZDo6Zm9yd2FyZDxUPihib3R0b20pLCBzdGQ6OmZvcndhcmQ8VD4obGVmdCkg
fSB9KQorICAgIHsgfQorICAgIAorICAgIFQmIGF0KFBoeXNpY2FsQm94U2lkZSBzaWRlKSB7IHJl
dHVybiBtX3NpZGVzW3N0YXRpY19jYXN0PHNpemVfdD4oc2lkZSldOyB9CisgICAgVCYgdG9wKCkg
eyByZXR1cm4gYXQoUGh5c2ljYWxCb3hTaWRlOjpUb3ApOyB9CisgICAgVCYgcmlnaHQoKSB7IHJl
dHVybiBhdChQaHlzaWNhbEJveFNpZGU6OlJpZ2h0KTsgfQorICAgIFQmIGJvdHRvbSgpIHsgcmV0
dXJuIGF0KFBoeXNpY2FsQm94U2lkZTo6Qm90dG9tKTsgfQorICAgIFQmIGxlZnQoKSB7IHJldHVy
biBhdChQaHlzaWNhbEJveFNpZGU6OkxlZnQpOyB9CisgICAgCisgICAgY29uc3QgVCYgYXQoUGh5
c2ljYWxCb3hTaWRlIHNpZGUpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXNbc3RhdGljX2Nhc3Q8c2l6
ZV90PihzaWRlKV07IH0KKyAgICBjb25zdCBUJiB0b3AoKSBjb25zdCB7IHJldHVybiBhdChQaHlz
aWNhbEJveFNpZGU6OlRvcCk7IH0KKyAgICBjb25zdCBUJiByaWdodCgpIGNvbnN0IHsgcmV0dXJu
IGF0KFBoeXNpY2FsQm94U2lkZTo6UmlnaHQpOyB9CisgICAgY29uc3QgVCYgYm90dG9tKCkgY29u
c3QgeyByZXR1cm4gYXQoUGh5c2ljYWxCb3hTaWRlOjpCb3R0b20pOyB9CisgICAgY29uc3QgVCYg
bGVmdCgpIGNvbnN0IHsgcmV0dXJuIGF0KFBoeXNpY2FsQm94U2lkZTo6TGVmdCk7IH0KKyAgICAK
KyAgICB2b2lkIHNldEF0KFBoeXNpY2FsQm94U2lkZSBzaWRlLCBjb25zdCBUJiB2KSB7IGF0KHNp
ZGUpID0gdjsgfQorICAgIHZvaWQgc2V0VG9wKGNvbnN0IFQmIHRvcCkgeyBzZXRBdChQaHlzaWNh
bEJveFNpZGU6OlRvcCwgdG9wKTsgfQorICAgIHZvaWQgc2V0UmlnaHQoY29uc3QgVCYgcmlnaHQp
IHsgc2V0QXQoUGh5c2ljYWxCb3hTaWRlOjpSaWdodCwgcmlnaHQpOyB9CisgICAgdm9pZCBzZXRC
b3R0b20oY29uc3QgVCYgYm90dG9tKSB7IHNldEF0KFBoeXNpY2FsQm94U2lkZTo6Qm90dG9tLCBi
b3R0b20pOyB9CisgICAgdm9pZCBzZXRMZWZ0KGNvbnN0IFQmIGxlZnQpIHsgc2V0QXQoUGh5c2lj
YWxCb3hTaWRlOjpMZWZ0LCBsZWZ0KTsgfQorICAgIAorICAgIFQmIGJlZm9yZShXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSkgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZSh3
cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkJlZm9yZSkpOyB9CisgICAgVCYgYWZ0ZXIoV3Jp
dGluZ01vZGUgd3JpdGluZ01vZGUpIHsgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNh
bFNpZGUod3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlOjpBZnRlcikpOyB9CisgICAgVCYgc3Rh
cnQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRS
KSB7IHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3
cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgTG9naWNhbEJveFNpZGU6OlN0YXJ0KSk7IH0KKyAgICBU
JiBlbmQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0g
TFRSKSB7IHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxv
dyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgTG9naWNhbEJveFNpZGU6OkVuZCkpOyB9CisgICAg
CisgICAgY29uc3QgVCYgYmVmb3JlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdCB7IHJl
dHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKHdyaXRpbmdNb2RlLCBMb2dpY2Fs
Qm94U2lkZTo6QmVmb3JlKSk7IH0KKyAgICBjb25zdCBUJiBhZnRlcihXcml0aW5nTW9kZSB3cml0
aW5nTW9kZSkgY29uc3QgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZSh3
cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkFmdGVyKSk7IH0KKyAgICBjb25zdCBUJiBzdGFy
dChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIp
IGNvbnN0IHsgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRleHRG
bG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBMb2dpY2FsQm94U2lkZTo6U3RhcnQpKTsgfQor
ICAgIGNvbnN0IFQmIGVuZChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24gPSBMVFIpIGNvbnN0IHsgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNh
bFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBMb2dpY2FsQm94U2lk
ZTo6RW5kKSk7IH0KKyAgICAKKyAgICB2b2lkIHNldEJlZm9yZShjb25zdCBUJiBiZWZvcmUsIFdy
aXRpbmdNb2RlIHdyaXRpbmdNb2RlKSB7IHRoaXMtPmJlZm9yZSh3cml0aW5nTW9kZSkgPSBiZWZv
cmU7IH0KKyAgICB2b2lkIHNldEFmdGVyKGNvbnN0IFQmIGFmdGVyLCBXcml0aW5nTW9kZSB3cml0
aW5nTW9kZSkgeyB0aGlzLT5hZnRlcih3cml0aW5nTW9kZSkgPSBhZnRlcjsgfQorICAgIHZvaWQg
c2V0U3RhcnQoY29uc3QgVCYgc3RhcnQsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbiA9IExUUikgeyB0aGlzLT5zdGFydCh3cml0aW5nTW9kZSwgZGlyZWN0
aW9uKSA9IHN0YXJ0OyB9CisgICAgdm9pZCBzZXRFbmQoY29uc3QgVCYgZW5kLCBXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpIHsgdGhpcy0+ZW5k
KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pID0gZW5kOyB9CisgICAgCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFJlY3RFZGdlcyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXMgPT0gb3Ro
ZXIubV9zaWRlczsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWN0RWRnZXMmIG90aGVy
KSBjb25zdCB7IHJldHVybiBtX3NpZGVzICE9IG90aGVyLm1fc2lkZXM7IH0KKworcHJpdmF0ZToK
KyAgICBzdGQ6OmFycmF5PFQsIDQ+IG1fc2lkZXMge3swLCAwLCAwLCAwfX07Cit9OworCit9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMjE3NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2
Nyw3ICs2NjcsNyBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRTY3JvbGxpbmdNb2RlSW5kCiAK
IHZvaWQgVGlsZUNvbnRyb2xsZXI6OnNldEhhc01hcmdpbnMoYm9vbCBtYXJnaW5Ub3AsIGJvb2wg
bWFyZ2luQm90dG9tLCBib29sIG1hcmdpbkxlZnQsIGJvb2wgbWFyZ2luUmlnaHQpCiB7Ci0gICAg
Qm94RXh0ZW50PGJvb2w+IG1hcmdpbkVkZ2VzKG1hcmdpblRvcCwgbWFyZ2luUmlnaHQsIG1hcmdp
bkJvdHRvbSwgbWFyZ2luTGVmdCk7CisgICAgUmVjdEVkZ2VzPGJvb2w+IG1hcmdpbkVkZ2VzKG1h
cmdpblRvcCwgbWFyZ2luUmlnaHQsIG1hcmdpbkJvdHRvbSwgbWFyZ2luTGVmdCk7CiAgICAgaWYg
KG1hcmdpbkVkZ2VzID09IG1fbWFyZ2luRWRnZXMpCiAgICAgICAgIHJldHVybjsKICAgICAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNv
bnRyb2xsZXIuaAkocmV2aXNpb24gMjIxNzY5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDcgKzIx
OSw3IEBAIHByaXZhdGU6CiAgICAgLy8gb2YgdGhvc2UgdGlsZXMgd2lsbCBiZSBlcXVpdmFsZW50
IHRvIHRoZSB3aWR0aCBvZiB0aGUgb3RoZXIgdGlsZXMgaW4gdGhlIGdyaWQuIG1fbWFyZ2luUmln
aHQgYW5kCiAgICAgLy8gbV9tYXJnaW5MZWZ0IGFyZSB0aGUgd2lkdGggaW4gcGl4ZWxzIG9mIHRo
ZSByaWdodCBhbmQgbGVmdCBtYXJnaW4gdGlsZXMsIHJlc3BlY3RpdmVseS4gVGhlIGhlaWdodCBv
ZgogICAgIC8vIHRob3NlIHRpbGVzIHdpbGwgYmUgZXF1aXZhbGVudCB0byB0aGUgaGVpZ2h0IG9m
IHRoZSBvdGhlciB0aWxlcyBpbiB0aGUgZ3JpZC4KLSAgICBCb3hFeHRlbnQ8Ym9vbD4gbV9tYXJn
aW5FZGdlczsKKyAgICBSZWN0RWRnZXM8Ym9vbD4gbV9tYXJnaW5FZGdlczsKICAgICAKICAgICBi
b29sIG1faXNJbldpbmRvdyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Njcm9sbGluZ1BlcmZvcm1h
bmNlTG9nZ2luZ0VuYWJsZWQgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Xcml0aW5nTW9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvV3JpdGluZ01vZGUuaAkocmV2aXNpb24gMjIxNzY5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsy
OSw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV3JpdGluZ01vZGVfaAotI2Rl
ZmluZSBXcml0aW5nTW9kZV9oCisjcHJhZ21hIG9uY2UKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0xMTMsMjQgKzExMiwyMyBAQCBpbmxpbmUgYm9vbCBpc0ZsaXBwZWRMaW5lc1dyaXRpbmdN
b2RlKFdyCiAgICAgcmV0dXJuIGlzVmVydGljYWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgIT0g
aXNGbGlwcGVkV3JpdGluZ01vZGUod3JpdGluZ01vZGUpOwogfQogCi1lbnVtIExvZ2ljYWxCb3hT
aWRlIHsKLSAgICBCZWZvcmVTaWRlLAotICAgIEVuZFNpZGUsCi0gICAgQWZ0ZXJTaWRlLAotICAg
IFN0YXJ0U2lkZQorZW51bSBjbGFzcyBMb2dpY2FsQm94U2lkZSA6IHVpbnQ4X3QgeworICAgIEJl
Zm9yZSwKKyAgICBFbmQsCisgICAgQWZ0ZXIsCisgICAgU3RhcnQKIH07CiAKLWVudW0gUGh5c2lj
YWxCb3hTaWRlIHsKLSAgICBOaWxTaWRlID0gLTEsCi0gICAgVG9wU2lkZSwKLSAgICBSaWdodFNp
ZGUsCi0gICAgQm90dG9tU2lkZSwKLSAgICBMZWZ0U2lkZQorZW51bSBjbGFzcyBQaHlzaWNhbEJv
eFNpZGUgOiB1aW50OF90IHsKKyAgICBUb3AsCisgICAgUmlnaHQsCisgICAgQm90dG9tLAorICAg
IExlZnQKIH07CiAKIGlubGluZSBib29sIGlzSG9yaXpvbnRhbFBoeXNpY2FsU2lkZShQaHlzaWNh
bEJveFNpZGUgcGh5c2ljYWxTaWRlKQogewotICAgIHJldHVybiBwaHlzaWNhbFNpZGUgPT0gTGVm
dFNpZGUgfHwgcGh5c2ljYWxTaWRlID09IFJpZ2h0U2lkZTsKKyAgICByZXR1cm4gcGh5c2ljYWxT
aWRlID09IFBoeXNpY2FsQm94U2lkZTo6TGVmdCB8fCBwaHlzaWNhbFNpZGUgPT0gUGh5c2ljYWxC
b3hTaWRlOjpSaWdodDsKIH0KIAogaW5saW5lIFBoeXNpY2FsQm94U2lkZSBtaXJyb3JQaHlzaWNh
bFNpZGUoUGh5c2ljYWxCb3hTaWRlIHBoeXNpY2FsU2lkZSkKQEAgLTE2OCw1ICsxNjYsMyBAQCBp
bmxpbmUgUGh5c2ljYWxCb3hTaWRlIG1hcExvZ2ljYWxTaWRlVG9QCiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFdyaXRpbmdNb2RlX2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcAkocmV2aXNpb24g
MjIxNzY5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDkgKzEwMCw5IEBAIGJvb2wgTmluZVBpZWNlSW1h
Z2U6OmlzRW1wdHlQaWVjZVJlY3QoSW0KICAgICBpZiAocGllY2UgPT0gTWlkZGxlUGllY2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFBoeXNpY2FsQm94U2lkZSBob3Jpem9udGFsU2lk
ZSA9IGltYWdlUGllY2VIb3Jpem9udGFsU2lkZShwaWVjZSk7Ci0gICAgUGh5c2ljYWxCb3hTaWRl
IHZlcnRpY2FsU2lkZSA9IGltYWdlUGllY2VWZXJ0aWNhbFNpZGUocGllY2UpOwotICAgIHJldHVy
biAhKChob3Jpem9udGFsU2lkZSA9PSBOaWxTaWRlIHx8IHNsaWNlcy5hdChob3Jpem9udGFsU2lk
ZSkpICYmICh2ZXJ0aWNhbFNpZGUgPT0gTmlsU2lkZSB8fCBzbGljZXMuYXQodmVydGljYWxTaWRl
KSkpOworICAgIGF1dG8gaG9yaXpvbnRhbFNpZGUgPSBpbWFnZVBpZWNlSG9yaXpvbnRhbFNpZGUo
cGllY2UpOworICAgIGF1dG8gdmVydGljYWxTaWRlID0gaW1hZ2VQaWVjZVZlcnRpY2FsU2lkZShw
aWVjZSk7CisgICAgcmV0dXJuICEoKCFob3Jpem9udGFsU2lkZSB8fCBzbGljZXMuYXQoKmhvcml6
b250YWxTaWRlKSkgJiYgKCF2ZXJ0aWNhbFNpZGUgfHwgc2xpY2VzLmF0KCp2ZXJ0aWNhbFNpZGUp
KSk7CiB9CiAKIGJvb2wgTmluZVBpZWNlSW1hZ2U6OmlzRW1wdHlQaWVjZVJlY3QoSW1hZ2VQaWVj
ZSBwaWVjZSwgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIGRlc3RpbmF0aW9uUmVjdHMsIGNvbnN0
IFZlY3RvcjxGbG9hdFJlY3Q+JiBzb3VyY2VSZWN0cykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCShyZXZpc2lvbiAyMjE3NjkpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzYsMjYgKzc2LDI2IEBAIGlubGluZSBib29sIGlzVmVydGljYWxQaWVjZShJ
bWFnZVBpZWNlIHAKICAgICByZXR1cm4gcGllY2UgPT0gTGVmdFBpZWNlIHx8IHBpZWNlID09IFJp
Z2h0UGllY2UgfHwgcGllY2UgPT0gTWlkZGxlUGllY2U7CiB9CiAKLWlubGluZSBQaHlzaWNhbEJv
eFNpZGUgaW1hZ2VQaWVjZUhvcml6b250YWxTaWRlKEltYWdlUGllY2UgcGllY2UpCitpbmxpbmUg
c3RkOjpvcHRpb25hbDxQaHlzaWNhbEJveFNpZGU+IGltYWdlUGllY2VIb3Jpem9udGFsU2lkZShJ
bWFnZVBpZWNlIHBpZWNlKQogewogICAgIGlmIChwaWVjZSA9PSBUb3BMZWZ0UGllY2UgfHwgcGll
Y2UgPT0gVG9wUGllY2UgfHwgcGllY2UgPT0gVG9wUmlnaHRQaWVjZSkKLSAgICAgICAgcmV0dXJu
IFRvcFNpZGU7CisgICAgICAgIHJldHVybiBQaHlzaWNhbEJveFNpZGU6OlRvcDsKIAogICAgIGlm
IChwaWVjZSA9PSBCb3R0b21MZWZ0UGllY2UgfHwgcGllY2UgPT0gQm90dG9tUGllY2UgfHwgcGll
Y2UgPT0gQm90dG9tUmlnaHRQaWVjZSkKLSAgICAgICAgcmV0dXJuIEJvdHRvbVNpZGU7CisgICAg
ICAgIHJldHVybiBQaHlzaWNhbEJveFNpZGU6OkJvdHRvbTsKIAotICAgIHJldHVybiBOaWxTaWRl
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLWlubGluZSBQaHlzaWNhbEJveFNpZGUg
aW1hZ2VQaWVjZVZlcnRpY2FsU2lkZShJbWFnZVBpZWNlIHBpZWNlKQoraW5saW5lIHN0ZDo6b3B0
aW9uYWw8UGh5c2ljYWxCb3hTaWRlPiBpbWFnZVBpZWNlVmVydGljYWxTaWRlKEltYWdlUGllY2Ug
cGllY2UpCiB7CiAgICAgaWYgKHBpZWNlID09IFRvcExlZnRQaWVjZSB8fCBwaWVjZSA9PSBMZWZ0
UGllY2UgfHwgcGllY2UgPT0gQm90dG9tTGVmdFBpZWNlKQotICAgICAgICByZXR1cm4gTGVmdFNp
ZGU7CisgICAgICAgIHJldHVybiBQaHlzaWNhbEJveFNpZGU6OkxlZnQ7CiAKICAgICBpZiAocGll
Y2UgPT0gVG9wUmlnaHRQaWVjZSB8fCBwaWVjZSA9PSBSaWdodFBpZWNlIHx8IHBpZWNlID09IEJv
dHRvbVJpZ2h0UGllY2UpCi0gICAgICAgIHJldHVybiBSaWdodFNpZGU7CisgICAgICAgIHJldHVy
biBQaHlzaWNhbEJveFNpZGU6OlJpZ2h0OwogCi0gICAgcmV0dXJuIE5pbFNpZGU7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogY2xhc3MgTmluZVBpZWNlSW1hZ2UgewpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lv
biAyMjE3NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIwLDcgKzE3MjAsNyBAQCBMYXlvdXRCb3hFeHRlbnQg
UmVuZGVyU3R5bGU6OmdldFNoYWRvd0luCiAgICAgICAgIGxlZnQgPSBzdGQ6Om1heDxMYXlvdXRV
bml0PihsZWZ0LCBzaGFkb3ctPngoKSArIGV4dGVudEFuZFNwcmVhZCk7CiAgICAgfQogCi0gICAg
cmV0dXJuIExheW91dEJveEV4dGVudCh0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpOworICAgIHJl
dHVybiBMYXlvdXRCb3hFeHRlbnQoV1RGTW92ZSh0b3ApLCBXVEZNb3ZlKHJpZ2h0KSwgV1RGTW92
ZShib3R0b20pLCBXVEZNb3ZlKGxlZnQpKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6Z2V0U2hh
ZG93SG9yaXpvbnRhbEV4dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIExheW91dFVuaXQg
JmxlZnQsIExheW91dFVuaXQgJnJpZ2h0KSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIy
MTc3MSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTctMDktMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBNb2Rlcm5pemUgQm94RXh0ZW50IGludG8gUmVjdEVkZ2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0MzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAoY2xhc3NfdGVtcGxhdGVfaGVhZGVycyk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluOgorCiAyMDE3LTA5LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQ2xlYW4gdXAgQVBJOjpVSUNsaWVudApJbmRleDogU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAyMjE3NjkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0y
OTIsNyArMjkyLDcgQEAgZGVmIGNsYXNzX3RlbXBsYXRlX2hlYWRlcnModGVtcGxhdGVfc3RyaQog
ICAgIHRlbXBsYXRlX3N0cmluZyA9IHRlbXBsYXRlX3N0cmluZy5zdHJpcCgpCiAKICAgICBjbGFz
c190ZW1wbGF0ZV90eXBlcyA9IHsKLSAgICAgICAgJ1dlYkNvcmU6OkJveEV4dGVudCc6IHsnaGVh
ZGVycyc6IFsnPFdlYkNvcmUvTGVuZ3RoQm94Lmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJz
JzogWyciV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiJ119LAorICAgICAgICAnV2ViQ29yZTo6UmVj
dEVkZ2VzJzogeydoZWFkZXJzJzogWyc8V2ViQ29yZS9SZWN0RWRnZXMuaD4nXSwgJ2FyZ3VtZW50
X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKICAgICAgICAgJ0hhc2hN
YXAnOiB7J2hlYWRlcnMnOiBbJzx3dGYvSGFzaE1hcC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVh
ZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnc3RkOjpvcHRpb25hbCc6
IHsnaGVhZGVycyc6IFsnPHd0Zi9PcHRpb25hbC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVy
cyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnT3B0aW9uU2V0JzogeydoZWFk
ZXJzJzogWyc8d3RmL09wdGlvblNldC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsn
IkFyZ3VtZW50Q29kZXJzLmgiJ119LApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCShyZXZpc2lvbiAyMjE3NjkpCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QYXRoLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QbHVnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1JlY3RFZGdlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaW9uLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMjIxNzY5KQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEw
ICs0NSw2IEBAIGNsYXNzIE1vbm90b25pY1RpbWU7CiBjbGFzcyBTZWNvbmRzOwogfQogCi1uYW1l
c3BhY2UgUEFMIHsKLWNsYXNzIFNlc3Npb25JRDsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CkBA
IC0xMDMsNyArOTksNiBAQCBzdHJ1Y3QgR3JhbW1hckRldGFpbDsKIHN0cnVjdCBNaW1lQ2xhc3NJ
bmZvOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwotc3Ry
dWN0IFBhc3RlYm9hcmRXZWJDb250ZW50Owogc3RydWN0IFBsdWdpbkluZm87CiBzdHJ1Y3QgUmVj
ZW50U2VhcmNoOwogc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7CkBAIC0xMTMsNzAgKzEw
OCw1MiBAQCBzdHJ1Y3QgVGV4dEluZGljYXRvckRhdGE7CiBzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1
dGVzOwogc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwogICAgIAotdGVtcGxhdGUgPHR5cGVuYW1lPiBj
bGFzcyBCb3hFeHRlbnQ7Ci11c2luZyBGbG9hdEJveEV4dGVudCA9IEJveEV4dGVudDxmbG9hdD47
Ci19Cit0ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIFJlY3RFZGdlczsKK3VzaW5nIEZsb2F0Qm94
RXh0ZW50ID0gUmVjdEVkZ2VzPGZsb2F0PjsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKIHN0cnVjdCBLZXlwcmVzc0NvbW1h
bmQ7Ci19CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLW5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEZsb2F0UXVhZDsKIGNsYXNzIFNlbGVjdGlvblJlY3Q7CiBzdHJ1Y3QgSGlnaGxpZ2h0
Owogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsK
IHN0cnVjdCBWaWV3cG9ydEFyZ3VtZW50czsKLX0KICNlbmRpZgogCiAjaWYgVVNFKFNPVVApCi1u
YW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgU291cE5ldHdvcmtQcm94eVNldHRpbmdzOwotfQog
I2VuZGlmCiAKICNpZiBQTEFURk9STShXUEUpCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdHJ1Y3Qg
UGFzdGVib2FyZFdlYkNvbnRlbnRzOwotfQorc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50Owog
I2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7Ci19CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi1uYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDsKLX0KICNlbmRpZgogCiAjaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCi1uYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRpYVNlc3Npb25N
ZXRhZGF0YTsKLX0KICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIENhcHR1cmVEZXZpY2U7CiBzdHJ1Y3QgTWVkaWFDb25zdHJhaW50
czsKLX0KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7CiB1c2luZyBJREJLZXlQYXRoID0gVmFyaWFudDxTdHJpbmcsIFZlY3RvcjxTdHJp
bmc+PjsKLX0KICNlbmRpZgorfQogCiBuYW1lc3BhY2UgSVBDIHsKIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIyMTc3MSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsOCAr
MTcwLDggQEAgZW51bSBjbGFzcyBIYXNJbnNlY3VyZUNvbnRlbnQ7CiBlbnVtIGNsYXNzIE5vdGlm
aWNhdGlvbkRpcmVjdGlvbjsKIGVudW0gY2xhc3MgU2hvdWxkU2FtcGxlOwogCi10ZW1wbGF0ZSA8
dHlwZW5hbWU+IGNsYXNzIEJveEV4dGVudDsKLXVzaW5nIEZsb2F0Qm94RXh0ZW50ID0gQm94RXh0
ZW50PGZsb2F0PjsKK3RlbXBsYXRlIDx0eXBlbmFtZT4gY2xhc3MgUmVjdEVkZ2VzOwordXNpbmcg
RmxvYXRCb3hFeHRlbnQgPSBSZWN0RWRnZXM8ZmxvYXQ+OwogfQogCiAjaWYgUExBVEZPUk0oR1RL
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMjIxNzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zODQsNyArMzg0LDcgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgRHluYW1p
Y1ZpZXdwb3J0VXBkYXRlQ2hhbmdlZFRhcmdldChkb3VibGUgbmV3VGFyZ2V0U2NhbGUsIFdlYkNv
cmU6OkZsb2F0UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24sIHVpbnQ2NF90IGR5bmFtaWNWaWV3cG9y
dFNpemVVcGRhdGVJRCkKICAgICBDb3VsZE5vdFJlc3RvcmVQYWdlU3RhdGUoKQotICAgIFJlc3Rv
cmVQYWdlU3RhdGUoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiBzY3JvbGxQb3Np
dGlvbiwgV2ViQ29yZTo6RmxvYXRQb2ludCBzY3JvbGxPcmlnaW4sIFdlYkNvcmU6OkJveEV4dGVu
dDxmbG9hdD4gb2JzY3VyZWRJbnNldHNPblNhdmUsIGRvdWJsZSBzY2FsZSkKKyAgICBSZXN0b3Jl
UGFnZVN0YXRlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRp
b24sIFdlYkNvcmU6OkZsb2F0UG9pbnQgc2Nyb2xsT3JpZ2luLCBXZWJDb3JlOjpSZWN0RWRnZXM8
ZmxvYXQ+IG9ic2N1cmVkSW5zZXRzT25TYXZlLCBkb3VibGUgc2NhbGUpCiAgICAgUmVzdG9yZVBh
Z2VDZW50ZXJBbmRTY2FsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IHVub2Jz
Y3VyZWRDZW50ZXIsIGRvdWJsZSBzY2FsZSkKICAgICBEaWRHZXRUYXBIaWdobGlnaHRHZW9tZXRy
aWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6Q29sb3IgY29sb3IsIFZlY3RvcjxXZWJD
b3JlOjpGbG9hdFF1YWQ+IGdlb21ldHJpZXMsIFdlYkNvcmU6OkludFNpemUgdG9wTGVmdFJhZGl1
cywgV2ViQ29yZTo6SW50U2l6ZSB0b3BSaWdodFJhZGl1cywgV2ViQ29yZTo6SW50U2l6ZSBib3R0
b21MZWZ0UmFkaXVzLCBXZWJDb3JlOjpJbnRTaXplIGJvdHRvbVJpZ2h0UmFkaXVzKQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4JKHJldmlzaW9uIDIyMTc3MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0Vmlld3BvcnRD
b25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemUoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCiAg
ICAgU2V0TWF4aW11bVVub2JzY3VyZWRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKQogICAg
IFNldERldmljZU9yaWVudGF0aW9uKGludDMyX3QgZGV2aWNlT3JpZW50YXRpb24pCi0gICAgRHlu
YW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShXZWJDb3JlOjpGbG9hdFNpemUgbWluaW11bUxheW91dFNp
emUsIFdlYkNvcmU6OkZsb2F0U2l6ZSBtYXhpbXVtVW5vYnNjdXJlZFNpemUsIFdlYkNvcmU6OkZs
b2F0UmVjdCB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJn
ZXRVbm9ic2N1cmVkUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdldFVub2JzY3VyZWRSZWN0
SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsIFdlYkNvcmU6OkJveEV4dGVudDxmbG9hdD4gdGFyZ2V0
VW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzLCBkb3VibGUgc2NhbGUsIGludDMyX3QgZGV2aWNlT3Jp
ZW50YXRpb24sIHVpbnQ2NF90IGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRCkKKyAgICBEeW5h
bWljVmlld3BvcnRTaXplVXBkYXRlKFdlYkNvcmU6OkZsb2F0U2l6ZSBtaW5pbXVtTGF5b3V0U2l6
ZSwgV2ViQ29yZTo6RmxvYXRTaXplIG1heGltdW1Vbm9ic2N1cmVkU2l6ZSwgV2ViQ29yZTo6Rmxv
YXRSZWN0IHRhcmdldEV4cG9zZWRDb250ZW50UmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdl
dFVub2JzY3VyZWRSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJ
blNjcm9sbFZpZXdDb29yZGluYXRlcywgV2ViQ29yZTo6UmVjdEVkZ2VzPGZsb2F0PiB0YXJnZXRV
bm9ic2N1cmVkU2FmZUFyZWFJbnNldHMsIGRvdWJsZSBzY2FsZSwgaW50MzJfdCBkZXZpY2VPcmll
bnRhdGlvbiwgdWludDY0X3QgZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEKQogICAgIFN5bmNo
cm9uaXplRHluYW1pY1ZpZXdwb3J0VXBkYXRlKCkgLT4gKGRvdWJsZSBuZXdUYXJnZXRTY2FsZSwg
V2ViQ29yZTo6RmxvYXRQb2ludCBuZXdTY3JvbGxQb3NpdGlvbiwgdWludDY0X3QgbmV4dFZhbGlk
TGF5ZXJUcmVlVHJhbnNhY3Rpb25JRCkKIAogICAgIEhhbmRsZVRhcChXZWJDb3JlOjpJbnRQb2lu
dCBwb2ludCwgdWludDY0X3QgbGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSWQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>